
























@@ -9,7 +9,13 @@ import { normalizeLowercaseStringOrEmpty } from "../../shared/string-coerce.js";
99import { isRecord, truncateUtf16Safe } from "../../utils.js";
1010import type { DeliveryContext } from "../../utils/delivery-context.shared.js";
1111import { resolveSessionAgentId } from "../agent-scope.js";
12-import { optionalStringEnum, stringEnum } from "../schema/typebox.js";
12+import {
13+optionalFiniteNumberSchema,
14+optionalNonNegativeIntegerSchema,
15+optionalPositiveIntegerSchema,
16+optionalStringEnum,
17+stringEnum,
18+} from "../schema/typebox.js";
1319import { CRON_TOOL_DISPLAY_SUMMARY } from "../tool-description-presets.js";
1420import {
1521type AnyAgentTool,
@@ -149,7 +155,7 @@ function cronPayloadObjectSchema(params: { toolsAllow: TSchema }) {
149155message: Type.Optional(Type.String({ description: "agentTurn prompt" })),
150156model: Type.Optional(Type.String({ description: "Model override" })),
151157thinking: Type.Optional(Type.String({ description: "Thinking override" })),
152-timeoutSeconds: Type.Optional(Type.Number()),
158+timeoutSeconds: optionalFiniteNumberSchema({ minimum: 0 }),
153159lightContext: Type.Optional(Type.Boolean()),
154160allowUnsafeExternalContent: Type.Optional(Type.Boolean()),
155161fallbacks: Type.Optional(Type.Array(Type.String(), { description: "Fallback models" })),
@@ -164,8 +170,10 @@ const CronScheduleSchema = Type.Optional(
164170{
165171kind: optionalStringEnum(CRON_SCHEDULE_KINDS, { description: "Schedule kind" }),
166172at: Type.Optional(Type.String({ description: "ISO-8601 time (kind=at)" })),
167-everyMs: Type.Optional(Type.Number({ description: "Interval ms (kind=every)" })),
168-anchorMs: Type.Optional(Type.Number({ description: "Start anchor ms (kind=every)" })),
173+everyMs: optionalPositiveIntegerSchema({ description: "Interval ms (kind=every)" }),
174+anchorMs: optionalNonNegativeIntegerSchema({
175+description: "Start anchor ms (kind=every)",
176+}),
169177expr: Type.Optional(
170178Type.String({
171179description:
@@ -178,7 +186,7 @@ const CronScheduleSchema = Type.Optional(
178186'IANA timezone for cron wall-clock fields, e.g. "Asia/Shanghai"; omitted => Gateway host local timezone.',
179187}),
180188),
181-staggerMs: Type.Optional(Type.Number({ description: "Jitter ms (kind=cron)" })),
189+staggerMs: optionalNonNegativeIntegerSchema({ description: "Jitter ms (kind=cron)" }),
182190},
183191{ additionalProperties: true },
184192),
@@ -228,10 +236,10 @@ const CronFailureAlertSchema = Type.Optional(
228236Type.Unsafe<Record<string, unknown> | false>({
229237type: "object",
230238properties: {
231-after: Type.Optional(Type.Number({ description: "Failures before alert" })),
239+after: optionalPositiveIntegerSchema({ description: "Failures before alert" }),
232240channel: Type.Optional(Type.String({ description: "Alert channel" })),
233241to: Type.Optional(Type.String({ description: "Alert target" })),
234-cooldownMs: Type.Optional(Type.Number({ description: "Alert cooldown ms" })),
242+cooldownMs: optionalNonNegativeIntegerSchema({ description: "Alert cooldown ms" }),
235243includeSkipped: Type.Optional(
236244Type.Boolean({ description: "Skipped runs count toward alert" }),
237245),
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。