@@ -55,7 +55,55 @@ export const SYNCABLE_PARAMETERS: SyncableParameter[] = [
5555 { key : 'dry_allowed_length' , serverKey : 'dry_allowed_length' , type : 'number' , canSync : true } ,
5656 { key : 'dry_penalty_last_n' , serverKey : 'dry_penalty_last_n' , type : 'number' , canSync : true } ,
5757 { key : 'max_tokens' , serverKey : 'max_tokens' , type : 'number' , canSync : true } ,
58- { key : 'samplers' , serverKey : 'samplers' , type : 'string' , canSync : true }
58+ { key : 'samplers' , serverKey : 'samplers' , type : 'string' , canSync : true } ,
59+ {
60+ key : 'pasteLongTextToFileLen' ,
61+ serverKey : 'pasteLongTextToFileLen' ,
62+ type : 'number' ,
63+ canSync : true
64+ } ,
65+ { key : 'pdfAsImage' , serverKey : 'pdfAsImage' , type : 'boolean' , canSync : true } ,
66+ {
67+ key : 'showThoughtInProgress' ,
68+ serverKey : 'showThoughtInProgress' ,
69+ type : 'boolean' ,
70+ canSync : true
71+ } ,
72+ { key : 'showToolCalls' , serverKey : 'showToolCalls' , type : 'boolean' , canSync : true } ,
73+ {
74+ key : 'disableReasoningFormat' ,
75+ serverKey : 'disableReasoningFormat' ,
76+ type : 'boolean' ,
77+ canSync : true
78+ } ,
79+ { key : 'keepStatsVisible' , serverKey : 'keepStatsVisible' , type : 'boolean' , canSync : true } ,
80+ { key : 'showMessageStats' , serverKey : 'showMessageStats' , type : 'boolean' , canSync : true } ,
81+ {
82+ key : 'askForTitleConfirmation' ,
83+ serverKey : 'askForTitleConfirmation' ,
84+ type : 'boolean' ,
85+ canSync : true
86+ } ,
87+ { key : 'disableAutoScroll' , serverKey : 'disableAutoScroll' , type : 'boolean' , canSync : true } ,
88+ {
89+ key : 'renderUserContentAsMarkdown' ,
90+ serverKey : 'renderUserContentAsMarkdown' ,
91+ type : 'boolean' ,
92+ canSync : true
93+ } ,
94+ { key : 'autoMicOnEmpty' , serverKey : 'autoMicOnEmpty' , type : 'boolean' , canSync : true } ,
95+ {
96+ key : 'pyInterpreterEnabled' ,
97+ serverKey : 'pyInterpreterEnabled' ,
98+ type : 'boolean' ,
99+ canSync : true
100+ } ,
101+ {
102+ key : 'enableContinueGeneration' ,
103+ serverKey : 'enableContinueGeneration' ,
104+ type : 'boolean' ,
105+ canSync : true
106+ }
59107] ;
60108
61109export class ParameterSyncService {
@@ -74,25 +122,39 @@ export class ParameterSyncService {
74122 * Extract server default parameters that can be synced
75123 */
76124 static extractServerDefaults (
77- serverParams : ApiLlamaCppServerProps [ 'default_generation_settings' ] [ 'params' ] | null
125+ serverParams : ApiLlamaCppServerProps [ 'default_generation_settings' ] [ 'params' ] | null ,
126+ webuiSettings ?: Record < string , string | number | boolean >
78127 ) : ParameterRecord {
79- if ( ! serverParams ) return { } ;
80-
81128 const extracted : ParameterRecord = { } ;
82129
83- for ( const param of SYNCABLE_PARAMETERS ) {
84- if ( param . canSync && param . serverKey in serverParams ) {
85- const value = ( serverParams as unknown as Record < string , ParameterValue > ) [ param . serverKey ] ;
86- if ( value !== undefined ) {
87- // Apply precision rounding to avoid JavaScript floating-point issues
88- extracted [ param . key ] = this . roundFloatingPoint ( value ) ;
130+ if ( serverParams ) {
131+ for ( const param of SYNCABLE_PARAMETERS ) {
132+ if ( param . canSync && param . serverKey in serverParams ) {
133+ const value = ( serverParams as unknown as Record < string , ParameterValue > ) [
134+ param . serverKey
135+ ] ;
136+ if ( value !== undefined ) {
137+ // Apply precision rounding to avoid JavaScript floating-point issues
138+ extracted [ param . key ] = this . roundFloatingPoint ( value ) ;
139+ }
89140 }
90141 }
142+
143+ // Handle samplers array conversion to string
144+ if ( serverParams . samplers && Array . isArray ( serverParams . samplers ) ) {
145+ extracted . samplers = serverParams . samplers . join ( ';' ) ;
146+ }
91147 }
92148
93- // Handle samplers array conversion to string
94- if ( serverParams . samplers && Array . isArray ( serverParams . samplers ) ) {
95- extracted . samplers = serverParams . samplers . join ( ';' ) ;
149+ if ( webuiSettings ) {
150+ for ( const param of SYNCABLE_PARAMETERS ) {
151+ if ( param . canSync && param . serverKey in webuiSettings ) {
152+ const value = webuiSettings [ param . serverKey ] ;
153+ if ( value !== undefined ) {
154+ extracted [ param . key ] = this . roundFloatingPoint ( value ) ;
155+ }
156+ }
157+ }
96158 }
97159
98160 return extracted ;
0 commit comments