convex
Version:
Client for the Convex Cloud
40 lines (36 loc) • 1.39 kB
text/typescript
import path from "path";
import { logMessage } from "../../bundler/log.js";
import type { Context } from "../../bundler/context.js";
import { readProjectConfig } from "./config.js";
import { functionsDir } from "./utils/utils.js";
import {
checkAiFilesStalenessAndLog,
isAiFilesDisabled,
} from "./aiFiles/index.js";
import { getVersion } from "./versionApi.js";
/**
* Fetch the latest version data, log any server nag message, and warn if
* Convex AI files are out of date. Both checks share the one getVersion()
* round-trip.
*/
export async function checkVersionAndAiFilesStaleness(ctx: Context) {
const version = await getVersion();
if (version.kind === "error") return;
if (version.data.message) logMessage(version.data.message);
try {
const { configPath, projectConfig } = await readProjectConfig(ctx);
const aiFilesConfig = projectConfig.aiFiles;
if (isAiFilesDisabled(aiFilesConfig)) return;
const convexDir = path.resolve(functionsDir(configPath, projectConfig));
const projectDir = path.resolve(path.dirname(configPath));
await checkAiFilesStalenessAndLog({
canonicalGuidelinesHash: version.data.guidelinesHash,
canonicalAgentSkillsSha: version.data.agentSkillsSha,
aiFilesConfig,
projectDir,
convexDir,
});
} catch {
// Non-fatal: skip staleness check if project config can't be resolved.
}
}