export type ExecutorType = "python" | "docker" | "http"; export type ArtifactType = "json" | "directory" | "video"; export type TaskStatus = "pending" | "queued" | "running" | "success" | "failed" | "cancelled"; export type TaskStatusCounts = { pending: number; queued: number; running: number; success: number; failed: number; cancelled: number; }; export type TaskExecutionSummary = { outcome: "success" | "failed"; executorType: ExecutorType; assetCount: number; artifactIds: string[]; stdoutLineCount: number; stderrLineCount: number; errorMessage?: string; }; export type RunExecutionSummary = { totalTaskCount: number; completedTaskCount: number; artifactCount: number; stdoutLineCount: number; stderrLineCount: number; failedTaskIds: string[]; taskCounts: TaskStatusCounts; }; export type ExecutorExecutionResult = { result: unknown; stdoutLines?: string[]; stderrLines?: string[]; }; export type CodeHookSpec = { language: "python"; entrypoint?: string; source: string; }; export type NodeRuntimeConfig = { definitionId?: string; executorType?: ExecutorType; executorConfig?: Record; codeHookSpec?: CodeHookSpec; artifactType?: ArtifactType; artifactTitle?: string; }; export type RunRuntimeSnapshot = { selectedPreset?: string; nodeBindings?: Record; nodeConfigs?: Record; pluginRefs?: string[]; }; export type TaskRecord = { id: string; workflowRunId?: string; workflowVersionId?: string; nodeId: string; nodeType?: string; nodeDefinitionId?: string; executorType: ExecutorType; executorConfig?: Record; codeHookSpec?: CodeHookSpec; artifactType?: ArtifactType; artifactTitle?: string; status: TaskStatus; attempt?: number; assetIds?: string[]; upstreamNodeIds?: string[]; outputArtifactIds?: string[]; errorMessage?: string; startedAt?: string; finishedAt?: string; durationMs?: number; logLines?: string[]; stdoutLines?: string[]; stderrLines?: string[]; summary?: TaskExecutionSummary; lastResultPreview?: Record; }; export type ExecutionAsset = { id: string; displayName: string; sourcePath?: string; topLevelPaths?: string[]; detectedFormats?: string[]; summary?: Record; }; export type ExecutionContext = { taskId: string; workflowRunId?: string; workflowVersionId?: string; nodeId: string; assetIds?: string[]; assets?: ExecutionAsset[]; nodeDefinitionId?: string; };