import { createPiece } from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/pieces-framework';
import { grokAuth } from './lib/common/auth';
import { askGrok } from './lib/actions/ask-grok';
import { extractDataFromText } from './lib/actions/extract-data';
import { categorizeText } from './lib/actions/categorize-text';
import { generateImage } from './lib/actions/generate-image';
import { createCustomApiCallAction } from '@activepieces/pieces-common';
import { XAI_BASE_URL } from './lib/common/constants';

export const grokXai = createPiece({
  displayName: 'Grok by xAI',
  description: 'AI chatbot by xAI that answers questions, generates text, extracts data, and provides real-time insights.',
  auth: grokAuth,
  minimumSupportedRelease: '0.30.0',
  logoUrl: 'https://cdn.activepieces.com/pieces/grok-xai.png',
  categories: [
    PieceCategory.ARTIFICIAL_INTELLIGENCE],
  authors: ['sparkybug'],
  actions: [
    askGrok,
    extractDataFromText,
    categorizeText,
    generateImage,
    createCustomApiCallAction({
      auth: grokAuth,
      baseUrl: () => XAI_BASE_URL,
      authMapping: async (auth) => ({
        Authorization: `Bearer ${auth}`,
      }),
    }),
  ],
  triggers: [],
});