profileShare

rasmusjy / voicetask

Read-only snapshot

No repository description.

main default branch 105 files Expires Sep 13, 2026, 9:06 AM
interview.ts 885 bytes
1 import type { InterviewTurn, Session } from '../../shared/types'
2 import type { InterviewLlm } from '../providers/types'
3 import { splitTranscriptWindow } from './summary'
4
5 export function isDoneAnswer(text: string): boolean {
6 return text.trim().toLowerCase() === 'done'
7 }
8
9 export async function runInterviewTurn(llm: InterviewLlm, session: Session): Promise<InterviewTurn> {
10 const lastSegment = session.segments[session.segments.length - 1]
11 if (lastSegment?.speaker === 'user' && isDoneAnswer(lastSegment.text)) {
12 return {
13 coverage: session.coverage,
14 nextQuestion: 'Interview complete.',
15 contradiction: null,
16 done: true,
17 summaryUpdate: null,
18 }
19 }
20
21 const { recentSegments } = splitTranscriptWindow(session.segments)
22
23 return llm.nextTurn({
24 summary: session.summary,
25 segments: recentSegments,
26 coverage: session.coverage,
27 })
28 }
29