Skip to content

Commit d6fdf6a

Browse files
authored
feat(amazonq): enable pinned context and rules management (#5845)
1 parent a993013 commit d6fdf6a

File tree

12 files changed

+193
-41
lines changed

12 files changed

+193
-41
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "feature",
3+
"description" : "Amazon Q Chat: Pin context items in chat and manage workspace rules"
4+
}

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_
6060
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_LINK_CLICK
6161
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_LIST_CONVERSATIONS
6262
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_OPEN_TAB
63+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_PINNED_CONTEXT_ADD
64+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_PINNED_CONTEXT_REMOVE
6365
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_PROMPT_OPTION_ACKNOWLEDGED
6466
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_QUICK_ACTION
6567
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_READY
@@ -73,6 +75,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.Encry
7375
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.GET_SERIALIZED_CHAT_REQUEST_METHOD
7476
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.GetSerializedChatResponse
7577
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.LIST_MCP_SERVERS_REQUEST_METHOD
78+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.LIST_RULES_REQUEST_METHOD
7679
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.MCP_SERVER_CLICK_REQUEST_METHOD
7780
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.OPEN_SETTINGS
7881
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.OPEN_WORKSPACE_SETTINGS_KEY
@@ -83,6 +86,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.OpenT
8386
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.OpenTabResultSuccess
8487
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.PROMPT_INPUT_OPTIONS_CHANGE
8588
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.QuickChatActionRequest
89+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.RULE_CLICK_REQUEST_METHOD
8690
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_CHAT_COMMAND_PROMPT
8791
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.STOP_CHAT_RESPONSE
8892
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SendChatPromptRequest
@@ -485,6 +489,34 @@ class BrowserConnector(
485489
)
486490
}
487491
}
492+
LIST_RULES_REQUEST_METHOD -> {
493+
handleChat(AmazonQChatServer.listRules, node)
494+
.whenComplete { response, _ ->
495+
browser.postChat(
496+
FlareUiMessage(
497+
command = LIST_RULES_REQUEST_METHOD,
498+
params = response
499+
)
500+
)
501+
}
502+
}
503+
RULE_CLICK_REQUEST_METHOD -> {
504+
handleChat(AmazonQChatServer.ruleClick, node)
505+
.whenComplete { response, _ ->
506+
browser.postChat(
507+
FlareUiMessage(
508+
command = RULE_CLICK_REQUEST_METHOD,
509+
params = response
510+
)
511+
)
512+
}
513+
}
514+
CHAT_PINNED_CONTEXT_ADD -> {
515+
handleChat(AmazonQChatServer.pinnedContextAdd, node)
516+
}
517+
CHAT_PINNED_CONTEXT_REMOVE -> {
518+
handleChat(AmazonQChatServer.pinnedContextRemove, node)
519+
}
488520
}
489521
}
490522

plugins/amazonq/mynah-ui/package-lock.json

Lines changed: 23 additions & 30 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plugins/amazonq/mynah-ui/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"lintfix": "eslint -c .eslintrc.js --fix --ext .ts ."
1313
},
1414
"dependencies": {
15-
"@aws/mynah-ui-chat": "npm:@aws/mynah-ui@4.30.3",
15+
"@aws/mynah-ui-chat": "npm:@aws/mynah-ui@4.35.5",
1616
"@types/node": "^14.18.5",
1717
"fs-extra": "^10.0.1",
1818
"sanitize-html": "^2.12.1",
@@ -21,8 +21,8 @@
2121
"web-tree-sitter": "^0.20.7"
2222
},
2323
"devDependencies": {
24+
"@aws/chat-client": "^0.1.18",
2425
"@aws/fully-qualified-names": "^2.1.1",
25-
"@aws/chat-client": "^0.1.4",
2626
"@types/sanitize-html": "^2.8.0",
2727
"@typescript-eslint/eslint-plugin": "^5.38.0",
2828
"@typescript-eslint/parser": "^5.38.0",

plugins/amazonq/mynah-ui/src/mynah-ui/ui/quickActions/handler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ private handleDocCommand(chatPrompt: ChatPrompt, tabID: string, taskName: string
395395
cancelButtonWhenLoading: false,
396396
})
397397
} else {
398-
this.mynahUI?.updateStore(affectedTabId, { promptInputOptions: [] })
398+
this.mynahUI?.updateStore(affectedTabId, { promptInputOptions: [], promptTopBarTitle: '' })
399399
}
400400

401401
if (affectedTabId && this.isHybridChatEnabled) {

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQChatServer.kt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_
1818
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_INSERT_TO_CURSOR_NOTIFICATION
1919
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_LINK_CLICK
2020
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_LIST_CONVERSATIONS
21+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_PINNED_CONTEXT_ADD
22+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_PINNED_CONTEXT_REMOVE
2123
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_QUICK_ACTION
2224
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_READY
2325
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_SOURCE_LINK_CLICK
@@ -39,11 +41,13 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.GetSe
3941
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.InfoLinkClickParams
4042
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.InsertToCursorPositionParams
4143
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.LIST_MCP_SERVERS_REQUEST_METHOD
44+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.LIST_RULES_REQUEST_METHOD
4245
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.LinkClickParams
4346
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ListConversationsParams
4447
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.MCP_SERVER_CLICK_REQUEST_METHOD
4548
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.PROMPT_INPUT_OPTIONS_CHANGE
4649
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.PromptInputOptionChangeParams
50+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.RULE_CLICK_REQUEST_METHOD
4751
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_CHAT_COMMAND_PROMPT
4852
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SourceLinkClickParams
4953
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.TELEMETRY_EVENT
@@ -189,6 +193,18 @@ object AmazonQChatServer : JsonRpcMethodProvider {
189193
LSPAny::class.java
190194
)
191195

196+
val listRules = JsonRpcRequest(
197+
LIST_RULES_REQUEST_METHOD,
198+
LSPAny::class.java,
199+
LSPAny::class.java
200+
)
201+
202+
val ruleClick = JsonRpcRequest(
203+
RULE_CLICK_REQUEST_METHOD,
204+
LSPAny::class.java,
205+
LSPAny::class.java
206+
)
207+
192208
val conversationClick = JsonRpcRequest(
193209
CHAT_CONVERSATION_CLICK,
194210
ConversationClickParams::class.java,
@@ -218,6 +234,16 @@ object AmazonQChatServer : JsonRpcMethodProvider {
218234
CreatePromptParams::class.java
219235
)
220236

237+
val pinnedContextAdd = JsonRpcNotification(
238+
CHAT_PINNED_CONTEXT_ADD,
239+
LSPAny::class.java
240+
)
241+
242+
val pinnedContextRemove = JsonRpcNotification(
243+
CHAT_PINNED_CONTEXT_REMOVE,
244+
LSPAny::class.java
245+
)
246+
221247
val telemetryEvent = JsonRpcNotification(
222248
TELEMETRY_EVENT,
223249
Any::class.java

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClient.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ import org.eclipse.lsp4j.services.LanguageClient
99
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.LSPAny
1010
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_OPEN_TAB
1111
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_OPTIONS_UPDATE_NOTIFICATION
12+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_PINNED_CONTEXT_ADD
13+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_PINNED_CONTEXT_REMOVE
1214
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_SEND_CONTEXT_COMMANDS
15+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_SEND_PINNED_CONTEXT
1316
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_SEND_UPDATE
1417
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CopyFileParams
1518
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.DID_APPEND_FILE
@@ -54,6 +57,15 @@ interface AmazonQLanguageClient : LanguageClient {
5457
@JsonNotification(CHAT_SEND_CONTEXT_COMMANDS)
5558
fun sendContextCommands(params: LSPAny): CompletableFuture<Unit>
5659

60+
@JsonNotification(CHAT_SEND_PINNED_CONTEXT)
61+
fun sendPinnedContext(params: LSPAny)
62+
63+
@JsonNotification(CHAT_PINNED_CONTEXT_ADD)
64+
fun pinnedContextAdd(params: LSPAny)
65+
66+
@JsonNotification(CHAT_PINNED_CONTEXT_REMOVE)
67+
fun pinnedContextRemove(params: LSPAny)
68+
5769
@JsonNotification(DID_COPY_FILE)
5870
fun copyFile(params: CopyFileParams)
5971

0 commit comments

Comments
 (0)