@@ -21,11 +21,9 @@ import {
2121 toggleFavoriteModel ,
2222 type LocalSettings ,
2323 type ModelRef ,
24- type ResolvedProvider ,
2524 type Settings ,
2625} from "../../config/settings.js" ;
2726import { getTelemetry } from "../../telemetry/singleton.js" ;
28- import { refreshLiveProviderCatalog } from "../../config/index.js" ;
2927import { createTelemetryToggleHandler } from "../../telemetry/toggle.js" ;
3028import { telemetryFirstRunPending } from "../../telemetry/first-run.js" ;
3129import { TELEMETRY_NOTICE } from "../../telemetry/index.js" ;
@@ -35,14 +33,17 @@ import type { GrantScope } from "../../permission/types.js";
3533import { connectProviderInline } from "../provider/connect.js" ;
3634import { persistConnectedSelection } from "../provider/submit.js" ;
3735import { modelOptionId } from "../model-catalog.js" ;
38- import { prefetchGoModels } from "../../provider/opencode-go-models.js" ;
3936import { isOpenCodeGoProvider } from "../../../packages/opencode-go/src/index.js" ;
4037import { applyLiveModelSwitch } from "../../session/live-model-switch.js" ;
4138import { applyFocus } from "../shell/chrome.js" ;
4239import { setShellInputSuspended } from "../shell/prompt.js" ;
4340import { warningsForPluginEntry } from "../../plugins/diagnostics.js" ;
4441import { isPluginEnabledForSurface } from "../plugin-surface.js" ;
4542import { resolveWaitForApproval } from "../tool-execution-watchdog.js" ;
43+ import {
44+ prefetchGoModelsAndRefresh ,
45+ refreshProviderCatalogAndSurfaces ,
46+ } from "./provider-refresh.js" ;
4647import { hostOf , type RunnerServices , type RunnerState } from "./state.js" ;
4748import { LOG_NAMESPACE_ROOT } from "../../branding.js" ;
4849
@@ -252,25 +253,7 @@ export async function wireSettings(
252253 }
253254 if ( ! result . connected ) return ;
254255
255- const onDisk = await loadSettings ( trueGlobalSettingsPath ) ;
256- const resolvedForCatalog : ResolvedProvider = {
257- apiKey : state . config . apiKey ,
258- baseURL : state . config . baseURL ,
259- model : state . config . model ,
260- providerName : state . config . providerName ,
261- ...( state . config . keyless !== undefined ? { keyless : state . config . keyless } : { } ) ,
262- } ;
263- const providers = await refreshLiveProviderCatalog ( onDisk , resolvedForCatalog ) ;
264- state . config = {
265- ...state . config ,
266- providers,
267- ...( onDisk !== null ? { settings : onDisk } : { } ) ,
268- } ;
269- hostOf ( state ) . refreshModels (
270- listRecentModels ( state . config . settings ?? { providers : { } } ) ,
271- listFavoriteModels ( state . config . settings ?? { providers : { } } ) ,
272- providers ,
273- ) ;
256+ await refreshProviderCatalogAndSurfaces ( state , hostOf ( state ) . refreshModels ) ;
274257 // Reopen positioned at the account just connected — the picker's
275258 // default open (top of list) would otherwise leave the operator to
276259 // hunt for the row they just authorized.
@@ -280,27 +263,7 @@ export async function wireSettings(
280263 ) ;
281264 state . systemNotice ?.( `Connected ${ connectedName } . Open /model to pick a model.` ) ;
282265 if ( isOpenCodeGoProvider ( { name : providerName } ) ) {
283- void prefetchGoModels ( )
284- . then ( async ( ) => {
285- if ( services . hostHolder . instance === undefined ) return ;
286- const nextDisk = await loadSettings ( trueGlobalSettingsPath ) ;
287- const nextProviders = await refreshLiveProviderCatalog ( nextDisk , resolvedForCatalog ) ;
288- state . config = {
289- ...state . config ,
290- providers : nextProviders ,
291- ...( nextDisk !== null ? { settings : nextDisk } : { } ) ,
292- } ;
293- services . hostHolder . instance . refreshModels (
294- listRecentModels ( state . config . settings ?? { providers : { } } ) ,
295- listFavoriteModels ( state . config . settings ?? { providers : { } } ) ,
296- nextProviders ,
297- ) ;
298- } )
299- . catch ( ( err : unknown ) => {
300- tuiLogger . debug ( "go model prefetch failed: {error}" , {
301- error : err instanceof Error ? err . message : String ( err ) ,
302- } ) ;
303- } ) ;
266+ prefetchGoModelsAndRefresh ( state , ( ) => services . hostHolder . instance ?. refreshModels ) ;
304267 }
305268 } ) ( ) . catch ( ( err : unknown ) => {
306269 tuiLogger . debug ( "provider connect failed: {error}" , {
0 commit comments