Scope runtime workspace roots to execution environments (#32952)

## Why

Multi-environment turns can run against different filesystems, so a single
thread-wide workspace-root list cannot accurately describe every selected
environment.

## What changed

- Add optional `runtimeWorkspaceRoots` to each app-server environment selection.
  Omitted roots default to that environment's `cwd`, while an empty list selects
  no roots.
- Carry environment-native roots through turn selection, model-visible context,
  permission materialization, and tool sandboxing.
- Keep the top-level `runtimeWorkspaceRoots` field as a compatibility input when
  constructing default environment selections; explicit selections use their
  own roots.

## Testing

- Cover thread and turn API defaults, overrides, empty roots, and schema
  round-tripping.
- Verify foreign roots remain model-visible and remote execution applies the
  target environment's roots before sandbox selection.

GitOrigin-RevId: c6e7a62883c45c676c153055f46a55ee15a323a4
This commit is contained in:
pakrym-oai authored and copyberry committed 2026-07-14 04:41:08 +00:00
1 parent b019a5577c
commit 393f64565a
62 files changed
+769 -446

No files matched your search

-2
View File
@@ -122,7 +122,6 @@ async fn thread_settings_update(
) -> SessionSettingsUpdate {
let ThreadSettingsOverrides {
environments,
workspace_roots,
profile_workspace_roots,
approval_policy,
approvals_reviewer,
@@ -151,7 +150,6 @@ async fn thread_settings_update(
};
SessionSettingsUpdate {
environments,
workspace_roots,
profile_workspace_roots,
approval_policy,
approvals_reviewer,