import { describe, expect, it } from "vitest"; import { withOpenClawTestState } from "../../test-utils/openclaw-test-state.js"; import { createRuntimeAgent } from "./runtime-agent.js"; describe("plugin runtime session creation colors", () => { it.each([ { color: " Blue ", expectedColor: "blue" }, { color: "invalid", expectedColor: undefined }, { color: undefined, expectedColor: undefined }, ])( "creates a plugin-owned CLI fork with canonical color $color", async ({ color, expectedColor }) => { await withOpenClawTestState({ label: "plugin-runtime-cli-session-create" }, async () => { const runtime = createRuntimeAgent(); const key = "agent:main:catalog-adopt:claude:source"; const created = await runtime.session.createSessionEntry({ cfg: {}, key, label: "Renamed CLI session", execNode: "node-a", execCwd: "/work/on-node", initialEntry: { cliBackendId: "claude-cli", color, model: "claude-opus-4-8", modelSelectionLocked: true, pluginOwnerId: "anthropic", cliSessionBinding: { sessionId: "claude-source", forceReuse: true, forkNextResume: true, }, }, afterCreate: async ({ entry }) => { expect(entry.initializationPending).toBe(true); expect(entry.color).toBe(expectedColor); }, }); expect(created.entry.color).toBe(expectedColor); expect( runtime.session.getSessionEntry({ sessionKey: key, readConsistency: "latest" }), ).toEqual(created.entry); expect(created.entry).toMatchObject({ label: "Renamed CLI session", createdVia: "plugin", createdActor: { type: "system", id: "anthropic" }, createdAt: expect.any(Number), pluginOwnerId: "anthropic", providerOverride: "claude-cli", modelOverride: "claude-opus-4-8", modelOverrideRouteResolution: "resolved", modelSelectionLocked: true, execHost: "node", execNode: "node-a", execCwd: "/work/on-node", cliSessionBindings: { "claude-cli": { sessionId: "claude-source", forceReuse: true, forkNextResume: true, }, }, }); }); }, ); });