@@ -459,90 +459,91 @@ const makeBackendOutputLogShape = (
459459) : Effect . Effect < DesktopBackendOutputLogShape > =>
460460 Option . match ( sink , {
461461 onNone : ( ) => Effect . succeed ( DesktopBackendOutputLogNoop ) ,
462- onSome : ( logFile ) =>
463- Effect . gen ( function * ( ) {
464- const sessionRef = yield * Ref . make ( Option . none < BackendOutputSession > ( ) ) ;
465- const writeFailure = Effect . fn ( "desktop.observability.backendOutput.writeFailure" ) (
466- function * ( session : BackendOutputSession , details : string ) {
467- yield * writeBackendChildLogRecord ( logFile , {
468- message : "backend child process failure output start" ,
469- level : "ERROR" ,
470- annotations : {
471- component : "desktop-backend-child" ,
472- runId : session . runId ,
473- instanceId : id ,
474- phase : "START" ,
475- details : session . startDetails ,
476- } ,
477- } ) ;
478- for ( const output of session . chunks ) {
479- yield * writeBackendChildLogRecord ( logFile , {
480- message : "backend child process output" ,
481- level : output . streamName === "stderr" ? "ERROR" : "INFO" ,
482- annotations : {
483- component : "desktop-backend-child" ,
484- runId : session . runId ,
485- instanceId : id ,
486- stream : output . streamName ,
487- text : textDecoder . decode ( output . chunk . subarray ( output . offset ) ) ,
488- } ,
489- } ) ;
490- }
491- yield * writeBackendChildLogRecord ( logFile , {
492- message : "backend child process failure output end" ,
493- level : "ERROR" ,
494- annotations : {
495- component : "desktop-backend-child" ,
496- runId : session . runId ,
497- instanceId : id ,
498- phase : "END" ,
499- details : sanitizeLogValue ( details ) ,
500- } ,
501- } ) ;
462+ // The enclosing operation owns the span for this inline handler.
463+ onSome : Effect . fnUntraced ( function * ( logFile ) {
464+ const sessionRef = yield * Ref . make ( Option . none < BackendOutputSession > ( ) ) ;
465+ const writeFailure = Effect . fn ( "desktop.observability.backendOutput.writeFailure" ) ( function * (
466+ session : BackendOutputSession ,
467+ details : string ,
468+ ) {
469+ yield * writeBackendChildLogRecord ( logFile , {
470+ message : "backend child process failure output start" ,
471+ level : "ERROR" ,
472+ annotations : {
473+ component : "desktop-backend-child" ,
474+ runId : session . runId ,
475+ instanceId : id ,
476+ phase : "START" ,
477+ details : session . startDetails ,
502478 } ,
503- ) ;
504- return {
505- beginSession : Effect . fn ( "desktop.observability.backendOutput.beginSession" ) ( function * ( {
506- details,
507- } ) {
508- const runId = yield * currentDesktopRunId ;
509- yield * Ref . set (
510- sessionRef ,
511- Option . some ( {
512- runId,
513- startDetails : sanitizeLogValue ( details ) ,
514- chunks : [ ] ,
515- byteLength : 0 ,
516- } ) ,
517- ) ;
518- } ) ,
519- writeOutputChunk : Effect . fnUntraced ( function * ( streamName , chunk ) {
520- if ( environment . isDevelopment ) {
521- yield * writeDevelopmentConsoleOutput ( streamName , chunk ) ;
522- }
523- yield * Ref . update (
524- sessionRef ,
525- Option . map ( ( session ) => appendBoundedOutputChunk ( session , streamName , chunk ) ) ,
526- ) ;
527- } ) ,
528- persistFailureSnapshot : Effect . fn (
529- "desktop.observability.backendOutput.persistFailureSnapshot" ,
530- ) ( function * ( { details } ) {
531- const session = yield * Ref . get ( sessionRef ) ;
532- if ( Option . isSome ( session ) ) {
533- yield * writeFailure ( session . value , details ) ;
534- }
535- } ) ,
536- persistFailure : Effect . fn ( "desktop.observability.backendOutput.persistFailure" ) (
537- function * ( { details } ) {
538- const session = yield * Ref . modify ( sessionRef , ( current ) => [ current , Option . none ( ) ] ) ;
539- if ( Option . isNone ( session ) ) return ;
540- yield * writeFailure ( session . value , details ) ;
479+ } ) ;
480+ for ( const output of session . chunks ) {
481+ yield * writeBackendChildLogRecord ( logFile , {
482+ message : "backend child process output" ,
483+ level : output . streamName === "stderr" ? "ERROR" : "INFO" ,
484+ annotations : {
485+ component : "desktop-backend-child" ,
486+ runId : session . runId ,
487+ instanceId : id ,
488+ stream : output . streamName ,
489+ text : textDecoder . decode ( output . chunk . subarray ( output . offset ) ) ,
541490 } ,
542- ) ,
543- discardSession : Ref . set ( sessionRef , Option . none ( ) ) ,
544- } satisfies DesktopBackendOutputLogShape ;
545- } ) ,
491+ } ) ;
492+ }
493+ yield * writeBackendChildLogRecord ( logFile , {
494+ message : "backend child process failure output end" ,
495+ level : "ERROR" ,
496+ annotations : {
497+ component : "desktop-backend-child" ,
498+ runId : session . runId ,
499+ instanceId : id ,
500+ phase : "END" ,
501+ details : sanitizeLogValue ( details ) ,
502+ } ,
503+ } ) ;
504+ } ) ;
505+ return {
506+ beginSession : Effect . fn ( "desktop.observability.backendOutput.beginSession" ) ( function * ( {
507+ details,
508+ } ) {
509+ const runId = yield * currentDesktopRunId ;
510+ yield * Ref . set (
511+ sessionRef ,
512+ Option . some ( {
513+ runId,
514+ startDetails : sanitizeLogValue ( details ) ,
515+ chunks : [ ] ,
516+ byteLength : 0 ,
517+ } ) ,
518+ ) ;
519+ } ) ,
520+ writeOutputChunk : Effect . fnUntraced ( function * ( streamName , chunk ) {
521+ if ( environment . isDevelopment ) {
522+ yield * writeDevelopmentConsoleOutput ( streamName , chunk ) ;
523+ }
524+ yield * Ref . update (
525+ sessionRef ,
526+ Option . map ( ( session ) => appendBoundedOutputChunk ( session , streamName , chunk ) ) ,
527+ ) ;
528+ } ) ,
529+ persistFailureSnapshot : Effect . fn (
530+ "desktop.observability.backendOutput.persistFailureSnapshot" ,
531+ ) ( function * ( { details } ) {
532+ const session = yield * Ref . get ( sessionRef ) ;
533+ if ( Option . isSome ( session ) ) {
534+ yield * writeFailure ( session . value , details ) ;
535+ }
536+ } ) ,
537+ persistFailure : Effect . fn ( "desktop.observability.backendOutput.persistFailure" ) ( function * ( {
538+ details,
539+ } ) {
540+ const session = yield * Ref . modify ( sessionRef , ( current ) => [ current , Option . none ( ) ] ) ;
541+ if ( Option . isNone ( session ) ) return ;
542+ yield * writeFailure ( session . value , details ) ;
543+ } ) ,
544+ discardSession : Ref . set ( sessionRef , Option . none ( ) ) ,
545+ } satisfies DesktopBackendOutputLogShape ;
546+ } ) ,
546547 } ) ;
547548
548549const layerBackendOutputLogFactory = Layer . effect (
@@ -589,7 +590,9 @@ const layerBackendOutputLogFactory = Layer.effect(
589590 } ) ;
590591
591592 return DesktopBackendOutputLogFactory . of ( {
592- forInstance : ( id ) => makeForId ( id ) ,
593+ forInstance : Effect . fn ( "DesktopBackendOutputLogFactory.forInstance" ) ( function ( id ) {
594+ return makeForId ( id ) ;
595+ } ) ,
593596 } ) ;
594597 } ) ,
595598) ;
0 commit comments