mirror of
https://github.com/openai/codex.git
synced 2026-10-21 17:48:44 +00:00
Support typed content in contextual prompt fragments (#54776)
## Why Contextual fragments and extension-owned world-state sections currently return strings, limiting them to text content. ## What changed - Return `ContentItem` from fragment bodies and rendering, preserving classification and attribution. Apply text markers only to `InputText`; pass other content through unchanged. - Allow extension prompt and world-state contributions to carry typed content, and preserve media in context-window hints. - Hash non-text world-state fragments by their serialized content and role while retaining the existing text hashing behavior. - Add shared content-to-tool-output conversion that preserves image references, image detail, and audio. ## Testing Add coverage for typed world-state hashing and preservation of image content and attribution. Expand code-mode output tests to cover input text, output text, file-backed and inline images, and audio. GitOrigin-RevId: 2ed00d466a3f169b151202f3eef71e667ea64be1
This commit is contained in:
@@ -35,7 +35,9 @@ impl AgentMessage {
|
||||
author.clone(),
|
||||
message,
|
||||
)
|
||||
.render();
|
||||
.render()
|
||||
.into_text()
|
||||
.unwrap_or_default();
|
||||
InterAgentCommunication::new(author, recipient, Vec::new(), content, trigger_turn)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1106,7 +1106,7 @@ impl LocalAgentControl {
|
||||
[parent_usage_hints.root, parent_usage_hints.subagent]
|
||||
.into_iter()
|
||||
.flatten()
|
||||
.map(|instructions| instructions.render())
|
||||
.map(|instructions| instructions.render().into_text().unwrap_or_default())
|
||||
.collect()
|
||||
} else {
|
||||
Vec::new()
|
||||
|
||||
@@ -101,6 +101,7 @@ use codex_protocol::protocol::TurnEnvironmentSelection;
|
||||
use codex_protocol::protocol::TurnEnvironmentSelections;
|
||||
use codex_protocol::protocol::TurnStartedEvent;
|
||||
use codex_protocol::protocol::WorldStateItem;
|
||||
use codex_protocol_test_support::ContentItemTestExt;
|
||||
use codex_thread_store::ArchiveThreadParams;
|
||||
use codex_thread_store::InMemoryThreadStore;
|
||||
use codex_thread_store::LocalThreadStore;
|
||||
@@ -2823,7 +2824,8 @@ async fn spawn_agent_can_fork_parent_thread_history_with_sanitized_items() {
|
||||
model: None,
|
||||
instructions: Some("Updated model instructions.".to_string()),
|
||||
}
|
||||
.render();
|
||||
.render()
|
||||
.expect_text();
|
||||
let harness = AgentControlHarness::new().await;
|
||||
let mut parent_config = harness.config.clone();
|
||||
let _ = parent_config.features.enable(Feature::MultiAgentV2);
|
||||
|
||||
Reference in New Issue
Block a user