@qwen-code/channel-dingtalk 0.21.1 → 0.21.2

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.
@@ -0,0 +1,179 @@
1
+ export class DingtalkInteractionPresenter {
2
+ options;
3
+ runs = new Map();
4
+ segments = new Map();
5
+ terminalSegmentIds = new Set();
6
+ constructor(options) {
7
+ this.options = options;
8
+ }
9
+ registerRun(runId, ownerId, target) {
10
+ this.runs.set(runId, {
11
+ ownerId,
12
+ target,
13
+ projectionChain: Promise.resolve(),
14
+ terminal: false,
15
+ });
16
+ }
17
+ appendOutput(segment, chunk) {
18
+ const run = this.runs.get(segment.runId);
19
+ if (!run ||
20
+ run.terminal ||
21
+ run.ownerId !== segment.owner.id ||
22
+ run.target.chatId !== segment.target.chatId ||
23
+ run.target.isGroup !== segment.target.isGroup ||
24
+ !chunk ||
25
+ this.terminalSegmentIds.has(segment.segmentId)) {
26
+ return;
27
+ }
28
+ const existing = this.segments.get(segment.segmentId);
29
+ if (existing && existing.run !== run)
30
+ return;
31
+ const presentation = existing ?? {
32
+ run,
33
+ context: segment,
34
+ content: '',
35
+ };
36
+ presentation.content = this.boundContent(presentation.content + chunk);
37
+ this.segments.set(segment.segmentId, presentation);
38
+ run.activeSegmentId = segment.segmentId;
39
+ if (!this.options.statusCards)
40
+ return;
41
+ void this.enqueue(run, () => {
42
+ this.options.statusCards?.append(segment, this.cardTarget(segment.target), chunk);
43
+ });
44
+ }
45
+ closeOutput(segmentId, text, reason, segment) {
46
+ let presentation = this.segments.get(segmentId);
47
+ if (!presentation && segment && text) {
48
+ this.appendOutput(segment, text);
49
+ presentation = this.segments.get(segmentId);
50
+ }
51
+ if (!presentation)
52
+ return Promise.resolve(false);
53
+ const run = presentation.run;
54
+ if (run.terminal)
55
+ return Promise.resolve(false);
56
+ this.segments.delete(segmentId);
57
+ this.addTerminalSegment(segmentId);
58
+ if (run.activeSegmentId === segmentId) {
59
+ run.activeSegmentId = undefined;
60
+ }
61
+ return this.enqueue(run, async () => {
62
+ const statusCards = this.options.statusCards;
63
+ if (reason === 'failed') {
64
+ statusCards?.fail(segmentId, text);
65
+ return statusCards !== undefined;
66
+ }
67
+ if (reason === 'cancelled') {
68
+ return statusCards !== undefined;
69
+ }
70
+ const completed = statusCards !== undefined &&
71
+ (await statusCards.complete(segmentId, text));
72
+ if (completed)
73
+ return true;
74
+ const fallbackText = text || presentation.content;
75
+ if (!fallbackText || !this.options.sendFallback)
76
+ return false;
77
+ await this.options.sendFallback(presentation.context.target.chatId, fallbackText, presentation.context.sessionId);
78
+ return true;
79
+ });
80
+ }
81
+ presentInput(context) {
82
+ const run = this.runs.get(context.runId);
83
+ if (!run ||
84
+ run.terminal ||
85
+ run.ownerId !== context.owner.id ||
86
+ run.target.chatId !== context.target.chatId ||
87
+ run.target.isGroup !== context.target.isGroup) {
88
+ return Promise.resolve({ kind: 'unsupported' });
89
+ }
90
+ const questionCards = this.options.questionCards;
91
+ if (!questionCards)
92
+ return Promise.resolve({ kind: 'unsupported' });
93
+ return questionCards.present(context, this.cardTarget(context.target));
94
+ }
95
+ terminalizeRun(runId, terminal, detail = '') {
96
+ const run = this.runs.get(runId);
97
+ if (!run || run.terminal)
98
+ return;
99
+ this.options.questionCards?.cancelRun(runId, terminal === 'cancelled' &&
100
+ (detail === 'cancel_command' || detail === 'clear')
101
+ ? 'cancelled'
102
+ : 'expired');
103
+ run.terminal = true;
104
+ const activeSegmentId = run.activeSegmentId;
105
+ run.activeSegmentId = undefined;
106
+ if (activeSegmentId) {
107
+ this.segments.delete(activeSegmentId);
108
+ this.addTerminalSegment(activeSegmentId);
109
+ }
110
+ const finalization = this.enqueue(run, async () => {
111
+ if (terminal === 'failed' && activeSegmentId) {
112
+ this.options.statusCards?.fail(activeSegmentId, detail);
113
+ }
114
+ else if (terminal === 'cancelled') {
115
+ this.options.statusCards?.cancelRun(runId, detail === 'cancel_command' ? 'cancel_command' : 'dropped');
116
+ }
117
+ else if (activeSegmentId) {
118
+ await this.options.statusCards?.complete(activeSegmentId, detail);
119
+ }
120
+ });
121
+ void finalization.then(() => {
122
+ if (this.runs.get(runId) === run)
123
+ this.runs.delete(runId);
124
+ }, () => {
125
+ if (this.runs.get(runId) === run)
126
+ this.runs.delete(runId);
127
+ });
128
+ }
129
+ reserveProjection(runId) {
130
+ const run = this.runs.get(runId);
131
+ if (!run || run.terminal)
132
+ return undefined;
133
+ let supplyOperation;
134
+ const operation = new Promise((resolve) => {
135
+ supplyOperation = resolve;
136
+ });
137
+ const result = this.enqueue(run, async () => {
138
+ const execute = await operation;
139
+ await execute();
140
+ });
141
+ let supplied = false;
142
+ return (execute) => {
143
+ if (!supplied) {
144
+ supplied = true;
145
+ supplyOperation(execute);
146
+ }
147
+ return result;
148
+ };
149
+ }
150
+ enqueue(run, operation) {
151
+ const result = run.projectionChain.then(operation);
152
+ run.projectionChain = result.then(() => undefined, () => undefined);
153
+ return result;
154
+ }
155
+ boundContent(content) {
156
+ const limit = 20_000;
157
+ const marker = '[Earlier output truncated]\n';
158
+ if (content.length <= limit)
159
+ return content;
160
+ return `${marker}${content.slice(content.length - (limit - marker.length))}`;
161
+ }
162
+ cardTarget(target) {
163
+ const isGroup = target.isGroup === true;
164
+ return {
165
+ chatId: isGroup ? target.chatId : target.senderId,
166
+ isGroup,
167
+ };
168
+ }
169
+ addTerminalSegment(segmentId) {
170
+ this.terminalSegmentIds.add(segmentId);
171
+ while (this.terminalSegmentIds.size > 1000) {
172
+ const oldest = this.terminalSegmentIds.values().next().value;
173
+ if (oldest === undefined)
174
+ break;
175
+ this.terminalSegmentIds.delete(oldest);
176
+ }
177
+ }
178
+ }
179
+ //# sourceMappingURL=interaction-presenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction-presenter.js","sourceRoot":"","sources":["../src/interaction-presenter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ export declare const STATUS_CARD_TEMPLATE_ID = "675cde2f-f526-40cb-b828-f5b2b57b8b77.schema";
2
+ export declare const QUESTION_CARD_TEMPLATE_ID = "c2a6355b-9724-4f7e-9653-d33fcb3311bb.schema";
3
+ type CardParamMap = Record<string, unknown>;
4
+ export interface CreateCardInput {
5
+ templateId: string;
6
+ outTrackId: string;
7
+ target: {
8
+ chatId: string;
9
+ isGroup: boolean;
10
+ };
11
+ cardParamMap: CardParamMap;
12
+ }
13
+ export interface StreamCardInput {
14
+ outTrackId: string;
15
+ key: string;
16
+ content: string;
17
+ finalize: boolean;
18
+ isError?: boolean;
19
+ }
20
+ export interface UpdateCardInput {
21
+ outTrackId: string;
22
+ cardParamMap: CardParamMap;
23
+ }
24
+ export interface DingtalkInteractiveCardClientOptions {
25
+ robotCode: string;
26
+ getAccessToken(): Promise<string>;
27
+ fetch?: typeof fetch;
28
+ }
29
+ export declare class DingtalkInteractiveCardClient {
30
+ private readonly options;
31
+ private readonly fetch;
32
+ constructor(options: DingtalkInteractiveCardClientOptions);
33
+ createAndDeliver(input: CreateCardInput): Promise<void>;
34
+ openOrUpdateStream(input: StreamCardInput): Promise<void>;
35
+ updateInstance(input: UpdateCardInput): Promise<void>;
36
+ private request;
37
+ }
38
+ export {};
39
+ //# sourceMappingURL=interactive-card-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-card-client.d.ts","sourceRoot":"","sources":["../src/interactive-card-client.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,gDACW,CAAC;AAChD,eAAO,MAAM,yBAAyB,gDACS,CAAC;AAKhD,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7C,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,MAAM,WAAW,oCAAoC;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAaD,qBAAa,6BAA6B;IAG5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAER,OAAO,EAAE,oCAAoC;IAIpE,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA2DvD,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzD,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAU7C,OAAO;CAwBtB"}
@@ -0,0 +1,102 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ export const STATUS_CARD_TEMPLATE_ID = '675cde2f-f526-40cb-b828-f5b2b57b8b77.schema';
3
+ export const QUESTION_CARD_TEMPLATE_ID = 'c2a6355b-9724-4f7e-9653-d33fcb3311bb.schema';
4
+ const DINGTALK_API = 'https://api.dingtalk.com';
5
+ const CARD_FETCH_TIMEOUT_MS = 10_000;
6
+ function stringifyCardParamMap(cardParamMap) {
7
+ return Object.fromEntries(Object.entries(cardParamMap).map(([key, value]) => [
8
+ key,
9
+ typeof value === 'string' ? value : JSON.stringify(value),
10
+ ]));
11
+ }
12
+ export class DingtalkInteractiveCardClient {
13
+ options;
14
+ fetch;
15
+ constructor(options) {
16
+ this.options = options;
17
+ this.fetch = options.fetch ?? globalThis.fetch;
18
+ }
19
+ async createAndDeliver(input) {
20
+ const targetModel = input.target.isGroup
21
+ ? {
22
+ imGroupOpenDeliverModel: {
23
+ robotCode: this.options.robotCode,
24
+ extension: { dynamicSummary: 'true' },
25
+ },
26
+ }
27
+ : {
28
+ imRobotOpenDeliverModel: {
29
+ spaceType: 'IM_ROBOT',
30
+ robotCode: this.options.robotCode,
31
+ extension: { dynamicSummary: 'true' },
32
+ },
33
+ };
34
+ const data = await this.request('/v1.0/card/instances/createAndDeliver', 'POST', {
35
+ cardTemplateId: input.templateId,
36
+ outTrackId: input.outTrackId,
37
+ cardData: {
38
+ cardParamMap: stringifyCardParamMap(input.cardParamMap),
39
+ },
40
+ callbackType: 'STREAM',
41
+ imGroupOpenSpaceModel: { supportForward: true },
42
+ imRobotOpenSpaceModel: { supportForward: true },
43
+ openSpaceId: input.target.isGroup
44
+ ? `dtv1.card//IM_GROUP.${input.target.chatId}`
45
+ : `dtv1.card//IM_ROBOT.${input.target.chatId}`,
46
+ userIdType: 1,
47
+ ...targetModel,
48
+ }, input.templateId);
49
+ const result = data && typeof data === 'object'
50
+ ? data.result
51
+ : undefined;
52
+ const deliveries = result?.deliverResults;
53
+ if (Array.isArray(deliveries)) {
54
+ const failure = deliveries.find((entry) => entry !== null &&
55
+ typeof entry === 'object' &&
56
+ entry.success === false);
57
+ if (failure) {
58
+ throw new Error(`${input.templateId}: ${typeof failure.errorMsg === 'string' && failure.errorMsg.trim()
59
+ ? failure.errorMsg.trim()
60
+ : 'DingTalk card delivery failed'}`);
61
+ }
62
+ }
63
+ }
64
+ async openOrUpdateStream(input) {
65
+ await this.request('/v1.0/card/streaming', 'PUT', {
66
+ outTrackId: input.outTrackId,
67
+ guid: randomUUID(),
68
+ key: input.key,
69
+ content: input.content,
70
+ isFull: true,
71
+ isFinalize: input.finalize,
72
+ isError: input.isError ?? false,
73
+ });
74
+ }
75
+ async updateInstance(input) {
76
+ await this.request('/v1.0/card/instances', 'PUT', {
77
+ outTrackId: input.outTrackId,
78
+ cardData: {
79
+ cardParamMap: stringifyCardParamMap(input.cardParamMap),
80
+ },
81
+ cardUpdateOptions: { updateCardDataByKey: true },
82
+ });
83
+ }
84
+ async request(path, method, body, templateId) {
85
+ const token = await this.options.getAccessToken();
86
+ const response = await this.fetch(`${DINGTALK_API}${path}`, {
87
+ method,
88
+ headers: {
89
+ 'Content-Type': 'application/json',
90
+ 'x-acs-dingtalk-access-token': token,
91
+ },
92
+ body: JSON.stringify(body),
93
+ signal: AbortSignal.timeout(CARD_FETCH_TIMEOUT_MS),
94
+ });
95
+ if (!response.ok) {
96
+ const detail = (await response.text().catch(() => '')).slice(0, 300);
97
+ throw new Error(`DingTalk Card OpenAPI ${method} ${path} failed${templateId ? ` for ${templateId}` : ''}: HTTP ${response.status}${detail ? ` ${detail}` : ''}`);
98
+ }
99
+ return response.json().catch(() => undefined);
100
+ }
101
+ }
102
+ //# sourceMappingURL=interactive-card-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-card-client.js","sourceRoot":"","sources":["../src/interactive-card-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ export interface DingtalkInteractiveCardConfig {
2
+ enabled: boolean;
3
+ statusCard: {
4
+ enabled: boolean;
5
+ };
6
+ questionCard: {
7
+ enabled: boolean;
8
+ timeoutMs: number;
9
+ };
10
+ }
11
+ export interface DingtalkCardCallback {
12
+ outTrackId: string;
13
+ actionId: string;
14
+ actorId: string;
15
+ formData: Record<string, unknown>;
16
+ hasBusinessPayload?: boolean;
17
+ isCancel?: boolean;
18
+ }
19
+ export type DingtalkCardCallbackResult = {
20
+ kind: 'accepted';
21
+ execute: () => Promise<void>;
22
+ } | {
23
+ kind: 'forbidden';
24
+ actorId: string;
25
+ target: {
26
+ chatId: string;
27
+ isGroup: boolean;
28
+ };
29
+ } | {
30
+ kind: 'ignored';
31
+ actorId?: string;
32
+ };
33
+ export declare function parseDingtalkInteractiveCardConfig(value: unknown): DingtalkInteractiveCardConfig;
34
+ export declare function parseDingtalkCardCallback(value: unknown): DingtalkCardCallback | undefined;
35
+ export declare function parseDingtalkCardActorId(value: unknown): string | undefined;
36
+ //# sourceMappingURL=interactive-card-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-card-types.d.ts","sourceRoot":"","sources":["../src/interactive-card-types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACjC,YAAY,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CACvD;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,0BAA0B,GAClC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,GAClD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAC9C,GACD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAuC1C,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,OAAO,GACb,6BAA6B,CA2C/B;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,GACb,oBAAoB,GAAG,SAAS,CA0DlC;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAU3E"}
@@ -0,0 +1,128 @@
1
+ const DEFAULT_QUESTION_TIMEOUT_MS = 270_000;
2
+ function asRecord(value) {
3
+ return value !== null && typeof value === 'object' && !Array.isArray(value)
4
+ ? value
5
+ : undefined;
6
+ }
7
+ function parseEmbeddedRecord(value) {
8
+ if (typeof value !== 'string') {
9
+ return asRecord(value);
10
+ }
11
+ try {
12
+ return asRecord(JSON.parse(value));
13
+ }
14
+ catch {
15
+ return undefined;
16
+ }
17
+ }
18
+ function parseBooleanLike(value) {
19
+ return value === true || value === 'true' || value === 1 || value === '1';
20
+ }
21
+ function optionalBoolean(value, path, fallback) {
22
+ if (value === undefined)
23
+ return fallback;
24
+ if (typeof value !== 'boolean') {
25
+ throw new Error(`DingTalk interactiveCards.${path} must be a boolean.`);
26
+ }
27
+ return value;
28
+ }
29
+ export function parseDingtalkInteractiveCardConfig(value) {
30
+ if (value !== undefined && !asRecord(value)) {
31
+ throw new Error('DingTalk interactiveCards must be an object.');
32
+ }
33
+ const configured = value !== undefined;
34
+ const root = asRecord(value) ?? {};
35
+ const status = asRecord(root['statusCard']);
36
+ const question = asRecord(root['questionCard']);
37
+ if (root['statusCard'] !== undefined && !status) {
38
+ throw new Error('DingTalk interactiveCards.statusCard must be an object.');
39
+ }
40
+ if (root['questionCard'] !== undefined && !question) {
41
+ throw new Error('DingTalk interactiveCards.questionCard must be an object.');
42
+ }
43
+ const timeoutMs = question?.['timeoutMs'] === undefined
44
+ ? DEFAULT_QUESTION_TIMEOUT_MS
45
+ : question['timeoutMs'];
46
+ if (typeof timeoutMs !== 'number' ||
47
+ !Number.isFinite(timeoutMs) ||
48
+ timeoutMs <= 0) {
49
+ throw new Error('DingTalk interactiveCards.questionCard.timeoutMs must be a finite positive number.');
50
+ }
51
+ return {
52
+ enabled: optionalBoolean(root['enabled'], 'enabled', configured),
53
+ statusCard: {
54
+ enabled: optionalBoolean(status?.['enabled'], 'statusCard.enabled', true),
55
+ },
56
+ questionCard: {
57
+ enabled: optionalBoolean(question?.['enabled'], 'questionCard.enabled', true),
58
+ timeoutMs,
59
+ },
60
+ };
61
+ }
62
+ export function parseDingtalkCardCallback(value) {
63
+ const root = parseEmbeddedRecord(value);
64
+ if (!root)
65
+ return undefined;
66
+ const embeddedValue = parseEmbeddedRecord(root['value']);
67
+ const embeddedContent = parseEmbeddedRecord(root['content']);
68
+ const privateSources = [embeddedValue, embeddedContent, root]
69
+ .map((source) => parseEmbeddedRecord(source?.['cardPrivateData']))
70
+ .filter((source) => source !== undefined);
71
+ const sources = [
72
+ embeddedValue,
73
+ embeddedContent,
74
+ ...privateSources,
75
+ root,
76
+ ].filter((source) => source !== undefined);
77
+ const pickString = (...keys) => {
78
+ for (const source of sources) {
79
+ for (const key of keys) {
80
+ const candidate = source[key];
81
+ if (typeof candidate === 'string' && candidate.trim()) {
82
+ return candidate.trim();
83
+ }
84
+ }
85
+ }
86
+ return undefined;
87
+ };
88
+ const privateData = privateSources[0];
89
+ const actionIds = privateData?.['actionIds'];
90
+ const actionId = (Array.isArray(actionIds) &&
91
+ typeof actionIds[0] === 'string' &&
92
+ actionIds[0].trim()
93
+ ? actionIds[0].trim()
94
+ : undefined) ?? pickString('actionValue', 'eventKey', 'actionId');
95
+ const outTrackId = pickString('outTrackId');
96
+ const actorId = parseDingtalkCardActorId(root);
97
+ if (!outTrackId || !actionId || !actorId)
98
+ return undefined;
99
+ const params = sources
100
+ .map((source) => parseEmbeddedRecord(source['params']))
101
+ .find((source) => source !== undefined);
102
+ const formData = sources
103
+ .flatMap((source) => [
104
+ parseEmbeddedRecord(source['formData']),
105
+ parseEmbeddedRecord(parseEmbeddedRecord(source['params'])?.['form']),
106
+ ])
107
+ .find((source) => source !== undefined);
108
+ const hasCancelField = params !== undefined &&
109
+ Object.prototype.hasOwnProperty.call(params, 'user_cancel');
110
+ return {
111
+ outTrackId,
112
+ actionId,
113
+ actorId,
114
+ formData: formData ?? {},
115
+ hasBusinessPayload: formData !== undefined || hasCancelField,
116
+ isCancel: hasCancelField && parseBooleanLike(params['user_cancel']),
117
+ };
118
+ }
119
+ export function parseDingtalkCardActorId(value) {
120
+ const root = parseEmbeddedRecord(value);
121
+ if (!root)
122
+ return undefined;
123
+ return ['userId', 'senderStaffId', 'senderId']
124
+ .map((key) => root[key])
125
+ .find((candidate) => typeof candidate === 'string' && candidate.trim().length > 0)
126
+ ?.trim();
127
+ }
128
+ //# sourceMappingURL=interactive-card-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-card-types.js","sourceRoot":"","sources":["../src/interactive-card-types.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ export declare class DingTalkMediaUploadError extends Error {
14
14
  }
15
15
  export declare function findImageMarkers(text: string): ImageMarker[];
16
16
  export declare function replaceImageMarkers(text: string, markers: readonly ImageMarker[], replacements: readonly string[]): string;
17
+ export declare function sanitizeStreamingImageMarkers(text: string): string;
17
18
  export declare function readValidatedImage(imagePath: string, options: {
18
19
  workspaceDir: string;
19
20
  temporaryDir?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"outbound-image.d.ts","sourceRoot":"","sources":["../src/outbound-image.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IAG/C,QAAQ,CAAC,WAAW,EAAE,OAAO;gBAD7B,OAAO,EAAE,MAAM,EACN,WAAW,EAAE,OAAO;CAKhC;AAoCD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAgB5D;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,WAAW,EAAE,EAC/B,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,MAAM,CAcR;AA+BD,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IACP,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACA,cAAc,CA4DhB;AASD,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAiEjB"}
1
+ {"version":3,"file":"outbound-image.d.ts","sourceRoot":"","sources":["../src/outbound-image.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IAG/C,QAAQ,CAAC,WAAW,EAAE,OAAO;gBAD7B,OAAO,EAAE,MAAM,EACN,WAAW,EAAE,OAAO;CAKhC;AAoCD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAgB5D;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,WAAW,EAAE,EAC/B,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,MAAM,CAcR;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAclE;AA+BD,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IACP,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACA,cAAc,CA4DhB;AASD,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAiEjB"}
@@ -75,6 +75,16 @@ export function replaceImageMarkers(text, markers, replacements) {
75
75
  }
76
76
  return result;
77
77
  }
78
+ export function sanitizeStreamingImageMarkers(text) {
79
+ const markers = findImageMarkers(text);
80
+ let result = replaceImageMarkers(text, markers, markers.map(() => '[Image pending]'));
81
+ const visibleText = maskCode(result);
82
+ const partialMarker = /\[(?:I(?:M(?:A(?:G(?:E(?::[^\]\r\n]*)?)?)?)?)?)?$/i.exec(visibleText);
83
+ if (partialMarker?.index !== undefined) {
84
+ result = `${result.slice(0, partialMarker.index)}[Image pending]`;
85
+ }
86
+ return result;
87
+ }
78
88
  function isInside(realPath, directory) {
79
89
  const pathFromDirectory = relative(directory, realPath);
80
90
  return (pathFromDirectory === '' ||
@@ -1 +1 @@
1
- {"version":3,"file":"outbound-image.js","sourceRoot":"","sources":["../src/outbound-image.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outbound-image.js","sourceRoot":"","sources":["../src/outbound-image.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { ChannelUserInputRequestContext, UserInputPresentationResult } from '@qwen-code/channel-base';
2
+ import { type DingtalkInteractiveCardClient } from './interactive-card-client.js';
3
+ import type { DingtalkCardCallback, DingtalkCardCallbackResult } from './interactive-card-types.js';
4
+ export interface QuestionCardControllerOptions {
5
+ client: DingtalkInteractiveCardClient;
6
+ timeoutMs: number;
7
+ sendFallback(chatId: string, text: string): Promise<void>;
8
+ reserveRunProjection?(runId: string): ((operation: () => Promise<void>) => Promise<void>) | undefined;
9
+ onError?(operation: string, error: unknown): void;
10
+ }
11
+ export declare class QuestionCardController {
12
+ private readonly options;
13
+ private readonly byRequest;
14
+ private readonly byOutTrack;
15
+ private readonly activeByScope;
16
+ private readonly pendingByRun;
17
+ private nextSequence;
18
+ constructor(options: QuestionCardControllerOptions);
19
+ present(context: ChannelUserInputRequestContext, target: {
20
+ chatId: string;
21
+ isGroup: boolean;
22
+ }): Promise<UserInputPresentationResult>;
23
+ claim(callback: DingtalkCardCallback): DingtalkCardCallbackResult;
24
+ cancelRun(runId: string, terminalState?: 'cancelled' | 'expired'): void;
25
+ private respond;
26
+ private expire;
27
+ private finalize;
28
+ private reserveTerminalProjection;
29
+ private projectTerminal;
30
+ private parseAnswers;
31
+ private readAnswerValues;
32
+ private otherAnswerKey;
33
+ private scopeKey;
34
+ private cardData;
35
+ private fallbackText;
36
+ }
37
+ //# sourceMappingURL=question-card-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"question-card-controller.d.ts","sourceRoot":"","sources":["../src/question-card-controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,8BAA8B,EAC9B,2BAA2B,EAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACV,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,6BAA6B,CAAC;AA2BrC,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,6BAA6B,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,oBAAoB,CAAC,CACnB,KAAK,EAAE,MAAM,GACZ,CAAC,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACnE,OAAO,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CACnD;AAED,qBAAa,sBAAsB;IAOrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;IAChE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqC;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAC/D,OAAO,CAAC,YAAY,CAAK;gBAEI,OAAO,EAAE,6BAA6B;IAE7D,OAAO,CACX,OAAO,EAAE,8BAA8B,EACvC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAC3C,OAAO,CAAC,2BAA2B,CAAC;IA2FvC,KAAK,CAAC,QAAQ,EAAE,oBAAoB,GAAG,0BAA0B;IA2CjE,SAAS,CACP,KAAK,EAAE,MAAM,EACb,aAAa,GAAE,WAAW,GAAG,SAAuB,GACnD,IAAI;YAiBO,OAAO;YAgCP,MAAM;YAWN,QAAQ;IAgCtB,OAAO,CAAC,yBAAyB;YAMnB,eAAe;IA0C7B,OAAO,CAAC,YAAY;IAwCpB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,QAAQ;IAyChB,OAAO,CAAC,YAAY;CAWrB"}