You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.8 KiB
104 lines
2.8 KiB
import type { NodeType } from "./nodes";
|
|
|
|
export type QuickstartView = "initial" | "templates" | "vibe" | "browse";
|
|
|
|
export type TemplateCategory = "simple" | "advanced" | "community";
|
|
|
|
export interface TemplateMetadata {
|
|
nodeCount: number;
|
|
category: TemplateCategory;
|
|
tags: string[];
|
|
previewImage?: string;
|
|
}
|
|
|
|
export interface CommunityWorkflowMeta {
|
|
id: string;
|
|
name: string;
|
|
filename: string;
|
|
author: string;
|
|
size: number;
|
|
description: string;
|
|
nodeCount: number;
|
|
tags: string[];
|
|
previewImage?: string;
|
|
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<string, unknown>;
|
|
}
|
|
|
|
/**
|
|
* 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[];
|
|
}
|
|
|