Describe the bug
PR #6964 moved delegate from an unconditional builtin into the summon platform extension. Recipes with an explicit extensions: block that omit summon silently lose access to delegate with no error or warning.
To Reproduce
- Create a recipe with an explicit
extensions: block that omits summon but uses delegate via inline instructions
- Run:
goose run --recipe your-recipe.yaml
delegate is unavailable; the agent does not spawn sub-agents
Expected behavior
delegate is available in any recipe session, consistent with pre-#6964 behavior where subagent was registered unconditionally in agent.rs regardless of the recipe's extensions: block.
Additional context
resolve_extensions_for_new_session treats a recipe's extensions: block as exclusive and does not merge with ~/.config/goose/config.yaml. If summon is absent, delegate is never registered.
Commit b01e58b16 auto-injects summon for recipes with a sub_recipes: field but does not cover recipes that invoke delegate via inline instructions.
Workaround: add summon to the recipe's extensions: block:
extensions:
- type: platform
name: summon
- type: builtin
name: developer
Proposed fixes
- Extend
ensure_summon_for_subrecipes to cover all recipes, not just those with sub_recipes:
- Emit a warning when a recipe session starts without
summon loaded
- Add a migration note to the recipe authoring docs
Describe the bug
PR #6964 moved
delegatefrom an unconditional builtin into thesummonplatform extension. Recipes with an explicitextensions:block that omitsummonsilently lose access todelegatewith no error or warning.To Reproduce
extensions:block that omitssummonbut usesdelegatevia inline instructionsgoose run --recipe your-recipe.yamldelegateis unavailable; the agent does not spawn sub-agentsExpected behavior
delegateis available in any recipe session, consistent with pre-#6964 behavior wheresubagentwas registered unconditionally inagent.rsregardless of the recipe'sextensions:block.Additional context
resolve_extensions_for_new_sessiontreats a recipe'sextensions:block as exclusive and does not merge with~/.config/goose/config.yaml. Ifsummonis absent,delegateis never registered.Commit
b01e58b16auto-injectssummonfor recipes with asub_recipes:field but does not cover recipes that invokedelegatevia inline instructions.Workaround: add
summonto the recipe'sextensions:block:Proposed fixes
ensure_summon_for_subrecipesto cover all recipes, not just those withsub_recipes:summonloaded