Update
This commit is contained in:
@@ -1,14 +1,38 @@
|
||||
export const COURSEWARE_RUNTIME_CONFIG_PATH = "/courseware-runtime.json";
|
||||
export const LAB1_DEFAULT_NETRON_URL = "http://127.0.0.1:8338";
|
||||
export const LAB2_DEFAULT_OLLAMA_URL = "http://127.0.0.1:11434";
|
||||
export const LAB2_DEFAULT_OLLAMA_MODELS = [
|
||||
{
|
||||
label: "Gemma 4 E2B Q2",
|
||||
value: "cajina/gemma4_e2b-q2_k_xl:v01",
|
||||
},
|
||||
{
|
||||
label: "Gemma 4 E2B Q4",
|
||||
value: "batiai/gemma4-e2b:q4",
|
||||
},
|
||||
{
|
||||
label: "Gemma 4 E2B Q8",
|
||||
value: "bjoernb/gemma4-e2b-fast:latest",
|
||||
},
|
||||
] as const;
|
||||
export const LAB3_DEFAULT_TERMINAL_PATH = "/wetty";
|
||||
|
||||
export type CoursewareRuntimeModelOption = {
|
||||
label: string;
|
||||
value: string;
|
||||
};
|
||||
|
||||
export type CoursewareRuntimeConfig = {
|
||||
lab1NetronUrl?: string;
|
||||
lab2OllamaModels?: CoursewareRuntimeModelOption[];
|
||||
lab2OllamaUrl?: string;
|
||||
lab3TerminalUrl?: string;
|
||||
};
|
||||
|
||||
export type ResolvedCoursewareRuntimeConfig = {
|
||||
lab1NetronUrl: string;
|
||||
lab2OllamaModels: CoursewareRuntimeModelOption[];
|
||||
lab2OllamaUrl: string;
|
||||
lab3TerminalUrl: string;
|
||||
};
|
||||
|
||||
@@ -50,6 +74,48 @@ export function getLab1NetronUrl(
|
||||
return rewriteLoopbackHost(trimmedValue, currentHostname);
|
||||
}
|
||||
|
||||
export function getLab2OllamaUrl(
|
||||
envValue?: string,
|
||||
currentHostname = getCurrentHostname(),
|
||||
) {
|
||||
const trimmedValue = envValue?.trim();
|
||||
|
||||
if (!trimmedValue) {
|
||||
return rewriteLoopbackHost(LAB2_DEFAULT_OLLAMA_URL, currentHostname);
|
||||
}
|
||||
|
||||
return rewriteLoopbackHost(trimmedValue, currentHostname);
|
||||
}
|
||||
|
||||
export function getLab2OllamaModels(
|
||||
envValue?: CoursewareRuntimeModelOption[],
|
||||
) {
|
||||
if (!Array.isArray(envValue) || envValue.length === 0) {
|
||||
return LAB2_DEFAULT_OLLAMA_MODELS.map((model) => ({ ...model }));
|
||||
}
|
||||
|
||||
const normalizedModels = envValue
|
||||
.map((model) => {
|
||||
const label = model?.label?.trim();
|
||||
const value = model?.value?.trim();
|
||||
|
||||
if (!label || !value) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return { label, value } satisfies CoursewareRuntimeModelOption;
|
||||
})
|
||||
.filter(
|
||||
(model): model is CoursewareRuntimeModelOption => model !== null,
|
||||
);
|
||||
|
||||
if (normalizedModels.length === 0) {
|
||||
return LAB2_DEFAULT_OLLAMA_MODELS.map((model) => ({ ...model }));
|
||||
}
|
||||
|
||||
return normalizedModels;
|
||||
}
|
||||
|
||||
export function getLab3TerminalPath(
|
||||
envValue?: string,
|
||||
currentHostname = getCurrentHostname(),
|
||||
@@ -73,6 +139,8 @@ export function normalizeCoursewareRuntimeConfig(
|
||||
): ResolvedCoursewareRuntimeConfig {
|
||||
return {
|
||||
lab1NetronUrl: getLab1NetronUrl(config?.lab1NetronUrl, currentHostname),
|
||||
lab2OllamaModels: getLab2OllamaModels(config?.lab2OllamaModels),
|
||||
lab2OllamaUrl: getLab2OllamaUrl(config?.lab2OllamaUrl, currentHostname),
|
||||
lab3TerminalUrl: getLab3TerminalPath(
|
||||
config?.lab3TerminalUrl,
|
||||
currentHostname,
|
||||
|
||||
Reference in New Issue
Block a user