chatgpt/src/get_task.rs
40 lines
use codex_core::config::Config;use serde::Deserialize;use crate::chatgpt_client::chatgpt_get_request;#[derive(Debug, Deserialize)]pub struct GetTaskResponse { pub current_diff_task_turn: Option<AssistantTurn>,}// Only relevant fields for our extraction#[derive(Debug, Deserialize)]pub struct AssistantTurn { pub output_items: Vec<OutputItem>,}#[derive(Debug, Deserialize)]#[serde(tag = "type")]pub enum OutputItem { #[serde(rename = "pr")] Pr(PrOutputItem), #[serde(other)] Other,}#[derive(Debug, Deserialize)]pub struct PrOutputItem { pub output_diff: OutputDiff,}#[derive(Debug, Deserialize)]pub struct OutputDiff { pub diff: String,}pub(crate) async fn get_task(config: &Config, task_id: String) -> anyhow::Result<GetTaskResponse> { let path = format!("/wham/tasks/{task_id}"); chatgpt_get_request(config, path).await}