File size: 3,272 Bytes
dcd5e1d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9e8594b
dcd5e1d
9e8594b
dcd5e1d
 
9e8594b
dcd5e1d
 
 
 
 
 
 
9e8594b
dcd5e1d
9e8594b
dcd5e1d
9e8594b
dcd5e1d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import { NextRequest, NextResponse } from "next/server";

export async function GET(request: NextRequest) {
  console.log('πŸ§ͺ Debug test endpoint called');
  
  // Get query parameters
  const { searchParams } = new URL(request.url);
  const provider = searchParams.get('provider') || 'auto';
  const model = searchParams.get('model') || 'Qwen/Qwen2.5-Coder-32B-Instruct';
  const testType = searchParams.get('test') || 'simple';
  
  console.log('πŸ” Test parameters:', { provider, model, testType });

  try {
    // Create a simple streaming response
    const encoder = new TextEncoder();
    const stream = new TransformStream();
    const writer = stream.writable.getWriter();

    const response = new NextResponse(stream.readable, {
      headers: {
        "Content-Type": "text/plain; charset=utf-8",
        "Cache-Control": "no-cache",
        Connection: "keep-alive",
      },
    });

    // Simulate different response patterns
    (async () => {
      try {
        if (testType === 'simple') {
          // Test simple streaming
          const messages = [
            'Hello from debug endpoint!\n',
            'This is a test message.\n',
            '<!DOCTYPE html>\n',
            '<html>\n',
            '<head><title>Test</title></head>\n',
            '<body>\n',
            '<h1>Debug Test</h1>\n',
            '<p>This is a test page.</p>\n',
            '</body>\n',
            '</html>\n'
          ];
          
          for (let i = 0; i < messages.length; i++) {
            console.log(`πŸ“¦ Debug chunk ${i + 1}:`, messages[i].trim());
            await writer.write(encoder.encode(messages[i]));
            await new Promise(resolve => setTimeout(resolve, 200)); // Delay for realism
          }
        } else if (testType === 'error') {
          // Test error case
          await writer.write(encoder.encode(JSON.stringify({
            ok: false,
            openSelectProvider: true,
            message: "Test error message"
          })));
        } else if (testType === 'empty') {
          // Test empty response
          console.log('πŸ”‡ Testing empty response');
          // Just close without writing anything
        }
        
        console.log('βœ… Debug test completed');
      } catch (error: unknown) {
        console.error('❌ Debug test error:', error);
        const errorMessage = error instanceof Error ? error.message : 'Unknown error';
        await writer.write(encoder.encode(JSON.stringify({
          ok: false,
          message: `Debug test error: ${errorMessage}`
        })));
      } finally {
        await writer.close();
      }
    })();

    return response;
  } catch (error: unknown) {
    console.error('❌ Debug endpoint error:', error);
    const errorMessage = error instanceof Error ? error.message : 'Unknown error';
    return NextResponse.json(
      { ok: false, error: errorMessage },
      { status: 500 }
    );
  }
}

export async function POST(request: NextRequest) {
  console.log('πŸ§ͺ Debug POST test endpoint called');
  
  const body = await request.json();
  console.log('πŸ“ Request body:', body);
  
  return NextResponse.json({
    ok: true,
    message: "Debug POST successful",
    receivedData: body,
    timestamp: new Date().toISOString()
  });
}