@@ -141,8 +141,12 @@ vi.mock("../../agents/embedded-agent-runner/runs.js", () => ({
141141 sessionId : string ,
142142 prompt : string ,
143143 options : unknown ,
144- ) =>
145- state . queueEmbeddedAgentMessageMock ( sessionId , prompt , options )
144+ ) => {
145+ const result = state . queueEmbeddedAgentMessageMock ( sessionId , prompt , options ) ;
146+ if ( typeof result === "object" ) {
147+ return result ;
148+ }
149+ return result
146150 ? {
147151 queued : true ,
148152 sessionId,
@@ -156,7 +160,8 @@ vi.mock("../../agents/embedded-agent-runner/runs.js", () => ({
156160 reason : "no_active_run" ,
157161 target : "none" ,
158162 gatewayHealth : "live" ,
159- } ,
163+ } ;
164+ } ,
160165} ) ) ;
161166
162167vi . mock ( "./queue.js" , ( ) => ( {
@@ -352,6 +357,30 @@ describe("runReplyAgent active steering", () => {
352357 expect ( state . runEmbeddedAgentMock ) . not . toHaveBeenCalled ( ) ;
353358 expect ( typing . cleanup ) . toHaveBeenCalledTimes ( 1 ) ;
354359 } ) ;
360+
361+ it ( "queues a follow-up when transcript-backed steering is unsupported" , async ( ) => {
362+ state . queueEmbeddedAgentMessageMock . mockReturnValueOnce ( {
363+ queued : false ,
364+ sessionId : "session" ,
365+ reason : "transcript_commit_wait_unsupported" ,
366+ target : "none" ,
367+ gatewayHealth : "live" ,
368+ } ) ;
369+ const onTurnAdopted = vi . fn ( ) ;
370+ const { run } = createMinimalRun ( {
371+ opts : { onTurnAdopted } ,
372+ isActive : true ,
373+ isStreaming : true ,
374+ shouldSteer : true ,
375+ resolvedQueueMode : "steer" ,
376+ } ) ;
377+
378+ await expect ( run ( ) ) . resolves . toBeUndefined ( ) ;
379+
380+ expect ( vi . mocked ( enqueueFollowupRun ) ) . toHaveBeenCalledTimes ( 1 ) ;
381+ expect ( state . runEmbeddedAgentMock ) . not . toHaveBeenCalled ( ) ;
382+ expect ( onTurnAdopted ) . not . toHaveBeenCalled ( ) ;
383+ } ) ;
355384} ) ;
356385
357386describe ( "runReplyAgent heartbeat followup guard" , ( ) => {
0 commit comments