Skip to content

Commit bcd4d1a

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

File tree

28 files changed

+291
-283
lines changed

28 files changed

+291
-283
lines changed

packages/core/src/amazonqFeatureCommon/client/client.ts renamed to packages/core/src/amazonq/client/client.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import { ServiceOptions } from '../../shared'
77

8-
export abstract class Client {
8+
export abstract class FeatureClient {
99
public abstract getClient(options?: Partial<ServiceOptions>): Promise<any>
1010

1111
public abstract createConversation(): Promise<string>

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 '../../../amazonqFeatureCommon/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 '../../../amazonqFeatureCommon/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 '../../../amazonqFeatureCommon/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/index.ts

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

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

packages/core/src/amazonqFeatureCommon/session/sessionState.ts renamed to packages/core/src/amazonq/session/sessionState.ts

Lines changed: 69 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import globals from '../../shared/extensionGlobals'
99
import { getLogger } from '../../shared/logger'
1010
import { telemetry } from '../../shared/telemetry/telemetry'
1111
import { VirtualFileSystem } from '../../shared/virtualFilesystem'
12-
import { CodeReference, UploadHistory } from '../../amazonq/webview/ui/connector'
12+
import { CodeReference, UploadHistory } from '../webview/ui/connector'
1313
import { AuthUtil } from '../../codewhisperer/util/authUtil'
1414
import { randomUUID } from '../../shared/crypto'
1515
import { i18n } from '../../shared/i18n-helper'
@@ -185,7 +185,30 @@ export abstract class BasePrepareCodeGenState implements SessionState {
185185
this.config.workspaceRoots = [workspaceRoot]
186186
}
187187

188-
protected abstract createNextState(config: SessionStateConfig): SessionState
188+
protected createNextState(
189+
config: SessionStateConfig,
190+
StateClass?: new (
191+
config: SessionStateConfig,
192+
filePaths: NewFileInfo[],
193+
deletedFiles: DeletedFileInfo[],
194+
references: CodeReference[],
195+
tabID: string,
196+
currentIteration: number,
197+
uploadHistory: UploadHistory,
198+
codeGenerationRemainingIterationCount?: number,
199+
codeGenerationTotalIterationCount?: number
200+
) => SessionState
201+
): SessionState {
202+
return new StateClass!(
203+
config,
204+
this.filePaths,
205+
this.deletedFiles,
206+
this.references,
207+
this.tabID,
208+
this.currentIteration,
209+
this.uploadHistory
210+
)
211+
}
189212

190213
async interact(action: SessionStateAction): Promise<SessionStateInteraction> {
191214
const uploadId = await telemetry.amazonq_createUpload.run(async (span) => {
@@ -226,6 +249,19 @@ export interface CodeGenerationParams {
226249
workspaceFolders: CurrentWsFolders
227250
}
228251

252+
export interface CreateNextStateParams {
253+
filePaths: NewFileInfo[]
254+
deletedFiles: DeletedFileInfo[]
255+
references: CodeReference[]
256+
currentIteration: number
257+
remainingIterations?: number
258+
totalIterations?: number
259+
uploadHistory: UploadHistory
260+
tokenSource: vscode.CancellationTokenSource
261+
currentCodeGenerationId?: string
262+
codeGenerationId?: string
263+
}
264+
229265
export abstract class BaseCodeGenState extends CodeGenBase implements SessionState {
230266
constructor(
231267
config: SessionStateConfig,
@@ -241,21 +277,39 @@ export abstract class BaseCodeGenState extends CodeGenBase implements SessionSta
241277
super(config, tabID)
242278
}
243279

244-
protected abstract createNextState(
280+
protected createNextState(
245281
config: SessionStateConfig,
246-
params: {
247-
filePaths: NewFileInfo[]
248-
deletedFiles: DeletedFileInfo[]
249-
references: CodeReference[]
250-
currentIteration: number
251-
remainingIterations?: number
252-
totalIterations?: number
253-
uploadHistory: UploadHistory
254-
tokenSource: vscode.CancellationTokenSource
255-
currentCodeGenerationId?: string
282+
params: CreateNextStateParams,
283+
StateClass?: new (
284+
config: SessionStateConfig,
285+
filePaths: NewFileInfo[],
286+
deletedFiles: DeletedFileInfo[],
287+
references: CodeReference[],
288+
tabID: string,
289+
currentIteration: number,
290+
remainingIterations?: number,
291+
totalIterations?: number,
292+
uploadHistory?: UploadHistory,
293+
tokenSource?: vscode.CancellationTokenSource,
294+
currentCodeGenerationId?: string,
256295
codeGenerationId?: string
257-
}
258-
): SessionState
296+
) => SessionState
297+
): SessionState {
298+
return new StateClass!(
299+
config,
300+
params.filePaths,
301+
params.deletedFiles,
302+
params.references,
303+
this.tabID,
304+
params.currentIteration,
305+
params.remainingIterations,
306+
params.totalIterations,
307+
params.uploadHistory,
308+
params.tokenSource,
309+
params.currentCodeGenerationId,
310+
params.codeGenerationId
311+
)
312+
}
259313

260314
async interact(action: SessionStateAction): Promise<SessionStateInteraction> {
261315
return telemetry.amazonq_codeGenerationInvoke.run(async (span) => {

packages/core/src/amazonqFeatureCommon/types.ts renamed to packages/core/src/amazonq/types.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
import * as vscode from 'vscode'
77
import { VirtualFileSystem } from '../shared/virtualFilesystem'
88
import type { CancellationTokenSource } from 'vscode'
9-
import { CodeReference, UploadHistory } from '../amazonq/webview/ui/connector'
10-
import { DiffTreeFileInfo } from '../amazonq/webview/ui/diffTree/types'
11-
import { Messenger } from '../amazonq/commons/connector/baseMessenger'
12-
import { Client } from './client/client'
9+
import { CodeReference, UploadHistory } from './webview/ui/connector'
10+
import { DiffTreeFileInfo } from './webview/ui/diffTree/types'
11+
import { Messenger } from './commons/connector/baseMessenger'
12+
import { FeatureClient } from './client/client'
1313
import { TelemetryHelper } from './util/telemetryHelper'
1414

1515
export type Interaction = {
@@ -70,7 +70,7 @@ export interface SessionStateConfig {
7070
workspaceRoots: string[]
7171
workspaceFolders: CurrentWsFolders
7272
conversationId: string
73-
proxyClient: Client
73+
proxyClient: FeatureClient
7474
uploadId: string
7575
currentCodeGenerationId?: string
7676
}

packages/core/src/amazonqFeatureCommon/util/files.ts renamed to 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 '../../amazonqFeatureCommon/types'
15+
import { CurrentWsFolders, DeletedFileInfo, NewFileInfo, NewFileZipContents } from '../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)