codex-to-im 1.0.51 → 1.0.52

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 (2) hide show
  1. package/dist/daemon.mjs +15 -2
  2. package/package.json +1 -1
package/dist/daemon.mjs CHANGED
@@ -1417,6 +1417,7 @@ var DEDUP_MAX = 1e3;
1417
1417
  var MAX_FILE_SIZE = 20 * 1024 * 1024;
1418
1418
  var COMPLETED_EMOJI = "DONE";
1419
1419
  var ERROR_EMOJI = "ERROR";
1420
+ var CARD_TERMINAL_REACTION_DELAY_MS = 2e3;
1420
1421
  var CARD_THROTTLE_MS = 1e3;
1421
1422
  var CARD_REQUEST_TIMEOUT_MS = 15e3;
1422
1423
  var CARD_FINALIZE_FLUSH_WAIT_EXTRA_MS = 1e3;
@@ -1496,6 +1497,7 @@ var FeishuAdapter = class extends BaseChannelAdapter {
1496
1497
  cardRequestTimeoutMs = CARD_REQUEST_TIMEOUT_MS;
1497
1498
  cardFinalizeFlushWaitExtraMs = CARD_FINALIZE_FLUSH_WAIT_EXTRA_MS;
1498
1499
  cardFullRefreshIntervalMs = CARD_FULL_REFRESH_INTERVAL_MS;
1500
+ cardTerminalReactionDelayMs = CARD_TERMINAL_REACTION_DELAY_MS;
1499
1501
  constructor(instance) {
1500
1502
  super();
1501
1503
  this.channelType = instance?.id || "feishu";
@@ -2004,11 +2006,13 @@ ${trimmedResponse}`;
2004
2006
  sequence: state.sequence
2005
2007
  }
2006
2008
  }));
2009
+ this.activeCards.delete(cardKey);
2010
+ console.log(`[feishu-adapter] Card finalized: streamKey=${cardKey}, cardId=${state.cardId}, status=${status}, elapsed=${formatElapsed(elapsedMs)}`);
2007
2011
  const terminalReactionEmoji = status === "completed" ? COMPLETED_EMOJI : status === "error" ? ERROR_EMOJI : null;
2008
- if (terminalReactionEmoji) {
2012
+ if (terminalReactionEmoji && this.hasTerminalReactionApi()) {
2013
+ await this.waitBeforeTerminalReaction();
2009
2014
  await this.addTerminalReaction(cardKey, state.messageId, terminalReactionEmoji);
2010
2015
  }
2011
- console.log(`[feishu-adapter] Card finalized: streamKey=${cardKey}, cardId=${state.cardId}, status=${status}, elapsed=${formatElapsed(elapsedMs)}`);
2012
2016
  return true;
2013
2017
  } catch (err) {
2014
2018
  console.warn("[feishu-adapter] Card finalize failed:", err instanceof Error ? err.message : err);
@@ -2017,6 +2021,15 @@ ${trimmedResponse}`;
2017
2021
  this.activeCards.delete(cardKey);
2018
2022
  }
2019
2023
  }
2024
+ hasTerminalReactionApi() {
2025
+ const messageReaction = this.restClient?.im?.messageReaction;
2026
+ return typeof messageReaction?.create === "function";
2027
+ }
2028
+ async waitBeforeTerminalReaction() {
2029
+ const delayMs = Math.max(0, this.cardTerminalReactionDelayMs);
2030
+ if (delayMs <= 0) return;
2031
+ await new Promise((resolve2) => setTimeout(resolve2, delayMs));
2032
+ }
2020
2033
  async addTerminalReaction(streamKey, messageId, emojiType) {
2021
2034
  const messageReaction = this.restClient?.im?.messageReaction;
2022
2035
  if (typeof messageReaction?.create !== "function") return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-to-im",
3
- "version": "1.0.51",
3
+ "version": "1.0.52",
4
4
  "description": "Installable Codex-to-IM bridge with local setup UI and background service",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/zhangle1987/codex-to-im#readme",