@dsh-enhanced/lark-channel 0.1.3

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 (102) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +342 -0
  3. package/bin/dsh-lark-setup.js +8 -0
  4. package/bin/dsh-supervised-growth-setup.js +8 -0
  5. package/cordis.patch.yml +21 -0
  6. package/lib/adapter.d.ts +135 -0
  7. package/lib/adapter.d.ts.map +1 -0
  8. package/lib/adapter.js +965 -0
  9. package/lib/adapter.js.map +1 -0
  10. package/lib/approval.d.ts +26 -0
  11. package/lib/approval.d.ts.map +1 -0
  12. package/lib/approval.js +104 -0
  13. package/lib/approval.js.map +1 -0
  14. package/lib/config.d.ts +21 -0
  15. package/lib/config.d.ts.map +1 -0
  16. package/lib/config.js +56 -0
  17. package/lib/config.js.map +1 -0
  18. package/lib/group-thread.d.ts +11 -0
  19. package/lib/group-thread.d.ts.map +1 -0
  20. package/lib/group-thread.js +22 -0
  21. package/lib/group-thread.js.map +1 -0
  22. package/lib/index.d.ts +27 -0
  23. package/lib/index.d.ts.map +1 -0
  24. package/lib/index.js +30 -0
  25. package/lib/index.js.map +1 -0
  26. package/lib/launchd.d.ts +44 -0
  27. package/lib/launchd.d.ts.map +1 -0
  28. package/lib/launchd.js +205 -0
  29. package/lib/launchd.js.map +1 -0
  30. package/lib/model-picker.d.ts +24 -0
  31. package/lib/model-picker.d.ts.map +1 -0
  32. package/lib/model-picker.js +95 -0
  33. package/lib/model-picker.js.map +1 -0
  34. package/lib/normalize.d.ts +12 -0
  35. package/lib/normalize.d.ts.map +1 -0
  36. package/lib/normalize.js +77 -0
  37. package/lib/normalize.js.map +1 -0
  38. package/lib/permission-picker.d.ts +29 -0
  39. package/lib/permission-picker.d.ts.map +1 -0
  40. package/lib/permission-picker.js +145 -0
  41. package/lib/permission-picker.js.map +1 -0
  42. package/lib/progress.d.ts +15 -0
  43. package/lib/progress.d.ts.map +1 -0
  44. package/lib/progress.js +137 -0
  45. package/lib/progress.js.map +1 -0
  46. package/lib/resident.d.ts +13 -0
  47. package/lib/resident.d.ts.map +1 -0
  48. package/lib/resident.js +41 -0
  49. package/lib/resident.js.map +1 -0
  50. package/lib/sdk.d.ts +131 -0
  51. package/lib/sdk.d.ts.map +1 -0
  52. package/lib/sdk.js +945 -0
  53. package/lib/sdk.js.map +1 -0
  54. package/lib/service.d.ts +30 -0
  55. package/lib/service.d.ts.map +1 -0
  56. package/lib/service.js +157 -0
  57. package/lib/service.js.map +1 -0
  58. package/lib/setup-materialization.d.ts +15 -0
  59. package/lib/setup-materialization.d.ts.map +1 -0
  60. package/lib/setup-materialization.js +221 -0
  61. package/lib/setup-materialization.js.map +1 -0
  62. package/lib/setup-profile.d.ts +23 -0
  63. package/lib/setup-profile.d.ts.map +1 -0
  64. package/lib/setup-profile.js +1126 -0
  65. package/lib/setup-profile.js.map +1 -0
  66. package/lib/setup.d.ts +206 -0
  67. package/lib/setup.d.ts.map +1 -0
  68. package/lib/setup.js +2143 -0
  69. package/lib/setup.js.map +1 -0
  70. package/lib/supervised-growth-profile.d.ts +74 -0
  71. package/lib/supervised-growth-profile.d.ts.map +1 -0
  72. package/lib/supervised-growth-profile.js +485 -0
  73. package/lib/supervised-growth-profile.js.map +1 -0
  74. package/lib/supervised-growth-setup.d.ts +85 -0
  75. package/lib/supervised-growth-setup.d.ts.map +1 -0
  76. package/lib/supervised-growth-setup.js +371 -0
  77. package/lib/supervised-growth-setup.js.map +1 -0
  78. package/lib/systemd.d.ts +39 -0
  79. package/lib/systemd.d.ts.map +1 -0
  80. package/lib/systemd.js +142 -0
  81. package/lib/systemd.js.map +1 -0
  82. package/lib/tool-approval.d.ts +22 -0
  83. package/lib/tool-approval.d.ts.map +1 -0
  84. package/lib/tool-approval.js +107 -0
  85. package/lib/tool-approval.js.map +1 -0
  86. package/lib/types.d.ts +158 -0
  87. package/lib/types.d.ts.map +1 -0
  88. package/lib/types.js +11 -0
  89. package/lib/types.js.map +1 -0
  90. package/lib/version.d.ts +2 -0
  91. package/lib/version.d.ts.map +1 -0
  92. package/lib/version.js +2 -0
  93. package/lib/version.js.map +1 -0
  94. package/lib/windows-task.d.ts +39 -0
  95. package/lib/windows-task.d.ts.map +1 -0
  96. package/lib/windows-task.js +117 -0
  97. package/lib/windows-task.js.map +1 -0
  98. package/lib/ws-card-callback.d.ts +7 -0
  99. package/lib/ws-card-callback.d.ts.map +1 -0
  100. package/lib/ws-card-callback.js +51 -0
  101. package/lib/ws-card-callback.js.map +1 -0
  102. package/package.json +96 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-picker.js","sourceRoot":"","sources":["../src/permission-picker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { DeliveryProgressIntent } from '@dsh-enhanced/assistant-delivery';
2
+ import type { LarkTransport } from './types.js';
3
+ /** Serial, best-effort renderer for Feishu's native agent progress message. */
4
+ export declare class LarkProgressPresenter {
5
+ private readonly transport;
6
+ private readonly enabled;
7
+ private readonly onFailure;
8
+ private readonly runs;
9
+ private readonly queues;
10
+ private sequence;
11
+ constructor(transport: LarkTransport, enabled: boolean, onFailure: (error: unknown) => void);
12
+ publish(intent: Readonly<DeliveryProgressIntent>): Promise<void>;
13
+ private apply;
14
+ }
15
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAA0B,MAAM,kCAAkC,CAAA;AACtG,OAAO,KAAK,EAAyC,aAAa,EAAE,MAAM,YAAY,CAAA;AAsGtF,+EAA+E;AAC/E,qBAAa,qBAAqB;IAM9B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAP5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkC;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAI;gBAGD,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI;IAGhD,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAWxD,KAAK;CAsBpB"}
@@ -0,0 +1,137 @@
1
+ const MAX_EVENT_CONTENT_CHARS = 4_096;
2
+ const MAX_VISIBLE_TEXT_CHARS = 1_500;
3
+ let lastTimestamp = 0;
4
+ function bounded(value, limit = MAX_VISIBLE_TEXT_CHARS) {
5
+ const characters = [...value];
6
+ return characters.length <= limit ? value : `${characters.slice(0, limit - 1).join('')}…`;
7
+ }
8
+ function progressEvent(eventType, content) {
9
+ const encoded = JSON.stringify(content);
10
+ lastTimestamp = Math.max(Date.now(), lastTimestamp + 1);
11
+ return {
12
+ eventType,
13
+ content: encoded.length <= MAX_EVENT_CONTENT_CHARS
14
+ ? encoded
15
+ : JSON.stringify({ truncated: true }),
16
+ timestamp: String(lastTimestamp),
17
+ };
18
+ }
19
+ function textEvents(messageId, text) {
20
+ return [
21
+ progressEvent('TEXT_MESSAGE_START', { messageId, role: 'assistant' }),
22
+ progressEvent('TEXT_MESSAGE_CONTENT', { messageId, delta: bounded(text) }),
23
+ progressEvent('TEXT_MESSAGE_END', { messageId }),
24
+ ];
25
+ }
26
+ function todoText(update) {
27
+ const marker = { pending: '⏳', in_progress: '🔄', completed: '✅' };
28
+ return update.todos.slice(0, 20)
29
+ .map(todo => `${marker[todo.status]} ${bounded(todo.content, 240)}`)
30
+ .join('\n');
31
+ }
32
+ function updateEvents(update, chatId, sequence, step) {
33
+ if (update.kind === 'started')
34
+ return [
35
+ progressEvent('RUN_STARTED', { threadId: chatId, runId: `delivery-${sequence}` }),
36
+ ...textEvents(`status-${sequence}`, '正在分析请求并制定执行步骤…'),
37
+ ];
38
+ if (update.kind === 'step') {
39
+ // A reasoning-only turn produces no tool or todo event, so this is the only content the panel
40
+ // would ever get. Each step needs its own messageId: reusing one id would make every later
41
+ // step overwrite the previous bubble instead of appending a new one.
42
+ return update.text === '' ? [] : textEvents(`step-${sequence}-${step}`, update.text);
43
+ }
44
+ if (update.kind === 'tool-started') {
45
+ const callId = bounded(update.callId, 256);
46
+ const toolName = bounded(update.toolName, 240);
47
+ return [
48
+ progressEvent('TOOL_CALL_START', {
49
+ toolCallId: callId,
50
+ icon: 'default',
51
+ title: `正在使用 ${toolName}`,
52
+ toolCallName: toolName,
53
+ }),
54
+ progressEvent('TOOL_CALL_END', { toolCallId: callId }),
55
+ ];
56
+ }
57
+ if (update.kind === 'tool-finished')
58
+ return [progressEvent('TOOL_CALL_RESULT', {
59
+ messageId: `result-${bounded(update.callId, 256)}`,
60
+ toolCallId: bounded(update.callId, 256),
61
+ role: 'tool',
62
+ content: { type: 'code', code: update.failed ? '执行失败' : '已完成' },
63
+ ...(update.failed ? { error: 'TOOL_FAILED' } : {}),
64
+ })];
65
+ if (update.kind === 'todos') {
66
+ const text = todoText(update);
67
+ return text === '' ? [] : textEvents(`todos-${sequence}-${step}`, text);
68
+ }
69
+ if (update.kind === 'completed')
70
+ return [progressEvent('RUN_FINISHED', {
71
+ threadId: chatId, runId: `delivery-${sequence}`, status: 'done',
72
+ })];
73
+ // A failed turn may have produced no step at all (the provider can fail before any output), so
74
+ // state the failure in the panel body too; RUN_ERROR alone leaves the surface on its opening line.
75
+ const code = update.code === undefined ? undefined : bounded(update.code, 80);
76
+ return [
77
+ ...textEvents(`failed-${sequence}-${step}`, code === undefined ? '任务未完成' : `任务未完成(${code})`),
78
+ progressEvent('RUN_ERROR', {
79
+ message: code === undefined ? '任务未完成' : `任务未完成:${code}`,
80
+ code: 'TASK_FAILED',
81
+ }),
82
+ ];
83
+ }
84
+ /** Serial, best-effort renderer for Feishu's native agent progress message. */
85
+ export class LarkProgressPresenter {
86
+ transport;
87
+ enabled;
88
+ onFailure;
89
+ runs = new Map();
90
+ queues = new Map();
91
+ sequence = 0;
92
+ constructor(transport, enabled, onFailure) {
93
+ this.transport = transport;
94
+ this.enabled = enabled;
95
+ this.onFailure = onFailure;
96
+ }
97
+ async publish(intent) {
98
+ if (!this.enabled)
99
+ return;
100
+ const key = JSON.stringify([intent.bindingId, intent.eventId]);
101
+ const previous = this.queues.get(key) ?? Promise.resolve();
102
+ const current = previous.then(() => this.apply(key, intent)).catch(this.onFailure);
103
+ this.queues.set(key, current);
104
+ await current;
105
+ if ((intent.update.kind === 'completed' || intent.update.kind === 'failed')
106
+ && this.queues.get(key) === current)
107
+ this.queues.delete(key);
108
+ }
109
+ async apply(key, intent) {
110
+ if (intent.update.kind === 'started') {
111
+ if (this.runs.has(key))
112
+ return;
113
+ const handle = await this.transport.createProgress(intent.target.conversation.chat, {
114
+ replyTo: intent.eventId,
115
+ hidden: false,
116
+ });
117
+ const run = { handle, chatId: intent.target.conversation.chat, sequence: ++this.sequence, step: 0 };
118
+ this.runs.set(key, run);
119
+ await this.transport.writeProgress(handle, updateEvents(intent.update, run.chatId, run.sequence, run.step));
120
+ return;
121
+ }
122
+ const run = this.runs.get(key);
123
+ if (run === undefined)
124
+ return;
125
+ const terminal = intent.update.kind === 'completed' || intent.update.kind === 'failed';
126
+ try {
127
+ const events = updateEvents(intent.update, run.chatId, run.sequence, ++run.step);
128
+ if (events.length > 0)
129
+ await this.transport.writeProgress(run.handle, events);
130
+ }
131
+ finally {
132
+ if (terminal)
133
+ this.runs.delete(key);
134
+ }
135
+ }
136
+ }
137
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export type ResidentServiceKind = 'launchd' | 'systemd' | 'windows-task-best-effort';
2
+ export interface InstalledResidentService {
3
+ kind: ResidentServiceKind;
4
+ target: string;
5
+ statusCommand: string;
6
+ logCommand: string;
7
+ }
8
+ export declare function residentServiceKind(platform: string): ResidentServiceKind;
9
+ export declare function installDshResidentService(input: {
10
+ dshHome: string;
11
+ profile: string;
12
+ }, platform?: NodeJS.Platform): Promise<InstalledResidentService>;
13
+ //# sourceMappingURL=resident.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resident.d.ts","sourceRoot":"","sources":["../src/resident.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,0BAA0B,CAAA;AAEpF,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,mBAAmB,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAKzE;AAED,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC3C,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,OAAO,CAAC,wBAAwB,CAAC,CA2BnC"}
@@ -0,0 +1,41 @@
1
+ import { installDshLaunchAgent } from './launchd.js';
2
+ import { installDshSystemdService } from './systemd.js';
3
+ import { installDshWindowsTask } from './windows-task.js';
4
+ export function residentServiceKind(platform) {
5
+ if (platform === 'darwin')
6
+ return 'launchd';
7
+ if (platform === 'linux')
8
+ return 'systemd';
9
+ if (platform === 'win32')
10
+ return 'windows-task-best-effort';
11
+ throw new Error(`lark-channel setup: unsupported platform: ${platform}`);
12
+ }
13
+ export async function installDshResidentService(input, platform = process.platform) {
14
+ const kind = residentServiceKind(platform);
15
+ if (kind === 'launchd') {
16
+ const service = await installDshLaunchAgent(input);
17
+ return {
18
+ kind,
19
+ target: service.target,
20
+ statusCommand: `launchctl print ${service.target}`,
21
+ logCommand: `tail -f ${service.stderrPath}`,
22
+ };
23
+ }
24
+ if (kind === 'systemd') {
25
+ const service = await installDshSystemdService(input);
26
+ return {
27
+ kind,
28
+ target: service.target,
29
+ statusCommand: `systemctl --user status ${service.target}`,
30
+ logCommand: service.logCommand,
31
+ };
32
+ }
33
+ const service = await installDshWindowsTask(input);
34
+ return {
35
+ kind,
36
+ target: service.target,
37
+ statusCommand: `schtasks.exe /Query /TN "${service.target}"`,
38
+ logCommand: service.logCommand,
39
+ };
40
+ }
41
+ //# sourceMappingURL=resident.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resident.js","sourceRoot":"","sources":["../src/resident.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAWzD,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC3C,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,SAAS,CAAA;IAC1C,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,0BAA0B,CAAA;IAC3D,MAAM,IAAI,KAAK,CAAC,6CAA6C,QAAQ,EAAE,CAAC,CAAA;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,KAA2C,EAC3C,WAA4B,OAAO,CAAC,QAAQ;IAE5C,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC1C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAA;QAClD,OAAO;YACL,IAAI;YACJ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,aAAa,EAAE,mBAAmB,OAAO,CAAC,MAAM,EAAE;YAClD,UAAU,EAAE,WAAW,OAAO,CAAC,UAAU,EAAE;SAC5C,CAAA;IACH,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAAC,KAAK,CAAC,CAAA;QACrD,OAAO;YACL,IAAI;YACJ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,aAAa,EAAE,2BAA2B,OAAO,CAAC,MAAM,EAAE;YAC1D,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAA;IACH,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAA;IAClD,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,aAAa,EAAE,4BAA4B,OAAO,CAAC,MAAM,GAAG;QAC5D,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAA;AACH,CAAC"}
package/lib/sdk.d.ts ADDED
@@ -0,0 +1,131 @@
1
+ import { Readable } from 'node:stream';
2
+ import { type NormalizedMessage } from '@larksuiteoapi/node-sdk';
3
+ import { type LarkMessage, type LarkProgressEvent, type LarkProgressHandle, type LarkSendInput, type LarkSendOptions, type LarkSendResult, type LarkTransport, type LarkTransportErrorCode, type LarkTransportHandlers } from './types.js';
4
+ export type LarkImageMediaType = 'image/gif' | 'image/jpeg' | 'image/png' | 'image/webp';
5
+ type LarkResponseHeaders = Readonly<Record<string, unknown>> | {
6
+ get(name: string): unknown;
7
+ };
8
+ interface LarkImageResourceResponse {
9
+ data: Readable;
10
+ headers: LarkResponseHeaders;
11
+ }
12
+ export declare function createLarkImageResourceRequest(messageId: string, fileKey: string, options: {
13
+ signal: AbortSignal;
14
+ timeoutMs: number;
15
+ maxBytes: number;
16
+ }): {
17
+ method: "GET";
18
+ url: string;
19
+ params: {
20
+ type: string;
21
+ };
22
+ responseType: "stream";
23
+ timeout: number;
24
+ signal: AbortSignal;
25
+ maxRedirects: number;
26
+ maxContentLength: number;
27
+ maxBodyLength: number;
28
+ $return_headers: boolean;
29
+ };
30
+ export declare function readLarkImageResourceResponse(response: LarkImageResourceResponse, options: {
31
+ maxBytes: number;
32
+ signal: AbortSignal;
33
+ }): Promise<{
34
+ data: Uint8Array;
35
+ mediaType: LarkImageMediaType;
36
+ }>;
37
+ /** Provider-safe UTF-8 budget for the complete serialized approval card. */
38
+ export declare const LARK_APPROVAL_CARD_MAX_BYTES: number;
39
+ export interface OfficialLarkTransportOptions {
40
+ appId: string;
41
+ appSecret: string;
42
+ domain: 'feishu' | 'lark';
43
+ handshakeTimeoutMs: number;
44
+ imageDownloadTimeoutMs: number;
45
+ }
46
+ export declare function classifyLarkSdkFailure(error: unknown): {
47
+ code: LarkTransportErrorCode;
48
+ retryAfterMs?: number;
49
+ };
50
+ export declare function classifyLarkImageSdkFailure(error: unknown, signal: AbortSignal): Promise<{
51
+ code: LarkTransportErrorCode;
52
+ retryAfterMs?: number;
53
+ }>;
54
+ export declare function larkRequestUuid(idempotencyKey: string): string;
55
+ export declare function createLarkProgressRequest(chatId: string, options: {
56
+ replyTo: string;
57
+ hidden: boolean;
58
+ }): {
59
+ method: "POST";
60
+ url: string;
61
+ data: {
62
+ receive_id: string;
63
+ origin_message_id: string;
64
+ cot_hidden: boolean;
65
+ enable_badge: boolean;
66
+ update_feed_rank: boolean;
67
+ };
68
+ };
69
+ export declare function writeLarkProgressRequest(handle: LarkProgressHandle, events: readonly LarkProgressEvent[]): {
70
+ method: "PUT";
71
+ url: string;
72
+ data: {
73
+ cot_id: string;
74
+ message_id: string;
75
+ events: {
76
+ event_type: string;
77
+ content: string;
78
+ timestamp: string;
79
+ }[];
80
+ };
81
+ };
82
+ export declare const LARK_MODEL_PICKER_CONTROLS: Readonly<{
83
+ provider: "model_provider";
84
+ model: "model_route";
85
+ effort: "model_effort";
86
+ confirm: "model_confirm";
87
+ }>;
88
+ export declare const LARK_PERMISSION_PICKER_CONTROLS: Readonly<{
89
+ ask: "permission_ask";
90
+ auto: "permission_auto";
91
+ full: "permission_full";
92
+ }>;
93
+ export declare function renderLarkMessage(input: LarkSendInput): {
94
+ msgType: 'interactive' | 'text';
95
+ content: string;
96
+ };
97
+ export declare function toSafeLarkMessage(message: NormalizedMessage): LarkMessage;
98
+ export declare class OfficialLarkTransport implements LarkTransport {
99
+ private readonly client;
100
+ private readonly imageClient;
101
+ private readonly dispatcher;
102
+ private readonly ws;
103
+ private readonly handshakeTimeoutMs;
104
+ private readonly imageDownloadTimeoutMs;
105
+ private readonly lifecycleController;
106
+ private handlers;
107
+ private identity;
108
+ private pendingHandshake;
109
+ constructor(options: OfficialLarkTransportOptions);
110
+ subscribe(handlers: LarkTransportHandlers): () => void;
111
+ connect(): Promise<void>;
112
+ disconnect(): Promise<void>;
113
+ downloadMessageImage(messageId: string, fileKey: string, options: {
114
+ maxBytes: number;
115
+ signal: AbortSignal;
116
+ }): Promise<{
117
+ data: Uint8Array;
118
+ mediaType: LarkImageMediaType;
119
+ }>;
120
+ addReaction(messageId: string, emojiType: string): Promise<string>;
121
+ createProgress(chatId: string, options: {
122
+ replyTo: string;
123
+ hidden: boolean;
124
+ }): Promise<LarkProgressHandle>;
125
+ writeProgress(handle: LarkProgressHandle, events: readonly LarkProgressEvent[]): Promise<void>;
126
+ send(chatId: string, input: LarkSendInput, options?: LarkSendOptions): Promise<LarkSendResult>;
127
+ private fetchBotIdentity;
128
+ }
129
+ export declare function createOfficialLarkTransport(options: OfficialLarkTransportOptions): LarkTransport;
130
+ export {};
131
+ //# sourceMappingURL=sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"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"}