From f04e06b023ef5ff7c08640c7271a0aba319fe201 Mon Sep 17 00:00:00 2001
From: Neil <4138956+nwparker@users.noreply.github.com>
Date: Mon, 9 Nov 2026 01:13:24 -0800
Subject: [PATCH] fix(agent-picker): list agents named by the search before
other agents' model setups (#39806)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* fix(agent-picker): list agents named by the search before other agents' model setups
Typing "codex" in the agent picker showed OpenCode/Cursor model setups
(e.g. "OpenCode · GPT-5 Codex") above the Codex agent itself, and Enter
picked the first setup. Direct agent matches now render first and are the
Enter target.
* test(agent-picker): assert search highlight and Enter target for named agent
* test(agent-picker): import fireEvent after rebase
---
.../AgentLaunchPickerMenu.search.test.tsx | 47 +++++++++++++++-
.../agent/AgentLaunchPickerMenu.tsx | 54 ++++++++++---------
2 files changed, 74 insertions(+), 27 deletions(-)
diff --git a/src/renderer/src/components/agent/AgentLaunchPickerMenu.search.test.tsx b/src/renderer/src/components/agent/AgentLaunchPickerMenu.search.test.tsx
index 94c96fa30a1..daf9b9dfd7e 100644
--- a/src/renderer/src/components/agent/AgentLaunchPickerMenu.search.test.tsx
+++ b/src/renderer/src/components/agent/AgentLaunchPickerMenu.search.test.tsx
@@ -1,5 +1,5 @@
// @vitest-environment happy-dom
-import { cleanup, render, screen } from '@testing-library/react'
+import { cleanup, fireEvent, render, screen } from '@testing-library/react'
import { afterEach, expect, it, vi } from 'vitest'
import { useState, type ComponentProps } from 'react'
import userEvent from '@testing-library/user-event'
@@ -93,3 +93,48 @@ it('includes blank terminal in keyboard results and filters it for agent and mod
await user.type(screen.getByRole('textbox'), 'astra{Enter}')
expect(screen.getByLabelText('Selection').textContent).toBe('codex:astra')
})
+
+it('lists an agent named by the query before other agents’ model setups', () => {
+ const codex: AgentPickerEntry = {
+ agent: 'codex',
+ label: 'Codex',
+ rows: [{ agent: 'codex', kind: 'cli' }],
+ surfaces: ['terminal'],
+ defaultSurface: 'terminal',
+ terminal: {},
+ structured: {},
+ catalog: { origin: 'probe', fetchedAt: 1, models: [] }
+ }
+ const opencode: AgentPickerEntry = {
+ ...codex,
+ agent: 'opencode',
+ label: 'OpenCode',
+ rows: [{ agent: 'opencode', kind: 'cli' }],
+ catalog: {
+ origin: 'probe',
+ fetchedAt: 1,
+ models: [{ id: 'gpt-5-codex', label: 'GPT-5 Codex', isDefault: false, efforts: [] }]
+ }
+ }
+ const launch = vi.fn()
+ render(
+