@@ -46,6 +46,12 @@ extension AppDelegate {
4646 keyEquivalent: " "
4747 )
4848
49+ let openExtensionManager = NSMenuItem (
50+ title: " Open Extension Manager " ,
51+ action: #selector( openExtensionManager) ,
52+ keyEquivalent: " "
53+ )
54+
4955 let openCopilotForXcode = NSMenuItem (
5056 title: " Open \( hostAppName) " ,
5157 action: #selector( openCopilotForXcode) ,
@@ -82,18 +88,19 @@ extension AppDelegate {
8288 keyEquivalent: " "
8389 )
8490 quitItem. target = self
85-
91+
8692 let reactivateObservationsItem = NSMenuItem (
8793 title: " Reactivate Observations to Xcode " ,
8894 action: #selector( reactivateObservationsToXcode) ,
8995 keyEquivalent: " "
9096 )
91-
97+
9298 reactivateObservationsItem. target = self
9399
94100 statusBarMenu. addItem ( copilotName)
95101 statusBarMenu. addItem ( openCopilotForXcode)
96102 statusBarMenu. addItem ( checkForUpdate)
103+ statusBarMenu. addItem ( openExtensionManager)
97104 statusBarMenu. addItem ( . separator( ) )
98105 statusBarMenu. addItem ( openGlobalChat)
99106 statusBarMenu. addItem ( . separator( ) )
@@ -216,16 +223,28 @@ extension AppDelegate: NSMenuDelegate {
216223 }
217224}
218225
226+ import XPCShared
227+
219228private extension AppDelegate {
220229 @objc func restartXcodeInspector( ) {
221230 Task {
222231 await XcodeInspector . shared. restart ( cleanUp: true )
223232 }
224233 }
225-
234+
226235 @objc func reactivateObservationsToXcode( ) {
227236 XcodeInspector . shared. reactivateObservationsToXcode ( )
228237 }
238+
239+ @objc func openExtensionManager( ) {
240+ guard let data = try ? JSONEncoder ( ) . encode ( ExtensionServiceRequests . OpenExtensionManager ( ) )
241+ else { return }
242+ service. handleXPCServiceRequests (
243+ endpoint: ExtensionServiceRequests . OpenExtensionManager. endpoint,
244+ requestBody: data,
245+ reply: { _, _ in }
246+ )
247+ }
229248}
230249
231250private extension NSMenuItem {
0 commit comments