mirror of
https://github.com/CopilotKit/CopilotKit.git
synced 2026-09-14 16:26:20 +08:00
33e838da50
The failure banner lived inside the element the interrupt hook renders, and the hook caches that element, so a picker already on screen never saw an updated prop. One rejected resume left the flag set, and the next booking showed a failure the moment a slot was selected, before its own resume had started. The banner now lives outside the hook-owned element and the flag clears as the first step of a new selection, so the card only ever reports its own outcome. That makes the prop the card took for this purpose unreachable, so the prop and the branch it fed are gone rather than left as dead state. The cancel specs read the resumed run's final text as soon as a new assistant bubble appeared. A bubble shows up when streaming starts, and the guard is a negative assertion, so a response streaming "B" before "Booked: ..." would pass while it was still one character long. Each cancel test now waits for the run to finish first. Confirmed the wait is doing work rather than passing on arrival: probing the same control right after the bubble appears finds it enabled, so the assertion that follows genuinely blocks until the run ends. Verified live against a real model on both columns, 8 of 8 each.