Skip to content

Commit d2a1578

Browse files
committed
Merge branch 'feature/suggestion-service' into develop
2 parents ccbd438 + e50927a commit d2a1578

53 files changed

Lines changed: 418 additions & 269 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Copilot for Xcode/AccountView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import AppKit
22
import Client
3-
import CopilotModel
3+
import SuggestionModel
44
import SwiftUI
55

66
struct AccountView: View {

Copilot for Xcode/ContentView.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import AppKit
2-
import CopilotModel
2+
import GitHubCopilotService
3+
import SuggestionModel
34
import SwiftUI
45

56
struct ContentView: View {
67
@Environment(\.openURL) var openURL
78
@AppStorage("username") var username: String = ""
8-
@State var copilotStatus: CopilotStatus?
9+
@State var copilotStatus: GitHubCopilotAccountStatus?
910
@State var message: String?
1011
@State var userCode: String?
1112

@@ -45,3 +46,4 @@ struct ContentView_Previews: PreviewProvider {
4546
.frame(height: 1200)
4647
}
4748
}
49+

Copilot for Xcode/CopilotView.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import AppKit
22
import Client
3-
import CopilotModel
3+
import GitHubCopilotService
4+
import SuggestionModel
45
import SwiftUI
56

67
struct CopilotView: View {
78
@Environment(\.openURL) var openURL
89
@AppStorage("username") var username: String = ""
9-
@State var copilotStatus: CopilotStatus?
10+
@State var copilotStatus: GitHubCopilotAccountStatus?
1011
@State var message: String?
1112
@State var userCode: String?
1213
@State var version: String?
@@ -183,3 +184,4 @@ struct CopilotView_Previews: PreviewProvider {
183184
.background(Color.black)
184185
}
185186
}
187+

Copilot for Xcode/OpenAIView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import AppKit
22
import Client
3-
import CopilotModel
3+
import SuggestionModel
44
import Preferences
55
import SwiftUI
66

Core/Package.swift

Lines changed: 89 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ let package = Package(
2121
.library(
2222
name: "Client",
2323
targets: [
24-
"CopilotModel",
24+
"SuggestionModel",
25+
"GitHubCopilotService",
2526
"Client",
2627
"XPCShared",
2728
"Preferences",
@@ -42,40 +43,18 @@ let package = Package(
4243
.package(url: "https://github.com/alfianlosari/GPTEncoder", from: "1.0.4"),
4344
],
4445
targets: [
45-
.target(name: "CGEventObserver"),
46-
.target(
47-
name: "CopilotService",
48-
dependencies: ["LanguageClient", "CopilotModel", "XPCShared", "Preferences"]
49-
),
50-
.testTarget(
51-
name: "CopilotServiceTests",
52-
dependencies: ["CopilotService"]
53-
),
54-
.target(
55-
name: "CopilotModel",
56-
dependencies: ["LanguageClient"]
57-
),
58-
.testTarget(
59-
name: "CopilotModelTests",
60-
dependencies: ["CopilotModel"]
61-
),
62-
.target(
63-
name: "SuggestionInjector",
64-
dependencies: ["CopilotModel"]
65-
),
66-
.testTarget(
67-
name: "SuggestionInjectorTests",
68-
dependencies: ["SuggestionInjector"]
69-
),
46+
// MARK: - Main
47+
7048
.target(
7149
name: "Client",
72-
dependencies: ["CopilotModel", "Preferences", "XPCShared", "Logger"]
50+
dependencies: ["SuggestionModel", "Preferences", "XPCShared", "Logger"]
7351
),
7452
.target(
7553
name: "Service",
7654
dependencies: [
77-
"CopilotModel",
78-
"CopilotService",
55+
"SuggestionModel",
56+
"SuggestionService",
57+
"GitHubCopilotService",
7958
"OpenAIService",
8059
"Preferences",
8160
"XPCShared",
@@ -92,31 +71,75 @@ let package = Package(
9271
.product(name: "AsyncAlgorithms", package: "swift-async-algorithms"),
9372
]
9473
),
95-
.target(
96-
name: "XPCShared",
97-
dependencies: ["CopilotModel"]
98-
),
9974
.testTarget(
10075
name: "ServiceTests",
10176
dependencies: [
10277
"Service",
10378
"Client",
104-
"CopilotService",
79+
"GitHubCopilotService",
10580
"SuggestionInjector",
10681
"Preferences",
10782
"XPCShared",
10883
"Environment",
10984
]
11085
),
111-
.target(name: "FileChangeChecker"),
112-
.target(name: "LaunchAgentManager"),
113-
.target(name: "DisplayLink"),
114-
.target(name: "ActiveApplicationMonitor"),
115-
.target(name: "AXNotificationStream"),
11686
.target(
11787
name: "Environment",
118-
dependencies: ["ActiveApplicationMonitor", "CopilotService", "AXExtension"]
88+
dependencies: ["ActiveApplicationMonitor", "GitHubCopilotService", "AXExtension"]
89+
),
90+
.target(name: "Preferences"),
91+
92+
// MARK: - XPC Related
93+
94+
.target(
95+
name: "XPCShared",
96+
dependencies: ["SuggestionModel"]
97+
),
98+
99+
// MARK: - Suggestion Service
100+
101+
.target(
102+
name: "SuggestionModel",
103+
dependencies: ["LanguageClient"]
104+
),
105+
.testTarget(
106+
name: "SuggestionModelTests",
107+
dependencies: ["SuggestionModel"]
108+
),
109+
.target(
110+
name: "SuggestionInjector",
111+
dependencies: ["SuggestionModel"]
112+
),
113+
.testTarget(
114+
name: "SuggestionInjectorTests",
115+
dependencies: ["SuggestionInjector"]
116+
),
117+
.target(name: "SuggestionService", dependencies: [
118+
"GitHubCopilotService",
119+
]),
120+
121+
// MARK: - Prompt To Code
122+
123+
.target(
124+
name: "PromptToCodeService",
125+
dependencies: ["OpenAIService", "Environment", "GitHubCopilotService",
126+
"SuggestionModel"]
127+
),
128+
.testTarget(name: "PromptToCodeServiceTests", dependencies: ["PromptToCodeService"]),
129+
130+
// MARK: - Chat
131+
132+
.target(
133+
name: "ChatService",
134+
dependencies: ["OpenAIService", "ChatPlugins", "Environment"]
135+
),
136+
.target(
137+
name: "ChatPlugins",
138+
dependencies: ["OpenAIService", "Environment", "Terminal"]
119139
),
140+
141+
// MARK: - UI
142+
120143
.target(
121144
name: "SuggestionWidget",
122145
dependencies: [
@@ -130,6 +153,17 @@ let package = Package(
130153
]
131154
),
132155
.testTarget(name: "SuggestionWidgetTests", dependencies: ["SuggestionWidget"]),
156+
157+
// MARK: - Helpers
158+
159+
.target(name: "CGEventObserver"),
160+
.target(name: "Logger"),
161+
.target(name: "FileChangeChecker"),
162+
.target(name: "LaunchAgentManager"),
163+
.target(name: "DisplayLink"),
164+
.target(name: "ActiveApplicationMonitor"),
165+
.target(name: "AXNotificationStream"),
166+
.target(name: "Terminal"),
133167
.target(
134168
name: "UpdateChecker",
135169
dependencies: [
@@ -139,7 +173,20 @@ let package = Package(
139173
]
140174
),
141175
.target(name: "AXExtension"),
142-
.target(name: "Logger"),
176+
177+
// MARK: - GitHub Copilot
178+
179+
.target(
180+
name: "GitHubCopilotService",
181+
dependencies: ["LanguageClient", "SuggestionModel", "XPCShared", "Preferences"]
182+
),
183+
.testTarget(
184+
name: "GitHubCopilotServiceTests",
185+
dependencies: ["GitHubCopilotService"]
186+
),
187+
188+
// MARK: - OpenAI
189+
143190
.target(
144191
name: "OpenAIService",
145192
dependencies: [
@@ -153,14 +200,6 @@ let package = Package(
153200
name: "OpenAIServiceTests",
154201
dependencies: ["OpenAIService"]
155202
),
156-
.target(name: "Preferences"),
157-
.target(name: "ChatPlugins", dependencies: ["OpenAIService", "Environment", "Terminal"]),
158-
.target(name: "Terminal"),
159-
.target(name: "ChatService", dependencies: ["OpenAIService", "ChatPlugins", "Environment"]),
160-
.target(
161-
name: "PromptToCodeService",
162-
dependencies: ["OpenAIService", "Environment", "CopilotService", "CopilotModel"]
163-
),
164-
.testTarget(name: "PromptToCodeServiceTests", dependencies: ["PromptToCodeService"]),
165203
]
166204
)
205+

Core/Sources/Client/AsyncXPCService.swift

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import CopilotModel
21
import Foundation
2+
import GitHubCopilotService
33
import Logger
4+
import SuggestionModel
45
import XPCShared
56

67
public struct AsyncXPCService {
@@ -11,7 +12,7 @@ public struct AsyncXPCService {
1112
self.service = service
1213
}
1314

14-
public func checkStatus() async throws -> CopilotStatus {
15+
public func checkStatus() async throws -> GitHubCopilotAccountStatus {
1516
try await withXPCServiceConnected(connection: connection) {
1617
service, continuation in
1718
service.checkStatus { status, error in
@@ -20,8 +21,8 @@ public struct AsyncXPCService {
2021
return
2122
}
2223
continuation.resume(
23-
status.flatMap(CopilotStatus.init(rawValue:))
24-
?? CopilotStatus.notAuthorized
24+
status.flatMap(GitHubCopilotAccountStatus.init(rawValue:))
25+
?? GitHubCopilotAccountStatus.notAuthorized
2526
)
2627
}
2728
}
@@ -63,7 +64,7 @@ public struct AsyncXPCService {
6364
}
6465

6566
public func signInConfirm(userCode: String) async throws
66-
-> (username: String, status: CopilotStatus)
67+
-> (username: String, status: GitHubCopilotAccountStatus)
6768
{
6869
try await withXPCServiceConnected(connection: connection) {
6970
service, continuation in
@@ -74,13 +75,13 @@ public struct AsyncXPCService {
7475
}
7576
continuation.resume((
7677
username ?? "",
77-
status.flatMap(CopilotStatus.init(rawValue:)) ?? .alreadySignedIn
78+
status.flatMap(GitHubCopilotAccountStatus.init(rawValue:)) ?? .alreadySignedIn
7879
))
7980
}
8081
}
8182
}
8283

83-
public func signOut() async throws -> CopilotStatus {
84+
public func signOut() async throws -> GitHubCopilotAccountStatus {
8485
try await withXPCServiceConnected(connection: connection) {
8586
service, continuation in
8687
service.signOut { finishstatus, error in
@@ -89,7 +90,10 @@ public struct AsyncXPCService {
8990
return
9091
}
9192
continuation
92-
.resume(finishstatus.flatMap(CopilotStatus.init(rawValue:)) ?? .notSignedIn)
93+
.resume(
94+
finishstatus
95+
.flatMap(GitHubCopilotAccountStatus.init(rawValue:)) ?? .notSignedIn
96+
)
9397
}
9498
}
9599
}
@@ -257,3 +261,4 @@ func suggestionRequest(
257261
}
258262
}
259263
}
264+

0 commit comments

Comments
 (0)