openhands-sdk 1.7.3__py3-none-any.whl → 1.8.0__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.
- openhands/sdk/__init__.py +2 -0
- openhands/sdk/agent/agent.py +31 -1
- openhands/sdk/agent/base.py +111 -67
- openhands/sdk/agent/prompts/system_prompt.j2 +1 -1
- openhands/sdk/agent/utils.py +3 -0
- openhands/sdk/context/agent_context.py +45 -3
- openhands/sdk/context/condenser/__init__.py +2 -0
- openhands/sdk/context/condenser/base.py +59 -8
- openhands/sdk/context/condenser/llm_summarizing_condenser.py +38 -10
- openhands/sdk/context/prompts/templates/skill_knowledge_info.j2 +4 -0
- openhands/sdk/context/prompts/templates/system_message_suffix.j2 +9 -0
- openhands/sdk/context/skills/__init__.py +12 -0
- openhands/sdk/context/skills/skill.py +425 -228
- openhands/sdk/context/skills/types.py +4 -0
- openhands/sdk/context/skills/utils.py +442 -0
- openhands/sdk/context/view.py +2 -0
- openhands/sdk/conversation/impl/local_conversation.py +42 -14
- openhands/sdk/conversation/impl/remote_conversation.py +99 -55
- openhands/sdk/conversation/state.py +54 -18
- openhands/sdk/event/llm_convertible/action.py +20 -0
- openhands/sdk/git/utils.py +31 -6
- openhands/sdk/hooks/conversation_hooks.py +57 -10
- openhands/sdk/llm/llm.py +59 -76
- openhands/sdk/llm/options/chat_options.py +4 -1
- openhands/sdk/llm/router/base.py +12 -0
- openhands/sdk/llm/utils/telemetry.py +2 -2
- openhands/sdk/llm/utils/verified_models.py +1 -1
- openhands/sdk/mcp/tool.py +3 -1
- openhands/sdk/plugin/__init__.py +22 -0
- openhands/sdk/plugin/plugin.py +299 -0
- openhands/sdk/plugin/types.py +226 -0
- openhands/sdk/tool/__init__.py +7 -1
- openhands/sdk/tool/builtins/__init__.py +4 -0
- openhands/sdk/tool/schema.py +6 -3
- openhands/sdk/tool/tool.py +60 -9
- openhands/sdk/utils/models.py +198 -472
- openhands/sdk/workspace/base.py +22 -0
- openhands/sdk/workspace/local.py +16 -0
- openhands/sdk/workspace/remote/async_remote_workspace.py +16 -0
- openhands/sdk/workspace/remote/base.py +16 -0
- {openhands_sdk-1.7.3.dist-info → openhands_sdk-1.8.0.dist-info}/METADATA +2 -2
- {openhands_sdk-1.7.3.dist-info → openhands_sdk-1.8.0.dist-info}/RECORD +44 -40
- {openhands_sdk-1.7.3.dist-info → openhands_sdk-1.8.0.dist-info}/WHEEL +0 -0
- {openhands_sdk-1.7.3.dist-info → openhands_sdk-1.8.0.dist-info}/top_level.txt +0 -0
openhands/sdk/workspace/base.py
CHANGED
|
@@ -156,3 +156,25 @@ class BaseWorkspace(DiscriminatedUnionMixin, ABC):
|
|
|
156
156
|
Raises:
|
|
157
157
|
Exception: If path is not a git repository or getting diff failed
|
|
158
158
|
"""
|
|
159
|
+
|
|
160
|
+
def pause(self) -> None:
|
|
161
|
+
"""Pause the workspace to conserve resources.
|
|
162
|
+
|
|
163
|
+
For local workspaces, this is a no-op.
|
|
164
|
+
For container-based workspaces, this pauses the container.
|
|
165
|
+
|
|
166
|
+
Raises:
|
|
167
|
+
NotImplementedError: If the workspace type does not support pausing.
|
|
168
|
+
"""
|
|
169
|
+
raise NotImplementedError(f"{type(self).__name__} does not support pause()")
|
|
170
|
+
|
|
171
|
+
def resume(self) -> None:
|
|
172
|
+
"""Resume a paused workspace.
|
|
173
|
+
|
|
174
|
+
For local workspaces, this is a no-op.
|
|
175
|
+
For container-based workspaces, this resumes the container.
|
|
176
|
+
|
|
177
|
+
Raises:
|
|
178
|
+
NotImplementedError: If the workspace type does not support resuming.
|
|
179
|
+
"""
|
|
180
|
+
raise NotImplementedError(f"{type(self).__name__} does not support resume()")
|
openhands/sdk/workspace/local.py
CHANGED
|
@@ -187,3 +187,19 @@ class LocalWorkspace(BaseWorkspace):
|
|
|
187
187
|
"""
|
|
188
188
|
path = Path(self.working_dir) / path
|
|
189
189
|
return get_git_diff(path)
|
|
190
|
+
|
|
191
|
+
def pause(self) -> None:
|
|
192
|
+
"""Pause the workspace (no-op for local workspaces).
|
|
193
|
+
|
|
194
|
+
Local workspaces have nothing to pause since they operate directly
|
|
195
|
+
on the host filesystem.
|
|
196
|
+
"""
|
|
197
|
+
logger.debug("pause() called on LocalWorkspace - nothing to do")
|
|
198
|
+
|
|
199
|
+
def resume(self) -> None:
|
|
200
|
+
"""Resume the workspace (no-op for local workspaces).
|
|
201
|
+
|
|
202
|
+
Local workspaces have nothing to resume since they operate directly
|
|
203
|
+
on the host filesystem.
|
|
204
|
+
"""
|
|
205
|
+
logger.debug("resume() called on LocalWorkspace - nothing to do")
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from collections.abc import Generator
|
|
2
2
|
from pathlib import Path
|
|
3
3
|
from typing import Any
|
|
4
|
+
from urllib.request import urlopen
|
|
4
5
|
|
|
5
6
|
import httpx
|
|
6
7
|
from pydantic import PrivateAttr
|
|
@@ -147,3 +148,18 @@ class AsyncRemoteWorkspace(RemoteWorkspaceMixin):
|
|
|
147
148
|
generator = self._git_diff_generator(path)
|
|
148
149
|
result = await self._execute(generator)
|
|
149
150
|
return result
|
|
151
|
+
|
|
152
|
+
@property
|
|
153
|
+
def alive(self) -> bool:
|
|
154
|
+
"""Check if the remote workspace is alive by querying the health endpoint.
|
|
155
|
+
|
|
156
|
+
Returns:
|
|
157
|
+
True if the health endpoint returns a successful response, False otherwise.
|
|
158
|
+
"""
|
|
159
|
+
try:
|
|
160
|
+
health_url = f"{self.host}/health"
|
|
161
|
+
with urlopen(health_url, timeout=5.0) as resp:
|
|
162
|
+
status = getattr(resp, "status", 200)
|
|
163
|
+
return 200 <= status < 300
|
|
164
|
+
except Exception:
|
|
165
|
+
return False
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from collections.abc import Generator
|
|
2
2
|
from pathlib import Path
|
|
3
3
|
from typing import Any
|
|
4
|
+
from urllib.request import urlopen
|
|
4
5
|
|
|
5
6
|
import httpx
|
|
6
7
|
from pydantic import PrivateAttr
|
|
@@ -162,3 +163,18 @@ class RemoteWorkspace(RemoteWorkspaceMixin, BaseWorkspace):
|
|
|
162
163
|
generator = self._git_diff_generator(path)
|
|
163
164
|
result = self._execute(generator)
|
|
164
165
|
return result
|
|
166
|
+
|
|
167
|
+
@property
|
|
168
|
+
def alive(self) -> bool:
|
|
169
|
+
"""Check if the remote workspace is alive by querying the health endpoint.
|
|
170
|
+
|
|
171
|
+
Returns:
|
|
172
|
+
True if the health endpoint returns a successful response, False otherwise.
|
|
173
|
+
"""
|
|
174
|
+
try:
|
|
175
|
+
health_url = f"{self.host}/health"
|
|
176
|
+
with urlopen(health_url, timeout=5.0) as resp:
|
|
177
|
+
status = getattr(resp, "status", 200)
|
|
178
|
+
return 200 <= status < 300
|
|
179
|
+
except Exception:
|
|
180
|
+
return False
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openhands-sdk
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.8.0
|
|
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
|
|
7
7
|
Requires-Dist: fastmcp>=2.11.3
|
|
8
8
|
Requires-Dist: httpx>=0.27.0
|
|
9
9
|
Requires-Dist: litellm>=1.80.10
|
|
10
|
-
Requires-Dist: pydantic>=2.
|
|
10
|
+
Requires-Dist: pydantic>=2.12.5
|
|
11
11
|
Requires-Dist: python-frontmatter>=1.1.0
|
|
12
12
|
Requires-Dist: python-json-logger>=3.3.0
|
|
13
13
|
Requires-Dist: tenacity>=9.1.2
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
openhands/sdk/__init__.py,sha256=
|
|
1
|
+
openhands/sdk/__init__.py,sha256=FNRcPyCbvwYGrbSCxox_UWIHK5JuyCLHCyPLPZRd5sA,2589
|
|
2
2
|
openhands/sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
3
|
openhands/sdk/agent/__init__.py,sha256=yOn1ZCgTTq2VJlTzKDSzmWVPli1siBzqV89vlEHCwOg,137
|
|
4
|
-
openhands/sdk/agent/agent.py,sha256=
|
|
5
|
-
openhands/sdk/agent/base.py,sha256=
|
|
6
|
-
openhands/sdk/agent/utils.py,sha256=
|
|
4
|
+
openhands/sdk/agent/agent.py,sha256=X00fM2FSjlZF36Y5E_-JkYS-n_x5RoEupTj2Rp6Gj_k,26361
|
|
5
|
+
openhands/sdk/agent/base.py,sha256=ctAB3MnbnDLLLg1xlWJw6AovK494wiQrFigT57Eo_Z0,18991
|
|
6
|
+
openhands/sdk/agent/utils.py,sha256=AY_7VBFaJ2iorfh0MiS-mXaK6f8ONDejNcbkde_xTGg,8274
|
|
7
7
|
openhands/sdk/agent/prompts/in_context_learning_example.j2,sha256=MGB0dPUlh6pwLoR_dBK-M3e5dtETX6C6WNjPcPixZmU,5512
|
|
8
8
|
openhands/sdk/agent/prompts/in_context_learning_example_suffix.j2,sha256=k3Zwnd7Iq7kL4lo307RDuu1mxWXn6pSLsEdvKEXN3BU,164
|
|
9
9
|
openhands/sdk/agent/prompts/security_policy.j2,sha256=K56d2aaZ88DI-y2DsMSDaiZRTTnkkzuBLjbzXfKHGA8,993
|
|
10
10
|
openhands/sdk/agent/prompts/security_risk_assessment.j2,sha256=7o1tk6MIQpVD7sAES-sBhw4ckYLGQydzYnjjNitP5iY,1196
|
|
11
11
|
openhands/sdk/agent/prompts/self_documentation.j2,sha256=Q0nLryVYnGg8Qk056-3tW2WJ2rwBijC5iqJByEdGAT0,1063
|
|
12
|
-
openhands/sdk/agent/prompts/system_prompt.j2,sha256=
|
|
12
|
+
openhands/sdk/agent/prompts/system_prompt.j2,sha256=KTBEZuez91aqLPX926kEzpRKoVHfXj8XVVUcxZjODhw,9055
|
|
13
13
|
openhands/sdk/agent/prompts/system_prompt_interactive.j2,sha256=AW3rGuqu82BqbS1XMXVO4Fp-Apa8DPYZV3_nQYkzVtM,1388
|
|
14
14
|
openhands/sdk/agent/prompts/system_prompt_long_horizon.j2,sha256=_oOHRIer_FSuRrBOSOPpe5Ueo9KgSTba5SPoHHpghCI,2995
|
|
15
15
|
openhands/sdk/agent/prompts/system_prompt_planning.j2,sha256=wh01KX7yzeUSn5PtG3Ij0keRM6vmQuZZM6I0Fod4DK4,2934
|
|
@@ -19,11 +19,11 @@ openhands/sdk/agent/prompts/model_specific/google_gemini.j2,sha256=DvGy_9yuqeyKJ
|
|
|
19
19
|
openhands/sdk/agent/prompts/model_specific/openai_gpt/gpt-5-codex.j2,sha256=5iJvfBq3okP0yBVmQe9unB4gZx22_C3Yp_GyWtfColU,312
|
|
20
20
|
openhands/sdk/agent/prompts/model_specific/openai_gpt/gpt-5.j2,sha256=iMnSKjg2nrFoRUCkNMlGLoMmNWv_9bzK7D82dkJZCbQ,466
|
|
21
21
|
openhands/sdk/context/__init__.py,sha256=r2YtpZMVFIIaKYVh2yjicTXYPURGhIUUdbliaLYbnnA,609
|
|
22
|
-
openhands/sdk/context/agent_context.py,sha256=
|
|
23
|
-
openhands/sdk/context/view.py,sha256=
|
|
24
|
-
openhands/sdk/context/condenser/__init__.py,sha256=
|
|
25
|
-
openhands/sdk/context/condenser/base.py,sha256=
|
|
26
|
-
openhands/sdk/context/condenser/llm_summarizing_condenser.py,sha256=
|
|
22
|
+
openhands/sdk/context/agent_context.py,sha256=TUQB-RBmkKvnwMLKvG9eOc5TVlRnDtBOSeoXRA28JoA,12425
|
|
23
|
+
openhands/sdk/context/view.py,sha256=Qi0H8vsCv2RDBpKBEurlknU2F37WvkI5xofvHAfd_v4,20489
|
|
24
|
+
openhands/sdk/context/condenser/__init__.py,sha256=peHKPk51AujZhXvR2H0j1vBUJsCc8D6-OMHZ4Vk-pxU,568
|
|
25
|
+
openhands/sdk/context/condenser/base.py,sha256=4_heKNni0BW3Lib3WMVRpzm8G03opW6VcHH9M_mV-j0,5869
|
|
26
|
+
openhands/sdk/context/condenser/llm_summarizing_condenser.py,sha256=LjILEVsg5XB49Z5tig2c4QyRRPK4KzPM0b8-MKuIOVE,10688
|
|
27
27
|
openhands/sdk/context/condenser/no_op_condenser.py,sha256=T87bTtJw4dqlOIZZZ4R_JFPXeSymDqlbsZtH6ng7N1E,474
|
|
28
28
|
openhands/sdk/context/condenser/pipeline_condenser.py,sha256=wkbEA6R8u8u3Wi1AQmx1AKF9hQ25dLSeKuvB56N1Ohc,2145
|
|
29
29
|
openhands/sdk/context/condenser/utils.py,sha256=kI4oechGeozHRTFPcq6UVbGgLL-6msR3D2-4fPssFVU,5599
|
|
@@ -31,13 +31,14 @@ openhands/sdk/context/condenser/prompts/summarizing_prompt.j2,sha256=J7uwQAsrrZd
|
|
|
31
31
|
openhands/sdk/context/prompts/__init__.py,sha256=wC1Qiak4RHY3YS0TuZRmhFGAJ7Vc6CLwvQ4KQJB5o84,104
|
|
32
32
|
openhands/sdk/context/prompts/prompt.py,sha256=8ZV9C0lg9Lnw7lF5zLnLTF9nL6gTnW5vGIw1YxtRQBU,3724
|
|
33
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=
|
|
35
|
-
openhands/sdk/context/prompts/templates/system_message_suffix.j2,sha256=
|
|
36
|
-
openhands/sdk/context/skills/__init__.py,sha256=
|
|
34
|
+
openhands/sdk/context/prompts/templates/skill_knowledge_info.j2,sha256=boqEsAIszJ2Cy7Zc7UfFLbwSXgFybZ4mU8YCCW-zXYc,423
|
|
35
|
+
openhands/sdk/context/prompts/templates/system_message_suffix.j2,sha256=4OWDu6YAXLQwmFLiIRJ7gEaR8z_RXYlvasmn1zeFP2g,2608
|
|
36
|
+
openhands/sdk/context/skills/__init__.py,sha256=dS6XJYLHlm_wboD-C42bRw4HCFu-o9dzCiFRpoyR1h0,938
|
|
37
37
|
openhands/sdk/context/skills/exceptions.py,sha256=tVBSbXTXG32nb1TebVAuzbNNHvn8GScpSM1bHCnQzvY,305
|
|
38
|
-
openhands/sdk/context/skills/skill.py,sha256=
|
|
38
|
+
openhands/sdk/context/skills/skill.py,sha256=TVpfxbDYE0NSmD1lfaEh_hO0iMSvV42b5Sph30QSD5c,34603
|
|
39
39
|
openhands/sdk/context/skills/trigger.py,sha256=ZGaDmMpJghnAEuTTYX6UepsA5nX1CSz83zK1Ox46vMk,756
|
|
40
|
-
openhands/sdk/context/skills/types.py,sha256=
|
|
40
|
+
openhands/sdk/context/skills/types.py,sha256=LvyCveHBSt2-g9Lbpr_eQMvOd4eEBjJb3irAWL-OzE0,1813
|
|
41
|
+
openhands/sdk/context/skills/utils.py,sha256=Wp7oMEXczAmgNWc2KXTZuCLUtlxPbElqcoS3oETTKJg,13760
|
|
41
42
|
openhands/sdk/conversation/__init__.py,sha256=1-xh49S2KJhtAjkHDaDHU28UWhfQLl3CeFlo179gr00,1402
|
|
42
43
|
openhands/sdk/conversation/base.py,sha256=sVpfqtyTVi7_d8rzI_gemZGHusVrNy9S_yNJmTGMEq8,8964
|
|
43
44
|
openhands/sdk/conversation/conversation.py,sha256=KN4mqYqrzc5LWksliDmRV-wNg1FdF0IVyaopOKeajas,6079
|
|
@@ -50,13 +51,13 @@ openhands/sdk/conversation/persistence_const.py,sha256=om3pOQa5sGK8t_NUYb3Tz-7sK
|
|
|
50
51
|
openhands/sdk/conversation/response_utils.py,sha256=rPlC3cDSmoQte6NZ0kK6h6-9ho5cbF8jEw-DiyEhgIM,1548
|
|
51
52
|
openhands/sdk/conversation/secret_registry.py,sha256=6fY1zRxb55rC4uIMFcR0lDssIyyjaPh9pCWGqDikrek,4446
|
|
52
53
|
openhands/sdk/conversation/serialization_diff.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
|
-
openhands/sdk/conversation/state.py,sha256=
|
|
54
|
+
openhands/sdk/conversation/state.py,sha256=1TsOYXfXSKQ4odsZH8yFJ_d_zGZKPseOGvDVUaf1MzQ,16235
|
|
54
55
|
openhands/sdk/conversation/stuck_detector.py,sha256=4UNU7Bh9M2yrw3RavMzZeFGQ5RutqavkckW3exFPqQw,11673
|
|
55
56
|
openhands/sdk/conversation/title_utils.py,sha256=j40-dP-Oes-mhU2xUC7fCC8cB0wkMdbbDJU7WLHiVIo,7063
|
|
56
57
|
openhands/sdk/conversation/types.py,sha256=q_yc3VNc8r3cdmvPXzpj7HvdLeDqv-37hCgOWMU65a4,1507
|
|
57
58
|
openhands/sdk/conversation/impl/__init__.py,sha256=DmDFyNR4RU8eiMocKf2j9eBQomipP-rrJgU1LoVWTDA,220
|
|
58
|
-
openhands/sdk/conversation/impl/local_conversation.py,sha256
|
|
59
|
-
openhands/sdk/conversation/impl/remote_conversation.py,sha256=
|
|
59
|
+
openhands/sdk/conversation/impl/local_conversation.py,sha256=-3ZfsxWgmC0lSf78rbylHJZlGXUdLorAADq-PJhX4ds,29163
|
|
60
|
+
openhands/sdk/conversation/impl/remote_conversation.py,sha256=G8Asgg99gBxmQa2wsp-S6u8nEqJOq9DYjpzVNAi6AEI,38011
|
|
60
61
|
openhands/sdk/conversation/visualizer/__init__.py,sha256=0LXpKlt2eJcrqP1z6jQP_nLx23V8ErnQkKYSxvUp0_A,275
|
|
61
62
|
openhands/sdk/conversation/visualizer/base.py,sha256=77DdRdHAPSESxRCYyRRSOK7ROBlljscxogkFFr4YgM0,2323
|
|
62
63
|
openhands/sdk/conversation/visualizer/default.py,sha256=k-3-l1j8H_EOEn_pfzsUczcc4JDhQni7AUQZgZ2TpB4,11885
|
|
@@ -76,7 +77,7 @@ openhands/sdk/event/token.py,sha256=QlEbBrfZaHe9tp8-Ot4vTd0T-_Vj7lpUqKfVJcVHOeI,
|
|
|
76
77
|
openhands/sdk/event/types.py,sha256=3hyFDBNtYTGEwLV6muodJO7iDMoZTC4D0Dd4vYeF2dE,271
|
|
77
78
|
openhands/sdk/event/user_action.py,sha256=JnU5LDYY1aMgSSEPkSz5wrQ6XScHKcdsFi_tnjcWO9U,661
|
|
78
79
|
openhands/sdk/event/llm_convertible/__init__.py,sha256=04kTm2F3M8oGpkBbePb35R1jpd5ZpA-XYWHMYyJ46sQ,553
|
|
79
|
-
openhands/sdk/event/llm_convertible/action.py,sha256=
|
|
80
|
+
openhands/sdk/event/llm_convertible/action.py,sha256=QbYQYSIDStsFR8R8dfrY00aVpcHOKtqqawD40rijVl8,6316
|
|
80
81
|
openhands/sdk/event/llm_convertible/message.py,sha256=yeEI2zy3IuOu2fAyCkr8fhdn6qwiLcgR4MYAot4CGpw,5048
|
|
81
82
|
openhands/sdk/event/llm_convertible/observation.py,sha256=LF09On5eI9Cadb_yK4bhh_-pvnf5onsr-MzayL0r0h0,5045
|
|
82
83
|
openhands/sdk/event/llm_convertible/system.py,sha256=iGyizThTd8lxekgHK7E-4Z5xTF_Zb7_y7J9zAitL7lI,2332
|
|
@@ -84,10 +85,10 @@ openhands/sdk/git/exceptions.py,sha256=T3_jdOzilK39y1_ilMQ3Z3RSkxHJZafUoZTzOiuGj
|
|
|
84
85
|
openhands/sdk/git/git_changes.py,sha256=RQwva8j5mq09WoTrmNcZMBHrGUzn0CPYilW6k1kJCD0,8339
|
|
85
86
|
openhands/sdk/git/git_diff.py,sha256=osaSys05wp9i-_KqfcYEHhNFzzU0B2qCn9vChfRPL0g,3820
|
|
86
87
|
openhands/sdk/git/models.py,sha256=himUK-g49iQHMBfJlVr4tTUOXQhudJUR-vcntTeFkPM,349
|
|
87
|
-
openhands/sdk/git/utils.py,sha256=
|
|
88
|
+
openhands/sdk/git/utils.py,sha256=5vSxC8p_6Yu-LEZ_qEJL5oSHHlAZtg0cax1Z7Z1vWLw,7262
|
|
88
89
|
openhands/sdk/hooks/__init__.py,sha256=J2ZO0Ajnw6IDbrDuA1BtXlzoGkSIZ3VcF0Haihgd8pE,854
|
|
89
90
|
openhands/sdk/hooks/config.py,sha256=QeUA2joRglX-fXazoSXpZLrKpQO9jwW7htNQ_D5WtFU,5964
|
|
90
|
-
openhands/sdk/hooks/conversation_hooks.py,sha256=
|
|
91
|
+
openhands/sdk/hooks/conversation_hooks.py,sha256=I62p4wrS2Jz3GatlNghUYY-57CnRrcxlvQawWFXU1-0,10629
|
|
91
92
|
openhands/sdk/hooks/executor.py,sha256=K-nE92r_6dsNV_ISEhoqIyxGvYzD9wgwSyHFM456NX4,5016
|
|
92
93
|
openhands/sdk/hooks/manager.py,sha256=woce5tBGaygQvKL_p3K77Xq9K8QMwsbZYjEmDCGHoIY,5864
|
|
93
94
|
openhands/sdk/hooks/types.py,sha256=ZQp2_HVvOWI9YQPZInFJ0QdhpKo4UxGmq4YLYz9zfOY,1066
|
|
@@ -97,7 +98,7 @@ openhands/sdk/io/cache.py,sha256=TZD9Px-WK303WGjm5nin9n3TCKGiAJ-PIqrM5MFeg5c,290
|
|
|
97
98
|
openhands/sdk/io/local.py,sha256=IhU4OLP3-S8UCCWTm_xqw7XDYgeYms77b6I_FhZq0iU,4232
|
|
98
99
|
openhands/sdk/io/memory.py,sha256=XIsdXsSyF-PzoYVmvJuO7Vtz-k3D5jMOFoZ5gHw8tbA,1712
|
|
99
100
|
openhands/sdk/llm/__init__.py,sha256=k8UneyfoDUMe0lSP4GSlYzrL2Fe3MkDUKpSg2OIDi_I,1206
|
|
100
|
-
openhands/sdk/llm/llm.py,sha256=
|
|
101
|
+
openhands/sdk/llm/llm.py,sha256=TqnqMd-i2EEF74y_3oOuOEbei912QY66JRFjG8REJt4,44139
|
|
101
102
|
openhands/sdk/llm/llm_registry.py,sha256=DL9yqSbAM7OBkzdIChLuxG2qk_oElW2tC2xem6mq0F8,3530
|
|
102
103
|
openhands/sdk/llm/llm_response.py,sha256=DaBVBkij4Sz-RsYhRb3UUcvJCTzCBcOYQ9IhFwN4ukI,1988
|
|
103
104
|
openhands/sdk/llm/message.py,sha256=Tw7sIw5A-rZqIH8dPI0UnoXf0KuPB8tURcJMQyv9JZg,25507
|
|
@@ -109,11 +110,11 @@ openhands/sdk/llm/exceptions/types.py,sha256=IfyRtfH5eJrsLOlp6Fz76CiCKjx1ukmXciI
|
|
|
109
110
|
openhands/sdk/llm/mixins/fn_call_converter.py,sha256=xlYywDHYMhVQyd_CiTuoY1JHaqpEIEjsZknCJN_hFFE,48528
|
|
110
111
|
openhands/sdk/llm/mixins/non_native_fc.py,sha256=KL2-rCh9uNz5WDskP7rc2uv1xOzZWgvffWqPaGbYvtw,3408
|
|
111
112
|
openhands/sdk/llm/options/__init__.py,sha256=EntvOWC5kwDoTMXXMkYuoWMQ13hD8YtC9CEMCtnKj7o,54
|
|
112
|
-
openhands/sdk/llm/options/chat_options.py,sha256=
|
|
113
|
+
openhands/sdk/llm/options/chat_options.py,sha256=rXFEXL8YFWRtMaAln0AI--dclA7HTBFaUQwzwNthzZQ,3690
|
|
113
114
|
openhands/sdk/llm/options/common.py,sha256=qFcPuZF_c4rmH1bgGG8Qp6TJ4YWpv9IFzfLZRRiik9M,580
|
|
114
115
|
openhands/sdk/llm/options/responses_options.py,sha256=1ff_06XcORneDQUjwrEM6tel9HLI9_veMcoKHYAKLG8,2302
|
|
115
116
|
openhands/sdk/llm/router/__init__.py,sha256=N8qldpGdLLCWZzn5Rz2y8AheSoCTQLGkLOBDCFNMJRA,261
|
|
116
|
-
openhands/sdk/llm/router/base.py,sha256=
|
|
117
|
+
openhands/sdk/llm/router/base.py,sha256=izGHV17UctI70t2OjhuLgVAV7gGZ51vbZ4WpWJxblJA,4678
|
|
117
118
|
openhands/sdk/llm/router/impl/multimodal.py,sha256=uKFVm7b3Jr0xCC1lvP-cVn-fIkTv24-pK3xKlOJahz4,3034
|
|
118
119
|
openhands/sdk/llm/router/impl/random.py,sha256=oBHoFTBMa9OeDyg-rV4siLCkN6rKYL0uDlZMEseB3ro,656
|
|
119
120
|
openhands/sdk/llm/utils/metrics.py,sha256=4zD0Hkc9Oc4qcDcVZUX13RyggyObshUbz4Ik9W1uIw4,11592
|
|
@@ -121,9 +122,9 @@ openhands/sdk/llm/utils/model_features.py,sha256=vAsRbD0dTIVM7SZUjO3Vwyd2CfDYxcR
|
|
|
121
122
|
openhands/sdk/llm/utils/model_info.py,sha256=1mFYA7OcEyUB6k1doao8_w1XT7UMM_DAm57HcTpKkLw,2628
|
|
122
123
|
openhands/sdk/llm/utils/model_prompt_spec.py,sha256=onw9-y7x0aJS8IOjNzeqhdvcFNwK1l_s0XgurWlnj5o,2587
|
|
123
124
|
openhands/sdk/llm/utils/retry_mixin.py,sha256=M-hXp8EwP1FjNN6tgHiv133BtUQgRr9Kz_ZWxeAJLGA,4765
|
|
124
|
-
openhands/sdk/llm/utils/telemetry.py,sha256=
|
|
125
|
+
openhands/sdk/llm/utils/telemetry.py,sha256=_9QedIEgHy_y-iadaofzDYU1_nQBjvbMR-H-KO6C3ss,13982
|
|
125
126
|
openhands/sdk/llm/utils/unverified_models.py,sha256=SmYrX_WxXOJBanTviztqy1xPjOcLY4i3qvwNBEga_Dk,4797
|
|
126
|
-
openhands/sdk/llm/utils/verified_models.py,sha256=
|
|
127
|
+
openhands/sdk/llm/utils/verified_models.py,sha256=_ioY2NHay8MQmfeiWRkT_53pA7DFhldopfQotTwORbk,1462
|
|
127
128
|
openhands/sdk/logger/__init__.py,sha256=vZvFDYfW01Y8Act3tveMs3XxTysJlt4HeT-n6X_ujYk,330
|
|
128
129
|
openhands/sdk/logger/logger.py,sha256=en8SHzFC2baohQmqbgE8t0mvV_xMZQrILEycOzdAZL0,6511
|
|
129
130
|
openhands/sdk/logger/rolling.py,sha256=E6oy0asgmOhZHoWlSCw0QK1PKnS6kvtxjoWLAsqlGvs,3440
|
|
@@ -131,11 +132,14 @@ openhands/sdk/mcp/__init__.py,sha256=-wQbZ405PjVRCBtSfirp4jsiRohd7IJAyAdicZ-M8Ok
|
|
|
131
132
|
openhands/sdk/mcp/client.py,sha256=CLkFImydorlT_RBTE5UxvRNGMlc-uO3wvupoDzB5E20,2420
|
|
132
133
|
openhands/sdk/mcp/definition.py,sha256=vFLQeLW99fBzPGR7X7_1GzTmIHlSVAbmsg3elhhkp5U,3424
|
|
133
134
|
openhands/sdk/mcp/exceptions.py,sha256=N4g7Wju420TQJ7hmck1e5UblWbC_7Torb-UTFj1GN70,448
|
|
134
|
-
openhands/sdk/mcp/tool.py,sha256=
|
|
135
|
+
openhands/sdk/mcp/tool.py,sha256=j4rN6vQMrVBYa46StLbEMdvRn-XaN1RE0RYFR49zYQU,10269
|
|
135
136
|
openhands/sdk/mcp/utils.py,sha256=AazuWwhEwHBs1JKXfNVJDArkgQfmuj4MrPQwxDo52ds,2919
|
|
136
137
|
openhands/sdk/observability/__init__.py,sha256=JKHDWoj01igaCUChdXgKmstESiMmbAK9CN5XzT2H7fo,122
|
|
137
138
|
openhands/sdk/observability/laminar.py,sha256=U2AbSWpPcUYdrzx__-BEg4LPW13f1l-Hk-V4qeBmE3k,5053
|
|
138
139
|
openhands/sdk/observability/utils.py,sha256=N0p8ACs2WKS1PyFPjiU-PPng6WsAe15ZpFViFAw1gO0,576
|
|
140
|
+
openhands/sdk/plugin/__init__.py,sha256=NCzotHxOH7FfNVcJFy0ttNHOXf3xesHbDQ5sBa1twAI,474
|
|
141
|
+
openhands/sdk/plugin/plugin.py,sha256=WiY_3n69kDYDPwY2srurYWbOLYO5ZiPtwJ0yOHc45jU,9970
|
|
142
|
+
openhands/sdk/plugin/types.py,sha256=kYrlSKNnxZJiIB2XaJ2j4iKnG9jTXT8DIz54IzU6qyE,8122
|
|
139
143
|
openhands/sdk/secret/__init__.py,sha256=Y-M2WPfYLfVYZSFZGTf6MDOnjsL5SayETtA4t9X0gjw,348
|
|
140
144
|
openhands/sdk/secret/secrets.py,sha256=1PkD9oXJJlPgsN4D3brv3_HjIc2IQGy5BbcqZKJ_8Ew,2737
|
|
141
145
|
openhands/sdk/security/__init__.py,sha256=x2-a0fsImxSM2msHl7gV0fENWyZbpY7-HW_CBwNrPZY,89
|
|
@@ -143,12 +147,12 @@ openhands/sdk/security/analyzer.py,sha256=V6Fowh83sfEr1SdwK3UW1PNQHahHxwHfla0Knd
|
|
|
143
147
|
openhands/sdk/security/confirmation_policy.py,sha256=bsrIOfo3QOXNyKrmUVzQz070F3xbJ7uZp9WTr4RMdl8,2145
|
|
144
148
|
openhands/sdk/security/llm_analyzer.py,sha256=wb7VNJjzlKkimh1mR2wpn6LSqBdo3GZJqhWQp8qyky4,1108
|
|
145
149
|
openhands/sdk/security/risk.py,sha256=4I1zPCQa-PLlez7so8IYqY8bSvqHrxu-hzbix7GrxIE,3497
|
|
146
|
-
openhands/sdk/tool/__init__.py,sha256=
|
|
150
|
+
openhands/sdk/tool/__init__.py,sha256=gqqpPGHr06uGZOyFitOqZCjK76pDNrT0HmufmaR1d9A,765
|
|
147
151
|
openhands/sdk/tool/registry.py,sha256=vA7DpN9RfKFRS3PibjEf_Z4coCcMbhOcgUUXcnTYFC8,6272
|
|
148
|
-
openhands/sdk/tool/schema.py,sha256=
|
|
152
|
+
openhands/sdk/tool/schema.py,sha256=nQqOAIFrVgp2T5En4HjTLWA6yXYTaip9A3isMpliYcw,9649
|
|
149
153
|
openhands/sdk/tool/spec.py,sha256=EbtWasVhwjLKNJywHubbwfYqfgXnZbU4QE6XUOLhsdk,1221
|
|
150
|
-
openhands/sdk/tool/tool.py,sha256=
|
|
151
|
-
openhands/sdk/tool/builtins/__init__.py,sha256=
|
|
154
|
+
openhands/sdk/tool/tool.py,sha256=9VV2aJtGeBmRn09oovRMtGafBC6UcAMWNSF1Uo2g6G0,19656
|
|
155
|
+
openhands/sdk/tool/builtins/__init__.py,sha256=3F2NYhSkWOebKlNwRlwpoQD_rkxoT-pEx4AvAkMmJTs,911
|
|
152
156
|
openhands/sdk/tool/builtins/finish.py,sha256=pPv_bKDOQE4sUK9lNh1H1lDaxavHozjOwLCIuYrb424,3136
|
|
153
157
|
openhands/sdk/tool/builtins/think.py,sha256=Jp8CBHJZwrtNuVCLrxKlVwb9HeQ1lZB56PCYMxW3wWk,4050
|
|
154
158
|
openhands/sdk/utils/__init__.py,sha256=81qUukQiVDos57kbtZfFGZ3i0zX-t1eSI0J8UZN4fP4,448
|
|
@@ -159,22 +163,22 @@ openhands/sdk/utils/command.py,sha256=iqTdFL9tPQ0gyq5w_HOMXSSHg1nowtrWwJBeDL87lZ
|
|
|
159
163
|
openhands/sdk/utils/deprecation.py,sha256=7XwepMKTwBLaqS-4rdJupKxNZkepV0Mrru3uTQukS0k,5114
|
|
160
164
|
openhands/sdk/utils/github.py,sha256=l-_LQKw820dA_U8NmDdmaReAPhgMAWqfH1oRMi1q5OA,1638
|
|
161
165
|
openhands/sdk/utils/json.py,sha256=hHAA7i7NCJrQhb5WWSsoT0nvmJUi0koyBdbviFrfdcM,1384
|
|
162
|
-
openhands/sdk/utils/models.py,sha256=
|
|
166
|
+
openhands/sdk/utils/models.py,sha256=M1nYODrAdaXwcy0eketRBDaSdBdEYgH34ask_Ij2FOI,10698
|
|
163
167
|
openhands/sdk/utils/paging.py,sha256=pgSQTe8_pArNjW8jwIyB3XKK04cf4knRHZbgrJrCm8Y,1962
|
|
164
168
|
openhands/sdk/utils/pydantic_diff.py,sha256=vOy4M1XKKDkCzp7RXBvnibvPYWL8fNEDtWNUn_-N1yg,2732
|
|
165
169
|
openhands/sdk/utils/pydantic_secrets.py,sha256=B9njRdijnqO4g-GDCWRsWd-TZc5GTjMncDEPMFP_aUE,2186
|
|
166
170
|
openhands/sdk/utils/truncate.py,sha256=LYRA45CBR7daSC03gs80nu7PYdROh943_niOpaoquKU,4390
|
|
167
171
|
openhands/sdk/utils/visualize.py,sha256=4x32eU-OiSZTKpXWIche7QppMS1vxcZjP-kASqE99X4,2004
|
|
168
172
|
openhands/sdk/workspace/__init__.py,sha256=09huA83IZJZU8XZSVzSgZwfUv-slzYwofnUjLgqt7B8,401
|
|
169
|
-
openhands/sdk/workspace/base.py,sha256=
|
|
170
|
-
openhands/sdk/workspace/local.py,sha256=
|
|
173
|
+
openhands/sdk/workspace/base.py,sha256=yXJhaRfq0Zm3-ltYwMOpvNqaaRvMEtDB11SMhJSoV68,5366
|
|
174
|
+
openhands/sdk/workspace/local.py,sha256=_kW7UxEr9KoKKM7ybSmDzDQWBxUNmBOgdyz5oIG9DKE,6825
|
|
171
175
|
openhands/sdk/workspace/models.py,sha256=ORFn70kXvD0urjeq59d_XqXBYSHbDYkBMg9KYQKRa5I,1304
|
|
172
176
|
openhands/sdk/workspace/workspace.py,sha256=Of1r2z3W_pXSgV8u10sUQ87ChtaA5khD6HJ_PtJz6aY,1296
|
|
173
177
|
openhands/sdk/workspace/remote/__init__.py,sha256=eKkj6NOESMUBGDVC6_L2Wfuc4K6G-mpnJDNHKBkSeUI,114
|
|
174
|
-
openhands/sdk/workspace/remote/async_remote_workspace.py,sha256=
|
|
175
|
-
openhands/sdk/workspace/remote/base.py,sha256=
|
|
178
|
+
openhands/sdk/workspace/remote/async_remote_workspace.py,sha256=MfnYoXvx_tZ7MKDGJCofnkYAJxfBKqNtM2Qprx3QQRk,5608
|
|
179
|
+
openhands/sdk/workspace/remote/base.py,sha256=t-qbouLxkAsPKvVblXWWHKixHsLFz4bw3l9LW_n9_6o,6152
|
|
176
180
|
openhands/sdk/workspace/remote/remote_workspace_mixin.py,sha256=CzHfnLUIra5sgPkP9kcggb1vHGOPpYQzLsHvGO2rRt0,10963
|
|
177
|
-
openhands_sdk-1.
|
|
178
|
-
openhands_sdk-1.
|
|
179
|
-
openhands_sdk-1.
|
|
180
|
-
openhands_sdk-1.
|
|
181
|
+
openhands_sdk-1.8.0.dist-info/METADATA,sha256=68ZzLd0ZlmPxzrKdl3KCDw95hKX54wxBmSSFT1ka-1c,546
|
|
182
|
+
openhands_sdk-1.8.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
183
|
+
openhands_sdk-1.8.0.dist-info/top_level.txt,sha256=jHgVu9I0Blam8BXFgedoGKfglPF8XvW1TsJFIjcgP4E,10
|
|
184
|
+
openhands_sdk-1.8.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|