-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
status:todoPlanned but not startedPlanned but not started
Description
🔍 发现的问题 / 原始需求描述
当前 A2A 扩展只暴露了 opencode.sessions.list、opencode.sessions.messages.list、opencode.sessions.prompt_async、opencode.sessions.command、可选的 opencode.sessions.shell。但上游 opencode 的 session 能力面远不止于此,还包括 status/get/children/todo/create/delete/update/init/fork/share/unshare/summarize/diff/message/deleteMessage/part.delete/update/revert/unrevert。这导致 opencode-a2a 只能覆盖主聊天链路,无法还原 OpenCode 的完整 session lifecycle。
🛠️ 详细实施方案 (必须包含涉及的文件路径和核心逻辑/伪代码)
- 扩展 session lifecycle 的方法契约声明。
涉及文件:
src/opencode_a2a/contracts/extensions.pysrc/opencode_a2a/server/agent_card.pydocs/guide.md
建议分层:
- 查询类:
opencode.sessions.status/get/children/todo/message.get/diff - 管理类:
opencode.sessions.create/delete/update/init/fork/share/unshare/summarize/revert/unrevert/message.delete/part.delete/part.update
- 在上游 client 中补齐缺失 REST 调用。
涉及文件:
src/opencode_a2a/opencode_upstream_client.py
伪代码:
session_status() -> GET /session/status
get_session(id) -> GET /session/:id
fork_session(id, body) -> POST /session/:id/fork
share_session(id) -> POST /session/:id/share
revert_session(id, body) -> POST /session/:id/revert
...
- JSON-RPC 层按“查询”和“管理”拆 handler,避免现有
session_queries.py/session_control.py继续膨胀。
涉及文件:
src/opencode_a2a/jsonrpc/dispatch.pysrc/opencode_a2a/jsonrpc/handlers/session_queries.pysrc/opencode_a2a/jsonrpc/handlers/session_control.pysrc/opencode_a2a/jsonrpc/handlers/session_lifecycle.py(new)src/opencode_a2a/jsonrpc/handlers/common.py
核心逻辑建议:
if method in read_only_methods:
map upstream payload -> normalized result
elif method in mutating_methods:
enforce owner/session guard
resolve directory/workspace boundary
call upstream mutation endpoint
return minimal stable result envelope
- 明确哪些结果映射成 A2A 标准对象,哪些保留为 provider-private 对象。
建议:
- session list / get / children 仍可映射到
Task风格对象 - message get 可映射到 A2A
Message - share / summarize / revert 等管理类返回 provider-private result,避免过度伪装成 A2A core object
🧪 回归测试建议
- 为每个新增 lifecycle 方法补齐参数校验、上游 404/400/500、owner mismatch 的测试。
- 为 mutating 方法增加权限与目录边界回归测试,避免绕过现有单租户保护逻辑。
- 为 Agent Card / wire contract / compatibility profile 增加一致性测试,确保新方法声明完整。
- 运行
./scripts/doctor.sh。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
status:todoPlanned but not startedPlanned but not started