Skip to content

Commit ae20598

Browse files
authored
refactor(cw): Rename the mergedTextDocument field. (#6666)
## Problem The mergedRelevantTextDocument should have a better name. It is actually the documents that are referenced. ## Solution --- - Treat all work as PUBLIC. Private `feature/x` branches will not be squash-merged at release time. - Your code changes must meet the guidelines in [CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines). - License: I confirm that my contribution is made under the terms of the Apache 2.0 license.
1 parent 3130c68 commit ae20598

File tree

4 files changed

+41
-41
lines changed

4 files changed

+41
-41
lines changed

packages/core/src/codewhispererChat/controllers/chat/controller.ts

Lines changed: 32 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import {
2929
ViewDiff,
3030
AcceptDiff,
3131
QuickCommandGroupActionClick,
32-
MergedRelevantDocument,
32+
DocumentReference,
3333
FileClick,
3434
RelevantTextDocumentAddition,
3535
} from './model'
@@ -974,53 +974,53 @@ export class ChatController {
974974
}
975975

976976
const relativePaths = await this.resolveContextCommandPayload(triggerPayload)
977-
// TODO: resolve the context into real context up to 90k
978977
triggerPayload.useRelevantDocuments = false
979-
triggerPayload.mergedRelevantDocuments = []
980-
if (triggerPayload.message) {
981-
triggerPayload.useRelevantDocuments = triggerPayload.context?.some(
982-
(context) => typeof context !== 'string' && context.command === '@workspace'
983-
)
984-
if (triggerPayload.useRelevantDocuments) {
985-
triggerPayload.message = triggerPayload.message.replace(/workspace/, '')
986-
if (CodeWhispererSettings.instance.isLocalIndexEnabled()) {
987-
const start = performance.now()
988-
triggerPayload.relevantTextDocuments = await LspController.instance.query(triggerPayload.message)
989-
triggerPayload.mergedRelevantDocuments = this.mergeRelevantTextDocuments(
990-
triggerPayload.relevantTextDocuments
978+
triggerPayload.documentReferences = []
979+
triggerPayload.useRelevantDocuments = triggerPayload.context?.some(
980+
(context) => typeof context !== 'string' && context.command === '@workspace'
981+
)
982+
if (triggerPayload.useRelevantDocuments && triggerPayload.message) {
983+
triggerPayload.message = triggerPayload.message.replace(/workspace/, '')
984+
if (CodeWhispererSettings.instance.isLocalIndexEnabled()) {
985+
const start = performance.now()
986+
triggerPayload.relevantTextDocuments = await LspController.instance.query(triggerPayload.message)
987+
988+
for (const doc of triggerPayload.relevantTextDocuments) {
989+
getLogger().info(
990+
`amazonq: Using workspace files ${doc.relativeFilePath}, content(partial): ${doc.text?.substring(0, 200)}, start line: ${doc.startLine}, end line: ${doc.endLine}`
991991
)
992-
for (const doc of triggerPayload.relevantTextDocuments) {
993-
getLogger().info(
994-
`amazonq: Using workspace files ${doc.relativeFilePath}, content(partial): ${doc.text?.substring(0, 200)}, start line: ${doc.startLine}, end line: ${doc.endLine}`
995-
)
996-
}
997-
triggerPayload.projectContextQueryLatencyMs = performance.now() - start
998-
} else {
999-
this.messenger.sendOpenSettingsMessage(triggerID, tabID)
1000-
return
1001992
}
993+
triggerPayload.projectContextQueryLatencyMs = performance.now() - start
994+
} else {
995+
this.messenger.sendOpenSettingsMessage(triggerID, tabID)
996+
return
1002997
}
1003998
}
999+
triggerPayload.documentReferences = this.mergeRelevantTextDocuments(triggerPayload.relevantTextDocuments || [])
1000+
1001+
// TODO: make sure the user input + current focused document + relevantDocument + additionalContext
1002+
// combined does not exceed 100k characters before generating the request payload.
1003+
// Do truncation and make sure triggerPayload.documentReferences is up-to-date after truncation
10041004

10051005
const request = triggerPayloadToChatRequest(triggerPayload)
10061006
const session = this.sessionStorage.getSession(tabID)
10071007

10081008
session.currentContextId++
10091009
session.contexts.set(session.currentContextId, new Map())
1010-
if (triggerPayload.mergedRelevantDocuments !== undefined) {
1011-
const relativePathsOfMergedRelevantDocuments = triggerPayload.mergedRelevantDocuments.map(
1010+
if (triggerPayload.documentReferences !== undefined) {
1011+
const relativePathsOfMergedRelevantDocuments = triggerPayload.documentReferences.map(
10121012
(doc) => doc.relativeFilePath
10131013
)
10141014
for (const relativePath of relativePaths) {
10151015
if (!relativePathsOfMergedRelevantDocuments.includes(relativePath)) {
1016-
triggerPayload.mergedRelevantDocuments.push({
1016+
triggerPayload.documentReferences.push({
10171017
relativeFilePath: relativePath,
10181018
lineRanges: [{ first: -1, second: -1 }],
10191019
})
10201020
}
10211021
}
1022-
if (triggerPayload.mergedRelevantDocuments) {
1023-
for (const doc of triggerPayload.mergedRelevantDocuments) {
1022+
if (triggerPayload.documentReferences) {
1023+
for (const doc of triggerPayload.documentReferences) {
10241024
const currentContext = session.contexts.get(session.currentContextId)
10251025
if (currentContext) {
10261026
currentContext.set(doc.relativeFilePath, doc.lineRanges)
@@ -1037,7 +1037,7 @@ export class ChatController {
10371037
let response: MessengerResponseType | undefined = undefined
10381038
session.createNewTokenSource()
10391039
try {
1040-
this.messenger.sendInitalStream(tabID, triggerID, triggerPayload.mergedRelevantDocuments)
1040+
this.messenger.sendInitalStream(tabID, triggerID, triggerPayload.documentReferences)
10411041
this.telemetryHelper.setConversationStreamStartTime(tabID)
10421042
if (isSsoConnection(AuthUtil.instance.conn)) {
10431043
const { $metadata, generateAssistantResponseResponse } = await session.chatSso(request)
@@ -1068,11 +1068,9 @@ export class ChatController {
10681068
}
10691069
}
10701070

1071-
private mergeRelevantTextDocuments(
1072-
documents: RelevantTextDocumentAddition[] | undefined
1073-
): MergedRelevantDocument[] | undefined {
1074-
if (documents === undefined) {
1075-
return undefined
1071+
private mergeRelevantTextDocuments(documents: RelevantTextDocumentAddition[]): DocumentReference[] {
1072+
if (documents.length === 0) {
1073+
return []
10761074
}
10771075
return Object.entries(
10781076
documents.reduce<Record<string, { first: number; second: number }[]>>((acc, doc) => {

packages/core/src/codewhispererChat/controllers/chat/messenger/messenger.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import { ChatMessage, ErrorMessage, FollowUp, Suggestion } from '../../../view/c
2525
import { ChatSession } from '../../../clients/chat/v0/chat'
2626
import { ChatException } from './model'
2727
import { CWCTelemetryHelper } from '../telemetryHelper'
28-
import { ChatPromptCommandType, MergedRelevantDocument, TriggerPayload } from '../model'
28+
import { ChatPromptCommandType, DocumentReference, TriggerPayload } from '../model'
2929
import { getHttpStatusCode, getRequestId, ToolkitError } from '../../../../shared/errors'
3030
import { keys } from '../../../../shared/utilities/tsUtils'
3131
import { getLogger } from '../../../../shared/logger/logger'
@@ -69,7 +69,7 @@ export class Messenger {
6969
public sendInitalStream(
7070
tabID: string,
7171
triggerID: string,
72-
mergedRelevantDocuments: MergedRelevantDocument[] | undefined
72+
mergedRelevantDocuments: DocumentReference[] | undefined
7373
) {
7474
this.dispatcher.sendChatMessage(
7575
new ChatMessage(

packages/core/src/codewhispererChat/controllers/chat/model.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,15 +189,17 @@ export interface TriggerPayload {
189189
readonly context?: string[] | QuickActionCommand[]
190190
relevantTextDocuments?: RelevantTextDocumentAddition[]
191191
additionalContents?: AdditionalContentEntry[]
192-
mergedRelevantDocuments?: MergedRelevantDocument[]
192+
// a reference to all documents used in chat payload
193+
// for providing better context transparency
194+
documentReferences?: DocumentReference[]
193195
useRelevantDocuments?: boolean
194196
traceId?: string
195197
}
196198

197199
// TODO move this to API definition (or just use this across the codebase)
198200
export type RelevantTextDocumentAddition = RelevantTextDocument & { startLine: number; endLine: number }
199201

200-
export interface MergedRelevantDocument {
202+
export interface DocumentReference {
201203
readonly relativeFilePath: string
202204
readonly lineRanges: Array<{ first: number; second: number }>
203205
}

packages/core/src/codewhispererChat/view/connector/connector.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { MessagePublisher } from '../../../amazonq/messages/messagePublisher'
88
import { EditorContextCommandType } from '../../commands/registerCommands'
99
import { AuthFollowUpType } from '../../../amazonq/auth/model'
1010
import { ChatItemButton, ChatItemFormItem, MynahUIDataModel, QuickActionCommand } from '@aws/mynah-ui'
11-
import { MergedRelevantDocument } from '../../controllers/chat/model'
11+
import { DocumentReference } from '../../controllers/chat/model'
1212

1313
class UiMessage {
1414
readonly time: number = Date.now()
@@ -207,7 +207,7 @@ export interface ChatMessageProps {
207207
readonly messageID: string
208208
readonly userIntent: string | undefined
209209
readonly codeBlockLanguage: string | undefined
210-
readonly contextList: MergedRelevantDocument[] | undefined
210+
readonly contextList: DocumentReference[] | undefined
211211
}
212212

213213
export class ChatMessage extends UiMessage {
@@ -222,7 +222,7 @@ export class ChatMessage extends UiMessage {
222222
readonly messageID: string | undefined
223223
readonly userIntent: string | undefined
224224
readonly codeBlockLanguage: string | undefined
225-
readonly contextList: MergedRelevantDocument[] | undefined
225+
readonly contextList: DocumentReference[] | undefined
226226
override type = 'chatMessage'
227227

228228
constructor(props: ChatMessageProps, tabID: string) {

0 commit comments

Comments
 (0)