openhands-sdk 1.7.1__tar.gz → 1.7.2__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.
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/PKG-INFO +1 -1
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/base.py +4 -1
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/agent_context.py +26 -2
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/condenser/llm_summarizing_condenser.py +2 -2
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/skills/skill.py +6 -1
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/impl/local_conversation.py +16 -1
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/utils/verified_models.py +0 -1
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands_sdk.egg-info/PKG-INFO +1 -1
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/pyproject.toml +1 -1
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/agent.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/in_context_learning_example.j2 +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/in_context_learning_example_suffix.j2 +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/model_specific/anthropic_claude.j2 +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/model_specific/google_gemini.j2 +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/model_specific/openai_gpt/gpt-5-codex.j2 +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/model_specific/openai_gpt/gpt-5.j2 +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/security_policy.j2 +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/security_risk_assessment.j2 +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/self_documentation.j2 +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/system_prompt.j2 +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/system_prompt_interactive.j2 +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/system_prompt_long_horizon.j2 +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/system_prompt_planning.j2 +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/system_prompt_tech_philosophy.j2 +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/utils.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/condenser/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/condenser/base.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/condenser/no_op_condenser.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/condenser/pipeline_condenser.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/condenser/prompts/summarizing_prompt.j2 +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/condenser/utils.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/prompts/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/prompts/prompt.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/prompts/templates/ask_agent_template.j2 +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/prompts/templates/skill_knowledge_info.j2 +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/prompts/templates/system_message_suffix.j2 +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/skills/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/skills/exceptions.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/skills/trigger.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/skills/types.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/view.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/base.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/conversation.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/conversation_stats.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/event_store.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/events_list_base.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/exceptions.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/fifo_lock.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/impl/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/impl/remote_conversation.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/persistence_const.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/response_utils.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/secret_registry.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/serialization_diff.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/state.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/stuck_detector.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/title_utils.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/types.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/visualizer/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/visualizer/base.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/visualizer/default.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/critic/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/critic/base.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/critic/impl/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/critic/impl/agent_finished.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/critic/impl/empty_patch.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/critic/impl/pass_critic.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/base.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/condenser.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/conversation_error.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/conversation_state.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/llm_completion_log.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/llm_convertible/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/llm_convertible/action.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/llm_convertible/message.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/llm_convertible/observation.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/llm_convertible/system.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/token.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/types.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/user_action.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/git/exceptions.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/git/git_changes.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/git/git_diff.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/git/models.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/git/utils.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/hooks/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/hooks/config.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/hooks/conversation_hooks.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/hooks/executor.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/hooks/manager.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/hooks/types.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/io/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/io/base.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/io/cache.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/io/local.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/io/memory.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/exceptions/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/exceptions/classifier.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/exceptions/mapping.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/exceptions/types.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/llm.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/llm_registry.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/llm_response.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/message.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/mixins/fn_call_converter.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/mixins/non_native_fc.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/options/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/options/chat_options.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/options/common.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/options/responses_options.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/router/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/router/base.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/router/impl/multimodal.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/router/impl/random.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/streaming.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/utils/metrics.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/utils/model_features.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/utils/model_info.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/utils/model_prompt_spec.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/utils/retry_mixin.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/utils/telemetry.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/llm/utils/unverified_models.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/logger/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/logger/logger.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/logger/rolling.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/mcp/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/mcp/client.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/mcp/definition.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/mcp/exceptions.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/mcp/tool.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/mcp/utils.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/observability/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/observability/laminar.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/observability/utils.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/py.typed +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/secret/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/secret/secrets.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/security/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/security/analyzer.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/security/confirmation_policy.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/security/llm_analyzer.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/security/risk.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/tool/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/tool/builtins/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/tool/builtins/finish.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/tool/builtins/think.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/tool/registry.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/tool/schema.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/tool/spec.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/tool/tool.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/async_executor.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/async_utils.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/cipher.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/command.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/deprecation.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/github.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/json.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/models.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/paging.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/pydantic_diff.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/pydantic_secrets.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/truncate.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/utils/visualize.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/base.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/local.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/models.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/remote/__init__.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/remote/async_remote_workspace.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/remote/base.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/remote/remote_workspace_mixin.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/workspace.py +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands_sdk.egg-info/SOURCES.txt +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands_sdk.egg-info/dependency_links.txt +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands_sdk.egg-info/requires.txt +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands_sdk.egg-info/top_level.txt +0 -0
- {openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/setup.cfg +0 -0
|
@@ -194,7 +194,10 @@ class AgentBase(DiscriminatedUnionMixin, ABC):
|
|
|
194
194
|
**template_kwargs,
|
|
195
195
|
)
|
|
196
196
|
if self.agent_context:
|
|
197
|
-
_system_message_suffix = self.agent_context.get_system_message_suffix(
|
|
197
|
+
_system_message_suffix = self.agent_context.get_system_message_suffix(
|
|
198
|
+
llm_model=self.llm.model,
|
|
199
|
+
llm_model_canonical=self.llm.model_canonical_name,
|
|
200
|
+
)
|
|
198
201
|
if _system_message_suffix:
|
|
199
202
|
system_message += "\n\n" + _system_message_suffix
|
|
200
203
|
return system_message
|
|
@@ -13,6 +13,7 @@ from openhands.sdk.context.skills import (
|
|
|
13
13
|
load_user_skills,
|
|
14
14
|
)
|
|
15
15
|
from openhands.sdk.llm import Message, TextContent
|
|
16
|
+
from openhands.sdk.llm.utils.model_prompt_spec import get_model_prompt_spec
|
|
16
17
|
from openhands.sdk.logger import get_logger
|
|
17
18
|
from openhands.sdk.secret import SecretSource, SecretValue
|
|
18
19
|
|
|
@@ -154,7 +155,11 @@ class AgentContext(BaseModel):
|
|
|
154
155
|
secret_infos.append({"name": name, "description": description})
|
|
155
156
|
return secret_infos
|
|
156
157
|
|
|
157
|
-
def get_system_message_suffix(
|
|
158
|
+
def get_system_message_suffix(
|
|
159
|
+
self,
|
|
160
|
+
llm_model: str | None = None,
|
|
161
|
+
llm_model_canonical: str | None = None,
|
|
162
|
+
) -> str | None:
|
|
158
163
|
"""Get the system message with repo skill content and custom suffix.
|
|
159
164
|
|
|
160
165
|
Custom suffix can typically includes:
|
|
@@ -164,11 +169,30 @@ class AgentContext(BaseModel):
|
|
|
164
169
|
- Repository-specific instructions (collected from repo skills)
|
|
165
170
|
"""
|
|
166
171
|
repo_skills = [s for s in self.skills if s.trigger is None]
|
|
172
|
+
|
|
173
|
+
# Gate vendor-specific repo skills based on model family.
|
|
174
|
+
if llm_model or llm_model_canonical:
|
|
175
|
+
spec = get_model_prompt_spec(llm_model or "", llm_model_canonical)
|
|
176
|
+
family = (spec.family or "").lower()
|
|
177
|
+
if family:
|
|
178
|
+
filtered: list[Skill] = []
|
|
179
|
+
for s in repo_skills:
|
|
180
|
+
n = (s.name or "").lower()
|
|
181
|
+
if n == "claude" and not (
|
|
182
|
+
"anthropic" in family or "claude" in family
|
|
183
|
+
):
|
|
184
|
+
continue
|
|
185
|
+
if n == "gemini" and not (
|
|
186
|
+
"gemini" in family or "google_gemini" in family
|
|
187
|
+
):
|
|
188
|
+
continue
|
|
189
|
+
filtered.append(s)
|
|
190
|
+
repo_skills = filtered
|
|
191
|
+
|
|
167
192
|
logger.debug(f"Triggered {len(repo_skills)} repository skills: {repo_skills}")
|
|
168
193
|
# Build the workspace context information
|
|
169
194
|
secret_infos = self.get_secret_infos()
|
|
170
195
|
if repo_skills or self.system_message_suffix or secret_infos:
|
|
171
|
-
# TODO(test): add a test for this rendering to make sure they work
|
|
172
196
|
formatted_text = render_template(
|
|
173
197
|
prompt_dir=str(PROMPT_DIR),
|
|
174
198
|
template_name="system_message_suffix.j2",
|
|
@@ -36,9 +36,9 @@ class LLMSummarizingCondenser(RollingCondenser):
|
|
|
36
36
|
"""
|
|
37
37
|
|
|
38
38
|
llm: LLM
|
|
39
|
-
max_size: int = Field(default=
|
|
39
|
+
max_size: int = Field(default=240, gt=0)
|
|
40
40
|
max_tokens: int | None = None
|
|
41
|
-
keep_first: int = Field(default=
|
|
41
|
+
keep_first: int = Field(default=2, ge=0)
|
|
42
42
|
|
|
43
43
|
@model_validator(mode="after")
|
|
44
44
|
def validate_keep_first_vs_max_size(self):
|
|
@@ -411,7 +411,10 @@ def load_skills_from_dir(
|
|
|
411
411
|
# Process all files in one loop
|
|
412
412
|
for file in chain(special_files, md_files):
|
|
413
413
|
try:
|
|
414
|
-
skill = Skill.load(
|
|
414
|
+
skill = Skill.load(
|
|
415
|
+
file,
|
|
416
|
+
skill_dir,
|
|
417
|
+
)
|
|
415
418
|
if skill.trigger is None:
|
|
416
419
|
repo_skills[skill.name] = skill
|
|
417
420
|
else:
|
|
@@ -700,6 +703,8 @@ def load_public_skills(
|
|
|
700
703
|
path=skill_file,
|
|
701
704
|
skill_dir=repo_path,
|
|
702
705
|
)
|
|
706
|
+
if skill is None:
|
|
707
|
+
continue
|
|
703
708
|
all_skills.append(skill)
|
|
704
709
|
logger.debug(f"Loaded public skill: {skill.name}")
|
|
705
710
|
except Exception as e:
|
{openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/impl/local_conversation.py
RENAMED
|
@@ -377,9 +377,24 @@ class LocalConversation(BaseConversation):
|
|
|
377
377
|
if (
|
|
378
378
|
self.state.execution_status
|
|
379
379
|
== ConversationExecutionStatus.WAITING_FOR_CONFIRMATION
|
|
380
|
-
or iteration >= self.max_iteration_per_run
|
|
381
380
|
):
|
|
382
381
|
break
|
|
382
|
+
|
|
383
|
+
if iteration >= self.max_iteration_per_run:
|
|
384
|
+
error_msg = (
|
|
385
|
+
f"Agent reached maximum iterations limit "
|
|
386
|
+
f"({self.max_iteration_per_run})."
|
|
387
|
+
)
|
|
388
|
+
logger.error(error_msg)
|
|
389
|
+
self._state.execution_status = ConversationExecutionStatus.ERROR
|
|
390
|
+
self._on_event(
|
|
391
|
+
ConversationErrorEvent(
|
|
392
|
+
source="environment",
|
|
393
|
+
code="MaxIterationsReached",
|
|
394
|
+
detail=error_msg,
|
|
395
|
+
)
|
|
396
|
+
)
|
|
397
|
+
break
|
|
383
398
|
except Exception as e:
|
|
384
399
|
self._state.execution_status = ConversationExecutionStatus.ERROR
|
|
385
400
|
|
|
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
|
{openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/security_risk_assessment.j2
RENAMED
|
File without changes
|
{openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/self_documentation.j2
RENAMED
|
File without changes
|
|
File without changes
|
{openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/system_prompt_interactive.j2
RENAMED
|
File without changes
|
|
File without changes
|
{openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/agent/prompts/system_prompt_planning.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/condenser/no_op_condenser.py
RENAMED
|
File without changes
|
{openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/context/condenser/pipeline_condenser.py
RENAMED
|
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
|
{openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/conversation_stats.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/impl/remote_conversation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/serialization_diff.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/visualizer/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/conversation/visualizer/default.py
RENAMED
|
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
|
{openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/event/llm_convertible/observation.py
RENAMED
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/remote/async_remote_workspace.py
RENAMED
|
File without changes
|
|
File without changes
|
{openhands_sdk-1.7.1 → openhands_sdk-1.7.2}/openhands/sdk/workspace/remote/remote_workspace_mixin.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|