const express = require('express') const app = express() const port = 43434 // Middleware for JSON parsing app.use(express.json()) // Middleware to check Bearer token app.use((req, res, next) => { const authHeader = req.headers.authorization if (!authHeader || !authHeader.startsWith('Bearer ')) { return res.status(401).json({ error: 'Missing or invalid authorization header' }) } next() }) // Helper function to extract user input from message function extractUserInput (message) { const match = message.match(/user input: "([^"]*)"/) return match ? match[1] : '' } // Generate 5 fake commands that start with user input function generateTestCommands (userInput) { return [ `${userInput}-test-command-1`, `${userInput}-test-command-2`, `${userInput}-test-command-3`, `${userInput}-test-command-4`, `${userInput}-test-command-5` ] } // Generate a test bookmark based on description function generateTestBookmark (description) { return { title: 'Test Server', host: 'test.example.com', port: 22, username: 'testuser', type: 'ssh', description } } // Chat completions endpoint app.post('/chat/completions', (req, res) => { const { messages, stream } = req.body const lastMessage = messages[messages.length - 1].content if (lastMessage.includes('give me max 5 command suggestions for user input')) { const userInput = extractUserInput(lastMessage) const mockSuggestions = generateTestCommands(userInput) // Command suggestions are always non-streaming res.json({ choices: [{ message: { content: JSON.stringify(mockSuggestions) } }] }) } else if (lastMessage.includes('Generate the bookmark JSON')) { const bookmarkData = generateTestBookmark(lastMessage) res.json({ choices: [{ message: { content: JSON.stringify(bookmarkData, null, 2) } }] }) } else if (stream) { // Handle streaming response res.writeHead(200, { 'Content-Type': 'text/plain', 'Transfer-Encoding': 'chunked' }) const mockResponse = '# Response to your query\n\n' + 'Here is a sample response with different markdown elements:\n\n' + '## Code Example\n' + '```javascript\n' + 'console.log("Hello World!");\n' + '```\n\n' + '## List Example\n' + '- Item 1\n' + '- Item 2\n' + '- Item 3\n\n' + '## Text Formatting\n' + '**Bold text** and *italic text*\n\n' + '> This is a blockquote\n\n' + '[This is a link](https://example.com)' // Split response into chunks and send as streaming data const chunks = mockResponse.split(' ') let index = 0 const sendChunk = () => { if (index < chunks.length) { const content = chunks[index] + (index < chunks.length - 1 ? ' ' : '') const streamData = { choices: [{ delta: { content } }] } res.write(`data: ${JSON.stringify(streamData)}\n\n`) index++ setTimeout(sendChunk, 50) // Simulate streaming delay } else { res.write('data: [DONE]\n\n') res.end() } } sendChunk() } else { // Handle non-streaming response const mockResponse = '# Response to your query\n\n' + 'Here is a sample response with different markdown elements:\n\n' + '## Code Example\n' + '```javascript\n' + 'console.log("Hello World!");\n' + '```\n\n' + '## List Example\n' + '- Item 1\n' + '- Item 2\n' + '- Item 3\n\n' + '## Text Formatting\n' + '**Bold text** and *italic text*\n\n' + '> This is a blockquote\n\n' + '[This is a link](https://example.com)' res.json({ choices: [{ message: { content: mockResponse } }] }) } }) app.listen(port, '127.0.0.1', () => { console.log(`Mock AI API server running at http://127.0.0.1:${port}`) })