Support text-only agent (#131)

This commit is contained in:
Ben Cherry 2025-03-26 15:17:57 -07:00 committed by GitHub
parent 00448e7c89
commit 5416e0fb9f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 21 additions and 16 deletions

View File

@ -207,7 +207,7 @@ export default function Playground({
]); ]);
const chatTileContent = useMemo(() => { const chatTileContent = useMemo(() => {
if (voiceAssistant.audioTrack) { if (voiceAssistant.agent) {
return ( return (
<TranscriptionTile <TranscriptionTile
agentAudioTrack={voiceAssistant.audioTrack} agentAudioTrack={voiceAssistant.audioTrack}
@ -216,7 +216,7 @@ export default function Playground({
); );
} }
return <></>; return <></>;
}, [config.settings.theme_color, voiceAssistant.audioTrack]); }, [config.settings.theme_color, voiceAssistant.audioTrack, voiceAssistant.agent]);
const handleRpcCall = useCallback(async () => { const handleRpcCall = useCallback(async () => {
if (!voiceAssistant.agent || !room) return; if (!voiceAssistant.agent || !room) return;

View File

@ -17,10 +17,10 @@ export function TranscriptionTile({
agentAudioTrack, agentAudioTrack,
accentColor, accentColor,
}: { }: {
agentAudioTrack: TrackReferenceOrPlaceholder; agentAudioTrack?: TrackReferenceOrPlaceholder;
accentColor: string; accentColor: string;
}) { }) {
const agentMessages = useTrackTranscription(agentAudioTrack); const agentMessages = useTrackTranscription(agentAudioTrack || undefined);
const localParticipant = useLocalParticipant(); const localParticipant = useLocalParticipant();
const localMessages = useTrackTranscription({ const localMessages = useTrackTranscription({
publication: localParticipant.microphoneTrack, publication: localParticipant.microphoneTrack,
@ -36,6 +36,7 @@ export function TranscriptionTile({
// store transcripts // store transcripts
useEffect(() => { useEffect(() => {
if (agentAudioTrack) {
agentMessages.segments.forEach((s) => agentMessages.segments.forEach((s) =>
transcripts.set( transcripts.set(
s.id, s.id,
@ -46,6 +47,8 @@ export function TranscriptionTile({
) )
) )
); );
}
localMessages.segments.forEach((s) => localMessages.segments.forEach((s) =>
transcripts.set( transcripts.set(
s.id, s.id,
@ -59,8 +62,9 @@ export function TranscriptionTile({
const allMessages = Array.from(transcripts.values()); const allMessages = Array.from(transcripts.values());
for (const msg of chatMessages) { for (const msg of chatMessages) {
const isAgent = const isAgent = agentAudioTrack
msg.from?.identity === agentAudioTrack.participant?.identity; ? msg.from?.identity === agentAudioTrack.participant?.identity
: msg.from?.identity !== localParticipant.localParticipant.identity;
const isSelf = const isSelf =
msg.from?.identity === localParticipant.localParticipant.identity; msg.from?.identity === localParticipant.localParticipant.identity;
let name = msg.from?.name; let name = msg.from?.name;
@ -86,9 +90,10 @@ export function TranscriptionTile({
transcripts, transcripts,
chatMessages, chatMessages,
localParticipant.localParticipant, localParticipant.localParticipant,
agentAudioTrack.participant, agentAudioTrack?.participant,
agentMessages.segments, agentMessages.segments,
localMessages.segments, localMessages.segments,
agentAudioTrack,
]); ]);
return ( return (