Preserve executor paths in read command actions (#36223)

## Why

Read command actions were omitted when a selected environment used a path
convention foreign to the app-server host. Clients need these actions to refer
to files in the executor's filesystem, not paths interpreted on the host.

## What changed

- Resolve read paths against the executor's `PathUri` and serialize them using
  the executor's native POSIX, Windows drive, or UNC convention.
- Accept same-drive Windows-relative paths while continuing to reject paths
  that require another drive's executor-local current directory.
- Document the path convention used by `commandExecution` notifications.

## Testing

Cover native and cross-platform path serialization, Windows drive-relative
joins, and selected-environment `item/started` and `item/completed`
notifications.

GitOrigin-RevId: 3c5a9bb1caafd35e04a0a0cceab91fee590372b9
This commit is contained in:
iceweasel-oai authored and copyberry committed 2026-07-30 21:12:41 +00:00
1 parent 745603a5a1
commit a01a2d9146
29 files changed
+259 -92

No files matched your search

@@ -122,7 +122,7 @@ pub enum CommandAction {
Read {
command: String,
name: String,
path: AbsolutePathBuf,
path: LegacyAppPathString,
},
ListFiles {
command: String,
@@ -186,7 +186,7 @@ impl CommandAction {
} => CoreParsedCommand::Read {
cmd,
name,
path: path.into_path_buf(),
path: PathBuf::from(path.into_string()),
},
CommandAction::ListFiles { command: cmd, path } => {
CoreParsedCommand::ListFiles { cmd, path }
@@ -205,7 +205,7 @@ impl CommandAction {
CoreParsedCommand::Read { cmd, name, path } => CommandAction::Read {
command: cmd,
name,
path: cwd.join(path),
path: cwd.join(path).into(),
},
CoreParsedCommand::ListFiles { cmd, path } => {
CommandAction::ListFiles { command: cmd, path }