mirror of
https://github.com/openai/codex.git
synced 2026-04-26 15:45:02 +00:00
chore: merge name and title (#17116)
Merge title and name concept to leverage the sqlite title column and have more efficient queries --------- Co-authored-by: Codex <noreply@openai.com>
This commit is contained in:
@@ -21,7 +21,14 @@ use codex_app_server_protocol::ThreadResumeParams;
|
||||
use codex_app_server_protocol::ThreadResumeResponse;
|
||||
use codex_app_server_protocol::ThreadSetNameParams;
|
||||
use codex_app_server_protocol::ThreadSetNameResponse;
|
||||
use codex_core::find_thread_name_by_id;
|
||||
use codex_core::find_thread_path_by_id_str;
|
||||
use codex_protocol::ThreadId;
|
||||
use codex_protocol::protocol::EventMsg;
|
||||
use codex_protocol::protocol::RolloutItem;
|
||||
use codex_protocol::protocol::RolloutLine;
|
||||
use pretty_assertions::assert_eq;
|
||||
use std::path::Path;
|
||||
use tempfile::TempDir;
|
||||
use tokio::time::Duration;
|
||||
use tokio::time::timeout;
|
||||
@@ -77,6 +84,11 @@ async fn thread_name_updated_broadcasts_for_loaded_threads() -> Result<()> {
|
||||
let ws2_notification =
|
||||
read_notification_for_method(&mut ws2, "thread/name/updated").await?;
|
||||
assert_thread_name_updated(ws2_notification, &conversation_id, renamed)?;
|
||||
assert_legacy_thread_name(codex_home.path(), &conversation_id, renamed).await?;
|
||||
assert_eq!(
|
||||
thread_name_update_rollout_count(codex_home.path(), &conversation_id).await?,
|
||||
1
|
||||
);
|
||||
|
||||
assert_no_message(&mut ws1, Duration::from_millis(250)).await?;
|
||||
assert_no_message(&mut ws2, Duration::from_millis(250)).await?;
|
||||
@@ -128,6 +140,11 @@ async fn thread_name_updated_broadcasts_for_not_loaded_threads() -> Result<()> {
|
||||
let ws2_notification =
|
||||
read_notification_for_method(&mut ws2, "thread/name/updated").await?;
|
||||
assert_thread_name_updated(ws2_notification, &conversation_id, renamed)?;
|
||||
assert_legacy_thread_name(codex_home.path(), &conversation_id, renamed).await?;
|
||||
assert_eq!(
|
||||
thread_name_update_rollout_count(codex_home.path(), &conversation_id).await?,
|
||||
1
|
||||
);
|
||||
|
||||
assert_no_message(&mut ws1, Duration::from_millis(250)).await?;
|
||||
assert_no_message(&mut ws2, Duration::from_millis(250)).await?;
|
||||
@@ -174,3 +191,38 @@ fn assert_thread_name_updated(
|
||||
assert_eq!(notification.thread_name.as_deref(), Some(thread_name));
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn assert_legacy_thread_name(
|
||||
codex_home: &Path,
|
||||
conversation_id: &str,
|
||||
expected_name: &str,
|
||||
) -> Result<()> {
|
||||
let thread_id = ThreadId::from_string(conversation_id)?;
|
||||
assert_eq!(
|
||||
find_thread_name_by_id(codex_home, &thread_id)
|
||||
.await?
|
||||
.as_deref(),
|
||||
Some(expected_name)
|
||||
);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn thread_name_update_rollout_count(
|
||||
codex_home: &Path,
|
||||
conversation_id: &str,
|
||||
) -> Result<usize> {
|
||||
let rollout_path = find_thread_path_by_id_str(codex_home, conversation_id)
|
||||
.await?
|
||||
.context("rollout path")?;
|
||||
let contents = tokio::fs::read_to_string(rollout_path).await?;
|
||||
Ok(contents
|
||||
.lines()
|
||||
.filter_map(|line| serde_json::from_str::<RolloutLine>(line).ok())
|
||||
.filter(|line| {
|
||||
matches!(
|
||||
line.item,
|
||||
RolloutItem::EventMsg(EventMsg::ThreadNameUpdated(_))
|
||||
)
|
||||
})
|
||||
.count())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user