Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/aws-lsp-codewhisperer-runtimes/src/iam-webworker.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { webworker } from '@aws/language-server-runtimes/runtimes/webworker'
import { RuntimeProps } from '@aws/language-server-runtimes/runtimes/runtime'
import { CodeWhispererServerIAM } from '@aws/lsp-codewhisperer/out/language-server/codeWhispererServer'
import { CodeWhispererServerIAM } from '@aws/lsp-codewhisperer/out/language-server/inline-completion/codeWhispererServer'

const props: RuntimeProps = {
version: '1.0.0',
Expand Down
8 changes: 4 additions & 4 deletions server/aws-lsp-codewhisperer/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export * from './language-server/codeWhispererSecurityScanServer'
export * from './language-server/codeWhispererServer'
export * from './language-server/qChatServer'
export * from './language-server/securityScan/codeWhispererSecurityScanServer'
export * from './language-server/inline-completion/codeWhispererServer'
export * from './language-server/chat/qChatServer'
export * as QAgenticChatServer from './language-server/agenticChat/qAgenticChatServer'
export * from './language-server/proxy-server'
export * from './language-server/netTransformServer'
export * from './language-server/netTransform/netTransformServer'
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import {
} from '@aws/language-server-runtimes/server-interface'
import { TestFeatures } from '@aws/language-server-runtimes/testing'
import * as assert from 'assert'
import { createIterableResponse, setCredentialsForAmazonQTokenServiceManagerFactory } from '../testUtils'
import { createIterableResponse, setCredentialsForAmazonQTokenServiceManagerFactory } from '../../shared/testUtils'
import sinon from 'ts-sinon'
import { AgenticChatController } from './agenticChatController'
import { ChatSessionManagementService } from '../chat/chatSessionManagementService'
Expand All @@ -27,8 +27,8 @@ import { ChatTelemetryController } from '../chat/telemetry/chatTelemetryControll
import { DocumentContextExtractor } from '../chat/contexts/documentContext'
import * as utils from '../chat/utils'
import { DEFAULT_HELP_FOLLOW_UP_PROMPT, HELP_MESSAGE } from '../chat/constants'
import { TelemetryService } from '../telemetryService'
import { AmazonQTokenServiceManager } from '../amazonQServiceManager/AmazonQTokenServiceManager'
import { TelemetryService } from '../../shared/telemetry/telemetryService'
import { AmazonQTokenServiceManager } from '../../shared/amazonQServiceManager/AmazonQTokenServiceManager'

describe('AgenticChatController', () => {
const mockTabId = 'tab-1'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,22 +33,25 @@ import {
ChatInteractionType,
ChatTelemetryEventName,
CombinedConversationEvent,
} from '../telemetry/types'
} from '../../shared/telemetry/types'
import { Features, LspHandlers, Result } from '../types'
import { ChatEventParser, ChatResultWithMetadata } from '../chat/chatEventParser'
import { createAuthFollowUpResult, getAuthFollowUpType, getDefaultChatResponse } from '../chat/utils'
import { ChatSessionManagementService } from '../chat/chatSessionManagementService'
import { ChatTelemetryController } from '../chat/telemetry/chatTelemetryController'
import { QuickAction } from '../chat/quickActions'
import { Metric } from '../telemetry/metric'
import { getErrorMessage, isAwsError, isNullish, isObject } from '../utils'
import { Metric } from '../../shared/telemetry/metric'
import { getErrorMessage, isAwsError, isNullish, isObject } from '../../shared/utils'
import { QChatTriggerContext, TriggerContext } from '../chat/contexts/triggerContext'
import { HELP_MESSAGE } from '../chat/constants'
import { Q_CONFIGURATION_SECTION } from '../configuration/qConfigurationServer'
import { textUtils } from '@aws/lsp-core'
import { TelemetryService } from '../telemetryService'
import { AmazonQServicePendingProfileError, AmazonQServicePendingSigninError } from '../amazonQServiceManager/errors'
import { AmazonQTokenServiceManager } from '../amazonQServiceManager/AmazonQTokenServiceManager'
import { TelemetryService } from '../../shared/telemetry/telemetryService'
import {
AmazonQServicePendingProfileError,
AmazonQServicePendingSigninError,
} from '../../shared/amazonQServiceManager/errors'
import { AmazonQTokenServiceManager } from '../../shared/amazonQServiceManager/AmazonQTokenServiceManager'

type ChatHandlers = Omit<LspHandlers<Chat>, 'openTab' | 'sendChatUpdate' | 'onFileClicked'>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import sinon from 'ts-sinon'
import { AgenticChatController } from './agenticChatController'
import { ChatSessionManagementService } from '../chat/chatSessionManagementService'
import { QAgenticChatServer } from './qAgenticChatServer'
import { AmazonQTokenServiceManager } from '../amazonQServiceManager/AmazonQTokenServiceManager'
import { AmazonQTokenServiceManager } from '../../shared/amazonQServiceManager/AmazonQTokenServiceManager'

describe('QAgenticChatServer', () => {
const mockTabId = 'mockTabId'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ import { InitializeParams, Server } from '@aws/language-server-runtimes/server-i
import { AgenticChatController } from './agenticChatController'
import { ChatSessionManagementService } from '../chat/chatSessionManagementService'
import { CLEAR_QUICK_ACTION, HELP_QUICK_ACTION } from '../chat/quickActions'
import { TelemetryService } from '../telemetryService'
import { makeUserContextObject } from '../utilities/telemetryUtils'
import { AmazonQTokenServiceManager } from '../amazonQServiceManager/AmazonQTokenServiceManager'
import { AmazonQServiceInitializationError } from '../amazonQServiceManager/errors'
import { safeGet } from '../utils'
import { TelemetryService } from '../../shared/telemetry/telemetryService'
import { makeUserContextObject } from '../../shared/telemetryUtils'
import { AmazonQTokenServiceManager } from '../../shared/amazonQServiceManager/AmazonQTokenServiceManager'
import { safeGet } from '../../shared/utils'
import { AmazonQServiceInitializationError } from '../../shared/amazonQServiceManager/errors'

export const QAgenticChatServer =
// prettier-ignore
Expand Down Expand Up @@ -53,17 +53,17 @@ export const QAgenticChatServer =
.withAmazonQServiceManager(amazonQServiceManager)

telemetryService = new TelemetryService(
amazonQServiceManager,
credentialsProvider,
telemetry,
logging,
)

const clientParams = safeGet(lsp.getClientInitializeParams(),new AmazonQServiceInitializationError(
'TelemetryService initialized before LSP connection was initialized.'))
amazonQServiceManager,
credentialsProvider,
telemetry,
logging,
)

const clientParams = safeGet(lsp.getClientInitializeParams(), new AmazonQServiceInitializationError(
'TelemetryService initialized before LSP connection was initialized.'))

telemetryService.updateUserContext(makeUserContextObject(clientParams, runtime.platform, 'CHAT'))

chatController = new AgenticChatController(chatSessionManagementService, features, telemetryService)

await updateConfigurationHandler()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,19 @@ import {
} from '@aws/language-server-runtimes/server-interface'
import { TestFeatures } from '@aws/language-server-runtimes/testing'
import * as assert from 'assert'
import { createIterableResponse, setCredentialsForAmazonQTokenServiceManagerFactory } from '../testUtils'

import { createIterableResponse, setCredentialsForAmazonQTokenServiceManagerFactory } from '../../shared/testUtils'
import sinon from 'ts-sinon'

import { ChatController } from './chatController'
import { ChatSessionManagementService } from './chatSessionManagementService'
import { ChatSessionService } from './chatSessionService'
import { ChatTelemetryController } from './telemetry/chatTelemetryController'
import { DocumentContextExtractor } from './contexts/documentContext'
import * as utils from './utils'
import { DEFAULT_HELP_FOLLOW_UP_PROMPT, HELP_MESSAGE } from './constants'
import { TelemetryService } from '../telemetryService'
import { AmazonQTokenServiceManager } from '../amazonQServiceManager/AmazonQTokenServiceManager'
import { TelemetryService } from '../../shared/telemetry/telemetryService'
import { AmazonQTokenServiceManager } from '../../shared/amazonQServiceManager/AmazonQTokenServiceManager'

describe('ChatController', () => {
const mockTabId = 'tab-1'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,22 +28,25 @@ import {
ChatInteractionType,
ChatTelemetryEventName,
CombinedConversationEvent,
} from '../telemetry/types'
} from '../../shared/telemetry/types'
import { Features, LspHandlers, Result } from '../types'
import { ChatEventParser, ChatResultWithMetadata } from './chatEventParser'
import { createAuthFollowUpResult, getAuthFollowUpType, getDefaultChatResponse } from './utils'
import { ChatSessionManagementService } from './chatSessionManagementService'
import { ChatTelemetryController } from './telemetry/chatTelemetryController'
import { QuickAction } from './quickActions'
import { getErrorMessage, isAwsError, isNullish, isObject } from '../utils'
import { Metric } from '../telemetry/metric'
import { getErrorMessage, isAwsError, isNullish, isObject } from '../../shared/utils'
import { Metric } from '../../shared/telemetry/metric'
import { QChatTriggerContext, TriggerContext } from './contexts/triggerContext'
import { HELP_MESSAGE } from './constants'
import { Q_CONFIGURATION_SECTION } from '../configuration/qConfigurationServer'
import { textUtils } from '@aws/lsp-core'
import { TelemetryService } from '../telemetryService'
import { AmazonQServicePendingProfileError, AmazonQServicePendingSigninError } from '../amazonQServiceManager/errors'
import { AmazonQTokenServiceManager } from '../amazonQServiceManager/AmazonQTokenServiceManager'
import {
AmazonQServicePendingProfileError,
AmazonQServicePendingSigninError,
} from '../../shared/amazonQServiceManager/errors'
import { AmazonQTokenServiceManager } from '../../shared/amazonQServiceManager/AmazonQTokenServiceManager'
import { TelemetryService } from '../../shared/telemetry/telemetryService'

type ChatHandlers = Omit<LspHandlers<Chat>, 'openTab' | 'sendChatUpdate' | 'onFileClicked'>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import * as assert from 'assert'
import sinon from 'ts-sinon'

import { ChatEventParser } from './chatEventParser'
import { Metric } from '../telemetry/metric'
import { AddMessageEvent } from '../telemetry/types'
import { Metric } from '../../shared/telemetry/metric'
import { AddMessageEvent } from '../../shared/telemetry/types'

describe('ChatEventParser', () => {
const mockMessageId = 'mock-message-id'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import {
SourceLink,
} from '@aws/language-server-runtimes/protocol'
import { Result } from '../types'
import { AddMessageEvent } from '../telemetry/types'
import { Metric } from '../telemetry/metric'
import { AddMessageEvent } from '../../shared/telemetry/types'
import { Metric } from '../../shared/telemetry/metric'

export type ChatResultWithMetadata = {
chatResult: ChatResult
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Result } from '../types'
import { ChatSessionService } from './chatSessionService'
import { AmazonQTokenServiceManager } from '../amazonQServiceManager/AmazonQTokenServiceManager'
import { AmazonQTokenServiceManager } from '../../shared/amazonQServiceManager/AmazonQTokenServiceManager'

export class ChatSessionManagementService {
static #instance?: ChatSessionManagementService
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import {
import * as assert from 'assert'
import sinon, { StubbedInstance, stubInterface } from 'ts-sinon'
import { ChatSessionService } from './chatSessionService'
import { AmazonQTokenServiceManager } from '../amazonQServiceManager/AmazonQTokenServiceManager'

import { AmazonQTokenServiceManager } from '../../shared/amazonQServiceManager/AmazonQTokenServiceManager'

describe('Chat Session Service', () => {
let sendMessageStub: sinon.SinonStub<any, any>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ import {
SendMessageCommandInput,
SendMessageCommandOutput,
} from '@amzn/codewhisperer-streaming'
import { AmazonQTokenServiceManager } from '../amazonQServiceManager/AmazonQTokenServiceManager'

import { AmazonQTokenServiceManager } from '../../shared/amazonQServiceManager/AmazonQTokenServiceManager'

export type ChatSessionServiceConfig = CodeWhispererStreamingClientConfig
export class ChatSessionService {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { EditorState, TextDocument as CwsprTextDocument } from '@amzn/codewhisperer-streaming'
import { CursorState } from '@aws/language-server-runtimes/server-interface'
import { Range, TextDocument } from 'vscode-languageserver-textdocument'
import { getLanguageId } from '../../languageDetection'
import { getLanguageId } from '../../../shared/languageDetection'
import { Features } from '../../types'
import { getExtendedCodeBlockRange, getSelectionWithinExtendedRange } from './utils'
import path = require('path')
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { Server } from '@aws/language-server-runtimes/server-interface'
import { TestFeatures } from '@aws/language-server-runtimes/testing'
import sinon from 'ts-sinon'
import { ChatController } from './chat/chatController'
import { ChatSessionManagementService } from './chat/chatSessionManagementService'
import { ChatController } from './chatController'
import { ChatSessionManagementService } from './chatSessionManagementService'
import { QChatServer } from './qChatServer'
import { AmazonQTokenServiceManager } from './amazonQServiceManager/AmazonQTokenServiceManager'
import { AmazonQTokenServiceManager } from '../../shared/amazonQServiceManager/AmazonQTokenServiceManager'

describe('QChatServer', () => {
const mockTabId = 'mockTabId'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { InitializeParams, Server } from '@aws/language-server-runtimes/server-interface'
import { ChatController } from './chat/chatController'
import { ChatSessionManagementService } from './chat/chatSessionManagementService'
import { CLEAR_QUICK_ACTION, HELP_QUICK_ACTION } from './chat/quickActions'
import { TelemetryService } from './telemetryService'
import { makeUserContextObject } from './utilities/telemetryUtils'
import { AmazonQTokenServiceManager } from './amazonQServiceManager/AmazonQTokenServiceManager'
import { AmazonQServiceInitializationError } from './amazonQServiceManager/errors'
import { safeGet } from './utils'
import { ChatController } from './chatController'
import { ChatSessionManagementService } from './chatSessionManagementService'
import { CLEAR_QUICK_ACTION, HELP_QUICK_ACTION } from './quickActions'
import { TelemetryService } from '../../shared/telemetry/telemetryService'
import { makeUserContextObject } from '../../shared/telemetryUtils'
import { AmazonQTokenServiceManager } from '../../shared/amazonQServiceManager/AmazonQTokenServiceManager'
import { AmazonQServiceInitializationError } from '../../shared/amazonQServiceManager/errors'
import { safeGet } from '../../shared/utils'

export const QChatServer =
// prettier-ignore
Expand Down Expand Up @@ -48,17 +48,17 @@ export const QChatServer =
.withAmazonQServiceManager(amazonQServiceManager)

telemetryService = new TelemetryService(
amazonQServiceManager,
credentialsProvider,
telemetry,
logging,
)

const clientParams = safeGet(lsp.getClientInitializeParams(),new AmazonQServiceInitializationError(
'TelemetryService initialized before LSP connection was initialized.'))
amazonQServiceManager,
credentialsProvider,
telemetry,
logging,
)

const clientParams = safeGet(lsp.getClientInitializeParams(), new AmazonQServiceInitializationError(
'TelemetryService initialized before LSP connection was initialized.'))

telemetryService.updateUserContext(makeUserContextObject(clientParams, runtime.platform, 'CHAT'))

chatController = new ChatController(chatSessionManagementService, features, telemetryService)

await updateConfigurationHandler()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { TestFeatures } from '@aws/language-server-runtimes/testing'
import sinon from 'ts-sinon'
import { ChatTelemetryEventName } from '../../telemetry/types'
import { ChatTelemetryEventName } from '../../../shared/telemetry/types'
import { CONVERSATION_ID_METRIC_KEY, ChatTelemetryController } from './chatTelemetryController'
import assert = require('assert')
import { ChatUIEventName } from './clientTelemetry'
import { TelemetryService } from '../../telemetryService'
import { TelemetryService } from '../../../shared/telemetry/telemetryService'

describe('TelemetryController', () => {
const mockTabId = 'mockTabId'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
ChatTelemetryEventName,
CombinedConversationEvent,
InteractWithMessageEvent,
} from '../../telemetry/types'
} from '../../../shared/telemetry/types'
import { Features, KeysMatching } from '../../types'
import {
ChatUIEventName,
Expand All @@ -16,11 +16,12 @@ import {
} from './clientTelemetry'
import { UserIntent } from '@amzn/codewhisperer-streaming'
import { TriggerContext } from '../contexts/triggerContext'
import { AcceptedSuggestionEntry, CodeDiffTracker } from '../../telemetry/codeDiffTracker'
import { TelemetryService } from '../../telemetryService'
import { getEndPositionForAcceptedSuggestion } from '../../utils'
import { CodewhispererLanguage } from '../../languageDetection'

import { CredentialsProvider, Logging } from '@aws/language-server-runtimes/server-interface'
import { AcceptedSuggestionEntry, CodeDiffTracker } from '../../inline-completion/codeDiffTracker'
import { TelemetryService } from '../../../shared/telemetry/telemetryService'
import { getEndPositionForAcceptedSuggestion } from '../../../shared/utils'
import { CodewhispererLanguage } from '../../../shared/languageDetection'

export const CONVERSATION_ID_METRIC_KEY = 'cwsprChatConversationId'

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type * as ServerInterface from '@aws/language-server-runtimes/server-interface'
import type * as ChatClientType from '@aws/chat-client-ui-types'
import { isObject } from '../../utils'
import { isObject } from '../../../shared/utils'

export enum ChatUIEventName {
EnterFocusChat = 'enterFocus',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { ChatResult } from '@aws/language-server-runtimes/server-interface'
import { GENERIC_UNAUTHORIZED_ERROR, INVALID_TOKEN, MISSING_BEARER_TOKEN_ERROR } from '../constants'
import { GENERIC_UNAUTHORIZED_ERROR, INVALID_TOKEN, MISSING_BEARER_TOKEN_ERROR } from '../../shared/constants'
import { DEFAULT_HELP_FOLLOW_UP_PROMPT, HELP_MESSAGE } from './constants'
import { v4 as uuid } from 'uuid'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ import {
ServerConfigurationProvider,
} from './qConfigurationServer'
import { TestFeatures } from '@aws/language-server-runtimes/testing'
import { CodeWhispererServiceToken } from '../codeWhispererService'
import { CodeWhispererServiceToken } from '../../shared/codeWhispererService'
import { InitializeParams, Server } from '@aws/language-server-runtimes/server-interface'
import { AmazonQTokenServiceManager } from '../amazonQServiceManager/AmazonQTokenServiceManager'
import { setCredentialsForAmazonQTokenServiceManagerFactory } from '../testUtils'
import { AmazonQTokenServiceManager } from '../../shared/amazonQServiceManager/AmazonQTokenServiceManager'
import { setCredentialsForAmazonQTokenServiceManagerFactory } from '../../shared/testUtils'

const getInitializeParams = (developerProfiles = true): InitializeParams => {
return {
Expand Down
Loading
Loading