File tree Expand file tree Collapse file tree 1 file changed +28
-1
lines changed Expand file tree Collapse file tree 1 file changed +28
-1
lines changed Original file line number Diff line number Diff line change @@ -1024,8 +1024,35 @@ export class AIProviderService implements Disposable {
1024
1024
const content = rq . content . replace ( / ^ \s * ` ` ` j s o n \s * / , '' ) . replace ( / \s * ` ` ` $ / , '' ) ;
1025
1025
// Parse the JSON content from the result
1026
1026
result . commits = JSON . parse ( content ) as AIRebaseResult [ 'commits' ] ;
1027
- } catch {
1027
+
1028
+ const inputHunkIndices = result . hunkMap . map ( h => h . index ) ;
1029
+ const outputHunkIndices = new Set ( result . commits . flatMap ( c => c . hunks . map ( h => h . hunk ) ) ) ;
1030
+
1031
+ // Find any missing or extra hunks
1032
+ const missingHunks = inputHunkIndices . filter ( i => ! outputHunkIndices . has ( i ) ) ;
1033
+ const extraHunks = [ ...outputHunkIndices ] . filter ( i => ! inputHunkIndices . includes ( i ) ) ;
1034
+ if ( missingHunks . length > 0 || extraHunks . length > 0 ) {
1035
+ let hunksMessage = '' ;
1036
+ if ( missingHunks . length > 0 ) {
1037
+ const pluralize = missingHunks . length > 1 ? 's' : '' ;
1038
+ hunksMessage += ` ${ missingHunks . length } missing hunk${ pluralize } .` ;
1039
+ }
1040
+ if ( extraHunks . length > 0 ) {
1041
+ const pluralize = extraHunks . length > 1 ? 's' : '' ;
1042
+ hunksMessage += ` ${ extraHunks . length } extra hunk${ pluralize } .` ;
1043
+ }
1044
+
1045
+ throw new Error (
1046
+ `Invalid response in generating ${
1047
+ options ?. generateCommits ? 'commits' : 'rebase'
1048
+ } result.${ hunksMessage } Try again or select a different AI model.`,
1049
+ ) ;
1050
+ }
1051
+ } catch ( ex ) {
1028
1052
debugger ;
1053
+ if ( ex ?. message ?. includes ( 'Invalid response in generating' ) ) {
1054
+ throw ex ;
1055
+ }
1029
1056
throw new Error ( `Unable to parse ${ options ?. generateCommits ? 'commits' : 'rebase' } result` ) ;
1030
1057
}
1031
1058
You can’t perform that action at this time.
0 commit comments