@elizaos/sweagent-root 2.0.0-alpha

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 (323) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +270 -0
  3. package/package.json +71 -0
  4. package/python/LICENSE +21 -0
  5. package/python/config/README.md +15 -0
  6. package/python/config/bash_only.yaml +222 -0
  7. package/python/config/benchmarks/250212_sweagent_heavy_sbl.yaml +188 -0
  8. package/python/config/benchmarks/250225_anthropic_filemap_simple_review.yaml +75 -0
  9. package/python/config/benchmarks/250522_anthropic_filemap_simple_review.yaml +92 -0
  10. package/python/config/benchmarks/250526_anthropic_filemap_simple_review_sbl.yaml +93 -0
  11. package/python/config/benchmarks/anthropic_filemap_multilingual.yaml +66 -0
  12. package/python/config/coding_challenge.yaml +104 -0
  13. package/python/config/default.yaml +69 -0
  14. package/python/config/default_backticks.yaml +69 -0
  15. package/python/config/default_mm_no_images.yaml +82 -0
  16. package/python/config/default_mm_with_images.yaml +83 -0
  17. package/python/config/demo/default.yaml +80 -0
  18. package/python/config/demo/no_instructions.yaml +69 -0
  19. package/python/config/demo/only_bash.yaml +60 -0
  20. package/python/config/exotic/default_shell.yaml +52 -0
  21. package/python/config/exotic/windowed_replace.yaml +125 -0
  22. package/python/config/exotic/windowed_replace_late_repro.yaml +127 -0
  23. package/python/config/human/human.yaml +24 -0
  24. package/python/config/human/human_demo.yaml +52 -0
  25. package/python/config/sweagent_0_7/07.yaml +101 -0
  26. package/python/config/sweagent_0_7/07_fcalling.yaml +100 -0
  27. package/python/config/sweagent_0_7/07_from_url.yaml +114 -0
  28. package/python/config/sweagent_0_7/07_thought_action.yaml +102 -0
  29. package/python/config/sweagent_0_7/07_thought_action_xml.yaml +96 -0
  30. package/python/mlc_config.json +44 -0
  31. package/python/pyproject.toml +262 -0
  32. package/python/sweagent/__init__.py +114 -0
  33. package/python/sweagent/__main__.py +4 -0
  34. package/python/sweagent/agent/__init__.py +0 -0
  35. package/python/sweagent/agent/action_sampler.py +317 -0
  36. package/python/sweagent/agent/agents.py +1294 -0
  37. package/python/sweagent/agent/extra/shell_agent.py +106 -0
  38. package/python/sweagent/agent/history_processors.py +399 -0
  39. package/python/sweagent/agent/hooks/__init__.py +0 -0
  40. package/python/sweagent/agent/hooks/abstract.py +139 -0
  41. package/python/sweagent/agent/hooks/status.py +34 -0
  42. package/python/sweagent/agent/models.py +896 -0
  43. package/python/sweagent/agent/problem_statement.py +312 -0
  44. package/python/sweagent/agent/reviewer.py +664 -0
  45. package/python/sweagent/environment/__init__.py +0 -0
  46. package/python/sweagent/environment/hooks/__init__.py +0 -0
  47. package/python/sweagent/environment/hooks/abstract.py +60 -0
  48. package/python/sweagent/environment/hooks/status.py +28 -0
  49. package/python/sweagent/environment/repo.py +219 -0
  50. package/python/sweagent/environment/swe_env.py +276 -0
  51. package/python/sweagent/exceptions.py +54 -0
  52. package/python/sweagent/inspector/README.md +6 -0
  53. package/python/sweagent/inspector/__init__.py +0 -0
  54. package/python/sweagent/inspector/favicon.ico +0 -0
  55. package/python/sweagent/inspector/fileViewer.js +354 -0
  56. package/python/sweagent/inspector/icons/computer.png +0 -0
  57. package/python/sweagent/inspector/icons/edit_icon.svg +11 -0
  58. package/python/sweagent/inspector/icons/swe-agent-logo-50.png +0 -0
  59. package/python/sweagent/inspector/icons/swellama_blue.png +0 -0
  60. package/python/sweagent/inspector/icons/swellama_brown.png +0 -0
  61. package/python/sweagent/inspector/icons/swellama_grey.png +0 -0
  62. package/python/sweagent/inspector/icons/swellama_tan.png +0 -0
  63. package/python/sweagent/inspector/index.html +25 -0
  64. package/python/sweagent/inspector/server.py +354 -0
  65. package/python/sweagent/inspector/static.py +169 -0
  66. package/python/sweagent/inspector/style.css +454 -0
  67. package/python/sweagent/run/__init__.py +0 -0
  68. package/python/sweagent/run/_progress.py +158 -0
  69. package/python/sweagent/run/batch_instances.py +419 -0
  70. package/python/sweagent/run/common.py +387 -0
  71. package/python/sweagent/run/compare_runs.py +123 -0
  72. package/python/sweagent/run/extract_pred.py +19 -0
  73. package/python/sweagent/run/hooks/__init__.py +0 -0
  74. package/python/sweagent/run/hooks/abstract.py +67 -0
  75. package/python/sweagent/run/hooks/apply_patch.py +106 -0
  76. package/python/sweagent/run/hooks/open_pr.py +244 -0
  77. package/python/sweagent/run/hooks/swe_bench_evaluate.py +113 -0
  78. package/python/sweagent/run/inspector_cli.py +493 -0
  79. package/python/sweagent/run/merge_predictions.py +64 -0
  80. package/python/sweagent/run/quick_stats.py +96 -0
  81. package/python/sweagent/run/remove_unfinished.py +63 -0
  82. package/python/sweagent/run/rich_test.py +91 -0
  83. package/python/sweagent/run/run.py +147 -0
  84. package/python/sweagent/run/run_batch.py +442 -0
  85. package/python/sweagent/run/run_replay.py +219 -0
  86. package/python/sweagent/run/run_shell.py +155 -0
  87. package/python/sweagent/run/run_single.py +225 -0
  88. package/python/sweagent/run/run_traj_to_demo.py +85 -0
  89. package/python/sweagent/tools/__init__.py +0 -0
  90. package/python/sweagent/tools/bundle.py +57 -0
  91. package/python/sweagent/tools/commands.py +220 -0
  92. package/python/sweagent/tools/parsing.py +619 -0
  93. package/python/sweagent/tools/tools.py +430 -0
  94. package/python/sweagent/tools/utils.py +108 -0
  95. package/python/sweagent/types.py +102 -0
  96. package/python/sweagent/utils/__init__.py +0 -0
  97. package/python/sweagent/utils/config.py +80 -0
  98. package/python/sweagent/utils/files.py +27 -0
  99. package/python/sweagent/utils/github.py +118 -0
  100. package/python/sweagent/utils/jinja_warnings.py +14 -0
  101. package/python/sweagent/utils/log.py +175 -0
  102. package/python/sweagent/utils/patch_formatter.py +152 -0
  103. package/python/sweagent/utils/serialization.py +45 -0
  104. package/python/tests/__init__.py +0 -0
  105. package/python/tests/conftest.py +191 -0
  106. package/python/tests/test_agent.py +258 -0
  107. package/python/tests/test_batch_instance.py +43 -0
  108. package/python/tests/test_commands/_interactive_dummy.py +35 -0
  109. package/python/tests/test_commands/interactive_dummy_wrapper.sh +29 -0
  110. package/python/tests/test_data/config_files/dummy_interactive.yaml +62 -0
  111. package/python/tests/test_data/data_sources/ctf/crypto/Katy/Dockerfile +20 -0
  112. package/python/tests/test_data/data_sources/ctf/crypto/Katy/README.md +13 -0
  113. package/python/tests/test_data/data_sources/ctf/crypto/Katy/challenge.json +12 -0
  114. package/python/tests/test_data/data_sources/ctf/crypto/Katy/customrandom.c +50 -0
  115. package/python/tests/test_data/data_sources/ctf/crypto/Katy/docker-compose.yml +14 -0
  116. package/python/tests/test_data/data_sources/ctf/crypto/Katy/release +0 -0
  117. package/python/tests/test_data/data_sources/ctf/crypto/Katy/server +0 -0
  118. package/python/tests/test_data/data_sources/ctf/crypto/Katy/solver.py +12 -0
  119. package/python/tests/test_data/data_sources/ctf/forensics/flash/README.md +16 -0
  120. package/python/tests/test_data/data_sources/ctf/forensics/flash/challenge.json +9 -0
  121. package/python/tests/test_data/data_sources/ctf/forensics/flash/flash_c8429a430278283c0e571baebca3d139.zip +0 -0
  122. package/python/tests/test_data/data_sources/ctf/misc/networking_1/README.md +15 -0
  123. package/python/tests/test_data/data_sources/ctf/misc/networking_1/challenge.json +10 -0
  124. package/python/tests/test_data/data_sources/ctf/misc/networking_1/networking.pcap +0 -0
  125. package/python/tests/test_data/data_sources/ctf/pwn/warmup/Dockerfile +28 -0
  126. package/python/tests/test_data/data_sources/ctf/pwn/warmup/README.md +14 -0
  127. package/python/tests/test_data/data_sources/ctf/pwn/warmup/challenge.json +14 -0
  128. package/python/tests/test_data/data_sources/ctf/pwn/warmup/docker-compose.yml +14 -0
  129. package/python/tests/test_data/data_sources/ctf/pwn/warmup/flag.txt +1 -0
  130. package/python/tests/test_data/data_sources/ctf/pwn/warmup/warmup +0 -0
  131. package/python/tests/test_data/data_sources/ctf/pwn/warmup/warmup.c +26 -0
  132. package/python/tests/test_data/data_sources/ctf/pwn/warmup/warmup.py +9 -0
  133. package/python/tests/test_data/data_sources/ctf/rev/rock/README.md +14 -0
  134. package/python/tests/test_data/data_sources/ctf/rev/rock/challenge.json +8 -0
  135. package/python/tests/test_data/data_sources/ctf/rev/rock/rock +0 -0
  136. package/python/tests/test_data/data_sources/ctf/rev/rock/rock.cpp +167 -0
  137. package/python/tests/test_data/data_sources/ctf/rev/rock/solution.cpp +24 -0
  138. package/python/tests/test_data/data_sources/ctf/rev/rock/test_solver/solution.py +6 -0
  139. package/python/tests/test_data/data_sources/ctf/rev/rock/test_solver/test.sh +10 -0
  140. package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/000-default.conf +18 -0
  141. package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/Dockerfile +20 -0
  142. package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/cgi/file.pl +38 -0
  143. package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/cgi/forms.pl +40 -0
  144. package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/cgi/hello.pl +11 -0
  145. package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/challenge.json +12 -0
  146. package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/docker-compose.yml +14 -0
  147. package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/flag +1 -0
  148. package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/index.html +11 -0
  149. package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/solution.txt +1 -0
  150. package/python/tests/test_data/data_sources/debug_20240322.json +1 -0
  151. package/python/tests/test_data/data_sources/expert_instances.yaml +16 -0
  152. package/python/tests/test_data/data_sources/human_eval.json +1 -0
  153. package/python/tests/test_data/data_sources/simple_instances.yaml +3 -0
  154. package/python/tests/test_data/data_sources/simple_instances_long.yaml +30 -0
  155. package/python/tests/test_data/data_sources/swe-bench-dev-easy.json +1 -0
  156. package/python/tests/test_data/data_sources/swe-bench-dev-easy_first_only.json +1 -0
  157. package/python/tests/test_data/data_sources/swe-bench-lite-test.json +1 -0
  158. package/python/tests/test_data/trajectories/gpt4__swe-agent-test-repo__default_from_url__t-0.00__p-0.95__c-3.00__install-1/6e44b9__sweagenttestrepo-1c2844.traj +342 -0
  159. package/python/tests/test_data/trajectories/gpt4__swe-agent-test-repo__default_from_url__t-0.00__p-0.95__c-3.00__install-1/solution_missing_colon.py +15 -0
  160. package/python/tests/test_data/trajectories/gpt4__swe-agent__test-repo__default_from_url__t-0.00__p-0.95__c-3.00__install-1/args.yaml +518 -0
  161. package/python/tests/test_data/trajectories/gpt4__swe-agent__test-repo__default_from_url__t-0.00__p-0.95__c-3.00__install-1/swe-agent__test-repo-i1.traj +124 -0
  162. package/python/tests/test_data/trajectories/gpt4__swe-bench-dev-easy_first_only__default__t-0.00__p-0.95__c-3.00__install-1/all_preds.jsonl +1 -0
  163. package/python/tests/test_data/trajectories/gpt4__swe-bench-dev-easy_first_only__default__t-0.00__p-0.95__c-3.00__install-1/args.yaml +520 -0
  164. package/python/tests/test_data/trajectories/gpt4__swe-bench-dev-easy_first_only__default__t-0.00__p-0.95__c-3.00__install-1/patches/pydicom__pydicom-1458.patch +18 -0
  165. package/python/tests/test_data/trajectories/gpt4__swe-bench-dev-easy_first_only__default__t-0.00__p-0.95__c-3.00__install-1/pydicom__pydicom-1458.traj +257 -0
  166. package/python/tests/test_env.py +66 -0
  167. package/python/tests/test_env_utils.py +129 -0
  168. package/python/tests/test_history_processors.py +40 -0
  169. package/python/tests/test_models.py +23 -0
  170. package/python/tests/test_openai_live.py +164 -0
  171. package/python/tests/test_packaging.py +7 -0
  172. package/python/tests/test_parsing.py +131 -0
  173. package/python/tests/test_problem_statement_multimodal.py +111 -0
  174. package/python/tests/test_quick_stats.py +42 -0
  175. package/python/tests/test_run.py +37 -0
  176. package/python/tests/test_run_batch.py +110 -0
  177. package/python/tests/test_run_hooks.py +114 -0
  178. package/python/tests/test_run_replay.py +33 -0
  179. package/python/tests/test_run_single.py +125 -0
  180. package/python/tests/test_tools_command_parsing.py +193 -0
  181. package/python/tests/test_utils.py +15 -0
  182. package/python/tests/tools/__init__.py +0 -0
  183. package/python/tests/tools/conftest.py +12 -0
  184. package/python/tests/tools/test_default_utils.py +153 -0
  185. package/python/tests/tools/test_edit_replace.py +0 -0
  186. package/python/tests/tools/test_split_string.py +82 -0
  187. package/python/tests/utils.py +29 -0
  188. package/python/tools/diff_state/bin/_state_diff_state +52 -0
  189. package/python/tools/diff_state/config.yaml +2 -0
  190. package/python/tools/edit_anthropic/bin/_state_anthropic +21 -0
  191. package/python/tools/edit_anthropic/bin/str_replace_editor +710 -0
  192. package/python/tools/edit_anthropic/config.yaml +56 -0
  193. package/python/tools/edit_anthropic/install.sh +3 -0
  194. package/python/tools/filemap/bin/filemap +45 -0
  195. package/python/tools/filemap/config.yaml +9 -0
  196. package/python/tools/filemap/install.sh +2 -0
  197. package/python/tools/forfeit/bin/exit_forfeit +5 -0
  198. package/python/tools/forfeit/config.yaml +5 -0
  199. package/python/tools/image_tools/bin/view_image +36 -0
  200. package/python/tools/image_tools/config.yaml +9 -0
  201. package/python/tools/multilingual_setup/bin/do_nothing +2 -0
  202. package/python/tools/multilingual_setup/config.yaml +1 -0
  203. package/python/tools/multilingual_setup/install.sh +45 -0
  204. package/python/tools/registry/bin/_read_env +10 -0
  205. package/python/tools/registry/bin/_write_env +10 -0
  206. package/python/tools/registry/config.yaml +1 -0
  207. package/python/tools/registry/install.sh +6 -0
  208. package/python/tools/registry/lib/__init__.py +0 -0
  209. package/python/tools/registry/lib/registry.py +56 -0
  210. package/python/tools/review_on_submit_m/README.md +6 -0
  211. package/python/tools/review_on_submit_m/bin/submit +54 -0
  212. package/python/tools/review_on_submit_m/config.yaml +6 -0
  213. package/python/tools/review_on_submit_m/install.sh +0 -0
  214. package/python/tools/search/bin/find_file +31 -0
  215. package/python/tools/search/bin/search_dir +39 -0
  216. package/python/tools/search/bin/search_file +55 -0
  217. package/python/tools/search/config.yaml +37 -0
  218. package/python/tools/search/install.sh +3 -0
  219. package/python/tools/submit/bin/submit +17 -0
  220. package/python/tools/submit/config.yaml +5 -0
  221. package/python/tools/web_browser/bin/click_mouse +41 -0
  222. package/python/tools/web_browser/bin/close_site +28 -0
  223. package/python/tools/web_browser/bin/double_click_mouse +37 -0
  224. package/python/tools/web_browser/bin/drag_mouse +46 -0
  225. package/python/tools/web_browser/bin/execute_script_on_page +39 -0
  226. package/python/tools/web_browser/bin/get_console_output +48 -0
  227. package/python/tools/web_browser/bin/move_mouse +35 -0
  228. package/python/tools/web_browser/bin/navigate_back +33 -0
  229. package/python/tools/web_browser/bin/navigate_forward +33 -0
  230. package/python/tools/web_browser/bin/open_site +36 -0
  231. package/python/tools/web_browser/bin/press_keys_on_page +51 -0
  232. package/python/tools/web_browser/bin/reload_page +33 -0
  233. package/python/tools/web_browser/bin/run_web_browser_server +394 -0
  234. package/python/tools/web_browser/bin/screenshot_site +38 -0
  235. package/python/tools/web_browser/bin/scroll_on_page +40 -0
  236. package/python/tools/web_browser/bin/set_browser_window_size +40 -0
  237. package/python/tools/web_browser/bin/type_text +34 -0
  238. package/python/tools/web_browser/bin/wait_time +39 -0
  239. package/python/tools/web_browser/config.yaml +155 -0
  240. package/python/tools/web_browser/install.sh +22 -0
  241. package/python/tools/web_browser/lib/browser_manager.py +404 -0
  242. package/python/tools/web_browser/lib/web_browser_config.py +33 -0
  243. package/python/tools/web_browser/lib/web_browser_utils.py +126 -0
  244. package/python/tools/web_browser/test_console.html +1 -0
  245. package/python/tools/windowed/bin/_state +25 -0
  246. package/python/tools/windowed/bin/create +29 -0
  247. package/python/tools/windowed/bin/goto +37 -0
  248. package/python/tools/windowed/bin/open +49 -0
  249. package/python/tools/windowed/bin/scroll_down +12 -0
  250. package/python/tools/windowed/bin/scroll_up +13 -0
  251. package/python/tools/windowed/config.yaml +38 -0
  252. package/python/tools/windowed/install.sh +15 -0
  253. package/python/tools/windowed/lib/__init__.py +0 -0
  254. package/python/tools/windowed/lib/flake8_utils.py +147 -0
  255. package/python/tools/windowed/lib/windowed_file.py +312 -0
  256. package/python/tools/windowed_edit_linting/bin/edit +128 -0
  257. package/python/tools/windowed_edit_linting/config.yaml +31 -0
  258. package/python/tools/windowed_edit_linting/install.sh +5 -0
  259. package/python/tools/windowed_edit_replace/bin/edit +172 -0
  260. package/python/tools/windowed_edit_replace/bin/insert +77 -0
  261. package/python/tools/windowed_edit_replace/config.yaml +60 -0
  262. package/python/tools/windowed_edit_replace/install.sh +5 -0
  263. package/python/tools/windowed_edit_rewrite/bin/edit +78 -0
  264. package/python/tools/windowed_edit_rewrite/config.yaml +11 -0
  265. package/python/tools/windowed_edit_rewrite/install.sh +5 -0
  266. package/python/trajectories/demonstrations/ctf/crypto/BabyEncryption.traj +318 -0
  267. package/python/trajectories/demonstrations/ctf/crypto/BabyTimeCapsule.traj +197 -0
  268. package/python/trajectories/demonstrations/ctf/crypto/eps.traj +289 -0
  269. package/python/trajectories/demonstrations/ctf/crypto/katy.traj +368 -0
  270. package/python/trajectories/demonstrations/ctf/forensics/flash.traj +102 -0
  271. package/python/trajectories/demonstrations/ctf/misc/networking_1.traj +102 -0
  272. package/python/trajectories/demonstrations/ctf/pwn/warmup.traj +159 -0
  273. package/python/trajectories/demonstrations/ctf/rev/rock.traj +251 -0
  274. package/python/trajectories/demonstrations/ctf/web/i_got_id_demo.traj +422 -0
  275. package/python/trajectories/demonstrations/function_calling_simple.traj +151 -0
  276. package/python/trajectories/demonstrations/human_thought__swe-bench-HumanEvalFix-python__lcb__t-0.00__p-0.95__c-4.00__install-0/humanevalfix-python-0.traj +129 -0
  277. package/python/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__default__t-0.20__p-0.95__c-2.00__install-1___install_from_source/marshmallow-code__marshmallow-1867.traj +318 -0
  278. package/python/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__default_sys-env_cursors_window100__t-0.20__p-0.95__c-2.00__install-1/marshmallow-code__marshmallow-1867.traj +251 -0
  279. package/python/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__default_sys-env_window100__t-0.20__p-0.95__c-2.00__install-1/marshmallow-code__marshmallow-1867.traj +399 -0
  280. package/python/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__function_calling__install-1/marshmallow-code__marshmallow-1867.traj +594 -0
  281. package/python/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__function_calling_replace__install-1/marshmallow-code__marshmallow-1867.traj +592 -0
  282. package/python/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__function_calling_replace_from_source/marshmallow-code__marshmallow-1867.traj +3316 -0
  283. package/python/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__xml_sys-env_cursors_window100__t-0.20__p-0.95__c-2.00__install-1/marshmallow-code__marshmallow-1867.traj +251 -0
  284. package/python/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__xml_sys-env_window100__t-0.20__p-0.95__c-2.00__install-1/marshmallow-code__marshmallow-1867.traj +399 -0
  285. package/python/trajectories/demonstrations/str_replace_anthropic_demo.yaml +432 -0
  286. package/rust/Cargo.toml +100 -0
  287. package/rust/README.md +49 -0
  288. package/rust/src/agent/action_sampler.rs +130 -0
  289. package/rust/src/agent/agents.rs +1029 -0
  290. package/rust/src/agent/history_processors.rs +277 -0
  291. package/rust/src/agent/hooks/mod.rs +208 -0
  292. package/rust/src/agent/mod.rs +24 -0
  293. package/rust/src/agent/models.rs +837 -0
  294. package/rust/src/agent/problem_statement.rs +355 -0
  295. package/rust/src/agent/reviewer.rs +505 -0
  296. package/rust/src/bin/sweagent.rs +784 -0
  297. package/rust/src/environment/deployment.rs +631 -0
  298. package/rust/src/environment/hooks/mod.rs +114 -0
  299. package/rust/src/environment/mod.rs +16 -0
  300. package/rust/src/environment/repo.rs +265 -0
  301. package/rust/src/environment/runtime.rs +237 -0
  302. package/rust/src/environment/swe_env.rs +248 -0
  303. package/rust/src/exceptions.rs +228 -0
  304. package/rust/src/lib.rs +68 -0
  305. package/rust/src/monitoring.rs +482 -0
  306. package/rust/src/run/hooks/mod.rs +134 -0
  307. package/rust/src/run/mod.rs +12 -0
  308. package/rust/src/run/run_batch.rs +563 -0
  309. package/rust/src/run/run_single.rs +196 -0
  310. package/rust/src/tools/bundle.rs +224 -0
  311. package/rust/src/tools/commands.rs +173 -0
  312. package/rust/src/tools/mod.rs +295 -0
  313. package/rust/src/tools/parsing.rs +354 -0
  314. package/rust/src/tools/registry.rs +143 -0
  315. package/rust/src/types.rs +554 -0
  316. package/rust/src/utils/config.rs +105 -0
  317. package/rust/src/utils/files.rs +137 -0
  318. package/rust/src/utils/github.rs +171 -0
  319. package/rust/src/utils/log.rs +65 -0
  320. package/rust/src/utils/mod.rs +17 -0
  321. package/rust/src/utils/serialization.rs +181 -0
  322. package/rust/src/utils/template.rs +173 -0
  323. package/typescript/README.md +335 -0
@@ -0,0 +1,432 @@
1
+ # This is a demo file generated from trajectory file:
2
+ # /Users/fuchur/Documents/24/git_sync/SWE-agent/trajectories/fuchur/replay___1c2844.demo/1c2844.traj
3
+ # You can use this demo file to replay the actions in the trajectory with run_replay.py.
4
+ # You can edit the content of the actions in this file to modify the replay behavior.
5
+ # NOTICE:
6
+ # Only the actions of the assistant will be replayed.
7
+ # You do not need to modify the observation's contents or any other fields.
8
+ # You can add or remove actions to modify the replay behavior.
9
+ history:
10
+ - role: user
11
+ content: |-
12
+ I've uploaded a python code repository in the directory . Consider the following PR description:
13
+
14
+ <pr_description>
15
+ I'm running `missing_colon.py` as follows:
16
+
17
+ ```python
18
+ division(23, 0)
19
+ ```
20
+
21
+ but I get the following error:
22
+
23
+ ```
24
+ File "/Users/fuchur/Documents/24/git_sync/swe-agent-test-repo/tests/./missing_colon.py", line 4
25
+ def division(a: float, b: float) -> float
26
+ ^
27
+ SyntaxError: invalid syntax
28
+ ```
29
+
30
+ </pr_description>
31
+
32
+ Can you help me implement the necessary changes to the repository so that the requirements specified in the <pr_description> are met?
33
+ I've already taken care of all changes to any of the test files described in the <pr_description>. This means you DON'T have to modify the testing logic or any of the tests in any way!
34
+ Your task is to make the minimal changes to non-tests files in the directory to ensure the <pr_description> is satisfied.
35
+ Follow these steps to resolve the issue:
36
+ 1. As a first step, it might be a good idea to find and read code relevant to the <pr_description>
37
+ 2. Create a script to reproduce the error and execute it with `python <filename.py>` using the bash tool, to confirm the error
38
+ 3. Edit the sourcecode of the repo to resolve the issue
39
+ 4. Rerun your reproduce script and confirm that the error is fixed!
40
+ 5. Think about edgecases and make sure your fix handles them as well
41
+ Your thinking should be thorough and so it's fine if it's very long.
42
+
43
+ (Open file: )
44
+ (Current directory: )
45
+ bash-$
46
+ agent: main
47
+ message_type: observation
48
+ - role: assistant
49
+ content: Let’s start by exploring the repository structure.
50
+ agent: main
51
+ tool_calls:
52
+ - function:
53
+ arguments: '{"command":"view","path":"/swe-agent-test-repo"}'
54
+ name: str_replace_editor
55
+ id: call_ggIm89M8rcBQorveMgkIrL7G
56
+ type: function
57
+ message_type: action
58
+ - role: tool
59
+ content: |-
60
+ Here's the files and directories up to 2 levels deep in /swe-agent-test-repo, excluding hidden items:
61
+ /swe-agent-test-repo
62
+ /swe-agent-test-repo/pyproject.toml
63
+ /swe-agent-test-repo/src
64
+ /swe-agent-test-repo/src/testpkg
65
+ /swe-agent-test-repo/problem_statements
66
+ /swe-agent-test-repo/problem_statements/1.md
67
+ /swe-agent-test-repo/problem_statements/1a.md
68
+ /swe-agent-test-repo/problem_statements/22.md
69
+ /swe-agent-test-repo/tests
70
+ /swe-agent-test-repo/tests/test_tribonaccy.py
71
+ /swe-agent-test-repo/tests/existing_lint_error.py
72
+ /swe-agent-test-repo/tests/missing_colon.py
73
+ /swe-agent-test-repo/tests/filetoread.txt
74
+ /swe-agent-test-repo/README.md
75
+ (Open file: )
76
+ (Current directory: )
77
+ bash-$
78
+ agent: main
79
+ message_type: observation
80
+ tool_call_ids:
81
+ - call_ggIm89M8rcBQorveMgkIrL7G
82
+ - role: assistant
83
+ content: We have several Python files in the repository. `missing_colon.py` is directly mentioned in the PR description, so let's open it.
84
+ agent: main
85
+ tool_calls:
86
+ - function:
87
+ arguments: '{"command":"view","path":"/swe-agent-test-repo/src/testpkg/missing_colon.py"}'
88
+ name: str_replace_editor
89
+ id: call_QbSqph4VzA951X9eMEgsvyOm
90
+ type: function
91
+ message_type: action
92
+ - role: tool
93
+ content: |-
94
+ Here's the result of running `cat -n` on /swe-agent-test-repo/src/testpkg/missing_colon.py:
95
+ 1 #!/usr/bin/env python3
96
+ 2
97
+ 3
98
+ 4 def division(a: float, b: float) -> float
99
+ 5 return a/b
100
+ 6
101
+ 7
102
+ 8 if __name__ == "__main__":
103
+ 9 print(division(123, 15))
104
+ 10
105
+ 11
106
+ (Open file: )
107
+ (Current directory: )
108
+ bash-$
109
+ agent: main
110
+ message_type: observation
111
+ tool_call_ids:
112
+ - call_QbSqph4VzA951X9eMEgsvyOm
113
+ - role: assistant
114
+ content: We can see that the file contains a missing colon. Let's fix it by replacing the line with the correct version.
115
+ agent: main
116
+ tool_calls:
117
+ - function:
118
+ arguments: '{"command":"str_replace","path":"/swe-agent-test-repo/src/testpkg/missing_colon.py","old_str":"def division(a: float, b: float) -> float","new_str":"def division(a: float, b: float) -> float:"}'
119
+ name: str_replace_editor
120
+ id: call_QgE1MNhZQ2W66DgwRZGXEo1D
121
+ type: function
122
+ message_type: action
123
+ - role: tool
124
+ content: |-
125
+ The file /swe-agent-test-repo/src/testpkg/missing_colon.py has been edited. Here's the result of running `cat -n` on a snippet of /swe-agent-test-repo/src/testpkg/missing_colon.py:
126
+ 1 #!/usr/bin/env python3
127
+ 2
128
+ 3
129
+ 4 def division(a: float, b: float) -> float:
130
+ 5 return a/b
131
+ 6
132
+ 7
133
+ 8 if __name__ == "__main__":
134
+ Review the changes and make sure they are as expected. Edit the file again if necessary.
135
+ (Open file: )
136
+ (Current directory: )
137
+ bash-$
138
+ agent: main
139
+ message_type: observation
140
+ tool_call_ids:
141
+ - call_QgE1MNhZQ2W66DgwRZGXEo1D
142
+ - role: assistant
143
+ content: The missing colon has been fixed. The change should not break any existing functionality. Let's submit the changes.
144
+ agent: main
145
+ tool_calls:
146
+ - function:
147
+ arguments: '{}'
148
+ name: submit
149
+ id: call_zyAyd9wbLeSeRaFXrKwlQYwI
150
+ type: function
151
+ message_type: action
152
+ - role: tool
153
+ content: |2-
154
+
155
+ diff --git a/src/testpkg/missing_colon.py b/src/testpkg/missing_colon.py
156
+ index 20edef5..5857437 100755
157
+ --- a/src/testpkg/missing_colon.py
158
+ +++ b/src/testpkg/missing_colon.py
159
+ @@ -1,7 +1,7 @@
160
+ #!/usr/bin/env python3
161
+
162
+
163
+ -def division(a: float, b: float) -> float
164
+ +def division(a: float, b: float) -> float:
165
+ return a/b
166
+
167
+
168
+
169
+ (Open file: )
170
+ (Current directory: )
171
+ bash-$
172
+ agent: main
173
+ message_type: observation
174
+ tool_call_ids:
175
+ - call_zyAyd9wbLeSeRaFXrKwlQYwI
176
+ replay_config:
177
+ env:
178
+ deployment:
179
+ image: tiny
180
+ port:
181
+ docker_args: []
182
+ startup_timeout: 180.0
183
+ pull: missing
184
+ remove_images: false
185
+ type: docker
186
+ repo:
187
+ path: /Users/fuchur/Documents/24/git_sync/swe-agent-test-repo
188
+ base_commit: HEAD
189
+ type: local
190
+ post_startup_commands: []
191
+ name: main
192
+ agent:
193
+ name: main
194
+ templates:
195
+ system_template: |-
196
+ You are a helpful assistant that can interact with a computer to solve tasks.
197
+
198
+ <IMPORTANT>
199
+ * If user provides a path, you should NOT assume it's relative to the current working directory. Instead, you should explore the file system to find the file before working on it.
200
+ * Do not try to install any packages with `pip`, `conda`, or any other way. This will usually not work. If the environment is not set up correctly, try to fix the issue without executing python code or running any tests that require the package installed.
201
+ </IMPORTANT>
202
+
203
+ The special interface consists of a file editor that shows you {{WINDOW}} lines of a file at a time.
204
+ In addition to typical bash commands, you can also use specific commands to help you navigate and edit files.
205
+ To call a command, you need to invoke it with a function call/tool call.
206
+
207
+ <notes>
208
+ Please note that THE EDIT COMMAND REQUIRES PROPER INDENTATION.
209
+
210
+ For example, if you are looking at this file:
211
+
212
+ def fct():
213
+ print("Hello world")
214
+
215
+ and you want to edit the file to read:
216
+
217
+ def fct():
218
+ print("Hello")
219
+ print("world")
220
+
221
+ you search string should be `Hello world` and your replace string should be `"Hello"\n print("world")`
222
+ (note the extra spaces before the print statement!).
223
+
224
+ You could also get the same result by search for ` print("Hello world")` and replace with ` print("Hello")\n print("world")`.
225
+ </notes>
226
+ <response_format>
227
+ Your shell prompt is formatted as follows:
228
+ (Open file: <path>)
229
+ (Current directory: <cwd>)
230
+ bash-$
231
+
232
+ First, you should _always_ include a general thought about what you're going to do next.
233
+ Then, for every response, you must include exactly _ONE_ tool call/function call.
234
+
235
+ Remember, you should always include a _SINGLE_ tool call/function call and then wait for a response from the shell before continuing with more discussion and commands. Everything you include in the DISCUSSION section will be saved for future reference.
236
+ If you'd like to issue two commands at once, PLEASE DO NOT DO THAT! Please instead first submit just the first tool call, and then after receiving a response you'll be able to issue the second .
237
+ Note that the environment does NOT support interactive session commands (e.g. python, vim), so please do not invoke them.
238
+ </response_format>
239
+ instance_template: |-
240
+ I've uploaded a python code repository in the directory {{working_dir}}. Consider the following PR description:
241
+
242
+ <pr_description>
243
+ {{problem_statement}}
244
+ </pr_description>
245
+
246
+ Can you help me implement the necessary changes to the repository so that the requirements specified in the <pr_description> are met?
247
+ I've already taken care of all changes to any of the test files described in the <pr_description>. This means you DON'T have to modify the testing logic or any of the tests in any way!
248
+ Your task is to make the minimal changes to non-tests files in the {{working_dir}} directory to ensure the <pr_description> is satisfied.
249
+ Follow these steps to resolve the issue:
250
+ 1. As a first step, it might be a good idea to find and read code relevant to the <pr_description>
251
+ 2. Create a script to reproduce the error and execute it with `python <filename.py>` using the bash tool, to confirm the error
252
+ 3. Edit the sourcecode of the repo to resolve the issue
253
+ 4. Rerun your reproduce script and confirm that the error is fixed!
254
+ 5. Think about edgecases and make sure your fix handles them as well
255
+ Your thinking should be thorough and so it's fine if it's very long.
256
+
257
+ (Open file: {{open_file}})
258
+ (Current directory: {{working_dir}})
259
+ bash-$
260
+ next_step_template: |-
261
+ {{observation}}
262
+ (Open file: {{open_file}})
263
+ (Current directory: {{working_dir}})
264
+ bash-$
265
+ next_step_no_output_template: |-
266
+ Your command ran successfully and did not produce any output.
267
+ (Open file: {{open_file}})
268
+ (Current directory: {{working_dir}})
269
+ bash-$
270
+ strategy_template:
271
+ demonstration_template: |
272
+ Here is a demonstration of how to correctly accomplish this task.
273
+ It is included to show you how to correctly use the interface.
274
+ You do not need to follow exactly what is done in the demonstration.
275
+ --- DEMONSTRATION ---
276
+ {{demonstration}}
277
+ --- END OF DEMONSTRATION ---
278
+ demonstrations:
279
+ - trajectories/demonstrations/function_calling_simple.traj
280
+ put_demos_in_history: true
281
+ shell_check_error_template: |-
282
+ Your bash command contained syntax errors and was NOT executed. Please fix the syntax errors and try again. This can be the result of not adhering to the syntax for multi-line commands. Here is the output of `bash -n`:
283
+ {{bash_stdout}}
284
+ {{bash_stderr}}
285
+ command_cancelled_timeout_template: The command '{{command}}' was cancelled because it took more than {{timeout}} seconds. Please try a different command that completes more quickly.
286
+ tools:
287
+ filter:
288
+ blocklist_error_template: Operation '{{action}}' is not supported by this environment.
289
+ blocklist:
290
+ - vim
291
+ - vi
292
+ - emacs
293
+ - nano
294
+ - nohup
295
+ - git
296
+ - gdb
297
+ - less
298
+ - tail -f
299
+ - python -m venv
300
+ blocklist_standalone:
301
+ - python
302
+ - python3
303
+ - ipython
304
+ - bash
305
+ - sh
306
+ - /bin/bash
307
+ - /bin/sh
308
+ - nohup
309
+ - vi
310
+ - vim
311
+ - emacs
312
+ - nano
313
+ - su
314
+ block_unless_regex:
315
+ radare2: \b(?:radare2)\b.*\s+-c\s+.*
316
+ r2: \b(?:radare2)\b.*\s+-c\s+.*
317
+ bundles:
318
+ - path: tools/edit_anthropic
319
+ hidden_tools: []
320
+ - path: tools/submit
321
+ hidden_tools: []
322
+ env_variables:
323
+ WINDOW: 100
324
+ OVERLAP: 2
325
+ submit_command: submit
326
+ parse_function:
327
+ error_message: |
328
+ {%- if error_code == "missing" -%}
329
+ Your last output did not use any tool calls!
330
+ Please make sure your output includes exactly _ONE_ function call!
331
+ You must invoke the function directly using the function call format.
332
+ You cannot invoke commands with ```, you have to use the function call format.
333
+ If you think you have already resolved the issue, please submit your changes by running the `submit` command.
334
+ If you think you cannot solve the problem, please run `exit_forfeit` (if available).
335
+ Else, please continue with a new tool call!
336
+ {%- elif error_code == "multiple" -%}
337
+ Your last output included multiple tool calls!
338
+ Please make sure your output includes a thought and exactly _ONE_ function call.
339
+ {%- elif error_code == "unexpected_arg" -%}
340
+ Your action could not be parsed properly: {{exception_message}}.
341
+ Make sure your function call doesn't include any extra arguments that are not in the allowed arguments, and only use the allowed commands.
342
+ {%- else -%}
343
+ Your action could not be parsed properly: {{exception_message}}.
344
+ {% endif %}
345
+ type: function_calling
346
+ enable_bash_tool: true
347
+ format_error_template: |
348
+ {%- if error_code == "missing" -%}
349
+ Your last output did not use any tool calls!
350
+ Please make sure your output includes exactly _ONE_ function call!
351
+ You must invoke the function directly using the function call format.
352
+ You cannot invoke commands with ```, you have to use the function call format.
353
+ If you think you have already resolved the issue, please submit your changes by running the `submit` command.
354
+ If you think you cannot solve the problem, please run `exit_forfeit` (if available).
355
+ Else, please continue with a new tool call!
356
+ {%- elif error_code == "multiple" -%}
357
+ Your last output included multiple tool calls!
358
+ Please make sure your output includes a thought and exactly _ONE_ function call.
359
+ {%- elif error_code == "unexpected_arg" -%}
360
+ Your action could not be parsed properly: {{exception_message}}.
361
+ Make sure your function call doesn't include any extra arguments that are not in the allowed arguments, and only use the allowed commands.
362
+ {%- else -%}
363
+ Your action could not be parsed properly: {{exception_message}}.
364
+ {% endif %}
365
+ command_docs: |+
366
+ bash:
367
+ docstring: runs the given command directly in bash
368
+ signature: <command>
369
+ arguments:
370
+ - command (string) [required]: a command to run directly in the current shell
371
+
372
+ str_replace_editor:
373
+ docstring: Create, view, or edit a file.
374
+
375
+ signature: str_replace_editor <command> <path> [<file_text>] [<view_range>] [<old_str>] [<new_str>] [<insert_line>]
376
+
377
+ arguments:
378
+ - command (string) [required]: command to run: view, create, str_replace, insert, undo_edit
379
+ - path (string) [required]: path to file
380
+ - file_text (string) [optional]: Text to insert when evoking `create` (required for `create`)
381
+ - view_range (array) [optional]: Range of lines to display when evoking `view`. If not provided, the entire file is displayed.
382
+ - old_str (string) [optional]: String to replace when evoking `str_replace`
383
+ - new_str (string) [optional]: Replacement string when evoking `str_replace`
384
+ - insert_line (integer) [optional]: Required for `insert`: Line number to insert text after.
385
+
386
+ submit:
387
+ docstring: submits the current file
388
+ signature: submit
389
+
390
+ multi_line_command_endings: {}
391
+ submit_command_end_name:
392
+ reset_commands: []
393
+ execution_timeout: 30
394
+ install_timeout: 300
395
+ history_processors:
396
+ - n: 5
397
+ always_remove_output_for_tags:
398
+ - remove_output
399
+ always_keep_output_for_tags:
400
+ - keep_output
401
+ type: last_n_observations
402
+ model:
403
+ name: replay
404
+ per_instance_cost_limit: 3.0
405
+ total_cost_limit: 0.0
406
+ temperature: 1.0
407
+ top_p: 1.0
408
+ api_base:
409
+ api_version:
410
+ api_key:
411
+ stop: []
412
+ completion_kwargs: {}
413
+ convert_system_to_user: false
414
+ retry:
415
+ retries: 5
416
+ min_wait: 1.0
417
+ max_wait: 15.0
418
+ delay: 0.0
419
+ fallbacks: []
420
+ max_requeries: 3
421
+ problem_statement:
422
+ path: /Users/fuchur/Documents/24/git_sync/swe-agent-test-repo/problem_statements/1.md
423
+ extra_fields: {}
424
+ type: text_file
425
+ id: 1c2844
426
+ output_dir: DEFAULT
427
+ actions:
428
+ open_pr: false
429
+ pr_config:
430
+ skip_if_commits_reference_issue: true
431
+ apply_patch_locally: false
432
+ env_var_path:
@@ -0,0 +1,100 @@
1
+ [package]
2
+ name = "elizaos-sweagent"
3
+ version = "2.0.0"
4
+ edition = "2021"
5
+ authors = ["elizaOS Contributors"]
6
+ description = "SWE-agent: Software Engineering Agent - Rust implementation with native and WASM support"
7
+ license = "MIT"
8
+ repository = "https://github.com/elizaos/eliza"
9
+ keywords = ["ai", "agent", "software-engineering", "automation", "swe-agent"]
10
+ categories = ["development-tools", "command-line-utilities"]
11
+ readme = "README.md"
12
+
13
+ [lib]
14
+ crate-type = ["cdylib", "rlib"]
15
+
16
+ [features]
17
+ default = ["native"]
18
+ native = ["tokio/full", "reqwest/default-tls"]
19
+ wasm = ["wasm-bindgen", "wasm-bindgen-futures", "js-sys", "web-sys", "console_error_panic_hook", "getrandom/js", "reqwest/rustls-tls"]
20
+
21
+ [dependencies]
22
+ # HTTP client
23
+ reqwest = { version = "0.12", default-features = false, features = ["json"] }
24
+
25
+ # Serialization
26
+ serde = { version = "1.0", features = ["derive"] }
27
+ serde_json = "1.0"
28
+ serde_yaml = "0.9"
29
+
30
+ # Async runtime
31
+ async-trait = "0.1"
32
+ futures = "0.3"
33
+
34
+ # Error handling
35
+ thiserror = "2.0"
36
+ anyhow = "1.0"
37
+
38
+ # Logging
39
+ tracing = "0.1"
40
+ tracing-subscriber = { version = "0.3", features = ["env-filter"] }
41
+
42
+ # UUID handling
43
+ uuid = { version = "1.19", features = ["v4", "serde"] }
44
+
45
+ # Regex for parsing
46
+ regex = "1.10"
47
+
48
+ # Template rendering
49
+ handlebars = "6.0"
50
+
51
+ # Command line interface
52
+ clap = { version = "4.5", features = ["derive"] }
53
+
54
+ # Docker interaction
55
+ bollard = { version = "0.18", optional = true }
56
+
57
+ # Git operations
58
+ git2 = { version = "0.20", optional = true }
59
+
60
+ # File globbing
61
+ glob = "0.3"
62
+
63
+ # Path manipulation
64
+ pathdiff = "0.2"
65
+
66
+ # Time utilities
67
+ chrono = { version = "0.4", features = ["serde"] }
68
+
69
+ # Random number generation
70
+ rand = "0.8"
71
+
72
+ # Environment loading
73
+ dotenvy = "0.15"
74
+
75
+ # Native-only dependencies
76
+ tokio = { version = "1.0", features = ["rt-multi-thread", "macros", "process", "fs", "io-util", "sync"], optional = true }
77
+
78
+ # WASM-only dependencies
79
+ wasm-bindgen = { version = "0.2", optional = true }
80
+ wasm-bindgen-futures = { version = "0.4", optional = true }
81
+ js-sys = { version = "0.3", optional = true }
82
+ web-sys = { version = "0.3", features = ["console"], optional = true }
83
+ console_error_panic_hook = { version = "0.1", optional = true }
84
+ getrandom = { version = "0.2", optional = true }
85
+
86
+ [dev-dependencies]
87
+ tokio = { version = "1.0", features = ["rt-multi-thread", "macros"] }
88
+ pretty_assertions = "1.0"
89
+ dotenvy = "0.15"
90
+ tempfile = "3.10"
91
+ rand = "0.8"
92
+
93
+ [profile.release]
94
+ lto = true
95
+ opt-level = "z"
96
+
97
+ [[bin]]
98
+ name = "sweagent"
99
+ path = "src/bin/sweagent.rs"
100
+ required-features = ["native"]
package/rust/README.md ADDED
@@ -0,0 +1,49 @@
1
+ # SWE-agent Rust Implementation
2
+
3
+ Rust implementation of SWE-agent with native and WebAssembly support.
4
+
5
+ ## Features
6
+
7
+ - **Native Feature** (default): Full async support with Tokio
8
+ - **WASM Feature**: WebAssembly support for browser environments
9
+
10
+ ## Usage
11
+
12
+ ```rust
13
+ use elizaos_sweagent::run::{RunSingle, RunSingleConfig};
14
+
15
+ #[tokio::main]
16
+ async fn main() -> anyhow::Result<()> {
17
+ let config = RunSingleConfig::default();
18
+ let mut runner = RunSingle::from_config(config)?;
19
+ let result = runner.run().await?;
20
+ println!("Exit status: {:?}", result.info.exit_status);
21
+ Ok(())
22
+ }
23
+ ```
24
+
25
+ ## Building
26
+
27
+ ```bash
28
+ # Build native
29
+ cargo build --release
30
+
31
+ # Build for WASM
32
+ cargo build --target wasm32-unknown-unknown --features wasm --no-default-features
33
+ ```
34
+
35
+ ## Testing
36
+
37
+ ```bash
38
+ cargo test
39
+ ```
40
+
41
+ ## CLI
42
+
43
+ ```bash
44
+ cargo run --bin sweagent -- run --help
45
+ ```
46
+
47
+ ## License
48
+
49
+ MIT