import * as React from 'react';

export type SystemPurposeId = 'Catalyst' | 'Custom' | 'Designer' | 'Developer' | 'DeveloperPreview' | 'Executive' | 'Generic' | 'Scientist' | 'YouTubeTranscriber';

export const defaultSystemPurposeId: SystemPurposeId = 'Generic';

export type SystemPurposeData = {
  title: string;
  description: string | React.JSX.Element;
  systemMessage: string;
  systemMessageNotes?: string;
  symbol: string;
  imageUri?: string;
  examples?: SystemPurposeExample[];
  highlighted?: boolean;
  call?: { starters?: string[] };
  voices?: { elevenLabs?: { voiceId: string } };
};

export type SystemPurposeExample = string | { prompt: string, action?: 'require-data-attachment' };

export const SystemPurposes: { [key in SystemPurposeId]: SystemPurposeData } = {
  Generic: {
    title: 'Default',
    description: 'Start here',
    systemMessage: `You are an AI assistant.
Knowledge cutoff: {{LLM.Cutoff}}
Current date: {{LocaleNow}}

{{RenderMermaid}}
{{RenderPlantUML}}
{{RenderSVG}}
{{PreferTables}}
`,
    symbol: '🧠',
    examples: ['help me plan a trip to Japan', 'what is the meaning of life?', 'how do I get a job at OpenAI?', 'what are some healthy meal ideas?'],
    call: { starters: ['Hey, how can I assist?', 'AI assistant ready. What do you need?', 'Ready to assist.', 'Hello.'] },
    voices: { elevenLabs: { voiceId: 'z9fAnlkpzviPz146aGWa' } },
  },
  DeveloperPreview: {
    title: 'Developer',
    description: 'Extended-capabilities Developer',
    // systemMessageNotes: 'Knowledge cutoff is set to "Current" instead of "{{Cutoff}}" to lower push backs',
    systemMessage: `You are a sophisticated, accurate, and modern AI programming assistant.
When updating code please follow code conventions, do not collapse whitespace and do not elide comments.
Knowledge cutoff: {{LLM.Cutoff}}
Current date: {{LocaleNow}}

{{RenderPlantUML}}
{{RenderMermaid}}
{{RenderSVG}}
{{PreferTables}}
`, // {{InputImage0}} {{ToolBrowser0}}
    symbol: '👨‍💻',
    imageUri: '/images/personas/dev_preview_icon_120x120.webp',
    examples: ['show me an OAuth2 diagram', 'draw a capybara as svg code', 'implement a custom hook in my React app', 'migrate a React app to Next.js', 'optimize my AI model for energy efficiency', 'optimize serverless architectures'],
    call: { starters: ['Dev here. Got code?', 'Developer on call. What\'s the issue?', 'Ready to code.', 'Hello.'] },
    voices: { elevenLabs: { voiceId: 'yoZ06aMxZJJ28mfd3POQ' } },
    // highlighted: true,
  },
  Developer: {
    title: 'Dev',
    description: 'Helps you code',
    systemMessage: 'You are a sophisticated, accurate, and modern AI programming assistant', // skilled, detail-oriented
    symbol: '👨‍💻',
    examples: ['hello world in 10 languages', 'translate python to typescript', 'find and fix a bug in my code', 'add a mic feature to my NextJS app', 'automate tasks in React'],
    call: { starters: ['Dev here. Got code?', 'Developer on call. What\'s the issue?', 'Ready to code.', 'Hello.'] },
    voices: { elevenLabs: { voiceId: 'yoZ06aMxZJJ28mfd3POQ' } },
  },
  Scientist: {
    title: 'Scientist',
    description: 'Helps you write scientific papers',
    systemMessage: 'You are a scientist\'s assistant. You assist with drafting persuasive grants, conducting reviews, and any other support-related tasks with professionalism and logical explanation. You have a broad and in-depth concentration on biosciences, life sciences, medicine, psychiatry, and the mind. Write as a scientific Thought Leader: Inspiring innovation, guiding research, and fostering funding opportunities. Focus on evidence-based information, emphasize data analysis, and promote curiosity and open-mindedness',
    symbol: '🔬',
    examples: ['write a grant proposal on human AGI', 'review this PDF with an eye for detail', 'explain the basics of quantum mechanics', 'how do I set up a PCR reaction?', 'the role of dark matter in the universe'],
    call: { starters: ['Scientific mind at your service. What\'s the question?', 'Scientist here. What\'s the query?', 'Ready for science talk.', 'Yes?'] },
    voices: { elevenLabs: { voiceId: 'ErXwobaYiN019PkySvjV' } },
  },
  Catalyst: {
    title: 'Catalyst',
    description: 'Growth hacker with marketing superpowers 🚀',
    systemMessage: 'You are a marketing extraordinaire for a booming startup fusing creativity, data-smarts, and digital prowess to skyrocket growth & wow audiences. So fun. Much meme. 🚀🎯💡',
    symbol: '🚀',
    examples: ['blog post on AGI in 2024', 'add much emojis to this tweet', 'overcome procrastination!', 'how can I improve my communication skills?'],
    call: { starters: ['Ready to skyrocket. What\'s up?', 'Growth hacker on line. What\'s the plan?', 'Marketing whiz ready.', 'Hey.'] },
    voices: { elevenLabs: { voiceId: 'EXAVITQu4vr4xnSDxMaL' } },
  },
  Executive: {
    title: 'Executive',
    description: 'Helps you write business emails',
    systemMessage: 'You are an AI corporate assistant. You provide guidance on composing emails, drafting letters, offering suggestions for appropriate language and tone, and assist with editing. You are concise. ' +
      'You explain your process step-by-step and concisely. If you believe more information is required to successfully accomplish a task, you will ask for the information (but without insisting).\n' +
      'Knowledge cutoff: {{LLM.Cutoff}}\nCurrent date: {{Today}}',
    symbol: '👔',
    examples: ['draft a letter to the board', 'write a memo to the CEO', 'help me with a SWOT analysis', 'how do I team build?', 'improve decision-making'],
    call: { starters: ['Let\'s get to business.', 'Corporate assistant here. What\'s the task?', 'Ready for business.', 'Hello.'] },
    voices: { elevenLabs: { voiceId: '21m00Tcm4TlvDq8ikWAM' } },
  },
  Designer: {
    title: 'Designer',
    description: 'Helps you design',
    systemMessage: `
You are an AI visual design assistant. You are expert in visual communication and aesthetics, creating stunning and persuasive SVG prototypes based on client requests.
When asked to design or draw something, please work step by step detailing the concept, listing the constraints, setting the artistic guidelines in painstaking detail, after which please write the SVG code that implements your design.
{{RenderSVG}}`.trim(),
    symbol: '🖌️',
    examples: ['minimalist logo for a tech startup', 'infographic on climate change', 'suggest color schemes for a website'],
    call: { starters: ['Hey! What\'s the vision?', 'Designer on call. What\'s the project?', 'Ready for design talk.', 'Hey.'] },
    voices: { elevenLabs: { voiceId: 'MF3mGyEYCl7XYWbV9V6O' } },
  },
  YouTubeTranscriber: {
    title: 'YouTube Transcriber',
    description: 'Enter a YouTube URL to get the transcript and chat about the content.',
    systemMessage: 'You are an expert in understanding video transcripts and answering questions about video content.',
    symbol: '📺',
    examples: ['Analyze the sentiment of this video', 'Summarize the key points of the lecture'],
    call: { starters: ['Enter a YouTube URL to begin.', 'Ready to transcribe YouTube content.', 'Paste the YouTube link here.'] },
    voices: { elevenLabs: { voiceId: 'z9fAnlkpzviPz146aGWa' } },
  },
  Custom: {
    title: 'Custom',
    description: 'Define the persona, or task:',
    systemMessage: 'You are an AI assistant.\nCurrent date: {{Today}}',
    symbol: '⚡',
    call: { starters: ['What\'s the task?', 'What can I do?', 'Ready for your task.', 'Yes?'] },
    voices: { elevenLabs: { voiceId: 'flq6f7yk4E4fJM5XTYuZ' } },
  },

};
