From 8bcc24514288140e4a0fdad56cacba287c83e247 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Thu, 13 Aug 2026 10:50:19 -0400 Subject: [PATCH] fix(core): list default agent first (#42243) Co-authored-by: Dax Raad --- packages/core/src/agent.ts | 5 ++++- packages/core/test/agent.test.ts | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/core/src/agent.ts b/packages/core/src/agent.ts index e66ce95ea78..952c2e287b7 100644 --- a/packages/core/src/agent.ts +++ b/packages/core/src/agent.ts @@ -122,7 +122,10 @@ const layer = Layer.effect( return { id: info?.id ?? defaultID, info } }), list: Effect.fn("Agent.list")(function* () { - return Array.fromIterable(state.get().agents.values()) + const agents = Array.fromIterable(state.get().agents.values()) + const selected = selectedDefault() + if (!selected) return agents + return [selected, ...agents.filter((agent) => agent.id !== selected.id)] }), }) }), diff --git a/packages/core/test/agent.test.ts b/packages/core/test/agent.test.ts index f607bf68d25..2f287602116 100644 --- a/packages/core/test/agent.test.ts +++ b/packages/core/test/agent.test.ts @@ -68,6 +68,26 @@ describe("Agent", () => { }), ) + it.effect("lists the selected default agent first", () => + Effect.gen(function* () { + const agent = yield* Agent.Service + yield* agent.transform((editor) => { + editor.update(Agent.ID.make("build"), (info) => { + info.mode = "primary" + }) + editor.update(Agent.ID.make("reviewer"), (info) => { + info.mode = "primary" + }) + editor.update(Agent.ID.make("explore"), (info) => { + info.mode = "subagent" + }) + editor.default(Agent.ID.make("reviewer")) + }) + + expect((yield* agent.list()).map((info) => String(info.id))).toEqual(["reviewer", "build", "explore"]) + }), + ) + it.effect("rebuilds state when a transform is replaced", () => Effect.gen(function* () { const agent = yield* Agent.Service