mirror of
https://github.com/openai/codex.git
synced 2026-09-09 15:58:47 +00:00
codex: address injected message review feedback
This commit is contained in:
@@ -74,7 +74,6 @@ use codex_protocol::protocol::ConversationAudioParams;
|
||||
use codex_protocol::protocol::CreditsSnapshot;
|
||||
use codex_protocol::protocol::GranularApprovalConfig;
|
||||
use codex_protocol::protocol::InitialHistory;
|
||||
use codex_protocol::protocol::InjectedMessageEvent;
|
||||
use codex_protocol::protocol::InterAgentCommunication;
|
||||
use codex_protocol::protocol::NetworkApprovalProtocol;
|
||||
use codex_protocol::protocol::RateLimitSnapshot;
|
||||
@@ -5060,50 +5059,6 @@ async fn queued_response_items_for_next_turn_move_into_next_active_turn() {
|
||||
assert_eq!(sess.get_pending_input().await, vec![queued_item]);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn generated_message_records_raw_item_and_emits_injected_event() {
|
||||
let (sess, tc, rx) = make_session_and_context_with_rx().await;
|
||||
let response_item = ResponseItem::Message {
|
||||
id: None,
|
||||
role: "user".to_string(),
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "<external_message><content>hidden wrapper</content></external_message>"
|
||||
.to_string(),
|
||||
}],
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
let injected_event = InjectedMessageEvent {
|
||||
content: "Visible message".to_string(),
|
||||
source: "external".to_string(),
|
||||
};
|
||||
|
||||
sess.record_generated_message_and_emit_display(tc.as_ref(), response_item, injected_event)
|
||||
.await;
|
||||
|
||||
let raw = rx.recv().await.expect("raw response item event");
|
||||
assert!(matches!(raw.msg, EventMsg::RawResponseItem(_)));
|
||||
|
||||
let injected = rx.recv().await.expect("injected message event");
|
||||
let EventMsg::InjectedMessage(injected) = injected.msg else {
|
||||
panic!("expected InjectedMessage event");
|
||||
};
|
||||
assert_eq!(
|
||||
injected,
|
||||
InjectedMessageEvent {
|
||||
content: "Visible message".to_string(),
|
||||
source: "external".to_string(),
|
||||
}
|
||||
);
|
||||
|
||||
let no_legacy_user_message =
|
||||
tokio::time::timeout(std::time::Duration::from_millis(10), rx.recv()).await;
|
||||
assert!(
|
||||
no_legacy_user_message.is_err(),
|
||||
"generated messages should not emit a legacy UserMessageEvent"
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn queue_only_mailbox_mail_waits_for_next_turn_after_answer_boundary() {
|
||||
let (sess, tc, _rx) = make_session_and_context_with_rx().await;
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
//! Queued thread messages and model-visible message envelopes.
|
||||
//! Generated user-message payloads and model-visible XML envelopes.
|
||||
//!
|
||||
//! This module owns the shared representation for messages that are delivered
|
||||
//! into a thread by the harness rather than typed directly by the user. Today
|
||||
//! that includes external queued messages and timer-generated messages. The
|
||||
//! state database keeps the richer persisted payload, while this module renders
|
||||
//! the smaller XML envelope that is recorded in model history and builds the
|
||||
//! structured display event that clients can render without parsing that XML.
|
||||
|
||||
use crate::timers::TimerDelivery;
|
||||
use codex_protocol::models::ContentItem;
|
||||
|
||||
Reference in New Issue
Block a user