117 lines
8.1 KiB
JavaScript
117 lines
8.1 KiB
JavaScript
"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 () {
|
|
var ownKeys = function(o) {
|
|
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
var ar = [];
|
|
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
return ar;
|
|
};
|
|
return ownKeys(o);
|
|
};
|
|
return function (mod) {
|
|
if (mod && mod.__esModule) return mod;
|
|
var result = {};
|
|
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
__setModuleDefault(result, mod);
|
|
return result;
|
|
};
|
|
})();
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.fetchOpenRouterModels = exports.readFromCache = exports.CACHE_PATH = void 0;
|
|
exports.findFreeModels = findFreeModels;
|
|
exports.findFreePromptModels = findFreePromptModels;
|
|
exports.findFreeCompletionModels = findFreeCompletionModels;
|
|
exports.findFreeImageModels = findFreeImageModels;
|
|
exports.listModelsAsStrings = listModelsAsStrings;
|
|
const axios_1 = __importDefault(require("axios"));
|
|
const path = __importStar(require("path"));
|
|
const index_1 = require("../index");
|
|
const exists_1 = require("@plastichub/fs/exists");
|
|
const read_1 = require("@plastichub/fs/read");
|
|
const write_1 = require("@plastichub/fs/write");
|
|
exports.CACHE_PATH = path.resolve(path.join(path.parse(__filename).dir), 'data', 'openrouter_models.json');
|
|
const CACHE_DURATION = 24 * 60 * 60 * 1000; // 24 hours in milliseconds
|
|
const readFromCache = (cachePath = exports.CACHE_PATH) => {
|
|
try {
|
|
if (!(0, exists_1.sync)(cachePath)) {
|
|
return null;
|
|
}
|
|
const cacheData = (0, read_1.sync)(cachePath, 'json');
|
|
const now = Date.now();
|
|
if (now - cacheData.timestamp > CACHE_DURATION) {
|
|
//return null
|
|
}
|
|
return cacheData.models;
|
|
}
|
|
catch (error) {
|
|
index_1.logger.error('Error reading from cache:', error);
|
|
return null;
|
|
}
|
|
};
|
|
exports.readFromCache = readFromCache;
|
|
function writeToCache(models, cachePath = exports.CACHE_PATH) {
|
|
const cacheData = {
|
|
timestamp: Date.now(),
|
|
models
|
|
};
|
|
(0, write_1.sync)(cachePath, cacheData);
|
|
}
|
|
const fetchOpenRouterModels = async (cachePath = exports.CACHE_PATH) => {
|
|
try {
|
|
// If no cache or expired, fetch from API
|
|
const response = await axios_1.default.get('https://openrouter.ai/api/v1/models', {
|
|
params: {
|
|
// supported_parameters: 'tools'
|
|
}
|
|
});
|
|
writeToCache(response.data.data);
|
|
index_1.logger.debug(`Fetched ${response.data.data.length} OpenRouter models to ${cachePath}`);
|
|
return response.data.data;
|
|
}
|
|
catch (error) {
|
|
index_1.logger.error('Error fetching OpenRouter models:', error);
|
|
throw error;
|
|
}
|
|
};
|
|
exports.fetchOpenRouterModels = fetchOpenRouterModels;
|
|
function findFreeModels(models) {
|
|
return models.filter((model) => model.pricing.prompt === 0 &&
|
|
model.pricing.completion === 0 &&
|
|
model.pricing.image === 0);
|
|
}
|
|
function findFreePromptModels(models) {
|
|
return models.filter((model) => model.pricing.prompt === 0);
|
|
}
|
|
function findFreeCompletionModels(models) {
|
|
return models.filter((model) => model.pricing.completion === 0);
|
|
}
|
|
function findFreeImageModels(models) {
|
|
return models.filter((model) => model.pricing.image === 0);
|
|
}
|
|
function listModelsAsStrings(models) {
|
|
models = models.sort((a, b) => a.name.localeCompare(b.name));
|
|
return models.map((model) => {
|
|
const isFree = model.name.includes('free');
|
|
return `${model.id} | ${isFree ? 'free' : 'paid'}`;
|
|
});
|
|
}
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnJvdXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tb2RlbHMvb3BlbnJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtRkEsd0NBT0M7QUFDRCxvREFFQztBQUVELDREQUVDO0FBRUQsa0RBRUM7QUFDRCxrREFNQztBQTVHRCxrREFBeUI7QUFDekIsMkNBQTZCO0FBQzdCLG9DQUFpQztBQUVqQyxrREFBc0Q7QUFDdEQsOENBQWtEO0FBQ2xELGdEQUFvRDtBQTZCdkMsUUFBQSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLHdCQUF3QixDQUFDLENBQUE7QUFFL0csTUFBTSxjQUFjLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsMkJBQTJCO0FBRWhFLE1BQU0sYUFBYSxHQUFHLENBQUMsWUFBb0Isa0JBQVUsRUFBcUMsRUFBRTtJQUNqRyxJQUFJLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBQSxhQUFNLEVBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFBLFdBQUksRUFBQyxTQUFTLEVBQUUsTUFBTSxDQUFpQixDQUFDO1FBQzFELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLEdBQUcsR0FBRyxTQUFTLENBQUMsU0FBUyxHQUFHLGNBQWMsRUFBRSxDQUFDO1lBQy9DLGFBQWE7UUFDZixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUMsTUFBYSxDQUFDO0lBQ2pDLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FB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
|