@@ -4,6 +4,7 @@ import ComposableArchitecture
44import Status
55import SwiftUI
66import Cache
7+ import Client
78
89public struct SignInResponse {
910 public let status : SignInInitiateStatus
@@ -126,7 +127,7 @@ public class GitHubCopilotViewModel: ObservableObject {
126127 waitingForSignIn = false
127128 }
128129
129- public func copyAndOpen( ) {
130+ public func copyAndOpen( fromHostApp : Bool = false ) {
130131 waitingForSignIn = true
131132 guard let signInResponse else {
132133 toast ( " Missing sign in details. " , . error)
@@ -137,10 +138,10 @@ public class GitHubCopilotViewModel: ObservableObject {
137138 pasteboard. setString ( signInResponse. userCode, forType: NSPasteboard . PasteboardType. string)
138139 toast ( " Sign-in code \( signInResponse. userCode) copied " , . info)
139140 NSWorkspace . shared. open ( signInResponse. verificationURL)
140- waitForSignIn ( )
141+ waitForSignIn ( fromHostApp : fromHostApp )
141142 }
142143
143- public func waitForSignIn( ) {
144+ public func waitForSignIn( fromHostApp : Bool = false ) {
144145 Task {
145146 do {
146147 guard waitingForSignIn else { return }
@@ -155,14 +156,19 @@ public class GitHubCopilotViewModel: ObservableObject {
155156 self . status = status
156157 await Status . shared. updateAuthStatus ( . loggedIn, username: username)
157158 broadcastStatusChange ( )
158- let models = try ? await service. models ( )
159- if let models = models, !models. isEmpty {
160- CopilotModelManager . updateLLMs ( models)
159+ if !fromHostApp {
160+ let models = try ? await service. models ( )
161+ if let models = models, !models. isEmpty {
162+ CopilotModelManager . updateLLMs ( models)
163+ }
164+ } else {
165+ let xpcService = try getService ( )
166+ _ = try ? await xpcService. updateCopilotModels ( )
161167 }
162168 } catch let error as GitHubCopilotError {
163169 switch error {
164170 case . languageServerError( . timeout) :
165- waitForSignIn ( )
171+ waitForSignIn ( fromHostApp : fromHostApp )
166172 return
167173 case . languageServerError(
168174 . serverError(
0 commit comments