diff --git a/src/create-runtime-tmux-config.test.ts b/src/create-runtime-tmux-config.test.ts new file mode 100644 index 000000000..efc03fa4a --- /dev/null +++ b/src/create-runtime-tmux-config.test.ts @@ -0,0 +1,17 @@ +/// + +import { describe, expect, test } from "bun:test" + +import { TmuxConfigSchema } from "./config/schema/tmux" +import { createRuntimeTmuxConfig } from "./create-runtime-tmux-config" + +describe("createRuntimeTmuxConfig", () => { + describe("#given tmux isolation is omitted from plugin config", () => { + test("#when runtime tmux config is created #then it matches the schema default", () => { + const runtimeTmuxConfig = createRuntimeTmuxConfig({}) + const schemaDefault = TmuxConfigSchema.parse({}).isolation + + expect(runtimeTmuxConfig.isolation).toBe(schemaDefault) + }) + }) +}) diff --git a/src/create-runtime-tmux-config.ts b/src/create-runtime-tmux-config.ts new file mode 100644 index 000000000..83bc25c83 --- /dev/null +++ b/src/create-runtime-tmux-config.ts @@ -0,0 +1,6 @@ +import type { OhMyOpenCodeConfig, TmuxConfig } from "./config" +import { TmuxConfigSchema } from "./config/schema/tmux" + +export function createRuntimeTmuxConfig(pluginConfig: { tmux?: OhMyOpenCodeConfig["tmux"] }): TmuxConfig { + return TmuxConfigSchema.parse(pluginConfig.tmux ?? {}) +} diff --git a/src/index.ts b/src/index.ts index 5dd44ec04..1e10b1d5a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,6 +5,7 @@ import type { HookName } from "./config" import { createHooks } from "./create-hooks" import { createManagers } from "./create-managers" +import { createRuntimeTmuxConfig } from "./create-runtime-tmux-config" import { createTools } from "./create-tools" import { createPluginInterface } from "./plugin-interface" import { createPluginDispose, type PluginDispose } from "./plugin-dispose" @@ -45,14 +46,7 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => { const firstMessageVariantGate = createFirstMessageVariantGate() - const tmuxConfig = { - enabled: pluginConfig.tmux?.enabled ?? false, - layout: pluginConfig.tmux?.layout ?? "main-vertical", - main_pane_size: pluginConfig.tmux?.main_pane_size ?? 60, - main_pane_min_width: pluginConfig.tmux?.main_pane_min_width ?? 120, - agent_pane_min_width: pluginConfig.tmux?.agent_pane_min_width ?? 40, - isolation: pluginConfig.tmux?.isolation ?? "inline", - } + const tmuxConfig = createRuntimeTmuxConfig(pluginConfig) const modelCacheState = createModelCacheState()