@@ -34,6 +34,7 @@ export class Connector extends BaseConnector {
3434 private readonly onContextCommandDataReceived
3535 private readonly onShowCustomForm
3636 private readonly onChatAnswerUpdated
37+ private chatItems : Map < string , Map < string , ChatItem > > = new Map ( ) // tabId -> messageId -> ChatItem
3738
3839 override getTabType ( ) : TabType {
3940 return 'cwc'
@@ -122,6 +123,10 @@ export class Connector extends BaseConnector {
122123 content : messageData . relatedSuggestions ,
123124 }
124125 }
126+
127+ if ( answer . messageId ) {
128+ this . storeChatItem ( messageData . tabID , answer . messageId , answer )
129+ }
125130 this . onChatAnswerReceived ( messageData . tabID , answer , messageData )
126131
127132 // Exit the function if we received an answer from AI
@@ -163,6 +168,17 @@ export class Connector extends BaseConnector {
163168 }
164169 }
165170
171+ private storeChatItem ( tabId : string , messageId : string , item : ChatItem ) : void {
172+ if ( ! this . chatItems . has ( tabId ) ) {
173+ this . chatItems . set ( tabId , new Map ( ) )
174+ }
175+ this . chatItems . get ( tabId ) ?. set ( messageId , { ...item } )
176+ }
177+
178+ private getCurrentChatItem ( tabId : string , messageId : string ) : ChatItem | undefined {
179+ return this . chatItems . get ( tabId ) ?. get ( messageId )
180+ }
181+
166182 processContextCommandData ( messageData : any ) {
167183 if ( messageData . data ) {
168184 this . onContextCommandDataReceived ( messageData . data )
@@ -281,11 +297,14 @@ export class Connector extends BaseConnector {
281297 }
282298 // Can not assign body as "undefined" or "null" because both of these values will be overriden at main.ts in onChatAnswerUpdated
283299 // TODO: Refactor in next PR if necessary.
300+
301+ const currentChatItem = this . getCurrentChatItem ( tabId , messageId )
284302 const answer : ChatItem = {
285303 type : ChatItemType . ANSWER ,
286304 messageId : messageId ,
287305 buttons : [ ] ,
288306 body : ' ' ,
307+ header : currentChatItem ?. header ? { ...currentChatItem . header } : { } ,
289308 }
290309 switch ( action . id ) {
291310 case 'accept-code-diff' :
@@ -295,6 +314,7 @@ export class Connector extends BaseConnector {
295314 text : 'Accepted' ,
296315 status : 'success' ,
297316 }
317+ answer . header . buttons = [ ]
298318 }
299319 break
300320 case 'reject-code-diff' :
@@ -304,6 +324,7 @@ export class Connector extends BaseConnector {
304324 text : 'Rejected' ,
305325 status : 'error' ,
306326 }
327+ answer . header . buttons = [ ]
307328 }
308329 break
309330 case 'confirm-tool-use' :
@@ -321,6 +342,14 @@ export class Connector extends BaseConnector {
321342 default :
322343 break
323344 }
345+ // eslint-disable-next-line aws-toolkits/no-console-log
346+ console . log ( `[onCustomFormAction]: ${ answer . body } ` )
347+
348+ if ( currentChatItem && answer . messageId ) {
349+ const updatedItem = { ...currentChatItem , ...answer }
350+ this . storeChatItem ( tabId , answer . messageId , updatedItem )
351+ }
352+
324353 this . onChatAnswerUpdated ( tabId , answer )
325354 }
326355
0 commit comments