Skip to content

Commit 0aaf5ce

Browse files
committed
Move ModificationState to ModificationBasic
1 parent ebbf15f commit 0aaf5ce

File tree

4 files changed

+89
-100
lines changed

4 files changed

+89
-100
lines changed

Core/Sources/Service/SuggestionCommandHandler/PseudoCommandHandler.swift

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import Logger
1010
import ModificationBasic
1111
import PlusFeatureFlag
1212
import Preferences
13+
import PromptToCodeCustomization
1314
import SuggestionBasic
1415
import SuggestionInjector
1516
import Terminal
@@ -271,23 +272,14 @@ struct PseudoCommandHandler: CommandHandler {
271272
}
272273
}
273274

274-
func presentModification(
275-
source: ModificationAgentRequest.ModificationSource,
276-
snippets: [ModificationSnippet]
277-
) async {
275+
func presentModification(state: Shared<ModificationState>) async {
278276
do {
279277
@Dependency(\.workspacePool) var workspacePool
280278
let (_, filespace) = try await workspacePool
281-
.fetchOrCreateWorkspaceAndFilespace(fileURL: source.documentURL)
279+
.fetchOrCreateWorkspaceAndFilespace(fileURL: state.wrappedValue.source.documentURL)
282280
let store = await Service.shared.guiController.store
283281
await store.send(.promptToCodeGroup(.createPromptToCode(.init(
284-
promptToCodeState: Shared(.init(
285-
source: source,
286-
snippets: IdentifiedArray(uniqueElements: snippets),
287-
instruction: "",
288-
extraSystemPrompt: "",
289-
isAttachedToTarget: true
290-
)),
282+
promptToCodeState: state,
291283
indentSize: filespace.codeMetadata.indentSize ?? 4,
292284
usesTabsForIndentation: filespace.codeMetadata.usesTabsForIndentation ?? false,
293285
commandName: nil,

Tool/Sources/CommandHandler/CommandHandler.swift

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
import ComposableArchitecture
12
import Dependencies
23
import Foundation
34
import ModificationBasic
45
import Preferences
6+
import PromptToCodeCustomization
57
import SuggestionBasic
68
import Toast
79
import XcodeInspector
@@ -26,10 +28,7 @@ public protocol CommandHandler {
2628
// MARK: Modification
2729

2830
func acceptModification() async
29-
func presentModification(
30-
source: ModificationAgentRequest.ModificationSource,
31-
snippets: [ModificationSnippet]
32-
) async
31+
func presentModification(state: Shared<ModificationState>) async
3332

3433
// MARK: Custom Command
3534

@@ -107,11 +106,8 @@ public final class UniversalCommandHandler: CommandHandler {
107106
await commandHandler.acceptModification()
108107
}
109108

110-
public func presentModification(
111-
source: ModificationAgentRequest.ModificationSource,
112-
snippets: [ModificationSnippet]
113-
) async {
114-
await commandHandler.presentModification(source: source, snippets: snippets)
109+
public func presentModification(state: Shared<ModificationState>) async {
110+
await commandHandler.presentModification(state: state)
115111
}
116112

117113
public func handleCustomCommand(_ command: CustomCommand) async {
@@ -168,10 +164,7 @@ struct NOOPCommandHandler: CommandHandler {
168164
print("accept prompt to code")
169165
}
170166

171-
func presentModification(
172-
source: ModificationAgentRequest.ModificationSource,
173-
snippets: [ModificationSnippet]
174-
) {
167+
func presentModification(state: Shared<ModificationState>) {
175168
print("present modification")
176169
}
177170

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import Foundation
2+
import IdentifiedCollections
3+
import SuggestionBasic
4+
5+
public struct ModificationState: Equatable {
6+
public typealias Source = ModificationAgentRequest.ModificationSource
7+
8+
public var source: Source
9+
public var history: [ModificationHistoryNode] = []
10+
public var snippets: IdentifiedArrayOf<ModificationSnippet> = []
11+
public var isGenerating: Bool = false
12+
public var instruction: String
13+
public var extraSystemPrompt: String
14+
public var isAttachedToTarget: Bool = true
15+
16+
public init(
17+
source: Source,
18+
history: [ModificationHistoryNode] = [],
19+
snippets: IdentifiedArrayOf<ModificationSnippet>,
20+
instruction: String,
21+
extraSystemPrompt: String,
22+
isAttachedToTarget: Bool
23+
) {
24+
self.history = history
25+
self.snippets = snippets
26+
isGenerating = false
27+
self.instruction = instruction
28+
self.isAttachedToTarget = isAttachedToTarget
29+
self.extraSystemPrompt = extraSystemPrompt
30+
self.source = source
31+
}
32+
33+
public init(
34+
source: Source,
35+
originalCode: String,
36+
attachedRange: CursorRange,
37+
instruction: String,
38+
extraSystemPrompt: String
39+
) {
40+
self.init(
41+
source: source,
42+
snippets: [
43+
.init(
44+
startLineIndex: 0,
45+
originalCode: originalCode,
46+
modifiedCode: originalCode,
47+
description: "",
48+
error: nil,
49+
attachedRange: attachedRange
50+
),
51+
],
52+
instruction: instruction,
53+
extraSystemPrompt: extraSystemPrompt,
54+
isAttachedToTarget: !attachedRange.isEmpty
55+
)
56+
}
57+
58+
public mutating func popHistory() {
59+
if !history.isEmpty {
60+
let last = history.removeLast()
61+
snippets = last.snippets
62+
instruction = last.instruction
63+
}
64+
}
65+
66+
public mutating func pushHistory() {
67+
history.append(.init(snippets: snippets, instruction: instruction))
68+
let oldSnippets = snippets
69+
snippets = IdentifiedArrayOf()
70+
for var snippet in oldSnippets {
71+
snippet.originalCode = snippet.modifiedCode
72+
snippet.modifiedCode = ""
73+
snippet.description = ""
74+
snippet.error = nil
75+
snippets.append(snippet)
76+
}
77+
}
78+
}
79+

Tool/Sources/PromptToCodeCustomization/PromptToCodeCustomization.swift

Lines changed: 0 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -59,78 +59,3 @@ struct NoPromptToCodeCustomizedUI: PromptToCodeCustomizedUI {
5959
}
6060
}
6161

62-
public struct ModificationState: Equatable {
63-
public typealias Source = ModificationAgentRequest.ModificationSource
64-
65-
public var source: Source
66-
public var history: [ModificationHistoryNode] = []
67-
public var snippets: IdentifiedArrayOf<ModificationSnippet> = []
68-
public var isGenerating: Bool = false
69-
public var instruction: String
70-
public var extraSystemPrompt: String
71-
public var isAttachedToTarget: Bool = true
72-
73-
public init(
74-
source: Source,
75-
history: [ModificationHistoryNode] = [],
76-
snippets: IdentifiedArrayOf<ModificationSnippet>,
77-
instruction: String,
78-
extraSystemPrompt: String,
79-
isAttachedToTarget: Bool
80-
) {
81-
self.history = history
82-
self.snippets = snippets
83-
isGenerating = false
84-
self.instruction = instruction
85-
self.isAttachedToTarget = isAttachedToTarget
86-
self.extraSystemPrompt = extraSystemPrompt
87-
self.source = source
88-
}
89-
90-
public init(
91-
source: Source,
92-
originalCode: String,
93-
attachedRange: CursorRange,
94-
instruction: String,
95-
extraSystemPrompt: String
96-
) {
97-
self.init(
98-
source: source,
99-
snippets: [
100-
.init(
101-
startLineIndex: 0,
102-
originalCode: originalCode,
103-
modifiedCode: originalCode,
104-
description: "",
105-
error: nil,
106-
attachedRange: attachedRange
107-
),
108-
],
109-
instruction: instruction,
110-
extraSystemPrompt: extraSystemPrompt,
111-
isAttachedToTarget: !attachedRange.isEmpty
112-
)
113-
}
114-
115-
public mutating func popHistory() {
116-
if !history.isEmpty {
117-
let last = history.removeLast()
118-
snippets = last.snippets
119-
instruction = last.instruction
120-
}
121-
}
122-
123-
public mutating func pushHistory() {
124-
history.append(.init(snippets: snippets, instruction: instruction))
125-
let oldSnippets = snippets
126-
snippets = IdentifiedArrayOf()
127-
for var snippet in oldSnippets {
128-
snippet.originalCode = snippet.modifiedCode
129-
snippet.modifiedCode = ""
130-
snippet.description = ""
131-
snippet.error = nil
132-
snippets.append(snippet)
133-
}
134-
}
135-
}
136-

0 commit comments

Comments
 (0)