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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions