pub struct WorktreeAgentRequest<'a> {
pub subtask: &'a Subtask,
pub cwd: &'a Path,
pub allowed_tools: Option<Vec<String>>,
pub mcp_endpoint: Option<String>,
pub mcp_config_dir: Option<PathBuf>,
}Expand description
Everything an agent needs to run one subtask in a worktree. Carrying the
governance surface (allowed_tools, mcp_endpoint) now means the
daemon-side impl that wraps car_external_agents::invoke does not force a
breaking trait change at B6.
Fields§
§subtask: &'a Subtask§cwd: &'a Path§allowed_tools: Option<Vec<String>>§mcp_endpoint: Option<String>§mcp_config_dir: Option<PathBuf>Directory the daemon-side agent writes its short-lived MCP config file
into (car_external_agents::InvokeOptions::mcp_config_dir). None keeps
the adapter’s original behaviour, a bare tempfile() under $TMPDIR.
$TMPDIR is inherited by the daemon and never checked: a daemon launched
with a stale installer-sandbox value cannot create that file, every
--mcp-config invocation fails setup, and the session silently runs a
different engine (car#1494 / car#1534). car#1534 hardened the coder’s own
external loop, which owns a state directory; a farm-out reaches the same
adapter through this request, so the session’s already-checked directory
has to travel with it.
Only meaningful alongside mcp_endpoint — with no endpoint the adapter
writes no config at all, so the directory is never consulted.
Trait Implementations§
Auto Trait Implementations§
impl<'a> Freeze for WorktreeAgentRequest<'a>
impl<'a> RefUnwindSafe for WorktreeAgentRequest<'a>
impl<'a> Send for WorktreeAgentRequest<'a>
impl<'a> Sync for WorktreeAgentRequest<'a>
impl<'a> Unpin for WorktreeAgentRequest<'a>
impl<'a> UnsafeUnpin for WorktreeAgentRequest<'a>
impl<'a> UnwindSafe for WorktreeAgentRequest<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more