hermes-agent/apps/desktop/src/app
Teknium c6575df927
feat(moa): expose MoA presets as selectable virtual models (#46081)
* feat(moa): expose MoA presets as selectable virtual models

Reconstructed onto current main (PR #46081's base had diverged with no common
ancestor, marking the PR dirty so CI never dispatched). MoA is now a virtual
provider: each named preset is a selectable model under provider 'moa', and the
preset's aggregator is the acting model that answers and calls tools.

Reference models fan out in parallel via a bounded ThreadPoolExecutor (the same
batch pattern delegate_task uses) — all references dispatched at once, collected
when every one finishes, then handed to the aggregator. Output order is
preserved, failures and the MoA-recursion guard stay isolated per reference.

- Removed the old mixture_of_agents model tool and moa toolset.
- Added moa as a virtual provider in the provider/model inventory.
- /moa is shortcut behavior over model selection (default preset / named preset
  / one-shot prompt).
- Dashboard + Desktop manage named presets; presets appear in model pickers.
- Parallel reference fan-out in agent/moa_loop.py with regression test.

* fix(moa): thread moa_config through _run_agent to _run_agent_inner

The reconstructed gateway MoA wiring declared moa_config on _run_agent (the
profile-scoping wrapper) and used it inside _run_agent_inner, but the wrapper
never forwarded it — _run_agent_inner had no such parameter, so the runtime hit
NameError: name 'moa_config' is not defined on the compression-failure session
sync path. Add moa_config to _run_agent_inner's signature and forward it from
both wrapper call sites (multiplex and non-multiplex). Caught by
tests/gateway/test_compression_failure_session_sync.py on CI shard test(4).

* fix(moa): classify moa as a virtual provider in the catalog

The moa virtual provider has no PROVIDER_REGISTRY/ProviderProfile entry, so
provider_catalog() fell through to the default auth_type="api_key" with no
env vars — tripping two catalog invariants:
  - test_provider_catalog: api_key providers must expose a credential env var
  - test_provider_parity: every hermes-model provider must be desktop-configurable

moa already declares auth_type="virtual" in HERMES_OVERLAYS; consult that
overlay as an auth_type fallback so the catalog reports moa as virtual (no real
credential, no network endpoint). Exempt virtual providers from the desktop
parity union check the same way 'custom' is exempt — derived from the catalog,
not a hardcoded slug, so future virtual providers are covered too.
2026-06-25 13:52:06 -07:00
..
agents fix(desktop): make Agents indicator match the Spawn-tree panel 2026-06-24 18:16:14 -05:00
artifacts fix(desktop): open remote-gateway artifacts via authenticated download (#46895) 2026-06-15 23:50:19 -05:00
chat fix(desktop): wire Ctrl+B voice, declutter voice settings, stop endless TTS hang 2026-06-24 18:26:14 -05:00
command-center fix(desktop): make rendered logs selectable so they can be copied 2026-06-19 10:03:46 -05:00
command-palette feat(pets): Pokédex generate UI — overlay, animated egg, hatch FX, manage 2026-06-24 13:51:34 -05:00
cron fix(desktop): cron overlay mutations sync the sidebar instantly 2026-06-06 16:47:46 -05:00
gateway/hooks Merge pull request #47959 from NousResearch/bb/pets-gen 2026-06-24 19:41:34 -05:00
hooks Merge pull request #47959 from NousResearch/bb/pets-gen 2026-06-24 19:41:34 -05:00
messaging fix(desktop): offer a Restart gateway action on messaging save/toggle toasts 2026-06-19 10:03:24 -05:00
overlays refactor(desktop): converge cron overlay onto profiles' split layout 2026-06-06 16:39:56 -05:00
pet-generate refactor(pets): tighten remix comments and confirm handler 2026-06-25 01:10:56 -05:00
pet-overlay feat(desktop): floating pet, pop-out overlay + Cmd+K picker 2026-06-20 14:18:40 -05:00
profiles feat(dashboard): clone profiles from any source 2026-06-13 07:33:58 -07:00
right-sidebar fix(desktop): replace native title tooltips with styled Tip component 2026-06-23 10:19:30 -07:00
session/hooks refactor(tui_gateway): DRY the deferred-session paths 2026-06-25 14:03:03 -05:00
settings feat(moa): expose MoA presets as selectable virtual models (#46081) 2026-06-25 13:52:06 -07:00
shell feat(moa): expose MoA presets as selectable virtual models (#46081) 2026-06-25 13:52:06 -07:00
skills feat(computer-use): surface macOS permission preflight in the desktop 2026-06-22 17:33:52 -05:00
desktop-controller.tsx feat(pets): Pokédex generate UI — overlay, animated egg, hatch FX, manage 2026-06-24 13:51:34 -05:00
floating-hud.ts style(desktop): use the nous overlay surface (--stroke-nous + --shadow-nous) for the HUDs 2026-06-09 23:49:02 -05:00
index.tsx Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
layout-constants.ts feat(desktop): hover-reveal collapsed sidebars as fixed overlays (#41670) 2026-06-07 22:41:21 -05:00
model-picker-overlay.tsx Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
model-visibility-overlay.tsx feat(desktop): inline model picker in the status bar 2026-06-02 19:09:41 -05:00
page-search-shell.tsx feat(desktop): add i18n with Simplified Chinese (zh-Hans) support 2026-06-05 10:32:26 -07:00
routes.ts chore(desktop): zero eslint/typecheck debt + prettier pass (#39100) 2026-06-04 14:10:38 +00:00
session-picker-overlay.tsx desktop: registry-driven slash commands + first-class /resume & /handoff (#42351) 2026-06-11 01:49:24 +00:00
session-switcher.tsx feat(desktop): theme the terminal ANSI palette + restyle the Cmd-K / Ctrl-Tab HUDs 2026-06-09 23:37:50 -05:00
types.ts fix(desktop): render send/prefill directive notices (/goal, /undo) (#49073) 2026-06-19 07:28:50 -07:00
updates-overlay.tsx Merge pull request #52210 from helix4u/fix/desktop-update-progress-visibility 2026-06-24 19:45:05 -05:00