Skip to content

Commit 3d372a9

Browse files
committed
feat(amazonq): add token methods to codewhisperer clients (#1958)
1 parent 8a12b66 commit 3d372a9

File tree

5 files changed

+399
-38
lines changed

5 files changed

+399
-38
lines changed

server/aws-lsp-codewhisperer/src/shared/codeWhispererService/codeWhispererServiceBase.test.ts

Lines changed: 90 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ import { CredentialsType } from '@aws/language-server-runtimes/server-interface'
77
import { AWSError, ConfigurationOptions } from 'aws-sdk'
88
import * as sinon from 'sinon'
99
import * as assert from 'assert'
10-
import { CodeWhispererServiceBase, GenerateSuggestionsResponse } from './codeWhispererServiceBase'
1110
import { PromiseResult } from 'aws-sdk/lib/request'
1211
import {
12+
CodeWhispererServiceBase,
13+
GenerateSuggestionsResponse,
1314
CreateUploadUrlRequest,
1415
CreateUploadUrlResponse,
1516
StartTransformationRequest,
@@ -39,7 +40,10 @@ import {
3940
DeleteWorkspaceResponse,
4041
ListFeatureEvaluationsRequest,
4142
ListFeatureEvaluationsResponse,
42-
} from '../../client/token/codewhispererbearertokenclient'
43+
CreateSubscriptionTokenRequest,
44+
CreateSubscriptionTokenResponse,
45+
ListAvailableProfilesResponse,
46+
} from './codeWhispererServiceBase'
4347

4448
describe('CodeWhispererServiceBase', function () {
4549
// Create the environment
@@ -81,6 +85,90 @@ describe('CodeWhispererServiceBase', function () {
8185
}
8286

8387
clearCachedSuggestions(): void {}
88+
89+
override codeModernizerCreateUploadUrl(request: CreateUploadUrlRequest): Promise<CreateUploadUrlResponse> {
90+
throw new Error('Method not implemented.')
91+
}
92+
override codeModernizerStartCodeTransformation(
93+
request: StartTransformationRequest
94+
): Promise<PromiseResult<StartTransformationResponse, AWSError>> {
95+
throw new Error('Method not implemented.')
96+
}
97+
override codeModernizerStopCodeTransformation(
98+
request: StopTransformationRequest
99+
): Promise<PromiseResult<StopTransformationResponse, AWSError>> {
100+
throw new Error('Method not implemented.')
101+
}
102+
override codeModernizerGetCodeTransformation(
103+
request: GetTransformationRequest
104+
): Promise<PromiseResult<GetTransformationResponse, AWSError>> {
105+
throw new Error('Method not implemented.')
106+
}
107+
override codeModernizerGetCodeTransformationPlan(
108+
request: GetTransformationPlanRequest
109+
): Promise<PromiseResult<GetTransformationPlanResponse, AWSError>> {
110+
throw new Error('Method not implemented.')
111+
}
112+
override createUploadUrl(
113+
request: CreateUploadUrlRequest
114+
): Promise<PromiseResult<CreateUploadUrlResponse, AWSError>> {
115+
throw new Error('Method not implemented.')
116+
}
117+
override startCodeAnalysis(
118+
request: StartCodeAnalysisRequest
119+
): Promise<PromiseResult<StartCodeAnalysisResponse, AWSError>> {
120+
throw new Error('Method not implemented.')
121+
}
122+
override getCodeAnalysis(
123+
request: GetCodeAnalysisRequest
124+
): Promise<PromiseResult<GetCodeAnalysisResponse, AWSError>> {
125+
throw new Error('Method not implemented.')
126+
}
127+
override listCodeAnalysisFindings(
128+
request: ListCodeAnalysisFindingsRequest
129+
): Promise<PromiseResult<ListCodeAnalysisFindingsResponse, AWSError>> {
130+
throw new Error('Method not implemented.')
131+
}
132+
override listAvailableCustomizations(
133+
request: ListAvailableCustomizationsRequest
134+
): Promise<PromiseResult<ListAvailableCustomizationsResponse, AWSError>> {
135+
throw new Error('Method not implemented.')
136+
}
137+
override listAvailableProfiles(
138+
request: ListAvailableProfilesRequest
139+
): Promise<PromiseResult<ListAvailableProfilesResponse, AWSError>> {
140+
throw new Error('Method not implemented.')
141+
}
142+
override sendTelemetryEvent(
143+
request: SendTelemetryEventRequest
144+
): Promise<PromiseResult<SendTelemetryEventResponse, AWSError>> {
145+
throw new Error('Method not implemented.')
146+
}
147+
override createWorkspace(
148+
request: CreateWorkspaceRequest
149+
): Promise<PromiseResult<CreateWorkspaceResponse, AWSError>> {
150+
throw new Error('Method not implemented.')
151+
}
152+
override listWorkspaceMetadata(
153+
request: ListWorkspaceMetadataRequest
154+
): Promise<PromiseResult<ListWorkspaceMetadataResponse, AWSError>> {
155+
throw new Error('Method not implemented.')
156+
}
157+
override deleteWorkspace(
158+
request: DeleteWorkspaceRequest
159+
): Promise<PromiseResult<DeleteWorkspaceResponse, AWSError>> {
160+
throw new Error('Method not implemented.')
161+
}
162+
override listFeatureEvaluations(
163+
request: ListFeatureEvaluationsRequest
164+
): Promise<PromiseResult<ListFeatureEvaluationsResponse, AWSError>> {
165+
throw new Error('Method not implemented.')
166+
}
167+
override createSubscriptionToken(
168+
request: CreateSubscriptionTokenRequest
169+
): Promise<PromiseResult<CreateSubscriptionTokenResponse, AWSError>> {
170+
throw new Error('Method not implemented.')
171+
}
84172
}
85173

86174
service = new TestCodeWhispererService('us-east-1', 'https://codewhisperer.us-east-1.amazonaws.com')

server/aws-lsp-codewhisperer/src/shared/codeWhispererService/codeWhispererServiceBase.ts

Lines changed: 112 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,57 @@ export interface GenerateSuggestionsResponse {
3535
responseContext: ResponseContext
3636
}
3737

38+
// TODO: CodeWhispererSigv4Client requests and responses do not exist yet and should be added in the future
39+
export interface CreateUploadUrlRequest extends CodeWhispererTokenClient.CreateUploadUrlRequest {}
40+
export interface CreateUploadUrlResponse extends CodeWhispererTokenClient.CreateUploadUrlResponse {}
41+
42+
export interface StartTransformationRequest extends CodeWhispererTokenClient.StartTransformationRequest {}
43+
export interface StartTransformationResponse extends CodeWhispererTokenClient.StartTransformationResponse {}
44+
45+
export interface StopTransformationRequest extends CodeWhispererTokenClient.StopTransformationRequest {}
46+
export interface StopTransformationResponse extends CodeWhispererTokenClient.StopTransformationResponse {}
47+
48+
export interface GetTransformationRequest extends CodeWhispererTokenClient.GetTransformationRequest {}
49+
export interface GetTransformationResponse extends CodeWhispererTokenClient.GetTransformationResponse {}
50+
51+
export interface GetTransformationPlanRequest extends CodeWhispererTokenClient.GetTransformationPlanRequest {}
52+
export interface GetTransformationPlanResponse extends CodeWhispererTokenClient.GetTransformationPlanResponse {}
53+
54+
export interface StartCodeAnalysisRequest extends CodeWhispererTokenClient.StartCodeAnalysisRequest {}
55+
export interface StartCodeAnalysisResponse extends CodeWhispererTokenClient.StartCodeAnalysisResponse {}
56+
57+
export interface GetCodeAnalysisRequest extends CodeWhispererTokenClient.GetCodeAnalysisRequest {}
58+
export interface GetCodeAnalysisResponse extends CodeWhispererTokenClient.GetCodeAnalysisResponse {}
59+
60+
export interface ListCodeAnalysisFindingsRequest extends CodeWhispererTokenClient.ListCodeAnalysisFindingsRequest {}
61+
export interface ListCodeAnalysisFindingsResponse extends CodeWhispererTokenClient.ListCodeAnalysisFindingsResponse {}
62+
63+
export interface ListAvailableCustomizationsRequest
64+
extends CodeWhispererTokenClient.ListAvailableCustomizationsRequest {}
65+
export interface ListAvailableCustomizationsResponse
66+
extends CodeWhispererTokenClient.ListAvailableCustomizationsResponse {}
67+
68+
export interface ListAvailableProfilesRequest extends CodeWhispererTokenClient.ListAvailableProfilesRequest {}
69+
export interface ListAvailableProfilesResponse extends CodeWhispererTokenClient.ListAvailableProfilesResponse {}
70+
71+
export interface SendTelemetryEventRequest extends CodeWhispererTokenClient.SendTelemetryEventRequest {}
72+
export interface SendTelemetryEventResponse extends CodeWhispererTokenClient.SendTelemetryEventResponse {}
73+
74+
export interface CreateWorkspaceRequest extends CodeWhispererTokenClient.CreateWorkspaceRequest {}
75+
export interface CreateWorkspaceResponse extends CodeWhispererTokenClient.CreateWorkspaceResponse {}
76+
77+
export interface ListWorkspaceMetadataRequest extends CodeWhispererTokenClient.ListWorkspaceMetadataRequest {}
78+
export interface ListWorkspaceMetadataResponse extends CodeWhispererTokenClient.ListWorkspaceMetadataResponse {}
79+
80+
export interface DeleteWorkspaceRequest extends CodeWhispererTokenClient.DeleteWorkspaceRequest {}
81+
export interface DeleteWorkspaceResponse extends CodeWhispererTokenClient.DeleteWorkspaceResponse {}
82+
83+
export interface ListFeatureEvaluationsRequest extends CodeWhispererTokenClient.ListFeatureEvaluationsRequest {}
84+
export interface ListFeatureEvaluationsResponse extends CodeWhispererTokenClient.ListFeatureEvaluationsResponse {}
85+
86+
export interface CreateSubscriptionTokenRequest extends CodeWhispererTokenClient.CreateSubscriptionTokenRequest {}
87+
export interface CreateSubscriptionTokenResponse extends CodeWhispererTokenClient.CreateSubscriptionTokenResponse {}
88+
3889
type CodeWhispererClient = CodeWhispererSigv4Client | CodeWhispererTokenClient
3990

4091
// Right now the only difference between the token client and the IAM client for codewhsiperer is the difference in function name
@@ -45,7 +96,7 @@ export abstract class CodeWhispererServiceBase {
4596
public shareCodeWhispererContentWithAWS = false
4697
public customizationArn?: string
4798
public profileArn?: string
48-
abstract client: CodeWhispererSigv4Client | CodeWhispererTokenClient
99+
abstract client: CodeWhispererClient
49100

50101
inflightRequests: Set<AWS.Request<any, AWSError> & RequestExtras> = new Set()
51102

@@ -64,10 +115,6 @@ export abstract class CodeWhispererServiceBase {
64115
this.inflightRequests.delete(request)
65116
}
66117

67-
abstract getCredentialsType(): CredentialsType
68-
69-
abstract generateSuggestions(request: GenerateSuggestionsRequest): Promise<GenerateSuggestionsResponse>
70-
71118
constructor(codeWhispererRegion: string, codeWhispererEndpoint: string) {
72119
this.codeWhispererRegion = codeWhispererRegion
73120
this.codeWhispererEndpoint = codeWhispererEndpoint
@@ -95,4 +142,64 @@ export abstract class CodeWhispererServiceBase {
95142
// No-op: base class doesn't support subscription polling
96143
return false
97144
}
145+
146+
abstract getCredentialsType(): CredentialsType
147+
148+
abstract generateSuggestions(request: GenerateSuggestionsRequest): Promise<GenerateSuggestionsResponse>
149+
150+
abstract codeModernizerCreateUploadUrl(request: CreateUploadUrlRequest): Promise<CreateUploadUrlResponse>
151+
152+
abstract codeModernizerStartCodeTransformation(
153+
request: StartTransformationRequest
154+
): Promise<PromiseResult<StartTransformationResponse, AWSError>>
155+
156+
abstract codeModernizerStopCodeTransformation(
157+
request: StopTransformationRequest
158+
): Promise<PromiseResult<StopTransformationResponse, AWSError>>
159+
160+
abstract codeModernizerGetCodeTransformation(
161+
request: GetTransformationRequest
162+
): Promise<PromiseResult<GetTransformationResponse, AWSError>>
163+
164+
abstract codeModernizerGetCodeTransformationPlan(
165+
request: GetTransformationPlanRequest
166+
): Promise<PromiseResult<GetTransformationPlanResponse, AWSError>>
167+
168+
abstract createUploadUrl(request: CreateUploadUrlRequest): Promise<PromiseResult<CreateUploadUrlResponse, AWSError>>
169+
170+
abstract startCodeAnalysis(
171+
request: StartCodeAnalysisRequest
172+
): Promise<PromiseResult<StartCodeAnalysisResponse, AWSError>>
173+
174+
abstract getCodeAnalysis(request: GetCodeAnalysisRequest): Promise<PromiseResult<GetCodeAnalysisResponse, AWSError>>
175+
176+
abstract listCodeAnalysisFindings(
177+
request: ListCodeAnalysisFindingsRequest
178+
): Promise<PromiseResult<ListCodeAnalysisFindingsResponse, AWSError>>
179+
180+
abstract listAvailableCustomizations(
181+
request: ListAvailableCustomizationsRequest
182+
): Promise<PromiseResult<ListAvailableCustomizationsResponse, AWSError>>
183+
184+
abstract listAvailableProfiles(
185+
request: ListAvailableProfilesRequest
186+
): Promise<PromiseResult<ListAvailableProfilesResponse, AWSError>>
187+
188+
abstract sendTelemetryEvent(
189+
request: SendTelemetryEventRequest
190+
): Promise<PromiseResult<SendTelemetryEventResponse, AWSError>>
191+
192+
abstract createWorkspace(request: CreateWorkspaceRequest): Promise<PromiseResult<CreateWorkspaceResponse, AWSError>>
193+
194+
abstract listWorkspaceMetadata(
195+
request: ListWorkspaceMetadataRequest
196+
): Promise<PromiseResult<ListWorkspaceMetadataResponse, AWSError>>
197+
198+
abstract deleteWorkspace(request: DeleteWorkspaceRequest): Promise<PromiseResult<DeleteWorkspaceResponse, AWSError>>
199+
200+
abstract listFeatureEvaluations(
201+
request: ListFeatureEvaluationsRequest
202+
): Promise<PromiseResult<ListFeatureEvaluationsResponse, AWSError>>
203+
204+
abstract createSubscriptionToken(request: CreateSubscriptionTokenRequest): Promise<CreateSubscriptionTokenResponse>
98205
}

0 commit comments

Comments
 (0)