11import { EngineState } from '../../domain/State.js' ;
22import { SignalDetectedError } from '../../errors/SignalDetectedError.js' ;
3- import { Signal } from '../Signal.js' ;
3+ import { Signal , SignalType } from '../Signal.js' ;
44import { State } from './State.js' ;
55
66export class ExecutingState extends State {
@@ -17,6 +17,29 @@ export class ExecutingState extends State {
1717 if ( error instanceof SignalDetectedError ) {
1818 return error . signal ;
1919 }
20+
21+ // Fallback for cases where instanceof might fail (ESM/Jest quirks)
22+ const errObj = error as Record < string , unknown > ;
23+
24+ if ( errObj && typeof errObj === 'object' ) {
25+ if ( errObj . code === 'SIGNAL_DETECTED' && errObj . signal ) {
26+ return errObj . signal as Signal ;
27+ }
28+ }
29+
30+ const metadata = ( errObj ?. metadata || { } ) as Record < string , unknown > ;
31+ const rawSignal = ( errObj ?. signal || metadata . signal ) as Record < string , unknown > | undefined ;
32+
33+ if ( errObj && typeof errObj === 'object' && ( errObj . code === 'SIGNAL_DETECTED' || rawSignal ) ) {
34+ if ( rawSignal && typeof rawSignal . type === 'string' ) {
35+ return new Signal (
36+ rawSignal . type as SignalType ,
37+ ( rawSignal . reason as string ) || '' ,
38+ ( rawSignal . metadata as Record < string , unknown > ) || { } ,
39+ ) ;
40+ }
41+ return Signal . fail ( 'Signal detected but missing signal object or type' ) ;
42+ }
2043 return Signal . fail ( `Execution failed: ${ ( error as Error ) . message } ` ) ;
2144 }
2245 }
0 commit comments