| | from dataclasses import dataclass, field
|
| | from typing import Any
|
| |
|
| | from openhands.core.schema import ActionType
|
| | from openhands.events.action.action import Action
|
| |
|
| |
|
| | @dataclass
|
| | class ChangeAgentStateAction(Action):
|
| | """Fake action, just to notify the client that a task state has changed."""
|
| |
|
| | agent_state: str
|
| | thought: str = ''
|
| | action: str = ActionType.CHANGE_AGENT_STATE
|
| |
|
| | @property
|
| | def message(self) -> str:
|
| | return f'Agent state changed to {self.agent_state}'
|
| |
|
| |
|
| | @dataclass
|
| | class AgentSummarizeAction(Action):
|
| | summary: str
|
| | action: str = ActionType.SUMMARIZE
|
| |
|
| | @property
|
| | def message(self) -> str:
|
| | return self.summary
|
| |
|
| | def __str__(self) -> str:
|
| | ret = '**AgentSummarizeAction**\n'
|
| | ret += f'SUMMARY: {self.summary}'
|
| | return ret
|
| |
|
| |
|
| | @dataclass
|
| | class AgentFinishAction(Action):
|
| | """An action where the agent finishes the task.
|
| |
|
| | Attributes:
|
| | outputs (dict): The outputs of the agent, for instance "content".
|
| | thought (str): The agent's explanation of its actions.
|
| | action (str): The action type, namely ActionType.FINISH.
|
| | """
|
| |
|
| | outputs: dict[str, Any] = field(default_factory=dict)
|
| | thought: str = ''
|
| | action: str = ActionType.FINISH
|
| |
|
| | @property
|
| | def message(self) -> str:
|
| | if self.thought != '':
|
| | return self.thought
|
| | return "All done! What's next on the agenda?"
|
| |
|
| |
|
| | @dataclass
|
| | class AgentRejectAction(Action):
|
| | outputs: dict = field(default_factory=dict)
|
| | thought: str = ''
|
| | action: str = ActionType.REJECT
|
| |
|
| | @property
|
| | def message(self) -> str:
|
| | msg: str = 'Task is rejected by the agent.'
|
| | if 'reason' in self.outputs:
|
| | msg += ' Reason: ' + self.outputs['reason']
|
| | return msg
|
| |
|
| |
|
| | @dataclass
|
| | class AgentDelegateAction(Action):
|
| | agent: str
|
| | inputs: dict
|
| | thought: str = ''
|
| | action: str = ActionType.DELEGATE
|
| |
|
| | @property
|
| | def message(self) -> str:
|
| | return f"I'm asking {self.agent} for help with this task."
|
| |
|