import { memo } from "react" import { Text, Box } from "ink" import type { TokenUsage } from "@roo-code/types" import { ASCII_ROO } from "@/types/constants.js" import { ExtensionHostOptions } from "@/agent/index.js" import { useTerminalSize } from "../hooks/TerminalSizeContext.js" import * as theme from "../theme.js" import MetricsDisplay from "./MetricsDisplay.js" interface HeaderProps extends ExtensionHostOptions { version: string tokenUsage?: TokenUsage | null contextWindow?: number } function Header({ workspacePath, user, provider, model, mode, reasoningEffort, nonInteractive, version, tokenUsage, contextWindow, }: HeaderProps) { const { columns } = useTerminalSize() const homeDir = process.env.HOME || process.env.USERPROFILE || "" const title = `Roo Code CLI v${version}` const remainingDashes = Math.max(0, columns - `── ${title} `.length) return ( ── {title} {"─".repeat(remainingDashes)} {ASCII_ROO} {user && Welcome back, {user.name}} cwd:{" "} {workspacePath.startsWith(homeDir) ? workspacePath.replace(homeDir, "~") : workspacePath} {provider}: {model} [{reasoningEffort}] mode: {mode} {nonInteractive && " (YOLO)"} {tokenUsage && contextWindow && contextWindow > 0 && ( )} {"─".repeat(columns)} ) } export default memo(Header)