This seems to work in Photoshop CC.
function levelsAdjustmentDialog(){ var desc = new ActionDescriptor(); var ref = new ActionReference(); ref.putClass( charIDToTypeID('AdjL') ); desc.putReference( charIDToTypeID('null'), ref ); var desc3 = new ActionDescriptor(); var desc4 = new ActionDescriptor(); desc4.putEnumerated( stringIDToTypeID('presetKind'), stringIDToTypeID('presetKindType'), stringIDToTypeID('presetKindDefault') ); desc3.putObject( charIDToTypeID('Type'), charIDToTypeID('Lvls'), desc4 ); desc.putObject( charIDToTypeID('Usng'), charIDToTypeID('AdjL'), desc3 ); executeAction( charIDToTypeID('Mk '), desc, DialogModes.NO ); var desc = new ActionDescriptor(); var ref = new ActionReference(); ref.putEnumerated( charIDToTypeID( "AdjL" ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Trgt" ) ); desc.putReference( charIDToTypeID( "null" ), ref ); desc.putObject( charIDToTypeID( "T " ), charIDToTypeID( "Lvls" ), new ActionDescriptor() ); return user_levels = executeAction( charIDToTypeID( "setd" ), desc, DialogModes.ALL );
};
function makeLevelsAdjustmentLayer( userDesc ) { var desc = new ActionDescriptor(); var ref = new ActionReference(); ref.putClass( charIDToTypeID('AdjL') ); desc.putReference( charIDToTypeID('null'), ref ); var desc3 = new ActionDescriptor(); var desc4 = new ActionDescriptor(); desc4.putEnumerated( stringIDToTypeID('presetKind'), stringIDToTypeID('presetKindType'), stringIDToTypeID('presetKindDefault') ); desc3.putObject( charIDToTypeID('Type'), charIDToTypeID('Lvls'), desc4 ); desc.putObject( charIDToTypeID('Usng'), charIDToTypeID('AdjL'), desc3 ); executeAction( charIDToTypeID('Mk '), desc, DialogModes.NO ); if(userDesc!=undefined){ executeAction( charIDToTypeID( "setd" ), userDesc, DialogModes.NO ); }
};
var desc = levelsAdjustmentDialog();
makeLevelsAdjustmentLayer( desc );