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

View file

@ -0,0 +1,42 @@
import { describe, it, expect } from "vitest";
import { expectCliSuccess, expectCliFailure } from "./assertions.js";
import type { CliResult } from "./cli-runner.js";
function assertionMessage(fn: () => void): string {
try {
fn();
return "";
} catch (error) {
return error instanceof Error ? error.message : String(error);
}
}
describe("CLI assertion helpers", () => {
it("expectCliSuccess includes stdout and stderr on failure", () => {
const result: CliResult = {
exitCode: 1,
stdout: "tool output",
stderr: "connect error",
output: "tool outputconnect error",
};
const message = assertionMessage(() => expectCliSuccess(result));
expect(message).toContain("CLI exited with code 1");
expect(message).toContain("stdout: tool output");
expect(message).toContain("stderr: connect error");
});
it("expectCliFailure includes stdout and stderr on unexpected success", () => {
const result: CliResult = {
exitCode: 0,
stdout: "ok",
stderr: "",
output: "ok",
};
const message = assertionMessage(() => expectCliFailure(result));
expect(message).toContain("CLI unexpectedly exited with code 0");
expect(message).toContain("stdout: ok");
expect(message).toContain("stderr: (empty)");
});
});