Skip to content

chore: align dual-stack transport contract, deploy input model, and CI baseline#63

Merged
liujuanjuan1984 merged 12 commits intomainfrom
docs/transport-dual-stack-contract
Feb 12, 2026
Merged

chore: align dual-stack transport contract, deploy input model, and CI baseline#63
liujuanjuan1984 merged 12 commits intomainfrom
docs/transport-dual-stack-contract

Conversation

@liujuanjuan1984
Copy link
Collaborator

@liujuanjuan1984 liujuanjuan1984 commented Feb 12, 2026

关联 Issue

Closes #62
Closes #64
Closes #65

背景

本 PR 最初围绕双栈传输契约(HTTP+JSON / JSON-RPC)对齐展开,后续按相关 issue 补充了 CI 基线与 deploy 输入模型优化,因此最终范围覆盖传输契约、Agent Card 能力描述、部署脚本与部署文档一致性、CI、许可证信息。

变更概览(按模块)

1) 传输契约与运行时防护(#62

  • 修订文档,明确双栈并存与各自 payload 约束:
    • HTTP+JSON(REST)与 JSON-RPC 都支持
    • preferredTransport=HTTP+JSON,同时在 additionalInterfaces 暴露 JSON-RPC
    • 明确“跨传输 payload 不可混用”
  • 修正流式重连路由文案为实际实现:GET /v1/tasks/{task_id}:subscribe
  • 在服务端新增 REST 端 payload guard:
    • 对误投 REST 的 JSON-RPC envelope/shape 返回显式 400
    • 避免下游解析异常导致 500
  • 新增/补强传输契约测试:
    • Agent Card 双栈声明
    • REST 关键路由契约(存在 :subscribe,不存在 :resubscribe
    • 双栈 native payload 可用性与 cross-shape 拒绝行为

2) Agent Card 能力描述与部署上下文(#62

  • Agent Card 描述更新为与当前能力对齐(message/send、message/stream、tasks/get、tasks/cancel、session query 扩展)
  • 明确共享工作空间边界:单实例内消费者共享同一 OpenCode workspace/environment(非 tenant-isolated)
  • 扩展字段中注入 deployment context(如 project/workspace/provider/model/agent/variant 等)
  • 增加对应测试覆盖

3) Deploy 输入模型与文档一致性(#65

  • scripts/deploy.sh 新增非敏感 CLI keys:
    • data_roota2a_streaminga2a_log_levela2a_log_payloadsa2a_log_body_limit
  • deploy 过程中自动写入 A2A_PROJECT=<project>a2a.env
  • 文档重构为输入矩阵并显式区分:
    • ENV Name vs CLI Key
    • 输入变量 vs 自动生成运行时变量
    • 统一优先级:CLI > ENV > default
  • 精简脚本顶部注释,指向 docs/deployment.md 作为单一权威说明,避免双重标准

4) CI 与许可证(#64

  • 新增 GitHub Actions CI:PR / main push 自动执行
    • uv run pre-commit run --all-files
    • uv run pytest
  • 增加 Apache-2.0 LICENSE,并在 README 标注 license 信息

主要变更文件

  • Runtime: src/opencode_a2a_serve/app.py, src/opencode_a2a_serve/config.py
  • Tests: tests/test_transport_contract.py, tests/test_agent_card.py
  • Docs: README.md, docs/guide.md, docs/deployment.md
  • Deploy: scripts/deploy.sh, scripts/deploy/setup_instance.sh
  • CI/License: .github/workflows/ci.yml, LICENSE

验证

  • uv run pre-commit run --all-files 通过
  • uv run pytest 通过(44 passed)
  • bash -n scripts/deploy.sh scripts/deploy/setup_instance.sh 通过

提交参考

  • 传输契约与防护:95498f3, 72f1fc7, 01c3fc6
  • Agent Card/CI:5f0e6b1
  • Deploy 输入模型与文档:50c447c, 72a0ba7, aecf83f, b14272a, a5c66a1
  • License:da5569c

@liujuanjuan1984 liujuanjuan1984 marked this pull request as ready for review February 12, 2026 13:08
@liujuanjuan1984
Copy link
Collaborator Author

补充修复已推送:01c3fc6

本次处理:

  • 修复 REST 端跨协议误投场景:当完整 JSON-RPC envelope(jsonrpc/method/...)误发到 /v1/message:send/v1/message:stream 时,服务现在返回明确 400,不再落到下游并产生 500
  • 增加回归测试:覆盖“完整 JSON-RPC 请求打到 REST”应返回 400
  • 修正文档遗留:docs/deployment.md 的流式重连端点改为实现一致的 GET /v1/tasks/{task_id}:subscribe

回归:

  • uv run pre-commit run --all-files 通过
  • uv run pytest 通过(44 passed)

@liujuanjuan1984 liujuanjuan1984 changed the title [chore] 对齐 JSON-RPC / HTTP+JSON 双栈传输契约与文档 chore: align dual-stack transport contract, deploy input model, and CI baseline Feb 12, 2026
@liujuanjuan1984 liujuanjuan1984 merged commit 7a4f576 into main Feb 12, 2026
1 check passed
@liujuanjuan1984 liujuanjuan1984 deleted the docs/transport-dual-stack-contract branch February 12, 2026 14:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant