Skip to content

Commit ef54345

Browse files
committed
feat(amazonq): add token methods to codewhisperer clients (#1958)
1 parent 5c1b23a commit ef54345

File tree

5 files changed

+398
-38
lines changed

5 files changed

+398
-38
lines changed

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

Lines changed: 89 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,9 @@ import {
3940
DeleteWorkspaceResponse,
4041
ListFeatureEvaluationsRequest,
4142
ListFeatureEvaluationsResponse,
42-
} from '../../client/token/codewhispererbearertokenclient'
43+
CreateSubscriptionTokenRequest,
44+
CreateSubscriptionTokenResponse,
45+
} from './codeWhispererServiceBase'
4346

4447
describe('CodeWhispererServiceBase', function () {
4548
// Create the environment
@@ -81,6 +84,90 @@ describe('CodeWhispererServiceBase', function () {
8184
}
8285

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

86173
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<ListAvailableProfilesRequest, 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
}

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

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,47 @@ import {
1212
createCodeWhispererSigv4Client,
1313
} from '../../client/sigv4/codewhisperer'
1414
import CodeWhispererSigv4Client = require('../../client/sigv4/codewhisperersigv4client')
15+
import CodeWhispererTokenClient = require('../../client/token/codewhispererbearertokenclient')
1516
import {
1617
CodeWhispererServiceBase,
18+
CreateSubscriptionTokenRequest,
19+
CreateSubscriptionTokenResponse,
20+
CreateUploadUrlRequest,
21+
CreateUploadUrlResponse,
22+
CreateWorkspaceRequest,
23+
CreateWorkspaceResponse,
24+
DeleteWorkspaceRequest,
25+
DeleteWorkspaceResponse,
1726
GenerateSuggestionsRequest,
1827
GenerateSuggestionsResponse,
28+
GetCodeAnalysisRequest,
29+
GetCodeAnalysisResponse,
30+
GetTransformationPlanRequest,
31+
GetTransformationPlanResponse,
32+
GetTransformationRequest,
33+
GetTransformationResponse,
34+
ListAvailableCustomizationsRequest,
35+
ListAvailableCustomizationsResponse,
36+
ListAvailableProfilesRequest,
37+
ListAvailableProfilesResponse,
38+
ListCodeAnalysisFindingsRequest,
39+
ListCodeAnalysisFindingsResponse,
40+
ListFeatureEvaluationsRequest,
41+
ListFeatureEvaluationsResponse,
42+
ListWorkspaceMetadataRequest,
43+
ListWorkspaceMetadataResponse,
44+
SendTelemetryEventRequest,
45+
SendTelemetryEventResponse,
46+
StartCodeAnalysisRequest,
47+
StartCodeAnalysisResponse,
48+
StartTransformationRequest,
49+
StartTransformationResponse,
50+
StopTransformationRequest,
51+
StopTransformationResponse,
1952
Suggestion,
2053
SuggestionType,
2154
} from './codeWhispererServiceBase'
55+
import { PromiseResult } from 'aws-sdk/lib/request'
2256

2357
export class CodeWhispererServiceIAM extends CodeWhispererServiceBase {
2458
client: CodeWhispererSigv4Client
@@ -74,4 +108,94 @@ export class CodeWhispererServiceIAM extends CodeWhispererServiceBase {
74108
responseContext,
75109
}
76110
}
111+
112+
async codeModernizerCreateUploadUrl(request: CreateUploadUrlRequest): Promise<CreateUploadUrlResponse> {
113+
throw new Error('Method not implemented.')
114+
}
115+
116+
async codeModernizerStartCodeTransformation(
117+
request: StartTransformationRequest
118+
): Promise<PromiseResult<StartTransformationResponse, AWSError>> {
119+
throw new Error('Method not implemented.')
120+
}
121+
122+
async codeModernizerStopCodeTransformation(
123+
request: StopTransformationRequest
124+
): Promise<PromiseResult<StopTransformationResponse, AWSError>> {
125+
throw new Error('Method not implemented.')
126+
}
127+
128+
async codeModernizerGetCodeTransformation(
129+
request: GetTransformationRequest
130+
): Promise<PromiseResult<GetTransformationResponse, AWSError>> {
131+
throw new Error('Method not implemented.')
132+
}
133+
134+
async codeModernizerGetCodeTransformationPlan(
135+
request: GetTransformationPlanRequest
136+
): Promise<PromiseResult<GetTransformationPlanResponse, AWSError>> {
137+
throw new Error('Method not implemented.')
138+
}
139+
140+
async createUploadUrl(request: CreateUploadUrlRequest): Promise<PromiseResult<CreateUploadUrlResponse, AWSError>> {
141+
throw new Error('Method not implemented.')
142+
}
143+
144+
async startCodeAnalysis(
145+
request: StartCodeAnalysisRequest
146+
): Promise<PromiseResult<StartCodeAnalysisResponse, AWSError>> {
147+
throw new Error('Method not implemented.')
148+
}
149+
150+
async getCodeAnalysis(request: GetCodeAnalysisRequest): Promise<PromiseResult<GetCodeAnalysisResponse, AWSError>> {
151+
throw new Error('Method not implemented.')
152+
}
153+
154+
async listCodeAnalysisFindings(
155+
request: ListCodeAnalysisFindingsRequest
156+
): Promise<PromiseResult<ListCodeAnalysisFindingsResponse, AWSError>> {
157+
throw new Error('Method not implemented.')
158+
}
159+
160+
async listAvailableCustomizations(
161+
request: ListAvailableCustomizationsRequest
162+
): Promise<PromiseResult<ListAvailableCustomizationsResponse, AWSError>> {
163+
throw new Error('Method not implemented.')
164+
}
165+
166+
async listAvailableProfiles(
167+
request: ListAvailableProfilesRequest
168+
): Promise<PromiseResult<ListAvailableProfilesResponse, AWSError>> {
169+
throw new Error('Method not implemented.')
170+
}
171+
172+
async sendTelemetryEvent(
173+
request: SendTelemetryEventRequest
174+
): Promise<PromiseResult<SendTelemetryEventResponse, AWSError>> {
175+
throw new Error('Method not implemented.')
176+
}
177+
178+
async createWorkspace(request: CreateWorkspaceRequest): Promise<PromiseResult<CreateWorkspaceResponse, AWSError>> {
179+
throw new Error('Method not implemented.')
180+
}
181+
182+
async listWorkspaceMetadata(
183+
request: ListWorkspaceMetadataRequest
184+
): Promise<PromiseResult<ListWorkspaceMetadataResponse, AWSError>> {
185+
throw new Error('Method not implemented.')
186+
}
187+
188+
async deleteWorkspace(request: DeleteWorkspaceRequest): Promise<PromiseResult<DeleteWorkspaceResponse, AWSError>> {
189+
throw new Error('Method not implemented.')
190+
}
191+
192+
async listFeatureEvaluations(
193+
request: ListFeatureEvaluationsRequest
194+
): Promise<PromiseResult<ListFeatureEvaluationsResponse, AWSError>> {
195+
throw new Error('Method not implemented.')
196+
}
197+
198+
async createSubscriptionToken(request: CreateSubscriptionTokenRequest): Promise<CreateSubscriptionTokenResponse> {
199+
throw new Error('Method not implemented.')
200+
}
77201
}

0 commit comments

Comments
 (0)