# 7-33 ACP session info / plan UI checklist v1

> 状态：done
>
> 归档说明（2026-05-21）：ACP session info / plan SSE 与 Page AI 轻量 UI 已完成；todo JSON 细化显示作为后续格式约定项。
>
> Owner：ACP metadata SSE + Page AI lightweight UI
>
> 参考：`reference-code/hermes-vscode-main/src/sessionManager.ts`、`src/webview/renderers.ts`

## 目标

把已解析但被丢弃的 `session_info_update` 和 `plan` 事件送到 Page AI UI：自动标题更新当前会话；plan/todo 以轻量状态面板或系统消息展示，不混入正文真相。

## 允许修改范围

- `rust/crates/mnote-web/src/acp_bridge.rs`
- `rust/crates/mnote-web/src/routes/hermes_client.rs`
- `rust/crates/mnote-web/src/ssr/pages/layout.rs`
- 相关 Rust 测试

## 禁止事项

- 不改 ACP parser 类型，除非发现现有 PlanEntry 无法表达必要字段。
- 不实现完整 Phase C review session。
- 不把 plan/todo 写入页面正文。

## Checklist

- [x] `AcpSessionEvent::SessionInfoUpdate` 转成 `session.info.updated` SSE。
- [x] `AcpSessionEvent::PlanUpdate` 转成 `plan.updated` SSE，data 包含 entries。
- [x] Page AI 收到 session info 后更新当前 session title，并持久化 localStorage/local session view。
- [x] Page AI 收到 plan 后渲染轻量 plan 状态（collapsible details/summary + 编号列表），不当作普通 assistant 正文。
- [ ] tool raw output 中包含 todo JSON 时，可以复用 plan 区域或 tool card 状态显示。（风险可控，todo JSON 解析需额外确认格式约定；建议后续补）
- [x] 补 bridge 单测和 `SIDEBAR_TREE_JS` 字符串断言。
- [x] 更新本文件“执行记录”。

## 验收命令

```bash
cd /mnt/Data1T/mnote/rust && cargo test -p mnote-web acp_bridge -- --test-threads=1
cd /mnt/Data1T/mnote/rust && cargo test -p mnote-web page_ai_uses_backend_acp_session_runtime_store -- --test-threads=1
```

## 执行记录

- 2026-05-20 Reasonix：桥接 SessionInfoUpdate → `session.info.updated` SSE、PlanUpdate → `plan.updated` SSE。
- 2026-05-20 Reasonix：前端 SSE handler 解析 session.info.updated 更新当前 session title 并持久化；plan.updated 在 pageAiMessages 末尾创建/更新 kind=plan 消息。
- 2026-05-20 Reasonix：renderPageAiConversation 添加 kind===plan 渲染分支：collapsible details/summary 面板显示编号步骤列表。
- 2026-05-20 Reasonix：acp_bridge 添加两个单测（session_info_update / plan_update）；SIDEBAR_TREE_JS 添加 4 个断言。
- 2026-05-20 Codex 复核：todo JSON 格式尚未确认，保留为未完成项；其余已通过 `cargo test -p mnote-web acp_bridge -- --test-threads=1`、`cargo test -p mnote-web page_ai_uses_backend_acp_session_runtime_store -- --test-threads=1`、`cargo test -p mnote-web acp -- --test-threads=1`。
