import { Type, type Static } from "@alkdev/typebox"; import { NodeStatusEnum } from "./enums.js"; import { OperationNodeAttrs } from "./node.js"; export const OperationEdgeAttrs = Type.Object({ compatible: Type.Boolean(), detail: Type.Optional(Type.String()), mismatches: Type.Optional( Type.Array( Type.Object({ path: Type.String(), expected: Type.String(), actual: Type.String(), }), ), ), }); export type OperationEdgeAttrs = Static; export const TriggeredEdgeAttrs = Type.Object({}); export type TriggeredEdgeAttrs = Static; export const DependencyEdgeAttrs = Type.Object({}); export type DependencyEdgeAttrs = Static; export type CallEdgeAttrs = TriggeredEdgeAttrs | DependencyEdgeAttrs; export const TemplateEdgeAttrs = Type.Object({ edgeType: Type.Union([Type.Literal("sequential"), Type.Literal("conditional")]), condition: Type.Optional(Type.Unknown()), negated: Type.Optional(Type.Boolean()), dataFlow: Type.Optional(Type.Boolean({ default: false })), }); export type TemplateEdgeAttrs = Static; export type TemplateNodeAttrs = OperationNodeAttrs; export const CallResultSchema = Type.Object({ status: NodeStatusEnum, output: Type.Unknown(), error: Type.Optional( Type.Object({ code: Type.String(), message: Type.String(), details: Type.Optional(Type.Unknown()), }), ), }); export type CallResult = Static;