openhands 1.0.0__tar.gz → 1.0.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.
Potentially problematic release.
This version of openhands might be problematic. Click here for more details.
- {openhands-1.0.0 → openhands-1.0.1}/PKG-INFO +1 -1
- {openhands-1.0.0 → openhands-1.0.1}/build.py +1 -1
- openhands-1.0.1/openhands_cli/__init__.py +8 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/agent_chat.py +1 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/gui_launcher.py +1 -10
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/tui/tui.py +0 -2
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/user_actions/agent_action.py +2 -1
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/user_actions/settings_action.py +7 -1
- {openhands-1.0.0 → openhands-1.0.1}/pyproject.toml +4 -5
- openhands-1.0.1/tests/settings/test_api_key_preservation.py +56 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/test_gui_launcher.py +0 -2
- {openhands-1.0.0 → openhands-1.0.1}/uv.lock +34 -23
- openhands-1.0.0/openhands_cli/__init__.py +0 -3
- {openhands-1.0.0 → openhands-1.0.1}/.gitignore +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/Makefile +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/README.md +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/build.sh +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/hooks/rthook_profile_imports.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands.spec +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/argparsers/main_parser.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/argparsers/serve_parser.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/listeners/__init__.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/listeners/loading_listener.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/listeners/pause_listener.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/llm_utils.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/locations.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/pt_style.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/runner.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/setup.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/simple_main.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/tui/__init__.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/tui/settings/mcp_screen.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/tui/settings/settings_screen.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/tui/settings/store.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/tui/status.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/tui/utils.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/user_actions/__init__.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/user_actions/exit_session.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/user_actions/types.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/openhands_cli/user_actions/utils.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/__init__.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/commands/test_confirm_command.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/commands/test_new_command.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/commands/test_status_command.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/conftest.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/settings/test_first_time_user_settings.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/settings/test_settings_input.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/settings/test_settings_workflow.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/test_confirmation_mode.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/test_conversation_runner.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/test_directory_separation.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/test_exit_session_confirmation.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/test_loading.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/test_main.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/test_mcp_config_validation.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/test_pause_listener.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/test_session_prompter.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/test_tui.py +0 -0
- {openhands-1.0.0 → openhands-1.0.1}/tests/utils.py +0 -0
|
@@ -113,21 +113,12 @@ def launch_gui_server(mount_cwd: bool = False, gpu: bool = False) -> None:
|
|
|
113
113
|
pull_cmd = ['docker', 'pull', runtime_image]
|
|
114
114
|
print_formatted_text(HTML(_format_docker_command_for_logging(pull_cmd)))
|
|
115
115
|
try:
|
|
116
|
-
subprocess.run(
|
|
117
|
-
pull_cmd,
|
|
118
|
-
check=True,
|
|
119
|
-
timeout=300, # 5 minutes timeout
|
|
120
|
-
)
|
|
116
|
+
subprocess.run(pull_cmd, check=True)
|
|
121
117
|
except subprocess.CalledProcessError:
|
|
122
118
|
print_formatted_text(
|
|
123
119
|
HTML('<ansired>❌ Failed to pull runtime image.</ansired>')
|
|
124
120
|
)
|
|
125
121
|
sys.exit(1)
|
|
126
|
-
except subprocess.TimeoutExpired:
|
|
127
|
-
print_formatted_text(
|
|
128
|
-
HTML('<ansired>❌ Timeout while pulling runtime image.</ansired>')
|
|
129
|
-
)
|
|
130
|
-
sys.exit(1)
|
|
131
122
|
|
|
132
123
|
print_formatted_text('')
|
|
133
124
|
print_formatted_text(
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import html
|
|
1
2
|
from prompt_toolkit import HTML, print_formatted_text
|
|
2
3
|
|
|
3
4
|
from openhands.sdk.security.confirmation_policy import (
|
|
@@ -37,7 +38,7 @@ def ask_user_confirmation(
|
|
|
37
38
|
or '[unknown action]'
|
|
38
39
|
)
|
|
39
40
|
print_formatted_text(
|
|
40
|
-
HTML(f'<grey> {i}. {tool_name}: {action_content}...</grey>')
|
|
41
|
+
HTML(f'<grey> {i}. {tool_name}: {html.escape(action_content)}...</grey>')
|
|
41
42
|
)
|
|
42
43
|
|
|
43
44
|
question = 'Choose an option:'
|
|
@@ -123,9 +123,15 @@ def prompt_api_key(
|
|
|
123
123
|
validator = NonEmptyValueValidator()
|
|
124
124
|
|
|
125
125
|
question = helper_text + step_counter.next_step(question)
|
|
126
|
-
|
|
126
|
+
user_input = cli_text_input(
|
|
127
127
|
question, escapable=escapable, validator=validator, is_password=True
|
|
128
128
|
)
|
|
129
|
+
|
|
130
|
+
# If user pressed ENTER with existing key (empty input), return the existing key
|
|
131
|
+
if existing_api_key and not user_input.strip():
|
|
132
|
+
return existing_api_key.get_secret_value()
|
|
133
|
+
|
|
134
|
+
return user_input
|
|
129
135
|
|
|
130
136
|
|
|
131
137
|
# Advanced settings functions
|
|
@@ -4,7 +4,7 @@ requires = [ "hatchling>=1.25" ]
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "openhands"
|
|
7
|
-
version = "1.0.
|
|
7
|
+
version = "1.0.1"
|
|
8
8
|
description = "OpenHands CLI - Terminal User Interface for OpenHands AI Agent"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
|
@@ -22,8 +22,7 @@ dependencies = [
|
|
|
22
22
|
"typer>=0.17.4",
|
|
23
23
|
]
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
scripts.openhands = "openhands_cli.simple_main:main"
|
|
25
|
+
scripts = { openhands = "openhands_cli.simple_main:main" }
|
|
27
26
|
|
|
28
27
|
[dependency-groups]
|
|
29
28
|
# Hatchling wheel target: include the package directory
|
|
@@ -96,5 +95,5 @@ disallow_untyped_defs = true
|
|
|
96
95
|
ignore_missing_imports = true
|
|
97
96
|
|
|
98
97
|
[tool.uv.sources]
|
|
99
|
-
openhands-sdk = { git = "https://github.com/All-Hands-AI/agent-sdk.git", subdirectory = "openhands/sdk", rev = "
|
|
100
|
-
openhands-tools = { git = "https://github.com/All-Hands-AI/agent-sdk.git", subdirectory = "openhands/tools", rev = "
|
|
98
|
+
openhands-sdk = { git = "https://github.com/All-Hands-AI/agent-sdk.git", subdirectory = "openhands/sdk", rev = "50b094a92817e448ec4352d2950df4f19edd5a9f" }
|
|
99
|
+
openhands-tools = { git = "https://github.com/All-Hands-AI/agent-sdk.git", subdirectory = "openhands/tools", rev = "50b094a92817e448ec4352d2950df4f19edd5a9f" }
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""Test for API key preservation bug when updating settings."""
|
|
2
|
+
|
|
3
|
+
from unittest.mock import patch
|
|
4
|
+
import pytest
|
|
5
|
+
from pydantic import SecretStr
|
|
6
|
+
|
|
7
|
+
from openhands_cli.user_actions.settings_action import prompt_api_key
|
|
8
|
+
from openhands_cli.tui.utils import StepCounter
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def test_api_key_preservation_when_user_presses_enter():
|
|
12
|
+
"""Test that API key is preserved when user presses ENTER to keep current key.
|
|
13
|
+
|
|
14
|
+
This test replicates the bug where API keys disappear when updating settings.
|
|
15
|
+
When a user presses ENTER to keep the current API key, the function should
|
|
16
|
+
return the existing API key, not an empty string.
|
|
17
|
+
"""
|
|
18
|
+
step_counter = StepCounter(1)
|
|
19
|
+
existing_api_key = SecretStr("sk-existing-key-123")
|
|
20
|
+
|
|
21
|
+
# Mock cli_text_input to return empty string (simulating user pressing ENTER)
|
|
22
|
+
with patch('openhands_cli.user_actions.settings_action.cli_text_input', return_value=''):
|
|
23
|
+
result = prompt_api_key(
|
|
24
|
+
step_counter=step_counter,
|
|
25
|
+
provider='openai',
|
|
26
|
+
existing_api_key=existing_api_key,
|
|
27
|
+
escapable=True
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
# The bug: result is empty string instead of the existing key
|
|
31
|
+
# This test will fail initially, demonstrating the bug
|
|
32
|
+
assert result == existing_api_key.get_secret_value(), (
|
|
33
|
+
f"Expected existing API key '{existing_api_key.get_secret_value()}' "
|
|
34
|
+
f"but got '{result}'. API key should be preserved when user presses ENTER."
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def test_api_key_update_when_user_enters_new_key():
|
|
39
|
+
"""Test that API key is updated when user enters a new key."""
|
|
40
|
+
step_counter = StepCounter(1)
|
|
41
|
+
existing_api_key = SecretStr("sk-existing-key-123")
|
|
42
|
+
new_api_key = "sk-new-key-456"
|
|
43
|
+
|
|
44
|
+
# Mock cli_text_input to return new API key
|
|
45
|
+
with patch('openhands_cli.user_actions.settings_action.cli_text_input', return_value=new_api_key):
|
|
46
|
+
result = prompt_api_key(
|
|
47
|
+
step_counter=step_counter,
|
|
48
|
+
provider='openai',
|
|
49
|
+
existing_api_key=existing_api_key,
|
|
50
|
+
escapable=True
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
# Should return the new API key
|
|
54
|
+
assert result == new_api_key
|
|
55
|
+
|
|
56
|
+
|
|
@@ -111,8 +111,6 @@ class TestLaunchGuiServer:
|
|
|
111
111
|
[
|
|
112
112
|
# Docker pull failure
|
|
113
113
|
(subprocess.CalledProcessError(1, 'docker pull'), None, 1, False, False),
|
|
114
|
-
# Docker pull timeout
|
|
115
|
-
(subprocess.TimeoutExpired('docker pull', 300), None, 1, False, False),
|
|
116
114
|
# Docker run failure
|
|
117
115
|
(MagicMock(returncode=0), subprocess.CalledProcessError(1, 'docker run'), 1, False, False),
|
|
118
116
|
# KeyboardInterrupt during run
|
|
@@ -660,18 +660,32 @@ wheels = [
|
|
|
660
660
|
|
|
661
661
|
[[package]]
|
|
662
662
|
name = "fastuuid"
|
|
663
|
-
version = "0.
|
|
664
|
-
source = { registry = "https://pypi.org/simple" }
|
|
665
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
666
|
-
wheels = [
|
|
667
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
668
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
669
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
670
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
671
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
672
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
673
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
674
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
663
|
+
version = "0.13.5"
|
|
664
|
+
source = { registry = "https://pypi.org/simple" }
|
|
665
|
+
sdist = { url = "https://files.pythonhosted.org/packages/15/80/3c16a1edad2e6cd82fbd15ac998cc1b881f478bf1f80ca717d941c441874/fastuuid-0.13.5.tar.gz", hash = "sha256:d4976821ab424d41542e1ea39bc828a9d454c3f8a04067c06fca123c5b95a1a1", size = 18255, upload-time = "2025-09-26T09:05:38.281Z" }
|
|
666
|
+
wheels = [
|
|
667
|
+
{ url = "https://files.pythonhosted.org/packages/21/36/434f137c5970cac19e57834e1f7680e85301619d49891618c00666700c61/fastuuid-0.13.5-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:35fe8045e866bc6846f8de6fa05acb1de0c32478048484a995e96d31e21dff2a", size = 494638, upload-time = "2025-09-26T09:14:58.695Z" },
|
|
668
|
+
{ url = "https://files.pythonhosted.org/packages/ca/3c/083de2ac007b2b305523b9c006dba5051e5afd87a626ef1a39f76e2c6b82/fastuuid-0.13.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:02a460333f52d731a006d18a52ef6fcb2d295a1f5b1a5938d30744191b2f77b7", size = 253138, upload-time = "2025-09-26T09:13:33.283Z" },
|
|
669
|
+
{ url = "https://files.pythonhosted.org/packages/73/5e/630cffa1c8775db526e39e9e4c5c7db0c27be0786bb21ba82c912ae19f63/fastuuid-0.13.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:74b0e4f8c307b9f477a5d7284db4431ce53a3c1e3f4173db7a97db18564a6202", size = 244521, upload-time = "2025-09-26T09:14:40.682Z" },
|
|
670
|
+
{ url = "https://files.pythonhosted.org/packages/4d/51/55d78705f4fbdadf88fb40f382f508d6c7a4941ceddd7825fafebb4cc778/fastuuid-0.13.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6955a99ef455c2986f3851f4e0ccc35dec56ac1a7720f2b92e88a75d6684512e", size = 271557, upload-time = "2025-09-26T09:15:09.75Z" },
|
|
671
|
+
{ url = "https://files.pythonhosted.org/packages/6a/2b/1b89e90a8635e5587ccdbbeb169c590672ce7637880f2c047482a0359950/fastuuid-0.13.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f10c77b826738c1a27dcdaa92ea4dc1ec9d869748a99e1fde54f1379553d4854", size = 272334, upload-time = "2025-09-26T09:07:48.865Z" },
|
|
672
|
+
{ url = "https://files.pythonhosted.org/packages/0c/06/4c8207894eeb30414999e5c3f66ac039bc4003437eb4060d8a1bceb4cc6f/fastuuid-0.13.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bb25dccbeb249d16d5e664f65f17ebec05136821d5ef462c4110e3f76b86fb86", size = 290594, upload-time = "2025-09-26T09:12:54.124Z" },
|
|
673
|
+
{ url = "https://files.pythonhosted.org/packages/50/69/96d221931a31d77a47cc2487bdfacfb3091edfc2e7a04b1795df1aec05df/fastuuid-0.13.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a5becc646a3eeafb76ce0a6783ba190cd182e3790a8b2c78ca9db2b5e87af952", size = 452835, upload-time = "2025-09-26T09:14:00.994Z" },
|
|
674
|
+
{ url = "https://files.pythonhosted.org/packages/25/ef/bf045f0a47dcec96247497ef3f7a31d86ebc074330e2dccc34b8dbc0468a/fastuuid-0.13.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:69b34363752d06e9bb0dbdf02ae391ec56ac948c6f2eb00be90dad68e80774b9", size = 468225, upload-time = "2025-09-26T09:13:38.585Z" },
|
|
675
|
+
{ url = "https://files.pythonhosted.org/packages/30/46/4817ab5a3778927155a4bde92540d4c4fa996161ec8b8e080c8928b0984e/fastuuid-0.13.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:57d0768afcad0eab8770c9b8cf904716bd3c547e8b9a4e755ee8a673b060a3a3", size = 444907, upload-time = "2025-09-26T09:14:30.163Z" },
|
|
676
|
+
{ url = "https://files.pythonhosted.org/packages/80/27/ab284117ce4dc9b356a7196bdbf220510285f201d27f1f078592cdc8187b/fastuuid-0.13.5-cp312-cp312-win32.whl", hash = "sha256:8ac6c6f5129d52eaa6ef9ea4b6e2f7c69468a053f3ab8e439661186b9c06bb85", size = 145415, upload-time = "2025-09-26T09:08:59.494Z" },
|
|
677
|
+
{ url = "https://files.pythonhosted.org/packages/f4/0c/f970a4222773b248931819f8940800b760283216ca3dda173ed027e94bdd/fastuuid-0.13.5-cp312-cp312-win_amd64.whl", hash = "sha256:ad630e97715beefef07ec37c9c162336e500400774e2c1cbe1a0df6f80d15b9a", size = 150840, upload-time = "2025-09-26T09:13:46.115Z" },
|
|
678
|
+
{ url = "https://files.pythonhosted.org/packages/4f/62/74fc53f6e04a4dc5b36c34e4e679f85a4c14eec800dcdb0f2c14b5442217/fastuuid-0.13.5-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:ea17dfd35e0e91920a35d91e65e5f9c9d1985db55ac4ff2f1667a0f61189cefa", size = 494678, upload-time = "2025-09-26T09:14:30.908Z" },
|
|
679
|
+
{ url = "https://files.pythonhosted.org/packages/09/ba/f28b9b7045738a8bfccfb9cd6aff4b91fce2669e6b383a48b0694ee9b3ff/fastuuid-0.13.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:be6ad91e5fefbcc2a4b478858a2715e386d405834ea3ae337c3b6b95cc0e47d6", size = 253162, upload-time = "2025-09-26T09:13:35.879Z" },
|
|
680
|
+
{ url = "https://files.pythonhosted.org/packages/b1/18/13fac89cb4c9f0cd7e81a9154a77ecebcc95d2b03477aa91d4d50f7227ee/fastuuid-0.13.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ea6df13a306aab3e0439d58c312ff1e6f4f07f09f667579679239b4a6121f64a", size = 244546, upload-time = "2025-09-26T09:14:58.13Z" },
|
|
681
|
+
{ url = "https://files.pythonhosted.org/packages/04/bf/9691167804d59411cc4269841df949f6dd5e76452ab10dcfcd1dbe04c5bc/fastuuid-0.13.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2354c1996d3cf12dc2ba3752e2c4d6edc46e1a38c63893146777b1939f3062d4", size = 271528, upload-time = "2025-09-26T09:14:48.996Z" },
|
|
682
|
+
{ url = "https://files.pythonhosted.org/packages/a9/b5/7a75a03d1c7aa0b6d573032fcca39391f0aef7f2caabeeb45a672bc0bd3c/fastuuid-0.13.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6cf9b7469fc26d1f9b1c43ac4b192e219e85b88fdf81d71aa755a6c08c8a817", size = 272292, upload-time = "2025-09-26T09:14:42.82Z" },
|
|
683
|
+
{ url = "https://files.pythonhosted.org/packages/c0/db/fa0f16cbf76e6880599533af4ef01bb586949c5320612e9d884eff13e603/fastuuid-0.13.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92ba539170097b9047551375f1ca09d8d2b4aefcc79eeae3e1c43fe49b42072e", size = 290466, upload-time = "2025-09-26T09:08:33.161Z" },
|
|
684
|
+
{ url = "https://files.pythonhosted.org/packages/1e/02/6b8c45bfbc8500994dd94edba7f59555f9683c4d8c9a164ae1d25d03c7c7/fastuuid-0.13.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:dbb81d05617bc2970765c1ad82db7e8716f6a2b7a361a14b83de5b9240ade448", size = 452838, upload-time = "2025-09-26T09:13:44.747Z" },
|
|
685
|
+
{ url = "https://files.pythonhosted.org/packages/27/12/85d95a84f265b888e8eb9f9e2b5aaf331e8be60c0a7060146364b3544b6a/fastuuid-0.13.5-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:d973bd6bf9d754d3cca874714ac0a6b22a47f239fb3d3c8687569db05aac3471", size = 468149, upload-time = "2025-09-26T09:13:18.712Z" },
|
|
686
|
+
{ url = "https://files.pythonhosted.org/packages/ad/da/dd9a137e9ea707e883c92470113a432233482ec9ad3e9b99c4defc4904e6/fastuuid-0.13.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e725ceef79486423f05ee657634d4b4c1ca5fb2c8a94e0708f5d6356a83f2a83", size = 444933, upload-time = "2025-09-26T09:14:09.494Z" },
|
|
687
|
+
{ url = "https://files.pythonhosted.org/packages/12/f4/ab363d7f4ac3989691e2dc5ae2d8391cfb0b4169e52ef7fa0ac363e936f0/fastuuid-0.13.5-cp313-cp313-win32.whl", hash = "sha256:a1c430a332ead0b2674f1ef71b17f43b8139ec5a4201182766a21f131a31e021", size = 145462, upload-time = "2025-09-26T09:14:15.105Z" },
|
|
688
|
+
{ url = "https://files.pythonhosted.org/packages/aa/8a/52eb77d9c294a54caa0d2d8cc9f906207aa6d916a22de963687ab6db8b86/fastuuid-0.13.5-cp313-cp313-win_amd64.whl", hash = "sha256:241fdd362fd96e6b337db62a65dd7cb3dfac20adf854573247a47510e192db6f", size = 150923, upload-time = "2025-09-26T09:13:03.923Z" },
|
|
675
689
|
]
|
|
676
690
|
|
|
677
691
|
[[package]]
|
|
@@ -1266,8 +1280,8 @@ wheels = [
|
|
|
1266
1280
|
|
|
1267
1281
|
[[package]]
|
|
1268
1282
|
name = "litellm"
|
|
1269
|
-
version = "1.
|
|
1270
|
-
source = {
|
|
1283
|
+
version = "1.77.7"
|
|
1284
|
+
source = { git = "https://github.com/BerriAI/litellm.git?rev=v1.77.7.dev9#763d2f8ccdd8412dbe6d4ac0e136d9ac34dcd4c0" }
|
|
1271
1285
|
dependencies = [
|
|
1272
1286
|
{ name = "aiohttp" },
|
|
1273
1287
|
{ name = "click" },
|
|
@@ -1282,10 +1296,6 @@ dependencies = [
|
|
|
1282
1296
|
{ name = "tiktoken" },
|
|
1283
1297
|
{ name = "tokenizers" },
|
|
1284
1298
|
]
|
|
1285
|
-
sdist = { url = "https://files.pythonhosted.org/packages/75/a3/f7c00c660972eed1ba5ed53771ac9b4235e7fb1dc410e91d35aff2778ae7/litellm-1.76.2.tar.gz", hash = "sha256:fc7af111fa0f06943d8dbebed73f88000f9902f0d0ee0882c57d0bd5c1a37ecb", size = 10189238, upload-time = "2025-09-04T00:25:09.472Z" }
|
|
1286
|
-
wheels = [
|
|
1287
|
-
{ url = "https://files.pythonhosted.org/packages/79/f4/980cc81c21424026dcb48a541654fd6f4286891825a3d0dd51f02b65cbc3/litellm-1.76.2-py3-none-any.whl", hash = "sha256:a9a2ef64a598b5b4ae245f1de6afc400856477cd6f708ff633d95e2275605a45", size = 8973847, upload-time = "2025-09-04T00:25:05.353Z" },
|
|
1288
|
-
]
|
|
1289
1299
|
|
|
1290
1300
|
[[package]]
|
|
1291
1301
|
name = "macholib"
|
|
@@ -1615,7 +1625,7 @@ wheels = [
|
|
|
1615
1625
|
|
|
1616
1626
|
[[package]]
|
|
1617
1627
|
name = "openhands"
|
|
1618
|
-
version = "0.1
|
|
1628
|
+
version = "1.0.1"
|
|
1619
1629
|
source = { editable = "." }
|
|
1620
1630
|
dependencies = [
|
|
1621
1631
|
{ name = "openhands-sdk" },
|
|
@@ -1642,8 +1652,8 @@ dev = [
|
|
|
1642
1652
|
|
|
1643
1653
|
[package.metadata]
|
|
1644
1654
|
requires-dist = [
|
|
1645
|
-
{ name = "openhands-sdk", git = "https://github.com/All-Hands-AI/agent-sdk.git?subdirectory=openhands%2Fsdk&rev=
|
|
1646
|
-
{ name = "openhands-tools", git = "https://github.com/All-Hands-AI/agent-sdk.git?subdirectory=openhands%2Ftools&rev=
|
|
1655
|
+
{ name = "openhands-sdk", git = "https://github.com/All-Hands-AI/agent-sdk.git?subdirectory=openhands%2Fsdk&rev=50b094a92817e448ec4352d2950df4f19edd5a9f" },
|
|
1656
|
+
{ name = "openhands-tools", git = "https://github.com/All-Hands-AI/agent-sdk.git?subdirectory=openhands%2Ftools&rev=50b094a92817e448ec4352d2950df4f19edd5a9f" },
|
|
1647
1657
|
{ name = "prompt-toolkit", specifier = ">=3" },
|
|
1648
1658
|
{ name = "typer", specifier = ">=0.17.4" },
|
|
1649
1659
|
]
|
|
@@ -1667,9 +1677,10 @@ dev = [
|
|
|
1667
1677
|
[[package]]
|
|
1668
1678
|
name = "openhands-sdk"
|
|
1669
1679
|
version = "1.0.0"
|
|
1670
|
-
source = { git = "https://github.com/All-Hands-AI/agent-sdk.git?subdirectory=openhands%2Fsdk&rev=
|
|
1680
|
+
source = { git = "https://github.com/All-Hands-AI/agent-sdk.git?subdirectory=openhands%2Fsdk&rev=50b094a92817e448ec4352d2950df4f19edd5a9f#50b094a92817e448ec4352d2950df4f19edd5a9f" }
|
|
1671
1681
|
dependencies = [
|
|
1672
1682
|
{ name = "fastmcp" },
|
|
1683
|
+
{ name = "httpx" },
|
|
1673
1684
|
{ name = "litellm" },
|
|
1674
1685
|
{ name = "pydantic" },
|
|
1675
1686
|
{ name = "python-frontmatter" },
|
|
@@ -1681,7 +1692,7 @@ dependencies = [
|
|
|
1681
1692
|
[[package]]
|
|
1682
1693
|
name = "openhands-tools"
|
|
1683
1694
|
version = "1.0.0"
|
|
1684
|
-
source = { git = "https://github.com/All-Hands-AI/agent-sdk.git?subdirectory=openhands%2Ftools&rev=
|
|
1695
|
+
source = { git = "https://github.com/All-Hands-AI/agent-sdk.git?subdirectory=openhands%2Ftools&rev=50b094a92817e448ec4352d2950df4f19edd5a9f#50b094a92817e448ec4352d2950df4f19edd5a9f" }
|
|
1685
1696
|
dependencies = [
|
|
1686
1697
|
{ name = "bashlex" },
|
|
1687
1698
|
{ name = "binaryornot" },
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|