alwaysai
Version:
The alwaysAI command-line interface (CLI)
41 lines • 2.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.checkForInvalidModelsComponent = void 0;
const alwayscli_1 = require("@alwaysai/alwayscli");
const paths_1 = require("../../../paths");
const app_1 = require("../../../core/app");
const project_1 = require("../../../core/project");
const model_1 = require("../../../core/model");
const config_file_exists_and_is_valid_1 = require("../../../util/config-file-exists-and-is-valid");
async function checkForInvalidModelsComponent() {
// Retrieve list of models and versions from the $APP_JSON_FILE_NAME
const appJsonFile = (0, app_1.AppJsonFile)();
if (!(await (0, config_file_exists_and_is_valid_1.checkConfigFileExistsAndValid)(appJsonFile))) {
throw new alwayscli_1.CliTerseError(`Application does not have a valid ${paths_1.APP_JSON_FILE_NAME} file.`);
}
const appJson = appJsonFile.read();
const { project: { id } } = (0, project_1.ProjectJsonFile)().read();
const projectJsonModels = appJson.models;
// Retrieve list of models and versions from the RPC
const userModels = {};
(await (0, model_1.getModels)({ yes: true, projectUuid: id })).forEach((modelEntry) => {
userModels[modelEntry['id']] = modelEntry['version'];
});
// Compare the lists and collect models that are either missing or have mismatched versions
const invalidModels = {};
for (const projectModel in projectJsonModels) {
// Check if model is missing
if (!userModels[projectModel]) {
invalidModels[projectModel] = projectJsonModels[projectModel];
}
const expectedVersion = projectJsonModels[projectModel];
const actualVersion = userModels[projectModel];
// Check if the model version doesn't match
if (actualVersion < expectedVersion) {
invalidModels[projectModel] = projectJsonModels[projectModel];
}
}
return invalidModels;
}
exports.checkForInvalidModelsComponent = checkForInvalidModelsComponent;
//# sourceMappingURL=app-invalid-models-check-component.js.map