import SelectInput from "../components/select-input/select-input.js"; import Spinner from "../components/vendor/ink-spinner.js"; import TextInput from "../components/vendor/ink-text-input.js"; import { Box, Text } from "ink"; import React, { useState } from "react"; export type Choice = { type: "signin" } | { type: "apikey"; key: string }; export function ApiKeyPrompt({ onDone, }: { onDone: (choice: Choice) => void; }): JSX.Element { const [step, setStep] = useState<"select" | "paste">("select"); const [apiKey, setApiKey] = useState(""); if (step === "select") { return ( Sign in with ChatGPT to generate an API key or paste one you already have. [use arrows to move, enter to select] { if (item.value === "signin") { onDone({ type: "signin" }); } else { setStep("paste"); } }} /> ); } return ( Paste your OpenAI API key and press <Enter>: { if (value.trim() !== "") { onDone({ type: "apikey", key: value.trim() }); } }} placeholder="sk-..." mask="*" /> ); } export function WaitingForAuth(): JSX.Element { return ( {" "} Waiting for authentication… Ctrl + C to quit ); }