@@ -42,6 +42,7 @@ import {
4242import { resolveSessionTranscriptFile } from "./transcript-file-resolve.js" ;
4343import { streamSessionTranscriptLines } from "./transcript-stream.js" ;
4444import {
45+ type OwnedSessionTranscriptPublishedEntry ,
4546 resolveOwnedSessionTranscriptWriteLockRunner ,
4647 withOwnedSessionTranscriptWrites ,
4748} from "./transcript-write-context.js" ;
@@ -511,6 +512,7 @@ async function appendTranscriptTurnMessages(
511512 options : SessionTranscriptTurnPersistOptions ,
512513) : Promise < TranscriptMessageAppendResult < unknown > [ ] > {
513514 const appendedMessages : TranscriptMessageAppendResult < unknown > [ ] = [ ] ;
515+ const publishedEntries : OwnedSessionTranscriptPublishedEntry [ ] = [ ] ;
514516 const appendMessages = async ( appendMessage : SessionTranscriptTurnAppendRunner ) => {
515517 for ( const append of options . messages ) {
516518 const shouldAppend = append . shouldAppend
@@ -535,12 +537,18 @@ async function appendTranscriptTurnMessages(
535537 ...( append . prepareMessageAfterIdempotencyCheck
536538 ? { prepareMessageAfterIdempotencyCheck : append . prepareMessageAfterIdempotencyCheck }
537539 : { } ) ,
540+ onHeaderCreated : ( header ) => {
541+ publishedEntries . push ( { kind : "header" , serialized : header } ) ;
542+ } ,
538543 ...( append . useRawWhenLinear !== undefined
539544 ? { useRawWhenLinear : append . useRawWhenLinear }
540545 : { } ) ,
541546 } ) ;
542547 if ( result ) {
543548 appendedMessages . push ( result ) ;
549+ if ( result . appended ) {
550+ publishedEntries . push ( { kind : "id" , id : result . messageId } ) ;
551+ }
544552 }
545553 }
546554 } ;
@@ -560,7 +568,11 @@ async function appendTranscriptTurnMessages(
560568 if ( activeLockRunner ) {
561569 await activeLockRunner (
562570 ( ) => withSessionTranscriptAppendQueue ( target . sessionFile , runBatchWithOwnedLock ) ,
563- { publishOwnedWrite : true } ,
571+ {
572+ publishOwnedWrite : true ,
573+ resolvePublishedEntries : ( ) => publishedEntries ,
574+ resolvePublishedEntriesAfterFailure : ( ) => publishedEntries ,
575+ } ,
564576 ) ;
565577 } else {
566578 await withSessionTranscriptAppendQueue ( target . sessionFile , async ( ) => {
0 commit comments