mirror of
https://github.com/stablyai/orca.git
synced 2026-10-15 08:03:08 +00:00
Fix web wake respawn dedupe to only block concurrent creates.
Drop the one-shot requested flag so later worktree wake clicks can respawn a terminal after the in-flight create finishes. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -12,14 +12,13 @@ describe('web-runtime-wake-terminal-respawn', () => {
|
||||
resetWebRuntimeWakeTerminalRespawnForTests()
|
||||
})
|
||||
|
||||
it('dedupes wake respawn requests for the same worktree', () => {
|
||||
it('dedupes concurrent wake respawn requests for the same worktree', () => {
|
||||
expect(beginWebRuntimeWakeTerminalRespawn('wt-1')).toBe(true)
|
||||
expect(shouldSkipWebRuntimeWakeTerminalRespawn('wt-1')).toBe(true)
|
||||
expect(beginWebRuntimeWakeTerminalRespawn('wt-1')).toBe(false)
|
||||
endWebRuntimeWakeTerminalRespawn('wt-1')
|
||||
// Why: beginWebRuntimeWakeTerminalRespawn is one request per worktree;
|
||||
// endWebRuntimeWakeTerminalRespawn only clears the in-flight bit.
|
||||
expect(shouldSkipWebRuntimeWakeTerminalRespawn('wt-1')).toBe(true)
|
||||
expect(shouldSkipWebRuntimeWakeTerminalRespawn('wt-1')).toBe(false)
|
||||
expect(beginWebRuntimeWakeTerminalRespawn('wt-1')).toBe(true)
|
||||
})
|
||||
|
||||
it('clears wake respawn tracking for a removed worktree', () => {
|
||||
|
||||
@@ -1,18 +1,13 @@
|
||||
const wakeTerminalRespawnRequestedByWorktree = new Set<string>()
|
||||
const wakeTerminalRespawnInFlightByWorktree = new Set<string>()
|
||||
|
||||
export function shouldSkipWebRuntimeWakeTerminalRespawn(worktreeId: string): boolean {
|
||||
return (
|
||||
wakeTerminalRespawnRequestedByWorktree.has(worktreeId) ||
|
||||
wakeTerminalRespawnInFlightByWorktree.has(worktreeId)
|
||||
)
|
||||
return wakeTerminalRespawnInFlightByWorktree.has(worktreeId)
|
||||
}
|
||||
|
||||
export function beginWebRuntimeWakeTerminalRespawn(worktreeId: string): boolean {
|
||||
if (shouldSkipWebRuntimeWakeTerminalRespawn(worktreeId)) {
|
||||
if (wakeTerminalRespawnInFlightByWorktree.has(worktreeId)) {
|
||||
return false
|
||||
}
|
||||
wakeTerminalRespawnRequestedByWorktree.add(worktreeId)
|
||||
wakeTerminalRespawnInFlightByWorktree.add(worktreeId)
|
||||
return true
|
||||
}
|
||||
@@ -22,12 +17,10 @@ export function endWebRuntimeWakeTerminalRespawn(worktreeId: string): void {
|
||||
}
|
||||
|
||||
export function clearWebRuntimeWakeTerminalRespawnForWorktree(worktreeId: string): void {
|
||||
wakeTerminalRespawnRequestedByWorktree.delete(worktreeId)
|
||||
wakeTerminalRespawnInFlightByWorktree.delete(worktreeId)
|
||||
}
|
||||
|
||||
export function clearAllWebRuntimeWakeTerminalRespawn(): void {
|
||||
wakeTerminalRespawnRequestedByWorktree.clear()
|
||||
wakeTerminalRespawnInFlightByWorktree.clear()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user