feat: remove legacy /chat endpoint (#428)

* feat: remove legacy chat endpoint alias

* refactor: rename chat-v2 to chat
This commit is contained in:
Nikhil
2026-03-06 09:29:42 -08:00
committed by GitHub
parent 9b0c484d06
commit bc53ff52e5
5 changed files with 33 additions and 23 deletions

View File

@@ -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,

View File

@@ -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,

View File

@@ -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,

View File

@@ -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`

View File

@@ -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',
)
})
})
})