mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-03-19 22:53:08 +00:00
67 lines
2.0 KiB
TypeScript
67 lines
2.0 KiB
TypeScript
import { Router, Request, Response } from 'express';
|
|
import { GeminiProvider } from '../../providers/gemini-provider.js';
|
|
import { GeminiUsageService } from '../../services/gemini-usage-service.js';
|
|
import { createLogger } from '@automaker/utils';
|
|
import type { EventEmitter } from '../../lib/events.js';
|
|
|
|
const logger = createLogger('Gemini');
|
|
|
|
export function createGeminiRoutes(
|
|
usageService: GeminiUsageService,
|
|
_events: EventEmitter
|
|
): Router {
|
|
const router = Router();
|
|
|
|
// Get current usage/quota data from Google Cloud API
|
|
router.get('/usage', async (_req: Request, res: Response) => {
|
|
try {
|
|
const usageData = await usageService.fetchUsageData();
|
|
|
|
res.json(usageData);
|
|
} catch (error) {
|
|
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
logger.error('Error fetching Gemini usage:', error);
|
|
|
|
// Return error in a format the UI expects
|
|
res.status(200).json({
|
|
authenticated: false,
|
|
authMethod: 'none',
|
|
usedPercent: 0,
|
|
remainingPercent: 100,
|
|
lastUpdated: new Date().toISOString(),
|
|
error: `Failed to fetch Gemini usage: ${message}`,
|
|
});
|
|
}
|
|
});
|
|
|
|
// Check if Gemini is available
|
|
router.get('/status', async (_req: Request, res: Response) => {
|
|
try {
|
|
const provider = new GeminiProvider();
|
|
const status = await provider.detectInstallation();
|
|
|
|
// Derive authMethod from typed InstallationStatus fields
|
|
const authMethod = status.authenticated
|
|
? status.hasApiKey
|
|
? 'api_key'
|
|
: 'cli_login'
|
|
: 'none';
|
|
|
|
res.json({
|
|
success: true,
|
|
installed: status.installed,
|
|
version: status.version || null,
|
|
path: status.path || null,
|
|
authenticated: status.authenticated || false,
|
|
authMethod,
|
|
hasCredentialsFile: false,
|
|
});
|
|
} catch (error) {
|
|
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
res.status(500).json({ success: false, error: message });
|
|
}
|
|
});
|
|
|
|
return router;
|
|
}
|