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.
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/PKG-INFO +1 -4
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/pyproject.toml +0 -3
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/payload_mapping.py +13 -2
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/task_store.py +11 -83
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a.egg-info/PKG-INFO +1 -4
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a.egg-info/SOURCES.txt +0 -3
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a.egg-info/requires.txt +0 -3
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/uv.lock +134 -130
- codex_a2a-1.1.2/src/codex_a2a/parts/text.py +0 -15
- codex_a2a-1.1.2/tests/parts/test_text.py +0 -41
- codex_a2a-1.1.2/tests/upstream/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/.github/dependabot.yml +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/.github/workflows/ci.yml +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/.github/workflows/dependency-health.yml +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/.github/workflows/publish.yml +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/.gitignore +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/.pre-commit-config.yaml +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/.secrets.baseline +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/AGENTS.md +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/CONTRIBUTING.md +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/LICENSE +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/README.md +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/SECURITY.md +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/docs/a2a-extension-baseline.md +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/docs/architecture.md +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/docs/compatibility.md +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/docs/conformance-triage.md +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/docs/conformance.md +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/docs/extension-specifications.md +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/docs/guide.md +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/docs/maintainer-architecture.md +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/mypy.ini +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/README.md +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/audit_low_call_sites.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/check_dead_code.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/conformance.sh +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/dependency_health.sh +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/health_common.sh +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/publish_github_release.sh +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/smoke_test_built_cli.sh +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/sync_codex_docs.sh +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/validate_baseline.sh +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/scripts/validate_runtime_matrix.sh +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/setup.cfg +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/a2a_proto.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/auth.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/cli.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/agent_card.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/auth.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/client.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/config.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/errors.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/extension_negotiation.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/manager.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/payload_text.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/client/request_context.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/config.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/contracts/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/contracts/extension_registry.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/contracts/extension_specs.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/contracts/extensions.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/contracts/runtime_output.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/discovery_runtime.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/exec_runtime.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/executor.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/output_mapping.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/request_metadata.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/request_overrides.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/response_emitter.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/review_runtime.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/session_runtime.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/stream_chunks.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/stream_interrupts.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/stream_processor.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/stream_state.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/streaming.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/thread_lifecycle_runtime.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/tool_call_payloads.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/execution/watch_events.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/input_mapping.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/application.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/discovery_control.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/discovery_params.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/discovery_payload_mapping.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/discovery_query.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/dispatch.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/errors.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/exec_control.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/exec_control_params.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/hooks.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/interrupt_lifecycle.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/interrupt_params.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/interrupt_recovery.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/interrupt_recovery_params.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/interrupts.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/owner_guard.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/params.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/params_common.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/query_params.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/request_models.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/review_control.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/review_control_params.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/session_query.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/thread_lifecycle_control.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/thread_lifecycle_params.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/turn_control.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/jsonrpc/turn_control_params.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/logging_context.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/media_modes.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/metrics.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/payload_helpers.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/profile/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/profile/runtime.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/protocol_versions.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/py.typed +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/agent_card.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/application.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/call_context.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/database.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/http_middlewares.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/migrations.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/openapi.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/openapi_contract_fragments.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/output_negotiation.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/push_config_store.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/request_handler.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/runtime_state.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/server/runtime_state_schema.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/client.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/conversation_facade.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/discovery_payloads.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/interrupt_bridge.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/interrupts.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/models.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/notification_mapping.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/request_mapping.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/startup.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/stream_bridge.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a/upstream/transport.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a.egg-info/dependency_links.txt +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a.egg-info/entry_points.txt +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/src/codex_a2a.egg-info/top_level.txt +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/client/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/client/test_agent_card.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/client/test_cli.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/client/test_client_flow.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/client/test_client_manager.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/client/test_errors.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/client/test_lifecycle.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/client/test_payload_text.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/client/test_request_context.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/config/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/config/test_settings.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/contracts/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/contracts/test_extension_contract_consistency.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/contracts/test_extension_registry.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_agent_errors.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_cancellation.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_codex_agent_session_binding.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_directory_validation.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_discovery_exec_runtime.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_metrics.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_request_metadata.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_review_runtime.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_session_ownership.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_session_persistence.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_session_runtime.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_stream_chunks.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_stream_interrupts.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_streaming_output_contract.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_thread_lifecycle_runtime.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/execution/test_tool_call_payloads.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/fixtures/codex_app_server/command_execution_output_delta.json +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/fixtures/codex_app_server/file_change_output_delta.json +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_codex_discovery_extension.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_codex_exec_extension.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_codex_session_extension.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_codex_thread_lifecycle_extension.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_codex_turn_review_extension.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_dispatch.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_guard_hooks.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_interrupt_lifecycle.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_interrupt_params.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_interrupt_protocol_handlers.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_jsonrpc_models.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/jsonrpc/test_protocol_payload_mapping.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/package/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/package/test_logging.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/package/test_publish_github_release_script.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/package/test_release_distribution_contract.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/package/test_typing_contract.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/package/test_version.py +0 -0
- {codex_a2a-1.1.2/tests/parts → codex_a2a-1.1.3/tests/profile}/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/profile/test_profile.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/scripts/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/scripts/test_audit_low_call_sites.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/scripts/test_script_health_contract.py +0 -0
- {codex_a2a-1.1.2/tests/profile → codex_a2a-1.1.3/tests/server}/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_agent_card.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_auth.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_call_context_builder.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_cli.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_database.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_database_app_persistence.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_migrations.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_output_negotiation.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_push_config_store.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_request_handler.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_runtime_state.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_task_store.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/server/test_transport_contract.py +0 -0
- {codex_a2a-1.1.2/tests/server → codex_a2a-1.1.3/tests/support}/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/support/context.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/support/dummy_clients.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/support/fixtures.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/support/http_auth.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/support/jsonrpc_errors.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/support/settings.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/test_a2a_proto.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/test_input_mapping.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/test_protocol_versions.py +0 -0
- {codex_a2a-1.1.2/tests/support → codex_a2a-1.1.3/tests/upstream}/__init__.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/upstream/test_codex_client_params.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/upstream/test_interrupt_bridge.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/upstream/test_interrupt_persistence.py +0 -0
- {codex_a2a-1.1.2 → codex_a2a-1.1.3}/tests/upstream/test_modular_upstream_components.py +0 -0
- {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.
|
|
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 =
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|