This commit introduces two major user experience enhancements:
1. **Task Cancellation:**
- Users can now interrupt long-running AI tasks (both interim message generation and full agent execution) via a 'Stop Agent' button.
- Implemented using a cooperative `threading.Event` passed from the controller to the service layer, ensuring graceful termination.
- A custom `TaskInterruptedException` is raised and handled to update the UI state accordingly.
2. **Copy Message to Clipboard:**
- A copy icon has been added to each chat message (both user and agent).
- Clicking the icon copies the full raw message content to the system clipboard and displays a confirmation snackbar.
These features significantly improve the application's robustness and usability, giving users greater control over the agent's operations.