refactor(agent-key): use getAgentListDisplayName for consistent key remapping

Update agent key remapper and tests to use getAgentListDisplayName

for proper runtime-facing list names in OpenCode display.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
YeonGyu-Kim
2026-04-11 22:01:29 +09:00
parent 3b092c249b
commit 79b4b0a386
2 changed files with 30 additions and 33 deletions
+28 -31
View File
@@ -1,6 +1,6 @@
import { describe, it, expect } from "bun:test"
import { remapAgentKeysToDisplayNames } from "./agent-key-remapper"
import { getAgentDisplayName, getAgentRuntimeName } from "../shared/agent-display-names"
import { getAgentDisplayName, getAgentListDisplayName, getAgentRuntimeName } from "../shared/agent-display-names"
describe("remapAgentKeysToDisplayNames", () => {
it("remaps known agent keys to display names", () => {
@@ -14,7 +14,7 @@ describe("remapAgentKeysToDisplayNames", () => {
const result = remapAgentKeysToDisplayNames(agents)
// then known agents get display name keys only
expect(result[getAgentDisplayName("sisyphus")]).toBeDefined()
expect(result[getAgentListDisplayName("sisyphus")]).toBeDefined()
expect(result["oracle"]).toBeDefined()
expect(result["sisyphus"]).toBeUndefined()
})
@@ -49,13 +49,13 @@ describe("remapAgentKeysToDisplayNames", () => {
const result = remapAgentKeysToDisplayNames(agents)
// then all get display name keys
expect(result[getAgentDisplayName("sisyphus")]).toBeDefined()
expect(result[getAgentListDisplayName("sisyphus")]).toBeDefined()
expect(result["sisyphus"]).toBeUndefined()
expect(result[getAgentDisplayName("hephaestus")]).toBeDefined()
expect(result[getAgentListDisplayName("hephaestus")]).toBeDefined()
expect(result["hephaestus"]).toBeUndefined()
expect(result[getAgentDisplayName("prometheus")]).toBeDefined()
expect(result[getAgentListDisplayName("prometheus")]).toBeDefined()
expect(result["prometheus"]).toBeUndefined()
expect(result[getAgentDisplayName("atlas")]).toBeDefined()
expect(result[getAgentListDisplayName("atlas")]).toBeDefined()
expect(result["atlas"]).toBeUndefined()
expect(result[getAgentDisplayName("athena")]).toBeDefined()
expect(result["athena"]).toBeUndefined()
@@ -77,12 +77,12 @@ describe("remapAgentKeysToDisplayNames", () => {
const result = remapAgentKeysToDisplayNames(agents)
// then only display key is emitted
expect(Object.keys(result)).toEqual([getAgentDisplayName("sisyphus")])
expect(result[getAgentDisplayName("sisyphus")]).toBeDefined()
expect(Object.keys(result)).toEqual([getAgentListDisplayName("sisyphus")])
expect(result[getAgentListDisplayName("sisyphus")]).toBeDefined()
expect(result["sisyphus"]).toBeUndefined()
})
it("returns clean core agent display names without ZWSP prefixes", () => {
it("returns runtime core agent list names in canonical order", () => {
// given
const result = remapAgentKeysToDisplayNames({
atlas: {},
@@ -96,17 +96,14 @@ describe("remapAgentKeysToDisplayNames", () => {
// then
expect(remappedNames).toEqual([
getAgentDisplayName("atlas"),
getAgentDisplayName("prometheus"),
getAgentDisplayName("hephaestus"),
getAgentDisplayName("sisyphus"),
getAgentListDisplayName("atlas"),
getAgentListDisplayName("prometheus"),
getAgentListDisplayName("hephaestus"),
getAgentListDisplayName("sisyphus"),
])
for (const name of remappedNames) {
expect(name).not.toContain("\u200B")
}
})
it("preserves clean keys but rewrites core agent name fields to runtime names for sort ordering", () => {
it("keeps remapped core agent name fields aligned with OpenCode list ordering", () => {
// given agents with raw config-key names
const agents = {
sisyphus: { name: "sisyphus", prompt: "test", mode: "primary" },
@@ -119,29 +116,29 @@ describe("remapAgentKeysToDisplayNames", () => {
// when remapping
const result = remapAgentKeysToDisplayNames(agents)
// then keys stay HTTP-header-safe, name fields carry ZWSP for OpenCode localeCompare sort
// then keys and names both use the same runtime-facing list names
expect(Object.keys(result).slice(0, 4)).toEqual([
getAgentDisplayName("sisyphus"),
getAgentDisplayName("hephaestus"),
getAgentDisplayName("prometheus"),
getAgentDisplayName("atlas"),
getAgentListDisplayName("sisyphus"),
getAgentListDisplayName("hephaestus"),
getAgentListDisplayName("prometheus"),
getAgentListDisplayName("atlas"),
])
expect(result[getAgentDisplayName("sisyphus")]).toEqual({
expect(result[getAgentListDisplayName("sisyphus")]).toEqual({
name: getAgentRuntimeName("sisyphus"),
prompt: "test",
mode: "primary",
})
expect(result[getAgentDisplayName("hephaestus")]).toEqual({
expect(result[getAgentListDisplayName("hephaestus")]).toEqual({
name: getAgentRuntimeName("hephaestus"),
prompt: "test",
mode: "primary",
})
expect(result[getAgentDisplayName("prometheus")]).toEqual({
expect(result[getAgentListDisplayName("prometheus")]).toEqual({
name: getAgentRuntimeName("prometheus"),
prompt: "test",
mode: "all",
})
expect(result[getAgentDisplayName("atlas")]).toEqual({
expect(result[getAgentListDisplayName("atlas")]).toEqual({
name: getAgentRuntimeName("atlas"),
prompt: "test",
mode: "primary",
@@ -161,23 +158,23 @@ describe("remapAgentKeysToDisplayNames", () => {
// when remapping
const result = remapAgentKeysToDisplayNames(agents)
// then OpenCode's name sort can still preserve canonical order
expect(result[getAgentDisplayName("sisyphus")]).toEqual({
// then runtime-facing names stay aligned even when builtin configs omit name
expect(result[getAgentListDisplayName("sisyphus")]).toEqual({
name: getAgentRuntimeName("sisyphus"),
prompt: "test",
mode: "primary",
})
expect(result[getAgentDisplayName("hephaestus")]).toEqual({
expect(result[getAgentListDisplayName("hephaestus")]).toEqual({
name: getAgentRuntimeName("hephaestus"),
prompt: "test",
mode: "primary",
})
expect(result[getAgentDisplayName("prometheus")]).toEqual({
expect(result[getAgentListDisplayName("prometheus")]).toEqual({
name: getAgentRuntimeName("prometheus"),
prompt: "test",
mode: "all",
})
expect(result[getAgentDisplayName("atlas")]).toEqual({
expect(result[getAgentListDisplayName("atlas")]).toEqual({
name: getAgentRuntimeName("atlas"),
prompt: "test",
mode: "primary",
+2 -2
View File
@@ -1,4 +1,4 @@
import { getAgentDisplayName, getAgentRuntimeName } from "../shared/agent-display-names"
import { getAgentListDisplayName, getAgentRuntimeName } from "../shared/agent-display-names"
function rewriteAgentNameForListDisplay(
key: string,
@@ -21,7 +21,7 @@ export function remapAgentKeysToDisplayNames(
const result: Record<string, unknown> = {}
for (const [key, value] of Object.entries(agents)) {
const displayName = getAgentDisplayName(key)
const displayName = getAgentListDisplayName(key)
if (displayName && displayName !== key) {
result[displayName] = rewriteAgentNameForListDisplay(key, value)
// Regression guard: do not also assign result[key].