duclaw-cli 1.6.0 → 1.7.0

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/README.md CHANGED
@@ -132,3 +132,11 @@ pnpm build
132
132
  ## License
133
133
 
134
134
  Private
135
+
136
+ ## 打赏
137
+
138
+ 如果 Duclaw 对你有帮助,欢迎请作者喝杯咖啡 ☕
139
+
140
+ <p align="center">
141
+ <img src="https://raw.githubusercontent.com/DZCD/agent-template-ts/main/docs/a26aee81e6e5ba739ebb7abfd9dadfad.jpg" alt="打赏二维码" width="300">
142
+ </p>
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.6.0" : "unknown"}`);
30245
+ console.log(`duclaw-cli v${true ? "1.7.0" : "unknown"}`);
30246
30246
  }
30247
30247
  function getDuclawTemplate() {
30248
30248
  return {
@@ -35445,7 +35445,40 @@ var getMessages = async (storage, userId, limit = 100, date, cronTitle) => {
35445
35445
  start = later;
35446
35446
  }
35447
35447
  }
35448
- return data.slice(start);
35448
+ return sanitizeMessages(data.slice(start));
35449
+ };
35450
+ var sanitizeMessages = (messages) => {
35451
+ if (messages.length === 0) return messages;
35452
+ const result = [];
35453
+ for (let i = 0; i < messages.length; i++) {
35454
+ const msg = messages[i];
35455
+ if (!msg.content || msg.content.length === 0) continue;
35456
+ if (msg.role === "assistant") {
35457
+ const toolUses = msg.content.filter((b) => b.type === "tool_use");
35458
+ if (toolUses.length > 0) {
35459
+ const next = messages[i + 1];
35460
+ if (!next || next.role !== "user") {
35461
+ console.warn(`[sanitize] \u53D1\u73B0 assistant tool_use \u65E0\u5BF9\u5E94 tool_result\uFF0C\u622A\u65AD\u6D88\u606F\u5386\u53F2\uFF08index=${i}\uFF09`);
35462
+ break;
35463
+ }
35464
+ const resultIds = new Set(
35465
+ next.content.filter((b) => b.type === "tool_result").map((b) => b.tool_use_id)
35466
+ );
35467
+ const allMatched = toolUses.every((tu) => resultIds.has(tu.id));
35468
+ if (!allMatched) {
35469
+ console.warn(`[sanitize] tool_use/tool_result id \u4E0D\u5339\u914D\uFF0C\u622A\u65AD\u6D88\u606F\u5386\u53F2\uFF08index=${i}\uFF09`);
35470
+ break;
35471
+ }
35472
+ }
35473
+ }
35474
+ const prev = result[result.length - 1];
35475
+ if (prev && prev.role === msg.role) {
35476
+ prev.content = [...prev.content, ...msg.content];
35477
+ } else {
35478
+ result.push({ ...msg, content: [...msg.content] });
35479
+ }
35480
+ }
35481
+ return result;
35449
35482
  };
35450
35483
  var addMessage = async (storage, userId, message, date, cronTitle) => {
35451
35484
  let key = `mem:${userId}`;
@@ -42281,9 +42314,23 @@ ${content}
42281
42314
  teamAgentId: "",
42282
42315
  content: replyContent
42283
42316
  };
42284
- const mainAgent = createAgent();
42317
+ const config2 = getDefaultAgentConfig();
42318
+ const mainAgent = createAgent(config2);
42285
42319
  const result = await mainAgent(request);
42286
42320
  console.log(`[mailbox] \u4E3B agent \u5904\u7406\u5B8C ${fromMailboxId} \u7684\u56DE\u4FE1, alreadySent=${result.alreadySent}`);
42321
+ if (!result.alreadySent && result.content && config2.channelPlugin) {
42322
+ try {
42323
+ await config2.channelPlugin.outbound.sendText({
42324
+ cfg: {},
42325
+ to: origin.originUserId,
42326
+ text: result.content,
42327
+ accountId: replyMsg.id
42328
+ });
42329
+ console.log(`[mailbox] \u4E3B agent \u672A\u4E3B\u52A8\u53D1\u9001\uFF0C\u5DF2\u901A\u8FC7\u6E20\u9053\u8865\u53D1\u7ED3\u679C\u7ED9\u7528\u6237 ${origin.originUserId}`);
42330
+ } catch (sendErr) {
42331
+ console.error(`[mailbox] \u8865\u53D1\u6D88\u606F\u5931\u8D25:`, sendErr);
42332
+ }
42333
+ }
42287
42334
  };
42288
42335
  var wakeTeamAgent = async (mailboxId, msgIds) => {
42289
42336
  try {
@@ -46296,7 +46343,7 @@ var systemRoutes = new Hono2();
46296
46343
  var startTime = Date.now();
46297
46344
  systemRoutes.get("/system/info", (c) => {
46298
46345
  return c.json({
46299
- version: true ? "1.6.0" : "unknown",
46346
+ version: true ? "1.7.0" : "unknown",
46300
46347
  uptime: Math.floor((Date.now() - startTime) / 1e3),
46301
46348
  env: process.env.NODE_ENV || "development",
46302
46349
  nodeVersion: process.version