@qwen-code/channel-dingtalk 0.23.1-preview.2 → 0.23.2-nightly.20260909.2e212144d3
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/dist/DingtalkAdapter.d.ts +31 -19
- package/dist/DingtalkAdapter.d.ts.map +1 -1
- package/dist/DingtalkAdapter.js +351 -139
- package/dist/DingtalkAdapter.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -1
- package/dist/interaction-presenter.d.ts +13 -1
- package/dist/interaction-presenter.d.ts.map +1 -1
- package/dist/interaction-presenter.js +40 -2
- package/dist/interaction-presenter.js.map +1 -1
- package/dist/interactive-card-types.d.ts +4 -0
- package/dist/interactive-card-types.d.ts.map +1 -1
- package/dist/interactive-card-types.js +21 -5
- package/dist/interactive-card-types.js.map +1 -1
- package/dist/outbound-file.d.ts +0 -1
- package/dist/outbound-file.d.ts.map +1 -1
- package/dist/outbound-file.js +0 -4
- package/dist/outbound-file.js.map +1 -1
- package/dist/permission-card-controller.d.ts +34 -0
- package/dist/permission-card-controller.d.ts.map +1 -0
- package/dist/permission-card-controller.js +297 -0
- package/dist/permission-card-controller.js.map +1 -0
- package/dist/presentation-phase.d.ts +7 -0
- package/dist/presentation-phase.d.ts.map +1 -0
- package/dist/presentation-phase.js +85 -0
- package/dist/presentation-phase.js.map +1 -0
- package/dist/status-card-controller.d.ts +4 -0
- package/dist/status-card-controller.d.ts.map +1 -1
- package/dist/status-card-controller.js +68 -7
- package/dist/status-card-controller.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { ChannelBase } from '@qwen-code/channel-base';
|
|
2
2
|
import { DingtalkInteractiveCardClient } from './interactive-card-client.js';
|
|
3
3
|
import { type DingtalkCardCallback, type DingtalkCardCallbackResult } from './interactive-card-types.js';
|
|
4
|
-
import type { BackgroundResponseContext, ChannelConfig, ChannelBaseOptions, Envelope, ChannelAgentBridge, ChannelOutputSegmentContext, ChannelOutputSegmentEndReason, ChannelTaskLifecycleEvent, ChannelUserInputRequestContext, SessionTarget, UserInputPresentationResult } from '@qwen-code/channel-base';
|
|
4
|
+
import type { BackgroundResponseContext, ChannelConfig, ChannelBaseOptions, Envelope, ChannelAgentBridge, ChannelOutputSegmentContext, ChannelOutputSegmentEndReason, ChannelPermissionRequestContext, ChannelTaskLifecycleEvent, ChannelUserInputRequestContext, SessionTarget, UserInputPresentationResult } from '@qwen-code/channel-base';
|
|
5
5
|
export declare class DingtalkChannel extends ChannelBase {
|
|
6
6
|
private client;
|
|
7
7
|
private readonly atSender;
|
|
8
|
+
private readonly displayLanguage;
|
|
8
9
|
private connectionManager?;
|
|
9
10
|
private seenMessages;
|
|
10
11
|
private mentionTargets;
|
|
@@ -15,8 +16,11 @@ export declare class DingtalkChannel extends ChannelBase {
|
|
|
15
16
|
/** Map conversationId → latest sessionWebhook URL for sending replies. */
|
|
16
17
|
private webhooks;
|
|
17
18
|
private activeReactionKeys;
|
|
19
|
+
private reactionStates;
|
|
18
20
|
/** sessionId → reaction keys, so a dead session's reactions can be recalled. */
|
|
19
21
|
private sessionReactionKeys;
|
|
22
|
+
/** Settles when the reaction cleanup queued by disconnect() has run. */
|
|
23
|
+
private disconnectDrain;
|
|
20
24
|
/**
|
|
21
25
|
* Real inbound message ids (insertion-ordered, size-capped). Unlike the
|
|
22
26
|
* TTL-swept seenMessages dedup map, entries survive long queue waits, so a
|
|
@@ -33,13 +37,12 @@ export declare class DingtalkChannel extends ChannelBase {
|
|
|
33
37
|
protected readonly interactiveCardClient?: DingtalkInteractiveCardClient;
|
|
34
38
|
private statusCardController?;
|
|
35
39
|
private questionCardController?;
|
|
40
|
+
private permissionCardController?;
|
|
36
41
|
private interactionPresenter?;
|
|
37
42
|
private readonly inboundCardOwners;
|
|
38
43
|
private readonly cardRunBySession;
|
|
39
44
|
private readonly cardRuns;
|
|
40
45
|
private readonly fileProjectors;
|
|
41
|
-
private readonly blockFileProjectors;
|
|
42
|
-
private readonly blockProjectionArmed;
|
|
43
46
|
private readonly backgroundResponseAggregations;
|
|
44
47
|
private readonly detachedBackgroundResponseAggregations;
|
|
45
48
|
private readonly pendingBackgroundResponseTerminals;
|
|
@@ -94,15 +97,33 @@ export declare class DingtalkChannel extends ChannelBase {
|
|
|
94
97
|
private attachReaction;
|
|
95
98
|
private recallReaction;
|
|
96
99
|
disconnect(): void;
|
|
100
|
+
waitForDisconnect(): Promise<void>;
|
|
97
101
|
/** Stable API targets are conversation or user IDs, never webhook URLs. */
|
|
98
102
|
private isStableTargetId;
|
|
99
103
|
private reactionKey;
|
|
104
|
+
private forgetReactionState;
|
|
105
|
+
private enqueueReaction;
|
|
106
|
+
private scheduleReactionDrain;
|
|
107
|
+
private drainReactionState;
|
|
108
|
+
private finishReactionState;
|
|
100
109
|
private rememberInboundMessageId;
|
|
101
110
|
private logReactionFailure;
|
|
102
111
|
private startReaction;
|
|
112
|
+
private replaceStatusReaction;
|
|
113
|
+
private phaseReactionTag;
|
|
114
|
+
private terminalReactionTag;
|
|
115
|
+
private finishReaction;
|
|
103
116
|
private stopReaction;
|
|
104
117
|
/** Recall reactions left behind when a session dies without terminal lifecycle events. */
|
|
105
118
|
onSessionDied(sessionId: string): void;
|
|
119
|
+
/**
|
|
120
|
+
* A crashed standalone bridge never settles its in-flight turns, so their
|
|
121
|
+
* transient tags and ticking status cards would otherwise assert a live
|
|
122
|
+
* turn forever. Finish the tags without a terminal result and terminalize
|
|
123
|
+
* the cards as interrupted. Session state stays: crash recovery restores
|
|
124
|
+
* the sessions on a fresh bridge.
|
|
125
|
+
*/
|
|
126
|
+
onBridgeDisconnected(): void;
|
|
106
127
|
protected onSessionRetiring(sessionId: string): void;
|
|
107
128
|
protected onTaskLifecycle(event: ChannelTaskLifecycleEvent): void;
|
|
108
129
|
protected onPromptBufferDropped(_chatId: string, sessionId: string, messageIds: string[]): void;
|
|
@@ -113,18 +134,6 @@ export declare class DingtalkChannel extends ChannelBase {
|
|
|
113
134
|
protected processInbound(envelope: Envelope): Promise<void>;
|
|
114
135
|
private untrackBufferedMentionTarget;
|
|
115
136
|
protected onPromptEnd(chatId: string, sessionId: string, messageId?: string): void;
|
|
116
|
-
/**
|
|
117
|
-
* Turn end is the only point where the block projector's held state can be
|
|
118
|
-
* settled: ChannelBase drains the turn's queued block sends before calling
|
|
119
|
-
* onPromptEnd, so everything already appended belongs to this turn. Flush
|
|
120
|
-
* the held candidate bytes (a trailing `[FILE:` prefix the stream never
|
|
121
|
-
* completed) before deleting the entry — a later delete-without-settle
|
|
122
|
-
* would silently drop them from the delivered answer. Also disarm the
|
|
123
|
-
* session: /clear eviction and session death settle WITHOUT draining the
|
|
124
|
-
* turn's send chain, and any block that lands afterwards must be dropped
|
|
125
|
-
* rather than recreating projector state.
|
|
126
|
-
*/
|
|
127
|
-
private settleBlockFileProjector;
|
|
128
137
|
/** Deliver every Agent segment immediately unless aggregation is enabled. */
|
|
129
138
|
dispatchBackgroundResponse(sessionId: string, text: string, context?: BackgroundResponseContext): Promise<void>;
|
|
130
139
|
private flushBackgroundResponseAggregation;
|
|
@@ -156,19 +165,22 @@ export declare class DingtalkChannel extends ChannelBase {
|
|
|
156
165
|
private formatBackgroundAgentResponse;
|
|
157
166
|
private formatBackgroundAgentLabel;
|
|
158
167
|
/**
|
|
159
|
-
*
|
|
160
|
-
* the
|
|
161
|
-
*
|
|
168
|
+
* Body-identical to the base implementation — this override exists only to
|
|
169
|
+
* widen the signature, which the base seam does not declare. The background
|
|
170
|
+
* aggregation flush passes `prepared` so the body it already projected isn't
|
|
171
|
+
* projected a second time (that would re-upload its files), and
|
|
172
|
+
* `failOnHttpError` so a failed send throws instead of being swallowed,
|
|
173
|
+
* letting the flush capture the delivery plan for the next retry.
|
|
162
174
|
*/
|
|
163
175
|
protected deliverBackgroundReply(chatId: string, text: string, sessionId: string, sourceLabel?: string, prepared?: boolean, failOnHttpError?: boolean): Promise<void>;
|
|
164
176
|
protected sendResponseMessage(chatId: string, text: string, sessionId: string, sourceLabel?: string, prepared?: boolean, failOnHttpError?: boolean): Promise<void>;
|
|
165
|
-
private projectBlockStreamChunk;
|
|
166
177
|
private sendFallbackReply;
|
|
167
178
|
protected onResponseComplete(chatId: string, text: string, sessionId: string, segment?: ChannelOutputSegmentContext): Promise<void>;
|
|
168
179
|
protected onOutputSegmentEnd(_chatId: string, _sessionId: string, segment: ChannelOutputSegmentContext, reason: ChannelOutputSegmentEndReason): void | Promise<void>;
|
|
169
180
|
protected onResponseChunk(_chatId: string, chunk: string, _sessionId: string, segment?: ChannelOutputSegmentContext): void;
|
|
170
181
|
private deleteFileProjectorsForRun;
|
|
171
182
|
protected presentUserInputRequest(context: ChannelUserInputRequestContext): Promise<UserInputPresentationResult>;
|
|
183
|
+
protected presentPermissionRequest(context: ChannelPermissionRequestContext): Promise<UserInputPresentationResult>;
|
|
172
184
|
/**
|
|
173
185
|
* Extract quoted/referenced message context from a reply.
|
|
174
186
|
* DingTalk provides this via text.repliedMsg (newer) or quoteMessage (legacy).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DingtalkAdapter.d.ts","sourceRoot":"","sources":["../src/DingtalkAdapter.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,WAAW,EAMZ,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"DingtalkAdapter.d.ts","sourceRoot":"","sources":["../src/DingtalkAdapter.ts"],"names":[],"mappings":"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"}
|