add TUI
This commit is contained in:
48
tui/src/config.ts
Normal file
48
tui/src/config.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import type { Provider } from "./types.js";
|
||||
|
||||
const PROVIDERS: Provider[] = ["openai", "anthropic", "xai"];
|
||||
|
||||
function normalizeBaseUrl(value: string) {
|
||||
const trimmed = value.trim();
|
||||
if (!trimmed) {
|
||||
throw new Error("SYBIL_TUI_API_BASE_URL cannot be empty");
|
||||
}
|
||||
|
||||
let parsed: URL;
|
||||
try {
|
||||
parsed = new URL(trimmed);
|
||||
} catch {
|
||||
throw new Error(`Invalid SYBIL_TUI_API_BASE_URL: ${trimmed}`);
|
||||
}
|
||||
|
||||
const normalizedPath = parsed.pathname.replace(/\/+$/, "");
|
||||
parsed.pathname = normalizedPath || "/";
|
||||
return parsed.toString().replace(/\/$/, "");
|
||||
}
|
||||
|
||||
function parseProvider(value: string | undefined): Provider {
|
||||
const trimmed = value?.trim().toLowerCase();
|
||||
if (!trimmed) return "openai";
|
||||
if (PROVIDERS.includes(trimmed as Provider)) return trimmed as Provider;
|
||||
throw new Error(`Invalid SYBIL_TUI_DEFAULT_PROVIDER: ${value}`);
|
||||
}
|
||||
|
||||
function parsePositiveInt(value: string | undefined, fallback: number) {
|
||||
if (!value?.trim()) return fallback;
|
||||
const parsed = Number.parseInt(value, 10);
|
||||
if (!Number.isFinite(parsed) || parsed <= 0) {
|
||||
throw new Error(`Invalid positive integer value: ${value}`);
|
||||
}
|
||||
return parsed;
|
||||
}
|
||||
|
||||
const apiBaseUrlValue =
|
||||
process.env.SYBIL_TUI_API_BASE_URL?.trim() || process.env.SYBIL_API_BASE_URL?.trim() || "http://127.0.0.1:8787";
|
||||
|
||||
export const config = {
|
||||
apiBaseUrl: normalizeBaseUrl(apiBaseUrlValue),
|
||||
adminToken: process.env.SYBIL_TUI_ADMIN_TOKEN?.trim() || process.env.SYBIL_ADMIN_TOKEN?.trim() || null,
|
||||
defaultProvider: parseProvider(process.env.SYBIL_TUI_DEFAULT_PROVIDER),
|
||||
defaultModel: process.env.SYBIL_TUI_DEFAULT_MODEL?.trim() || null,
|
||||
searchNumResults: parsePositiveInt(process.env.SYBIL_TUI_SEARCH_NUM_RESULTS, 10),
|
||||
};
|
||||
Reference in New Issue
Block a user