import { TmuxStatusSourceAdapter } from '../adapters/output/sources/TmuxStatusSourceAdapter'; import { type RuntimeProcessTableRow, type TmuxPaneRuntimeInfo, TmuxPlatformCommandExecutor, } from '../infrastructure/runtime/TmuxPlatformCommandExecutor'; const runtimeStatusSource = new TmuxStatusSourceAdapter(); const runtimeCommandExecutor = new TmuxPlatformCommandExecutor(); export async function isTmuxRuntimeReadyForCurrentPlatform(): Promise { const status = await runtimeStatusSource.getStatus(); return status.effective.available && status.effective.runtimeReady; } export function invalidateTmuxRuntimeStatusCache(): void { runtimeStatusSource.invalidateStatus(); } export async function killTmuxPaneForCurrentPlatform(paneId: string): Promise { await runtimeCommandExecutor.killPane(paneId); invalidateTmuxRuntimeStatusCache(); } export async function listTmuxPanePidsForCurrentPlatform( paneIds: readonly string[] ): Promise> { return runtimeCommandExecutor.listPanePids(paneIds); } export async function listTmuxPaneRuntimeInfoForCurrentPlatform( paneIds: readonly string[] ): Promise> { return runtimeCommandExecutor.listPaneRuntimeInfo(paneIds); } export async function listRuntimeProcessTableForCurrentPlatform(): Promise< RuntimeProcessTableRow[] > { return runtimeCommandExecutor.listRuntimeProcesses(); } export async function sendKeysToTmuxPaneForCurrentPlatform( paneId: string, command: string ): Promise { await runtimeCommandExecutor.sendKeysToPane(paneId, command); } export function killTmuxPaneForCurrentPlatformSync(paneId: string): void { runtimeCommandExecutor.killPaneSync(paneId); invalidateTmuxRuntimeStatusCache(); }