@@ -506,67 +506,39 @@ func RemoveSubIssue(getClient GetClientFn, t translations.TranslationHelperFunc)
506
506
}
507
507
508
508
client ,err := getClient (ctx )
509
- if err != nil {
510
- return nil ,fmt .Errorf ("failed to get GitHub client: %w" ,err )
511
- }
512
-
513
- // Create the request body
514
- requestBody := map [string ]interface {}{
515
- "sub_issue_id" :subIssueID ,
516
- }
517
- reqBodyBytes ,err := json .Marshal (requestBody )
518
- if err != nil {
519
- return nil ,fmt .Errorf ("failed to marshal request body: %w" ,err )
520
- }
521
-
522
- // Create the HTTP request
523
- url := fmt .Sprintf ("%srepos/%s/%s/issues/%d/sub_issue" ,
524
- client .BaseURL .String (),owner ,repo ,issueNumber )
525
- req ,err := http .NewRequestWithContext (ctx ,"DELETE" ,url ,strings .NewReader (string (reqBodyBytes )))
526
- if err != nil {
527
- return nil ,fmt .Errorf ("failed to create request: %w" ,err )
528
- }
529
- req .Header .Set ("Accept" ,"application/vnd.github+json" )
530
- req .Header .Set ("Content-Type" ,"application/json" )
531
- req .Header .Set ("X-GitHub-Api-Version" ,"2022-11-28" )
532
-
533
- httpClient := client .Client ()// Use authenticated GitHub client
534
- resp ,err := httpClient .Do (req )
535
- if err != nil {
536
- var ghResp * github.Response
537
- if resp != nil {
538
- ghResp = & github.Response {Response :resp }
539
- }
540
- return ghErrors .NewGitHubAPIErrorResponse (ctx ,
541
- "failed to remove sub-issue" ,
542
- ghResp ,
543
- err ,
544
- ),nil
545
- }
546
- defer func () {_ = resp .Body .Close () }()
547
-
548
- body ,err := io .ReadAll (resp .Body )
549
- if err != nil {
550
- return nil ,fmt .Errorf ("failed to read response body: %w" ,err )
551
- }
552
-
553
- if resp .StatusCode != http .StatusOK {
554
- return mcp .NewToolResultError (fmt .Sprintf ("failed to remove sub-issue: %s" ,string (body ))),nil
555
- }
556
-
557
- // Parse and re-marshal to ensure consistent formatting
558
- var result interface {}
559
- if err := json .Unmarshal (body ,& result );err != nil {
560
- return nil ,fmt .Errorf ("failed to unmarshal response: %w" ,err )
561
- }
562
-
563
- r ,err := json .Marshal (result )
564
- if err != nil {
565
- return nil ,fmt .Errorf ("failed to marshal response: %w" ,err )
566
- }
567
-
568
- return mcp .NewToolResultText (string (r )),nil
569
- }
509
+ if err != nil {
510
+ return nil ,fmt .Errorf ("failed to get GitHub client: %w" ,err )
511
+ }
512
+
513
+ subIssueRequest := github.SubIssueRequest {
514
+ SubIssueID :int64 (subIssueID ),
515
+ }
516
+
517
+ subIssue ,resp ,err := client .SubIssue .Remove (ctx ,owner ,repo ,int64 (issueNumber ),subIssueRequest )
518
+ if err != nil {
519
+ return ghErrors .NewGitHubAPIErrorResponse (ctx ,
520
+ "failed to remove sub-issue" ,
521
+ resp ,
522
+ err ,
523
+ ),nil
524
+ }
525
+ defer func () {_ = resp .Body .Close () }()
526
+
527
+ if resp .StatusCode != http .StatusOK {
528
+ body ,err := io .ReadAll (resp .Body )
529
+ if err != nil {
530
+ return nil ,fmt .Errorf ("failed to read response body: %w" ,err )
531
+ }
532
+ return mcp .NewToolResultError (fmt .Sprintf ("failed to remove sub-issue: %s" ,string (body ))),nil
533
+ }
534
+
535
+ r ,err := json .Marshal (subIssue )
536
+ if err != nil {
537
+ return nil ,fmt .Errorf ("failed to marshal response: %w" ,err )
538
+ }
539
+
540
+ return mcp .NewToolResultText (string (r )),nil
541
+ }
570
542
}
571
543
572
544
// ReprioritizeSubIssue creates a tool to reprioritize a sub-issue to a different position in the parent list.