UNPKG

@gguf/claw

Version:

Multi-channel AI gateway with extensible messaging integrations

120 lines (119 loc) 3.39 kB
import type { ChannelId } from "../channels/plugins/types.js"; export type CronSchedule = { kind: "at"; at: string; } | { kind: "every"; everyMs: number; anchorMs?: number; } | { kind: "cron"; expr: string; tz?: string; /** Optional deterministic stagger window in milliseconds (0 keeps exact schedule). */ staggerMs?: number; }; export type CronSessionTarget = "main" | "isolated"; export type CronWakeMode = "next-heartbeat" | "now"; export type CronMessageChannel = ChannelId | "last"; export type CronDeliveryMode = "none" | "announce" | "webhook"; export type CronDelivery = { mode: CronDeliveryMode; channel?: CronMessageChannel; to?: string; bestEffort?: boolean; }; export type CronDeliveryPatch = Partial<CronDelivery>; export type CronRunStatus = "ok" | "error" | "skipped"; export type CronUsageSummary = { input_tokens?: number; output_tokens?: number; total_tokens?: number; cache_read_tokens?: number; cache_write_tokens?: number; }; export type CronRunTelemetry = { model?: string; provider?: string; usage?: CronUsageSummary; }; export type CronRunOutcome = { status: CronRunStatus; error?: string; summary?: string; sessionId?: string; sessionKey?: string; }; export type CronPayload = { kind: "systemEvent"; text: string; } | { kind: "agentTurn"; message: string; /** Optional model override (provider/model or alias). */ 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 CronJobState = { nextRunAtMs?: number; runningAtMs?: number; lastRunAtMs?: number; lastStatus?: "ok" | "error" | "skipped"; lastError?: string; lastDurationMs?: number; /** Number of consecutive execution errors (reset on success). Used for backoff. */ consecutiveErrors?: number; /** Number of consecutive schedule computation errors. Auto-disables job after threshold. */ scheduleErrorCount?: number; }; export type CronJob = { id: string; agentId?: string; /** Origin session namespace for reminder delivery and wake routing. */ sessionKey?: string; name: string; description?: string; enabled: boolean; deleteAfterRun?: boolean; createdAtMs: number; updatedAtMs: number; schedule: CronSchedule; sessionTarget: CronSessionTarget; wakeMode: CronWakeMode; payload: CronPayload; delivery?: CronDelivery; 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; delivery?: CronDeliveryPatch; state?: Partial<CronJobState>; };