export type PlanKind = "plan" | "pipeline" | "experiment" | "ralph" | "superintendent" | "superintendent-base"; export type PlanFormat = "markdown" | "yaml"; export type PlanReadiness = "draft" | "ready"; export interface SavedForLaterMetadata { reason?: string; } export interface PlanEntry { path: string; absolutePath: string; kind: PlanKind; typeLabel: string; runner?: "pipeline" | "experiment" | "ralph" | "superintendent"; detail: string; format: PlanFormat; title: string; updatedAt: number; readiness: PlanReadiness; schemaUrl?: string; savedForLater?: SavedForLaterMetadata; } export interface DiscoveryFs { readFile(path: string, encoding: BufferEncoding): Promise; writeFile?(path: string, data: string | NodeJS.ArrayBufferView, options?: { encoding?: BufferEncoding; }): Promise; readdir(path: string): Promise; realpath(path: string): Promise; stat(path: string): Promise<{ isFile(): boolean; isDirectory?(): boolean; atimeMs?: number; mtimeMs: number; }>; lstat(path: string): Promise<{ isSymbolicLink(): boolean; }>; mkdir?(path: string, options?: { recursive?: boolean; }): Promise; rename?(fromPath: string, toPath: string): Promise; unlink?(path: string): Promise; } export interface ActionFs { utimes(path: string, atime: Date | number, mtime: Date | number): Promise; mkdir(path: string, options?: { recursive?: boolean; }): Promise; lstat(path: string): Promise<{ isSymbolicLink(): boolean; }>; rmdir(path: string): Promise; rename(fromPath: string, toPath: string): Promise; unlink(path: string): Promise; readFile(path: string, encoding: BufferEncoding): Promise; writeFile(path: string, data: string, encoding: BufferEncoding): Promise; }