File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -918,7 +918,7 @@ it.layer(
918918 ) ;
919919 } ) ;
920920
921- it ( "retains stale OpenCode models when a refresh fails" , ( ) => {
921+ it ( "retains stale OpenCode models when a refresh fails or lists none " , ( ) => {
922922 const previousProvider = {
923923 instanceId : ProviderInstanceId . make ( "opencode" ) ,
924924 driver : ProviderDriverKind . make ( "opencode" ) ,
@@ -968,6 +968,21 @@ it.layer(
968968 ProviderRegistry . mergeProviderSnapshot ( previousProvider , refreshedProvider ) . skills ,
969969 previousProvider . skills ,
970970 ) ;
971+
972+ const emptyCatalogProvider = {
973+ ...refreshedProvider ,
974+ status : "warning" ,
975+ message : "OpenCode 2 is running, but it did not list any models yet." ,
976+ slashCommands : [ ] ,
977+ skills : [ ] ,
978+ } satisfies ServerProvider ;
979+ const mergedEmptyCatalog = ProviderRegistry . mergeProviderSnapshot (
980+ previousProvider ,
981+ emptyCatalogProvider ,
982+ ) ;
983+ assert . deepStrictEqual ( mergedEmptyCatalog . models , [ ...previousProvider . models ] ) ;
984+ assert . deepStrictEqual ( mergedEmptyCatalog . slashCommands , previousProvider . slashCommands ) ;
985+ assert . deepStrictEqual ( mergedEmptyCatalog . skills , previousProvider . skills ) ;
971986 } ) ;
972987
973988 describe ( "Pi model inventories" , ( ) => {
Original file line number Diff line number Diff line change @@ -201,7 +201,8 @@ const shouldRetainMissingProviderModels = (provider: ServerProvider): boolean =>
201201
202202 const isAntigravity = provider . driver === ProviderDriverKind . make ( "antigravity" ) ;
203203 const isCodex = provider . driver === ProviderDriverKind . make ( "codex" ) ;
204- if ( ! isAntigravity && ! isCodex && provider . driver !== ProviderDriverKind . make ( "opencode" ) ) {
204+ const isOpenCode = provider . driver === ProviderDriverKind . make ( "opencode" ) ;
205+ if ( ! isAntigravity && ! isCodex && ! isOpenCode ) {
205206 return true ;
206207 }
207208
@@ -217,9 +218,10 @@ const shouldRetainMissingProviderModels = (provider: ServerProvider): boolean =>
217218 isAntigravity && provider . status === "warning" && provider . auth . status === "unknown" ;
218219 const isPendingInitialProbe =
219220 provider . enabled && ! provider . installed && provider . status === "warning" ;
221+ // A cold OpenCode server can finish its probe as a warning before it lists any models.
220222 const isIncompleteInstalledProbe =
221223 provider . installed &&
222- ( provider . status === "error" || ( isCodex && provider . status === "warning" ) ) ;
224+ ( provider . status === "error" || ( ( isCodex || isOpenCode ) && provider . status === "warning" ) ) ;
223225 return isPendingAntigravityAuthentication || isPendingInitialProbe || isIncompleteInstalledProbe ;
224226} ;
225227
You can’t perform that action at this time.
0 commit comments