
























@@ -568,6 +568,7 @@ describe("scheduleRestartSentinelWake", () => {
568568}),
569569}),
570570);
571+expect(mocks.requestHeartbeat).not.toHaveBeenCalled();
571572});
572573573574it("preserves the session chat type for agentTurn continuations", async () => {
@@ -959,12 +960,7 @@ describe("scheduleRestartSentinelWake", () => {
959960960961await scheduleRestartSentinelWake({ deps: {} as never });
961962962-expect(mocks.enqueueSystemEvent).toHaveBeenCalledWith(
963-"restart message",
964-expect.objectContaining({
965-sessionKey: "agent:main:main",
966-}),
967-);
963+expect(mocks.enqueueSystemEvent).not.toHaveBeenCalled();
968964expect(mocks.logWarn).toHaveBeenCalledWith(
969965expect.stringContaining("retry failed for entry session-delivery-1: Error: dispatch failed"),
970966);
@@ -1001,6 +997,7 @@ describe("scheduleRestartSentinelWake", () => {
10019971002998it("retries restart continuations when the previous run is still shutting down", async () => {
1003999const busyReply = "⚠️ Previous run is still shutting down. Please try again in a moment.";
1000+let attempt = 0;
10041001mocks.readRestartSentinel.mockResolvedValue({
10051002payload: {
10061003sessionKey: "agent:main:main",
@@ -1016,20 +1013,21 @@ describe("scheduleRestartSentinelWake", () => {
10161013},
10171014},
10181015} as Awaited<ReturnType<typeof mocks.readRestartSentinel>>);
1019-mocks.recordInboundSessionAndDispatchReply
1020-.mockImplementationOnce(async (params) => {
1016+mocks.recordInboundSessionAndDispatchReply.mockImplementation(async (params) => {
1017+attempt += 1;
1018+if (attempt <= 6) {
10211019await params.deliver({ text: busyReply });
1022-})
1023-.mockImplementationOnce(async (params) => {
1024-await params.deliver({
1025-text: "done",
1026-replyToId: String(params.ctxPayload.MessageSid),
1027-});
1020+return;
1021+}
1022+await params.deliver({
1023+text: "done",
1024+replyToId: String(params.ctxPayload.MessageSid),
10281025});
1026+});
1029102710301028await scheduleRestartSentinelWake({ deps: {} as never });
103110291032-expect(mocks.recordInboundSessionAndDispatchReply).toHaveBeenCalledTimes(2);
1030+expect(mocks.recordInboundSessionAndDispatchReply).toHaveBeenCalledTimes(7);
10331031expect(mocks.recordInboundSessionAndDispatchReply).toHaveBeenNthCalledWith(
103410321,
10351033expect.objectContaining({
@@ -1039,10 +1037,10 @@ describe("scheduleRestartSentinelWake", () => {
10391037}),
10401038);
10411039expect(mocks.recordInboundSessionAndDispatchReply).toHaveBeenNthCalledWith(
1042-2,
1040+7,
10431041expect.objectContaining({
10441042ctxPayload: expect.objectContaining({
1045-MessageSid: "restart-sentinel:agent:main:main:agentTurn:123:retry:1",
1043+MessageSid: "restart-sentinel:agent:main:main:agentTurn:123:retry:6",
10461044}),
10471045}),
10481046);
@@ -1062,6 +1060,7 @@ describe("scheduleRestartSentinelWake", () => {
10621060"retry failed for entry session-delivery-1: Error: restart continuation deferred because previous run is still shutting down",
10631061),
10641062);
1063+expect(mocks.requestHeartbeat).not.toHaveBeenCalled();
10651064});
1066106510671066it("falls back to a session wake when restart routing cannot resolve a destination", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。