import { type Schedule } from "./gen/grackle/grackle_types_pb.js"; /** * Structural shape required to convert a schedule row to its proto. * * `@grackle-ai/common` can't import `ScheduleRow` from `@grackle-ai/database` * (lower layer can't depend on higher). This interface is the contract: * callers in any package whose row shape matches can pass it directly. */ export interface ScheduleRowShape { /** Unique schedule id. */ id: string; /** Human-readable title (surfaces in CLI / web). */ title: string; /** Free-text description; for heartbeats this is the rules prompt. */ description: string; /** Interval shorthand (`"30s"`) or 5-field cron expression. */ scheduleExpression: string; /** Persona to use when firing. Empty when agent_id is set and no explicit override. */ personaId: string; /** Workspace scope; empty = system-level. */ workspaceId: string; /** Parent task for spawned children; empty = ROOT_TASK_ID. */ parentTaskId: string; /** Whether the schedule is currently active. */ enabled: boolean; lastRunAt: string | null; nextRunAt: string | null; /** Total times this schedule has fired. */ runCount: number; /** Row-creation timestamp. */ createdAt: string; /** Row-update timestamp. */ updatedAt: string; /** * Owning Agent id (#1439). Null = unowned (today's behavior). When set, each * fire-task carries agent_id + kind=schedule_fire and parents under the Agent * root task. Not the ACP runtime agent id. */ agentId: string | null; } /** * Convert a structural schedule row to its proto representation. * * Nullable fields collapse to empty strings (proto3 string semantics). */ export declare function scheduleRowToProto(row: ScheduleRowShape): Schedule; //# sourceMappingURL=schedule-converters.d.ts.map