@lemoncat7/dsh-partner 2.21.13 → 2.23.26

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 (231) hide show
  1. package/README.md +2 -2
  2. package/docs/conversation-autonomy.md +4 -0
  3. package/docs/qq-channel.md +19 -3
  4. package/docs/releases/2.21.14.md +9 -0
  5. package/docs/releases/2.22.0.md +9 -0
  6. package/docs/releases/2.22.1.md +9 -0
  7. package/docs/releases/2.22.2.md +7 -0
  8. package/docs/releases/2.22.3.md +7 -0
  9. package/docs/releases/2.22.4.md +7 -0
  10. package/docs/releases/2.22.5.md +5 -0
  11. package/docs/releases/2.22.6.md +3 -0
  12. package/docs/releases/2.23.0.md +7 -0
  13. package/docs/releases/2.23.1.md +7 -0
  14. package/docs/releases/2.23.11.md +9 -0
  15. package/docs/releases/2.23.12.md +11 -0
  16. package/docs/releases/2.23.13.md +13 -0
  17. package/docs/releases/2.23.14.md +11 -0
  18. package/docs/releases/2.23.15.md +7 -0
  19. package/docs/releases/2.23.16.md +7 -0
  20. package/docs/releases/2.23.17.md +7 -0
  21. package/docs/releases/2.23.18.md +9 -0
  22. package/docs/releases/2.23.19.md +9 -0
  23. package/docs/releases/2.23.20.md +11 -0
  24. package/docs/releases/2.23.21.md +7 -0
  25. package/docs/releases/2.23.22.md +5 -0
  26. package/docs/releases/2.23.23.md +9 -0
  27. package/docs/releases/2.23.24.md +11 -0
  28. package/docs/releases/2.23.25.md +5 -0
  29. package/docs/releases/2.23.26.md +7 -0
  30. package/docs/rolling-conversation.md +15 -0
  31. package/lib/agent-runtime.d.ts +4 -0
  32. package/lib/agent-runtime.d.ts.map +1 -1
  33. package/lib/agent-runtime.js +137 -40
  34. package/lib/agent-runtime.js.map +1 -1
  35. package/lib/attachments/delivery-receipt.d.ts +7 -0
  36. package/lib/attachments/delivery-receipt.d.ts.map +1 -0
  37. package/lib/attachments/delivery-receipt.js +22 -0
  38. package/lib/attachments/delivery-receipt.js.map +1 -0
  39. package/lib/attachments/reply-document.d.ts +41 -0
  40. package/lib/attachments/reply-document.d.ts.map +1 -0
  41. package/lib/attachments/reply-document.js +32 -0
  42. package/lib/attachments/reply-document.js.map +1 -0
  43. package/lib/attachments/tool.d.ts +1 -1
  44. package/lib/attachments/tool.d.ts.map +1 -1
  45. package/lib/attachments/tool.js +45 -8
  46. package/lib/attachments/tool.js.map +1 -1
  47. package/lib/channel-message.d.ts +2 -0
  48. package/lib/channel-message.d.ts.map +1 -1
  49. package/lib/channel-message.js.map +1 -1
  50. package/lib/channels/delivery-policy.d.ts +1 -0
  51. package/lib/channels/delivery-policy.d.ts.map +1 -1
  52. package/lib/channels/delivery-policy.js +18 -2
  53. package/lib/channels/delivery-policy.js.map +1 -1
  54. package/lib/channels/direct/transport.d.ts +2 -0
  55. package/lib/channels/direct/transport.d.ts.map +1 -1
  56. package/lib/channels/manager.d.ts.map +1 -1
  57. package/lib/channels/manager.js +52 -7
  58. package/lib/channels/manager.js.map +1 -1
  59. package/lib/channels/outbound-media.js +1 -1
  60. package/lib/channels/outbound-media.js.map +1 -1
  61. package/lib/channels/qq/action-catalog.d.ts.map +1 -1
  62. package/lib/channels/qq/action-catalog.js +111 -0
  63. package/lib/channels/qq/action-catalog.js.map +1 -1
  64. package/lib/channels/qq/actions.d.ts +1 -1
  65. package/lib/channels/qq/actions.d.ts.map +1 -1
  66. package/lib/channels/qq/actions.js +81 -10
  67. package/lib/channels/qq/actions.js.map +1 -1
  68. package/lib/channels/qq/authority.d.ts +1 -1
  69. package/lib/channels/qq/authority.d.ts.map +1 -1
  70. package/lib/channels/qq/authority.js +7 -2
  71. package/lib/channels/qq/authority.js.map +1 -1
  72. package/lib/channels/qq/autonomy.d.ts.map +1 -1
  73. package/lib/channels/qq/autonomy.js +3 -0
  74. package/lib/channels/qq/autonomy.js.map +1 -1
  75. package/lib/channels/qq/chat-actions.d.ts +6 -0
  76. package/lib/channels/qq/chat-actions.d.ts.map +1 -0
  77. package/lib/channels/qq/chat-actions.js +11 -0
  78. package/lib/channels/qq/chat-actions.js.map +1 -0
  79. package/lib/channels/qq/message.js +1 -1
  80. package/lib/channels/qq/message.js.map +1 -1
  81. package/lib/channels/qq/quote.d.ts +14 -0
  82. package/lib/channels/qq/quote.d.ts.map +1 -0
  83. package/lib/channels/qq/quote.js +69 -0
  84. package/lib/channels/qq/quote.js.map +1 -0
  85. package/lib/channels/qq/reply-tool.d.ts.map +1 -1
  86. package/lib/channels/qq/reply-tool.js +8 -4
  87. package/lib/channels/qq/reply-tool.js.map +1 -1
  88. package/lib/channels/qq/sticker-adapter.d.ts.map +1 -1
  89. package/lib/channels/qq/sticker-adapter.js +9 -11
  90. package/lib/channels/qq/sticker-adapter.js.map +1 -1
  91. package/lib/channels/weixin/connect.d.ts.map +1 -1
  92. package/lib/character/activity-tool.d.ts +3 -0
  93. package/lib/character/activity-tool.d.ts.map +1 -1
  94. package/lib/character/activity-tool.js +13 -8
  95. package/lib/character/activity-tool.js.map +1 -1
  96. package/lib/character/conversation-behavior.d.ts +8 -7
  97. package/lib/character/conversation-behavior.d.ts.map +1 -1
  98. package/lib/character/conversation-behavior.js +28 -39
  99. package/lib/character/conversation-behavior.js.map +1 -1
  100. package/lib/character/domain.js +1 -1
  101. package/lib/character/domain.js.map +1 -1
  102. package/lib/character/fatigue.d.ts +1 -1
  103. package/lib/character/fatigue.js +1 -1
  104. package/lib/character/idle-contact.d.ts +10 -1
  105. package/lib/character/idle-contact.d.ts.map +1 -1
  106. package/lib/character/idle-contact.js +36 -20
  107. package/lib/character/idle-contact.js.map +1 -1
  108. package/lib/character/post-reply.d.ts +10 -4
  109. package/lib/character/post-reply.d.ts.map +1 -1
  110. package/lib/character/post-reply.js +56 -12
  111. package/lib/character/post-reply.js.map +1 -1
  112. package/lib/character/prompt-projection.d.ts +10 -0
  113. package/lib/character/prompt-projection.d.ts.map +1 -0
  114. package/lib/character/prompt-projection.js +42 -0
  115. package/lib/character/prompt-projection.js.map +1 -0
  116. package/lib/character/sleep-service.d.ts +1 -1
  117. package/lib/character/sleep-service.d.ts.map +1 -1
  118. package/lib/character/sleep-service.js +5 -3
  119. package/lib/character/sleep-service.js.map +1 -1
  120. package/lib/character/sleep.d.ts +3 -1
  121. package/lib/character/sleep.d.ts.map +1 -1
  122. package/lib/character/sleep.js +4 -2
  123. package/lib/character/sleep.js.map +1 -1
  124. package/lib/character/state-policy.d.ts.map +1 -1
  125. package/lib/character/state-policy.js +1 -0
  126. package/lib/character/state-policy.js.map +1 -1
  127. package/lib/chat/attachment-reference.d.ts +4 -0
  128. package/lib/chat/attachment-reference.d.ts.map +1 -0
  129. package/lib/chat/attachment-reference.js +13 -0
  130. package/lib/chat/attachment-reference.js.map +1 -0
  131. package/lib/chat/context-selection.d.ts +10 -0
  132. package/lib/chat/context-selection.d.ts.map +1 -0
  133. package/lib/chat/context-selection.js +39 -0
  134. package/lib/chat/context-selection.js.map +1 -0
  135. package/lib/chat/conversation.d.ts.map +1 -1
  136. package/lib/chat/conversation.js +2 -0
  137. package/lib/chat/conversation.js.map +1 -1
  138. package/lib/chat/protocol.d.ts +17 -0
  139. package/lib/chat/protocol.d.ts.map +1 -1
  140. package/lib/chat/protocol.js +31 -1
  141. package/lib/chat/protocol.js.map +1 -1
  142. package/lib/chat/reply-completion.d.ts +27 -0
  143. package/lib/chat/reply-completion.d.ts.map +1 -0
  144. package/lib/chat/reply-completion.js +116 -0
  145. package/lib/chat/reply-completion.js.map +1 -0
  146. package/lib/chat/reply-continuity.d.ts +20 -0
  147. package/lib/chat/reply-continuity.d.ts.map +1 -0
  148. package/lib/chat/reply-continuity.js +97 -0
  149. package/lib/chat/reply-continuity.js.map +1 -0
  150. package/lib/chat/sticker-adapter.d.ts +1 -1
  151. package/lib/chat/sticker-adapter.d.ts.map +1 -1
  152. package/lib/chat/tools.d.ts.map +1 -1
  153. package/lib/chat/tools.js +60 -10
  154. package/lib/chat/tools.js.map +1 -1
  155. package/lib/chat/verified-calculation.d.ts +48 -0
  156. package/lib/chat/verified-calculation.d.ts.map +1 -0
  157. package/lib/chat/verified-calculation.js +46 -0
  158. package/lib/chat/verified-calculation.js.map +1 -0
  159. package/lib/chat/work-expression.d.ts +84 -0
  160. package/lib/chat/work-expression.d.ts.map +1 -0
  161. package/lib/chat/work-expression.js +296 -0
  162. package/lib/chat/work-expression.js.map +1 -0
  163. package/lib/client-api.d.ts +4 -1
  164. package/lib/client-api.d.ts.map +1 -1
  165. package/lib/client.js +210 -38
  166. package/lib/client.js.map +3 -3
  167. package/lib/collaboration/composition.d.ts.map +1 -1
  168. package/lib/collaboration/composition.js +21 -54
  169. package/lib/collaboration/composition.js.map +1 -1
  170. package/lib/collaboration/tool-discovery.d.ts +3 -2
  171. package/lib/collaboration/tool-discovery.d.ts.map +1 -1
  172. package/lib/collaboration/tool-discovery.js +37 -11
  173. package/lib/collaboration/tool-discovery.js.map +1 -1
  174. package/lib/collaboration/workflow-protocols.d.ts +5 -0
  175. package/lib/collaboration/workflow-protocols.d.ts.map +1 -0
  176. package/lib/collaboration/workflow-protocols.js +40 -0
  177. package/lib/collaboration/workflow-protocols.js.map +1 -0
  178. package/lib/companions/session-configuration.d.ts.map +1 -1
  179. package/lib/companions/session-configuration.js +1 -0
  180. package/lib/companions/session-configuration.js.map +1 -1
  181. package/lib/conversation-history-recall.d.ts +31 -0
  182. package/lib/conversation-history-recall.d.ts.map +1 -0
  183. package/lib/conversation-history-recall.js +63 -0
  184. package/lib/conversation-history-recall.js.map +1 -0
  185. package/lib/daily-review.d.ts.map +1 -1
  186. package/lib/daily-review.js +3 -1
  187. package/lib/daily-review.js.map +1 -1
  188. package/lib/domain.d.ts +3 -0
  189. package/lib/domain.d.ts.map +1 -1
  190. package/lib/domain.js +4 -1
  191. package/lib/domain.js.map +1 -1
  192. package/lib/execution/domain.d.ts +1 -1
  193. package/lib/execution/domain.d.ts.map +1 -1
  194. package/lib/execution/service.d.ts +3 -0
  195. package/lib/execution/service.d.ts.map +1 -1
  196. package/lib/execution/service.js +7 -5
  197. package/lib/execution/service.js.map +1 -1
  198. package/lib/execution/task-preamble.d.ts +4 -3
  199. package/lib/execution/task-preamble.d.ts.map +1 -1
  200. package/lib/execution/task-preamble.js +17 -10
  201. package/lib/execution/task-preamble.js.map +1 -1
  202. package/lib/execution/work-tool.d.ts +5 -0
  203. package/lib/execution/work-tool.d.ts.map +1 -0
  204. package/lib/execution/work-tool.js +152 -0
  205. package/lib/execution/work-tool.js.map +1 -0
  206. package/lib/index.js +4 -2
  207. package/lib/index.js.map +1 -1
  208. package/lib/rolling-context.d.ts +7 -0
  209. package/lib/rolling-context.d.ts.map +1 -0
  210. package/lib/rolling-context.js +143 -0
  211. package/lib/rolling-context.js.map +1 -0
  212. package/lib/scheduler/final-reply.d.ts +1 -0
  213. package/lib/scheduler/final-reply.d.ts.map +1 -1
  214. package/lib/skills/service.js +1 -1
  215. package/lib/skills/service.js.map +1 -1
  216. package/lib/ui/character-editor.js +3 -3
  217. package/lib/ui/character-editor.js.map +1 -1
  218. package/lib/ui/idle-contact-editor.js +1 -1
  219. package/lib/ui/idle-contact-editor.js.map +1 -1
  220. package/lib/ui/memory/automation-settings.d.ts.map +1 -1
  221. package/lib/ui/memory/automation-settings.js +4 -3
  222. package/lib/ui/memory/automation-settings.js.map +1 -1
  223. package/lib/ui/qq-capability-settings.d.ts.map +1 -1
  224. package/lib/ui/qq-capability-settings.js +2 -1
  225. package/lib/ui/qq-capability-settings.js.map +1 -1
  226. package/lib/ui/qq-channel-settings.d.ts.map +1 -1
  227. package/lib/ui/qq-channel-settings.js +5 -3
  228. package/lib/ui/qq-channel-settings.js.map +1 -1
  229. package/lib/ui/qq-identity-binding.js +1 -1
  230. package/lib/ui/qq-identity-binding.js.map +1 -1
  231. package/package.json +29 -2
@@ -0,0 +1,41 @@
1
+ import type { SessionEvent } from '@deepseek-ai/dsh-session';
2
+ export declare const REPLY_DOCUMENT_SCHEMA: {
3
+ type: string;
4
+ additionalProperties: boolean;
5
+ required: string[];
6
+ properties: {
7
+ name: {
8
+ type: string;
9
+ description: string;
10
+ maxLength: number;
11
+ };
12
+ content: {
13
+ type: string;
14
+ minLength: number;
15
+ maxLength: number;
16
+ description: string;
17
+ };
18
+ };
19
+ };
20
+ export declare const WORK_REPORT_SCHEMA: {
21
+ type: string;
22
+ additionalProperties: boolean;
23
+ required: string[];
24
+ properties: {
25
+ runIds: {
26
+ type: string;
27
+ minItems: number;
28
+ maxItems: number;
29
+ uniqueItems: boolean;
30
+ items: {
31
+ type: string;
32
+ };
33
+ description: string;
34
+ };
35
+ };
36
+ };
37
+ export declare function replyDocument(raw: unknown, work: unknown, events: readonly SessionEvent[]): {
38
+ name: string;
39
+ content: string;
40
+ };
41
+ //# sourceMappingURL=reply-document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reply-document.d.ts","sourceRoot":"","sources":["../../src/attachments/reply-document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAG5D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;CAGjC,CAAA;AACD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;CAG9B,CAAA;AACD,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAmB3H"}
@@ -0,0 +1,32 @@
1
+ import { workExpressionEvidence } from '../chat/work-expression.js';
2
+ export const REPLY_DOCUMENT_SCHEMA = {
3
+ type: 'object', additionalProperties: false, required: ['name', 'content'],
4
+ properties: { name: { type: 'string', description: '不含路径的 .md 或 .txt 文件名', maxLength: 120 }, content: { type: 'string', minLength: 1, maxLength: 100000, description: '完整正文;保留结果、必要限制和依据,不是聊天摘要。' } },
5
+ };
6
+ export const WORK_REPORT_SCHEMA = {
7
+ type: 'object', additionalProperties: false, required: ['runIds'],
8
+ properties: { runIds: { type: 'array', minItems: 1, maxItems: 8, uniqueItems: true, items: { type: 'string' }, description: '当前回合 partner_work_execute 返回的真实 runId;程序原样收录事实、未知、依据和产物。' } },
9
+ };
10
+ export function replyDocument(raw, work, events) {
11
+ if (raw !== undefined) {
12
+ const v = raw;
13
+ if (!v || typeof v !== 'object' || Object.keys(v).some(k => !['name', 'content'].includes(k)) || typeof v.name !== 'string' || v.name.length > 120 || !/^[^/\\\x00-\x1f<>:`]+\.(md|txt)$/i.test(v.name) || v.name.startsWith('.') || typeof v.content !== 'string' || !v.content.trim() || v.content.length > 100000)
14
+ throw Error('document 需要安全的 .md/.txt 文件名和 1–100000 字完整正文');
15
+ return { name: v.name, content: v.content };
16
+ }
17
+ const v = work;
18
+ if (!v || typeof v !== 'object' || Object.keys(v).some(k => k !== 'runIds') || !Array.isArray(v.runIds) || !v.runIds.length || v.runIds.length > 8 || new Set(v.runIds).size !== v.runIds.length || v.runIds.some(id => typeof id !== 'string'))
19
+ throw Error('workReport 需要 1–8 个不重复的本轮 runId');
20
+ const start = [...events].reverse().find(e => e.type === 'turn/start')?.seq ?? 0;
21
+ const source = workExpressionEvidence(events, start);
22
+ const reports = v.runIds.map(id => {
23
+ const report = source.reports.find(r => r.runId === id);
24
+ if (!report)
25
+ throw Error('工作记录不存在或不属于当前回合');
26
+ return report;
27
+ });
28
+ return { name: '工作结果.md', content: '# 工作结果\n\n' + reports.map(r => [
29
+ `## ${r.runId}`, `状态:${r.status}`, ...['facts', 'unknowns', 'evidence', 'artifacts'].map((key, i) => `### ${['结果', '未确认或受阻事项(本次工作范围)', '依据', '产物位置(不代表已发送)'][i]}\n\n` + (r[key].length ? r[key].join('\n\n') : '无记录')),
30
+ ].join('\n\n')).join('\n\n') + '\n' };
31
+ }
32
+ //# sourceMappingURL=reply-document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reply-document.js","sourceRoot":"","sources":["../../src/attachments/reply-document.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,6 @@ import type { ToolDefinition } from '@deepseek-ai/dsh-tools';
3
3
  import type { PartnerStore } from '../store.js';
4
4
  import type { ChannelManager } from '../channels/manager.js';
5
5
  import type { AttachmentDeliveryService } from './service.js';
6
- export declare const ATTACHMENT_PROTOCOL = "\u4EA4\u4ED8\u56FE\u7247\u6216\u6587\u6863\u65F6\uFF0C\u5982\u679C\u5F53\u524D\u63D0\u4F9B partner_send_attachment\uFF0C\u5FC5\u987B\u8C03\u7528\u5B83\uFF0Cpath \u586B\u751F\u6210\u5DE5\u5177\u8FD4\u56DE\u7684\u771F\u5B9E\u672C\u5730\u6587\u4EF6\u8DEF\u5F84\u3002\u666E\u901A Markdown \u94FE\u63A5\u4EC5\u662F\u5F15\u7528\uFF0C\u4E0D\u4EE3\u8868\u53D1\u9001\u6210\u529F\u3002\u5DE5\u5177\u4F1A\u628A\u6307\u5B9A\u6587\u4EF6\u663E\u793A\u5728\u4F1A\u8BDD\u4E2D\uFF0C\u5E76\u5728\u5F53\u524D\u4F1A\u8BDD\u7ED1\u5B9A\u6E20\u9053\u65F6\u53D1\u9001\u771F\u5B9E\u9644\u4EF6\uFF1B\u5FC5\u987B\u4EE5\u5DE5\u5177\u8FD4\u56DE\u7684 channel \u72B6\u6001\u4E3A\u51C6\u3002\u5931\u8D25\u7528 deliveryId \u91CD\u8BD5\u539F\u9644\u4EF6\uFF0C\u65E0\u9700\u91CD\u65B0\u751F\u6210\u3002\u8FDC\u7AEF\u6587\u4EF6\u5148\u4E0B\u8F7D\u5230\u5F53\u524D\u4F1A\u8BDD\u76EE\u5F55\uFF0C\u4E0D\u8981\u7F16\u9020 sandbox \u5730\u5740\u3002\u4E0D\u8981\u63D0\u4EA4\u4E2D\u95F4\u4EA7\u7269\u3001\u5185\u90E8\u6838\u9A8C\u6750\u6599\u6216\u7528\u6237\u672A\u8981\u6C42\u4EA4\u4ED8\u7684\u6587\u4EF6\u3002\u5DE5\u5177\u5B8C\u6210\u540E\u6700\u7EC8\u56DE\u590D\u53EA\u7B80\u8FF0\u7ED3\u8BBA\uFF0C\u4E0D\u8981\u518D\u6B21\u7C98\u8D34\u9644\u4EF6\u4E0B\u8F7D\u5730\u5740\u3002\u82E5\u4E34\u65F6\u6267\u884C\u73AF\u5883\u672A\u63D0\u4F9B\u6B64\u5DE5\u5177\uFF0C\u53EA\u5411\u8D1F\u8D23\u4EBA\u4EA4\u56DE\u771F\u5B9E\u6587\u4EF6\u4F4D\u7F6E\u548C\u7ED3\u679C\uFF0C\u4E0D\u5F97\u58F0\u79F0\u9644\u4EF6\u5DF2\u53D1\u9001\u3002";
6
+ export declare const ATTACHMENT_PROTOCOL = "\u4EA4\u4ED8\u56FE\u7247\u6216\u6587\u6863\u65F6\uFF0C\u5982\u679C\u5F53\u524D\u63D0\u4F9B partner_send_attachment\uFF0C\u5FC5\u987B\u8C03\u7528\u5B83\uFF0Cpath \u586B\u751F\u6210\u5DE5\u5177\u8FD4\u56DE\u7684\u771F\u5B9E\u672C\u5730\u6587\u4EF6\u8DEF\u5F84\uFF1B\u957F\u56DE\u590D\u53EF\u7528 document \u7684 name/content \u76F4\u63A5\u751F\u6210\u6587\u6863\uFF0C\u672C\u8F6E\u5B8C\u6574\u5DE5\u4F5C\u62A5\u544A\u53EF\u7528 workReport.runIds \u5F15\u7528\u771F\u5B9E\u8BB0\u5F55\u3002\u666E\u901A Markdown \u94FE\u63A5\u4EC5\u662F\u5F15\u7528\uFF0C\u4E0D\u4EE3\u8868\u53D1\u9001\u6210\u529F\u3002\u5DE5\u5177\u4F1A\u628A\u6307\u5B9A\u6587\u4EF6\u663E\u793A\u5728\u4F1A\u8BDD\u4E2D\uFF0C\u5E76\u5728\u5F53\u524D\u4F1A\u8BDD\u7ED1\u5B9A\u6E20\u9053\u65F6\u53D1\u9001\u771F\u5B9E\u9644\u4EF6\uFF1B\u5FC5\u987B\u4EE5\u5DE5\u5177\u8FD4\u56DE\u7684 channel \u72B6\u6001\u4E3A\u51C6\u3002\u5931\u8D25\u7528 deliveryId \u91CD\u8BD5\u539F\u9644\u4EF6\uFF0C\u65E0\u9700\u91CD\u65B0\u751F\u6210\u3002\u8FDC\u7AEF\u6587\u4EF6\u5148\u4E0B\u8F7D\u5230\u5F53\u524D\u4F1A\u8BDD\u76EE\u5F55\uFF0C\u4E0D\u8981\u7F16\u9020 sandbox \u5730\u5740\u3002\u4E0D\u8981\u63D0\u4EA4\u4E2D\u95F4\u4EA7\u7269\u3001\u5185\u90E8\u6838\u9A8C\u6750\u6599\u6216\u7528\u6237\u672A\u8981\u6C42\u4EA4\u4ED8\u7684\u6587\u4EF6\uFF1B\u6309\u7528\u6237\u914D\u7F6E\u7684\u77ED\u53E5\u63A5\u8BDD\u4EA4\u4ED8\u5B8C\u6574\u957F\u56DE\u590D\u6216\u5DE5\u4F5C\u62A5\u544A\u5C5E\u4E8E\u5DF2\u9009\u62E9\u7684\u4EA4\u4ED8\u65B9\u5F0F\u3002\u5DE5\u5177\u5B8C\u6210\u540E\u6700\u7EC8\u56DE\u590D\u6309\u5F53\u524D\u95F2\u804A\u8282\u594F\u63A5\u8BDD\uFF0C\u77ED\u53E5\u6A21\u5F0F\u4E0D\u518D\u6C47\u603B\u6587\u6863\u7ED3\u8BBA\uFF0C\u4E0D\u8981\u518D\u6B21\u7C98\u8D34\u9644\u4EF6\u4E0B\u8F7D\u5730\u5740\u3002\u82E5\u4E34\u65F6\u6267\u884C\u73AF\u5883\u672A\u63D0\u4F9B\u6B64\u5DE5\u5177\uFF0C\u53EA\u5411\u8D1F\u8D23\u4EBA\u4EA4\u56DE\u771F\u5B9E\u6587\u4EF6\u4F4D\u7F6E\u548C\u7ED3\u679C\uFF0C\u4E0D\u5F97\u58F0\u79F0\u9644\u4EF6\u5DF2\u53D1\u9001\u3002";
7
7
  export declare function attachmentTool(companionId: string, store: PartnerStore, service: AttachmentDeliveryService, ctx: Context, channels: ChannelManager, prefix: string): ToolDefinition;
8
8
  //# sourceMappingURL=tool.d.ts.map
@@ -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;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,CAuDnL"}
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/attachments/tool.ts"],"names":[],"mappings":"AAMA,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,69DAAib,CAAA;AAEjd,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,CAiFnL"}
@@ -1,17 +1,23 @@
1
+ import { attachmentDeliveryMeta } from '../attachments/delivery-receipt.js';
2
+ import { mkdtemp, writeFile, rm } from 'node:fs/promises';
3
+ import { tmpdir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ import { replyDocument, REPLY_DOCUMENT_SCHEMA, WORK_REPORT_SCHEMA } from './reply-document.js';
6
+ import { questionOrigin } from '../channels/question-origin.js';
1
7
  import { createUserMessage } from '@deepseek-ai/dsh-llm';
2
8
  import { isInternalTaskNotice, isRequirementDeliveryReceipt } from '../channels/delivery-policy.js';
3
9
  import { continuationChannelOrigin } from '../scheduler/channel-origin.js';
4
- export const ATTACHMENT_PROTOCOL = '交付图片或文档时,如果当前提供 partner_send_attachment,必须调用它,path 填生成工具返回的真实本地文件路径。普通 Markdown 链接仅是引用,不代表发送成功。工具会把指定文件显示在会话中,并在当前会话绑定渠道时发送真实附件;必须以工具返回的 channel 状态为准。失败用 deliveryId 重试原附件,无需重新生成。远端文件先下载到当前会话目录,不要编造 sandbox 地址。不要提交中间产物、内部核验材料或用户未要求交付的文件。工具完成后最终回复只简述结论,不要再次粘贴附件下载地址。若临时执行环境未提供此工具,只向负责人交回真实文件位置和结果,不得声称附件已发送。';
10
+ export const ATTACHMENT_PROTOCOL = '交付图片或文档时,如果当前提供 partner_send_attachment,必须调用它,path 填生成工具返回的真实本地文件路径;长回复可用 document 的 name/content 直接生成文档,本轮完整工作报告可用 workReport.runIds 引用真实记录。普通 Markdown 链接仅是引用,不代表发送成功。工具会把指定文件显示在会话中,并在当前会话绑定渠道时发送真实附件;必须以工具返回的 channel 状态为准。失败用 deliveryId 重试原附件,无需重新生成。远端文件先下载到当前会话目录,不要编造 sandbox 地址。不要提交中间产物、内部核验材料或用户未要求交付的文件;按用户配置的短句接话交付完整长回复或工作报告属于已选择的交付方式。工具完成后最终回复按当前闲聊节奏接话,短句模式不再汇总文档结论,不要再次粘贴附件下载地址。若临时执行环境未提供此工具,只向负责人交回真实文件位置和结果,不得声称附件已发送。';
5
11
  export function attachmentTool(companionId, store, service, ctx, channels, prefix) {
6
12
  return {
7
- name: 'partner_send_attachment', description: '明确交付一个图片或文档到当前伙伴会话及其绑定渠道。path 与 deliveryId 二选一;前者提交当前会话目录内真实文件(64 MB 内),后者重试已保存附件。不是文件检索工具,不自动下载 URL,不跨伙伴读取文件。内部看板执行/验收仅展示在会话,不向渠道逐项发送。',
8
- parameters: { type: 'object', properties: { path: { type: 'string' }, deliveryId: { type: 'string', description: '失败回执中的 ID;已成功的同一交付不会重复发送' } }, additionalProperties: false },
9
- output: { schema: { type: 'string' }, render: (_args, value) => [{ type: 'text', text: String(value) }] },
13
+ name: 'partner_send_attachment', description: '明确交付一个图片或文档到当前伙伴会话及其绑定渠道。path、deliveryId、document、workReport 四选一;document 直接把完整正文生成为 Markdown/文本附件,workReport 按本轮真实 runId 原样生成完整工作报告;path 提交当前会话目录内真实文件(64 MB 内),deliveryId 重试已保存附件。不是文件检索工具,不自动下载 URL,不跨伙伴读取文件。内部看板执行/验收仅展示在会话,不向渠道逐项发送。',
14
+ parameters: { type: 'object', properties: { document: REPLY_DOCUMENT_SCHEMA, workReport: WORK_REPORT_SCHEMA, path: { type: 'string' }, deliveryId: { type: 'string', description: '失败回执中的 ID;已成功的同一交付不会重复发送' } }, additionalProperties: false },
15
+ output: { schema: { type: 'string' }, render: (_args, value) => [{ type: 'text', text: String(value) }], presentationMeta: (_args, value) => attachmentDeliveryMeta(value) },
10
16
  presentCall: () => ({ card: 'generic', title: '交付图片或文档' }),
11
17
  async execute(raw, exec) {
12
18
  const input = raw;
13
- if (!input || typeof input !== 'object' || (typeof input.path === 'string') === (typeof input.deliveryId === 'string'))
14
- throw new Error('path 与 deliveryId 必须且只能提供一个');
19
+ if (!input || typeof input !== 'object' || ['path', 'deliveryId', 'document', 'workReport'].filter(k => input[k] !== undefined).length !== 1 || (input.path !== undefined && typeof input.path !== 'string') || (input.deliveryId !== undefined && typeof input.deliveryId !== 'string'))
20
+ throw new Error('path、deliveryId、document、workReport 必须且只能提供一个');
15
21
  const agent = exec.agent;
16
22
  if (!agent)
17
23
  throw new Error('附件交付需要当前伙伴会话');
@@ -30,7 +36,30 @@ export function attachmentTool(companionId, store, service, ctx, channels, prefi
30
36
  const cwd = route.cwd ?? agent.session.header.cwd;
31
37
  if (!cwd)
32
38
  throw new Error('当前会话缺少工作目录');
33
- 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));
39
+ let documentCwd;
40
+ let documentPath;
41
+ let item;
42
+ try {
43
+ if (input.document !== undefined || input.workReport !== undefined) {
44
+ if (input.workReport !== undefined) {
45
+ const start = [...events].reverse().find(e => e.type === 'turn/start')?.seq ?? 0;
46
+ const audience = questionOrigin(sessionId, events, state.sessions);
47
+ for (const event of events.filter(e => e.seq > start && e.type === 'user/message' && e.data.source.kind === 'user')) {
48
+ if (questionOrigin(sessionId, events.filter(e => e.seq <= event.seq), state.sessions)?.id !== audience?.id)
49
+ throw Error('不能跨回复对象导出工作报告');
50
+ }
51
+ }
52
+ const document = replyDocument(input.document, input.workReport, events);
53
+ documentCwd = await mkdtemp(join(tmpdir(), 'partner-reply-document-'));
54
+ await writeFile(join(documentCwd, document.name), document.content, { mode: 0o600 });
55
+ documentPath = join(documentCwd, document.name);
56
+ }
57
+ item = typeof input.deliveryId === 'string' ? service.get(input.deliveryId) : await service.serial('prepare', () => service.prepare({ companionId, sessionId, turn: origin?.seq ?? agent.session.seq, cwd: documentCwd ?? cwd, path: documentPath ?? input.path, channel, ...(source ? { channelRouteId: source.id } : {}) }, exec.signal));
58
+ }
59
+ finally {
60
+ if (documentCwd)
61
+ await rm(documentCwd, { recursive: true, force: true });
62
+ }
34
63
  if (!item || item.companionId !== companionId || item.sessionId !== sessionId)
35
64
  throw new Error('附件交付不存在或不属于当前伙伴会话');
36
65
  // Only the live task executor may register deliverables, never a reviewer.
@@ -58,6 +87,14 @@ export function attachmentTool(companionId, store, service, ctx, channels, prefi
58
87
  const ref = await ctx.attachments.saveImage({ data: await service.bytes(item), mediaType: item.mediaType, name: item.name });
59
88
  content.push({ type: 'image', attachment: ref });
60
89
  }
90
+ if (input.document !== undefined || input.workReport !== undefined) {
91
+ exec.signal.throwIfAborted();
92
+ const current = store.snapshot(), currentEvents = agent.session.snapshotEvents();
93
+ const latestUser = (es) => [...es].reverse().find(e => e.type === 'user/message' && e.data.source.kind === 'user')?.seq;
94
+ if (store.isCompanionRemoving(companionId) || !current.companions.some(c => c.id === companionId) ||
95
+ continuationChannelOrigin(current, companionId, sessionId, currentEvents)?.id !== source?.id || latestUser(currentEvents) !== latestUser(events))
96
+ throw Error('回复来源已变化,文档已保存但未向旧来源发送');
97
+ }
61
98
  let error;
62
99
  try {
63
100
  item = await service.deliver(item, file => channels.sendExplicitAttachment(sessionId, file, exec.signal, item.channelRouteId));
@@ -68,7 +105,7 @@ export function attachmentTool(companionId, store, service, ctx, channels, prefi
68
105
  const status = item.channel === 'sent' ? '渠道附件已发送' : item.channel === 'none' ? '仅交付到当前会话' : `渠道发送未完成,请用 deliveryId 重试:${item.id}`;
69
106
  content.push({ type: 'text', text: status });
70
107
  exec.deferContext(createUserMessage({ source: { kind: 'plugin:@lemoncat7/dsh-partner', plugin: '@lemoncat7/dsh-partner', form: 'notice', summary: '伙伴附件交付' }, content }));
71
- return JSON.stringify({ deliveryId: item.id, name: item.name, conversation: 'attachment_recorded', channel: item.channel, ...(error ? { error, retry: { deliveryId: item.id } } : {}) });
108
+ return JSON.stringify({ deliveryId: item.id, name: item.name, conversation: 'attachment_recorded', channel: item.channel, ...(source ? { originRouteId: source.id } : {}), ...(input.workReport !== undefined ? { reportRunIds: input.workReport.runIds } : {}), ...(error ? { error, retry: { deliveryId: item.id } } : {}) });
72
109
  });
73
110
  },
74
111
  };
@@ -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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"}
@@ -18,6 +18,8 @@ export interface PartnerOutboundAttachment {
18
18
  kind: 'image' | 'file';
19
19
  }
20
20
  export interface PartnerReply {
21
+ /** A tool already delivered the reply to the channel (for example QQ voice). */
22
+ alreadyDelivered?: boolean;
21
23
  /** Internal provenance, armed only after confirmed channel delivery. */
22
24
  postReplySource?: {
23
25
  routeId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"channel-message.d.ts","sourceRoot":"","sources":["../src/channel-message.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,QAAmB,CAAA;AAEvD,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAA;IACtB,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,wBAAwB,EAAE,CAAA;CACxC;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,wEAAwE;IACxE,eAAe,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/E,iBAAiB,CAAC,EAAE;QAAC,OAAO,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,MAAM,CAAC;QAAA,aAAa,EAAC,MAAM,CAAC;QAAA,cAAc,EAAC,MAAM,CAAA;KAAC,CAAA;IACjH,SAAS,CAAC,EAAE,OAAO,oBAAoB,EAAE,QAAQ,EAAE,CAAA;IACnD,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,4FAA4F;IAC5F,YAAY,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;IAE3G,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,WAAW,CAAA;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,yBAAyB,EAAE,CAAA;CACzC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAa,EAAE,gBAAgB,SAAK,GAAG,MAAM,CAIjG"}
1
+ {"version":3,"file":"channel-message.d.ts","sourceRoot":"","sources":["../src/channel-message.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,QAAmB,CAAA;AAEvD,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAA;IACtB,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,wBAAwB,EAAE,CAAA;CACxC;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,wEAAwE;IACxE,eAAe,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/E,iBAAiB,CAAC,EAAE;QAAC,OAAO,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,MAAM,CAAC;QAAA,aAAa,EAAC,MAAM,CAAC;QAAA,cAAc,EAAC,MAAM,CAAA;KAAC,CAAA;IACjH,SAAS,CAAC,EAAE,OAAO,oBAAoB,EAAE,QAAQ,EAAE,CAAA;IACnD,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,4FAA4F;IAC5F,YAAY,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;IAE3G,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,WAAW,CAAA;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,yBAAyB,EAAE,CAAA;CACzC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAa,EAAE,gBAAgB,SAAK,GAAG,MAAM,CAIjG"}
@@ -1 +1 @@
1
- {"version":3,"file":"channel-message.js","sourceRoot":"","sources":["../src/channel-message.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;AAuCvD,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,QAAQ,GAAG,UAAU,EAAE,gBAAgB,GAAG,EAAE;IACvF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACpG,IAAI,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAA;IAC7B,OAAO,gBAAgB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;AAC/F,CAAC"}
1
+ {"version":3,"file":"channel-message.js","sourceRoot":"","sources":["../src/channel-message.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;AAyCvD,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,QAAQ,GAAG,UAAU,EAAE,gBAAgB,GAAG,EAAE;IACvF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACpG,IAAI,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAA;IAC7B,OAAO,gBAAgB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;AAC/F,CAAC"}
@@ -6,6 +6,7 @@ export declare function isRequirementDeliveryReceipt(event: SessionEvent): boole
6
6
  /** Goal completion may share a turn with review; it must not bypass silence. */
7
7
  export declare function isAutonomousDeliveryTurn(events: readonly SessionEvent[], history?: readonly SessionEvent[]): boolean;
8
8
  export interface ChannelReplyParts {
9
+ alreadyDelivered?: boolean;
9
10
  chatParts?: ChatPart[];
10
11
  chatOriginRouteId?: string | null;
11
12
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"delivery-policy.d.ts","sourceRoot":"","sources":["../../src/channels/delivery-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAS5D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAIjE;AAED,gFAAgF;AAChF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAGzE;AAED,gFAAgF;AAChF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,EAAE,OAAO,GAAE,SAAS,YAAY,EAAW,GAAG,OAAO,CAY5H;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,8EAA8E;IAC9E,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB;AAED,+EAA+E;AAC/E,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,iBAAiB,CA0C9H;AAED,6FAA6F;AAC7F,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9F"}
1
+ {"version":3,"file":"delivery-policy.d.ts","sourceRoot":"","sources":["../../src/channels/delivery-policy.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAS5D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAIjE;AAED,gFAAgF;AAChF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAGzE;AAED,gFAAgF;AAChF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,EAAE,OAAO,GAAE,SAAS,YAAY,EAAW,GAAG,OAAO,CAY5H;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,8EAA8E;IAC9E,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB;AAED,+EAA+E;AAC/E,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,iBAAiB,CAmD9H;AAED,6FAA6F;AAC7F,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9F"}
@@ -1,3 +1,4 @@
1
+ import { deliveredAttachment } from '../attachments/delivery-receipt.js';
1
2
  import { chatReplyFromEvent } from '../chat/protocol.js';
2
3
  import { isPluginSource } from '../message-source.js';
3
4
  const INTERNAL_TASK_NOTICES = new Set([
@@ -38,12 +39,19 @@ export function channelReplyPartsAfter(events, fromSeq, autonomous = false) {
38
39
  let answer = '';
39
40
  let chat;
40
41
  let hasChat = false;
42
+ let alreadyDelivered = false;
43
+ let chatDelivered = false;
41
44
  let chatOriginRouteId;
42
45
  const ordered = [];
43
46
  let references = [];
44
47
  const messages = [], referenceTexts = [];
45
48
  const flush = () => {
46
49
  if (direct) {
50
+ if (chatDelivered) {
51
+ alreadyDelivered = true;
52
+ if (!chat && !answer)
53
+ hasChat = true;
54
+ }
47
55
  if (chat) {
48
56
  ordered.push(...chat);
49
57
  hasChat = true;
@@ -58,6 +66,7 @@ export function channelReplyPartsAfter(events, fromSeq, autonomous = false) {
58
66
  answer = '';
59
67
  references = [];
60
68
  chat = undefined;
69
+ chatDelivered = false;
61
70
  };
62
71
  for (const event of events) {
63
72
  if (event.seq <= fromSeq)
@@ -67,7 +76,7 @@ export function channelReplyPartsAfter(events, fromSeq, autonomous = false) {
67
76
  direct = autonomous;
68
77
  }
69
78
  else if (event.type === 'turn/end') {
70
- if (event.data.reason.kind !== 'completed') {
79
+ if (event.data.reason.kind !== 'completed' && !chatDelivered) {
71
80
  answer = '';
72
81
  references = [];
73
82
  chat = undefined;
@@ -82,12 +91,19 @@ export function channelReplyPartsAfter(events, fromSeq, autonomous = false) {
82
91
  answer = '';
83
92
  references = [];
84
93
  chat = undefined;
94
+ chatDelivered = false;
85
95
  direct = false;
86
96
  }
97
+ else if (direct && deliveredAttachment(event)) {
98
+ chatDelivered = true;
99
+ const route = deliveredAttachment(event);
100
+ chatOriginRouteId = chatOriginRouteId === undefined ? route : chatOriginRouteId === route ? route : null;
101
+ }
87
102
  else if (direct && chatReplyFromEvent(event)) {
88
103
  const reply = chatReplyFromEvent(event);
89
104
  chat = reply.parts;
90
105
  answer = '';
106
+ chatDelivered = chatDelivered || reply.delivered === true;
91
107
  chatOriginRouteId = chatOriginRouteId === undefined ? reply.originRouteId : chatOriginRouteId === reply.originRouteId ? chatOriginRouteId : null;
92
108
  }
93
109
  else if (direct && event.type === 'tool/result' && !chat)
@@ -103,7 +119,7 @@ export function channelReplyPartsAfter(events, fromSeq, autonomous = false) {
103
119
  }
104
120
  }
105
121
  flush();
106
- return { text: messages.join('\n\n'), referenceTexts, ...(hasChat ? { chatParts: ordered, ...(chatOriginRouteId !== undefined ? { chatOriginRouteId } : {}) } : {}) };
122
+ return { text: messages.join('\n\n'), referenceTexts, ...(alreadyDelivered ? { alreadyDelivered: true } : {}), ...(hasChat ? { chatParts: ordered, ...(chatOriginRouteId !== undefined ? { chatOriginRouteId } : {}) } : {}) };
107
123
  }
108
124
  /** whenIdle may encompass follow-up turns: don't append internal reviews to a user reply. */
109
125
  export function channelReplyTextAfter(events, fromSeq) {
@@ -1 +1 @@
1
- {"version":3,"file":"delivery-policy.js","sourceRoot":"","sources":["../../src/channels/delivery-policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delivery-policy.js","sourceRoot":"","sources":["../../src/channels/delivery-policy.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,8 @@ export interface DirectConfig {
11
11
  targetId: string;
12
12
  }
13
13
  export interface DirectMessage {
14
+ qqReplyId?: string;
15
+ qqQuote?: import('../qq/quote.js').QqQuote;
14
16
  senderName?: string;
15
17
  qqGroup?: {
16
18
  groupId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/channels/direct/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/channels/direct/transport.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/channels/manager.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAkB,aAAa,EAAE,MAAM,cAAc,CAAA;AACzG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAWzD,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAA;AAExE,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AAEjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAErE,OAAO,KAAK,EAAgB,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AAGpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAOjE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAE1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAE/D,KAAK,cAAc,GAAG,OAAO,GAAG;IAAE,QAAQ,EAAE,aAAa,CAAA;CAAE,CAAA;AAoB3D,qBAAa,cAAc;IAoBvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAvB7B,OAAO,CAAC,OAAO,CAAiD;IAChE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IACjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,oBAAoB,CAAwB;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0E;IAChG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwC;IACnE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqC;IACtE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsC;IACxE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA6C;IACjF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqC;IACtE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmC;IAClE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAsB;IAC3D,OAAO,CAAC,mBAAmB,CAAC,CAAwD;IAEpF,sBAAsB,CAAC,OAAO,EAAE,yBAAyB,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;gBAG7D,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,sBAAsB,EACnC,MAAM,EAAE,mBAAmB,EAC3B,UAAU,EAAE,MAAM;IAGrC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,GAAG,MAAM,IAAI;IAI5E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;YAC9B,MAAM;IAKd,kBAAkB,CAAC,SAAS,EAAC,MAAM,EAAC,KAAK,EAAC;QAAC,OAAO,EAAC,MAAM,CAAC;QAAA,QAAQ,CAAC,EAAC,MAAM,CAAC;QAAA,QAAQ,EAAC,OAAO,CAAC;QAAA,iBAAiB,EAAC,MAAM,CAAA;KAAC,GAAE,OAAO,CAAC,IAAI,CAAC;YAG5H,gBAAgB;IAqBxB,QAAQ,CAAC,SAAS,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,EAAC,iBAAiB,EAAC,MAAM,GAAE,OAAO,CAAC,IAAI,CAAC;YAGvE,cAAc;IAYtB,WAAW,CAAC,SAAS,EAAC,MAAM,EAAC,IAAI,EAAC,QAAQ,GAAC,SAAS,GAAC,OAAO,GAAC,UAAU,GAAE,OAAO,CAAC,OAAO,CAAC;IAezF,YAAY,CAAC,SAAS,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,CAAC,MAAM,EAAC,OAAO,CAAC,EAAC,MAAM,EAAC,WAAW,EAAC,KAAK,EAAC,MAAI,IAAI,GAAE,OAAO,CAAC,OAAO,CAAC;IAQ7H,QAAQ,CAAC,SAAS,EAAC,MAAM,EAAC,OAAO,EAAC,MAAM,GAAE,OAAO,CAAC,OAAO,CAAC;IAS1D,YAAY,CAAC,SAAS,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC;QAAC,IAAI,CAAC,EAAC,MAAM,CAAC;QAAA,MAAM,CAAC,EAAC,MAAM,CAAC;QAAA,YAAY,CAAC,EAAC,MAAM,CAAA;KAAC,GAAE,OAAO,CAAC,IAAI,CAAC;IAuBnH,KAAK,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAgBrC,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,iBAAiB,CAA4C;IACrE,OAAO,CAAC,YAAY,CAA2B;IAEzC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ7B,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBvC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IActC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/F,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWvI,kBAAkB,CAAC,KAAK,EAAE,OAAO,wBAAwB,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAc/F,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAehD,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC9D,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YAgErE,cAAc;IAc5B,OAAO,CAAC,eAAe;YAOT,kBAAkB;IAYhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;YACtD,sBAAsB;YAMtB,yBAAyB;IA+CvC,OAAO,CAAC,eAAe;YAOT,aAAa;IAe3B,OAAO,CAAC,iBAAiB;YAQX,kBAAkB;YAiBlB,kBAAkB;YAalB,QAAQ;IAQtB,OAAO,CAAC,eAAe;YAST,aAAa;YAgFb,iBAAiB;YAqEjB,qBAAqB;IAanC,OAAO,CAAC,oBAAoB;YAKd,mBAAmB;YAkBnB,eAAe;YAIf,gBAAgB;IAO9B,OAAO,CAAC,MAAM;IAoBd,kFAAkF;YACpE,UAAU;YA+EV,aAAa;YAeb,YAAY;YAqIZ,WAAW;CAO1B;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,GAAG,aAAa,CAI9E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,CAI5E;AASD,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,CAO1D;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAWxE;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,mBAAmB,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAGrG;AAuBD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAGtG"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/channels/manager.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { resolveQqQuote, quotedMessageText } from './qq/quote.js';
1
2
  import { AuthoredProgress } from './authored-progress.js';
2
3
  import { activityPolicyCurrent } from '../character/post-reply.js';
3
4
  import { channelReplyAllowed, directReplyTarget } from './reply-access.js';
@@ -9,7 +10,7 @@ import { OneBotError } from './qq/connection.js';
9
10
  import { isSleeping } from '../character/sleep.js';
10
11
  import { isActivitySilenceRequested } from '../character/activity-tool.js';
11
12
  import { isIdleContactNotice, idleContactRouteAllowed, lastIdleContactUser } from '../character/idle-contact.js';
12
- import { replyDeliveryParts } from '../chat/protocol.js';
13
+ import { replyDeliveryParts, segmentIdleChatReply } from '../chat/protocol.js';
13
14
  import { randomBytes } from 'node:crypto';
14
15
  import { WeixinApi } from './weixin/api.js';
15
16
  import { pollWeixin } from './weixin/poll.js';
@@ -163,7 +164,7 @@ export class ChannelManager {
163
164
  return { friends: Array.isArray(result) ? result.filter(g => g && validQqId(String(g.user_id))).slice(0, 2000).map(g => ({ id: String(g.user_id), name: String(g.remark || g.nickname || g.user_id).slice(0, 120) })) : [] };
164
165
  if (kind === 'groups')
165
166
  return { groups: Array.isArray(result) ? result.filter(g => g && validQqId(String(g.group_id))).slice(0, 1000).map(g => ({ id: String(g.group_id), name: String(g.group_name ?? g.group_id).slice(0, 120) })) : [] };
166
- const custom = await api.onebot.connection.call('fetch_custom_face_detail', { count: 100 }).catch(() => []);
167
+ const custom = await api.onebot.connection.call('fetch_custom_face_detail', { count: 200 }).catch(() => []);
167
168
  return { faces: [...qqCustomCatalog(custom), ...qqFaceCatalog(result)] };
168
169
  }
169
170
  finally {
@@ -452,7 +453,8 @@ export class ChannelManager {
452
453
  if (route.kind === 'channel' && valid()) {
453
454
  const parts = channelReplyPartsAfter(events, 0, true);
454
455
  if (parts.text || parts.chatParts?.length) {
455
- const reply = await prepareChannelReply(parts, route.cwd ?? partnerCwd(this.defaultCwd, route.companionId));
456
+ const card = this.store.snapshot().companions.find(c => c.id === route.companionId)?.characterCard;
457
+ const reply = segmentIdleChatReply(await prepareChannelReply(parts, route.cwd ?? partnerCwd(this.defaultCwd, route.companionId)), Boolean(card?.enabled && card.segmentedReplies));
456
458
  const claim = route.idleContactState, state = this.store.snapshot(), channel = state.channels.find(c => c.id === route.channelId);
457
459
  reply.idleContactOrigin = { routeId: route.id, sessionId: session.id, messageId: notice.data.id, userMessageId: claim.userMessageId, policyRevision: claim.policyRevision };
458
460
  if (channel.direct)
@@ -1081,9 +1083,6 @@ export class ChannelManager {
1081
1083
  if (events.some(item => item.sender !== event.sender || (item.targetId ?? api.config?.targetId) !== (event.targetId ?? api.config?.targetId)))
1082
1084
  throw new Error('不能合并不同联系人的附件消息');
1083
1085
  const receipts = events.map(item => `${channel.id}:${item.id}`);
1084
- const rawText = events.map(item => item.text).filter(Boolean).join('\n\n');
1085
- let text = event.qqGroup ? `[QQ 群 ${event.qqGroup.groupId} · 发言人 ${event.qqGroup.senderName}(${event.qqGroup.userId})${event.qqGroup.autonomous && !event.qqGroup.mentioned ? ' · 自主接话' : ''}]\n${rawText}` : rawText;
1086
- const mediaCount = events.reduce((sum, item) => sum + (item.media?.length ?? 0), 0);
1087
1086
  const pairing = this.store.snapshot().pairings.find(p => p.channelId === channel.id && p.userId === event.sender);
1088
1087
  const groupAccess = channel.platform === 'qq' && !!event.qqGroup && channelReplyAllowed(this.store.snapshot(), channel.id, event.sender, event.targetId);
1089
1088
  const activeChannel = this.store.snapshot().channels.find(c => c.id === channel.id && c.enabled && c.accountId === channel.accountId && c.companionId === channel.companionId);
@@ -1092,8 +1091,28 @@ export class ChannelManager {
1092
1091
  await this.rememberReceipts(receipts);
1093
1092
  return;
1094
1093
  }
1094
+ if (channel.platform === 'qq' && (groupAccess || pairing?.status === 'approved') && api.onebot) {
1095
+ // Resolve inside this conversation's worker; other sessions continue polling and replying.
1096
+ const cache = new Map();
1097
+ await Promise.all(events.map(item => resolveQqQuote(item, channel.accountId, (id, readSignal) => {
1098
+ let result = cache.get(id);
1099
+ if (!result) {
1100
+ result = api.onebot.connection.call('get_msg', { message_id: id }, readSignal);
1101
+ cache.set(id, result);
1102
+ }
1103
+ return result;
1104
+ }, signal)));
1105
+ }
1106
+ const rawText = events.map(quotedMessageText).filter(Boolean).join('\n\n');
1107
+ let text = event.qqGroup ? `[QQ 群 ${event.qqGroup.groupId} · 发言人 ${event.qqGroup.senderName}(${event.qqGroup.userId})${event.qqGroup.autonomous && !event.qqGroup.mentioned ? ' · 自主接话' : ''}]\n${rawText}` : rawText;
1108
+ const mediaCount = events.reduce((sum, item) => sum + (item.media?.length ?? 0), 0);
1095
1109
  for (const item of events)
1096
1110
  this.groupAutonomy.observe(channel.id, item);
1111
+ if (event.qqGroup && isSleeping(requiredCompanion(this.store, channel.companionId)) && !event.qqGroup.mentioned && event.qqGroup.replyTo !== 'self') {
1112
+ this.groupAutonomy.record(channel.id, event, '伙伴正在睡眠,暂停群聊自主接话');
1113
+ await this.rememberReceipts(receipts);
1114
+ return;
1115
+ }
1097
1116
  if (event.qqGroup?.autonomous && !event.qqGroup.mentioned) {
1098
1117
  // Recheck current access: a queued event may outlive whitelist removal.
1099
1118
  if (!groupAccess) {
@@ -1181,6 +1200,25 @@ export class ChannelManager {
1181
1200
  await api.sendText(event.sender, '附件接收失败,未交给伙伴执行。请确认附件可下载、单条消息不超过 8 个附件且总大小不超过 64 MB,再重新发送。加密附件暂不支持。', undefined, signal);
1182
1201
  return;
1183
1202
  }
1203
+ for (const item of events)
1204
+ if (item.qqQuote?.media.length) {
1205
+ for (const media of item.qqQuote.media) {
1206
+ if (attachments.length >= 8) {
1207
+ text += '\n[引用附件过多,剩余部分未加载]';
1208
+ break;
1209
+ }
1210
+ try {
1211
+ const remaining = PARTNER_MEDIA_MAX_BYTES - attachments.reduce((sum, a) => sum + a.data.byteLength, 0);
1212
+ const received = await api.receiveAttachments({ ...item, media: [media] }, signal, allowed, remaining);
1213
+ attachments.push(...received);
1214
+ }
1215
+ catch (error) {
1216
+ if (signal.aborted || !allowed())
1217
+ throw error;
1218
+ text += '\n[引用附件读取失败;原消息文字仍保留,可请对方重发原图或文件]';
1219
+ }
1220
+ }
1221
+ }
1184
1222
  if (!allowed())
1185
1223
  throw new Error('渠道或联系人授权已撤销');
1186
1224
  const sessionTitle = channel.platform === 'qq' ? await this.qqSessionName(channel, api, event, signal) : undefined;
@@ -1220,8 +1258,15 @@ export class ChannelManager {
1220
1258
  throw new Error('渠道或联系人授权已撤销,取消回复');
1221
1259
  if (reply.chatParts?.length === 0 && !reply.text.trim() && !reply.attachments.length) {
1222
1260
  await progress?.completeWithoutReply();
1261
+ if (reply.alreadyDelivered) {
1262
+ await this.rememberReceipts(receipts);
1263
+ if (reply.postReplySource)
1264
+ await this.agents.replyDelivered(reply.postReplySource).catch(error => this.ctx.logger.warn(`主动延续登记失败:${String(error)}`));
1265
+ if (event.qqGroup)
1266
+ this.groupAutonomy.replied(channel.id, event, '[语音回复]');
1267
+ }
1223
1268
  if (timing)
1224
- timing.outcome = 'silent';
1269
+ timing.outcome = reply.alreadyDelivered ? 'replied' : 'silent';
1225
1270
  return;
1226
1271
  }
1227
1272
  if (reply.chatParts) {