{"repo":"NousResearch/hermes-agent","public_id":"22936","display_label":"Auxiliary model slot registration, UI, and plugin routing","summary":"These items address gaps in auxiliary model slot registration (session_search, monitor, goal_judge, etc.), fixes to dashboard and CLI pickers that used hardcoded or stale slot lists, and features enabling plugins to register and route through custom auxiliary model slots.","subsystem":"agent","counts":{"members":20,"open_issues":2,"open_issues_distinct":2,"open_prs":3,"closed_issues":6,"merged_prs":3,"attempt_prs":9},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":28335},"resolution":{"state":"partially_resolved","by":"pr-28335,pr-81980,pr-133566"},"freshness":{"state":"verified","last_verified_at":"2026-10-06T00:24:42+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.08357894736842106},"fix_edges":[{"issue_number":27925,"pr_number":28335,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":40880,"pr_number":133566,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":44673,"pr_number":81980,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":64174,"pr_number":81980,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":72372,"pr_number":81980,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":129189,"pr_number":133566,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":22936,"title":"goal_judge auxiliary model missing from dashboard UI and hardcoded model suggestion in error message","url":null,"state":"open"},{"kind":"issue","number":27925,"title":"fix(aux): remove stale session_search auxiliary-model menu entry","url":null,"state":"closed"},{"kind":"issue","number":33348,"title":"session_search auxiliary slot missing from aux-task registries (_AUX_TASKS, _AUX_TASK_SLOTS)","url":null,"state":"closed"},{"kind":"issue","number":39078,"title":"Bug: session_search missing from _AUX_TASK_SLOTS — Desktop settings 400 error","url":null,"state":"closed"},{"kind":"issue","number":40880,"title":"Dashboard auxiliary model slots ignore plugins — frontend uses hardcoded list","url":null,"state":"closed"},{"kind":"issue","number":44673,"title":"Let plugins register custom auxiliary model slots","url":null,"state":"closed"},{"kind":"issue","number":45303,"title":"[Bug]: `monitor` and `session_search` auxiliary models missing from `hermes model` → Auxiliary picker","url":null,"state":"open"},{"kind":"issue","number":64174,"title":"feat(plugins): route ctx.llm calls through plugin-registered auxiliary model slots","url":null,"state":"closed"},{"kind":"pr","number":22938,"title":"fix(cli): add goal_judge to auxiliary model dashboards and remove hardcoded model suggestion","url":null,"state":"open","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":27926,"title":"fix(aux): remove stale session_search model menu entry","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"87ace43f1e74064a14357a3e8fc76b84e8e58a9e","number":0},{"kind":"pr","value":"#28335","number":28335}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":28335,"title":"fix(aux): remove stale session_search model menu entry (#27926)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["hermes_cli/main.py","tests/hermes_cli/test_aux_config.py"],"fix_hunks":[{"file":"hermes_cli/main.py","hunks":["@@ -2142,7 +2142,6 @@ def _clear_stale_openai_base_url():\n     (\"vision\", \"Vision\", \"image/screenshot analysis\"),\n     (\"compression\", \"Compression\", \"context summarization\"),\n     (\"web_extract\", \"Web extract\", \"web page summarization\"),\n-    (\"session_search\", \"Session search\", \"past-conversation recall\"),\n     (\"approval\", \"Approval\", \"smart command approval\"),\n     (\"mcp\", \"MCP\", \"MCP tool reasoning\"),\n     (\"title_generation\", \"Title generation\", \"session titles\"),"]},{"file":"tests/hermes_cli/test_aux_config.py","hunks":["@@ -42,12 +42,10 @@ def test_title_generation_present_in_default_config():\n     assert tg[\"extra_body\"] == {}\n \n \n-def test_session_search_defaults_include_extra_body_and_concurrency():\n-    ss = DEFAULT_CONFIG[\"auxiliary\"][\"session_search\"]\n-    assert ss[\"provider\"] == \"auto\"\n-    assert ss[\"model\"] == \"\"\n-    assert ss[\"extra_body\"] == {}\n-    assert ss[\"max_concurrency\"] == 3\n+def test_session_search_no_longer_appears_in_auxiliary_model_config():\n+    \"\"\"session_search is a direct DB-backed tool, not an auxiliary LLM task.\"\"\"\n+    assert \"session_search\" not in DEFAULT_CONFIG[\"auxiliary\"]\n+    assert \"session_search\" not in {key for key, _name, _desc in _AUX_TASKS}\n \n \n def test_aux_tasks_keys_all_exist_in_default_config():\n"]}]},{"kind":"pr","number":33371,"title":"fix(cli): register session_search in aux-task registries (#33348)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"abf1af540193c30047ff3e7e759c330faf3a880f","number":0},{"kind":"commit","value":"d246f9a2785c61916b61deed5af64586d390eb44","number":0},{"kind":"pr","value":"#27590","number":27590},{"kind":"pr","value":"#33348","number":33348}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":39087,"title":"fix(desktop): remove stale session_search from auxiliary model settings UI","url":null,"state":"closed","close_reason":{"category":"silent_close","implication":"active"},"merged":false},{"kind":"pr","number":40922,"title":"fix(web): include plugin auxiliary slots (#40880)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#133566","number":133566},{"kind":"pr","value":"#111524","number":111524},{"kind":"pr","value":"#133566","number":133566},{"kind":"pr","value":"#40880","number":40880},{"kind":"pr","value":"#133566","number":133566}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":45306,"title":"fix(cli): add missing monitor task to auxiliary model picker (#45303)","url":null,"state":"open","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":45446,"title":"fix(cli): add monitor to auxiliary model picker (issue #45303)","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#45306","number":45306},{"kind":"pr","value":"#45306","number":45306},{"kind":"pr","value":"#45303","number":45303},{"kind":"pr","value":"#30382","number":30382}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":65734,"title":"feat(plugins): route ctx.llm.complete(task=) through registered auxiliary slots (closes #44673)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#81980","number":81980}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":81980,"title":"feat(plugins): route ctx.llm through auxiliary slots","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/auxiliary_client.py","agent/plugin_llm.py","contributors/emails/[redacted:email]","hermes_cli/plugins.py","tests/agent/test_plugin_llm_task_routing.py","website/docs/developer-guide/plugin-llm-access.md","website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/developer-guide/plugin-llm-access.md"]},{"kind":"pr","number":111524,"title":"fix(dashboard,desktop): surface plugin-registered auxiliary tasks in Models settings","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#40922","number":40922},{"kind":"pr","value":"#133566","number":133566},{"kind":"pr","value":"#40880","number":40880},{"kind":"pr","value":"#133566","number":133566}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":133566,"title":"feat(plugins): plugin aux slots inherit a built-in slot and show up in Dashboard/Desktop aux settings","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/auxiliary_client.py","agent/auxiliary_task_config.py","apps/desktop/src/app/settings/aux-task-rows.tsx","apps/desktop/src/app/settings/model-settings.test.tsx","apps/desktop/src/app/settings/model-settings.tsx","apps/desktop/src/i18n/ar_settings.ts","apps/desktop/src/i18n/de.ts","apps/desktop/src/i18n/de_aux_tasks.ts","apps/desktop/src/i18n/en.ts","apps/desktop/src/i18n/en_aux_tasks.ts","apps/desktop/src/i18n/es.ts","apps/desktop/src/i18n/es_aux_tasks.ts","apps/desktop/src/i18n/fr.ts","apps/desktop/src/i18n/fr_aux_tasks.ts","apps/desktop/src/i18n/ja.ts","apps/desktop/src/i18n/ja_aux_tasks.ts","apps/desktop/src/i18n/ru.ts","apps/desktop/src/i18n/ru_aux_tasks.ts","apps/desktop/src/i18n/types.ts","apps/desktop/src/i18n/types_aux_tasks.ts","apps/desktop/src/i18n/zh-hant_settings.ts","apps/desktop/src/i18n/zh.ts","apps/desktop/src/i18n/zh_aux_tasks.ts","apps/desktop/src/types/hermes.ts","hermes_cli/main_provider_setup.py","hermes_cli/plugins.py","hermes_cli/plugins_aux_tasks.py","hermes_cli/web_routers/models.py","hermes_cli/web_server_config.py","locales/_keys.desktop.json","tests/hermes_cli/test_plugin_aux_tasks_dashboard.py","tests/hermes_cli/test_plugin_auxiliary_tasks.py","web/src/lib/api-aux.ts","web/src/lib/api.ts","web/src/lib/aux-tasks.test.ts","web/src/lib/aux-tasks.ts","web/src/pages/ModelsPage.tsx","website/docs/developer-guide/plugin-llm-access.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}