@@ -13,12 +13,12 @@ import { SimResourceCell, type SimResourceType } from './sim-resource-cell'
1313export type CellRenderKind =
1414 // Workflow-output cells
1515 | { kind : 'value' ; text : string }
16- | { kind : 'block-error' }
16+ | { kind : 'block-error' ; message : string }
1717 | { kind : 'running' }
1818 | { kind : 'pending-upstream' }
1919 | { kind : 'queued' }
2020 | { kind : 'cancelled' }
21- | { kind : 'error' }
21+ | { kind : 'error' ; message : string | null }
2222 | { kind : 'waiting' ; labels : string [ ] }
2323 | { kind : 'not-found' }
2424 | { kind : 'no-output' }
@@ -68,7 +68,7 @@ export function resolveCellRender({
6868 const blockRunning = blockId ? ( exec ?. runningBlockIds ?. includes ( blockId ) ?? false ) : false
6969 const groupHasBlockErrors = ! ! ( exec ?. blockErrors && Object . keys ( exec . blockErrors ) . length > 0 )
7070
71- if ( blockError ) return { kind : 'block-error' }
71+ if ( blockError ) return { kind : 'block-error' , message : blockError }
7272
7373 const inFlight =
7474 exec ?. status === 'running' || exec ?. status === 'queued' || exec ?. status === 'pending'
@@ -103,7 +103,7 @@ export function resolveCellRender({
103103 return { kind : 'waiting' , labels : waitingOnLabels }
104104 }
105105 if ( exec ?. status === 'cancelled' ) return { kind : 'cancelled' }
106- if ( exec ?. status === 'error' ) return { kind : 'error' }
106+ if ( exec ?. status === 'error' ) return { kind : 'error' , message : exec . error }
107107 // Enrichment ran to completion but matched nothing → "Not found".
108108 if ( isEnrichmentOutput && exec ?. status === 'completed' ) return { kind : 'not-found' }
109109 // Workflow output: the group's run completed but this block produced no
@@ -249,12 +249,27 @@ export function CellRender({ kind, isEditing }: CellRenderProps): React.ReactEle
249249 )
250250
251251 case 'block-error' :
252- case 'error' :
252+ case 'error' : {
253+ if ( ! kind . message ) {
254+ return (
255+ < Wrap isEditing = { isEditing } >
256+ < StatusBadge status = 'error' />
257+ </ Wrap >
258+ )
259+ }
253260 return (
254261 < Wrap isEditing = { isEditing } >
255- < StatusBadge status = 'error' />
262+ < Tooltip . Root >
263+ < Tooltip . Trigger asChild >
264+ < span >
265+ < StatusBadge status = 'error' />
266+ </ span >
267+ </ Tooltip . Trigger >
268+ < Tooltip . Content side = 'top' > { kind . message } </ Tooltip . Content >
269+ </ Tooltip . Root >
256270 </ Wrap >
257271 )
272+ }
258273
259274 case 'running' :
260275 return (
0 commit comments