diff --git a/src/types/quickstart.ts b/src/types/quickstart.ts index 4f74013e..272c8449 100644 --- a/src/types/quickstart.ts +++ b/src/types/quickstart.ts @@ -1,3 +1,5 @@ +import type { NodeType } from "./nodes"; + export type QuickstartView = "initial" | "templates" | "vibe"; export type TemplateCategory = "simple" | "advanced" | "community"; @@ -22,3 +24,81 @@ export interface CommunityWorkflowMeta { hoverImage?: string; sortOrder?: number; } + +// ============================================================================ +// Workflow Proposal Types +// ============================================================================ + +/** + * A proposed node in the workflow - describes purpose and configuration + * without internal state or positioning details + */ +export interface ProposedNode { + /** Temporary ID like "node-1" */ + id: string; + /** Node type: imageInput, prompt, nanoBanana, etc. */ + type: NodeType; + /** Human-readable description of this node's role */ + purpose: string; + /** customTitle for the node */ + suggestedTitle: string; + /** For prompt nodes: the suggested prompt text */ + suggestedPrompt?: string; + /** For nanoBanana/generateVideo: the suggested model */ + suggestedModel?: string; + /** For nanoBanana/generateVideo: suggested settings like aspectRatio */ + suggestedSettings?: Record; +} + +/** + * A proposed connection between nodes - describes data flow + */ +export interface ProposedConnection { + /** Source node ID */ + from: string; + /** Target node ID */ + to: string; + /** Connection type */ + type: "image" | "text" | "reference"; + /** Human-readable description of data flow */ + description: string; +} + +/** + * A proposed group for organizing related nodes + */ +export interface ProposedGroup { + /** Group name */ + name: string; + /** Group color */ + color: "neutral" | "blue" | "green" | "purple" | "orange"; + /** IDs of nodes in this group */ + nodeIds: string[]; + /** Human-readable description of what this group represents */ + purpose: string; +} + +/** + * Workflow complexity estimate + */ +export type WorkflowComplexity = "simple" | "moderate" | "complex"; + +/** + * A complete workflow proposal - reviewable structure before JSON generation + */ +export interface WorkflowProposal { + /** Workflow name */ + name: string; + /** One-paragraph summary of what workflow does */ + description: string; + /** Proposed nodes */ + nodes: ProposedNode[]; + /** Proposed connections */ + connections: ProposedConnection[]; + /** Optional groups for organizing nodes */ + groups?: ProposedGroup[]; + /** Estimated complexity */ + estimatedComplexity: WorkflowComplexity; + /** Any caveats or limitations */ + warnings?: string[]; +}