duclaw-cli 1.8.35 → 1.8.37

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 CHANGED
@@ -30242,7 +30242,7 @@ function printHelp() {
30242
30242
  `);
30243
30243
  }
30244
30244
  function printVersion() {
30245
- console.log(`duclaw-cli v${true ? "1.8.35" : "unknown"}`);
30245
+ console.log(`duclaw-cli v${true ? "1.8.37" : "unknown"}`);
30246
30246
  }
30247
30247
  function getDuclawTemplate() {
30248
30248
  return {
@@ -41463,6 +41463,9 @@ var create_mailbox_table = () => {
41463
41463
  origin_platform TEXT,
41464
41464
  thread_id TEXT,
41465
41465
  parent_message_id TEXT,
41466
+ work_item_id TEXT,
41467
+ work_item_role TEXT,
41468
+ upstream_message_id TEXT,
41466
41469
  send_time INTEGER DEFAULT ((strftime('%s', 'now')) * 1000),
41467
41470
  created_at INTEGER DEFAULT ((strftime('%s', 'now')) * 1000),
41468
41471
  updated_at INTEGER DEFAULT ((strftime('%s', 'now')) * 1000)
@@ -41486,9 +41489,23 @@ var create_mailbox_table = () => {
41486
41489
  db3.exec(`ALTER TABLE mailbox ADD COLUMN parent_message_id TEXT`);
41487
41490
  } catch (_) {
41488
41491
  }
41492
+ try {
41493
+ db3.exec(`ALTER TABLE mailbox ADD COLUMN work_item_id TEXT`);
41494
+ } catch (_) {
41495
+ }
41496
+ try {
41497
+ db3.exec(`ALTER TABLE mailbox ADD COLUMN work_item_role TEXT`);
41498
+ } catch (_) {
41499
+ }
41500
+ try {
41501
+ db3.exec(`ALTER TABLE mailbox ADD COLUMN upstream_message_id TEXT`);
41502
+ } catch (_) {
41503
+ }
41489
41504
  const columns = db3.prepare(`PRAGMA table_info(mailbox)`).all();
41490
41505
  const hasThreadId = columns.some((column) => column.name === "thread_id");
41491
41506
  const hasParentMessageId = columns.some((column) => column.name === "parent_message_id");
41507
+ const hasWorkItemId = columns.some((column) => column.name === "work_item_id");
41508
+ const hasUpstreamMessageId = columns.some((column) => column.name === "upstream_message_id");
41492
41509
  if (hasThreadId) {
41493
41510
  db3.exec(`
41494
41511
  CREATE INDEX IF NOT EXISTS idx_mailbox_thread
@@ -41502,6 +41519,18 @@ var create_mailbox_table = () => {
41502
41519
  ON mailbox(parent_message_id)
41503
41520
  `);
41504
41521
  }
41522
+ if (hasWorkItemId) {
41523
+ db3.exec(`
41524
+ CREATE INDEX IF NOT EXISTS idx_mailbox_work_item
41525
+ ON mailbox(work_item_id, send_time DESC)
41526
+ `);
41527
+ }
41528
+ if (hasUpstreamMessageId) {
41529
+ db3.exec(`
41530
+ CREATE INDEX IF NOT EXISTS idx_mailbox_upstream
41531
+ ON mailbox(upstream_message_id)
41532
+ `);
41533
+ }
41505
41534
  };
41506
41535
  var create_mailbox_events_table = () => {
41507
41536
  const db3 = createSqliteDB();
@@ -42102,6 +42131,87 @@ var cancelMailboxMessages = (mailboxId) => {
42102
42131
  }
42103
42132
  return messages.length;
42104
42133
  };
42134
+ var getWorkItemContextFromMessage = (messageId) => {
42135
+ if (!messageId) return null;
42136
+ const db3 = createSqliteDB();
42137
+ const row = db3.prepare(
42138
+ `SELECT
42139
+ work_item_id as workItemId,
42140
+ work_item_role as workItemRole,
42141
+ upstream_message_id as upstreamMessageId
42142
+ FROM mailbox
42143
+ WHERE id = ?`
42144
+ ).get(messageId);
42145
+ if (!row?.workItemId) return null;
42146
+ return row;
42147
+ };
42148
+ var getWorkItemContextFromThread = (threadId) => {
42149
+ if (!threadId) return null;
42150
+ const db3 = createSqliteDB();
42151
+ const row = db3.prepare(
42152
+ `SELECT
42153
+ work_item_id as workItemId,
42154
+ work_item_role as workItemRole,
42155
+ upstream_message_id as upstreamMessageId
42156
+ FROM mailbox
42157
+ WHERE thread_id = ?
42158
+ AND work_item_id IS NOT NULL
42159
+ ORDER BY send_time ASC
42160
+ LIMIT 1`
42161
+ ).get(threadId);
42162
+ if (!row?.workItemId) return null;
42163
+ return row;
42164
+ };
42165
+ var mailboxLooksLikeRole = (mailboxId, role) => {
42166
+ const lower = mailboxId.toLowerCase();
42167
+ if (role === "department_head") {
42168
+ return lower.includes("department-head") || mailboxId.includes("\u8D1F\u8D23\u4EBA");
42169
+ }
42170
+ return lower.includes("executor") || mailboxId.includes("\u6267\u884C\u8005") || mailboxId.includes("\u4E13\u5458");
42171
+ };
42172
+ var inferWorkItemRole = (fromMailboxId, toMailboxId, inherited) => {
42173
+ if (fromMailboxId === "manager") return "upstream_request";
42174
+ if (toMailboxId === "manager") return "upstream_report";
42175
+ const fromMember = getDepartmentMemberByMailboxId(fromMailboxId);
42176
+ const toMember = getDepartmentMemberByMailboxId(toMailboxId);
42177
+ const fromIsHead = fromMember?.role === "department_head" || mailboxLooksLikeRole(fromMailboxId, "department_head");
42178
+ const toIsHead = toMember?.role === "department_head" || mailboxLooksLikeRole(toMailboxId, "department_head");
42179
+ const fromIsExecutor = fromMember?.role === "executor" || mailboxLooksLikeRole(fromMailboxId, "executor");
42180
+ const toIsExecutor = toMember?.role === "executor" || mailboxLooksLikeRole(toMailboxId, "executor");
42181
+ if (fromIsHead && toIsExecutor) {
42182
+ return inherited?.workItemRole === "executor_result" ? "downstream_reply" : "delegation";
42183
+ }
42184
+ if (fromIsExecutor && toIsHead) return "executor_result";
42185
+ return inherited?.workItemRole ? "followup" : "message";
42186
+ };
42187
+ var resolveWorkItemContext = (fromMailboxId, toMailboxId, id, options) => {
42188
+ if (options?.workItemId) {
42189
+ return {
42190
+ workItemId: options.workItemId,
42191
+ workItemRole: options.workItemRole ?? inferWorkItemRole(fromMailboxId, toMailboxId),
42192
+ upstreamMessageId: options.upstreamMessageId ?? options.workItemId
42193
+ };
42194
+ }
42195
+ const inherited = getWorkItemContextFromMessage(options?.parentMessageId) ?? getWorkItemContextFromThread(options?.threadId);
42196
+ if (inherited?.workItemId) {
42197
+ return {
42198
+ workItemId: inherited.workItemId,
42199
+ workItemRole: options?.workItemRole ?? inferWorkItemRole(fromMailboxId, toMailboxId, inherited),
42200
+ upstreamMessageId: inherited.upstreamMessageId ?? inherited.workItemId
42201
+ };
42202
+ }
42203
+ const targetMember = getDepartmentMemberByMailboxId(toMailboxId);
42204
+ if (fromMailboxId === "manager" && targetMember?.role === "department_head") {
42205
+ return {
42206
+ workItemId: id,
42207
+ workItemRole: "upstream_request",
42208
+ upstreamMessageId: id
42209
+ };
42210
+ }
42211
+ return {
42212
+ workItemRole: options?.workItemRole ?? inferWorkItemRole(fromMailboxId, toMailboxId)
42213
+ };
42214
+ };
42105
42215
  var buildMailboxInterruptContent = (msg) => {
42106
42216
  const from = msg.fromMailboxId;
42107
42217
  return [
@@ -42157,6 +42267,9 @@ var recordMailboxReceivedAgentEvent = (msg) => {
42157
42267
  };
42158
42268
  var sendMessage2 = (fromMailboxId, toMailboxId, content, options) => {
42159
42269
  const db3 = createSqliteDB();
42270
+ const id = (0, import_node_crypto4.randomUUID)().slice(0, 8);
42271
+ const threadId = options?.threadId || id;
42272
+ const workItemContext = resolveWorkItemContext(fromMailboxId, toMailboxId, id, options);
42160
42273
  const stmt = db3.prepare(`insert into mailbox (
42161
42274
  id,
42162
42275
  to_mailbox_id,
@@ -42167,10 +42280,11 @@ var sendMessage2 = (fromMailboxId, toMailboxId, content, options) => {
42167
42280
  origin_user_id,
42168
42281
  origin_platform,
42169
42282
  thread_id,
42170
- parent_message_id
42171
- ) values (?,?,?,?,?,?,?,?,?,?) `);
42172
- const id = (0, import_node_crypto4.randomUUID)().slice(0, 8);
42173
- const threadId = options?.threadId || id;
42283
+ parent_message_id,
42284
+ work_item_id,
42285
+ work_item_role,
42286
+ upstream_message_id
42287
+ ) values (?,?,?,?,?,?,?,?,?,?,?,?,?) `);
42174
42288
  let mailboxMsg = {
42175
42289
  id,
42176
42290
  toMailboxId,
@@ -42181,7 +42295,10 @@ var sendMessage2 = (fromMailboxId, toMailboxId, content, options) => {
42181
42295
  originUserId: options?.originUserId,
42182
42296
  originPlatform: options?.originPlatform,
42183
42297
  threadId,
42184
- parentMessageId: options?.parentMessageId
42298
+ parentMessageId: options?.parentMessageId,
42299
+ workItemId: workItemContext.workItemId,
42300
+ workItemRole: workItemContext.workItemRole,
42301
+ upstreamMessageId: workItemContext.upstreamMessageId
42185
42302
  };
42186
42303
  const result = stmt.run(
42187
42304
  mailboxMsg.id,
@@ -42193,7 +42310,10 @@ var sendMessage2 = (fromMailboxId, toMailboxId, content, options) => {
42193
42310
  mailboxMsg.originUserId || null,
42194
42311
  mailboxMsg.originPlatform || null,
42195
42312
  mailboxMsg.threadId || mailboxMsg.id,
42196
- mailboxMsg.parentMessageId || null
42313
+ mailboxMsg.parentMessageId || null,
42314
+ mailboxMsg.workItemId || null,
42315
+ mailboxMsg.workItemRole || null,
42316
+ mailboxMsg.upstreamMessageId || null
42197
42317
  );
42198
42318
  recordMailboxEvent({
42199
42319
  messageId: mailboxMsg.id,
@@ -42203,6 +42323,9 @@ var sendMessage2 = (fromMailboxId, toMailboxId, content, options) => {
42203
42323
  eventType: "message_sent",
42204
42324
  detail: {
42205
42325
  initialStatus: mailboxMsg.status,
42326
+ workItemId: mailboxMsg.workItemId ?? null,
42327
+ workItemRole: mailboxMsg.workItemRole ?? null,
42328
+ upstreamMessageId: mailboxMsg.upstreamMessageId ?? null,
42206
42329
  ...options?.auditDetail ?? {}
42207
42330
  },
42208
42331
  createdAt: mailboxMsg.sendTime
@@ -42314,7 +42437,9 @@ var getActiveMailboxContext = (actorMailboxId, messageId) => {
42314
42437
  to_mailbox_id as toMailboxId,
42315
42438
  origin_user_id as originUserId,
42316
42439
  origin_platform as originPlatform,
42317
- thread_id as threadId
42440
+ thread_id as threadId,
42441
+ work_item_id as workItemId,
42442
+ upstream_message_id as upstreamMessageId
42318
42443
  FROM mailbox
42319
42444
  WHERE id = ?
42320
42445
  AND (from_mailbox_id = ? OR to_mailbox_id = ?)`
@@ -42420,6 +42545,8 @@ var departmentCommunicate = {
42420
42545
  options.originPlatform = activeContext.originPlatform;
42421
42546
  options.threadId = activeContext.threadId || activeContext.id;
42422
42547
  options.parentMessageId = activeContext.id;
42548
+ options.workItemId = activeContext.workItemId;
42549
+ options.upstreamMessageId = activeContext.upstreamMessageId;
42423
42550
  }
42424
42551
  }
42425
42552
  try {
@@ -46472,7 +46599,10 @@ var discardMailbox = {
46472
46599
  id,
46473
46600
  from_mailbox_id as fromMailboxId,
46474
46601
  to_mailbox_id as toMailboxId,
46602
+ content,
46475
46603
  status,
46604
+ origin_user_id as originUserId,
46605
+ origin_platform as originPlatform,
46476
46606
  thread_id as threadId,
46477
46607
  parent_message_id as parentMessageId
46478
46608
  FROM mailbox WHERE id = ?`
@@ -46487,6 +46617,13 @@ var discardMailbox = {
46487
46617
  if (msg.status !== "pending" && msg.status !== "processing") {
46488
46618
  return `[discardMailbox] \u90AE\u4EF6 ${messageId} \u5F53\u524D\u72B6\u6001\u4E3A ${msg.status}\uFF0C\u5DF2\u5904\u7406\u6216\u4E0D\u53EF\u4E22\u5F03`;
46489
46619
  }
46620
+ if (msg.fromMailboxId === "manager" && msg.originUserId) {
46621
+ return [
46622
+ `[discardMailbox] \u62D2\u7EDD\u4E22\u5F03 manager/CEO \u8F6C\u6765\u7684\u7528\u6237\u4E0A\u4E0B\u6587\u90AE\u4EF6 ${messageId}\u3002`,
46623
+ `\u8FD9\u7C7B\u90AE\u4EF6\u4EE3\u8868\u4E0A\u6E38\u6B63\u5728\u7B49\u5F85\u4E1A\u52A1\u7ED3\u8BBA\u6216\u8FDB\u5EA6\u540C\u6B65\uFF0C\u4E0D\u80FD\u7528 discard_mailbox \u9759\u9ED8\u5173\u95ED\u3002`,
46624
+ `\u8BF7\u6539\u7528 reply_mailbox(message_id="${messageId}", content="...") \u76F4\u63A5\u56DE\u590D\u5F53\u524D\u72B6\u6001\u3001\u6700\u7EC8\u7ED3\u679C\u6216\u660E\u786E\u963B\u585E\u9879\uFF1B\u5982\u4ECD\u9700\u7B49\u5F85\u4E0B\u6E38\uFF0C\u56DE\u590D\u201C\u6B63\u5728\u7B49\u5F85\u8C01/\u54EA\u4E00\u6B65/\u4E0B\u4E00\u6B21\u540C\u6B65\u65F6\u95F4\u201D\u3002`
46625
+ ].join("\n");
46626
+ }
46490
46627
  const changed = updateMailboxMessageStatus(messageId, "cancelled", {
46491
46628
  fromStatus: ["pending", "processing"],
46492
46629
  actorMailboxId: myMailboxId,
@@ -46524,9 +46661,25 @@ var DESCRIPTION41 = `
46524
46661
  1. \u5C06\u56DE\u590D\u5185\u5BB9\u53D1\u9001\u5230\u539F\u53D1\u9001\u8005\u7684\u90AE\u7BB1
46525
46662
  2. \u5C06\u8BE5\u90AE\u4EF6\u6807\u8BB0\u4E3A\u5DF2\u5904\u7406\uFF08done\uFF09
46526
46663
  `;
46527
- var findUpstreamManagerMessage = (myMailboxId, threadId) => {
46528
- if (!threadId) return null;
46664
+ var findUpstreamManagerMessage = (myMailboxId, threadId, workItemId) => {
46529
46665
  const db3 = createSqliteDB();
46666
+ if (workItemId) {
46667
+ const row2 = db3.prepare(
46668
+ `SELECT
46669
+ id,
46670
+ from_mailbox_id as fromMailboxId,
46671
+ to_mailbox_id as toMailboxId,
46672
+ status
46673
+ FROM mailbox
46674
+ WHERE work_item_id = ?
46675
+ AND from_mailbox_id = 'manager'
46676
+ AND to_mailbox_id = ?
46677
+ ORDER BY send_time ASC
46678
+ LIMIT 1`
46679
+ ).get(workItemId, myMailboxId);
46680
+ if (row2) return row2;
46681
+ }
46682
+ if (!threadId) return null;
46530
46683
  const row = db3.prepare(
46531
46684
  `SELECT
46532
46685
  id,
@@ -46542,16 +46695,18 @@ var findUpstreamManagerMessage = (myMailboxId, threadId) => {
46542
46695
  ).get(threadId, myMailboxId);
46543
46696
  return row ?? null;
46544
46697
  };
46545
- var buildUpstreamReminder = (myMailboxId, repliedToMailboxId, threadId) => {
46698
+ var buildUpstreamReminder = (myMailboxId, repliedToMailboxId, threadId, workItemId) => {
46546
46699
  const member = getDepartmentMemberByMailboxId(myMailboxId);
46547
- if (member?.role !== "department_head") return "";
46700
+ const looksLikeHead = myMailboxId.toLowerCase().includes("department-head") || myMailboxId.includes("\u8D1F\u8D23\u4EBA");
46701
+ if (member?.role !== "department_head" && !looksLikeHead) return "";
46548
46702
  if (repliedToMailboxId === "manager") return "";
46549
- const upstream = findUpstreamManagerMessage(myMailboxId, threadId);
46703
+ const upstream = findUpstreamManagerMessage(myMailboxId, threadId, workItemId);
46550
46704
  if (!upstream) return "";
46705
+ if (upstream.status === "done" || upstream.status === "read") return "";
46551
46706
  return [
46552
46707
  ``,
46553
- `[replyMailbox] \u63D0\u9192\uFF1A\u4F60\u521A\u521A\u56DE\u590D\u7684\u662F\u4E0B\u6E38\u6210\u5458 ${repliedToMailboxId}\uFF0C\u4F46\u672C\u7EBF\u7A0B\u7684\u4E0A\u6E38 manager \u90AE\u4EF6 ${upstream.id} \u4ECD\u9700\u8981\u4F60\u540C\u6B65\u6700\u7EC8\u9A8C\u6536/\u6C47\u603B\u3002`,
46554
- `\u5982\u679C\u8FD9\u6B21\u56DE\u590D\u4EE3\u8868\u4EFB\u52A1\u5DF2\u5B8C\u6210\u6216\u5DF2\u9A8C\u6536\uFF0C\u8BF7\u7EE7\u7EED\u8C03\u7528 reply_mailbox(message_id="${upstream.id}", content="...")\uFF08\u82E5\u8BE5\u90AE\u4EF6\u4ECD\u5728 processing\uFF09\uFF0C\u6216 mailbox_followup(message_id="${upstream.id}", content="...", kind="partial_result") \u5C06\u7ED3\u679C\u540C\u6B65\u7ED9 manager\u3002`
46708
+ `[replyMailbox] \u5F3A\u5236\u95ED\u73AF\u63D0\u9192\uFF1A\u4F60\u521A\u521A\u56DE\u590D\u7684\u662F\u4E0B\u6E38\u6210\u5458 ${repliedToMailboxId}\uFF0C\u4F46 work_item \u7684\u4E0A\u6E38 manager \u90AE\u4EF6 ${upstream.id} \u5F53\u524D\u72B6\u6001\u4E3A ${upstream.status}\uFF0C\u4ECD\u9700\u8981\u6700\u7EC8\u6C47\u62A5\u3002`,
46709
+ `\u5982\u679C\u8FD9\u6B21\u56DE\u590D\u4EE3\u8868\u4EFB\u52A1\u5DF2\u5B8C\u6210\u6216\u5DF2\u9A8C\u6536\uFF0C\u8BF7\u7EE7\u7EED\u8C03\u7528 reply_mailbox(message_id="${upstream.id}", content="...") \u5C06\u6700\u7EC8\u7ED3\u679C\u540C\u6B65\u7ED9 manager\uFF1B\u5982\u679C\u4ECD\u5728\u7B49\u5F85\u4E0B\u6E38\uFF0C\u8BF7\u7528 mailbox_followup(message_id="${upstream.id}", content="...", kind="progress") \u6C47\u62A5\u5F53\u524D\u8FDB\u5EA6\u3002`
46555
46710
  ].join("\n");
46556
46711
  };
46557
46712
  var replyMailbox = {
@@ -46588,7 +46743,10 @@ var replyMailbox = {
46588
46743
  origin_user_id as originUserId,
46589
46744
  origin_platform as originPlatform,
46590
46745
  thread_id as threadId,
46591
- parent_message_id as parentMessageId
46746
+ parent_message_id as parentMessageId,
46747
+ work_item_id as workItemId,
46748
+ work_item_role as workItemRole,
46749
+ upstream_message_id as upstreamMessageId
46592
46750
  FROM mailbox WHERE id = ?`
46593
46751
  );
46594
46752
  const msg = stmt.get(messageId);
@@ -46598,11 +46756,12 @@ var replyMailbox = {
46598
46756
  if (msg.toMailboxId !== myMailboxId) {
46599
46757
  return `[replyMailbox] \u8BE5\u90AE\u4EF6\u4E0D\u5C5E\u4E8E\u4F60\u7684\u90AE\u7BB1\uFF0C\u65E0\u6CD5\u56DE\u590D`;
46600
46758
  }
46601
- if (msg.status !== "processing") {
46759
+ if (msg.status !== "pending" && msg.status !== "processing") {
46602
46760
  return `[replyMailbox] \u90AE\u4EF6 ${messageId} \u5F53\u524D\u72B6\u6001\u4E3A ${msg.status}\uFF0C\u5DF2\u5904\u7406\u6216\u4E0D\u53EF\u56DE\u590D\uFF0C\u65E0\u9700\u91CD\u590D\u53D1\u9001`;
46603
46761
  }
46762
+ const claimedFromPending = msg.status === "pending";
46604
46763
  const changed = updateMailboxMessageStatus(messageId, "done", {
46605
- fromStatus: "processing",
46764
+ fromStatus: ["pending", "processing"],
46606
46765
  actorMailboxId: myMailboxId,
46607
46766
  counterpartMailboxId: msg.fromMailboxId,
46608
46767
  reason: "reply_mailbox"
@@ -46614,7 +46773,10 @@ var replyMailbox = {
46614
46773
  originUserId: msg.originUserId,
46615
46774
  originPlatform: msg.originPlatform,
46616
46775
  threadId: msg.threadId || msg.id,
46617
- parentMessageId: msg.id
46776
+ parentMessageId: msg.id,
46777
+ workItemId: msg.workItemId,
46778
+ workItemRole: msg.workItemRole === "executor_result" ? "downstream_reply" : void 0,
46779
+ upstreamMessageId: msg.upstreamMessageId
46618
46780
  });
46619
46781
  recordMailboxEvent({
46620
46782
  messageId,
@@ -46625,11 +46787,13 @@ var replyMailbox = {
46625
46787
  detail: {
46626
46788
  replyPreview: content.slice(0, 200),
46627
46789
  replyMessageId: replyMsg.id,
46628
- threadId: replyMsg.threadId || msg.threadId || msg.id
46790
+ threadId: replyMsg.threadId || msg.threadId || msg.id,
46791
+ workItemId: msg.workItemId ?? null,
46792
+ upstreamMessageId: msg.upstreamMessageId ?? null
46629
46793
  }
46630
46794
  });
46631
- const upstreamReminder = buildUpstreamReminder(myMailboxId, msg.fromMailboxId, msg.threadId || msg.id);
46632
- return `[replyMailbox] \u5DF2\u6B63\u5F0F\u56DE\u590D\u90AE\u4EF6 ${messageId}\uFF0C\u56DE\u590D\u6D88\u606F ${replyMsg.id} \u5DF2\u53D1\u9001\u5230 ${msg.fromMailboxId} \u7684\u90AE\u7BB1\uFF08thread: ${replyMsg.threadId}\uFF09${upstreamReminder}`;
46795
+ const upstreamReminder = buildUpstreamReminder(myMailboxId, msg.fromMailboxId, msg.threadId || msg.id, msg.workItemId);
46796
+ return `[replyMailbox] ${claimedFromPending ? "\u5DF2\u9886\u53D6\u5E76" : "\u5DF2"}\u6B63\u5F0F\u56DE\u590D\u90AE\u4EF6 ${messageId}\uFF0C\u56DE\u590D\u6D88\u606F ${replyMsg.id} \u5DF2\u53D1\u9001\u5230 ${msg.fromMailboxId} \u7684\u90AE\u7BB1\uFF08thread: ${replyMsg.threadId}\uFF09${upstreamReminder}`;
46633
46797
  }
46634
46798
  };
46635
46799
 
@@ -46999,6 +47163,7 @@ ${workspacePath ? `
46999
47163
  - mailbox_followup \u53EF\u4EE5\u8C03\u7528\u591A\u6B21\uFF0C\u7528\u4E8E\u7EBF\u7A0B\u5185\u6301\u7EED\u534F\u4F5C\uFF1B\u5B83\u4E0D\u4F1A\u7ED3\u675F\u539F\u6D88\u606F
47000
47164
  - reply_mailbox \u8868\u793A\u201C\u5F53\u524D\u8FD9\u5C01\u6D88\u606F\u6211\u5DF2\u5F62\u6210\u6B63\u5F0F\u56DE\u590D\u201D\uFF0C\u4F1A\u7ED3\u675F\u8FD9\u5C01\u6D88\u606F\u7684\u5904\u7406
47001
47165
  - discard_mailbox \u8868\u793A\u201C\u5F53\u524D\u8FD9\u5C01\u6D88\u606F\u65E0\u9700\u4E1A\u52A1\u56DE\u590D\u201D\uFF0C\u4F1A\u7ED3\u675F\u8FD9\u5C01\u6D88\u606F\u4F46\u4E0D\u4F1A\u5411\u53D1\u9001\u8005\u53D1\u9001\u56DE\u4FE1\uFF1B\u4E0D\u8981\u53EA\u7528\u81EA\u7136\u8BED\u8A00\u8BF4\u201C\u5FFD\u7565\u201D
47166
+ - \u6765\u81EA manager/CEO \u4E14\u5E26\u6709\u7528\u6237\u4E0A\u4E0B\u6587\u7684\u90AE\u4EF6\uFF0C\u5C24\u5176\u662F\u201C\u73B0\u5728\u600E\u4E48\u6837 / \u56DE\u4E86\u5417 / \u8FDB\u5EA6 / \u62A5\u544A\u51FA\u6765\u6CA1 / \u5361\u5728\u54EA / \u50AC\u4E00\u4E0B\u201D\u8FD9\u7C7B\u8FFD\u95EE\uFF0C\u5FC5\u987B\u4F7F\u7528 reply_mailbox \u76F4\u63A5\u56DE\u590D\u5F53\u524D\u72B6\u6001\u3001\u6700\u7EC8\u7ED3\u679C\u6216\u660E\u786E\u963B\u585E\u9879\uFF1B\u5373\u4F7F\u4F60\u8BA4\u4E3A\u5185\u5BB9\u91CD\u590D\uFF0C\u4E5F\u4E0D\u80FD\u7528 discard_mailbox \u9759\u9ED8\u5173\u95ED
47002
47167
  - \u4E0D\u8981\u628A\u4E00\u6BB5\u6700\u7EC8\u56DE\u590D\u540C\u65F6\u5F53\u4F5C\u591A\u5C01\u90AE\u4EF6\u7684\u7B54\u6848\uFF1B\u6BCF\u5C01\u90AE\u4EF6\u90FD\u5FC5\u987B\u7528\u5B83\u81EA\u5DF1\u7684 message_id \u56DE\u590D
47003
47168
  - \u5982\u679C\u53D1\u9001\u8005\u9700\u8981\u77E5\u9053\u5904\u7406\u7ED3\u8BBA\uFF0C\u5FC5\u987B\u7528 reply_mailbox\uFF1B\u5982\u679C\u53EA\u662F\u65E0\u9700\u56DE\u5E94\u7684\u56DE\u6267/\u91CD\u590D\u901A\u77E5\uFF0C\u624D\u7528 discard_mailbox
47004
47169
  - \u5982\u679C\u9700\u8981\u4E3B\u52A8\u8054\u7CFB\u5176\u4ED6\u90E8\u95E8\u6210\u5458\uFF0C\u4F7F\u7528 department_communicate \u5DE5\u5177
@@ -47019,6 +47184,7 @@ ${workspacePath ? `
47019
47184
  6. \u53EA\u6709\u5F53\u90AE\u4EF6\u660E\u786E\u8981\u6C42 Department Head \u4EB2\u81EA\u6267\u884C\u3001\u5F53\u524D\u90E8\u95E8\u6CA1\u6709\u53EF\u7528 Executor \u4E14\u77ED\u671F\u65E0\u6CD5\u521B\u5EFA\u3001\u6216 Executor \u660E\u786E\u5931\u8D25\u4E14\u4E0A\u6E38\u540C\u610F Head \u63A5\u7BA1\u65F6\uFF0CDepartment Head \u624D\u80FD\u4EB2\u81EA\u4F7F\u7528\u6267\u884C\u7C7B\u5DE5\u5177\u5B8C\u6210\u4E13\u4E1A\u6267\u884C\u3002
47020
47185
  7. \u6536\u5230 Executor \u56DE\u4FE1\u540E\uFF0CDepartment Head \u5E94\u505A\u9A8C\u6536\u548C\u6C47\u603B\uFF1A\u5FC5\u8981\u65F6\u53EF\u4EE5\u68C0\u67E5\u5C11\u91CF\u5173\u952E\u8BC1\u636E\uFF0C\u4F46\u4E0D\u8981\u628A Executor \u7684\u5B8C\u6574\u6267\u884C\u804C\u8D23\u91CD\u65B0\u81EA\u5DF1\u505A\u4E00\u904D\u3002
47021
47186
  8. Department Head \u9A8C\u6536 Executor \u7ED3\u679C\u540E\uFF0C\u5FC5\u987B\u56DE\u5230\u4E0A\u6E38\u8BF7\u6C42\u7EBF\u7A0B\u5411\u539F\u53D1\u9001\u8005\u540C\u6B65\u6700\u7EC8\u7ED3\u8BBA\u3002\u82E5\u4E0A\u6E38\u662F manager/CEO\uFF0C\u4F7F\u7528\u539F manager \u90AE\u4EF6\u7684 message_id \u8C03\u7528 reply_mailbox \u6216 mailbox_followup\uFF1B\u4E0D\u8981\u53EA\u628A\u201C\u9A8C\u6536\u901A\u8FC7/\u5B8C\u6210\u6C47\u62A5\u201D\u56DE\u590D\u7ED9 Executor\uFF0C\u5426\u5219 CEO \u548C\u7528\u6237\u4E0D\u4F1A\u6536\u5230\u7ED3\u679C\u3002
47187
+ 9. \u5982\u679C\u4E0A\u6E38 manager/CEO \u540E\u7EED\u50AC\u95EE\u540C\u4E00\u7EBF\u7A0B\uFF0C\u5373\u4F7F\u4F60\u5DF2\u7ECF\u638C\u63E1\u6700\u7EC8\u62A5\u544A\uFF0C\u4E5F\u8981\u628A\u6700\u7EC8\u62A5\u544A\u6216\u7B80\u660E\u72B6\u6001\u56DE\u7ED9 manager/CEO\uFF1B\u50AC\u95EE\u4E0D\u662F\u53EF\u4E22\u5F03\u901A\u77E5\u3002
47022
47188
  </Department Head Delegation Rules>
47023
47189
 
47024
47190
  <Task Execution>
@@ -51989,7 +52155,7 @@ var systemRoutes = new Hono2();
51989
52155
  var startTime = Date.now();
51990
52156
  systemRoutes.get("/system/info", (c) => {
51991
52157
  return c.json({
51992
- version: true ? "1.8.35" : "unknown",
52158
+ version: true ? "1.8.37" : "unknown",
51993
52159
  uptime: Math.floor((Date.now() - startTime) / 1e3),
51994
52160
  env: process.env.NODE_ENV || "development",
51995
52161
  nodeVersion: process.version