






























@@ -966,6 +966,60 @@ describe("gateway agent handler", () => {
966966);
967967});
968968969+it.each(
970+(["channel", "replyChannel"] as const).flatMap((field) =>
971+(["heartbeat", "cron", "webhook"] as const).map((channel) => [field, channel] as const),
972+),
973+)("accepts internal non-delivery %s hint %s", async (field, channel) => {
974+primeMainAgentRun();
975+mocks.agentCommand.mockClear();
976+const respond = vi.fn();
977+978+await invokeAgent(
979+{
980+message: "spawn from internal source",
981+agentId: "main",
982+sessionKey: "agent:main:main",
983+[field]: channel,
984+idempotencyKey: `internal-channel-${field}-${channel}`,
985+} as AgentParams,
986+{ reqId: `internal-channel-${field}-${channel}-1`, respond },
987+);
988+989+const rejection = respond.mock.calls.find(
990+(call: unknown[]) =>
991+call[0] === false &&
992+typeof (call[2] as { message?: string } | undefined)?.message === "string" &&
993+(call[2] as { message: string }).message.includes("unknown channel"),
994+);
995+expect(rejection).toBeUndefined();
996+});
997+998+it.each(["channel", "replyChannel"] as const)("rejects unknown %s hints", async (field) => {
999+primeMainAgentRun();
1000+mocks.agentCommand.mockClear();
1001+const respond = vi.fn();
1002+1003+await invokeAgent(
1004+{
1005+message: "bogus channel",
1006+agentId: "main",
1007+sessionKey: "agent:main:main",
1008+[field]: "not-a-real-channel",
1009+idempotencyKey: `unknown-${field}`,
1010+} as AgentParams,
1011+{ reqId: `unknown-${field}-1`, respond },
1012+);
1013+1014+expect(respond).toHaveBeenCalledWith(
1015+false,
1016+undefined,
1017+expect.objectContaining({
1018+message: expect.stringContaining("unknown channel: not-a-real-channel"),
1019+}),
1020+);
1021+});
1022+9691023it("accepts music generation internal events", async () => {
9701024primeMainAgentRun();
9711025mocks.agentCommand.mockClear();
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。