import { describe, expect, it } from "vitest"; import type { AgentRuntimeStatus, AgentRuntimeState } from "../../lib/commands"; import { getAgentRuntimePresentation } from "./SettingsPage"; const layer = (state: AgentRuntimeState, detail = state) => ({ state, detail }); function status(overrides: Partial = {}): AgentRuntimeStatus { return { project_id: "p1", ready: true, configured: layer("ready"), reachable: layer("ready"), handshake: layer("ready"), tools_ready: layer("ready"), reload_required: { ...layer("ready"), required: false }, ...overrides, }; } describe("getAgentRuntimePresentation", () => { it.each([ [status({ configured: layer("missing") }), "未配置", "注入 MCP"], [status({ reachable: layer("unavailable") }), "炼境未运行", "托盘运行"], [status({ handshake: layer("protocol_error") }), "协议或工具异常", "重启或升级"], [status({ reload_required: { ...layer("missing"), required: true } }), "需重载 Codex", "新建 Codex 任务"], [status(), "Agent 已就绪", "无需操作"], ])("为每种阻塞状态给出唯一行动", (runtime, label, action) => { const view = getAgentRuntimePresentation(runtime); expect(view.label).toBe(label); expect(view.action).toContain(action); }); });