{"version":3,"names":["env","process","termProgram","TERM_PROGRAM","termVar","TERM","SYNC_TERM_PROGRAMS","Set","TRUECOLOR_TERM_PROGRAMS","HYPERLINK_TERM_PROGRAMS","KITTY_KEYBOARD_TERM_PROGRAMS","KITTY_TERM_VARS","getVteVersion","raw","VTE_VERSION","v","Number","parseInt","isNaN","isKittyEnv","KITTY_WINDOW_ID","detectTerminal","WT_SESSION","ZED_TERM","detectSyncOutput","TMUX","has","detectTrueColor","COLORTERM","detectKittyKeyboard","detectHyperlinks","detectMouse","stdout","isTTY","terminalCaps","terminal","syncOutput","trueColor","kittyKeyboard","hyperlinks","mouse"],"sources":["terminal-caps.ts"],"sourcesContent":["/**\n * Terminal capability detection via environment variables.\n *\n * Computed once at import time — terminal capabilities don't change mid-session.\n * No async queries (DECRQM, DA) needed; env vars cover the common terminals.\n */\n\nconst env = process.env;\nconst termProgram = env.TERM_PROGRAM ?? \"\";\nconst termVar = env.TERM ?? \"\";\n\n/** Detected terminal capabilities. */\nexport interface TerminalCaps {\n\t/** OSC 8 hyperlinks supported */\n\thyperlinks: boolean;\n\t/** Kitty keyboard protocol (CSI u) supported */\n\tkittyKeyboard: boolean;\n\t/** SGR mouse reporting supported */\n\tmouse: boolean;\n\t/** Synchronized output (DEC 2026) supported */\n\tsyncOutput: boolean;\n\t/** Terminal name (best guess) */\n\tterminal: string;\n\t/** 24-bit true color supported */\n\ttrueColor: boolean;\n}\n\n// --- Shared terminal sets ---\n\nconst SYNC_TERM_PROGRAMS = new Set([\n\t\"iTerm.app\",\n\t\"WezTerm\",\n\t\"WarpTerminal\",\n\t\"ghostty\",\n\t\"contour\",\n\t\"vscode\",\n\t\"alacritty\",\n\t\"zed\",\n]);\n\nconst TRUECOLOR_TERM_PROGRAMS = new Set([\n\t\"iTerm.app\",\n\t\"WezTerm\",\n\t\"WarpTerminal\",\n\t\"ghostty\",\n\t\"vscode\",\n\t\"alacritty\",\n\t\"Hyper\",\n\t\"zed\",\n]);\n\nconst HYPERLINK_TERM_PROGRAMS = new Set([\n\t\"iTerm.app\",\n\t\"WezTerm\",\n\t\"ghostty\",\n\t\"alacritty\",\n\t\"Hyper\",\n\t\"vscode\",\n\t\"zed\",\n]);\n\nconst KITTY_KEYBOARD_TERM_PROGRAMS = new Set([\n\t\"iTerm.app\",\n\t\"WezTerm\",\n\t\"ghostty\",\n\t\"zed\",\n]);\n\nconst KITTY_TERM_VARS = new Set([\n\t\"kitty\",\n\t\"xterm-ghostty\",\n\t\"foot\",\n\t\"alacritty\",\n]);\n\nfunction getVteVersion(): number {\n\tconst raw = env.VTE_VERSION;\n\tif (!raw) return 0;\n\tconst v = Number.parseInt(raw, 10);\n\treturn Number.isNaN(v) ? 0 : v;\n}\n\nfunction isKittyEnv(): boolean {\n\treturn !!env.KITTY_WINDOW_ID;\n}\n\n// --- Detectors ---\n\nfunction detectTerminal(): string {\n\tif (env.TERM_PROGRAM) return env.TERM_PROGRAM;\n\tif (env.KITTY_WINDOW_ID) return \"kitty\";\n\tif (env.WT_SESSION) return \"windows-terminal\";\n\tif (env.ZED_TERM) return \"zed\";\n\tif (env.TERM) return env.TERM;\n\treturn \"unknown\";\n}\n\nfunction detectSyncOutput(): boolean {\n\tif (env.TMUX) return false;\n\tif (SYNC_TERM_PROGRAMS.has(termProgram)) return true;\n\tif (KITTY_TERM_VARS.has(termVar)) return true;\n\tif (isKittyEnv()) return true;\n\tif (env.ZED_TERM) return true;\n\tif (env.WT_SESSION) return true;\n\tif (getVteVersion() >= 6800) return true;\n\treturn false;\n}\n\nfunction detectTrueColor(): boolean {\n\tif (env.COLORTERM === \"truecolor\" || env.COLORTERM === \"24bit\") return true;\n\tif (TRUECOLOR_TERM_PROGRAMS.has(termProgram)) return true;\n\tif (KITTY_TERM_VARS.has(termVar)) return true;\n\tif (isKittyEnv()) return true;\n\tif (env.WT_SESSION) return true;\n\treturn false;\n}\n\nfunction detectKittyKeyboard(): boolean {\n\tif (KITTY_KEYBOARD_TERM_PROGRAMS.has(termProgram)) return true;\n\tif (KITTY_TERM_VARS.has(termVar)) return true;\n\tif (isKittyEnv()) return true;\n\tif (env.TMUX) return true;\n\treturn false;\n}\n\nfunction detectHyperlinks(): boolean {\n\tif (env.TMUX) return false;\n\tif (HYPERLINK_TERM_PROGRAMS.has(termProgram)) return true;\n\tif (KITTY_TERM_VARS.has(termVar)) return true;\n\tif (isKittyEnv()) return true;\n\tif (env.WT_SESSION) return true;\n\tif (getVteVersion() >= 5000) return true;\n\treturn false;\n}\n\nfunction detectMouse(): boolean {\n\treturn process.stdout.isTTY === true;\n}\n\n/** Cached terminal capabilities — computed once at import time. */\nexport const terminalCaps: TerminalCaps = {\n\tterminal: detectTerminal(),\n\tsyncOutput: detectSyncOutput(),\n\ttrueColor: detectTrueColor(),\n\tkittyKeyboard: detectKittyKeyboard(),\n\thyperlinks: detectHyperlinks(),\n\tmouse: detectMouse(),\n};\n"],"mappings":"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","ignoreList":[]}