@@ -16,6 +16,7 @@ import {
1616 resolveAgentModelFallbacksOverride ,
1717 resolveAgentModelPrimary ,
1818 resolveRunModelFallbacksOverride ,
19+ resolveSubagentModelConfigSelection ,
1920 resolveSubagentModelFallbacksOverride ,
2021 resolveAgentWorkspaceDir ,
2122 resolveAgentIdByWorkspacePath ,
@@ -547,6 +548,16 @@ describe("resolveAgentConfig", () => {
547548 fallbacks : [ "google/gemini-3-pro" ] ,
548549 } ,
549550 } ,
551+ {
552+ id : "metadata-only-subagent" ,
553+ model : {
554+ primary : "anthropic/claude-sonnet-4-6" ,
555+ fallbacks : [ "google/gemini-3-pro" ] ,
556+ } ,
557+ subagents : {
558+ model : { timeoutMs : 1_000 } ,
559+ } ,
560+ } ,
550561 {
551562 id : "default-subagent" ,
552563 } ,
@@ -567,13 +578,67 @@ describe("resolveAgentConfig", () => {
567578 expect ( resolveSubagentModelFallbacksOverride ( cfg , "agent-model" ) ) . toEqual ( [
568579 "google/gemini-3-pro" ,
569580 ] ) ;
581+ expect ( resolveSubagentModelFallbacksOverride ( cfg , "metadata-only-subagent" ) ) . toEqual ( [
582+ "google/gemini-3-pro" ,
583+ ] ) ;
570584 expect ( resolveSubagentModelFallbacksOverride ( cfg , "default-subagent" ) ) . toEqual ( [
571585 "openai-codex/gpt-5.4" ,
572586 "zai/glm-5" ,
573587 ] ) ;
574588 expect ( resolveSubagentModelFallbacksOverride ( cfg , "strict" ) ) . toStrictEqual ( [ ] ) ;
575589 } ) ;
576590
591+ it ( "resolves the subagent model config selected for isolated runs" , ( ) => {
592+ const cfg : OpenClawConfig = {
593+ agents : {
594+ defaults : {
595+ subagents : { model : "openai/gpt-5.4" } ,
596+ } ,
597+ list : [
598+ {
599+ id : "agent-model" ,
600+ model : {
601+ primary : "anthropic/claude-sonnet-4-6" ,
602+ fallbacks : [ "google/gemini-3-pro" ] ,
603+ } ,
604+ } ,
605+ {
606+ id : "subagent-model" ,
607+ model : "anthropic/claude-sonnet-4-6" ,
608+ subagents : {
609+ model : {
610+ primary : "kimi/kimi-code" ,
611+ fallbacks : [ "openai-codex/gpt-5.4" ] ,
612+ } ,
613+ } ,
614+ } ,
615+ {
616+ id : "metadata-only-subagent" ,
617+ model : "anthropic/claude-sonnet-4-6" ,
618+ subagents : {
619+ model : { timeoutMs : 1_000 } ,
620+ } ,
621+ } ,
622+ ] ,
623+ } ,
624+ } ;
625+
626+ expect ( resolveSubagentModelConfigSelection ( { cfg, agentId : "agent-model" } ) ) . toEqual ( {
627+ primary : "anthropic/claude-sonnet-4-6" ,
628+ fallbacks : [ "google/gemini-3-pro" ] ,
629+ } ) ;
630+ expect ( resolveSubagentModelConfigSelection ( { cfg, agentId : "subagent-model" } ) ) . toEqual ( {
631+ primary : "kimi/kimi-code" ,
632+ fallbacks : [ "openai-codex/gpt-5.4" ] ,
633+ } ) ;
634+ expect ( resolveSubagentModelConfigSelection ( { cfg, agentId : "metadata-only-subagent" } ) ) . toBe (
635+ "anthropic/claude-sonnet-4-6" ,
636+ ) ;
637+ expect ( resolveSubagentModelConfigSelection ( { cfg, agentId : "default-subagent" } ) ) . toBe (
638+ "openai/gpt-5.4" ,
639+ ) ;
640+ } ) ;
641+
577642 it ( "should return agent-specific sandbox config" , ( ) => {
578643 const cfg = {
579644 agents : {
0 commit comments