// This file is auto-generated by @hey-api/openapi-ts import * as z from 'zod' /** * WorkflowInstructionSuggestionsPayload * * Payload for the workflow-generator instruction-suggestions endpoint. * * Runs before the user picks a model, so the suggestions come from the * tenant's default model. The underlying generator never raises — an empty * ``suggestions`` list is a valid 200 (soft-fail). */ export const zWorkflowInstructionSuggestionsPayload = z.object({ count: z.int().gte(1).lte(6).optional().default(4), language: z.string().nullish(), mode: z.enum(['advanced-chat', 'workflow']), }) /** * WorkflowInstructionSuggestionsResponse */ export const zWorkflowInstructionSuggestionsResponse = z.object({ suggestions: z.array(z.string()), }) /** * WorkflowGraphEdge * * React Flow edge shape with extensible renderer metadata. */ export const zWorkflowGraphEdge = z.object({ id: z.string(), source: z.string(), target: z.string(), type: z.string(), }) /** * WorkflowGraphViewport */ export const zWorkflowGraphViewport = z.object({ x: z.number(), y: z.number(), zoom: z.number(), }) /** * LLMMode * * Enum class for large language model mode. */ export const zLlmMode = z.enum(['chat', 'completion']) /** * ModelConfig */ export const zModelConfig = z.object({ completion_params: z.record(z.string(), z.unknown()).optional(), mode: zLlmMode, name: z.string(), provider: z.string(), }) /** * WorkflowGenerateErrorCode */ export const zWorkflowGenerateErrorCode = z.enum([ 'DANGLING_EDGE', 'DUPLICATE_NODE_ID', 'EMPTY_INSTRUCTION', 'EMPTY_PLAN', 'GRAPH_CYCLE', 'INSTRUCTION_TOO_LONG', 'INVALID_CONTAINER', 'INVALID_JSON', 'INVALID_SCHEMA', 'MISSING_START', 'MISSING_TERMINAL', 'MODEL_ERROR', 'UNKNOWN_NODE_REFERENCE', 'UNKNOWN_TOOL', 'UNRESOLVED_REFERENCE', ]) /** * WorkflowGenerateErrorResponse */ export const zWorkflowGenerateErrorResponse = z.object({ code: zWorkflowGenerateErrorCode, detail: z.string(), node_id: z.string().nullish(), }) /** * WorkflowPlanNodeResponse */ export const zWorkflowPlanNodeResponse = z.object({ label: z.string(), node_type: z.string(), purpose: z.string().optional().default(''), }) /** * WorkflowPlanStartInputResponse */ export const zWorkflowPlanStartInputResponse = z.object({ label: z.string().optional().default(''), type: z.string().optional().default(''), variable: z.string(), }) /** * WorkflowGeneratePlanEventResponse */ export const zWorkflowGeneratePlanEventResponse = z.object({ app_name: z.string().optional().default(''), description: z.string().optional().default(''), event: z.literal('plan').optional().default('plan'), icon: z.string().optional().default(''), mode: z.enum(['advanced-chat', 'workflow']), nodes: z.array(zWorkflowPlanNodeResponse), start_inputs: z.array(zWorkflowPlanStartInputResponse).optional(), title: z.string().optional().default(''), }) /** * WorkflowGraphPosition */ export const zWorkflowGraphPosition = z.object({ x: z.number(), y: z.number(), }) /** * WorkflowGraphNode * * React Flow node shape accepted and returned by the generator. * * Node-specific configuration lives under ``data`` and wrapper metadata * differs for container children, so unknown wrapper fields must survive * request validation and response serialization. */ export const zWorkflowGraphNode = z.object({ data: z.record(z.string(), z.unknown()), id: z.string(), position: zWorkflowGraphPosition, type: z.string(), }) /** * WorkflowGraph */ export const zWorkflowGraph = z.object({ edges: z.array(zWorkflowGraphEdge), nodes: z.array(zWorkflowGraphNode), viewport: zWorkflowGraphViewport, }) /** * WorkflowGeneratePayload * * Payload for the cmd+k `/create` and `/refine` workflow generator endpoint. * * See ``services/workflow_generator_service.py`` for behaviour. Errors are * surfaced through the same envelope as ``/rule-generate`` so the frontend * can reuse its existing handler. */ export const zWorkflowGeneratePayload = z.object({ current_graph: zWorkflowGraph.nullish(), ideal_output: z.string().optional().default(''), instruction: z.string(), mode: z.enum(['advanced-chat', 'auto', 'workflow']), model_config: zModelConfig, }) /** * WorkflowGenerateResponse */ export const zWorkflowGenerateResponse = z.object({ app_name: z.string().optional().default(''), error: z.string().optional().default(''), errors: z.array(zWorkflowGenerateErrorResponse).optional(), graph: zWorkflowGraph, icon: z.string().optional().default(''), message: z.string().optional().default(''), mode: z.enum(['advanced-chat', 'workflow']).nullish(), }) /** * WorkflowGenerateResultEventResponse */ export const zWorkflowGenerateResultEventResponse = z.object({ app_name: z.string().optional().default(''), error: z.string().optional().default(''), errors: z.array(zWorkflowGenerateErrorResponse).optional(), event: z.literal('result').optional().default('result'), graph: zWorkflowGraph, icon: z.string().optional().default(''), message: z.string().optional().default(''), mode: z.enum(['advanced-chat', 'workflow']).nullish(), }) /** * WorkflowGenerateStreamEventResponse * * Schema for each JSON object carried by an SSE ``data:`` frame. */ export const zWorkflowGenerateStreamEventResponse = z.union([ zWorkflowGeneratePlanEventResponse, zWorkflowGenerateResultEventResponse, ]) export const zPostWorkflowGenerateBody = zWorkflowGeneratePayload /** * Workflow graph generated successfully */ export const zPostWorkflowGenerateResponse = zWorkflowGenerateResponse export const zPostWorkflowGenerateStreamBody = zWorkflowGeneratePayload /** * Server-Sent Events stream; each data frame matches this plan/result event schema */ export const zPostWorkflowGenerateStreamResponse = zWorkflowGenerateStreamEventResponse export const zPostWorkflowGenerateSuggestionsBody = zWorkflowInstructionSuggestionsPayload /** * Suggestions generated successfully */ export const zPostWorkflowGenerateSuggestionsResponse = zWorkflowInstructionSuggestionsResponse