opencode-feishu 0.7.0 → 0.7.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.
- package/dist/index.js +45 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -99269,6 +99269,32 @@ async function forkSession(client, oldSessionId, sessionKey, directory) {
|
|
|
99269
99269
|
|
|
99270
99270
|
// src/handler/event.ts
|
|
99271
99271
|
var pendingBySession = /* @__PURE__ */ new Map();
|
|
99272
|
+
var sessionErrors = /* @__PURE__ */ new Map();
|
|
99273
|
+
var sessionErrorTimeouts = /* @__PURE__ */ new Map();
|
|
99274
|
+
var SESSION_ERROR_TTL_MS = 3e4;
|
|
99275
|
+
function getSessionError(sessionId) {
|
|
99276
|
+
return sessionErrors.get(sessionId);
|
|
99277
|
+
}
|
|
99278
|
+
function clearSessionError(sessionId) {
|
|
99279
|
+
const timer = sessionErrorTimeouts.get(sessionId);
|
|
99280
|
+
if (timer) {
|
|
99281
|
+
clearTimeout(timer);
|
|
99282
|
+
sessionErrorTimeouts.delete(sessionId);
|
|
99283
|
+
}
|
|
99284
|
+
sessionErrors.delete(sessionId);
|
|
99285
|
+
}
|
|
99286
|
+
function setSessionError(sessionId, errMsg) {
|
|
99287
|
+
const existing = sessionErrorTimeouts.get(sessionId);
|
|
99288
|
+
if (existing) {
|
|
99289
|
+
clearTimeout(existing);
|
|
99290
|
+
}
|
|
99291
|
+
sessionErrors.set(sessionId, errMsg);
|
|
99292
|
+
const timeoutId = setTimeout(() => {
|
|
99293
|
+
sessionErrors.delete(sessionId);
|
|
99294
|
+
sessionErrorTimeouts.delete(sessionId);
|
|
99295
|
+
}, SESSION_ERROR_TTL_MS);
|
|
99296
|
+
sessionErrorTimeouts.set(sessionId, timeoutId);
|
|
99297
|
+
}
|
|
99272
99298
|
function registerPending(sessionId, payload) {
|
|
99273
99299
|
pendingBySession.set(sessionId, { ...payload, textBuffer: "" });
|
|
99274
99300
|
}
|
|
@@ -99314,6 +99340,7 @@ async function handleEvent(event, deps) {
|
|
|
99314
99340
|
const sessionId = props.sessionID;
|
|
99315
99341
|
if (!sessionId) break;
|
|
99316
99342
|
const errMsg = props.error?.message ?? String(props.error);
|
|
99343
|
+
setSessionError(sessionId, errMsg);
|
|
99317
99344
|
if (isModelError(errMsg)) {
|
|
99318
99345
|
const sessionKey = invalidateCachedSession(sessionId);
|
|
99319
99346
|
if (sessionKey) {
|
|
@@ -99335,12 +99362,6 @@ async function handleEvent(event, deps) {
|
|
|
99335
99362
|
}
|
|
99336
99363
|
}
|
|
99337
99364
|
}
|
|
99338
|
-
const payload = pendingBySession.get(sessionId);
|
|
99339
|
-
if (!payload) break;
|
|
99340
|
-
const updateRes = await updateMessage(payload.feishuClient, payload.placeholderId, `\u274C \u4F1A\u8BDD\u9519\u8BEF: ${errMsg}`);
|
|
99341
|
-
if (!updateRes.ok) {
|
|
99342
|
-
await sendTextMessage(payload.feishuClient, payload.chatId, `\u274C \u4F1A\u8BDD\u9519\u8BEF: ${errMsg}`);
|
|
99343
|
-
}
|
|
99344
99365
|
break;
|
|
99345
99366
|
}
|
|
99346
99367
|
}
|
|
@@ -99354,6 +99375,7 @@ function extractPartText(part) {
|
|
|
99354
99375
|
}
|
|
99355
99376
|
|
|
99356
99377
|
// src/handler/chat.ts
|
|
99378
|
+
var SSE_RACE_WAIT_MS = 100;
|
|
99357
99379
|
var activeAutoPrompts = /* @__PURE__ */ new Map();
|
|
99358
99380
|
async function handleChat(ctx, deps) {
|
|
99359
99381
|
const { content, chatId, chatType, senderId, shouldReply, messageType, rawContent, messageId } = ctx;
|
|
@@ -99370,6 +99392,15 @@ async function handleChat(ctx, deps) {
|
|
|
99370
99392
|
const session = await getOrCreateSession(client, sessionKey, directory);
|
|
99371
99393
|
const parts = await buildPromptParts(feishuClient, messageId, messageType, rawContent, content, chatType, senderId, log);
|
|
99372
99394
|
if (!parts.length) return;
|
|
99395
|
+
log("info", "\u6536\u5230\u7528\u6237\u6D88\u606F", {
|
|
99396
|
+
sessionKey,
|
|
99397
|
+
sessionId: session.id,
|
|
99398
|
+
chatType,
|
|
99399
|
+
senderId,
|
|
99400
|
+
messageType,
|
|
99401
|
+
shouldReply,
|
|
99402
|
+
parts
|
|
99403
|
+
});
|
|
99373
99404
|
if (!shouldReply) {
|
|
99374
99405
|
try {
|
|
99375
99406
|
await client.session.prompt({
|
|
@@ -99448,10 +99479,16 @@ async function handleChat(ctx, deps) {
|
|
|
99448
99479
|
}
|
|
99449
99480
|
}
|
|
99450
99481
|
} catch (err) {
|
|
99482
|
+
await new Promise((r) => setTimeout(r, SSE_RACE_WAIT_MS));
|
|
99483
|
+
const sessionError = getSessionError(session.id);
|
|
99484
|
+
clearSessionError(session.id);
|
|
99485
|
+
const thrownError = err instanceof Error ? err.message : String(err);
|
|
99486
|
+
const errorMessage = sessionError || thrownError;
|
|
99451
99487
|
log("error", "\u5BF9\u8BDD\u5904\u7406\u5931\u8D25", {
|
|
99452
|
-
error:
|
|
99488
|
+
error: thrownError,
|
|
99489
|
+
...sessionError ? { sessionError } : {}
|
|
99453
99490
|
});
|
|
99454
|
-
const msg = "\u274C " +
|
|
99491
|
+
const msg = "\u274C " + errorMessage;
|
|
99455
99492
|
await replyOrUpdate(feishuClient, chatId, placeholderId, msg);
|
|
99456
99493
|
} finally {
|
|
99457
99494
|
done = true;
|