diff --git a/lib/app/app_controller_desktop_thread_binding.dart b/lib/app/app_controller_desktop_thread_binding.dart index d7f7711b..1f3fcf51 100644 --- a/lib/app/app_controller_desktop_thread_binding.dart +++ b/lib/app/app_controller_desktop_thread_binding.dart @@ -273,7 +273,9 @@ extension AppControllerDesktopThreadBinding on AppController { final ownerScope = await ensureDesktopThreadOwnerScopeInternal( normalizedSessionKey, ); - final latestRecord = assistantThreadRecordsInternal[normalizedSessionKey]; + final latestRecord = + taskThreadForSessionInternal(normalizedSessionKey) ?? + assistantThreadRecordsInternal[normalizedSessionKey]; final snapshot = resolveDesktopThreadBindingSnapshotInternal( defaultExecutionTarget: settings.assistantExecutionTarget, executionTargetOverride: executionTarget, @@ -285,7 +287,9 @@ extension AppControllerDesktopThreadBinding on AppController { ownerScope: ownerScope, existingBinding: snapshot.record?.workspaceBinding, ); - final currentRecord = assistantThreadRecordsInternal[normalizedSessionKey]; + final currentRecord = + taskThreadForSessionInternal(normalizedSessionKey) ?? + assistantThreadRecordsInternal[normalizedSessionKey]; final existingLifecycle = currentRecord?.lifecycleState ?? snapshot.record?.lifecycleState ?? diff --git a/test/runtime/assistant_execution_target_test.dart b/test/runtime/assistant_execution_target_test.dart index b0c3134e..31dafe79 100644 --- a/test/runtime/assistant_execution_target_test.dart +++ b/test/runtime/assistant_execution_target_test.dart @@ -2045,6 +2045,13 @@ Future _selectGatewaySession( await controller.setAssistantExecutionTarget( AssistantExecutionTarget.gateway, ); + await controller.setAssistantProvider(SingleAgentProvider.openclaw); + controller.upsertTaskThreadInternal( + sessionKey, + executionTarget: AssistantExecutionTarget.gateway, + selectedProvider: SingleAgentProvider.openclaw, + selectedProviderSource: ThreadSelectionSource.explicit, + ); } Future _waitForThreadLifecycleStatus(