Skip to content

feat(codex): render structured Codex items #19

Description

@ryan-wong-coder

Parent roadmap: #15

What

为 Codex App Server 的 Thread/Turn/Item 建立结构化前后端模型,并在 Flowix 会话 UI 中分别展示消息、Reasoning、计划、命令执行、文件变更和 MCP 调用。

Why

当前 Codex 事件被压缩为通用 Text, Reasoning, ToolCall, ToolResult chunk,很多运行状态、增量内容、命令进度和文件 Diff 会丢失或只能显示为原始 JSON,无法形成完整的任务工作台体验。

Implementation

  • 定义 CodexThread, CodexTurn, CodexItem 及稳定的 discriminated variants。
  • 映射 agent message delta、Reasoning、plan、command execution、file change、MCP tool call 和错误/完成状态。
  • 保留 App Server 的 thread/turn/item ID,用于增量更新、审批关联和恢复。
  • 命令卡片展示命令、cwd、实时输出、运行状态和退出码。
  • 文件变更卡片展示文件路径、Diff、增加/删除统计及打开文件操作。
  • 计划卡片展示步骤、当前状态和完成进度。
  • MCP 卡片展示 server、tool、输入摘要、进度和结果摘要。
  • 未识别 Item 转为 unknown 类型,保存类型名和安全截断后的摘要,不中断整个 Turn。
  • 保留现有通用 Agent 消息适配层,使其他外部 Agent 不受影响。

Acceptance criteria

  • 所有已支持 Item 都能增量更新而不会重复渲染。
  • 命令、文件 Diff、计划和 MCP 调用具有独立且可读的 UI。
  • 大输出和大 Diff 有明确截断、展开和性能保护。
  • 未知 Item 不会导致会话加载或流式运行失败。
  • 历史加载与实时通知生成相同的前端数据模型。
  • 覆盖 delta 合并、乱序事件、重复通知、未知类型和大输出测试。

Dependencies

Non-goals

  • 不在本 Issue 中处理用户审批决策。
  • 不实现 Codex 账户配置或 Flowix MCP Server。
  • 不改变 Claude、Hermes 等其他 runtime 的协议模型。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions