Skip to content

Commit 03f7ed3

Browse files
committed
refactor(amazonq): refactor doc and featureDev SessionState
1 parent bcd4d1a commit 03f7ed3

File tree

23 files changed

+180
-191
lines changed

23 files changed

+180
-191
lines changed

packages/amazonq/test/unit/amazonqFeatureDev/session/session.test.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,8 @@ import {
1818
sessionWriteFile,
1919
assertTelemetry,
2020
} from 'aws-core-vscode/test'
21-
import {
22-
CurrentWsFolders,
23-
FeatureDevClient,
24-
featureDevScheme,
25-
FeatureDevCodeGenState,
26-
} from 'aws-core-vscode/amazonqFeatureDev'
27-
import { Messenger } from 'aws-core-vscode/amazonq'
21+
import { FeatureDevClient, featureDevScheme, FeatureDevCodeGenState } from 'aws-core-vscode/amazonqFeatureDev'
22+
import { Messenger, CurrentWsFolders } from 'aws-core-vscode/amazonq'
2823
import path from 'path'
2924
import { fs } from 'aws-core-vscode/shared'
3025

packages/core/src/amazonq/commons/connector/baseMessenger.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import {
2727
} from './connectorMessages'
2828
import { FollowUpTypes } from '../types'
2929
import { messageWithConversationId } from '../../../amazonqFeatureDev/userFacingText'
30-
import { DeletedFileInfo, NewFileInfo } from '../../types'
30+
import { DeletedFileInfo, NewFileInfo } from '../types'
3131

3232
export class Messenger {
3333
public constructor(

packages/core/src/amazonq/commons/connector/connectorMessages.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { MessagePublisher } from '../../messages/messagePublisher'
88
import { CodeReference } from '../../webview/ui/connector'
99
import { ChatItemAction, ProgressField, SourceLink } from '@aws/mynah-ui'
1010
import { ChatItemType } from '../model'
11-
import { DeletedFileInfo, NewFileInfo } from '../../types'
11+
import { DeletedFileInfo, NewFileInfo } from '../types'
1212
import { licenseText } from '../../../amazonqFeatureDev/constants'
1313

1414
class UiMessage {

packages/core/src/amazonq/commons/session/sessionConfigFactory.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import * as vscode from 'vscode'
77
import { WorkspaceFolderNotFoundError } from '../../../amazonqFeatureDev/errors'
88
import { VirtualFileSystem, VirtualMemoryFile } from '../../../shared'
9-
import { CurrentWsFolders } from '../../types'
9+
import { CurrentWsFolders } from '../types'
1010

1111
export interface SessionConfig {
1212
// The paths on disk to where the source code lives

packages/core/src/amazonq/commons/types.ts

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6+
import * as vscode from 'vscode'
7+
import { VirtualFileSystem } from '../../shared/virtualFilesystem'
8+
import type { CancellationTokenSource } from 'vscode'
9+
import { CodeReference, UploadHistory } from '../webview/ui/connector'
10+
import { DiffTreeFileInfo } from '../webview/ui/diffTree/types'
11+
import { Messenger } from './connector/baseMessenger'
12+
import { FeatureClient } from '../client/client'
13+
import { TelemetryHelper } from '../util/telemetryHelper'
14+
615
export enum FollowUpTypes {
716
// UnitTestGeneration
817
ViewDiff = 'ViewDiff',
@@ -36,3 +45,119 @@ export enum FollowUpTypes {
3645
ProceedFolderSelection = 'ProceedFolderSelection',
3746
CancelFolderSelection = 'CancelFolderSelection',
3847
}
48+
49+
export type Interaction = {
50+
// content to be sent back to the chat UI
51+
content?: string
52+
responseType?: LLMResponseType
53+
}
54+
55+
export interface SessionStateInteraction {
56+
nextState: SessionState | Omit<SessionState, 'uploadId'> | undefined
57+
interaction: Interaction
58+
currentCodeGenerationId?: string
59+
}
60+
61+
export enum Intent {
62+
DEV = 'DEV',
63+
DOC = 'DOC',
64+
}
65+
66+
export enum DevPhase {
67+
INIT = 'Init',
68+
APPROACH = 'Approach',
69+
CODEGEN = 'Codegen',
70+
}
71+
72+
export enum CodeGenerationStatus {
73+
COMPLETE = 'Complete',
74+
PREDICT_READY = 'predict-ready',
75+
IN_PROGRESS = 'InProgress',
76+
PREDICT_FAILED = 'predict-failed',
77+
DEBATE_FAILED = 'debate-failed',
78+
FAILED = 'Failed',
79+
}
80+
81+
export type SessionStatePhase = DevPhase.INIT | DevPhase.CODEGEN
82+
83+
export type CurrentWsFolders = [vscode.WorkspaceFolder, ...vscode.WorkspaceFolder[]]
84+
85+
export interface SessionState {
86+
readonly filePaths?: NewFileInfo[]
87+
readonly deletedFiles?: DeletedFileInfo[]
88+
readonly references?: CodeReference[]
89+
readonly phase?: SessionStatePhase
90+
readonly uploadId: string
91+
readonly currentIteration?: number
92+
currentCodeGenerationId?: string
93+
tokenSource?: CancellationTokenSource
94+
readonly codeGenerationId?: string
95+
readonly tabID: string
96+
interact(action: SessionStateAction): Promise<SessionStateInteraction>
97+
updateWorkspaceRoot?: (workspaceRoot: string) => void
98+
codeGenerationRemainingIterationCount?: number
99+
codeGenerationTotalIterationCount?: number
100+
uploadHistory?: UploadHistory
101+
}
102+
103+
export interface SessionStateConfig {
104+
workspaceRoots: string[]
105+
workspaceFolders: CurrentWsFolders
106+
conversationId: string
107+
proxyClient: FeatureClient
108+
uploadId: string
109+
currentCodeGenerationId?: string
110+
}
111+
112+
export interface SessionStateAction {
113+
task: string
114+
msg: string
115+
messenger: Messenger
116+
fs: VirtualFileSystem
117+
telemetry: TelemetryHelper
118+
uploadHistory?: UploadHistory
119+
tokenSource?: CancellationTokenSource
120+
}
121+
122+
export type NewFileZipContents = { zipFilePath: string; fileContent: string }
123+
export type NewFileInfo = DiffTreeFileInfo &
124+
NewFileZipContents & {
125+
virtualMemoryUri: vscode.Uri
126+
workspaceFolder: vscode.WorkspaceFolder
127+
}
128+
129+
export type DeletedFileInfo = DiffTreeFileInfo & {
130+
workspaceFolder: vscode.WorkspaceFolder
131+
}
132+
133+
export interface SessionInfo {
134+
// TODO, if it had a summarized name that was better for the UI
135+
name?: string
136+
history: string[]
137+
}
138+
139+
export interface SessionStorage {
140+
[key: string]: SessionInfo
141+
}
142+
143+
export type LLMResponseType = 'EMPTY' | 'INVALID_STATE' | 'VALID'
144+
145+
export interface UpdateFilesPathsParams {
146+
tabID: string
147+
filePaths: NewFileInfo[]
148+
deletedFiles: DeletedFileInfo[]
149+
messageId: string
150+
disableFileActions?: boolean
151+
}
152+
153+
export enum MetricDataOperationName {
154+
StartCodeGeneration = 'StartCodeGeneration',
155+
EndCodeGeneration = 'EndCodeGeneration',
156+
}
157+
158+
export enum MetricDataResult {
159+
Success = 'Success',
160+
Fault = 'Fault',
161+
Error = 'Error',
162+
LlmFailure = 'LLMFailure',
163+
}

packages/core/src/amazonq/constants.ts

Lines changed: 0 additions & 6 deletions
This file was deleted.

packages/core/src/amazonq/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,5 +66,3 @@ export function createMynahUI(
6666
}
6767

6868
export * from './commons/types'
69-
export * from './types'
70-
export * from './constants'

packages/core/src/amazonq/session/sessionState.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import {
2424
SessionStateConfig,
2525
SessionStateInteraction,
2626
SessionStatePhase,
27-
} from '../types'
27+
} from '../commons/types'
2828
import { prepareRepoData, getDeletedFileInfos, registerNewFiles } from '../util/files'
2929
import { uploadCode } from '../util/upload'
3030

packages/core/src/amazonq/types.ts

Lines changed: 0 additions & 129 deletions
This file was deleted.

packages/core/src/amazonq/util/files.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { ContentLengthError, PrepareRepoFailedError } from '../../amazonqFeature
1212
import { getLogger } from '../../shared/logger/logger'
1313
import { maxFileSizeBytes } from '../../amazonqFeatureDev/limits'
1414
import { createHash } from 'crypto'
15-
import { CurrentWsFolders, DeletedFileInfo, NewFileInfo, NewFileZipContents } from '../types'
15+
import { CurrentWsFolders, DeletedFileInfo, NewFileInfo, NewFileZipContents } from '../commons/types'
1616
import { hasCode, ToolkitError } from '../../shared/errors'
1717
import { AmazonqCreateUpload, Span, telemetry as amznTelemetry, telemetry } from '../../shared/telemetry/telemetry'
1818
import { TelemetryHelper } from './telemetryHelper'

0 commit comments

Comments
 (0)