mirror of
https://github.com/openai/codex.git
synced 2026-11-01 16:17:58 +00:00
Preserve special filesystem subpaths as wire strings (#33107)
## Why Special filesystem subpaths can contain relative or foreign-platform path spellings. Treating this wire text as a host-native path can reinterpret it. ## What changed - Store special filesystem subpaths as strings in the core permissions model. - Represent app-server subpaths as `LegacyAppPathString` and convert them at the protocol boundary without changing their spelling. - Add `LegacyAppPathString::from_string` for callers that already own legacy app-server path text. GitOrigin-RevId: 2214f03aa997fd0e6eb2ab60d425304bb4bd6132
This commit is contained in:
committed by
copyberry
parent
fca8c00f11
commit
0396f99cf1
@@ -23,7 +23,7 @@ use serde::Deserialize;
|
||||
use serde::Serialize;
|
||||
use std::io;
|
||||
use std::num::NonZeroUsize;
|
||||
use std::path::PathBuf;
|
||||
use std::path::Path;
|
||||
use ts_rs::TS;
|
||||
|
||||
v2_enum_from_core! {
|
||||
@@ -244,13 +244,13 @@ pub enum FileSystemSpecialPath {
|
||||
Minimal,
|
||||
#[serde(alias = "current_working_directory")]
|
||||
ProjectRoots {
|
||||
subpath: Option<PathBuf>,
|
||||
subpath: Option<LegacyAppPathString>,
|
||||
},
|
||||
Tmpdir,
|
||||
SlashTmp,
|
||||
Unknown {
|
||||
path: String,
|
||||
subpath: Option<PathBuf>,
|
||||
subpath: Option<LegacyAppPathString>,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -259,10 +259,21 @@ impl From<CoreFileSystemSpecialPath> for FileSystemSpecialPath {
|
||||
match value {
|
||||
CoreFileSystemSpecialPath::Root => Self::Root,
|
||||
CoreFileSystemSpecialPath::Minimal => Self::Minimal,
|
||||
CoreFileSystemSpecialPath::ProjectRoots { subpath } => Self::ProjectRoots { subpath },
|
||||
CoreFileSystemSpecialPath::ProjectRoots { subpath } => Self::ProjectRoots {
|
||||
subpath: subpath
|
||||
.as_deref()
|
||||
.map(Path::new)
|
||||
.map(LegacyAppPathString::from_path),
|
||||
},
|
||||
CoreFileSystemSpecialPath::Tmpdir => Self::Tmpdir,
|
||||
CoreFileSystemSpecialPath::SlashTmp => Self::SlashTmp,
|
||||
CoreFileSystemSpecialPath::Unknown { path, subpath } => Self::Unknown { path, subpath },
|
||||
CoreFileSystemSpecialPath::Unknown { path, subpath } => Self::Unknown {
|
||||
path,
|
||||
subpath: subpath
|
||||
.as_deref()
|
||||
.map(Path::new)
|
||||
.map(LegacyAppPathString::from_path),
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -272,10 +283,15 @@ impl From<FileSystemSpecialPath> for CoreFileSystemSpecialPath {
|
||||
match value {
|
||||
FileSystemSpecialPath::Root => Self::Root,
|
||||
FileSystemSpecialPath::Minimal => Self::Minimal,
|
||||
FileSystemSpecialPath::ProjectRoots { subpath } => Self::ProjectRoots { subpath },
|
||||
FileSystemSpecialPath::ProjectRoots { subpath } => Self::ProjectRoots {
|
||||
subpath: subpath.map(LegacyAppPathString::into_string),
|
||||
},
|
||||
FileSystemSpecialPath::Tmpdir => Self::Tmpdir,
|
||||
FileSystemSpecialPath::SlashTmp => Self::SlashTmp,
|
||||
FileSystemSpecialPath::Unknown { path, subpath } => Self::Unknown { path, subpath },
|
||||
FileSystemSpecialPath::Unknown { path, subpath } => Self::Unknown {
|
||||
path,
|
||||
subpath: subpath.map(LegacyAppPathString::into_string),
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user