@@ -30,6 +30,11 @@ type LangfuseChatMessage = {
3030 tool_call_id ?: string
3131}
3232
33+ type LangfuseInputMessage =
34+ | UserMessage
35+ | AssistantMessage
36+ | LangfuseChatMessage
37+
3338/** Normalize a content block into a LangfuseContentPart (non-tool_use, non-tool_result) */
3439function toContentPart ( block : Record < string , unknown > ) : LangfuseContentPart | null {
3540 const type = block . type as string | undefined
@@ -127,9 +132,9 @@ function toRole(msg: Message): 'user' | 'assistant' | 'system' {
127132 return 'user'
128133}
129134
130- /** Convert messagesForAPI (UserMessage | AssistantMessage)[] → Langfuse input format */
135+ /** Convert internal or OpenAI-style messages → Langfuse input format */
131136export function convertMessagesToLangfuse (
132- messages : ( UserMessage | AssistantMessage ) [ ] ,
137+ messages : LangfuseInputMessage [ ] ,
133138 systemPrompt ?: readonly string [ ] ,
134139) : LangfuseChatMessage [ ] {
135140 const result : LangfuseChatMessage [ ] = [ ]
@@ -139,12 +144,23 @@ export function convertMessagesToLangfuse(
139144 }
140145 }
141146 for ( const msg of messages ) {
142- const inner = msg . message
147+ const inner = 'message' in msg ? msg . message : msg
143148 if ( ! inner ) continue
144- const role = ( inner . role as 'user' | 'assistant' | undefined ) ?? toRole ( msg )
149+ const role =
150+ ( inner . role as 'user' | 'assistant' | 'system' | 'tool' | undefined ) ??
151+ ( 'message' in msg ? toRole ( msg ) : 'user' )
145152 const rawContent = inner . content
146153 if ( typeof rawContent === 'string' || ! Array . isArray ( rawContent ) ) {
147- result . push ( { role, content : String ( rawContent ?? '' ) } )
154+ result . push ( {
155+ role,
156+ content : String ( rawContent ?? '' ) ,
157+ ...( 'tool_call_id' in inner && typeof inner . tool_call_id === 'string'
158+ ? { tool_call_id : inner . tool_call_id }
159+ : { } ) ,
160+ ...( 'tool_calls' in inner && Array . isArray ( inner . tool_calls )
161+ ? { tool_calls : inner . tool_calls as LangfuseToolCall [ ] }
162+ : { } ) ,
163+ } )
148164 continue
149165 }
150166
0 commit comments