@hirohsu/user-web-feedback 2.8.9 → 2.8.10
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/cli.cjs +30 -2
- package/dist/index.cjs +30 -2
- package/package.json +1 -1
package/dist/cli.cjs
CHANGED
|
@@ -105762,6 +105762,7 @@ var WebServer = class {
|
|
|
105762
105762
|
mcpServerRef = null;
|
|
105763
105763
|
sseTransports = /* @__PURE__ */ new Map();
|
|
105764
105764
|
sseTransportsList = [];
|
|
105765
|
+
pendingDeliveryCache = /* @__PURE__ */ new Map();
|
|
105765
105766
|
dbInitialized = false;
|
|
105766
105767
|
selfProbeService;
|
|
105767
105768
|
/**
|
|
@@ -107803,8 +107804,24 @@ var WebServer = class {
|
|
|
107803
107804
|
this.emitDashboardSessionUpdated(session.projectId, feedbackData.sessionId, "completed", session.workSummary);
|
|
107804
107805
|
}
|
|
107805
107806
|
if (session.resolve) {
|
|
107807
|
+
if (session.projectId) {
|
|
107808
|
+
const cachedResult2 = {
|
|
107809
|
+
feedback: session.feedback,
|
|
107810
|
+
sessionId: feedbackData.sessionId,
|
|
107811
|
+
feedbackUrl: this.generateFeedbackUrl(feedbackData.sessionId),
|
|
107812
|
+
projectId: session.projectId,
|
|
107813
|
+
projectName: session.projectName || ""
|
|
107814
|
+
};
|
|
107815
|
+
this.pendingDeliveryCache.set(session.projectId, {
|
|
107816
|
+
result: cachedResult2,
|
|
107817
|
+
expiresAt: Date.now() + 6e4
|
|
107818
|
+
});
|
|
107819
|
+
const projectId = session.projectId;
|
|
107820
|
+
setTimeout(() => this.pendingDeliveryCache.delete(projectId), 6e4);
|
|
107821
|
+
}
|
|
107806
107822
|
session.resolve(session.feedback);
|
|
107807
|
-
|
|
107823
|
+
const sessionIdToDelete = feedbackData.sessionId;
|
|
107824
|
+
setTimeout(() => this.sessionStorage.deleteSession(sessionIdToDelete), 5e3);
|
|
107808
107825
|
}
|
|
107809
107826
|
} catch (error2) {
|
|
107810
107827
|
logger.error("\u8655\u7406\u56DE\u994B\u63D0\u4EA4\u6642\u51FA\u932F:", error2);
|
|
@@ -107891,6 +107908,12 @@ var WebServer = class {
|
|
|
107891
107908
|
const project = projectName ? projectManager.getOrCreateProject(projectName, projectPath) : projectManager.getDefaultProject();
|
|
107892
107909
|
logger.info(`\u5EFA\u7ACB\u56DE\u994B\u6703\u8A71: ${sessionId}, \u903E\u6642: ${timeoutSeconds}\u79D2, \u5C08\u6848: ${project.name} (${project.id})`);
|
|
107893
107910
|
const feedbackUrl = this.generateFeedbackUrl(sessionId);
|
|
107911
|
+
const pendingEntry = this.pendingDeliveryCache.get(project.id);
|
|
107912
|
+
if (pendingEntry && pendingEntry.expiresAt > Date.now() && !this.sessionStorage.getSession(pendingEntry.result.sessionId)) {
|
|
107913
|
+
logger.warn(`[\u91CD\u8A66\u88DC\u511F] \u5075\u6E2C\u5230\u5C08\u6848 "${project.name}" \u5B58\u5728\u672A\u78BA\u8A8D\u9001\u9054\u7684\u56DE\u8986 (sessionId: ${pendingEntry.result.sessionId})\uFF0C\u76F4\u63A5\u56DE\u50B3\u5FEB\u53D6\u7D50\u679C`);
|
|
107914
|
+
this.pendingDeliveryCache.delete(project.id);
|
|
107915
|
+
return pendingEntry.result;
|
|
107916
|
+
}
|
|
107894
107917
|
return new Promise((resolve2, reject) => {
|
|
107895
107918
|
const session = {
|
|
107896
107919
|
workSummary,
|
|
@@ -108137,7 +108160,7 @@ var WebServer = class {
|
|
|
108137
108160
|
} else {
|
|
108138
108161
|
clearInterval(heartbeat);
|
|
108139
108162
|
}
|
|
108140
|
-
},
|
|
108163
|
+
}, 15e3);
|
|
108141
108164
|
req.on("close", () => {
|
|
108142
108165
|
clearInterval(heartbeat);
|
|
108143
108166
|
logger.info("SSE \u9023\u7DDA\u5DF2\u95DC\u9589");
|
|
@@ -108197,6 +108220,11 @@ var WebServer = class {
|
|
|
108197
108220
|
}
|
|
108198
108221
|
req.socket?.setTimeout(0);
|
|
108199
108222
|
req.socket?.setKeepAlive(true, 3e4);
|
|
108223
|
+
req.on("close", () => {
|
|
108224
|
+
if (!res.writableEnded) {
|
|
108225
|
+
logger.warn("[\u5BB9\u932F] MCP Client HTTP \u9023\u7DDA\u5728\u5DE5\u5177\u57F7\u884C\u671F\u9593\u63D0\u524D\u95DC\u9589\uFF0C\u56DE\u8986\u53EF\u80FD\u672A\u9001\u9054\uFF0C\u4E0B\u6B21\u547C\u53EB\u5C07\u5F9E\u5FEB\u53D6\u53D6\u56DE");
|
|
108226
|
+
}
|
|
108227
|
+
});
|
|
108200
108228
|
const sessionId = req.headers["mcp-session-id"];
|
|
108201
108229
|
const isInitialize = req.body?.method === "initialize";
|
|
108202
108230
|
if (isInitialize) {
|
package/dist/index.cjs
CHANGED
|
@@ -102779,6 +102779,7 @@ var WebServer = class {
|
|
|
102779
102779
|
mcpServerRef = null;
|
|
102780
102780
|
sseTransports = /* @__PURE__ */ new Map();
|
|
102781
102781
|
sseTransportsList = [];
|
|
102782
|
+
pendingDeliveryCache = /* @__PURE__ */ new Map();
|
|
102782
102783
|
dbInitialized = false;
|
|
102783
102784
|
selfProbeService;
|
|
102784
102785
|
/**
|
|
@@ -104820,8 +104821,24 @@ var WebServer = class {
|
|
|
104820
104821
|
this.emitDashboardSessionUpdated(session.projectId, feedbackData.sessionId, "completed", session.workSummary);
|
|
104821
104822
|
}
|
|
104822
104823
|
if (session.resolve) {
|
|
104824
|
+
if (session.projectId) {
|
|
104825
|
+
const cachedResult2 = {
|
|
104826
|
+
feedback: session.feedback,
|
|
104827
|
+
sessionId: feedbackData.sessionId,
|
|
104828
|
+
feedbackUrl: this.generateFeedbackUrl(feedbackData.sessionId),
|
|
104829
|
+
projectId: session.projectId,
|
|
104830
|
+
projectName: session.projectName || ""
|
|
104831
|
+
};
|
|
104832
|
+
this.pendingDeliveryCache.set(session.projectId, {
|
|
104833
|
+
result: cachedResult2,
|
|
104834
|
+
expiresAt: Date.now() + 6e4
|
|
104835
|
+
});
|
|
104836
|
+
const projectId = session.projectId;
|
|
104837
|
+
setTimeout(() => this.pendingDeliveryCache.delete(projectId), 6e4);
|
|
104838
|
+
}
|
|
104823
104839
|
session.resolve(session.feedback);
|
|
104824
|
-
|
|
104840
|
+
const sessionIdToDelete = feedbackData.sessionId;
|
|
104841
|
+
setTimeout(() => this.sessionStorage.deleteSession(sessionIdToDelete), 5e3);
|
|
104825
104842
|
}
|
|
104826
104843
|
} catch (error2) {
|
|
104827
104844
|
logger.error("\u8655\u7406\u56DE\u994B\u63D0\u4EA4\u6642\u51FA\u932F:", error2);
|
|
@@ -104908,6 +104925,12 @@ var WebServer = class {
|
|
|
104908
104925
|
const project = projectName ? projectManager.getOrCreateProject(projectName, projectPath) : projectManager.getDefaultProject();
|
|
104909
104926
|
logger.info(`\u5EFA\u7ACB\u56DE\u994B\u6703\u8A71: ${sessionId}, \u903E\u6642: ${timeoutSeconds}\u79D2, \u5C08\u6848: ${project.name} (${project.id})`);
|
|
104910
104927
|
const feedbackUrl = this.generateFeedbackUrl(sessionId);
|
|
104928
|
+
const pendingEntry = this.pendingDeliveryCache.get(project.id);
|
|
104929
|
+
if (pendingEntry && pendingEntry.expiresAt > Date.now() && !this.sessionStorage.getSession(pendingEntry.result.sessionId)) {
|
|
104930
|
+
logger.warn(`[\u91CD\u8A66\u88DC\u511F] \u5075\u6E2C\u5230\u5C08\u6848 "${project.name}" \u5B58\u5728\u672A\u78BA\u8A8D\u9001\u9054\u7684\u56DE\u8986 (sessionId: ${pendingEntry.result.sessionId})\uFF0C\u76F4\u63A5\u56DE\u50B3\u5FEB\u53D6\u7D50\u679C`);
|
|
104931
|
+
this.pendingDeliveryCache.delete(project.id);
|
|
104932
|
+
return pendingEntry.result;
|
|
104933
|
+
}
|
|
104911
104934
|
return new Promise((resolve, reject) => {
|
|
104912
104935
|
const session = {
|
|
104913
104936
|
workSummary,
|
|
@@ -105154,7 +105177,7 @@ var WebServer = class {
|
|
|
105154
105177
|
} else {
|
|
105155
105178
|
clearInterval(heartbeat);
|
|
105156
105179
|
}
|
|
105157
|
-
},
|
|
105180
|
+
}, 15e3);
|
|
105158
105181
|
req.on("close", () => {
|
|
105159
105182
|
clearInterval(heartbeat);
|
|
105160
105183
|
logger.info("SSE \u9023\u7DDA\u5DF2\u95DC\u9589");
|
|
@@ -105214,6 +105237,11 @@ var WebServer = class {
|
|
|
105214
105237
|
}
|
|
105215
105238
|
req.socket?.setTimeout(0);
|
|
105216
105239
|
req.socket?.setKeepAlive(true, 3e4);
|
|
105240
|
+
req.on("close", () => {
|
|
105241
|
+
if (!res.writableEnded) {
|
|
105242
|
+
logger.warn("[\u5BB9\u932F] MCP Client HTTP \u9023\u7DDA\u5728\u5DE5\u5177\u57F7\u884C\u671F\u9593\u63D0\u524D\u95DC\u9589\uFF0C\u56DE\u8986\u53EF\u80FD\u672A\u9001\u9054\uFF0C\u4E0B\u6B21\u547C\u53EB\u5C07\u5F9E\u5FEB\u53D6\u53D6\u56DE");
|
|
105243
|
+
}
|
|
105244
|
+
});
|
|
105217
105245
|
const sessionId = req.headers["mcp-session-id"];
|
|
105218
105246
|
const isInitialize = req.body?.method === "initialize";
|
|
105219
105247
|
if (isInitialize) {
|