[Priority: Low] [Enhancement] 明确 Python API facade 导出契约

Ouverte
#519 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
35/100
Type d'issue
Fonctionnalité
Clarté
À clarifier
Activité
Active
Stack technique
python

Piste de recherche

Commencez par src/opencode_a2a/contracts/extensions/init.py et examinez ses consommateurs en production ainsi que les tests de contrat existants. Déterminez et documentez si cette façade est stable ou interne, puis suivez la voie sélectionnée : définissez les tests de contrat minimaux pour all et les imports, ou planifiez des imports progressifs depuis les modules de définition. Exécutez bash ./scripts/doctor.sh et vérifiez les critères d’acceptation.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

enhancement status:triage

背景

在 #518 的冗余清理与跨仓库 facade 风险对照中发现,src/opencode_a2a/contracts/extensions/__init__.py 是仓库实际使用的聚合导入入口,目前通过 # ruff: noqa: F401 表达 re-export,但没有显式 __all__ 或独立 facade import contract tests。

当前没有功能故障:该入口有生产代码和契约测试消费者,不会被合理的死代码审查判定为无消费者模块。本 issue 仅作为低优先级 API 治理备忘,不代表现有全部 re-export 已经被承诺为长期稳定的公共 Python API。

需要明确的问题

  • opencode_a2a.contracts.extensions 是否应作为受支持的稳定 Python API facade?
  • 若是,哪些 symbols 属于有意公开的最小集合,哪些应继续从定义模块导入?
  • 稳定性承诺是否只覆盖 client/__init__.py,还是还应覆盖 contracts facade?
  • py.typed 发布与 Python API 兼容策略应如何在文档和测试中体现?

建议方案

  1. 先记录仓库支持的 Python API 边界,避免仅凭当前导入形状隐式扩大兼容承诺。
  2. 若确认 contracts.extensions 是稳定 facade:
    • 添加显式 __all__,仅列出有意公开的 symbols;
    • 添加 package/facade import contract tests;
    • 验证 wheel 中的导入路径和类型信息;
    • 在兼容性文档中说明变更与弃用策略。
  3. 若不承诺该 facade:
    • 明确其 internal/convenience 定位;
    • 逐步让仓库内部消费者从真实定义模块导入,避免形成更强的事实 API。

非目标

  • 不在本 issue 中改变 A2A wire contract、Agent Card、OpenAPI 或 JSON-RPC 行为。
  • 不因为添加 __all__ 就自动承诺当前全部 re-export 永久稳定。
  • 不与 #515 的 SDK 升级和 compatibility layer 审计混合实施。

验收标准

  • 明确记录受支持的 Python API/facade 边界。
  • 对 contracts.extensions 作出“稳定 facade”或“内部便利入口”的明确决定。
  • 若选择稳定 facade,添加最小显式 __all__ 和 import contract tests。
  • 若选择内部入口,制定不破坏当前仓库调用的渐进收敛方案。
  • 执行 bash ./scripts/doctor.sh。

关联

  • Follow-up from #518
  • 参考跨仓库 https://github.com/liujuanjuan1984/codex-a2a/pull/358 中对已发布 JSON-RPC params facade 的兼容性复核经验。
Langage dominant
Python
Étoiles
38
Forks
13
Merge moyen
3 h 43 min
PR mergées (30 j)
4

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de Intelligent-Internet/opencode-a2a

Toutes les issues de Intelligent-Internet/opencode-a2a

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.