__init__.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. from ..exceptions import AgentMalformedActionError
  2. from .agent import (
  3. AgentDelegateAction,
  4. AgentEchoAction,
  5. AgentFinishAction,
  6. AgentRecallAction,
  7. AgentSummarizeAction,
  8. AgentTalkAction,
  9. AgentThinkAction,
  10. )
  11. from .base import Action, NullAction
  12. from .bash import CmdKillAction, CmdRunAction, IPythonRunCellAction
  13. from .browse import BrowseURLAction
  14. from .fileop import FileReadAction, FileWriteAction
  15. from .github import GitHubPushAction
  16. from .tasks import AddTaskAction, ModifyTaskAction
  17. actions = (
  18. CmdKillAction,
  19. CmdRunAction,
  20. IPythonRunCellAction,
  21. BrowseURLAction,
  22. FileReadAction,
  23. FileWriteAction,
  24. AgentRecallAction,
  25. AgentThinkAction,
  26. AgentTalkAction,
  27. AgentFinishAction,
  28. AgentDelegateAction,
  29. AddTaskAction,
  30. ModifyTaskAction,
  31. GitHubPushAction,
  32. )
  33. ACTION_TYPE_TO_CLASS = {action_class.action: action_class for action_class in actions} # type: ignore[attr-defined]
  34. def action_from_dict(action: dict) -> Action:
  35. if not isinstance(action, dict):
  36. raise AgentMalformedActionError('action must be a dictionary')
  37. action = action.copy()
  38. if 'action' not in action:
  39. raise AgentMalformedActionError(f"'action' key is not found in {action=}")
  40. action_class = ACTION_TYPE_TO_CLASS.get(action['action'])
  41. if action_class is None:
  42. raise AgentMalformedActionError(
  43. f"'{action['action']=}' is not defined. Available actions: {ACTION_TYPE_TO_CLASS.keys()}"
  44. )
  45. args = action.get('args', {})
  46. try:
  47. decoded_action = action_class(**args)
  48. except TypeError:
  49. raise AgentMalformedActionError(f'action={action} has the wrong arguments')
  50. return decoded_action
  51. __all__ = [
  52. 'Action',
  53. 'NullAction',
  54. 'CmdRunAction',
  55. 'CmdKillAction',
  56. 'BrowseURLAction',
  57. 'FileReadAction',
  58. 'FileWriteAction',
  59. 'AgentRecallAction',
  60. 'AgentThinkAction',
  61. 'AgentTalkAction',
  62. 'AgentFinishAction',
  63. 'AgentDelegateAction',
  64. 'AgentEchoAction',
  65. 'AgentSummarizeAction',
  66. 'AddTaskAction',
  67. 'ModifyTaskAction',
  68. 'IPythonRunCellAction'
  69. ]