codex-a2a 1.1.2__tar.gz → 1.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/PKG-INFO +1 -4
  2. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/pyproject.toml +0 -3
  3. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/payload_mapping.py +13 -2
  4. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/task_store.py +11 -83
  5. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a.egg-info/PKG-INFO +1 -4
  6. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a.egg-info/SOURCES.txt +0 -3
  7. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a.egg-info/requires.txt +0 -3
  8. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/uv.lock +134 -130
  9. codex_a2a-1.1.2/src/codex_a2a/parts/text.py +0 -15
  10. codex_a2a-1.1.2/tests/parts/test_text.py +0 -41
  11. codex_a2a-1.1.2/tests/upstream/__init__.py +0 -0
  12. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/.github/dependabot.yml +0 -0
  13. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/.github/workflows/ci.yml +0 -0
  14. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/.github/workflows/dependency-health.yml +0 -0
  15. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/.github/workflows/publish.yml +0 -0
  16. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/.gitignore +0 -0
  17. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/.pre-commit-config.yaml +0 -0
  18. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/.secrets.baseline +0 -0
  19. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/AGENTS.md +0 -0
  20. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/CONTRIBUTING.md +0 -0
  21. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/LICENSE +0 -0
  22. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/README.md +0 -0
  23. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/SECURITY.md +0 -0
  24. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/docs/a2a-extension-baseline.md +0 -0
  25. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/docs/architecture.md +0 -0
  26. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/docs/compatibility.md +0 -0
  27. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/docs/conformance-triage.md +0 -0
  28. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/docs/conformance.md +0 -0
  29. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/docs/extension-specifications.md +0 -0
  30. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/docs/guide.md +0 -0
  31. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/docs/maintainer-architecture.md +0 -0
  32. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/mypy.ini +0 -0
  33. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/README.md +0 -0
  34. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/audit_low_call_sites.py +0 -0
  35. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/check_dead_code.py +0 -0
  36. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/conformance.sh +0 -0
  37. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/dependency_health.sh +0 -0
  38. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/health_common.sh +0 -0
  39. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/publish_github_release.sh +0 -0
  40. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/smoke_test_built_cli.sh +0 -0
  41. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/sync_codex_docs.sh +0 -0
  42. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/validate_baseline.sh +0 -0
  43. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/validate_runtime_matrix.sh +0 -0
  44. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/setup.cfg +0 -0
  45. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/__init__.py +0 -0
  46. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/a2a_proto.py +0 -0
  47. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/auth.py +0 -0
  48. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/cli.py +0 -0
  49. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/__init__.py +0 -0
  50. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/agent_card.py +0 -0
  51. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/auth.py +0 -0
  52. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/client.py +0 -0
  53. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/config.py +0 -0
  54. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/errors.py +0 -0
  55. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/extension_negotiation.py +0 -0
  56. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/manager.py +0 -0
  57. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/payload_text.py +0 -0
  58. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/request_context.py +0 -0
  59. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/config.py +0 -0
  60. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/contracts/__init__.py +0 -0
  61. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/contracts/extension_registry.py +0 -0
  62. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/contracts/extension_specs.py +0 -0
  63. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/contracts/extensions.py +0 -0
  64. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/contracts/runtime_output.py +0 -0
  65. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/__init__.py +0 -0
  66. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/discovery_runtime.py +0 -0
  67. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/exec_runtime.py +0 -0
  68. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/executor.py +0 -0
  69. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/output_mapping.py +0 -0
  70. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/request_metadata.py +0 -0
  71. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/request_overrides.py +0 -0
  72. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/response_emitter.py +0 -0
  73. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/review_runtime.py +0 -0
  74. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/session_runtime.py +0 -0
  75. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/stream_chunks.py +0 -0
  76. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/stream_interrupts.py +0 -0
  77. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/stream_processor.py +0 -0
  78. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/stream_state.py +0 -0
  79. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/streaming.py +0 -0
  80. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/thread_lifecycle_runtime.py +0 -0
  81. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/tool_call_payloads.py +0 -0
  82. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/watch_events.py +0 -0
  83. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/input_mapping.py +0 -0
  84. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/__init__.py +0 -0
  85. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/application.py +0 -0
  86. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/discovery_control.py +0 -0
  87. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/discovery_params.py +0 -0
  88. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/discovery_payload_mapping.py +0 -0
  89. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/discovery_query.py +0 -0
  90. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/dispatch.py +0 -0
  91. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/errors.py +0 -0
  92. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/exec_control.py +0 -0
  93. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/exec_control_params.py +0 -0
  94. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/hooks.py +0 -0
  95. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/interrupt_lifecycle.py +0 -0
  96. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/interrupt_params.py +0 -0
  97. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/interrupt_recovery.py +0 -0
  98. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/interrupt_recovery_params.py +0 -0
  99. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/interrupts.py +0 -0
  100. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/owner_guard.py +0 -0
  101. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/params.py +0 -0
  102. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/params_common.py +0 -0
  103. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/query_params.py +0 -0
  104. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/request_models.py +0 -0
  105. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/review_control.py +0 -0
  106. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/review_control_params.py +0 -0
  107. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/session_query.py +0 -0
  108. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/thread_lifecycle_control.py +0 -0
  109. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/thread_lifecycle_params.py +0 -0
  110. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/turn_control.py +0 -0
  111. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/turn_control_params.py +0 -0
  112. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/logging_context.py +0 -0
  113. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/media_modes.py +0 -0
  114. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/metrics.py +0 -0
  115. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/payload_helpers.py +0 -0
  116. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/profile/__init__.py +0 -0
  117. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/profile/runtime.py +0 -0
  118. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/protocol_versions.py +0 -0
  119. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/py.typed +0 -0
  120. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/__init__.py +0 -0
  121. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/agent_card.py +0 -0
  122. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/application.py +0 -0
  123. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/call_context.py +0 -0
  124. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/database.py +0 -0
  125. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/http_middlewares.py +0 -0
  126. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/migrations.py +0 -0
  127. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/openapi.py +0 -0
  128. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/openapi_contract_fragments.py +0 -0
  129. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/output_negotiation.py +0 -0
  130. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/push_config_store.py +0 -0
  131. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/request_handler.py +0 -0
  132. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/runtime_state.py +0 -0
  133. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/runtime_state_schema.py +0 -0
  134. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/__init__.py +0 -0
  135. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/client.py +0 -0
  136. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/conversation_facade.py +0 -0
  137. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/discovery_payloads.py +0 -0
  138. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/interrupt_bridge.py +0 -0
  139. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/interrupts.py +0 -0
  140. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/models.py +0 -0
  141. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/notification_mapping.py +0 -0
  142. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/request_mapping.py +0 -0
  143. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/startup.py +0 -0
  144. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/stream_bridge.py +0 -0
  145. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/transport.py +0 -0
  146. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a.egg-info/dependency_links.txt +0 -0
  147. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a.egg-info/entry_points.txt +0 -0
  148. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a.egg-info/top_level.txt +0 -0
  149. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/__init__.py +0 -0
  150. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/client/__init__.py +0 -0
  151. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/client/test_agent_card.py +0 -0
  152. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/client/test_cli.py +0 -0
  153. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/client/test_client_flow.py +0 -0
  154. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/client/test_client_manager.py +0 -0
  155. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/client/test_errors.py +0 -0
  156. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/client/test_lifecycle.py +0 -0
  157. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/client/test_payload_text.py +0 -0
  158. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/client/test_request_context.py +0 -0
  159. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/config/__init__.py +0 -0
  160. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/config/test_settings.py +0 -0
  161. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/contracts/__init__.py +0 -0
  162. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/contracts/test_extension_contract_consistency.py +0 -0
  163. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/contracts/test_extension_registry.py +0 -0
  164. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/__init__.py +0 -0
  165. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_agent_errors.py +0 -0
  166. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_cancellation.py +0 -0
  167. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_codex_agent_session_binding.py +0 -0
  168. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_directory_validation.py +0 -0
  169. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_discovery_exec_runtime.py +0 -0
  170. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_metrics.py +0 -0
  171. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_request_metadata.py +0 -0
  172. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_review_runtime.py +0 -0
  173. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_session_ownership.py +0 -0
  174. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_session_persistence.py +0 -0
  175. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_session_runtime.py +0 -0
  176. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_stream_chunks.py +0 -0
  177. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_stream_interrupts.py +0 -0
  178. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_streaming_output_contract.py +0 -0
  179. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_thread_lifecycle_runtime.py +0 -0
  180. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_tool_call_payloads.py +0 -0
  181. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/fixtures/codex_app_server/command_execution_output_delta.json +0 -0
  182. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/fixtures/codex_app_server/file_change_output_delta.json +0 -0
  183. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/__init__.py +0 -0
  184. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_codex_discovery_extension.py +0 -0
  185. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_codex_exec_extension.py +0 -0
  186. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_codex_session_extension.py +0 -0
  187. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_codex_thread_lifecycle_extension.py +0 -0
  188. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_codex_turn_review_extension.py +0 -0
  189. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_dispatch.py +0 -0
  190. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_guard_hooks.py +0 -0
  191. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_interrupt_lifecycle.py +0 -0
  192. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_interrupt_params.py +0 -0
  193. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_interrupt_protocol_handlers.py +0 -0
  194. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_jsonrpc_models.py +0 -0
  195. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_protocol_payload_mapping.py +0 -0
  196. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/package/__init__.py +0 -0
  197. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/package/test_logging.py +0 -0
  198. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/package/test_publish_github_release_script.py +0 -0
  199. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/package/test_release_distribution_contract.py +0 -0
  200. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/package/test_typing_contract.py +0 -0
  201. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/package/test_version.py +0 -0
  202. {codex_a2a-1.1.2/tests/parts → codex_a2a-1.1.3/tests/profile}/__init__.py +0 -0
  203. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/profile/test_profile.py +0 -0
  204. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/scripts/__init__.py +0 -0
  205. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/scripts/test_audit_low_call_sites.py +0 -0
  206. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/scripts/test_script_health_contract.py +0 -0
  207. {codex_a2a-1.1.2/tests/profile → codex_a2a-1.1.3/tests/server}/__init__.py +0 -0
  208. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_agent_card.py +0 -0
  209. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_auth.py +0 -0
  210. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_call_context_builder.py +0 -0
  211. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_cli.py +0 -0
  212. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_database.py +0 -0
  213. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_database_app_persistence.py +0 -0
  214. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_migrations.py +0 -0
  215. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_output_negotiation.py +0 -0
  216. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_push_config_store.py +0 -0
  217. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_request_handler.py +0 -0
  218. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_runtime_state.py +0 -0
  219. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_task_store.py +0 -0
  220. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_transport_contract.py +0 -0
  221. {codex_a2a-1.1.2/tests/server → codex_a2a-1.1.3/tests/support}/__init__.py +0 -0
  222. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/support/context.py +0 -0
  223. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/support/dummy_clients.py +0 -0
  224. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/support/fixtures.py +0 -0
  225. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/support/http_auth.py +0 -0
  226. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/support/jsonrpc_errors.py +0 -0
  227. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/support/settings.py +0 -0
  228. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/test_a2a_proto.py +0 -0
  229. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/test_input_mapping.py +0 -0
  230. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/test_protocol_versions.py +0 -0
  231. {codex_a2a-1.1.2/tests/support → codex_a2a-1.1.3/tests/upstream}/__init__.py +0 -0
  232. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/upstream/test_codex_client_params.py +0 -0
  233. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/upstream/test_interrupt_bridge.py +0 -0
  234. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/upstream/test_interrupt_persistence.py +0 -0
  235. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/upstream/test_modular_upstream_components.py +0 -0
  236. {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/upstream/test_request_mapping.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-a2a
3
- Version: 1.1.2
3
+ Version: 1.1.3
4
4
  Summary: Codex A2A runtime adapter
5
5
  Author: liujuanjuan1984@Intelligent-Internet
6
6
  License-Expression: Apache-2.0
@@ -27,11 +27,8 @@ Requires-Dist: aiosqlite<1.0,>=0.20
27
27
  Requires-Dist: fastapi<0.137,>=0.121
28
28
  Requires-Dist: httpx<0.29,>=0.28.1
29
29
  Requires-Dist: protobuf<7.0,>=6.33.5
30
- Requires-Dist: pyasn1<1.0,>=0.6.3
31
- Requires-Dist: python-dotenv<2.0,>=1.2.2
32
30
  Requires-Dist: pydantic<3.0,>=2.6
33
31
  Requires-Dist: pydantic-settings<3.0,>=2.2
34
- Requires-Dist: requests<3.0,>=2.33.0
35
32
  Requires-Dist: sqlalchemy<3.0,>=2.0
36
33
  Requires-Dist: sse-starlette<4.0,>=2.1
37
34
  Requires-Dist: uvicorn<0.46,>=0.29
@@ -29,11 +29,8 @@ dependencies = [
29
29
  "fastapi>=0.121,<0.137",
30
30
  "httpx>=0.28.1,<0.29",
31
31
  "protobuf>=6.33.5,<7.0",
32
- "pyasn1>=0.6.3,<1.0",
33
- "python-dotenv>=1.2.2,<2.0",
34
32
  "pydantic>=2.6,<3.0",
35
33
  "pydantic-settings>=2.2,<3.0",
36
- "requests>=2.33.0,<3.0",
37
34
  "sqlalchemy>=2.0,<3.0",
38
35
  "sse-starlette>=2.1,<4.0",
39
36
  "uvicorn>=0.29,<0.46",
@@ -5,7 +5,6 @@ from typing import Any
5
5
  from a2a.types import Message, Role, Task, TaskState, TaskStatus
6
6
 
7
7
  from codex_a2a.a2a_proto import new_text_part
8
- from codex_a2a.parts.text import extract_text_from_parts
9
8
 
10
9
 
11
10
  def as_a2a_session_task(session: Any) -> Task | None:
@@ -47,7 +46,7 @@ def as_a2a_message(session_id: str, item: Any) -> Message | None:
47
46
  if isinstance(role_raw, str) and role_raw.strip().lower() == "user":
48
47
  role = Role.ROLE_USER
49
48
 
50
- text = extract_text_from_parts(item.get("parts"))
49
+ text = _extract_text_from_parts(item.get("parts"))
51
50
 
52
51
  message = Message(
53
52
  message_id=message_id,
@@ -65,3 +64,15 @@ def extract_raw_items(raw_result: Any, *, kind: str) -> list[Any]:
65
64
  if isinstance(raw_result, list):
66
65
  return raw_result
67
66
  raise ValueError(f"Codex {kind} payload must be an array; got {type(raw_result).__name__}")
67
+
68
+
69
+ def _extract_text_from_parts(parts: Any) -> str:
70
+ if not isinstance(parts, list):
71
+ return ""
72
+ texts: list[str] = []
73
+ for part in parts:
74
+ if isinstance(part, dict) and part.get("type") == "text":
75
+ part_text = part.get("text")
76
+ if isinstance(part_text, str):
77
+ texts.append(part_text)
78
+ return "".join(texts).strip()
@@ -2,7 +2,6 @@ from __future__ import annotations
2
2
 
3
3
  import asyncio
4
4
  import logging
5
- from abc import ABC, abstractmethod
6
5
  from collections.abc import Awaitable, Callable, MutableMapping
7
6
  from dataclasses import dataclass
8
7
  from typing import Any, cast
@@ -116,17 +115,7 @@ class TaskPersistenceDecision:
116
115
  reason: str | None = None
117
116
 
118
117
 
119
- class TaskWritePolicy(ABC):
120
- @abstractmethod
121
- def evaluate(
122
- self,
123
- *,
124
- existing: Task | None,
125
- incoming: Task,
126
- ) -> TaskPersistenceDecision: ...
127
-
128
-
129
- class FirstTerminalStateWinsPolicy(TaskWritePolicy):
118
+ class FirstTerminalStateWinsPolicy:
130
119
  def evaluate(
131
120
  self,
132
121
  *,
@@ -151,9 +140,12 @@ class FirstTerminalStateWinsPolicy(TaskWritePolicy):
151
140
  )
152
141
 
153
142
 
154
- class TaskStoreDecorator(TaskStore):
143
+ class GuardedTaskStore(TaskStore):
155
144
  def __init__(self, inner: TaskStore) -> None:
156
145
  self._inner = inner
146
+ self._write_policy = FirstTerminalStateWinsPolicy()
147
+ self._save_lock = asyncio.Lock()
148
+ self._atomic_guard_fallback_logged = False
157
149
 
158
150
  def __getattr__(self, name: str) -> Any:
159
151
  return getattr(self._inner, name)
@@ -163,38 +155,13 @@ class TaskStoreDecorator(TaskStore):
163
155
  task: Task,
164
156
  context: ServerCallContext | None = None,
165
157
  ) -> None:
166
- await self._inner.save(task, _normalize_context(context))
167
-
168
- async def list(
169
- self,
170
- params: ListTasksRequest,
171
- context: ServerCallContext | None = None,
172
- ) -> ListTasksResponse:
173
- return await self._inner.list(params, _normalize_context(context))
174
-
175
- async def get(
176
- self,
177
- task_id: str,
178
- context: ServerCallContext | None = None,
179
- ) -> Task | None:
180
- return await self._inner.get(task_id, _normalize_context(context))
181
-
182
- async def delete(
183
- self,
184
- task_id: str,
185
- context: ServerCallContext | None = None,
186
- ) -> None:
187
- await self._inner.delete(task_id, _normalize_context(context))
188
-
189
-
190
- class TaskStoreOperationWrappingDecorator(TaskStoreDecorator):
191
- async def save(
192
- self,
193
- task: Task,
194
- context: ServerCallContext | None = None,
195
- ) -> None:
158
+ context = _normalize_context(context)
159
+ raw_task_store = unwrap_task_store(self._inner)
196
160
  try:
197
- await self._inner.save(task, _normalize_context(context))
161
+ if isinstance(raw_task_store, DatabaseTaskStore):
162
+ await self._save_database_task(raw_task_store, task, context)
163
+ return
164
+ await self._save_with_read_before_write(task, context)
198
165
  except TaskStoreOperationError:
199
166
  raise
200
167
  except Exception as exc:
@@ -236,32 +203,6 @@ class TaskStoreOperationWrappingDecorator(TaskStoreDecorator):
236
203
  except Exception as exc:
237
204
  raise TaskStoreOperationError("delete", task_id) from exc
238
205
 
239
-
240
- class PolicyAwareTaskStore(TaskStoreDecorator):
241
- def __init__(
242
- self,
243
- inner: TaskStore,
244
- *,
245
- write_policy: TaskWritePolicy | None = None,
246
- ) -> None:
247
- super().__init__(inner)
248
- self._write_policy = write_policy or FirstTerminalStateWinsPolicy()
249
- self._save_lock = asyncio.Lock()
250
- self._atomic_guard_fallback_logged = False
251
-
252
- async def save(
253
- self,
254
- task: Task,
255
- context: ServerCallContext | None = None,
256
- ) -> None:
257
- context = _normalize_context(context)
258
- raw_task_store = unwrap_task_store(self._inner)
259
- if isinstance(raw_task_store, DatabaseTaskStore):
260
- await self._save_database_task(raw_task_store, task, context)
261
- return
262
-
263
- await self._save_with_read_before_write(task, context)
264
-
265
206
  async def _save_with_read_before_write(
266
207
  self,
267
208
  task: Task,
@@ -375,19 +316,6 @@ class PolicyAwareTaskStore(TaskStoreDecorator):
375
316
  )
376
317
 
377
318
 
378
- class GuardedTaskStore(PolicyAwareTaskStore):
379
- def __init__(
380
- self,
381
- inner: TaskStore,
382
- *,
383
- write_policy: TaskWritePolicy | None = None,
384
- ) -> None:
385
- super().__init__(
386
- TaskStoreOperationWrappingDecorator(inner),
387
- write_policy=write_policy,
388
- )
389
-
390
-
391
319
  def build_task_store_failure_metadata(operation: str) -> dict[str, Any]:
392
320
  return {"codex": {"error": {"type": TASK_STORE_ERROR_TYPE, "operation": operation}}}
393
321
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-a2a
3
- Version: 1.1.2
3
+ Version: 1.1.3
4
4
  Summary: Codex A2A runtime adapter
5
5
  Author: liujuanjuan1984@Intelligent-Internet
6
6
  License-Expression: Apache-2.0
@@ -27,11 +27,8 @@ Requires-Dist: aiosqlite<1.0,>=0.20
27
27
  Requires-Dist: fastapi<0.137,>=0.121
28
28
  Requires-Dist: httpx<0.29,>=0.28.1
29
29
  Requires-Dist: protobuf<7.0,>=6.33.5
30
- Requires-Dist: pyasn1<1.0,>=0.6.3
31
- Requires-Dist: python-dotenv<2.0,>=1.2.2
32
30
  Requires-Dist: pydantic<3.0,>=2.6
33
31
  Requires-Dist: pydantic-settings<3.0,>=2.2
34
- Requires-Dist: requests<3.0,>=2.33.0
35
32
  Requires-Dist: sqlalchemy<3.0,>=2.0
36
33
  Requires-Dist: sse-starlette<4.0,>=2.1
37
34
  Requires-Dist: uvicorn<0.46,>=0.29
@@ -112,7 +112,6 @@ src/codex_a2a/jsonrpc/thread_lifecycle_control.py
112
112
  src/codex_a2a/jsonrpc/thread_lifecycle_params.py
113
113
  src/codex_a2a/jsonrpc/turn_control.py
114
114
  src/codex_a2a/jsonrpc/turn_control_params.py
115
- src/codex_a2a/parts/text.py
116
115
  src/codex_a2a/profile/__init__.py
117
116
  src/codex_a2a/profile/runtime.py
118
117
  src/codex_a2a/server/__init__.py
@@ -198,8 +197,6 @@ tests/package/test_publish_github_release_script.py
198
197
  tests/package/test_release_distribution_contract.py
199
198
  tests/package/test_typing_contract.py
200
199
  tests/package/test_version.py
201
- tests/parts/__init__.py
202
- tests/parts/test_text.py
203
200
  tests/profile/__init__.py
204
201
  tests/profile/test_profile.py
205
202
  tests/scripts/__init__.py
@@ -3,11 +3,8 @@ aiosqlite<1.0,>=0.20
3
3
  fastapi<0.137,>=0.121
4
4
  httpx<0.29,>=0.28.1
5
5
  protobuf<7.0,>=6.33.5
6
- pyasn1<1.0,>=0.6.3
7
- python-dotenv<2.0,>=1.2.2
8
6
  pydantic<3.0,>=2.6
9
7
  pydantic-settings<3.0,>=2.2
10
- requests<3.0,>=2.33.0
11
8
  sqlalchemy<3.0,>=2.0
12
9
  sse-starlette<4.0,>=2.1
13
10
  uvicorn<0.46,>=0.29