mirror of
https://github.com/browseros-ai/BrowserOS.git
synced 2026-05-14 16:14:28 +00:00
feat: remove legacy /chat endpoint (#428)
* feat: remove legacy chat endpoint alias * refactor: rename chat-v2 to chat
This commit is contained in:
@@ -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,
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
@@ -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`
|
||||
|
||||
@@ -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',
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user