Fix Codex transcript streaming and images
This commit is contained in:
1 parent
14dd520719
commit
4dc3e3d784
7 files changed
+422
-53
No files matched your search
@@ -15,6 +15,27 @@ use tokio::sync::mpsc;
|
||||
/// renders them identically.
|
||||
pub type ImageRef = String;
|
||||
|
||||
/// Stores image bytes where the files route serves them and returns their transcript reference.
|
||||
/// Both CLI dialects produce images in different envelopes; the durable file and naming rule are
|
||||
/// part of the common event model and must not vary with that envelope.
|
||||
pub(in crate::session) fn store_image(
|
||||
session_dir: &std::path::Path,
|
||||
media_type: &str,
|
||||
bytes: &[u8],
|
||||
) -> Option<ImageRef> {
|
||||
let extension = crate::media::extension_for(media_type).unwrap_or("png");
|
||||
let name = format!("{}.{extension}", super::random_hex());
|
||||
let dir = session_dir.join("files");
|
||||
if let Err(err) = wg_app_link::private::create_dir(&dir)
|
||||
.map_err(std::io::Error::other)
|
||||
.and_then(|()| std::fs::write(dir.join(&name), bytes))
|
||||
{
|
||||
tracing::error!("couldn't save produced image: {err}");
|
||||
return None;
|
||||
}
|
||||
Some(name)
|
||||
}
|
||||
|
||||
/// The name an upload is stored and served under: an image is
|
||||
/// `<hex>.<extension>` and is an [`ImageRef`] like any other; any other file
|
||||
/// keeps its own name after the hex, `<hex>-<name>`, because the name is what
|
||||
|
||||
Reference in new issue
Block a user