feat: port CLI, TUI, and launcher from v1.5 into v2 (#1452)

Ports the CLI, TUI, and launcher from v1.5 into v2 behind a single
`mcp-inspector` entrypoint (launcher → web/cli/tui). Includes the
`mcp-inspector --web --dev` launcher fix (Vite alias resolution + prod-server
double-start), the root `postinstall` install cascade with simplified CI, and
spec/AGENTS docs (no-workspaces rationale, Development setup).

Closes #1246.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Bob Dickinson 2026-06-14 17:27:49 -07:00 • committed by GitHub
commit 2488ca5e38
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

30
clients/tui/src/logger.ts Normal file
View file

@ -0,0 +1,30 @@
import path from "node:path";
import pino from "pino";
import type { Logger } from "pino";
let tuiLoggerInstance: Logger | undefined;
/**
* TUI file logger for auth and InspectorClient events.
* Writes to ~/.mcp-inspector/auth.log so TUI console output is not corrupted.
* Lazy-initialized so --help and other early exits never open the log stream.
*/
export function getTuiLogger(): Logger {
if (!tuiLoggerInstance) {
const logDir =
process.env.MCP_INSPECTOR_LOG_DIR ??
path.join(
process.env.HOME || process.env.USERPROFILE || ".",
".mcp-inspector",
);
const logPath = path.join(logDir, "auth.log");
tuiLoggerInstance = pino(
{
name: "mcp-inspector-tui",
level: process.env.LOG_LEVEL ?? "info",
},
pino.destination({ dest: logPath, append: true, mkdir: true }),
);
}
return tuiLoggerInstance;
}