UNPKG

giga-code

Version:

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

159 lines 6.77 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.onModelSelected = exports.getInstanceAvailableModels = exports.toggleModelFavorite = exports.addModelToRecentlyUsed = exports.saveInstanceModelPreferences = exports.loadInstanceModelPreferences = void 0; const fs = __importStar(require("fs")); const path = __importStar(require("path")); const session_manager_1 = require("./session-manager"); const added_models_1 = require("./added-models"); const getInstancePreferencesPath = () => { const sessionInfo = session_manager_1.sessionManager.getSessionInfo(); if (!sessionInfo) { throw new Error('No active session found'); } const homeDir = require('os').homedir(); const sessionDir = path.join(homeDir, '.giga', 'sessions', sessionInfo.instanceId); // Ensure session directory exists if (!fs.existsSync(sessionDir)) { fs.mkdirSync(sessionDir, { recursive: true, mode: 0o700 }); } return path.join(sessionDir, 'model-preferences.json'); }; function loadInstanceModelPreferences() { try { const preferencesPath = getInstancePreferencesPath(); const sessionInfo = session_manager_1.sessionManager.getSessionInfo(); if (!sessionInfo) { throw new Error('No active session found'); } if (!fs.existsSync(preferencesPath)) { // Return default preferences for new session return { instanceId: sessionInfo.instanceId, favoriteModels: [], recentlyUsedModels: sessionInfo.currentModel ? [sessionInfo.currentModel] : [], lastUpdated: new Date().toISOString() }; } const data = JSON.parse(fs.readFileSync(preferencesPath, 'utf8')); return data; } catch (error) { console.error('Error loading instance model preferences:', error); const sessionInfo = session_manager_1.sessionManager.getSessionInfo(); return { instanceId: sessionInfo?.instanceId || 'unknown', favoriteModels: [], recentlyUsedModels: [], lastUpdated: new Date().toISOString() }; } } exports.loadInstanceModelPreferences = loadInstanceModelPreferences; function saveInstanceModelPreferences(preferences) { try { const preferencesPath = getInstancePreferencesPath(); preferences.lastUpdated = new Date().toISOString(); fs.writeFileSync(preferencesPath, JSON.stringify(preferences, null, 2), { mode: 0o600 }); } catch (error) { console.error('Error saving instance model preferences:', error); } } exports.saveInstanceModelPreferences = saveInstanceModelPreferences; function addModelToRecentlyUsed(modelName) { try { const preferences = loadInstanceModelPreferences(); // Remove model if it already exists in the list preferences.recentlyUsedModels = preferences.recentlyUsedModels.filter(m => m !== modelName); // Add to the beginning of the list preferences.recentlyUsedModels.unshift(modelName); // Keep only the last 10 recently used models preferences.recentlyUsedModels = preferences.recentlyUsedModels.slice(0, 10); saveInstanceModelPreferences(preferences); } catch (error) { console.error('Error adding model to recently used:', error); } } exports.addModelToRecentlyUsed = addModelToRecentlyUsed; function toggleModelFavorite(modelName) { try { const preferences = loadInstanceModelPreferences(); const isFavorite = preferences.favoriteModels.includes(modelName); if (isFavorite) { // Remove from favorites preferences.favoriteModels = preferences.favoriteModels.filter(m => m !== modelName); } else { // Add to favorites preferences.favoriteModels.push(modelName); } saveInstanceModelPreferences(preferences); return !isFavorite; // Return new favorite status } catch (error) { console.error('Error toggling model favorite:', error); return false; } } exports.toggleModelFavorite = toggleModelFavorite; function getInstanceAvailableModels() { try { const preferences = loadInstanceModelPreferences(); const globalModels = (0, added_models_1.loadAddedModels)(); // Only show global added models (no built-in models) const modelsWithPreferences = globalModels.map(m => ({ model: m.modelName, description: `${m.modelName} (${m.providerName})`, isFavorite: preferences.favoriteModels.includes(m.modelName), isRecentlyUsed: preferences.recentlyUsedModels.includes(m.modelName) })); // Sort: favorites first, then recently used, then alphabetically return modelsWithPreferences.sort((a, b) => { if (a.isFavorite && !b.isFavorite) return -1; if (!a.isFavorite && b.isFavorite) return 1; if (a.isRecentlyUsed && !b.isRecentlyUsed) return -1; if (!a.isRecentlyUsed && b.isRecentlyUsed) return 1; return a.model.localeCompare(b.model); }); } catch (error) { console.error('Error getting instance available models:', error); return []; } } exports.getInstanceAvailableModels = getInstanceAvailableModels; // Update recently used when model is selected function onModelSelected(modelName) { addModelToRecentlyUsed(modelName); session_manager_1.sessionManager.setCurrentModel(modelName); } exports.onModelSelected = onModelSelected; //# sourceMappingURL=instance-models.js.map