Improve Galaxy permissions, computer-use routing, and agent UX

This commit is contained in:
2026-09-30 09:55:24 -05:00
parent cc064d4050
commit a2a2633199
30 changed files with 623 additions and 180 deletions
+5 -27
View File
@@ -1415,10 +1415,6 @@ impl AISettingsPageView {
dropdown.set_items(
vec![
DropdownItem::new(
"Agent decides",
AISettingsPageAction::SetApplyCodeDiffs(ActionPermission::AgentDecides),
),
DropdownItem::new(
"Always allow",
AISettingsPageAction::SetApplyCodeDiffs(ActionPermission::AlwaysAllow),
@@ -1449,10 +1445,6 @@ impl AISettingsPageView {
dropdown.set_menu_width(AI_SETTINGS_DROPDOWN_WIDTH, ctx);
dropdown.set_items(
vec![
DropdownItem::new(
"Agent decides",
AISettingsPageAction::SetReadFiles(ActionPermission::AgentDecides),
),
DropdownItem::new(
"Always allow",
AISettingsPageAction::SetReadFiles(ActionPermission::AlwaysAllow),
@@ -1483,10 +1475,6 @@ impl AISettingsPageView {
dropdown.set_menu_width(AI_SETTINGS_DROPDOWN_WIDTH, ctx);
dropdown.set_items(
vec![
DropdownItem::new(
"Agent decides",
AISettingsPageAction::SetExecuteCommands(ActionPermission::AgentDecides),
),
DropdownItem::new(
"Always allow",
AISettingsPageAction::SetExecuteCommands(ActionPermission::AlwaysAllow),
@@ -1551,10 +1539,6 @@ impl AISettingsPageView {
dropdown.set_menu_width(AI_SETTINGS_DROPDOWN_WIDTH, ctx);
dropdown.set_items(
vec![
DropdownItem::new(
"Agent decides",
AISettingsPageAction::SetMCPPermissions(ActionPermission::AgentDecides),
),
DropdownItem::new(
"Always allow",
AISettingsPageAction::SetMCPPermissions(ActionPermission::AlwaysAllow),
@@ -2609,10 +2593,9 @@ impl AISettingsPageView {
}
let active = match current_permission {
ActionPermission::AgentDecides | ActionPermission::Unknown => 0,
ActionPermission::AlwaysAllow => 1,
ActionPermission::AlwaysAsk => 2,
ActionPermission::GalaxyDecides => 3,
ActionPermission::AlwaysAllow => 0,
ActionPermission::AlwaysAsk | ActionPermission::Unknown => 1,
ActionPermission::GalaxyDecides => 2,
};
menu.set_selected_by_index(active, ctx);
@@ -4748,9 +4731,7 @@ impl AgentsWidget {
app,
));
if execute_commands_setting == ActionPermission::AlwaysAsk
|| execute_commands_setting == ActionPermission::AgentDecides
{
if execute_commands_setting == ActionPermission::AlwaysAsk {
let command_allowlist =
BlocklistAIPermissions::as_ref(app).get_execute_commands_allowlist(app, None);
execute_commands_flex.add_child(
@@ -5256,9 +5237,7 @@ impl AgentsWidget {
);
column.add_child(permission_setting);
if current_mcp_setting == ActionPermission::AlwaysAsk
|| current_mcp_setting == ActionPermission::AgentDecides
{
if current_mcp_setting == ActionPermission::AlwaysAsk {
let allowlist = self.render_mcp_list(
"MCP allowlist",
"Allow the Galaxy Agent to call these MCP servers.",
@@ -5275,7 +5254,6 @@ impl AgentsWidget {
if current_mcp_setting == ActionPermission::AlwaysAllow
|| current_mcp_setting == ActionPermission::GalaxyDecides
|| current_mcp_setting == ActionPermission::AgentDecides
{
let denylist = self.render_mcp_list(
"MCP denylist",
@@ -122,7 +122,11 @@ impl View for ExecutionProfileView {
let computer_use_model = profile
.computer_use_model
.as_ref()
.and_then(|id| llm_preferences.get_llm_info(id))
.and_then(|id| {
llm_preferences
.get_computer_use_llm_choices(app)
.find(|info| info.id == *id)
})
.map(|info| info.display_name.clone())
.unwrap_or_else(|| "Auto".to_string());
@@ -224,9 +228,7 @@ impl View for ExecutionProfileView {
),
));
if profile.read_files == ActionPermission::AlwaysAsk
|| profile.read_files == ActionPermission::AgentDecides
{
if profile.read_files == ActionPermission::AlwaysAsk {
permissions_column.add_child(render_directory_allowlist(
&profile,
appearance,
@@ -259,7 +261,7 @@ impl View for ExecutionProfileView {
is_any_ai_enabled,
));
}
ActionPermission::AgentDecides | ActionPermission::Unknown => {
ActionPermission::Unknown => {
permissions_column.add_child(render_command_allowlist(
&profile,
appearance,
@@ -341,7 +343,7 @@ impl View for ExecutionProfileView {
is_any_ai_enabled,
));
}
ActionPermission::AgentDecides | ActionPermission::Unknown => {
ActionPermission::Unknown => {
permissions_column.add_child(render_mcp_allowlist(
&profile,
appearance,
@@ -697,7 +699,6 @@ fn render_action_permission_line_with_icon(
is_ai_enabled: bool,
) -> Box<dyn Element> {
let permission_text = match permission {
ActionPermission::AgentDecides => "Agent decides",
ActionPermission::AlwaysAllow => "Always allow",
ActionPermission::AlwaysAsk => "Always ask",
ActionPermission::GalaxyDecides => "Galaxy Decides",