__init__.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import os
  2. from typing import List
  3. from dataclasses import dataclass, field
  4. from opendevin.sandbox.plugins.requirement import PluginRequirement
  5. from opendevin.sandbox.plugins.swe_agent_commands.parse_commands import parse_command_file
  6. def _resolve_to_cur_dir(filename):
  7. return os.path.join(
  8. os.path.dirname(os.path.abspath(__file__)),
  9. filename
  10. )
  11. def check_and_parse_command_file(filepath) -> str:
  12. if filepath is None:
  13. raise FileNotFoundError(f'File not found: {filepath}')
  14. return parse_command_file(filepath)
  15. DEFAULT_SCRIPT_FILEPATHS = [
  16. _resolve_to_cur_dir('defaults.sh'),
  17. _resolve_to_cur_dir('search.sh'),
  18. _resolve_to_cur_dir('edit_linting.sh'),
  19. ]
  20. DEFAULT_DOCUMENTATION = ''.join([
  21. check_and_parse_command_file(filepath)
  22. for filepath in DEFAULT_SCRIPT_FILEPATHS
  23. if filepath is not None
  24. ])
  25. @dataclass
  26. class SWEAgentCommandsRequirement(PluginRequirement):
  27. name: str = 'swe_agent_commands'
  28. host_src: str = os.path.dirname(os.path.abspath(__file__))
  29. sandbox_dest: str = '/opendevin/plugins/swe_agent_commands'
  30. bash_script_path: str = 'setup_default.sh'
  31. scripts_filepaths: List[str | None] = field(default_factory=lambda: DEFAULT_SCRIPT_FILEPATHS)
  32. documentation: str = DEFAULT_DOCUMENTATION
  33. CURSOR_SCRIPT_FILEPATHS = [
  34. _resolve_to_cur_dir('cursors_defaults.sh'),
  35. _resolve_to_cur_dir('cursors_edit_linting.sh'),
  36. _resolve_to_cur_dir('search.sh'),
  37. ]
  38. CURSOR_DOCUMENTATION = ''.join([
  39. check_and_parse_command_file(filepath)
  40. for filepath in CURSOR_SCRIPT_FILEPATHS
  41. if filepath is not None
  42. ])
  43. @dataclass
  44. class SWEAgentCursorCommandsRequirement(PluginRequirement):
  45. name: str = 'swe_agent_commands'
  46. host_src: str = os.path.dirname(os.path.abspath(__file__))
  47. sandbox_dest: str = '/opendevin/plugins/swe_agent_commands'
  48. bash_script_path: str = 'setup_cursor_mode.sh'
  49. scripts_filepaths: List[str | None] = field(default_factory=lambda: CURSOR_SCRIPT_FILEPATHS)
  50. documentation: str = CURSOR_DOCUMENTATION