opencode-feishu-bot 0.1.0

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 (41) hide show
  1. package/README.md +314 -0
  2. package/bin/cli.js +3 -0
  3. package/dist/auth/whitelist.d.ts +25 -0
  4. package/dist/auth/whitelist.d.ts.map +1 -0
  5. package/dist/cli.d.ts +27 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/commands/handler.d.ts +51 -0
  8. package/dist/commands/handler.d.ts.map +1 -0
  9. package/dist/commands/parser.d.ts +24 -0
  10. package/dist/commands/parser.d.ts.map +1 -0
  11. package/dist/config.d.ts +44 -0
  12. package/dist/config.d.ts.map +1 -0
  13. package/dist/database/index.d.ts +96 -0
  14. package/dist/database/index.d.ts.map +1 -0
  15. package/dist/database/schema.sql +49 -0
  16. package/dist/events/handler.d.ts +13 -0
  17. package/dist/events/handler.d.ts.map +1 -0
  18. package/dist/feishu/client.d.ts +218 -0
  19. package/dist/feishu/client.d.ts.map +1 -0
  20. package/dist/feishu/formatter.d.ts +110 -0
  21. package/dist/feishu/formatter.d.ts.map +1 -0
  22. package/dist/feishu/menu.d.ts +44 -0
  23. package/dist/feishu/menu.d.ts.map +1 -0
  24. package/dist/feishu/question-card.d.ts +24 -0
  25. package/dist/feishu/question-card.d.ts.map +1 -0
  26. package/dist/feishu/streamer.d.ts +53 -0
  27. package/dist/feishu/streamer.d.ts.map +1 -0
  28. package/dist/feishu/welcome.d.ts +9 -0
  29. package/dist/feishu/welcome.d.ts.map +1 -0
  30. package/dist/index.d.ts +2 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +4034 -0
  33. package/dist/opencode/client.d.ts +86 -0
  34. package/dist/opencode/client.d.ts.map +1 -0
  35. package/dist/session/manager.d.ts +75 -0
  36. package/dist/session/manager.d.ts.map +1 -0
  37. package/dist/utils/logger.d.ts +12 -0
  38. package/dist/utils/logger.d.ts.map +1 -0
  39. package/dist/utils/reconnect.d.ts +39 -0
  40. package/dist/utils/reconnect.d.ts.map +1 -0
  41. package/package.json +74 -0
@@ -0,0 +1,13 @@
1
+ import type { FeishuClient } from '../feishu/client';
2
+ import type { SessionManager } from '../session/manager';
3
+ import type { OpencodeWrapper } from '../opencode/client';
4
+ import type { ProjectConfig, ModelConfig } from '../config';
5
+ export interface EventHandlerConfig {
6
+ feishuClient: FeishuClient;
7
+ sessionManager: SessionManager;
8
+ opencodeClient: OpencodeWrapper;
9
+ projects: ProjectConfig[];
10
+ availableModels: ModelConfig[];
11
+ }
12
+ export declare function setupEventHandlers(config: EventHandlerConfig): void;
13
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/events/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA8H,MAAM,kBAAkB,CAAC;AACjL,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAkB5D,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,eAAe,CAAC;IAChC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,eAAe,EAAE,WAAW,EAAE,CAAC;CAChC;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CA0VnE"}
@@ -0,0 +1,218 @@
1
+ /**
2
+ * 飞书客户端模块
3
+ * 封装飞书 SDK,提供消息收发和卡片操作功能
4
+ */
5
+ import * as Lark from '@larksuiteoapi/node-sdk';
6
+ /** 飞书客户端配置 */
7
+ export interface FeishuConfig {
8
+ appId: string;
9
+ appSecret: string;
10
+ domain?: string;
11
+ }
12
+ /** 消息事件数据 */
13
+ export interface MessageEvent {
14
+ eventId: string;
15
+ messageId: string;
16
+ chatId: string;
17
+ chatType: 'p2p' | 'group';
18
+ senderId: string;
19
+ senderType: string;
20
+ messageType: string;
21
+ content: string;
22
+ createTime: string;
23
+ mentions?: Array<{
24
+ key: string;
25
+ id: string;
26
+ name: string;
27
+ }>;
28
+ }
29
+ /** 消息处理回调函数类型 */
30
+ export type MessageHandler = (event: MessageEvent) => Promise<void>;
31
+ /** 卡片更新结果 */
32
+ export interface UpdateCardResult {
33
+ success: boolean;
34
+ rateLimited?: boolean;
35
+ }
36
+ /** 机器人进群事件 */
37
+ export interface BotAddedEvent {
38
+ eventId: string;
39
+ chatId: string;
40
+ operatorId: string;
41
+ chatName?: string;
42
+ }
43
+ /** 消息撤回事件 */
44
+ export interface MessageRecalledEvent {
45
+ eventId: string;
46
+ messageId: string;
47
+ chatId: string;
48
+ recallTime: string;
49
+ recallType: 'message_owner' | 'group_owner' | 'group_manager' | 'enterprise_manager';
50
+ }
51
+ /** 机器人移出群事件 */
52
+ export interface BotRemovedEvent {
53
+ eventId: string;
54
+ chatId: string;
55
+ operatorId: string;
56
+ }
57
+ /** 机器人菜单点击事件 */
58
+ export interface BotMenuEvent {
59
+ eventId: string;
60
+ eventKey: string;
61
+ operatorId: string;
62
+ operatorName?: string;
63
+ chatId?: string;
64
+ messageId?: string;
65
+ timestamp: string;
66
+ }
67
+ /** 用户退群事件 */
68
+ export interface UserLeftChatEvent {
69
+ eventId: string;
70
+ chatId: string;
71
+ operatorId: string;
72
+ users: Array<{
73
+ userId: string;
74
+ name?: string;
75
+ }>;
76
+ chatName?: string;
77
+ }
78
+ /** 群解散事件 */
79
+ export interface ChatDisbandedEvent {
80
+ eventId: string;
81
+ chatId: string;
82
+ operatorId: string;
83
+ chatName?: string;
84
+ }
85
+ /** 卡片交互事件 */
86
+ export interface CardActionEvent {
87
+ eventId: string;
88
+ operatorId: string;
89
+ chatId?: string;
90
+ messageId?: string;
91
+ action: {
92
+ tag: string;
93
+ value: Record<string, unknown>;
94
+ option?: string;
95
+ };
96
+ }
97
+ export type BotAddedHandler = (event: BotAddedEvent) => Promise<void>;
98
+ export type MessageRecalledHandler = (event: MessageRecalledEvent) => Promise<void>;
99
+ export type BotRemovedHandler = (event: BotRemovedEvent) => Promise<void>;
100
+ export type BotMenuHandler = (event: BotMenuEvent) => Promise<void>;
101
+ export type UserLeftChatHandler = (event: UserLeftChatEvent) => Promise<void>;
102
+ export type ChatDisbandedHandler = (event: ChatDisbandedEvent) => Promise<void>;
103
+ export type CardActionHandler = (event: CardActionEvent) => Promise<void>;
104
+ /** 群聊菜单项 */
105
+ export interface ChatMenuItem {
106
+ action_type: 'NONE' | 'REDIRECT_LINK';
107
+ redirect_link?: {
108
+ common_url?: string;
109
+ ios_url?: string;
110
+ android_url?: string;
111
+ pc_url?: string;
112
+ web_url?: string;
113
+ };
114
+ image_key?: string;
115
+ name: string;
116
+ i18n_names?: {
117
+ zh_cn?: string;
118
+ en_us?: string;
119
+ ja_jp?: string;
120
+ };
121
+ }
122
+ /** 群聊菜单树结构 */
123
+ export interface ChatMenuTree {
124
+ chat_menu_top_levels: Array<{
125
+ chat_menu_item: ChatMenuItem;
126
+ children?: Array<{
127
+ chat_menu_item: ChatMenuItem;
128
+ }>;
129
+ }>;
130
+ }
131
+ /** 飞书客户端类 */
132
+ export declare class FeishuClient {
133
+ private client;
134
+ private wsClient;
135
+ private appId;
136
+ private appSecret;
137
+ private messageHandler;
138
+ private botAddedHandler;
139
+ private messageRecalledHandler;
140
+ private botRemovedHandler;
141
+ private botMenuHandler;
142
+ private userLeftChatHandler;
143
+ private chatDisbandedHandler;
144
+ private cardActionHandler;
145
+ private isConnected;
146
+ constructor(config: FeishuConfig);
147
+ /** 注册消息处理回调 */
148
+ onMessage(handler: MessageHandler): void;
149
+ onBotAdded(handler: BotAddedHandler): void;
150
+ onMessageRecalled(handler: MessageRecalledHandler): void;
151
+ onBotRemoved(handler: BotRemovedHandler): void;
152
+ onBotMenu(handler: BotMenuHandler): void;
153
+ onUserLeftChat(handler: UserLeftChatHandler): void;
154
+ onChatDisbanded(handler: ChatDisbandedHandler): void;
155
+ onCardAction(handler: CardActionHandler): void;
156
+ /** 启动 WebSocket 连接 */
157
+ start(): Promise<void>;
158
+ /** 处理消息事件 */
159
+ private handleMessageEvent;
160
+ private handleBotAddedEvent;
161
+ private handleMessageRecalledEvent;
162
+ private handleBotRemovedEvent;
163
+ private handleBotMenuEvent;
164
+ private handleUserLeftChatEvent;
165
+ private handleChatDisbandedEvent;
166
+ private handleCardActionEvent;
167
+ /** 从原始数据中提取事件数据 */
168
+ private extractEventData;
169
+ /** 发送消息 */
170
+ sendMessage(chatId: string, content: string, msgType?: 'text' | 'interactive'): Promise<string | null>;
171
+ sendMessageToUser(userId: string, content: string, msgType?: 'text' | 'interactive'): Promise<string | null>;
172
+ sendCardToUser(userId: string, card: object): Promise<string | null>;
173
+ /** 发送文本消息 */
174
+ sendTextMessage(chatId: string, text: string): Promise<string | null>;
175
+ /** 发送卡片消息 */
176
+ sendCard(chatId: string, card: object): Promise<string | null>;
177
+ /** 更新卡片消息 */
178
+ updateCard(messageId: string, card: object): Promise<UpdateCardResult>;
179
+ deleteMessage(messageId: string): Promise<boolean>;
180
+ createChat(name: string, userIds: string[]): Promise<{
181
+ chatId: string;
182
+ shareLink?: string;
183
+ } | null>;
184
+ updateChatName(chatId: string, name: string): Promise<boolean>;
185
+ deleteChat(chatId: string): Promise<boolean>;
186
+ getChatInfo(chatId: string): Promise<{
187
+ name?: string;
188
+ userCount?: number;
189
+ } | null>;
190
+ pinMessage(messageId: string): Promise<boolean>;
191
+ unpinMessage(messageId: string): Promise<boolean>;
192
+ /** 创建群聊菜单 */
193
+ createChatMenu(chatId: string, menuTree: ChatMenuTree): Promise<boolean>;
194
+ /** 删除群聊菜单 */
195
+ deleteChatMenu(chatId: string, menuIds: string[]): Promise<boolean>;
196
+ /** 获取群聊菜单 */
197
+ getChatMenu(chatId: string): Promise<ChatMenuTree | null>;
198
+ getMessageImage(messageId: string, imageKey: string): Promise<{
199
+ data: Buffer;
200
+ mimeType: string;
201
+ } | null>;
202
+ /** 获取 API 客户端实例 */
203
+ getApiClient(): Lark.Client;
204
+ /** 检查连接状态 */
205
+ isReady(): boolean;
206
+ /** 停止客户端 */
207
+ stop(): Promise<void>;
208
+ }
209
+ /** 解析文本消息内容 */
210
+ export declare function parseTextContent(content: string): string;
211
+ /** 解析图片消息内容,返回 image_key */
212
+ export declare function parseImageContent(content: string): string | null;
213
+ export declare function cleanMentionsFromText(text: string, mentions?: Array<{
214
+ key: string;
215
+ }>): string;
216
+ /** 创建飞书客户端实例 */
217
+ export declare function createFeishuClient(config: FeishuConfig): FeishuClient;
218
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/feishu/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * 飞书卡片格式化模块
3
+ * 提供卡片构建和内容格式化功能
4
+ */
5
+ /** 卡片模板颜色 */
6
+ export type CardTemplate = 'blue' | 'wathet' | 'turquoise' | 'green' | 'yellow' | 'orange' | 'red' | 'carmine' | 'violet' | 'purple' | 'indigo' | 'grey';
7
+ /** 卡片标题 */
8
+ export interface CardHeader {
9
+ title: {
10
+ tag: 'plain_text';
11
+ content: string;
12
+ };
13
+ template?: CardTemplate;
14
+ }
15
+ /** 飞书卡片结构 */
16
+ export interface FeishuCard {
17
+ config?: {
18
+ wide_screen_mode?: boolean;
19
+ };
20
+ header?: CardHeader;
21
+ elements: CardElement[];
22
+ }
23
+ export type CardElement = MarkdownElement | DivElement | HrElement | NoteElement;
24
+ export interface MarkdownElement {
25
+ tag: 'markdown';
26
+ content: string;
27
+ }
28
+ export interface DivElement {
29
+ tag: 'div';
30
+ text: {
31
+ tag: 'plain_text' | 'lark_md';
32
+ content: string;
33
+ };
34
+ }
35
+ export interface HrElement {
36
+ tag: 'hr';
37
+ }
38
+ export interface NoteElement {
39
+ tag: 'note';
40
+ elements: Array<{
41
+ tag: 'plain_text' | 'lark_md';
42
+ content: string;
43
+ }>;
44
+ }
45
+ /** 创建卡片 */
46
+ export declare function createCard(content: string, title?: string, template?: CardTemplate): FeishuCard;
47
+ /** 创建状态卡片 */
48
+ export declare function createStatusCard(status: string, details?: string): FeishuCard;
49
+ /** 格式化代码块 */
50
+ export declare function formatCodeBlock(code: string, language?: string): string;
51
+ /** 格式化工具输出 */
52
+ export declare function formatToolOutput(toolName: string, status: string, output?: string): string;
53
+ /** 格式化思考块 */
54
+ export declare function formatThinkingBlock(text: string): string;
55
+ /** 格式化错误信息 */
56
+ export declare function formatError(error: string): string;
57
+ /** 截断内容以符合飞书限制 */
58
+ export declare function truncateContent(content: string): string;
59
+ /** 转义 Markdown 特殊字符 */
60
+ export declare function escapeMarkdown(text: string): string;
61
+ /** 格式化消息部分 */
62
+ export declare function formatMessageParts(parts: Array<{
63
+ type: string;
64
+ text?: string;
65
+ name?: string;
66
+ state?: string;
67
+ output?: string;
68
+ }>): string;
69
+ export interface StreamingCardParts {
70
+ textContent: string;
71
+ reasoningContent: string;
72
+ toolCalls: Array<{
73
+ name: string;
74
+ state: string;
75
+ title?: string;
76
+ input?: Record<string, unknown>;
77
+ output?: string;
78
+ error?: string;
79
+ }>;
80
+ }
81
+ export interface OrderedPart {
82
+ type: 'text' | 'reasoning' | 'tool-call';
83
+ text?: string;
84
+ name?: string;
85
+ state?: string;
86
+ title?: string;
87
+ input?: Record<string, unknown>;
88
+ output?: string;
89
+ error?: string;
90
+ }
91
+ export declare function categorizeMessageParts(parts: Array<{
92
+ type: string;
93
+ text?: string;
94
+ name?: string;
95
+ state?: string;
96
+ title?: string;
97
+ input?: Record<string, unknown>;
98
+ output?: string;
99
+ error?: string;
100
+ }>): StreamingCardParts;
101
+ interface CardBuildResult {
102
+ cards: object[];
103
+ hasMore: boolean;
104
+ }
105
+ export declare function buildStreamingCardsV2(parts: OrderedPart[], isComplete: boolean, title?: string): CardBuildResult;
106
+ export declare function buildStreamingCardV2(parts: StreamingCardParts, isComplete: boolean, title?: string): object;
107
+ /** 构建流式卡片 */
108
+ export declare function buildStreamingCard(content: string, isComplete: boolean, title?: string): FeishuCard;
109
+ export {};
110
+ //# sourceMappingURL=formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/feishu/formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { ProjectConfig } from '../config';
2
+ export type MenuAction = 'new_session' | 'switch_model' | 'compact' | 'clear_history' | 'show_status' | 'show_cost';
3
+ export interface ModelInfo {
4
+ id: string;
5
+ name: string;
6
+ }
7
+ export declare function createProjectSelectCard(projects: ProjectConfig[], description?: string, currentProject?: string): object;
8
+ export declare function createModelSelectCard(models: ModelInfo[], currentModel?: string): object;
9
+ export interface SessionStatus {
10
+ sessionId: string;
11
+ projectPath: string;
12
+ model?: string;
13
+ messageCount?: number;
14
+ isActive: boolean;
15
+ }
16
+ export declare function createStatusCard(status: SessionStatus): object;
17
+ export interface CostInfo {
18
+ totalTokens: number;
19
+ inputTokens: number;
20
+ outputTokens: number;
21
+ estimatedCost?: string;
22
+ }
23
+ export declare function createCostCard(cost: CostInfo): object;
24
+ export declare function createConfirmCard(title: string, message: string, confirmAction: string, confirmText?: string, cancelText?: string): object;
25
+ export declare function createSuccessCard(title: string, message: string): object;
26
+ export declare function createSessionChatCreatedCard(chatId: string, sessionId: string, projectPath: string): object;
27
+ export declare function createErrorCard(title: string, message: string): object;
28
+ export interface SessionChatWelcomeInfo {
29
+ sessionId: string;
30
+ projectPath: string;
31
+ projects: ProjectConfig[];
32
+ chatId: string;
33
+ models: ModelInfo[];
34
+ currentModel?: string;
35
+ }
36
+ export declare function createSessionChatWelcomeCard(info: SessionChatWelcomeInfo): object;
37
+ export declare function createProjectSwitchedCard(projectName: string, projectPath: string, sessionId: string): object;
38
+ export interface QuickActionsInfo {
39
+ chatId: string;
40
+ projects: ProjectConfig[];
41
+ models: ModelInfo[];
42
+ }
43
+ export declare function createQuickActionsCard(info: QuickActionsInfo): object;
44
+ //# sourceMappingURL=menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/feishu/menu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,MAAM,UAAU,GAClB,aAAa,GACb,cAAc,GACd,SAAS,GACT,eAAe,GACf,aAAa,GACb,WAAW,CAAC;AAEhB,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AA2BD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAiCxH;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAsCxF;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAc9D;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAarD;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,WAAW,SAAO,EAClB,UAAU,SAAO,GAChB,MAAM,CAyBR;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAMxE;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAsB3G;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAMtE;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAkEjF;AAED,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAa7G;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAWD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAyErE"}
@@ -0,0 +1,24 @@
1
+ export interface QuestionOption {
2
+ label: string;
3
+ description: string;
4
+ }
5
+ export interface QuestionInfo {
6
+ question: string;
7
+ header: string;
8
+ options: QuestionOption[];
9
+ multiple?: boolean;
10
+ custom?: boolean;
11
+ }
12
+ export interface QuestionRequest {
13
+ id: string;
14
+ sessionID: string;
15
+ questions: QuestionInfo[];
16
+ tool?: {
17
+ messageID: string;
18
+ callID: string;
19
+ };
20
+ }
21
+ export declare function createQuestionCard(request: QuestionRequest): object;
22
+ export declare function createAnsweredCard(question: string, answer: string): object;
23
+ export declare function createQuestionErrorCard(message: string): object;
24
+ //# sourceMappingURL=question-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"question-card.d.ts","sourceRoot":"","sources":["../../src/feishu/question-card.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AA2BD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CA0EnE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAS3E;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ/D"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * 卡片流式更新模块
3
+ * 实现节流的卡片内容更新,用于流式响应
4
+ */
5
+ import type { FeishuClient } from './client';
6
+ import { type OrderedPart } from './formatter';
7
+ export interface StreamerConfig {
8
+ throttleMs?: number;
9
+ maxContentLength?: number;
10
+ }
11
+ export declare class CardStreamer {
12
+ private client;
13
+ private chatId;
14
+ private messageIds;
15
+ private buffer;
16
+ private orderedParts;
17
+ private lastUpdateTimePerMessage;
18
+ private throttleMs;
19
+ private pendingUpdate;
20
+ private isComplete;
21
+ private title?;
22
+ private useV2;
23
+ private isUpdating;
24
+ private hasPendingData;
25
+ constructor(client: FeishuClient, chatId: string, config?: StreamerConfig);
26
+ setTitle(title: string): void;
27
+ start(): Promise<void>;
28
+ append(content: string): Promise<void>;
29
+ setContent(content: string): Promise<void>;
30
+ setOrderedParts(parts: OrderedPart[]): Promise<void>;
31
+ setParts(parts: Array<{
32
+ type: string;
33
+ text?: string;
34
+ name?: string;
35
+ state?: string;
36
+ title?: string;
37
+ input?: Record<string, unknown>;
38
+ output?: string;
39
+ error?: string;
40
+ }>): Promise<void>;
41
+ private scheduleUpdate;
42
+ flush(): Promise<void>;
43
+ private updateCardWithRateLimit;
44
+ private syncCards;
45
+ complete(): Promise<void>;
46
+ sendError(errorMessage: string): Promise<void>;
47
+ getMessageId(): string | null;
48
+ getMessageIds(): string[];
49
+ getContent(): string;
50
+ reset(): void;
51
+ }
52
+ export declare function createCardStreamer(client: FeishuClient, chatId: string, config?: StreamerConfig): CardStreamer;
53
+ //# sourceMappingURL=streamer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamer.d.ts","sourceRoot":"","sources":["../../src/feishu/streamer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAA8D,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAQ3G,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAMD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,wBAAwB,CAAkC;IAClE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,cAAc,CAAkB;gBAE5B,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc;IAMzE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBtB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1C,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAe/K,cAAc;IAiBtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAgCd,uBAAuB;YAgCvB,SAAS;IA4BjB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAezB,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDpD,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B,aAAa,IAAI,MAAM,EAAE;IAIzB,UAAU,IAAI,MAAM;IAIpB,KAAK,IAAI,IAAI;CAgBd;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,cAAc,GACtB,YAAY,CAEd"}
@@ -0,0 +1,9 @@
1
+ import type { FeishuCard } from './formatter';
2
+ export interface BotInfo {
3
+ projectPath: string;
4
+ version?: string;
5
+ activeSessionCount: number;
6
+ }
7
+ export declare function createWelcomeCard(info: BotInfo, chatName?: string): FeishuCard;
8
+ export declare function createPrivateChatWelcomeCard(info: BotInfo): FeishuCard;
9
+ //# sourceMappingURL=welcome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../src/feishu/welcome.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,aAAa,CAAC;AAE3D,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAsC9E;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAqBtE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}