This package contains a chat client for the Q Language Server, that can be embedded in a webview. It uses MynahUI to render a web based chat interface.
The chat client communicates with the host application (e.g., an IDE extension) through postMessage
requests to the webview:
- When the host application sends a request, the client processes the message and sends it to the UI
- When an event is triggered in the UI, the client sends a message through
postMessage
to the host application that rendered the chat client
To use the chat client, embed it in a webview within your application and handle the postMessage
communication as needed. Chat client is based on inbound (from a destination to the chat client) and outbound events (from the chat client to a destination). Events consist of command
and params
:
interface SomeEvent {
command: string;
params: SomeOptions;
}
Name | Description | command | params |
---|---|---|---|
sendChatPrompt response | Provides response to sendChatPrompt request | aws/chat/sendChatPrompt |
ChatResult |
openTab request | Request to open tab (creates tab if no tabId provided) |
aws/chat/openTab |
requestID - ID shared between the webview and vscode client, OpenTabParams |
sendToPrompt | Request to send selection to prompt | sendToPrompt |
SendToPromptParams |
genericCommand | Request to execute generic command | genericCommand |
GenericCommandParams |
errorMessage | Request to show error in chat UI | errorMessage |
ErrorParams |
chatOptions | Configures chat startup options | chatOptions |
ChatOptions |
chatUpdate | Updates existing chat messages | aws/chat/sendChatUpdate |
ChatUpdateParams |
contextCommand | Sends context commands to the UI | aws/chat/sendContextCommands |
ContextCommandParams |
listConversations response | Provides response with list of history conversations to the UI | aws/chat/listConversations |
ListConversationsResult |
conversationClick response | Provides response to conversation click or action, specifying action execution result | aws/chat/conversationClick |
ConversationClickResult |
getSerializedChat request | Request to get serialized chat | aws/chat/getSerializedChat |
GetSerializedChatParams |
chatOptionsUpdate | Sends chat options update request from server | aws/chat/chatOptionsUpdate |
ChatOptionsUpdateParams |
Name | Description | command | params |
---|---|---|---|
openTab response | Provides response to openTab request | aws/chat/openTab |
requestID - ID shared between the webview and vscode client, UiMessageResultParams with result of type OpenTabResult
|
disclaimerAcknowledged | Notifies destination that legal disclaimer was acknowledged by a user | disclaimerAcknowledged |
N/A |
sendChatPrompt | Sends a chat prompt to the server | aws/chat/sendChatPrompt |
ChatParams |
sendQuickActionCommand | Sends a quick action command | aws/chat/quickAction |
QuickActionParams |
tabAdded | Notifies when a tab is added | aws/chat/tabAdd |
TabAddParams |
tabChanged | Notifies when a tab is changed | aws/chat/tabChange |
TabChangeParams |
tabRemoved | Notifies when a tab is removed | aws/chat/tabRemove |
TabRemoveParams |
insertToCursorPosition | Requests to insert code at cursor position | insertToCursorPosition |
InsertToCursorPositionParams |
copyToClipboard | Requests to copy code to clipboard | copyToClipboard |
CopyCodeToClipboardParams |
authFollowUpClicked | Notifies when an auth follow-up is clicked | authFollowUpClicked |
AuthFollowUpClickedParams |
followUpClicked | Notifies when a follow-up suggestion is clicked | aws/chat/followUpClick |
FollowUpClickParams |
sendFeedback | Sends user feedback | aws/chat/feedback |
FeedbackParams |
linkClick | Notifies when a link is clicked | aws/chat/linkClick |
LinkClickParams |
sourceLinkClick | Notifies when a source link is clicked | aws/chat/sourceLinkClick |
SourceLinkClickParams |
infoLinkClick | Notifies when an info link is clicked | aws/chat/infoLinkClick |
InfoLinkClickParams |
uiReady | Notifies when the UI is ready | aws/chat/ready |
N/A |
chatPromptOptionAcknowledged | Notifies when a chat prompt option is acknowledged | chatPromptOptionAcknowledged |
ChatPromptOptionAcknowledgedParams |
createPrompt | Requests to create a prompt | aws/chat/createPrompt |
CreatePromptParams |
fileClick | Notifies when a file is clicked | aws/chat/fileClick |
FileClickParams |
listConversations | Requests to list conversations with filter provided | aws/chat/listConversations |
ListConversationsParams |
conversationClick | Notifies when a conversation is clicked | aws/chat/conversationClick |
ConversationClickParams |
tabBarAction | Notifies when a tab bar action is requested | aws/chat/tabBarAction |
TabBarActionParams |
getSerializedChat response | Provides response to getSerializedChat request | aws/chat/getSerializedChat |
GetSerializedChatResult |
Configuration can be passed as an explicit parameter when creating chat inside of webview, for example:
amazonQChat.createChat(acquireVsCodeApi(), configuration);
Configuration values:
// Configures quick actions
quickActionCommands?: QuickActionCommandGroup[]
// Configures chat client not to show legal disclaimer as it has already been acknowledged before
disclaimerAcknowledged?: boolean