Skip to content

Commit 12e36e8

Browse files
committed
Merge branch 'feature/formalize-builtin-extensions-and-external-extensions' into develop
2 parents 3c8a745 + 41256ae commit 12e36e8

36 files changed

Lines changed: 1484 additions & 389 deletions
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "1540"
4+
version = "1.7">
5+
<BuildAction
6+
parallelizeBuildables = "YES"
7+
buildImplicitDependencies = "YES"
8+
buildArchitectures = "Automatic">
9+
<BuildActionEntries>
10+
<BuildActionEntry
11+
buildForTesting = "YES"
12+
buildForRunning = "YES"
13+
buildForProfiling = "YES"
14+
buildForArchiving = "YES"
15+
buildForAnalyzing = "YES">
16+
<BuildableReference
17+
BuildableIdentifier = "primary"
18+
BlueprintIdentifier = "C8738B622BE4D4B900609E7F"
19+
BuildableName = "CommunicationBridge"
20+
BlueprintName = "CommunicationBridge"
21+
ReferencedContainer = "container:Copilot for Xcode.xcodeproj">
22+
</BuildableReference>
23+
</BuildActionEntry>
24+
</BuildActionEntries>
25+
</BuildAction>
26+
<TestAction
27+
buildConfiguration = "Debug"
28+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
29+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
30+
shouldUseLaunchSchemeArgsEnv = "YES"
31+
shouldAutocreateTestPlan = "YES">
32+
</TestAction>
33+
<LaunchAction
34+
buildConfiguration = "Debug"
35+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
36+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
37+
launchStyle = "0"
38+
useCustomWorkingDirectory = "NO"
39+
ignoresPersistentStateOnLaunch = "NO"
40+
debugDocumentVersioning = "YES"
41+
debugServiceExtension = "internal"
42+
allowLocationSimulation = "YES"
43+
viewDebuggingEnabled = "No">
44+
<BuildableProductRunnable
45+
runnableDebuggingMode = "0">
46+
<BuildableReference
47+
BuildableIdentifier = "primary"
48+
BlueprintIdentifier = "C8738B622BE4D4B900609E7F"
49+
BuildableName = "CommunicationBridge"
50+
BlueprintName = "CommunicationBridge"
51+
ReferencedContainer = "container:Copilot for Xcode.xcodeproj">
52+
</BuildableReference>
53+
</BuildableProductRunnable>
54+
</LaunchAction>
55+
<ProfileAction
56+
buildConfiguration = "Release"
57+
shouldUseLaunchSchemeArgsEnv = "YES"
58+
savedToolIdentifier = ""
59+
useCustomWorkingDirectory = "NO"
60+
debugDocumentVersioning = "YES">
61+
<BuildableProductRunnable
62+
runnableDebuggingMode = "0">
63+
<BuildableReference
64+
BuildableIdentifier = "primary"
65+
BlueprintIdentifier = "C8738B622BE4D4B900609E7F"
66+
BuildableName = "CommunicationBridge"
67+
BlueprintName = "CommunicationBridge"
68+
ReferencedContainer = "container:Copilot for Xcode.xcodeproj">
69+
</BuildableReference>
70+
</BuildableProductRunnable>
71+
</ProfileAction>
72+
<AnalyzeAction
73+
buildConfiguration = "Debug">
74+
</AnalyzeAction>
75+
<ArchiveAction
76+
buildConfiguration = "Release"
77+
revealArchiveInOrganizer = "YES">
78+
</ArchiveAction>
79+
</Scheme>
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "1540"
4+
version = "1.7">
5+
<BuildAction
6+
parallelizeBuildables = "YES"
7+
buildImplicitDependencies = "YES"
8+
buildArchitectures = "Automatic">
9+
<BuildActionEntries>
10+
<BuildActionEntry
11+
buildForTesting = "YES"
12+
buildForRunning = "YES"
13+
buildForProfiling = "YES"
14+
buildForArchiving = "YES"
15+
buildForAnalyzing = "YES">
16+
<BuildableReference
17+
BuildableIdentifier = "primary"
18+
BlueprintIdentifier = "C8738B772BE5363800609E7F"
19+
BuildableName = "SandboxedClientTester.app"
20+
BlueprintName = "SandboxedClientTester"
21+
ReferencedContainer = "container:Copilot for Xcode.xcodeproj">
22+
</BuildableReference>
23+
</BuildActionEntry>
24+
</BuildActionEntries>
25+
</BuildAction>
26+
<TestAction
27+
buildConfiguration = "Debug"
28+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
29+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
30+
shouldUseLaunchSchemeArgsEnv = "YES"
31+
shouldAutocreateTestPlan = "YES">
32+
</TestAction>
33+
<LaunchAction
34+
buildConfiguration = "Debug"
35+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
36+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
37+
launchStyle = "0"
38+
useCustomWorkingDirectory = "NO"
39+
ignoresPersistentStateOnLaunch = "NO"
40+
debugDocumentVersioning = "YES"
41+
debugServiceExtension = "internal"
42+
allowLocationSimulation = "YES">
43+
<BuildableProductRunnable
44+
runnableDebuggingMode = "0">
45+
<BuildableReference
46+
BuildableIdentifier = "primary"
47+
BlueprintIdentifier = "C8738B772BE5363800609E7F"
48+
BuildableName = "SandboxedClientTester.app"
49+
BlueprintName = "SandboxedClientTester"
50+
ReferencedContainer = "container:Copilot for Xcode.xcodeproj">
51+
</BuildableReference>
52+
</BuildableProductRunnable>
53+
</LaunchAction>
54+
<ProfileAction
55+
buildConfiguration = "Release"
56+
shouldUseLaunchSchemeArgsEnv = "YES"
57+
savedToolIdentifier = ""
58+
useCustomWorkingDirectory = "NO"
59+
debugDocumentVersioning = "YES">
60+
<BuildableProductRunnable
61+
runnableDebuggingMode = "0">
62+
<BuildableReference
63+
BuildableIdentifier = "primary"
64+
BlueprintIdentifier = "C8738B772BE5363800609E7F"
65+
BuildableName = "SandboxedClientTester.app"
66+
BlueprintName = "SandboxedClientTester"
67+
ReferencedContainer = "container:Copilot for Xcode.xcodeproj">
68+
</BuildableReference>
69+
</BuildableProductRunnable>
70+
</ProfileAction>
71+
<AnalyzeAction
72+
buildConfiguration = "Debug">
73+
</AnalyzeAction>
74+
<ArchiveAction
75+
buildConfiguration = "Release"
76+
revealArchiveInOrganizer = "YES">
77+
</ArchiveAction>
78+
</Scheme>

Core/.swiftpm/xcode/xcshareddata/xcschemes/Core-Package.xcscheme renamed to Core/.swiftpm/xcode/xcshareddata/xcschemes/Client.xcscheme

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "1430"
3+
LastUpgradeVersion = "1540"
44
version = "1.7">
55
<BuildAction
66
parallelizeBuildables = "YES"
7-
buildImplicitDependencies = "YES">
7+
buildImplicitDependencies = "YES"
8+
buildArchitectures = "Automatic">
89
<BuildActionEntries>
910
<BuildActionEntry
1011
buildForTesting = "YES"
@@ -14,9 +15,9 @@
1415
buildForAnalyzing = "YES">
1516
<BuildableReference
1617
BuildableIdentifier = "primary"
17-
BlueprintIdentifier = "Core"
18-
BuildableName = "Core"
19-
BlueprintName = "Core"
18+
BlueprintIdentifier = "Client"
19+
BuildableName = "Client"
20+
BlueprintName = "Client"
2021
ReferencedContainer = "container:">
2122
</BuildableReference>
2223
</BuildActionEntry>
@@ -49,9 +50,9 @@
4950
<MacroExpansion>
5051
<BuildableReference
5152
BuildableIdentifier = "primary"
52-
BlueprintIdentifier = "Core"
53-
BuildableName = "Core"
54-
BlueprintName = "Core"
53+
BlueprintIdentifier = "Client"
54+
BuildableName = "Client"
55+
BlueprintName = "Client"
5556
ReferencedContainer = "container:">
5657
</BuildableReference>
5758
</MacroExpansion>

Tool/.swiftpm/xcode/xcshareddata/xcschemes/Tool-Package.xcscheme renamed to Core/.swiftpm/xcode/xcshareddata/xcschemes/HostApp.xcscheme

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "1430"
3+
LastUpgradeVersion = "1540"
44
version = "1.7">
55
<BuildAction
66
parallelizeBuildables = "YES"
7-
buildImplicitDependencies = "YES">
7+
buildImplicitDependencies = "YES"
8+
buildArchitectures = "Automatic">
89
<BuildActionEntries>
910
<BuildActionEntry
1011
buildForTesting = "YES"
@@ -14,9 +15,9 @@
1415
buildForAnalyzing = "YES">
1516
<BuildableReference
1617
BuildableIdentifier = "primary"
17-
BlueprintIdentifier = "Tool"
18-
BuildableName = "Tool"
19-
BlueprintName = "Tool"
18+
BlueprintIdentifier = "HostApp"
19+
BuildableName = "HostApp"
20+
BlueprintName = "HostApp"
2021
ReferencedContainer = "container:">
2122
</BuildableReference>
2223
</BuildActionEntry>
@@ -49,9 +50,9 @@
4950
<MacroExpansion>
5051
<BuildableReference
5152
BuildableIdentifier = "primary"
52-
BlueprintIdentifier = "Tool"
53-
BuildableName = "Tool"
54-
BlueprintName = "Tool"
53+
BlueprintIdentifier = "HostApp"
54+
BuildableName = "HostApp"
55+
BlueprintName = "HostApp"
5556
ReferencedContainer = "container:">
5657
</BuildableReference>
5758
</MacroExpansion>

Core/Package.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,8 @@ let package = Package(
184184
.target(
185185
name: "SuggestionService",
186186
dependencies: [
187+
.product(name: "UserDefaultsObserver", package: "Tool"),
188+
.product(name: "Preferences", package: "Tool"),
187189
.product(name: "SuggestionModel", package: "Tool"),
188190
.product(name: "SuggestionProvider", package: "Tool")
189191
].pro([

Core/Sources/Service/ScheduledCleaner.swift

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import ActiveApplicationMonitor
22
import AppKit
33
import AXExtension
4+
import BuiltinExtension
45
import Foundation
56
import Logger
67
import Workspace
@@ -32,7 +33,7 @@ public final class ScheduledCleaner {
3233
@ServiceActor
3334
func cleanUp() async {
3435
guard let service else { return }
35-
36+
3637
let workspaceInfos = XcodeInspector.shared.xcodes.reduce(
3738
into: [
3839
XcodeAppInstanceInspector.WorkspaceIdentifier:
@@ -82,18 +83,15 @@ public final class ScheduledCleaner {
8283
await workspace.cleanUp(availableTabs: tabs)
8384
}
8485
}
85-
86+
8687
#if canImport(ProService)
8788
await service.proService.cleanUp(workspaceInfos: workspaceInfos)
8889
#endif
8990
}
9091

9192
@ServiceActor
9293
public func closeAllChildProcesses() async {
93-
guard let service else { return }
94-
for (_, workspace) in service.workspacePool.workspaces {
95-
await workspace.terminateSuggestionService()
96-
}
94+
BuiltinExtensionManager.shared.terminate()
9795
}
9896
}
9997

Core/Sources/Service/Service.swift

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
import BuiltinExtension
2+
import CodeiumService
13
import Combine
24
import Dependencies
35
import Foundation
6+
import GitHubCopilotService
47
import SuggestionService
58
import Toast
69
import Workspace
@@ -39,11 +42,22 @@ public final class Service {
3942
private init() {
4043
@Dependency(\.workspacePool) var workspacePool
4144

45+
BuiltinExtensionManager.shared.setupExtensions([
46+
GitHubCopilotExtension(workspacePool: workspacePool),
47+
CodeiumExtension(workspacePool: workspacePool),
48+
])
4249
scheduledCleaner = .init()
4350
workspacePool.registerPlugin {
44-
SuggestionServiceWorkspacePlugin(workspace: $0) { projectRootURL, onLaunched in
45-
SuggestionService(projectRootURL: projectRootURL, onServiceLaunched: onLaunched)
46-
}
51+
SuggestionServiceWorkspacePlugin(workspace: $0) { SuggestionService.service() }
52+
}
53+
workspacePool.registerPlugin {
54+
GitHubCopilotWorkspacePlugin(workspace: $0)
55+
}
56+
workspacePool.registerPlugin {
57+
CodeiumWorkspacePlugin(workspace: $0)
58+
}
59+
workspacePool.registerPlugin {
60+
BuiltinExtensionWorkspacePlugin(workspace: $0)
4761
}
4862
self.workspacePool = workspacePool
4963
globalShortcutManager = .init(guiController: guiController)
@@ -86,7 +100,7 @@ public final class Service {
86100
}.store(in: &cancellable)
87101
}
88102
}
89-
103+
90104
@MainActor
91105
public func prepareForExit() async {
92106
#if canImport(ProService)
Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
import Foundation
2-
import Workspace
32
import SuggestionProvider
3+
import Workspace
44
import WorkspaceSuggestionService
55

66
extension Workspace {
77
@WorkspaceActor
88
func cleanUp(availableTabs: Set<String>) {
99
for (fileURL, _) in filespaces {
1010
if isFilespaceExpired(fileURL: fileURL, availableTabs: availableTabs) {
11-
Task {
12-
try await suggestionService?.notifyCloseTextDocument(fileURL: fileURL)
13-
}
1411
openedFileRecoverableStorage.closeFile(fileURL: fileURL)
1512
closeFilespace(fileURL: fileURL)
1613
}
@@ -26,10 +23,10 @@ extension Workspace {
2623

2724
func cancelInFlightRealtimeSuggestionRequests() async {
2825
guard let suggestionService else { return }
29-
await suggestionService.cancelRequest()
30-
}
31-
32-
func terminateSuggestionService() async {
33-
await suggestionPlugin?.terminateSuggestionService()
26+
await suggestionService.cancelRequest(workspaceInfo: .init(
27+
workspaceURL: workspaceURL,
28+
projectURL: projectRootURL
29+
))
3430
}
3531
}
32+

0 commit comments

Comments
 (0)