opencode-a2a 0.5.1__tar.gz → 0.6.0__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 (158) hide show
  1. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/.gitignore +1 -0
  2. opencode_a2a-0.6.0/CODE_OF_CONDUCT.md +29 -0
  3. {opencode_a2a-0.5.1/src/opencode_a2a.egg-info → opencode_a2a-0.6.0}/PKG-INFO +6 -1
  4. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/README.md +5 -0
  5. opencode_a2a-0.6.0/SUPPORT.md +26 -0
  6. opencode_a2a-0.6.0/docs/extension-specifications.md +122 -0
  7. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/docs/guide.md +387 -28
  8. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/client/client.py +78 -3
  9. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/client/config.py +81 -0
  10. opencode_a2a-0.6.0/src/opencode_a2a/client/polling.py +68 -0
  11. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/config.py +11 -0
  12. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/contracts/extensions.py +549 -47
  13. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/execution/executor.py +93 -24
  14. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/execution/request_context.py +8 -0
  15. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/execution/session_manager.py +12 -2
  16. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/execution/stream_runtime.py +6 -1
  17. opencode_a2a-0.6.0/src/opencode_a2a/invocation.py +30 -0
  18. opencode_a2a-0.6.0/src/opencode_a2a/jsonrpc/application.py +238 -0
  19. opencode_a2a-0.6.0/src/opencode_a2a/jsonrpc/dispatch.py +211 -0
  20. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/jsonrpc/error_responses.py +23 -0
  21. opencode_a2a-0.6.0/src/opencode_a2a/jsonrpc/handlers/__init__.py +1 -0
  22. opencode_a2a-0.6.0/src/opencode_a2a/jsonrpc/handlers/common.py +351 -0
  23. opencode_a2a-0.6.0/src/opencode_a2a/jsonrpc/handlers/interrupt_callbacks.py +223 -0
  24. opencode_a2a-0.6.0/src/opencode_a2a/jsonrpc/handlers/interrupt_queries.py +64 -0
  25. opencode_a2a-0.6.0/src/opencode_a2a/jsonrpc/handlers/provider_discovery.py +154 -0
  26. opencode_a2a-0.6.0/src/opencode_a2a/jsonrpc/handlers/session_control.py +272 -0
  27. opencode_a2a-0.6.0/src/opencode_a2a/jsonrpc/handlers/session_lifecycle.py +572 -0
  28. opencode_a2a-0.6.0/src/opencode_a2a/jsonrpc/handlers/session_queries.py +176 -0
  29. opencode_a2a-0.6.0/src/opencode_a2a/jsonrpc/handlers/workspace_control.py +239 -0
  30. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/jsonrpc/methods.py +141 -5
  31. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/jsonrpc/params.py +132 -2
  32. opencode_a2a-0.6.0/src/opencode_a2a/opencode_upstream_client.py +893 -0
  33. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/parts/mapping.py +1 -9
  34. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/profile/runtime.py +22 -0
  35. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/runtime_state.py +2 -0
  36. opencode_a2a-0.6.0/src/opencode_a2a/server/agent_card.py +568 -0
  37. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/server/application.py +116 -3
  38. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/server/openapi.py +254 -4
  39. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/server/request_parsing.py +11 -3
  40. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/server/state_store.py +96 -1
  41. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0/src/opencode_a2a.egg-info}/PKG-INFO +6 -1
  42. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a.egg-info/SOURCES.txt +20 -0
  43. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/client/test_client_config.py +20 -0
  44. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/client/test_client_facade.py +126 -1
  45. opencode_a2a-0.6.0/tests/client/test_polling.py +33 -0
  46. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/config/test_settings.py +6 -0
  47. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/contracts/test_extension_contract_consistency.py +80 -3
  48. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/execution/test_agent_errors.py +98 -1
  49. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/execution/test_metrics.py +2 -1
  50. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/execution/test_opencode_agent_session_binding.py +147 -2
  51. opencode_a2a-0.6.0/tests/execution/test_session_lock_lifecycle.py +33 -0
  52. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/execution/test_streaming_output_contract_interrupts.py +13 -0
  53. opencode_a2a-0.6.0/tests/jsonrpc/test_dispatch_registry.py +126 -0
  54. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/jsonrpc/test_error_responses.py +23 -1
  55. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/jsonrpc/test_jsonrpc_params.py +55 -0
  56. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/jsonrpc/test_opencode_session_extension_commands.py +34 -0
  57. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/jsonrpc/test_opencode_session_extension_interrupts.py +81 -6
  58. opencode_a2a-0.6.0/tests/jsonrpc/test_opencode_session_extension_lifecycle.py +373 -0
  59. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/jsonrpc/test_opencode_session_extension_prompt_async.py +83 -1
  60. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/jsonrpc/test_opencode_session_extension_queries.py +388 -1
  61. opencode_a2a-0.6.0/tests/jsonrpc/test_opencode_workspace_control_extension.py +199 -0
  62. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/profile/test_profile_runtime.py +6 -0
  63. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/server/test_a2a_client_manager.py +7 -0
  64. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/server/test_agent_card.py +320 -16
  65. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/server/test_app_behaviors.py +30 -5
  66. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/server/test_database_app_persistence.py +42 -1
  67. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/server/test_state_store.py +63 -0
  68. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/server/test_transport_contract.py +98 -0
  69. opencode_a2a-0.6.0/tests/support/helpers.py +832 -0
  70. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/support/streaming_output.py +12 -1
  71. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/upstream/test_opencode_upstream_client_params.py +327 -3
  72. opencode_a2a-0.5.1/src/opencode_a2a/jsonrpc/application.py +0 -924
  73. opencode_a2a-0.5.1/src/opencode_a2a/opencode_upstream_client.py +0 -497
  74. opencode_a2a-0.5.1/src/opencode_a2a/server/agent_card.py +0 -288
  75. opencode_a2a-0.5.1/tests/support/helpers.py +0 -397
  76. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/.github/workflows/ci.yml +0 -0
  77. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/.github/workflows/dependency-health.yml +0 -0
  78. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/.github/workflows/publish.yml +0 -0
  79. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/.pre-commit-config.yaml +0 -0
  80. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/.secrets.baseline +0 -0
  81. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/AGENTS.md +0 -0
  82. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/CONTRIBUTING.md +0 -0
  83. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/LICENSE +0 -0
  84. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/SECURITY.md +0 -0
  85. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/pyproject.toml +0 -0
  86. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/scripts/README.md +0 -0
  87. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/scripts/check_coverage.py +0 -0
  88. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/scripts/dependency_health.sh +0 -0
  89. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/scripts/doctor.sh +0 -0
  90. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/scripts/health_common.sh +0 -0
  91. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/scripts/lint.sh +0 -0
  92. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/scripts/smoke_test_built_cli.sh +0 -0
  93. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/setup.cfg +0 -0
  94. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/__init__.py +0 -0
  95. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/cli.py +0 -0
  96. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/client/__init__.py +0 -0
  97. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/client/agent_card.py +0 -0
  98. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/client/auth.py +0 -0
  99. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/client/error_mapping.py +0 -0
  100. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/client/errors.py +0 -0
  101. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/client/payload_text.py +0 -0
  102. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/client/request_context.py +0 -0
  103. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/contracts/__init__.py +0 -0
  104. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/execution/__init__.py +0 -0
  105. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/execution/event_helpers.py +0 -0
  106. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/execution/stream_events.py +0 -0
  107. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/execution/stream_state.py +0 -0
  108. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/execution/tool_error_mapping.py +0 -0
  109. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/execution/upstream_error_translator.py +0 -0
  110. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/jsonrpc/__init__.py +0 -0
  111. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/parts/__init__.py +0 -0
  112. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/parts/text.py +0 -0
  113. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/profile/__init__.py +0 -0
  114. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/sandbox_policy.py +0 -0
  115. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/server/__init__.py +0 -0
  116. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/server/task_store.py +0 -0
  117. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a/upstream_taxonomy.py +0 -0
  118. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a.egg-info/dependency_links.txt +0 -0
  119. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a.egg-info/entry_points.txt +0 -0
  120. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a.egg-info/requires.txt +0 -0
  121. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/src/opencode_a2a.egg-info/top_level.txt +0 -0
  122. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/__init__.py +0 -0
  123. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/client/__init__.py +0 -0
  124. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/client/test_agent_card.py +0 -0
  125. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/client/test_error_mapping.py +0 -0
  126. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/client/test_payload_text.py +0 -0
  127. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/client/test_request_context.py +0 -0
  128. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/config/__init__.py +0 -0
  129. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/conftest.py +0 -0
  130. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/contracts/__init__.py +0 -0
  131. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/execution/__init__.py +0 -0
  132. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/execution/test_agent_helpers.py +0 -0
  133. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/execution/test_cancellation.py +0 -0
  134. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/execution/test_directory_validation.py +0 -0
  135. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/execution/test_multipart_input.py +0 -0
  136. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/execution/test_session_ownership.py +0 -0
  137. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/execution/test_streaming_output_contract_blocks.py +0 -0
  138. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/execution/test_streaming_output_contract_core.py +0 -0
  139. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/execution/test_streaming_output_contract_logging.py +0 -0
  140. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/jsonrpc/__init__.py +0 -0
  141. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/jsonrpc/test_jsonrpc_methods.py +0 -0
  142. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/jsonrpc/test_jsonrpc_unsupported_method.py +0 -0
  143. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/package/__init__.py +0 -0
  144. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/package/test_version.py +0 -0
  145. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/parts/__init__.py +0 -0
  146. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/parts/test_parts_text.py +0 -0
  147. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/profile/__init__.py +0 -0
  148. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/scripts/__init__.py +0 -0
  149. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/scripts/test_script_health_contract.py +0 -0
  150. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/server/__init__.py +0 -0
  151. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/server/test_call_context_builder.py +0 -0
  152. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/server/test_cancel_contract.py +0 -0
  153. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/server/test_cli.py +0 -0
  154. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/server/test_task_store_factory.py +0 -0
  155. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/support/__init__.py +0 -0
  156. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/support/session_extensions.py +0 -0
  157. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/tests/upstream/__init__.py +0 -0
  158. {opencode_a2a-0.5.1 → opencode_a2a-0.6.0}/uv.lock +0 -0
@@ -224,3 +224,4 @@ temp_*.*
224
224
  # Local OpenCode OpenAPI snapshots (high-churn, local reference only)
225
225
  docs/operations/opencode/
226
226
  .swival/
227
+ *.db
@@ -0,0 +1,29 @@
1
+ # Code of Conduct
2
+
3
+ This project expects respectful, technically focused collaboration.
4
+
5
+ ## Expected Behavior
6
+
7
+ - Assume good intent and communicate directly.
8
+ - Keep discussions specific, evidence-based, and relevant to the repository.
9
+ - Use welcoming language in public issues, pull requests, and review comments.
10
+ - Respect maintainers' time by providing reproducible reports and clear context.
11
+
12
+ ## Unacceptable Behavior
13
+
14
+ - Harassment, discrimination, or personal attacks.
15
+ - Doxxing, threats, or sustained hostile behavior.
16
+ - Repeated spam, bad-faith disruption, or intentionally misleading reports.
17
+ - Sharing secrets, tokens, or private data in public threads.
18
+
19
+ ## Reporting
20
+
21
+ For normal collaboration problems, open an issue or discussion with enough
22
+ context to review the situation. For security-sensitive or private concerns,
23
+ follow the disclosure path in [SECURITY.md](SECURITY.md).
24
+
25
+ ## Enforcement
26
+
27
+ Repository maintainers may edit, hide, lock, or remove content that violates
28
+ this policy, and may restrict participation when needed to keep collaboration
29
+ safe and productive.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opencode-a2a
3
- Version: 0.5.1
3
+ Version: 0.6.0
4
4
  Summary: OpenCode A2A runtime
5
5
  Author: liujuanjuan1984@Intelligent-Internet
6
6
  License-Expression: Apache-2.0
@@ -114,6 +114,7 @@ Then start `opencode-a2a` against that upstream:
114
114
  ```bash
115
115
  A2A_BEARER_TOKEN=dev-token \
116
116
  OPENCODE_BASE_URL=http://127.0.0.1:4096 \
117
+ A2A_TASK_STORE_DATABASE_URL=sqlite+aiosqlite:///./opencode-a2a.db \
117
118
  A2A_HOST=127.0.0.1 \
118
119
  A2A_PORT=8000 \
119
120
  A2A_PUBLIC_URL=http://127.0.0.1:8000 \
@@ -132,6 +133,8 @@ curl http://127.0.0.1:8000/.well-known/agent-card.json
132
133
  - A2A HTTP+JSON endpoints such as `/v1/message:send` and
133
134
  `/v1/message:stream`
134
135
  - A2A JSON-RPC support on `POST /`
136
+ - SDK-owned A2A task surfaces such as `GET /v1/tasks`, task push notification
137
+ config routes, and JSON-RPC `agent/getAuthenticatedExtendedCard`
135
138
  - Peering capabilities: can act as a client via `opencode-a2a call`
136
139
  - Autonomous tool execution: supports `a2a_call` tool for outbound agent-to-agent communication
137
140
  - SSE streaming with normalized `text`, `reasoning`, and `tool_call` blocks
@@ -213,6 +216,8 @@ Read before deployment:
213
216
 
214
217
  - [SECURITY.md](SECURITY.md)
215
218
  - [docs/guide.md](docs/guide.md)
219
+ - [SUPPORT.md](SUPPORT.md)
220
+ - [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)
216
221
 
217
222
  ## Further Reading
218
223
 
@@ -73,6 +73,7 @@ Then start `opencode-a2a` against that upstream:
73
73
  ```bash
74
74
  A2A_BEARER_TOKEN=dev-token \
75
75
  OPENCODE_BASE_URL=http://127.0.0.1:4096 \
76
+ A2A_TASK_STORE_DATABASE_URL=sqlite+aiosqlite:///./opencode-a2a.db \
76
77
  A2A_HOST=127.0.0.1 \
77
78
  A2A_PORT=8000 \
78
79
  A2A_PUBLIC_URL=http://127.0.0.1:8000 \
@@ -91,6 +92,8 @@ curl http://127.0.0.1:8000/.well-known/agent-card.json
91
92
  - A2A HTTP+JSON endpoints such as `/v1/message:send` and
92
93
  `/v1/message:stream`
93
94
  - A2A JSON-RPC support on `POST /`
95
+ - SDK-owned A2A task surfaces such as `GET /v1/tasks`, task push notification
96
+ config routes, and JSON-RPC `agent/getAuthenticatedExtendedCard`
94
97
  - Peering capabilities: can act as a client via `opencode-a2a call`
95
98
  - Autonomous tool execution: supports `a2a_call` tool for outbound agent-to-agent communication
96
99
  - SSE streaming with normalized `text`, `reasoning`, and `tool_call` blocks
@@ -172,6 +175,8 @@ Read before deployment:
172
175
 
173
176
  - [SECURITY.md](SECURITY.md)
174
177
  - [docs/guide.md](docs/guide.md)
178
+ - [SUPPORT.md](SUPPORT.md)
179
+ - [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)
175
180
 
176
181
  ## Further Reading
177
182
 
@@ -0,0 +1,26 @@
1
+ # Support
2
+
3
+ ## When To Open An Issue
4
+
5
+ Open a GitHub issue when you can provide:
6
+
7
+ - a clear problem statement
8
+ - the command, request, or configuration involved
9
+ - expected behavior versus actual behavior
10
+ - relevant logs or payload snippets with secrets removed
11
+
12
+ ## Before You Ask
13
+
14
+ - Read [README.md](README.md) for scope and deployment expectations.
15
+ - Read [docs/guide.md](docs/guide.md) for protocol contracts and examples.
16
+ - Read [SECURITY.md](SECURITY.md) before reporting auth, deployment, or secret-related concerns.
17
+
18
+ ## Security Concerns
19
+
20
+ Do not post active secrets, bearer tokens, or sensitive workspace data in a
21
+ public issue. Use the disclosure guidance in [SECURITY.md](SECURITY.md).
22
+
23
+ ## Commercial Or SLA Support
24
+
25
+ This repository does not currently advertise a separate SLA or managed support
26
+ channel. GitHub issues are the default public support path.
@@ -0,0 +1,122 @@
1
+ # Extension Specifications
2
+
3
+ This document is the stable specification surface referenced by the extension
4
+ URIs published in the Agent Card.
5
+ It is intentionally a compact URI/spec index, not the main consumer guide. For
6
+ runtime behavior, request/response examples, and client integration guidance,
7
+ see [`guide.md`](./guide.md).
8
+
9
+ ## SDK Compatibility Note
10
+
11
+ The current A2A prose specification references an extended-card availability
12
+ flag as `AgentCard.capabilities.extendedAgentCard` in some sections.
13
+
14
+ The current official JSON schema and SDK types expose the supported field as
15
+ top-level `supportsAuthenticatedExtendedCard`.
16
+
17
+ `opencode-a2a` follows the shipped JSON schema and SDK surface, so Agent Card
18
+ payloads emitted by this project use `supportsAuthenticatedExtendedCard`.
19
+
20
+ ## Shared Session Binding v1
21
+
22
+ URI:
23
+ `https://github.com/Intelligent-Internet/opencode-a2a/blob/main/docs/extension-specifications.md#shared-session-binding-v1`
24
+
25
+ - Scope: shared A2A request metadata for rebinding to an existing upstream session
26
+ - Public Agent Card: capability declaration plus minimal routing metadata
27
+ - Authenticated extended card: full profile, notes, and detailed contract metadata
28
+ - Runtime field: `metadata.shared.session.id`
29
+
30
+ ## Shared Model Selection v1
31
+
32
+ URI:
33
+ `https://github.com/Intelligent-Internet/opencode-a2a/blob/main/docs/extension-specifications.md#shared-model-selection-v1`
34
+
35
+ - Scope: shared request-scoped model override on the main chat path
36
+ - Public Agent Card: capability declaration plus required metadata fields
37
+ - Authenticated extended card: full profile, notes, and detailed contract metadata
38
+ - Runtime field: `metadata.shared.model`
39
+
40
+ ## Shared Stream Hints v1
41
+
42
+ URI:
43
+ `https://github.com/Intelligent-Internet/opencode-a2a/blob/main/docs/extension-specifications.md#shared-stream-hints-v1`
44
+
45
+ - Scope: shared canonical metadata for block, usage, interrupt, and session hints
46
+ - Public Agent Card: metadata roots plus the minimum discoverability fields for
47
+ block identity, progress status, interrupt lifecycle, session identity, and
48
+ basic token usage
49
+ - Authenticated extended card: full shared stream contract including detailed
50
+ block payload mappings and extended usage metadata
51
+ - Runtime fields: `metadata.shared.stream`, `metadata.shared.usage`,
52
+ `metadata.shared.interrupt`, `metadata.shared.session`
53
+
54
+ ## OpenCode Session Query v1
55
+
56
+ URI:
57
+ `https://github.com/Intelligent-Internet/opencode-a2a/blob/main/docs/extension-specifications.md#opencode-session-query-v1`
58
+
59
+ - Scope: provider-private OpenCode session lifecycle, history, and low-risk control methods
60
+ - Public Agent Card: capability declaration only
61
+ - Authenticated extended card: full method matrix, pagination rules, errors, and context semantics
62
+ - Transport: A2A JSON-RPC extension methods
63
+
64
+ ## OpenCode Provider Discovery v1
65
+
66
+ URI:
67
+ `https://github.com/Intelligent-Internet/opencode-a2a/blob/main/docs/extension-specifications.md#opencode-provider-discovery-v1`
68
+
69
+ - Scope: provider-private provider and model discovery methods
70
+ - Public Agent Card: capability declaration only
71
+ - Authenticated extended card: full method contracts, error surface, and routing metadata
72
+ - Transport: A2A JSON-RPC extension methods
73
+
74
+ ## Shared Interactive Interrupt v1
75
+
76
+ URI:
77
+ `https://github.com/Intelligent-Internet/opencode-a2a/blob/main/docs/extension-specifications.md#shared-interactive-interrupt-v1`
78
+
79
+ - Scope: shared interrupt callback reply methods
80
+ - Public Agent Card: capability declaration, supported interrupt events, and request ID field
81
+ - Authenticated extended card: full callback contract, errors, and routing metadata
82
+ - Transport: A2A JSON-RPC extension methods
83
+
84
+ ## OpenCode Interrupt Recovery v1
85
+
86
+ URI:
87
+ `https://github.com/Intelligent-Internet/opencode-a2a/blob/main/docs/extension-specifications.md#opencode-interrupt-recovery-v1`
88
+
89
+ - Scope: provider-private recovery methods for pending local interrupt bindings
90
+ - Public Agent Card: capability declaration only
91
+ - Authenticated extended card: full method contracts, error surface, and local-registry notes
92
+ - Transport: A2A JSON-RPC extension methods
93
+
94
+ ## OpenCode Workspace Control v1
95
+
96
+ URI:
97
+ `https://github.com/Intelligent-Internet/opencode-a2a/blob/main/docs/extension-specifications.md#opencode-workspace-control-v1`
98
+
99
+ - Scope: provider-private project, workspace, and worktree control-plane methods
100
+ - Public Agent Card: capability declaration only
101
+ - Authenticated extended card: full method contracts, error surface, and routing notes
102
+ - Transport: A2A JSON-RPC extension methods
103
+
104
+ ## A2A Compatibility Profile v1
105
+
106
+ URI:
107
+ `https://github.com/Intelligent-Internet/opencode-a2a/blob/main/docs/extension-specifications.md#a2a-compatibility-profile-v1`
108
+
109
+ - Scope: compatibility profile describing core baselines, extension retention, and service behaviors
110
+ - Public Agent Card: capability declaration only
111
+ - Authenticated extended card: full compatibility profile payload
112
+ - Transport: Agent Card extension params
113
+
114
+ ## A2A Wire Contract v1
115
+
116
+ URI:
117
+ `https://github.com/Intelligent-Internet/opencode-a2a/blob/main/docs/extension-specifications.md#a2a-wire-contract-v1`
118
+
119
+ - Scope: wire-level contract for supported methods, endpoints, and error semantics
120
+ - Public Agent Card: capability declaration only
121
+ - Authenticated extended card: full wire contract payload
122
+ - Transport: Agent Card extension params