openhands-sdk 1.58.1__tar.gz → 1.58.2__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 (328) hide show
  1. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/PKG-INFO +1 -1
  2. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/agent/acp_agent.py +51 -5
  3. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands_sdk.egg-info/PKG-INFO +1 -1
  4. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/pyproject.toml +1 -1
  5. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/__init__.py +0 -0
  6. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/agent/__init__.py +0 -0
  7. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/agent/acp_contracts.py +0 -0
  8. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/agent/acp_file_credentials.py +0 -0
  9. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/agent/acp_model_discovery.py +0 -0
  10. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/agent/acp_models.py +0 -0
  11. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/agent/acp_tracing.py +0 -0
  12. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/agent/agent.py +0 -0
  13. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/agent/base.py +0 -0
  14. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/agent/critic_mixin.py +0 -0
  15. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/agent/parallel_executor.py +0 -0
  16. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/agent/response_dispatch.py +0 -0
  17. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/agent/stream_context.py +0 -0
  18. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/agent/utils.py +0 -0
  19. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/automation/__init__.py +0 -0
  20. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/banner.py +0 -0
  21. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/__init__.py +0 -0
  22. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/agent_context.py +0 -0
  23. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/condenser/__init__.py +0 -0
  24. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/condenser/base.py +0 -0
  25. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/condenser/llm_summarizing_condenser.py +0 -0
  26. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/condenser/no_op_condenser.py +0 -0
  27. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/condenser/pipeline_condenser.py +0 -0
  28. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/condenser/prompts/summarizing_events.j2 +0 -0
  29. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/condenser/prompts/summarizing_system.j2 +0 -0
  30. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/condenser/utils.py +0 -0
  31. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/memory.py +0 -0
  32. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/prompts/__init__.py +0 -0
  33. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/prompts/presets.py +0 -0
  34. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/prompts/prompt.py +0 -0
  35. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/prompts/registry.py +0 -0
  36. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/prompts/section.py +0 -0
  37. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/prompts/sections/__init__.py +0 -0
  38. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/prompts/sections/dynamic.py +0 -0
  39. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/prompts/sections/planning.py +0 -0
  40. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/prompts/sections/static.py +0 -0
  41. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/prompts/templates/ask_agent_template.j2 +0 -0
  42. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/prompts/templates/skill_knowledge_info.j2 +0 -0
  43. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/view/__init__.py +0 -0
  44. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/view/manipulation_indices.py +0 -0
  45. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/view/properties/__init__.py +0 -0
  46. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/view/properties/base.py +0 -0
  47. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/view/properties/batch_atomicity.py +0 -0
  48. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/view/properties/observation_uniqueness.py +0 -0
  49. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/view/properties/tool_call_matching.py +0 -0
  50. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/view/properties/tool_loop_atomicity.py +0 -0
  51. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/context/view/view.py +0 -0
  52. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/__init__.py +0 -0
  53. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/base.py +0 -0
  54. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/cancellation.py +0 -0
  55. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/conversation.py +0 -0
  56. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/conversation_stats.py +0 -0
  57. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/event_store.py +0 -0
  58. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/events_list_base.py +0 -0
  59. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/exceptions.py +0 -0
  60. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/fifo_lock.py +0 -0
  61. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/goal/__init__.py +0 -0
  62. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/goal/controller.py +0 -0
  63. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/goal/judge.py +0 -0
  64. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/goal/prompts.py +0 -0
  65. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/goal/runner.py +0 -0
  66. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/impl/__init__.py +0 -0
  67. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/impl/local_conversation.py +0 -0
  68. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/impl/remote_conversation.py +0 -0
  69. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/message_request.py +0 -0
  70. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/persistence_const.py +0 -0
  71. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/request.py +0 -0
  72. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/resource_lock_manager.py +0 -0
  73. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/response_utils.py +0 -0
  74. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/secret_registry.py +0 -0
  75. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/state.py +0 -0
  76. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/stuck_detector.py +0 -0
  77. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/title_utils.py +0 -0
  78. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/types.py +0 -0
  79. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/visualizer/__init__.py +0 -0
  80. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/visualizer/base.py +0 -0
  81. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/conversation/visualizer/default.py +0 -0
  82. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/credential.py +0 -0
  83. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/critic/__init__.py +0 -0
  84. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/critic/base.py +0 -0
  85. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/critic/impl/__init__.py +0 -0
  86. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/critic/impl/agent_finished.py +0 -0
  87. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/critic/impl/api/__init__.py +0 -0
  88. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/critic/impl/api/chat_template.py +0 -0
  89. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/critic/impl/api/client.py +0 -0
  90. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/critic/impl/api/critic.py +0 -0
  91. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/critic/impl/api/taxonomy.py +0 -0
  92. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/critic/impl/empty_patch.py +0 -0
  93. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/critic/impl/pass_critic.py +0 -0
  94. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/critic/result.py +0 -0
  95. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/__init__.py +0 -0
  96. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/acp_tool_call.py +0 -0
  97. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/base.py +0 -0
  98. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/condenser.py +0 -0
  99. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/conversation_error.py +0 -0
  100. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/conversation_state.py +0 -0
  101. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/error_classification.py +0 -0
  102. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/hook_execution.py +0 -0
  103. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/llm_completion_log.py +0 -0
  104. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/llm_convertible/__init__.py +0 -0
  105. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/llm_convertible/action.py +0 -0
  106. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/llm_convertible/message.py +0 -0
  107. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/llm_convertible/observation.py +0 -0
  108. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/llm_convertible/reasoning_utils.py +0 -0
  109. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/llm_convertible/system.py +0 -0
  110. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/resume_transcript.py +0 -0
  111. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/security.py +0 -0
  112. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/streaming_delta.py +0 -0
  113. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/token.py +0 -0
  114. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/types.py +0 -0
  115. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/event/user_action.py +0 -0
  116. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/extensions/__init__.py +0 -0
  117. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/extensions/fetch.py +0 -0
  118. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/extensions/installation/__init__.py +0 -0
  119. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/extensions/installation/info.py +0 -0
  120. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/extensions/installation/interface.py +0 -0
  121. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/extensions/installation/manager.py +0 -0
  122. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/extensions/installation/metadata.py +0 -0
  123. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/extensions/installation/utils.py +0 -0
  124. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/git/cached_repo.py +0 -0
  125. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/git/exceptions.py +0 -0
  126. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/git/git_changes.py +0 -0
  127. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/git/git_commits.py +0 -0
  128. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/git/git_diff.py +0 -0
  129. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/git/models.py +0 -0
  130. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/git/utils.py +0 -0
  131. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/hooks/__init__.py +0 -0
  132. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/hooks/config.py +0 -0
  133. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/hooks/conversation_hooks.py +0 -0
  134. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/hooks/executor.py +0 -0
  135. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/hooks/manager.py +0 -0
  136. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/hooks/types.py +0 -0
  137. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/io/__init__.py +0 -0
  138. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/io/base.py +0 -0
  139. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/io/cache.py +0 -0
  140. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/io/local.py +0 -0
  141. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/io/memory.py +0 -0
  142. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/launch/__init__.py +0 -0
  143. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/launch/errors.py +0 -0
  144. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/launch/finalize.py +0 -0
  145. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/launch/preview.py +0 -0
  146. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/launch/resolve.py +0 -0
  147. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/__init__.py +0 -0
  148. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/_message_normalization.py +0 -0
  149. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/_response_stream.py +0 -0
  150. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/_tokenizer.py +0 -0
  151. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/auth/__init__.py +0 -0
  152. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/auth/credentials.py +0 -0
  153. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/auth/openai.py +0 -0
  154. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/call_context.py +0 -0
  155. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/cleanup_profile.py +0 -0
  156. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/exceptions/__init__.py +0 -0
  157. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/exceptions/classifier.py +0 -0
  158. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/exceptions/mapping.py +0 -0
  159. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/exceptions/types.py +0 -0
  160. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/fallback_strategy.py +0 -0
  161. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/llm.py +0 -0
  162. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/llm_profile_store.py +0 -0
  163. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/llm_registry.py +0 -0
  164. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/llm_response.py +0 -0
  165. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/message.py +0 -0
  166. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/meta_profile_store.py +0 -0
  167. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/mixins/fn_call_converter.py +0 -0
  168. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/mixins/fn_call_examples.py +0 -0
  169. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/mixins/non_native_fc.py +0 -0
  170. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/options/__init__.py +0 -0
  171. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/options/chat_options.py +0 -0
  172. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/options/common.py +0 -0
  173. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/options/responses_options.py +0 -0
  174. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/provider_connection_store.py +0 -0
  175. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/router/__init__.py +0 -0
  176. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/router/base.py +0 -0
  177. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/router/impl/multimodal.py +0 -0
  178. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/router/impl/random.py +0 -0
  179. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/streaming.py +0 -0
  180. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/utils/image_inline.py +0 -0
  181. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/utils/image_resize.py +0 -0
  182. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/utils/litellm_provider.py +0 -0
  183. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/utils/metrics.py +0 -0
  184. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/utils/model_features.py +0 -0
  185. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/utils/model_info.py +0 -0
  186. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/utils/model_prompt_spec.py +0 -0
  187. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/utils/openhands_provider.py +0 -0
  188. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/utils/providers/__init__.py +0 -0
  189. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/utils/providers/openrouter.py +0 -0
  190. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/utils/responses_serialization.py +0 -0
  191. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/utils/retry_mixin.py +0 -0
  192. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/utils/runtime_metadata.py +0 -0
  193. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/utils/telemetry.py +0 -0
  194. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/utils/unverified_models.py +0 -0
  195. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/utils/verified_models.py +0 -0
  196. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/llm/utils/vertex_preflight.py +0 -0
  197. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/logger/__init__.py +0 -0
  198. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/logger/_rich_handler.py +0 -0
  199. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/logger/logger.py +0 -0
  200. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/logger/rolling.py +0 -0
  201. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/marketplace/__init__.py +0 -0
  202. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/marketplace/registration.py +0 -0
  203. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/marketplace/registry.py +0 -0
  204. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/marketplace/types.py +0 -0
  205. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/mcp/__init__.py +0 -0
  206. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/mcp/client.py +0 -0
  207. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/mcp/config.py +0 -0
  208. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/mcp/definition.py +0 -0
  209. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/mcp/exceptions.py +0 -0
  210. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/mcp/oauth.py +0 -0
  211. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/mcp/tool.py +0 -0
  212. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/mcp/utils.py +0 -0
  213. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/observability/__init__.py +0 -0
  214. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/observability/laminar.py +0 -0
  215. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/observability/utils.py +0 -0
  216. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/plugin/__init__.py +0 -0
  217. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/plugin/discovery.py +0 -0
  218. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/plugin/fetch.py +0 -0
  219. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/plugin/format/__init__.py +0 -0
  220. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/plugin/format/agent_plugins.py +0 -0
  221. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/plugin/format/agent_plugins_mcp.py +0 -0
  222. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/plugin/format/base.py +0 -0
  223. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/plugin/format/claude_code.py +0 -0
  224. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/plugin/format/schemas/mcp-1.0.0.schema.json +0 -0
  225. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/plugin/format/schemas/plugin-1.0.0.schema.json +0 -0
  226. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/plugin/installed.py +0 -0
  227. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/plugin/loader.py +0 -0
  228. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/plugin/paths.py +0 -0
  229. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/plugin/plugin.py +0 -0
  230. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/plugin/source.py +0 -0
  231. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/plugin/strict_fetch.py +0 -0
  232. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/plugin/types.py +0 -0
  233. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/profiles/__init__.py +0 -0
  234. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/profiles/agent_profile.py +0 -0
  235. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/profiles/agent_profile_store.py +0 -0
  236. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/profiles/profile_refs.py +0 -0
  237. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/profiles/resolver.py +0 -0
  238. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/profiles/seed.py +0 -0
  239. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/py.typed +0 -0
  240. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/secret/__init__.py +0 -0
  241. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/secret/secrets.py +0 -0
  242. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/security/__init__.py +0 -0
  243. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/security/_shell_ast.py +0 -0
  244. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/security/analyzer.py +0 -0
  245. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/security/confirmation_policy.py +0 -0
  246. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/security/defense_in_depth/__init__.py +0 -0
  247. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/security/defense_in_depth/pattern.py +0 -0
  248. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/security/defense_in_depth/policy_rails.py +0 -0
  249. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/security/defense_in_depth/shell_semantics.py +0 -0
  250. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/security/defense_in_depth/utils.py +0 -0
  251. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/security/ensemble.py +0 -0
  252. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/security/grayswan/__init__.py +0 -0
  253. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/security/grayswan/analyzer.py +0 -0
  254. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/security/grayswan/utils.py +0 -0
  255. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/security/llm_analyzer.py +0 -0
  256. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/security/risk.py +0 -0
  257. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/security/shell_parser.py +0 -0
  258. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/security/toolshield_helpers.py +0 -0
  259. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/security/toolshield_llm_analyzer.py +0 -0
  260. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/settings/__init__.py +0 -0
  261. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/settings/acp_install_catalog.py +0 -0
  262. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/settings/acp_providers.py +0 -0
  263. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/settings/api_models.py +0 -0
  264. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/settings/metadata.py +0 -0
  265. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/settings/model.py +0 -0
  266. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/skills/__init__.py +0 -0
  267. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/skills/exceptions.py +0 -0
  268. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/skills/execute.py +0 -0
  269. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/skills/fetch.py +0 -0
  270. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/skills/installed.py +0 -0
  271. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/skills/skill.py +0 -0
  272. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/skills/trigger.py +0 -0
  273. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/skills/types.py +0 -0
  274. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/skills/utils.py +0 -0
  275. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/subagent/__init__.py +0 -0
  276. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/subagent/load.py +0 -0
  277. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/subagent/registry.py +0 -0
  278. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/subagent/schema.py +0 -0
  279. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/subagent/scope.py +0 -0
  280. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/testing/__init__.py +0 -0
  281. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/testing/test_llm.py +0 -0
  282. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/tool/__init__.py +0 -0
  283. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/tool/builtins/__init__.py +0 -0
  284. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/tool/builtins/classify_and_switch_llm.py +0 -0
  285. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/tool/builtins/finish.py +0 -0
  286. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/tool/builtins/invoke_skill.py +0 -0
  287. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/tool/builtins/switch_llm.py +0 -0
  288. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/tool/builtins/think.py +0 -0
  289. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/tool/builtins/vision_inspect.py +0 -0
  290. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/tool/client_tool.py +0 -0
  291. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/tool/defaults.py +0 -0
  292. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/tool/registry.py +0 -0
  293. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/tool/schema.py +0 -0
  294. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/tool/spec.py +0 -0
  295. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/tool/tool.py +0 -0
  296. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/utils/__init__.py +0 -0
  297. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/utils/async_executor.py +0 -0
  298. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/utils/async_utils.py +0 -0
  299. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/utils/cipher.py +0 -0
  300. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/utils/command.py +0 -0
  301. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/utils/datetime.py +0 -0
  302. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/utils/deprecation.py +0 -0
  303. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/utils/files.py +0 -0
  304. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/utils/github.py +0 -0
  305. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/utils/json.py +0 -0
  306. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/utils/masking.py +0 -0
  307. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/utils/models.py +0 -0
  308. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/utils/paging.py +0 -0
  309. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/utils/path.py +0 -0
  310. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/utils/pydantic_secrets.py +0 -0
  311. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/utils/redact.py +0 -0
  312. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/utils/truncate.py +0 -0
  313. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/utils/visualize.py +0 -0
  314. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/workspace/__init__.py +0 -0
  315. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/workspace/base.py +0 -0
  316. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/workspace/local.py +0 -0
  317. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/workspace/models.py +0 -0
  318. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/workspace/remote/__init__.py +0 -0
  319. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/workspace/remote/async_remote_workspace.py +0 -0
  320. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/workspace/remote/base.py +0 -0
  321. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/workspace/remote/remote_workspace_mixin.py +0 -0
  322. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/workspace/repo.py +0 -0
  323. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands/sdk/workspace/workspace.py +0 -0
  324. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands_sdk.egg-info/SOURCES.txt +0 -0
  325. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands_sdk.egg-info/dependency_links.txt +0 -0
  326. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands_sdk.egg-info/requires.txt +0 -0
  327. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/openhands_sdk.egg-info/top_level.txt +0 -0
  328. {openhands_sdk-1.58.1 → openhands_sdk-1.58.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openhands-sdk
3
- Version: 1.58.1
3
+ Version: 1.58.2
4
4
  Summary: OpenHands SDK - Core functionality for building AI agents
5
5
  Project-URL: Source, https://github.com/OpenHands/software-agent-sdk
6
6
  Project-URL: Homepage, https://github.com/OpenHands/software-agent-sdk
@@ -126,7 +126,7 @@ from openhands.sdk.event import (
126
126
  from openhands.sdk.event.conversation_error import ConversationErrorEvent
127
127
  from openhands.sdk.llm import LLM, ImageContent, Message, MessageToolCall, TextContent
128
128
  from openhands.sdk.logger import get_logger
129
- from openhands.sdk.mcp.config import MCPServer
129
+ from openhands.sdk.mcp.config import MCPOAuthAuthCredential, MCPServer
130
130
  from openhands.sdk.observability.laminar import maybe_init_laminar, observe
131
131
  from openhands.sdk.settings.acp_providers import (
132
132
  ACP_PROVIDERS,
@@ -672,20 +672,65 @@ def _extract_session_models(
672
672
  _ACPMcpServer = HttpMcpServer | SseMcpServer | McpServerStdio | AcpMcpServer
673
673
 
674
674
 
675
+ def _oauth_bearer_header(auth: MCPOAuthAuthCredential, name: str) -> dict[str, str]:
676
+ """Forward a stored OAuth2 access token as an ``Authorization`` header.
677
+
678
+ The ACP subprocess owns its own MCP transport and has no access to the
679
+ FastMCP token store the native path uses, so the token persisted in the
680
+ connection's ``auth.state`` is the only credential available here. Without
681
+ this the server is forwarded as a bare URL and the ACP agent reports it is
682
+ not logged in (``codex mcp login ...``).
683
+
684
+ A missing or expired token still forwards what exists: a 401 from the
685
+ server is more actionable than an unauthenticated URL. Both cases are
686
+ logged so the drop is not silent.
687
+ """
688
+ state = auth.state
689
+ token = state.tokens.access_token if state is not None and state.tokens else None
690
+ if token is None:
691
+ logger.warning(
692
+ "ACP MCP server %r has an OAuth2 connection with no stored access "
693
+ "token; forwarding it unauthenticated",
694
+ name,
695
+ )
696
+ return {}
697
+ if (
698
+ state is not None
699
+ and state.token_expires_at is not None
700
+ and state.token_expires_at <= time.time()
701
+ ):
702
+ logger.warning(
703
+ "ACP MCP server %r has an expired OAuth2 access token; the ACP path "
704
+ "cannot refresh it, forwarding it as-is",
705
+ name,
706
+ )
707
+ return {"Authorization": f"Bearer {token.get_secret_value()}"}
708
+
709
+
675
710
  def _remote_mcp_headers(server: MCPServer, name: str) -> list[HttpHeader]:
676
- """Convert remote MCP headers/auth into ACP's header-only representation."""
711
+ """Convert remote MCP headers/auth into ACP's header-only representation.
712
+
713
+ Header-compatible auth (api key / bearer / basic / explicit headers)
714
+ converts directly. OAuth2 does not -- ``to_http_headers()`` returns ``None``
715
+ because the native path materializes tokens through FastMCP's token store --
716
+ so its stored access token is forwarded explicitly instead.
717
+ """
677
718
  headers = [
678
719
  HttpHeader(name=name, value=value.get_secret_value())
679
720
  for name, value in (server.headers or {}).items()
680
721
  ]
681
722
 
682
- auth_headers = server.auth.to_http_headers() if server.auth is not None else {}
723
+ auth = server.auth
724
+ if isinstance(auth, MCPOAuthAuthCredential):
725
+ auth_headers = _oauth_bearer_header(auth, name)
726
+ else:
727
+ auth_headers = auth.to_http_headers() if auth is not None else {}
683
728
  if auth_headers is None:
684
729
  logger.warning(
685
730
  "ACP MCP server %r uses unsupported remote MCP auth type %r; "
686
731
  "only header-compatible auth can be forwarded",
687
732
  name,
688
- type(server.auth).__name__,
733
+ type(auth).__name__,
689
734
  )
690
735
  return headers
691
736
  headers.extend(
@@ -724,7 +769,8 @@ def _mcp_config_to_acp_servers(
724
769
  with a warning rather than failing init — one misconfigured server should
725
770
  not sink the whole conversation. ``env`` / ``headers`` maps are converted
726
771
  to the protocol's ``[{name, value}]`` list form; header-compatible auth
727
- credentials are also converted to headers.
772
+ credentials, and the stored access token of an OAuth2 connection, are also
773
+ converted to headers.
728
774
  """
729
775
  caps = normalize_mcp_capabilities(mcp_capabilities)
730
776
  http_ok = caps.http
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openhands-sdk
3
- Version: 1.58.1
3
+ Version: 1.58.2
4
4
  Summary: OpenHands SDK - Core functionality for building AI agents
5
5
  Project-URL: Source, https://github.com/OpenHands/software-agent-sdk
6
6
  Project-URL: Homepage, https://github.com/OpenHands/software-agent-sdk
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "openhands-sdk"
3
- version = "1.58.1"
3
+ version = "1.58.2"
4
4
  description = "OpenHands SDK - Core functionality for building AI agents"
5
5
 
6
6
  requires-python = ">=3.12"