@lemoncat7/dsh-partner 2.0.0 → 2.2.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 +12 -0
  2. package/docs/channel-questions-and-avatar.md +30 -0
  3. package/docs/direct-channels.md +13 -1
  4. package/docs/releases/2.1.0.md +13 -0
  5. package/docs/releases/2.2.0.md +25 -0
  6. package/lib/agent-runtime.d.ts +1 -0
  7. package/lib/agent-runtime.d.ts.map +1 -1
  8. package/lib/agent-runtime.js +19 -7
  9. package/lib/agent-runtime.js.map +1 -1
  10. package/lib/attachments/service.d.ts +2 -0
  11. package/lib/attachments/service.d.ts.map +1 -1
  12. package/lib/attachments/service.js +1 -1
  13. package/lib/attachments/service.js.map +1 -1
  14. package/lib/attachments/tool.d.ts.map +1 -1
  15. package/lib/attachments/tool.js +7 -3
  16. package/lib/attachments/tool.js.map +1 -1
  17. package/lib/channels/avatar-file.d.ts +3 -0
  18. package/lib/channels/avatar-file.d.ts.map +1 -0
  19. package/lib/channels/avatar-file.js +43 -0
  20. package/lib/channels/avatar-file.js.map +1 -0
  21. package/lib/channels/avatar-tool.d.ts +12 -0
  22. package/lib/channels/avatar-tool.d.ts.map +1 -0
  23. package/lib/channels/avatar-tool.js +78 -0
  24. package/lib/channels/avatar-tool.js.map +1 -0
  25. package/lib/channels/direct/avatar.d.ts +11 -0
  26. package/lib/channels/direct/avatar.d.ts.map +1 -0
  27. package/lib/channels/direct/avatar.js +57 -0
  28. package/lib/channels/direct/avatar.js.map +1 -0
  29. package/lib/channels/direct/discovery.d.ts +1 -1
  30. package/lib/channels/direct/discovery.d.ts.map +1 -1
  31. package/lib/channels/direct/discovery.js +6 -5
  32. package/lib/channels/direct/discovery.js.map +1 -1
  33. package/lib/channels/direct/inbound-batch.d.ts +8 -0
  34. package/lib/channels/direct/inbound-batch.d.ts.map +1 -0
  35. package/lib/channels/direct/inbound-batch.js +45 -0
  36. package/lib/channels/direct/inbound-batch.js.map +1 -0
  37. package/lib/channels/direct/media.d.ts +24 -0
  38. package/lib/channels/direct/media.d.ts.map +1 -0
  39. package/lib/channels/direct/media.js +147 -0
  40. package/lib/channels/direct/media.js.map +1 -0
  41. package/lib/channels/direct/message.d.ts +4 -0
  42. package/lib/channels/direct/message.d.ts.map +1 -0
  43. package/lib/channels/direct/message.js +16 -0
  44. package/lib/channels/direct/message.js.map +1 -0
  45. package/lib/channels/direct/transport.d.ts +8 -3
  46. package/lib/channels/direct/transport.d.ts.map +1 -1
  47. package/lib/channels/direct/transport.js +39 -16
  48. package/lib/channels/direct/transport.js.map +1 -1
  49. package/lib/channels/manager.d.ts +3 -1
  50. package/lib/channels/manager.d.ts.map +1 -1
  51. package/lib/channels/manager.js +142 -34
  52. package/lib/channels/manager.js.map +1 -1
  53. package/lib/channels/outbound-media.d.ts.map +1 -1
  54. package/lib/channels/outbound-media.js +2 -0
  55. package/lib/channels/outbound-media.js.map +1 -1
  56. package/lib/channels/question-origin.d.ts +5 -0
  57. package/lib/channels/question-origin.d.ts.map +1 -0
  58. package/lib/channels/question-origin.js +14 -0
  59. package/lib/channels/question-origin.js.map +1 -0
  60. package/lib/collaboration/composition.d.ts +2 -0
  61. package/lib/collaboration/composition.d.ts.map +1 -1
  62. package/lib/collaboration/composition.js +4 -0
  63. package/lib/collaboration/composition.js.map +1 -1
  64. package/lib/domain.d.ts +2 -0
  65. package/lib/domain.d.ts.map +1 -1
  66. package/lib/domain.js.map +1 -1
  67. package/lib/index.d.ts.map +1 -1
  68. package/lib/index.js +3 -0
  69. package/lib/index.js.map +1 -1
  70. package/package.json +4 -1
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/attachments/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/attachments/service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/attachments/tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE5D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AAE7D,eAAO,MAAM,mBAAmB,k9CAAsT,CAAA;AAEtV,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,yBAAyB,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CA2CnL"}
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/attachments/tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAG5D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AAE7D,eAAO,MAAM,mBAAmB,k9CAAsT,CAAA;AAEtV,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,yBAAyB,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CA6CnL"}
@@ -1,5 +1,6 @@
1
1
  import { createUserMessage } from '@deepseek-ai/dsh-llm';
2
2
  import { isInternalTaskNotice } from '../channels/delivery-policy.js';
3
+ import { questionOrigin } from '../channels/question-origin.js';
3
4
  export const ATTACHMENT_PROTOCOL = '交付图片或文档时,如果当前提供 partner_send_attachment,必须调用它,path 填生成工具返回的真实本地文件路径。普通 Markdown 链接仅是引用,不代表发送成功。工具会把指定文件显示在会话中,并在当前会话绑定渠道时发送真实附件;必须以工具返回的 channel 状态为准。失败用 deliveryId 重试原附件,无需重新生成。远端文件先下载到当前会话目录,不要编造 sandbox 地址。不要提交中间产物、内部核验材料或用户未要求交付的文件。工具完成后最终回复只简述结论,不要再次粘贴附件下载地址。若临时执行环境未提供此工具,只向负责人交回真实文件位置和结果,不得声称附件已发送。';
4
5
  export function attachmentTool(companionId, store, service, ctx, channels, prefix) {
5
6
  return {
@@ -23,17 +24,20 @@ export function attachmentTool(companionId, store, service, ctx, channels, prefi
23
24
  const events = agent.session.snapshotEvents();
24
25
  const origin = [...events].reverse().find(e => e.type === 'user/message' && (e.data.source.kind === 'user' || isInternalTaskNotice(e)));
25
26
  const internal = origin ? isInternalTaskNotice(origin) : true;
26
- const channel = route.kind !== 'local' && !internal;
27
+ const source = questionOrigin(sessionId, events, state.sessions.filter(item => item.companionId === companionId));
28
+ const channel = !!source && !internal;
27
29
  const cwd = route.cwd ?? agent.session.header.cwd;
28
30
  if (!cwd)
29
31
  throw new Error('当前会话缺少工作目录');
30
- let item = typeof input.deliveryId === 'string' ? service.get(input.deliveryId) : await service.serial('prepare', () => service.prepare({ companionId, sessionId, turn: origin?.seq ?? agent.session.seq, cwd, path: input.path, channel }, exec.signal));
32
+ let item = typeof input.deliveryId === 'string' ? service.get(input.deliveryId) : await service.serial('prepare', () => service.prepare({ companionId, sessionId, turn: origin?.seq ?? agent.session.seq, cwd, path: input.path, channel, ...(source ? { channelRouteId: source.id } : {}) }, exec.signal));
31
33
  if (!item || item.companionId !== companionId || item.sessionId !== sessionId)
32
34
  throw new Error('附件交付不存在或不属于当前伙伴会话');
33
35
  if (!channel && item.channel !== 'none')
34
36
  throw new Error('当前执行不能向原渠道重发附件,请回到直接对话重试');
35
37
  if (channel && item.channel === 'none' && typeof input.deliveryId === 'string')
36
38
  throw new Error('这份附件原本仅供会话查看。若要正式发送到渠道,请使用 path 明确提交原文件');
39
+ if (channel && item.channelRouteId !== source?.id)
40
+ throw new Error('附件原始投递渠道与当前来源不一致,请回到原渠道重试;旧版未记录目标的附件请用 path 重新提交');
37
41
  const url = `${prefix.replace(/\/$/, '')}/attachments/${item.id}`;
38
42
  const escaped = item.name.replace(/[\[\]\\]/g, '_');
39
43
  const content = [{ type: 'text', text: `[下载附件:${escaped}](${url})` }];
@@ -43,7 +47,7 @@ export function attachmentTool(companionId, store, service, ctx, channels, prefi
43
47
  }
44
48
  let error;
45
49
  try {
46
- item = await service.deliver(item, file => channels.sendExplicitAttachment(sessionId, file, exec.signal));
50
+ item = await service.deliver(item, file => channels.sendExplicitAttachment(sessionId, file, exec.signal, item.channelRouteId));
47
51
  }
48
52
  catch (cause) {
49
53
  error = cause instanceof Error ? cause.message : String(cause);
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/attachments/tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/attachments/tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AvatarImage } from './direct/avatar.js';
2
+ export declare function readAvatarImage(cwd: string, path: string, signal: AbortSignal): Promise<AvatarImage>;
3
+ //# sourceMappingURL=avatar-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar-file.d.ts","sourceRoot":"","sources":["../../src/channels/avatar-file.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGrD,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CA2B1G"}
@@ -0,0 +1,43 @@
1
+ import { constants } from 'node:fs';
2
+ import { open, realpath } from 'node:fs/promises';
3
+ import { isAbsolute, relative, resolve, sep } from 'node:path';
4
+ const LIMIT = 2 * 1024 * 1024;
5
+ export async function readAvatarImage(cwd, path, signal) {
6
+ signal.throwIfAborted();
7
+ if (!path || path.length > 4096 || path.includes('\0') || /^[a-z]+:\/\//i.test(path))
8
+ throw new Error('头像必须使用当前会话目录内的本地图片路径');
9
+ const root = await realpath(cwd), actual = await realpath(resolve(root, path));
10
+ const rel = relative(root, actual);
11
+ if (rel === '..' || rel.startsWith(`..${sep}`) || isAbsolute(rel))
12
+ throw new Error('头像图片超出当前会话目录,不能读取其他伙伴或系统文件');
13
+ const file = await open(actual, constants.O_RDONLY | constants.O_NOFOLLOW);
14
+ try {
15
+ const before = await file.stat();
16
+ if (!before.isFile() || before.size < 4 || before.size > LIMIT)
17
+ throw new Error('头像必须是 2 MB 以内的 PNG/JPEG 普通文件');
18
+ const bytes = Buffer.alloc(before.size + 1);
19
+ let size = 0;
20
+ while (size < bytes.length) {
21
+ signal.throwIfAborted();
22
+ const read = await file.read(bytes, size, bytes.length - size, size);
23
+ if (!read.bytesRead)
24
+ break;
25
+ size += read.bytesRead;
26
+ }
27
+ const after = await file.stat();
28
+ if (size !== before.size || after.size !== before.size || after.mtimeMs !== before.mtimeMs)
29
+ throw new Error('头像文件在读取时发生变化,请重试');
30
+ const data = bytes.subarray(0, size);
31
+ const png = data.length >= 24 && data.subarray(0, 8).equals(Buffer.from([137, 80, 78, 71, 13, 10, 26, 10])) && data.toString('ascii', 12, 16) === 'IHDR';
32
+ const jpeg = data[0] === 255 && data[1] === 216 && data[2] === 255;
33
+ if (!png && !jpeg)
34
+ throw new Error('头像文件不是有效的 PNG/JPEG 图片;不支持 SVG、HTML 或仅修改扩展名的文件');
35
+ if (png && (!data.readUInt32BE(16) || !data.readUInt32BE(20) || data.readUInt32BE(16) > 4096 || data.readUInt32BE(20) > 4096))
36
+ throw new Error('PNG 头像尺寸不得超过 4096 × 4096');
37
+ return { bytes: data, mediaType: png ? 'image/png' : 'image/jpeg' };
38
+ }
39
+ finally {
40
+ await file.close();
41
+ }
42
+ }
43
+ //# sourceMappingURL=avatar-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar-file.js","sourceRoot":"","sources":["../../src/channels/avatar-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAG9D,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAC7B,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAW,EAAE,IAAY,EAAE,MAAmB;IAClF,MAAM,CAAC,cAAc,EAAE,CAAA;IACvB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;IAC7H,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IAC9E,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAClC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;IAChH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;IAC1E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QAChC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAC/G,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;QAC3C,IAAI,IAAI,GAAG,CAAC,CAAA;QACZ,OAAO,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,cAAc,EAAE,CAAA;YACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,EAAE,IAAI,CAAC,CAAA;YACpE,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,MAAK;YAC1B,IAAI,IAAI,IAAI,CAAC,SAAS,CAAA;QACxB,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QAC/B,IAAI,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAC/H,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,MAAM,CAAA;QACjJ,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAA;QAClE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;QACnF,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC1K,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,CAAA;IACrE,CAAC;YAAS,CAAC;QAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;IAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ToolDefinition } from '@deepseek-ai/dsh-tools';
2
+ import type { PartnerStore } from '../store.js';
3
+ import type { PartnerCredentialVault } from '../credentials.js';
4
+ /** One service owns serialization and live authorization; credentials never enter tool results. */
5
+ export declare class ChannelAvatarService {
6
+ private readonly store;
7
+ private readonly credentials;
8
+ private readonly queues;
9
+ constructor(store: PartnerStore, credentials: PartnerCredentialVault);
10
+ tool(companionId: string): ToolDefinition;
11
+ }
12
+ //# sourceMappingURL=avatar-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar-tool.d.ts","sourceRoot":"","sources":["../../src/channels/avatar-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAK/D,mGAAmG;AACnG,qBAAa,oBAAoB;IAEnB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAgB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAD9E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;gBAChC,KAAK,EAAE,YAAY,EAAmB,WAAW,EAAE,sBAAsB;IAEtG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc;CAiD1C"}
@@ -0,0 +1,78 @@
1
+ import { directConfig } from './direct/transport.js';
2
+ import { updateDirectAvatar } from './direct/avatar.js';
3
+ import { readAvatarImage } from './avatar-file.js';
4
+ /** One service owns serialization and live authorization; credentials never enter tool results. */
5
+ export class ChannelAvatarService {
6
+ store;
7
+ credentials;
8
+ queues = new Map();
9
+ constructor(store, credentials) {
10
+ this.store = store;
11
+ this.credentials = credentials;
12
+ }
13
+ tool(companionId) {
14
+ const service = this;
15
+ return {
16
+ name: 'partner_channel_avatar',
17
+ description: '伙伴默认可用:修改自己的 Matrix / Mattermost 渠道账号头像。先 list 查看可修改渠道,再 set 提供 channelId 和当前会话目录内的真实 PNG/JPEG 图片 path(最多 2 MB)。账号级修改影响该账号全部会话,不是房间头像或 DSH 卡片图案。不支持微信、不改其他伙伴、禁止跨伙伴共用账号修改。不自动生成或下载 URL,必须以 updated=true 为成功依据。',
18
+ parameters: { type: 'object', additionalProperties: false, properties: { action: { type: 'string', enum: ['list', 'set'] }, channelId: { type: 'string' }, path: { type: 'string' } }, required: ['action'] },
19
+ output: { schema: { type: 'string' }, render: (_args, value) => [{ type: 'text', text: String(value) }] },
20
+ presentCall: () => ({ card: 'generic', title: '伙伴渠道头像' }),
21
+ async execute(raw, exec) {
22
+ const input = raw;
23
+ const agent = exec.agent;
24
+ if (!agent || !input || typeof input !== 'object')
25
+ throw new Error('头像修改需要当前伙伴会话');
26
+ const authorize = () => {
27
+ exec.signal.throwIfAborted();
28
+ const state = service.store.snapshot();
29
+ if (!state.companions.some(companion => companion.id === companionId) || service.store.isCompanionRemoving(companionId)
30
+ || !state.sessions.some(route => route.sessionId === agent.session.id && route.companionId === companionId))
31
+ throw new Error('伙伴已删除、正在删除或会话不属于当前伙伴');
32
+ };
33
+ authorize();
34
+ const owned = service.store.snapshot().channels.filter(channel => channel.companionId === companionId && (channel.platform === 'matrix' || channel.platform === 'mattermost'));
35
+ if (input.action === 'list')
36
+ return JSON.stringify({ channels: owned.map(channel => ({ channelId: channel.id, name: channel.name, platform: channel.platform, accountId: channel.accountId, enabled: channel.enabled })), scope: '账号级头像,跨伙伴共用账号禁止修改' });
37
+ if (input.action !== 'set' || typeof input.channelId !== 'string' || typeof input.path !== 'string')
38
+ throw new Error('set 需要 channelId 和本地图片 path');
39
+ const channel = owned.find(item => item.id === input.channelId);
40
+ if (!channel || !channel.enabled || !channel.direct)
41
+ throw new Error('渠道不存在、未启用或不属于当前伙伴');
42
+ const cwd = agent.session.header.cwd;
43
+ if (!cwd)
44
+ throw new Error('当前会话缺少工作目录');
45
+ const key = `${channel.platform}:${channel.direct.baseUrl}:${channel.accountId}`;
46
+ const previous = service.queues.get(key) ?? Promise.resolve();
47
+ const path = input.path;
48
+ const job = previous.catch(() => { }).then(async () => {
49
+ const guard = () => {
50
+ authorize();
51
+ const state = service.store.snapshot(), current = state.channels.find(item => item.id === channel.id);
52
+ if (!current?.enabled || current.companionId !== companionId || current.platform !== channel.platform || current.accountId !== channel.accountId || current.direct?.baseUrl !== channel.direct?.baseUrl)
53
+ throw new Error('渠道配置已变化,头像未继续更新');
54
+ if (state.channels.some(other => other.companionId !== companionId && other.platform === channel.platform && other.accountId === channel.accountId && other.direct?.baseUrl.replace(/\/$/, '') === channel.direct?.baseUrl.replace(/\/$/, '')))
55
+ throw new Error('该账号被其他伙伴共用,修改头像会影响其他伙伴;请先使用独立账号');
56
+ };
57
+ guard();
58
+ const image = await readAvatarImage(cwd, path, exec.signal);
59
+ const credential = await service.credentials.read(channel.id);
60
+ const config = directConfig({ platform: channel.platform, baseUrl: credential.baseUrl, targetId: '' });
61
+ if (config.baseUrl !== channel.direct.baseUrl.replace(/\/$/, ''))
62
+ throw new Error('渠道地址和凭据地址不一致,请重新配置');
63
+ const result = await updateDirectAvatar(config, credential.botToken, channel.accountId, image, exec.signal, guard);
64
+ return JSON.stringify({ updated: true, channelId: channel.id, platform: channel.platform, ...result, scope: 'account' });
65
+ });
66
+ service.queues.set(key, job);
67
+ try {
68
+ return await job;
69
+ }
70
+ finally {
71
+ if (service.queues.get(key) === job)
72
+ service.queues.delete(key);
73
+ }
74
+ },
75
+ };
76
+ }
77
+ }
78
+ //# sourceMappingURL=avatar-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar-tool.js","sourceRoot":"","sources":["../../src/channels/avatar-tool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,mGAAmG;AACnG,MAAM,OAAO,oBAAoB;IAEF;IAAsC;IADlD,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAA;IAC7D,YAA6B,KAAmB,EAAmB,WAAmC;QAAzE,UAAK,GAAL,KAAK,CAAc;QAAmB,gBAAW,GAAX,WAAW,CAAwB;IAAG,CAAC;IAE1G,IAAI,CAAC,WAAmB;QACtB,MAAM,OAAO,GAAG,IAAI,CAAA;QACpB,OAAO;YACL,IAAI,EAAE,wBAAwB;YAC9B,WAAW,EAAE,+MAA+M;YAC5N,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE;YAC7M,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;YACzG,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YACzD,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI;gBACrB,MAAM,KAAK,GAAG,GAAgE,CAAA;gBAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;gBACxB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;gBAClF,MAAM,SAAS,GAAG,GAAS,EAAE;oBAC3B,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;oBAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAA;oBACtC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,WAAW,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,WAAW,CAAC;2BAClH,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW,CAAC;wBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;gBACxJ,CAAC,CAAA;gBACD,SAAS,EAAE,CAAA;gBACX,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAA;gBAC9K,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;oBAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAA;gBACvP,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;gBACnJ,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC,CAAA;gBAC/D,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;gBACzF,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAA;gBACpC,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAA;gBACvC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,CAAA;gBAChF,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAA;gBAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;gBACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;oBACnD,MAAM,KAAK,GAAG,GAAS,EAAE;wBACvB,SAAS,EAAE,CAAA;wBACX,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAA;wBACrG,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,EAAE,OAAO;4BAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;wBAC3O,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,WAAW,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;4BAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;oBACpS,CAAC,CAAA;oBACD,KAAK,EAAE,CAAA;oBACP,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;oBAC3D,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;oBAC7D,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAA;oBACtG,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,MAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;wBAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;oBACxG,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;oBAClH,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;gBAC1H,CAAC,CAAC,CAAA;gBACF,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;gBAC5B,IAAI,CAAC;oBAAC,OAAO,MAAM,GAAG,CAAA;gBAAC,CAAC;wBAAS,CAAC;oBAAC,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG;wBAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAAC,CAAC;YACtG,CAAC;SACF,CAAA;IACH,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ import type { DirectConfig } from './transport.js';
2
+ export interface AvatarImage {
3
+ bytes: Uint8Array;
4
+ mediaType: 'image/png' | 'image/jpeg';
5
+ }
6
+ /** Only updates the authenticated account. No caller-controlled user id or remote image fetch. */
7
+ export declare function updateDirectAvatar(config: DirectConfig, token: string, accountId: string, image: AvatarImage, signal: AbortSignal, guard: () => void): Promise<{
8
+ accountId: string;
9
+ avatar: string;
10
+ }>;
11
+ //# sourceMappingURL=avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/channels/direct/avatar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,MAAM,WAAW,WAAW;IAAG,KAAK,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,WAAW,GAAG,YAAY,CAAA;CAAE;AAEzF,kGAAkG;AAClG,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAqC3M"}
@@ -0,0 +1,57 @@
1
+ /** Only updates the authenticated account. No caller-controlled user id or remote image fetch. */
2
+ export async function updateDirectAvatar(config, token, accountId, image, signal, guard) {
3
+ const request = async (path, method = 'GET', body, contentType) => {
4
+ signal.throwIfAborted();
5
+ guard();
6
+ const response = await fetch(config.baseUrl + path, {
7
+ method, redirect: 'error', headers: { Authorization: `Bearer ${token}`, ...(contentType ? { 'Content-Type': contentType } : {}) },
8
+ ...(body === undefined ? {} : { body }), signal: AbortSignal.any([signal, AbortSignal.timeout(30_000)]),
9
+ });
10
+ if (!response.ok) {
11
+ await response.body?.cancel();
12
+ throw new Error(`头像请求失败(HTTP ${response.status}),未确认更新成功`);
13
+ }
14
+ if (response.status === 204)
15
+ return {};
16
+ const reader = response.body?.getReader();
17
+ if (!reader)
18
+ return {};
19
+ const chunks = [];
20
+ let size = 0;
21
+ try {
22
+ while (true) {
23
+ const part = await reader.read();
24
+ if (part.done)
25
+ break;
26
+ size += part.value.length;
27
+ if (size > 64 * 1024) {
28
+ await reader.cancel();
29
+ throw new Error('头像接口响应超过限制');
30
+ }
31
+ chunks.push(part.value);
32
+ }
33
+ }
34
+ finally {
35
+ reader.releaseLock();
36
+ }
37
+ const text = Buffer.concat(chunks).toString('utf8');
38
+ return text ? JSON.parse(text) : {};
39
+ };
40
+ const matrix = config.platform === 'matrix';
41
+ const who = await request(matrix ? '/_matrix/client/v3/account/whoami' : '/api/v4/users/me');
42
+ if ((matrix ? who.user_id : who.id) !== accountId)
43
+ throw new Error('渠道凭据账号已变化,拒绝修改头像,请重新配置渠道');
44
+ const user = encodeURIComponent(accountId);
45
+ if (matrix) {
46
+ const uploaded = await request('/_matrix/media/v3/upload', 'POST', new Uint8Array(image.bytes), image.mediaType);
47
+ if (typeof uploaded.content_uri !== 'string' || !/^mxc:\/\/[^\s/]+\/[^\s/?#]+$/.test(uploaded.content_uri))
48
+ throw new Error('Matrix 未返回有效媒体地址,头像尚未修改');
49
+ await request(`/_matrix/client/v3/profile/${user}/avatar_url`, 'PUT', JSON.stringify({ avatar_url: uploaded.content_uri }), 'application/json');
50
+ return { accountId, avatar: uploaded.content_uri };
51
+ }
52
+ const form = new FormData();
53
+ form.set('image', new Blob([new Uint8Array(image.bytes)], { type: image.mediaType }), image.mediaType === 'image/png' ? 'avatar.png' : 'avatar.jpg');
54
+ await request(`/api/v4/users/${user}/image`, 'POST', form);
55
+ return { accountId, avatar: `${config.baseUrl}/api/v4/users/${user}/image` };
56
+ }
57
+ //# sourceMappingURL=avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../../src/channels/direct/avatar.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { DirectBatch, DirectPlatform, DirectTransport } from './transport.js';
2
2
  /** Discover conversations without granting access. Every candidate still passes
3
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>;
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, waitMs?: number): Promise<DirectBatch>;
5
5
  //# sourceMappingURL=discovery.d.ts.map
@@ -1 +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,CAsD3G"}
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;AAG/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,EAAE,MAAM,SAAM,GAAE,OAAO,CAAC,WAAW,CAAC,CAsDzH"}
@@ -1,11 +1,12 @@
1
+ import { matrixMessage } from './message.js';
1
2
  /** Discover conversations without granting access. Every candidate still passes
2
3
  * the same two-member / no-encryption validation as explicitly pinned rooms. */
3
- export async function pollDiscovered(platform, accountId, cursor, signal, request, room) {
4
+ export async function pollDiscovered(platform, accountId, cursor, signal, request, room, waitMs = 20000) {
4
5
  const messages = [];
5
6
  if (platform === 'matrix') {
6
7
  let encrypted = false;
7
8
  const filter = JSON.stringify({ room: { timeline: { limit: 100 } }, presence: { types: [] } });
8
- const data = await request('/_matrix/client/v3/sync?timeout=20000&filter=' + encodeURIComponent(filter) + (cursor ? '&since=' + encodeURIComponent(cursor) : ''));
9
+ const data = await request('/_matrix/client/v3/sync?timeout=' + waitMs + '&filter=' + encodeURIComponent(filter) + (cursor ? '&since=' + encodeURIComponent(cursor) : ''));
9
10
  if (typeof data.next_batch !== 'string')
10
11
  throw new Error('Matrix 同步游标缺失');
11
12
  const invites = Object.entries(data.rooms?.invite ?? {});
@@ -53,9 +54,9 @@ export async function pollDiscovered(platform, accountId, cursor, signal, reques
53
54
  if (timeline.limited)
54
55
  throw new Error('Matrix 私聊消息出现缺口,请检查后重连');
55
56
  for (const event of timeline.events) {
56
- if (event.sender !== identity.peerId || event.type !== 'm.room.message' || event.content?.['m.relates_to']?.rel_type === 'm.replace' || typeof event.event_id !== 'string')
57
- continue;
58
- 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 : '' });
57
+ const message = matrixMessage(event, identity.peerId, id);
58
+ if (message)
59
+ messages.push(message);
59
60
  }
60
61
  }
61
62
  return { cursor: data.next_batch, messages, ...(encrypted ? { warning: '检测到 Matrix 加密会话,已跳过:只有未加密的双人会话才能获取配对码和交流。请新建未开启加密的会话并邀请机器人;其他未加密会话不受影响。' } : {}) };
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/channels/direct/discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/channels/direct/discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { DirectBatch, DirectMessage } from './transport.js';
2
+ /** Matrix clients may send caption and file as separate adjacent events. Only
3
+ * coalesce a bounded burst containing media, never plain-text conversations. */
4
+ export declare function groupDirectMessages(messages: readonly DirectMessage[], defaultTarget?: string): DirectMessage[][];
5
+ /** One bounded lookahead, not a background queue. The cursor is committed only
6
+ * after every collected event is handed off, so restart never discards a buffer. */
7
+ export declare function collectDirectBatch(first: DirectBatch, poll: (cursor: string, signal: AbortSignal) => Promise<DirectBatch>, signal: AbortSignal, waitMs?: number): Promise<DirectBatch>;
8
+ //# sourceMappingURL=inbound-batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbound-batch.d.ts","sourceRoot":"","sources":["../../../src/channels/direct/inbound-batch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAKhE;gFACgF;AAChF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,EAAE,aAAa,SAAK,GAAG,aAAa,EAAE,EAAE,CAkB7G;AAED;oFACoF;AACpF,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAW1L"}
@@ -0,0 +1,45 @@
1
+ import { setTimeout as delay } from 'node:timers/promises';
2
+ const GROUP_WINDOW_MS = 2000;
3
+ const MAX_GROUP_EVENTS = 16;
4
+ /** Matrix clients may send caption and file as separate adjacent events. Only
5
+ * coalesce a bounded burst containing media, never plain-text conversations. */
6
+ export function groupDirectMessages(messages, defaultTarget = '') {
7
+ const groups = [];
8
+ let burst = [];
9
+ const flush = () => {
10
+ if (burst.some(message => message.media?.length))
11
+ groups.push(burst);
12
+ else
13
+ groups.push(...burst.map(message => [message]));
14
+ burst = [];
15
+ };
16
+ for (const message of messages) {
17
+ const first = burst[0], previous = burst.at(-1);
18
+ if (first && previous && (burst.length >= MAX_GROUP_EVENTS || message.sender !== first.sender
19
+ || (message.targetId ?? defaultTarget) !== (first.targetId ?? defaultTarget)
20
+ || !Number.isFinite(message.timestamp) || !Number.isFinite(first.timestamp)
21
+ || message.timestamp < previous.timestamp || message.timestamp - first.timestamp > GROUP_WINDOW_MS))
22
+ flush();
23
+ burst.push(message);
24
+ }
25
+ flush();
26
+ return groups;
27
+ }
28
+ /** One bounded lookahead, not a background queue. The cursor is committed only
29
+ * after every collected event is handed off, so restart never discards a buffer. */
30
+ export async function collectDirectBatch(first, poll, signal, waitMs = 1000) {
31
+ if (!first.messages.length)
32
+ return first;
33
+ await delay(waitMs, undefined, { signal });
34
+ const next = await poll(first.cursor, signal);
35
+ const seen = new Set();
36
+ const messages = [...first.messages, ...next.messages].filter(message => {
37
+ const key = JSON.stringify([message.targetId, message.sender, message.id]);
38
+ if (seen.has(key))
39
+ return false;
40
+ seen.add(key);
41
+ return true;
42
+ });
43
+ return { cursor: next.cursor, messages, ...(next.warning ?? first.warning ? { warning: next.warning ?? first.warning } : {}) };
44
+ }
45
+ //# sourceMappingURL=inbound-batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbound-batch.js","sourceRoot":"","sources":["../../../src/channels/direct/inbound-batch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { type PartnerInboundAttachment, type PartnerOutboundAttachment } from '../../channel-message.js';
2
+ import type { DirectConfig } from './transport.js';
3
+ export interface DirectMedia {
4
+ source: string;
5
+ name?: string;
6
+ mediaType?: string;
7
+ size?: number;
8
+ encrypted?: boolean;
9
+ }
10
+ export declare const DIRECT_MEDIA_MAX_COUNT = 8;
11
+ type Guard = () => Promise<void>;
12
+ /** Only server-relative, authenticated media APIs. Never fetch a message-provided HTTP URL. */
13
+ export declare class DirectMediaTransfer {
14
+ private config;
15
+ private token;
16
+ private guard;
17
+ constructor(config: DirectConfig, token: string, guard: Guard);
18
+ private bytes;
19
+ private json;
20
+ receive(postId: string, refs: DirectMedia[], signal: AbortSignal, maxBytes?: number): Promise<PartnerInboundAttachment[]>;
21
+ send(file: PartnerOutboundAttachment, signal: AbortSignal): Promise<void>;
22
+ }
23
+ export {};
24
+ //# sourceMappingURL=media.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/channels/direct/media.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0C,KAAK,wBAAwB,EAAE,KAAK,yBAAyB,EAAE,MAAM,0BAA0B,CAAA;AAChJ,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,MAAM,WAAW,WAAW;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE;AACtH,eAAO,MAAM,sBAAsB,IAAI,CAAA;AACvC,KAAK,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;AAEhC,+FAA+F;AAC/F,qBAAa,mBAAmB;IAClB,OAAO,CAAC,MAAM;IAAgB,OAAO,CAAC,KAAK;IAAU,OAAO,CAAC,KAAK;gBAA1D,MAAM,EAAE,YAAY,EAAU,KAAK,EAAE,MAAM,EAAU,KAAK,EAAE,KAAK;YAEvE,KAAK;YAwBL,IAAI;IAIZ,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,SAA0B,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC;IA4B1I,IAAI,CAAC,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAqChF"}