mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
Import external agent sessions in background (#20284)
Summary: - Return from external agent import before session history import finishes - Run session import work in the background and emit the existing completion notification when it is done - Serialize session imports so duplicate requests do not create duplicate imported threads Verification: - cargo test -p codex-app-server external_agent_config_ - cargo test -p codex-external-agent-sessions - just fix -p codex-app-server - just fix -p codex-external-agent-sessions - git diff --check
This commit is contained in:
committed by
GitHub
Unverified
parent
7bcd4626c4
commit
c8abcbf925
@@ -144,8 +144,24 @@ impl ExternalAgentConfigService {
|
||||
Ok(items)
|
||||
}
|
||||
|
||||
pub(crate) fn detect_recent_sessions(&self) -> io::Result<Vec<ExternalAgentSessionMigration>> {
|
||||
detect_recent_sessions(&self.external_agent_home, &self.codex_home)
|
||||
pub(crate) fn external_agent_session_source_path(
|
||||
&self,
|
||||
path: &Path,
|
||||
) -> io::Result<Option<PathBuf>> {
|
||||
if path.extension().and_then(|value| value.to_str()) != Some("jsonl") {
|
||||
return Ok(None);
|
||||
}
|
||||
let path = match fs::canonicalize(path) {
|
||||
Ok(path) => path,
|
||||
Err(err) if err.kind() == io::ErrorKind::NotFound => return Ok(None),
|
||||
Err(err) => return Err(err),
|
||||
};
|
||||
let projects_root = match fs::canonicalize(self.external_agent_home.join("projects")) {
|
||||
Ok(projects_root) => projects_root,
|
||||
Err(err) if err.kind() == io::ErrorKind::NotFound => return Ok(None),
|
||||
Err(err) => return Err(err),
|
||||
};
|
||||
Ok(path.starts_with(projects_root).then_some(path))
|
||||
}
|
||||
|
||||
pub(crate) async fn import(
|
||||
|
||||
Reference in New Issue
Block a user