use std::future::Future;
use std::path::PathBuf;
use std::pin::Pin;
use relayburn_sdk::{ingest_codex_sessions, IngestReport, RawIngestOptions, RawLedger};
use super::pending_stamp;
use super::HarnessAdapter;
use crate::util::home::home_dir;
fn codex_sessions_dir() -> PathBuf {
home_dir().join(".codex").join("sessions")
}
fn codex_ingest<'a>(
ledger: &'a mut RawLedger,
opts: &'a RawIngestOptions,
) -> Pin<Box<dyn Future<Output = anyhow::Result<IngestReport>> + Send + 'a>> {
Box::pin(ingest_codex_sessions(ledger, opts))
}
pub fn adapter() -> &'static dyn HarnessAdapter {
pending_stamp::session_store_adapter("codex", codex_sessions_dir, codex_ingest)
}
#[cfg(test)]
mod tests {
use super::*;
use crate::harnesses::test_env::with_test_home;
#[test]
fn adapter_round_trip() {
let a: &'static dyn HarnessAdapter = adapter();
assert_eq!(a.name(), "codex");
with_test_home("/tmp/burn-codex-test-home", || {
assert_eq!(
a.session_root(),
PathBuf::from("/tmp/burn-codex-test-home/.codex/sessions")
);
});
}
}