From be7331fa3d3df5bcb6d90d989badf8a1bea37ebb Mon Sep 17 00:00:00 2001 From: Haitao Pan Date: Sat, 11 Apr 2026 12:07:34 +0800 Subject: [PATCH] fix: align merged desktop ACP runtime wiring --- lib/app/app_controller_desktop_core.dart | 13 +++++++++++-- ...ontroller_desktop_runtime_coordination_impl.dart | 2 +- ...app_controller_desktop_runtime_cleanup_test.dart | 8 ++++---- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/lib/app/app_controller_desktop_core.dart b/lib/app/app_controller_desktop_core.dart index c0667aed..0a09c776 100644 --- a/lib/app/app_controller_desktop_core.dart +++ b/lib/app/app_controller_desktop_core.dart @@ -27,6 +27,7 @@ import '../runtime/codex_runtime.dart'; import '../runtime/codex_config_bridge.dart'; import '../runtime/code_agent_node_orchestrator.dart'; import '../runtime/go_gateway_runtime_desktop_client.dart'; +import '../runtime/go_acp_stdio_bridge.dart'; import '../runtime/assistant_artifacts.dart'; import '../runtime/desktop_thread_artifact_service.dart'; import '../runtime/external_code_agent_acp_desktop_transport.dart'; @@ -136,6 +137,7 @@ class AppController extends ChangeNotifier { hostUiFeaturePlatformInternal = Platform.isIOS || Platform.isAndroid ? UiFeaturePlatform.mobile : UiFeaturePlatform.desktop; + final sharedExternalAcpBridge = GoAcpStdioBridge(); final resolvedRuntimeCoordinator = runtimeCoordinator ?? @@ -143,7 +145,9 @@ class AppController extends ChangeNotifier { gateway: GatewayRuntime( store: storeInternal, identityStore: DeviceIdentityStore(storeInternal), - sessionClient: GoGatewayRuntimeDesktopClient(), + sessionClient: GoGatewayRuntimeDesktopClient( + bridge: sharedExternalAcpBridge, + ), allowDirectSocketFallbackOnSessionClientFailure: shouldBlockEmbeddedAgentLaunch( isAppleHost: Platform.isIOS || Platform.isMacOS, @@ -214,7 +218,9 @@ class AppController extends ChangeNotifier { goTaskServiceClient ?? DesktopGoTaskService( gateway: runtimeCoordinatorInternal.gateway, - acpTransport: ExternalCodeAgentAcpDesktopTransport(), + acpTransport: ExternalCodeAgentAcpDesktopTransport( + bridge: sharedExternalAcpBridge, + ), ); multiAgentOrchestratorInternal = MultiAgentOrchestrator( config: resolveMultiAgentConfigInternal( @@ -293,6 +299,9 @@ class AppController extends ChangeNotifier { late final GoTaskServiceClient goTaskServiceClientInternal; late final MultiAgentOrchestrator multiAgentOrchestratorInternal; late final MultiAgentMountManager multiAgentMountManagerInternal; + + GoTaskServiceClient get goTaskServiceClientForTest => goTaskServiceClientInternal; + Map singleAgentCapabilitiesByProviderInternal = const {}; diff --git a/lib/app/app_controller_desktop_runtime_coordination_impl.dart b/lib/app/app_controller_desktop_runtime_coordination_impl.dart index 5fd39d06..a0af95e1 100644 --- a/lib/app/app_controller_desktop_runtime_coordination_impl.dart +++ b/lib/app/app_controller_desktop_runtime_coordination_impl.dart @@ -225,7 +225,7 @@ bool singleAgentProviderRequiresLocalPathRuntimeInternal( SingleAgentProvider provider, ) { final configuredEndpoint = controller.settings - .externalAcpEndpointForProvider(provider) + .providerSyncDefinitionForProvider(provider) .endpoint .trim(); if (configuredEndpoint.isEmpty) { diff --git a/test/app_controller_desktop_runtime_cleanup_test.dart b/test/app_controller_desktop_runtime_cleanup_test.dart index 87d1ad11..b5a18544 100644 --- a/test/app_controller_desktop_runtime_cleanup_test.dart +++ b/test/app_controller_desktop_runtime_cleanup_test.dart @@ -102,9 +102,9 @@ void main() { final store = SecureConfigStore( enableSecureStorage: false, - databasePathResolver: () async => '${root.path}/settings.sqlite3', - fallbackDirectoryPathResolver: () async => root.path, - defaultSupportDirectoryPathResolver: () async => root.path, + appDataRootPathResolver: () async => root.path, + secretRootPathResolver: () async => root.path, + supportRootPathResolver: () async => root.path, ); final controller = AppController( store: store, @@ -128,7 +128,7 @@ void main() { final endpoint = 'http://${server.address.address}:${server.port}'; final nextSettings = controller.settings.copyWith( - externalAcpEndpoints: [ + providerSyncDefinitions: [ ExternalAcpEndpointProfile.defaultsForProvider( SingleAgentProvider.codex, ).copyWith(endpoint: endpoint),