mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
Reduce the surface of collaboration modes (#20149)
Collaboration modes were slightly invasive both into ThreadManager construction and ModelProvider
This commit is contained in:
committed by
GitHub
Unverified
parent
c8abcbf925
commit
fedcefe9da
@@ -5,13 +5,14 @@ use crate::tools::context::ToolPayload;
|
||||
use crate::tools::handlers::parse_arguments;
|
||||
use crate::tools::registry::ToolHandler;
|
||||
use crate::tools::registry::ToolKind;
|
||||
use codex_protocol::config_types::ModeKind;
|
||||
use codex_protocol::request_user_input::RequestUserInputArgs;
|
||||
use codex_tools::REQUEST_USER_INPUT_TOOL_NAME;
|
||||
use codex_tools::normalize_request_user_input_args;
|
||||
use codex_tools::request_user_input_unavailable_message;
|
||||
|
||||
pub struct RequestUserInputHandler {
|
||||
pub default_mode_request_user_input: bool,
|
||||
pub available_modes: Vec<ModeKind>,
|
||||
}
|
||||
|
||||
impl ToolHandler for RequestUserInputHandler {
|
||||
@@ -46,9 +47,7 @@ impl ToolHandler for RequestUserInputHandler {
|
||||
}
|
||||
|
||||
let mode = session.collaboration_mode().await.mode;
|
||||
if let Some(message) =
|
||||
request_user_input_unavailable_message(mode, self.default_mode_request_user_input)
|
||||
{
|
||||
if let Some(message) = request_user_input_unavailable_message(mode, &self.available_modes) {
|
||||
return Err(FunctionCallError::RespondToModel(message));
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ async fn multi_agent_v2_request_user_input_rejects_subagent_threads() {
|
||||
});
|
||||
|
||||
let result = RequestUserInputHandler {
|
||||
default_mode_request_user_input: true,
|
||||
available_modes: Vec::new(),
|
||||
}
|
||||
.handle(ToolInvocation {
|
||||
session: Arc::new(session),
|
||||
|
||||
@@ -166,7 +166,7 @@ pub(crate) fn build_specs_with_discoverable_tools(
|
||||
let shell_command_handler = Arc::new(ShellCommandHandler::from(config.shell_command_backend));
|
||||
let request_permissions_handler = Arc::new(RequestPermissionsHandler);
|
||||
let request_user_input_handler = Arc::new(RequestUserInputHandler {
|
||||
default_mode_request_user_input: config.default_mode_request_user_input,
|
||||
available_modes: config.request_user_input_available_modes.clone(),
|
||||
});
|
||||
let deferred_dynamic_tools = dynamic_tools
|
||||
.iter()
|
||||
|
||||
Reference in New Issue
Block a user