






















@@ -150,8 +150,10 @@ describe("buildGatewayCronService", () => {
150150expect.objectContaining({
151151action: "added",
152152jobId: job.id,
153+sessionTarget: "main",
153154job: expect.objectContaining({
154155id: job.id,
156+sessionTarget: "main",
155157state: expect.objectContaining({ nextRunAtMs: job.state.nextRunAtMs }),
156158}),
157159}),
@@ -191,9 +193,11 @@ describe("buildGatewayCronService", () => {
191193expect.objectContaining({
192194action: "removed",
193195jobId: job.id,
196+sessionTarget: "main",
194197job: expect.objectContaining({
195198id: job.id,
196199name: "to-be-removed",
200+sessionTarget: "main",
197201}),
198202}),
199203expect.objectContaining({
@@ -205,6 +209,47 @@ describe("buildGatewayCronService", () => {
205209}
206210});
207211212+it("cron_changed hook event includes agentId from the job", async () => {
213+const cfg = createCronConfig("server-cron-hook-agentId");
214+loadConfigMock.mockReturnValue(cfg);
215+216+const state = buildGatewayCronService({
217+ cfg,
218+deps: {} as CliDeps,
219+broadcast: () => {},
220+});
221+try {
222+const job = await state.cron.add({
223+name: "agent-scoped-job",
224+enabled: true,
225+agentId: "yinze",
226+schedule: { kind: "every", everyMs: 60_000, anchorMs: 1_000 },
227+sessionTarget: "session:project-alpha",
228+wakeMode: "next-heartbeat",
229+payload: { kind: "agentTurn", message: "agent check" },
230+});
231+232+expect(runCronChangedMock).toHaveBeenCalledWith(
233+expect.objectContaining({
234+action: "added",
235+jobId: job.id,
236+sessionTarget: "session:project-alpha",
237+agentId: "yinze",
238+job: expect.objectContaining({
239+id: job.id,
240+agentId: "yinze",
241+sessionTarget: "session:project-alpha",
242+}),
243+}),
244+expect.objectContaining({
245+config: cfg,
246+}),
247+);
248+} finally {
249+state.cron.stop();
250+}
251+});
252+208253it("cron_changed hook context uses runtime config from getRuntimeConfig()", async () => {
209254const startupCfg = createCronConfig("server-cron-hook-runtime-cfg");
210255const runtimeCfg = { ...startupCfg, _marker: "runtime" };
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。