| 1 | using AgentForge.Abstractions; |
| 2 | |
| 3 | namespace AgentForge.Plugin.MergeRequest; |
| 4 | |
| 5 | internal static class ForgeMergeRequestCommandRegistration |
| 6 | { |
| 7 | internal static void Register(ForgeCommandRegistry registry) |
| 8 | { |
| 9 | registry.Add(new ForgeCommandDescriptor |
| 10 | { |
| 11 | Domain = "forge", |
| 12 | Object = "merge_request", |
| 13 | Intent = "open", |
| 14 | CommandId = "forge.merge_request.open", |
| 15 | Path = "/mr open", |
| 16 | PathAliases = ["/forge merge_request open", "/forge mr open"], |
| 17 | Help = "Open merge request by number.", |
| 18 | Category = "Merge request", |
| 19 | ArgTail = "required", |
| 20 | Surfaces = ["command-bar", "global"], |
| 21 | RequiredCapabilities = ["read"], |
| 22 | Bindings = new ForgeCommandBindings |
| 23 | { |
| 24 | View = "/view/repos/{repo}/merge-requests/{number}", |
| 25 | Mcp = ForgeMcpToolNames.MergeRequestOpen, |
| 26 | }, |
| 27 | }); |
| 28 | |
| 29 | registry.Add(new ForgeCommandDescriptor |
| 30 | { |
| 31 | Domain = "forge", |
| 32 | Object = "merge_request", |
| 33 | Intent = "list", |
| 34 | CommandId = "forge.merge_request.list", |
| 35 | Path = "/mr list", |
| 36 | PathAliases = ["/forge merge_request list", "/forge mr list"], |
| 37 | Help = "List merge requests for the repository.", |
| 38 | Category = "Merge request", |
| 39 | ArgTail = "optional", |
| 40 | Surfaces = ["command-bar", "global"], |
| 41 | RequiredCapabilities = ["read"], |
| 42 | Bindings = new ForgeCommandBindings |
| 43 | { |
| 44 | View = "/view/repos/{repo}?tab=merge-requests", |
| 45 | Mcp = ForgeMcpToolNames.MergeRequestList, |
| 46 | }, |
| 47 | }); |
| 48 | |
| 49 | registry.Add(new ForgeCommandDescriptor |
| 50 | { |
| 51 | Domain = "forge", |
| 52 | Object = "merge_request", |
| 53 | Intent = "accept", |
| 54 | CommandId = "forge.merge_request.accept", |
| 55 | Path = "/mr accept", |
| 56 | PathAliases = ["/forge merge_request accept", "/forge mr accept"], |
| 57 | Help = "Accept (merge) open merge request.", |
| 58 | Category = "Merge request", |
| 59 | ArgTail = "optional", |
| 60 | Surfaces = ["command-bar", "global", "mr-comment"], |
| 61 | RequiredCapabilities = ["accept_merge"], |
| 62 | Bindings = new ForgeCommandBindings |
| 63 | { |
| 64 | Mcp = ForgeMcpToolNames.MergeRequestAccept, |
| 65 | }, |
| 66 | }); |
| 67 | |
| 68 | registry.Add(new ForgeCommandDescriptor |
| 69 | { |
| 70 | Domain = "forge", |
| 71 | Object = "merge_request", |
| 72 | Intent = "reject", |
| 73 | CommandId = "forge.merge_request.reject", |
| 74 | Path = "/mr reject", |
| 75 | PathAliases = ["/forge merge_request reject", "/forge mr reject"], |
| 76 | Help = "Reject merge request (number in tail or mrNumber in context).", |
| 77 | Category = "Merge request", |
| 78 | ArgTail = "optional", |
| 79 | Surfaces = ["command-bar", "global", "mr-comment"], |
| 80 | RequiredCapabilities = ["write"], |
| 81 | Bindings = new ForgeCommandBindings |
| 82 | { |
| 83 | Mcp = ForgeMcpToolNames.MergeRequestReject, |
| 84 | }, |
| 85 | }); |
| 86 | |
| 87 | registry.Add(new ForgeCommandDescriptor |
| 88 | { |
| 89 | Domain = "forge", |
| 90 | Object = "merge_request", |
| 91 | Intent = "diff", |
| 92 | CommandId = "forge.merge_request.diff", |
| 93 | Path = "/mr diff", |
| 94 | PathAliases = ["/forge merge_request diff", "/forge mr diff"], |
| 95 | Help = "Show merge request diff (number in tail or mrNumber in context).", |
| 96 | Category = "Merge request", |
| 97 | ArgTail = "optional", |
| 98 | Surfaces = ["command-bar", "global", "mr-comment"], |
| 99 | RequiredCapabilities = ["read"], |
| 100 | Bindings = new ForgeCommandBindings |
| 101 | { |
| 102 | View = "/view/repos/{repo}/merge-requests/{number}", |
| 103 | Mcp = ForgeMcpToolNames.MergeRequestDiff, |
| 104 | }, |
| 105 | }); |
| 106 | |
| 107 | registry.Add(new ForgeCommandDescriptor |
| 108 | { |
| 109 | Domain = "forge", |
| 110 | Object = "merge_request", |
| 111 | Intent = "comment", |
| 112 | CommandId = "forge.merge_request.comment", |
| 113 | Path = "/mr comment", |
| 114 | PathAliases = ["/forge merge_request comment", "/forge mr comment"], |
| 115 | Help = "Add comment to merge request (body in tail; MR number from context).", |
| 116 | Category = "Merge request", |
| 117 | ArgTail = "required", |
| 118 | Surfaces = ["mr-comment"], |
| 119 | RequiredCapabilities = ["write"], |
| 120 | Bindings = new ForgeCommandBindings |
| 121 | { |
| 122 | Mcp = ForgeMcpToolNames.MergeRequestComment, |
| 123 | }, |
| 124 | }); |
| 125 | } |
| 126 | } |
| 127 | |