forked from aws/aws-toolkit-vscode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodel.ts
259 lines (227 loc) · 6.68 KB
/
model.ts
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
/*!
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/
import * as vscode from 'vscode'
import { AdditionalContentEntry, RelevantTextDocument, UserIntent } from '@amzn/codewhisperer-streaming'
import { MatchPolicy, CodeQuery } from '../../clients/chat/v0/model'
import { Selection } from 'vscode'
import { TabOpenType } from '../../../amazonq/webview/ui/storages/tabsStorage'
import { CodeReference } from '../../view/connector/connector'
import { Customization } from '../../../codewhisperer/client/codewhispereruserclient'
import { QuickActionCommand } from '@aws/mynah-ui'
import { Message } from '../../../shared/db/chatDb/util'
export interface TriggerTabIDReceived {
tabID: string
triggerID: string
}
export interface TabCreatedMessage {
tabID: string
tabOpenInteractionType: TabOpenType
}
export interface TabClosedMessage {
tabID: string
}
export interface TabChangedMessage {
tabID: string
prevTabID?: string
}
export interface UIFocusMessage {
command: string
type: 'focus' | 'blur'
}
export interface InsertCodeAtCursorPosition {
command: string | undefined
tabID: string
messageId: string
userIntent: UserIntent | undefined
code: string
insertionTargetType: string | undefined
codeReference: CodeReference[] | undefined
eventId: string
codeBlockIndex: number
totalCodeBlocks: number
codeBlockLanguage: string
}
export interface CopyCodeToClipboard {
command: string | undefined
tabID: string
messageId: string
userIntent: UserIntent | undefined
code: string
insertionTargetType: string | undefined
codeReference: CodeReference[] | undefined
eventId: string
codeBlockIndex: number
totalCodeBlocks: number
codeBlockLanguage: string
}
export interface AcceptDiff {
command: string | undefined
tabID: string // rename tabId
messageId: string
actionId: string
data: string
code: string
referenceTrackerInformation?: CodeReference[]
eventId: string
codeBlockIndex?: number
totalCodeBlocks?: number
}
export interface ViewDiff {
command: string | undefined
tabID: string // rename tabId
messageId: string
actionId: string
data: string
code: string
referenceTrackerInformation?: CodeReference[]
eventId: string
codeBlockIndex?: number
totalCodeBlocks?: number
}
export type ChatPromptCommandType =
| 'help'
| 'clear'
| 'follow-up-was-clicked'
| 'onboarding-page-cwc-button-clicked'
| 'chat-prompt'
| 'transform'
export interface PromptMessage {
message: string | undefined
messageId: string
command: ChatPromptCommandType | undefined
userIntent: UserIntent | undefined
tabID: string
context?: string[] | QuickActionCommand[]
}
export interface PromptAnswer {
messageLength: number
tabID: string
suggestionCount: number
followUpCount: number
messageID: string
responseCode: number
codeReferenceCount: number
totalNumberOfCodeBlocksInResponse: number
}
export interface StopResponseMessage {
tabID: string
}
export interface SourceLinkClickMessage {
command: string | undefined
tabID: string
messageId: string
link: string
}
export interface ResponseBodyLinkClickMessage {
command: string | undefined
tabID: string
messageId: string
link: string
}
export interface FooterInfoLinkClick {
command: string
tabID: string
link: string
}
export interface TabBarButtonClick {
tabID: string
buttonId: string
}
export interface SaveChatMessage {
serializedChat: string
uri: string
}
export interface QuickCommandGroupActionClick {
command: string
actionId: string
tabID: string
}
export interface FileClick {
command: string
tabID: string
messageId: string
filePath: string
}
export interface ChatItemVotedMessage {
tabID: string
command: string
vote: 'upvote' | 'downvote'
messageId: string
}
export interface ChatItemFeedbackMessage {
messageId: string
tabID: string
command: string
selectedOption: string
comment?: string
}
export enum ChatTriggerType {
ChatMessage = 'ChatMessage',
InlineChatMessage = 'InlineChatMessage',
}
export interface TriggerPayload {
readonly query: string | undefined
readonly codeSelection: Selection | undefined
readonly trigger: ChatTriggerType
fileText: string
readonly fileLanguage: string | undefined
readonly filePath: string | undefined
message: string
readonly matchPolicy: MatchPolicy | undefined
readonly codeQuery: CodeQuery | undefined
readonly userIntent: UserIntent | undefined
readonly customization: Customization
context: string[] | QuickActionCommand[]
relevantTextDocuments: RelevantTextDocumentAddition[]
additionalContents: AdditionalContentEntryAddition[]
// a reference to all documents used in chat payload
// for providing better context transparency
documentReferences: DocumentReference[]
useRelevantDocuments: boolean
traceId?: string
contextLengths: ContextLengths
workspaceRulesCount?: number
history?: Message[]
}
export type ContextLengths = {
additionalContextLengths: AdditionalContextLengths
truncatedAdditionalContextLengths: AdditionalContextLengths
workspaceContextLength: number
truncatedWorkspaceContextLength: number
userInputContextLength: number
truncatedUserInputContextLength: number
focusFileContextLength: number
truncatedFocusFileContextLength: number
}
export type AdditionalContextLengths = {
fileContextLength: number
promptContextLength: number
ruleContextLength: number
}
export type AdditionalContextInfo = {
cwsprChatFileContextCount?: number
cwsprChatFolderContextCount?: number
cwsprChatPromptContextCount?: number
cwsprChatRuleContextCount?: number
cwsprChatHasProjectContext?: boolean
}
export type LineInfo = { startLine: number; endLine: number }
// TODO move this to API definition (or just use this across the codebase)
export type RelevantTextDocumentAddition = RelevantTextDocument & LineInfo
export type AdditionalContentEntryAddition = AdditionalContentEntry & { type: string; relativePath: string } & LineInfo
export interface DocumentReference {
readonly relativeFilePath: string
readonly lineRanges: Array<{ first: number; second: number }>
}
export interface InsertedCode {
readonly conversationID: string
readonly messageID: string
readonly userIntent: UserIntent | undefined
readonly time: Date
readonly fileUrl: vscode.Uri
readonly startPosition: vscode.Position
readonly endPosition: vscode.Position
readonly originalString: string
}