mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-02 13:51:33 +00:00
* feat(cron): add headless code-mode driver and trigger-script evaluator Part A of cron event triggers: runCodeModeScriptHeadless runs a script to completion (exec/settle/resume, no snapshots, no session), plus the cron-facing evaluator with per-job tool catalog cache, semaphore, 16KB state cap, and closed failure taxonomy. * fix(cron): correct trigger-script bootstrap flags and cache narrowing * feat(cron): add event triggers (polled condition-watcher scripts) Part B: trigger field on cron jobs gated by cron.triggers.enabled; timer evaluates the script each due tick, quiet ticks leave no run history, fired runs append the script message to the payload; once semantics, min-interval floor, SQLite columns, RPC/CLI/agent-tool surfaces, and docs. * fix(cron): propagate triggerEval through startup catch-up outcomes * fix(cron): honor cron staggering on quiet trigger ticks; fix trigger test types * fix(cron): reject with Error reason in trigger-script abort test * fix(cron): regenerate protocol/docs/snapshot artifacts and break madge cycle for trigger types CI fixes for #101195: trigger evaluator result types move to the cron types leaf (madge cycle), cron tool schema inventory gains trigger, Swift protocol bindings + docs map + Linux prompt snapshots regenerated. * fix(cron): drop underscore-dangle names in trigger code sync assert * fix(cron): adopt registerHeadlessToolSearchCatalog after tool-search symbol localization Upstream #101831 made registerToolSearchCatalog module-private; fold the headless ref-only catalog registration into one public seam.
31 lines
1.6 KiB
TypeScript
31 lines
1.6 KiB
TypeScript
import { formatErrorMessage } from "../../infra/errors.js";
|
|
|
|
export function isCronInvalidRequestError(err: unknown): boolean {
|
|
const message = formatErrorMessage(err);
|
|
return (
|
|
message.startsWith("unknown cron job id:") ||
|
|
message.startsWith("cron job already exists:") ||
|
|
message.includes("cron job id must not be blank") ||
|
|
message.includes("cron declarationKey") ||
|
|
message.includes("cron displayName") ||
|
|
message.includes("cron triggers are disabled") ||
|
|
message.includes("cron triggers require") ||
|
|
message.includes("cron trigger every interval") ||
|
|
message.includes("cron job is missing sessionTarget") ||
|
|
message.includes("invalid cron sessionTarget session id") ||
|
|
message.includes('main cron jobs require payload.kind="systemEvent"') ||
|
|
message.includes('isolated/current/session cron jobs require payload.kind="agentTurn"') ||
|
|
message.includes("has no upcoming run time and would never fire") ||
|
|
message.includes('sessionTarget "main" is only valid for the default agent') ||
|
|
message.includes('cron.update payload.kind="systemEvent" requires text') ||
|
|
message.includes('cron.update payload.kind="agentTurn" requires message') ||
|
|
message.includes("cron webhook delivery requires") ||
|
|
message.includes("delivery.channel") ||
|
|
message.includes("delivery.failureDestination.channel") ||
|
|
message.includes("cron completion destination webhook requires") ||
|
|
message.includes("cron failure destination webhook requires") ||
|
|
message.includes("cron channel delivery config is only supported") ||
|
|
message.includes("cron delivery.failureDestination is only supported")
|
|
);
|
|
}
|