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.
Files changed (767) hide show
  1. migrai-1.3.0/LICENSE +30 -0
  2. migrai-1.3.0/PKG-INFO +210 -0
  3. migrai-1.3.0/README.md +87 -0
  4. migrai-1.3.0/openhands/README.md +54 -0
  5. migrai-1.3.0/openhands/__init__.py +9 -0
  6. migrai-1.3.0/openhands/agenthub/README.md +142 -0
  7. migrai-1.3.0/openhands/agenthub/__init__.py +24 -0
  8. migrai-1.3.0/openhands/agenthub/browsing_agent/README.md +16 -0
  9. migrai-1.3.0/openhands/agenthub/browsing_agent/__init__.py +4 -0
  10. migrai-1.3.0/openhands/agenthub/browsing_agent/browsing_agent.py +230 -0
  11. migrai-1.3.0/openhands/agenthub/browsing_agent/response_parser.py +133 -0
  12. migrai-1.3.0/openhands/agenthub/browsing_agent/utils.py +181 -0
  13. migrai-1.3.0/openhands/agenthub/codeact_agent/README.md +113 -0
  14. migrai-1.3.0/openhands/agenthub/codeact_agent/__init__.py +4 -0
  15. migrai-1.3.0/openhands/agenthub/codeact_agent/codeact_agent.py +337 -0
  16. migrai-1.3.0/openhands/agenthub/codeact_agent/function_calling.py +503 -0
  17. migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/additional_info.j2 +67 -0
  18. migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/in_context_learning_example.j2 +180 -0
  19. migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/in_context_learning_example_suffix.j2 +3 -0
  20. migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/microagent_info.j2 +8 -0
  21. migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/security_risk_assessment.j2 +23 -0
  22. migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/system_prompt.j2 +339 -0
  23. migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/system_prompt_interactive.j2 +15 -0
  24. migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/system_prompt_long_horizon.j2 +53 -0
  25. migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/system_prompt_tech_philosophy.j2 +122 -0
  26. migrai-1.3.0/openhands/agenthub/codeact_agent/prompts/user_prompt.j2 +0 -0
  27. migrai-1.3.0/openhands/agenthub/codeact_agent/tools/__init__.py +21 -0
  28. migrai-1.3.0/openhands/agenthub/codeact_agent/tools/bash.py +89 -0
  29. migrai-1.3.0/openhands/agenthub/codeact_agent/tools/browser.py +178 -0
  30. migrai-1.3.0/openhands/agenthub/codeact_agent/tools/condensation_request.py +23 -0
  31. migrai-1.3.0/openhands/agenthub/codeact_agent/tools/finish.py +54 -0
  32. migrai-1.3.0/openhands/agenthub/codeact_agent/tools/ipython.py +41 -0
  33. migrai-1.3.0/openhands/agenthub/codeact_agent/tools/llm_based_edit.py +162 -0
  34. migrai-1.3.0/openhands/agenthub/codeact_agent/tools/prompt.py +35 -0
  35. migrai-1.3.0/openhands/agenthub/codeact_agent/tools/request_secret.py +46 -0
  36. migrai-1.3.0/openhands/agenthub/codeact_agent/tools/security_utils.py +17 -0
  37. migrai-1.3.0/openhands/agenthub/codeact_agent/tools/str_replace_editor.py +168 -0
  38. migrai-1.3.0/openhands/agenthub/codeact_agent/tools/task_tracker.py +226 -0
  39. migrai-1.3.0/openhands/agenthub/codeact_agent/tools/think.py +34 -0
  40. migrai-1.3.0/openhands/agenthub/dummy_agent/__init__.py +4 -0
  41. migrai-1.3.0/openhands/agenthub/dummy_agent/agent.py +183 -0
  42. migrai-1.3.0/openhands/agenthub/loc_agent/README.md +14 -0
  43. migrai-1.3.0/openhands/agenthub/loc_agent/__init__.py +4 -0
  44. migrai-1.3.0/openhands/agenthub/loc_agent/function_calling.py +138 -0
  45. migrai-1.3.0/openhands/agenthub/loc_agent/loc_agent.py +47 -0
  46. migrai-1.3.0/openhands/agenthub/loc_agent/tools/__init__.py +8 -0
  47. migrai-1.3.0/openhands/agenthub/loc_agent/tools/explore_structure.py +192 -0
  48. migrai-1.3.0/openhands/agenthub/loc_agent/tools/search_content.py +105 -0
  49. migrai-1.3.0/openhands/agenthub/readonly_agent/__init__.py +4 -0
  50. migrai-1.3.0/openhands/agenthub/readonly_agent/function_calling.py +261 -0
  51. migrai-1.3.0/openhands/agenthub/readonly_agent/prompts/additional_info.j2 +29 -0
  52. migrai-1.3.0/openhands/agenthub/readonly_agent/prompts/in_context_learning_example.j2 +101 -0
  53. migrai-1.3.0/openhands/agenthub/readonly_agent/prompts/in_context_learning_example_suffix.j2 +3 -0
  54. migrai-1.3.0/openhands/agenthub/readonly_agent/prompts/microagent_info.j2 +8 -0
  55. migrai-1.3.0/openhands/agenthub/readonly_agent/prompts/system_prompt.j2 +34 -0
  56. migrai-1.3.0/openhands/agenthub/readonly_agent/prompts/user_prompt.j2 +0 -0
  57. migrai-1.3.0/openhands/agenthub/readonly_agent/readonly_agent.py +90 -0
  58. migrai-1.3.0/openhands/agenthub/readonly_agent/tools/__init__.py +21 -0
  59. migrai-1.3.0/openhands/agenthub/readonly_agent/tools/glob.py +38 -0
  60. migrai-1.3.0/openhands/agenthub/readonly_agent/tools/grep.py +44 -0
  61. migrai-1.3.0/openhands/agenthub/readonly_agent/tools/view.py +41 -0
  62. migrai-1.3.0/openhands/agenthub/visualbrowsing_agent/README.md +7 -0
  63. migrai-1.3.0/openhands/agenthub/visualbrowsing_agent/__init__.py +6 -0
  64. migrai-1.3.0/openhands/agenthub/visualbrowsing_agent/visualbrowsing_agent.py +317 -0
  65. migrai-1.3.0/openhands/app_server/README.md +19 -0
  66. migrai-1.3.0/openhands/app_server/__init__.py +0 -0
  67. migrai-1.3.0/openhands/app_server/app_conversation/README.md +20 -0
  68. migrai-1.3.0/openhands/app_server/app_conversation/__init__.py +1 -0
  69. migrai-1.3.0/openhands/app_server/app_conversation/app_conversation_info_service.py +113 -0
  70. migrai-1.3.0/openhands/app_server/app_conversation/app_conversation_models.py +337 -0
  71. migrai-1.3.0/openhands/app_server/app_conversation/app_conversation_router.py +3359 -0
  72. migrai-1.3.0/openhands/app_server/app_conversation/app_conversation_service.py +147 -0
  73. migrai-1.3.0/openhands/app_server/app_conversation/app_conversation_service_base.py +592 -0
  74. migrai-1.3.0/openhands/app_server/app_conversation/app_conversation_start_task_service.py +76 -0
  75. migrai-1.3.0/openhands/app_server/app_conversation/git/README.md +1 -0
  76. migrai-1.3.0/openhands/app_server/app_conversation/git/pre-commit.sh +11 -0
  77. migrai-1.3.0/openhands/app_server/app_conversation/live_status_app_conversation_service.py +7586 -0
  78. migrai-1.3.0/openhands/app_server/app_conversation/sandbox_recovery.py +437 -0
  79. migrai-1.3.0/openhands/app_server/app_conversation/skill_loader.py +703 -0
  80. migrai-1.3.0/openhands/app_server/app_conversation/sql_app_conversation_info_service.py +963 -0
  81. migrai-1.3.0/openhands/app_server/app_conversation/sql_app_conversation_start_task_service.py +437 -0
  82. migrai-1.3.0/openhands/app_server/app_lifespan/alembic/README +15 -0
  83. migrai-1.3.0/openhands/app_server/app_lifespan/alembic/env.py +121 -0
  84. migrai-1.3.0/openhands/app_server/app_lifespan/alembic/script.py.mako +28 -0
  85. migrai-1.3.0/openhands/app_server/app_lifespan/alembic/versions/001.py +268 -0
  86. migrai-1.3.0/openhands/app_server/app_lifespan/alembic/versions/002.py +73 -0
  87. migrai-1.3.0/openhands/app_server/app_lifespan/alembic/versions/003.py +41 -0
  88. migrai-1.3.0/openhands/app_server/app_lifespan/alembic/versions/004.py +41 -0
  89. migrai-1.3.0/openhands/app_server/app_lifespan/alembic/versions/005.py +46 -0
  90. migrai-1.3.0/openhands/app_server/app_lifespan/alembic/versions/006.py +32 -0
  91. migrai-1.3.0/openhands/app_server/app_lifespan/alembic/versions/007.py +41 -0
  92. migrai-1.3.0/openhands/app_server/app_lifespan/alembic/versions/008.py +42 -0
  93. migrai-1.3.0/openhands/app_server/app_lifespan/alembic.ini +150 -0
  94. migrai-1.3.0/openhands/app_server/app_lifespan/app_lifespan_service.py +21 -0
  95. migrai-1.3.0/openhands/app_server/app_lifespan/oss_app_lifespan_service.py +38 -0
  96. migrai-1.3.0/openhands/app_server/config.py +678 -0
  97. migrai-1.3.0/openhands/app_server/errors.py +43 -0
  98. migrai-1.3.0/openhands/app_server/event/README.md +21 -0
  99. migrai-1.3.0/openhands/app_server/event/event_router.py +445 -0
  100. migrai-1.3.0/openhands/app_server/event/event_service.py +60 -0
  101. migrai-1.3.0/openhands/app_server/event/event_service_base.py +284 -0
  102. migrai-1.3.0/openhands/app_server/event/event_store.py +0 -0
  103. migrai-1.3.0/openhands/app_server/event/filesystem_event_service.py +82 -0
  104. migrai-1.3.0/openhands/app_server/event/google_cloud_event_service.py +90 -0
  105. migrai-1.3.0/openhands/app_server/event_callback/README.md +21 -0
  106. migrai-1.3.0/openhands/app_server/event_callback/__init__.py +19 -0
  107. migrai-1.3.0/openhands/app_server/event_callback/event_callback_models.py +93 -0
  108. migrai-1.3.0/openhands/app_server/event_callback/event_callback_result_models.py +35 -0
  109. migrai-1.3.0/openhands/app_server/event_callback/event_callback_service.py +68 -0
  110. migrai-1.3.0/openhands/app_server/event_callback/set_title_callback_processor.py +422 -0
  111. migrai-1.3.0/openhands/app_server/event_callback/sql_event_callback_service.py +265 -0
  112. migrai-1.3.0/openhands/app_server/event_callback/util.py +61 -0
  113. migrai-1.3.0/openhands/app_server/event_callback/webhook_router.py +387 -0
  114. migrai-1.3.0/openhands/app_server/sandbox/README.md +21 -0
  115. migrai-1.3.0/openhands/app_server/sandbox/docker_sandbox_service.py +791 -0
  116. migrai-1.3.0/openhands/app_server/sandbox/docker_sandbox_spec_service.py +150 -0
  117. migrai-1.3.0/openhands/app_server/sandbox/kubernetes_sandbox_service.py +3365 -0
  118. migrai-1.3.0/openhands/app_server/sandbox/kubernetes_sandbox_spec_service.py +130 -0
  119. migrai-1.3.0/openhands/app_server/sandbox/pool/DESIGN.md +792 -0
  120. migrai-1.3.0/openhands/app_server/sandbox/pool/__init__.py +103 -0
  121. migrai-1.3.0/openhands/app_server/sandbox/pool/circuit_breaker.py +645 -0
  122. migrai-1.3.0/openhands/app_server/sandbox/pool/kubernetes_sandbox_pool_manager.py +7137 -0
  123. migrai-1.3.0/openhands/app_server/sandbox/pool/redis_sandbox_pool_coordinator.py +1541 -0
  124. migrai-1.3.0/openhands/app_server/sandbox/pool/sandbox_pool_config.py +229 -0
  125. migrai-1.3.0/openhands/app_server/sandbox/pool/sandbox_pool_manager.py +630 -0
  126. migrai-1.3.0/openhands/app_server/sandbox/pool/sandbox_pool_state.py +278 -0
  127. migrai-1.3.0/openhands/app_server/sandbox/preset_sandbox_spec_service.py +87 -0
  128. migrai-1.3.0/openhands/app_server/sandbox/process_sandbox_service.py +734 -0
  129. migrai-1.3.0/openhands/app_server/sandbox/process_sandbox_spec_service.py +48 -0
  130. migrai-1.3.0/openhands/app_server/sandbox/remote_sandbox_service.py +843 -0
  131. migrai-1.3.0/openhands/app_server/sandbox/remote_sandbox_spec_service.py +50 -0
  132. migrai-1.3.0/openhands/app_server/sandbox/sandbox_models.py +99 -0
  133. migrai-1.3.0/openhands/app_server/sandbox/sandbox_router.py +424 -0
  134. migrai-1.3.0/openhands/app_server/sandbox/sandbox_service.py +284 -0
  135. migrai-1.3.0/openhands/app_server/sandbox/sandbox_spec_models.py +22 -0
  136. migrai-1.3.0/openhands/app_server/sandbox/sandbox_spec_router.py +51 -0
  137. migrai-1.3.0/openhands/app_server/sandbox/sandbox_spec_service.py +119 -0
  138. migrai-1.3.0/openhands/app_server/services/README.md +19 -0
  139. migrai-1.3.0/openhands/app_server/services/db_session_injector.py +319 -0
  140. migrai-1.3.0/openhands/app_server/services/httpx_client_injector.py +44 -0
  141. migrai-1.3.0/openhands/app_server/services/injector.py +49 -0
  142. migrai-1.3.0/openhands/app_server/services/jwt_service.py +270 -0
  143. migrai-1.3.0/openhands/app_server/task_analysis/__init__.py +43 -0
  144. migrai-1.3.0/openhands/app_server/task_analysis/parallel_exploration.py +430 -0
  145. migrai-1.3.0/openhands/app_server/task_analysis/task_analysis_router.py +494 -0
  146. migrai-1.3.0/openhands/app_server/user/README.md +21 -0
  147. migrai-1.3.0/openhands/app_server/user/auth_user_context.py +119 -0
  148. migrai-1.3.0/openhands/app_server/user/specifiy_user_context.py +56 -0
  149. migrai-1.3.0/openhands/app_server/user/user_context.py +68 -0
  150. migrai-1.3.0/openhands/app_server/user/user_models.py +13 -0
  151. migrai-1.3.0/openhands/app_server/user/user_router.py +23 -0
  152. migrai-1.3.0/openhands/app_server/utils/README.md +20 -0
  153. migrai-1.3.0/openhands/app_server/utils/agent_proxy_paths.py +34 -0
  154. migrai-1.3.0/openhands/app_server/utils/docker_utils.py +48 -0
  155. migrai-1.3.0/openhands/app_server/utils/encryption_key.py +65 -0
  156. migrai-1.3.0/openhands/app_server/utils/import_utils.py +78 -0
  157. migrai-1.3.0/openhands/app_server/utils/llm_metadata.py +88 -0
  158. migrai-1.3.0/openhands/app_server/utils/process_sandbox_paths.py +87 -0
  159. migrai-1.3.0/openhands/app_server/utils/sql_utils.py +104 -0
  160. migrai-1.3.0/openhands/app_server/v1_router.py +20 -0
  161. migrai-1.3.0/openhands/app_server/web_client/default_web_client_config_injector.py +58 -0
  162. migrai-1.3.0/openhands/app_server/web_client/web_client_config_injector.py +10 -0
  163. migrai-1.3.0/openhands/app_server/web_client/web_client_models.py +32 -0
  164. migrai-1.3.0/openhands/app_server/web_client/web_client_router.py +19 -0
  165. migrai-1.3.0/openhands/cli/__init__.py +5 -0
  166. migrai-1.3.0/openhands/cli/auth/__init__.py +36 -0
  167. migrai-1.3.0/openhands/cli/auth/commands.py +424 -0
  168. migrai-1.3.0/openhands/cli/auth/credentials.py +211 -0
  169. migrai-1.3.0/openhands/cli/auth/device_flow.py +427 -0
  170. migrai-1.3.0/openhands/cli/llm_bootstrap.py +105 -0
  171. migrai-1.3.0/openhands/cli/main.py +150 -0
  172. migrai-1.3.0/openhands/cli/serve.py +36 -0
  173. migrai-1.3.0/openhands/controller/__init__.py +5 -0
  174. migrai-1.3.0/openhands/controller/action_parser.py +85 -0
  175. migrai-1.3.0/openhands/controller/advanced_features_integration.py +457 -0
  176. migrai-1.3.0/openhands/controller/agent.py +242 -0
  177. migrai-1.3.0/openhands/controller/agent_controller.py +1869 -0
  178. migrai-1.3.0/openhands/controller/intelligent_retry.py +43 -0
  179. migrai-1.3.0/openhands/controller/replay.py +105 -0
  180. migrai-1.3.0/openhands/controller/state/control_flags.py +102 -0
  181. migrai-1.3.0/openhands/controller/state/state.py +730 -0
  182. migrai-1.3.0/openhands/controller/state/state_tracker.py +461 -0
  183. migrai-1.3.0/openhands/controller/stuck.py +602 -0
  184. migrai-1.3.0/openhands/core/config/README.md +101 -0
  185. migrai-1.3.0/openhands/core/config/__init__.py +55 -0
  186. migrai-1.3.0/openhands/core/config/advanced_features_config.py +99 -0
  187. migrai-1.3.0/openhands/core/config/agent_config.py +172 -0
  188. migrai-1.3.0/openhands/core/config/arg_utils.py +291 -0
  189. migrai-1.3.0/openhands/core/config/condenser_config.py +319 -0
  190. migrai-1.3.0/openhands/core/config/config_utils.py +70 -0
  191. migrai-1.3.0/openhands/core/config/extended_config.py +48 -0
  192. migrai-1.3.0/openhands/core/config/kubernetes_config.py +107 -0
  193. migrai-1.3.0/openhands/core/config/llm_config.py +205 -0
  194. migrai-1.3.0/openhands/core/config/mcp_config.py +482 -0
  195. migrai-1.3.0/openhands/core/config/model_routing_config.py +46 -0
  196. migrai-1.3.0/openhands/core/config/openhands_config.py +206 -0
  197. migrai-1.3.0/openhands/core/config/runtime_pool_config.py +103 -0
  198. migrai-1.3.0/openhands/core/config/sandbox_config.py +134 -0
  199. migrai-1.3.0/openhands/core/config/security_config.py +42 -0
  200. migrai-1.3.0/openhands/core/config/utils.py +951 -0
  201. migrai-1.3.0/openhands/core/const/guide_url.py +8 -0
  202. migrai-1.3.0/openhands/core/download.py +9 -0
  203. migrai-1.3.0/openhands/core/exceptions.py +251 -0
  204. migrai-1.3.0/openhands/core/logger.py +625 -0
  205. migrai-1.3.0/openhands/core/loop.py +54 -0
  206. migrai-1.3.0/openhands/core/main.py +397 -0
  207. migrai-1.3.0/openhands/core/message.py +185 -0
  208. migrai-1.3.0/openhands/core/message_format.md +96 -0
  209. migrai-1.3.0/openhands/core/message_utils.py +59 -0
  210. migrai-1.3.0/openhands/core/schema/__init__.py +9 -0
  211. migrai-1.3.0/openhands/core/schema/action.py +124 -0
  212. migrai-1.3.0/openhands/core/schema/agent.py +58 -0
  213. migrai-1.3.0/openhands/core/schema/exit_reason.py +14 -0
  214. migrai-1.3.0/openhands/core/schema/observation.py +82 -0
  215. migrai-1.3.0/openhands/core/setup.py +303 -0
  216. migrai-1.3.0/openhands/critic/__init__.py +4 -0
  217. migrai-1.3.0/openhands/critic/base.py +27 -0
  218. migrai-1.3.0/openhands/critic/finish_critic.py +26 -0
  219. migrai-1.3.0/openhands/events/__init__.py +11 -0
  220. migrai-1.3.0/openhands/events/action/__init__.py +61 -0
  221. migrai-1.3.0/openhands/events/action/action.py +23 -0
  222. migrai-1.3.0/openhands/events/action/agent.py +242 -0
  223. migrai-1.3.0/openhands/events/action/browse.py +48 -0
  224. migrai-1.3.0/openhands/events/action/commands.py +64 -0
  225. migrai-1.3.0/openhands/events/action/empty.py +15 -0
  226. migrai-1.3.0/openhands/events/action/feedback.py +84 -0
  227. migrai-1.3.0/openhands/events/action/files.py +138 -0
  228. migrai-1.3.0/openhands/events/action/mcp.py +32 -0
  229. migrai-1.3.0/openhands/events/action/message.py +66 -0
  230. migrai-1.3.0/openhands/events/action/publish.py +85 -0
  231. migrai-1.3.0/openhands/events/action/secrets.py +40 -0
  232. migrai-1.3.0/openhands/events/async_event_store_wrapper.py +23 -0
  233. migrai-1.3.0/openhands/events/event.py +132 -0
  234. migrai-1.3.0/openhands/events/event_filter.py +98 -0
  235. migrai-1.3.0/openhands/events/event_store.py +183 -0
  236. migrai-1.3.0/openhands/events/event_store_abc.py +111 -0
  237. migrai-1.3.0/openhands/events/nested_event_store.py +101 -0
  238. migrai-1.3.0/openhands/events/observation/__init__.py +71 -0
  239. migrai-1.3.0/openhands/events/observation/advanced_features.py +164 -0
  240. migrai-1.3.0/openhands/events/observation/agent.py +138 -0
  241. migrai-1.3.0/openhands/events/observation/browse.py +56 -0
  242. migrai-1.3.0/openhands/events/observation/commands.py +231 -0
  243. migrai-1.3.0/openhands/events/observation/delegate.py +22 -0
  244. migrai-1.3.0/openhands/events/observation/empty.py +17 -0
  245. migrai-1.3.0/openhands/events/observation/error.py +23 -0
  246. migrai-1.3.0/openhands/events/observation/file_download.py +21 -0
  247. migrai-1.3.0/openhands/events/observation/files.py +195 -0
  248. migrai-1.3.0/openhands/events/observation/loop_recovery.py +18 -0
  249. migrai-1.3.0/openhands/events/observation/mcp.py +20 -0
  250. migrai-1.3.0/openhands/events/observation/observation.py +15 -0
  251. migrai-1.3.0/openhands/events/observation/reject.py +15 -0
  252. migrai-1.3.0/openhands/events/observation/retry.py +28 -0
  253. migrai-1.3.0/openhands/events/observation/secrets.py +48 -0
  254. migrai-1.3.0/openhands/events/observation/success.py +15 -0
  255. migrai-1.3.0/openhands/events/observation/task_tracking.py +18 -0
  256. migrai-1.3.0/openhands/events/recall_type.py +11 -0
  257. migrai-1.3.0/openhands/events/serialization/__init__.py +19 -0
  258. migrai-1.3.0/openhands/events/serialization/action.py +161 -0
  259. migrai-1.3.0/openhands/events/serialization/event.py +180 -0
  260. migrai-1.3.0/openhands/events/serialization/observation.py +163 -0
  261. migrai-1.3.0/openhands/events/serialization/utils.py +20 -0
  262. migrai-1.3.0/openhands/events/stream.py +292 -0
  263. migrai-1.3.0/openhands/events/tool.py +11 -0
  264. migrai-1.3.0/openhands/events/utils.py +61 -0
  265. migrai-1.3.0/openhands/experiments/experiment_manager.py +72 -0
  266. migrai-1.3.0/openhands/integrations/azure_devops/__init__.py +5 -0
  267. migrai-1.3.0/openhands/integrations/azure_devops/azure_devops_service.py +275 -0
  268. migrai-1.3.0/openhands/integrations/azure_devops/service/__init__.py +1 -0
  269. migrai-1.3.0/openhands/integrations/azure_devops/service/base.py +67 -0
  270. migrai-1.3.0/openhands/integrations/azure_devops/service/branches.py +195 -0
  271. migrai-1.3.0/openhands/integrations/azure_devops/service/features.py +223 -0
  272. migrai-1.3.0/openhands/integrations/azure_devops/service/prs.py +321 -0
  273. migrai-1.3.0/openhands/integrations/azure_devops/service/repos.py +178 -0
  274. migrai-1.3.0/openhands/integrations/azure_devops/service/resolver.py +166 -0
  275. migrai-1.3.0/openhands/integrations/azure_devops/service/work_items.py +129 -0
  276. migrai-1.3.0/openhands/integrations/bitbucket/bitbucket_service.py +93 -0
  277. migrai-1.3.0/openhands/integrations/bitbucket/service/__init__.py +13 -0
  278. migrai-1.3.0/openhands/integrations/bitbucket/service/base.py +282 -0
  279. migrai-1.3.0/openhands/integrations/bitbucket/service/branches.py +116 -0
  280. migrai-1.3.0/openhands/integrations/bitbucket/service/features.py +45 -0
  281. migrai-1.3.0/openhands/integrations/bitbucket/service/prs.py +100 -0
  282. migrai-1.3.0/openhands/integrations/bitbucket/service/repos.py +262 -0
  283. migrai-1.3.0/openhands/integrations/forgejo/__init__.py +3 -0
  284. migrai-1.3.0/openhands/integrations/forgejo/forgejo_service.py +56 -0
  285. migrai-1.3.0/openhands/integrations/forgejo/service/__init__.py +15 -0
  286. migrai-1.3.0/openhands/integrations/forgejo/service/base.py +248 -0
  287. migrai-1.3.0/openhands/integrations/forgejo/service/branches.py +74 -0
  288. migrai-1.3.0/openhands/integrations/forgejo/service/features.py +123 -0
  289. migrai-1.3.0/openhands/integrations/forgejo/service/prs.py +111 -0
  290. migrai-1.3.0/openhands/integrations/forgejo/service/repos.py +109 -0
  291. migrai-1.3.0/openhands/integrations/forgejo/service/resolver.py +137 -0
  292. migrai-1.3.0/openhands/integrations/github/github_service.py +104 -0
  293. migrai-1.3.0/openhands/integrations/github/queries.py +153 -0
  294. migrai-1.3.0/openhands/integrations/github/service/__init__.py +17 -0
  295. migrai-1.3.0/openhands/integrations/github/service/base.py +170 -0
  296. migrai-1.3.0/openhands/integrations/github/service/branches_prs.py +161 -0
  297. migrai-1.3.0/openhands/integrations/github/service/features.py +177 -0
  298. migrai-1.3.0/openhands/integrations/github/service/prs.py +117 -0
  299. migrai-1.3.0/openhands/integrations/github/service/repos.py +304 -0
  300. migrai-1.3.0/openhands/integrations/github/service/resolver.py +225 -0
  301. migrai-1.3.0/openhands/integrations/gitlab/gitlab_service.py +108 -0
  302. migrai-1.3.0/openhands/integrations/gitlab/service/__init__.py +17 -0
  303. migrai-1.3.0/openhands/integrations/gitlab/service/base.py +178 -0
  304. migrai-1.3.0/openhands/integrations/gitlab/service/branches.py +107 -0
  305. migrai-1.3.0/openhands/integrations/gitlab/service/features.py +207 -0
  306. migrai-1.3.0/openhands/integrations/gitlab/service/prs.py +111 -0
  307. migrai-1.3.0/openhands/integrations/gitlab/service/repos.py +177 -0
  308. migrai-1.3.0/openhands/integrations/gitlab/service/resolver.py +134 -0
  309. migrai-1.3.0/openhands/integrations/protocols/http_client.py +99 -0
  310. migrai-1.3.0/openhands/integrations/provider.py +821 -0
  311. migrai-1.3.0/openhands/integrations/service_types.py +574 -0
  312. migrai-1.3.0/openhands/integrations/templates/resolver/azure_devops/issue_conversation_instructions.j2 +41 -0
  313. migrai-1.3.0/openhands/integrations/templates/resolver/azure_devops/issue_prompt.j2 +5 -0
  314. migrai-1.3.0/openhands/integrations/templates/resolver/azure_devops/pr_update_conversation_instructions.j2 +38 -0
  315. migrai-1.3.0/openhands/integrations/templates/resolver/azure_devops/pr_update_prompt.j2 +1 -0
  316. migrai-1.3.0/openhands/integrations/templates/resolver/bitbucket/issue_conversation_instructions.j2 +39 -0
  317. migrai-1.3.0/openhands/integrations/templates/resolver/bitbucket/issue_prompt.j2 +5 -0
  318. migrai-1.3.0/openhands/integrations/templates/resolver/bitbucket/pr_update_conversation_instructions.j2 +38 -0
  319. migrai-1.3.0/openhands/integrations/templates/resolver/bitbucket/pr_update_prompt.j2 +1 -0
  320. migrai-1.3.0/openhands/integrations/templates/resolver/discord/user_message_conversation_instructions.j2 +17 -0
  321. migrai-1.3.0/openhands/integrations/templates/resolver/github/issue_conversation_instructions.j2 +41 -0
  322. migrai-1.3.0/openhands/integrations/templates/resolver/github/issue_prompt.j2 +5 -0
  323. migrai-1.3.0/openhands/integrations/templates/resolver/github/pr_update_conversation_instructions.j2 +38 -0
  324. migrai-1.3.0/openhands/integrations/templates/resolver/github/pr_update_prompt.j2 +1 -0
  325. migrai-1.3.0/openhands/integrations/templates/resolver/gitlab/issue_conversation_instructions.j2 +41 -0
  326. migrai-1.3.0/openhands/integrations/templates/resolver/gitlab/issue_prompt.j2 +5 -0
  327. migrai-1.3.0/openhands/integrations/templates/resolver/gitlab/mr_update_conversation_instructions.j2 +37 -0
  328. migrai-1.3.0/openhands/integrations/templates/resolver/gitlab/mr_update_prompt.j2 +1 -0
  329. migrai-1.3.0/openhands/integrations/templates/resolver/jira/jira_existing_conversation.j2 +9 -0
  330. migrai-1.3.0/openhands/integrations/templates/resolver/jira/jira_instructions.j2 +14 -0
  331. migrai-1.3.0/openhands/integrations/templates/resolver/jira/jira_new_conversation.j2 +7 -0
  332. migrai-1.3.0/openhands/integrations/templates/resolver/jira_dc/jira_dc_existing_conversation.j2 +9 -0
  333. migrai-1.3.0/openhands/integrations/templates/resolver/jira_dc/jira_dc_instructions.j2 +14 -0
  334. migrai-1.3.0/openhands/integrations/templates/resolver/jira_dc/jira_dc_new_conversation.j2 +7 -0
  335. migrai-1.3.0/openhands/integrations/templates/resolver/linear/linear_existing_conversation.j2 +9 -0
  336. migrai-1.3.0/openhands/integrations/templates/resolver/linear/linear_instructions.j2 +14 -0
  337. migrai-1.3.0/openhands/integrations/templates/resolver/linear/linear_new_conversation.j2 +7 -0
  338. migrai-1.3.0/openhands/integrations/templates/resolver/slack/user_message_conversation_instructions.j2 +17 -0
  339. migrai-1.3.0/openhands/integrations/templates/resolver/summary_prompt.j2 +9 -0
  340. migrai-1.3.0/openhands/integrations/templates/resolver/telegram/user_message_conversation_instructions.j2 +13 -0
  341. migrai-1.3.0/openhands/integrations/templates/resolver/whatsapp/user_message_conversation_instructions.j2 +5 -0
  342. migrai-1.3.0/openhands/integrations/templates/suggested_task/failing_checks_prompt.j2 +6 -0
  343. migrai-1.3.0/openhands/integrations/templates/suggested_task/merge_conflict_prompt.j2 +4 -0
  344. migrai-1.3.0/openhands/integrations/templates/suggested_task/open_issue_prompt.j2 +4 -0
  345. migrai-1.3.0/openhands/integrations/templates/suggested_task/unresolved_comments_prompt.j2 +5 -0
  346. migrai-1.3.0/openhands/integrations/utils.py +85 -0
  347. migrai-1.3.0/openhands/integrations/vscode/openhands-vscode-0.0.1.vsix +0 -0
  348. migrai-1.3.0/openhands/integrations/vscode/out/extension.js +331 -0
  349. migrai-1.3.0/openhands/integrations/vscode/out/extension.js.map +1 -0
  350. migrai-1.3.0/openhands/integrations/vscode/out/test/runTest.js +55 -0
  351. migrai-1.3.0/openhands/integrations/vscode/out/test/runTest.js.map +1 -0
  352. migrai-1.3.0/openhands/integrations/vscode/out/test/suite/extension.test.js +677 -0
  353. migrai-1.3.0/openhands/integrations/vscode/out/test/suite/extension.test.js.map +1 -0
  354. migrai-1.3.0/openhands/integrations/vscode/out/test/suite/index.js +71 -0
  355. migrai-1.3.0/openhands/integrations/vscode/out/test/suite/index.js.map +1 -0
  356. migrai-1.3.0/openhands/integrations/vscode/package-lock.json +8277 -0
  357. migrai-1.3.0/openhands/io/__init__.py +10 -0
  358. migrai-1.3.0/openhands/io/io.py +37 -0
  359. migrai-1.3.0/openhands/io/json.py +74 -0
  360. migrai-1.3.0/openhands/learning/__init__.py +58 -0
  361. migrai-1.3.0/openhands/learning/cache.py +455 -0
  362. migrai-1.3.0/openhands/learning/config.py +80 -0
  363. migrai-1.3.0/openhands/learning/entry.py +169 -0
  364. migrai-1.3.0/openhands/learning/manager.py +633 -0
  365. migrai-1.3.0/openhands/learning/store.py +370 -0
  366. migrai-1.3.0/openhands/linter/__init__.py +11 -0
  367. migrai-1.3.0/openhands/llm/__init__.py +5 -0
  368. migrai-1.3.0/openhands/llm/async_llm.py +154 -0
  369. migrai-1.3.0/openhands/llm/bedrock.py +39 -0
  370. migrai-1.3.0/openhands/llm/debug_mixin.py +80 -0
  371. migrai-1.3.0/openhands/llm/fn_call_converter.py +1021 -0
  372. migrai-1.3.0/openhands/llm/llm.py +1214 -0
  373. migrai-1.3.0/openhands/llm/llm_registry.py +190 -0
  374. migrai-1.3.0/openhands/llm/llm_utils.py +51 -0
  375. migrai-1.3.0/openhands/llm/message_formatter.py +569 -0
  376. migrai-1.3.0/openhands/llm/metrics.py +284 -0
  377. migrai-1.3.0/openhands/llm/model_features.py +200 -0
  378. migrai-1.3.0/openhands/llm/retry_mixin.py +107 -0
  379. migrai-1.3.0/openhands/llm/router/README.md +39 -0
  380. migrai-1.3.0/openhands/llm/router/__init__.py +8 -0
  381. migrai-1.3.0/openhands/llm/router/base.py +171 -0
  382. migrai-1.3.0/openhands/llm/router/rule_based/impl.py +81 -0
  383. migrai-1.3.0/openhands/llm/streaming_llm.py +139 -0
  384. migrai-1.3.0/openhands/llm/tool_names.py +16 -0
  385. migrai-1.3.0/openhands/mcp/__init__.py +21 -0
  386. migrai-1.3.0/openhands/mcp/client.py +178 -0
  387. migrai-1.3.0/openhands/mcp/error_collector.py +78 -0
  388. migrai-1.3.0/openhands/mcp/tool.py +23 -0
  389. migrai-1.3.0/openhands/mcp/utils.py +394 -0
  390. migrai-1.3.0/openhands/mcp/vision.py +243 -0
  391. migrai-1.3.0/openhands/memory/README.md +18 -0
  392. migrai-1.3.0/openhands/memory/__init__.py +0 -0
  393. migrai-1.3.0/openhands/memory/condenser/__init__.py +15 -0
  394. migrai-1.3.0/openhands/memory/condenser/condenser.py +193 -0
  395. migrai-1.3.0/openhands/memory/condenser/impl/__init__.py +41 -0
  396. migrai-1.3.0/openhands/memory/condenser/impl/amortized_forgetting_condenser.py +69 -0
  397. migrai-1.3.0/openhands/memory/condenser/impl/browser_output_condenser.py +49 -0
  398. migrai-1.3.0/openhands/memory/condenser/impl/conversation_window_condenser.py +188 -0
  399. migrai-1.3.0/openhands/memory/condenser/impl/llm_attention_condenser.py +140 -0
  400. migrai-1.3.0/openhands/memory/condenser/impl/llm_summarizing_condenser.py +182 -0
  401. migrai-1.3.0/openhands/memory/condenser/impl/no_op_condenser.py +22 -0
  402. migrai-1.3.0/openhands/memory/condenser/impl/observation_masking_condenser.py +39 -0
  403. migrai-1.3.0/openhands/memory/condenser/impl/pipeline.py +50 -0
  404. migrai-1.3.0/openhands/memory/condenser/impl/recent_events_condenser.py +31 -0
  405. migrai-1.3.0/openhands/memory/condenser/impl/structured_summary_condenser.py +329 -0
  406. migrai-1.3.0/openhands/memory/conversation_memory.py +980 -0
  407. migrai-1.3.0/openhands/memory/hierarchical/ARCHITECTURE.md +460 -0
  408. migrai-1.3.0/openhands/memory/hierarchical/INTEGRATION_GUIDE.md +604 -0
  409. migrai-1.3.0/openhands/memory/hierarchical/README.md +359 -0
  410. migrai-1.3.0/openhands/memory/hierarchical/__init__.py +34 -0
  411. migrai-1.3.0/openhands/memory/hierarchical/archival_memory.py +397 -0
  412. migrai-1.3.0/openhands/memory/hierarchical/compression.py +292 -0
  413. migrai-1.3.0/openhands/memory/hierarchical/example_usage.py +182 -0
  414. migrai-1.3.0/openhands/memory/hierarchical/main_memory.py +214 -0
  415. migrai-1.3.0/openhands/memory/hierarchical/memory_manager.py +378 -0
  416. migrai-1.3.0/openhands/memory/hierarchical/types.py +169 -0
  417. migrai-1.3.0/openhands/memory/hierarchical/working_memory.py +216 -0
  418. migrai-1.3.0/openhands/memory/memory.py +470 -0
  419. migrai-1.3.0/openhands/memory/view.py +96 -0
  420. migrai-1.3.0/openhands/microagent/__init__.py +16 -0
  421. migrai-1.3.0/openhands/microagent/microagent.py +344 -0
  422. migrai-1.3.0/openhands/microagent/prompts/generate_remember_prompt.j2 +21 -0
  423. migrai-1.3.0/openhands/microagent/types.py +59 -0
  424. migrai-1.3.0/openhands/py.typed +0 -0
  425. migrai-1.3.0/openhands/reasoning/__init__.py +17 -0
  426. migrai-1.3.0/openhands/reasoning/mcts/README.md +237 -0
  427. migrai-1.3.0/openhands/reasoning/mcts/__init__.py +69 -0
  428. migrai-1.3.0/openhands/reasoning/mcts/cache.py +126 -0
  429. migrai-1.3.0/openhands/reasoning/mcts/confidence.py +409 -0
  430. migrai-1.3.0/openhands/reasoning/mcts/config.py +183 -0
  431. migrai-1.3.0/openhands/reasoning/mcts/evaluator.py +476 -0
  432. migrai-1.3.0/openhands/reasoning/mcts/example_usage.py +100 -0
  433. migrai-1.3.0/openhands/reasoning/mcts/fallback.py +193 -0
  434. migrai-1.3.0/openhands/reasoning/mcts/integration.py +687 -0
  435. migrai-1.3.0/openhands/reasoning/mcts/logging.py +166 -0
  436. migrai-1.3.0/openhands/reasoning/mcts/metrics.py +103 -0
  437. migrai-1.3.0/openhands/reasoning/mcts/node.py +159 -0
  438. migrai-1.3.0/openhands/reasoning/mcts/router.py +142 -0
  439. migrai-1.3.0/openhands/reasoning/mcts/search.py +610 -0
  440. migrai-1.3.0/openhands/reasoning/mcts/tree.py +195 -0
  441. migrai-1.3.0/openhands/resolver/README.md +218 -0
  442. migrai-1.3.0/openhands/resolver/__init__.py +0 -0
  443. migrai-1.3.0/openhands/resolver/examples/openhands-resolver.yml +34 -0
  444. migrai-1.3.0/openhands/resolver/interfaces/azure_devops.py +427 -0
  445. migrai-1.3.0/openhands/resolver/interfaces/bitbucket.py +520 -0
  446. migrai-1.3.0/openhands/resolver/interfaces/forgejo.py +480 -0
  447. migrai-1.3.0/openhands/resolver/interfaces/github.py +637 -0
  448. migrai-1.3.0/openhands/resolver/interfaces/gitlab.py +610 -0
  449. migrai-1.3.0/openhands/resolver/interfaces/issue.py +125 -0
  450. migrai-1.3.0/openhands/resolver/interfaces/issue_definitions.py +415 -0
  451. migrai-1.3.0/openhands/resolver/io_utils.py +17 -0
  452. migrai-1.3.0/openhands/resolver/issue_handler_factory.py +178 -0
  453. migrai-1.3.0/openhands/resolver/issue_resolver.py +670 -0
  454. migrai-1.3.0/openhands/resolver/patching/README.md +4 -0
  455. migrai-1.3.0/openhands/resolver/patching/__init__.py +6 -0
  456. migrai-1.3.0/openhands/resolver/patching/apply.py +128 -0
  457. migrai-1.3.0/openhands/resolver/patching/exceptions.py +29 -0
  458. migrai-1.3.0/openhands/resolver/patching/patch.py +977 -0
  459. migrai-1.3.0/openhands/resolver/patching/snippets.py +64 -0
  460. migrai-1.3.0/openhands/resolver/prompts/guess_success/issue-success-check.jinja +21 -0
  461. migrai-1.3.0/openhands/resolver/prompts/guess_success/pr-feedback-check.jinja +27 -0
  462. migrai-1.3.0/openhands/resolver/prompts/guess_success/pr-review-check.jinja +24 -0
  463. migrai-1.3.0/openhands/resolver/prompts/guess_success/pr-thread-check.jinja +24 -0
  464. migrai-1.3.0/openhands/resolver/prompts/repo_instructions/all-hands-ai___openhands-resolver.txt +4 -0
  465. migrai-1.3.0/openhands/resolver/prompts/repo_instructions/all-hands-ai___openhands.txt +7 -0
  466. migrai-1.3.0/openhands/resolver/prompts/repo_instructions/rbren___rss-parser.txt +4 -0
  467. migrai-1.3.0/openhands/resolver/prompts/resolve/basic-conversation-instructions.jinja +7 -0
  468. migrai-1.3.0/openhands/resolver/prompts/resolve/basic-followup-conversation-instructions.jinja +16 -0
  469. migrai-1.3.0/openhands/resolver/prompts/resolve/basic-followup.jinja +13 -0
  470. migrai-1.3.0/openhands/resolver/prompts/resolve/basic-with-tests-conversation-instructions.jinja +11 -0
  471. migrai-1.3.0/openhands/resolver/prompts/resolve/basic-with-tests.jinja +5 -0
  472. migrai-1.3.0/openhands/resolver/prompts/resolve/basic.jinja +5 -0
  473. migrai-1.3.0/openhands/resolver/prompts/resolve/pr-changes-summary.jinja +3 -0
  474. migrai-1.3.0/openhands/resolver/resolve_issue.py +135 -0
  475. migrai-1.3.0/openhands/resolver/resolver_output.py +20 -0
  476. migrai-1.3.0/openhands/resolver/send_pull_request.py +839 -0
  477. migrai-1.3.0/openhands/resolver/utils.py +161 -0
  478. migrai-1.3.0/openhands/resolver/visualize_resolver_output.py +45 -0
  479. migrai-1.3.0/openhands/runtime/README.md +161 -0
  480. migrai-1.3.0/openhands/runtime/__init__.py +184 -0
  481. migrai-1.3.0/openhands/runtime/action_execution_server.py +1194 -0
  482. migrai-1.3.0/openhands/runtime/base.py +1448 -0
  483. migrai-1.3.0/openhands/runtime/browser/__init__.py +10 -0
  484. migrai-1.3.0/openhands/runtime/browser/base64.py +41 -0
  485. migrai-1.3.0/openhands/runtime/browser/browser_env.py +278 -0
  486. migrai-1.3.0/openhands/runtime/browser/utils.py +230 -0
  487. migrai-1.3.0/openhands/runtime/builder/__init__.py +11 -0
  488. migrai-1.3.0/openhands/runtime/builder/base.py +49 -0
  489. migrai-1.3.0/openhands/runtime/builder/docker.py +433 -0
  490. migrai-1.3.0/openhands/runtime/builder/remote.py +156 -0
  491. migrai-1.3.0/openhands/runtime/file_viewer_server.py +119 -0
  492. migrai-1.3.0/openhands/runtime/impl/__init__.py +24 -0
  493. migrai-1.3.0/openhands/runtime/impl/action_execution/action_execution_client.py +610 -0
  494. migrai-1.3.0/openhands/runtime/impl/cli/__init__.py +12 -0
  495. migrai-1.3.0/openhands/runtime/impl/cli/cli_runtime.py +981 -0
  496. migrai-1.3.0/openhands/runtime/impl/docker/containers.py +26 -0
  497. migrai-1.3.0/openhands/runtime/impl/docker/docker_runtime.py +926 -0
  498. migrai-1.3.0/openhands/runtime/impl/kubernetes/README.md +141 -0
  499. migrai-1.3.0/openhands/runtime/impl/kubernetes/kubernetes_runtime.py +1429 -0
  500. migrai-1.3.0/openhands/runtime/impl/local/__init__.py +12 -0
  501. migrai-1.3.0/openhands/runtime/impl/local/local_runtime.py +868 -0
  502. migrai-1.3.0/openhands/runtime/impl/remote/remote_runtime.py +633 -0
  503. migrai-1.3.0/openhands/runtime/mcp/config.json +6 -0
  504. migrai-1.3.0/openhands/runtime/mcp/proxy/README.md +71 -0
  505. migrai-1.3.0/openhands/runtime/mcp/proxy/__init__.py +12 -0
  506. migrai-1.3.0/openhands/runtime/mcp/proxy/manager.py +158 -0
  507. migrai-1.3.0/openhands/runtime/plugins/__init__.py +32 -0
  508. migrai-1.3.0/openhands/runtime/plugins/agent_skills/README.md +57 -0
  509. migrai-1.3.0/openhands/runtime/plugins/agent_skills/__init__.py +31 -0
  510. migrai-1.3.0/openhands/runtime/plugins/agent_skills/agentskills.py +52 -0
  511. migrai-1.3.0/openhands/runtime/plugins/agent_skills/file_editor/README.md +3 -0
  512. migrai-1.3.0/openhands/runtime/plugins/agent_skills/file_editor/__init__.py +15 -0
  513. migrai-1.3.0/openhands/runtime/plugins/agent_skills/file_ops/__init__.py +14 -0
  514. migrai-1.3.0/openhands/runtime/plugins/agent_skills/file_ops/file_ops.py +410 -0
  515. migrai-1.3.0/openhands/runtime/plugins/agent_skills/file_reader/__init__.py +14 -0
  516. migrai-1.3.0/openhands/runtime/plugins/agent_skills/file_reader/file_readers.py +252 -0
  517. migrai-1.3.0/openhands/runtime/plugins/agent_skills/repo_ops/__init__.py +14 -0
  518. migrai-1.3.0/openhands/runtime/plugins/agent_skills/repo_ops/repo_ops.py +18 -0
  519. migrai-1.3.0/openhands/runtime/plugins/agent_skills/utils/config.py +37 -0
  520. migrai-1.3.0/openhands/runtime/plugins/agent_skills/utils/dependency.py +18 -0
  521. migrai-1.3.0/openhands/runtime/plugins/jupyter/__init__.py +220 -0
  522. migrai-1.3.0/openhands/runtime/plugins/jupyter/execute_server.py +316 -0
  523. migrai-1.3.0/openhands/runtime/plugins/requirement.py +38 -0
  524. migrai-1.3.0/openhands/runtime/plugins/vscode/__init__.py +202 -0
  525. migrai-1.3.0/openhands/runtime/plugins/vscode/settings.json +8 -0
  526. migrai-1.3.0/openhands/runtime/pool/__init__.py +9 -0
  527. migrai-1.3.0/openhands/runtime/pool/kubernetes_pool_manager.py +145 -0
  528. migrai-1.3.0/openhands/runtime/pool/pool_state.py +187 -0
  529. migrai-1.3.0/openhands/runtime/pool/redis_pool_coordinator.py +168 -0
  530. migrai-1.3.0/openhands/runtime/runtime_status.py +32 -0
  531. migrai-1.3.0/openhands/runtime/utils/__init__.py +13 -0
  532. migrai-1.3.0/openhands/runtime/utils/bash.py +953 -0
  533. migrai-1.3.0/openhands/runtime/utils/bash_constants.py +14 -0
  534. migrai-1.3.0/openhands/runtime/utils/command.py +89 -0
  535. migrai-1.3.0/openhands/runtime/utils/edit.py +445 -0
  536. migrai-1.3.0/openhands/runtime/utils/file_viewer.py +150 -0
  537. migrai-1.3.0/openhands/runtime/utils/files.py +157 -0
  538. migrai-1.3.0/openhands/runtime/utils/git_changes.py +203 -0
  539. migrai-1.3.0/openhands/runtime/utils/git_diff.py +122 -0
  540. migrai-1.3.0/openhands/runtime/utils/git_handler.py +157 -0
  541. migrai-1.3.0/openhands/runtime/utils/log_capture.py +34 -0
  542. migrai-1.3.0/openhands/runtime/utils/log_streamer.py +72 -0
  543. migrai-1.3.0/openhands/runtime/utils/memory_monitor.py +269 -0
  544. migrai-1.3.0/openhands/runtime/utils/port_lock.py +275 -0
  545. migrai-1.3.0/openhands/runtime/utils/request.py +67 -0
  546. migrai-1.3.0/openhands/runtime/utils/runtime_build.py +487 -0
  547. migrai-1.3.0/openhands/runtime/utils/runtime_init.py +148 -0
  548. migrai-1.3.0/openhands/runtime/utils/runtime_templates/Dockerfile.j2 +384 -0
  549. migrai-1.3.0/openhands/runtime/utils/singleton.py +7 -0
  550. migrai-1.3.0/openhands/runtime/utils/system.py +75 -0
  551. migrai-1.3.0/openhands/runtime/utils/system_stats.py +88 -0
  552. migrai-1.3.0/openhands/runtime/utils/tenacity_stop.py +18 -0
  553. migrai-1.3.0/openhands/runtime/utils/vscode-extensions/hello-world/extension.js +16 -0
  554. migrai-1.3.0/openhands/runtime/utils/vscode-extensions/hello-world/package.json +23 -0
  555. migrai-1.3.0/openhands/runtime/utils/vscode-extensions/memory-monitor/README.md +48 -0
  556. migrai-1.3.0/openhands/runtime/utils/vscode-extensions/memory-monitor/extension.js +42 -0
  557. migrai-1.3.0/openhands/runtime/utils/vscode-extensions/memory-monitor/memory_monitor.js +343 -0
  558. migrai-1.3.0/openhands/runtime/utils/vscode-extensions/memory-monitor/package.json +50 -0
  559. migrai-1.3.0/openhands/runtime/utils/vscode-extensions/memory-monitor/process_monitor.js +143 -0
  560. migrai-1.3.0/openhands/runtime/utils/windows_bash.py +1499 -0
  561. migrai-1.3.0/openhands/runtime/utils/windows_exceptions.py +19 -0
  562. migrai-1.3.0/openhands/sdk_vision_fallback.py +560 -0
  563. migrai-1.3.0/openhands/security/README.md +130 -0
  564. migrai-1.3.0/openhands/security/__init__.py +7 -0
  565. migrai-1.3.0/openhands/security/analyzer.py +37 -0
  566. migrai-1.3.0/openhands/security/grayswan/__init__.py +3 -0
  567. migrai-1.3.0/openhands/security/grayswan/analyzer.py +202 -0
  568. migrai-1.3.0/openhands/security/grayswan/utils.py +145 -0
  569. migrai-1.3.0/openhands/security/invariant/__init__.py +5 -0
  570. migrai-1.3.0/openhands/security/invariant/analyzer.py +126 -0
  571. migrai-1.3.0/openhands/security/invariant/client.py +140 -0
  572. migrai-1.3.0/openhands/security/invariant/nodes.py +49 -0
  573. migrai-1.3.0/openhands/security/invariant/parser.py +102 -0
  574. migrai-1.3.0/openhands/security/invariant/policies.py +19 -0
  575. migrai-1.3.0/openhands/security/llm/__init__.py +7 -0
  576. migrai-1.3.0/openhands/security/llm/analyzer.py +42 -0
  577. migrai-1.3.0/openhands/security/options.py +10 -0
  578. migrai-1.3.0/openhands/self_improvement/README.md +325 -0
  579. migrai-1.3.0/openhands/self_improvement/__init__.py +47 -0
  580. migrai-1.3.0/openhands/self_improvement/example_usage.py +99 -0
  581. migrai-1.3.0/openhands/self_improvement/feedback.py +185 -0
  582. migrai-1.3.0/openhands/self_improvement/lesson_generator.py +207 -0
  583. migrai-1.3.0/openhands/self_improvement/microagent_formatter.py +197 -0
  584. migrai-1.3.0/openhands/self_improvement/org_injector.py +83 -0
  585. migrai-1.3.0/openhands/self_improvement/org_lessons.py +179 -0
  586. migrai-1.3.0/openhands/self_improvement/promotion.py +219 -0
  587. migrai-1.3.0/openhands/self_improvement/user_lessons.py +229 -0
  588. migrai-1.3.0/openhands/server/README.md +182 -0
  589. migrai-1.3.0/openhands/server/__init__.py +0 -0
  590. migrai-1.3.0/openhands/server/__main__.py +39 -0
  591. migrai-1.3.0/openhands/server/app.py +110 -0
  592. migrai-1.3.0/openhands/server/config/server_config.py +79 -0
  593. migrai-1.3.0/openhands/server/constants.py +11 -0
  594. migrai-1.3.0/openhands/server/conversation_manager/conversation_manager.py +175 -0
  595. migrai-1.3.0/openhands/server/conversation_manager/docker_nested_conversation_manager.py +656 -0
  596. migrai-1.3.0/openhands/server/conversation_manager/standalone_conversation_manager.py +1622 -0
  597. migrai-1.3.0/openhands/server/conversation_manager/utils.py +8 -0
  598. migrai-1.3.0/openhands/server/data_models/agent_loop_info.py +25 -0
  599. migrai-1.3.0/openhands/server/data_models/conversation_info.py +48 -0
  600. migrai-1.3.0/openhands/server/data_models/conversation_info_result_set.py +17 -0
  601. migrai-1.3.0/openhands/server/data_models/feedback.py +53 -0
  602. migrai-1.3.0/openhands/server/dependencies.py +32 -0
  603. migrai-1.3.0/openhands/server/file_config.py +147 -0
  604. migrai-1.3.0/openhands/server/files.py +18 -0
  605. migrai-1.3.0/openhands/server/listen.py +35 -0
  606. migrai-1.3.0/openhands/server/listen_socket.py +302 -0
  607. migrai-1.3.0/openhands/server/middleware.py +277 -0
  608. migrai-1.3.0/openhands/server/mock/README.md +10 -0
  609. migrai-1.3.0/openhands/server/mock/listen.py +75 -0
  610. migrai-1.3.0/openhands/server/monitoring.py +49 -0
  611. migrai-1.3.0/openhands/server/request_trace.py +106 -0
  612. migrai-1.3.0/openhands/server/routes/conversation.py +887 -0
  613. migrai-1.3.0/openhands/server/routes/feedback.py +75 -0
  614. migrai-1.3.0/openhands/server/routes/files.py +337 -0
  615. migrai-1.3.0/openhands/server/routes/git.py +435 -0
  616. migrai-1.3.0/openhands/server/routes/health.py +130 -0
  617. migrai-1.3.0/openhands/server/routes/manage_conversations.py +3252 -0
  618. migrai-1.3.0/openhands/server/routes/mcp.py +372 -0
  619. migrai-1.3.0/openhands/server/routes/oauth.py +257 -0
  620. migrai-1.3.0/openhands/server/routes/public.py +80 -0
  621. migrai-1.3.0/openhands/server/routes/secrets.py +356 -0
  622. migrai-1.3.0/openhands/server/routes/security.py +50 -0
  623. migrai-1.3.0/openhands/server/routes/self_improvement.py +469 -0
  624. migrai-1.3.0/openhands/server/routes/settings.py +301 -0
  625. migrai-1.3.0/openhands/server/routes/trajectory.py +58 -0
  626. migrai-1.3.0/openhands/server/services/conversation_service.py +443 -0
  627. migrai-1.3.0/openhands/server/services/conversation_stats.py +168 -0
  628. migrai-1.3.0/openhands/server/session/README.md +19 -0
  629. migrai-1.3.0/openhands/server/session/__init__.py +6 -0
  630. migrai-1.3.0/openhands/server/session/agent_session.py +1652 -0
  631. migrai-1.3.0/openhands/server/session/conversation.py +95 -0
  632. migrai-1.3.0/openhands/server/session/conversation_init_data.py +53 -0
  633. migrai-1.3.0/openhands/server/session/session.py +862 -0
  634. migrai-1.3.0/openhands/server/settings.py +64 -0
  635. migrai-1.3.0/openhands/server/shared.py +99 -0
  636. migrai-1.3.0/openhands/server/socketio_redis.py +37 -0
  637. migrai-1.3.0/openhands/server/static.py +42 -0
  638. migrai-1.3.0/openhands/server/types.py +61 -0
  639. migrai-1.3.0/openhands/server/user_auth/__init__.py +62 -0
  640. migrai-1.3.0/openhands/server/user_auth/default_user_auth.py +110 -0
  641. migrai-1.3.0/openhands/server/user_auth/user_auth.py +122 -0
  642. migrai-1.3.0/openhands/server/utils.py +123 -0
  643. migrai-1.3.0/openhands/storage/README.md +127 -0
  644. migrai-1.3.0/openhands/storage/__init__.py +61 -0
  645. migrai-1.3.0/openhands/storage/batched_web_hook.py +275 -0
  646. migrai-1.3.0/openhands/storage/chunked_uploader.py +444 -0
  647. migrai-1.3.0/openhands/storage/conversation/conversation_store.py +87 -0
  648. migrai-1.3.0/openhands/storage/conversation/conversation_validator.py +81 -0
  649. migrai-1.3.0/openhands/storage/conversation/file_conversation_store.py +122 -0
  650. migrai-1.3.0/openhands/storage/data_models/conversation_metadata.py +46 -0
  651. migrai-1.3.0/openhands/storage/data_models/conversation_metadata_result_set.py +9 -0
  652. migrai-1.3.0/openhands/storage/data_models/conversation_status.py +23 -0
  653. migrai-1.3.0/openhands/storage/data_models/secrets.py +233 -0
  654. migrai-1.3.0/openhands/storage/data_models/settings.py +207 -0
  655. migrai-1.3.0/openhands/storage/event_stream_recovery.py +303 -0
  656. migrai-1.3.0/openhands/storage/file_change_tracker.py +218 -0
  657. migrai-1.3.0/openhands/storage/files.py +29 -0
  658. migrai-1.3.0/openhands/storage/google_cloud.py +80 -0
  659. migrai-1.3.0/openhands/storage/local.py +71 -0
  660. migrai-1.3.0/openhands/storage/locations.py +42 -0
  661. migrai-1.3.0/openhands/storage/memory.py +60 -0
  662. migrai-1.3.0/openhands/storage/s3.py +199 -0
  663. migrai-1.3.0/openhands/storage/secrets/file_secrets_store.py +49 -0
  664. migrai-1.3.0/openhands/storage/secrets/secrets_store.py +36 -0
  665. migrai-1.3.0/openhands/storage/settings/file_settings_store.py +48 -0
  666. migrai-1.3.0/openhands/storage/settings/settings_store.py +36 -0
  667. migrai-1.3.0/openhands/storage/web_hook.py +122 -0
  668. migrai-1.3.0/openhands/storage/workspace_manifest.py +409 -0
  669. migrai-1.3.0/openhands/storage/workspace_sync.py +1334 -0
  670. migrai-1.3.0/openhands/utils/README.md +79 -0
  671. migrai-1.3.0/openhands/utils/async_utils.py +118 -0
  672. migrai-1.3.0/openhands/utils/chunk_localizer.py +101 -0
  673. migrai-1.3.0/openhands/utils/conversation_summary.py +158 -0
  674. migrai-1.3.0/openhands/utils/environment.py +58 -0
  675. migrai-1.3.0/openhands/utils/http_session.py +86 -0
  676. migrai-1.3.0/openhands/utils/image_processing.py +349 -0
  677. migrai-1.3.0/openhands/utils/import_utils.py +73 -0
  678. migrai-1.3.0/openhands/utils/llm.py +158 -0
  679. migrai-1.3.0/openhands/utils/prompt.py +187 -0
  680. migrai-1.3.0/openhands/utils/search_utils.py +32 -0
  681. migrai-1.3.0/openhands/utils/shutdown_listener.py +93 -0
  682. migrai-1.3.0/openhands/utils/tenacity_stop.py +11 -0
  683. migrai-1.3.0/openhands/utils/term_color.py +26 -0
  684. migrai-1.3.0/openhands/utils/utils.py +70 -0
  685. migrai-1.3.0/openhands/version.py +67 -0
  686. migrai-1.3.0/pyproject.toml +372 -0
  687. migrai-1.3.0/skills/README.md +160 -0
  688. migrai-1.3.0/skills/accessibility-wcag.md +240 -0
  689. migrai-1.3.0/skills/add_agent.md +40 -0
  690. migrai-1.3.0/skills/add_repo_inst.md +65 -0
  691. migrai-1.3.0/skills/address_pr_comments.md +19 -0
  692. migrai-1.3.0/skills/agent-builder.md +39 -0
  693. migrai-1.3.0/skills/agent_memory.md +32 -0
  694. migrai-1.3.0/skills/ai-ml-integration.md +375 -0
  695. migrai-1.3.0/skills/apf.md +413 -0
  696. migrai-1.3.0/skills/api-design.md +328 -0
  697. migrai-1.3.0/skills/app-proxy-browsing.md +159 -0
  698. migrai-1.3.0/skills/authentication.md +379 -0
  699. migrai-1.3.0/skills/azure_devops.md +52 -0
  700. migrai-1.3.0/skills/bitbucket.md +35 -0
  701. migrai-1.3.0/skills/ci-cd-basics.md +266 -0
  702. migrai-1.3.0/skills/code-review.md +54 -0
  703. migrai-1.3.0/skills/codereview-roasted.md +104 -0
  704. migrai-1.3.0/skills/daemon-commands.md +55 -0
  705. migrai-1.3.0/skills/database-basics.md +302 -0
  706. migrai-1.3.0/skills/default-tools.md +15 -0
  707. migrai-1.3.0/skills/dependencies.md +57 -0
  708. migrai-1.3.0/skills/dev-server-validation.md +248 -0
  709. migrai-1.3.0/skills/dev-server.md +576 -0
  710. migrai-1.3.0/skills/docker.md +31 -0
  711. migrai-1.3.0/skills/environment-setup.md +284 -0
  712. migrai-1.3.0/skills/error-handling-patterns.md +362 -0
  713. migrai-1.3.0/skills/error-recovery.md +69 -0
  714. migrai-1.3.0/skills/file-operations.md +51 -0
  715. migrai-1.3.0/skills/fix-py-line-too-long.md +39 -0
  716. migrai-1.3.0/skills/fix_test.md +23 -0
  717. migrai-1.3.0/skills/flarglebargle.md +11 -0
  718. migrai-1.3.0/skills/frontend.md +704 -0
  719. migrai-1.3.0/skills/git-workflow.md +66 -0
  720. migrai-1.3.0/skills/github.md +35 -0
  721. migrai-1.3.0/skills/gitlab.md +34 -0
  722. migrai-1.3.0/skills/graphql-patterns.md +363 -0
  723. migrai-1.3.0/skills/images.md +260 -0
  724. migrai-1.3.0/skills/internationalization.md +289 -0
  725. migrai-1.3.0/skills/kubernetes.md +50 -0
  726. migrai-1.3.0/skills/linting-formatting.md +329 -0
  727. migrai-1.3.0/skills/migrai-docs.md +176 -0
  728. migrai-1.3.0/skills/mobile-development.md +271 -0
  729. migrai-1.3.0/skills/npm.md +11 -0
  730. migrai-1.3.0/skills/observability.md +348 -0
  731. migrai-1.3.0/skills/onboarding.md +87 -0
  732. migrai-1.3.0/skills/orm-patterns.md +355 -0
  733. migrai-1.3.0/skills/pdflatex.md +36 -0
  734. migrai-1.3.0/skills/performance-optimization.md +330 -0
  735. migrai-1.3.0/skills/process-management.md +66 -0
  736. migrai-1.3.0/skills/project-migration-deploy.md +119 -0
  737. migrai-1.3.0/skills/project-migration-develop.md +88 -0
  738. migrai-1.3.0/skills/project-migration-onboard.md +113 -0
  739. migrai-1.3.0/skills/project-migration-qa.md +85 -0
  740. migrai-1.3.0/skills/project-migration-requirements.md +59 -0
  741. migrai-1.3.0/skills/project-traceability.md +58 -0
  742. migrai-1.3.0/skills/security.md +34 -0
  743. migrai-1.3.0/skills/ssh.md +137 -0
  744. migrai-1.3.0/skills/static-site-skill.md +71 -0
  745. migrai-1.3.0/skills/swift-linux.md +83 -0
  746. migrai-1.3.0/skills/testing-frameworks.md +258 -0
  747. migrai-1.3.0/skills/update_pr_description.md +21 -0
  748. migrai-1.3.0/skills/update_test.md +19 -0
  749. migrai-1.3.0/third_party/__init__.py +14 -0
  750. migrai-1.3.0/third_party/containers/e2b-sandbox/Dockerfile +19 -0
  751. migrai-1.3.0/third_party/containers/e2b-sandbox/README.md +15 -0
  752. migrai-1.3.0/third_party/containers/e2b-sandbox/e2b.toml +14 -0
  753. migrai-1.3.0/third_party/runtime/__init__.py +1 -0
  754. migrai-1.3.0/third_party/runtime/impl/__init__.py +1 -0
  755. migrai-1.3.0/third_party/runtime/impl/daytona/README.md +134 -0
  756. migrai-1.3.0/third_party/runtime/impl/daytona/__init__.py +7 -0
  757. migrai-1.3.0/third_party/runtime/impl/daytona/daytona_runtime.py +297 -0
  758. migrai-1.3.0/third_party/runtime/impl/e2b/README.md +35 -0
  759. migrai-1.3.0/third_party/runtime/impl/e2b/__init__.py +5 -0
  760. migrai-1.3.0/third_party/runtime/impl/e2b/e2b_runtime.py +402 -0
  761. migrai-1.3.0/third_party/runtime/impl/e2b/filestore.py +27 -0
  762. migrai-1.3.0/third_party/runtime/impl/e2b/sandbox.py +152 -0
  763. migrai-1.3.0/third_party/runtime/impl/modal/__init__.py +6 -0
  764. migrai-1.3.0/third_party/runtime/impl/modal/modal_runtime.py +298 -0
  765. migrai-1.3.0/third_party/runtime/impl/runloop/README.md +31 -0
  766. migrai-1.3.0/third_party/runtime/impl/runloop/__init__.py +5 -0
  767. 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
+ ```
@@ -0,0 +1,4 @@
1
+ from openhands.agenthub.browsing_agent.browsing_agent import BrowsingAgent
2
+ from openhands.controller.agent import Agent
3
+
4
+ Agent.register('BrowsingAgent', BrowsingAgent)