openhands-sdk 1.7.3__py3-none-any.whl

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 (180) hide show
  1. openhands/sdk/__init__.py +111 -0
  2. openhands/sdk/agent/__init__.py +8 -0
  3. openhands/sdk/agent/agent.py +650 -0
  4. openhands/sdk/agent/base.py +457 -0
  5. openhands/sdk/agent/prompts/in_context_learning_example.j2 +169 -0
  6. openhands/sdk/agent/prompts/in_context_learning_example_suffix.j2 +3 -0
  7. openhands/sdk/agent/prompts/model_specific/anthropic_claude.j2 +3 -0
  8. openhands/sdk/agent/prompts/model_specific/google_gemini.j2 +1 -0
  9. openhands/sdk/agent/prompts/model_specific/openai_gpt/gpt-5-codex.j2 +2 -0
  10. openhands/sdk/agent/prompts/model_specific/openai_gpt/gpt-5.j2 +3 -0
  11. openhands/sdk/agent/prompts/security_policy.j2 +22 -0
  12. openhands/sdk/agent/prompts/security_risk_assessment.j2 +21 -0
  13. openhands/sdk/agent/prompts/self_documentation.j2 +15 -0
  14. openhands/sdk/agent/prompts/system_prompt.j2 +132 -0
  15. openhands/sdk/agent/prompts/system_prompt_interactive.j2 +14 -0
  16. openhands/sdk/agent/prompts/system_prompt_long_horizon.j2 +40 -0
  17. openhands/sdk/agent/prompts/system_prompt_planning.j2 +40 -0
  18. openhands/sdk/agent/prompts/system_prompt_tech_philosophy.j2 +122 -0
  19. openhands/sdk/agent/utils.py +228 -0
  20. openhands/sdk/context/__init__.py +28 -0
  21. openhands/sdk/context/agent_context.py +264 -0
  22. openhands/sdk/context/condenser/__init__.py +18 -0
  23. openhands/sdk/context/condenser/base.py +100 -0
  24. openhands/sdk/context/condenser/llm_summarizing_condenser.py +248 -0
  25. openhands/sdk/context/condenser/no_op_condenser.py +14 -0
  26. openhands/sdk/context/condenser/pipeline_condenser.py +56 -0
  27. openhands/sdk/context/condenser/prompts/summarizing_prompt.j2 +59 -0
  28. openhands/sdk/context/condenser/utils.py +149 -0
  29. openhands/sdk/context/prompts/__init__.py +6 -0
  30. openhands/sdk/context/prompts/prompt.py +114 -0
  31. openhands/sdk/context/prompts/templates/ask_agent_template.j2 +11 -0
  32. openhands/sdk/context/prompts/templates/skill_knowledge_info.j2 +8 -0
  33. openhands/sdk/context/prompts/templates/system_message_suffix.j2 +32 -0
  34. openhands/sdk/context/skills/__init__.py +28 -0
  35. openhands/sdk/context/skills/exceptions.py +11 -0
  36. openhands/sdk/context/skills/skill.py +720 -0
  37. openhands/sdk/context/skills/trigger.py +36 -0
  38. openhands/sdk/context/skills/types.py +48 -0
  39. openhands/sdk/context/view.py +503 -0
  40. openhands/sdk/conversation/__init__.py +40 -0
  41. openhands/sdk/conversation/base.py +281 -0
  42. openhands/sdk/conversation/conversation.py +152 -0
  43. openhands/sdk/conversation/conversation_stats.py +85 -0
  44. openhands/sdk/conversation/event_store.py +157 -0
  45. openhands/sdk/conversation/events_list_base.py +17 -0
  46. openhands/sdk/conversation/exceptions.py +50 -0
  47. openhands/sdk/conversation/fifo_lock.py +133 -0
  48. openhands/sdk/conversation/impl/__init__.py +5 -0
  49. openhands/sdk/conversation/impl/local_conversation.py +665 -0
  50. openhands/sdk/conversation/impl/remote_conversation.py +956 -0
  51. openhands/sdk/conversation/persistence_const.py +9 -0
  52. openhands/sdk/conversation/response_utils.py +41 -0
  53. openhands/sdk/conversation/secret_registry.py +126 -0
  54. openhands/sdk/conversation/serialization_diff.py +0 -0
  55. openhands/sdk/conversation/state.py +392 -0
  56. openhands/sdk/conversation/stuck_detector.py +311 -0
  57. openhands/sdk/conversation/title_utils.py +191 -0
  58. openhands/sdk/conversation/types.py +45 -0
  59. openhands/sdk/conversation/visualizer/__init__.py +12 -0
  60. openhands/sdk/conversation/visualizer/base.py +67 -0
  61. openhands/sdk/conversation/visualizer/default.py +373 -0
  62. openhands/sdk/critic/__init__.py +15 -0
  63. openhands/sdk/critic/base.py +38 -0
  64. openhands/sdk/critic/impl/__init__.py +12 -0
  65. openhands/sdk/critic/impl/agent_finished.py +83 -0
  66. openhands/sdk/critic/impl/empty_patch.py +49 -0
  67. openhands/sdk/critic/impl/pass_critic.py +42 -0
  68. openhands/sdk/event/__init__.py +42 -0
  69. openhands/sdk/event/base.py +149 -0
  70. openhands/sdk/event/condenser.py +82 -0
  71. openhands/sdk/event/conversation_error.py +25 -0
  72. openhands/sdk/event/conversation_state.py +104 -0
  73. openhands/sdk/event/llm_completion_log.py +39 -0
  74. openhands/sdk/event/llm_convertible/__init__.py +20 -0
  75. openhands/sdk/event/llm_convertible/action.py +139 -0
  76. openhands/sdk/event/llm_convertible/message.py +142 -0
  77. openhands/sdk/event/llm_convertible/observation.py +141 -0
  78. openhands/sdk/event/llm_convertible/system.py +61 -0
  79. openhands/sdk/event/token.py +16 -0
  80. openhands/sdk/event/types.py +11 -0
  81. openhands/sdk/event/user_action.py +21 -0
  82. openhands/sdk/git/exceptions.py +43 -0
  83. openhands/sdk/git/git_changes.py +249 -0
  84. openhands/sdk/git/git_diff.py +129 -0
  85. openhands/sdk/git/models.py +21 -0
  86. openhands/sdk/git/utils.py +189 -0
  87. openhands/sdk/hooks/__init__.py +30 -0
  88. openhands/sdk/hooks/config.py +180 -0
  89. openhands/sdk/hooks/conversation_hooks.py +227 -0
  90. openhands/sdk/hooks/executor.py +155 -0
  91. openhands/sdk/hooks/manager.py +170 -0
  92. openhands/sdk/hooks/types.py +40 -0
  93. openhands/sdk/io/__init__.py +6 -0
  94. openhands/sdk/io/base.py +48 -0
  95. openhands/sdk/io/cache.py +85 -0
  96. openhands/sdk/io/local.py +119 -0
  97. openhands/sdk/io/memory.py +54 -0
  98. openhands/sdk/llm/__init__.py +45 -0
  99. openhands/sdk/llm/exceptions/__init__.py +45 -0
  100. openhands/sdk/llm/exceptions/classifier.py +50 -0
  101. openhands/sdk/llm/exceptions/mapping.py +54 -0
  102. openhands/sdk/llm/exceptions/types.py +101 -0
  103. openhands/sdk/llm/llm.py +1140 -0
  104. openhands/sdk/llm/llm_registry.py +122 -0
  105. openhands/sdk/llm/llm_response.py +59 -0
  106. openhands/sdk/llm/message.py +656 -0
  107. openhands/sdk/llm/mixins/fn_call_converter.py +1288 -0
  108. openhands/sdk/llm/mixins/non_native_fc.py +97 -0
  109. openhands/sdk/llm/options/__init__.py +1 -0
  110. openhands/sdk/llm/options/chat_options.py +93 -0
  111. openhands/sdk/llm/options/common.py +19 -0
  112. openhands/sdk/llm/options/responses_options.py +67 -0
  113. openhands/sdk/llm/router/__init__.py +10 -0
  114. openhands/sdk/llm/router/base.py +117 -0
  115. openhands/sdk/llm/router/impl/multimodal.py +76 -0
  116. openhands/sdk/llm/router/impl/random.py +22 -0
  117. openhands/sdk/llm/streaming.py +9 -0
  118. openhands/sdk/llm/utils/metrics.py +312 -0
  119. openhands/sdk/llm/utils/model_features.py +192 -0
  120. openhands/sdk/llm/utils/model_info.py +90 -0
  121. openhands/sdk/llm/utils/model_prompt_spec.py +98 -0
  122. openhands/sdk/llm/utils/retry_mixin.py +128 -0
  123. openhands/sdk/llm/utils/telemetry.py +362 -0
  124. openhands/sdk/llm/utils/unverified_models.py +156 -0
  125. openhands/sdk/llm/utils/verified_models.py +65 -0
  126. openhands/sdk/logger/__init__.py +22 -0
  127. openhands/sdk/logger/logger.py +195 -0
  128. openhands/sdk/logger/rolling.py +113 -0
  129. openhands/sdk/mcp/__init__.py +24 -0
  130. openhands/sdk/mcp/client.py +76 -0
  131. openhands/sdk/mcp/definition.py +106 -0
  132. openhands/sdk/mcp/exceptions.py +19 -0
  133. openhands/sdk/mcp/tool.py +270 -0
  134. openhands/sdk/mcp/utils.py +83 -0
  135. openhands/sdk/observability/__init__.py +4 -0
  136. openhands/sdk/observability/laminar.py +166 -0
  137. openhands/sdk/observability/utils.py +20 -0
  138. openhands/sdk/py.typed +0 -0
  139. openhands/sdk/secret/__init__.py +19 -0
  140. openhands/sdk/secret/secrets.py +92 -0
  141. openhands/sdk/security/__init__.py +6 -0
  142. openhands/sdk/security/analyzer.py +111 -0
  143. openhands/sdk/security/confirmation_policy.py +61 -0
  144. openhands/sdk/security/llm_analyzer.py +29 -0
  145. openhands/sdk/security/risk.py +100 -0
  146. openhands/sdk/tool/__init__.py +34 -0
  147. openhands/sdk/tool/builtins/__init__.py +34 -0
  148. openhands/sdk/tool/builtins/finish.py +106 -0
  149. openhands/sdk/tool/builtins/think.py +117 -0
  150. openhands/sdk/tool/registry.py +184 -0
  151. openhands/sdk/tool/schema.py +286 -0
  152. openhands/sdk/tool/spec.py +39 -0
  153. openhands/sdk/tool/tool.py +481 -0
  154. openhands/sdk/utils/__init__.py +22 -0
  155. openhands/sdk/utils/async_executor.py +115 -0
  156. openhands/sdk/utils/async_utils.py +39 -0
  157. openhands/sdk/utils/cipher.py +68 -0
  158. openhands/sdk/utils/command.py +90 -0
  159. openhands/sdk/utils/deprecation.py +166 -0
  160. openhands/sdk/utils/github.py +44 -0
  161. openhands/sdk/utils/json.py +48 -0
  162. openhands/sdk/utils/models.py +570 -0
  163. openhands/sdk/utils/paging.py +63 -0
  164. openhands/sdk/utils/pydantic_diff.py +85 -0
  165. openhands/sdk/utils/pydantic_secrets.py +64 -0
  166. openhands/sdk/utils/truncate.py +117 -0
  167. openhands/sdk/utils/visualize.py +58 -0
  168. openhands/sdk/workspace/__init__.py +17 -0
  169. openhands/sdk/workspace/base.py +158 -0
  170. openhands/sdk/workspace/local.py +189 -0
  171. openhands/sdk/workspace/models.py +35 -0
  172. openhands/sdk/workspace/remote/__init__.py +8 -0
  173. openhands/sdk/workspace/remote/async_remote_workspace.py +149 -0
  174. openhands/sdk/workspace/remote/base.py +164 -0
  175. openhands/sdk/workspace/remote/remote_workspace_mixin.py +323 -0
  176. openhands/sdk/workspace/workspace.py +49 -0
  177. openhands_sdk-1.7.3.dist-info/METADATA +17 -0
  178. openhands_sdk-1.7.3.dist-info/RECORD +180 -0
  179. openhands_sdk-1.7.3.dist-info/WHEEL +5 -0
  180. openhands_sdk-1.7.3.dist-info/top_level.txt +1 -0
@@ -0,0 +1,49 @@
1
+ from typing import Self, overload
2
+
3
+ from openhands.sdk.logger import get_logger
4
+ from openhands.sdk.workspace.base import BaseWorkspace
5
+ from openhands.sdk.workspace.local import LocalWorkspace
6
+ from openhands.sdk.workspace.remote.base import RemoteWorkspace
7
+
8
+
9
+ logger = get_logger(__name__)
10
+
11
+
12
+ class Workspace:
13
+ """Factory entrypoint that returns a LocalWorkspace or RemoteWorkspace.
14
+
15
+ Usage:
16
+ - Workspace(working_dir=...) -> LocalWorkspace
17
+ - Workspace(working_dir=..., host="http://...") -> RemoteWorkspace
18
+ """
19
+
20
+ @overload
21
+ def __new__(
22
+ cls: type[Self],
23
+ *,
24
+ working_dir: str = "workspace/project",
25
+ ) -> LocalWorkspace: ...
26
+
27
+ @overload
28
+ def __new__(
29
+ cls: type[Self],
30
+ *,
31
+ host: str,
32
+ working_dir: str = "workspace/project",
33
+ api_key: str | None = None,
34
+ ) -> RemoteWorkspace: ...
35
+
36
+ def __new__(
37
+ cls: type[Self],
38
+ *,
39
+ host: str | None = None,
40
+ working_dir: str = "workspace/project",
41
+ api_key: str | None = None,
42
+ ) -> BaseWorkspace:
43
+ if host:
44
+ return RemoteWorkspace(
45
+ working_dir=working_dir,
46
+ host=host,
47
+ api_key=api_key,
48
+ )
49
+ return LocalWorkspace(working_dir=working_dir)
@@ -0,0 +1,17 @@
1
+ Metadata-Version: 2.4
2
+ Name: openhands-sdk
3
+ Version: 1.7.3
4
+ Summary: OpenHands SDK - Core functionality for building AI agents
5
+ Requires-Python: >=3.12
6
+ Requires-Dist: deprecation>=2.1.0
7
+ Requires-Dist: fastmcp>=2.11.3
8
+ Requires-Dist: httpx>=0.27.0
9
+ Requires-Dist: litellm>=1.80.10
10
+ Requires-Dist: pydantic>=2.11.7
11
+ Requires-Dist: python-frontmatter>=1.1.0
12
+ Requires-Dist: python-json-logger>=3.3.0
13
+ Requires-Dist: tenacity>=9.1.2
14
+ Requires-Dist: websockets>=12
15
+ Requires-Dist: lmnr>=0.7.24
16
+ Provides-Extra: boto3
17
+ Requires-Dist: boto3>=1.35.0; extra == "boto3"
@@ -0,0 +1,180 @@
1
+ openhands/sdk/__init__.py,sha256=QCJNFOXO4WsOlr3DELNxwMuIKPt_-81VZXjfbXhDw5I,2535
2
+ openhands/sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ openhands/sdk/agent/__init__.py,sha256=yOn1ZCgTTq2VJlTzKDSzmWVPli1siBzqV89vlEHCwOg,137
4
+ openhands/sdk/agent/agent.py,sha256=kLXQKIJskQ_vl5Ju4zyGfdDYN8ZPlsO3EgDxw69VDdc,25328
5
+ openhands/sdk/agent/base.py,sha256=YY7j4FBrtt7krz7PH4N7brWF46HN0dsbuwhyaIsaMr4,17953
6
+ openhands/sdk/agent/utils.py,sha256=TpANm_Vj4Ku-36T_SD1-u9Y9l86t1RcPU7QVaUh3qU0,8157
7
+ openhands/sdk/agent/prompts/in_context_learning_example.j2,sha256=MGB0dPUlh6pwLoR_dBK-M3e5dtETX6C6WNjPcPixZmU,5512
8
+ openhands/sdk/agent/prompts/in_context_learning_example_suffix.j2,sha256=k3Zwnd7Iq7kL4lo307RDuu1mxWXn6pSLsEdvKEXN3BU,164
9
+ openhands/sdk/agent/prompts/security_policy.j2,sha256=K56d2aaZ88DI-y2DsMSDaiZRTTnkkzuBLjbzXfKHGA8,993
10
+ openhands/sdk/agent/prompts/security_risk_assessment.j2,sha256=7o1tk6MIQpVD7sAES-sBhw4ckYLGQydzYnjjNitP5iY,1196
11
+ openhands/sdk/agent/prompts/self_documentation.j2,sha256=Q0nLryVYnGg8Qk056-3tW2WJ2rwBijC5iqJByEdGAT0,1063
12
+ openhands/sdk/agent/prompts/system_prompt.j2,sha256=4sIK8BvwBZI9D_WN3O2TQEDBGa_c1Tlgmj6XMuW2_dA,9071
13
+ openhands/sdk/agent/prompts/system_prompt_interactive.j2,sha256=AW3rGuqu82BqbS1XMXVO4Fp-Apa8DPYZV3_nQYkzVtM,1388
14
+ openhands/sdk/agent/prompts/system_prompt_long_horizon.j2,sha256=_oOHRIer_FSuRrBOSOPpe5Ueo9KgSTba5SPoHHpghCI,2995
15
+ openhands/sdk/agent/prompts/system_prompt_planning.j2,sha256=wh01KX7yzeUSn5PtG3Ij0keRM6vmQuZZM6I0Fod4DK4,2934
16
+ openhands/sdk/agent/prompts/system_prompt_tech_philosophy.j2,sha256=Yq9H7hHen2-tNsfBq9RlAWpyWsVRpjHhzmziZv8JHs8,5005
17
+ openhands/sdk/agent/prompts/model_specific/anthropic_claude.j2,sha256=Cf4vXqlwoh94hOsLqcuIeMailgkrbGLF9vv0wHt4eEM,379
18
+ openhands/sdk/agent/prompts/model_specific/google_gemini.j2,sha256=DvGy_9yuqeyKJ8GDF_qVpQz4ri-rSCRl1awqPE1ImSs,219
19
+ openhands/sdk/agent/prompts/model_specific/openai_gpt/gpt-5-codex.j2,sha256=5iJvfBq3okP0yBVmQe9unB4gZx22_C3Yp_GyWtfColU,312
20
+ openhands/sdk/agent/prompts/model_specific/openai_gpt/gpt-5.j2,sha256=iMnSKjg2nrFoRUCkNMlGLoMmNWv_9bzK7D82dkJZCbQ,466
21
+ openhands/sdk/context/__init__.py,sha256=r2YtpZMVFIIaKYVh2yjicTXYPURGhIUUdbliaLYbnnA,609
22
+ openhands/sdk/context/agent_context.py,sha256=BlnGNpzQ3urWTmxDV_E5I-m8ZmRlolFgTint0T96QSU,10662
23
+ openhands/sdk/context/view.py,sha256=kHhEqyLfUEcXGfG9vOSPRImQGzqkDvtjsgL5BwmcGsU,20487
24
+ openhands/sdk/context/condenser/__init__.py,sha256=o3O5wEOUak7mzJ3EzY4s6pjUwA_Q5EzLvgNSFM46d50,490
25
+ openhands/sdk/context/condenser/base.py,sha256=lA1OAwSVIXU1GCfvD5_NE5U6hNCYJGuE3G5BaqIPnFM,4007
26
+ openhands/sdk/context/condenser/llm_summarizing_condenser.py,sha256=lyvW39Xzne7zBE9qSAFPkbiTxfocTxcw8dK7gha95mM,9550
27
+ openhands/sdk/context/condenser/no_op_condenser.py,sha256=T87bTtJw4dqlOIZZZ4R_JFPXeSymDqlbsZtH6ng7N1E,474
28
+ openhands/sdk/context/condenser/pipeline_condenser.py,sha256=wkbEA6R8u8u3Wi1AQmx1AKF9hQ25dLSeKuvB56N1Ohc,2145
29
+ openhands/sdk/context/condenser/utils.py,sha256=kI4oechGeozHRTFPcq6UVbGgLL-6msR3D2-4fPssFVU,5599
30
+ openhands/sdk/context/condenser/prompts/summarizing_prompt.j2,sha256=J7uwQAsrrZdliYRJt9wKg9pYlXaa9sNze4ipMRkeqnQ,2157
31
+ openhands/sdk/context/prompts/__init__.py,sha256=wC1Qiak4RHY3YS0TuZRmhFGAJ7Vc6CLwvQ4KQJB5o84,104
32
+ openhands/sdk/context/prompts/prompt.py,sha256=8ZV9C0lg9Lnw7lF5zLnLTF9nL6gTnW5vGIw1YxtRQBU,3724
33
+ openhands/sdk/context/prompts/templates/ask_agent_template.j2,sha256=VRKWdF2VTJ_Tyway_Wexp8_KlNgAkME94eZelbbsEZI,212
34
+ openhands/sdk/context/prompts/templates/skill_knowledge_info.j2,sha256=3yNxEEbScAU1w60ix7Ph91wr6p8mjwT-3EGkkZkWT9Q,261
35
+ openhands/sdk/context/prompts/templates/system_message_suffix.j2,sha256=_UYK1BZrZaO5BQKO99b_nbs_cyEhO9RdZcGaBqYwmc0,2180
36
+ openhands/sdk/context/skills/__init__.py,sha256=yGLI8A3JHIvipjdZ7ClcbU5Q-vqWQHsZWxNQeoSTW8g,645
37
+ openhands/sdk/context/skills/exceptions.py,sha256=tVBSbXTXG32nb1TebVAuzbNNHvn8GScpSM1bHCnQzvY,305
38
+ openhands/sdk/context/skills/skill.py,sha256=MjPRYEiGyXVgO1cfhM4UkVgfR9VmJv-Y1BDgN6sXS98,25976
39
+ openhands/sdk/context/skills/trigger.py,sha256=ZGaDmMpJghnAEuTTYX6UepsA5nX1CSz83zK1Ox46vMk,756
40
+ openhands/sdk/context/skills/types.py,sha256=qdakWgfs_88I_cnmVhO5bl3C3s11GvCydq7Q-V53kCI,1662
41
+ openhands/sdk/conversation/__init__.py,sha256=1-xh49S2KJhtAjkHDaDHU28UWhfQLl3CeFlo179gr00,1402
42
+ openhands/sdk/conversation/base.py,sha256=sVpfqtyTVi7_d8rzI_gemZGHusVrNy9S_yNJmTGMEq8,8964
43
+ openhands/sdk/conversation/conversation.py,sha256=KN4mqYqrzc5LWksliDmRV-wNg1FdF0IVyaopOKeajas,6079
44
+ openhands/sdk/conversation/conversation_stats.py,sha256=ZlQ99kgG5YVCrZ4rqJlq63JaiInxX8jqv-q5lS7RN68,3038
45
+ openhands/sdk/conversation/event_store.py,sha256=he-bwP823s5zAIdua_0ZgkkHQCJoAqbtV2SN0hibX30,5207
46
+ openhands/sdk/conversation/events_list_base.py,sha256=n_YvgbhBPOPDbw4Kp68J0EKFM39vg95ng09GMfTz29s,505
47
+ openhands/sdk/conversation/exceptions.py,sha256=9XkDVj2Q1PbB9GAIPLQ03M-r0r94ZRY1PmKZpSTDCY8,1757
48
+ openhands/sdk/conversation/fifo_lock.py,sha256=nY5RsobNvVXBbAzwjqIxyQwPUh0AzffbTZw4PewhTTI,4240
49
+ openhands/sdk/conversation/persistence_const.py,sha256=om3pOQa5sGK8t_NUYb3Tz-7sKeu531gaS1e7iCaqWmo,218
50
+ openhands/sdk/conversation/response_utils.py,sha256=rPlC3cDSmoQte6NZ0kK6h6-9ho5cbF8jEw-DiyEhgIM,1548
51
+ openhands/sdk/conversation/secret_registry.py,sha256=6fY1zRxb55rC4uIMFcR0lDssIyyjaPh9pCWGqDikrek,4446
52
+ openhands/sdk/conversation/serialization_diff.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
+ openhands/sdk/conversation/state.py,sha256=vq9t8mu9eTmFm77K0fPZvrhhGmj6eaTmSQD6xu_3d3U,14760
54
+ openhands/sdk/conversation/stuck_detector.py,sha256=4UNU7Bh9M2yrw3RavMzZeFGQ5RutqavkckW3exFPqQw,11673
55
+ openhands/sdk/conversation/title_utils.py,sha256=j40-dP-Oes-mhU2xUC7fCC8cB0wkMdbbDJU7WLHiVIo,7063
56
+ openhands/sdk/conversation/types.py,sha256=q_yc3VNc8r3cdmvPXzpj7HvdLeDqv-37hCgOWMU65a4,1507
57
+ openhands/sdk/conversation/impl/__init__.py,sha256=DmDFyNR4RU8eiMocKf2j9eBQomipP-rrJgU1LoVWTDA,220
58
+ openhands/sdk/conversation/impl/local_conversation.py,sha256=YZUwl0-uRa0aR29qJWon7nt4Ul2M1V0R_1mtJUBSfyE,27599
59
+ openhands/sdk/conversation/impl/remote_conversation.py,sha256=Dd53dTrsRb38SLuMG3n1b0I7AZwDSMb3P7BhqR0wQgg,36302
60
+ openhands/sdk/conversation/visualizer/__init__.py,sha256=0LXpKlt2eJcrqP1z6jQP_nLx23V8ErnQkKYSxvUp0_A,275
61
+ openhands/sdk/conversation/visualizer/base.py,sha256=77DdRdHAPSESxRCYyRRSOK7ROBlljscxogkFFr4YgM0,2323
62
+ openhands/sdk/conversation/visualizer/default.py,sha256=k-3-l1j8H_EOEn_pfzsUczcc4JDhQni7AUQZgZ2TpB4,11885
63
+ openhands/sdk/critic/__init__.py,sha256=gb6gtnUGMkWHkRnNRdV0lR6Mxa43nLfELY9nxso40Wo,291
64
+ openhands/sdk/critic/base.py,sha256=9Rm5Sq3GWzFSi5KFBtmZgDlpCl997PUrpPTBlMQatjA,1094
65
+ openhands/sdk/critic/impl/__init__.py,sha256=WcLchRYwxMvfQPVhnb9BCK_Ue1ZWh8WT0Pu13dkQuSE,324
66
+ openhands/sdk/critic/impl/agent_finished.py,sha256=Je8ZLpWlohXA7JWrer7FBbbViiWqbeVDPIBvBQPAGHY,2935
67
+ openhands/sdk/critic/impl/empty_patch.py,sha256=_fvVq77DFye9hS5vAodUa14LMCzG8VrhNqo22jLJ77Y,1566
68
+ openhands/sdk/critic/impl/pass_critic.py,sha256=kikTVZmve0DCTkQnhRutdUSff0OLbqH0WqRxGXP103Y,1239
69
+ openhands/sdk/event/__init__.py,sha256=ir-jRVA0QjEbFuDzJOYRq2kXTgUHs8eJ7_skoCRNzr8,1141
70
+ openhands/sdk/event/base.py,sha256=QpQtYfYiZqaKWA-2xa4GEmk2qkUHKD6x-OIAk7SMnDs,5568
71
+ openhands/sdk/event/condenser.py,sha256=sne9CxhhNq9UvJMKuKcw8tXuMgutuGh85TbbZHwYhPQ,2481
72
+ openhands/sdk/event/conversation_error.py,sha256=gZMyliJx1xbyoJFYH0-AEHqznyiA8LZ7olPSidaNfuc,957
73
+ openhands/sdk/event/conversation_state.py,sha256=V-ti5SLL5SL330sEOQgpy-U8tErVwZYG0iC3AqjTUwo,3650
74
+ openhands/sdk/event/llm_completion_log.py,sha256=VCxJiZBsn1F6TRV6fwvsPs6W9DpjghfIFmJJlGKztXg,1232
75
+ openhands/sdk/event/token.py,sha256=QlEbBrfZaHe9tp8-Ot4vTd0T-_Vj7lpUqKfVJcVHOeI,497
76
+ openhands/sdk/event/types.py,sha256=3hyFDBNtYTGEwLV6muodJO7iDMoZTC4D0Dd4vYeF2dE,271
77
+ openhands/sdk/event/user_action.py,sha256=JnU5LDYY1aMgSSEPkSz5wrQ6XScHKcdsFi_tnjcWO9U,661
78
+ openhands/sdk/event/llm_convertible/__init__.py,sha256=04kTm2F3M8oGpkBbePb35R1jpd5ZpA-XYWHMYyJ46sQ,553
79
+ openhands/sdk/event/llm_convertible/action.py,sha256=EY55De2QFtsHN9a5vDYmIY3jZGucjj6LuJj5BjIvXKo,5485
80
+ openhands/sdk/event/llm_convertible/message.py,sha256=yeEI2zy3IuOu2fAyCkr8fhdn6qwiLcgR4MYAot4CGpw,5048
81
+ openhands/sdk/event/llm_convertible/observation.py,sha256=LF09On5eI9Cadb_yK4bhh_-pvnf5onsr-MzayL0r0h0,5045
82
+ openhands/sdk/event/llm_convertible/system.py,sha256=iGyizThTd8lxekgHK7E-4Z5xTF_Zb7_y7J9zAitL7lI,2332
83
+ openhands/sdk/git/exceptions.py,sha256=T3_jdOzilK39y1_ilMQ3Z3RSkxHJZafUoZTzOiuGji0,991
84
+ openhands/sdk/git/git_changes.py,sha256=RQwva8j5mq09WoTrmNcZMBHrGUzn0CPYilW6k1kJCD0,8339
85
+ openhands/sdk/git/git_diff.py,sha256=osaSys05wp9i-_KqfcYEHhNFzzU0B2qCn9vChfRPL0g,3820
86
+ openhands/sdk/git/models.py,sha256=himUK-g49iQHMBfJlVr4tTUOXQhudJUR-vcntTeFkPM,349
87
+ openhands/sdk/git/utils.py,sha256=Ep0DEFGs3hon9cX166RxtJCLQqbA-JXcKo2kNGGHhoA,6338
88
+ openhands/sdk/hooks/__init__.py,sha256=J2ZO0Ajnw6IDbrDuA1BtXlzoGkSIZ3VcF0Haihgd8pE,854
89
+ openhands/sdk/hooks/config.py,sha256=QeUA2joRglX-fXazoSXpZLrKpQO9jwW7htNQ_D5WtFU,5964
90
+ openhands/sdk/hooks/conversation_hooks.py,sha256=j8Ok16kuHn-0EVP9IKOBfReirBZ8ZDlmI1G5lC_KZxA,8741
91
+ openhands/sdk/hooks/executor.py,sha256=K-nE92r_6dsNV_ISEhoqIyxGvYzD9wgwSyHFM456NX4,5016
92
+ openhands/sdk/hooks/manager.py,sha256=woce5tBGaygQvKL_p3K77Xq9K8QMwsbZYjEmDCGHoIY,5864
93
+ openhands/sdk/hooks/types.py,sha256=ZQp2_HVvOWI9YQPZInFJ0QdhpKo4UxGmq4YLYz9zfOY,1066
94
+ openhands/sdk/io/__init__.py,sha256=6pXTWP03Wn5S7b6fOT0g3PYn-qSoEGGdrrwBqALYGA4,165
95
+ openhands/sdk/io/base.py,sha256=kAcX0chfCswakiieJlKiHWoJgL3zOtaQauRqMPNYfW8,1355
96
+ openhands/sdk/io/cache.py,sha256=TZD9Px-WK303WGjm5nin9n3TCKGiAJ-PIqrM5MFeg5c,2908
97
+ openhands/sdk/io/local.py,sha256=IhU4OLP3-S8UCCWTm_xqw7XDYgeYms77b6I_FhZq0iU,4232
98
+ openhands/sdk/io/memory.py,sha256=XIsdXsSyF-PzoYVmvJuO7Vtz-k3D5jMOFoZ5gHw8tbA,1712
99
+ openhands/sdk/llm/__init__.py,sha256=k8UneyfoDUMe0lSP4GSlYzrL2Fe3MkDUKpSg2OIDi_I,1206
100
+ openhands/sdk/llm/llm.py,sha256=bvUoK9e0qH6yhT3JmB1TjeH-aYJWunVL4t9EoPMoJnY,44706
101
+ openhands/sdk/llm/llm_registry.py,sha256=DL9yqSbAM7OBkzdIChLuxG2qk_oElW2tC2xem6mq0F8,3530
102
+ openhands/sdk/llm/llm_response.py,sha256=DaBVBkij4Sz-RsYhRb3UUcvJCTzCBcOYQ9IhFwN4ukI,1988
103
+ openhands/sdk/llm/message.py,sha256=Tw7sIw5A-rZqIH8dPI0UnoXf0KuPB8tURcJMQyv9JZg,25507
104
+ openhands/sdk/llm/streaming.py,sha256=tFJ7B0AjJ-e8Xv13DTtc2FdrsLRUCG8wxQex8fDlOp4,214
105
+ openhands/sdk/llm/exceptions/__init__.py,sha256=6iMJah2nS6BboU06HqgAM2JT6aykCWY8muoUwaaJpR8,1144
106
+ openhands/sdk/llm/exceptions/classifier.py,sha256=pu5fVNubUrB3eXV1i5W7m4-D4Ik2Z-fGe1ba2t0SSc4,1456
107
+ openhands/sdk/llm/exceptions/mapping.py,sha256=D68duh85HPONw5P0Mv4e8Ji-ubi6qWEb2d9FkOKf8cA,1656
108
+ openhands/sdk/llm/exceptions/types.py,sha256=IfyRtfH5eJrsLOlp6Fz76CiCKjx1ukmXciIcLBjworU,2781
109
+ openhands/sdk/llm/mixins/fn_call_converter.py,sha256=xlYywDHYMhVQyd_CiTuoY1JHaqpEIEjsZknCJN_hFFE,48528
110
+ openhands/sdk/llm/mixins/non_native_fc.py,sha256=KL2-rCh9uNz5WDskP7rc2uv1xOzZWgvffWqPaGbYvtw,3408
111
+ openhands/sdk/llm/options/__init__.py,sha256=EntvOWC5kwDoTMXXMkYuoWMQ13hD8YtC9CEMCtnKj7o,54
112
+ openhands/sdk/llm/options/chat_options.py,sha256=YrQrMKUj9Sb0ZdzJMoB11PwD7hzdLBDGrOMWfgZQ10s,3452
113
+ openhands/sdk/llm/options/common.py,sha256=qFcPuZF_c4rmH1bgGG8Qp6TJ4YWpv9IFzfLZRRiik9M,580
114
+ openhands/sdk/llm/options/responses_options.py,sha256=1ff_06XcORneDQUjwrEM6tel9HLI9_veMcoKHYAKLG8,2302
115
+ openhands/sdk/llm/router/__init__.py,sha256=N8qldpGdLLCWZzn5Rz2y8AheSoCTQLGkLOBDCFNMJRA,261
116
+ openhands/sdk/llm/router/base.py,sha256=9mUUpv-zgT6HVKmJ87Q5e5VncoKi8hHd9aP8j9cJI_g,4139
117
+ openhands/sdk/llm/router/impl/multimodal.py,sha256=uKFVm7b3Jr0xCC1lvP-cVn-fIkTv24-pK3xKlOJahz4,3034
118
+ openhands/sdk/llm/router/impl/random.py,sha256=oBHoFTBMa9OeDyg-rV4siLCkN6rKYL0uDlZMEseB3ro,656
119
+ openhands/sdk/llm/utils/metrics.py,sha256=4zD0Hkc9Oc4qcDcVZUX13RyggyObshUbz4Ik9W1uIw4,11592
120
+ openhands/sdk/llm/utils/model_features.py,sha256=vAsRbD0dTIVM7SZUjO3Vwyd2CfDYxcR8zy7KWzkt5e0,6215
121
+ openhands/sdk/llm/utils/model_info.py,sha256=1mFYA7OcEyUB6k1doao8_w1XT7UMM_DAm57HcTpKkLw,2628
122
+ openhands/sdk/llm/utils/model_prompt_spec.py,sha256=onw9-y7x0aJS8IOjNzeqhdvcFNwK1l_s0XgurWlnj5o,2587
123
+ openhands/sdk/llm/utils/retry_mixin.py,sha256=M-hXp8EwP1FjNN6tgHiv133BtUQgRr9Kz_ZWxeAJLGA,4765
124
+ openhands/sdk/llm/utils/telemetry.py,sha256=_csSRWg80djE27QN9Mg3palVTP-LJ7BbttOaHQYykZU,13970
125
+ openhands/sdk/llm/utils/unverified_models.py,sha256=SmYrX_WxXOJBanTviztqy1xPjOcLY4i3qvwNBEga_Dk,4797
126
+ openhands/sdk/llm/utils/verified_models.py,sha256=4rUtUdRaVx0ZR6V1WsaWAMlgO7SkDdG4yoVgXHj689U,1462
127
+ openhands/sdk/logger/__init__.py,sha256=vZvFDYfW01Y8Act3tveMs3XxTysJlt4HeT-n6X_ujYk,330
128
+ openhands/sdk/logger/logger.py,sha256=en8SHzFC2baohQmqbgE8t0mvV_xMZQrILEycOzdAZL0,6511
129
+ openhands/sdk/logger/rolling.py,sha256=E6oy0asgmOhZHoWlSCw0QK1PKnS6kvtxjoWLAsqlGvs,3440
130
+ openhands/sdk/mcp/__init__.py,sha256=-wQbZ405PjVRCBtSfirp4jsiRohd7IJAyAdicZ-M8Ok,588
131
+ openhands/sdk/mcp/client.py,sha256=CLkFImydorlT_RBTE5UxvRNGMlc-uO3wvupoDzB5E20,2420
132
+ openhands/sdk/mcp/definition.py,sha256=vFLQeLW99fBzPGR7X7_1GzTmIHlSVAbmsg3elhhkp5U,3424
133
+ openhands/sdk/mcp/exceptions.py,sha256=N4g7Wju420TQJ7hmck1e5UblWbC_7Torb-UTFj1GN70,448
134
+ openhands/sdk/mcp/tool.py,sha256=GJElHJ7gVLSfAacmaHm2PHHiV9Gb1_siu1PQrDJo7_U,10187
135
+ openhands/sdk/mcp/utils.py,sha256=AazuWwhEwHBs1JKXfNVJDArkgQfmuj4MrPQwxDo52ds,2919
136
+ openhands/sdk/observability/__init__.py,sha256=JKHDWoj01igaCUChdXgKmstESiMmbAK9CN5XzT2H7fo,122
137
+ openhands/sdk/observability/laminar.py,sha256=U2AbSWpPcUYdrzx__-BEg4LPW13f1l-Hk-V4qeBmE3k,5053
138
+ openhands/sdk/observability/utils.py,sha256=N0p8ACs2WKS1PyFPjiU-PPng6WsAe15ZpFViFAw1gO0,576
139
+ openhands/sdk/secret/__init__.py,sha256=Y-M2WPfYLfVYZSFZGTf6MDOnjsL5SayETtA4t9X0gjw,348
140
+ openhands/sdk/secret/secrets.py,sha256=1PkD9oXJJlPgsN4D3brv3_HjIc2IQGy5BbcqZKJ_8Ew,2737
141
+ openhands/sdk/security/__init__.py,sha256=x2-a0fsImxSM2msHl7gV0fENWyZbpY7-HW_CBwNrPZY,89
142
+ openhands/sdk/security/analyzer.py,sha256=V6Fowh83sfEr1SdwK3UW1PNQHahHxwHfla0KndTombk,3994
143
+ openhands/sdk/security/confirmation_policy.py,sha256=bsrIOfo3QOXNyKrmUVzQz070F3xbJ7uZp9WTr4RMdl8,2145
144
+ openhands/sdk/security/llm_analyzer.py,sha256=wb7VNJjzlKkimh1mR2wpn6LSqBdo3GZJqhWQp8qyky4,1108
145
+ openhands/sdk/security/risk.py,sha256=4I1zPCQa-PLlez7so8IYqY8bSvqHrxu-hzbix7GrxIE,3497
146
+ openhands/sdk/tool/__init__.py,sha256=Fpcy_I5CYC8lDf2KNLj7LJg9YpoDObbacMFOvM9fI5g,692
147
+ openhands/sdk/tool/registry.py,sha256=vA7DpN9RfKFRS3PibjEf_Z4coCcMbhOcgUUXcnTYFC8,6272
148
+ openhands/sdk/tool/schema.py,sha256=w8J3UQtdE3vgh_8jRVXLzGYPOhmPn9n-YHBAnxt79Y0,9500
149
+ openhands/sdk/tool/spec.py,sha256=EbtWasVhwjLKNJywHubbwfYqfgXnZbU4QE6XUOLhsdk,1221
150
+ openhands/sdk/tool/tool.py,sha256=UrsUiBmywGXtCKlGCxSF650wSx9kX76RpaTs6U3Jb5w,17796
151
+ openhands/sdk/tool/builtins/__init__.py,sha256=30MfENomH9JBPwKs03Xwgny09dDUOt3FSIQ3egRJKhM,729
152
+ openhands/sdk/tool/builtins/finish.py,sha256=pPv_bKDOQE4sUK9lNh1H1lDaxavHozjOwLCIuYrb424,3136
153
+ openhands/sdk/tool/builtins/think.py,sha256=Jp8CBHJZwrtNuVCLrxKlVwb9HeQ1lZB56PCYMxW3wWk,4050
154
+ openhands/sdk/utils/__init__.py,sha256=81qUukQiVDos57kbtZfFGZ3i0zX-t1eSI0J8UZN4fP4,448
155
+ openhands/sdk/utils/async_executor.py,sha256=1MjdhO9zgcwZSmPDJrqaha4XCGnnON9duxlOU3Kl6CI,3408
156
+ openhands/sdk/utils/async_utils.py,sha256=LN_kg1YwHwDfZlwiVkNQPiYMcJVoiuATkDy3nOQlT64,1187
157
+ openhands/sdk/utils/cipher.py,sha256=YgumKR7mVdXuyoy0MAhcOXwRu7VUF3xFnTKNQPDQMjo,2363
158
+ openhands/sdk/utils/command.py,sha256=iqTdFL9tPQ0gyq5w_HOMXSSHg1nowtrWwJBeDL87lZs,2480
159
+ openhands/sdk/utils/deprecation.py,sha256=7XwepMKTwBLaqS-4rdJupKxNZkepV0Mrru3uTQukS0k,5114
160
+ openhands/sdk/utils/github.py,sha256=l-_LQKw820dA_U8NmDdmaReAPhgMAWqfH1oRMi1q5OA,1638
161
+ openhands/sdk/utils/json.py,sha256=hHAA7i7NCJrQhb5WWSsoT0nvmJUi0koyBdbviFrfdcM,1384
162
+ openhands/sdk/utils/models.py,sha256=kQn1-pLBv44tMBAdMSicV7hb5AKpmMQp7NTim1N_Au4,20696
163
+ openhands/sdk/utils/paging.py,sha256=pgSQTe8_pArNjW8jwIyB3XKK04cf4knRHZbgrJrCm8Y,1962
164
+ openhands/sdk/utils/pydantic_diff.py,sha256=vOy4M1XKKDkCzp7RXBvnibvPYWL8fNEDtWNUn_-N1yg,2732
165
+ openhands/sdk/utils/pydantic_secrets.py,sha256=B9njRdijnqO4g-GDCWRsWd-TZc5GTjMncDEPMFP_aUE,2186
166
+ openhands/sdk/utils/truncate.py,sha256=LYRA45CBR7daSC03gs80nu7PYdROh943_niOpaoquKU,4390
167
+ openhands/sdk/utils/visualize.py,sha256=4x32eU-OiSZTKpXWIche7QppMS1vxcZjP-kASqE99X4,2004
168
+ openhands/sdk/workspace/__init__.py,sha256=09huA83IZJZU8XZSVzSgZwfUv-slzYwofnUjLgqt7B8,401
169
+ openhands/sdk/workspace/base.py,sha256=4_oBXbjspa2Oh2wpgbcQMyrshi7prhmOL1LY97NowgQ,4590
170
+ openhands/sdk/workspace/local.py,sha256=N_cW_E5BfctIpgwU-OcRQIqKLn4ibxNwjL4c8iYjU6E,6253
171
+ openhands/sdk/workspace/models.py,sha256=ORFn70kXvD0urjeq59d_XqXBYSHbDYkBMg9KYQKRa5I,1304
172
+ openhands/sdk/workspace/workspace.py,sha256=Of1r2z3W_pXSgV8u10sUQ87ChtaA5khD6HJ_PtJz6aY,1296
173
+ openhands/sdk/workspace/remote/__init__.py,sha256=eKkj6NOESMUBGDVC6_L2Wfuc4K6G-mpnJDNHKBkSeUI,114
174
+ openhands/sdk/workspace/remote/async_remote_workspace.py,sha256=ftv1Vdx4mmM3AjygJpemMJGvhaQel7ORxdQVk12z4ZE,5061
175
+ openhands/sdk/workspace/remote/base.py,sha256=72C9MZV7ch5n6oHNvFMo6irW7b6Le8n4gk3yFuc0798,5605
176
+ openhands/sdk/workspace/remote/remote_workspace_mixin.py,sha256=CzHfnLUIra5sgPkP9kcggb1vHGOPpYQzLsHvGO2rRt0,10963
177
+ openhands_sdk-1.7.3.dist-info/METADATA,sha256=wXaM1ijOMJnps6Kpyj_S73I-GbHH6boWth5EpYU9ljc,546
178
+ openhands_sdk-1.7.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
179
+ openhands_sdk-1.7.3.dist-info/top_level.txt,sha256=jHgVu9I0Blam8BXFgedoGKfglPF8XvW1TsJFIjcgP4E,10
180
+ openhands_sdk-1.7.3.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1 @@
1
+ openhands