29 lines
949 B
JavaScript
29 lines
949 B
JavaScript
'use strict';
|
|
|
|
// 仅用于离线回归:模拟官方 gitea-mcp 的 JSONL initialize 行为。
|
|
const readline = require('readline');
|
|
|
|
const mode = String(process.env.GITEA_MCP_FIXTURE_MODE || 'success');
|
|
const reader = readline.createInterface({ input: process.stdin });
|
|
reader.on('line', (line) => {
|
|
let request;
|
|
try { request = JSON.parse(line); } catch { return; }
|
|
if (request.method !== 'initialize') return;
|
|
if (mode === 'timeout') return;
|
|
if (mode === 'exit') process.exit(17);
|
|
if (mode === 'error') {
|
|
process.stdout.write(`${JSON.stringify({
|
|
jsonrpc: '2.0', id: request.id, error: { code: -32000, message: 'fixture handshake failed' },
|
|
})}\n`);
|
|
return;
|
|
}
|
|
process.stdout.write(`${JSON.stringify({
|
|
jsonrpc: '2.0', id: request.id,
|
|
result: {
|
|
protocolVersion: '2024-11-05',
|
|
capabilities: { tools: {} },
|
|
serverInfo: { name: 'fixture-gitea-mcp', version: '0.0.0' },
|
|
},
|
|
})}\n`);
|
|
});
|