fix(cli): progress agent_message émis en live + anti-doublon running/done par progressId — #187 (QA verte)
- Codex: les items agent_message sont désormais tapés en live comme progress (Message/Delta) dès item.completed, au lieu d'être bufferisés dans pending_final jusqu'à l'événement tool/MCP suivant. - Corrélation stable progressId (codex:item:<id>) ajoutée sur ReplyProgress, propagée jusqu'au DTO (ReplyProgressDto.progressId) et au frontend ; le ProgressSettler et la vue procèdent par upsert running -> done au lieu d'empiler des lignes dupliquées. - Tests: chat_bridge (settler par progressId), dto_chat, session codex, CustomAgentChatView (upsert par progressId).
This commit is contained in:
@ -3297,6 +3297,9 @@ impl From<ReplyProgressStage> for ReplyProgressStageDto {
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct ReplyProgressDto {
|
||||
/// Optional stable progress entity id for frontend upsert.
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub progress_id: Option<String>,
|
||||
/// Event source.
|
||||
pub source: ReplyProgressSourceDto,
|
||||
/// Canonical event family.
|
||||
@ -3322,6 +3325,7 @@ pub struct ReplyProgressDto {
|
||||
impl From<ReplyProgress> for ReplyProgressDto {
|
||||
fn from(value: ReplyProgress) -> Self {
|
||||
Self {
|
||||
progress_id: value.progress_id,
|
||||
source: value.source.into(),
|
||||
kind: value.kind.into(),
|
||||
stage: value.stage.into(),
|
||||
|
||||
Reference in New Issue
Block a user