opencode-feishu 0.7.1 → 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 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: err instanceof Error ? err.message : String(err)
99488
+ error: thrownError,
99489
+ ...sessionError ? { sessionError } : {}
99453
99490
  });
99454
- const msg = "\u274C " + (err instanceof Error ? err.message : String(err));
99491
+ const msg = "\u274C " + errorMessage;
99455
99492
  await replyOrUpdate(feishuClient, chatId, placeholderId, msg);
99456
99493
  } finally {
99457
99494
  done = true;