import { type ApprovalId, type ApprovalRequest, type AutomationId, type IsoDateTime, type Json, type RunId, type RunRowStatus, type ThreadId, type TriggerSource } from "@vendoai/core"; /** 02-store §3 — declared once, in `@vendoai/apps/contract`. The store is a * dumb adapter for a shape app generation owns; re-declaring it here is how * the two drifted. */ export type { AppRow } from "@vendoai/apps/contract"; /** 02-store §3 */ export interface ThreadRow { id: ThreadId; subject: string; messages: Json[]; /** Precomputed listing title (03 §5); lets `list` skip loading the messages array. */ title?: string; createdAt: IsoDateTime; updatedAt: IsoDateTime; /** Opaque write counter backing the routed atomic capability (01 §12); bumped * on every write. Absent only on projections that never carry it (listSelect). */ revision?: string; } /** 02-store §3 */ export interface ApprovalRow { id: ApprovalId; subject: string; request: ApprovalRequest; status: "pending" | "approved" | "denied"; decidedAt?: IsoDateTime; sessionId?: string; consumedAt?: IsoDateTime; /** Whether a PERSON decided, or housekeeping did (abandonment, TTL sweep). */ deniedBy?: "human" | "system"; /** The decision no longer stands — taken back, or superseded by a later one. */ voidedAt?: IsoDateTime; createdAt: IsoDateTime; } /** 02-store §3 — declared in `@vendoai/core` beside the four it widens, and * re-exported here because this package's own surface is where the store's * callers reach for it. */ export { RUN_ROW_STATUSES, type RunRowStatus } from "@vendoai/core"; /** 02-store §3 */ export interface RunRow { id: RunId; /** The automation that fired this run — a run has no app of its own, because * an automation record names none (core's `automation.ts`). */ automationId: AutomationId; trigger: { kind: TriggerSource["kind"]; event?: string; }; /** {@link RUN_ROW_STATUSES} — the engine's four plus `pending-approval`. */ status: RunRowStatus; record: Json; startedAt: IsoDateTime; finishedAt?: IsoDateTime; } //# sourceMappingURL=types.d.ts.map