opencode-lark 0.1.1
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/CHANGELOG.md +50 -0
- package/LICENSE +21 -0
- package/README.md +322 -0
- package/README.zh-CN.md +324 -0
- package/bin/opencode-lark.js +2 -0
- package/dist/channel/base-plugin.d.ts +31 -0
- package/dist/channel/base-plugin.d.ts.map +1 -0
- package/dist/channel/base-plugin.js +42 -0
- package/dist/channel/base-plugin.js.map +1 -0
- package/dist/channel/feishu/feishu-plugin.d.ts +36 -0
- package/dist/channel/feishu/feishu-plugin.d.ts.map +1 -0
- package/dist/channel/feishu/feishu-plugin.js +149 -0
- package/dist/channel/feishu/feishu-plugin.js.map +1 -0
- package/dist/channel/feishu/index.d.ts +2 -0
- package/dist/channel/feishu/index.d.ts.map +1 -0
- package/dist/channel/feishu/index.js +2 -0
- package/dist/channel/feishu/index.js.map +1 -0
- package/dist/channel/index.d.ts +4 -0
- package/dist/channel/index.d.ts.map +1 -0
- package/dist/channel/index.js +4 -0
- package/dist/channel/index.js.map +1 -0
- package/dist/channel/manager.d.ts +37 -0
- package/dist/channel/manager.d.ts.map +1 -0
- package/dist/channel/manager.js +68 -0
- package/dist/channel/manager.js.map +1 -0
- package/dist/channel/mock/mock-plugin.d.ts +24 -0
- package/dist/channel/mock/mock-plugin.d.ts.map +1 -0
- package/dist/channel/mock/mock-plugin.js +42 -0
- package/dist/channel/mock/mock-plugin.js.map +1 -0
- package/dist/channel/types.d.ts +226 -0
- package/dist/channel/types.d.ts.map +1 -0
- package/dist/channel/types.js +7 -0
- package/dist/channel/types.js.map +1 -0
- package/dist/cron/cron-service.d.ts +40 -0
- package/dist/cron/cron-service.d.ts.map +1 -0
- package/dist/cron/cron-service.js +140 -0
- package/dist/cron/cron-service.js.map +1 -0
- package/dist/cron/heartbeat.d.ts +30 -0
- package/dist/cron/heartbeat.d.ts.map +1 -0
- package/dist/cron/heartbeat.js +76 -0
- package/dist/cron/heartbeat.js.map +1 -0
- package/dist/feishu/api-client.d.ts +19 -0
- package/dist/feishu/api-client.d.ts.map +1 -0
- package/dist/feishu/api-client.js +98 -0
- package/dist/feishu/api-client.js.map +1 -0
- package/dist/feishu/card-builder.d.ts +10 -0
- package/dist/feishu/card-builder.d.ts.map +1 -0
- package/dist/feishu/card-builder.js +74 -0
- package/dist/feishu/card-builder.js.map +1 -0
- package/dist/feishu/cardkit-client.d.ts +48 -0
- package/dist/feishu/cardkit-client.d.ts.map +1 -0
- package/dist/feishu/cardkit-client.js +97 -0
- package/dist/feishu/cardkit-client.js.map +1 -0
- package/dist/feishu/message-dedup.d.ts +28 -0
- package/dist/feishu/message-dedup.d.ts.map +1 -0
- package/dist/feishu/message-dedup.js +58 -0
- package/dist/feishu/message-dedup.js.map +1 -0
- package/dist/feishu/webhook-server.d.ts +20 -0
- package/dist/feishu/webhook-server.d.ts.map +1 -0
- package/dist/feishu/webhook-server.js +111 -0
- package/dist/feishu/webhook-server.js.map +1 -0
- package/dist/feishu/ws-client.d.ts +17 -0
- package/dist/feishu/ws-client.d.ts.map +1 -0
- package/dist/feishu/ws-client.js +158 -0
- package/dist/feishu/ws-client.js.map +1 -0
- package/dist/handler/interactive-handler.d.ts +16 -0
- package/dist/handler/interactive-handler.d.ts.map +1 -0
- package/dist/handler/interactive-handler.js +86 -0
- package/dist/handler/interactive-handler.js.map +1 -0
- package/dist/handler/interactive-poller.d.ts +16 -0
- package/dist/handler/interactive-poller.d.ts.map +1 -0
- package/dist/handler/interactive-poller.js +147 -0
- package/dist/handler/interactive-poller.js.map +1 -0
- package/dist/handler/message-handler.d.ts +34 -0
- package/dist/handler/message-handler.d.ts.map +1 -0
- package/dist/handler/message-handler.js +305 -0
- package/dist/handler/message-handler.js.map +1 -0
- package/dist/handler/streaming-integration.d.ts +21 -0
- package/dist/handler/streaming-integration.d.ts.map +1 -0
- package/dist/handler/streaming-integration.js +325 -0
- package/dist/handler/streaming-integration.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +281 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/memory-manager.d.ts +16 -0
- package/dist/memory/memory-manager.d.ts.map +1 -0
- package/dist/memory/memory-manager.js +58 -0
- package/dist/memory/memory-manager.js.map +1 -0
- package/dist/session/progress-tracker.d.ts +12 -0
- package/dist/session/progress-tracker.d.ts.map +1 -0
- package/dist/session/progress-tracker.js +46 -0
- package/dist/session/progress-tracker.js.map +1 -0
- package/dist/session/session-manager.d.ts +15 -0
- package/dist/session/session-manager.d.ts.map +1 -0
- package/dist/session/session-manager.js +91 -0
- package/dist/session/session-manager.js.map +1 -0
- package/dist/streaming/event-processor.d.ts +74 -0
- package/dist/streaming/event-processor.d.ts.map +1 -0
- package/dist/streaming/event-processor.js +240 -0
- package/dist/streaming/event-processor.js.map +1 -0
- package/dist/streaming/session-observer.d.ts +19 -0
- package/dist/streaming/session-observer.d.ts.map +1 -0
- package/dist/streaming/session-observer.js +140 -0
- package/dist/streaming/session-observer.js.map +1 -0
- package/dist/streaming/streaming-card.d.ts +37 -0
- package/dist/streaming/streaming-card.d.ts.map +1 -0
- package/dist/streaming/streaming-card.js +139 -0
- package/dist/streaming/streaming-card.js.map +1 -0
- package/dist/streaming/subagent-card.d.ts +32 -0
- package/dist/streaming/subagent-card.d.ts.map +1 -0
- package/dist/streaming/subagent-card.js +103 -0
- package/dist/streaming/subagent-card.js.map +1 -0
- package/dist/streaming/subagent-tracker.d.ts +45 -0
- package/dist/streaming/subagent-tracker.d.ts.map +1 -0
- package/dist/streaming/subagent-tracker.js +118 -0
- package/dist/streaming/subagent-tracker.js.map +1 -0
- package/dist/types.d.ts +55 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/config.d.ts +197 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +87 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/db.d.ts +12 -0
- package/dist/utils/db.d.ts.map +1 -0
- package/dist/utils/db.js +35 -0
- package/dist/utils/db.js.map +1 -0
- package/dist/utils/event-listeners.d.ts +12 -0
- package/dist/utils/event-listeners.d.ts.map +1 -0
- package/dist/utils/event-listeners.js +21 -0
- package/dist/utils/event-listeners.js.map +1 -0
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +38 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message handler — extracted from index.ts handleMessage().
|
|
3
|
+
*
|
|
4
|
+
* Supports two modes:
|
|
5
|
+
* 1. Event-driven (preferred): POST message → subscribe to SSE events → collect TextDelta → respond on SessionIdle
|
|
6
|
+
* 2. Sync fallback: POST message → parse response body → respond immediately
|
|
7
|
+
*/
|
|
8
|
+
import { addListener, removeListener } from "../utils/event-listeners.js";
|
|
9
|
+
// ── Constants ──
|
|
10
|
+
const EVENT_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes
|
|
11
|
+
// ── Factory ──
|
|
12
|
+
export function createMessageHandler(deps) {
|
|
13
|
+
const { serverUrl, sessionManager, memoryManager, dedup, eventProcessor, feishuClient, progressTracker, eventListeners, ownedSessions, logger, } = deps;
|
|
14
|
+
const notifiedFeishuKeys = new Set();
|
|
15
|
+
return async function handleMessage(event) {
|
|
16
|
+
// ── 1. Dedup check ──
|
|
17
|
+
if (dedup.isDuplicate(event.event_id)) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// ── 2. Skip non-text messages ──
|
|
21
|
+
if (event.message.message_type !== "text") {
|
|
22
|
+
logger.debug(`Skipping non-text message: ${event.message.message_type}`);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
// ── 3. Parse user text ──
|
|
26
|
+
let userText;
|
|
27
|
+
try {
|
|
28
|
+
const parsed = JSON.parse(event.message.content);
|
|
29
|
+
userText = parsed.text ?? "";
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
userText = event.message.content;
|
|
33
|
+
}
|
|
34
|
+
if (!userText.trim())
|
|
35
|
+
return;
|
|
36
|
+
// ── 4. Resolve feishuKey ──
|
|
37
|
+
const feishuKey = event.chat_type === "p2p"
|
|
38
|
+
? event.chat_id
|
|
39
|
+
: event.root_id
|
|
40
|
+
? `${event.chat_id}:${event.root_id}`
|
|
41
|
+
: `${event.chat_id}:${event.message_id}`;
|
|
42
|
+
logger.info(`Message from ${feishuKey}: ${userText.slice(0, 80)}...`);
|
|
43
|
+
// ── 5. Send thinking indicator ──
|
|
44
|
+
// With streaming bridge: add emoji reaction to user message.
|
|
45
|
+
// Without streaming bridge: send thinking card via sendMessage.
|
|
46
|
+
const thinkingMessageId = deps.streamingBridge
|
|
47
|
+
? null
|
|
48
|
+
: await progressTracker.sendThinking(event.chat_id);
|
|
49
|
+
let reactionId = null;
|
|
50
|
+
if (deps.streamingBridge) {
|
|
51
|
+
try {
|
|
52
|
+
const reactionResult = await feishuClient.addReaction(event.message_id, "Typing");
|
|
53
|
+
reactionId = reactionResult?.data?.reaction_id ?? null;
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
logger.warn(`addReaction failed: ${err}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// ── 6. Get/create session ──
|
|
60
|
+
const sessionId = await sessionManager.getOrCreate(feishuKey);
|
|
61
|
+
ownedSessions.add(sessionId);
|
|
62
|
+
// ── 6a. First-bind notification ──
|
|
63
|
+
if (!notifiedFeishuKeys.has(feishuKey)) {
|
|
64
|
+
notifiedFeishuKeys.add(feishuKey);
|
|
65
|
+
await feishuClient.sendMessage(event.chat_id, {
|
|
66
|
+
msg_type: "text",
|
|
67
|
+
content: JSON.stringify({ text: "已连接 session: " + sessionId }),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
// ── 6b. Wire observer ──
|
|
71
|
+
if (deps.observer) {
|
|
72
|
+
deps.observer.observe(sessionId, event.chat_id);
|
|
73
|
+
}
|
|
74
|
+
// ── 7. Memory search + build parts ──
|
|
75
|
+
const memoryResults = memoryManager.searchMemory(userText);
|
|
76
|
+
const memoryContext = memoryResults.length > 0
|
|
77
|
+
? memoryResults.map((r) => r.snippet).join("\n")
|
|
78
|
+
: "";
|
|
79
|
+
const parts = [];
|
|
80
|
+
if (memoryContext) {
|
|
81
|
+
parts.push({
|
|
82
|
+
type: "text",
|
|
83
|
+
text: `[Memory Context]\n${memoryContext}\n\n[User Message]\n${userText}`,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
parts.push({ type: "text", text: userText });
|
|
88
|
+
}
|
|
89
|
+
// ── 8. Build the POST-to-opencode function ──
|
|
90
|
+
const promptUrl = `${serverUrl}/session/${sessionId}/message`;
|
|
91
|
+
const postBody = JSON.stringify({ parts });
|
|
92
|
+
async function postToOpencode() {
|
|
93
|
+
const resp = await fetch(promptUrl, {
|
|
94
|
+
method: "POST",
|
|
95
|
+
headers: { "Content-Type": "application/json" },
|
|
96
|
+
body: postBody,
|
|
97
|
+
});
|
|
98
|
+
if (!resp.ok) {
|
|
99
|
+
throw new Error(`Prompt HTTP error: ${resp.status}`);
|
|
100
|
+
}
|
|
101
|
+
const rawText = await resp.text();
|
|
102
|
+
logger.info(`Prompt response (${rawText.length} bytes): ${rawText.slice(0, 200)}`);
|
|
103
|
+
return rawText;
|
|
104
|
+
}
|
|
105
|
+
// ── 9. Try streaming bridge (registers listener BEFORE POST) → sync fallback ──
|
|
106
|
+
if (deps.streamingBridge) {
|
|
107
|
+
// Register ownership listener to mark Feishu-initiated messageIds
|
|
108
|
+
let ownershipListener = null;
|
|
109
|
+
if (deps.observer) {
|
|
110
|
+
ownershipListener = (rawEvent) => {
|
|
111
|
+
const props = rawEvent && typeof rawEvent === "object" ? rawEvent.properties : null;
|
|
112
|
+
if (!props || typeof props !== "object")
|
|
113
|
+
return;
|
|
114
|
+
const p = props;
|
|
115
|
+
const part = p.part;
|
|
116
|
+
const mid = part && typeof part === "object" ? part.messageID : p.messageID;
|
|
117
|
+
if (typeof mid === "string")
|
|
118
|
+
deps.observer.markOwned(mid);
|
|
119
|
+
};
|
|
120
|
+
addListener(eventListeners, sessionId, ownershipListener);
|
|
121
|
+
}
|
|
122
|
+
try {
|
|
123
|
+
await deps.streamingBridge.handleMessage(event.chat_id, sessionId, eventListeners, eventProcessor, postToOpencode, (responseText) => {
|
|
124
|
+
if (ownershipListener)
|
|
125
|
+
removeListener(eventListeners, sessionId, ownershipListener);
|
|
126
|
+
memoryManager.saveMemory(sessionId, `Q: ${userText}\nA: ${responseText.slice(0, 500)}`);
|
|
127
|
+
}, event.message_id, reactionId);
|
|
128
|
+
logger.info(`Response sent for session ${sessionId} (streaming bridge)`);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
if (ownershipListener)
|
|
133
|
+
removeListener(eventListeners, sessionId, ownershipListener);
|
|
134
|
+
logger.warn(`Streaming bridge failed, falling back to sync: ${err}`);
|
|
135
|
+
if (reactionId) {
|
|
136
|
+
await feishuClient.deleteReaction(event.message_id, reactionId).catch(() => { });
|
|
137
|
+
}
|
|
138
|
+
try {
|
|
139
|
+
const rawText = await postToOpencode();
|
|
140
|
+
await handleSyncFallback(rawText, sessionId, userText, event, thinkingMessageId);
|
|
141
|
+
}
|
|
142
|
+
catch (postErr) {
|
|
143
|
+
logger.error(`Sync fallback POST also failed: ${postErr}`);
|
|
144
|
+
const errorMessage = "处理请求时出错了。";
|
|
145
|
+
await feishuClient.replyMessage(event.message_id, {
|
|
146
|
+
msg_type: "text",
|
|
147
|
+
content: JSON.stringify({ text: errorMessage }),
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
logger.info(`Response sent for session ${sessionId} (sync fallback)`);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// No streaming bridge — direct POST then event-driven → sync fallback
|
|
155
|
+
let rawText;
|
|
156
|
+
try {
|
|
157
|
+
rawText = await postToOpencode();
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
logger.error(`POST to opencode failed: ${err}`);
|
|
161
|
+
if (thinkingMessageId) {
|
|
162
|
+
await progressTracker.updateWithError(thinkingMessageId, "处理请求时出错了。");
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
await feishuClient.sendMessage(event.chat_id, {
|
|
166
|
+
msg_type: "text",
|
|
167
|
+
content: JSON.stringify({ text: "抱歉,处理请求时出错了。" }),
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
// Register ownership listener for event-driven path
|
|
173
|
+
let ownershipListenerEd = null;
|
|
174
|
+
if (deps.observer) {
|
|
175
|
+
ownershipListenerEd = (rawEvent) => {
|
|
176
|
+
const props = rawEvent && typeof rawEvent === "object" ? rawEvent.properties : null;
|
|
177
|
+
if (!props || typeof props !== "object")
|
|
178
|
+
return;
|
|
179
|
+
const p = props;
|
|
180
|
+
const part = p.part;
|
|
181
|
+
const mid = part && typeof part === "object" ? part.messageID : p.messageID;
|
|
182
|
+
if (typeof mid === "string")
|
|
183
|
+
deps.observer.markOwned(mid);
|
|
184
|
+
};
|
|
185
|
+
addListener(eventListeners, sessionId, ownershipListenerEd);
|
|
186
|
+
}
|
|
187
|
+
try {
|
|
188
|
+
await waitForEventDrivenResponse(sessionId, userText, event, thinkingMessageId);
|
|
189
|
+
}
|
|
190
|
+
catch (err) {
|
|
191
|
+
logger.warn(`Event-driven flow failed, falling back to sync: ${err}`);
|
|
192
|
+
await handleSyncFallback(rawText, sessionId, userText, event, thinkingMessageId);
|
|
193
|
+
}
|
|
194
|
+
finally {
|
|
195
|
+
if (ownershipListenerEd)
|
|
196
|
+
removeListener(eventListeners, sessionId, ownershipListenerEd);
|
|
197
|
+
}
|
|
198
|
+
logger.info(`Response sent for session ${sessionId}`);
|
|
199
|
+
};
|
|
200
|
+
// ── Event-driven flow ──
|
|
201
|
+
async function waitForEventDrivenResponse(sessionId, userText, event, thinkingMessageId) {
|
|
202
|
+
return new Promise((resolve, reject) => {
|
|
203
|
+
let textBuffer = "";
|
|
204
|
+
let settled = false;
|
|
205
|
+
const myListener = (rawEvent) => {
|
|
206
|
+
const action = eventProcessor.processEvent(rawEvent);
|
|
207
|
+
if (!action)
|
|
208
|
+
return;
|
|
209
|
+
if (action.sessionId !== sessionId)
|
|
210
|
+
return;
|
|
211
|
+
switch (action.type) {
|
|
212
|
+
case "TextDelta":
|
|
213
|
+
textBuffer += action.text;
|
|
214
|
+
break;
|
|
215
|
+
case "SessionIdle": {
|
|
216
|
+
if (settled)
|
|
217
|
+
return;
|
|
218
|
+
settled = true;
|
|
219
|
+
cleanup();
|
|
220
|
+
const responseText = textBuffer.trim() || "(无回复)";
|
|
221
|
+
// Save memory + send response
|
|
222
|
+
memoryManager.saveMemory(sessionId, `Q: ${userText}\nA: ${responseText.slice(0, 500)}`);
|
|
223
|
+
sendResponse(responseText, event, thinkingMessageId)
|
|
224
|
+
.then(resolve)
|
|
225
|
+
.catch(reject);
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
default:
|
|
229
|
+
break;
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
// Timeout guard
|
|
233
|
+
const timer = setTimeout(() => {
|
|
234
|
+
if (settled)
|
|
235
|
+
return;
|
|
236
|
+
settled = true;
|
|
237
|
+
cleanup();
|
|
238
|
+
reject(new Error(`Event-driven flow timed out after ${EVENT_TIMEOUT_MS}ms`));
|
|
239
|
+
}, EVENT_TIMEOUT_MS);
|
|
240
|
+
function cleanup() {
|
|
241
|
+
clearTimeout(timer);
|
|
242
|
+
removeListener(eventListeners, sessionId, myListener);
|
|
243
|
+
}
|
|
244
|
+
// Register listener keyed by sessionId
|
|
245
|
+
addListener(eventListeners, sessionId, myListener);
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
// ── Sync fallback (existing behavior) ──
|
|
249
|
+
async function handleSyncFallback(rawText, sessionId, userText, event, thinkingMessageId) {
|
|
250
|
+
if (!rawText.trim()) {
|
|
251
|
+
logger.error("Empty response body from opencode server");
|
|
252
|
+
if (thinkingMessageId) {
|
|
253
|
+
await progressTracker.updateWithError(thinkingMessageId, "服务器返回了空响应。");
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
await feishuClient.sendMessage(event.chat_id, {
|
|
257
|
+
msg_type: "text",
|
|
258
|
+
content: JSON.stringify({ text: "抱歉,服务器返回了空响应。" }),
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
let promptData = {};
|
|
264
|
+
try {
|
|
265
|
+
promptData = JSON.parse(rawText);
|
|
266
|
+
}
|
|
267
|
+
catch (e) {
|
|
268
|
+
logger.error(`Failed to parse prompt response: ${e}`);
|
|
269
|
+
logger.error(`Raw response: ${rawText.slice(0, 500)}`);
|
|
270
|
+
}
|
|
271
|
+
logger.info(`Prompt parts count: ${promptData.parts?.length ?? 0}`);
|
|
272
|
+
const responseText = promptData.parts
|
|
273
|
+
?.filter((p) => p.type === "text" && p.text)
|
|
274
|
+
.map((p) => p.text ?? "")
|
|
275
|
+
.join("\n")
|
|
276
|
+
.trim() || "(无回复)";
|
|
277
|
+
memoryManager.saveMemory(sessionId, `Q: ${userText}\nA: ${responseText.slice(0, 500)}`);
|
|
278
|
+
await sendResponse(responseText, event, thinkingMessageId);
|
|
279
|
+
}
|
|
280
|
+
// ── Shared response sender ──
|
|
281
|
+
async function sendResponse(responseText, event, thinkingMessageId) {
|
|
282
|
+
if (thinkingMessageId) {
|
|
283
|
+
await progressTracker.updateWithResponse(thinkingMessageId, responseText);
|
|
284
|
+
}
|
|
285
|
+
else if (event.chat_type === "p2p") {
|
|
286
|
+
const truncated = responseText.length > 4000
|
|
287
|
+
? responseText.slice(0, 4000) + "\n\n...(truncated)"
|
|
288
|
+
: responseText;
|
|
289
|
+
await feishuClient.sendMessage(event.chat_id, {
|
|
290
|
+
msg_type: "text",
|
|
291
|
+
content: JSON.stringify({ text: truncated }),
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
const truncated = responseText.length > 4000
|
|
296
|
+
? responseText.slice(0, 4000) + "\n\n...(truncated)"
|
|
297
|
+
: responseText;
|
|
298
|
+
await feishuClient.replyMessage(event.message_id, {
|
|
299
|
+
msg_type: "text",
|
|
300
|
+
content: JSON.stringify({ text: truncated }),
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=message-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-handler.js","sourceRoot":"","sources":["../../src/handler/message-handler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAmBzE,kBAAkB;AAElB,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA,CAAC,YAAY;AAEnD,gBAAgB;AAEhB,MAAM,UAAU,oBAAoB,CAClC,IAAiB;IAEjB,MAAM,EACJ,SAAS,EACT,cAAc,EACd,aAAa,EACb,KAAK,EACL,cAAc,EACd,YAAY,EACZ,eAAe,EACf,cAAc,EACd,aAAa,EACb,MAAM,GACP,GAAG,IAAI,CAAA;IACR,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAA;IAE5C,OAAO,KAAK,UAAU,aAAa,CACjC,KAAyB;QAEzB,uBAAuB;QACvB,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,OAAM;QACR,CAAC;QAED,kCAAkC;QAClC,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;YAC1C,MAAM,CAAC,KAAK,CACV,8BAA8B,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,CAC3D,CAAA;YACD,OAAM;QACR,CAAC;QAED,2BAA2B;QAC3B,IAAI,QAAgB,CAAA;QACpB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAsB,CAAA;YACrE,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAA;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAA;QAClC,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAAE,OAAM;QAE5B,6BAA6B;QAC7B,MAAM,SAAS,GACb,KAAK,CAAC,SAAS,KAAK,KAAK;YACvB,CAAC,CAAC,KAAK,CAAC,OAAO;YACf,CAAC,CAAC,KAAK,CAAC,OAAO;gBACb,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;gBACrC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,CAAA;QAE9C,MAAM,CAAC,IAAI,CAAC,gBAAgB,SAAS,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;QAErE,mCAAmC;QACnC,6DAA6D;QAC7D,gEAAgE;QAChE,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe;YAC5C,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,MAAM,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACrD,IAAI,UAAU,GAAkB,IAAI,CAAA;QACpC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;gBACjF,UAAU,GAAI,cAAc,EAAE,IAAI,EAAE,WAAsB,IAAI,IAAI,CAAA;YACpE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;QAC7D,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC5B,oCAAoC;QACpC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACjC,MAAM,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE;gBAC5C,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,eAAe,GAAG,SAAS,EAAE,CAAC;aAC/D,CAAC,CAAA;QACJ,CAAC;QAED,0BAA0B;QAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;QACjD,CAAC;QAED,uCAAuC;QACvC,MAAM,aAAa,GAAG,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QAC1D,MAAM,aAAa,GACjB,aAAa,CAAC,MAAM,GAAG,CAAC;YACtB,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAChD,CAAC,CAAC,EAAE,CAAA;QAER,MAAM,KAAK,GAA0C,EAAE,CAAA;QACvD,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,qBAAqB,aAAa,uBAAuB,QAAQ,EAAE;aAC1E,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC9C,CAAC;QAED,+CAA+C;QAC/C,MAAM,SAAS,GAAG,GAAG,SAAS,YAAY,SAAS,UAAU,CAAA;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QAE1C,KAAK,UAAU,cAAc;YAC3B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;gBAClC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,QAAQ;aACf,CAAC,CAAA;YACF,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;YACtD,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;YACjC,MAAM,CAAC,IAAI,CACT,oBAAoB,OAAO,CAAC,MAAM,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACtE,CAAA;YACD,OAAO,OAAO,CAAA;QAChB,CAAC;QAED,iFAAiF;QACjF,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,kEAAkE;YAClE,IAAI,iBAAiB,GAAsC,IAAI,CAAA;YAC/D,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,iBAAiB,GAAG,CAAC,QAAiB,EAAQ,EAAE;oBAC9C,MAAM,KAAK,GAAG,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAE,QAAoC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA;oBAChH,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;wBAAE,OAAM;oBAC/C,MAAM,CAAC,GAAG,KAAgC,CAAA;oBAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAA;oBACnB,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAgC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;oBACxG,IAAI,OAAO,GAAG,KAAK,QAAQ;wBAAE,IAAI,CAAC,QAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;gBAC5D,CAAC,CAAA;gBACD,WAAW,CAAC,cAAc,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAA;YAC3D,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CACtC,KAAK,CAAC,OAAO,EACb,SAAS,EACT,cAAc,EACd,cAAc,EACd,cAAc,EACd,CAAC,YAAoB,EAAE,EAAE;oBACvB,IAAI,iBAAiB;wBAAE,cAAc,CAAC,cAAc,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAA;oBACnF,aAAa,CAAC,UAAU,CACtB,SAAS,EACT,MAAM,QAAQ,QAAQ,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACnD,CAAA;gBACH,CAAC,EACD,KAAK,CAAC,UAAU,EAChB,UAAU,CACX,CAAA;gBACD,MAAM,CAAC,IAAI,CAAC,6BAA6B,SAAS,qBAAqB,CAAC,CAAA;gBACxE,OAAM;YACR,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,iBAAiB;oBAAE,cAAc,CAAC,cAAc,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAA;gBACnF,MAAM,CAAC,IAAI,CACT,kDAAkD,GAAG,EAAE,CACxD,CAAA;gBACD,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;gBACjF,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,cAAc,EAAE,CAAA;oBACtC,MAAM,kBAAkB,CACtB,OAAO,EACP,SAAS,EACT,QAAQ,EACR,KAAK,EACL,iBAAiB,CAClB,CAAA;gBACH,CAAC;gBAAC,OAAO,OAAO,EAAE,CAAC;oBACjB,MAAM,CAAC,KAAK,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAA;oBAC1D,MAAM,YAAY,GAAG,WAAW,CAAA;oBAChC,MAAM,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE;wBAChD,QAAQ,EAAE,MAAM;wBAChB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;qBAChD,CAAC,CAAA;gBACJ,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,6BAA6B,SAAS,kBAAkB,CAAC,CAAA;gBACrE,OAAM;YACR,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,IAAI,OAAe,CAAA;QACnB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,cAAc,EAAE,CAAA;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAA;YAC/C,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,eAAe,CAAC,eAAe,CACnC,iBAAiB,EACjB,WAAW,CACZ,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE;oBAC5C,QAAQ,EAAE,MAAM;oBAChB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;iBAClD,CAAC,CAAA;YACJ,CAAC;YACD,OAAM;QACR,CAAC;QAED,oDAAoD;QACpD,IAAI,mBAAmB,GAAsC,IAAI,CAAA;QACjE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,mBAAmB,GAAG,CAAC,QAAiB,EAAQ,EAAE;gBAChD,MAAM,KAAK,GAAG,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAE,QAAoC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA;gBAChH,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAAE,OAAM;gBAC/C,MAAM,CAAC,GAAG,KAAgC,CAAA;gBAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAA;gBACnB,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAgC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBACxG,IAAI,OAAO,GAAG,KAAK,QAAQ;oBAAE,IAAI,CAAC,QAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YAC5D,CAAC,CAAA;YACD,WAAW,CAAC,cAAc,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAA;QAC7D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,0BAA0B,CAC9B,SAAS,EACT,QAAQ,EACR,KAAK,EACL,iBAAiB,CAClB,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CACT,mDAAmD,GAAG,EAAE,CACzD,CAAA;YACD,MAAM,kBAAkB,CACtB,OAAO,EACP,SAAS,EACT,QAAQ,EACR,KAAK,EACL,iBAAiB,CAClB,CAAA;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,mBAAmB;gBAAE,cAAc,CAAC,cAAc,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAA;QACzF,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAA;IACvD,CAAC,CAAA;IAED,0BAA0B;IAE1B,KAAK,UAAU,0BAA0B,CACvC,SAAiB,EACjB,QAAgB,EAChB,KAAyB,EACzB,iBAAgC;QAEhC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,UAAU,GAAG,EAAE,CAAA;YACnB,IAAI,OAAO,GAAG,KAAK,CAAA;YAEnB,MAAM,UAAU,GAAG,CAAC,QAAiB,EAAQ,EAAE;gBAC7C,MAAM,MAAM,GAAG,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;gBACpD,IAAI,CAAC,MAAM;oBAAE,OAAM;gBACnB,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;oBAAE,OAAM;gBAE1C,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;oBACpB,KAAK,WAAW;wBACd,UAAU,IAAI,MAAM,CAAC,IAAI,CAAA;wBACzB,MAAK;oBAEP,KAAK,aAAa,CAAC,CAAC,CAAC;wBACnB,IAAI,OAAO;4BAAE,OAAM;wBACnB,OAAO,GAAG,IAAI,CAAA;wBACd,OAAO,EAAE,CAAA;wBAET,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,OAAO,CAAA;wBAEjD,8BAA8B;wBAC9B,aAAa,CAAC,UAAU,CACtB,SAAS,EACT,MAAM,QAAQ,QAAQ,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACnD,CAAA;wBAED,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,iBAAiB,CAAC;6BACjD,IAAI,CAAC,OAAO,CAAC;6BACb,KAAK,CAAC,MAAM,CAAC,CAAA;wBAChB,MAAK;oBACP,CAAC;oBAGD;wBACE,MAAK;gBACT,CAAC;YACH,CAAC,CAAA;YAED,gBAAgB;YAChB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,OAAO;oBAAE,OAAM;gBACnB,OAAO,GAAG,IAAI,CAAA;gBACd,OAAO,EAAE,CAAA;gBACT,MAAM,CACJ,IAAI,KAAK,CACP,qCAAqC,gBAAgB,IAAI,CAC1D,CACF,CAAA;YACH,CAAC,EAAE,gBAAgB,CAAC,CAAA;YAEpB,SAAS,OAAO;gBACd,YAAY,CAAC,KAAK,CAAC,CAAA;gBACnB,cAAc,CAAC,cAAc,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;YACvD,CAAC;YAED,uCAAuC;YACvC,WAAW,CAAC,cAAc,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;QACpD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,0CAA0C;IAE1C,KAAK,UAAU,kBAAkB,CAC/B,OAAe,EACf,SAAiB,EACjB,QAAgB,EAChB,KAAyB,EACzB,iBAAgC;QAEhC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAA;YACxD,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,eAAe,CAAC,eAAe,CACnC,iBAAiB,EACjB,YAAY,CACb,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE;oBAC5C,QAAQ,EAAE,MAAM;oBAChB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;iBACnD,CAAC,CAAA;YACJ,CAAC;YACD,OAAM;QACR,CAAC;QAED,IAAI,UAAU,GAAuD,EAAE,CAAA;QACvE,IAAI,CAAC;YACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAClC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,EAAE,CAAC,CAAA;YACrD,MAAM,CAAC,KAAK,CAAC,iBAAiB,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;QACxD,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,uBAAuB,UAAU,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,CAAA;QAEnE,MAAM,YAAY,GAChB,UAAU,CAAC,KAAK;YACd,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC;aAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;aACxB,IAAI,CAAC,IAAI,CAAC;aACV,IAAI,EAAE,IAAI,OAAO,CAAA;QAEtB,aAAa,CAAC,UAAU,CACtB,SAAS,EACT,MAAM,QAAQ,QAAQ,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACnD,CAAA;QAED,MAAM,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAA;IAC5D,CAAC;IAED,+BAA+B;IAE/B,KAAK,UAAU,YAAY,CACzB,YAAoB,EACpB,KAAyB,EACzB,iBAAgC;QAEhC,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,eAAe,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAA;QAC3E,CAAC;aAAM,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YACrC,MAAM,SAAS,GACb,YAAY,CAAC,MAAM,GAAG,IAAI;gBACxB,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,oBAAoB;gBACpD,CAAC,CAAC,YAAY,CAAA;YAClB,MAAM,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE;gBAC5C,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;aAC7C,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GACb,YAAY,CAAC,MAAM,GAAG,IAAI;gBACxB,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,oBAAoB;gBACpD,CAAC,CAAC,YAAY,CAAA;YAClB,MAAM,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE;gBAChD,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;aAC7C,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { CardKitClient } from "../feishu/cardkit-client.js";
|
|
2
|
+
import type { FeishuApiClient } from "../feishu/api-client.js";
|
|
3
|
+
import type { SubAgentTracker } from "../streaming/subagent-tracker.js";
|
|
4
|
+
import type { Logger } from "../utils/logger.js";
|
|
5
|
+
import type { EventProcessor } from "../streaming/event-processor.js";
|
|
6
|
+
import type { QuestionAsked, PermissionRequested } from "../streaming/event-processor.js";
|
|
7
|
+
import type { EventListenerMap } from "../utils/event-listeners.js";
|
|
8
|
+
export interface StreamingBridgeDeps {
|
|
9
|
+
cardkitClient: CardKitClient;
|
|
10
|
+
feishuClient: FeishuApiClient;
|
|
11
|
+
subAgentTracker: SubAgentTracker;
|
|
12
|
+
logger: Logger;
|
|
13
|
+
seenInteractiveIds: Set<string>;
|
|
14
|
+
}
|
|
15
|
+
export interface StreamingBridge {
|
|
16
|
+
handleMessage(chatId: string, sessionId: string, eventListeners: EventListenerMap, eventProcessor: EventProcessor, sendMessage: () => Promise<string>, onComplete: (text: string) => void, messageId: string, reactionId: string | null): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export declare function createStreamingBridge(deps: StreamingBridgeDeps): StreamingBridge;
|
|
19
|
+
export declare function buildQuestionCard(action: QuestionAsked): Record<string, unknown>;
|
|
20
|
+
export declare function buildPermissionCard(action: PermissionRequested): Record<string, unknown>;
|
|
21
|
+
//# sourceMappingURL=streaming-integration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming-integration.d.ts","sourceRoot":"","sources":["../../src/handler/streaming-integration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AACzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAMnE,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,aAAa,CAAA;IAC5B,YAAY,EAAE,eAAe,CAAA;IAC7B,eAAe,EAAE,eAAe,CAAA;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,CACX,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,gBAAgB,EAChC,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAClC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAClC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,IAAI,CAAC,CAAA;CACjB;AASD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,mBAAmB,GACxB,eAAe,CAmOjB;AAsDD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,aAAa,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsCzB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,mBAAmB,GAC1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqCzB"}
|