openhands-sdk 1.44.0__tar.gz → 1.44.1__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 (301) hide show
  1. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/PKG-INFO +2 -2
  2. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/agent/acp_agent.py +15 -0
  3. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/utils/verified_models.py +2 -0
  4. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/profiles/agent_profile.py +3 -3
  5. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/profiles/resolver.py +24 -17
  6. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/tool/registry.py +6 -1
  7. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands_sdk.egg-info/PKG-INFO +2 -2
  8. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands_sdk.egg-info/requires.txt +1 -1
  9. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/pyproject.toml +2 -2
  10. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/__init__.py +0 -0
  11. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/agent/__init__.py +0 -0
  12. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/agent/acp_file_credentials.py +0 -0
  13. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/agent/acp_models.py +0 -0
  14. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/agent/acp_tracing.py +0 -0
  15. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/agent/agent.py +0 -0
  16. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/agent/base.py +0 -0
  17. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/agent/critic_mixin.py +0 -0
  18. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/agent/parallel_executor.py +0 -0
  19. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/agent/response_dispatch.py +0 -0
  20. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/agent/utils.py +0 -0
  21. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/banner.py +0 -0
  22. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/__init__.py +0 -0
  23. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/agent_context.py +0 -0
  24. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/condenser/__init__.py +0 -0
  25. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/condenser/base.py +0 -0
  26. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/condenser/llm_summarizing_condenser.py +0 -0
  27. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/condenser/no_op_condenser.py +0 -0
  28. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/condenser/pipeline_condenser.py +0 -0
  29. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/condenser/prompts/summarizing_prompt.j2 +0 -0
  30. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/condenser/utils.py +0 -0
  31. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/memory.py +0 -0
  32. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/prompts/__init__.py +0 -0
  33. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/prompts/presets.py +0 -0
  34. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/prompts/prompt.py +0 -0
  35. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/prompts/registry.py +0 -0
  36. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/prompts/section.py +0 -0
  37. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/prompts/sections/__init__.py +0 -0
  38. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/prompts/sections/dynamic.py +0 -0
  39. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/prompts/sections/planning.py +0 -0
  40. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/prompts/sections/static.py +0 -0
  41. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/prompts/templates/ask_agent_template.j2 +0 -0
  42. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/prompts/templates/skill_knowledge_info.j2 +0 -0
  43. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/view/__init__.py +0 -0
  44. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/view/manipulation_indices.py +0 -0
  45. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/view/properties/__init__.py +0 -0
  46. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/view/properties/base.py +0 -0
  47. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/view/properties/batch_atomicity.py +0 -0
  48. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/view/properties/observation_uniqueness.py +0 -0
  49. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/view/properties/tool_call_matching.py +0 -0
  50. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/view/properties/tool_loop_atomicity.py +0 -0
  51. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/context/view/view.py +0 -0
  52. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/__init__.py +0 -0
  53. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/base.py +0 -0
  54. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/cancellation.py +0 -0
  55. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/conversation.py +0 -0
  56. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/conversation_stats.py +0 -0
  57. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/event_store.py +0 -0
  58. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/events_list_base.py +0 -0
  59. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/exceptions.py +0 -0
  60. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/fifo_lock.py +0 -0
  61. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/goal/__init__.py +0 -0
  62. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/goal/controller.py +0 -0
  63. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/goal/judge.py +0 -0
  64. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/goal/prompts.py +0 -0
  65. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/goal/runner.py +0 -0
  66. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/impl/__init__.py +0 -0
  67. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/impl/local_conversation.py +0 -0
  68. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/impl/remote_conversation.py +0 -0
  69. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/persistence_const.py +0 -0
  70. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/request.py +0 -0
  71. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/resource_lock_manager.py +0 -0
  72. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/response_utils.py +0 -0
  73. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/secret_registry.py +0 -0
  74. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/state.py +0 -0
  75. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/stuck_detector.py +0 -0
  76. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/title_utils.py +0 -0
  77. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/types.py +0 -0
  78. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/visualizer/__init__.py +0 -0
  79. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/visualizer/base.py +0 -0
  80. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/conversation/visualizer/default.py +0 -0
  81. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/credential.py +0 -0
  82. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/critic/__init__.py +0 -0
  83. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/critic/base.py +0 -0
  84. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/critic/impl/__init__.py +0 -0
  85. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/critic/impl/agent_finished.py +0 -0
  86. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/critic/impl/api/__init__.py +0 -0
  87. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/critic/impl/api/chat_template.py +0 -0
  88. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/critic/impl/api/client.py +0 -0
  89. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/critic/impl/api/critic.py +0 -0
  90. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/critic/impl/api/taxonomy.py +0 -0
  91. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/critic/impl/empty_patch.py +0 -0
  92. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/critic/impl/pass_critic.py +0 -0
  93. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/critic/result.py +0 -0
  94. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/__init__.py +0 -0
  95. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/acp_tool_call.py +0 -0
  96. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/base.py +0 -0
  97. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/condenser.py +0 -0
  98. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/conversation_error.py +0 -0
  99. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/conversation_state.py +0 -0
  100. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/error_classification.py +0 -0
  101. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/hook_execution.py +0 -0
  102. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/llm_completion_log.py +0 -0
  103. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/llm_convertible/__init__.py +0 -0
  104. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/llm_convertible/action.py +0 -0
  105. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/llm_convertible/message.py +0 -0
  106. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/llm_convertible/observation.py +0 -0
  107. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/llm_convertible/reasoning_utils.py +0 -0
  108. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/llm_convertible/system.py +0 -0
  109. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/resume_transcript.py +0 -0
  110. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/streaming_delta.py +0 -0
  111. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/token.py +0 -0
  112. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/types.py +0 -0
  113. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/event/user_action.py +0 -0
  114. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/extensions/__init__.py +0 -0
  115. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/extensions/fetch.py +0 -0
  116. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/extensions/installation/__init__.py +0 -0
  117. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/extensions/installation/info.py +0 -0
  118. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/extensions/installation/interface.py +0 -0
  119. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/extensions/installation/manager.py +0 -0
  120. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/extensions/installation/metadata.py +0 -0
  121. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/extensions/installation/utils.py +0 -0
  122. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/git/cached_repo.py +0 -0
  123. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/git/exceptions.py +0 -0
  124. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/git/git_changes.py +0 -0
  125. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/git/git_commits.py +0 -0
  126. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/git/git_diff.py +0 -0
  127. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/git/models.py +0 -0
  128. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/git/utils.py +0 -0
  129. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/hooks/__init__.py +0 -0
  130. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/hooks/config.py +0 -0
  131. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/hooks/conversation_hooks.py +0 -0
  132. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/hooks/executor.py +0 -0
  133. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/hooks/manager.py +0 -0
  134. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/hooks/types.py +0 -0
  135. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/io/__init__.py +0 -0
  136. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/io/base.py +0 -0
  137. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/io/cache.py +0 -0
  138. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/io/local.py +0 -0
  139. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/io/memory.py +0 -0
  140. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/__init__.py +0 -0
  141. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/auth/__init__.py +0 -0
  142. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/auth/credentials.py +0 -0
  143. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/auth/openai.py +0 -0
  144. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/cleanup_profile.py +0 -0
  145. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/exceptions/__init__.py +0 -0
  146. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/exceptions/classifier.py +0 -0
  147. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/exceptions/mapping.py +0 -0
  148. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/exceptions/types.py +0 -0
  149. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/fallback_strategy.py +0 -0
  150. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/llm.py +0 -0
  151. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/llm_profile_store.py +0 -0
  152. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/llm_registry.py +0 -0
  153. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/llm_response.py +0 -0
  154. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/message.py +0 -0
  155. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/mixins/fn_call_converter.py +0 -0
  156. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/mixins/fn_call_examples.py +0 -0
  157. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/mixins/non_native_fc.py +0 -0
  158. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/options/__init__.py +0 -0
  159. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/options/chat_options.py +0 -0
  160. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/options/common.py +0 -0
  161. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/options/responses_options.py +0 -0
  162. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/provider_connection_store.py +0 -0
  163. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/router/__init__.py +0 -0
  164. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/router/base.py +0 -0
  165. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/router/impl/multimodal.py +0 -0
  166. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/router/impl/random.py +0 -0
  167. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/streaming.py +0 -0
  168. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/utils/image_inline.py +0 -0
  169. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/utils/image_resize.py +0 -0
  170. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/utils/litellm_provider.py +0 -0
  171. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/utils/metrics.py +0 -0
  172. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/utils/model_features.py +0 -0
  173. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/utils/model_info.py +0 -0
  174. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/utils/model_prompt_spec.py +0 -0
  175. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/utils/openhands_provider.py +0 -0
  176. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/utils/providers/__init__.py +0 -0
  177. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/utils/providers/openrouter.py +0 -0
  178. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/utils/responses_serialization.py +0 -0
  179. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/utils/retry_mixin.py +0 -0
  180. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/utils/runtime_metadata.py +0 -0
  181. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/utils/telemetry.py +0 -0
  182. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/utils/unverified_models.py +0 -0
  183. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/llm/utils/vertex_preflight.py +0 -0
  184. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/logger/__init__.py +0 -0
  185. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/logger/logger.py +0 -0
  186. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/logger/rolling.py +0 -0
  187. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/marketplace/__init__.py +0 -0
  188. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/marketplace/registration.py +0 -0
  189. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/marketplace/registry.py +0 -0
  190. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/marketplace/types.py +0 -0
  191. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/mcp/__init__.py +0 -0
  192. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/mcp/client.py +0 -0
  193. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/mcp/config.py +0 -0
  194. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/mcp/definition.py +0 -0
  195. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/mcp/exceptions.py +0 -0
  196. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/mcp/tool.py +0 -0
  197. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/mcp/utils.py +0 -0
  198. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/observability/__init__.py +0 -0
  199. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/observability/laminar.py +0 -0
  200. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/observability/utils.py +0 -0
  201. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/plugin/__init__.py +0 -0
  202. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/plugin/discovery.py +0 -0
  203. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/plugin/fetch.py +0 -0
  204. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/plugin/format/__init__.py +0 -0
  205. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/plugin/format/agent_plugins.py +0 -0
  206. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/plugin/format/base.py +0 -0
  207. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/plugin/format/claude_code.py +0 -0
  208. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/plugin/format/schemas/plugin-1.0.0.schema.json +0 -0
  209. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/plugin/installed.py +0 -0
  210. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/plugin/loader.py +0 -0
  211. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/plugin/plugin.py +0 -0
  212. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/plugin/source.py +0 -0
  213. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/plugin/types.py +0 -0
  214. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/profiles/__init__.py +0 -0
  215. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/profiles/agent_profile_store.py +0 -0
  216. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/profiles/profile_refs.py +0 -0
  217. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/profiles/seed.py +0 -0
  218. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/py.typed +0 -0
  219. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/secret/__init__.py +0 -0
  220. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/secret/secrets.py +0 -0
  221. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/security/__init__.py +0 -0
  222. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/security/_shell_ast.py +0 -0
  223. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/security/analyzer.py +0 -0
  224. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/security/confirmation_policy.py +0 -0
  225. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/security/defense_in_depth/__init__.py +0 -0
  226. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/security/defense_in_depth/pattern.py +0 -0
  227. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/security/defense_in_depth/policy_rails.py +0 -0
  228. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/security/defense_in_depth/shell_semantics.py +0 -0
  229. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/security/defense_in_depth/utils.py +0 -0
  230. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/security/ensemble.py +0 -0
  231. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/security/grayswan/__init__.py +0 -0
  232. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/security/grayswan/analyzer.py +0 -0
  233. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/security/grayswan/utils.py +0 -0
  234. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/security/llm_analyzer.py +0 -0
  235. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/security/risk.py +0 -0
  236. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/security/shell_parser.py +0 -0
  237. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/security/toolshield_helpers.py +0 -0
  238. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/security/toolshield_llm_analyzer.py +0 -0
  239. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/settings/__init__.py +0 -0
  240. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/settings/acp_providers.py +0 -0
  241. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/settings/api_models.py +0 -0
  242. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/settings/metadata.py +0 -0
  243. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/settings/model.py +0 -0
  244. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/skills/__init__.py +0 -0
  245. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/skills/exceptions.py +0 -0
  246. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/skills/execute.py +0 -0
  247. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/skills/fetch.py +0 -0
  248. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/skills/installed.py +0 -0
  249. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/skills/skill.py +0 -0
  250. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/skills/trigger.py +0 -0
  251. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/skills/types.py +0 -0
  252. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/skills/utils.py +0 -0
  253. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/subagent/__init__.py +0 -0
  254. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/subagent/load.py +0 -0
  255. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/subagent/registry.py +0 -0
  256. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/subagent/schema.py +0 -0
  257. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/testing/__init__.py +0 -0
  258. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/testing/test_llm.py +0 -0
  259. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/tool/__init__.py +0 -0
  260. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/tool/builtins/__init__.py +0 -0
  261. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/tool/builtins/finish.py +0 -0
  262. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/tool/builtins/invoke_skill.py +0 -0
  263. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/tool/builtins/switch_llm.py +0 -0
  264. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/tool/builtins/think.py +0 -0
  265. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/tool/builtins/vision_inspect.py +0 -0
  266. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/tool/client_tool.py +0 -0
  267. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/tool/defaults.py +0 -0
  268. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/tool/schema.py +0 -0
  269. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/tool/spec.py +0 -0
  270. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/tool/tool.py +0 -0
  271. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/utils/__init__.py +0 -0
  272. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/utils/async_executor.py +0 -0
  273. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/utils/async_utils.py +0 -0
  274. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/utils/cipher.py +0 -0
  275. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/utils/command.py +0 -0
  276. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/utils/datetime.py +0 -0
  277. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/utils/deprecation.py +0 -0
  278. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/utils/files.py +0 -0
  279. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/utils/github.py +0 -0
  280. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/utils/json.py +0 -0
  281. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/utils/models.py +0 -0
  282. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/utils/paging.py +0 -0
  283. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/utils/path.py +0 -0
  284. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/utils/pydantic_secrets.py +0 -0
  285. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/utils/redact.py +0 -0
  286. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/utils/truncate.py +0 -0
  287. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/utils/visualize.py +0 -0
  288. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/workspace/__init__.py +0 -0
  289. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/workspace/base.py +0 -0
  290. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/workspace/local.py +0 -0
  291. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/workspace/models.py +0 -0
  292. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/workspace/remote/__init__.py +0 -0
  293. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/workspace/remote/async_remote_workspace.py +0 -0
  294. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/workspace/remote/base.py +0 -0
  295. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/workspace/remote/remote_workspace_mixin.py +0 -0
  296. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/workspace/repo.py +0 -0
  297. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands/sdk/workspace/workspace.py +0 -0
  298. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands_sdk.egg-info/SOURCES.txt +0 -0
  299. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands_sdk.egg-info/dependency_links.txt +0 -0
  300. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/openhands_sdk.egg-info/top_level.txt +0 -0
  301. {openhands_sdk-1.44.0 → openhands_sdk-1.44.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openhands-sdk
3
- Version: 1.44.0
3
+ Version: 1.44.1
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
@@ -22,7 +22,7 @@ Requires-Dist: python-frontmatter>=1.1.0
22
22
  Requires-Dist: python-json-logger>=3.3.0
23
23
  Requires-Dist: tenacity>=9.1.2
24
24
  Requires-Dist: websockets>=12
25
- Requires-Dist: lmnr<0.8.0,>=0.7.56
25
+ Requires-Dist: lmnr<0.8.0,>=0.7.60
26
26
  Requires-Dist: tree-sitter>=0.25
27
27
  Requires-Dist: tree-sitter-bash>=0.25
28
28
  Provides-Extra: boto3
@@ -1699,6 +1699,21 @@ class ACPAgent(AgentBase):
1699
1699
  ),
1700
1700
  )
1701
1701
 
1702
+ @field_validator("agent_context")
1703
+ @classmethod
1704
+ def _drop_project_skills(cls, value: AgentContext | None) -> AgentContext | None:
1705
+ """Clear ``load_project_skills`` — ACP CLIs read the repo themselves.
1706
+
1707
+ Claude Code, Codex and Gemini already ingest ``AGENTS.md`` / ``CLAUDE.md``
1708
+ and their own project skills from the session cwd, so loading them here
1709
+ too would put that content in the prompt twice. Normalised rather than
1710
+ rejected: callers legitimately set the flag on a shared context they also
1711
+ use for OpenHands agents (#4019).
1712
+ """
1713
+ if value is None or not value.load_project_skills:
1714
+ return value
1715
+ return value.model_copy(update={"load_project_skills": False})
1716
+
1702
1717
  def model_post_init(self, __context: object) -> None:
1703
1718
  super().model_post_init(__context)
1704
1719
  # Propagate the actual model name to the sentinel LLM and its
@@ -69,6 +69,7 @@ VERIFIED_DEEPSEEK_MODELS = [
69
69
  "deepseek-chat",
70
70
  "deepseek-v3.2-reasoner",
71
71
  "deepseek-v4-pro",
72
+ "deepseek-v4-flash",
72
73
  ]
73
74
 
74
75
  VERIFIED_MOONSHOT_MODELS = [
@@ -131,6 +132,7 @@ VERIFIED_OPENHANDS_MODELS = [
131
132
  "deepseek-chat",
132
133
  "deepseek-v3.2-reasoner",
133
134
  "deepseek-v4-pro",
135
+ "deepseek-v4-flash",
134
136
  "kimi-k3",
135
137
  "kimi-k2-thinking",
136
138
  "kimi-k2.6",
@@ -224,9 +224,9 @@ class ACPAgentProfile(AgentProfileBase):
224
224
  ),
225
225
  )
226
226
  # No skill-selection field: ACP agents own their tooling and prompt
227
- # construction, so no user/public discovered skills are injected. (Only
228
- # repo-scoped project skills reach an ACP agent, via the resolver's
229
- # ``load_project_skills`` — see #4019 for whether even those should.)
227
+ # construction. Project skills never reach one (the CLI reads the repo
228
+ # itself, #4019); whether any managed skill does is a deployment choice the
229
+ # caller expresses through ``resolve_agent_profile``'s ``available_skills``.
230
230
  acp_server: ACPServerKind = Field(
231
231
  default="claude-code",
232
232
  description=(
@@ -261,18 +261,21 @@ def _build_openhands_settings(
261
261
  def _build_acp_settings(
262
262
  profile: ACPAgentProfile,
263
263
  mcp_config: dict[str, MCPServer],
264
+ managed_skills: list[Skill],
264
265
  ) -> AgentSettingsConfig:
265
266
  """Compose the resolved ``ACPAgentSettings`` from a profile.
266
267
 
267
268
  ``acp_command`` is stored as a shell string and split into the settings'
268
269
  token list. No credential is set — provider creds ride
269
- ``state.secret_registry``. ACP profiles carry no user/public skills (the ACP
270
- subprocess owns its context), so ``agent_context`` has no discovered skills;
271
- it is always built (never ``None``) only so ``load_project_skills=True``
272
- reaches ``LocalConversation``'s lazy load (``current_datetime=None`` matches
273
- ACP's no-timestamp convention). Caveat: an ACP CLI that already ingests repo
274
- files (e.g. AGENTS.md) may then see that content twice (#4019). A ``custom``
275
- server has no default command, so one must be supplied.
270
+ ``state.secret_registry``.
271
+
272
+ ``load_project_skills`` stays ``False``: an ACP CLI reads ``AGENTS.md`` /
273
+ ``CLAUDE.md`` and its own project skills from the session cwd, so loading
274
+ them here would duplicate that content in the prompt (#4019).
275
+ ``managed_skills`` is what the *deployment* chose to inject — empty when the
276
+ ACP CLI can reach its own host configuration, non-empty in a container where
277
+ it cannot. ``current_datetime=None`` matches ACP's no-timestamp convention.
278
+ A ``custom`` server has no default command, so one must be supplied.
276
279
  """
277
280
  command = shlex.split(profile.acp_command) if profile.acp_command else []
278
281
  if profile.acp_server == "custom" and not command:
@@ -281,7 +284,7 @@ def _build_acp_settings(
281
284
  "default launch command to fall back to"
282
285
  )
283
286
  agent_context = AgentContext(
284
- skills=[], current_datetime=None, load_project_skills=True
287
+ skills=managed_skills, current_datetime=None, load_project_skills=False
285
288
  )
286
289
  payload = {
287
290
  "schema_version": AGENT_SETTINGS_SCHEMA_VERSION,
@@ -313,10 +316,10 @@ def resolve_agent_profile(
313
316
  decrypted by the caller (the agent-server runs settings decryption
314
317
  before calling). ``available_skills`` is the server-discovered skill catalog
315
318
  (the agent-server caller passes the result of ``load_all_skills``); an
316
- OpenHands profile keeps all of it except the names in ``disabled_skills``.
317
- ``None`` means discovery was not run or failed: no catalog, so the resolved
318
- agent gets no user/public skills (project skills, loaded separately by
319
- ``LocalConversation``, are unaffected). Unlike the ``mcp_server_refs``
319
+ OpenHands profile keeps all of it except the names in ``disabled_skills``,
320
+ and an ACP profile keeps all of it (it has no deny-list). ``None`` means the
321
+ caller injected no catalog — discovery was not run, failed, or, for ACP, the
322
+ deployment leaves skill sourcing to the CLI. Unlike the ``mcp_server_refs``
320
323
  allow-list, the ``disabled_skills`` deny-list can never dangle, so this
321
324
  never raises for skills. ``cipher`` decrypts the referenced LLM profile.
322
325
 
@@ -340,7 +343,9 @@ def resolve_agent_profile(
340
343
  ) from e
341
344
  return _build_openhands_settings(profile, llm, filtered_mcp, filtered_skills)
342
345
 
343
- return _build_acp_settings(profile, filtered_mcp)
346
+ return _build_acp_settings(
347
+ profile, filtered_mcp, _apply_disabled_skills(available_skills, [])
348
+ )
344
349
 
345
350
 
346
351
  def resolve_agent_profile_dry_run(
@@ -375,15 +380,17 @@ def resolve_agent_profile_dry_run(
375
380
  "MCP server(s) not configured: " + ", ".join(dangling)
376
381
  )
377
382
 
378
- # Skill selection report (OpenHands only; ACP injects no user/public skills).
379
- # Deny-list semantics: the catalog minus disabled names, never dangling.
383
+ # Skill selection report. Deny-list semantics: the catalog minus disabled
384
+ # names, never dangling. An ACP profile has no deny-list of its own — its
385
+ # catalog is whatever the deployment injects (empty unless the caller passes
386
+ # one), and never includes project skills (#4019).
380
387
  if isinstance(profile, OpenHandsAgentProfile):
381
388
  filtered_skills = _apply_disabled_skills(
382
389
  available_skills, profile.disabled_skills
383
390
  )
384
391
  diagnostics.disabled_skills = profile.disabled_skills
385
392
  else:
386
- filtered_skills = []
393
+ filtered_skills = _apply_disabled_skills(available_skills, [])
387
394
  diagnostics.resolved_skills = [s.name for s in filtered_skills]
388
395
 
389
396
  llm: LLM | None = None
@@ -431,7 +438,7 @@ def resolve_agent_profile_dry_run(
431
438
  profile, llm, filtered_mcp, filtered_skills
432
439
  )
433
440
  else:
434
- settings = _build_acp_settings(profile, filtered_mcp)
441
+ settings = _build_acp_settings(profile, filtered_mcp, filtered_skills)
435
442
  # No expose context => secrets redacted (mcp env/headers, llm api_key).
436
443
  diagnostics.resolved_settings = settings.model_dump(mode="json")
437
444
  except Exception as e:
@@ -153,7 +153,12 @@ def resolve_tool(
153
153
  resolver = _REG.get(tool_spec.name)
154
154
 
155
155
  if resolver is None:
156
- raise KeyError(f"ToolDefinition '{tool_spec.name}' is not registered")
156
+ from openhands.sdk.tool.builtins import BUILT_IN_TOOL_CLASSES
157
+
158
+ tool_class = BUILT_IN_TOOL_CLASSES.get(tool_spec.name)
159
+ if tool_class is None:
160
+ raise KeyError(f"ToolDefinition '{tool_spec.name}' is not registered")
161
+ resolver = _resolver_from_subclass(tool_spec.name, tool_class)
157
162
 
158
163
  params = dict(tool_spec.params)
159
164
  response_schema = params.pop("response_schema", None)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openhands-sdk
3
- Version: 1.44.0
3
+ Version: 1.44.1
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
@@ -22,7 +22,7 @@ Requires-Dist: python-frontmatter>=1.1.0
22
22
  Requires-Dist: python-json-logger>=3.3.0
23
23
  Requires-Dist: tenacity>=9.1.2
24
24
  Requires-Dist: websockets>=12
25
- Requires-Dist: lmnr<0.8.0,>=0.7.56
25
+ Requires-Dist: lmnr<0.8.0,>=0.7.60
26
26
  Requires-Dist: tree-sitter>=0.25
27
27
  Requires-Dist: tree-sitter-bash>=0.25
28
28
  Provides-Extra: boto3
@@ -13,7 +13,7 @@ python-frontmatter>=1.1.0
13
13
  python-json-logger>=3.3.0
14
14
  tenacity>=9.1.2
15
15
  websockets>=12
16
- lmnr<0.8.0,>=0.7.56
16
+ lmnr<0.8.0,>=0.7.60
17
17
  tree-sitter>=0.25
18
18
  tree-sitter-bash>=0.25
19
19
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "openhands-sdk"
3
- version = "1.44.0"
3
+ version = "1.44.1"
4
4
  description = "OpenHands SDK - Core functionality for building AI agents"
5
5
 
6
6
  requires-python = ">=3.12"
@@ -20,7 +20,7 @@ dependencies = [
20
20
  "python-json-logger>=3.3.0",
21
21
  "tenacity>=9.1.2",
22
22
  "websockets>=12",
23
- "lmnr>=0.7.56,<0.8.0",
23
+ "lmnr>=0.7.60,<0.8.0",
24
24
  "tree-sitter>=0.25",
25
25
  "tree-sitter-bash>=0.25",
26
26
  ]