diff --git a/apps/server/src/api/routes/chat-v2.ts b/apps/server/src/api/routes/chat.ts similarity index 89% rename from apps/server/src/api/routes/chat-v2.ts rename to apps/server/src/api/routes/chat.ts index b237376bb..4ae5bd005 100644 --- a/apps/server/src/api/routes/chat-v2.ts +++ b/apps/server/src/api/routes/chat.ts @@ -10,11 +10,11 @@ import type { RateLimiter } from '../../lib/rate-limiter/rate-limiter' import { Sentry } from '../../lib/sentry' import type { ToolRegistry } from '../../tools/tool-registry' import { createBrowserosRateLimitMiddleware } from '../middleware/rate-limit' -import { ChatV2Service } from '../services/chat-v2-service' +import { ChatService } from '../services/chat-service' import { ChatRequestSchema } from '../types' import { ConversationIdParamSchema } from '../utils/validation' -interface ChatV2RouteDeps { +interface ChatRouteDeps { browser: Browser registry: ToolRegistry executionDir?: string @@ -22,14 +22,13 @@ interface ChatV2RouteDeps { rateLimiter?: RateLimiter } -export function createChatV2Routes(deps: ChatV2RouteDeps) { +export function createChatRoutes(deps: ChatRouteDeps) { const { browserosId, rateLimiter } = deps const executionDir = deps.executionDir || PATHS.DEFAULT_EXECUTION_DIR - // Initialize service dependencies const sessionStore = new SessionStore() const klavisClient = new KlavisClient() - const service = new ChatV2Service({ + const service = new ChatService({ sessionStore, klavisClient, executionDir, @@ -57,12 +56,12 @@ export function createChatV2Routes(deps: ChatV2RouteDeps) { baseUrl: request.baseUrl, }) - metrics.log('chat-v2.request', { + metrics.log('chat.request', { provider: request.provider, model: request.model, }) - logger.info('Chat-v2 request received', { + logger.info('Chat request received', { conversationId: request.conversationId, provider: request.provider, model: request.model, diff --git a/apps/server/src/api/server.ts b/apps/server/src/api/server.ts index f38ee2fd7..a8e7782e7 100644 --- a/apps/server/src/api/server.ts +++ b/apps/server/src/api/server.ts @@ -16,7 +16,7 @@ import type { ContentfulStatusCode } from 'hono/utils/http-status' import { HttpAgentError } from '../agent/errors' import { KlavisClient } from '../lib/clients/klavis/klavis-client' import { logger } from '../lib/logger' -import { createChatV2Routes } from './routes/chat-v2' +import { createChatRoutes } from './routes/chat' import { createGraphRoutes } from './routes/graph' import { createHealthRoute } from './routes/health' import { createKlavisRoutes } from './routes/klavis' @@ -120,17 +120,7 @@ export async function createHttpServer(config: HttpServerConfig) { ) .route( '/chat', - createChatV2Routes({ - browser, - registry, - executionDir, - browserosId, - rateLimiter, - }), - ) - .route( - '/chat-v2', - createChatV2Routes({ + createChatRoutes({ browser, registry, executionDir, diff --git a/apps/server/src/api/services/chat-v2-service.ts b/apps/server/src/api/services/chat-service.ts similarity index 98% rename from apps/server/src/api/services/chat-v2-service.ts rename to apps/server/src/api/services/chat-service.ts index ca5ceb20e..2cf07a1d0 100644 --- a/apps/server/src/api/services/chat-v2-service.ts +++ b/apps/server/src/api/services/chat-service.ts @@ -18,7 +18,7 @@ import { logger } from '../../lib/logger' import type { ToolRegistry } from '../../tools/tool-registry' import type { BrowserContext, ChatRequest } from '../types' -export interface ChatV2ServiceDeps { +export interface ChatServiceDeps { sessionStore: SessionStore klavisClient: KlavisClient executionDir: string @@ -27,8 +27,8 @@ export interface ChatV2ServiceDeps { browserosId?: string } -export class ChatV2Service { - constructor(private deps: ChatV2ServiceDeps) {} +export class ChatService { + constructor(private deps: ChatServiceDeps) {} async processMessage( request: ChatRequest, diff --git a/apps/server/src/api/services/sdk/chat.ts b/apps/server/src/api/services/sdk/chat.ts index c89881ff8..22afcb8b4 100644 --- a/apps/server/src/api/services/sdk/chat.ts +++ b/apps/server/src/api/services/sdk/chat.ts @@ -24,7 +24,7 @@ export interface ExecuteActionOptions { } export class ChatService { - private chatUrl: string + private readonly chatUrl: string constructor(port: number) { this.chatUrl = `http://127.0.0.1:${port}/chat` diff --git a/apps/server/tests/server.integration.test.ts b/apps/server/tests/server.integration.test.ts index 035aa1983..20f4733cf 100644 --- a/apps/server/tests/server.integration.test.ts +++ b/apps/server/tests/server.integration.test.ts @@ -235,5 +235,26 @@ describe('HTTP Server Integration Tests', () => { 'Should return 400 for invalid request', ) }) + + it('does not expose the removed /chat-v2 endpoint', async () => { + const response = await fetch(`${getBaseUrl()}/chat-v2`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + conversationId: crypto.randomUUID(), + message: 'Hello', + provider: 'browseros', + model: 'claude-sonnet-4-20250514', + }), + }) + + assert.strictEqual( + response.status, + 404, + 'Removed /chat-v2 should return 404', + ) + }) }) })