Project Files
dist / modelCache.js
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.readCachedState = readCachedState;
exports.writeCachedState = writeCachedState;
const node_fs_1 = __importDefault(require("node:fs"));
const node_os_1 = __importDefault(require("node:os"));
const node_path_1 = __importDefault(require("node:path"));
const inventory_1 = require("./inventory");
function resolveCacheDir() {
const override = String(process.env.MEMRYX_SHIM_PROVIDER_CACHE_DIR ?? "").trim();
if (override.length > 0) {
return override;
}
return node_path_1.default.join(node_os_1.default.homedir(), ".lmstudio", "memryx-shim-provider");
}
function resolveCachePath() {
return node_path_1.default.join(resolveCacheDir(), "models-cache.json");
}
function normalizeCachedModels(models) {
if (!Array.isArray(models)) {
return [];
}
const normalized = [];
const seen = new Set();
for (const model of models) {
if (typeof model === "string") {
const id = model.trim();
if (!id || seen.has(id)) {
continue;
}
seen.add(id);
normalized.push({
id,
displayName: `MemryX Shim Hosted :: ${id}`,
});
continue;
}
if (!model || typeof model !== "object") {
continue;
}
const id = String(model.id ?? "").trim();
if (!id || seen.has(id)) {
continue;
}
seen.add(id);
normalized.push({
id,
displayName: (0, inventory_1.buildHostedDisplayName)({
id,
displayName: String(model.displayName ?? "").trim(),
owned_by: typeof model.owned_by === "string" ? model.owned_by : undefined,
metadata: model.metadata,
}),
owned_by: typeof model.owned_by === "string" ? model.owned_by : undefined,
metadata: model.metadata,
});
}
return normalized;
}
function readCachedState() {
try {
const raw = node_fs_1.default.readFileSync(resolveCachePath(), "utf8");
const parsed = JSON.parse(raw);
const models = normalizeCachedModels(parsed?.models);
const embedModels = normalizeCachedModels(parsed?.embedModels);
const lastSelected = typeof parsed?.lastSelected === "string" && parsed.lastSelected.length > 0
? parsed.lastSelected
: undefined;
const lastSelectedEmbed = typeof parsed?.lastSelectedEmbed === "string" && parsed.lastSelectedEmbed.length > 0
? parsed.lastSelectedEmbed
: undefined;
const inventoryMode = typeof parsed?.inventoryMode === "string" && parsed.inventoryMode.length > 0
? parsed.inventoryMode
: undefined;
const shimBaseUrl = typeof parsed?.shimBaseUrl === "string" && parsed.shimBaseUrl.length > 0
? parsed.shimBaseUrl
: undefined;
return { models, embedModels, lastSelected, lastSelectedEmbed, inventoryMode, shimBaseUrl };
}
catch {
return { models: [], embedModels: [] };
}
}
async function writeCachedState(models, embedModels, lastSelected, lastSelectedEmbed, inventoryMode, shimBaseUrl) {
await node_fs_1.default.promises.mkdir(resolveCacheDir(), { recursive: true });
const payload = {
models,
embedModels,
lastSelected,
lastSelectedEmbed,
inventoryMode,
shimBaseUrl,
refreshedAt: new Date().toISOString(),
};
await node_fs_1.default.promises.writeFile(resolveCachePath(), JSON.stringify(payload, null, 2), "utf8");
}
//# sourceMappingURL=modelCache.js.map