rate limit queue, content

This commit is contained in:
overcuriousity
2025-07-28 22:30:33 +02:00
parent 6cdac6ec7c
commit e90da3b2fb
5 changed files with 765 additions and 296 deletions

View File

@@ -287,16 +287,22 @@ export const POST: APIRoute = async ({ request }) => {
const body = await request.json();
const { query, mode = 'workflow', taskId: clientTaskId } = body;
// ADD THIS DEBUG LOGGING
console.log(`[AI API] Received request - TaskId: ${clientTaskId}, Mode: ${mode}, Query length: ${query?.length || 0}`);
if (!query || typeof query !== 'string') {
console.log(`[AI API] Invalid query for task ${clientTaskId}`);
return apiError.badRequest('Query required');
}
if (!['workflow', 'tool'].includes(mode)) {
console.log(`[AI API] Invalid mode for task ${clientTaskId}: ${mode}`);
return apiError.badRequest('Invalid mode. Must be "workflow" or "tool"');
}
const sanitizedQuery = sanitizeInput(query);
if (sanitizedQuery.includes('[FILTERED]')) {
console.log(`[AI API] Filtered input detected for task ${clientTaskId}`);
return apiError.badRequest('Invalid input detected');
}
@@ -308,6 +314,9 @@ export const POST: APIRoute = async ({ request }) => {
const taskId = clientTaskId || `ai_${userId}_${Date.now()}_${Math.random().toString(36).substr(2, 6)}`;
console.log(`[AI API] About to enqueue task ${taskId}`);
const aiResponse = await enqueueApiCall(() =>
fetch(process.env.AI_API_ENDPOINT + '/v1/chat/completions', {
method: 'POST',

View File

@@ -0,0 +1,31 @@
// src/pages/api/ai/queue-debug.ts - Enhanced debug endpoint
import type { APIRoute } from 'astro';
import { getQueueDebugState, getAllTaskStatuses } from '../../../utils/rateLimitedQueue.js';
import { apiResponse, apiServerError } from '../../../utils/api.js';
export const prerender = false;
export const GET: APIRoute = async ({ request }) => {
try {
// Only allow in development or with special header
const isDev = process.env.NODE_ENV === 'development';
const debugHeader = request.headers.get('X-Debug-Queue');
if (!isDev && debugHeader !== 'true') {
return apiServerError.internal('Debug endpoint not available');
}
const debugState = getQueueDebugState();
const allTaskStatuses = getAllTaskStatuses();
return apiResponse.success({
...debugState,
allTaskStatuses,
timestamp: Date.now(),
message: 'Enhanced queue debug state snapshot'
});
} catch (error) {
console.error('Queue debug error:', error);
return apiServerError.internal('Failed to get queue debug state');
}
};