Skip to content

Commit b39a32b

Browse files
committed
Fix builtin extensions
1 parent 12e36e8 commit b39a32b

File tree

5 files changed

+41
-26
lines changed

5 files changed

+41
-26
lines changed

Tool/Sources/BuiltinExtension/BuiltinExtensionSuggestionServiceProvider.swift

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import CopilotForXcodeKit
22
import Foundation
3+
import Logger
34
import Preferences
45
import SuggestionModel
56
import SuggestionProvider
@@ -31,12 +32,21 @@ public final class BuiltinExtensionSuggestionServiceProvider<
3132
var service: CopilotForXcodeKit.SuggestionServiceType? {
3233
extensionManager.extensions.first { $0 is T }?.suggestionService
3334
}
35+
36+
struct BuiltinExtensionSuggestionServiceNotFoundError: Error, LocalizedError {
37+
var errorDescription: String? {
38+
"Builtin suggestion service not found."
39+
}
40+
}
3441

3542
public func getSuggestions(
3643
_ request: SuggestionProvider.SuggestionRequest,
3744
workspaceInfo: CopilotForXcodeKit.WorkspaceInfo
3845
) async throws -> [SuggestionModel.CodeSuggestion] {
39-
guard let service else { return [] }
46+
guard let service else {
47+
Logger.service.error("Builtin suggestion service not found.")
48+
throw BuiltinExtensionSuggestionServiceNotFoundError()
49+
}
4050
return try await service.getSuggestions(
4151
.init(
4252
fileURL: request.fileURL,
@@ -61,23 +71,32 @@ public final class BuiltinExtensionSuggestionServiceProvider<
6171
public func cancelRequest(
6272
workspaceInfo: CopilotForXcodeKit.WorkspaceInfo
6373
) async {
64-
guard let service else { return }
74+
guard let service else {
75+
Logger.service.error("Builtin suggestion service not found.")
76+
return
77+
}
6578
await service.cancelRequest(workspace: workspaceInfo)
6679
}
6780

6881
public func notifyAccepted(
6982
_ suggestion: SuggestionModel.CodeSuggestion,
7083
workspaceInfo: CopilotForXcodeKit.WorkspaceInfo
7184
) async {
72-
guard let service else { return }
85+
guard let service else {
86+
Logger.service.error("Builtin suggestion service not found.")
87+
return
88+
}
7389
await service.notifyAccepted(suggestion.converted, workspace: workspaceInfo)
7490
}
7591

7692
public func notifyRejected(
7793
_ suggestions: [SuggestionModel.CodeSuggestion],
7894
workspaceInfo: CopilotForXcodeKit.WorkspaceInfo
7995
) async {
80-
guard let service else { return }
96+
guard let service else {
97+
Logger.service.error("Builtin suggestion service not found.")
98+
return
99+
}
81100
await service.notifyRejected(suggestions.map(\.converted), workspace: workspaceInfo)
82101
}
83102
}

Tool/Sources/CodeiumService/CodeiumExtension.swift

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@ import Workspace
88
public final class CodeiumExtension: BuiltinExtension {
99
public var suggestionServiceId: Preferences.BuiltInSuggestionFeatureProvider { .codeium }
1010

11-
public var suggestionService: SuggestionServiceType? { _suggestionService }
12-
public var chatService: ChatServiceType? { nil }
13-
public var promptToCodeService: PromptToCodeServiceType? { nil }
11+
public let suggestionService: CodeiumSuggestionService?
12+
1413
private var extensionUsage = ExtensionUsage(
1514
isSuggestionServiceInUse: false,
1615
isChatServiceInUse: false
@@ -22,12 +21,11 @@ public final class CodeiumExtension: BuiltinExtension {
2221
let workspacePool: WorkspacePool
2322

2423
let serviceLocator: ServiceLocator
25-
let _suggestionService: CodeiumSuggestionService
2624

2725
public init(workspacePool: WorkspacePool) {
2826
self.workspacePool = workspacePool
2927
serviceLocator = .init(workspacePool: workspacePool)
30-
_suggestionService = .init(serviceLocator: serviceLocator)
28+
suggestionService = .init(serviceLocator: serviceLocator)
3129
}
3230

3331
public func workspaceDidOpen(_: WorkspaceInfo) {}

Tool/Sources/CodeiumService/CodeiumSuggestionService.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import Foundation
33
import SuggestionModel
44
import Workspace
55

6-
class CodeiumSuggestionService: SuggestionServiceType {
7-
var configuration: SuggestionServiceConfiguration {
6+
public final class CodeiumSuggestionService: SuggestionServiceType {
7+
public var configuration: SuggestionServiceConfiguration {
88
.init(
99
acceptsRelevantCodeSnippets: true,
1010
mixRelevantCodeSnippetsInSource: true,
@@ -18,7 +18,7 @@ class CodeiumSuggestionService: SuggestionServiceType {
1818
self.serviceLocator = serviceLocator
1919
}
2020

21-
func getSuggestions(
21+
public func getSuggestions(
2222
_ request: SuggestionRequest,
2323
workspace: WorkspaceInfo
2424
) async throws -> [CopilotForXcodeKit.CodeSuggestion] {
@@ -36,22 +36,22 @@ class CodeiumSuggestionService: SuggestionServiceType {
3636
).map(Self.convert)
3737
}
3838

39-
func notifyAccepted(
39+
public func notifyAccepted(
4040
_ suggestion: CopilotForXcodeKit.CodeSuggestion,
4141
workspace: WorkspaceInfo
4242
) async {
4343
guard let service = await serviceLocator.getService(from: workspace) else { return }
4444
await service.notifyAccepted(Self.convert(suggestion))
4545
}
4646

47-
func notifyRejected(
47+
public func notifyRejected(
4848
_ suggestions: [CopilotForXcodeKit.CodeSuggestion],
4949
workspace: WorkspaceInfo
5050
) async {
5151
// unimplemented
5252
}
5353

54-
func cancelRequest(workspace: WorkspaceInfo) async {
54+
public func cancelRequest(workspace: WorkspaceInfo) async {
5555
guard let service = await serviceLocator.getService(from: workspace) else { return }
5656
await service.cancelRequest()
5757
}

Tool/Sources/GitHubCopilotService/GitHubCopilotExtension.swift

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@ import Workspace
88
public final class GitHubCopilotExtension: BuiltinExtension {
99
public var suggestionServiceId: Preferences.BuiltInSuggestionFeatureProvider { .gitHubCopilot }
1010

11-
public var suggestionService: SuggestionServiceType? { _suggestionService }
12-
public var chatService: ChatServiceType? { nil }
13-
public var promptToCodeService: PromptToCodeServiceType? { nil }
11+
public let suggestionService: GitHubCopilotSuggestionService?
12+
1413
private var extensionUsage = ExtensionUsage(
1514
isSuggestionServiceInUse: false,
1615
isChatServiceInUse: false
@@ -22,12 +21,11 @@ public final class GitHubCopilotExtension: BuiltinExtension {
2221
let workspacePool: WorkspacePool
2322

2423
let serviceLocator: ServiceLocator
25-
let _suggestionService: GitHubCopilotSuggestionService
2624

2725
public init(workspacePool: WorkspacePool) {
2826
self.workspacePool = workspacePool
2927
serviceLocator = .init(workspacePool: workspacePool)
30-
_suggestionService = .init(serviceLocator: serviceLocator)
28+
suggestionService = .init(serviceLocator: serviceLocator)
3129
}
3230

3331
public func workspaceDidOpen(_: WorkspaceInfo) {}

Tool/Sources/GitHubCopilotService/Services/GitHubCopilotSuggestionService.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import Foundation
33
import SuggestionModel
44
import Workspace
55

6-
class GitHubCopilotSuggestionService: SuggestionServiceType {
7-
var configuration: SuggestionServiceConfiguration {
6+
public final class GitHubCopilotSuggestionService: SuggestionServiceType {
7+
public var configuration: SuggestionServiceConfiguration {
88
.init(
99
acceptsRelevantCodeSnippets: true,
1010
mixRelevantCodeSnippetsInSource: true,
@@ -18,7 +18,7 @@ class GitHubCopilotSuggestionService: SuggestionServiceType {
1818
self.serviceLocator = serviceLocator
1919
}
2020

21-
func getSuggestions(
21+
public func getSuggestions(
2222
_ request: SuggestionRequest,
2323
workspace: WorkspaceInfo
2424
) async throws -> [CopilotForXcodeKit.CodeSuggestion] {
@@ -36,23 +36,23 @@ class GitHubCopilotSuggestionService: SuggestionServiceType {
3636
).map(Self.convert)
3737
}
3838

39-
func notifyAccepted(
39+
public func notifyAccepted(
4040
_ suggestion: CopilotForXcodeKit.CodeSuggestion,
4141
workspace: WorkspaceInfo
4242
) async {
4343
guard let service = await serviceLocator.getService(from: workspace) else { return }
4444
await service.notifyAccepted(Self.convert(suggestion))
4545
}
4646

47-
func notifyRejected(
47+
public func notifyRejected(
4848
_ suggestions: [CopilotForXcodeKit.CodeSuggestion],
4949
workspace: WorkspaceInfo
5050
) async {
5151
guard let service = await serviceLocator.getService(from: workspace) else { return }
5252
await service.notifyRejected(suggestions.map(Self.convert))
5353
}
5454

55-
func cancelRequest(workspace: WorkspaceInfo) async {
55+
public func cancelRequest(workspace: WorkspaceInfo) async {
5656
guard let service = await serviceLocator.getService(from: workspace) else { return }
5757
await service.cancelRequest()
5858
}

0 commit comments

Comments
 (0)