in lib/client.js [612:642]
cancelResponse(id, sampleCount = 0) {
if (!id) {
this.realtime.send('response.cancel');
return { item: null };
} else if (id) {
const item = this.conversation.getItem(id);
if (!item) {
throw new Error(`Could not find item "${id}"`);
}
if (item.type !== 'message') {
throw new Error(`Can only cancelResponse messages with type "message"`);
} else if (item.role !== 'assistant') {
throw new Error(
`Can only cancelResponse messages with role "assistant"`,
);
}
this.realtime.send('response.cancel');
const audioIndex = item.content.findIndex((c) => c.type === 'audio');
if (audioIndex === -1) {
throw new Error(`Could not find audio on item to cancel`);
}
this.realtime.send('conversation.item.truncate', {
item_id: id,
content_index: audioIndex,
audio_end_ms: Math.floor(
(sampleCount / this.conversation.defaultFrequency) * 1000,
),
});
return { item };
}
}