@lemoncat7/dsh-partner 2.22.2 → 2.23.40
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.
- package/README.md +6 -2
- package/docs/qq-channel.md +19 -3
- package/docs/releases/2.22.3.md +7 -0
- package/docs/releases/2.22.4.md +7 -0
- package/docs/releases/2.22.5.md +5 -0
- package/docs/releases/2.22.6.md +3 -0
- package/docs/releases/2.23.0.md +7 -0
- package/docs/releases/2.23.1.md +7 -0
- package/docs/releases/2.23.11.md +9 -0
- package/docs/releases/2.23.12.md +11 -0
- package/docs/releases/2.23.13.md +13 -0
- package/docs/releases/2.23.14.md +11 -0
- package/docs/releases/2.23.15.md +7 -0
- package/docs/releases/2.23.16.md +7 -0
- package/docs/releases/2.23.17.md +7 -0
- package/docs/releases/2.23.18.md +9 -0
- package/docs/releases/2.23.19.md +9 -0
- package/docs/releases/2.23.20.md +11 -0
- package/docs/releases/2.23.21.md +7 -0
- package/docs/releases/2.23.22.md +5 -0
- package/docs/releases/2.23.23.md +9 -0
- package/docs/releases/2.23.24.md +11 -0
- package/docs/releases/2.23.25.md +5 -0
- package/docs/releases/2.23.26.md +7 -0
- package/docs/releases/2.23.27.md +7 -0
- package/docs/releases/2.23.28.md +11 -0
- package/docs/releases/2.23.29.md +10 -0
- package/docs/releases/2.23.30.md +10 -0
- package/docs/releases/2.23.31.md +11 -0
- package/docs/releases/2.23.32.md +11 -0
- package/docs/releases/2.23.33.md +11 -0
- package/docs/releases/2.23.34.md +9 -0
- package/docs/releases/2.23.35.md +3 -0
- package/docs/releases/2.23.36.md +11 -0
- package/docs/releases/2.23.37.md +3 -0
- package/docs/releases/2.23.38.md +8 -0
- package/docs/releases/2.23.39.md +5 -0
- package/docs/releases/2.23.40.md +5 -0
- package/docs/tool-entry-compatibility.md +2 -2
- package/lib/agent-runtime.d.ts +2 -0
- package/lib/agent-runtime.d.ts.map +1 -1
- package/lib/agent-runtime.js +105 -29
- package/lib/agent-runtime.js.map +1 -1
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +22 -1
- package/lib/api.js.map +1 -1
- package/lib/attachments/delivery-receipt.d.ts +7 -0
- package/lib/attachments/delivery-receipt.d.ts.map +1 -0
- package/lib/attachments/delivery-receipt.js +22 -0
- package/lib/attachments/delivery-receipt.js.map +1 -0
- package/lib/attachments/reply-document.d.ts +41 -0
- package/lib/attachments/reply-document.d.ts.map +1 -0
- package/lib/attachments/reply-document.js +32 -0
- package/lib/attachments/reply-document.js.map +1 -0
- package/lib/attachments/tool.d.ts +1 -1
- package/lib/attachments/tool.d.ts.map +1 -1
- package/lib/attachments/tool.js +45 -8
- package/lib/attachments/tool.js.map +1 -1
- package/lib/channel-message.d.ts +2 -0
- package/lib/channel-message.d.ts.map +1 -1
- package/lib/channel-message.js.map +1 -1
- package/lib/channels/authored-progress.d.ts +2 -1
- package/lib/channels/authored-progress.d.ts.map +1 -1
- package/lib/channels/authored-progress.js +4 -2
- package/lib/channels/authored-progress.js.map +1 -1
- package/lib/channels/delivery-policy.d.ts +1 -0
- package/lib/channels/delivery-policy.d.ts.map +1 -1
- package/lib/channels/delivery-policy.js +22 -4
- package/lib/channels/delivery-policy.js.map +1 -1
- package/lib/channels/direct/transport.d.ts +2 -0
- package/lib/channels/direct/transport.d.ts.map +1 -1
- package/lib/channels/manager.d.ts.map +1 -1
- package/lib/channels/manager.js +54 -9
- package/lib/channels/manager.js.map +1 -1
- package/lib/channels/outbound-media.js +1 -1
- package/lib/channels/outbound-media.js.map +1 -1
- package/lib/channels/qq/action-catalog.d.ts.map +1 -1
- package/lib/channels/qq/action-catalog.js +111 -0
- package/lib/channels/qq/action-catalog.js.map +1 -1
- package/lib/channels/qq/actions.d.ts +1 -1
- package/lib/channels/qq/actions.d.ts.map +1 -1
- package/lib/channels/qq/actions.js +81 -10
- package/lib/channels/qq/actions.js.map +1 -1
- package/lib/channels/qq/authority.d.ts +1 -1
- package/lib/channels/qq/authority.d.ts.map +1 -1
- package/lib/channels/qq/authority.js +7 -2
- package/lib/channels/qq/authority.js.map +1 -1
- package/lib/channels/qq/autonomy.d.ts.map +1 -1
- package/lib/channels/qq/autonomy.js +3 -0
- package/lib/channels/qq/autonomy.js.map +1 -1
- package/lib/channels/qq/chat-actions.d.ts +6 -0
- package/lib/channels/qq/chat-actions.d.ts.map +1 -0
- package/lib/channels/qq/chat-actions.js +11 -0
- package/lib/channels/qq/chat-actions.js.map +1 -0
- package/lib/channels/qq/message.js +1 -1
- package/lib/channels/qq/message.js.map +1 -1
- package/lib/channels/qq/quote.d.ts +14 -0
- package/lib/channels/qq/quote.d.ts.map +1 -0
- package/lib/channels/qq/quote.js +69 -0
- package/lib/channels/qq/quote.js.map +1 -0
- package/lib/channels/qq/reply-tool.d.ts.map +1 -1
- package/lib/channels/qq/reply-tool.js +8 -4
- package/lib/channels/qq/reply-tool.js.map +1 -1
- package/lib/channels/qq/sticker-adapter.d.ts.map +1 -1
- package/lib/channels/qq/sticker-adapter.js +9 -11
- package/lib/channels/qq/sticker-adapter.js.map +1 -1
- package/lib/channels/weixin/connect.d.ts.map +1 -1
- package/lib/character/activity-tool.d.ts +3 -0
- package/lib/character/activity-tool.d.ts.map +1 -1
- package/lib/character/activity-tool.js +13 -8
- package/lib/character/activity-tool.js.map +1 -1
- package/lib/character/affection-tool.d.ts +4 -0
- package/lib/character/affection-tool.d.ts.map +1 -0
- package/lib/character/affection-tool.js +61 -0
- package/lib/character/affection-tool.js.map +1 -0
- package/lib/character/affection.d.ts +41 -16
- package/lib/character/affection.d.ts.map +1 -1
- package/lib/character/affection.js +35 -20
- package/lib/character/affection.js.map +1 -1
- package/lib/character/conversation-behavior.d.ts +8 -7
- package/lib/character/conversation-behavior.d.ts.map +1 -1
- package/lib/character/conversation-behavior.js +29 -39
- package/lib/character/conversation-behavior.js.map +1 -1
- package/lib/character/domain.js +1 -1
- package/lib/character/domain.js.map +1 -1
- package/lib/character/fatigue.d.ts +1 -1
- package/lib/character/fatigue.js +1 -1
- package/lib/character/idle-contact.d.ts +22 -1
- package/lib/character/idle-contact.d.ts.map +1 -1
- package/lib/character/idle-contact.js +72 -21
- package/lib/character/idle-contact.js.map +1 -1
- package/lib/character/post-reply.d.ts +10 -4
- package/lib/character/post-reply.d.ts.map +1 -1
- package/lib/character/post-reply.js +56 -12
- package/lib/character/post-reply.js.map +1 -1
- package/lib/character/prompt-projection.d.ts +10 -0
- package/lib/character/prompt-projection.d.ts.map +1 -0
- package/lib/character/prompt-projection.js +42 -0
- package/lib/character/prompt-projection.js.map +1 -0
- package/lib/character/sleep-service.d.ts +1 -1
- package/lib/character/sleep-service.d.ts.map +1 -1
- package/lib/character/sleep-service.js +5 -3
- package/lib/character/sleep-service.js.map +1 -1
- package/lib/character/sleep.d.ts +3 -1
- package/lib/character/sleep.d.ts.map +1 -1
- package/lib/character/sleep.js +4 -2
- package/lib/character/sleep.js.map +1 -1
- package/lib/character/state-policy.d.ts.map +1 -1
- package/lib/character/state-policy.js +1 -0
- package/lib/character/state-policy.js.map +1 -1
- package/lib/chat/action-obligation.d.ts +17 -0
- package/lib/chat/action-obligation.d.ts.map +1 -0
- package/lib/chat/action-obligation.js +109 -0
- package/lib/chat/action-obligation.js.map +1 -0
- package/lib/chat/agreements.d.ts +21 -0
- package/lib/chat/agreements.d.ts.map +1 -0
- package/lib/chat/agreements.js +120 -0
- package/lib/chat/agreements.js.map +1 -0
- package/lib/chat/attachment-reference.d.ts +4 -0
- package/lib/chat/attachment-reference.d.ts.map +1 -0
- package/lib/chat/attachment-reference.js +13 -0
- package/lib/chat/attachment-reference.js.map +1 -0
- package/lib/chat/context-selection.d.ts +10 -0
- package/lib/chat/context-selection.d.ts.map +1 -0
- package/lib/chat/context-selection.js +39 -0
- package/lib/chat/context-selection.js.map +1 -0
- package/lib/chat/conversation.d.ts.map +1 -1
- package/lib/chat/conversation.js +4 -0
- package/lib/chat/conversation.js.map +1 -1
- package/lib/chat/live-speech.d.ts +18 -0
- package/lib/chat/live-speech.d.ts.map +1 -0
- package/lib/chat/live-speech.js +137 -0
- package/lib/chat/live-speech.js.map +1 -0
- package/lib/chat/protocol.d.ts +23 -0
- package/lib/chat/protocol.d.ts.map +1 -1
- package/lib/chat/protocol.js +31 -1
- package/lib/chat/protocol.js.map +1 -1
- package/lib/chat/reply-completion.d.ts +27 -0
- package/lib/chat/reply-completion.d.ts.map +1 -0
- package/lib/chat/reply-completion.js +123 -0
- package/lib/chat/reply-completion.js.map +1 -0
- package/lib/chat/reply-continuity.d.ts +20 -0
- package/lib/chat/reply-continuity.d.ts.map +1 -0
- package/lib/chat/reply-continuity.js +97 -0
- package/lib/chat/reply-continuity.js.map +1 -0
- package/lib/chat/short-expression.d.ts +6 -0
- package/lib/chat/short-expression.d.ts.map +1 -0
- package/lib/chat/short-expression.js +24 -0
- package/lib/chat/short-expression.js.map +1 -0
- package/lib/chat/sticker-adapter.d.ts +1 -1
- package/lib/chat/sticker-adapter.d.ts.map +1 -1
- package/lib/chat/tools.d.ts.map +1 -1
- package/lib/chat/tools.js +79 -10
- package/lib/chat/tools.js.map +1 -1
- package/lib/chat/verified-calculation.d.ts +48 -0
- package/lib/chat/verified-calculation.d.ts.map +1 -0
- package/lib/chat/verified-calculation.js +46 -0
- package/lib/chat/verified-calculation.js.map +1 -0
- package/lib/chat/work-expression.d.ts +84 -0
- package/lib/chat/work-expression.d.ts.map +1 -0
- package/lib/chat/work-expression.js +296 -0
- package/lib/chat/work-expression.js.map +1 -0
- package/lib/client-api.d.ts +2 -1
- package/lib/client-api.d.ts.map +1 -1
- package/lib/client-api.js.map +1 -1
- package/lib/client.js +2243 -1716
- package/lib/client.js.map +4 -4
- package/lib/collaboration/composition.d.ts.map +1 -1
- package/lib/collaboration/composition.js +23 -54
- package/lib/collaboration/composition.js.map +1 -1
- package/lib/collaboration/tool-discovery.d.ts +4 -2
- package/lib/collaboration/tool-discovery.d.ts.map +1 -1
- package/lib/collaboration/tool-discovery.js +55 -26
- package/lib/collaboration/tool-discovery.js.map +1 -1
- package/lib/collaboration/workflow-protocols.d.ts +5 -0
- package/lib/collaboration/workflow-protocols.d.ts.map +1 -0
- package/lib/collaboration/workflow-protocols.js +40 -0
- package/lib/collaboration/workflow-protocols.js.map +1 -0
- package/lib/companions/identity-tool.d.ts +1 -1
- package/lib/companions/identity-tool.d.ts.map +1 -1
- package/lib/companions/identity-tool.js +32 -6
- package/lib/companions/identity-tool.js.map +1 -1
- package/lib/companions/identity.d.ts.map +1 -1
- package/lib/companions/identity.js +10 -0
- package/lib/companions/identity.js.map +1 -1
- package/lib/companions/persona-refinement.d.ts +11 -0
- package/lib/companions/persona-refinement.d.ts.map +1 -0
- package/lib/companions/persona-refinement.js +49 -0
- package/lib/companions/persona-refinement.js.map +1 -0
- package/lib/domain.d.ts +2 -0
- package/lib/domain.d.ts.map +1 -1
- package/lib/domain.js.map +1 -1
- package/lib/execution/domain.d.ts +1 -1
- package/lib/execution/domain.d.ts.map +1 -1
- package/lib/execution/reply-progress.js +2 -2
- package/lib/execution/reply-progress.js.map +1 -1
- package/lib/execution/service.d.ts +3 -0
- package/lib/execution/service.d.ts.map +1 -1
- package/lib/execution/service.js +7 -5
- package/lib/execution/service.js.map +1 -1
- package/lib/execution/task-preamble.d.ts +7 -3
- package/lib/execution/task-preamble.d.ts.map +1 -1
- package/lib/execution/task-preamble.js +36 -10
- package/lib/execution/task-preamble.js.map +1 -1
- package/lib/execution/work-tool.d.ts +5 -0
- package/lib/execution/work-tool.d.ts.map +1 -0
- package/lib/execution/work-tool.js +152 -0
- package/lib/execution/work-tool.js.map +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +5 -2
- package/lib/index.js.map +1 -1
- package/lib/rolling-context.d.ts.map +1 -1
- package/lib/rolling-context.js +4 -2
- package/lib/rolling-context.js.map +1 -1
- package/lib/scheduler/final-reply.d.ts +1 -0
- package/lib/scheduler/final-reply.d.ts.map +1 -1
- package/lib/skills/service.js +1 -1
- package/lib/skills/service.js.map +1 -1
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +11 -0
- package/lib/store.js.map +1 -1
- package/lib/ui/affection-panel.d.ts.map +1 -1
- package/lib/ui/affection-panel.js +1 -1
- package/lib/ui/affection-panel.js.map +1 -1
- package/lib/ui/capability-editor.js +1 -1
- package/lib/ui/capability-editor.js.map +1 -1
- package/lib/ui/character-editor.d.ts +1 -1
- package/lib/ui/character-editor.d.ts.map +1 -1
- package/lib/ui/character-editor.js +6 -5
- package/lib/ui/character-editor.js.map +1 -1
- package/lib/ui/companion-vitals.js +1 -1
- package/lib/ui/companion-vitals.js.map +1 -1
- package/lib/ui/identity-editor.d.ts.map +1 -1
- package/lib/ui/identity-editor.js +8 -1
- package/lib/ui/identity-editor.js.map +1 -1
- package/lib/ui/idle-contact-editor.d.ts.map +1 -1
- package/lib/ui/idle-contact-editor.js +1 -1
- package/lib/ui/idle-contact-editor.js.map +1 -1
- package/lib/ui/memory/automation-settings.js +1 -1
- package/lib/ui/memory/automation-settings.js.map +1 -1
- package/lib/ui/push-draft.d.ts +1 -1
- package/lib/ui/qq-capability-settings.d.ts.map +1 -1
- package/lib/ui/qq-capability-settings.js +2 -1
- package/lib/ui/qq-capability-settings.js.map +1 -1
- package/lib/ui/qq-channel-settings.d.ts.map +1 -1
- package/lib/ui/qq-channel-settings.js +5 -3
- package/lib/ui/qq-channel-settings.js.map +1 -1
- package/lib/ui/qq-identity-binding.js +1 -1
- package/lib/ui/qq-identity-binding.js.map +1 -1
- package/package.json +38 -2
|
@@ -4,13 +4,15 @@ export class AuthoredProgress {
|
|
|
4
4
|
send;
|
|
5
5
|
allowed;
|
|
6
6
|
signal;
|
|
7
|
+
limit;
|
|
7
8
|
pending = Promise.resolve();
|
|
8
9
|
seen = new Map();
|
|
9
10
|
closed = false;
|
|
10
|
-
constructor(send, allowed, signal) {
|
|
11
|
+
constructor(send, allowed, signal, limit = 3) {
|
|
11
12
|
this.send = send;
|
|
12
13
|
this.allowed = allowed;
|
|
13
14
|
this.signal = signal;
|
|
15
|
+
this.limit = limit;
|
|
14
16
|
}
|
|
15
17
|
update = Object.assign((activity) => {
|
|
16
18
|
if (this.closed || typeof activity === 'string' || activity.kind !== 'text')
|
|
@@ -22,7 +24,7 @@ export class AuthoredProgress {
|
|
|
22
24
|
const existing = this.seen.get(text);
|
|
23
25
|
if (existing)
|
|
24
26
|
return existing;
|
|
25
|
-
if (this.closed || !text || text.length > 6000 || this.seen.size >=
|
|
27
|
+
if (this.closed || !text || text.length > 6000 || this.seen.size >= this.limit)
|
|
26
28
|
throw Error('本轮前置回应已关闭或超出限制');
|
|
27
29
|
const job = this.pending.then(async () => {
|
|
28
30
|
if (this.closed || this.signal.aborted || !this.allowed())
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authored-progress.js","sourceRoot":"","sources":["../../src/channels/authored-progress.ts"],"names":[],"mappings":"AAEA;8FAC8F;AAC9F,MAAM,OAAO,gBAAgB;IAIE;IAA2D;IAAyC;
|
|
1
|
+
{"version":3,"file":"authored-progress.js","sourceRoot":"","sources":["../../src/channels/authored-progress.ts"],"names":[],"mappings":"AAEA;8FAC8F;AAC9F,MAAM,OAAO,gBAAgB;IAIE;IAA2D;IAAyC;IAAsC;IAH/J,OAAO,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAA;IACjC,IAAI,GAAG,IAAI,GAAG,EAAwB,CAAA;IAC/C,MAAM,GAAG,KAAK,CAAA;IACtB,YAA6B,IAAwC,EAAmB,OAAsB,EAAmB,MAAmB,EAAmB,QAAM,CAAC;QAAjJ,SAAI,GAAJ,IAAI,CAAoC;QAAmB,YAAO,GAAP,OAAO,CAAe;QAAmB,WAAM,GAAN,MAAM,CAAa;QAAmB,UAAK,GAAL,KAAK,CAAE;IAAG,CAAC;IAClL,MAAM,GAAkB,MAAM,CAAC,MAAM,CAAC,CAAC,QAAqC,EAAE,EAAE;QAC9E,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM;YAAE,OAAM;QACnF,KAAK,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAE,EAAE,GAAC,CAAC,CAAC,CAAA;IACpD,CAAC,EAAE,EAAC,WAAW,EAAC,CAAC,IAAW,EAAC,EAAE,CAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAC,CAAC,CAAA;IACvD,KAAK,CAAC,WAAW,CAAC,GAAU;QAC1B,MAAM,IAAI,GAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QACrB,MAAM,QAAQ,GAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAClC,IAAG,QAAQ;YAAC,OAAO,QAAQ,CAAA;QAC3B,IAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAE,IAAI,CAAC,KAAK;YAAC,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAA;QACvG,MAAM,GAAG,GAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAE,EAAE;YACnC,IAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBAAC,MAAM,KAAK,CAAC,WAAW,CAAC,CAAA;YACjF,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAC,GAAG,CAAC,CAAA;QACvB,IAAI,CAAC,OAAO,GAAC,GAAG,CAAC,KAAK,CAAC,GAAE,EAAE,GAAC,IAAI,CAAC,MAAM,GAAC,IAAI,CAAA,CAAA,CAAC,CAAC,CAAA;QAC9C,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,KAAK,CAAC,MAAM,KAAoB,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA,CAAC,CAAC;CACzE"}
|
|
@@ -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":"
|
|
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,21 @@ 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
|
-
|
|
90
|
-
|
|
104
|
+
if (!reply.intermediate) {
|
|
105
|
+
chat = reply.parts;
|
|
106
|
+
answer = '';
|
|
107
|
+
}
|
|
108
|
+
chatDelivered = chatDelivered || reply.delivered === true;
|
|
91
109
|
chatOriginRouteId = chatOriginRouteId === undefined ? reply.originRouteId : chatOriginRouteId === reply.originRouteId ? chatOriginRouteId : null;
|
|
92
110
|
}
|
|
93
111
|
else if (direct && event.type === 'tool/result' && !chat)
|
|
@@ -103,7 +121,7 @@ export function channelReplyPartsAfter(events, fromSeq, autonomous = false) {
|
|
|
103
121
|
}
|
|
104
122
|
}
|
|
105
123
|
flush();
|
|
106
|
-
return { text: messages.join('\n\n'), referenceTexts, ...(hasChat ? { chatParts: ordered, ...(chatOriginRouteId !== undefined ? { chatOriginRouteId } : {}) } : {}) };
|
|
124
|
+
return { text: messages.join('\n\n'), referenceTexts, ...(alreadyDelivered ? { alreadyDelivered: true } : {}), ...(hasChat ? { chatParts: ordered, ...(chatOriginRouteId !== undefined ? { chatOriginRouteId } : {}) } : {}) };
|
|
107
125
|
}
|
|
108
126
|
/** whenIdle may encompass follow-up turns: don't append internal reviews to a user reply. */
|
|
109
127
|
export function channelReplyTextAfter(events, fromSeq) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-policy.js","sourceRoot":"","sources":["../../src/channels/delivery-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAiB,MAAM,qBAAqB,CAAA;AAEvE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ;IAChE,SAAS;IACT,QAAQ;CACT,CAAC,CAAA;AAEF,MAAM,UAAU,oBAAoB,CAAC,KAAmB;IACtD,OAAO,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,wBAAwB,CAAC;WAC9F,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;WACnC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;AACjE,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,4BAA4B,CAAC,KAAmB;IAC9D,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;WACnG,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAA;AAC/E,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,wBAAwB,CAAC,MAA+B,EAAE,UAAmC,MAAM;IACjH,IAAI,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC;QAAE,OAAO,KAAK,CAAA;IACnD,0EAA0E;IAC1E,8EAA8E;IAC9E,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAE,CAAA;QAC7B,IAAI,oBAAoB,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;YAAE,MAAK;IAC/E,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC;WACtG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;WACnC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAA;AAC1D,CAAC;
|
|
1
|
+
{"version":3,"file":"delivery-policy.js","sourceRoot":"","sources":["../../src/channels/delivery-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/channels/direct/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAA;AAGzE,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AACzF,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAIlE,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,YAAY,GAAG,IAAI,CAAA;AAC3D,MAAM,WAAW,YAAY;IAAG,EAAE,CAAC,EAAE,OAAO,mBAAmB,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAC1I,MAAM,WAAW,aAAa;IAAG,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE;QAAC,OAAO,EAAC,MAAM,CAAC;QAAA,MAAM,EAAC,MAAM,CAAC;QAAA,UAAU,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,OAAO,CAAC;QAAA,UAAU,EAAC,OAAO,CAAC;QAAA,YAAY,CAAC,EAAC,OAAO,CAAC;QAAA,QAAQ,CAAC,EAAC,OAAO,CAAC;QAAA,SAAS,CAAC,EAAC,MAAM,CAAC;QAAA,OAAO,CAAC,EAAC,MAAM,GAAC,OAAO,CAAA;KAAC,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE;
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/channels/direct/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAA;AAGzE,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AACzF,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAIlE,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,YAAY,GAAG,IAAI,CAAA;AAC3D,MAAM,WAAW,YAAY;IAAG,EAAE,CAAC,EAAE,OAAO,mBAAmB,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAC1I,MAAM,WAAW,aAAa;IAAG,SAAS,CAAC,EAAC,MAAM,CAAC;IAAC,OAAO,CAAC,EAAC,OAAO,gBAAgB,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE;QAAC,OAAO,EAAC,MAAM,CAAC;QAAA,MAAM,EAAC,MAAM,CAAC;QAAA,UAAU,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,OAAO,CAAC;QAAA,UAAU,EAAC,OAAO,CAAC;QAAA,YAAY,CAAC,EAAC,OAAO,CAAC;QAAA,QAAQ,CAAC,EAAC,OAAO,CAAC;QAAA,SAAS,CAAC,EAAC,MAAM,CAAC;QAAA,OAAO,CAAC,EAAC,MAAM,GAAC,OAAO,CAAA;KAAC,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE;AACpa,MAAM,WAAW,WAAW;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;AAC5F,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,CAOzE;AAED,sFAAsF;AACtF,qBAAa,eAAgB,YAAW,aAAa;IAIvC,QAAQ,CAAC,MAAM,EAAE,YAAY;IAAE,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAU,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAAuC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAHvK,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAA6B;gBAC3B,MAAM,EAAE,YAAY,EAAmB,KAAK,EAAE,MAAM,EAAmB,QAAQ,CAAC,EAAE;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,YAAA,EAAmB,SAAS,CAAC,GAAE,MAAM,IAAI,aAAA,EAAE,UAAU,CAAC,EAAE,gBAAgB;IAGlN,IAAI,MAAM,IAAI,eAAe,GAAG,SAAS,CAAmB;IAC5D,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,EAAE,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,eAAe;IAGnH,KAAK,IAAI,IAAI;YAGC,OAAO;IAuBf,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC;IAiC5E,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;IAiC3F,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;IAW/G,QAAQ,CAAC,MAAM,EAAC,MAAM,GAAE,iBAAiB,GAAG,SAAS;IAM/C,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM;IAWzG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,OAAO,GAAE,MAAM,OAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;CAa9K"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/channels/manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/channels/manager.ts"],"names":[],"mappings":"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"}
|
package/lib/channels/manager.js
CHANGED
|
@@ -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:
|
|
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
|
|
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)
|
|
@@ -768,7 +770,7 @@ export class ChannelManager {
|
|
|
768
770
|
await this.rememberReceipt(receipt);
|
|
769
771
|
return;
|
|
770
772
|
}
|
|
771
|
-
const authored = new AuthoredProgress(text => api.sendText(userId, text, this.contextTokens.get(tokenKey), signal), () => channelReplyAllowed(this.store.snapshot(), channel.id, userId) && this.store.snapshot().channels.some(c => c.id === channel.id && c.enabled && c.companionId === companion.id), signal);
|
|
773
|
+
const authored = new AuthoredProgress(text => api.sendText(userId, text, this.contextTokens.get(tokenKey), signal), () => channelReplyAllowed(this.store.snapshot(), channel.id, userId) && this.store.snapshot().channels.some(c => c.id === channel.id && c.enabled && c.companionId === companion.id), signal, 8);
|
|
772
774
|
const reply = await this.agents.reply(companion, channel.id, userId, { text: inboundText, attachments }, authored.update).finally(() => authored.finish());
|
|
773
775
|
if (reply.chatParts) {
|
|
774
776
|
// Claim the input before delivery so recovery never executes its tools again.
|
|
@@ -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) {
|
|
@@ -1155,7 +1174,7 @@ export class ChannelManager {
|
|
|
1155
1174
|
};
|
|
1156
1175
|
const progressTransport = api.progress?.(event.sender);
|
|
1157
1176
|
const progress = progressTransport ? new ReplyProgressController(progressTransport, allowed, signal) : undefined;
|
|
1158
|
-
const authored = !event.qqGroup ? new AuthoredProgress(text => api.sendText(event.sender, text, undefined, signal), allowed, signal) : undefined;
|
|
1177
|
+
const authored = !event.qqGroup ? new AuthoredProgress(text => api.sendText(event.sender, text, undefined, signal), allowed, signal, 8) : undefined;
|
|
1159
1178
|
const progressKey = JSON.stringify([channel.id, event.targetId || api.config?.targetId || '', event.sender]);
|
|
1160
1179
|
try {
|
|
1161
1180
|
const attachments = [];
|
|
@@ -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) {
|