When stopReason is 'error' or 'aborted', tool_use blocks may be incomplete
(e.g., partialJson: true). Creating synthetic tool_results for these causes
API 400 errors: 'unexpected tool_use_id found in tool_result blocks'
This fix skips tool call extraction for failed messages, preventing session
corruption after interruptions while preserving normal repair behavior.
Adds tests for error, aborted, and normal (toolUse) stopReason cases.