feat(cmd): add /model-fallback command (#196)

* feat(cmd): add /model-fallback command

* fix: apply feedback

* fix: lock usage with _fallback_chain

* fix: apply feedback

* fix: apply feedback

* feat: add tests

* fix: tests

* Update EvoScientist/middleware/model_fallback.py

Co-authored-by: dinos <dinospk1999@gmail.com>

---------

Co-authored-by: dinos <dinospk1999@gmail.com>
This commit is contained in:
Wiktor Cupiał
2026-05-07 15:35:26 +02:00
committed by GitHub
parent 22a65b640d
commit 9e51ec6fdd
8 changed files with 1042 additions and 3 deletions
+10
View File
@@ -432,17 +432,22 @@ def _get_default_middleware():
"""Build the default middleware list."""
from .middleware import (
ContextOverflowMapperMiddleware,
ModelFallbackMiddleware,
ToolErrorHandlerMiddleware,
create_context_editing_middleware,
create_memory_middleware,
create_tool_selector_middleware,
load_fallback_chain,
)
cfg = _ensure_config()
if cfg.model_fallbacks:
load_fallback_chain(cfg.model_fallbacks)
model = _ensure_chat_model()
memory_dir = str(_paths_mod.MEMORIES_DIR)
mw = [
create_context_editing_middleware(model),
ModelFallbackMiddleware(),
ContextOverflowMapperMiddleware(),
ToolErrorHandlerMiddleware(),
*create_tool_selector_middleware(model=model),
@@ -543,13 +548,17 @@ def create_cli_agent(
from .backends import CustomSandboxBackend, MergedSkillsBackend
from .middleware import (
ContextOverflowMapperMiddleware,
ModelFallbackMiddleware,
ToolErrorHandlerMiddleware,
create_context_editing_middleware,
create_memory_middleware,
create_tool_selector_middleware,
load_fallback_chain,
)
cfg = _ensure_config(config)
if cfg.model_fallbacks:
load_fallback_chain(cfg.model_fallbacks)
if checkpointer is None:
from langgraph.checkpoint.memory import InMemorySaver
@@ -600,6 +609,7 @@ def create_cli_agent(
model = _ensure_chat_model()
mw: list[AgentMiddleware] = [
create_context_editing_middleware(model),
ModelFallbackMiddleware(),
ContextOverflowMapperMiddleware(),
ToolErrorHandlerMiddleware(),
*create_tool_selector_middleware(model=model),