148 lines
5.6 KiB
JavaScript
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
|