Distinguish between successful and error messages in quick actions
<!--IssueSummary start--> <details> <summary> Everyone can contribute. [Help move this issue forward](https://handbook.gitlab.com/handbook/marketing/developer-relations/contributor-success/community-contributors-workflows/#contributor-links) while earning points, leveling up and collecting rewards. </summary> - [Close this issue](https://contributors.gitlab.com/manage-issue?action=close&projectId=278964&issueIid=505101) </details> <!--IssueSummary end--> From https://gitlab.com/gitlab-org/gitlab/-/merge_requests/172179: I think we should have a follow-up issue here to refactor to handle errors better. We can add an `errors` field that actually has the errors. One challenge here is that the `QuickActionsService` doesn't really distinguish between successful and unsuccessful execution of commands. It simply returns the execution messages: https://gitlab.com/gitlab-org/gitlab/-/blob/3d20fd45ec2b24ff02a06eea0ef1558f522a211d/app/services/quick_actions/interpret_service.rb#L51 The only time we definitively know if an error occurred is if the execution message is blank and there were commands in the note. In that case, `error` will be set to `true`. For example, if we have something like: ``` /spend 1d /spend bogus ``` The first `/spend` will succeed, but the second will not due to the invalid `bogus` value. As a result, the execution message for the two messages are: 1. `Added 1d spent time` 2. null In https://gitlab.com/gitlab-org/gitlab/-/blob/3d20fd45ec2b24ff02a06eea0ef1558f522a211d/app/services/quick_actions/interpret_service.rb#L176, the message returned is joined with a space. As a result, `message` is simply the first message, and no error is signaled. In this case, this execution is considered a successful quick action, even if the second one failed. I think that is fine for now. However, I think what we really want is to: 1. Determine whether an action failed, regardless of the execution message returned. 2. Have the GraphQL API return successful commands in `messages` and unsuccessful messages in `errors`.
issue