Add unified exec escalation handling and tests (#6492)

Similar implementation to the shell tool
This commit is contained in:
pakrym-oai
2025-11-11 08:19:35 -08:00
committed by GitHub
Unverified
parent ad279eacdc
commit 807e2c27f0
8 changed files with 208 additions and 23 deletions
+4
View File
@@ -71,6 +71,8 @@ pub(crate) struct ExecCommandRequest<'a> {
pub yield_time_ms: Option<u64>,
pub max_output_tokens: Option<usize>,
pub workdir: Option<PathBuf>,
pub with_escalated_permissions: Option<bool>,
pub justification: Option<String>,
}
#[derive(Debug)]
@@ -201,6 +203,8 @@ mod tests {
yield_time_ms,
max_output_tokens: None,
workdir: None,
with_escalated_permissions: None,
justification: None,
},
&context,
)
@@ -51,7 +51,13 @@ impl UnifiedExecSessionManager {
];
let session = self
.open_session_with_sandbox(command, cwd.clone(), context)
.open_session_with_sandbox(
command,
cwd.clone(),
request.with_escalated_permissions,
request.justification,
context,
)
.await?;
let max_tokens = resolve_max_tokens(request.max_output_tokens);
@@ -317,6 +323,8 @@ impl UnifiedExecSessionManager {
&self,
command: Vec<String>,
cwd: PathBuf,
with_escalated_permissions: Option<bool>,
justification: Option<String>,
context: &UnifiedExecContext,
) -> Result<UnifiedExecSession, UnifiedExecError> {
let mut orchestrator = ToolOrchestrator::new();
@@ -325,6 +333,8 @@ impl UnifiedExecSessionManager {
command,
cwd,
create_env(&context.turn.shell_environment_policy),
with_escalated_permissions,
justification,
);
let tool_ctx = ToolCtx {
session: context.session.as_ref(),