- **Per-agent LLM picker on both agent-management admin surfaces (issue #2119).**
  `AgentConfiguration.preferred_llm` was fully wired on the backend
  (`config/graphql/agent_mutations.py`, `AgentConfigurationService`) but had no
  GUI — the only way to set it was raw GraphQL. Both the global
  (`frontend/src/components/admin/GlobalAgentManagement.tsx`) and corpus-scoped
  (`frontend/src/components/corpuses/CorpusAgentManagement.tsx`) agent
  create/edit forms now embed the existing `LlmModelPicker`
  (`frontend/src/components/common/LlmModelPicker.tsx`), the same
  provider-aware model-spec control already used for the System Settings
  install-wide default and `Corpus.preferred_llm`. The corpus-scoped form also
  surfaces the corpus's own `preferredLlm` as the "inherited" fallback hint
  when the caller has it on hand (wired from `CorpusSettings.tsx`).
  - GraphQL: `preferredLlm` added to `GET_GLOBAL_AGENTS`
    (`global_agent_management.graphql.ts`) and `GET_CORPUS_AGENTS`
    (`graphql/queries.ts`); `$preferredLlm`/`$clearPreferredLlm` added to both
    create/update mutation pairs (`global_agent_management.graphql.ts`,
    `graphql/mutations.ts`), matching the args already accepted by
    `CreateAgentConfigurationMutation`/`UpdateAgentConfigurationMutation`.
  - Contract: on create, an empty field sends `preferredLlm: null` (no
    override, matching `preferred_llm or None` in
    `AgentConfigurationService.create_agent`). On update, a non-empty value
    sends `preferredLlm: <value>`; clearing a previously-set override sends
    `clearPreferredLlm: true` with `preferredLlm` omitted — never an
    empty-string `preferredLlm`, which fails the model's validation. Leaving
    an already-empty field untouched sends neither (no-op), per
    `AgentConfigurationService.update_agent`'s `clear_preferred_llm=True` /
    `preferred_llm is not None` branching.
  - `frontend/src/types/graphql-api.ts`: added `preferredLlm` to
    `AgentConfigurationType` (hand-maintained; this repo has no active
    GraphQL codegen script).
  - Tests: new CT coverage in `frontend/tests/CorpusAgentManagement.ct.tsx`
    and `frontend/tests/global-agent-management.ct.tsx` for picker visibility,
    submit-with-value, and clear-with-`clearPreferredLlm`; existing mutation
    mocks across `admin-components.ct.tsx`,
    `CorpusAgentManagement.ct.tsx`, and `global-agent-management.ct.tsx`
    updated to match the new query/mutation shapes exactly.
