| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- 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."
|