Hide desktop agent dialog mode
This commit is contained in:
parent
eaca7e0f7d
commit
6c009c71a2
@ -138,10 +138,10 @@ desktop:
|
||||
description: Desktop file attachment action in assistant composer
|
||||
ui_surface: assistant_page
|
||||
multi_agent:
|
||||
enabled: true
|
||||
enabled: false
|
||||
release_tier: beta
|
||||
build_modes: [debug, profile, release]
|
||||
description: Desktop multi-agent assistant controls
|
||||
build_modes: []
|
||||
description: Desktop multi-agent assistant controls hidden by default
|
||||
ui_surface: assistant_page
|
||||
local_runtime:
|
||||
enabled: true
|
||||
|
||||
@ -451,19 +451,21 @@ class UiFeatureAccess {
|
||||
}
|
||||
|
||||
List<AssistantExecutionTarget> get availableExecutionTargets {
|
||||
return const <AssistantExecutionTarget>[
|
||||
AssistantExecutionTarget.agent,
|
||||
AssistantExecutionTarget.gateway,
|
||||
];
|
||||
if (supportsMultiAgent) {
|
||||
return const <AssistantExecutionTarget>[
|
||||
AssistantExecutionTarget.agent,
|
||||
AssistantExecutionTarget.gateway,
|
||||
];
|
||||
}
|
||||
return const <AssistantExecutionTarget>[AssistantExecutionTarget.gateway];
|
||||
}
|
||||
|
||||
AssistantExecutionTarget sanitizeExecutionTarget(
|
||||
AssistantExecutionTarget? target,
|
||||
) {
|
||||
final resolved = target ?? AssistantExecutionTarget.agent;
|
||||
return availableExecutionTargets.contains(resolved)
|
||||
? resolved
|
||||
: AssistantExecutionTarget.agent;
|
||||
final available = availableExecutionTargets;
|
||||
final resolved = target ?? available.first;
|
||||
return available.contains(resolved) ? resolved : available.first;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:xworkmate/app/app_controller.dart';
|
||||
import 'package:xworkmate/app/ui_feature_manifest.dart';
|
||||
import 'package:xworkmate/features/assistant/assistant_page_composer_clipboard.dart';
|
||||
import 'package:xworkmate/features/assistant/assistant_page_composer_skill_models.dart';
|
||||
import 'package:xworkmate/features/assistant/assistant_page_composer_skill_picker.dart';
|
||||
@ -62,6 +65,7 @@ void main() {
|
||||
testWidgets('shows mode-specific provider catalogs', (tester) async {
|
||||
final controller = AppController(
|
||||
environmentOverride: const <String, String>{},
|
||||
uiFeatureManifest: _manifestWithDesktopMultiAgentEnabled(),
|
||||
initialBridgeProviderCatalog: const <SingleAgentProvider>[
|
||||
SingleAgentProvider.codex,
|
||||
SingleAgentProvider.opencode,
|
||||
@ -211,6 +215,7 @@ void main() {
|
||||
) async {
|
||||
final controller = AppController(
|
||||
environmentOverride: const <String, String>{},
|
||||
uiFeatureManifest: _manifestWithDesktopMultiAgentEnabled(),
|
||||
initialBridgeProviderCatalog: const <SingleAgentProvider>[
|
||||
SingleAgentProvider.codex,
|
||||
SingleAgentProvider.opencode,
|
||||
@ -260,6 +265,7 @@ void main() {
|
||||
) async {
|
||||
final controller = AppController(
|
||||
environmentOverride: const <String, String>{},
|
||||
uiFeatureManifest: _manifestWithDesktopMultiAgentEnabled(),
|
||||
initialBridgeProviderCatalog: const <SingleAgentProvider>[
|
||||
SingleAgentProvider.codex,
|
||||
SingleAgentProvider.opencode,
|
||||
@ -372,6 +378,7 @@ void main() {
|
||||
(tester) async {
|
||||
final controller = AppController(
|
||||
environmentOverride: const <String, String>{},
|
||||
uiFeatureManifest: _manifestWithDesktopMultiAgentEnabled(),
|
||||
initialBridgeProviderCatalog: const <SingleAgentProvider>[
|
||||
SingleAgentProvider.codex,
|
||||
SingleAgentProvider.opencode,
|
||||
@ -614,6 +621,22 @@ void main() {
|
||||
});
|
||||
}
|
||||
|
||||
UiFeatureManifest _manifestWithDesktopMultiAgentEnabled() {
|
||||
return UiFeatureManifest.fromYamlString(
|
||||
File(UiFeatureManifest.assetPath).readAsStringSync(),
|
||||
).copyWithFeature(
|
||||
platform: UiFeaturePlatform.desktop,
|
||||
module: 'assistant',
|
||||
feature: 'multi_agent',
|
||||
enabled: true,
|
||||
buildModes: const <UiFeatureBuildMode>{
|
||||
UiFeatureBuildMode.debug,
|
||||
UiFeatureBuildMode.profile,
|
||||
UiFeatureBuildMode.release,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildTestApp({required Widget child, double height = 360}) {
|
||||
return MaterialApp(
|
||||
theme: AppTheme.light(),
|
||||
|
||||
@ -7,6 +7,7 @@ import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:xworkmate/app/app_controller.dart';
|
||||
import 'package:xworkmate/app/app_controller_desktop_external_acp_routing.dart';
|
||||
import 'package:xworkmate/app/app_controller_openclaw_task_queue.dart';
|
||||
import 'package:xworkmate/app/ui_feature_manifest.dart';
|
||||
import 'package:xworkmate/features/assistant/assistant_page_composer_skill_models.dart';
|
||||
import 'package:xworkmate/runtime/gateway_acp_client.dart';
|
||||
import 'package:xworkmate/runtime/go_task_service_client.dart';
|
||||
@ -63,6 +64,7 @@ void main() {
|
||||
() async {
|
||||
final controller = AppController(
|
||||
environmentOverride: const <String, String>{},
|
||||
uiFeatureManifest: _manifestWithDesktopMultiAgentEnabled(),
|
||||
initialBridgeProviderCatalog: const <SingleAgentProvider>[
|
||||
SingleAgentProvider.codex,
|
||||
SingleAgentProvider.openclaw,
|
||||
@ -108,6 +110,7 @@ void main() {
|
||||
() async {
|
||||
final controller = AppController(
|
||||
environmentOverride: const <String, String>{},
|
||||
uiFeatureManifest: _manifestWithDesktopMultiAgentEnabled(),
|
||||
initialBridgeProviderCatalog: const <SingleAgentProvider>[
|
||||
SingleAgentProvider.codex,
|
||||
SingleAgentProvider.opencode,
|
||||
@ -157,7 +160,7 @@ void main() {
|
||||
);
|
||||
|
||||
test(
|
||||
'new task sessions do not inherit execution target from main',
|
||||
'new task sessions use the feature-visible default instead of main',
|
||||
() async {
|
||||
final localHome = await Directory.systemTemp.createTemp(
|
||||
'xworkmate-no-main-target-inheritance-',
|
||||
@ -195,7 +198,7 @@ void main() {
|
||||
|
||||
expect(
|
||||
controller.assistantExecutionTargetForSession('draft:fresh-task'),
|
||||
AssistantExecutionTarget.agent,
|
||||
AssistantExecutionTarget.gateway,
|
||||
);
|
||||
|
||||
await controller.switchSession('draft:fresh-task');
|
||||
@ -205,7 +208,7 @@ void main() {
|
||||
);
|
||||
expect(
|
||||
freshThread.executionBinding.executionMode,
|
||||
ThreadExecutionMode.agent,
|
||||
ThreadExecutionMode.gateway,
|
||||
);
|
||||
expect(
|
||||
freshThread.workspaceBinding.workspacePath,
|
||||
@ -3537,9 +3540,26 @@ List<Map<String, dynamic>> _generatedArtifactPayloads() {
|
||||
];
|
||||
}
|
||||
|
||||
UiFeatureManifest _manifestWithDesktopMultiAgentEnabled() {
|
||||
return UiFeatureManifest.fromYamlString(
|
||||
File(UiFeatureManifest.assetPath).readAsStringSync(),
|
||||
).copyWithFeature(
|
||||
platform: UiFeaturePlatform.desktop,
|
||||
module: 'assistant',
|
||||
feature: 'multi_agent',
|
||||
enabled: true,
|
||||
buildModes: const <UiFeatureBuildMode>{
|
||||
UiFeatureBuildMode.debug,
|
||||
UiFeatureBuildMode.profile,
|
||||
UiFeatureBuildMode.release,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
AppController _connectedController(GoTaskServiceClient client) {
|
||||
return AppController(
|
||||
goTaskServiceClient: client,
|
||||
uiFeatureManifest: _manifestWithDesktopMultiAgentEnabled(),
|
||||
environmentOverride: const <String, String>{
|
||||
'BRIDGE_AUTH_TOKEN': 'bridge-token',
|
||||
},
|
||||
@ -3555,6 +3575,7 @@ AppController _connectedController(GoTaskServiceClient client) {
|
||||
AppController _connectedGatewayController(GoTaskServiceClient client) {
|
||||
return AppController(
|
||||
goTaskServiceClient: client,
|
||||
uiFeatureManifest: _manifestWithDesktopMultiAgentEnabled(),
|
||||
environmentOverride: const <String, String>{
|
||||
'BRIDGE_AUTH_TOKEN': 'bridge-token',
|
||||
},
|
||||
|
||||
@ -3,6 +3,7 @@ import 'dart:io';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:xworkmate/app/ui_feature_manifest.dart';
|
||||
import 'package:xworkmate/models/app_models.dart';
|
||||
import 'package:xworkmate/runtime/runtime_models.dart';
|
||||
|
||||
void main() {
|
||||
group('Desktop feature manifest cleanup', () {
|
||||
@ -14,12 +15,17 @@ void main() {
|
||||
buildMode: UiFeatureBuildMode.debug,
|
||||
);
|
||||
|
||||
expect(desktop.allowedDestinations, <WorkspaceDestination>{
|
||||
WorkspaceDestination.assistant,
|
||||
WorkspaceDestination.settings,
|
||||
});
|
||||
expect(
|
||||
desktop.allowedDestinations,
|
||||
<WorkspaceDestination>{
|
||||
WorkspaceDestination.assistant,
|
||||
WorkspaceDestination.settings,
|
||||
},
|
||||
desktop.availableExecutionTargets,
|
||||
const <AssistantExecutionTarget>[AssistantExecutionTarget.gateway],
|
||||
);
|
||||
expect(
|
||||
desktop.sanitizeExecutionTarget(AssistantExecutionTarget.agent),
|
||||
AssistantExecutionTarget.gateway,
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user