@vibe-lark/larkpal 0.1.80 → 0.1.81

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/main.mjs +25 -3
  2. package/package.json +1 -1
package/dist/main.mjs CHANGED
@@ -22,7 +22,6 @@ import { pipeline } from "node:stream/promises";
22
22
  import { PassThrough, Readable, Transform } from "node:stream";
23
23
  import express, { Router } from "express";
24
24
  import Busboy from "busboy";
25
- import { EventEmitter as EventEmitter$1 } from "events";
26
25
  import cron from "node-cron";
27
26
  import * as Lark from "@larksuiteoapi/node-sdk";
28
27
  import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
@@ -7794,13 +7793,17 @@ const sessionNoReplyFlags = /* @__PURE__ */ new Map();
7794
7793
  /** TTL: 30 分钟 */
7795
7794
  const TTL_MS = 1800 * 1e3;
7796
7795
  /** 定期清理过期的 pending requests(每 5 分钟检查一次) */
7797
- setInterval(() => {
7796
+ function cleanupExpiredPendingRequests() {
7798
7797
  const now = Date.now();
7799
7798
  let cleaned = 0;
7800
7799
  for (const [id, req] of pendingRequests) if (now - req.createdAt > TTL_MS) {
7801
7800
  pendingRequests.delete(id);
7802
7801
  cleaned++;
7803
7802
  }
7803
+ return cleaned;
7804
+ }
7805
+ setInterval(() => {
7806
+ const cleaned = cleanupExpiredPendingRequests();
7804
7807
  if (cleaned > 0) logger$4.info("TTL cleanup completed", {
7805
7808
  cleaned,
7806
7809
  remaining: pendingRequests.size
@@ -7811,7 +7814,7 @@ setInterval(() => {
7811
7814
  * 事件名: `callback:${sessionId}`,payload 为 PendingMcpRequest。
7812
7815
  * 用于 dispatch-cc 订阅并在收到 ask_user/request_permission 回调时发送飞书卡片。
7813
7816
  */
7814
- const onMcpCallback = new EventEmitter$1();
7817
+ const onMcpCallback = new EventEmitter();
7815
7818
  onMcpCallback.setMaxListeners(100);
7816
7819
  /**
7817
7820
  * 将 result 存入对应的 pending request
@@ -7943,6 +7946,25 @@ function createMcpCallbackRouter() {
7943
7946
  requestId
7944
7947
  });
7945
7948
  });
7949
+ router.get("/pending", (req, res) => {
7950
+ const sessionId = typeof req.query.session_id === "string" ? req.query.session_id : typeof req.query.sessionId === "string" ? req.query.sessionId : void 0;
7951
+ const cleaned = cleanupExpiredPendingRequests();
7952
+ const now = Date.now();
7953
+ const requests = [...pendingRequests.values()].filter((pending) => pending.result === void 0).filter((pending) => !sessionId || pending.sessionId === sessionId).map((pending) => ({
7954
+ requestId: pending.requestId,
7955
+ tool: pending.tool,
7956
+ sessionId: pending.sessionId,
7957
+ params: pending.params,
7958
+ createdAt: pending.createdAt,
7959
+ waitingMs: now - pending.createdAt
7960
+ }));
7961
+ logger$4.debug("pending requests listed", {
7962
+ sessionId,
7963
+ count: requests.length,
7964
+ cleaned
7965
+ });
7966
+ res.json({ requests });
7967
+ });
7946
7968
  router.get("/resolve/:requestId", (req, res) => {
7947
7969
  const requestId = req.params.requestId;
7948
7970
  logger$4.debug("resolve poll", { requestId });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibe-lark/larkpal",
3
- "version": "0.1.80",
3
+ "version": "0.1.81",
4
4
  "description": "LarkPal - Lark/Feishu bot service",
5
5
  "type": "module",
6
6
  "main": "./dist/main.mjs",