Skip to content

Commit db0a0d4

Browse files
committed
Adding model changes for Q Agentic Chat
1 parent 586f69a commit db0a0d4

File tree

9 files changed

+1343
-116
lines changed

9 files changed

+1343
-116
lines changed

packages/core/src/codewhisperer/client/user-service-2.json

Lines changed: 682 additions & 35 deletions
Large diffs are not rendered by default.

packages/core/src/codewhispererChat/controllers/chat/chatRequest/converter.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ export function triggerPayloadToChatRequest(triggerPayload: TriggerPayload): { c
119119
additionalContext: triggerPayload.additionalContents,
120120
},
121121
userIntent: triggerPayload.userIntent,
122+
origin: 'IDE',
122123
},
123124
},
124125
chatTriggerType,

src.gen/@amzn/codewhisperer-streaming/README.md

Lines changed: 42 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -227,13 +227,6 @@ CreateProfile
227227
</details>
228228
<details>
229229
<summary>
230-
CreateWorkspace
231-
</summary>
232-
233-
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/codewhispererstreaming/command/CreateWorkspaceCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-codewhispererstreaming/Interface/CreateWorkspaceCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-codewhispererstreaming/Interface/CreateWorkspaceCommandOutput/)
234-
</details>
235-
<details>
236-
<summary>
237230
DeleteCustomization
238231
</summary>
239232

@@ -304,13 +297,6 @@ ListTagsForResource
304297
</details>
305298
<details>
306299
<summary>
307-
ListWorkspaceMetadata
308-
</summary>
309-
310-
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/codewhispererstreaming/command/ListWorkspaceMetadataCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-codewhispererstreaming/Interface/ListWorkspaceMetadataCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-codewhispererstreaming/Interface/ListWorkspaceMetadataCommandOutput/)
311-
</details>
312-
<details>
313-
<summary>
314300
TagResource
315301
</summary>
316302

@@ -367,13 +353,27 @@ CreateUploadUrl
367353
</details>
368354
<details>
369355
<summary>
356+
CreateWorkspace
357+
</summary>
358+
359+
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/codewhispererstreaming/command/CreateWorkspaceCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-codewhispererstreaming/Interface/CreateWorkspaceCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-codewhispererstreaming/Interface/CreateWorkspaceCommandOutput/)
360+
</details>
361+
<details>
362+
<summary>
370363
DeleteTaskAssistConversation
371364
</summary>
372365

373366
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/codewhispererstreaming/command/DeleteTaskAssistConversationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-codewhispererstreaming/Interface/DeleteTaskAssistConversationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-codewhispererstreaming/Interface/DeleteTaskAssistConversationCommandOutput/)
374367
</details>
375368
<details>
376369
<summary>
370+
DeleteWorkspace
371+
</summary>
372+
373+
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/codewhispererstreaming/command/DeleteWorkspaceCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-codewhispererstreaming/Interface/DeleteWorkspaceCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-codewhispererstreaming/Interface/DeleteWorkspaceCommandOutput/)
374+
</details>
375+
<details>
376+
<summary>
377377
GenerateCompletions
378378
</summary>
379379

@@ -451,6 +451,13 @@ ListFeatureEvaluations
451451
</details>
452452
<details>
453453
<summary>
454+
ListWorkspaceMetadata
455+
</summary>
456+
457+
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/codewhispererstreaming/command/ListWorkspaceMetadataCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-codewhispererstreaming/Interface/ListWorkspaceMetadataCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-codewhispererstreaming/Interface/ListWorkspaceMetadataCommandOutput/)
458+
</details>
459+
<details>
460+
<summary>
454461
ResumeTransformation
455462
</summary>
456463

@@ -570,6 +577,13 @@ DeleteAssignment
570577
</details>
571578
<details>
572579
<summary>
580+
DeleteConversation
581+
</summary>
582+
583+
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/codewhispererstreaming/command/DeleteConversationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-codewhispererstreaming/Interface/DeleteConversationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-codewhispererstreaming/Interface/DeleteConversationCommandOutput/)
584+
</details>
585+
<details>
586+
<summary>
573587
DeleteExtension
574588
</summary>
575589

@@ -759,6 +773,20 @@ UntagResource
759773
</details>
760774
<details>
761775
<summary>
776+
UpdateConversation
777+
</summary>
778+
779+
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/codewhispererstreaming/command/UpdateConversationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-codewhispererstreaming/Interface/UpdateConversationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-codewhispererstreaming/Interface/UpdateConversationCommandOutput/)
780+
</details>
781+
<details>
782+
<summary>
783+
UpdatePlugin
784+
</summary>
785+
786+
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/codewhispererstreaming/command/UpdatePluginCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-codewhispererstreaming/Interface/UpdatePluginCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-codewhispererstreaming/Interface/UpdatePluginCommandOutput/)
787+
</details>
788+
<details>
789+
<summary>
762790
UpdateTroubleshootingCommandResult
763791
</summary>
764792

src.gen/@amzn/codewhisperer-streaming/src/commands/ExportResultArchiveCommand.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export interface ExportResultArchiveCommandOutput extends ExportResultArchiveRes
5656
* testGenerationJobId: "STRING_VALUE",
5757
* },
5858
* },
59+
* profileArn: "STRING_VALUE",
5960
* };
6061
* const command = new ExportResultArchiveCommand(input);
6162
* const response = await client.send(command);

src.gen/@amzn/codewhisperer-streaming/src/commands/GenerateAssistantResponseCommand.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,15 @@ export interface GenerateAssistantResponseCommandOutput extends GenerateAssistan
212212
* ],
213213
* },
214214
* userIntent: "SUGGEST_ALTERNATE_IMPLEMENTATION" || "APPLY_COMMON_BEST_PRACTICES" || "IMPROVE_CODE" || "SHOW_EXAMPLES" || "CITE_SOURCES" || "EXPLAIN_LINE_BY_LINE" || "EXPLAIN_CODE_SELECTION" || "GENERATE_CLOUDFORMATION_TEMPLATE" || "GENERATE_UNIT_TESTS" || "CODE_GENERATION",
215+
* origin: "STRING_VALUE",
216+
* images: [ // ImageBlocks
217+
* { // ImageBlock
218+
* format: "png" || "jpeg" || "gif" || "webp", // required
219+
* source: { // ImageSource Union: only one key present
220+
* bytes: new Uint8Array(), // e.g. Buffer.from("") or new TextEncoder().encode("")
221+
* },
222+
* },
223+
* ],
215224
* },
216225
* assistantResponseMessage: { // AssistantResponseMessage
217226
* messageId: "STRING_VALUE",
@@ -238,6 +247,13 @@ export interface GenerateAssistantResponseCommandOutput extends GenerateAssistan
238247
* content: "STRING_VALUE", // required
239248
* userIntent: "SUGGEST_ALTERNATE_IMPLEMENTATION" || "APPLY_COMMON_BEST_PRACTICES" || "IMPROVE_CODE" || "SHOW_EXAMPLES" || "CITE_SOURCES" || "EXPLAIN_LINE_BY_LINE" || "EXPLAIN_CODE_SELECTION" || "GENERATE_CLOUDFORMATION_TEMPLATE" || "GENERATE_UNIT_TESTS" || "CODE_GENERATION",
240249
* },
250+
* toolUses: [ // ToolUses
251+
* { // ToolUse
252+
* toolUseId: "STRING_VALUE", // required
253+
* name: "STRING_VALUE", // required
254+
* input: "DOCUMENT_VALUE", // required
255+
* },
256+
* ],
241257
* },
242258
* },
243259
* ],
@@ -364,6 +380,15 @@ export interface GenerateAssistantResponseCommandOutput extends GenerateAssistan
364380
* ],
365381
* },
366382
* userIntent: "SUGGEST_ALTERNATE_IMPLEMENTATION" || "APPLY_COMMON_BEST_PRACTICES" || "IMPROVE_CODE" || "SHOW_EXAMPLES" || "CITE_SOURCES" || "EXPLAIN_LINE_BY_LINE" || "EXPLAIN_CODE_SELECTION" || "GENERATE_CLOUDFORMATION_TEMPLATE" || "GENERATE_UNIT_TESTS" || "CODE_GENERATION",
383+
* origin: "STRING_VALUE",
384+
* images: [
385+
* {
386+
* format: "png" || "jpeg" || "gif" || "webp", // required
387+
* source: {// Union: only one key present
388+
* bytes: new Uint8Array(), // e.g. Buffer.from("") or new TextEncoder().encode("")
389+
* },
390+
* },
391+
* ],
367392
* },
368393
* assistantResponseMessage: {
369394
* messageId: "STRING_VALUE",
@@ -390,6 +415,13 @@ export interface GenerateAssistantResponseCommandOutput extends GenerateAssistan
390415
* content: "STRING_VALUE", // required
391416
* userIntent: "SUGGEST_ALTERNATE_IMPLEMENTATION" || "APPLY_COMMON_BEST_PRACTICES" || "IMPROVE_CODE" || "SHOW_EXAMPLES" || "CITE_SOURCES" || "EXPLAIN_LINE_BY_LINE" || "EXPLAIN_CODE_SELECTION" || "GENERATE_CLOUDFORMATION_TEMPLATE" || "GENERATE_UNIT_TESTS" || "CODE_GENERATION",
392417
* },
418+
* toolUses: [
419+
* {
420+
* toolUseId: "STRING_VALUE", // required
421+
* name: "STRING_VALUE", // required
422+
* input: "DOCUMENT_VALUE", // required
423+
* },
424+
* ],
393425
* },
394426
* },
395427
* chatTriggerType: "MANUAL" || "DIAGNOSTIC" || "INLINE_CHAT", // required
@@ -651,6 +683,17 @@ export interface GenerateAssistantResponseCommandOutput extends GenerateAssistan
651683
* // input: "STRING_VALUE",
652684
* // stop: true || false,
653685
* // },
686+
* // citationEvent: { // CitationEvent
687+
* // target: { // CitationTarget Union: only one key present
688+
* // location: Number("int"),
689+
* // range: {
690+
* // start: Number("int"),
691+
* // end: Number("int"),
692+
* // },
693+
* // },
694+
* // citationText: "STRING_VALUE",
695+
* // citationLink: "STRING_VALUE", // required
696+
* // },
654697
* // invalidStateEvent: { // InvalidStateEvent
655698
* // reason: "INVALID_TASK_ASSIST_PLAN", // required
656699
* // message: "STRING_VALUE", // required

src.gen/@amzn/codewhisperer-streaming/src/commands/GenerateTaskAssistPlanCommand.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,15 @@ export interface GenerateTaskAssistPlanCommandOutput extends GenerateTaskAssistP
212212
* ],
213213
* },
214214
* userIntent: "SUGGEST_ALTERNATE_IMPLEMENTATION" || "APPLY_COMMON_BEST_PRACTICES" || "IMPROVE_CODE" || "SHOW_EXAMPLES" || "CITE_SOURCES" || "EXPLAIN_LINE_BY_LINE" || "EXPLAIN_CODE_SELECTION" || "GENERATE_CLOUDFORMATION_TEMPLATE" || "GENERATE_UNIT_TESTS" || "CODE_GENERATION",
215+
* origin: "STRING_VALUE",
216+
* images: [ // ImageBlocks
217+
* { // ImageBlock
218+
* format: "png" || "jpeg" || "gif" || "webp", // required
219+
* source: { // ImageSource Union: only one key present
220+
* bytes: new Uint8Array(), // e.g. Buffer.from("") or new TextEncoder().encode("")
221+
* },
222+
* },
223+
* ],
215224
* },
216225
* assistantResponseMessage: { // AssistantResponseMessage
217226
* messageId: "STRING_VALUE",
@@ -238,6 +247,13 @@ export interface GenerateTaskAssistPlanCommandOutput extends GenerateTaskAssistP
238247
* content: "STRING_VALUE", // required
239248
* userIntent: "SUGGEST_ALTERNATE_IMPLEMENTATION" || "APPLY_COMMON_BEST_PRACTICES" || "IMPROVE_CODE" || "SHOW_EXAMPLES" || "CITE_SOURCES" || "EXPLAIN_LINE_BY_LINE" || "EXPLAIN_CODE_SELECTION" || "GENERATE_CLOUDFORMATION_TEMPLATE" || "GENERATE_UNIT_TESTS" || "CODE_GENERATION",
240249
* },
250+
* toolUses: [ // ToolUses
251+
* { // ToolUse
252+
* toolUseId: "STRING_VALUE", // required
253+
* name: "STRING_VALUE", // required
254+
* input: "DOCUMENT_VALUE", // required
255+
* },
256+
* ],
241257
* },
242258
* },
243259
* ],
@@ -364,6 +380,15 @@ export interface GenerateTaskAssistPlanCommandOutput extends GenerateTaskAssistP
364380
* ],
365381
* },
366382
* userIntent: "SUGGEST_ALTERNATE_IMPLEMENTATION" || "APPLY_COMMON_BEST_PRACTICES" || "IMPROVE_CODE" || "SHOW_EXAMPLES" || "CITE_SOURCES" || "EXPLAIN_LINE_BY_LINE" || "EXPLAIN_CODE_SELECTION" || "GENERATE_CLOUDFORMATION_TEMPLATE" || "GENERATE_UNIT_TESTS" || "CODE_GENERATION",
383+
* origin: "STRING_VALUE",
384+
* images: [
385+
* {
386+
* format: "png" || "jpeg" || "gif" || "webp", // required
387+
* source: {// Union: only one key present
388+
* bytes: new Uint8Array(), // e.g. Buffer.from("") or new TextEncoder().encode("")
389+
* },
390+
* },
391+
* ],
367392
* },
368393
* assistantResponseMessage: {
369394
* messageId: "STRING_VALUE",
@@ -390,6 +415,13 @@ export interface GenerateTaskAssistPlanCommandOutput extends GenerateTaskAssistP
390415
* content: "STRING_VALUE", // required
391416
* userIntent: "SUGGEST_ALTERNATE_IMPLEMENTATION" || "APPLY_COMMON_BEST_PRACTICES" || "IMPROVE_CODE" || "SHOW_EXAMPLES" || "CITE_SOURCES" || "EXPLAIN_LINE_BY_LINE" || "EXPLAIN_CODE_SELECTION" || "GENERATE_CLOUDFORMATION_TEMPLATE" || "GENERATE_UNIT_TESTS" || "CODE_GENERATION",
392417
* },
418+
* toolUses: [
419+
* {
420+
* toolUseId: "STRING_VALUE", // required
421+
* name: "STRING_VALUE", // required
422+
* input: "DOCUMENT_VALUE", // required
423+
* },
424+
* ],
393425
* },
394426
* },
395427
* chatTriggerType: "MANUAL" || "DIAGNOSTIC" || "INLINE_CHAT", // required
@@ -400,6 +432,7 @@ export interface GenerateTaskAssistPlanCommandOutput extends GenerateTaskAssistP
400432
* programmingLanguage: "<ProgrammingLanguage>", // required
401433
* contextTruncationScheme: "ANALYSIS" || "GUMBY",
402434
* },
435+
* profileArn: "STRING_VALUE",
403436
* };
404437
* const command = new GenerateTaskAssistPlanCommand(input);
405438
* const response = await client.send(command);
@@ -654,6 +687,17 @@ export interface GenerateTaskAssistPlanCommandOutput extends GenerateTaskAssistP
654687
* // input: "STRING_VALUE",
655688
* // stop: true || false,
656689
* // },
690+
* // citationEvent: { // CitationEvent
691+
* // target: { // CitationTarget Union: only one key present
692+
* // location: Number("int"),
693+
* // range: {
694+
* // start: Number("int"),
695+
* // end: Number("int"),
696+
* // },
697+
* // },
698+
* // citationText: "STRING_VALUE",
699+
* // citationLink: "STRING_VALUE", // required
700+
* // },
657701
* // invalidStateEvent: { // InvalidStateEvent
658702
* // reason: "INVALID_TASK_ASSIST_PLAN", // required
659703
* // message: "STRING_VALUE", // required

src.gen/@amzn/codewhisperer-streaming/src/commands/SendMessageCommand.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,15 @@ export interface SendMessageCommandOutput extends SendMessageResponse, __Metadat
213213
* ],
214214
* },
215215
* userIntent: "SUGGEST_ALTERNATE_IMPLEMENTATION" || "APPLY_COMMON_BEST_PRACTICES" || "IMPROVE_CODE" || "SHOW_EXAMPLES" || "CITE_SOURCES" || "EXPLAIN_LINE_BY_LINE" || "EXPLAIN_CODE_SELECTION" || "GENERATE_CLOUDFORMATION_TEMPLATE" || "GENERATE_UNIT_TESTS" || "CODE_GENERATION",
216+
* origin: "STRING_VALUE",
217+
* images: [ // ImageBlocks
218+
* { // ImageBlock
219+
* format: "png" || "jpeg" || "gif" || "webp", // required
220+
* source: { // ImageSource Union: only one key present
221+
* bytes: new Uint8Array(), // e.g. Buffer.from("") or new TextEncoder().encode("")
222+
* },
223+
* },
224+
* ],
216225
* },
217226
* assistantResponseMessage: { // AssistantResponseMessage
218227
* messageId: "STRING_VALUE",
@@ -239,6 +248,13 @@ export interface SendMessageCommandOutput extends SendMessageResponse, __Metadat
239248
* content: "STRING_VALUE", // required
240249
* userIntent: "SUGGEST_ALTERNATE_IMPLEMENTATION" || "APPLY_COMMON_BEST_PRACTICES" || "IMPROVE_CODE" || "SHOW_EXAMPLES" || "CITE_SOURCES" || "EXPLAIN_LINE_BY_LINE" || "EXPLAIN_CODE_SELECTION" || "GENERATE_CLOUDFORMATION_TEMPLATE" || "GENERATE_UNIT_TESTS" || "CODE_GENERATION",
241250
* },
251+
* toolUses: [ // ToolUses
252+
* { // ToolUse
253+
* toolUseId: "STRING_VALUE", // required
254+
* name: "STRING_VALUE", // required
255+
* input: "DOCUMENT_VALUE", // required
256+
* },
257+
* ],
242258
* },
243259
* },
244260
* ],
@@ -365,6 +381,15 @@ export interface SendMessageCommandOutput extends SendMessageResponse, __Metadat
365381
* ],
366382
* },
367383
* userIntent: "SUGGEST_ALTERNATE_IMPLEMENTATION" || "APPLY_COMMON_BEST_PRACTICES" || "IMPROVE_CODE" || "SHOW_EXAMPLES" || "CITE_SOURCES" || "EXPLAIN_LINE_BY_LINE" || "EXPLAIN_CODE_SELECTION" || "GENERATE_CLOUDFORMATION_TEMPLATE" || "GENERATE_UNIT_TESTS" || "CODE_GENERATION",
384+
* origin: "STRING_VALUE",
385+
* images: [
386+
* {
387+
* format: "png" || "jpeg" || "gif" || "webp", // required
388+
* source: {// Union: only one key present
389+
* bytes: new Uint8Array(), // e.g. Buffer.from("") or new TextEncoder().encode("")
390+
* },
391+
* },
392+
* ],
368393
* },
369394
* assistantResponseMessage: {
370395
* messageId: "STRING_VALUE",
@@ -391,6 +416,13 @@ export interface SendMessageCommandOutput extends SendMessageResponse, __Metadat
391416
* content: "STRING_VALUE", // required
392417
* userIntent: "SUGGEST_ALTERNATE_IMPLEMENTATION" || "APPLY_COMMON_BEST_PRACTICES" || "IMPROVE_CODE" || "SHOW_EXAMPLES" || "CITE_SOURCES" || "EXPLAIN_LINE_BY_LINE" || "EXPLAIN_CODE_SELECTION" || "GENERATE_CLOUDFORMATION_TEMPLATE" || "GENERATE_UNIT_TESTS" || "CODE_GENERATION",
393418
* },
419+
* toolUses: [
420+
* {
421+
* toolUseId: "STRING_VALUE", // required
422+
* name: "STRING_VALUE", // required
423+
* input: "DOCUMENT_VALUE", // required
424+
* },
425+
* ],
394426
* },
395427
* },
396428
* chatTriggerType: "MANUAL" || "DIAGNOSTIC" || "INLINE_CHAT", // required
@@ -653,6 +685,17 @@ export interface SendMessageCommandOutput extends SendMessageResponse, __Metadat
653685
* // input: "STRING_VALUE",
654686
* // stop: true || false,
655687
* // },
688+
* // citationEvent: { // CitationEvent
689+
* // target: { // CitationTarget Union: only one key present
690+
* // location: Number("int"),
691+
* // range: {
692+
* // start: Number("int"),
693+
* // end: Number("int"),
694+
* // },
695+
* // },
696+
* // citationText: "STRING_VALUE",
697+
* // citationLink: "STRING_VALUE", // required
698+
* // },
656699
* // invalidStateEvent: { // InvalidStateEvent
657700
* // reason: "INVALID_TASK_ASSIST_PLAN", // required
658701
* // message: "STRING_VALUE", // required

0 commit comments

Comments
 (0)