Files
9router/src/shared/constants/config.js
T

92 lines
2.4 KiB
JavaScript
Raw Normal View History

2026-02-06 11:38:52 +07:00
import pkg from "../../../package.json" with { type: "json" };
2026-01-05 09:58:59 +07:00
// App configuration
export const APP_CONFIG = {
name: "9Router Proxy",
2026-01-05 09:58:59 +07:00
description: "AI Infrastructure Management",
version: pkg.version,
2026-01-05 09:58:59 +07:00
};
// GitHub configuration
export const GITHUB_CONFIG = {
changelogUrl: "https://raw.githubusercontent.com/decolua/9router/refs/heads/master/CHANGELOG.md",
2026-05-16 12:38:06 +07:00
donateUrl: "https://9router.com/api/donate",
};
// Updater configuration
export const UPDATER_CONFIG = {
npmPackageName: "9router",
installCmd: "npm i -g 9router",
2026-05-09 22:48:07 +07:00
installCmdLatest: "npm i -g 9router@latest --prefer-online",
shutdownCountdownSec: 3,
exitDelayMs: 500,
statusPort: 20129,
statusPollIntervalMs: 1000,
statusLogTailLines: 8,
installRetries: 3,
installRetryDelayMs: 5000,
lingerAfterDoneMs: 30000,
2026-05-09 22:48:07 +07:00
waitForExitMinMs: 5000,
waitForExitMaxMs: 20000,
waitForExitCheckMs: 500,
appPort: 20128,
};
2026-01-05 09:58:59 +07:00
// Theme configuration
export const THEME_CONFIG = {
storageKey: "theme",
defaultTheme: "system", // "light" | "dark" | "system"
};
// Subscription
export const SUBSCRIPTION_CONFIG = {
price: 1.0,
currency: "USD",
interval: "month",
planName: "Pro Plan",
};
// API endpoints
export const API_ENDPOINTS = {
users: "/api/users",
providers: "/api/providers",
payments: "/api/payments",
auth: "/api/auth",
};
2026-03-02 09:31:16 +07:00
export const CONSOLE_LOG_CONFIG = {
maxLines: 200,
pollIntervalMs: 1000,
};
// Client-side store TTL: how long fetched data stays fresh before re-fetching
export const CLIENT_STORE_TTL_MS = 60000;
// Claude auto-ping: keep 5h window warm by sending a tiny request right after reset
export const CLAUDE_AUTOPING_CONFIG = {
settingsKey: "claudeAutoPing", // settings table field
tickIntervalMs: 60000, // scheduler tick
pingLeadMs: 5000, // fire once reset passes (within tolerance)
pingModel: "claude-haiku-4-5-20251001", // cheapest model
pingText: "hi",
pingMaxTokens: 1,
refreshAheadMs: 300000, // refetch usage when within 5min of reset
fiveHourKey: "session (5h)", // quota key returned by usage handler
};
2026-01-05 09:58:59 +07:00
// Re-export from providers.js for backward compatibility
export {
FREE_PROVIDERS,
2026-01-05 09:58:59 +07:00
OAUTH_PROVIDERS,
APIKEY_PROVIDERS,
WEB_COOKIE_PROVIDERS,
2026-01-05 09:58:59 +07:00
AI_PROVIDERS,
AUTH_METHODS,
} from "./providers.js";
// Re-export from models.js for backward compatibility
export {
PROVIDER_MODELS,
AI_MODELS,
} from "./models.js";