Sachverhalt: A. Die 1973 geborene S._ war ab September 1990 bei der Firma G._ AG tätig. Ab August 2000 wurde ihr von ärztlicher Seite eine volle Arbeitsunfähigkeit bescheinigt. Die Arbeitgeberin kündigte das Anstellungsverhältnis auf den 31. August 2001. Im September 2001 meldete sich S._ unter Hinweis auf diesen Sachverhalt bei der Invalidenversicherung zum Rentenbezug an. Die IV-Stelle des Kantons St. Gallen holte u.a. ein polydisziplinäres medizinisches Gutachten vom 13. September 2002 ein. Sie veranlasste sodann eine berufliche Abklärung (vom 2. Dezember 2002 bis 28. Februar 2003) bei der Stiftung A._ welche darüber am 3./13. März 2003 Bericht erstattete. Seit 1. März 2003 ist S._ bei der Stiftung A._ teilzeitlich im Bereich leichter Industriearbeiten tätig. Mit Verfügungen vom 18. Juni 2003 sprach ihr die IV-Stelle rückwirkend ab 1. Juni 2001 bei einem Invaliditätsgrad von 78 % eine ganze Invalidenrente zu. Im Rahmen eines im Mai 2008 eingeleiteten Revisionsverfahrens liess die IV-Stelle, nebst weiteren Abklärungen, die Versicherte durch einen RAD-Psychiater untersuchen. Dieser erstattete am 9. Juni 2009 Bericht. Mit Verfügung vom 21. Oktober 2010 setzte die IV-Stelle mit der Begründung, der Invaliditätsgrad betrage nur noch 50 %, die ganze Rente ab 1. Dezember 2010 revisionsweise auf eine halbe Rente herab. B. S._ reichte hiegegen Beschwerde ein. Das Versicherungsgericht des Kantons St. Gallen gewährte ihr die unentgeltliche Rechtspflege. Mit Entscheid vom 22. August 2012 hiess es die Beschwerde teilweise gut, hob die Verfügung vom 21. Oktober 2010 mit der Feststellung, es bestehe weiterhin Anspruch auf eine ganze Invalidenrente, auf, und wies die Sache zur Durchführung beruflicher Massnahmen an die Verwaltung zurück. C. Die IV-Stelle erhebt Beschwerde in öffentlich-rechtlichen Angelegenheiten mit dem Rechtsbegehren, es sei der vorinstanzliche Entscheid aufzuheben und die Verfügung vom 21. Oktober 2010 zu bestätigen. Weiter wird darum ersucht, der Beschwerde die aufschiebende Wirkung zuzuerkennen. S._ lässt auf Abweisung der Beschwerde schliessen und um Gewährung der unentgeltlichen Rechtspflege für das letztinstanzliche Verfahren ersuchen. Das Bundesamt für Sozialversicherungen verzichtet auf eine Vernehmlassung. D. Mit Verfügung vom 9. Januar 2013 hat das Bundesgericht der Beschwerde die aufschiebende Wirkung zuerkannt. 