Skip to content
This repository was archived by the owner on Jul 4, 2025. It is now read-only.

Commit b40100d

Browse files
authored
fix: persists engine version on init (#969)
1 parent dbc63a0 commit b40100d

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

cortex-js/src/infrastructure/providers/cortex/cortex.provider.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { readdirSync } from 'node:fs';
1313
import { normalizeModelId } from '@/utils/normalize-model-id';
1414
import { firstValueFrom } from 'rxjs';
1515
import { fileManagerService } from '@/infrastructure/services/file-manager/file-manager.service';
16+
import { existsSync, readFileSync } from 'fs';
1617

1718
export interface ModelStatResponse {
1819
object: string;
@@ -34,6 +35,7 @@ export default class CortexProvider extends OAIEngineExtension {
3435

3536
constructor(protected readonly httpService: HttpService) {
3637
super(httpService);
38+
this.persistEngineVersion();
3739
}
3840

3941
// Override the inference method to make an inference request to the engine
@@ -162,4 +164,14 @@ export default class CortexProvider extends OAIEngineExtension {
162164
// Return an error if none of the conditions are met
163165
return { error: 'Cannot split prompt template' };
164166
};
167+
168+
private persistEngineVersion = async () => {
169+
const versionFilePath = join(
170+
await fileManagerService.getCortexCppEnginePath(),
171+
this.name,
172+
'version.txt',
173+
);
174+
if (existsSync(versionFilePath))
175+
this.version = readFileSync(versionFilePath, 'utf-8');
176+
};
165177
}

cortex-js/src/infrastructure/repositories/extensions/extension.repository.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export class ExtensionRepositoryImpl implements ExtensionRepository {
3232
// Watch engine folder only for now
3333
fileManagerService.getCortexCppEnginePath().then((path) => {
3434
if (!existsSync(path)) mkdirSync(path);
35-
watch(path, (eventType, filename) => {
35+
watch(path, () => {
3636
this.extensions.clear();
3737
this.loadCoreExtensions();
3838
this.loadExternalExtensions();

cortex-js/src/usecases/engines/engines.usecase.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { isEmpty } from 'lodash';
22
import { ForbiddenException, Injectable } from '@nestjs/common';
33
import { ExtensionRepository } from '@/domain/repositories/extension.interface';
4-
import { cpSync, existsSync, mkdirSync, readdirSync } from 'fs';
4+
import { cpSync, existsSync, mkdirSync, readdirSync, writeFileSync } from 'fs';
55
import { join } from 'path';
66
import { HttpService } from '@nestjs/axios';
77
import decompress from 'decompress';
@@ -275,6 +275,7 @@ export class EnginesUsecases {
275275
engine,
276276
DownloadType.Engine,
277277
{ [toDownloadAsset.browser_download_url]: destination },
278+
// On completed - post processing
278279
async () => {
279280
try {
280281
await decompress(destination, engineDir);
@@ -287,9 +288,15 @@ export class EnginesUsecases {
287288
// Copy the additional files to the cortex-cpp directory
288289
for (const file of readdirSync(join(engineDir, engine))) {
289290
if (!file.includes('engine')) {
290-
await cpSync(join(engineDir, engine, file), join(engineDir, file));
291+
cpSync(join(engineDir, engine, file), join(engineDir, file));
291292
}
292293
}
294+
295+
writeFileSync(
296+
join(engineDir, engine, 'version.txt'),
297+
release.tag_name.replace(/^v/, ''),
298+
'utf-8',
299+
);
293300
},
294301
);
295302
}

0 commit comments

Comments
 (0)