forked from github/CopilotForXcode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConversationServiceProvider.swift
More file actions
65 lines (57 loc) · 2.24 KB
/
ConversationServiceProvider.swift
File metadata and controls
65 lines (57 loc) · 2.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import CopilotForXcodeKit
public protocol ConversationServiceType {
func createConversation(_ request: ConversationRequest, workspace: WorkspaceInfo) async throws
func createTurn(with conversationId: String, request: ConversationRequest, workspace: WorkspaceInfo) async throws
func cancelProgress(_ workDoneToken: String, workspace: WorkspaceInfo) async throws
func rateConversation(turnId: String, rating: ConversationRating, workspace: WorkspaceInfo) async throws
func copyCode(request: CopyCodeRequest, workspace: WorkspaceInfo) async throws
}
public protocol ConversationServiceProvider {
func createConversation(_ request: ConversationRequest) async throws
func createTurn(with conversationId: String, request: ConversationRequest) async throws
func stopReceivingMessage(_ workDoneToken: String) async throws
func rateConversation(turnId: String, rating: ConversationRating) async throws
func copyCode(_ request: CopyCodeRequest) async throws
}
public struct ConversationRequest {
public var workDoneToken: String
public var content: String
public var workspaceFolder: String
public var skills: [String]
public init(
workDoneToken: String,
content: String,
workspaceFolder: String,
skills: [String]
) {
self.workDoneToken = workDoneToken
self.content = content
self.workspaceFolder = workspaceFolder
self.skills = skills
}
}
public struct CopyCodeRequest {
public var turnId: String
public var codeBlockIndex: Int
public var copyType: CopyKind
public var copiedCharacters: Int
public var totalCharacters: Int
public var copiedText: String
init(turnId: String, codeBlockIndex: Int, copyType: CopyKind, copiedCharacters: Int, totalCharacters: Int, copiedText: String) {
self.turnId = turnId
self.codeBlockIndex = codeBlockIndex
self.copyType = copyType
self.copiedCharacters = copiedCharacters
self.totalCharacters = totalCharacters
self.copiedText = copiedText
}
}
public enum ConversationRating: Int, Codable {
case unrated = 0
case helpful = 1
case unhelpful = -1
}
public enum CopyKind: Int, Codable {
case keyboard = 1
case toolbar = 2
}