rate limit queue, content
This commit is contained in:
@@ -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',
|
||||
|
||||
31
src/pages/api/ai/queue-debug.ts
Normal file
31
src/pages/api/ai/queue-debug.ts
Normal 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');
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user