in packages/core/src/codewhispererChat/controllers/chat/controller.ts [166:309]
public constructor(
private readonly chatControllerMessageListeners: ChatControllerMessageListeners,
appsToWebViewMessagePublisher: MessagePublisher<any>,
onDidChangeAmazonQVisibility: VSCodeEvent<boolean>
) {
this.sessionStorage = new ChatSessionStorage()
this.triggerEventsStorage = new TriggerEventsStorage()
this.telemetryHelper = CWCTelemetryHelper.init(this.sessionStorage, this.triggerEventsStorage)
this.messenger = new Messenger(
new AppToWebViewMessageDispatcher(appsToWebViewMessagePublisher),
this.telemetryHelper
)
this.editorContextExtractor = new EditorContextExtractor()
this.editorContentController = new EditorContentController()
this.promptGenerator = new PromptsGenerator()
this.userIntentRecognizer = new UserIntentRecognizer()
this.tabBarController = new TabBarController(this.messenger)
onDidChangeAmazonQVisibility((visible) => {
if (visible) {
this.telemetryHelper.recordOpenChat()
} else {
this.telemetryHelper.recordCloseChat()
}
})
AuthUtil.instance.regionProfileManager.onDidChangeRegionProfile(() => {
this.cancelTokenSource.cancel()
})
this.chatControllerMessageListeners.processPromptChatMessage.onMessage((data) => {
const uiEvents = uiEventRecorder.get(data.tabID)
if (uiEvents) {
uiEventRecorder.set(data.tabID, {
events: {
featureReceivedMessage: globals.clock.Date.now(),
},
})
}
/**
* traceId is only instrumented for chat-prompt but not for things
* like follow-up-was-clicked. In those cases we fallback to a different
* uuid
**/
return telemetry.withTraceId(() => {
return this.processPromptChatMessage(data)
}, uiEvents?.traceId ?? randomUUID())
})
this.chatControllerMessageListeners.processTabCreatedMessage.onMessage((data) => {
return this.processTabCreateMessage(data)
})
this.chatControllerMessageListeners.processTabClosedMessage.onMessage((data) => {
return this.processTabCloseMessage(data)
})
this.chatControllerMessageListeners.processTabChangedMessage.onMessage((data) => {
return this.processTabChangedMessage(data)
})
this.chatControllerMessageListeners.processInsertCodeAtCursorPosition.onMessage((data) => {
return this.processInsertCodeAtCursorPosition(data)
})
this.chatControllerMessageListeners.processAcceptDiff.onMessage((data) => {
return this.processAcceptDiff(data)
})
this.chatControllerMessageListeners.processViewDiff.onMessage((data) => {
return this.processViewDiff(data)
})
this.chatControllerMessageListeners.processCopyCodeToClipboard.onMessage((data) => {
return this.processCopyCodeToClipboard(data)
})
this.chatControllerMessageListeners.processContextMenuCommand.onMessage((data) => {
return this.processContextMenuCommand(data)
})
this.chatControllerMessageListeners.processTriggerTabIDReceived.onMessage((data) => {
return this.processTriggerTabIDReceived(data)
})
this.chatControllerMessageListeners.processStopResponseMessage.onMessage((data) => {
return this.processStopResponseMessage(data)
})
this.chatControllerMessageListeners.processChatItemVotedMessage.onMessage((data) => {
return this.processChatItemVotedMessage(data)
})
this.chatControllerMessageListeners.processChatItemFeedbackMessage.onMessage((data) => {
return this.processChatItemFeedbackMessage(data)
})
this.chatControllerMessageListeners.processUIFocusMessage.onMessage((data) => {
return this.processUIFocusMessage(data)
})
this.chatControllerMessageListeners.processSourceLinkClick.onMessage((data) => {
return this.processSourceLinkClick(data)
})
this.chatControllerMessageListeners.processResponseBodyLinkClick.onMessage((data) => {
return this.processResponseBodyLinkClick(data)
})
this.chatControllerMessageListeners.processFooterInfoLinkClick.onMessage((data) => {
return this.processFooterInfoLinkClick(data)
})
this.chatControllerMessageListeners.processContextCommandUpdateMessage.onMessage(() => {
return this.processContextCommandUpdateMessage()
})
this.chatControllerMessageListeners.processQuickCommandGroupActionClicked.onMessage((data) => {
return this.processQuickCommandGroupActionClicked(data)
})
this.chatControllerMessageListeners.processCustomFormAction.onMessage((data) => {
return this.processCustomFormAction(data)
})
this.chatControllerMessageListeners.processContextSelected.onMessage((data) => {
return this.processContextSelected(data)
})
this.chatControllerMessageListeners.processFileClick.onMessage((data) => {
return this.processFileClickMessage(data)
})
this.chatControllerMessageListeners.processTabBarButtonClick.onMessage((data) => {
return this.tabBarController.processTabBarButtonClick(data)
})
this.chatControllerMessageListeners.processSaveChat.onMessage((data) => {
return this.tabBarController.processSaveChat(data)
})
this.chatControllerMessageListeners.processDetailedListActionClickMessage.onMessage((data) => {
return this.tabBarController.processActionClickMessage(data)
})
this.chatControllerMessageListeners.processDetailedListFilterChangeMessage.onMessage((data) => {
return this.tabBarController.processFilterChangeMessage(data)
})
this.chatControllerMessageListeners.processDetailedListItemSelectMessage.onMessage((data) => {
return this.tabBarController.processItemSelectMessage(data)
})
AuthUtil.instance.regionProfileManager.onDidChangeRegionProfile(() => {
this.sessionStorage.deleteAllSessions()
})
}