Files
orca/src/shared/runtime-navigation.ts
T
Neil 6a9ba9d733 Keep remote worktree creation from navigating paired clients (#25793)
* fix(workspaces): keep remote creation from navigating paired viewers

* fix(workspaces): revoke pending navigation after connection replacement

* fix(workspaces): provision when the host renderer is unavailable

* test: align navigation and cache-scan expectations with current behavior

* fix(workspaces): provision broadcast creates without a host renderer
2026-10-06 00:38:53 -07:00

28 lines
977 B
TypeScript

export const RUNTIME_NAVIGATION_TARGETS = ['caller', 'host', 'clients', 'all'] as const
export type RuntimeNavigationTarget = (typeof RUNTIME_NAVIGATION_TARGETS)[number]
export function resolveRuntimeNavigationTarget(args: {
navigation?: RuntimeNavigationTarget
notifyClients?: boolean
clientKind?: 'mobile' | 'runtime'
defaultTarget?: RuntimeNavigationTarget
}): RuntimeNavigationTarget {
if (args.navigation) {
return args.navigation
}
if (args.clientKind) {
// Why: legacy paired clients sent notifyClients:true; treating that as navigation lets one device steer every UI.
return 'caller'
}
return args.notifyClients === false ? 'caller' : (args.defaultTarget ?? 'all')
}
export function navigationTargetsHost(target: RuntimeNavigationTarget): boolean {
return target === 'host' || target === 'all'
}
export function navigationTargetsClients(target: RuntimeNavigationTarget): boolean {
return target === 'clients' || target === 'all'
}