feat(desktop): edit delegation models and fallback policy - #105250
Open
andrexibiza wants to merge 1 commit into
Open
andrexibiza wants to merge 1 commit into
andrexibiza wants to merge 1 commit into
Conversation
andrexibiza
added a commit
to andrexibiza/hermes-agent
that referenced
this pull request
Sep 7, 2026
Normalize the live profile to the same explicit default used by the catalog, configuration read, and save scope. Without this, the Models editor's ownership guard rejects Apply when no profile is selected. Cover both an explicit remote connection and the implicit local runtime, including scoped read-back and preservation of the main model. Normalize the feature editor, provider field, and persistence test layout and object ordering without changing the configured fallback contract. Refs NousResearch#105250 Co-authored-by: Axl Ibiza, MBA <andrexibiza@gmail.com>
andrexibiza
added a commit
to andrexibiza/hermes-agent
that referenced
this pull request
Sep 7, 2026
Apply the three ordering corrections reported by the exact-head Desktop check: request-scope properties, mocked schema/config methods, and value/type import grouping. Preserve the runtime behavior and all passing default-profile persistence regressions. Refs NousResearch#105250 Co-authored-by: Axl Ibiza, MBA <andrexibiza@gmail.com>
1 task
Contributor
SummaryConfigurable delegation models and fallback chains: Desktop Models → Delegation UI (defaults + ordered backups with state/copy/docs), a Findings
Verified
VerdictLooks good. Careful pin semantics with credentials handled properly. |
andrexibiza
force-pushed
the
feat/desktop-delegation-models-landing
branch
from
September 9, 2026 20:05
e244666 to
c80e81f
Compare
andrexibiza
added a commit
to andrexibiza/hermes-agent
that referenced
this pull request
Sep 9, 2026
Rebuild NousResearch#105250 directly on current main as the Desktop projection of the delegation runtime contract merged in NousResearch#105347. Add the Models/profile-scoped editor, provider/model catalog controls, atomic fallback-policy drafts, capability negotiation, and authoritative same-owner save read-back. Remove the duplicate runtime fallback implementation and its failing test owner. Preserve model-only overrides, direct-endpoint metadata, explicit default-profile scope, stale-write refusal, failed-save retry, and legacy fallback-alias migration. The primary model and top-level fallback chain remain untouched. Source implementation and provenance: webtecnica NousResearch#67523; kshitijk4poor NousResearch#105347; Ayush Nangia NousResearch#80479 and NousResearch#65052; Axl Ibiza NousResearch#80421; wz-heng NousResearch#80438; Teknium NousResearch#80465; devatnull NousResearch#81072; TurgutKural NousResearch#101017; DavidMetcalfe NousResearch#67347; mlahatte NousResearch#65038; ScotterMonk NousResearch#94629. Fixes NousResearch#65038 Refs NousResearch#94629 Refs NousResearch#67347 Refs NousResearch#80450 Refs NousResearch#105347 Co-authored-by: webtecnica <75556242+webtecnica@users.noreply.github.com> Co-authored-by: Ayush Nangia <ayushnangia16@gmail.com>
Rebuild NousResearch#105250 directly on current main as the Desktop projection of the delegation runtime contract merged in NousResearch#105347. Add the Models/profile-scoped editor, provider/model catalog controls, atomic fallback-policy drafts, capability negotiation, and authoritative same-owner save read-back. Remove the duplicate runtime fallback implementation and its failing test owner. Preserve model-only overrides, direct-endpoint metadata, explicit default-profile scope, stale-write refusal, failed-save retry, and legacy fallback-alias migration. The primary model and top-level fallback chain remain untouched. Source implementation and provenance: webtecnica NousResearch#67523; kshitijk4poor NousResearch#105347; Ayush Nangia NousResearch#80479 and NousResearch#65052; Axl Ibiza NousResearch#80421; wz-heng NousResearch#80438; Teknium NousResearch#80465; devatnull NousResearch#81072; TurgutKural NousResearch#101017; DavidMetcalfe NousResearch#67347; mlahatte NousResearch#65038; ScotterMonk NousResearch#94629. Fixes NousResearch#65038 Refs NousResearch#94629 Refs NousResearch#67347 Refs NousResearch#80450 Refs NousResearch#105347 Co-authored-by: webtecnica <75556242+webtecnica@users.noreply.github.com> Co-authored-by: Ayush Nangia <ayushnangia16@gmail.com>
andrexibiza
force-pushed
the
feat/desktop-delegation-models-landing
branch
from
September 9, 2026 20:08
c80e81f to
cbe9fa5
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Rebuilds #105250 directly on current
main(267a6b79c8e0d8e0456d27948a80b79fea8f63d2) as the Desktop projection of the delegation runtime contract merged in #105347.This carrier retains the unique Desktop Models/profile editor and its authoritative persistence semantics:
{connectionId, profile}It deliberately removes the duplicate runtime fallback implementation from the old branch. Runtime fallback ownership remains in current main via merged #105347. This PR changes neither the primary conversation model nor the top-level fallback chain.
Related issues
delegation.fallback_providersdeclares their own (#80450, #65038, salvage #80479) #105347 (2026-09-07); this PR is its Desktop projection, not the runtime fixdelegation.fallback_providersdeclares their own (#80450, #65038, salvage #80479) #105347Type of change
Ownership boundary after #105347
Persistence and read-back contract
The editor binds the provider catalog, capability schema, configuration read, write, and verification read-back to one explicit
{connectionId, profile}owner.Selections remain local until Apply delegation settings. A successful PUT is not accepted as proof of persistence: the editor reads the same owner back and requires the saved delegation patch to match. Failed saves retain the draft for retry. If the backing delegation configuration changes while a draft is open, Apply is blocked until the user reloads. Responses from an earlier profile, gateway, or request generation are ignored.
Provider changes clear only stale delegation endpoint/auth routing fields. Model-only changes and fallback reorders preserve route metadata. Resetting fallback behavior writes the canonical key and clears legacy aliases so an old fallback cannot reappear.
Fallback matrix
null"inherit"[]Canonical
delegation.fallback_providerswins. Legacyfallback_chainandfallback_modelare read only when the canonical value is absent/null."parent"remains a read-compatible alias for"inherit".Files changed
apps/desktop/src/api/config.tsapps/desktop/src/api/models-scope.test.tsapps/desktop/src/api/models.tsapps/desktop/src/app/settings/config-settings.tsxapps/desktop/src/app/settings/delegation-model-provider-field.test.tsxapps/desktop/src/app/settings/delegation-model-provider-field.tsxapps/desktop/src/app/settings/delegation-model-settings.test.tsxapps/desktop/src/app/settings/delegation-model-settings.tsxapps/desktop/src/app/settings/delegation-models-copy.tsapps/desktop/src/app/settings/delegation-models-state.test.tsapps/desktop/src/app/settings/delegation-models-state.tshermes_cli/web_routers/config_env.pytests/hermes_cli/test_delegation_config_capability.pywebsite/docs/user-guide/features/delegation-models.mdCollision and landing order
delegation.fallback_providersdeclares their own (#80450, #65038, salvage #80479) #105347 is already merged and owns runtime behavior; this rebuild has zero runtime-file overlap.apps/desktop/src/api/config.ts) and One gateway owns every local session: CLI, TUI, Desktop (local), API, ACP, bots and cron attach to the same live conversation #106742 (overlap:apps/desktop/src/app/settings/config-settings.tsx); those branches should rebase afterward.Local verification
src/store/voice-prefs.test.ts6f3e630Leanolf+212****0991@…,evan-bradford@…,stiraspo@…,witcheer.eth@…) — none authored this PR's commit; this commit's lineage is covered by existing mappings plus itsCo-authored-bytrailers (webtecnica, Ayush Nangia). Repo-wide mapping repair is a separate main-level task, not owned by this PR.git diff --check: passedExact head:
cbe9fa581ac28191eae5bc986c550b95cf712e3a. GitHub currently reports no workflow runs for this SHA. The three workflows created for the immediately preceding rebuilt head were stopped before jobs began withaction_required; a NousResearch maintainer must approve the external-contributor workflows before exact-head CI evidence can run.Contribution lineage
This integration adapts webtecnica's guided Desktop picker in #67523 and projects the runtime contract now owned by kshitijk4poor's merged #105347. That runtime work salvaged Ayush Nangia's pin/config matrix in #80479, including spfcraze's model-only-pin correction, and builds on #65052, Axl Ibiza's #80421, wz-heng's #80438, Teknium's #80465, devatnull's #81072, and TurgutKural's #101017. Product reports and requirements came from DavidMetcalfe (#67347), mlahatte (#65038), and ScotterMonk (#94629).
Original PRs retain their discussion, authorship, and review reservations.