Skip to content

Commit 3c7927f

Browse files
committed
Refactor API configuration management by separating creation and update flows and reorganizing interaction modules
- omit these when false [Pasted text] 
1 parent 52980db commit 3c7927f

23 files changed

Lines changed: 101 additions & 65 deletions

‎apps/editor/src/services/model-providers-manager.ts‎

Lines changed: 57 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ export type ApiConfiguration = {
1616
is_pinned?: boolean
1717
}
1818

19-
export const get_api_configuration_id = (api_configuration: ApiConfiguration): string => {
19+
export const get_api_configuration_id = (
20+
api_configuration: ApiConfiguration
21+
): string => {
2022
return [
2123
api_configuration.model_provider_name,
2224
api_configuration.model,
@@ -100,17 +102,23 @@ export class ModelProvidersManager {
100102
return this._model_providers
101103
}
102104

103-
public async get_model_provider(name: string): Promise<ModelProvider | undefined> {
105+
public async get_model_provider(
106+
name: string
107+
): Promise<ModelProvider | undefined> {
104108
await this._load_promise
105-
return this._model_providers.find((model_provider) => model_provider.name == name)
109+
return this._model_providers.find(
110+
(model_provider) => model_provider.name == name
111+
)
106112
}
107113

108114
private _validate_api_configuration(
109115
api_configuration: ApiConfiguration | undefined
110116
): ApiConfiguration | undefined {
111117
if (!api_configuration) return undefined
112118

113-
const model_provider = this._model_providers.find((p) => p.name == api_configuration.model_provider_name)
119+
const model_provider = this._model_providers.find(
120+
(p) => p.name == api_configuration.model_provider_name
121+
)
114122

115123
if (!model_provider) {
116124
return undefined
@@ -124,16 +132,18 @@ export class ModelProvidersManager {
124132
const config = vscode.workspace.getConfiguration('codeWebChat')
125133
const settings_configs = config.get<any[]>('configurations', [])
126134

127-
const api_configurations: ApiConfiguration[] = settings_configs.map((sc) => {
128-
return {
129-
model_provider_name: sc.providerName,
130-
model: sc.model,
131-
temperature: sc.temperature,
132-
reasoning_effort: sc.reasoningEffort,
133-
system_instructions_override: sc.systemInstructionsOverride,
134-
is_pinned: sc.isPinned
135+
const api_configurations: ApiConfiguration[] = settings_configs.map(
136+
(sc) => {
137+
return {
138+
model_provider_name: sc.providerName,
139+
model: sc.model,
140+
temperature: sc.temperature,
141+
reasoning_effort: sc.reasoningEffort,
142+
system_instructions_override: sc.systemInstructionsOverride,
143+
is_pinned: sc.isPinned
144+
}
135145
}
136-
})
146+
)
137147

138148
return api_configurations.filter(
139149
(c) => this._validate_api_configuration(c) !== undefined
@@ -151,16 +161,19 @@ export class ModelProvidersManager {
151161
const new_config: any = {
152162
providerName: c.model_provider_name,
153163
model: c.model,
154-
temperature: c.temperature,
155-
isDefaultForCodeAtCursor: old_config?.isDefaultForCodeAtCursor || false,
156-
isDefaultForFindRelevantFiles:
157-
old_config?.isDefaultForFindRelevantFiles || false,
158-
isDefaultForIntelligentUpdate:
159-
old_config?.isDefaultForIntelligentUpdate || false,
160-
isDefaultForCommitMessages:
161-
old_config?.isDefaultForCommitMessages || false,
162-
isDefaultForVoiceInput: old_config?.isDefaultForVoiceInput || false
164+
temperature: c.temperature
163165
}
166+
167+
if (old_config?.isDefaultForCodeAtCursor)
168+
new_config.isDefaultForCodeAtCursor = true
169+
if (old_config?.isDefaultForFindRelevantFiles)
170+
new_config.isDefaultForFindRelevantFiles = true
171+
if (old_config?.isDefaultForIntelligentUpdate)
172+
new_config.isDefaultForIntelligentUpdate = true
173+
if (old_config?.isDefaultForCommitMessages)
174+
new_config.isDefaultForCommitMessages = true
175+
if (old_config?.isDefaultForVoiceInput)
176+
new_config.isDefaultForVoiceInput = true
164177
if (c.reasoning_effort !== undefined)
165178
new_config.reasoningEffort = c.reasoning_effort
166179
if (c.system_instructions_override !== undefined)
@@ -210,7 +223,8 @@ export class ModelProvidersManager {
210223
default_config_from_settings.systemInstructionsOverride,
211224
is_pinned: default_config_from_settings.isPinned
212225
}
213-
const validated_config = this._validate_api_configuration(api_configuration)
226+
const validated_config =
227+
this._validate_api_configuration(api_configuration)
214228
if (validated_config) return validated_config
215229
}
216230
return undefined
@@ -227,7 +241,14 @@ export class ModelProvidersManager {
227241
const is_default =
228242
config_to_set !== null &&
229243
this._are_api_configurations_effectively_equal(c, config_to_set)
230-
return { ...c, [default_key]: is_default }
244+
245+
const new_c = { ...c }
246+
if (is_default) {
247+
new_c[default_key] = true
248+
} else {
249+
delete new_c[default_key]
250+
}
251+
return new_c
231252
})
232253

233254
await config.update(
@@ -246,7 +267,9 @@ export class ModelProvidersManager {
246267
)
247268
}
248269

249-
public async set_default_code_completions_api_configuration(api_configuration: ApiConfiguration | null) {
270+
public async set_default_code_completions_api_configuration(
271+
api_configuration: ApiConfiguration | null
272+
) {
250273
await this._set_default_api_configuration_in_settings(
251274
'isDefaultForCodeAtCursor',
252275
api_configuration
@@ -262,7 +285,9 @@ export class ModelProvidersManager {
262285
)
263286
}
264287

265-
public async set_default_commit_messages_api_configuration(api_configuration: ApiConfiguration | null) {
288+
public async set_default_commit_messages_api_configuration(
289+
api_configuration: ApiConfiguration | null
290+
) {
266291
await this._set_default_api_configuration_in_settings(
267292
'isDefaultForCommitMessages',
268293
api_configuration
@@ -309,10 +334,14 @@ export class ModelProvidersManager {
309334
ApiConfiguration | undefined
310335
> {
311336
await this._load_promise
312-
return this._get_default_api_configuration_from_settings('isDefaultForVoiceInput')
337+
return this._get_default_api_configuration_from_settings(
338+
'isDefaultForVoiceInput'
339+
)
313340
}
314341

315-
public async set_default_voice_input_api_configuration(api_configuration: ApiConfiguration | null) {
342+
public async set_default_voice_input_api_configuration(
343+
api_configuration: ApiConfiguration | null
344+
) {
316345
await this._set_default_api_configuration_in_settings(
317346
'isDefaultForVoiceInput',
318347
api_configuration

apps/editor/src/views/actions/upsert-api-configuration/upsert-api-configuration.ts renamed to apps/editor/src/views/actions/create-api-configuration/create-api-configuration.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
} from './interactions'
1414
import { ToolType } from '@/views/settings/types/tools'
1515

16-
export const upsert_api_configuration = async (params: {
16+
export const create_api_configuration = async (params: {
1717
context: vscode.ExtensionContext
1818
tool_type: ToolType
1919
create_on_top?: boolean

apps/editor/src/views/actions/upsert-api-configuration/interactions/index.ts renamed to apps/editor/src/views/actions/create-api-configuration/interactions/index.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
export * from './edit-model-for-api-config'
2-
export * from './edit-provider-for-api-config'
3-
export * from './edit-reasoning-effort-for-api-config'
41
export * from './initial-select-model'
52
export * from './initial-select-provider'
63
export * from './verify-model'

apps/editor/src/views/actions/upsert-api-configuration/interactions/initial-select-model.ts renamed to apps/editor/src/views/actions/create-api-configuration/interactions/initial-select-model.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ export const initial_select_model = async (
2020
base_url = model_provider.base_url
2121

2222
if (!base_url)
23-
throw new Error(`Base URL not found for model provider ${model_provider.name}`)
23+
throw new Error(
24+
`Base URL not found for model provider ${model_provider.name}`
25+
)
2426

2527
const models = await model_fetcher.get_models({
2628
base_url,
@@ -105,7 +107,9 @@ export const initial_select_model = async (
105107
error.message == MODELS_ROUTE_NOT_FOUND_ERROR
106108
) {
107109
vscode.window.showInformationMessage(
108-
dictionary.information_message.MODELS_ROUTE_NOT_FOUND(model_provider.name),
110+
dictionary.information_message.MODELS_ROUTE_NOT_FOUND(
111+
model_provider.name
112+
),
109113
{ modal: true }
110114
)
111115
} else {

apps/editor/src/views/actions/upsert-api-configuration/interactions/initial-select-provider.ts renamed to apps/editor/src/views/actions/create-api-configuration/interactions/initial-select-provider.ts

File renamed without changes.

apps/editor/src/views/actions/upsert-api-configuration/interactions/verify-model.ts renamed to apps/editor/src/views/actions/create-api-configuration/interactions/verify-model.ts

File renamed without changes.

apps/editor/src/views/actions/upsert-api-configuration/interactions/verify-reasoning-effort.ts renamed to apps/editor/src/views/actions/create-api-configuration/interactions/verify-reasoning-effort.ts

File renamed without changes.

apps/editor/src/views/actions/upsert-api-configuration/interactions/edit-model-for-api-config.ts renamed to apps/editor/src/views/actions/update-api-configuration/interactions/edit-model-for-api-config.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,23 @@ import {
1010
import { Logger } from '@shared/utils/logger'
1111
import { dictionary } from '@shared/constants/dictionary'
1212
import { ToolType } from '../../../settings/types/tools'
13-
import { verify_model } from './verify-model'
13+
import { verify_model } from '../../create-api-configuration/interactions/verify-model'
1414

1515
export const edit_model_for_api_configuration = async (params: {
1616
api_configuration: ApiConfiguration
1717
providers_manager: ModelProvidersManager
1818
model_fetcher: ModelFetcher
1919
tool_type?: ToolType
2020
}) => {
21-
const model_provider_from_manager = await params.providers_manager.get_model_provider(
22-
params.api_configuration.model_provider_name
23-
)
21+
const model_provider_from_manager =
22+
await params.providers_manager.get_model_provider(
23+
params.api_configuration.model_provider_name
24+
)
2425
if (!model_provider_from_manager) {
2526
vscode.window.showErrorMessage(
26-
dictionary.error_message.MODEL_PROVIDER_NOT_FOUND_BY_NAME(params.api_configuration.model_provider_name)
27+
dictionary.error_message.MODEL_PROVIDER_NOT_FOUND_BY_NAME(
28+
params.api_configuration.model_provider_name
29+
)
2730
)
2831
return undefined
2932
}

apps/editor/src/views/actions/upsert-api-configuration/interactions/edit-provider-for-api-config.ts renamed to apps/editor/src/views/actions/update-api-configuration/interactions/edit-provider-for-api-config.ts

File renamed without changes.

apps/editor/src/views/actions/upsert-api-configuration/interactions/edit-reasoning-effort-for-api-config.ts renamed to apps/editor/src/views/actions/update-api-configuration/interactions/edit-reasoning-effort-for-api-config.ts

File renamed without changes.

0 commit comments

Comments
 (0)