mirror of
https://github.com/openai/codex.git
synced 2026-11-10 16:44:38 +00:00
## What changed - Require each `ContextualUserFragment` to provide a stable `<feature>.<name>` `ContentItemKind`. - Add `AnnotatedContent` and `RenderedFragment` so rendered text, its role, and its classification can travel together to API boundaries. - Derive extension-owned world-state classifications from the extension ID and keep the skills catalog classification with its fragment implementation. ## Testing - Verify that an extension-owned world-state section renders with an `<extension-id>.instructions` content kind. GitOrigin-RevId: e46b74a0bb41e0b6112667c9d36bc9e7f2714451
48 lines
1.2 KiB
Rust
48 lines
1.2 KiB
Rust
use codex_protocol::models::ContentItemKind;
|
|
use codex_protocol::protocol::AgentStatus;
|
|
|
|
use super::ContextualUserFragment;
|
|
|
|
#[derive(Debug, Clone, PartialEq)]
|
|
pub(crate) struct SubagentNotification {
|
|
pub(crate) agent_reference: String,
|
|
pub(crate) status: AgentStatus,
|
|
}
|
|
|
|
impl SubagentNotification {
|
|
pub(crate) fn new(agent_reference: impl Into<String>, status: AgentStatus) -> Self {
|
|
Self {
|
|
agent_reference: agent_reference.into(),
|
|
status,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl ContextualUserFragment for SubagentNotification {
|
|
fn content_kind(&self) -> ContentItemKind {
|
|
ContentItemKind("multi_agent.subagent_notification".to_string())
|
|
}
|
|
|
|
fn role(&self) -> &'static str {
|
|
"user"
|
|
}
|
|
|
|
fn markers(&self) -> (&'static str, &'static str) {
|
|
Self::type_markers()
|
|
}
|
|
|
|
fn type_markers() -> (&'static str, &'static str) {
|
|
("<subagent_notification>", "</subagent_notification>")
|
|
}
|
|
|
|
fn body(&self) -> String {
|
|
format!(
|
|
"\n{}\n",
|
|
serde_json::json!({
|
|
"agent_path": &self.agent_reference,
|
|
"status": &self.status,
|
|
})
|
|
)
|
|
}
|
|
}
|