export type ErrorSeverity = "info" | "warning" | "error" | "fatal"; export type ErrorCode = | "CAPABILITY_MISSING" | "PROTOCOL_MISMATCH" | "REVISION_CONFLICT" | "INVALID_ARGUMENT" | "WASM_INIT_FAILED" | "WASM_OUT_OF_MEMORY" | "BLEND_READ_FAILED" | "BLEND_WRITE_FAILED" | "STORAGE_QUOTA" | "STORAGE_TRANSACTION" | "WORKER_TERMINATED" | "TASK_VALIDATION_FAILED" | "LINKED_DATA_MUTATION_BLOCKED" | "SCULPT_MESH_NOT_SINGLE_USER" | "SCULPT_TOPOLOGY_UNSUPPORTED" | "SCULPT_STROKE_BUDGET_EXCEEDED" | "SCULPT_ATTRIBUTE_INVALID" | "GN_INVALID_GRAPH" | "GN_NODE_UNSUPPORTED" | "GN_SOCKET_TYPE_MISMATCH" | "GN_GROUP_RECURSION" | "GN_EXTERNAL_RESOURCE_MISSING" | "GN_DEPENDENCY_CYCLE" | "GEOMETRY_NODES_SIMULATION_UNAVAILABLE" | "SIMULATION_CACHE_INVALID" | "SIMULATION_CACHE_MISSING" | "SIMULATION_CACHE_HASH_MISMATCH" | "SHADER_NODE_UNSUPPORTED" | "SHADER_INVALID_GRAPH" | "SHADER_GRAPH_CYCLE" | "SHADER_SOCKET_TYPE_MISMATCH" | "SHADER_EXTERNAL_RESOURCE_MISSING" | "GPU_TEXTURE_INVALID" | "GPU_TEXTURE_HASH_MISMATCH" | "GPU_TEXTURE_BUDGET_EXCEEDED" | "GPU_TEXTURE_DECODE_FAILED" | "GPU_GEOMETRY_BUDGET_EXCEEDED" | "UDIM_MANIFEST_INVALID" | "UDIM_TILE_MISSING" | "UDIM_MULTI_TILE_UNAVAILABLE" | "IBL_FORMAT_UNSUPPORTED" | "IBL_ENVIRONMENT_MISSING" | "VOLUME_SHADER_UNAVAILABLE" | "SUBSURFACE_SHADER_UNAVAILABLE" | "WEBGPU_RENDERER_UNAVAILABLE" | "POSTPROCESS_PASS_UNAVAILABLE" | "NLA_INVALID_STACK" | "NLA_ACTION_MISSING" | "NLA_PATH_INCOMPATIBLE" | "NLA_TIME_WARP_UNSUPPORTED" | "NLA_STRIP_UNSUPPORTED" | "NON_MESH_DATA_UNSUPPORTED" | "NON_MESH_DATA_BUDGET_EXCEEDED" | "NON_MESH_PERFORMANCE_BUDGET_EXCEEDED" | "NON_MESH_RESOURCE_MISSING" | "NON_MESH_RESOURCE_OUTSIDE_PROJECT" | "NON_MESH_VDB_BUDGET_EXCEEDED" | "NON_MESH_BINARY_INVALID" | "VDB_CONVERSION_REQUIRED" | "VDB_CONVERTER_UNAVAILABLE" | "VDB_CONVERSION_INVALID" | "NANOVDB_MANIFEST_INVALID" | "NANOVDB_HASH_MISMATCH" | "NANOVDB_STREAM_INCOMPLETE" | "NANOVDB_GRID_UNSUPPORTED" | "NANOVDB_GPU_BUDGET_EXCEEDED" | "NON_MESH_DATA_SHARED" | "NON_MESH_PROPERTY_INVALID" | "NON_MESH_TOPOLOGY_EDIT_UNSUPPORTED" | "SELECTION_HISTORY_INVALID" | "SELECTION_HISTORY_BUDGET_EXCEEDED" | "RAYCAST_HIT_INVALID" | "SELECTION_UNDO_UNAVAILABLE" | "GREASE_PENCIL_SCHEMA_INVALID" | "GREASE_PENCIL_BUDGET_EXCEEDED" | "PAINT_SCHEMA_INVALID" | "PAINT_BUDGET_EXCEEDED" | "PHYSICS_MANIFEST_INVALID" | "PHYSICS_BUDGET_EXCEEDED" | "PHYSICS_DEPENDENCY_CYCLE" | "PHYSICS_CACHE_FRAME_MISMATCH" | "PHYSICS_CACHE_PLAYBACK_UNAVAILABLE" | "PHYSICS_SOLVER_UNAVAILABLE" | "PHYSICS_SERVER_UNAVAILABLE" | "RENDER_PROPERTY_INVALID" | "COMPOSITOR_GRAPH_INVALID" | "COMPOSITOR_GRAPH_CYCLE" | "COMPOSITOR_BUDGET_EXCEEDED" | "COMPOSITOR_RESOURCE_MISSING" | "COMPOSITOR_NODE_UNSUPPORTED" | "COMPOSITOR_CANCELLED" | "SEQUENCER_SCHEMA_INVALID" | "SEQUENCER_BUDGET_EXCEEDED" | "SEQUENCER_DEPENDENCY_CYCLE" | "SEQUENCER_RESOURCE_MISSING" | "SEQUENCER_RESOURCE_OUTSIDE_PROJECT" | "SEQUENCER_CODEC_UNSUPPORTED" | "SEQUENCER_CANCELLED" | "TRACKING_SCHEMA_INVALID" | "TRACKING_BUDGET_EXCEEDED" | "TRACKING_RESOURCE_OUTSIDE_PROJECT" | "TRACKING_SOURCE_HASH_MISMATCH" | "TRACKING_BINDING_MISSING" | "TRACKING_SOLVE_UNAVAILABLE" | "MASK_SCHEMA_INVALID" | "ASSET_MANIFEST_INVALID" | "ASSET_BUDGET_EXCEEDED" | "ASSET_SOURCE_HASH_MISMATCH" | "ASSET_LICENSE_MISSING" | "LIBRARY_DEPENDENCY_CYCLE" | "LIBRARY_MUTATION_UNAVAILABLE" | "IO_FORMAT_UNSUPPORTED" | "IO_ARCHIVE_UNSAFE" | "IO_EXTERNAL_URI_BLOCKED" | "EDITOR_LAYOUT_INVALID" | "EDITOR_LAYOUT_BUDGET_EXCEEDED" | "EDITOR_SELECTION_INVALID" | "EDITOR_KEYMAP_INVALID" | "EDITOR_WRITER_UNAVAILABLE" | "EDITOR_GIZMO_UNAVAILABLE" | "SCRIPT_MANIFEST_INVALID" | "SCRIPT_POLICY_DENIED" | "SCRIPT_SIGNATURE_INVALID" | "SCRIPT_SANDBOX_UNAVAILABLE" | "SCRIPT_BUDGET_EXCEEDED" | "PLATFORM_CAPABILITY_UNAVAILABLE" | "SERVER_JOB_UNAVAILABLE" | "DRIVER_EXECUTION_BLOCKED" | "ADDON_INSTALL_BLOCKED" | "RELEASE_MANIFEST_INVALID" | "RELEASE_GATE_BLOCKED" | "RELEASE_EVIDENCE_MISSING" | "RELEASE_DEPENDENCY_CYCLE" | "RELEASE_TEST_CHANNEL_MISSING" | "RELEASE_PERFORMANCE_MISSING" | "RELEASE_FAULT_EVIDENCE_MISSING" | "RELEASE_PROVENANCE_MISSING"; export interface ErrorReport { code: ErrorCode; severity: ErrorSeverity; message: string; detail?: string; taskId?: string; revision?: number; recoverable: boolean; cause?: string; } export function errorReport( code: ErrorCode, message: string, options: Partial> = {}, ): ErrorReport { return { code, message, severity: "error", recoverable: true, ...options, }; }