1- import { requestGitHubChatCompletion , streamGitHubChatCompletion } from './github-api.js'
1+ import {
2+ defaultGitHubChatModel ,
3+ requestGitHubChatCompletion ,
4+ streamGitHubChatCompletion ,
5+ } from './github-api.js'
26
37const toChatText = value => {
48 if ( typeof value !== 'string' ) {
@@ -8,6 +12,19 @@ const toChatText = value => {
812 return value . trim ( )
913}
1014
15+ const toModelLabelText = value => {
16+ if ( typeof value !== 'string' ) {
17+ return ''
18+ }
19+
20+ const model = value . trim ( )
21+ if ( ! model ) {
22+ return ''
23+ }
24+
25+ return `(${ model } )`
26+ }
27+
1128const toRepositoryLabel = repository => {
1229 if ( ! repository || typeof repository !== 'object' ) {
1330 return 'No repository selected'
@@ -207,7 +224,8 @@ export const createGitHubChatDrawer = ({
207224 if ( messages . length === 0 ) {
208225 const emptyNode = document . createElement ( 'p' )
209226 emptyNode . className = 'ai-chat-empty'
210- emptyNode . textContent = 'Ask a question about your selected repository.'
227+ emptyNode . textContent =
228+ 'Ask for help developing your component, styles, or repository workflow.'
211229 messagesNode . append ( emptyNode )
212230 return
213231 }
@@ -219,6 +237,17 @@ export const createGitHubChatDrawer = ({
219237 const label = document . createElement ( 'h3' )
220238 label . className = 'ai-chat-message__label'
221239 label . textContent = message . role === 'assistant' ? 'Assistant' : 'You'
240+
241+ if ( message . role === 'assistant' ) {
242+ const modelLabelText = toModelLabelText ( message . model )
243+ if ( modelLabelText ) {
244+ const modelLabel = document . createElement ( 'span' )
245+ modelLabel . className = 'ai-chat-message__label-model'
246+ modelLabel . textContent = modelLabelText
247+ label . append ( modelLabel )
248+ }
249+ }
250+
222251 item . append ( label )
223252
224253 const body = document . createElement ( 'p' )
@@ -366,7 +395,7 @@ export const createGitHubChatDrawer = ({
366395 pendingAbortController = requestAbortController
367396
368397 appendMessage ( { role : 'user' , content : prompt } )
369- appendMessage ( { role : 'assistant' , content : '' } )
398+ appendMessage ( { role : 'assistant' , content : '' , model : defaultGitHubChatModel } )
370399 if ( promptInput instanceof HTMLTextAreaElement ) {
371400 promptInput . value = ''
372401 }
@@ -397,6 +426,14 @@ export const createGitHubChatDrawer = ({
397426 } )
398427
399428 streamSucceeded = true
429+ const streamedModel = toChatText ( streamResult ?. model )
430+ if ( streamedModel ) {
431+ const lastMessage = messages [ messages . length - 1 ]
432+ if ( lastMessage ?. role === 'assistant' && lastMessage . model !== streamedModel ) {
433+ lastMessage . model = streamedModel
434+ renderMessages ( )
435+ }
436+ }
400437 setChatStatus ( 'Response streamed from GitHub.' , 'ok' )
401438 setRateMetadata ( streamResult ?. rateLimit )
402439 } catch ( streamError ) {
@@ -432,6 +469,14 @@ export const createGitHubChatDrawer = ({
432469 } )
433470
434471 updateLastAssistantMessage ( fallbackResult . content )
472+ const fallbackModel = toChatText ( fallbackResult . model )
473+ if ( fallbackModel ) {
474+ const lastMessage = messages [ messages . length - 1 ]
475+ if ( lastMessage ?. role === 'assistant' && lastMessage . model !== fallbackModel ) {
476+ lastMessage . model = fallbackModel
477+ renderMessages ( )
478+ }
479+ }
435480 setChatStatus ( 'Fallback response loaded.' , 'ok' )
436481 setRateMetadata ( fallbackResult . rateLimit )
437482 } catch ( fallbackError ) {
0 commit comments