feat(config) experimental_request_user_input toggle (#24541)

## Summary
Experimental flag to allow toggling `request_user_input`:

```
tools.experimental_request_user_input = false
```

## Testing
- [x] Added unit tests
This commit is contained in:
Dylan Hurd
2026-05-29 21:35:53 -07:00
committed by GitHub
Unverified
parent 00ca857d3f
commit e0435afb72
7 changed files with 135 additions and 5 deletions
+5 -3
View File
@@ -600,9 +600,11 @@ fn add_core_utility_tools(context: &CoreToolPlanContext<'_>, planned_tools: &mut
planned_tools.add(UpdateGoalHandler);
}
planned_tools.add(RequestUserInputHandler {
available_modes: request_user_input_available_modes(features),
});
if turn_context.config.experimental_request_user_input_enabled {
planned_tools.add(RequestUserInputHandler {
available_modes: request_user_input_available_modes(features),
});
}
if features.enabled(Feature::RequestPermissionsTool) {
planned_tools.add(RequestPermissionsHandler);
@@ -377,6 +377,22 @@ fn apply_patch_accepts_environment_id(spec: &ToolSpec) -> bool {
}
}
#[tokio::test]
async fn request_user_input_tool_respects_experimental_config_gate() {
let enabled = probe(|_| {}).await;
enabled.assert_visible_contains(&["request_user_input"]);
enabled.assert_registered_contains(&["request_user_input"]);
let disabled = probe(|turn| {
update_config(turn, |config| {
config.experimental_request_user_input_enabled = false;
});
})
.await;
disabled.assert_visible_lacks(&["request_user_input"]);
disabled.assert_registered_lacks(&["request_user_input"]);
}
#[tokio::test]
async fn shell_family_registers_visible_unified_exec_and_hidden_legacy_shell() {
let plan = probe(|turn| {