AUXteam's picture
Upload folder using huggingface_hub
d530f14 verified
export function getPrompts(config) {
const prompts = [];
if (!config.name) {
prompts.push({
type: 'input',
name: 'name',
message: 'Project name:',
default: 'my-open-lovable',
validate: (input) => {
if (!input || input.trim() === '') {
return 'Project name is required';
}
if (!/^[a-z0-9-_]+$/i.test(input)) {
return 'Project name can only contain letters, numbers, hyphens, and underscores';
}
return true;
}
});
}
if (!config.sandbox) {
prompts.push({
type: 'list',
name: 'sandbox',
message: 'Choose your sandbox provider:',
choices: [
{
name: 'E2B - Full-featured development sandboxes',
value: 'e2b',
short: 'E2B'
},
{
name: 'Vercel - Lightweight ephemeral VMs',
value: 'vercel',
short: 'Vercel'
}
],
default: 'e2b'
});
}
prompts.push({
type: 'confirm',
name: 'configureEnv',
message: 'Would you like to configure API keys now?',
default: true
});
return prompts;
}
export function getEnvPrompts(provider) {
const prompts = [];
// Always include Firecrawl API key
prompts.push({
type: 'input',
name: 'firecrawlApiKey',
message: 'Firecrawl API key (for web scraping):',
validate: (input) => {
if (!input || input.trim() === '') {
return 'Firecrawl API key is required for web scraping functionality';
}
return true;
}
});
if (provider === 'e2b') {
prompts.push({
type: 'input',
name: 'e2bApiKey',
message: 'E2B API key:',
validate: (input) => {
if (!input || input.trim() === '') {
return 'E2B API key is required';
}
return true;
}
});
} else if (provider === 'vercel') {
prompts.push({
type: 'list',
name: 'vercelAuthMethod',
message: 'Vercel authentication method:',
choices: [
{
name: 'OIDC Token (automatic in Vercel environment)',
value: 'oidc',
short: 'OIDC'
},
{
name: 'Personal Access Token',
value: 'pat',
short: 'PAT'
}
]
});
prompts.push({
type: 'input',
name: 'vercelTeamId',
message: 'Vercel Team ID:',
when: (answers) => answers.vercelAuthMethod === 'pat',
validate: (input) => {
if (!input || input.trim() === '') {
return 'Team ID is required for PAT authentication';
}
return true;
}
});
prompts.push({
type: 'input',
name: 'vercelProjectId',
message: 'Vercel Project ID:',
when: (answers) => answers.vercelAuthMethod === 'pat',
validate: (input) => {
if (!input || input.trim() === '') {
return 'Project ID is required for PAT authentication';
}
return true;
}
});
prompts.push({
type: 'input',
name: 'vercelToken',
message: 'Vercel Access Token:',
when: (answers) => answers.vercelAuthMethod === 'pat',
validate: (input) => {
if (!input || input.trim() === '') {
return 'Access token is required for PAT authentication';
}
return true;
}
});
}
// Optional AI provider keys
prompts.push({
type: 'confirm',
name: 'addAiKeys',
message: 'Would you like to add AI provider API keys?',
default: true
});
prompts.push({
type: 'checkbox',
name: 'aiProviders',
message: 'Select AI providers to configure:',
when: (answers) => answers.addAiKeys,
choices: [
{ name: 'Anthropic (Claude)', value: 'anthropic' },
{ name: 'OpenAI (GPT)', value: 'openai' },
{ name: 'Google (Gemini)', value: 'gemini' },
{ name: 'Groq', value: 'groq' }
]
});
prompts.push({
type: 'input',
name: 'anthropicApiKey',
message: 'Anthropic API key:',
when: (answers) => answers.aiProviders && answers.aiProviders.includes('anthropic')
});
prompts.push({
type: 'input',
name: 'openaiApiKey',
message: 'OpenAI API key:',
when: (answers) => answers.aiProviders && answers.aiProviders.includes('openai')
});
prompts.push({
type: 'input',
name: 'geminiApiKey',
message: 'Gemini API key:',
when: (answers) => answers.aiProviders && answers.aiProviders.includes('gemini')
});
prompts.push({
type: 'input',
name: 'groqApiKey',
message: 'Groq API key:',
when: (answers) => answers.aiProviders && answers.aiProviders.includes('groq')
});
return prompts;
}