openhands-sdk 1.7.1__tar.gz → 1.7.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 (184) hide show
  1. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/PKG-INFO +1 -1
  2. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/base.py +4 -1
  3. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/agent_context.py +26 -2
  4. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/condenser/llm_summarizing_condenser.py +2 -2
  5. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/skills/skill.py +6 -1
  6. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/impl/local_conversation.py +16 -1
  7. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/utils/verified_models.py +0 -1
  8. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands_sdk.egg-info/PKG-INFO +1 -1
  9. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/pyproject.toml +1 -1
  10. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/__init__.py +0 -0
  11. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/__init__.py +0 -0
  12. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/agent.py +0 -0
  13. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/in_context_learning_example.j2 +0 -0
  14. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/in_context_learning_example_suffix.j2 +0 -0
  15. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/model_specific/anthropic_claude.j2 +0 -0
  16. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/model_specific/google_gemini.j2 +0 -0
  17. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/model_specific/openai_gpt/gpt-5-codex.j2 +0 -0
  18. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/model_specific/openai_gpt/gpt-5.j2 +0 -0
  19. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/security_policy.j2 +0 -0
  20. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/security_risk_assessment.j2 +0 -0
  21. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/self_documentation.j2 +0 -0
  22. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/system_prompt.j2 +0 -0
  23. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/system_prompt_interactive.j2 +0 -0
  24. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/system_prompt_long_horizon.j2 +0 -0
  25. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/system_prompt_planning.j2 +0 -0
  26. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/system_prompt_tech_philosophy.j2 +0 -0
  27. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/utils.py +0 -0
  28. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/__init__.py +0 -0
  29. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/condenser/__init__.py +0 -0
  30. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/condenser/base.py +0 -0
  31. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/condenser/no_op_condenser.py +0 -0
  32. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/condenser/pipeline_condenser.py +0 -0
  33. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/condenser/prompts/summarizing_prompt.j2 +0 -0
  34. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/condenser/utils.py +0 -0
  35. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/prompts/__init__.py +0 -0
  36. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/prompts/prompt.py +0 -0
  37. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/prompts/templates/ask_agent_template.j2 +0 -0
  38. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/prompts/templates/skill_knowledge_info.j2 +0 -0
  39. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/prompts/templates/system_message_suffix.j2 +0 -0
  40. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/skills/__init__.py +0 -0
  41. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/skills/exceptions.py +0 -0
  42. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/skills/trigger.py +0 -0
  43. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/skills/types.py +0 -0
  44. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/view.py +0 -0
  45. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/__init__.py +0 -0
  46. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/base.py +0 -0
  47. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/conversation.py +0 -0
  48. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/conversation_stats.py +0 -0
  49. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/event_store.py +0 -0
  50. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/events_list_base.py +0 -0
  51. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/exceptions.py +0 -0
  52. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/fifo_lock.py +0 -0
  53. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/impl/__init__.py +0 -0
  54. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/impl/remote_conversation.py +0 -0
  55. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/persistence_const.py +0 -0
  56. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/response_utils.py +0 -0
  57. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/secret_registry.py +0 -0
  58. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/serialization_diff.py +0 -0
  59. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/state.py +0 -0
  60. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/stuck_detector.py +0 -0
  61. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/title_utils.py +0 -0
  62. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/types.py +0 -0
  63. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/visualizer/__init__.py +0 -0
  64. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/visualizer/base.py +0 -0
  65. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/visualizer/default.py +0 -0
  66. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/critic/__init__.py +0 -0
  67. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/critic/base.py +0 -0
  68. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/critic/impl/__init__.py +0 -0
  69. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/critic/impl/agent_finished.py +0 -0
  70. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/critic/impl/empty_patch.py +0 -0
  71. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/critic/impl/pass_critic.py +0 -0
  72. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/__init__.py +0 -0
  73. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/base.py +0 -0
  74. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/condenser.py +0 -0
  75. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/conversation_error.py +0 -0
  76. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/conversation_state.py +0 -0
  77. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/llm_completion_log.py +0 -0
  78. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/llm_convertible/__init__.py +0 -0
  79. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/llm_convertible/action.py +0 -0
  80. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/llm_convertible/message.py +0 -0
  81. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/llm_convertible/observation.py +0 -0
  82. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/llm_convertible/system.py +0 -0
  83. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/token.py +0 -0
  84. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/types.py +0 -0
  85. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/user_action.py +0 -0
  86. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/git/exceptions.py +0 -0
  87. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/git/git_changes.py +0 -0
  88. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/git/git_diff.py +0 -0
  89. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/git/models.py +0 -0
  90. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/git/utils.py +0 -0
  91. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/hooks/__init__.py +0 -0
  92. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/hooks/config.py +0 -0
  93. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/hooks/conversation_hooks.py +0 -0
  94. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/hooks/executor.py +0 -0
  95. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/hooks/manager.py +0 -0
  96. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/hooks/types.py +0 -0
  97. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/io/__init__.py +0 -0
  98. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/io/base.py +0 -0
  99. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/io/cache.py +0 -0
  100. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/io/local.py +0 -0
  101. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/io/memory.py +0 -0
  102. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/__init__.py +0 -0
  103. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/exceptions/__init__.py +0 -0
  104. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/exceptions/classifier.py +0 -0
  105. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/exceptions/mapping.py +0 -0
  106. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/exceptions/types.py +0 -0
  107. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/llm.py +0 -0
  108. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/llm_registry.py +0 -0
  109. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/llm_response.py +0 -0
  110. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/message.py +0 -0
  111. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/mixins/fn_call_converter.py +0 -0
  112. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/mixins/non_native_fc.py +0 -0
  113. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/options/__init__.py +0 -0
  114. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/options/chat_options.py +0 -0
  115. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/options/common.py +0 -0
  116. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/options/responses_options.py +0 -0
  117. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/router/__init__.py +0 -0
  118. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/router/base.py +0 -0
  119. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/router/impl/multimodal.py +0 -0
  120. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/router/impl/random.py +0 -0
  121. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/streaming.py +0 -0
  122. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/utils/metrics.py +0 -0
  123. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/utils/model_features.py +0 -0
  124. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/utils/model_info.py +0 -0
  125. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/utils/model_prompt_spec.py +0 -0
  126. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/utils/retry_mixin.py +0 -0
  127. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/utils/telemetry.py +0 -0
  128. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/utils/unverified_models.py +0 -0
  129. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/logger/__init__.py +0 -0
  130. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/logger/logger.py +0 -0
  131. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/logger/rolling.py +0 -0
  132. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/mcp/__init__.py +0 -0
  133. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/mcp/client.py +0 -0
  134. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/mcp/definition.py +0 -0
  135. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/mcp/exceptions.py +0 -0
  136. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/mcp/tool.py +0 -0
  137. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/mcp/utils.py +0 -0
  138. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/observability/__init__.py +0 -0
  139. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/observability/laminar.py +0 -0
  140. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/observability/utils.py +0 -0
  141. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/py.typed +0 -0
  142. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/secret/__init__.py +0 -0
  143. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/secret/secrets.py +0 -0
  144. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/security/__init__.py +0 -0
  145. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/security/analyzer.py +0 -0
  146. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/security/confirmation_policy.py +0 -0
  147. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/security/llm_analyzer.py +0 -0
  148. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/security/risk.py +0 -0
  149. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/tool/__init__.py +0 -0
  150. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/tool/builtins/__init__.py +0 -0
  151. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/tool/builtins/finish.py +0 -0
  152. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/tool/builtins/think.py +0 -0
  153. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/tool/registry.py +0 -0
  154. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/tool/schema.py +0 -0
  155. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/tool/spec.py +0 -0
  156. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/tool/tool.py +0 -0
  157. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/__init__.py +0 -0
  158. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/async_executor.py +0 -0
  159. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/async_utils.py +0 -0
  160. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/cipher.py +0 -0
  161. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/command.py +0 -0
  162. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/deprecation.py +0 -0
  163. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/github.py +0 -0
  164. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/json.py +0 -0
  165. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/models.py +0 -0
  166. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/paging.py +0 -0
  167. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/pydantic_diff.py +0 -0
  168. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/pydantic_secrets.py +0 -0
  169. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/truncate.py +0 -0
  170. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/visualize.py +0 -0
  171. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/__init__.py +0 -0
  172. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/base.py +0 -0
  173. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/local.py +0 -0
  174. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/models.py +0 -0
  175. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/remote/__init__.py +0 -0
  176. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/remote/async_remote_workspace.py +0 -0
  177. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/remote/base.py +0 -0
  178. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/remote/remote_workspace_mixin.py +0 -0
  179. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/workspace.py +0 -0
  180. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands_sdk.egg-info/SOURCES.txt +0 -0
  181. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands_sdk.egg-info/dependency_links.txt +0 -0
  182. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands_sdk.egg-info/requires.txt +0 -0
  183. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands_sdk.egg-info/top_level.txt +0 -0
  184. {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openhands-sdk
3
- Version: 1.7.1
3
+ Version: 1.7.2
4
4
  Summary: OpenHands SDK - Core functionality for building AI agents
5
5
  Requires-Python: >=3.12
6
6
  Requires-Dist: deprecation>=2.1.0
@@ -194,7 +194,10 @@ class AgentBase(DiscriminatedUnionMixin, ABC):
194
194
  **template_kwargs,
195
195
  )
196
196
  if self.agent_context:
197
- _system_message_suffix = self.agent_context.get_system_message_suffix()
197
+ _system_message_suffix = self.agent_context.get_system_message_suffix(
198
+ llm_model=self.llm.model,
199
+ llm_model_canonical=self.llm.model_canonical_name,
200
+ )
198
201
  if _system_message_suffix:
199
202
  system_message += "\n\n" + _system_message_suffix
200
203
  return system_message
@@ -13,6 +13,7 @@ from openhands.sdk.context.skills import (
13
13
  load_user_skills,
14
14
  )
15
15
  from openhands.sdk.llm import Message, TextContent
16
+ from openhands.sdk.llm.utils.model_prompt_spec import get_model_prompt_spec
16
17
  from openhands.sdk.logger import get_logger
17
18
  from openhands.sdk.secret import SecretSource, SecretValue
18
19
 
@@ -154,7 +155,11 @@ class AgentContext(BaseModel):
154
155
  secret_infos.append({"name": name, "description": description})
155
156
  return secret_infos
156
157
 
157
- def get_system_message_suffix(self) -> str | None:
158
+ def get_system_message_suffix(
159
+ self,
160
+ llm_model: str | None = None,
161
+ llm_model_canonical: str | None = None,
162
+ ) -> str | None:
158
163
  """Get the system message with repo skill content and custom suffix.
159
164
 
160
165
  Custom suffix can typically includes:
@@ -164,11 +169,30 @@ class AgentContext(BaseModel):
164
169
  - Repository-specific instructions (collected from repo skills)
165
170
  """
166
171
  repo_skills = [s for s in self.skills if s.trigger is None]
172
+
173
+ # Gate vendor-specific repo skills based on model family.
174
+ if llm_model or llm_model_canonical:
175
+ spec = get_model_prompt_spec(llm_model or "", llm_model_canonical)
176
+ family = (spec.family or "").lower()
177
+ if family:
178
+ filtered: list[Skill] = []
179
+ for s in repo_skills:
180
+ n = (s.name or "").lower()
181
+ if n == "claude" and not (
182
+ "anthropic" in family or "claude" in family
183
+ ):
184
+ continue
185
+ if n == "gemini" and not (
186
+ "gemini" in family or "google_gemini" in family
187
+ ):
188
+ continue
189
+ filtered.append(s)
190
+ repo_skills = filtered
191
+
167
192
  logger.debug(f"Triggered {len(repo_skills)} repository skills: {repo_skills}")
168
193
  # Build the workspace context information
169
194
  secret_infos = self.get_secret_infos()
170
195
  if repo_skills or self.system_message_suffix or secret_infos:
171
- # TODO(test): add a test for this rendering to make sure they work
172
196
  formatted_text = render_template(
173
197
  prompt_dir=str(PROMPT_DIR),
174
198
  template_name="system_message_suffix.j2",
@@ -36,9 +36,9 @@ class LLMSummarizingCondenser(RollingCondenser):
36
36
  """
37
37
 
38
38
  llm: LLM
39
- max_size: int = Field(default=120, gt=0)
39
+ max_size: int = Field(default=240, gt=0)
40
40
  max_tokens: int | None = None
41
- keep_first: int = Field(default=4, ge=0)
41
+ keep_first: int = Field(default=2, ge=0)
42
42
 
43
43
  @model_validator(mode="after")
44
44
  def validate_keep_first_vs_max_size(self):
@@ -411,7 +411,10 @@ def load_skills_from_dir(
411
411
  # Process all files in one loop
412
412
  for file in chain(special_files, md_files):
413
413
  try:
414
- skill = Skill.load(file, skill_dir)
414
+ skill = Skill.load(
415
+ file,
416
+ skill_dir,
417
+ )
415
418
  if skill.trigger is None:
416
419
  repo_skills[skill.name] = skill
417
420
  else:
@@ -700,6 +703,8 @@ def load_public_skills(
700
703
  path=skill_file,
701
704
  skill_dir=repo_path,
702
705
  )
706
+ if skill is None:
707
+ continue
703
708
  all_skills.append(skill)
704
709
  logger.debug(f"Loaded public skill: {skill.name}")
705
710
  except Exception as e:
@@ -377,9 +377,24 @@ class LocalConversation(BaseConversation):
377
377
  if (
378
378
  self.state.execution_status
379
379
  == ConversationExecutionStatus.WAITING_FOR_CONFIRMATION
380
- or iteration >= self.max_iteration_per_run
381
380
  ):
382
381
  break
382
+
383
+ if iteration >= self.max_iteration_per_run:
384
+ error_msg = (
385
+ f"Agent reached maximum iterations limit "
386
+ f"({self.max_iteration_per_run})."
387
+ )
388
+ logger.error(error_msg)
389
+ self._state.execution_status = ConversationExecutionStatus.ERROR
390
+ self._on_event(
391
+ ConversationErrorEvent(
392
+ source="environment",
393
+ code="MaxIterationsReached",
394
+ detail=error_msg,
395
+ )
396
+ )
397
+ break
383
398
  except Exception as e:
384
399
  self._state.execution_status = ConversationExecutionStatus.ERROR
385
400
 
@@ -1,6 +1,5 @@
1
1
  VERIFIED_OPENAI_MODELS = [
2
2
  "gpt-5.2",
3
- "gpt-5.2-codex",
4
3
  "gpt-5.1",
5
4
  "gpt-5.1-codex-max",
6
5
  "gpt-5.1-codex",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openhands-sdk
3
- Version: 1.7.1
3
+ Version: 1.7.2
4
4
  Summary: OpenHands SDK - Core functionality for building AI agents
5
5
  Requires-Python: >=3.12
6
6
  Requires-Dist: deprecation>=2.1.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "openhands-sdk"
3
- version = "1.7.1"
3
+ version = "1.7.2"
4
4
  description = "OpenHands SDK - Core functionality for building AI agents"
5
5
 
6
6
  requires-python = ">=3.12"
File without changes