@ririaru/mcp-gpt5-server
Version: 
Enhanced MCP server for GPT-5 with advanced features
103 lines (91 loc) • 3.02 kB
JavaScript
// GPT-5提案通りの薄いプロキシのテスト
import { Gpt5McpCore } from './packages/core/dist/index.js';
console.log('🔗 Testing Vercel Proxy (GPT-5 style)...');
// サーバレスでの in-memory キャッシュは Lambda 単位。必要に応じて KV プロバイダへ差し替え可。
const core = new Gpt5McpCore({
  defaultLevel: "low",      // 保守的開始
  defaultVerbosity: "concise"
});
// Vercel API handler simulation
async function simulateVercelHandler(req) {
  console.log('📨 Simulating Vercel API handler...');
  
  try {
    const { prompt, level, verbosity } = req ?? {};
    if (typeof prompt !== "string" || !prompt.trim()) {
      return { 
        status: 400, 
        body: { error: "prompt is required" } 
      };
    }
    
    const result = await core.handleMessage({ prompt, level, verbosity });
    
    return { 
      status: 200, 
      body: {
        cached: result.cached,
        text: result.output.text,
        level: level || "low",
        verbosity: verbosity || "concise"
      }
    };
  } catch (e) {
    const status = e?.name === "ValidationError" ? 400 : (e?.name === "RetryableError" ? 503 : 500);
    return { 
      status, 
      body: { error: e?.message ?? "Internal Error", type: e?.name ?? "Error" } 
    };
  }
}
// Test cases
const testCases = [
  {
    name: "Basic request",
    req: { prompt: "Hello from proxy test" }
  },
  {
    name: "Level override",
    req: { prompt: "High level test", level: "high" }
  },
  {
    name: "Verbosity override", 
    req: { prompt: "Verbose test", verbosity: "verbose" }
  },
  {
    name: "Cache test (same prompt)",
    req: { prompt: "Cache test message" }
  },
  {
    name: "Cache test (repeat)",
    req: { prompt: "Cache test message" }
  },
  {
    name: "Invalid request (no prompt)",
    req: {}
  },
  {
    name: "Empty prompt",
    req: { prompt: "" }
  }
];
try {
  for (const testCase of testCases) {
    console.log(`\n🧪 Test: ${testCase.name}`);
    const response = await simulateVercelHandler(testCase.req);
    
    console.log(`   Status: ${response.status}`);
    console.log(`   Body: ${JSON.stringify(response.body, null, 2)}`);
    
    // Basic validation
    if (testCase.name.includes("Invalid") || testCase.name.includes("Empty")) {
      console.log(`   ✅ Expected error: ${response.status >= 400 ? 'PASS' : 'FAIL'}`);
    } else {
      console.log(`   ✅ Success response: ${response.status === 200 ? 'PASS' : 'FAIL'}`);
      if (response.status === 200) {
        console.log(`   ✅ Has text: ${response.body.text ? 'PASS' : 'FAIL'}`);
        if (testCase.name.includes("repeat")) {
          console.log(`   ✅ Cache hit: ${response.body.cached === true ? 'PASS' : 'FAIL'}`);
        }
      }
    }
  }
  
  console.log('\n🎉 Proxy tests completed successfully!');
} catch (error) {
  console.error('❌ Proxy test failed:', error.message);
}