rework to isolate core

This commit is contained in:
Roy Han
2026-03-13 18:11:59 -07:00
parent f9570b714c
commit e9bf09ba09
74 changed files with 381 additions and 3403 deletions

View File

@@ -227,6 +227,9 @@ pub enum ResponseInputItem {
Message {
role: String,
content: Vec<ContentItem>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[ts(optional)]
metadata: Option<ResponseItemMetadata>,
},
FunctionCallOutput {
call_id: String,
@@ -249,6 +252,22 @@ pub enum ResponseInputItem {
},
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, JsonSchema, TS)]
#[serde(rename_all = "snake_case")]
#[ts(rename_all = "snake_case")]
pub enum UserMessageType {
Prompt,
PromptSteering,
PromptQueued,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq, JsonSchema, TS)]
pub struct ResponseItemMetadata {
#[serde(default, skip_serializing_if = "Option::is_none")]
#[ts(optional)]
pub user_message_type: Option<UserMessageType>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, JsonSchema, TS)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum ContentItem {
@@ -291,6 +310,9 @@ pub enum ResponseItem {
id: Option<String>,
role: String,
content: Vec<ContentItem>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[ts(optional)]
metadata: Option<ResponseItemMetadata>,
// Do not use directly, no available consistently across all providers.
#[serde(default, skip_serializing_if = "Option::is_none")]
#[ts(optional)]
@@ -740,6 +762,7 @@ impl From<DeveloperInstructions> for ResponseItem {
content: vec![ContentItem::InputText {
text: di.into_text(),
}],
metadata: None,
end_turn: None,
phase: None,
}
@@ -895,9 +918,14 @@ pub fn local_image_content_items_with_label_number(
impl From<ResponseInputItem> for ResponseItem {
fn from(item: ResponseInputItem) -> Self {
match item {
ResponseInputItem::Message { role, content } => Self::Message {
ResponseInputItem::Message {
role,
content,
metadata,
} => Self::Message {
role,
content,
metadata,
id: None,
end_turn: None,
phase: None,
@@ -1025,6 +1053,7 @@ impl From<Vec<UserInput>> for ResponseInputItem {
UserInput::Skill { .. } | UserInput::Mention { .. } => Vec::new(), // Tool bodies are injected later in core
})
.collect::<Vec<ContentItem>>(),
metadata: None,
}
}
}