openhands-tools 1.46.0__tar.gz → 1.48.0__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 (106) hide show
  1. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/PKG-INFO +1 -1
  2. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/ask_oracle/impl.py +1 -2
  3. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/terminal/tmux_terminal.py +45 -0
  4. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands_tools.egg-info/PKG-INFO +1 -1
  5. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/pyproject.toml +2 -2
  6. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/__init__.py +0 -0
  7. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/apply_patch/__init__.py +0 -0
  8. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/apply_patch/core.py +0 -0
  9. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/apply_patch/definition.py +0 -0
  10. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/ask_oracle/__init__.py +0 -0
  11. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/ask_oracle/definition.py +0 -0
  12. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/browser_use/__init__.py +0 -0
  13. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/browser_use/definition.py +0 -0
  14. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/browser_use/event_storage.py +0 -0
  15. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/browser_use/impl.py +0 -0
  16. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/browser_use/logging_fix.py +0 -0
  17. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/browser_use/recording.py +0 -0
  18. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/browser_use/server.py +0 -0
  19. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/delegate/__init__.py +0 -0
  20. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/delegate/definition.py +0 -0
  21. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/delegate/impl.py +0 -0
  22. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/delegate/visualizer.py +0 -0
  23. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/file_editor/__init__.py +0 -0
  24. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/file_editor/definition.py +0 -0
  25. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/file_editor/editor.py +0 -0
  26. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/file_editor/exceptions.py +0 -0
  27. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/file_editor/impl.py +0 -0
  28. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/file_editor/utils/__init__.py +0 -0
  29. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/file_editor/utils/config.py +0 -0
  30. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/file_editor/utils/constants.py +0 -0
  31. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/file_editor/utils/diff.py +0 -0
  32. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/file_editor/utils/encoding.py +0 -0
  33. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/file_editor/utils/file_cache.py +0 -0
  34. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/file_editor/utils/history.py +0 -0
  35. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/file_editor/utils/shell.py +0 -0
  36. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/gemini/__init__.py +0 -0
  37. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/gemini/edit/__init__.py +0 -0
  38. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/gemini/edit/definition.py +0 -0
  39. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/gemini/edit/impl.py +0 -0
  40. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/gemini/file_change.py +0 -0
  41. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/gemini/list_directory/__init__.py +0 -0
  42. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/gemini/list_directory/definition.py +0 -0
  43. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/gemini/list_directory/impl.py +0 -0
  44. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/gemini/read_file/__init__.py +0 -0
  45. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/gemini/read_file/definition.py +0 -0
  46. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/gemini/read_file/impl.py +0 -0
  47. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/gemini/write_file/__init__.py +0 -0
  48. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/gemini/write_file/definition.py +0 -0
  49. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/gemini/write_file/impl.py +0 -0
  50. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/glob/__init__.py +0 -0
  51. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/glob/definition.py +0 -0
  52. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/glob/impl.py +0 -0
  53. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/grep/__init__.py +0 -0
  54. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/grep/definition.py +0 -0
  55. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/grep/impl.py +0 -0
  56. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/planning_file_editor/__init__.py +0 -0
  57. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/planning_file_editor/definition.py +0 -0
  58. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/planning_file_editor/impl.py +0 -0
  59. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/preset/__init__.py +0 -0
  60. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/preset/default.py +0 -0
  61. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/preset/gemini.py +0 -0
  62. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/preset/gpt5.py +0 -0
  63. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/preset/planning.py +0 -0
  64. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/preset/subagents/bash_runner.md +0 -0
  65. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/preset/subagents/code_explorer.md +0 -0
  66. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/preset/subagents/default.md +0 -0
  67. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/preset/subagents/web_researcher.md +0 -0
  68. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/preset/task_outcome.py +0 -0
  69. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/py.typed +0 -0
  70. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/task/__init__.py +0 -0
  71. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/task/definition.py +0 -0
  72. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/task/impl.py +0 -0
  73. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/task/manager.py +0 -0
  74. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/task_tracker/__init__.py +0 -0
  75. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/task_tracker/definition.py +0 -0
  76. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/__init__.py +0 -0
  77. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/constants.py +0 -0
  78. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/definition.py +0 -0
  79. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/descriptions.py +0 -0
  80. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/env.py +0 -0
  81. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/impl.py +0 -0
  82. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/metadata.py +0 -0
  83. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/terminal/__init__.py +0 -0
  84. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/terminal/factory.py +0 -0
  85. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/terminal/interface.py +0 -0
  86. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/terminal/subprocess_terminal.py +0 -0
  87. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/terminal/terminal_session.py +0 -0
  88. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/terminal/tmux_pane_pool.py +0 -0
  89. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/terminal/windows_terminal.py +0 -0
  90. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/timeout_policy.py +0 -0
  91. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/utils/__init__.py +0 -0
  92. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/utils/command.py +0 -0
  93. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/terminal/utils/escape_filter.py +0 -0
  94. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/tom_consult/__init__.py +0 -0
  95. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/tom_consult/definition.py +0 -0
  96. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/tom_consult/executor.py +0 -0
  97. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/utils/__init__.py +0 -0
  98. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/utils/timeout.py +0 -0
  99. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/workflow/__init__.py +0 -0
  100. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/workflow/definition.py +0 -0
  101. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands/tools/workflow/impl.py +0 -0
  102. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands_tools.egg-info/SOURCES.txt +0 -0
  103. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands_tools.egg-info/dependency_links.txt +0 -0
  104. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands_tools.egg-info/requires.txt +0 -0
  105. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/openhands_tools.egg-info/top_level.txt +0 -0
  106. {openhands_tools-1.46.0 → openhands_tools-1.48.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openhands-tools
3
- Version: 1.46.0
3
+ Version: 1.48.0
4
4
  Summary: OpenHands Tools - Runtime tools for 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
@@ -2,7 +2,6 @@
2
2
 
3
3
  from typing import TYPE_CHECKING
4
4
 
5
- from openhands.sdk.agent.utils import make_llm_completion
6
5
  from openhands.sdk.llm import Message, TextContent
7
6
  from openhands.sdk.tool.tool import ToolExecutor
8
7
  from openhands.tools.ask_oracle.definition import (
@@ -96,7 +95,7 @@ class AskOracleExecutor(ToolExecutor[AskOracleAction, AskOracleObservation]):
96
95
  ]
97
96
 
98
97
  try:
99
- llm_response = make_llm_completion(oracle_llm, messages)
98
+ llm_response = oracle_llm.generate(messages=messages, store=False)
100
99
  except Exception as exc:
101
100
  return AskOracleObservation.from_text(
102
101
  text=(
@@ -1,5 +1,6 @@
1
1
  """Tmux-based terminal backend implementation."""
2
2
 
3
+ import logging
3
4
  import time
4
5
  import uuid
5
6
  from collections.abc import Mapping
@@ -7,6 +8,7 @@ from collections.abc import Mapping
7
8
  import libtmux
8
9
 
9
10
  from openhands.sdk.logger import get_logger
11
+ from openhands.sdk.utils.redact import redact_api_key_literals
10
12
  from openhands.tools.terminal.constants import (
11
13
  HISTORY_LIMIT,
12
14
  TMUX_SESSION_HEIGHT,
@@ -24,6 +26,48 @@ from openhands.tools.terminal.terminal.interface import parse_ctrl_key
24
26
 
25
27
  logger = get_logger(__name__)
26
28
 
29
+
30
+ class _SecretRedactFilter(logging.Filter):
31
+ """Redact API key literals from libtmux log records."""
32
+
33
+ def filter(self, record: logging.LogRecord) -> bool:
34
+ if record.msg and isinstance(record.msg, str):
35
+ record.msg = redact_api_key_literals(record.msg)
36
+ if record.args:
37
+ if isinstance(record.args, Mapping):
38
+ record.args = {
39
+ k: redact_api_key_literals(v) if isinstance(v, str) else v
40
+ for k, v in record.args.items()
41
+ }
42
+ elif isinstance(record.args, tuple):
43
+ record.args = tuple(
44
+ redact_api_key_literals(a) if isinstance(a, str) else a
45
+ for a in record.args
46
+ )
47
+ tmux_cmd = getattr(record, "tmux_cmd", None)
48
+ if tmux_cmd and isinstance(tmux_cmd, str):
49
+ record.tmux_cmd = redact_api_key_literals(tmux_cmd)
50
+ return True
51
+
52
+
53
+ def _install_libtmux_redaction_filter() -> None:
54
+ logger_names = [
55
+ "libtmux",
56
+ *(
57
+ name
58
+ for name, candidate in logging.Logger.manager.loggerDict.items()
59
+ if name.startswith("libtmux.") and isinstance(candidate, logging.Logger)
60
+ ),
61
+ ]
62
+ for logger_name in logger_names:
63
+ libtmux_logger = logging.getLogger(logger_name)
64
+ if not any(
65
+ isinstance(log_filter, _SecretRedactFilter)
66
+ for log_filter in libtmux_logger.filters
67
+ ):
68
+ libtmux_logger.addFilter(_SecretRedactFilter())
69
+
70
+
27
71
  # Map normalized special key names to tmux key names.
28
72
  _TMUX_SPECIALS: dict[str, str] = {
29
73
  "ENTER": "Enter",
@@ -64,6 +108,7 @@ class TmuxTerminal(TerminalInterface):
64
108
  env: Mapping[str, str] | None = None,
65
109
  ):
66
110
  super().__init__(work_dir, username)
111
+ _install_libtmux_redaction_filter()
67
112
  self.PS1 = CmdOutputMetadata.to_ps1_prompt()
68
113
  self._env = normalize_terminal_env(env)
69
114
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openhands-tools
3
- Version: 1.46.0
3
+ Version: 1.48.0
4
4
  Summary: OpenHands Tools - Runtime tools for 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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "openhands-tools"
3
- version = "1.46.0"
3
+ version = "1.48.0"
4
4
  description = "OpenHands Tools - Runtime tools for AI agents"
5
5
 
6
6
  requires-python = ">=3.12"
@@ -24,7 +24,7 @@ Documentation = "https://docs.openhands.dev/sdk"
24
24
  "Bug Tracker" = "https://github.com/OpenHands/software-agent-sdk/issues"
25
25
 
26
26
  [build-system]
27
- requires = ["setuptools>=61.0", "wheel"]
27
+ requires = ["setuptools>=83.0.0", "wheel"]
28
28
  build-backend = "setuptools.build_meta"
29
29
 
30
30
  [tool.setuptools]