core: load AGENTS.md from foreign environments (#28958)

## Why

Make it possible to load AGENTS.md from remote exec-servers whose OS is
different than app-server.

## What

- keep `AGENTS.md` discovery and provenance as `PathUri`, with
root-aware parent and ancestor traversal
- expose lifecycle instruction sources as legacy app-server path strings
in events while retaining `PathUri` internally
- preserve and test mixed POSIX and Windows paths in model context and
TUI status output
- cover remote Windows loading end to end by seeding the Wine prefix
through host filesystem APIs
- fix bug in `PathUri`'s parent() implementation that would erase
Windows drive letters
This commit is contained in:
Adam Perry @ OpenAI
2026-06-18 15:06:23 -07:00
committed by GitHub
Unverified
parent 406062c3af
commit dce673905a
38 changed files with 550 additions and 203 deletions
+11 -1
View File
@@ -42,6 +42,7 @@ use codex_thread_store::ThreadMetadataPatch;
use codex_thread_store::ThreadStoreError;
use codex_thread_store::ThreadStoreResult;
use codex_utils_absolute_path::AbsolutePathBuf;
use codex_utils_path_uri::LegacyAppPathString;
use codex_utils_path_uri::PathUri;
use rmcp::model::ReadResourceRequestParams;
use std::collections::BTreeMap;
@@ -564,10 +565,19 @@ impl CodexThread {
}
/// Returns the files that supplied the thread's loaded model instructions.
pub async fn instruction_sources(&self) -> Vec<AbsolutePathBuf> {
pub async fn instruction_sources(&self) -> Vec<PathUri> {
self.codex.instruction_sources().await
}
/// Returns loaded instruction sources rendered as legacy app-server path strings.
pub async fn legacy_instruction_sources(&self) -> Vec<LegacyAppPathString> {
self.instruction_sources()
.await
.into_iter()
.map(Into::into)
.collect()
}
pub async fn config(&self) -> Arc<crate::config::Config> {
self.codex.session.get_config().await
}