openhands-sdk 1.49.2__tar.gz → 1.49.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 (305) hide show
  1. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/PKG-INFO +1 -1
  2. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/agent_context.py +8 -0
  3. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/llm.py +4 -1
  4. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/utils/model_features.py +1 -0
  5. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/utils/verified_models.py +3 -0
  6. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/workspace/remote/base.py +19 -4
  7. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands_sdk.egg-info/PKG-INFO +1 -1
  8. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/pyproject.toml +1 -1
  9. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/__init__.py +0 -0
  10. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/agent/__init__.py +0 -0
  11. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/agent/acp_agent.py +0 -0
  12. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/agent/acp_file_credentials.py +0 -0
  13. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/agent/acp_models.py +0 -0
  14. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/agent/acp_tracing.py +0 -0
  15. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/agent/agent.py +0 -0
  16. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/agent/base.py +0 -0
  17. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/agent/critic_mixin.py +0 -0
  18. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/agent/parallel_executor.py +0 -0
  19. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/agent/response_dispatch.py +0 -0
  20. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/agent/stream_context.py +0 -0
  21. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/agent/utils.py +0 -0
  22. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/banner.py +0 -0
  23. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/__init__.py +0 -0
  24. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/condenser/__init__.py +0 -0
  25. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/condenser/base.py +0 -0
  26. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/condenser/llm_summarizing_condenser.py +0 -0
  27. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/condenser/no_op_condenser.py +0 -0
  28. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/condenser/pipeline_condenser.py +0 -0
  29. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/condenser/prompts/summarizing_prompt.j2 +0 -0
  30. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/condenser/utils.py +0 -0
  31. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/memory.py +0 -0
  32. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/prompts/__init__.py +0 -0
  33. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/prompts/presets.py +0 -0
  34. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/prompts/prompt.py +0 -0
  35. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/prompts/registry.py +0 -0
  36. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/prompts/section.py +0 -0
  37. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/prompts/sections/__init__.py +0 -0
  38. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/prompts/sections/dynamic.py +0 -0
  39. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/prompts/sections/planning.py +0 -0
  40. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/prompts/sections/static.py +0 -0
  41. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/prompts/templates/ask_agent_template.j2 +0 -0
  42. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/prompts/templates/skill_knowledge_info.j2 +0 -0
  43. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/view/__init__.py +0 -0
  44. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/view/manipulation_indices.py +0 -0
  45. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/view/properties/__init__.py +0 -0
  46. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/view/properties/base.py +0 -0
  47. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/view/properties/batch_atomicity.py +0 -0
  48. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/view/properties/observation_uniqueness.py +0 -0
  49. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/view/properties/tool_call_matching.py +0 -0
  50. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/view/properties/tool_loop_atomicity.py +0 -0
  51. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/context/view/view.py +0 -0
  52. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/__init__.py +0 -0
  53. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/base.py +0 -0
  54. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/cancellation.py +0 -0
  55. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/conversation.py +0 -0
  56. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/conversation_stats.py +0 -0
  57. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/event_store.py +0 -0
  58. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/events_list_base.py +0 -0
  59. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/exceptions.py +0 -0
  60. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/fifo_lock.py +0 -0
  61. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/goal/__init__.py +0 -0
  62. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/goal/controller.py +0 -0
  63. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/goal/judge.py +0 -0
  64. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/goal/prompts.py +0 -0
  65. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/goal/runner.py +0 -0
  66. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/impl/__init__.py +0 -0
  67. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/impl/local_conversation.py +0 -0
  68. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/impl/remote_conversation.py +0 -0
  69. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/persistence_const.py +0 -0
  70. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/request.py +0 -0
  71. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/resource_lock_manager.py +0 -0
  72. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/response_utils.py +0 -0
  73. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/secret_registry.py +0 -0
  74. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/state.py +0 -0
  75. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/stuck_detector.py +0 -0
  76. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/title_utils.py +0 -0
  77. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/types.py +0 -0
  78. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/visualizer/__init__.py +0 -0
  79. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/visualizer/base.py +0 -0
  80. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/conversation/visualizer/default.py +0 -0
  81. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/credential.py +0 -0
  82. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/critic/__init__.py +0 -0
  83. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/critic/base.py +0 -0
  84. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/critic/impl/__init__.py +0 -0
  85. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/critic/impl/agent_finished.py +0 -0
  86. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/critic/impl/api/__init__.py +0 -0
  87. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/critic/impl/api/chat_template.py +0 -0
  88. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/critic/impl/api/client.py +0 -0
  89. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/critic/impl/api/critic.py +0 -0
  90. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/critic/impl/api/taxonomy.py +0 -0
  91. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/critic/impl/empty_patch.py +0 -0
  92. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/critic/impl/pass_critic.py +0 -0
  93. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/critic/result.py +0 -0
  94. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/__init__.py +0 -0
  95. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/acp_tool_call.py +0 -0
  96. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/base.py +0 -0
  97. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/condenser.py +0 -0
  98. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/conversation_error.py +0 -0
  99. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/conversation_state.py +0 -0
  100. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/error_classification.py +0 -0
  101. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/hook_execution.py +0 -0
  102. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/llm_completion_log.py +0 -0
  103. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/llm_convertible/__init__.py +0 -0
  104. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/llm_convertible/action.py +0 -0
  105. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/llm_convertible/message.py +0 -0
  106. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/llm_convertible/observation.py +0 -0
  107. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/llm_convertible/reasoning_utils.py +0 -0
  108. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/llm_convertible/system.py +0 -0
  109. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/resume_transcript.py +0 -0
  110. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/streaming_delta.py +0 -0
  111. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/token.py +0 -0
  112. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/types.py +0 -0
  113. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/event/user_action.py +0 -0
  114. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/extensions/__init__.py +0 -0
  115. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/extensions/fetch.py +0 -0
  116. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/extensions/installation/__init__.py +0 -0
  117. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/extensions/installation/info.py +0 -0
  118. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/extensions/installation/interface.py +0 -0
  119. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/extensions/installation/manager.py +0 -0
  120. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/extensions/installation/metadata.py +0 -0
  121. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/extensions/installation/utils.py +0 -0
  122. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/git/cached_repo.py +0 -0
  123. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/git/exceptions.py +0 -0
  124. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/git/git_changes.py +0 -0
  125. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/git/git_commits.py +0 -0
  126. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/git/git_diff.py +0 -0
  127. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/git/models.py +0 -0
  128. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/git/utils.py +0 -0
  129. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/hooks/__init__.py +0 -0
  130. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/hooks/config.py +0 -0
  131. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/hooks/conversation_hooks.py +0 -0
  132. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/hooks/executor.py +0 -0
  133. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/hooks/manager.py +0 -0
  134. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/hooks/types.py +0 -0
  135. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/io/__init__.py +0 -0
  136. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/io/base.py +0 -0
  137. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/io/cache.py +0 -0
  138. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/io/local.py +0 -0
  139. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/io/memory.py +0 -0
  140. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/__init__.py +0 -0
  141. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/auth/__init__.py +0 -0
  142. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/auth/credentials.py +0 -0
  143. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/auth/openai.py +0 -0
  144. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/cleanup_profile.py +0 -0
  145. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/exceptions/__init__.py +0 -0
  146. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/exceptions/classifier.py +0 -0
  147. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/exceptions/mapping.py +0 -0
  148. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/exceptions/types.py +0 -0
  149. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/fallback_strategy.py +0 -0
  150. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/llm_profile_store.py +0 -0
  151. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/llm_registry.py +0 -0
  152. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/llm_response.py +0 -0
  153. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/message.py +0 -0
  154. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/mixins/fn_call_converter.py +0 -0
  155. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/mixins/fn_call_examples.py +0 -0
  156. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/mixins/non_native_fc.py +0 -0
  157. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/options/__init__.py +0 -0
  158. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/options/chat_options.py +0 -0
  159. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/options/common.py +0 -0
  160. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/options/responses_options.py +0 -0
  161. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/provider_connection_store.py +0 -0
  162. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/router/__init__.py +0 -0
  163. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/router/base.py +0 -0
  164. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/router/impl/multimodal.py +0 -0
  165. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/router/impl/random.py +0 -0
  166. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/streaming.py +0 -0
  167. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/utils/image_inline.py +0 -0
  168. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/utils/image_resize.py +0 -0
  169. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/utils/litellm_provider.py +0 -0
  170. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/utils/metrics.py +0 -0
  171. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/utils/model_info.py +0 -0
  172. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/utils/model_prompt_spec.py +0 -0
  173. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/utils/openhands_provider.py +0 -0
  174. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/utils/providers/__init__.py +0 -0
  175. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/utils/providers/openrouter.py +0 -0
  176. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/utils/responses_serialization.py +0 -0
  177. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/utils/retry_mixin.py +0 -0
  178. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/utils/runtime_metadata.py +0 -0
  179. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/utils/telemetry.py +0 -0
  180. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/utils/unverified_models.py +0 -0
  181. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/llm/utils/vertex_preflight.py +0 -0
  182. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/logger/__init__.py +0 -0
  183. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/logger/logger.py +0 -0
  184. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/logger/rolling.py +0 -0
  185. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/marketplace/__init__.py +0 -0
  186. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/marketplace/registration.py +0 -0
  187. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/marketplace/registry.py +0 -0
  188. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/marketplace/types.py +0 -0
  189. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/mcp/__init__.py +0 -0
  190. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/mcp/client.py +0 -0
  191. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/mcp/config.py +0 -0
  192. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/mcp/definition.py +0 -0
  193. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/mcp/exceptions.py +0 -0
  194. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/mcp/tool.py +0 -0
  195. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/mcp/utils.py +0 -0
  196. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/observability/__init__.py +0 -0
  197. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/observability/laminar.py +0 -0
  198. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/observability/utils.py +0 -0
  199. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/plugin/__init__.py +0 -0
  200. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/plugin/discovery.py +0 -0
  201. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/plugin/fetch.py +0 -0
  202. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/plugin/format/__init__.py +0 -0
  203. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/plugin/format/agent_plugins.py +0 -0
  204. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/plugin/format/agent_plugins_mcp.py +0 -0
  205. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/plugin/format/base.py +0 -0
  206. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/plugin/format/claude_code.py +0 -0
  207. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/plugin/format/schemas/mcp-1.0.0.schema.json +0 -0
  208. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/plugin/format/schemas/plugin-1.0.0.schema.json +0 -0
  209. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/plugin/installed.py +0 -0
  210. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/plugin/loader.py +0 -0
  211. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/plugin/plugin.py +0 -0
  212. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/plugin/source.py +0 -0
  213. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/plugin/types.py +0 -0
  214. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/profiles/__init__.py +0 -0
  215. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/profiles/agent_profile.py +0 -0
  216. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/profiles/agent_profile_store.py +0 -0
  217. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/profiles/profile_refs.py +0 -0
  218. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/profiles/resolver.py +0 -0
  219. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/profiles/seed.py +0 -0
  220. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/py.typed +0 -0
  221. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/secret/__init__.py +0 -0
  222. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/secret/secrets.py +0 -0
  223. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/security/__init__.py +0 -0
  224. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/security/_shell_ast.py +0 -0
  225. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/security/analyzer.py +0 -0
  226. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/security/confirmation_policy.py +0 -0
  227. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/security/defense_in_depth/__init__.py +0 -0
  228. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/security/defense_in_depth/pattern.py +0 -0
  229. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/security/defense_in_depth/policy_rails.py +0 -0
  230. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/security/defense_in_depth/shell_semantics.py +0 -0
  231. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/security/defense_in_depth/utils.py +0 -0
  232. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/security/ensemble.py +0 -0
  233. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/security/grayswan/__init__.py +0 -0
  234. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/security/grayswan/analyzer.py +0 -0
  235. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/security/grayswan/utils.py +0 -0
  236. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/security/llm_analyzer.py +0 -0
  237. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/security/risk.py +0 -0
  238. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/security/shell_parser.py +0 -0
  239. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/security/toolshield_helpers.py +0 -0
  240. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/security/toolshield_llm_analyzer.py +0 -0
  241. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/settings/__init__.py +0 -0
  242. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/settings/acp_install_catalog.py +0 -0
  243. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/settings/acp_providers.py +0 -0
  244. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/settings/api_models.py +0 -0
  245. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/settings/metadata.py +0 -0
  246. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/settings/model.py +0 -0
  247. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/skills/__init__.py +0 -0
  248. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/skills/exceptions.py +0 -0
  249. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/skills/execute.py +0 -0
  250. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/skills/fetch.py +0 -0
  251. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/skills/installed.py +0 -0
  252. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/skills/skill.py +0 -0
  253. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/skills/trigger.py +0 -0
  254. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/skills/types.py +0 -0
  255. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/skills/utils.py +0 -0
  256. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/subagent/__init__.py +0 -0
  257. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/subagent/load.py +0 -0
  258. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/subagent/registry.py +0 -0
  259. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/subagent/schema.py +0 -0
  260. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/testing/__init__.py +0 -0
  261. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/testing/test_llm.py +0 -0
  262. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/tool/__init__.py +0 -0
  263. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/tool/builtins/__init__.py +0 -0
  264. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/tool/builtins/finish.py +0 -0
  265. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/tool/builtins/invoke_skill.py +0 -0
  266. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/tool/builtins/switch_llm.py +0 -0
  267. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/tool/builtins/think.py +0 -0
  268. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/tool/builtins/vision_inspect.py +0 -0
  269. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/tool/client_tool.py +0 -0
  270. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/tool/defaults.py +0 -0
  271. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/tool/registry.py +0 -0
  272. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/tool/schema.py +0 -0
  273. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/tool/spec.py +0 -0
  274. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/tool/tool.py +0 -0
  275. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/utils/__init__.py +0 -0
  276. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/utils/async_executor.py +0 -0
  277. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/utils/async_utils.py +0 -0
  278. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/utils/cipher.py +0 -0
  279. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/utils/command.py +0 -0
  280. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/utils/datetime.py +0 -0
  281. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/utils/deprecation.py +0 -0
  282. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/utils/files.py +0 -0
  283. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/utils/github.py +0 -0
  284. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/utils/json.py +0 -0
  285. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/utils/models.py +0 -0
  286. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/utils/paging.py +0 -0
  287. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/utils/path.py +0 -0
  288. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/utils/pydantic_secrets.py +0 -0
  289. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/utils/redact.py +0 -0
  290. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/utils/truncate.py +0 -0
  291. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/utils/visualize.py +0 -0
  292. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/workspace/__init__.py +0 -0
  293. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/workspace/base.py +0 -0
  294. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/workspace/local.py +0 -0
  295. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/workspace/models.py +0 -0
  296. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/workspace/remote/__init__.py +0 -0
  297. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/workspace/remote/async_remote_workspace.py +0 -0
  298. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/workspace/remote/remote_workspace_mixin.py +0 -0
  299. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/workspace/repo.py +0 -0
  300. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands/sdk/workspace/workspace.py +0 -0
  301. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands_sdk.egg-info/SOURCES.txt +0 -0
  302. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands_sdk.egg-info/dependency_links.txt +0 -0
  303. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands_sdk.egg-info/requires.txt +0 -0
  304. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/openhands_sdk.egg-info/top_level.txt +0 -0
  305. {openhands_sdk-1.49.2 → openhands_sdk-1.49.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openhands-sdk
3
- Version: 1.49.2
3
+ Version: 1.49.3
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
@@ -260,6 +260,14 @@ class AgentContext(BaseModel):
260
260
  @model_validator(mode="after")
261
261
  def _load_auto_skills(self):
262
262
  """Load user/legacy-public skills if enabled, then apply ``disabled_skills``."""
263
+ return self.resolve_auto_skills()
264
+
265
+ def resolve_auto_skills(self) -> AgentContext:
266
+ """Resolve ``load_*_skills`` into ``skills`` and apply ``disabled_skills``.
267
+
268
+ Exposed because ``model_copy`` skips validators: callers that rebuild a
269
+ context that way must re-run this or the deny-list silently won't apply.
270
+ """
263
271
  include_public = self.load_public_skills
264
272
  if self.load_user_skills or include_public:
265
273
  auto_skills = load_available_skills(
@@ -1129,8 +1129,11 @@ class LLM(BaseModel, RetryMixin, NonNativeToolCallingMixin):
1129
1129
  ):
1130
1130
  delta = event.delta
1131
1131
  if delta:
1132
+ # ModelResponseStream mints a fresh id per instance, and a
1133
+ # changed chunk id reads as a retry (StreamContext._emit_delta).
1132
1134
  delta_chunk = ModelResponseStream(
1133
- choices=[StreamingChoices(delta=Delta(content=delta))]
1135
+ id=event.item_id,
1136
+ choices=[StreamingChoices(delta=Delta(content=delta))],
1134
1137
  )
1135
1138
 
1136
1139
  return output_item, delta_chunk
@@ -221,6 +221,7 @@ SEND_REASONING_CONTENT_MODELS: list[str] = [
221
221
  "deepseek/deepseek-reasoner",
222
222
  "deepseek/deepseek-v4-pro", # Dual-mode (Thinking/Non-Thinking)
223
223
  "deepseek/deepseek-v4-flash", # Dual-mode (Thinking/Non-Thinking)
224
+ "deepseek/deepseek-v4.1-flash", # Dual-mode (Thinking/Non-Thinking)
224
225
  ]
225
226
 
226
227
  # Match token -> canonical LiteLLM ID for vision metadata overrides.
@@ -53,6 +53,7 @@ VERIFIED_DEEPSEEK_MODELS = [
53
53
  "deepseek-v4-pro",
54
54
  "deepseek-v4-flash",
55
55
  "deepseek-v4-flash-vision-exp",
56
+ "deepseek-v4.1-flash",
56
57
  "deepseek-v3.2-reasoner",
57
58
  ]
58
59
 
@@ -81,6 +82,7 @@ VERIFIED_GLM_MODELS = [
81
82
  VERIFIED_NVIDIA_MODELS = [
82
83
  "nemotron-3.5-lightning-30b-a3b",
83
84
  "nemotron-3-nano",
85
+ "nemotron-3-nano-omni-30b-a3b-reasoning",
84
86
  "nemotron-3-super-120b-a12b",
85
87
  "nemotron-3-ultra-550b-a55b",
86
88
  ]
@@ -123,6 +125,7 @@ VERIFIED_OPENHANDS_MODELS = [
123
125
  "deepseek-v4-pro",
124
126
  "deepseek-v4-flash",
125
127
  "deepseek-v4-flash-vision-exp",
128
+ "deepseek-v4.1-flash",
126
129
  "deepseek-v3.2-reasoner",
127
130
  "kimi-k3",
128
131
  "kimi-k2.7-code",
@@ -886,6 +886,7 @@ class RemoteWorkspace(RemoteWorkspaceMixin, BaseWorkspace):
886
886
  load_project: bool = True,
887
887
  load_org: bool = True,
888
888
  timeout: float = 60.0,
889
+ base_context: "AgentContext | None" = None,
889
890
  ) -> tuple[list["Skill"], "AgentContext"]:
890
891
  """Load skills via the agent-server's /api/skills endpoint.
891
892
 
@@ -906,6 +907,11 @@ class RemoteWorkspace(RemoteWorkspaceMixin, BaseWorkspace):
906
907
  load_project: Load project skills from workspace directories.
907
908
  load_org: Load organization-level skills.
908
909
  timeout: Request timeout in seconds.
910
+ base_context: Existing AgentContext to preserve. All of its
911
+ fields survive except `skills` and `load_public_skills`,
912
+ which this method always sets based on whether skills
913
+ were found. Defaults to None, which starts from a fresh
914
+ AgentContext — today's behavior.
909
915
 
910
916
  Returns:
911
917
  Tuple of (list of Skill objects, AgentContext).
@@ -958,11 +964,20 @@ class RemoteWorkspace(RemoteWorkspaceMixin, BaseWorkspace):
958
964
  if loaded_skills:
959
965
  logger.debug(f"Skills: {[s.name for s in loaded_skills]}")
960
966
 
961
- # Create AgentContext - fall back to public skills if none loaded
967
+ # Update `base_context` (or start fresh if none given) with the
968
+ # newly loaded skills — every other field the caller configured is
969
+ # preserved. Fall back to public skills if none loaded.
970
+ base = base_context if base_context is not None else AgentContext()
962
971
  if loaded_skills:
963
- agent_context = AgentContext(skills=loaded_skills, load_public_skills=False)
972
+ agent_context = base.model_copy(
973
+ update={"skills": loaded_skills, "load_public_skills": False}
974
+ )
964
975
  else:
965
976
  logger.warning("No skills loaded, falling back to public skills")
966
- agent_context = AgentContext(skills=[], load_public_skills=True)
977
+ agent_context = base.model_copy(
978
+ update={"skills": [], "load_public_skills": True}
979
+ )
967
980
 
968
- return loaded_skills, agent_context
981
+ # ``model_copy`` skips validators, so re-run the resolution that
982
+ # applies ``load_*_skills`` and the ``disabled_skills`` deny-list.
983
+ return loaded_skills, agent_context.resolve_auto_skills()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openhands-sdk
3
- Version: 1.49.2
3
+ Version: 1.49.3
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.49.2"
3
+ version = "1.49.3"
4
4
  description = "OpenHands SDK - Core functionality for building AI agents"
5
5
 
6
6
  requires-python = ">=3.12"