File tree Expand file tree Collapse file tree
src/agents/pi-embedded-runner Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -643,6 +643,25 @@ describe("resolveModel", () => {
643643 expect ( model . api ) . toBe ( "openai-completions" ) ;
644644 } ) ;
645645
646+ it ( "does not synthesize unknown models from timeout-only provider overlays" , ( ) => {
647+ const cfg = {
648+ models : {
649+ providers : {
650+ openai : {
651+ timeoutSeconds : 300 ,
652+ baseUrl : "" ,
653+ models : [ ] ,
654+ } ,
655+ } ,
656+ } ,
657+ } as unknown as OpenClawConfig ;
658+
659+ const result = resolveModelForTest ( "openai" , "typo-model" , "/tmp/agent" , cfg ) ;
660+
661+ expect ( result . model ) . toBeUndefined ( ) ;
662+ expect ( result . error ) . toBe ( "Unknown model: openai/typo-model" ) ;
663+ } ) ;
664+
646665 it ( "defaults baseUrl-only local custom fallback models to chat completions" , ( ) => {
647666 const cfg = {
648667 agents : {
Original file line number Diff line number Diff line change @@ -447,6 +447,21 @@ function findConfiguredProviderModel(
447447 ) ;
448448}
449449
450+ function hasConfiguredFallbackSurface ( params : {
451+ providerConfig : InlineProviderConfig | undefined ;
452+ configuredModel : ReturnType < typeof findConfiguredProviderModel > ;
453+ modelId : string ;
454+ } ) : boolean {
455+ if ( params . modelId . startsWith ( "mock-" ) ) {
456+ return true ;
457+ }
458+ if ( params . configuredModel ) {
459+ return true ;
460+ }
461+ const baseUrl = params . providerConfig ?. baseUrl ?. trim ( ) ;
462+ return Boolean ( baseUrl ) ;
463+ }
464+
450465function readModelParams ( value : unknown ) : Record < string , unknown > | undefined {
451466 if ( ! value || typeof value !== "object" || Array . isArray ( value ) ) {
452467 return undefined ;
@@ -870,7 +885,7 @@ function resolveConfiguredFallbackModel(params: {
870885 providerParams : providerConfig ?. params ,
871886 configuredParams : configuredModel ?. params ,
872887 } ) ;
873- if ( ! providerConfig && ! modelId . startsWith ( "mock-" ) ) {
888+ if ( ! hasConfiguredFallbackSurface ( { providerConfig, configuredModel , modelId } ) ) {
874889 return undefined ;
875890 }
876891 const fallbackTransport = resolveProviderTransport ( {
You can’t perform that action at this time.
0 commit comments