1313//
1414// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
1515// *****************************************************************************
16- import { PromptService , PromptVariantSet } from '@theia/ai-core/lib/common' ;
16+ import { isCustomizedPromptFragment , PromptService , PromptVariantSet } from '@theia/ai-core/lib/common' ;
1717import * as React from '@theia/core/shared/react' ;
1818import { nls } from '@theia/core/lib/common/nls' ;
1919
@@ -32,6 +32,11 @@ export const PromptVariantRenderer: React.FC<PromptVariantRendererProps> = ({
3232 const defaultVariantId = promptService . getDefaultVariantId ( promptVariantSet . id ) ;
3333 const [ selectedVariant , setSelectedVariant ] = React . useState < string > ( defaultVariantId ! ) ;
3434
35+ const isVariantCustomized = ( variantId : string ) : boolean => {
36+ const fragment = promptService . getRawPromptFragment ( variantId ) ;
37+ return fragment ? isCustomizedPromptFragment ( fragment ) : false ;
38+ } ;
39+
3540 React . useEffect ( ( ) => {
3641 const currentVariant = promptService . getSelectedVariantId ( promptVariantSet . id ) ;
3742 setSelectedVariant ( currentVariant ?? defaultVariantId ! ) ;
@@ -79,14 +84,25 @@ export const PromptVariantRenderer: React.FC<PromptVariantRendererProps> = ({
7984 { nls . localize ( 'theia/ai/core/templateSettings/unavailableVariant' , 'Unavailable' ) }
8085 </ option >
8186 ) }
82- { variantIds . map ( variantId => (
83- < option key = { variantId } value = { variantId } >
84- { variantId === defaultVariantId ? variantId + ' ' + nls . localizeByDefault ( '(default)' ) : variantId }
85- </ option >
86- ) ) }
87+ { variantIds . map ( variantId => {
88+ const isEdited = isVariantCustomized ( variantId ) ;
89+ const editedPrefix = isEdited ? `[${ nls . localize ( 'theia/ai/core/templateSettings/edited' , 'edited' ) } ] ` : '' ;
90+ const defaultSuffix = variantId === defaultVariantId ? ' ' + nls . localizeByDefault ( '(default)' ) : '' ;
91+ return (
92+ < option key = { variantId } value = { variantId } >
93+ { editedPrefix } { variantId } { defaultSuffix }
94+ </ option >
95+ ) ;
96+ } ) }
8797 </ select >
8898 ) }
89- { variantIds . length === 1 && ! isInvalidVariant && < span > { selectedVariant } </ span > }
99+ { variantIds . length === 1 && ! isInvalidVariant && (
100+ < span >
101+ { isVariantCustomized ( selectedVariant )
102+ ? `[${ nls . localize ( 'theia/ai/core/templateSettings/edited' , 'edited' ) } ] ${ selectedVariant } `
103+ : selectedVariant }
104+ </ span >
105+ ) }
90106 </ td >
91107 < td className = "template-actions-cell" >
92108 < button
@@ -95,12 +111,13 @@ export const PromptVariantRenderer: React.FC<PromptVariantRendererProps> = ({
95111 disabled = { isInvalidVariant }
96112 title = { nls . localizeByDefault ( 'Edit' ) }
97113 />
98- < button
99- className = "template-action-icon-button codicon codicon-discard"
100- onClick = { resetTemplate }
101- disabled = { isInvalidVariant }
102- title = { nls . localizeByDefault ( 'Reset' ) }
103- />
114+ { isVariantCustomized ( selectedVariant ) &&
115+ ( < button
116+ className = "template-action-icon-button codicon codicon-discard"
117+ onClick = { resetTemplate }
118+ disabled = { isInvalidVariant || ! isVariantCustomized ( selectedVariant ) }
119+ title = { nls . localizeByDefault ( 'Reset' ) }
120+ /> ) }
104121 </ td >
105122 </ tr >
106123 </ >
0 commit comments