dynamic tool call response can include content_items

This commit is contained in:
Aaron Levine
2026-02-02 10:38:19 -08:00
parent 8660ad6c64
commit 6412cfd024
6 changed files with 183 additions and 11 deletions
@@ -14,6 +14,7 @@ use codex_protocol::config_types::Verbosity;
use codex_protocol::config_types::WebSearchMode;
use codex_protocol::items::AgentMessageContent as CoreAgentMessageContent;
use codex_protocol::items::TurnItem as CoreTurnItem;
use codex_protocol::models::FunctionCallOutputContentItem;
use codex_protocol::models::ResponseItem;
use codex_protocol::openai_models::ReasoningEffort;
use codex_protocol::parse_command::ParsedCommand as CoreParsedCommand;
@@ -2670,8 +2671,16 @@ pub struct DynamicToolCallParams {
#[serde(rename_all = "camelCase")]
#[ts(export_to = "v2/")]
pub struct DynamicToolCallResponse {
pub output: String,
/// Optional plain-text output. When omitted, the app server will derive a
/// string representation from `contentItems` for legacy consumers.
#[serde(default, skip_serializing_if = "Option::is_none")]
#[ts(optional)]
pub output: Option<String>,
pub success: bool,
/// Optional structured content for the tool output (for example, images).
#[serde(default, skip_serializing_if = "Option::is_none")]
#[ts(optional)]
pub content_items: Option<Vec<FunctionCallOutputContentItem>>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]