feat: Add REST API endpoints to Trinity Core (v2.2.0)
- GET /servers — list available servers (for Arbiter) - POST /exec — execute command on server (for Arbiter) - REST endpoints run alongside MCP protocol - MCP for Claude.ai connector, REST for Arbiter internal calls - Fixes Infrastructure module 404 errors - Version bump 2.1.0 → 2.2.0 Chronicler #78 | firefrost-services
This commit is contained in:
@@ -131,10 +131,40 @@ function setupToolHandlers(mcpServer) {
|
||||
|
||||
const activeSessions = new Map();
|
||||
|
||||
// ─── REST API (for Arbiter / internal services) ───
|
||||
|
||||
app.get('/servers', auth, (req, res) => {
|
||||
log(`REST /servers`);
|
||||
res.json({ servers: Object.keys(SERVERS) });
|
||||
});
|
||||
|
||||
app.post('/exec', auth, async (req, res) => {
|
||||
const { server, command } = req.body;
|
||||
if (!server || !command) {
|
||||
return res.status(400).json({ error: 'Missing server or command' });
|
||||
}
|
||||
if (!SERVERS[server]) {
|
||||
return res.status(400).json({ error: `Unknown server: ${server}` });
|
||||
}
|
||||
const target = SERVERS[server];
|
||||
const result = target.local
|
||||
? await executeLocal(command)
|
||||
: await executeSSH(server, command);
|
||||
log(`REST /exec [${server}] -> ${result.success ? 'OK' : 'FAIL'}`);
|
||||
res.json({
|
||||
success: result.success,
|
||||
output: result.stdout || '',
|
||||
stderr: result.stderr || '',
|
||||
error: result.error
|
||||
});
|
||||
});
|
||||
|
||||
// ─── MCP Protocol (for Claude.ai connector) ───
|
||||
|
||||
app.get('/mcp', auth, async (req, res) => {
|
||||
log(`SSE connection from ${req.ip}`);
|
||||
|
||||
const mcpServer = new Server({ name: "trinity-core", version: "2.1.0" }, { capabilities: { tools: {} } });
|
||||
const mcpServer = new Server({ name: "trinity-core", version: "2.2.0" }, { capabilities: { tools: {} } });
|
||||
setupToolHandlers(mcpServer);
|
||||
|
||||
mcpServer.onmessage = (msg) => log(`SERVER MSG: ${JSON.stringify(msg)}`);
|
||||
@@ -171,4 +201,4 @@ app.post('/mcp/messages', auth, async (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
app.listen(PORT, () => log(`Trinity Core MCP v2.1.0 started on port ${PORT}`));
|
||||
app.listen(PORT, () => log(`Trinity Core MCP v2.2.0 started on port ${PORT}`));
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "trinity-core",
|
||||
"version": "2.1.0",
|
||||
"version": "2.2.0",
|
||||
"type": "module",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
|
||||
Reference in New Issue
Block a user