Conversation
145f57d to
291aa06
Compare
b547224 to
bd537df
Compare
teknium1
left a comment
There was a problem hiding this comment.
Thanks for consolidating the subagent configuration across the shell, TUI, Desktop, and shared persistence path.
Problems
ui-tui/src/components/appOverlays.tsx:253passesallowPersistGlobal={!subagentTarget}. For the subagent target this makesModelPickerdisplaypersist: session only(ui-tui/src/components/modelPicker.tsx:624,691) and emit a session flag (:388). But the new/subagent modelflow callsdelegation.model(ui-tui/src/app/slash/commands/core.ts, PR diff), which persistsdelegation.modelanddelegation.provider. The picker disclosure is therefore incorrect for a cross-session configuration change.
Suggested changes
- Give the subagent target an explicit persistence label such as
delegation config, and ensure the generated selection is not presented as session-only. Please cover that rendered TUI behavior with a regression test.
Automated hermes-sweeper review.
| @@ -242,17 +244,19 @@ export function FloatingOverlays({ | |||
|
|
|||
| if (overlay.modelPicker) { | |||
| const initialRefresh = typeof overlay.modelPicker === 'object' && overlay.modelPicker.refresh === true | |||
| const subagentTarget = typeof overlay.modelPicker === 'object' && overlay.modelPicker.target === 'subagent' | |||
|
|
|||
| widgets.push({ | |||
| id: 'model-picker', | |||
| render: width => ( | |||
| <FloatBox color={theme.color.border}> | |||
| <ModelPicker | |||
There was a problem hiding this comment.
For the subagent target this makes ModelPicker show persist: session only and append its session flag, but the resulting /subagent model call persists delegation.model/provider. Please give this target an explicit persistent-delegation label/mode so the picker does not promise session-only behavior.
There was a problem hiding this comment.
Fixed in 7ea0b9536. The subagent picker now labels this as persist: delegation config, disables the global/session toggle, and does not emit --tui-session. Added regression coverage for the label and argument.
bd537df to
7ea0b95
Compare
|
Rebased onto current Picker verification after the rebase: Python picker/setup/provider matrix 147/147, TUI 80/80 plus typecheck, Desktop 22/22 plus typecheck, Ruff and |
|
Added persisted subagent reasoning controls across shell, Classic CLI, TUI, and Desktop in Current verification:
CI run 30591780426 is still |
|
Thanks for the thorough work here — the surfaces are well built (shared resolver module, full model_switch pipeline reuse, locale coverage) and the review confirmed it extends the documented delegation config design cleanly rather than fighting it. Closing on scope grounds after maintainer review: this adds ~2.2k lines of permanent UI surface (CLI command tree, two slash-command integrations, Desktop settings panel, gateway RPCs) for config keys that already work today via If we take a subagent model picker after that redesign lands, this PR is the reference for the resolver + selection-observer approach, and we'll credit it. Your delegation fixes (#74858, #66401, #68087) all merged with your authorship preserved — thanks again for those, they were excellent. |
|
Thanks — and to be clear, I am not asking to reopen #74375 or to land its TUI picker immediately before the redesign. The Mission Control direction described on #70899 sounds genuinely excellent; a unified live feed, timelines, budgets, steering, spawn tree, and replay view could be a major Hermes feature. What I am missing is the product direction across Hermes' other first-class surfaces. The closure here treats Mission Control as the natural home for any future subagent picker. But the scope announced on #70899 is currently a TUI overlay, and it does not include selecting the persistent model/provider/reasoning defaults used by future subagents. Model display inside a running-agent detail pane is useful, but it is not the same capability as configuring what the next subagent will run on. More importantly, Hermes is not only a TUI product:
If Mission Control remains TUI-only, the result seems to be that the TUI becomes substantially more capable than Desktop and Dashboard for subagent orchestration, while Desktop's existing Agents view and Dashboard's existing configuration UI remain separate partial products. I cannot tell whether that divergence is intentional, temporary, or simply not planned yet. That is the part I think needs clarification. Is Mission Control intended to be:
And within that direction:
Even a rough direction would help. Right now the closure points to a future TUI feature as coverage for a cross-surface capability, while neither the published Mission Control scope nor a Desktop/Dashboard parity plan actually covers it. Mission Control sounds like a killer feature; I would just like to understand whether it is being designed as one coherent Hermes product or as a much more capable TUI surface alongside two separate, increasingly divergent applications. |
Summary
hermes subagent modeland classic/TUI/subagent modelselection with inheritance resetdelegation.reasoning_effortcontrol for future children across shell, Classic CLI, TUI, and Desktopnone) from Inherit parent; model and reasoning resets are independentpersist: delegation config, cannot toggle global/session scope, and emits no fake session flagComplete shell setup flow
hermes subagent modelreuses the complete interactivehermes modelsetup flow rather than maintaining a smaller provider/model list. This includes every provider branch, login/setup actions, model discovery, and Custom endpoint creation.Setup changes useful outside delegation are retained. For example, a custom endpoint created while selecting a subagent becomes a named
custom_providersentry and is subsequently available in the primary picker. The active primary model block and auth route are restored, so selecting a worker model does not switch the current primary model.Confirmed selections are captured at the canonical model-save seam (plus Azure Foundry's direct save path) using a context-local observer. New custom endpoints are persisted with their runtime-addressable
custom:<name>provider slug.The shared picker accepts display-only initial model/provider values. The subagent flow uses its persisted
delegation.*selection for provider row, model hint, and nested model cursor; model-only overrides keep the inherited parent provider, while inheritance keeps ordinary primary-model defaults.The command uses Hermes' dependency-free core picker/fallback stack; it does not add or import
InquirerPy.Subagent reasoning
The child-construction runtime already supports
delegation.reasoning_effortwith precedencedelegation override > parent reasoning. This PR exposes that existing production wire rather than adding a second reasoning system:hermes subagent reasoning [none|minimal|low|medium|high|xhigh|max|ultra|reset]/subagent reasoning [level|reset]noneproduces{"enabled": false}for new childrenresetremoves only the reasoning override and restores parent inheritanceREST model and reasoning mutations are separate fail-closed operations; a mixed request is rejected before the first config write. TUI uses a separate
delegation.reasoningRPC. All surfaces call the same validation/persistence functions inhermes_cli/subagent_model.py.Related work
Closes #67347. The Dashboard surface is covered separately by #67557. This PR supersedes the Desktop scope of #67523.
Surface parity
hermes subagent model, direct model selection,reset,--reset,--refresh, andreasoning/subagent model [model|reset]and/subagent reasoning [level|reset]Verification
Current head (
7ea0b9536), rebased ontomaincc4cab2f5:py_compile, andgit diff --check: GREENhigh→{"enabled": true, "effort": "high"}none→{"enabled": false}{"enabled": true, "effort": "xhigh"}HERMES_HOME: set/status/reset GREENEarlier picker-specific verification remains covered by the branch history: complete custom endpoint flow, primary-model preservation, initial-pointer behavior, cancellation semantics, provider normalization, Desktop/TUI production builds, and the expanded picker/provider matrix.