migrai 1.3.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.
- migrai-1.3.0/LICENSE +30 -0
- migrai-1.3.0/PKG-INFO +210 -0
- migrai-1.3.0/README.md +87 -0
- migrai-1.3.0/openhands/README.md +54 -0
- migrai-1.3.0/openhands/__init__.py +9 -0
- migrai-1.3.0/openhands/agenthub/README.md +142 -0
- migrai-1.3.0/openhands/agenthub/__init__.py +24 -0
- migrai-1.3.0/openhands/agenthub/browsing_agent/README.md +16 -0
- migrai-1.3.0/openhands/agenthub/browsing_agent/__init__.py +4 -0
- migrai-1.3.0/openhands/agenthub/browsing_agent/browsing_agent.py +230 -0
- migrai-1.3.0/openhands/agenthub/browsing_agent/response_parser.py +133 -0
- migrai-1.3.0/openhands/agenthub/browsing_agent/utils.py +181 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/README.md +113 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/__init__.py +4 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/codeact_agent.py +337 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/function_calling.py +503 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/additional_info.j2 +67 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/in_context_learning_example.j2 +180 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/in_context_learning_example_suffix.j2 +3 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/microagent_info.j2 +8 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/security_risk_assessment.j2 +23 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/system_prompt.j2 +339 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/system_prompt_interactive.j2 +15 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/system_prompt_long_horizon.j2 +53 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/system_prompt_tech_philosophy.j2 +122 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/user_prompt.j2 +0 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/tools/__init__.py +21 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/tools/bash.py +89 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/tools/browser.py +178 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/tools/condensation_request.py +23 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/tools/finish.py +54 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/tools/ipython.py +41 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/tools/llm_based_edit.py +162 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/tools/prompt.py +35 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/tools/request_secret.py +46 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/tools/security_utils.py +17 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/tools/str_replace_editor.py +168 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/tools/task_tracker.py +226 -0
- migrai-1.3.0/openhands/agenthub/codeact_agent/tools/think.py +34 -0
- migrai-1.3.0/openhands/agenthub/dummy_agent/__init__.py +4 -0
- migrai-1.3.0/openhands/agenthub/dummy_agent/agent.py +183 -0
- migrai-1.3.0/openhands/agenthub/loc_agent/README.md +14 -0
- migrai-1.3.0/openhands/agenthub/loc_agent/__init__.py +4 -0
- migrai-1.3.0/openhands/agenthub/loc_agent/function_calling.py +138 -0
- migrai-1.3.0/openhands/agenthub/loc_agent/loc_agent.py +47 -0
- migrai-1.3.0/openhands/agenthub/loc_agent/tools/__init__.py +8 -0
- migrai-1.3.0/openhands/agenthub/loc_agent/tools/explore_structure.py +192 -0
- migrai-1.3.0/openhands/agenthub/loc_agent/tools/search_content.py +105 -0
- migrai-1.3.0/openhands/agenthub/readonly_agent/__init__.py +4 -0
- migrai-1.3.0/openhands/agenthub/readonly_agent/function_calling.py +261 -0
- migrai-1.3.0/openhands/agenthub/readonly_agent/prompts/additional_info.j2 +29 -0
- migrai-1.3.0/openhands/agenthub/readonly_agent/prompts/in_context_learning_example.j2 +101 -0
- migrai-1.3.0/openhands/agenthub/readonly_agent/prompts/in_context_learning_example_suffix.j2 +3 -0
- migrai-1.3.0/openhands/agenthub/readonly_agent/prompts/microagent_info.j2 +8 -0
- migrai-1.3.0/openhands/agenthub/readonly_agent/prompts/system_prompt.j2 +34 -0
- migrai-1.3.0/openhands/agenthub/readonly_agent/prompts/user_prompt.j2 +0 -0
- migrai-1.3.0/openhands/agenthub/readonly_agent/readonly_agent.py +90 -0
- migrai-1.3.0/openhands/agenthub/readonly_agent/tools/__init__.py +21 -0
- migrai-1.3.0/openhands/agenthub/readonly_agent/tools/glob.py +38 -0
- migrai-1.3.0/openhands/agenthub/readonly_agent/tools/grep.py +44 -0
- migrai-1.3.0/openhands/agenthub/readonly_agent/tools/view.py +41 -0
- migrai-1.3.0/openhands/agenthub/visualbrowsing_agent/README.md +7 -0
- migrai-1.3.0/openhands/agenthub/visualbrowsing_agent/__init__.py +6 -0
- migrai-1.3.0/openhands/agenthub/visualbrowsing_agent/visualbrowsing_agent.py +317 -0
- migrai-1.3.0/openhands/app_server/README.md +19 -0
- migrai-1.3.0/openhands/app_server/__init__.py +0 -0
- migrai-1.3.0/openhands/app_server/app_conversation/README.md +20 -0
- migrai-1.3.0/openhands/app_server/app_conversation/__init__.py +1 -0
- migrai-1.3.0/openhands/app_server/app_conversation/app_conversation_info_service.py +113 -0
- migrai-1.3.0/openhands/app_server/app_conversation/app_conversation_models.py +337 -0
- migrai-1.3.0/openhands/app_server/app_conversation/app_conversation_router.py +3359 -0
- migrai-1.3.0/openhands/app_server/app_conversation/app_conversation_service.py +147 -0
- migrai-1.3.0/openhands/app_server/app_conversation/app_conversation_service_base.py +592 -0
- migrai-1.3.0/openhands/app_server/app_conversation/app_conversation_start_task_service.py +76 -0
- migrai-1.3.0/openhands/app_server/app_conversation/git/README.md +1 -0
- migrai-1.3.0/openhands/app_server/app_conversation/git/pre-commit.sh +11 -0
- migrai-1.3.0/openhands/app_server/app_conversation/live_status_app_conversation_service.py +7586 -0
- migrai-1.3.0/openhands/app_server/app_conversation/sandbox_recovery.py +437 -0
- migrai-1.3.0/openhands/app_server/app_conversation/skill_loader.py +703 -0
- migrai-1.3.0/openhands/app_server/app_conversation/sql_app_conversation_info_service.py +963 -0
- migrai-1.3.0/openhands/app_server/app_conversation/sql_app_conversation_start_task_service.py +437 -0
- migrai-1.3.0/openhands/app_server/app_lifespan/alembic/README +15 -0
- migrai-1.3.0/openhands/app_server/app_lifespan/alembic/env.py +121 -0
- migrai-1.3.0/openhands/app_server/app_lifespan/alembic/script.py.mako +28 -0
- migrai-1.3.0/openhands/app_server/app_lifespan/alembic/versions/001.py +268 -0
- migrai-1.3.0/openhands/app_server/app_lifespan/alembic/versions/002.py +73 -0
- migrai-1.3.0/openhands/app_server/app_lifespan/alembic/versions/003.py +41 -0
- migrai-1.3.0/openhands/app_server/app_lifespan/alembic/versions/004.py +41 -0
- migrai-1.3.0/openhands/app_server/app_lifespan/alembic/versions/005.py +46 -0
- migrai-1.3.0/openhands/app_server/app_lifespan/alembic/versions/006.py +32 -0
- migrai-1.3.0/openhands/app_server/app_lifespan/alembic/versions/007.py +41 -0
- migrai-1.3.0/openhands/app_server/app_lifespan/alembic/versions/008.py +42 -0
- migrai-1.3.0/openhands/app_server/app_lifespan/alembic.ini +150 -0
- migrai-1.3.0/openhands/app_server/app_lifespan/app_lifespan_service.py +21 -0
- migrai-1.3.0/openhands/app_server/app_lifespan/oss_app_lifespan_service.py +38 -0
- migrai-1.3.0/openhands/app_server/config.py +678 -0
- migrai-1.3.0/openhands/app_server/errors.py +43 -0
- migrai-1.3.0/openhands/app_server/event/README.md +21 -0
- migrai-1.3.0/openhands/app_server/event/event_router.py +445 -0
- migrai-1.3.0/openhands/app_server/event/event_service.py +60 -0
- migrai-1.3.0/openhands/app_server/event/event_service_base.py +284 -0
- migrai-1.3.0/openhands/app_server/event/event_store.py +0 -0
- migrai-1.3.0/openhands/app_server/event/filesystem_event_service.py +82 -0
- migrai-1.3.0/openhands/app_server/event/google_cloud_event_service.py +90 -0
- migrai-1.3.0/openhands/app_server/event_callback/README.md +21 -0
- migrai-1.3.0/openhands/app_server/event_callback/__init__.py +19 -0
- migrai-1.3.0/openhands/app_server/event_callback/event_callback_models.py +93 -0
- migrai-1.3.0/openhands/app_server/event_callback/event_callback_result_models.py +35 -0
- migrai-1.3.0/openhands/app_server/event_callback/event_callback_service.py +68 -0
- migrai-1.3.0/openhands/app_server/event_callback/set_title_callback_processor.py +422 -0
- migrai-1.3.0/openhands/app_server/event_callback/sql_event_callback_service.py +265 -0
- migrai-1.3.0/openhands/app_server/event_callback/util.py +61 -0
- migrai-1.3.0/openhands/app_server/event_callback/webhook_router.py +387 -0
- migrai-1.3.0/openhands/app_server/sandbox/README.md +21 -0
- migrai-1.3.0/openhands/app_server/sandbox/docker_sandbox_service.py +791 -0
- migrai-1.3.0/openhands/app_server/sandbox/docker_sandbox_spec_service.py +150 -0
- migrai-1.3.0/openhands/app_server/sandbox/kubernetes_sandbox_service.py +3365 -0
- migrai-1.3.0/openhands/app_server/sandbox/kubernetes_sandbox_spec_service.py +130 -0
- migrai-1.3.0/openhands/app_server/sandbox/pool/DESIGN.md +792 -0
- migrai-1.3.0/openhands/app_server/sandbox/pool/__init__.py +103 -0
- migrai-1.3.0/openhands/app_server/sandbox/pool/circuit_breaker.py +645 -0
- migrai-1.3.0/openhands/app_server/sandbox/pool/kubernetes_sandbox_pool_manager.py +7137 -0
- migrai-1.3.0/openhands/app_server/sandbox/pool/redis_sandbox_pool_coordinator.py +1541 -0
- migrai-1.3.0/openhands/app_server/sandbox/pool/sandbox_pool_config.py +229 -0
- migrai-1.3.0/openhands/app_server/sandbox/pool/sandbox_pool_manager.py +630 -0
- migrai-1.3.0/openhands/app_server/sandbox/pool/sandbox_pool_state.py +278 -0
- migrai-1.3.0/openhands/app_server/sandbox/preset_sandbox_spec_service.py +87 -0
- migrai-1.3.0/openhands/app_server/sandbox/process_sandbox_service.py +734 -0
- migrai-1.3.0/openhands/app_server/sandbox/process_sandbox_spec_service.py +48 -0
- migrai-1.3.0/openhands/app_server/sandbox/remote_sandbox_service.py +843 -0
- migrai-1.3.0/openhands/app_server/sandbox/remote_sandbox_spec_service.py +50 -0
- migrai-1.3.0/openhands/app_server/sandbox/sandbox_models.py +99 -0
- migrai-1.3.0/openhands/app_server/sandbox/sandbox_router.py +424 -0
- migrai-1.3.0/openhands/app_server/sandbox/sandbox_service.py +284 -0
- migrai-1.3.0/openhands/app_server/sandbox/sandbox_spec_models.py +22 -0
- migrai-1.3.0/openhands/app_server/sandbox/sandbox_spec_router.py +51 -0
- migrai-1.3.0/openhands/app_server/sandbox/sandbox_spec_service.py +119 -0
- migrai-1.3.0/openhands/app_server/services/README.md +19 -0
- migrai-1.3.0/openhands/app_server/services/db_session_injector.py +319 -0
- migrai-1.3.0/openhands/app_server/services/httpx_client_injector.py +44 -0
- migrai-1.3.0/openhands/app_server/services/injector.py +49 -0
- migrai-1.3.0/openhands/app_server/services/jwt_service.py +270 -0
- migrai-1.3.0/openhands/app_server/task_analysis/__init__.py +43 -0
- migrai-1.3.0/openhands/app_server/task_analysis/parallel_exploration.py +430 -0
- migrai-1.3.0/openhands/app_server/task_analysis/task_analysis_router.py +494 -0
- migrai-1.3.0/openhands/app_server/user/README.md +21 -0
- migrai-1.3.0/openhands/app_server/user/auth_user_context.py +119 -0
- migrai-1.3.0/openhands/app_server/user/specifiy_user_context.py +56 -0
- migrai-1.3.0/openhands/app_server/user/user_context.py +68 -0
- migrai-1.3.0/openhands/app_server/user/user_models.py +13 -0
- migrai-1.3.0/openhands/app_server/user/user_router.py +23 -0
- migrai-1.3.0/openhands/app_server/utils/README.md +20 -0
- migrai-1.3.0/openhands/app_server/utils/agent_proxy_paths.py +34 -0
- migrai-1.3.0/openhands/app_server/utils/docker_utils.py +48 -0
- migrai-1.3.0/openhands/app_server/utils/encryption_key.py +65 -0
- migrai-1.3.0/openhands/app_server/utils/import_utils.py +78 -0
- migrai-1.3.0/openhands/app_server/utils/llm_metadata.py +88 -0
- migrai-1.3.0/openhands/app_server/utils/process_sandbox_paths.py +87 -0
- migrai-1.3.0/openhands/app_server/utils/sql_utils.py +104 -0
- migrai-1.3.0/openhands/app_server/v1_router.py +20 -0
- migrai-1.3.0/openhands/app_server/web_client/default_web_client_config_injector.py +58 -0
- migrai-1.3.0/openhands/app_server/web_client/web_client_config_injector.py +10 -0
- migrai-1.3.0/openhands/app_server/web_client/web_client_models.py +32 -0
- migrai-1.3.0/openhands/app_server/web_client/web_client_router.py +19 -0
- migrai-1.3.0/openhands/cli/__init__.py +5 -0
- migrai-1.3.0/openhands/cli/auth/__init__.py +36 -0
- migrai-1.3.0/openhands/cli/auth/commands.py +424 -0
- migrai-1.3.0/openhands/cli/auth/credentials.py +211 -0
- migrai-1.3.0/openhands/cli/auth/device_flow.py +427 -0
- migrai-1.3.0/openhands/cli/llm_bootstrap.py +105 -0
- migrai-1.3.0/openhands/cli/main.py +150 -0
- migrai-1.3.0/openhands/cli/serve.py +36 -0
- migrai-1.3.0/openhands/controller/__init__.py +5 -0
- migrai-1.3.0/openhands/controller/action_parser.py +85 -0
- migrai-1.3.0/openhands/controller/advanced_features_integration.py +457 -0
- migrai-1.3.0/openhands/controller/agent.py +242 -0
- migrai-1.3.0/openhands/controller/agent_controller.py +1869 -0
- migrai-1.3.0/openhands/controller/intelligent_retry.py +43 -0
- migrai-1.3.0/openhands/controller/replay.py +105 -0
- migrai-1.3.0/openhands/controller/state/control_flags.py +102 -0
- migrai-1.3.0/openhands/controller/state/state.py +730 -0
- migrai-1.3.0/openhands/controller/state/state_tracker.py +461 -0
- migrai-1.3.0/openhands/controller/stuck.py +602 -0
- migrai-1.3.0/openhands/core/config/README.md +101 -0
- migrai-1.3.0/openhands/core/config/__init__.py +55 -0
- migrai-1.3.0/openhands/core/config/advanced_features_config.py +99 -0
- migrai-1.3.0/openhands/core/config/agent_config.py +172 -0
- migrai-1.3.0/openhands/core/config/arg_utils.py +291 -0
- migrai-1.3.0/openhands/core/config/condenser_config.py +319 -0
- migrai-1.3.0/openhands/core/config/config_utils.py +70 -0
- migrai-1.3.0/openhands/core/config/extended_config.py +48 -0
- migrai-1.3.0/openhands/core/config/kubernetes_config.py +107 -0
- migrai-1.3.0/openhands/core/config/llm_config.py +205 -0
- migrai-1.3.0/openhands/core/config/mcp_config.py +482 -0
- migrai-1.3.0/openhands/core/config/model_routing_config.py +46 -0
- migrai-1.3.0/openhands/core/config/openhands_config.py +206 -0
- migrai-1.3.0/openhands/core/config/runtime_pool_config.py +103 -0
- migrai-1.3.0/openhands/core/config/sandbox_config.py +134 -0
- migrai-1.3.0/openhands/core/config/security_config.py +42 -0
- migrai-1.3.0/openhands/core/config/utils.py +951 -0
- migrai-1.3.0/openhands/core/const/guide_url.py +8 -0
- migrai-1.3.0/openhands/core/download.py +9 -0
- migrai-1.3.0/openhands/core/exceptions.py +251 -0
- migrai-1.3.0/openhands/core/logger.py +625 -0
- migrai-1.3.0/openhands/core/loop.py +54 -0
- migrai-1.3.0/openhands/core/main.py +397 -0
- migrai-1.3.0/openhands/core/message.py +185 -0
- migrai-1.3.0/openhands/core/message_format.md +96 -0
- migrai-1.3.0/openhands/core/message_utils.py +59 -0
- migrai-1.3.0/openhands/core/schema/__init__.py +9 -0
- migrai-1.3.0/openhands/core/schema/action.py +124 -0
- migrai-1.3.0/openhands/core/schema/agent.py +58 -0
- migrai-1.3.0/openhands/core/schema/exit_reason.py +14 -0
- migrai-1.3.0/openhands/core/schema/observation.py +82 -0
- migrai-1.3.0/openhands/core/setup.py +303 -0
- migrai-1.3.0/openhands/critic/__init__.py +4 -0
- migrai-1.3.0/openhands/critic/base.py +27 -0
- migrai-1.3.0/openhands/critic/finish_critic.py +26 -0
- migrai-1.3.0/openhands/events/__init__.py +11 -0
- migrai-1.3.0/openhands/events/action/__init__.py +61 -0
- migrai-1.3.0/openhands/events/action/action.py +23 -0
- migrai-1.3.0/openhands/events/action/agent.py +242 -0
- migrai-1.3.0/openhands/events/action/browse.py +48 -0
- migrai-1.3.0/openhands/events/action/commands.py +64 -0
- migrai-1.3.0/openhands/events/action/empty.py +15 -0
- migrai-1.3.0/openhands/events/action/feedback.py +84 -0
- migrai-1.3.0/openhands/events/action/files.py +138 -0
- migrai-1.3.0/openhands/events/action/mcp.py +32 -0
- migrai-1.3.0/openhands/events/action/message.py +66 -0
- migrai-1.3.0/openhands/events/action/publish.py +85 -0
- migrai-1.3.0/openhands/events/action/secrets.py +40 -0
- migrai-1.3.0/openhands/events/async_event_store_wrapper.py +23 -0
- migrai-1.3.0/openhands/events/event.py +132 -0
- migrai-1.3.0/openhands/events/event_filter.py +98 -0
- migrai-1.3.0/openhands/events/event_store.py +183 -0
- migrai-1.3.0/openhands/events/event_store_abc.py +111 -0
- migrai-1.3.0/openhands/events/nested_event_store.py +101 -0
- migrai-1.3.0/openhands/events/observation/__init__.py +71 -0
- migrai-1.3.0/openhands/events/observation/advanced_features.py +164 -0
- migrai-1.3.0/openhands/events/observation/agent.py +138 -0
- migrai-1.3.0/openhands/events/observation/browse.py +56 -0
- migrai-1.3.0/openhands/events/observation/commands.py +231 -0
- migrai-1.3.0/openhands/events/observation/delegate.py +22 -0
- migrai-1.3.0/openhands/events/observation/empty.py +17 -0
- migrai-1.3.0/openhands/events/observation/error.py +23 -0
- migrai-1.3.0/openhands/events/observation/file_download.py +21 -0
- migrai-1.3.0/openhands/events/observation/files.py +195 -0
- migrai-1.3.0/openhands/events/observation/loop_recovery.py +18 -0
- migrai-1.3.0/openhands/events/observation/mcp.py +20 -0
- migrai-1.3.0/openhands/events/observation/observation.py +15 -0
- migrai-1.3.0/openhands/events/observation/reject.py +15 -0
- migrai-1.3.0/openhands/events/observation/retry.py +28 -0
- migrai-1.3.0/openhands/events/observation/secrets.py +48 -0
- migrai-1.3.0/openhands/events/observation/success.py +15 -0
- migrai-1.3.0/openhands/events/observation/task_tracking.py +18 -0
- migrai-1.3.0/openhands/events/recall_type.py +11 -0
- migrai-1.3.0/openhands/events/serialization/__init__.py +19 -0
- migrai-1.3.0/openhands/events/serialization/action.py +161 -0
- migrai-1.3.0/openhands/events/serialization/event.py +180 -0
- migrai-1.3.0/openhands/events/serialization/observation.py +163 -0
- migrai-1.3.0/openhands/events/serialization/utils.py +20 -0
- migrai-1.3.0/openhands/events/stream.py +292 -0
- migrai-1.3.0/openhands/events/tool.py +11 -0
- migrai-1.3.0/openhands/events/utils.py +61 -0
- migrai-1.3.0/openhands/experiments/experiment_manager.py +72 -0
- migrai-1.3.0/openhands/integrations/azure_devops/__init__.py +5 -0
- migrai-1.3.0/openhands/integrations/azure_devops/azure_devops_service.py +275 -0
- migrai-1.3.0/openhands/integrations/azure_devops/service/__init__.py +1 -0
- migrai-1.3.0/openhands/integrations/azure_devops/service/base.py +67 -0
- migrai-1.3.0/openhands/integrations/azure_devops/service/branches.py +195 -0
- migrai-1.3.0/openhands/integrations/azure_devops/service/features.py +223 -0
- migrai-1.3.0/openhands/integrations/azure_devops/service/prs.py +321 -0
- migrai-1.3.0/openhands/integrations/azure_devops/service/repos.py +178 -0
- migrai-1.3.0/openhands/integrations/azure_devops/service/resolver.py +166 -0
- migrai-1.3.0/openhands/integrations/azure_devops/service/work_items.py +129 -0
- migrai-1.3.0/openhands/integrations/bitbucket/bitbucket_service.py +93 -0
- migrai-1.3.0/openhands/integrations/bitbucket/service/__init__.py +13 -0
- migrai-1.3.0/openhands/integrations/bitbucket/service/base.py +282 -0
- migrai-1.3.0/openhands/integrations/bitbucket/service/branches.py +116 -0
- migrai-1.3.0/openhands/integrations/bitbucket/service/features.py +45 -0
- migrai-1.3.0/openhands/integrations/bitbucket/service/prs.py +100 -0
- migrai-1.3.0/openhands/integrations/bitbucket/service/repos.py +262 -0
- migrai-1.3.0/openhands/integrations/forgejo/__init__.py +3 -0
- migrai-1.3.0/openhands/integrations/forgejo/forgejo_service.py +56 -0
- migrai-1.3.0/openhands/integrations/forgejo/service/__init__.py +15 -0
- migrai-1.3.0/openhands/integrations/forgejo/service/base.py +248 -0
- migrai-1.3.0/openhands/integrations/forgejo/service/branches.py +74 -0
- migrai-1.3.0/openhands/integrations/forgejo/service/features.py +123 -0
- migrai-1.3.0/openhands/integrations/forgejo/service/prs.py +111 -0
- migrai-1.3.0/openhands/integrations/forgejo/service/repos.py +109 -0
- migrai-1.3.0/openhands/integrations/forgejo/service/resolver.py +137 -0
- migrai-1.3.0/openhands/integrations/github/github_service.py +104 -0
- migrai-1.3.0/openhands/integrations/github/queries.py +153 -0
- migrai-1.3.0/openhands/integrations/github/service/__init__.py +17 -0
- migrai-1.3.0/openhands/integrations/github/service/base.py +170 -0
- migrai-1.3.0/openhands/integrations/github/service/branches_prs.py +161 -0
- migrai-1.3.0/openhands/integrations/github/service/features.py +177 -0
- migrai-1.3.0/openhands/integrations/github/service/prs.py +117 -0
- migrai-1.3.0/openhands/integrations/github/service/repos.py +304 -0
- migrai-1.3.0/openhands/integrations/github/service/resolver.py +225 -0
- migrai-1.3.0/openhands/integrations/gitlab/gitlab_service.py +108 -0
- migrai-1.3.0/openhands/integrations/gitlab/service/__init__.py +17 -0
- migrai-1.3.0/openhands/integrations/gitlab/service/base.py +178 -0
- migrai-1.3.0/openhands/integrations/gitlab/service/branches.py +107 -0
- migrai-1.3.0/openhands/integrations/gitlab/service/features.py +207 -0
- migrai-1.3.0/openhands/integrations/gitlab/service/prs.py +111 -0
- migrai-1.3.0/openhands/integrations/gitlab/service/repos.py +177 -0
- migrai-1.3.0/openhands/integrations/gitlab/service/resolver.py +134 -0
- migrai-1.3.0/openhands/integrations/protocols/http_client.py +99 -0
- migrai-1.3.0/openhands/integrations/provider.py +821 -0
- migrai-1.3.0/openhands/integrations/service_types.py +574 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/azure_devops/issue_conversation_instructions.j2 +41 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/azure_devops/issue_prompt.j2 +5 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/azure_devops/pr_update_conversation_instructions.j2 +38 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/azure_devops/pr_update_prompt.j2 +1 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/bitbucket/issue_conversation_instructions.j2 +39 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/bitbucket/issue_prompt.j2 +5 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/bitbucket/pr_update_conversation_instructions.j2 +38 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/bitbucket/pr_update_prompt.j2 +1 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/discord/user_message_conversation_instructions.j2 +17 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/github/issue_conversation_instructions.j2 +41 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/github/issue_prompt.j2 +5 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/github/pr_update_conversation_instructions.j2 +38 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/github/pr_update_prompt.j2 +1 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/gitlab/issue_conversation_instructions.j2 +41 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/gitlab/issue_prompt.j2 +5 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/gitlab/mr_update_conversation_instructions.j2 +37 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/gitlab/mr_update_prompt.j2 +1 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/jira/jira_existing_conversation.j2 +9 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/jira/jira_instructions.j2 +14 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/jira/jira_new_conversation.j2 +7 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/jira_dc/jira_dc_existing_conversation.j2 +9 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/jira_dc/jira_dc_instructions.j2 +14 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/jira_dc/jira_dc_new_conversation.j2 +7 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/linear/linear_existing_conversation.j2 +9 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/linear/linear_instructions.j2 +14 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/linear/linear_new_conversation.j2 +7 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/slack/user_message_conversation_instructions.j2 +17 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/summary_prompt.j2 +9 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/telegram/user_message_conversation_instructions.j2 +13 -0
- migrai-1.3.0/openhands/integrations/templates/resolver/whatsapp/user_message_conversation_instructions.j2 +5 -0
- migrai-1.3.0/openhands/integrations/templates/suggested_task/failing_checks_prompt.j2 +6 -0
- migrai-1.3.0/openhands/integrations/templates/suggested_task/merge_conflict_prompt.j2 +4 -0
- migrai-1.3.0/openhands/integrations/templates/suggested_task/open_issue_prompt.j2 +4 -0
- migrai-1.3.0/openhands/integrations/templates/suggested_task/unresolved_comments_prompt.j2 +5 -0
- migrai-1.3.0/openhands/integrations/utils.py +85 -0
- migrai-1.3.0/openhands/integrations/vscode/openhands-vscode-0.0.1.vsix +0 -0
- migrai-1.3.0/openhands/integrations/vscode/out/extension.js +331 -0
- migrai-1.3.0/openhands/integrations/vscode/out/extension.js.map +1 -0
- migrai-1.3.0/openhands/integrations/vscode/out/test/runTest.js +55 -0
- migrai-1.3.0/openhands/integrations/vscode/out/test/runTest.js.map +1 -0
- migrai-1.3.0/openhands/integrations/vscode/out/test/suite/extension.test.js +677 -0
- migrai-1.3.0/openhands/integrations/vscode/out/test/suite/extension.test.js.map +1 -0
- migrai-1.3.0/openhands/integrations/vscode/out/test/suite/index.js +71 -0
- migrai-1.3.0/openhands/integrations/vscode/out/test/suite/index.js.map +1 -0
- migrai-1.3.0/openhands/integrations/vscode/package-lock.json +8277 -0
- migrai-1.3.0/openhands/io/__init__.py +10 -0
- migrai-1.3.0/openhands/io/io.py +37 -0
- migrai-1.3.0/openhands/io/json.py +74 -0
- migrai-1.3.0/openhands/learning/__init__.py +58 -0
- migrai-1.3.0/openhands/learning/cache.py +455 -0
- migrai-1.3.0/openhands/learning/config.py +80 -0
- migrai-1.3.0/openhands/learning/entry.py +169 -0
- migrai-1.3.0/openhands/learning/manager.py +633 -0
- migrai-1.3.0/openhands/learning/store.py +370 -0
- migrai-1.3.0/openhands/linter/__init__.py +11 -0
- migrai-1.3.0/openhands/llm/__init__.py +5 -0
- migrai-1.3.0/openhands/llm/async_llm.py +154 -0
- migrai-1.3.0/openhands/llm/bedrock.py +39 -0
- migrai-1.3.0/openhands/llm/debug_mixin.py +80 -0
- migrai-1.3.0/openhands/llm/fn_call_converter.py +1021 -0
- migrai-1.3.0/openhands/llm/llm.py +1214 -0
- migrai-1.3.0/openhands/llm/llm_registry.py +190 -0
- migrai-1.3.0/openhands/llm/llm_utils.py +51 -0
- migrai-1.3.0/openhands/llm/message_formatter.py +569 -0
- migrai-1.3.0/openhands/llm/metrics.py +284 -0
- migrai-1.3.0/openhands/llm/model_features.py +200 -0
- migrai-1.3.0/openhands/llm/retry_mixin.py +107 -0
- migrai-1.3.0/openhands/llm/router/README.md +39 -0
- migrai-1.3.0/openhands/llm/router/__init__.py +8 -0
- migrai-1.3.0/openhands/llm/router/base.py +171 -0
- migrai-1.3.0/openhands/llm/router/rule_based/impl.py +81 -0
- migrai-1.3.0/openhands/llm/streaming_llm.py +139 -0
- migrai-1.3.0/openhands/llm/tool_names.py +16 -0
- migrai-1.3.0/openhands/mcp/__init__.py +21 -0
- migrai-1.3.0/openhands/mcp/client.py +178 -0
- migrai-1.3.0/openhands/mcp/error_collector.py +78 -0
- migrai-1.3.0/openhands/mcp/tool.py +23 -0
- migrai-1.3.0/openhands/mcp/utils.py +394 -0
- migrai-1.3.0/openhands/mcp/vision.py +243 -0
- migrai-1.3.0/openhands/memory/README.md +18 -0
- migrai-1.3.0/openhands/memory/__init__.py +0 -0
- migrai-1.3.0/openhands/memory/condenser/__init__.py +15 -0
- migrai-1.3.0/openhands/memory/condenser/condenser.py +193 -0
- migrai-1.3.0/openhands/memory/condenser/impl/__init__.py +41 -0
- migrai-1.3.0/openhands/memory/condenser/impl/amortized_forgetting_condenser.py +69 -0
- migrai-1.3.0/openhands/memory/condenser/impl/browser_output_condenser.py +49 -0
- migrai-1.3.0/openhands/memory/condenser/impl/conversation_window_condenser.py +188 -0
- migrai-1.3.0/openhands/memory/condenser/impl/llm_attention_condenser.py +140 -0
- migrai-1.3.0/openhands/memory/condenser/impl/llm_summarizing_condenser.py +182 -0
- migrai-1.3.0/openhands/memory/condenser/impl/no_op_condenser.py +22 -0
- migrai-1.3.0/openhands/memory/condenser/impl/observation_masking_condenser.py +39 -0
- migrai-1.3.0/openhands/memory/condenser/impl/pipeline.py +50 -0
- migrai-1.3.0/openhands/memory/condenser/impl/recent_events_condenser.py +31 -0
- migrai-1.3.0/openhands/memory/condenser/impl/structured_summary_condenser.py +329 -0
- migrai-1.3.0/openhands/memory/conversation_memory.py +980 -0
- migrai-1.3.0/openhands/memory/hierarchical/ARCHITECTURE.md +460 -0
- migrai-1.3.0/openhands/memory/hierarchical/INTEGRATION_GUIDE.md +604 -0
- migrai-1.3.0/openhands/memory/hierarchical/README.md +359 -0
- migrai-1.3.0/openhands/memory/hierarchical/__init__.py +34 -0
- migrai-1.3.0/openhands/memory/hierarchical/archival_memory.py +397 -0
- migrai-1.3.0/openhands/memory/hierarchical/compression.py +292 -0
- migrai-1.3.0/openhands/memory/hierarchical/example_usage.py +182 -0
- migrai-1.3.0/openhands/memory/hierarchical/main_memory.py +214 -0
- migrai-1.3.0/openhands/memory/hierarchical/memory_manager.py +378 -0
- migrai-1.3.0/openhands/memory/hierarchical/types.py +169 -0
- migrai-1.3.0/openhands/memory/hierarchical/working_memory.py +216 -0
- migrai-1.3.0/openhands/memory/memory.py +470 -0
- migrai-1.3.0/openhands/memory/view.py +96 -0
- migrai-1.3.0/openhands/microagent/__init__.py +16 -0
- migrai-1.3.0/openhands/microagent/microagent.py +344 -0
- migrai-1.3.0/openhands/microagent/prompts/generate_remember_prompt.j2 +21 -0
- migrai-1.3.0/openhands/microagent/types.py +59 -0
- migrai-1.3.0/openhands/py.typed +0 -0
- migrai-1.3.0/openhands/reasoning/__init__.py +17 -0
- migrai-1.3.0/openhands/reasoning/mcts/README.md +237 -0
- migrai-1.3.0/openhands/reasoning/mcts/__init__.py +69 -0
- migrai-1.3.0/openhands/reasoning/mcts/cache.py +126 -0
- migrai-1.3.0/openhands/reasoning/mcts/confidence.py +409 -0
- migrai-1.3.0/openhands/reasoning/mcts/config.py +183 -0
- migrai-1.3.0/openhands/reasoning/mcts/evaluator.py +476 -0
- migrai-1.3.0/openhands/reasoning/mcts/example_usage.py +100 -0
- migrai-1.3.0/openhands/reasoning/mcts/fallback.py +193 -0
- migrai-1.3.0/openhands/reasoning/mcts/integration.py +687 -0
- migrai-1.3.0/openhands/reasoning/mcts/logging.py +166 -0
- migrai-1.3.0/openhands/reasoning/mcts/metrics.py +103 -0
- migrai-1.3.0/openhands/reasoning/mcts/node.py +159 -0
- migrai-1.3.0/openhands/reasoning/mcts/router.py +142 -0
- migrai-1.3.0/openhands/reasoning/mcts/search.py +610 -0
- migrai-1.3.0/openhands/reasoning/mcts/tree.py +195 -0
- migrai-1.3.0/openhands/resolver/README.md +218 -0
- migrai-1.3.0/openhands/resolver/__init__.py +0 -0
- migrai-1.3.0/openhands/resolver/examples/openhands-resolver.yml +34 -0
- migrai-1.3.0/openhands/resolver/interfaces/azure_devops.py +427 -0
- migrai-1.3.0/openhands/resolver/interfaces/bitbucket.py +520 -0
- migrai-1.3.0/openhands/resolver/interfaces/forgejo.py +480 -0
- migrai-1.3.0/openhands/resolver/interfaces/github.py +637 -0
- migrai-1.3.0/openhands/resolver/interfaces/gitlab.py +610 -0
- migrai-1.3.0/openhands/resolver/interfaces/issue.py +125 -0
- migrai-1.3.0/openhands/resolver/interfaces/issue_definitions.py +415 -0
- migrai-1.3.0/openhands/resolver/io_utils.py +17 -0
- migrai-1.3.0/openhands/resolver/issue_handler_factory.py +178 -0
- migrai-1.3.0/openhands/resolver/issue_resolver.py +670 -0
- migrai-1.3.0/openhands/resolver/patching/README.md +4 -0
- migrai-1.3.0/openhands/resolver/patching/__init__.py +6 -0
- migrai-1.3.0/openhands/resolver/patching/apply.py +128 -0
- migrai-1.3.0/openhands/resolver/patching/exceptions.py +29 -0
- migrai-1.3.0/openhands/resolver/patching/patch.py +977 -0
- migrai-1.3.0/openhands/resolver/patching/snippets.py +64 -0
- migrai-1.3.0/openhands/resolver/prompts/guess_success/issue-success-check.jinja +21 -0
- migrai-1.3.0/openhands/resolver/prompts/guess_success/pr-feedback-check.jinja +27 -0
- migrai-1.3.0/openhands/resolver/prompts/guess_success/pr-review-check.jinja +24 -0
- migrai-1.3.0/openhands/resolver/prompts/guess_success/pr-thread-check.jinja +24 -0
- migrai-1.3.0/openhands/resolver/prompts/repo_instructions/all-hands-ai___openhands-resolver.txt +4 -0
- migrai-1.3.0/openhands/resolver/prompts/repo_instructions/all-hands-ai___openhands.txt +7 -0
- migrai-1.3.0/openhands/resolver/prompts/repo_instructions/rbren___rss-parser.txt +4 -0
- migrai-1.3.0/openhands/resolver/prompts/resolve/basic-conversation-instructions.jinja +7 -0
- migrai-1.3.0/openhands/resolver/prompts/resolve/basic-followup-conversation-instructions.jinja +16 -0
- migrai-1.3.0/openhands/resolver/prompts/resolve/basic-followup.jinja +13 -0
- migrai-1.3.0/openhands/resolver/prompts/resolve/basic-with-tests-conversation-instructions.jinja +11 -0
- migrai-1.3.0/openhands/resolver/prompts/resolve/basic-with-tests.jinja +5 -0
- migrai-1.3.0/openhands/resolver/prompts/resolve/basic.jinja +5 -0
- migrai-1.3.0/openhands/resolver/prompts/resolve/pr-changes-summary.jinja +3 -0
- migrai-1.3.0/openhands/resolver/resolve_issue.py +135 -0
- migrai-1.3.0/openhands/resolver/resolver_output.py +20 -0
- migrai-1.3.0/openhands/resolver/send_pull_request.py +839 -0
- migrai-1.3.0/openhands/resolver/utils.py +161 -0
- migrai-1.3.0/openhands/resolver/visualize_resolver_output.py +45 -0
- migrai-1.3.0/openhands/runtime/README.md +161 -0
- migrai-1.3.0/openhands/runtime/__init__.py +184 -0
- migrai-1.3.0/openhands/runtime/action_execution_server.py +1194 -0
- migrai-1.3.0/openhands/runtime/base.py +1448 -0
- migrai-1.3.0/openhands/runtime/browser/__init__.py +10 -0
- migrai-1.3.0/openhands/runtime/browser/base64.py +41 -0
- migrai-1.3.0/openhands/runtime/browser/browser_env.py +278 -0
- migrai-1.3.0/openhands/runtime/browser/utils.py +230 -0
- migrai-1.3.0/openhands/runtime/builder/__init__.py +11 -0
- migrai-1.3.0/openhands/runtime/builder/base.py +49 -0
- migrai-1.3.0/openhands/runtime/builder/docker.py +433 -0
- migrai-1.3.0/openhands/runtime/builder/remote.py +156 -0
- migrai-1.3.0/openhands/runtime/file_viewer_server.py +119 -0
- migrai-1.3.0/openhands/runtime/impl/__init__.py +24 -0
- migrai-1.3.0/openhands/runtime/impl/action_execution/action_execution_client.py +610 -0
- migrai-1.3.0/openhands/runtime/impl/cli/__init__.py +12 -0
- migrai-1.3.0/openhands/runtime/impl/cli/cli_runtime.py +981 -0
- migrai-1.3.0/openhands/runtime/impl/docker/containers.py +26 -0
- migrai-1.3.0/openhands/runtime/impl/docker/docker_runtime.py +926 -0
- migrai-1.3.0/openhands/runtime/impl/kubernetes/README.md +141 -0
- migrai-1.3.0/openhands/runtime/impl/kubernetes/kubernetes_runtime.py +1429 -0
- migrai-1.3.0/openhands/runtime/impl/local/__init__.py +12 -0
- migrai-1.3.0/openhands/runtime/impl/local/local_runtime.py +868 -0
- migrai-1.3.0/openhands/runtime/impl/remote/remote_runtime.py +633 -0
- migrai-1.3.0/openhands/runtime/mcp/config.json +6 -0
- migrai-1.3.0/openhands/runtime/mcp/proxy/README.md +71 -0
- migrai-1.3.0/openhands/runtime/mcp/proxy/__init__.py +12 -0
- migrai-1.3.0/openhands/runtime/mcp/proxy/manager.py +158 -0
- migrai-1.3.0/openhands/runtime/plugins/__init__.py +32 -0
- migrai-1.3.0/openhands/runtime/plugins/agent_skills/README.md +57 -0
- migrai-1.3.0/openhands/runtime/plugins/agent_skills/__init__.py +31 -0
- migrai-1.3.0/openhands/runtime/plugins/agent_skills/agentskills.py +52 -0
- migrai-1.3.0/openhands/runtime/plugins/agent_skills/file_editor/README.md +3 -0
- migrai-1.3.0/openhands/runtime/plugins/agent_skills/file_editor/__init__.py +15 -0
- migrai-1.3.0/openhands/runtime/plugins/agent_skills/file_ops/__init__.py +14 -0
- migrai-1.3.0/openhands/runtime/plugins/agent_skills/file_ops/file_ops.py +410 -0
- migrai-1.3.0/openhands/runtime/plugins/agent_skills/file_reader/__init__.py +14 -0
- migrai-1.3.0/openhands/runtime/plugins/agent_skills/file_reader/file_readers.py +252 -0
- migrai-1.3.0/openhands/runtime/plugins/agent_skills/repo_ops/__init__.py +14 -0
- migrai-1.3.0/openhands/runtime/plugins/agent_skills/repo_ops/repo_ops.py +18 -0
- migrai-1.3.0/openhands/runtime/plugins/agent_skills/utils/config.py +37 -0
- migrai-1.3.0/openhands/runtime/plugins/agent_skills/utils/dependency.py +18 -0
- migrai-1.3.0/openhands/runtime/plugins/jupyter/__init__.py +220 -0
- migrai-1.3.0/openhands/runtime/plugins/jupyter/execute_server.py +316 -0
- migrai-1.3.0/openhands/runtime/plugins/requirement.py +38 -0
- migrai-1.3.0/openhands/runtime/plugins/vscode/__init__.py +202 -0
- migrai-1.3.0/openhands/runtime/plugins/vscode/settings.json +8 -0
- migrai-1.3.0/openhands/runtime/pool/__init__.py +9 -0
- migrai-1.3.0/openhands/runtime/pool/kubernetes_pool_manager.py +145 -0
- migrai-1.3.0/openhands/runtime/pool/pool_state.py +187 -0
- migrai-1.3.0/openhands/runtime/pool/redis_pool_coordinator.py +168 -0
- migrai-1.3.0/openhands/runtime/runtime_status.py +32 -0
- migrai-1.3.0/openhands/runtime/utils/__init__.py +13 -0
- migrai-1.3.0/openhands/runtime/utils/bash.py +953 -0
- migrai-1.3.0/openhands/runtime/utils/bash_constants.py +14 -0
- migrai-1.3.0/openhands/runtime/utils/command.py +89 -0
- migrai-1.3.0/openhands/runtime/utils/edit.py +445 -0
- migrai-1.3.0/openhands/runtime/utils/file_viewer.py +150 -0
- migrai-1.3.0/openhands/runtime/utils/files.py +157 -0
- migrai-1.3.0/openhands/runtime/utils/git_changes.py +203 -0
- migrai-1.3.0/openhands/runtime/utils/git_diff.py +122 -0
- migrai-1.3.0/openhands/runtime/utils/git_handler.py +157 -0
- migrai-1.3.0/openhands/runtime/utils/log_capture.py +34 -0
- migrai-1.3.0/openhands/runtime/utils/log_streamer.py +72 -0
- migrai-1.3.0/openhands/runtime/utils/memory_monitor.py +269 -0
- migrai-1.3.0/openhands/runtime/utils/port_lock.py +275 -0
- migrai-1.3.0/openhands/runtime/utils/request.py +67 -0
- migrai-1.3.0/openhands/runtime/utils/runtime_build.py +487 -0
- migrai-1.3.0/openhands/runtime/utils/runtime_init.py +148 -0
- migrai-1.3.0/openhands/runtime/utils/runtime_templates/Dockerfile.j2 +384 -0
- migrai-1.3.0/openhands/runtime/utils/singleton.py +7 -0
- migrai-1.3.0/openhands/runtime/utils/system.py +75 -0
- migrai-1.3.0/openhands/runtime/utils/system_stats.py +88 -0
- migrai-1.3.0/openhands/runtime/utils/tenacity_stop.py +18 -0
- migrai-1.3.0/openhands/runtime/utils/vscode-extensions/hello-world/extension.js +16 -0
- migrai-1.3.0/openhands/runtime/utils/vscode-extensions/hello-world/package.json +23 -0
- migrai-1.3.0/openhands/runtime/utils/vscode-extensions/memory-monitor/README.md +48 -0
- migrai-1.3.0/openhands/runtime/utils/vscode-extensions/memory-monitor/extension.js +42 -0
- migrai-1.3.0/openhands/runtime/utils/vscode-extensions/memory-monitor/memory_monitor.js +343 -0
- migrai-1.3.0/openhands/runtime/utils/vscode-extensions/memory-monitor/package.json +50 -0
- migrai-1.3.0/openhands/runtime/utils/vscode-extensions/memory-monitor/process_monitor.js +143 -0
- migrai-1.3.0/openhands/runtime/utils/windows_bash.py +1499 -0
- migrai-1.3.0/openhands/runtime/utils/windows_exceptions.py +19 -0
- migrai-1.3.0/openhands/sdk_vision_fallback.py +560 -0
- migrai-1.3.0/openhands/security/README.md +130 -0
- migrai-1.3.0/openhands/security/__init__.py +7 -0
- migrai-1.3.0/openhands/security/analyzer.py +37 -0
- migrai-1.3.0/openhands/security/grayswan/__init__.py +3 -0
- migrai-1.3.0/openhands/security/grayswan/analyzer.py +202 -0
- migrai-1.3.0/openhands/security/grayswan/utils.py +145 -0
- migrai-1.3.0/openhands/security/invariant/__init__.py +5 -0
- migrai-1.3.0/openhands/security/invariant/analyzer.py +126 -0
- migrai-1.3.0/openhands/security/invariant/client.py +140 -0
- migrai-1.3.0/openhands/security/invariant/nodes.py +49 -0
- migrai-1.3.0/openhands/security/invariant/parser.py +102 -0
- migrai-1.3.0/openhands/security/invariant/policies.py +19 -0
- migrai-1.3.0/openhands/security/llm/__init__.py +7 -0
- migrai-1.3.0/openhands/security/llm/analyzer.py +42 -0
- migrai-1.3.0/openhands/security/options.py +10 -0
- migrai-1.3.0/openhands/self_improvement/README.md +325 -0
- migrai-1.3.0/openhands/self_improvement/__init__.py +47 -0
- migrai-1.3.0/openhands/self_improvement/example_usage.py +99 -0
- migrai-1.3.0/openhands/self_improvement/feedback.py +185 -0
- migrai-1.3.0/openhands/self_improvement/lesson_generator.py +207 -0
- migrai-1.3.0/openhands/self_improvement/microagent_formatter.py +197 -0
- migrai-1.3.0/openhands/self_improvement/org_injector.py +83 -0
- migrai-1.3.0/openhands/self_improvement/org_lessons.py +179 -0
- migrai-1.3.0/openhands/self_improvement/promotion.py +219 -0
- migrai-1.3.0/openhands/self_improvement/user_lessons.py +229 -0
- migrai-1.3.0/openhands/server/README.md +182 -0
- migrai-1.3.0/openhands/server/__init__.py +0 -0
- migrai-1.3.0/openhands/server/__main__.py +39 -0
- migrai-1.3.0/openhands/server/app.py +110 -0
- migrai-1.3.0/openhands/server/config/server_config.py +79 -0
- migrai-1.3.0/openhands/server/constants.py +11 -0
- migrai-1.3.0/openhands/server/conversation_manager/conversation_manager.py +175 -0
- migrai-1.3.0/openhands/server/conversation_manager/docker_nested_conversation_manager.py +656 -0
- migrai-1.3.0/openhands/server/conversation_manager/standalone_conversation_manager.py +1622 -0
- migrai-1.3.0/openhands/server/conversation_manager/utils.py +8 -0
- migrai-1.3.0/openhands/server/data_models/agent_loop_info.py +25 -0
- migrai-1.3.0/openhands/server/data_models/conversation_info.py +48 -0
- migrai-1.3.0/openhands/server/data_models/conversation_info_result_set.py +17 -0
- migrai-1.3.0/openhands/server/data_models/feedback.py +53 -0
- migrai-1.3.0/openhands/server/dependencies.py +32 -0
- migrai-1.3.0/openhands/server/file_config.py +147 -0
- migrai-1.3.0/openhands/server/files.py +18 -0
- migrai-1.3.0/openhands/server/listen.py +35 -0
- migrai-1.3.0/openhands/server/listen_socket.py +302 -0
- migrai-1.3.0/openhands/server/middleware.py +277 -0
- migrai-1.3.0/openhands/server/mock/README.md +10 -0
- migrai-1.3.0/openhands/server/mock/listen.py +75 -0
- migrai-1.3.0/openhands/server/monitoring.py +49 -0
- migrai-1.3.0/openhands/server/request_trace.py +106 -0
- migrai-1.3.0/openhands/server/routes/conversation.py +887 -0
- migrai-1.3.0/openhands/server/routes/feedback.py +75 -0
- migrai-1.3.0/openhands/server/routes/files.py +337 -0
- migrai-1.3.0/openhands/server/routes/git.py +435 -0
- migrai-1.3.0/openhands/server/routes/health.py +130 -0
- migrai-1.3.0/openhands/server/routes/manage_conversations.py +3252 -0
- migrai-1.3.0/openhands/server/routes/mcp.py +372 -0
- migrai-1.3.0/openhands/server/routes/oauth.py +257 -0
- migrai-1.3.0/openhands/server/routes/public.py +80 -0
- migrai-1.3.0/openhands/server/routes/secrets.py +356 -0
- migrai-1.3.0/openhands/server/routes/security.py +50 -0
- migrai-1.3.0/openhands/server/routes/self_improvement.py +469 -0
- migrai-1.3.0/openhands/server/routes/settings.py +301 -0
- migrai-1.3.0/openhands/server/routes/trajectory.py +58 -0
- migrai-1.3.0/openhands/server/services/conversation_service.py +443 -0
- migrai-1.3.0/openhands/server/services/conversation_stats.py +168 -0
- migrai-1.3.0/openhands/server/session/README.md +19 -0
- migrai-1.3.0/openhands/server/session/__init__.py +6 -0
- migrai-1.3.0/openhands/server/session/agent_session.py +1652 -0
- migrai-1.3.0/openhands/server/session/conversation.py +95 -0
- migrai-1.3.0/openhands/server/session/conversation_init_data.py +53 -0
- migrai-1.3.0/openhands/server/session/session.py +862 -0
- migrai-1.3.0/openhands/server/settings.py +64 -0
- migrai-1.3.0/openhands/server/shared.py +99 -0
- migrai-1.3.0/openhands/server/socketio_redis.py +37 -0
- migrai-1.3.0/openhands/server/static.py +42 -0
- migrai-1.3.0/openhands/server/types.py +61 -0
- migrai-1.3.0/openhands/server/user_auth/__init__.py +62 -0
- migrai-1.3.0/openhands/server/user_auth/default_user_auth.py +110 -0
- migrai-1.3.0/openhands/server/user_auth/user_auth.py +122 -0
- migrai-1.3.0/openhands/server/utils.py +123 -0
- migrai-1.3.0/openhands/storage/README.md +127 -0
- migrai-1.3.0/openhands/storage/__init__.py +61 -0
- migrai-1.3.0/openhands/storage/batched_web_hook.py +275 -0
- migrai-1.3.0/openhands/storage/chunked_uploader.py +444 -0
- migrai-1.3.0/openhands/storage/conversation/conversation_store.py +87 -0
- migrai-1.3.0/openhands/storage/conversation/conversation_validator.py +81 -0
- migrai-1.3.0/openhands/storage/conversation/file_conversation_store.py +122 -0
- migrai-1.3.0/openhands/storage/data_models/conversation_metadata.py +46 -0
- migrai-1.3.0/openhands/storage/data_models/conversation_metadata_result_set.py +9 -0
- migrai-1.3.0/openhands/storage/data_models/conversation_status.py +23 -0
- migrai-1.3.0/openhands/storage/data_models/secrets.py +233 -0
- migrai-1.3.0/openhands/storage/data_models/settings.py +207 -0
- migrai-1.3.0/openhands/storage/event_stream_recovery.py +303 -0
- migrai-1.3.0/openhands/storage/file_change_tracker.py +218 -0
- migrai-1.3.0/openhands/storage/files.py +29 -0
- migrai-1.3.0/openhands/storage/google_cloud.py +80 -0
- migrai-1.3.0/openhands/storage/local.py +71 -0
- migrai-1.3.0/openhands/storage/locations.py +42 -0
- migrai-1.3.0/openhands/storage/memory.py +60 -0
- migrai-1.3.0/openhands/storage/s3.py +199 -0
- migrai-1.3.0/openhands/storage/secrets/file_secrets_store.py +49 -0
- migrai-1.3.0/openhands/storage/secrets/secrets_store.py +36 -0
- migrai-1.3.0/openhands/storage/settings/file_settings_store.py +48 -0
- migrai-1.3.0/openhands/storage/settings/settings_store.py +36 -0
- migrai-1.3.0/openhands/storage/web_hook.py +122 -0
- migrai-1.3.0/openhands/storage/workspace_manifest.py +409 -0
- migrai-1.3.0/openhands/storage/workspace_sync.py +1334 -0
- migrai-1.3.0/openhands/utils/README.md +79 -0
- migrai-1.3.0/openhands/utils/async_utils.py +118 -0
- migrai-1.3.0/openhands/utils/chunk_localizer.py +101 -0
- migrai-1.3.0/openhands/utils/conversation_summary.py +158 -0
- migrai-1.3.0/openhands/utils/environment.py +58 -0
- migrai-1.3.0/openhands/utils/http_session.py +86 -0
- migrai-1.3.0/openhands/utils/image_processing.py +349 -0
- migrai-1.3.0/openhands/utils/import_utils.py +73 -0
- migrai-1.3.0/openhands/utils/llm.py +158 -0
- migrai-1.3.0/openhands/utils/prompt.py +187 -0
- migrai-1.3.0/openhands/utils/search_utils.py +32 -0
- migrai-1.3.0/openhands/utils/shutdown_listener.py +93 -0
- migrai-1.3.0/openhands/utils/tenacity_stop.py +11 -0
- migrai-1.3.0/openhands/utils/term_color.py +26 -0
- migrai-1.3.0/openhands/utils/utils.py +70 -0
- migrai-1.3.0/openhands/version.py +67 -0
- migrai-1.3.0/pyproject.toml +372 -0
- migrai-1.3.0/skills/README.md +160 -0
- migrai-1.3.0/skills/accessibility-wcag.md +240 -0
- migrai-1.3.0/skills/add_agent.md +40 -0
- migrai-1.3.0/skills/add_repo_inst.md +65 -0
- migrai-1.3.0/skills/address_pr_comments.md +19 -0
- migrai-1.3.0/skills/agent-builder.md +39 -0
- migrai-1.3.0/skills/agent_memory.md +32 -0
- migrai-1.3.0/skills/ai-ml-integration.md +375 -0
- migrai-1.3.0/skills/apf.md +413 -0
- migrai-1.3.0/skills/api-design.md +328 -0
- migrai-1.3.0/skills/app-proxy-browsing.md +159 -0
- migrai-1.3.0/skills/authentication.md +379 -0
- migrai-1.3.0/skills/azure_devops.md +52 -0
- migrai-1.3.0/skills/bitbucket.md +35 -0
- migrai-1.3.0/skills/ci-cd-basics.md +266 -0
- migrai-1.3.0/skills/code-review.md +54 -0
- migrai-1.3.0/skills/codereview-roasted.md +104 -0
- migrai-1.3.0/skills/daemon-commands.md +55 -0
- migrai-1.3.0/skills/database-basics.md +302 -0
- migrai-1.3.0/skills/default-tools.md +15 -0
- migrai-1.3.0/skills/dependencies.md +57 -0
- migrai-1.3.0/skills/dev-server-validation.md +248 -0
- migrai-1.3.0/skills/dev-server.md +576 -0
- migrai-1.3.0/skills/docker.md +31 -0
- migrai-1.3.0/skills/environment-setup.md +284 -0
- migrai-1.3.0/skills/error-handling-patterns.md +362 -0
- migrai-1.3.0/skills/error-recovery.md +69 -0
- migrai-1.3.0/skills/file-operations.md +51 -0
- migrai-1.3.0/skills/fix-py-line-too-long.md +39 -0
- migrai-1.3.0/skills/fix_test.md +23 -0
- migrai-1.3.0/skills/flarglebargle.md +11 -0
- migrai-1.3.0/skills/frontend.md +704 -0
- migrai-1.3.0/skills/git-workflow.md +66 -0
- migrai-1.3.0/skills/github.md +35 -0
- migrai-1.3.0/skills/gitlab.md +34 -0
- migrai-1.3.0/skills/graphql-patterns.md +363 -0
- migrai-1.3.0/skills/images.md +260 -0
- migrai-1.3.0/skills/internationalization.md +289 -0
- migrai-1.3.0/skills/kubernetes.md +50 -0
- migrai-1.3.0/skills/linting-formatting.md +329 -0
- migrai-1.3.0/skills/migrai-docs.md +176 -0
- migrai-1.3.0/skills/mobile-development.md +271 -0
- migrai-1.3.0/skills/npm.md +11 -0
- migrai-1.3.0/skills/observability.md +348 -0
- migrai-1.3.0/skills/onboarding.md +87 -0
- migrai-1.3.0/skills/orm-patterns.md +355 -0
- migrai-1.3.0/skills/pdflatex.md +36 -0
- migrai-1.3.0/skills/performance-optimization.md +330 -0
- migrai-1.3.0/skills/process-management.md +66 -0
- migrai-1.3.0/skills/project-migration-deploy.md +119 -0
- migrai-1.3.0/skills/project-migration-develop.md +88 -0
- migrai-1.3.0/skills/project-migration-onboard.md +113 -0
- migrai-1.3.0/skills/project-migration-qa.md +85 -0
- migrai-1.3.0/skills/project-migration-requirements.md +59 -0
- migrai-1.3.0/skills/project-traceability.md +58 -0
- migrai-1.3.0/skills/security.md +34 -0
- migrai-1.3.0/skills/ssh.md +137 -0
- migrai-1.3.0/skills/static-site-skill.md +71 -0
- migrai-1.3.0/skills/swift-linux.md +83 -0
- migrai-1.3.0/skills/testing-frameworks.md +258 -0
- migrai-1.3.0/skills/update_pr_description.md +21 -0
- migrai-1.3.0/skills/update_test.md +19 -0
- migrai-1.3.0/third_party/__init__.py +14 -0
- migrai-1.3.0/third_party/containers/e2b-sandbox/Dockerfile +19 -0
- migrai-1.3.0/third_party/containers/e2b-sandbox/README.md +15 -0
- migrai-1.3.0/third_party/containers/e2b-sandbox/e2b.toml +14 -0
- migrai-1.3.0/third_party/runtime/__init__.py +1 -0
- migrai-1.3.0/third_party/runtime/impl/__init__.py +1 -0
- migrai-1.3.0/third_party/runtime/impl/daytona/README.md +134 -0
- migrai-1.3.0/third_party/runtime/impl/daytona/__init__.py +7 -0
- migrai-1.3.0/third_party/runtime/impl/daytona/daytona_runtime.py +297 -0
- migrai-1.3.0/third_party/runtime/impl/e2b/README.md +35 -0
- migrai-1.3.0/third_party/runtime/impl/e2b/__init__.py +5 -0
- migrai-1.3.0/third_party/runtime/impl/e2b/e2b_runtime.py +402 -0
- migrai-1.3.0/third_party/runtime/impl/e2b/filestore.py +27 -0
- migrai-1.3.0/third_party/runtime/impl/e2b/sandbox.py +152 -0
- migrai-1.3.0/third_party/runtime/impl/modal/__init__.py +6 -0
- migrai-1.3.0/third_party/runtime/impl/modal/modal_runtime.py +298 -0
- migrai-1.3.0/third_party/runtime/impl/runloop/README.md +31 -0
- migrai-1.3.0/third_party/runtime/impl/runloop/__init__.py +5 -0
- migrai-1.3.0/third_party/runtime/impl/runloop/runloop_runtime.py +205 -0
migrai-1.3.0/LICENSE
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
Portions of this software are licensed as follows:
|
|
2
|
+
* All content that resides under the enterprise/ directory is licensed under the license defined in "enterprise/LICENSE".
|
|
3
|
+
* Content outside of the above mentioned directories or restrictions above is available under the MIT license as defined below.
|
|
4
|
+
|
|
5
|
+
=====================
|
|
6
|
+
|
|
7
|
+
The MIT License (MIT)
|
|
8
|
+
|
|
9
|
+
Copyright © 2025
|
|
10
|
+
|
|
11
|
+
Permission is hereby granted, free of charge, to any person
|
|
12
|
+
obtaining a copy of this software and associated documentation
|
|
13
|
+
files (the “Software”), to deal in the Software without
|
|
14
|
+
restriction, including without limitation the rights to use,
|
|
15
|
+
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
16
|
+
copies of the Software, and to permit persons to whom the
|
|
17
|
+
Software is furnished to do so, subject to the following
|
|
18
|
+
conditions:
|
|
19
|
+
|
|
20
|
+
The above copyright notice and this permission notice shall be
|
|
21
|
+
included in all copies or substantial portions of the Software.
|
|
22
|
+
|
|
23
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
|
24
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
25
|
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
26
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
27
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
28
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
29
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
30
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
migrai-1.3.0/PKG-INFO
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: migrai
|
|
3
|
+
Version: 1.3.0
|
|
4
|
+
Summary: MigrAI CLI and app server for AI-driven development
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Author: MigrAI
|
|
8
|
+
Author-email: contato@migrai.com.br
|
|
9
|
+
Requires-Python: >=3.12,<3.14
|
|
10
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
13
|
+
Provides-Extra: third-party-runtimes
|
|
14
|
+
Requires-Dist: aiohttp (>=3.13.3)
|
|
15
|
+
Requires-Dist: aioredis (>=2,<3)
|
|
16
|
+
Requires-Dist: anthropic[vertex]
|
|
17
|
+
Requires-Dist: anyio (==4.9)
|
|
18
|
+
Requires-Dist: asyncpg (>=0.30)
|
|
19
|
+
Requires-Dist: authlib (>=1.6.9)
|
|
20
|
+
Requires-Dist: bashlex (>=0.18)
|
|
21
|
+
Requires-Dist: boto3
|
|
22
|
+
Requires-Dist: browsergym-core (==0.13.3)
|
|
23
|
+
Requires-Dist: coredis (>=3.4,<5)
|
|
24
|
+
Requires-Dist: croniter
|
|
25
|
+
Requires-Dist: cryptography (>=46.0.5)
|
|
26
|
+
Requires-Dist: daytona (==0.24.2) ; extra == "third-party-runtimes"
|
|
27
|
+
Requires-Dist: deprecated
|
|
28
|
+
Requires-Dist: deprecation (>=2.1)
|
|
29
|
+
Requires-Dist: dirhash
|
|
30
|
+
Requires-Dist: docker
|
|
31
|
+
Requires-Dist: e2b-code-interpreter (>=2) ; extra == "third-party-runtimes"
|
|
32
|
+
Requires-Dist: fastapi
|
|
33
|
+
Requires-Dist: fastmcp (>=3,<4)
|
|
34
|
+
Requires-Dist: google-api-python-client (>=2.164)
|
|
35
|
+
Requires-Dist: google-auth (>=2.47)
|
|
36
|
+
Requires-Dist: google-auth-httplib2
|
|
37
|
+
Requires-Dist: google-auth-oauthlib
|
|
38
|
+
Requires-Dist: google-cloud-aiplatform
|
|
39
|
+
Requires-Dist: google-genai
|
|
40
|
+
Requires-Dist: gspread (>=6.2.1)
|
|
41
|
+
Requires-Dist: html2text
|
|
42
|
+
Requires-Dist: httpx-aiohttp (>=0.1.8)
|
|
43
|
+
Requires-Dist: ipywidgets (>=8.1.5)
|
|
44
|
+
Requires-Dist: jinja2 (>=3.1.6)
|
|
45
|
+
Requires-Dist: joblib
|
|
46
|
+
Requires-Dist: json-repair
|
|
47
|
+
Requires-Dist: jupyter-kernel-gateway
|
|
48
|
+
Requires-Dist: kubernetes (>=33.1)
|
|
49
|
+
Requires-Dist: langfuse (>=2.50)
|
|
50
|
+
Requires-Dist: langgraph (>=0.3)
|
|
51
|
+
Requires-Dist: langgraph-checkpoint-postgres (>=0.2)
|
|
52
|
+
Requires-Dist: libtmux (>=0.46.2)
|
|
53
|
+
Requires-Dist: limits (>=5.6)
|
|
54
|
+
Requires-Dist: litellm (>=1.74.3)
|
|
55
|
+
Requires-Dist: lmnr (>=0.7.20)
|
|
56
|
+
Requires-Dist: mcp (>=1.25)
|
|
57
|
+
Requires-Dist: memory-profiler (>=0.61)
|
|
58
|
+
Requires-Dist: modal (>=0.66.26,<1.2) ; extra == "third-party-runtimes"
|
|
59
|
+
Requires-Dist: numpy (<2.4)
|
|
60
|
+
Requires-Dist: openai (==2.8)
|
|
61
|
+
Requires-Dist: openhands-aci (==0.3.3)
|
|
62
|
+
Requires-Dist: openhands-agent-server (==1.12)
|
|
63
|
+
Requires-Dist: openhands-sdk (==1.12)
|
|
64
|
+
Requires-Dist: openhands-tools (==1.12)
|
|
65
|
+
Requires-Dist: opentelemetry-api (>=1.33.1)
|
|
66
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc (>=1.33.1)
|
|
67
|
+
Requires-Dist: orjson (>=3.11.6)
|
|
68
|
+
Requires-Dist: pathspec (>=0.12.1)
|
|
69
|
+
Requires-Dist: pexpect
|
|
70
|
+
Requires-Dist: pg8000 (>=1.31.5)
|
|
71
|
+
Requires-Dist: pillow (>=12.1.1)
|
|
72
|
+
Requires-Dist: playwright (>=1.55)
|
|
73
|
+
Requires-Dist: poetry (>=2.1.2)
|
|
74
|
+
Requires-Dist: prompt-toolkit (>=3.0.50)
|
|
75
|
+
Requires-Dist: protobuf (>=5.29.6,<6)
|
|
76
|
+
Requires-Dist: psutil
|
|
77
|
+
Requires-Dist: pyasn1 (>=0.6.3)
|
|
78
|
+
Requires-Dist: pybase62 (>=1)
|
|
79
|
+
Requires-Dist: pydantic (>=2.11.9)
|
|
80
|
+
Requires-Dist: pygithub (>=2.5)
|
|
81
|
+
Requires-Dist: pyjwt (>=2.12)
|
|
82
|
+
Requires-Dist: pylatexenc
|
|
83
|
+
Requires-Dist: pypdf (>=6.9.1)
|
|
84
|
+
Requires-Dist: python-docx
|
|
85
|
+
Requires-Dist: python-dotenv
|
|
86
|
+
Requires-Dist: python-frontmatter (>=1.1)
|
|
87
|
+
Requires-Dist: python-jose[cryptography] (>=3.3)
|
|
88
|
+
Requires-Dist: python-json-logger (>=3.2.1)
|
|
89
|
+
Requires-Dist: python-keycloak (>=7.0.2,<8)
|
|
90
|
+
Requires-Dist: python-multipart (>=0.0.22)
|
|
91
|
+
Requires-Dist: python-pptx
|
|
92
|
+
Requires-Dist: python-slugify (>=8.0.4,<9)
|
|
93
|
+
Requires-Dist: python-socketio (>=5.14)
|
|
94
|
+
Requires-Dist: pythonnet
|
|
95
|
+
Requires-Dist: pyyaml (>=6.0.2)
|
|
96
|
+
Requires-Dist: qtconsole (>=5.6.1)
|
|
97
|
+
Requires-Dist: rapidfuzz (>=3.9)
|
|
98
|
+
Requires-Dist: redis (>=5.2,<7)
|
|
99
|
+
Requires-Dist: requests (>=2.32.5)
|
|
100
|
+
Requires-Dist: runloop-api-client (==0.50) ; extra == "third-party-runtimes"
|
|
101
|
+
Requires-Dist: sentry-sdk[fastapi] (>=2,<3)
|
|
102
|
+
Requires-Dist: setuptools (>=78.1.1)
|
|
103
|
+
Requires-Dist: shap (>=0.50)
|
|
104
|
+
Requires-Dist: shellingham (>=1.5.4)
|
|
105
|
+
Requires-Dist: slack-sdk (>=3.39)
|
|
106
|
+
Requires-Dist: sqlalchemy[asyncio] (>=2.0.40)
|
|
107
|
+
Requires-Dist: sse-starlette (>=3.0.2)
|
|
108
|
+
Requires-Dist: starlette (>=0.49.1)
|
|
109
|
+
Requires-Dist: stripe (>=14.1,<15)
|
|
110
|
+
Requires-Dist: tenacity (>=8.5,<10)
|
|
111
|
+
Requires-Dist: termcolor
|
|
112
|
+
Requires-Dist: toml
|
|
113
|
+
Requires-Dist: tornado (>=6.5.5)
|
|
114
|
+
Requires-Dist: types-toml
|
|
115
|
+
Requires-Dist: urllib3 (>=2.6.3)
|
|
116
|
+
Requires-Dist: uvicorn
|
|
117
|
+
Requires-Dist: whatthepatch (>=1.0.6)
|
|
118
|
+
Requires-Dist: zope-interface (==7.2)
|
|
119
|
+
Project-URL: Homepage, https://migrai.com.br
|
|
120
|
+
Project-URL: Repository, https://github.com/brunohelius/migrai-agentic-coder
|
|
121
|
+
Description-Content-Type: text/markdown
|
|
122
|
+
|
|
123
|
+
<a name="readme-top"></a>
|
|
124
|
+
|
|
125
|
+
<div align="center">
|
|
126
|
+
<img src="https://raw.githubusercontent.com/OpenHands/docs/main/openhands/static/img/logo.png" alt="Logo" width="200">
|
|
127
|
+
<h1 align="center" style="border-bottom: none">MigrAI: AI-Driven Development</h1>
|
|
128
|
+
</div>
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
<div align="center">
|
|
132
|
+
<a href="https://github.com/OpenHands/OpenHands/blob/main/LICENSE"><img src="https://img.shields.io/badge/LICENSE-MIT-20B2AA?style=for-the-badge" alt="MIT License"></a>
|
|
133
|
+
<a href="https://docs.google.com/spreadsheets/d/1wOUdFCMyY6Nt0AIqF705KN4JKOWgeI4wUGUP60krXXs/edit?gid=811504672#gid=811504672"><img src="https://img.shields.io/badge/SWEBench-77.6-00cc00?logoColor=FFE165&style=for-the-badge" alt="Benchmark Score"></a>
|
|
134
|
+
<br/>
|
|
135
|
+
<a href="https://docs.openhands.dev/sdk"><img src="https://img.shields.io/badge/Documentation-000?logo=googledocs&logoColor=FFE165&style=for-the-badge" alt="Check out the documentation"></a>
|
|
136
|
+
<a href="https://arxiv.org/abs/2511.03690"><img src="https://img.shields.io/badge/Paper-000?logoColor=FFE165&logo=arxiv&style=for-the-badge" alt="Tech Report"></a>
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
<!-- Keep these links. Translations will automatically update with the README. -->
|
|
140
|
+
<a href="https://www.readme-i18n.com/OpenHands/OpenHands?lang=de">Deutsch</a> |
|
|
141
|
+
<a href="https://www.readme-i18n.com/OpenHands/OpenHands?lang=es">Español</a> |
|
|
142
|
+
<a href="https://www.readme-i18n.com/OpenHands/OpenHands?lang=fr">français</a> |
|
|
143
|
+
<a href="https://www.readme-i18n.com/OpenHands/OpenHands?lang=ja">日本語</a> |
|
|
144
|
+
<a href="https://www.readme-i18n.com/OpenHands/OpenHands?lang=ko">한국어</a> |
|
|
145
|
+
<a href="https://www.readme-i18n.com/OpenHands/OpenHands?lang=pt">Português</a> |
|
|
146
|
+
<a href="https://www.readme-i18n.com/OpenHands/OpenHands?lang=ru">Русский</a> |
|
|
147
|
+
<a href="https://www.readme-i18n.com/OpenHands/OpenHands?lang=zh">中文</a>
|
|
148
|
+
|
|
149
|
+
</div>
|
|
150
|
+
|
|
151
|
+
<hr>
|
|
152
|
+
|
|
153
|
+
🙌 Welcome to MigrAI, a [community](COMMUNITY.md) focused on AI-driven development. We’d love for you to [join us on Slack](https://dub.sh/openhands).
|
|
154
|
+
|
|
155
|
+
There are a few ways to work with MigrAI:
|
|
156
|
+
|
|
157
|
+
### MigrAI Software Agent SDK
|
|
158
|
+
The SDK is a composable Python library that contains all of our agentic tech. It's the engine that powers everything else below.
|
|
159
|
+
|
|
160
|
+
Define agents in code, then run them locally, or scale to 1000s of agents in the cloud.
|
|
161
|
+
|
|
162
|
+
[Check out the docs](https://docs.openhands.dev/sdk) or [view the source](https://github.com/OpenHands/software-agent-sdk/)
|
|
163
|
+
|
|
164
|
+
### MigrAI CLI
|
|
165
|
+
The CLI is the easiest way to start using MigrAI. The experience will be familiar to anyone who has worked
|
|
166
|
+
with e.g. Claude Code or Codex. Install it locally with `pipx install migrai`, authenticate with
|
|
167
|
+
`migrai login --api-key <sua-chave>`, and then run `migrai "<sua tarefa>"`.
|
|
168
|
+
|
|
169
|
+
[Check out the docs](https://docs.openhands.dev/openhands/usage/run-openhands/cli-mode) or view the source in this repo.
|
|
170
|
+
|
|
171
|
+
### MigrAI Local GUI
|
|
172
|
+
Use the Local GUI for running agents on your laptop. It comes with a REST API and a single-page React application.
|
|
173
|
+
The experience will be familiar to anyone who has used Devin or Jules.
|
|
174
|
+
|
|
175
|
+
[Check out the docs](https://docs.openhands.dev/openhands/usage/run-openhands/local-setup) or view the source in this repo.
|
|
176
|
+
|
|
177
|
+
### MigrAI Cloud
|
|
178
|
+
This is a deployment of MigrAI GUI, running on hosted infrastructure.
|
|
179
|
+
|
|
180
|
+
You can try it with a free $10 credit by [signing in with your GitHub or GitLab account](https://app.all-hands.dev).
|
|
181
|
+
|
|
182
|
+
MigrAI Cloud comes with source-available features and integrations:
|
|
183
|
+
- Integrations with Slack, Jira, and Linear
|
|
184
|
+
- Multi-user support
|
|
185
|
+
- RBAC and permissions
|
|
186
|
+
- Collaboration features (e.g., conversation sharing)
|
|
187
|
+
|
|
188
|
+
### MigrAI Enterprise
|
|
189
|
+
Large enterprises can work with us to self-host MigrAI Cloud in their own VPC, via Kubernetes.
|
|
190
|
+
MigrAI Enterprise can also work with the CLI and SDK above.
|
|
191
|
+
|
|
192
|
+
MigrAI Enterprise is source-available--you can see all the source code here in the enterprise/ directory,
|
|
193
|
+
but you'll need to purchase a license if you want to run it for more than one month.
|
|
194
|
+
|
|
195
|
+
Enterprise contracts also come with extended support and access to our research team.
|
|
196
|
+
|
|
197
|
+
Learn more at [openhands.dev/enterprise](https://openhands.dev/enterprise)
|
|
198
|
+
|
|
199
|
+
### Everything Else
|
|
200
|
+
|
|
201
|
+
Check out our [Product Roadmap](https://github.com/orgs/openhands/projects/1), and feel free to
|
|
202
|
+
[open up an issue](https://github.com/OpenHands/OpenHands/issues) if there's something you'd like to see!
|
|
203
|
+
|
|
204
|
+
You might also be interested in our [evaluation infrastructure](https://github.com/OpenHands/benchmarks), our [chrome extension](https://github.com/OpenHands/openhands-chrome-extension/), or our [Theory-of-Mind module](https://github.com/OpenHands/ToM-SWE).
|
|
205
|
+
|
|
206
|
+
All our work is available under the MIT license, except for the `enterprise/` directory in this repository (see the [enterprise license](enterprise/LICENSE) for details).
|
|
207
|
+
The core `openhands` and `agent-server` Docker images are fully MIT-licensed as well.
|
|
208
|
+
|
|
209
|
+
If you need help with anything, or just want to chat, [come find us on Slack](https://dub.sh/openhands).
|
|
210
|
+
|
migrai-1.3.0/README.md
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
<a name="readme-top"></a>
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
<img src="https://raw.githubusercontent.com/OpenHands/docs/main/openhands/static/img/logo.png" alt="Logo" width="200">
|
|
5
|
+
<h1 align="center" style="border-bottom: none">MigrAI: AI-Driven Development</h1>
|
|
6
|
+
</div>
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
<div align="center">
|
|
10
|
+
<a href="https://github.com/OpenHands/OpenHands/blob/main/LICENSE"><img src="https://img.shields.io/badge/LICENSE-MIT-20B2AA?style=for-the-badge" alt="MIT License"></a>
|
|
11
|
+
<a href="https://docs.google.com/spreadsheets/d/1wOUdFCMyY6Nt0AIqF705KN4JKOWgeI4wUGUP60krXXs/edit?gid=811504672#gid=811504672"><img src="https://img.shields.io/badge/SWEBench-77.6-00cc00?logoColor=FFE165&style=for-the-badge" alt="Benchmark Score"></a>
|
|
12
|
+
<br/>
|
|
13
|
+
<a href="https://docs.openhands.dev/sdk"><img src="https://img.shields.io/badge/Documentation-000?logo=googledocs&logoColor=FFE165&style=for-the-badge" alt="Check out the documentation"></a>
|
|
14
|
+
<a href="https://arxiv.org/abs/2511.03690"><img src="https://img.shields.io/badge/Paper-000?logoColor=FFE165&logo=arxiv&style=for-the-badge" alt="Tech Report"></a>
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
<!-- Keep these links. Translations will automatically update with the README. -->
|
|
18
|
+
<a href="https://www.readme-i18n.com/OpenHands/OpenHands?lang=de">Deutsch</a> |
|
|
19
|
+
<a href="https://www.readme-i18n.com/OpenHands/OpenHands?lang=es">Español</a> |
|
|
20
|
+
<a href="https://www.readme-i18n.com/OpenHands/OpenHands?lang=fr">français</a> |
|
|
21
|
+
<a href="https://www.readme-i18n.com/OpenHands/OpenHands?lang=ja">日本語</a> |
|
|
22
|
+
<a href="https://www.readme-i18n.com/OpenHands/OpenHands?lang=ko">한국어</a> |
|
|
23
|
+
<a href="https://www.readme-i18n.com/OpenHands/OpenHands?lang=pt">Português</a> |
|
|
24
|
+
<a href="https://www.readme-i18n.com/OpenHands/OpenHands?lang=ru">Русский</a> |
|
|
25
|
+
<a href="https://www.readme-i18n.com/OpenHands/OpenHands?lang=zh">中文</a>
|
|
26
|
+
|
|
27
|
+
</div>
|
|
28
|
+
|
|
29
|
+
<hr>
|
|
30
|
+
|
|
31
|
+
🙌 Welcome to MigrAI, a [community](COMMUNITY.md) focused on AI-driven development. We’d love for you to [join us on Slack](https://dub.sh/openhands).
|
|
32
|
+
|
|
33
|
+
There are a few ways to work with MigrAI:
|
|
34
|
+
|
|
35
|
+
### MigrAI Software Agent SDK
|
|
36
|
+
The SDK is a composable Python library that contains all of our agentic tech. It's the engine that powers everything else below.
|
|
37
|
+
|
|
38
|
+
Define agents in code, then run them locally, or scale to 1000s of agents in the cloud.
|
|
39
|
+
|
|
40
|
+
[Check out the docs](https://docs.openhands.dev/sdk) or [view the source](https://github.com/OpenHands/software-agent-sdk/)
|
|
41
|
+
|
|
42
|
+
### MigrAI CLI
|
|
43
|
+
The CLI is the easiest way to start using MigrAI. The experience will be familiar to anyone who has worked
|
|
44
|
+
with e.g. Claude Code or Codex. Install it locally with `pipx install migrai`, authenticate with
|
|
45
|
+
`migrai login --api-key <sua-chave>`, and then run `migrai "<sua tarefa>"`.
|
|
46
|
+
|
|
47
|
+
[Check out the docs](https://docs.openhands.dev/openhands/usage/run-openhands/cli-mode) or view the source in this repo.
|
|
48
|
+
|
|
49
|
+
### MigrAI Local GUI
|
|
50
|
+
Use the Local GUI for running agents on your laptop. It comes with a REST API and a single-page React application.
|
|
51
|
+
The experience will be familiar to anyone who has used Devin or Jules.
|
|
52
|
+
|
|
53
|
+
[Check out the docs](https://docs.openhands.dev/openhands/usage/run-openhands/local-setup) or view the source in this repo.
|
|
54
|
+
|
|
55
|
+
### MigrAI Cloud
|
|
56
|
+
This is a deployment of MigrAI GUI, running on hosted infrastructure.
|
|
57
|
+
|
|
58
|
+
You can try it with a free $10 credit by [signing in with your GitHub or GitLab account](https://app.all-hands.dev).
|
|
59
|
+
|
|
60
|
+
MigrAI Cloud comes with source-available features and integrations:
|
|
61
|
+
- Integrations with Slack, Jira, and Linear
|
|
62
|
+
- Multi-user support
|
|
63
|
+
- RBAC and permissions
|
|
64
|
+
- Collaboration features (e.g., conversation sharing)
|
|
65
|
+
|
|
66
|
+
### MigrAI Enterprise
|
|
67
|
+
Large enterprises can work with us to self-host MigrAI Cloud in their own VPC, via Kubernetes.
|
|
68
|
+
MigrAI Enterprise can also work with the CLI and SDK above.
|
|
69
|
+
|
|
70
|
+
MigrAI Enterprise is source-available--you can see all the source code here in the enterprise/ directory,
|
|
71
|
+
but you'll need to purchase a license if you want to run it for more than one month.
|
|
72
|
+
|
|
73
|
+
Enterprise contracts also come with extended support and access to our research team.
|
|
74
|
+
|
|
75
|
+
Learn more at [openhands.dev/enterprise](https://openhands.dev/enterprise)
|
|
76
|
+
|
|
77
|
+
### Everything Else
|
|
78
|
+
|
|
79
|
+
Check out our [Product Roadmap](https://github.com/orgs/openhands/projects/1), and feel free to
|
|
80
|
+
[open up an issue](https://github.com/OpenHands/OpenHands/issues) if there's something you'd like to see!
|
|
81
|
+
|
|
82
|
+
You might also be interested in our [evaluation infrastructure](https://github.com/OpenHands/benchmarks), our [chrome extension](https://github.com/OpenHands/openhands-chrome-extension/), or our [Theory-of-Mind module](https://github.com/OpenHands/ToM-SWE).
|
|
83
|
+
|
|
84
|
+
All our work is available under the MIT license, except for the `enterprise/` directory in this repository (see the [enterprise license](enterprise/LICENSE) for details).
|
|
85
|
+
The core `openhands` and `agent-server` Docker images are fully MIT-licensed as well.
|
|
86
|
+
|
|
87
|
+
If you need help with anything, or just want to chat, [come find us on Slack](https://dub.sh/openhands).
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# MigrAI Architecture
|
|
2
|
+
|
|
3
|
+
This directory contains the core components of MigrAI.
|
|
4
|
+
|
|
5
|
+
For an overview of the system architecture, see the [architecture documentation](https://docs.openhands.dev/usage/architecture/backend) (v0 backend architecture).
|
|
6
|
+
|
|
7
|
+
## Classes
|
|
8
|
+
|
|
9
|
+
The key classes in MigrAI are:
|
|
10
|
+
|
|
11
|
+
* LLM: brokers all interactions with large language models. Works with any underlying completion model, thanks to LiteLLM.
|
|
12
|
+
* Agent: responsible for looking at the current State, and producing an Action that moves one step closer toward the end-goal.
|
|
13
|
+
* AgentController: initializes the Agent, manages State, and drive the main loop that pushes the Agent forward, step by step
|
|
14
|
+
* State: represents the current state of the Agent's task. Includes things like the current step, a history of recent events, the Agent's long-term plan, etc
|
|
15
|
+
* EventStream: a central hub for Events, where any component can publish Events, or listen for Events published by other components
|
|
16
|
+
* Event: an Action or Observeration
|
|
17
|
+
* Action: represents a request to e.g. edit a file, run a command, or send a message
|
|
18
|
+
* Observation: represents information collected from the environment, e.g. file contents or command output
|
|
19
|
+
* Runtime: responsible for performing Actions, and sending back Observations
|
|
20
|
+
* Sandbox: the part of the runtime responsible for running commands, e.g. inside of Docker
|
|
21
|
+
* Server: brokers MigrAI sessions over HTTP, e.g. to drive the frontend
|
|
22
|
+
* Session: holds a single EventStream, a single AgentController, and a single Runtime. Generally represents a single task (but potentially including several user prompts)
|
|
23
|
+
* ConversationManager: keeps a list of active sessions, and ensures requests are routed to the correct Session
|
|
24
|
+
|
|
25
|
+
## Control Flow
|
|
26
|
+
|
|
27
|
+
Here's the basic loop (in pseudocode) that drives agents.
|
|
28
|
+
|
|
29
|
+
```python
|
|
30
|
+
while True:
|
|
31
|
+
prompt = agent.generate_prompt(state)
|
|
32
|
+
response = llm.completion(prompt)
|
|
33
|
+
action = agent.parse_response(response)
|
|
34
|
+
observation = runtime.run(action)
|
|
35
|
+
state = state.update(action, observation)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
In reality, most of this is achieved through message passing, via the EventStream.
|
|
39
|
+
The EventStream serves as the backbone for all communication in MigrAI.
|
|
40
|
+
|
|
41
|
+
```mermaid
|
|
42
|
+
flowchart LR
|
|
43
|
+
Agent--Actions-->AgentController
|
|
44
|
+
AgentController--State-->Agent
|
|
45
|
+
AgentController--Actions-->EventStream
|
|
46
|
+
EventStream--Observations-->AgentController
|
|
47
|
+
Runtime--Observations-->EventStream
|
|
48
|
+
EventStream--Actions-->Runtime
|
|
49
|
+
Frontend--Actions-->EventStream
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Runtime
|
|
53
|
+
|
|
54
|
+
Please refer to the [documentation](https://docs.openhands.dev/usage/architecture/runtime) to learn more about `Runtime`.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# This is a namespace package - extend the path to include installed packages
|
|
2
|
+
# (We need to do this to support dependencies openhands-sdk, openhands-tools and openhands-agent-server
|
|
3
|
+
# which all have a top level `openhands`` package.)
|
|
4
|
+
__path__ = __import__('pkgutil').extend_path(__path__, __name__)
|
|
5
|
+
|
|
6
|
+
# Import version information for backward compatibility
|
|
7
|
+
from openhands.version import __version__, get_version
|
|
8
|
+
|
|
9
|
+
__all__ = ['__version__', 'get_version']
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# Agent Hub
|
|
2
|
+
|
|
3
|
+
In this folder, there may exist multiple implementations of `Agent` that will be used by the framework.
|
|
4
|
+
|
|
5
|
+
For example, `openhands/agenthub/codeact_agent`, etc.
|
|
6
|
+
Contributors from different backgrounds and interests can choose to contribute to any (or all!) of these directions.
|
|
7
|
+
|
|
8
|
+
## Constructing an Agent
|
|
9
|
+
|
|
10
|
+
The abstraction for an agent can be found [here](../controller/agent.py).
|
|
11
|
+
|
|
12
|
+
Agents are run inside of a loop. At each iteration, `agent.step()` is called with a
|
|
13
|
+
[State](../controller/state/state.py) input, and the agent must output an [Action](../events/action).
|
|
14
|
+
|
|
15
|
+
Every agent also has a `self.llm` which it can use to interact with the LLM configured by the user.
|
|
16
|
+
See the [LiteLLM docs for `self.llm.completion`](https://docs.litellm.ai/docs/completion).
|
|
17
|
+
|
|
18
|
+
## State
|
|
19
|
+
|
|
20
|
+
The `state` represents the running state of an agent in the MigrAI system. The class handles saving and restoring the agent session. It is serialized in a pickle.
|
|
21
|
+
|
|
22
|
+
The State object stores information about:
|
|
23
|
+
|
|
24
|
+
* Multi-agent state / delegates:
|
|
25
|
+
* the 'root task' (conversation between the agent and the user)
|
|
26
|
+
* the subtask (conversation between an agent and the user or another agent)
|
|
27
|
+
* global and local iterations
|
|
28
|
+
* delegate levels for multi-agent interactions
|
|
29
|
+
* almost stuck state
|
|
30
|
+
* Running state of an agent:
|
|
31
|
+
* current agent state (e.g., LOADING, RUNNING, PAUSED)
|
|
32
|
+
* traffic control state for rate limiting
|
|
33
|
+
* confirmation mode
|
|
34
|
+
* the last error encountered
|
|
35
|
+
* History:
|
|
36
|
+
* start and end IDs for events in agent's history. This allows to retrieve the actions taken by the agent, and observations (e.g. file content, command output) from the current or past sessions.
|
|
37
|
+
* Metrics:
|
|
38
|
+
* global metrics for the current task
|
|
39
|
+
* local metrics for the current subtask
|
|
40
|
+
* Extra data:
|
|
41
|
+
* additional task-specific data
|
|
42
|
+
|
|
43
|
+
The agent can add and modify subtasks through the `AddTaskAction` and `ModifyTaskAction`
|
|
44
|
+
|
|
45
|
+
## Actions
|
|
46
|
+
|
|
47
|
+
Here is a list of available Actions, which can be returned by `agent.step()`:
|
|
48
|
+
|
|
49
|
+
- [`CmdRunAction`](../events/action/commands.py) - Runs a command inside a sandboxed terminal
|
|
50
|
+
- [`IPythonRunCellAction`](../events/action/commands.py) - Execute a block of Python code interactively (in Jupyter notebook) and receives `CmdOutputObservation`. Requires setting up `jupyter` [plugin](../runtime/plugins) as a requirement.
|
|
51
|
+
- [`FileReadAction`](../events/action/files.py) - Reads the content of a file
|
|
52
|
+
- [`FileWriteAction`](../events/action/files.py) - Writes new content to a file
|
|
53
|
+
- [`BrowseURLAction`](../events/action/browse.py) - Gets the content of a URL
|
|
54
|
+
- [`AddTaskAction`](../events/action/tasks.py) - Adds a subtask to the plan
|
|
55
|
+
- [`ModifyTaskAction`](../events/action/tasks.py) - Changes the state of a subtask.
|
|
56
|
+
- [`AgentFinishAction`](../events/action/agent.py) - Stops the control loop, allowing the user/delegator agent to enter a new task
|
|
57
|
+
- [`AgentRejectAction`](../events/action/agent.py) - Stops the control loop, allowing the user/delegator agent to enter a new task
|
|
58
|
+
- [`AgentFinishAction`](../events/action/agent.py) - Stops the control loop, allowing the user to enter a new task
|
|
59
|
+
- [`MessageAction`](../events/action/message.py) - Represents a message from an agent or the user
|
|
60
|
+
|
|
61
|
+
To serialize and deserialize an action, you can use:
|
|
62
|
+
- `action.to_dict()` to serialize the action to a dictionary to be sent to the UI, including a user-friendly string representation of the message
|
|
63
|
+
- `action.to_memory()` to serialize the action to a dictionary to be sent to the LLM. It may include raw information, such as the underlying exceptions that occurred during the action execution.
|
|
64
|
+
- `action_from_dict(action_dict)` to deserialize the action from a dictionary.
|
|
65
|
+
|
|
66
|
+
## Observations
|
|
67
|
+
|
|
68
|
+
There are also several types of Observations. These are typically available in the step following the corresponding Action.
|
|
69
|
+
But they may also appear as a result of asynchronous events (e.g. a message from the user).
|
|
70
|
+
|
|
71
|
+
Here is a list of available Observations:
|
|
72
|
+
|
|
73
|
+
- [`CmdOutputObservation`](../events/observation/commands.py)
|
|
74
|
+
- [`BrowserOutputObservation`](../events/observation/browse.py)
|
|
75
|
+
- [`FileReadObservation`](../events/observation/files.py)
|
|
76
|
+
- [`FileWriteObservation`](../events/observation/files.py)
|
|
77
|
+
- [`ErrorObservation`](../events/observation/error.py)
|
|
78
|
+
- [`SuccessObservation`](../events/observation/success.py)
|
|
79
|
+
|
|
80
|
+
You can use `observation.to_dict()` and `observation_from_dict` to serialize and deserialize observations.
|
|
81
|
+
|
|
82
|
+
## Interface
|
|
83
|
+
|
|
84
|
+
Every agent must implement the following methods:
|
|
85
|
+
|
|
86
|
+
### `step`
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
def step(self, state: "State") -> "Action"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
`step` moves the agent forward one step towards its goal. This probably means
|
|
93
|
+
sending a prompt to the LLM, then parsing the response into an `Action`.
|
|
94
|
+
|
|
95
|
+
## Agent Delegation
|
|
96
|
+
|
|
97
|
+
MigrAI is a multi-agentic system. Agents can delegate tasks to other agents, whether
|
|
98
|
+
prompted by the user, or when the agent decides to ask another agent for help. For example,
|
|
99
|
+
the `CodeActAgent` might delegate to the `BrowsingAgent` to answer questions that involve browsing
|
|
100
|
+
the web. The Delegator Agent forwards tasks to micro-agents, such as 'RepoStudyAgent' to study a repo,
|
|
101
|
+
or 'VerifierAgent' to verify a task completion.
|
|
102
|
+
|
|
103
|
+
### Understanding the terminology
|
|
104
|
+
|
|
105
|
+
A `task` is an end-to-end conversation between MigrAI (the whole system) and the user,
|
|
106
|
+
which might involve one or more inputs from the user. It starts with an initial input
|
|
107
|
+
(typically a task statement) from the user, and ends with either an `AgentFinishAction`
|
|
108
|
+
initiated by the agent, a stop initiated by the user, or an error.
|
|
109
|
+
|
|
110
|
+
A `subtask` is an end-to-end conversation between an agent and the user, or
|
|
111
|
+
another agent. If a `task` is conducted by a single agent, then it's also a `subtask`
|
|
112
|
+
itself. Otherwise, a `task` consists of multiple `subtasks`, each executed by
|
|
113
|
+
one agent.
|
|
114
|
+
|
|
115
|
+
For example, considering a task from the user: `tell me how many GitHub stars
|
|
116
|
+
MigrAI repo has`. Let's assume the default agent is CodeActAgent.
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
-- TASK STARTS (SUBTASK 0 STARTS) --
|
|
120
|
+
|
|
121
|
+
DELEGATE_LEVEL 0, ITERATION 0, LOCAL_ITERATION 0
|
|
122
|
+
CodeActAgent: I should request help from BrowsingAgent
|
|
123
|
+
|
|
124
|
+
-- DELEGATE STARTS (SUBTASK 1 STARTS) --
|
|
125
|
+
|
|
126
|
+
DELEGATE_LEVEL 1, ITERATION 1, LOCAL_ITERATION 0
|
|
127
|
+
BrowsingAgent: Let me find the answer on GitHub
|
|
128
|
+
|
|
129
|
+
DELEGATE_LEVEL 1, ITERATION 2, LOCAL_ITERATION 1
|
|
130
|
+
BrowsingAgent: I found the answer, let me convey the result and finish
|
|
131
|
+
|
|
132
|
+
-- DELEGATE ENDS (SUBTASK 1 ENDS) --
|
|
133
|
+
|
|
134
|
+
DELEGATE_LEVEL 0, ITERATION 3, LOCAL_ITERATION 1
|
|
135
|
+
CodeActAgent: I got the answer from BrowsingAgent, let me convey the result
|
|
136
|
+
and finish
|
|
137
|
+
|
|
138
|
+
-- TASK ENDS (SUBTASK 0 ENDS) --
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Note how ITERATION counter is shared across agents, while LOCAL_ITERATION
|
|
142
|
+
is local to each subtask.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from dotenv import load_dotenv
|
|
2
|
+
|
|
3
|
+
load_dotenv()
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
from openhands.agenthub import ( # noqa: E402
|
|
7
|
+
browsing_agent,
|
|
8
|
+
codeact_agent,
|
|
9
|
+
dummy_agent,
|
|
10
|
+
loc_agent,
|
|
11
|
+
readonly_agent,
|
|
12
|
+
visualbrowsing_agent,
|
|
13
|
+
)
|
|
14
|
+
from openhands.controller.agent import Agent # noqa: E402
|
|
15
|
+
|
|
16
|
+
__all__ = [
|
|
17
|
+
'Agent',
|
|
18
|
+
'codeact_agent',
|
|
19
|
+
'dummy_agent',
|
|
20
|
+
'browsing_agent',
|
|
21
|
+
'visualbrowsing_agent',
|
|
22
|
+
'readonly_agent',
|
|
23
|
+
'loc_agent',
|
|
24
|
+
]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Browsing Agent Framework
|
|
2
|
+
|
|
3
|
+
This folder implements the basic BrowserGym [demo agent](https://github.com/ServiceNow/BrowserGym/tree/main/demo_agent) that enables full-featured web browsing.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## Test run
|
|
7
|
+
|
|
8
|
+
Note that for browsing tasks, GPT-4 is usually a requirement to get reasonable results, due to the complexity of the web page structures.
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
poetry run python ./openhands/core/main.py \
|
|
12
|
+
-i 10 \
|
|
13
|
+
-t "tell me the usa's president using google search" \
|
|
14
|
+
-c BrowsingAgent \
|
|
15
|
+
-m claude-3-5-sonnet-20241022
|
|
16
|
+
```
|