lark-bridge-mcp 2.3.0 → 2.3.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/dist/server.js CHANGED
@@ -1,11 +1,9 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
3
  import { z } from "zod";
4
- import * as net from "node:net";
5
4
  import * as fs from "node:fs";
6
5
  import * as path from "node:path";
7
6
  import * as os from "node:os";
8
- import * as cp from "node:child_process";
9
7
  import * as Lark from "@larksuiteoapi/node-sdk";
10
8
  import { initFileQueue, pushToFileQueue, pollFileQueueBatch, cleanupStaleMessages } from "./file-queue.js";
11
9
  // ── stdout 保护:MCP 用 stdio 通信,任何非协议输出都会破坏 JSON-RPC 帧 ──
@@ -50,141 +48,13 @@ function log(level, ...args) {
50
48
  const msg = args.map((a) => (typeof a === "string" ? a : JSON.stringify(a))).join(" ");
51
49
  process.stderr.write(`[${localTimestamp()}][${level}] ${msg}\n`);
52
50
  }
53
- // ── 单实例保护(PID 锁 + TCP 端口互斥)─────────────────
54
- function resolvePidFilePath() {
55
- const suffix = APP_ID ? `-${APP_ID.slice(-8)}` : "";
56
- const homeDir = os.homedir();
57
- const dir = path.join(homeDir, ".lark-bridge-mcp");
58
- if (!fs.existsSync(dir)) {
59
- try {
60
- fs.mkdirSync(dir, { recursive: true });
61
- }
62
- catch { /* ignore */ }
63
- }
64
- return path.join(dir, `mcp${suffix}.pid`);
65
- }
66
- const MCP_PID_FILE = resolvePidFilePath();
67
- function getSingletonPort() {
68
- const base = APP_ID || "lark-bridge-default";
69
- let hash = 0;
70
- for (let i = 0; i < base.length; i++) {
71
- hash = ((hash << 5) - hash + base.charCodeAt(i)) | 0;
72
- }
73
- return 49152 + (Math.abs(hash) % (65535 - 49152));
74
- }
75
- const SINGLETON_PORT = getSingletonPort();
76
- function forceKillPid(pid) {
77
- try {
78
- if (process.platform === "win32") {
79
- cp.execSync(`taskkill /F /PID ${pid}`, { stdio: "ignore", timeout: 5000 });
80
- }
81
- else {
82
- process.kill(pid, "SIGKILL");
83
- }
84
- }
85
- catch { /* best-effort */ }
86
- }
87
- function isProcessAlive(pid) {
88
- try {
89
- process.kill(pid, 0);
90
- return true;
91
- }
92
- catch {
93
- return false;
94
- }
95
- }
96
- function killPreviousInstance() {
97
- try {
98
- if (!fs.existsSync(MCP_PID_FILE))
99
- return;
100
- const raw = fs.readFileSync(MCP_PID_FILE, "utf-8").trim();
101
- const pids = raw.split(/[\r\n,]+/).map((s) => parseInt(s.trim(), 10)).filter((n) => !isNaN(n) && n !== process.pid);
102
- for (const oldPid of pids) {
103
- if (!isProcessAlive(oldPid))
104
- continue;
105
- log("WARN", `发现旧 MCP 进程 (PID=${oldPid}),正在强制终止...`);
106
- forceKillPid(oldPid);
107
- setTimeout(() => {
108
- if (isProcessAlive(oldPid)) {
109
- log("WARN", `PID=${oldPid} 仍存活,重试...`);
110
- forceKillPid(oldPid);
111
- }
112
- }, 1000);
113
- }
114
- }
115
- catch (e) {
116
- log("WARN", `清理旧进程失败: ${e?.message ?? e}`);
117
- }
118
- }
119
- async function requestOldInstanceShutdown() {
120
- return new Promise((resolve) => {
121
- const client = net.createConnection({ port: SINGLETON_PORT, host: "127.0.0.1" }, () => {
122
- client.write("shutdown");
123
- client.end();
124
- });
125
- client.on("data", () => { });
126
- client.on("end", () => { setTimeout(resolve, 500); });
127
- client.on("error", () => { resolve(); });
128
- client.setTimeout(3000, () => { client.destroy(); resolve(); });
129
- });
130
- }
131
- let singletonServer = null;
132
- function startSingletonGuard() {
133
- singletonServer = net.createServer((socket) => {
134
- socket.on("data", (data) => {
135
- if (data.toString().trim() === "shutdown") {
136
- log("INFO", "收到新实例的 shutdown 指令,即将退出...");
137
- socket.end("ok");
138
- gracefulShutdown("singleton-replaced");
139
- }
140
- });
141
- });
142
- singletonServer.on("error", (err) => {
143
- if (err.code === "EADDRINUSE") {
144
- log("WARN", `互斥端口 ${SINGLETON_PORT} 被占用(旧实例仍在监听),已通过 PID 文件兜底`);
145
- }
146
- });
147
- singletonServer.listen(SINGLETON_PORT, "127.0.0.1", () => {
148
- log("INFO", `单实例守卫已启动 (port=${SINGLETON_PORT})`);
149
- });
150
- singletonServer.unref();
151
- }
152
- function writePidFile() {
153
- try {
154
- const dir = path.dirname(MCP_PID_FILE);
155
- if (!fs.existsSync(dir))
156
- fs.mkdirSync(dir, { recursive: true });
157
- fs.writeFileSync(MCP_PID_FILE, String(process.pid), "utf-8");
158
- const cleanup = () => {
159
- try {
160
- fs.unlinkSync(MCP_PID_FILE);
161
- }
162
- catch { /* best-effort */ }
163
- };
164
- process.on("exit", cleanup);
165
- process.on("SIGTERM", () => { cleanup(); process.exit(0); });
166
- process.on("SIGINT", () => { cleanup(); process.exit(0); });
167
- }
168
- catch (e) {
169
- log("WARN", `写入 PID 文件失败: ${e?.message ?? e}`);
170
- }
171
- }
172
- // ── 优雅退出 ─────────────────────────────────────────────
51
+ // ── 优雅退出(stdio 断开检测,防止僵尸进程)────────────
173
52
  let isShuttingDown = false;
174
53
  function gracefulShutdown(reason) {
175
54
  if (isShuttingDown)
176
55
  return;
177
56
  isShuttingDown = true;
178
57
  log("INFO", `进程退出中 (reason=${reason}, PID=${process.pid})`);
179
- try {
180
- if (singletonServer)
181
- singletonServer.close();
182
- }
183
- catch { /* ignore */ }
184
- try {
185
- fs.unlinkSync(MCP_PID_FILE);
186
- }
187
- catch { /* ignore */ }
188
58
  setTimeout(() => process.exit(0), 300);
189
59
  }
190
60
  let resolvedTarget = null;
@@ -462,7 +332,7 @@ function startLarkConnection() {
462
332
  wsClient.start({ eventDispatcher }).then(() => log("INFO", "飞书 WebSocket 连接建立成功")).catch((e) => log("ERROR", `飞书 WebSocket 连接失败: ${e?.message ?? e}`));
463
333
  }
464
334
  // ── MCP Server ──────────────────────────────────────────
465
- const mcpServer = new McpServer({ name: "feishu-cursor-bridge", version: "2.3.0", description: "飞书消息桥接 – 通过飞书与用户沟通" });
335
+ const mcpServer = new McpServer({ name: "feishu-cursor-bridge", version: "2.3.1", description: "飞书消息桥接 – 通过飞书与用户沟通" });
466
336
  mcpServer.tool("sync_message", "飞书消息同步工具。传 message 则发送消息;传 timeout_seconds 则等待用户回复;两者同时传则先发送再等待。均不传时仅检查待处理消息。", {
467
337
  message: z.string().optional().describe("要发送给用户的消息内容。不传则不发送"),
468
338
  timeout_seconds: z.number().optional().describe("等待用户回复的超时秒数。不传则不等待,立即返回"),
@@ -493,14 +363,8 @@ export async function main() {
493
363
  process.exit(1);
494
364
  }
495
365
  log("INFO", "════════════════════════════════════════════════");
496
- log("INFO", `feishu-cursor-bridge MCP v2.3.0 启动 (PID=${process.pid})`);
497
- log("INFO", `PID 文件: ${MCP_PID_FILE}`);
498
- log("INFO", `互斥端口: ${SINGLETON_PORT}`);
366
+ log("INFO", `feishu-cursor-bridge MCP v2.3.1 启动 (PID=${process.pid})`);
499
367
  log("INFO", "════════════════════════════════════════════════");
500
- await requestOldInstanceShutdown();
501
- killPreviousInstance();
502
- writePidFile();
503
- startSingletonGuard();
504
368
  const queueDir = initFileQueue(APP_ID);
505
369
  log("INFO", `共享文件队列: ${queueDir}`);
506
370
  cleanupStaleMessages();
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE3G,wDAAwD;AACxD,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACnE,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAU,EAAE,YAAkB,EAAE,EAAQ,EAAW,EAAE;IAC5E,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3G,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAChE,OAAO,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE,CAAC;QACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAgC,CAAC;AAElC,yDAAyD;AAEzD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;AAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;AACrD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;AACvD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;AACrD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC;AAC/D,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC;AAE7D,MAAM,UAAU,GAAG;IACjB,YAAY,EAAE,YAAY;IAC1B,aAAa,EAAE,aAAa;IAC5B,WAAW,EAAE,WAAW;IACxB,oBAAoB;CACrB,CAAC;AACF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IAAC,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAAC,CAAC;AAE1D,0DAA0D;AAE1D,SAAS,cAAc;IACrB,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC;AAChL,CAAC;AAED,SAAS,GAAG,CAAC,KAAa,EAAE,GAAG,IAAe;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,cAAc,EAAE,KAAK,KAAK,KAAK,GAAG,IAAI,CAAC,CAAC;AACnE,CAAC;AAED,8CAA8C;AAE9C,SAAS,kBAAkB;IACzB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC;YAAC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,MAAM,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;AAE1C,SAAS,gBAAgB;IACvB,MAAM,IAAI,GAAG,MAAM,IAAI,qBAAqB,CAAC;IAC7C,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,cAAc,GAAG,gBAAgB,EAAE,CAAC;AAE1C,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,EAAE,CAAC,QAAQ,CAAC,oBAAoB,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;AACpE,CAAC;AAED,SAAS,oBAAoB;IAC3B,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,OAAO;QACzC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;QACpH,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;gBAAE,SAAS;YACtC,GAAG,CAAC,MAAM,EAAE,mBAAmB,MAAM,aAAa,CAAC,CAAC;YACpD,YAAY,CAAC,MAAM,CAAC,CAAC;YACrB,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3B,GAAG,CAAC,MAAM,EAAE,OAAO,MAAM,YAAY,CAAC,CAAC;oBACvC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,0BAA0B;IACvC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE;YACpF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAyB,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,eAAe,GAAsB,IAAI,CAAC;AAE9C,SAAS,mBAAmB;IAC1B,eAAe,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5C,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;gBAC1C,GAAG,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;gBAC1C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACjB,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;QACvC,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC9B,GAAG,CAAC,MAAM,EAAE,QAAQ,cAAc,4BAA4B,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;IACH,eAAe,CAAC,MAAM,CAAC,cAAc,EAAE,WAAW,EAAE,GAAG,EAAE;QACvD,GAAG,CAAC,MAAM,EAAE,kBAAkB,cAAc,GAAG,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,eAAe,CAAC,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QAE7D,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,CAAC;gBAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAClE,CAAC,CAAC;QACF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,wDAAwD;AAExD,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B,SAAS,gBAAgB,CAAC,MAAc;IACtC,IAAI,cAAc;QAAE,OAAO;IAC3B,cAAc,GAAG,IAAI,CAAC;IACtB,GAAG,CAAC,MAAM,EAAE,iBAAiB,MAAM,SAAS,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IAC5D,IAAI,CAAC;QAAC,IAAI,eAAe;YAAE,eAAe,CAAC,KAAK,EAAE,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC5E,IAAI,CAAC;QAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC3D,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC;AAMD,IAAI,cAAc,GAAsB,IAAI,CAAC;AAC7C,IAAI,UAAU,GAAG,EAAE,CAAC;AAEpB,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU;IACpC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;IAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;IAC1B,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;CACpC,CAAC,CAAC;AAEH,KAAK,UAAU,oBAAoB,CAAC,KAAa;IAC/C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YACnD,MAAM,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE;SAC/D,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC;QAClC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,MAAc;IACjD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YACnD,MAAM,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE;SACjE,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC;QAClC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;QAAC,GAAG,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,eAAe,IAAI,MAAM,CAAC;IACzC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,cAAc,GAAG,EAAE,aAAa,EAAE,MAAuB,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;QACnF,OAAO;IACT,CAAC;IACD,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC1E,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,MAAM,EAAE,CAAC;YAAC,cAAc,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;IAC3F,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,MAAM,EAAE,CAAC;YAAC,cAAc,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;IAC3F,CAAC;IACD,cAAc,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,cAAc;QAAE,OAAO,cAAc,CAAC;IAC1C,IAAI,UAAU;QAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;IAC3E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mDAAmD;AAEnD,KAAK,UAAU,WAAW,CAAC,IAAY;IACrC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;YACjC,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,aAAa,EAAE;YACjD,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,cAAc,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE;SACxH,CAAC,CAAC;QACH,GAAG,CAAC,MAAM,EAAE,WAAW,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;IAAC,CAAC;AAClE,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,SAAiB;IACxC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAAC,GAAG,CAAC,OAAO,EAAE,UAAU,OAAO,EAAE,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAC3E,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7H,MAAM,QAAQ,GAAI,SAAiB,EAAE,IAAI,EAAE,SAAS,IAAK,SAAiB,EAAE,SAAS,CAAC;QACtF,IAAI,CAAC,QAAQ,EAAE,CAAC;YAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAClD,MAAM,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;YACjC,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,aAAa,EAAE;YACjD,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE;SAC5G,CAAC,CAAC;QACH,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;IAAC,CAAC;AAClE,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,QAAgB;IACtC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAAC,GAAG,CAAC,OAAO,EAAE,UAAU,OAAO,EAAE,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAC3E,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9I,MAAM,OAAO,GAAI,SAAiB,EAAE,IAAI,EAAE,QAAQ,IAAK,SAAiB,EAAE,QAAQ,CAAC;QACnF,IAAI,CAAC,OAAO,EAAE,CAAC;YAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACjD,MAAM,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;YACjC,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,aAAa,EAAE;YACjD,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE;SAC9H,CAAC,CAAC;QACH,GAAG,CAAC,MAAM,EAAE,UAAU,QAAQ,EAAE,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;IAAC,CAAC;AAClE,CAAC;AAED,gDAAgD;AAEhD,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC;AAExE,KAAK,UAAU,iBAAiB,CAAC,SAAiB,EAAE,QAAgB;IAClE,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9F,MAAM,IAAI,GAAQ,MAAM,UAAU,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC;YACxD,IAAI,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE;YACnD,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SAC1B,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,QAAQ,MAAM,CAAC,CAAC;QAClE,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC5C,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnH,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,IAAI,EAAE,SAAS,EAAE,CAAC;YAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO,QAAQ,CAAC;QAAC,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AAC/E,CAAC;AAED,SAAS,mBAAmB,CAAC,SAAiB,EAAE,WAAmB,EAAE,OAAe;IAClF,MAAM,MAAM,GAA2E,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACnH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,MAAM;gBAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC;gBAAC,MAAM;YACzD,KAAK,OAAO;gBACV,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;oBAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;oBAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;gBAAC,CAAC;gBACjH,MAAM;YACR,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,KAAK,GAAa,EAAE,CAAC;gBAC3B,IAAI,MAAM,CAAC,KAAK;oBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3C,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;oBAC1C,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;wBACtB,IAAI,EAAE,CAAC,GAAG,KAAK,MAAM,IAAI,EAAE,CAAC,IAAI;4BAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;6BACjD,IAAI,EAAE,CAAC,GAAG,KAAK,KAAK,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;4BAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;4BAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAAC,CAAC;6BAC3H,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,EAAE,CAAC,IAAI;4BAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;oBAC1D,CAAC;gBACH,CAAC;gBACD,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC7B,MAAM;YACR,CAAC;YACD,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC;QAChD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;IAAC,CAAC;IAClC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,SAAiB,EAAE,WAAmB,EAAE,OAAe;IAC3F,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACpE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,SAAS,GAAG,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,SAAkB;IACtD,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QACrB,GAAG,CAAC,MAAM,EAAE,oBAAoB,SAAS,GAAG,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1E,IAAI,OAAO,EAAE,CAAC;QACZ,GAAG,CAAC,MAAM,EAAE,eAAe,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,SAAS,IAAI,MAAM,GAAG,CAAC,CAAC;IAClF,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,MAAM,EAAE,sBAAsB,SAAS,IAAI,MAAM,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB;IAC1B,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC;QACxG,uBAAuB,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAI,IAAY,EAAE,OAAO,CAAC;gBACnC,MAAM,MAAM,GAAI,IAAY,EAAE,MAAM,CAAC;gBACrC,SAAS,GAAG,GAAG,EAAE,UAAU,IAAI,EAAE,CAAC;gBAClC,MAAM,UAAU,GAAW,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC;gBAC9C,MAAM,WAAW,GAAW,GAAG,EAAE,YAAY,IAAI,MAAM,CAAC;gBAExD,IAAI,IAAI,GAAG,UAAU,CAAC;gBACtB,IAAI,CAAC;oBAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,IAAI,IAAI,UAAU,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;gBAElF,GAAG,CAAC,MAAM,EAAE,MAAM,WAAW,OAAO,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,SAAS,GAAG,CAAC,CAAC;gBAE7E,MAAM,YAAY,GAAG,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;gBAChD,IAAI,YAAY,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpC,UAAU,GAAG,YAAY,CAAC;oBAC1B,GAAG,CAAC,MAAM,EAAE,mBAAmB,YAAY,4BAA4B,CAAC,CAAC;gBAC3E,CAAC;gBAED,IAAI,WAAW,KAAK,OAAO,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;oBACtD,sBAAsB,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC;yBACvD,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;yBAChD,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC/C,CAAC;qBAAM,CAAC;oBACN,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,GAAG,CAAC,OAAO,EAAE,UAAU,SAAS,MAAM,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IAClH,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,sBAAsB,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9J,CAAC;AAED,2DAA2D;AAE3D,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAEvH,SAAS,CAAC,IAAI,CACZ,cAAc,EACd,+EAA+E,EAC/E;IACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAC7D,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;CAC3E,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE;IACrC,IAAI,CAAC;QACH,IAAI,OAAO;YAAE,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,CAAC,eAAe,IAAI,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAClD,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;YAC9E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACtD,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,GAAG,CAAC,OAAO,EAAE,oBAAoB,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,OAAO,IAAI,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC;IAC3F,CAAC;AACH,CAAC,CACF,CAAC;AAEF,SAAS,CAAC,IAAI,CACZ,YAAY,EACZ,iCAAiC,EACjC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAC7C,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAClH,CAAC;AAEF,SAAS,CAAC,IAAI,CACZ,WAAW,EACX,gCAAgC,EAChC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAC5C,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAC/G,CAAC;AAEF,yDAAyD;AAEzD,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3B,GAAG,CAAC,OAAO,EAAE,mCAAmC,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,GAAG,CAAC,MAAM,EAAE,kDAAkD,CAAC,CAAC;IAChE,GAAG,CAAC,MAAM,EAAE,2CAA2C,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IACvE,GAAG,CAAC,MAAM,EAAE,WAAW,YAAY,EAAE,CAAC,CAAC;IACvC,GAAG,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC,CAAC;IACvC,GAAG,CAAC,MAAM,EAAE,kDAAkD,CAAC,CAAC;IAEhE,MAAM,0BAA0B,EAAE,CAAC;IACnC,oBAAoB,EAAE,CAAC;IACvB,YAAY,EAAE,CAAC;IACf,mBAAmB,EAAE,CAAC;IAEtB,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,GAAG,CAAC,MAAM,EAAE,WAAW,QAAQ,EAAE,CAAC,CAAC;IACnC,oBAAoB,EAAE,CAAC;IAEvB,MAAM,cAAc,EAAE,CAAC;IACvB,mBAAmB,EAAE,CAAC;IAEtB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACnC,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAEtC,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;QACvB,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IACvC,CAAC,CAAC;IACF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;QAC3B,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAC7B,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;YACrC,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACvD,aAAa,CAAC,aAAa,CAAC,CAAC;gBAC7B,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,aAAa,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lark-bridge-mcp",
3
- "version": "2.3.0",
3
+ "version": "2.3.1",
4
4
  "description": "飞书 × Cursor 远程协作 MCP Server – 通过飞书机器人与 Cursor Agent 交互",
5
5
  "keywords": [
6
6
  "mcp",
package/src/server.ts CHANGED
@@ -1,11 +1,9 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
3
  import { z } from "zod";
4
- import * as net from "node:net";
5
4
  import * as fs from "node:fs";
6
5
  import * as path from "node:path";
7
6
  import * as os from "node:os";
8
- import * as cp from "node:child_process";
9
7
  import * as Lark from "@larksuiteoapi/node-sdk";
10
8
  import { initFileQueue, pushToFileQueue, pollFileQueueBatch, cleanupStaleMessages } from "./file-queue.js";
11
9
 
@@ -55,120 +53,7 @@ function log(level: string, ...args: unknown[]): void {
55
53
  process.stderr.write(`[${localTimestamp()}][${level}] ${msg}\n`);
56
54
  }
57
55
 
58
- // ── 单实例保护(PID 锁 + TCP 端口互斥)─────────────────
59
-
60
- function resolvePidFilePath(): string {
61
- const suffix = APP_ID ? `-${APP_ID.slice(-8)}` : "";
62
- const homeDir = os.homedir();
63
- const dir = path.join(homeDir, ".lark-bridge-mcp");
64
- if (!fs.existsSync(dir)) {
65
- try { fs.mkdirSync(dir, { recursive: true }); } catch { /* ignore */ }
66
- }
67
- return path.join(dir, `mcp${suffix}.pid`);
68
- }
69
-
70
- const MCP_PID_FILE = resolvePidFilePath();
71
-
72
- function getSingletonPort(): number {
73
- const base = APP_ID || "lark-bridge-default";
74
- let hash = 0;
75
- for (let i = 0; i < base.length; i++) {
76
- hash = ((hash << 5) - hash + base.charCodeAt(i)) | 0;
77
- }
78
- return 49152 + (Math.abs(hash) % (65535 - 49152));
79
- }
80
-
81
- const SINGLETON_PORT = getSingletonPort();
82
-
83
- function forceKillPid(pid: number): void {
84
- try {
85
- if (process.platform === "win32") {
86
- cp.execSync(`taskkill /F /PID ${pid}`, { stdio: "ignore", timeout: 5000 });
87
- } else {
88
- process.kill(pid, "SIGKILL");
89
- }
90
- } catch { /* best-effort */ }
91
- }
92
-
93
- function isProcessAlive(pid: number): boolean {
94
- try { process.kill(pid, 0); return true; } catch { return false; }
95
- }
96
-
97
- function killPreviousInstance(): void {
98
- try {
99
- if (!fs.existsSync(MCP_PID_FILE)) return;
100
- const raw = fs.readFileSync(MCP_PID_FILE, "utf-8").trim();
101
- const pids = raw.split(/[\r\n,]+/).map((s) => parseInt(s.trim(), 10)).filter((n) => !isNaN(n) && n !== process.pid);
102
- for (const oldPid of pids) {
103
- if (!isProcessAlive(oldPid)) continue;
104
- log("WARN", `发现旧 MCP 进程 (PID=${oldPid}),正在强制终止...`);
105
- forceKillPid(oldPid);
106
- setTimeout(() => {
107
- if (isProcessAlive(oldPid)) {
108
- log("WARN", `PID=${oldPid} 仍存活,重试...`);
109
- forceKillPid(oldPid);
110
- }
111
- }, 1000);
112
- }
113
- } catch (e: any) {
114
- log("WARN", `清理旧进程失败: ${e?.message ?? e}`);
115
- }
116
- }
117
-
118
- async function requestOldInstanceShutdown(): Promise<void> {
119
- return new Promise((resolve) => {
120
- const client = net.createConnection({ port: SINGLETON_PORT, host: "127.0.0.1" }, () => {
121
- client.write("shutdown");
122
- client.end();
123
- });
124
- client.on("data", () => { /* ignore response */ });
125
- client.on("end", () => { setTimeout(resolve, 500); });
126
- client.on("error", () => { resolve(); });
127
- client.setTimeout(3000, () => { client.destroy(); resolve(); });
128
- });
129
- }
130
-
131
- let singletonServer: net.Server | null = null;
132
-
133
- function startSingletonGuard(): void {
134
- singletonServer = net.createServer((socket) => {
135
- socket.on("data", (data) => {
136
- if (data.toString().trim() === "shutdown") {
137
- log("INFO", "收到新实例的 shutdown 指令,即将退出...");
138
- socket.end("ok");
139
- gracefulShutdown("singleton-replaced");
140
- }
141
- });
142
- });
143
- singletonServer.on("error", (err: any) => {
144
- if (err.code === "EADDRINUSE") {
145
- log("WARN", `互斥端口 ${SINGLETON_PORT} 被占用(旧实例仍在监听),已通过 PID 文件兜底`);
146
- }
147
- });
148
- singletonServer.listen(SINGLETON_PORT, "127.0.0.1", () => {
149
- log("INFO", `单实例守卫已启动 (port=${SINGLETON_PORT})`);
150
- });
151
- singletonServer.unref();
152
- }
153
-
154
- function writePidFile(): void {
155
- try {
156
- const dir = path.dirname(MCP_PID_FILE);
157
- if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
158
- fs.writeFileSync(MCP_PID_FILE, String(process.pid), "utf-8");
159
-
160
- const cleanup = () => {
161
- try { fs.unlinkSync(MCP_PID_FILE); } catch { /* best-effort */ }
162
- };
163
- process.on("exit", cleanup);
164
- process.on("SIGTERM", () => { cleanup(); process.exit(0); });
165
- process.on("SIGINT", () => { cleanup(); process.exit(0); });
166
- } catch (e: any) {
167
- log("WARN", `写入 PID 文件失败: ${e?.message ?? e}`);
168
- }
169
- }
170
-
171
- // ── 优雅退出 ─────────────────────────────────────────────
56
+ // ── 优雅退出(stdio 断开检测,防止僵尸进程)────────────
172
57
 
173
58
  let isShuttingDown = false;
174
59
 
@@ -176,8 +61,6 @@ function gracefulShutdown(reason: string): void {
176
61
  if (isShuttingDown) return;
177
62
  isShuttingDown = true;
178
63
  log("INFO", `进程退出中 (reason=${reason}, PID=${process.pid})`);
179
- try { if (singletonServer) singletonServer.close(); } catch { /* ignore */ }
180
- try { fs.unlinkSync(MCP_PID_FILE); } catch { /* ignore */ }
181
64
  setTimeout(() => process.exit(0), 300);
182
65
  }
183
66
 
@@ -404,7 +287,7 @@ function startLarkConnection(): void {
404
287
 
405
288
  // ── MCP Server ──────────────────────────────────────────
406
289
 
407
- const mcpServer = new McpServer({ name: "feishu-cursor-bridge", version: "2.3.0", description: "飞书消息桥接 – 通过飞书与用户沟通" });
290
+ const mcpServer = new McpServer({ name: "feishu-cursor-bridge", version: "2.3.1", description: "飞书消息桥接 – 通过飞书与用户沟通" });
408
291
 
409
292
  mcpServer.tool(
410
293
  "sync_message",
@@ -453,16 +336,9 @@ export async function main(): Promise<void> {
453
336
  }
454
337
 
455
338
  log("INFO", "════════════════════════════════════════════════");
456
- log("INFO", `feishu-cursor-bridge MCP v2.3.0 启动 (PID=${process.pid})`);
457
- log("INFO", `PID 文件: ${MCP_PID_FILE}`);
458
- log("INFO", `互斥端口: ${SINGLETON_PORT}`);
339
+ log("INFO", `feishu-cursor-bridge MCP v2.3.1 启动 (PID=${process.pid})`);
459
340
  log("INFO", "════════════════════════════════════════════════");
460
341
 
461
- await requestOldInstanceShutdown();
462
- killPreviousInstance();
463
- writePidFile();
464
- startSingletonGuard();
465
-
466
342
  const queueDir = initFileQueue(APP_ID);
467
343
  log("INFO", `共享文件队列: ${queueDir}`);
468
344
  cleanupStaleMessages();