import { isValidKey, validKeyErrorMessage } from "../helpers.js"; import { RUN_OPTION_QUESTION } from "./sharedQuestions.js"; import fetch from "node-fetch"; export const newEnvQuestions = [ RUN_OPTION_QUESTION, { type: "input", name: "OpenAIApiKey", message: "Enter your openai key (eg: sk...) or press enter to continue with no key:", validate: async(apikey) => { if(apikey === "") return true; if(!isValidKey(apikey, /^sk-[a-zA-Z0-9]{48}$/)) { return validKeyErrorMessage } const endpoint = "https://api.openai.com/v1/models" const response = await fetch(endpoint, { headers: { "Authorization": `Bearer ${apikey}`, }, }); if(!response.ok) { return validKeyErrorMessage } return true }, }, { type: "input", name: "serpApiKey", message: "What is your SERP API key (https://serper.dev/)? Leave empty to disable web search.", validate: async(apikey) => { if(apikey === "") return true; if(!isValidKey(apikey, /^[a-zA-Z0-9]{40}$/)) { return validKeyErrorMessage } const endpoint = "https://google.serper.dev/search" const response = await fetch(endpoint, { method: 'POST', headers: { "X-API-KEY": apikey, "Content-Type": "application/json", }, body: JSON.stringify({ "q": "apple inc" }), }); if(!response.ok) { return validKeyErrorMessage } return true }, }, { type: "input", name: "replicateApiKey", message: "What is your Replicate API key (https://replicate.com/)? Leave empty to just use DALL-E for image generation.", validate: async(apikey) => { if(apikey === "") return true; if(!isValidKey(apikey, /^r8_[a-zA-Z0-9]{37}$/)) { return validKeyErrorMessage } const endpoint = "https://api.replicate.com/v1/models/replicate/hello-world" const response = await fetch(endpoint, { headers: { "Authorization": `Token ${apikey}`, }, }); if(!response.ok) { return validKeyErrorMessage } return true }, }, ];