Cron: normalize cron.add inputs + align channels (#256)

* fix: harden cron add and align channels

* fix: keep cron tool id params

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
This commit is contained in:
Marcus Neves
2026-01-05 23:09:48 -03:00
committed by GitHub
parent 00061b2fd3
commit 67e1452f4a
21 changed files with 457 additions and 48 deletions

View File

@@ -17,6 +17,10 @@ import {
validateWakeParams,
} from "../protocol/index.js";
import type { GatewayRequestHandlers } from "./types.js";
import {
normalizeCronJobCreate,
normalizeCronJobPatch,
} from "../../cron/normalize.js";
export const cronHandlers: GatewayRequestHandlers = {
wake: ({ params, respond, context }) => {
@@ -72,7 +76,8 @@ export const cronHandlers: GatewayRequestHandlers = {
respond(true, status, undefined);
},
"cron.add": async ({ params, respond, context }) => {
if (!validateCronAddParams(params)) {
const normalized = normalizeCronJobCreate(params) ?? params;
if (!validateCronAddParams(normalized)) {
respond(
false,
undefined,
@@ -83,11 +88,20 @@ export const cronHandlers: GatewayRequestHandlers = {
);
return;
}
const job = await context.cron.add(params as unknown as CronJobCreate);
const job = await context.cron.add(
normalized as unknown as CronJobCreate,
);
respond(true, job, undefined);
},
"cron.update": async ({ params, respond, context }) => {
if (!validateCronUpdateParams(params)) {
const normalizedPatch = normalizeCronJobPatch(
(params as { patch?: unknown } | null)?.patch,
);
const candidate =
normalizedPatch && typeof params === "object" && params !== null
? { ...(params as Record<string, unknown>), patch: normalizedPatch }
: params;
if (!validateCronUpdateParams(candidate)) {
respond(
false,
undefined,
@@ -98,7 +112,7 @@ export const cronHandlers: GatewayRequestHandlers = {
);
return;
}
const p = params as {
const p = candidate as {
id: string;
patch: Record<string, unknown>;
};