openhands-sdk 1.5.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. openhands_sdk-1.5.1/PKG-INFO +17 -0
  2. openhands_sdk-1.5.1/openhands/sdk/__init__.py +103 -0
  3. openhands_sdk-1.5.1/openhands/sdk/agent/__init__.py +8 -0
  4. openhands_sdk-1.5.1/openhands/sdk/agent/agent.py +614 -0
  5. openhands_sdk-1.5.1/openhands/sdk/agent/base.py +417 -0
  6. openhands_sdk-1.5.1/openhands/sdk/agent/prompts/in_context_learning_example.j2 +169 -0
  7. openhands_sdk-1.5.1/openhands/sdk/agent/prompts/in_context_learning_example_suffix.j2 +3 -0
  8. openhands_sdk-1.5.1/openhands/sdk/agent/prompts/security_policy.j2 +22 -0
  9. openhands_sdk-1.5.1/openhands/sdk/agent/prompts/security_risk_assessment.j2 +21 -0
  10. openhands_sdk-1.5.1/openhands/sdk/agent/prompts/system_prompt.j2 +104 -0
  11. openhands_sdk-1.5.1/openhands/sdk/agent/prompts/system_prompt_interactive.j2 +14 -0
  12. openhands_sdk-1.5.1/openhands/sdk/agent/prompts/system_prompt_long_horizon.j2 +40 -0
  13. openhands_sdk-1.5.1/openhands/sdk/agent/prompts/system_prompt_planning.j2 +40 -0
  14. openhands_sdk-1.5.1/openhands/sdk/agent/prompts/system_prompt_tech_philosophy.j2 +122 -0
  15. openhands_sdk-1.5.1/openhands/sdk/agent/utils.py +214 -0
  16. openhands_sdk-1.5.1/openhands/sdk/context/__init__.py +26 -0
  17. openhands_sdk-1.5.1/openhands/sdk/context/agent_context.py +232 -0
  18. openhands_sdk-1.5.1/openhands/sdk/context/condenser/__init__.py +18 -0
  19. openhands_sdk-1.5.1/openhands/sdk/context/condenser/base.py +95 -0
  20. openhands_sdk-1.5.1/openhands/sdk/context/condenser/llm_summarizing_condenser.py +89 -0
  21. openhands_sdk-1.5.1/openhands/sdk/context/condenser/no_op_condenser.py +13 -0
  22. openhands_sdk-1.5.1/openhands/sdk/context/condenser/pipeline_condenser.py +55 -0
  23. openhands_sdk-1.5.1/openhands/sdk/context/condenser/prompts/summarizing_prompt.j2 +59 -0
  24. openhands_sdk-1.5.1/openhands/sdk/context/prompts/__init__.py +6 -0
  25. openhands_sdk-1.5.1/openhands/sdk/context/prompts/prompt.py +76 -0
  26. openhands_sdk-1.5.1/openhands/sdk/context/prompts/templates/ask_agent_template.j2 +11 -0
  27. openhands_sdk-1.5.1/openhands/sdk/context/prompts/templates/skill_knowledge_info.j2 +8 -0
  28. openhands_sdk-1.5.1/openhands/sdk/context/prompts/templates/system_message_suffix.j2 +32 -0
  29. openhands_sdk-1.5.1/openhands/sdk/context/skills/__init__.py +26 -0
  30. openhands_sdk-1.5.1/openhands/sdk/context/skills/exceptions.py +11 -0
  31. openhands_sdk-1.5.1/openhands/sdk/context/skills/skill.py +569 -0
  32. openhands_sdk-1.5.1/openhands/sdk/context/skills/trigger.py +36 -0
  33. openhands_sdk-1.5.1/openhands/sdk/context/skills/types.py +48 -0
  34. openhands_sdk-1.5.1/openhands/sdk/context/view.py +243 -0
  35. openhands_sdk-1.5.1/openhands/sdk/conversation/__init__.py +40 -0
  36. openhands_sdk-1.5.1/openhands/sdk/conversation/base.py +281 -0
  37. openhands_sdk-1.5.1/openhands/sdk/conversation/conversation.py +133 -0
  38. openhands_sdk-1.5.1/openhands/sdk/conversation/conversation_stats.py +85 -0
  39. openhands_sdk-1.5.1/openhands/sdk/conversation/event_store.py +157 -0
  40. openhands_sdk-1.5.1/openhands/sdk/conversation/events_list_base.py +17 -0
  41. openhands_sdk-1.5.1/openhands/sdk/conversation/exceptions.py +25 -0
  42. openhands_sdk-1.5.1/openhands/sdk/conversation/fifo_lock.py +133 -0
  43. openhands_sdk-1.5.1/openhands/sdk/conversation/impl/__init__.py +5 -0
  44. openhands_sdk-1.5.1/openhands/sdk/conversation/impl/local_conversation.py +598 -0
  45. openhands_sdk-1.5.1/openhands/sdk/conversation/impl/remote_conversation.py +785 -0
  46. openhands_sdk-1.5.1/openhands/sdk/conversation/persistence_const.py +9 -0
  47. openhands_sdk-1.5.1/openhands/sdk/conversation/response_utils.py +41 -0
  48. openhands_sdk-1.5.1/openhands/sdk/conversation/secret_registry.py +126 -0
  49. openhands_sdk-1.5.1/openhands/sdk/conversation/serialization_diff.py +0 -0
  50. openhands_sdk-1.5.1/openhands/sdk/conversation/state.py +351 -0
  51. openhands_sdk-1.5.1/openhands/sdk/conversation/stuck_detector.py +275 -0
  52. openhands_sdk-1.5.1/openhands/sdk/conversation/title_utils.py +191 -0
  53. openhands_sdk-1.5.1/openhands/sdk/conversation/types.py +15 -0
  54. openhands_sdk-1.5.1/openhands/sdk/conversation/visualizer/__init__.py +12 -0
  55. openhands_sdk-1.5.1/openhands/sdk/conversation/visualizer/base.py +67 -0
  56. openhands_sdk-1.5.1/openhands/sdk/conversation/visualizer/default.py +373 -0
  57. openhands_sdk-1.5.1/openhands/sdk/critic/__init__.py +15 -0
  58. openhands_sdk-1.5.1/openhands/sdk/critic/base.py +38 -0
  59. openhands_sdk-1.5.1/openhands/sdk/critic/impl/__init__.py +12 -0
  60. openhands_sdk-1.5.1/openhands/sdk/critic/impl/agent_finished.py +83 -0
  61. openhands_sdk-1.5.1/openhands/sdk/critic/impl/empty_patch.py +49 -0
  62. openhands_sdk-1.5.1/openhands/sdk/critic/impl/pass_critic.py +42 -0
  63. openhands_sdk-1.5.1/openhands/sdk/event/__init__.py +42 -0
  64. openhands_sdk-1.5.1/openhands/sdk/event/base.py +149 -0
  65. openhands_sdk-1.5.1/openhands/sdk/event/condenser.py +82 -0
  66. openhands_sdk-1.5.1/openhands/sdk/event/conversation_error.py +25 -0
  67. openhands_sdk-1.5.1/openhands/sdk/event/conversation_state.py +104 -0
  68. openhands_sdk-1.5.1/openhands/sdk/event/llm_completion_log.py +39 -0
  69. openhands_sdk-1.5.1/openhands/sdk/event/llm_convertible/__init__.py +20 -0
  70. openhands_sdk-1.5.1/openhands/sdk/event/llm_convertible/action.py +139 -0
  71. openhands_sdk-1.5.1/openhands/sdk/event/llm_convertible/message.py +142 -0
  72. openhands_sdk-1.5.1/openhands/sdk/event/llm_convertible/observation.py +141 -0
  73. openhands_sdk-1.5.1/openhands/sdk/event/llm_convertible/system.py +65 -0
  74. openhands_sdk-1.5.1/openhands/sdk/event/token.py +16 -0
  75. openhands_sdk-1.5.1/openhands/sdk/event/types.py +11 -0
  76. openhands_sdk-1.5.1/openhands/sdk/event/user_action.py +21 -0
  77. openhands_sdk-1.5.1/openhands/sdk/git/exceptions.py +43 -0
  78. openhands_sdk-1.5.1/openhands/sdk/git/git_changes.py +249 -0
  79. openhands_sdk-1.5.1/openhands/sdk/git/git_diff.py +129 -0
  80. openhands_sdk-1.5.1/openhands/sdk/git/models.py +21 -0
  81. openhands_sdk-1.5.1/openhands/sdk/git/utils.py +189 -0
  82. openhands_sdk-1.5.1/openhands/sdk/io/__init__.py +6 -0
  83. openhands_sdk-1.5.1/openhands/sdk/io/base.py +48 -0
  84. openhands_sdk-1.5.1/openhands/sdk/io/local.py +82 -0
  85. openhands_sdk-1.5.1/openhands/sdk/io/memory.py +54 -0
  86. openhands_sdk-1.5.1/openhands/sdk/llm/__init__.py +45 -0
  87. openhands_sdk-1.5.1/openhands/sdk/llm/exceptions/__init__.py +45 -0
  88. openhands_sdk-1.5.1/openhands/sdk/llm/exceptions/classifier.py +50 -0
  89. openhands_sdk-1.5.1/openhands/sdk/llm/exceptions/mapping.py +54 -0
  90. openhands_sdk-1.5.1/openhands/sdk/llm/exceptions/types.py +101 -0
  91. openhands_sdk-1.5.1/openhands/sdk/llm/llm.py +1139 -0
  92. openhands_sdk-1.5.1/openhands/sdk/llm/llm_registry.py +122 -0
  93. openhands_sdk-1.5.1/openhands/sdk/llm/llm_response.py +59 -0
  94. openhands_sdk-1.5.1/openhands/sdk/llm/message.py +655 -0
  95. openhands_sdk-1.5.1/openhands/sdk/llm/mixins/fn_call_converter.py +1243 -0
  96. openhands_sdk-1.5.1/openhands/sdk/llm/mixins/non_native_fc.py +93 -0
  97. openhands_sdk-1.5.1/openhands/sdk/llm/options/__init__.py +1 -0
  98. openhands_sdk-1.5.1/openhands/sdk/llm/options/chat_options.py +93 -0
  99. openhands_sdk-1.5.1/openhands/sdk/llm/options/common.py +19 -0
  100. openhands_sdk-1.5.1/openhands/sdk/llm/options/responses_options.py +67 -0
  101. openhands_sdk-1.5.1/openhands/sdk/llm/router/__init__.py +10 -0
  102. openhands_sdk-1.5.1/openhands/sdk/llm/router/base.py +117 -0
  103. openhands_sdk-1.5.1/openhands/sdk/llm/router/impl/multimodal.py +76 -0
  104. openhands_sdk-1.5.1/openhands/sdk/llm/router/impl/random.py +22 -0
  105. openhands_sdk-1.5.1/openhands/sdk/llm/streaming.py +9 -0
  106. openhands_sdk-1.5.1/openhands/sdk/llm/utils/metrics.py +312 -0
  107. openhands_sdk-1.5.1/openhands/sdk/llm/utils/model_features.py +151 -0
  108. openhands_sdk-1.5.1/openhands/sdk/llm/utils/model_info.py +90 -0
  109. openhands_sdk-1.5.1/openhands/sdk/llm/utils/retry_mixin.py +128 -0
  110. openhands_sdk-1.5.1/openhands/sdk/llm/utils/telemetry.py +362 -0
  111. openhands_sdk-1.5.1/openhands/sdk/llm/utils/unverified_models.py +156 -0
  112. openhands_sdk-1.5.1/openhands/sdk/llm/utils/verified_models.py +66 -0
  113. openhands_sdk-1.5.1/openhands/sdk/logger/__init__.py +22 -0
  114. openhands_sdk-1.5.1/openhands/sdk/logger/logger.py +195 -0
  115. openhands_sdk-1.5.1/openhands/sdk/logger/rolling.py +113 -0
  116. openhands_sdk-1.5.1/openhands/sdk/mcp/__init__.py +24 -0
  117. openhands_sdk-1.5.1/openhands/sdk/mcp/client.py +76 -0
  118. openhands_sdk-1.5.1/openhands/sdk/mcp/definition.py +106 -0
  119. openhands_sdk-1.5.1/openhands/sdk/mcp/exceptions.py +19 -0
  120. openhands_sdk-1.5.1/openhands/sdk/mcp/tool.py +270 -0
  121. openhands_sdk-1.5.1/openhands/sdk/mcp/utils.py +83 -0
  122. openhands_sdk-1.5.1/openhands/sdk/observability/__init__.py +4 -0
  123. openhands_sdk-1.5.1/openhands/sdk/observability/laminar.py +166 -0
  124. openhands_sdk-1.5.1/openhands/sdk/observability/utils.py +20 -0
  125. openhands_sdk-1.5.1/openhands/sdk/py.typed +0 -0
  126. openhands_sdk-1.5.1/openhands/sdk/secret/__init__.py +19 -0
  127. openhands_sdk-1.5.1/openhands/sdk/secret/secrets.py +92 -0
  128. openhands_sdk-1.5.1/openhands/sdk/security/__init__.py +6 -0
  129. openhands_sdk-1.5.1/openhands/sdk/security/analyzer.py +111 -0
  130. openhands_sdk-1.5.1/openhands/sdk/security/confirmation_policy.py +61 -0
  131. openhands_sdk-1.5.1/openhands/sdk/security/llm_analyzer.py +29 -0
  132. openhands_sdk-1.5.1/openhands/sdk/security/risk.py +100 -0
  133. openhands_sdk-1.5.1/openhands/sdk/tool/__init__.py +34 -0
  134. openhands_sdk-1.5.1/openhands/sdk/tool/builtins/__init__.py +34 -0
  135. openhands_sdk-1.5.1/openhands/sdk/tool/builtins/finish.py +106 -0
  136. openhands_sdk-1.5.1/openhands/sdk/tool/builtins/think.py +117 -0
  137. openhands_sdk-1.5.1/openhands/sdk/tool/registry.py +161 -0
  138. openhands_sdk-1.5.1/openhands/sdk/tool/schema.py +276 -0
  139. openhands_sdk-1.5.1/openhands/sdk/tool/spec.py +39 -0
  140. openhands_sdk-1.5.1/openhands/sdk/tool/tool.py +481 -0
  141. openhands_sdk-1.5.1/openhands/sdk/utils/__init__.py +22 -0
  142. openhands_sdk-1.5.1/openhands/sdk/utils/async_executor.py +106 -0
  143. openhands_sdk-1.5.1/openhands/sdk/utils/async_utils.py +39 -0
  144. openhands_sdk-1.5.1/openhands/sdk/utils/cipher.py +68 -0
  145. openhands_sdk-1.5.1/openhands/sdk/utils/command.py +90 -0
  146. openhands_sdk-1.5.1/openhands/sdk/utils/deprecation.py +166 -0
  147. openhands_sdk-1.5.1/openhands/sdk/utils/github.py +44 -0
  148. openhands_sdk-1.5.1/openhands/sdk/utils/json.py +48 -0
  149. openhands_sdk-1.5.1/openhands/sdk/utils/models.py +570 -0
  150. openhands_sdk-1.5.1/openhands/sdk/utils/pydantic_diff.py +85 -0
  151. openhands_sdk-1.5.1/openhands/sdk/utils/pydantic_secrets.py +64 -0
  152. openhands_sdk-1.5.1/openhands/sdk/utils/truncate.py +117 -0
  153. openhands_sdk-1.5.1/openhands/sdk/utils/visualize.py +58 -0
  154. openhands_sdk-1.5.1/openhands/sdk/workspace/__init__.py +17 -0
  155. openhands_sdk-1.5.1/openhands/sdk/workspace/base.py +158 -0
  156. openhands_sdk-1.5.1/openhands/sdk/workspace/local.py +189 -0
  157. openhands_sdk-1.5.1/openhands/sdk/workspace/models.py +35 -0
  158. openhands_sdk-1.5.1/openhands/sdk/workspace/remote/__init__.py +8 -0
  159. openhands_sdk-1.5.1/openhands/sdk/workspace/remote/async_remote_workspace.py +149 -0
  160. openhands_sdk-1.5.1/openhands/sdk/workspace/remote/base.py +164 -0
  161. openhands_sdk-1.5.1/openhands/sdk/workspace/remote/remote_workspace_mixin.py +323 -0
  162. openhands_sdk-1.5.1/openhands/sdk/workspace/workspace.py +49 -0
  163. openhands_sdk-1.5.1/openhands_sdk.egg-info/PKG-INFO +17 -0
  164. openhands_sdk-1.5.1/openhands_sdk.egg-info/SOURCES.txt +328 -0
  165. openhands_sdk-1.5.1/openhands_sdk.egg-info/dependency_links.txt +1 -0
  166. openhands_sdk-1.5.1/openhands_sdk.egg-info/requires.txt +13 -0
  167. openhands_sdk-1.5.1/openhands_sdk.egg-info/top_level.txt +1 -0
  168. openhands_sdk-1.5.1/pyproject.toml +35 -0
  169. openhands_sdk-1.5.1/setup.cfg +4 -0
@@ -0,0 +1,17 @@
1
+ Metadata-Version: 2.4
2
+ Name: openhands-sdk
3
+ Version: 1.5.1
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.7
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.20
16
+ Provides-Extra: boto3
17
+ Requires-Dist: boto3>=1.35.0; extra == "boto3"
@@ -0,0 +1,103 @@
1
+ from importlib.metadata import PackageNotFoundError, version
2
+
3
+ from openhands.sdk.agent import Agent, AgentBase
4
+ from openhands.sdk.context import AgentContext
5
+ from openhands.sdk.context.condenser import (
6
+ LLMSummarizingCondenser,
7
+ )
8
+ from openhands.sdk.conversation import (
9
+ BaseConversation,
10
+ Conversation,
11
+ ConversationCallbackType,
12
+ ConversationExecutionStatus,
13
+ LocalConversation,
14
+ RemoteConversation,
15
+ )
16
+ from openhands.sdk.conversation.conversation_stats import ConversationStats
17
+ from openhands.sdk.event import Event, LLMConvertibleEvent
18
+ from openhands.sdk.event.llm_convertible import MessageEvent
19
+ from openhands.sdk.io import FileStore, LocalFileStore
20
+ from openhands.sdk.llm import (
21
+ LLM,
22
+ ImageContent,
23
+ LLMRegistry,
24
+ LLMStreamChunk,
25
+ Message,
26
+ RedactedThinkingBlock,
27
+ RegistryEvent,
28
+ TextContent,
29
+ ThinkingBlock,
30
+ TokenCallbackType,
31
+ )
32
+ from openhands.sdk.logger import get_logger
33
+ from openhands.sdk.mcp import (
34
+ MCPClient,
35
+ MCPToolDefinition,
36
+ MCPToolObservation,
37
+ create_mcp_tools,
38
+ )
39
+ from openhands.sdk.tool import (
40
+ Action,
41
+ Observation,
42
+ Tool,
43
+ ToolDefinition,
44
+ list_registered_tools,
45
+ register_tool,
46
+ resolve_tool,
47
+ )
48
+ from openhands.sdk.workspace import (
49
+ LocalWorkspace,
50
+ RemoteWorkspace,
51
+ Workspace,
52
+ )
53
+
54
+
55
+ try:
56
+ __version__ = version("openhands-sdk")
57
+ except PackageNotFoundError:
58
+ __version__ = "0.0.0" # fallback for editable/unbuilt environments
59
+
60
+ __all__ = [
61
+ "LLM",
62
+ "LLMRegistry",
63
+ "LLMStreamChunk",
64
+ "TokenCallbackType",
65
+ "ConversationStats",
66
+ "RegistryEvent",
67
+ "Message",
68
+ "TextContent",
69
+ "ImageContent",
70
+ "ThinkingBlock",
71
+ "RedactedThinkingBlock",
72
+ "Tool",
73
+ "ToolDefinition",
74
+ "AgentBase",
75
+ "Agent",
76
+ "Action",
77
+ "Observation",
78
+ "MCPClient",
79
+ "MCPToolDefinition",
80
+ "MCPToolObservation",
81
+ "MessageEvent",
82
+ "create_mcp_tools",
83
+ "get_logger",
84
+ "Conversation",
85
+ "BaseConversation",
86
+ "LocalConversation",
87
+ "RemoteConversation",
88
+ "ConversationExecutionStatus",
89
+ "ConversationCallbackType",
90
+ "Event",
91
+ "LLMConvertibleEvent",
92
+ "AgentContext",
93
+ "LLMSummarizingCondenser",
94
+ "FileStore",
95
+ "LocalFileStore",
96
+ "register_tool",
97
+ "resolve_tool",
98
+ "list_registered_tools",
99
+ "Workspace",
100
+ "LocalWorkspace",
101
+ "RemoteWorkspace",
102
+ "__version__",
103
+ ]
@@ -0,0 +1,8 @@
1
+ from openhands.sdk.agent.agent import Agent
2
+ from openhands.sdk.agent.base import AgentBase
3
+
4
+
5
+ __all__ = [
6
+ "Agent",
7
+ "AgentBase",
8
+ ]