






















@@ -8,6 +8,7 @@ import {
88executeRemind,
99executeScheduledRemind,
1010prepareRemindCronAction,
11+type RemindCronAction,
1112} from "./remind-logic.js";
12131314describe("engine/tools/remind-logic", () => {
@@ -208,7 +209,8 @@ describe("engine/tools/remind-logic", () => {
208209209210describe("executeScheduledRemind", () => {
210211it("runs cron.add directly for relative reminders", async () => {
211-const calls: unknown[] = [];
212+const calls: RemindCronAction[] = [];
213+const before = Date.now();
212214const result = await executeScheduledRemind(
213215{ action: "add", content: "test reminder", to: "qqbot:c2c:123", time: "5m" },
214216{},
@@ -219,18 +221,30 @@ describe("engine/tools/remind-logic", () => {
219221);
220222221223expect(calls).toHaveLength(1);
222-expect(calls[0]).toMatchObject({
223-action: "add",
224-job: {
225-sessionTarget: "isolated",
226-payload: { kind: "agentTurn" },
227-delivery: {
228-mode: "announce",
229-channel: "qqbot",
230-to: "qqbot:c2c:123",
231-accountId: "default",
232-},
233-},
224+const call = calls[0];
225+expect(call?.action).toBe("add");
226+if (call?.action !== "add") {
227+throw new Error("expected add cron action");
228+}
229+expect(call.job.name).toBe("Reminder: test reminder");
230+expect(call.job.schedule.kind).toBe("at");
231+if (call.job.schedule.kind !== "at") {
232+throw new Error("expected at schedule");
233+}
234+expect(call.job.schedule.atMs).toBeGreaterThanOrEqual(before + 5 * 60_000);
235+expect(call.job.schedule.atMs).toBeLessThanOrEqual(Date.now() + 5 * 60_000 + 1_000);
236+expect(call.job.sessionTarget).toBe("isolated");
237+expect(call.job.wakeMode).toBe("now");
238+expect(call.job.deleteAfterRun).toBe(true);
239+expect(call.job.payload).toEqual({
240+kind: "agentTurn",
241+message: buildReminderPrompt("test reminder"),
242+});
243+expect(call.job.delivery).toEqual({
244+mode: "announce",
245+channel: "qqbot",
246+to: "qqbot:c2c:123",
247+accountId: "default",
234248});
235249expect(result.details).toEqual({
236250ok: true,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。