Bin29's picture
Sync from main: 68df783 feat: support multimodal studio reference images
d47b053
import type {
StudioAssistantMessage,
StudioPartStore
} from '../../domain/types'
const DOOM_LOOP_THRESHOLD = 3
export async function isDoomLoop(input: {
assistantMessage: StudioAssistantMessage
partStore: StudioPartStore
toolName: string
toolInput: Record<string, unknown>
}): Promise<boolean> {
const latestParts = await input.partStore.listByMessageId(input.assistantMessage.id)
const lastThree = latestParts.slice(-DOOM_LOOP_THRESHOLD)
return (
lastThree.length === DOOM_LOOP_THRESHOLD &&
lastThree.every(
(part) =>
part.type === 'tool' &&
part.tool === input.toolName &&
JSON.stringify(part.state.input) === JSON.stringify(input.toolInput)
)
)
}