31 lines
968 B
TypeScript
31 lines
968 B
TypeScript
import type { ChatMessage } from '../types/chat'
|
|
import type { AgentTurnView } from '../types/viewModels'
|
|
|
|
export function messagesToTurns(
|
|
messages: ChatMessage[],
|
|
): Array<{ human: ChatMessage; view?: ChatMessage }> {
|
|
const result: Array<{ human: ChatMessage; view?: ChatMessage }> = []
|
|
for (let i = 0; i < messages.length; i += 1) {
|
|
const msg = messages[i]
|
|
if (msg.role === 'human') {
|
|
result.push({
|
|
human: msg,
|
|
view: messages[i + 1]?.role === 'view' ? messages[i + 1] : undefined,
|
|
})
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
|
|
export function toAgentTurnView(round: { human: ChatMessage; view?: ChatMessage }): AgentTurnView {
|
|
return {
|
|
id: round.human.id,
|
|
userMessage: round.human.context,
|
|
assistantMessage: round.view?.context,
|
|
taskPlan: round.view?.taskPlan,
|
|
attachedFiles: round.human.attachedFiles,
|
|
isWorking: Boolean(round.view?.thinking),
|
|
thinkingContent: round.view?.thinking ? '' : undefined,
|
|
}
|
|
}
|