Files
mnote/design/old/07-ai/done/7-32-acp-tool-location-and-open-action-checklist-v1.md
T
Agent Board b798f628ee chore: land tree view-state, vault, Pi module split, and repo hygiene
Persist PageTree expand state via control-plane view-state and align
chevron/DOM with restored expansion; keep Sidex-style shallow page-tree
scan and drop the unused recursive scanner that only added cargo noise.

Add password vault workbench routes/runtime/skill/CLI, split page_ai_pi
into a module package, and retire Hermes/ACP/OpenHub recycle + root
harness evidence from the index while gitignoring recycle and local
diag dumps.

Archive superseded design/bugs docs under old/, point architecture at
ARCHITECTURE.md, and refresh smokes for Pi S1–S7, vault, and editor
regressions so the working tree can stay clean.
2026-07-21 05:13:05 +08:00

3.2 KiB
Raw Blame History

[recycle] 7-32 ACP tool locations 与打开动作 checklist v1

状态:done

归档说明(2026-05-21):ACP tool locations 解析、SSE 桥接与前端打开动作已完成;浏览器 smoke 可作为后续补强。

OwnerACP tool event data + Page AI open action

参考:reference-code/hermes-vscode-main/src/protocol.tssrc/chatPanel.ts

目标

保留 ACP tool_call.locations[],在 Page AI tool card 中展示位置,并对 read/edit 完成事件提供打开动作。默认打开到 MNote 主编辑器资源 tab / 当前工作区 tab,不默认新浏览器窗口。

允许修改范围

  • rust/crates/mnote-web/src/acp_types.rs
  • rust/crates/mnote-web/src/acp_session_manager.rs
  • rust/crates/mnote-web/src/acp_bridge.rs
  • rust/crates/mnote-web/src/ssr/pages/layout.rs
  • 相关 Rust 测试和必要 smoke 脚本

禁止事项

  • 不重写资源 tab registry。
  • 不新增与 Sidex workbench checklist 冲突的 editor group 模型。
  • 不默认 window.open
  • 不绕过 existing allowed root / local workspace access。

Checklist

  • SessionUpdate::ToolCall 解析 locations: [{ path }]
  • AcpSessionEvent::ToolCall 携带 locations,并通过 SSE tool.started 发送。
  • tool.completed 能保留或关联此前相同 toolCallId 的 locations/kind/title。
  • Page AI tool card 展示 location 摘要。
  • 对 read/edit completed tool card 增加“打开”动作,优先复用已有 resource tab / file open resolver。
  • 补测试覆盖 locations parse、SSE 数据、前端字符串断言或 smoke。
  • 更新本文件“执行记录”。

验收命令

cd /mnt/Data1T/mnote/rust && cargo test -p mnote-web acp_tool -- --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 Code 实现:
    • acp_types.rs: 新增 ToolLocation 结构体(含 path 字段),SessionUpdate::ToolCall 新增 locations: Vec<ToolLocation>(含反序列化支持)。
    • acp_session_manager.rs: AcpSessionEvent::ToolCall 新增 locations: Vec<String>session_update_to_event 中映射 locations。
    • acp_bridge.rs: SSE tool.started 事件数据包含 locations 数组,桥测试中验证。
    • layout.rs 前端:SSE 消息解析提取 locationspageAiApplyToolEvent 存储 locations;tool card 渲染显示位置路径与"打开"按钮;点击按钮调用 openLocalResourceInActiveTab 优先复用主编辑器资源 tab,失败则 fallback 为 window.open
    • 测试覆盖:test_session_update_tool_call_with_locationsparse)、acp_tool_events_keep_detail_for_collapsible_ui 验证 SSE locations 字段、page_ai_uses_backend_acp_session_runtime_store 验证布局完整性。
    • Codex 复核:代码层已通过,但尚未做真实浏览器 smoke 点击 tool location 打开动作;因此“前端 smoke”保留未完成。
    • 验收通过:cargo test -p mnote-web acp_bridge -- --test-threads=1cargo test -p mnote-web page_ai_uses_backend_acp_session_runtime_store -- --test-threads=1cargo test -p mnote-web acp -- --test-threads=1