proto_cli 0.60.0

A multi-language version manager, a unified toolchain.
mod mcp {
    use proto_core::test_utils::*;

    #[test]
    fn stdout_only_carries_jsonrpc_in_agent_environments() {
        let sandbox = create_empty_proto_sandbox();

        let assert = sandbox.run_bin(|cmd| {
            cmd.arg("mcp")
                .env("CODEX_CI", "1")
                .env_remove("PROTO_REPORTER")
                .write_stdin(
                    r#"{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0.0.0"}}}"#
                        .to_owned()
                        + "\n",
                );
        });
        let stdout = assert.stdout();

        assert!(stdout.contains("\"jsonrpc\":\"2.0\""));

        for line in stdout.lines().filter(|line| !line.trim().is_empty()) {
            let record: serde_json::Value = serde_json::from_str(line).unwrap_or_else(|error| {
                panic!("stdout line is not valid JSON-RPC: {line}: {error}")
            });

            assert_eq!(
                record.get("jsonrpc").and_then(|value| value.as_str()),
                Some("2.0"),
                "stdout line is not a JSON-RPC record: {line}",
            );
        }

        assert.success();
    }
}