Files
Jannik a90e6b23db
Build and Push Docker Image / build-and-push (push) Canceled after 0s
feat: Live-Countdowns für Reset-Zeiten bei AG und MiniMax (5h + Weekly)
2026-09-05 20:05:13 +02:00

148 lines
5.6 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateAntigravityQuota = updateAntigravityQuota;
exports.initAntigravityFromDb = initAntigravityFromDb;
exports.fetchAntigravityQuota = fetchAntigravityQuota;
exports.fetchPoeQuota = fetchPoeQuota;
exports.fetchMinimaxQuota = fetchMinimaxQuota;
exports.fetchAllQuotas = fetchAllQuotas;
const axios_1 = __importDefault(require("axios"));
const dotenv_1 = __importDefault(require("dotenv"));
const db_1 = require("./db");
dotenv_1.default.config();
let antigravityCache = [
{ provider: 'AG Gemini (5h)', used: 0, total: 100, percentage: 0 },
{ provider: 'AG Gemini (Weekly)', used: 0, total: 100, percentage: 0 },
{ provider: 'AG Claude (5h)', used: 0, total: 100, percentage: 0 },
{ provider: 'AG Claude (Weekly)', used: 0, total: 100, percentage: 0 },
];
function updateAntigravityQuota(data) {
const gemini5hUsed = 100 - (data.gemini_5h_remaining ?? 100);
const geminiWeeklyUsed = 100 - (data.gemini_weekly_remaining ?? 100);
const claude5hUsed = 100 - (data.claude_5h_remaining ?? 100);
const claudeWeeklyUsed = 100 - (data.claude_weekly_remaining ?? 100);
antigravityCache = [
{
provider: 'AG Gemini (5h)',
used: gemini5hUsed,
total: 100,
percentage: gemini5hUsed,
meta: { resetTime: data.gemini_5h_reset || null }
},
{
provider: 'AG Gemini (Weekly)',
used: geminiWeeklyUsed,
total: 100,
percentage: geminiWeeklyUsed,
meta: { resetTime: data.gemini_weekly_reset || null }
},
{
provider: 'AG Claude (5h)',
used: claude5hUsed,
total: 100,
percentage: claude5hUsed,
meta: { resetTime: data.claude_5h_reset || null }
},
{
provider: 'AG Claude (Weekly)',
used: claudeWeeklyUsed,
total: 100,
percentage: claudeWeeklyUsed,
meta: { resetTime: data.claude_weekly_reset || null }
}
];
// Persist to DB so values survive server restarts
(0, db_1.saveAntigravityLatest)(data).catch(err => console.error('Failed to persist Antigravity quota to DB:', err));
}
async function initAntigravityFromDb() {
try {
const data = await (0, db_1.loadAntigravityLatest)();
if (data) {
console.log('Restored Antigravity quota from DB');
updateAntigravityQuota(data);
}
else {
console.log('No persisted Antigravity quota found, using defaults');
}
}
catch (err) {
console.error('Failed to load Antigravity quota from DB:', err);
}
}
function fetchAntigravityQuota() {
return antigravityCache;
}
async function fetchPoeQuota() {
try {
const res = await axios_1.default.get('https://api.poe.com/usage/current_balance', {
headers: {
'Authorization': `Bearer ${process.env.POE_API_KEY}`
}
});
const available = res.data.current_point_balance || 0;
const total = 2500000;
const used = total - available > 0 ? total - available : 0;
const percentage = (available / total) * 100;
const dailyRefresh = 75000;
const expiringPoints = Math.max(0, available + dailyRefresh - total);
const daysUntilCap = Math.floor((total - available) / dailyRefresh);
const meta = {
available,
dailyRefresh,
expiringPoints,
daysUntilCap
};
return { provider: 'POE', used, total, percentage, meta };
}
catch (error) {
console.error('Error fetching POE quota:', error.message);
return { provider: 'POE', used: 0, total: 2500000, percentage: 0 };
}
}
async function fetchMinimaxQuota() {
try {
const res = await axios_1.default.get('https://api.minimax.io/v1/api/openplatform/coding_plan/remains', {
headers: {
'Authorization': `Bearer ${process.env.MINIMAX_API_KEY}`
}
});
const remains = res.data.model_remains?.find((r) => r.model_name === 'general');
const intervalUsed = remains ? (100 - remains.current_interval_remaining_percent) : 0;
const weeklyUsed = remains ? (100 - remains.current_weekly_remaining_percent) : 0;
const intervalReset = remains ? remains.end_time : null;
const weeklyReset = remains ? remains.weekly_end_time : null;
return [
{
provider: 'MiniMax (5h)',
used: intervalUsed,
total: 100,
percentage: intervalUsed,
meta: { reset: intervalReset }
},
{
provider: 'MiniMax (Weekly)',
used: weeklyUsed,
total: 100,
percentage: weeklyUsed,
meta: { reset: weeklyReset }
}
];
}
catch (error) {
console.error('Error fetching MiniMax quota:', error.message);
return [
{ provider: 'MiniMax (5h)', used: 0, total: 100, percentage: 0 },
{ provider: 'MiniMax (Weekly)', used: 0, total: 100, percentage: 0 }
];
}
}
async function fetchAllQuotas() {
const agQuotas = fetchAntigravityQuota();
const poeQuota = await fetchPoeQuota();
const minimaxQuotas = await fetchMinimaxQuota();
return [...agQuotas, poeQuota, ...minimaxQuotas];
}
//# sourceMappingURL=providers.js.map