@@ -2,7 +2,8 @@ import Foundation
22import Terminal
33
44public struct GitHubCopilotInstallationManager {
5- private static var isInstalling = false
5+ @GitHubCopilotSuggestionActor
6+ public private( set) static var isInstalling = false
67
78 static var downloadURL : URL {
89 let commitHash = " c79d711cbf7c6672c6c57d6df7c5ab7b6cac2b7a "
@@ -11,13 +12,14 @@ public struct GitHubCopilotInstallationManager {
1112 }
1213
1314 static let latestSupportedVersion = " 1.33.0 "
15+ static let minimumSupportedVersion = " 1.32.0 "
1416
1517 public init ( ) { }
1618
1719 public enum InstallationStatus {
1820 case notInstalled
1921 case installed( String )
20- case outdated( current: String , latest: String )
22+ case outdated( current: String , latest: String , mandatory : Bool )
2123 case unsupported( current: String , latest: String )
2224 }
2325
@@ -38,15 +40,22 @@ public struct GitHubCopilotInstallationManager {
3840 {
3941 switch version. compare ( Self . latestSupportedVersion) {
4042 case . orderedAscending:
41- return . outdated( current: version, latest: Self . latestSupportedVersion)
43+ switch version. compare ( Self . minimumSupportedVersion) {
44+ case . orderedAscending:
45+ return . outdated( current: version, latest: Self . latestSupportedVersion, mandatory: true )
46+ case . orderedSame:
47+ return . outdated( current: version, latest: Self . latestSupportedVersion, mandatory: false )
48+ case . orderedDescending:
49+ return . outdated( current: version, latest: Self . latestSupportedVersion, mandatory: false )
50+ }
4251 case . orderedSame:
4352 return . installed( version)
4453 case . orderedDescending:
4554 return . unsupported( current: version, latest: Self . latestSupportedVersion)
4655 }
4756 }
4857
49- return . outdated( current: " Unknown " , latest: Self . latestSupportedVersion)
58+ return . outdated( current: " Unknown " , latest: Self . latestSupportedVersion, mandatory : false )
5059 }
5160
5261 public enum InstallationStep {
@@ -75,7 +84,7 @@ public struct GitHubCopilotInstallationManager {
7584
7685 public func installLatestVersion( ) -> AsyncThrowingStream < InstallationStep , Swift . Error > {
7786 AsyncThrowingStream < InstallationStep , Swift . Error > { continuation in
78- Task {
87+ Task { @ GitHubCopilotSuggestionActor in
7988 guard !GitHubCopilotInstallationManager. isInstalling else {
8089 continuation. finish ( throwing: Error . isInstalling)
8190 return
0 commit comments