| import type { ChannelId } from "../channels/plugins/types.js"; |
|
|
| export type CronSchedule = |
| | { kind: "at"; atMs: number } |
| | { kind: "every"; everyMs: number; anchorMs?: number } |
| | { kind: "cron"; expr: string; tz?: string }; |
|
|
| export type CronSessionTarget = "main" | "isolated"; |
| export type CronWakeMode = "next-heartbeat" | "now"; |
|
|
| export type CronMessageChannel = ChannelId | "last"; |
|
|
| export type CronPayload = |
| | { kind: "systemEvent"; text: string } |
| | { |
| kind: "agentTurn"; |
| message: string; |
| |
| model?: string; |
| thinking?: string; |
| timeoutSeconds?: number; |
| allowUnsafeExternalContent?: boolean; |
| deliver?: boolean; |
| channel?: CronMessageChannel; |
| to?: string; |
| bestEffortDeliver?: boolean; |
| }; |
|
|
| export type CronPayloadPatch = |
| | { kind: "systemEvent"; text?: string } |
| | { |
| kind: "agentTurn"; |
| message?: string; |
| model?: string; |
| thinking?: string; |
| timeoutSeconds?: number; |
| allowUnsafeExternalContent?: boolean; |
| deliver?: boolean; |
| channel?: CronMessageChannel; |
| to?: string; |
| bestEffortDeliver?: boolean; |
| }; |
|
|
| export type CronIsolation = { |
| postToMainPrefix?: string; |
| |
| |
| |
| |
| |
| postToMainMode?: "summary" | "full"; |
| |
| postToMainMaxChars?: number; |
| }; |
|
|
| export type CronJobState = { |
| nextRunAtMs?: number; |
| runningAtMs?: number; |
| lastRunAtMs?: number; |
| lastStatus?: "ok" | "error" | "skipped"; |
| lastError?: string; |
| lastDurationMs?: number; |
| }; |
|
|
| export type CronJob = { |
| id: string; |
| agentId?: string; |
| name: string; |
| description?: string; |
| enabled: boolean; |
| deleteAfterRun?: boolean; |
| createdAtMs: number; |
| updatedAtMs: number; |
| schedule: CronSchedule; |
| sessionTarget: CronSessionTarget; |
| wakeMode: CronWakeMode; |
| payload: CronPayload; |
| isolation?: CronIsolation; |
| state: CronJobState; |
| }; |
|
|
| export type CronStoreFile = { |
| version: 1; |
| jobs: CronJob[]; |
| }; |
|
|
| export type CronJobCreate = Omit<CronJob, "id" | "createdAtMs" | "updatedAtMs" | "state"> & { |
| state?: Partial<CronJobState>; |
| }; |
|
|
| export type CronJobPatch = Partial<Omit<CronJob, "id" | "createdAtMs" | "state" | "payload">> & { |
| payload?: CronPayloadPatch; |
| state?: Partial<CronJobState>; |
| }; |
|
|