* fix(app): schedules UI speaks the user's timezone * refactor(server): require explicit agent placement and bind create-agent command * fix(server): scheduled agents get a workspace and show in the sidebar * fix(server): loop agents get a workspace and show in the sidebar * fix(server): preserve scheduled and loop run semantics through the create command * fix(server): serialize all schedule record writes through the per-schedule queue * fix(server): tighten create-agent dependency contracts * fix(server): handle schedule restamps and loop cancellations * fix(server): preserve scheduled and loop create semantics * refactor(server): schedule store owns atomic mutations * fix(server): keep schedule stamp reuse deterministic * fix(server): handle loop workspace stamp rejection * refactor(server): schedule store owns typed identity upsert * fix(server): keep schedule workspace stamps server-owned * fix(server): preserve scheduled run semantics * refactor: required nullable workspaceId replaces placement union; pure cadence policy * fix(server): tighten scheduled and loop agent edges * fix(server): fail canceled scheduled runs * fix(server): close schedule and loop cwd edges * fix(server): refresh schedule workspace stamps * fix(server): preserve schedule timezone on replace * fix(server): close loop stop and cadence reset edges
15 lines
447 B
TypeScript
15 lines
447 B
TypeScript
import type { ScheduleCadence } from "@getpaseo/protocol/schedule/types";
|
|
|
|
type CronCadence = Extract<ScheduleCadence, { type: "cron" }>;
|
|
|
|
export function nextCronCadence(
|
|
current: ScheduleCadence,
|
|
expression: string,
|
|
deviceTimeZone: string,
|
|
): CronCadence {
|
|
if (current.type === "cron") {
|
|
return { type: "cron", expression, timezone: current.timezone ?? "UTC" };
|
|
}
|
|
return { type: "cron", expression, timezone: deviceTimeZone };
|
|
}
|