-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
背景
当前仓库在 JSON-RPC session query / provider discovery / session control / interrupt callback 错误出口中,仍保留以下通用错误类型:
UPSTREAM_HTTP_ERRORUPSTREAM_UNREACHABLEUPSTREAM_PAYLOAD_ERROR
在 #274 的本轮实现中,已确认这不是纯内部历史残留,而是仍被外部下游消费。
已核对的外部消费点(位于 ~/a2a-client-hub):
docs/contracts/shared-session-query-reference-payloads.jsonbackend/tests/extensions/test_session_query_extension_discovery.pybackend/tests/extensions/test_opencode_provider_discovery.py
现状
本仓内部已经具备更细粒度的共享 upstream taxonomy,但为了保持现有 JSON-RPC 契约兼容性,对外仍返回上述通用类型,而没有直接暴露更细的 canonical profile(如 401/403/429 对应的细粒度分类)。
问题
这会带来一个明确的收敛遗留:
- 内部错误分类已经细化;
- 对外 JSON-RPC 契约仍维持较粗粒度 business type;
- 跨仓文档与测试也仍依赖旧值。
如果未来要移除上述三个通用类型,不能只改本仓,需要同步调整下游消费与契约说明。
复现 / 证据
- 在当前仓库检索:
rg -n "UPSTREAM_HTTP_ERROR|UPSTREAM_UNREACHABLE|UPSTREAM_PAYLOAD_ERROR" src/opencode_a2a tests
- 在
~/a2a-client-hub检索:rg -n "UPSTREAM_HTTP_ERROR|UPSTREAM_UNREACHABLE|UPSTREAM_PAYLOAD_ERROR" /home/juanjuan/a2a-client-hub
- 可见
a2a-client-hub的文档与测试仍显式引用这些类型。
期望行为
定义并执行一套跨仓收敛方案:
- 先更新
a2a-client-hub的消费逻辑、文档契约和测试; - 再回到本仓移除或替换这三个通用 JSON-RPC error type;
- 最终让 JSON-RPC 对外契约也直接复用更一致的 canonical upstream taxonomy。
实际行为
当前只能在本仓内部共享 taxonomy,外部 JSON-RPC error type 仍保留旧兼容值。
建议实施步骤
- 盘点
a2a-client-hub中所有对这三个 error type 的直接判断、文档样例和测试断言。 - 设计新的跨仓对外 error contract:
- 是直接暴露 canonical type,还是新增更细字段并逐步迁移。
- 先在
a2a-client-hub完成消费侧兼容与文档更新。 - 再在本仓移除这三个通用 type 或将其降级为兼容层。
- 最后同步更新 agent card / extension contract 文档与回归测试。
验收标准
a2a-client-hub不再依赖UPSTREAM_HTTP_ERROR/UPSTREAM_UNREACHABLE/UPSTREAM_PAYLOAD_ERROR作为唯一对外契约值。- 本仓 JSON-RPC error 输出与内部共享 taxonomy 对齐。
- 两个仓库的测试与文档同步更新,无遗留旧契约断言。
快照
git rev-parse HEAD: 932e380
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels