UNPKG

giga-code

Version:

A personal AI CLI assistant powered by Grok for local development.

149 lines 8.4 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useRouteSelection = exports.RouteSelection = void 0; const react_1 = __importStar(require("react")); const ink_1 = require("ink"); const openrouter_providers_1 = require("../../utils/openrouter-providers"); const added_models_1 = require("../../utils/added-models"); const api_keys_1 = require("../../utils/api-keys"); function RouteSelection({ models, selectedModelIndex, selectedProviderIndex, isVisible, currentModel, viewMode, currentSelectedModel, providers, isLoadingProviders, onModelSelect, onProviderSelect, onBack, }) { if (!isVisible) return null; if (viewMode === 'models') { return (react_1.default.createElement(ink_1.Box, { marginTop: 1, flexDirection: "column" }, react_1.default.createElement(ink_1.Box, { marginBottom: 1 }, react_1.default.createElement(ink_1.Text, { color: "cyan" }, "Select Model to Configure Provider (current: ", currentModel, "):")), models.length === 0 ? (react_1.default.createElement(ink_1.Box, { paddingLeft: 1 }, react_1.default.createElement(ink_1.Text, { color: "yellow" }, "No OpenRouter models found. Add models with format \"author/model\" using /add-model."))) : (models.map((modelOption, index) => { const openRouterProvider = (0, added_models_1.getOpenRouterProvider)(modelOption.model); const hasProviderSet = openRouterProvider !== null; return (react_1.default.createElement(ink_1.Box, { key: index, paddingLeft: 1 }, react_1.default.createElement(ink_1.Text, { color: index === selectedModelIndex ? "black" : "white", backgroundColor: index === selectedModelIndex ? "cyan" : undefined }, modelOption.model, hasProviderSet && (react_1.default.createElement(ink_1.Text, { color: index === selectedModelIndex ? "black" : "green" }, " ", "\u2192 ", openRouterProvider))), react_1.default.createElement(ink_1.Box, { marginLeft: 1 }, react_1.default.createElement(ink_1.Text, { color: "gray" }, modelOption.description)))); })), react_1.default.createElement(ink_1.Box, { marginTop: 1 }, react_1.default.createElement(ink_1.Text, { color: "gray", dimColor: true }, "\u2191\u2193 navigate \u2022 Enter configure provider \u2022 Esc cancel")))); } // Provider selection view return (react_1.default.createElement(ink_1.Box, { marginTop: 1, flexDirection: "column" }, react_1.default.createElement(ink_1.Box, { marginBottom: 1 }, react_1.default.createElement(ink_1.Text, { color: "cyan" }, "Select Provider for ", currentSelectedModel, ":")), isLoadingProviders ? (react_1.default.createElement(ink_1.Box, { paddingLeft: 1 }, react_1.default.createElement(ink_1.Text, { color: "yellow" }, "Loading available providers..."))) : providers.length === 0 ? (react_1.default.createElement(ink_1.Box, { paddingLeft: 1 }, react_1.default.createElement(ink_1.Text, { color: "red" }, "No providers available for this model"))) : (providers.map((provider, index) => { const currentProvider = (0, added_models_1.getOpenRouterProvider)(currentSelectedModel || ''); const isCurrentlySelected = currentProvider === provider.id; return (react_1.default.createElement(ink_1.Box, { key: index, paddingLeft: 1 }, react_1.default.createElement(ink_1.Text, { color: index === selectedProviderIndex ? "black" : "white", backgroundColor: index === selectedProviderIndex ? "cyan" : undefined }, provider.name, isCurrentlySelected && (react_1.default.createElement(ink_1.Text, { color: index === selectedProviderIndex ? "black" : "green" }, " ", "(current)"))), react_1.default.createElement(ink_1.Box, { marginLeft: 1, flexDirection: "column" }, provider.pricing && (react_1.default.createElement(ink_1.Text, { color: "gray", dimColor: true }, "$", provider.pricing.prompt, "/1k prompt \u2022 $", provider.pricing.completion, "/1k completion")), (provider.quantization || provider.uptime || provider.context_length) && (react_1.default.createElement(ink_1.Text, { color: "gray", dimColor: true }, provider.quantization ? `${provider.quantization}` : '', provider.quantization && provider.uptime ? ' • ' : '', provider.uptime ? `${provider.uptime}% uptime` : '', (provider.quantization || provider.uptime) && provider.context_length ? ' • ' : '', provider.context_length ? `${provider.context_length.toLocaleString()} context` : ''))))); })), react_1.default.createElement(ink_1.Box, { marginTop: 1 }, react_1.default.createElement(ink_1.Text, { color: "gray", dimColor: true }, "\u2191\u2193 navigate \u2022 Enter select provider \u2022 Esc back to models")))); } exports.RouteSelection = RouteSelection; // Hook for managing route selection state function useRouteSelection() { const [viewMode, setViewMode] = (0, react_1.useState)('models'); const [currentSelectedModel, setCurrentSelectedModel] = (0, react_1.useState)(''); const [providers, setProviders] = (0, react_1.useState)([]); const [isLoadingProviders, setIsLoadingProviders] = (0, react_1.useState)(false); const handleModelSelect = async (model) => { setCurrentSelectedModel(model); setViewMode('providers'); setIsLoadingProviders(true); setProviders([]); try { const apiKeys = (0, api_keys_1.loadApiKeys)(); const openRouterKey = apiKeys.openRouterApiKey; if (openRouterKey) { const modelProviders = await (0, openrouter_providers_1.getModelProvidersWithFallback)(model, openRouterKey); setProviders(modelProviders); } else { // If no OpenRouter key, show message setProviders([]); } } catch (error) { console.error('Error fetching providers:', error); setProviders([]); } finally { setIsLoadingProviders(false); } }; const handleBack = () => { setViewMode('models'); setCurrentSelectedModel(''); setProviders([]); setIsLoadingProviders(false); }; const reset = () => { setViewMode('models'); setCurrentSelectedModel(''); setProviders([]); setIsLoadingProviders(false); }; return { viewMode, currentSelectedModel, providers, isLoadingProviders, handleModelSelect, handleBack, reset, }; } exports.useRouteSelection = useRouteSelection; //# sourceMappingURL=route-selection.js.map