export function init()

in packages/core/src/codewhispererChat/app.ts [43:240]


export function init(appContext: AmazonQAppInitContext) {
    const cwChatControllerEventEmitters = {
        processPromptChatMessage: new EventEmitter<PromptMessage>(),
        processTabCreatedMessage: new EventEmitter<TabCreatedMessage>(),
        processTabClosedMessage: new EventEmitter<TabClosedMessage>(),
        processTabChangedMessage: new EventEmitter<TabChangedMessage>(),
        processInsertCodeAtCursorPosition: new EventEmitter<InsertCodeAtCursorPosition>(),
        processAcceptDiff: new EventEmitter<AcceptDiff>(),
        processViewDiff: new EventEmitter<ViewDiff>(),
        processCopyCodeToClipboard: new EventEmitter<CopyCodeToClipboard>(),
        processContextMenuCommand: new EventEmitter<EditorContextCommand>(),
        processTriggerTabIDReceived: new EventEmitter<TriggerTabIDReceived>(),
        processStopResponseMessage: new EventEmitter<StopResponseMessage>(),
        processChatItemVotedMessage: new EventEmitter<ChatItemVotedMessage>(),
        processChatItemFeedbackMessage: new EventEmitter<ChatItemFeedbackMessage>(),
        processUIFocusMessage: new EventEmitter<UIFocusMessage>(),
        processSourceLinkClick: new EventEmitter<SourceLinkClickMessage>(),
        processResponseBodyLinkClick: new EventEmitter<ResponseBodyLinkClickMessage>(),
        processFooterInfoLinkClick: new EventEmitter<FooterInfoLinkClick>(),
        processContextCommandUpdateMessage: new EventEmitter<any>(),
        processQuickCommandGroupActionClicked: new EventEmitter<QuickCommandGroupActionClick>(),
        processCustomFormAction: new EventEmitter<CustomFormActionMessage>(),
        processContextSelected: new EventEmitter<ContextSelectedMessage>(),
        processFileClick: new EventEmitter<FileClick>(),
        processTabBarButtonClick: new EventEmitter<TabBarButtonClick>(),
        processSaveChat: new EventEmitter<SaveChatMessage>(),
        processDetailedListFilterChangeMessage: new EventEmitter<DetailedListFilterChangeMessage>(),
        processDetailedListItemSelectMessage: new EventEmitter<DetailedListItemSelectMessage>(),
        processDetailedListActionClickMessage: new EventEmitter<DetailedListActionClickMessage>(),
    }

    const cwChatControllerMessageListeners = {
        processPromptChatMessage: new MessageListener<PromptMessage>(
            cwChatControllerEventEmitters.processPromptChatMessage
        ),
        processTabCreatedMessage: new MessageListener<TabCreatedMessage>(
            cwChatControllerEventEmitters.processTabCreatedMessage
        ),
        processTabClosedMessage: new MessageListener<TabClosedMessage>(
            cwChatControllerEventEmitters.processTabClosedMessage
        ),
        processTabChangedMessage: new MessageListener<TabChangedMessage>(
            cwChatControllerEventEmitters.processTabChangedMessage
        ),
        processInsertCodeAtCursorPosition: new MessageListener<InsertCodeAtCursorPosition>(
            cwChatControllerEventEmitters.processInsertCodeAtCursorPosition
        ),
        processAcceptDiff: new MessageListener<AcceptDiff>(cwChatControllerEventEmitters.processAcceptDiff),
        processViewDiff: new MessageListener<ViewDiff>(cwChatControllerEventEmitters.processViewDiff),
        processCopyCodeToClipboard: new MessageListener<CopyCodeToClipboard>(
            cwChatControllerEventEmitters.processCopyCodeToClipboard
        ),
        processContextMenuCommand: new MessageListener<EditorContextCommand>(
            cwChatControllerEventEmitters.processContextMenuCommand
        ),
        processTriggerTabIDReceived: new MessageListener<TriggerTabIDReceived>(
            cwChatControllerEventEmitters.processTriggerTabIDReceived
        ),
        processStopResponseMessage: new MessageListener<StopResponseMessage>(
            cwChatControllerEventEmitters.processStopResponseMessage
        ),
        processChatItemVotedMessage: new MessageListener<ChatItemVotedMessage>(
            cwChatControllerEventEmitters.processChatItemVotedMessage
        ),
        processChatItemFeedbackMessage: new MessageListener<ChatItemFeedbackMessage>(
            cwChatControllerEventEmitters.processChatItemFeedbackMessage
        ),
        processUIFocusMessage: new MessageListener<UIFocusMessage>(cwChatControllerEventEmitters.processUIFocusMessage),
        processSourceLinkClick: new MessageListener<SourceLinkClickMessage>(
            cwChatControllerEventEmitters.processSourceLinkClick
        ),
        processResponseBodyLinkClick: new MessageListener<ResponseBodyLinkClickMessage>(
            cwChatControllerEventEmitters.processResponseBodyLinkClick
        ),
        processFooterInfoLinkClick: new MessageListener<FooterInfoLinkClick>(
            cwChatControllerEventEmitters.processFooterInfoLinkClick
        ),
        processContextCommandUpdateMessage: new MessageListener<void>(
            cwChatControllerEventEmitters.processContextCommandUpdateMessage
        ),
        processQuickCommandGroupActionClicked: new MessageListener<QuickCommandGroupActionClick>(
            cwChatControllerEventEmitters.processQuickCommandGroupActionClicked
        ),
        processCustomFormAction: new MessageListener<CustomFormActionMessage>(
            cwChatControllerEventEmitters.processCustomFormAction
        ),
        processContextSelected: new MessageListener<ContextSelectedMessage>(
            cwChatControllerEventEmitters.processContextSelected
        ),
        processFileClick: new MessageListener<FileClick>(cwChatControllerEventEmitters.processFileClick),
        processTabBarButtonClick: new MessageListener<TabBarButtonClick>(
            cwChatControllerEventEmitters.processTabBarButtonClick
        ),
        processSaveChat: new MessageListener<SaveChatMessage>(cwChatControllerEventEmitters.processSaveChat),
        processDetailedListFilterChangeMessage: new MessageListener<DetailedListFilterChangeMessage>(
            cwChatControllerEventEmitters.processDetailedListFilterChangeMessage
        ),
        processDetailedListItemSelectMessage: new MessageListener<DetailedListItemSelectMessage>(
            cwChatControllerEventEmitters.processDetailedListItemSelectMessage
        ),
        processDetailedListActionClickMessage: new MessageListener<DetailedListActionClickMessage>(
            cwChatControllerEventEmitters.processDetailedListActionClickMessage
        ),
    }

    const cwChatControllerMessagePublishers = {
        processPromptChatMessage: new MessagePublisher<PromptMessage>(
            cwChatControllerEventEmitters.processPromptChatMessage
        ),
        processTabCreatedMessage: new MessagePublisher<TabCreatedMessage>(
            cwChatControllerEventEmitters.processTabCreatedMessage
        ),
        processTabClosedMessage: new MessagePublisher<TabClosedMessage>(
            cwChatControllerEventEmitters.processTabClosedMessage
        ),
        processTabChangedMessage: new MessagePublisher<TabChangedMessage>(
            cwChatControllerEventEmitters.processTabChangedMessage
        ),
        processInsertCodeAtCursorPosition: new MessagePublisher<InsertCodeAtCursorPosition>(
            cwChatControllerEventEmitters.processInsertCodeAtCursorPosition
        ),
        processAcceptDiff: new MessagePublisher<AcceptDiff>(cwChatControllerEventEmitters.processAcceptDiff),
        processViewDiff: new MessagePublisher<ViewDiff>(cwChatControllerEventEmitters.processViewDiff),
        processCopyCodeToClipboard: new MessagePublisher<CopyCodeToClipboard>(
            cwChatControllerEventEmitters.processCopyCodeToClipboard
        ),
        processContextMenuCommand: new MessagePublisher<EditorContextCommand>(
            cwChatControllerEventEmitters.processContextMenuCommand
        ),
        processTriggerTabIDReceived: new MessagePublisher<TriggerTabIDReceived>(
            cwChatControllerEventEmitters.processTriggerTabIDReceived
        ),
        processStopResponseMessage: new MessagePublisher<StopResponseMessage>(
            cwChatControllerEventEmitters.processStopResponseMessage
        ),
        processChatItemVotedMessage: new MessagePublisher<ChatItemVotedMessage>(
            cwChatControllerEventEmitters.processChatItemVotedMessage
        ),
        processChatItemFeedbackMessage: new MessagePublisher<ChatItemFeedbackMessage>(
            cwChatControllerEventEmitters.processChatItemFeedbackMessage
        ),
        processUIFocusMessage: new MessagePublisher<UIFocusMessage>(
            cwChatControllerEventEmitters.processUIFocusMessage
        ),
        processSourceLinkClick: new MessagePublisher<SourceLinkClickMessage>(
            cwChatControllerEventEmitters.processSourceLinkClick
        ),
        processResponseBodyLinkClick: new MessagePublisher<ResponseBodyLinkClickMessage>(
            cwChatControllerEventEmitters.processResponseBodyLinkClick
        ),
        processFooterInfoLinkClick: new MessagePublisher<FooterInfoLinkClick>(
            cwChatControllerEventEmitters.processFooterInfoLinkClick
        ),
        processContextCommandUpdateMessage: new MessagePublisher<void>(
            cwChatControllerEventEmitters.processContextCommandUpdateMessage
        ),
        processQuickCommandGroupActionClicked: new MessagePublisher<QuickCommandGroupActionClick>(
            cwChatControllerEventEmitters.processQuickCommandGroupActionClicked
        ),
        processCustomFormAction: new MessagePublisher<CustomFormActionMessage>(
            cwChatControllerEventEmitters.processCustomFormAction
        ),
        processContextSelected: new MessagePublisher<ContextSelectedMessage>(
            cwChatControllerEventEmitters.processContextSelected
        ),
        processFileClick: new MessagePublisher<FileClick>(cwChatControllerEventEmitters.processFileClick),
        processTabBarButtonClick: new MessagePublisher<TabBarButtonClick>(
            cwChatControllerEventEmitters.processTabBarButtonClick
        ),
        processSaveChat: new MessagePublisher<SaveChatMessage>(cwChatControllerEventEmitters.processSaveChat),
        processDetailedListActionClickMessage: new MessagePublisher<DetailedListActionClickMessage>(
            cwChatControllerEventEmitters.processDetailedListActionClickMessage
        ),
        processDetailedListFilterChangeMessage: new MessagePublisher<DetailedListFilterChangeMessage>(
            cwChatControllerEventEmitters.processDetailedListFilterChangeMessage
        ),
        processDetailedListItemSelectMessage: new MessagePublisher<DetailedListItemSelectMessage>(
            cwChatControllerEventEmitters.processDetailedListItemSelectMessage
        ),
    }

    new CwChatController(
        cwChatControllerMessageListeners,
        appContext.getAppsToWebViewMessagePublisher(),
        appContext.onDidChangeAmazonQVisibility.event
    )

    const cwChatUIInputEventEmitter = new EventEmitter<any>()

    new UIMessageListener({
        chatControllerMessagePublishers: cwChatControllerMessagePublishers,
        webViewMessageListener: new MessageListener<any>(cwChatUIInputEventEmitter),
    })

    appContext.registerWebViewToAppMessagePublisher(new MessagePublisher<any>(cwChatUIInputEventEmitter), 'cwc')

    registerCommands()
}