duclaw-cli 1.8.42 → 1.8.43
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/bundle.js +134 -68
- package/dist/main.js +1 -1
- package/dist/worker-main.js +1 -1
- package/package.json +1 -1
package/dist/bundle.js
CHANGED
|
@@ -30242,7 +30242,7 @@ function printHelp() {
|
|
|
30242
30242
|
`);
|
|
30243
30243
|
}
|
|
30244
30244
|
function printVersion() {
|
|
30245
|
-
console.log(`duclaw-cli v${true ? "1.8.
|
|
30245
|
+
console.log(`duclaw-cli v${true ? "1.8.43" : "unknown"}`);
|
|
30246
30246
|
}
|
|
30247
30247
|
function getDuclawTemplate() {
|
|
30248
30248
|
return {
|
|
@@ -32629,7 +32629,7 @@ var chokidar_default = { watch, FSWatcher };
|
|
|
32629
32629
|
var import_node_cron = __toESM(require_node_cron());
|
|
32630
32630
|
|
|
32631
32631
|
// src/agent/createAgent.ts
|
|
32632
|
-
var
|
|
32632
|
+
var import_node_crypto13 = require("node:crypto");
|
|
32633
32633
|
var import_node_fs7 = require("node:fs");
|
|
32634
32634
|
|
|
32635
32635
|
// src/background/BackgroundManager.ts
|
|
@@ -41803,11 +41803,9 @@ var renderAgentEventReminder = (events) => {
|
|
|
41803
41803
|
const hasCeoFollowup = events.some((event) => event.type === "ceo.followup_required");
|
|
41804
41804
|
const ceoFollowupInstruction = hasCeoFollowup ? [
|
|
41805
41805
|
``,
|
|
41806
|
-
|
|
41807
|
-
|
|
41808
|
-
|
|
41809
|
-
`- \u4F60\u5FC5\u987B\u8BFB\u53D6 summary/contentPreview\uFF0C\u76F4\u63A5\u8C03\u7528 send_message \u5411 Boss/User \u6C47\u62A5\u7ED3\u679C\u3002`,
|
|
41810
|
-
`- \u4E0D\u8981\u53EA\u8BF4\u201C\u6682\u65E0\u56DE\u4FE1/\u8FD8\u5728\u6267\u884C/\u7A0D\u540E\u540C\u6B65\u201D\uFF0C\u9664\u975E summary \u660E\u786E\u8BF4\u660E\u4ECD\u5728\u7B49\u5F85\u6216\u5931\u8D25\u3002`
|
|
41806
|
+
`\u5176\u4E2D type=ceo.followup_required \u7684\u4E8B\u4EF6\uFF0C\u662F\u56E2\u961F\u5DF2\u7ECF\u628A\u7ED3\u679C\u56DE\u5230\u4E86\u4F60\u8FD9\u91CC\u2014\u2014\u8001\u677F\u8FD8\u5728\u7B49\u4F60\u628A\u8FD9\u4E9B\u7ED3\u679C\u8F6C\u8FBE\u7ED9\u4ED6\u3002`,
|
|
41807
|
+
`\u8BFB\u4E00\u904D\uFF0C\u7528\u4F60\u81EA\u5DF1\u7684\u8BDD\u7ED9\u8001\u677F\u6C47\u62A5\u4E00\u6B21\uFF1A\u6709\u591A\u6761\u5C31\u5408\u5E76\u6210\u4E00\u6761\u8BF4\u6E05\u695A\uFF0C\u522B\u4E00\u6761\u4E8B\u4EF6\u56DE\u4E00\u53E5\u3001\u628A\u540C\u4E00\u4EF6\u4E8B\u91CD\u590D\u53D1\u7ED9\u8001\u677F\u3002`,
|
|
41808
|
+
`\u5982\u679C\u7ED3\u679C\u8BF4\u660E\u4E8B\u60C5\u8FD8\u6CA1\u505A\u5B8C\u6216\u5361\u4F4F\u4E86\uFF0C\u5C31\u5982\u5B9E\u8FD9\u4E48\u8BB2\uFF0C\u800C\u4E0D\u662F\u542B\u7CCA\u5730\u201C\u7A0D\u540E\u540C\u6B65\u201D\u3002`
|
|
41811
41809
|
].join("\n") : "";
|
|
41812
41810
|
return `<system-reminder>
|
|
41813
41811
|
\u672C\u8F6E\u6709 ${events.length} \u6761\u5185\u90E8\u4E8B\u4EF6\u53EF\u7528\uFF1A
|
|
@@ -45650,6 +45648,37 @@ var COMPANY_VALUES_PROMPT = `<\u516C\u53F8\u5171\u540C\u4FE1\u5FF5>
|
|
|
45650
45648
|
4. \u5224\u65AD\u9AD8\u4E8E\u6D41\u7A0B\uFF1A\u4EE5\u4E0A\u662F\u4F60\u505A\u4E8B\u7684\u672C\u5FC3\uFF0C\u4E0D\u662F\u8981\u4F60\u6B7B\u8BB0\u6B65\u9AA4\u3002\u5177\u4F53\u600E\u4E48\u505A\uFF0C\u4F60\u50CF\u4E00\u4E2A\u6709\u7ECF\u9A8C\u7684\u4EBA\u90A3\u6837\u81EA\u5DF1\u62FF\u634F\uFF1B\u5076\u5C14\u5224\u65AD\u4E0D\u5B8C\u7F8E\u6CA1\u5173\u7CFB\uFF0C\u50CF\u4EBA\u4E00\u6837\u9760\u8C31\u6BD4\u673A\u68B0\u5B88\u89C4\u66F4\u91CD\u8981\u3002
|
|
45651
45649
|
</\u516C\u53F8\u5171\u540C\u4FE1\u5FF5>`;
|
|
45652
45650
|
|
|
45651
|
+
// src/agent/outboundDedup.ts
|
|
45652
|
+
var import_node_crypto12 = require("node:crypto");
|
|
45653
|
+
var DEFAULT_WINDOW_MS = 15e3;
|
|
45654
|
+
var recentSends = /* @__PURE__ */ new Map();
|
|
45655
|
+
var lastSweepAt = 0;
|
|
45656
|
+
var normalize3 = (text2) => text2.replace(/\s+/g, " ").trim();
|
|
45657
|
+
var keyFor = (userId, normalized) => {
|
|
45658
|
+
const hash = (0, import_node_crypto12.createHash)("sha1").update(normalized).digest("hex");
|
|
45659
|
+
return `${userId}::${hash}`;
|
|
45660
|
+
};
|
|
45661
|
+
var sweep = (now, windowMs) => {
|
|
45662
|
+
if (now - lastSweepAt < windowMs) return;
|
|
45663
|
+
lastSweepAt = now;
|
|
45664
|
+
for (const [k, ts] of recentSends) {
|
|
45665
|
+
if (now - ts > windowMs) recentSends.delete(k);
|
|
45666
|
+
}
|
|
45667
|
+
};
|
|
45668
|
+
var claimOutboundSend = (userId, text2, windowMs = DEFAULT_WINDOW_MS) => {
|
|
45669
|
+
const normalized = normalize3(text2);
|
|
45670
|
+
if (!normalized) return true;
|
|
45671
|
+
const now = Date.now();
|
|
45672
|
+
sweep(now, windowMs);
|
|
45673
|
+
const key = keyFor(userId, normalized);
|
|
45674
|
+
const last = recentSends.get(key);
|
|
45675
|
+
if (last !== void 0 && now - last < windowMs) {
|
|
45676
|
+
return false;
|
|
45677
|
+
}
|
|
45678
|
+
recentSends.set(key, now);
|
|
45679
|
+
return true;
|
|
45680
|
+
};
|
|
45681
|
+
|
|
45653
45682
|
// src/agent/createAgent.ts
|
|
45654
45683
|
var DEFAULT_WORKSPACE_PATH = getDuclawWorkspaceDir();
|
|
45655
45684
|
var assistantMessageFromResponse = (response) => ({
|
|
@@ -45664,7 +45693,7 @@ var isAbortError2 = (error) => {
|
|
|
45664
45693
|
return error.name === "AbortError" || error.message.includes("aborted") || error.message.includes("AbortError");
|
|
45665
45694
|
};
|
|
45666
45695
|
var llmRequestIdForTurn = (request, messages, system, tools) => {
|
|
45667
|
-
const hash = (0,
|
|
45696
|
+
const hash = (0, import_node_crypto13.createHash)("sha256").update(request.requestId).update("\0").update(system).update("\0").update(JSON.stringify(messages)).update("\0").update(JSON.stringify(tools.map((tool) => tool.name).sort())).digest("hex").slice(0, 40);
|
|
45668
45697
|
return `dreq_${hash}`;
|
|
45669
45698
|
};
|
|
45670
45699
|
var getDefaultAgentConfig = (tools, systemPrompt) => {
|
|
@@ -46097,6 +46126,7 @@ ${notifText}
|
|
|
46097
46126
|
if (interrupts.length > 0) {
|
|
46098
46127
|
for (const interrupt of interrupts) {
|
|
46099
46128
|
markInterruptEventIdsInjected(interrupt.metadata);
|
|
46129
|
+
rememberCeoFollowupIds(ceoFollowupIdsFromMetadata(interrupt.metadata));
|
|
46100
46130
|
const msg = interrupt.content;
|
|
46101
46131
|
console.log(`[agent] \u6536\u5230\u4E2D\u65AD\u6D88\u606F\uFF0C\u6CE8\u5165\u5BF9\u8BDD: ${msg.slice(0, 80)}...`);
|
|
46102
46132
|
if (interrupt.metadata) {
|
|
@@ -46251,12 +46281,16 @@ ${memoryInjection}` : "") + dreamInjection;
|
|
|
46251
46281
|
console.log(`channelPlugin: ${JSON.stringify(config2.channelPlugin)}`);
|
|
46252
46282
|
const { userId: userId2 } = request;
|
|
46253
46283
|
console.log(`request: ${JSON.stringify(request)}`);
|
|
46254
|
-
|
|
46255
|
-
|
|
46256
|
-
|
|
46257
|
-
|
|
46258
|
-
|
|
46259
|
-
|
|
46284
|
+
if (claimOutboundSend(userId2, answer)) {
|
|
46285
|
+
await config2.channelPlugin.outbound.sendText({
|
|
46286
|
+
cfg: {},
|
|
46287
|
+
to: userId2,
|
|
46288
|
+
text: answer,
|
|
46289
|
+
accountId: request.requestId
|
|
46290
|
+
});
|
|
46291
|
+
} else {
|
|
46292
|
+
console.log(`[outbound-dedup] \u8DF3\u8FC7\u5BF9\u7528\u6237 ${userId2} \u7684\u8FD1\u91CD\u590D\u53D1\u9001\uFF08\u5355\u4E00\u58F0\u97F3\u515C\u5E95\uFF09`);
|
|
46293
|
+
}
|
|
46260
46294
|
}
|
|
46261
46295
|
hasSentMessage = true;
|
|
46262
46296
|
sentMessageContent = answer;
|
|
@@ -46313,6 +46347,7 @@ ${memoryInjection}` : "") + dreamInjection;
|
|
|
46313
46347
|
console.log(`[agent] \u9000\u51FA\u524D\u53D1\u73B0 ${lateInterrupts.length} \u6761\u8FDF\u5230\u7684\u4E2D\u65AD\u6D88\u606F\uFF0C\u7EE7\u7EED\u5904\u7406`);
|
|
46314
46348
|
for (const interrupt of lateInterrupts) {
|
|
46315
46349
|
markInterruptEventIdsInjected(interrupt.metadata);
|
|
46350
|
+
rememberCeoFollowupIds(ceoFollowupIdsFromMetadata(interrupt.metadata));
|
|
46316
46351
|
const msg = interrupt.content;
|
|
46317
46352
|
if (interrupt.metadata) {
|
|
46318
46353
|
request.metadata = {
|
|
@@ -46332,12 +46367,16 @@ ${msg}</user-interrupt>`
|
|
|
46332
46367
|
}
|
|
46333
46368
|
const visibleCeoFollowupIds = ceoFollowupIdsFromMetadata(request.metadata);
|
|
46334
46369
|
if (!hasSentMessage && visibleCeoFollowupIds.length > 0 && config2.channelPlugin) {
|
|
46335
|
-
|
|
46336
|
-
|
|
46337
|
-
|
|
46338
|
-
|
|
46339
|
-
|
|
46340
|
-
|
|
46370
|
+
if (claimOutboundSend(request.userId, textContent)) {
|
|
46371
|
+
await config2.channelPlugin.outbound.sendText({
|
|
46372
|
+
cfg: {},
|
|
46373
|
+
to: request.userId,
|
|
46374
|
+
text: textContent,
|
|
46375
|
+
accountId: request.requestId
|
|
46376
|
+
});
|
|
46377
|
+
} else {
|
|
46378
|
+
console.log(`[outbound-dedup] \u8DF3\u8FC7\u5BF9\u7528\u6237 ${request.userId} \u7684\u8FD1\u91CD\u590D\u515C\u5E95\u53D1\u9001`);
|
|
46379
|
+
}
|
|
46341
46380
|
hasSentMessage = true;
|
|
46342
46381
|
sentMessageContent = textContent;
|
|
46343
46382
|
completeUserVisibleCeoFollowups();
|
|
@@ -46358,6 +46397,7 @@ ${msg}</user-interrupt>`
|
|
|
46358
46397
|
console.log(`[agent] \u9000\u51FA\u524D\u53D1\u73B0 ${lateInterrupts.length} \u6761\u8FDF\u5230\u7684\u4E2D\u65AD\u6D88\u606F\uFF0C\u7EE7\u7EED\u5904\u7406`);
|
|
46359
46398
|
for (const interrupt of lateInterrupts) {
|
|
46360
46399
|
markInterruptEventIdsInjected(interrupt.metadata);
|
|
46400
|
+
rememberCeoFollowupIds(ceoFollowupIdsFromMetadata(interrupt.metadata));
|
|
46361
46401
|
const msg = interrupt.content;
|
|
46362
46402
|
if (interrupt.metadata) {
|
|
46363
46403
|
request.metadata = {
|
|
@@ -47193,8 +47233,10 @@ var markMailboxStatus = (msgId, status) => {
|
|
|
47193
47233
|
reason: "mailbox_poller"
|
|
47194
47234
|
});
|
|
47195
47235
|
};
|
|
47196
|
-
var
|
|
47197
|
-
const
|
|
47236
|
+
var handleCeoFollowupGroup = async (followups) => {
|
|
47237
|
+
const originUserId = followups[0].originUserId;
|
|
47238
|
+
const originPlatform = followups[0].originPlatform;
|
|
47239
|
+
const events = followups.map((followup) => recordAgentEvent({
|
|
47198
47240
|
userId: followup.originUserId,
|
|
47199
47241
|
type: "ceo.followup_required",
|
|
47200
47242
|
source: "ceo_followup",
|
|
@@ -47207,73 +47249,87 @@ var handleCeoFollowup = async (followup) => {
|
|
|
47207
47249
|
parentMessageId: followup.parentMessageId || null,
|
|
47208
47250
|
workItemId: followup.workItemId || null,
|
|
47209
47251
|
contentPreview: followup.content.slice(0, 1200),
|
|
47210
|
-
summary: `\
|
|
47252
|
+
summary: `\u56E2\u961F\u5DF2\u56DE\u4FE1\uFF0C\u8FD9\u4E2A\u7ED3\u679C\u8FD8\u7B49\u7740\u4F60\u8F6C\u8FBE\u7ED9\u8001\u677F\uFF08Boss/User\uFF09\uFF1A${followup.content.slice(0, 400)}`,
|
|
47211
47253
|
originPlatform: followup.originPlatform
|
|
47212
47254
|
}
|
|
47213
|
-
});
|
|
47214
|
-
if (hasRunningAgent(
|
|
47215
|
-
|
|
47216
|
-
|
|
47217
|
-
|
|
47218
|
-
|
|
47219
|
-
|
|
47220
|
-
|
|
47221
|
-
|
|
47222
|
-
|
|
47255
|
+
}));
|
|
47256
|
+
if (hasRunningAgent(originUserId)) {
|
|
47257
|
+
followups.forEach((followup, i) => {
|
|
47258
|
+
queueInterrupt(originUserId, {
|
|
47259
|
+
content: "",
|
|
47260
|
+
metadata: {
|
|
47261
|
+
internalOnly: true,
|
|
47262
|
+
eventId: events[i].id,
|
|
47263
|
+
trigger: "ceo.followup_required",
|
|
47264
|
+
ceoFollowupId: followup.id
|
|
47265
|
+
}
|
|
47266
|
+
});
|
|
47223
47267
|
});
|
|
47224
|
-
console.log(`[mailbox] \u4E3B agent \u6B63\u5728\u8FD0\u884C\u4E2D\uFF0C${
|
|
47268
|
+
console.log(`[mailbox] \u4E3B agent \u6B63\u5728\u8FD0\u884C\u4E2D\uFF0C${followups.length} \u5C01\u56DE\u4FE1\u5DF2\u5165\u961F\u7B49\u5F85\u4E2D\u65AD\u6CE8\u5165 user=${originUserId}`);
|
|
47225
47269
|
return "queued";
|
|
47226
47270
|
}
|
|
47271
|
+
const primary = followups[followups.length - 1];
|
|
47227
47272
|
const request = {
|
|
47228
|
-
platform:
|
|
47229
|
-
userId:
|
|
47230
|
-
requestId:
|
|
47273
|
+
platform: originPlatform,
|
|
47274
|
+
userId: originUserId,
|
|
47275
|
+
requestId: primary.sourceMessageId,
|
|
47231
47276
|
departmentAgentId: "",
|
|
47232
47277
|
content: "",
|
|
47233
47278
|
metadata: {
|
|
47234
47279
|
internalOnly: true,
|
|
47235
|
-
eventId:
|
|
47280
|
+
eventId: events[events.length - 1].id,
|
|
47236
47281
|
trigger: "ceo.followup_required",
|
|
47237
|
-
ceoFollowupId:
|
|
47282
|
+
ceoFollowupId: primary.id,
|
|
47283
|
+
ceoFollowupIds: followups.map((f) => f.id)
|
|
47238
47284
|
}
|
|
47239
47285
|
};
|
|
47240
47286
|
const config2 = getDefaultAgentConfig();
|
|
47241
47287
|
const mainAgent = createAgent(config2);
|
|
47242
47288
|
const result = await mainAgent(request);
|
|
47243
|
-
console.log(`[mailbox] \u4E3B agent \u5904\u7406\u5B8C ${
|
|
47289
|
+
console.log(`[mailbox] \u4E3B agent \u5904\u7406\u5B8C ${followups.length} \u5C01\u56DE\u4FE1, user=${originUserId}, alreadySent=${result.alreadySent}`);
|
|
47244
47290
|
if (result.alreadySent) return "completed";
|
|
47245
|
-
const fallback = result.content?.trim() ||
|
|
47291
|
+
const fallback = result.content?.trim() || followups.map((f) => f.content).join("\n\n---\n\n");
|
|
47246
47292
|
if (fallback && config2.channelPlugin) {
|
|
47247
|
-
|
|
47248
|
-
|
|
47249
|
-
|
|
47250
|
-
|
|
47251
|
-
|
|
47252
|
-
|
|
47253
|
-
|
|
47254
|
-
|
|
47255
|
-
|
|
47256
|
-
|
|
47257
|
-
|
|
47258
|
-
|
|
47293
|
+
if (claimOutboundSend(originUserId, fallback)) {
|
|
47294
|
+
try {
|
|
47295
|
+
await config2.channelPlugin.outbound.sendText({
|
|
47296
|
+
cfg: {},
|
|
47297
|
+
to: originUserId,
|
|
47298
|
+
text: fallback,
|
|
47299
|
+
accountId: primary.sourceMessageId
|
|
47300
|
+
});
|
|
47301
|
+
console.log(`[mailbox] \u4E3B agent \u672A\u4E3B\u52A8\u53D1\u9001\uFF0C\u5DF2\u901A\u8FC7\u6E20\u9053\u8865\u53D1 user=${originUserId}`);
|
|
47302
|
+
} catch (sendErr) {
|
|
47303
|
+
console.error(`[mailbox] \u8865\u53D1\u6D88\u606F\u5931\u8D25:`, sendErr);
|
|
47304
|
+
throw sendErr;
|
|
47305
|
+
}
|
|
47306
|
+
} else {
|
|
47307
|
+
console.log(`[mailbox] \u8DF3\u8FC7\u5BF9\u7528\u6237 ${originUserId} \u7684\u8FD1\u91CD\u590D\u8865\u53D1\uFF08\u5355\u4E00\u58F0\u97F3\u515C\u5E95\uFF09`);
|
|
47259
47308
|
}
|
|
47309
|
+
return "completed";
|
|
47260
47310
|
}
|
|
47261
47311
|
if (fallback && !config2.channelPlugin) return "completed";
|
|
47262
|
-
throw new Error(`ceo_followup_no_user_visible_message:${
|
|
47312
|
+
throw new Error(`ceo_followup_no_user_visible_message:${primary.id}`);
|
|
47263
47313
|
};
|
|
47264
|
-
var
|
|
47265
|
-
const claimed =
|
|
47266
|
-
|
|
47314
|
+
var processCeoFollowupGroup = async (followups) => {
|
|
47315
|
+
const claimed = [];
|
|
47316
|
+
for (const followup of followups) {
|
|
47317
|
+
const c = claimCeoFollowup(followup.id);
|
|
47318
|
+
if (c) claimed.push(c);
|
|
47319
|
+
}
|
|
47320
|
+
if (claimed.length === 0) return;
|
|
47267
47321
|
try {
|
|
47268
|
-
markMailboxStatus(
|
|
47269
|
-
const outcome = await
|
|
47322
|
+
for (const c of claimed) markMailboxStatus(c.sourceMessageId, "processing");
|
|
47323
|
+
const outcome = await handleCeoFollowupGroup(claimed);
|
|
47270
47324
|
if (outcome === "queued") return;
|
|
47271
|
-
|
|
47272
|
-
|
|
47325
|
+
for (const c of claimed) {
|
|
47326
|
+
completeCeoFollowup(c.id);
|
|
47327
|
+
markMailboxStatus(c.sourceMessageId, "done");
|
|
47328
|
+
}
|
|
47273
47329
|
} catch (err) {
|
|
47274
47330
|
const message = err.message;
|
|
47275
|
-
failCeoFollowup(
|
|
47276
|
-
console.error(`[mailbox] CEO followup \u5904\u7406\u5931\u8D25
|
|
47331
|
+
for (const c of claimed) failCeoFollowup(c.id, message);
|
|
47332
|
+
console.error(`[mailbox] CEO followup \u5904\u7406\u5931\u8D25 user=${claimed[0].originUserId}:`, err);
|
|
47277
47333
|
}
|
|
47278
47334
|
};
|
|
47279
47335
|
var wakeDepartmentAgent = async (mailboxId, msgIds) => {
|
|
@@ -47427,6 +47483,7 @@ var finalizeDepartmentAgentUnrepliedMessages = (mailboxId, msgIds, result) => {
|
|
|
47427
47483
|
var polling = false;
|
|
47428
47484
|
var inFlightDepartmentMailboxes = /* @__PURE__ */ new Set();
|
|
47429
47485
|
var inFlightCeoReplyMessages = /* @__PURE__ */ new Set();
|
|
47486
|
+
var inFlightCeoReplyUsers = /* @__PURE__ */ new Set();
|
|
47430
47487
|
var pollMailbox = async () => {
|
|
47431
47488
|
if (polling) return;
|
|
47432
47489
|
polling = true;
|
|
@@ -47456,17 +47513,26 @@ var pollMailbox = async () => {
|
|
|
47456
47513
|
}
|
|
47457
47514
|
const followups = [...pendingFollowups, ...newFollowups];
|
|
47458
47515
|
const uniqueFollowups = Array.from(new Map(followups.map((followup) => [followup.id, followup])).values());
|
|
47516
|
+
const followupsByUser = /* @__PURE__ */ new Map();
|
|
47459
47517
|
for (const followup of uniqueFollowups) {
|
|
47460
47518
|
if (inFlightCeoReplyMessages.has(followup.id)) continue;
|
|
47461
|
-
|
|
47462
|
-
|
|
47519
|
+
const arr = followupsByUser.get(followup.originUserId) || [];
|
|
47520
|
+
arr.push(followup);
|
|
47521
|
+
followupsByUser.set(followup.originUserId, arr);
|
|
47522
|
+
}
|
|
47523
|
+
for (const [originUserId, group] of followupsByUser) {
|
|
47524
|
+
if (inFlightCeoReplyUsers.has(originUserId)) continue;
|
|
47525
|
+
inFlightCeoReplyUsers.add(originUserId);
|
|
47526
|
+
for (const f of group) inFlightCeoReplyMessages.add(f.id);
|
|
47527
|
+
console.log(`[mailbox] \u6536\u5230 ${group.length} \u5C01 department \u56DE\u4FE1\uFF0C\u6B63\u5728\u5408\u5E76\u5524\u9192\u4E3B agent user=${originUserId}...`);
|
|
47463
47528
|
void (async () => {
|
|
47464
47529
|
try {
|
|
47465
|
-
await
|
|
47530
|
+
await processCeoFollowupGroup(group);
|
|
47466
47531
|
} catch (err) {
|
|
47467
47532
|
console.error(`[mailbox] \u5524\u9192\u4E3B agent \u5904\u7406\u56DE\u4FE1\u5931\u8D25:`, err);
|
|
47468
47533
|
} finally {
|
|
47469
|
-
|
|
47534
|
+
inFlightCeoReplyUsers.delete(originUserId);
|
|
47535
|
+
for (const f of group) inFlightCeoReplyMessages.delete(f.id);
|
|
47470
47536
|
}
|
|
47471
47537
|
})();
|
|
47472
47538
|
}
|
|
@@ -52544,7 +52610,7 @@ var systemRoutes = new Hono2();
|
|
|
52544
52610
|
var startTime = Date.now();
|
|
52545
52611
|
systemRoutes.get("/system/info", (c) => {
|
|
52546
52612
|
return c.json({
|
|
52547
|
-
version: true ? "1.8.
|
|
52613
|
+
version: true ? "1.8.43" : "unknown",
|
|
52548
52614
|
uptime: Math.floor((Date.now() - startTime) / 1e3),
|
|
52549
52615
|
env: process.env.NODE_ENV || "development",
|
|
52550
52616
|
nodeVersion: process.version
|