Improve Galaxy permissions, computer-use routing, and agent UX
This commit is contained in:
@@ -284,12 +284,6 @@ impl ExecutionProfileEditorView {
|
||||
let mut dropdown = Dropdown::new(ctx);
|
||||
dropdown.set_items(
|
||||
vec![
|
||||
DropdownItem::new(
|
||||
"Agent decides",
|
||||
ExecutionProfileEditorViewAction::SetApplyCodeDiffs {
|
||||
permission: ActionPermission::AgentDecides,
|
||||
},
|
||||
),
|
||||
DropdownItem::new(
|
||||
"Always allow",
|
||||
ExecutionProfileEditorViewAction::SetApplyCodeDiffs {
|
||||
@@ -318,12 +312,6 @@ impl ExecutionProfileEditorView {
|
||||
let mut dropdown = Dropdown::new(ctx);
|
||||
dropdown.set_items(
|
||||
vec![
|
||||
DropdownItem::new(
|
||||
"Agent decides",
|
||||
ExecutionProfileEditorViewAction::SetReadFiles {
|
||||
permission: ActionPermission::AgentDecides,
|
||||
},
|
||||
),
|
||||
DropdownItem::new(
|
||||
"Always allow",
|
||||
ExecutionProfileEditorViewAction::SetReadFiles {
|
||||
@@ -352,12 +340,6 @@ impl ExecutionProfileEditorView {
|
||||
let mut dropdown = Dropdown::new(ctx);
|
||||
dropdown.set_items(
|
||||
vec![
|
||||
DropdownItem::new(
|
||||
"Agent decides",
|
||||
ExecutionProfileEditorViewAction::SetExecuteCommands {
|
||||
permission: ActionPermission::AgentDecides,
|
||||
},
|
||||
),
|
||||
DropdownItem::new(
|
||||
"Always allow",
|
||||
ExecutionProfileEditorViewAction::SetExecuteCommands {
|
||||
@@ -420,12 +402,6 @@ impl ExecutionProfileEditorView {
|
||||
let mut dropdown = Dropdown::new(ctx);
|
||||
dropdown.set_items(
|
||||
vec![
|
||||
DropdownItem::new(
|
||||
"Agent decides",
|
||||
ExecutionProfileEditorViewAction::SetCallMcpServers {
|
||||
permission: ActionPermission::AgentDecides,
|
||||
},
|
||||
),
|
||||
DropdownItem::new(
|
||||
"Always allow",
|
||||
ExecutionProfileEditorViewAction::SetCallMcpServers {
|
||||
@@ -824,7 +800,7 @@ impl ExecutionProfileEditorView {
|
||||
Self::refresh_filterable_model_dropdown(
|
||||
&me.computer_use_model_dropdown,
|
||||
current_permissions.computer_use_model.clone(),
|
||||
|prefs, _| prefs.get_computer_use_llm_choices().collect_vec(),
|
||||
|prefs, app| prefs.get_computer_use_llm_choices(app).collect_vec(),
|
||||
|id| ExecutionProfileEditorViewAction::SetComputerUseModel { id },
|
||||
|prefs| prefs.get_default_computer_use_model().id.clone(),
|
||||
&me.upgrade_footer_mouse_state,
|
||||
@@ -1003,7 +979,7 @@ impl ExecutionProfileEditorView {
|
||||
Self::refresh_filterable_model_dropdown(
|
||||
&self.computer_use_model_dropdown,
|
||||
current_permissions.computer_use_model.clone(),
|
||||
|prefs, _| prefs.get_computer_use_llm_choices().collect_vec(),
|
||||
|prefs, app| prefs.get_computer_use_llm_choices(app).collect_vec(),
|
||||
|id| ExecutionProfileEditorViewAction::SetComputerUseModel { id },
|
||||
|prefs| prefs.get_default_computer_use_model().id.clone(),
|
||||
&self.upgrade_footer_mouse_state,
|
||||
@@ -1091,10 +1067,9 @@ impl ExecutionProfileEditorView {
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
@@ -474,9 +474,7 @@ pub fn render_permissions_section(
|
||||
),
|
||||
]);
|
||||
|
||||
if profile_data.read_files == ActionPermission::AlwaysAsk
|
||||
|| profile_data.read_files == ActionPermission::AgentDecides
|
||||
{
|
||||
if profile_data.read_files == ActionPermission::AlwaysAsk {
|
||||
column.add_child(render_directory_allowlist_section(
|
||||
view,
|
||||
profile_data,
|
||||
@@ -514,7 +512,7 @@ pub fn render_permissions_section(
|
||||
app,
|
||||
));
|
||||
}
|
||||
ActionPermission::AgentDecides | ActionPermission::Unknown => {
|
||||
ActionPermission::Unknown => {
|
||||
column.add_children([
|
||||
render_command_allowlist_section(view, profile_data, appearance, app),
|
||||
render_command_denylist_section(view, profile_data, appearance, app),
|
||||
@@ -600,7 +598,7 @@ pub fn render_permissions_section(
|
||||
appearance,
|
||||
));
|
||||
}
|
||||
ActionPermission::AgentDecides | ActionPermission::Unknown => {
|
||||
ActionPermission::Unknown => {
|
||||
column.add_children([
|
||||
render_mcp_allowlist_section(view, profile_data, app, appearance),
|
||||
render_mcp_denylist_section(view, profile_data, app, appearance),
|
||||
|
||||
@@ -108,12 +108,12 @@ fn edits_persist_default_profile_locally_when_logged_out() {
|
||||
let default_profile_id = profile_model.read(&app, |model, _ctx| model.default_profile_id());
|
||||
|
||||
// Sanity-check the precondition: the baseline `apply_code_diffs`
|
||||
// on a fresh default profile is the enum default (`AgentDecides`).
|
||||
// on a fresh default profile is `GalaxyDecides`.
|
||||
profile_model.read(&app, |model, ctx| {
|
||||
assert!(
|
||||
matches!(
|
||||
model.default_profile(ctx).data().apply_code_diffs,
|
||||
ActionPermission::AgentDecides
|
||||
ActionPermission::GalaxyDecides
|
||||
),
|
||||
"unexpected baseline apply_code_diffs"
|
||||
);
|
||||
@@ -402,3 +402,13 @@ fn filters_non_owned_non_default_profile_from_list() {
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn legacy_agent_decides_profiles_use_galaxy_decides() {
|
||||
let permission: ActionPermission = serde_json::from_str("\"AgentDecides\"").unwrap();
|
||||
assert_eq!(permission, ActionPermission::GalaxyDecides);
|
||||
assert_eq!(
|
||||
serde_json::to_string(&permission).unwrap(),
|
||||
"\"GalaxyDecides\""
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user