Skip to content

Commit

Permalink
refactor(amazonq): refactor doc and featureDev SessionState
Browse files Browse the repository at this point in the history
  • Loading branch information
siakmun-aws committed Jan 17, 2025
1 parent bcd4d1a commit 03f7ed3
Show file tree
Hide file tree
Showing 23 changed files with 180 additions and 191 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,8 @@ import {
sessionWriteFile,
assertTelemetry,
} from 'aws-core-vscode/test'
import {
CurrentWsFolders,
FeatureDevClient,
featureDevScheme,
FeatureDevCodeGenState,
} from 'aws-core-vscode/amazonqFeatureDev'
import { Messenger } from 'aws-core-vscode/amazonq'
import { FeatureDevClient, featureDevScheme, FeatureDevCodeGenState } from 'aws-core-vscode/amazonqFeatureDev'
import { Messenger, CurrentWsFolders } from 'aws-core-vscode/amazonq'
import path from 'path'
import { fs } from 'aws-core-vscode/shared'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import {
} from './connectorMessages'
import { FollowUpTypes } from '../types'
import { messageWithConversationId } from '../../../amazonqFeatureDev/userFacingText'
import { DeletedFileInfo, NewFileInfo } from '../../types'
import { DeletedFileInfo, NewFileInfo } from '../types'

export class Messenger {
public constructor(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { MessagePublisher } from '../../messages/messagePublisher'
import { CodeReference } from '../../webview/ui/connector'
import { ChatItemAction, ProgressField, SourceLink } from '@aws/mynah-ui'
import { ChatItemType } from '../model'
import { DeletedFileInfo, NewFileInfo } from '../../types'
import { DeletedFileInfo, NewFileInfo } from '../types'
import { licenseText } from '../../../amazonqFeatureDev/constants'

class UiMessage {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import * as vscode from 'vscode'
import { WorkspaceFolderNotFoundError } from '../../../amazonqFeatureDev/errors'
import { VirtualFileSystem, VirtualMemoryFile } from '../../../shared'
import { CurrentWsFolders } from '../../types'
import { CurrentWsFolders } from '../types'

export interface SessionConfig {
// The paths on disk to where the source code lives
Expand Down
125 changes: 125 additions & 0 deletions packages/core/src/amazonq/commons/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,15 @@
* SPDX-License-Identifier: Apache-2.0
*/

import * as vscode from 'vscode'
import { VirtualFileSystem } from '../../shared/virtualFilesystem'
import type { CancellationTokenSource } from 'vscode'
import { CodeReference, UploadHistory } from '../webview/ui/connector'
import { DiffTreeFileInfo } from '../webview/ui/diffTree/types'
import { Messenger } from './connector/baseMessenger'
import { FeatureClient } from '../client/client'
import { TelemetryHelper } from '../util/telemetryHelper'

export enum FollowUpTypes {
// UnitTestGeneration
ViewDiff = 'ViewDiff',
Expand Down Expand Up @@ -36,3 +45,119 @@ export enum FollowUpTypes {
ProceedFolderSelection = 'ProceedFolderSelection',
CancelFolderSelection = 'CancelFolderSelection',
}

export type Interaction = {
// content to be sent back to the chat UI
content?: string
responseType?: LLMResponseType
}

export interface SessionStateInteraction {
nextState: SessionState | Omit<SessionState, 'uploadId'> | undefined
interaction: Interaction
currentCodeGenerationId?: string
}

export enum Intent {
DEV = 'DEV',
DOC = 'DOC',
}

export enum DevPhase {
INIT = 'Init',
APPROACH = 'Approach',
CODEGEN = 'Codegen',
}

export enum CodeGenerationStatus {
COMPLETE = 'Complete',
PREDICT_READY = 'predict-ready',
IN_PROGRESS = 'InProgress',
PREDICT_FAILED = 'predict-failed',
DEBATE_FAILED = 'debate-failed',
FAILED = 'Failed',
}

export type SessionStatePhase = DevPhase.INIT | DevPhase.CODEGEN

export type CurrentWsFolders = [vscode.WorkspaceFolder, ...vscode.WorkspaceFolder[]]

export interface SessionState {
readonly filePaths?: NewFileInfo[]
readonly deletedFiles?: DeletedFileInfo[]
readonly references?: CodeReference[]
readonly phase?: SessionStatePhase
readonly uploadId: string
readonly currentIteration?: number
currentCodeGenerationId?: string
tokenSource?: CancellationTokenSource
readonly codeGenerationId?: string
readonly tabID: string
interact(action: SessionStateAction): Promise<SessionStateInteraction>
updateWorkspaceRoot?: (workspaceRoot: string) => void
codeGenerationRemainingIterationCount?: number
codeGenerationTotalIterationCount?: number
uploadHistory?: UploadHistory
}

export interface SessionStateConfig {
workspaceRoots: string[]
workspaceFolders: CurrentWsFolders
conversationId: string
proxyClient: FeatureClient
uploadId: string
currentCodeGenerationId?: string
}

export interface SessionStateAction {
task: string
msg: string
messenger: Messenger
fs: VirtualFileSystem
telemetry: TelemetryHelper
uploadHistory?: UploadHistory
tokenSource?: CancellationTokenSource
}

export type NewFileZipContents = { zipFilePath: string; fileContent: string }
export type NewFileInfo = DiffTreeFileInfo &
NewFileZipContents & {
virtualMemoryUri: vscode.Uri
workspaceFolder: vscode.WorkspaceFolder
}

export type DeletedFileInfo = DiffTreeFileInfo & {
workspaceFolder: vscode.WorkspaceFolder
}

export interface SessionInfo {
// TODO, if it had a summarized name that was better for the UI
name?: string
history: string[]
}

export interface SessionStorage {
[key: string]: SessionInfo
}

export type LLMResponseType = 'EMPTY' | 'INVALID_STATE' | 'VALID'

export interface UpdateFilesPathsParams {
tabID: string
filePaths: NewFileInfo[]
deletedFiles: DeletedFileInfo[]
messageId: string
disableFileActions?: boolean
}

export enum MetricDataOperationName {
StartCodeGeneration = 'StartCodeGeneration',
EndCodeGeneration = 'EndCodeGeneration',
}

export enum MetricDataResult {
Success = 'Success',
Fault = 'Fault',
Error = 'Error',
LlmFailure = 'LLMFailure',
}
6 changes: 0 additions & 6 deletions packages/core/src/amazonq/constants.ts

This file was deleted.

2 changes: 0 additions & 2 deletions packages/core/src/amazonq/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,5 +66,3 @@ export function createMynahUI(
}

export * from './commons/types'
export * from './types'
export * from './constants'
2 changes: 1 addition & 1 deletion packages/core/src/amazonq/session/sessionState.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import {
SessionStateConfig,
SessionStateInteraction,
SessionStatePhase,
} from '../types'
} from '../commons/types'
import { prepareRepoData, getDeletedFileInfos, registerNewFiles } from '../util/files'
import { uploadCode } from '../util/upload'

Expand Down
129 changes: 0 additions & 129 deletions packages/core/src/amazonq/types.ts

This file was deleted.

2 changes: 1 addition & 1 deletion packages/core/src/amazonq/util/files.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { ContentLengthError, PrepareRepoFailedError } from '../../amazonqFeature
import { getLogger } from '../../shared/logger/logger'
import { maxFileSizeBytes } from '../../amazonqFeatureDev/limits'
import { createHash } from 'crypto'
import { CurrentWsFolders, DeletedFileInfo, NewFileInfo, NewFileZipContents } from '../types'
import { CurrentWsFolders, DeletedFileInfo, NewFileInfo, NewFileZipContents } from '../commons/types'
import { hasCode, ToolkitError } from '../../shared/errors'
import { AmazonqCreateUpload, Span, telemetry as amznTelemetry, telemetry } from '../../shared/telemetry/telemetry'
import { TelemetryHelper } from './telemetryHelper'
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/amazonq/util/telemetryHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import { globals } from '../../shared'
import { getLogger } from '../../shared/logger/logger'
import { AmazonqApproachInvoke, AmazonqCodeGenerationInvoke, Span } from '../../shared/telemetry/telemetry'
import { LLMResponseType } from '../types'
import { LLMResponseType } from '../commons/types'

export class TelemetryHelper {
public generateApproachIteration: number
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/amazonqDoc/session/sessionState.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import { DocGenerationStep, docScheme, getFileSummaryPercentage, Mode } from '..
import { i18n } from '../../shared/i18n-helper'

import { NewFileInfo, SessionState, SessionStateAction, SessionStateConfig } from '../types'
import { Intent } from '../../amazonqFeatureDev'
import {
ContentLengthError,
DocServiceError,
Expand All @@ -23,6 +22,7 @@ import {
} from '../errors'
import { DocMessenger } from '../messenger'
import { BaseCodeGenState, BasePrepareCodeGenState, CreateNextStateParams } from '../../amazonq/session/sessionState'
import { Intent } from '../../amazonq/commons/types'

export class DocCodeGenState extends BaseCodeGenState {
protected handleProgress(messenger: DocMessenger, detail?: string): void {
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/amazonqDoc/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import {
SessionState as FeatureDevSessionState,
SessionStateAction as FeatureDevSessionStateAction,
SessionStateInteraction as FeatureDevSessionStateInteraction,
} from '../amazonq/types'
} from '../amazonq/commons/types'

import { Mode } from './constants'
import { DocMessenger } from './messenger'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ import {
MetricDataOperationName,
MetricDataResult,
type NewFileInfo,
} from '../../../amazonq'
} from '../../../amazonq/commons/types'
import { AuthUtil } from '../../../codewhisperer/util/authUtil'
import { AuthController } from '../../../amazonq/auth/controller'
import { getLogger } from '../../../shared/logger'
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/amazonqFeatureDev/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* SPDX-License-Identifier: Apache-2.0
*/

export * from '../amazonq/types'
// export * from '../amazonq/commons/types'
export * from './userFacingText'
export * from './errors'
export * from './session/sessionState'
Expand Down
Loading

0 comments on commit 03f7ed3

Please sign in to comment.