Files
oh-my-openagent/src/shared/tmux/tmux-utils/environment.ts
Kenny 64a87a78d6 feat: integrate cmux-aware runtime with resilient notifications
Resolve tmux/cmux capability at startup so pane control remains tmux-driven while notifications prefer cmux and gracefully fall back to desktop notifications.
2026-03-29 13:56:31 +08:00

38 lines
1.1 KiB
TypeScript

import type { ResolvedMultiplexer } from "./multiplexer-runtime"
import { getResolvedMultiplexerRuntime } from "./multiplexer-runtime"
export type SplitDirection = "-h" | "-v"
function resolveRuntime(runtime: ResolvedMultiplexer | undefined): ResolvedMultiplexer | null {
return runtime ?? getResolvedMultiplexerRuntime()
}
export function isInsideTmuxEnvironment(environment: Record<string, string | undefined>): boolean {
return Boolean(environment.TMUX)
}
export function isInsideTmux(runtime?: ResolvedMultiplexer): boolean {
const resolvedRuntime = resolveRuntime(runtime)
if (resolvedRuntime) {
return resolvedRuntime.paneBackend === "tmux"
}
return isInsideTmuxEnvironment(process.env)
}
export function getCurrentPaneId(runtime?: ResolvedMultiplexer): string | undefined {
const resolvedRuntime = resolveRuntime(runtime)
if (resolvedRuntime) {
if (resolvedRuntime.paneBackend !== "tmux") {
return undefined
}
return resolvedRuntime.tmux.paneId
}
return process.env.TMUX_PANE
}
export function isTmuxPaneControlAvailable(runtime?: ResolvedMultiplexer): boolean {
return isInsideTmux(runtime)
}