duclaw-cli 1.8.19 → 1.8.21

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.19" : "unknown"}`);
30245
+ console.log(`duclaw-cli v${true ? "1.8.21" : "unknown"}`);
30246
30246
  }
30247
30247
  function getDuclawTemplate() {
30248
30248
  return {
@@ -46107,6 +46107,7 @@ var DESCRIPTION38 = `
46107
46107
  3. \u8C03\u7528 get_mailbox \u83B7\u53D6\u4F60\u8981\u5904\u7406\u7684\u90AE\u4EF6\u5B8C\u6574\u5185\u5BB9
46108
46108
  4. \u5904\u7406\u4E2D\u5982\u9700\u540C\u6B65\u8FDB\u5C55\u6216\u8FFD\u95EE\uFF0C\u8C03\u7528 mailbox_followup
46109
46109
  5. \u5F53\u524D\u6D88\u606F\u5F62\u6210\u6B63\u5F0F\u5904\u7406\u7ED3\u679C\u540E\uFF0C\u8C03\u7528 reply_mailbox \u56DE\u590D\u8BE5\u90AE\u4EF6
46110
+ 6. \u5982\u679C\u90AE\u4EF6\u53EA\u662F\u786E\u8BA4\u6027\u56DE\u6267\u3001\u7EAF\u901A\u77E5\u3001\u91CD\u590D\u6D88\u606F\u6216\u65E0\u9700\u8FDB\u4E00\u6B65\u884C\u52A8\uFF0C\u8C03\u7528 discard_mailbox \u4E22\u5F03\u5B83
46110
46111
  `;
46111
46112
  var listMailbox = {
46112
46113
  name: `list_mailbox`,
@@ -46250,8 +46251,98 @@ ${msg.content}`;
46250
46251
  }
46251
46252
  };
46252
46253
 
46253
- // src/tools/tools/department/ReplyMailbox.ts
46254
+ // src/tools/tools/department/DiscardMailbox.ts
46254
46255
  var DESCRIPTION40 = `
46256
+ \u4E22\u5F03\u4E00\u5C01\u65E0\u9700\u5904\u7406\u7684 mailbox \u90AE\u4EF6\uFF0C\u5E76\u5C06\u5B83\u4ECE\u5F85\u5904\u7406\u5217\u8868\u4E2D\u79FB\u9664\u3002
46257
+
46258
+ \u9002\u7528\u573A\u666F\uFF1A
46259
+ - \u786E\u8BA4\u6027\u56DE\u6267\u3001\u7EAF\u901A\u77E5\u3001\u91CD\u590D\u6D88\u606F
46260
+ - \u5DF2\u88AB\u5176\u4ED6\u90AE\u4EF6\u8986\u76D6\u7684\u4FE1\u606F
46261
+ - \u5224\u65AD\u65E0\u9700\u8FDB\u4E00\u6B65\u884C\u52A8\u7684\u6D88\u606F
46262
+
46263
+ \u53C2\u6570\uFF1A
46264
+ - message_id: \u8981\u4E22\u5F03\u7684\u90AE\u4EF6 id\uFF08\u4ECE list_mailbox \u4E2D\u83B7\u53D6\uFF09
46265
+ - reason: \u4E22\u5F03\u539F\u56E0\uFF0C\u4FBF\u4E8E\u5BA1\u8BA1
46266
+
46267
+ \u6CE8\u610F\uFF1A
46268
+ - \u6B64\u5DE5\u5177\u4E0D\u4F1A\u5411\u539F\u53D1\u9001\u8005\u53D1\u9001\u4E1A\u52A1\u56DE\u4FE1
46269
+ - \u5982\u679C\u90AE\u4EF6\u9700\u8981\u6B63\u5F0F\u7ED3\u679C\u6216\u5BF9\u65B9\u9700\u8981\u77E5\u9053\u5904\u7406\u7ED3\u8BBA\uFF0C\u5E94\u4F7F\u7528 reply_mailbox
46270
+ `;
46271
+ var discardMailbox = {
46272
+ name: `discard_mailbox`,
46273
+ description: DESCRIPTION40,
46274
+ input_schema: {
46275
+ type: `object`,
46276
+ properties: {
46277
+ message_id: {
46278
+ type: `string`,
46279
+ description: `\u8981\u4E22\u5F03\u7684\u90AE\u4EF6 id`
46280
+ },
46281
+ reason: {
46282
+ type: `string`,
46283
+ description: `\u4E22\u5F03\u539F\u56E0\uFF0C\u4F8B\u5982\uFF1A\u786E\u8BA4\u6027\u56DE\u6267\uFF0C\u65E0\u9700\u8FDB\u4E00\u6B65\u5904\u7406`
46284
+ }
46285
+ },
46286
+ required: [`message_id`, `reason`]
46287
+ },
46288
+ async execute(input, userRequest) {
46289
+ if (!userRequest?.departmentAgentId) {
46290
+ return `[discardMailbox] \u65E0\u6CD5\u786E\u5B9A\u5F53\u524D agent \u7684 mailboxId`;
46291
+ }
46292
+ const messageId = input.message_id;
46293
+ const reason = input.reason?.trim();
46294
+ if (!reason) {
46295
+ return `[discardMailbox] reason \u4E0D\u80FD\u4E3A\u7A7A`;
46296
+ }
46297
+ const myMailboxId = userRequest.departmentAgentId;
46298
+ const db3 = createSqliteDB();
46299
+ const stmt = db3.prepare(
46300
+ `SELECT
46301
+ id,
46302
+ from_mailbox_id as fromMailboxId,
46303
+ to_mailbox_id as toMailboxId,
46304
+ status,
46305
+ thread_id as threadId,
46306
+ parent_message_id as parentMessageId
46307
+ FROM mailbox WHERE id = ?`
46308
+ );
46309
+ const msg = stmt.get(messageId);
46310
+ if (!msg) {
46311
+ return `[discardMailbox] \u672A\u627E\u5230 id \u4E3A ${messageId} \u7684\u90AE\u4EF6`;
46312
+ }
46313
+ if (msg.toMailboxId !== myMailboxId) {
46314
+ return `[discardMailbox] \u8BE5\u90AE\u4EF6\u4E0D\u5C5E\u4E8E\u4F60\u7684\u90AE\u7BB1\uFF0C\u65E0\u6CD5\u4E22\u5F03`;
46315
+ }
46316
+ if (msg.status !== "pending" && msg.status !== "processing") {
46317
+ return `[discardMailbox] \u90AE\u4EF6 ${messageId} \u5F53\u524D\u72B6\u6001\u4E3A ${msg.status}\uFF0C\u5DF2\u5904\u7406\u6216\u4E0D\u53EF\u4E22\u5F03`;
46318
+ }
46319
+ const changed = updateMailboxMessageStatus(messageId, "cancelled", {
46320
+ fromStatus: ["pending", "processing"],
46321
+ actorMailboxId: myMailboxId,
46322
+ counterpartMailboxId: msg.fromMailboxId,
46323
+ reason: "discard_mailbox"
46324
+ });
46325
+ if (!changed) {
46326
+ return `[discardMailbox] \u90AE\u4EF6 ${messageId} \u72B6\u6001\u53D1\u751F\u53D8\u5316\uFF0C\u5DF2\u8DF3\u8FC7\u4E22\u5F03`;
46327
+ }
46328
+ recordMailboxEvent({
46329
+ messageId,
46330
+ mailboxId: myMailboxId,
46331
+ actorMailboxId: myMailboxId,
46332
+ counterpartMailboxId: msg.fromMailboxId,
46333
+ eventType: "message_discarded",
46334
+ detail: {
46335
+ reason,
46336
+ threadId: msg.threadId || msg.id,
46337
+ parentMessageId: msg.parentMessageId || null
46338
+ }
46339
+ });
46340
+ return `[discardMailbox] \u5DF2\u4E22\u5F03\u90AE\u4EF6 ${messageId}\uFF0C\u539F\u56E0\uFF1A${reason}`;
46341
+ }
46342
+ };
46343
+
46344
+ // src/tools/tools/department/ReplyMailbox.ts
46345
+ var DESCRIPTION41 = `
46255
46346
  \u6B63\u5F0F\u56DE\u590D\u4E00\u5C01\u90AE\u4EF6\u3002\u5BF9\u5F53\u524D\u6D88\u606F\u5F62\u6210\u660E\u786E\u7ED3\u8BBA\u540E\uFF0C\u4F7F\u7528\u6B64\u5DE5\u5177\u5C06\u7ED3\u679C\u53D1\u56DE\u7ED9\u90AE\u4EF6\u53D1\u9001\u8005\uFF0C\u5E76\u7ED3\u675F\u8FD9\u5C01\u6D88\u606F\u7684\u5904\u7406\u3002
46256
46347
 
46257
46348
  \u53C2\u6570\uFF1A
@@ -46264,7 +46355,7 @@ var DESCRIPTION40 = `
46264
46355
  `;
46265
46356
  var replyMailbox = {
46266
46357
  name: `reply_mailbox`,
46267
- description: DESCRIPTION40,
46358
+ description: DESCRIPTION41,
46268
46359
  input_schema: {
46269
46360
  type: `object`,
46270
46361
  properties: {
@@ -46461,7 +46552,7 @@ var wakeDepartmentAgent = async (mailboxId, msgIds) => {
46461
46552
  requestId: msgIds[0],
46462
46553
  departmentAgentId: mailboxId,
46463
46554
  workspacePath,
46464
- content: `\u4F60\u7684\u90AE\u7BB1\u4E2D\u6709 ${msgIds.length} \u5C01\u5F85\u5904\u7406\u90AE\u4EF6\u3002\u8BF7\u4F7F\u7528 list_mailbox \u67E5\u770B\u90AE\u4EF6\u5217\u8868\uFF0C\u6839\u636E\u91CD\u8981\u6027\u548C\u65F6\u6548\u6027\u9009\u62E9\u4E00\u5C01\u90AE\u4EF6\uFF0C\u518D\u7528 get_mailbox \u9886\u53D6\u5E76\u8BFB\u53D6\u8BE5\u90AE\u4EF6\u3002\u5B8C\u6210\u8FD9\u5C01\u90AE\u4EF6\u540E\u5FC5\u987B\u4F7F\u7528 reply_mailbox \u56DE\u590D\u5E76\u7ED3\u675F\u5B83\uFF0C\u7136\u540E\u7EE7\u7EED list_mailbox \u51B3\u5B9A\u4E0B\u4E00\u5C01\u8981\u5904\u7406\u6216\u5FFD\u7565\u7684\u90AE\u4EF6\u3002`
46555
+ content: `\u4F60\u7684\u90AE\u7BB1\u4E2D\u6709 ${msgIds.length} \u5C01\u5F85\u5904\u7406\u90AE\u4EF6\u3002\u8BF7\u4F7F\u7528 list_mailbox \u67E5\u770B\u90AE\u4EF6\u5217\u8868\uFF0C\u6839\u636E\u91CD\u8981\u6027\u548C\u65F6\u6548\u6027\u9009\u62E9\u4E00\u5C01\u90AE\u4EF6\uFF0C\u518D\u7528 get_mailbox \u9886\u53D6\u5E76\u8BFB\u53D6\u8BE5\u90AE\u4EF6\u3002\u5B8C\u6210\u8FD9\u5C01\u90AE\u4EF6\u540E\u5FC5\u987B\u4F7F\u7528 reply_mailbox \u56DE\u590D\u5E76\u7ED3\u675F\u5B83\uFF1B\u5982\u679C\u67D0\u5C01\u90AE\u4EF6\u53EA\u662F\u786E\u8BA4\u6027\u56DE\u6267\u3001\u91CD\u590D\u901A\u77E5\u6216\u65E0\u9700\u4E1A\u52A1\u56DE\u590D\uFF0C\u5FC5\u987B\u4F7F\u7528 discard_mailbox \u4E22\u5F03\u5E76\u7ED3\u675F\u5B83\u3002\u7136\u540E\u7EE7\u7EED list_mailbox \u51B3\u5B9A\u4E0B\u4E00\u5C01\u3002`
46465
46556
  };
46466
46557
  const result = await agent(request);
46467
46558
  console.log(`[mailbox] department agent ${mailboxId} \u5904\u7406\u5B8C\u6210, alreadySent=${result.alreadySent}`);
@@ -46637,6 +46728,7 @@ var createDepartmentAgentTools = () => {
46637
46728
  registerTool(registry2, taskGet);
46638
46729
  registerTool(registry2, listMailbox);
46639
46730
  registerTool(registry2, getMailbox);
46731
+ registerTool(registry2, discardMailbox);
46640
46732
  registerTool(registry2, mailboxFollowup);
46641
46733
  registerTool(registry2, replyMailbox);
46642
46734
  registerTool(registry2, departmentMemberList);
@@ -46680,13 +46772,15 @@ ${workspacePath ? `
46680
46772
  4. \u4F7F\u7528\u4F60\u7684\u4E13\u4E1A\u80FD\u529B\u548C\u5DE5\u5177\u5B8C\u6210\u90AE\u4EF6\u4E2D\u7684\u4EFB\u52A1
46681
46773
  5. \u5904\u7406\u4E2D\u5982\u679C\u9700\u8981\u540C\u6B65\u8FDB\u5C55\u3001\u8865\u5145\u90E8\u5206\u7ED3\u679C\u6216\u4E3B\u52A8\u8FFD\u95EE\uFF0C\u8C03\u7528 mailbox_followup(message_id, content)
46682
46774
  6. \u5F53\u4F60\u5BF9\u5F53\u524D\u6D88\u606F\u5F62\u6210\u6B63\u5F0F\u5904\u7406\u7ED3\u8BBA\u540E\uFF0C\u8C03\u7528 reply_mailbox(message_id, content) \u56DE\u590D\u8BE5\u90AE\u4EF6
46683
- 7. \u5982\u6709\u66F4\u591A\u90AE\u4EF6\uFF0C\u7EE7\u7EED\u5904\u7406\u4E0B\u4E00\u5C01
46775
+ 7. \u5982\u679C\u67D0\u5C01\u90AE\u4EF6\u53EA\u662F\u786E\u8BA4\u6027\u56DE\u6267\u3001\u7EAF\u901A\u77E5\u3001\u91CD\u590D\u4FE1\u606F\u3001\u5DF2\u88AB\u5176\u4ED6\u90AE\u4EF6\u8986\u76D6\u6216\u5224\u65AD\u65E0\u9700\u8FDB\u4E00\u6B65\u884C\u52A8\uFF0C\u8C03\u7528 discard_mailbox(message_id, reason) \u5C06\u5B83\u4ECE\u5F85\u5904\u7406\u5217\u8868\u79FB\u9664
46776
+ 8. \u5982\u6709\u66F4\u591A\u90AE\u4EF6\uFF0C\u7EE7\u7EED\u5904\u7406\u4E0B\u4E00\u5C01
46684
46777
 
46685
46778
  \u6CE8\u610F\u4E8B\u9879\uFF1A
46686
46779
  - 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
46687
46780
  - 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
46781
+ - 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
46688
46782
  - \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
46689
- - \u5982\u679C\u90AE\u4EF6\u4E2D\u7684\u4EFB\u52A1\u4F60\u5DF2\u7ECF\u5B8C\u6210\u6216\u4E0D\u9700\u8981\u5904\u7406\uFF0C\u53EF\u4EE5\u7528 reply_mailbox \u7B80\u77ED\u56DE\u590D\u8BF4\u660E\u539F\u56E0\uFF08\u5982"\u5DF2\u5B8C\u6210\uFF0C\u65E0\u9700\u5904\u7406"\uFF09\uFF0C\u7136\u540E\u7EE7\u7EED\u4E0B\u4E00\u5C01
46783
+ - \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
46690
46784
  - \u5982\u679C\u9700\u8981\u4E3B\u52A8\u8054\u7CFB\u5176\u4ED6\u90E8\u95E8\u6210\u5458\uFF0C\u4F7F\u7528 department_communicate \u5DE5\u5177
46691
46785
  - \u5982\u679C\u4F60\u662F Department Head\uFF0C\u5904\u7406\u590D\u6742\u4EFB\u52A1\u524D\u53EF\u4EE5\u4F7F\u7528 department_member_list \u67E5\u770B\u672C\u90E8\u95E8\u5DF2\u6709\u6210\u5458\uFF0C\u5E76\u5728\u9700\u8981\u65F6\u4F7F\u7528 department_member_create \u521B\u5EFA Executor
46692
46786
  - \u5982\u679C\u4F60\u4E0D\u662F Department Head\uFF0C\u4E0D\u8981\u5C1D\u8BD5\u67E5\u770B\u5B8C\u6574\u90E8\u95E8\u6210\u5458\u76EE\u5F55\u6216\u521B\u5EFA\u6210\u5458
@@ -51536,7 +51630,7 @@ var systemRoutes = new Hono2();
51536
51630
  var startTime = Date.now();
51537
51631
  systemRoutes.get("/system/info", (c) => {
51538
51632
  return c.json({
51539
- version: true ? "1.8.19" : "unknown",
51633
+ version: true ? "1.8.21" : "unknown",
51540
51634
  uptime: Math.floor((Date.now() - startTime) / 1e3),
51541
51635
  env: process.env.NODE_ENV || "development",
51542
51636
  nodeVersion: process.version