Since tool invocation is async, there will be cases when the user cancels the request which initiated the execution. We should likely have a callback which informs the site about this.
I don't think the other way around is necessary. If the site decides to abort, it can indicate so in the output of the execution. On that note, if we decide to go with #9 then maybe we need defined error values. So the author can either return a value based on the output schema (success) or one of the error codes (failure/abort).