Forge
csharp3407750f
1using AgentForge.Abstractions;
2
3namespace AgentForge.Plugin.MergeRequest;
4
5internal 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
View only · write via MCP/CIDE