-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
status:todoPlanned but not startedPlanned but not started
Description
🔍 发现的问题 / 原始需求描述
当前 session query 契约只正式声明了 limit 分页,且 opencode.sessions.messages.list 没有暴露上游已有的 before cursor;opencode.sessions.list 也没有对齐 directory、roots、start、search 等过滤字段。结果是适配层虽然覆盖了“能列出来”,但与上游 OpenCode 的查询还原度仍有明显差距,客户端也无法稳定做增量加载与精确过滤。
🛠️ 详细实施方案 (必须包含涉及的文件路径和核心逻辑/伪代码)
- 扩展 query 参数解析器与契约声明。
涉及文件:
src/opencode_a2a/jsonrpc/params.pysrc/opencode_a2a/contracts/extensions.pydocs/guide.md
建议补齐字段:
opencode.sessions.list:directory,roots,start,search,limitopencode.sessions.messages.list:limit,before
- 为消息分页显式暴露
next_cursor,不要只把它吞在上游 HTTP Header 里。
涉及文件:
src/opencode_a2a/jsonrpc/handlers/session_queries.pysrc/opencode_a2a/opencode_upstream_client.py
伪代码:
raw_items, next_cursor = upstream.list_messages(session_id, limit, before)
return {
items: mapped_messages,
next_cursor: next_cursor,
}
- 保持与现有
limit-only 客户端兼容。
涉及文件:
src/opencode_a2a/contracts/extensions.pydocs/guide.md
建议把分页模型从“只有 limit”升级为“limit + optional cursor”,同时在 Agent Card 中说明 before 只适用于 message history,不适用于通用分页。
🧪 回归测试建议
- 为
params.py增加字段组合校验测试,覆盖非法before、非法limit、旧客户端兼容。 - 为
opencode.sessions.messages.list增加带 cursor 的 handler 测试,验证next_cursor透出。 - 为文档与 contract 一致性测试补齐新的参数/结果字段断言。
- 运行
./scripts/doctor.sh。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
status:todoPlanned but not startedPlanned but not started