Add typed file URIs (#26840)

## Why

Codex needs stable `file:` URI identifiers that can cross process and
operating-system boundaries without eagerly interpreting them as native
paths. Existing fields also need to keep accepting absolute path strings
during migration.

## What changed

- Add `codex-utils-path-uri` with a validated, immutable `PathUri`
wrapper that currently accepts only `file:` URLs.
- Expose URI-level `basename`, `parent`, and `join` operations that
preserve authorities and percent encoding without guessing the source
operating system.
- Keep native conversion explicit through `AbsolutePathBuf` and the
current host rules.
- Serialize as canonical URI text while accepting both URI text and
legacy absolute native paths during deserialization.
- Add adversarial coverage for Windows-looking and POSIX paths, UNC
authorities, encoded metadata characters, non-UTF-8 POSIX paths, URI
hierarchy operations, and legacy serde round trips.
This commit is contained in:
Adam Perry @ OpenAI
2026-06-08 16:33:41 -07:00
committed by GitHub
Unverified
parent 6042e5810e
commit ffec7c0933
7 changed files with 717 additions and 0 deletions
+15
View File
@@ -4152,6 +4152,21 @@ dependencies = [
"tempfile",
]
[[package]]
name = "codex-utils-path-uri"
version = "0.0.0"
dependencies = [
"codex-utils-absolute-path",
"pretty_assertions",
"schemars 0.8.22",
"serde",
"serde_json",
"thiserror 2.0.18",
"ts-rs",
"url",
"urlencoding",
]
[[package]]
name = "codex-utils-plugins"
version = "0.0.0"