mirror of
https://github.com/NanmiCoder/cc-haha
synced 2026-07-16 13:03:31 +08:00
108 lines
3.3 KiB
TypeScript
108 lines
3.3 KiB
TypeScript
/**
|
|
* API Router — 将请求路由到对应的 API handler
|
|
*/
|
|
|
|
import { handleSessionsApi } from './api/sessions.js'
|
|
import { handleSettingsApi } from './api/settings.js'
|
|
import { handleModelsApi } from './api/models.js'
|
|
import { handleScheduledTasksApi } from './api/scheduled-tasks.js'
|
|
import { handleSearchApi } from './api/search.js'
|
|
import { handleAgentsApi } from './api/agents.js'
|
|
import { handleStatusApi } from './api/status.js'
|
|
import { handleConversationsApi } from './api/conversations.js'
|
|
import { handleTeamsApi } from './api/teams.js'
|
|
import { handleFilesystemRoute } from './api/filesystem.js'
|
|
import { handleProvidersApi } from './api/providers.js'
|
|
import { handleAdaptersApi } from './api/adapters.js'
|
|
import { handlePluginsApi } from './api/plugins.js'
|
|
import { handleSkillsApi } from './api/skills.js'
|
|
import { handleComputerUseApi } from './api/computer-use.js'
|
|
import { handleHahaOAuthApi } from './api/haha-oauth.js'
|
|
import { handleHahaOpenAIOAuthApi } from './api/haha-openai-oauth.js'
|
|
import { handleMcpApi } from './api/mcp.js'
|
|
import { handleDiagnosticsApi } from './api/diagnostics.js'
|
|
|
|
export async function handleApiRequest(req: Request, url: URL): Promise<Response> {
|
|
const path = url.pathname
|
|
const segments = path.split('/').filter(Boolean) // ['api', 'sessions', ...]
|
|
|
|
// Route to appropriate handler based on the second segment
|
|
const resource = segments[1]
|
|
|
|
switch (resource) {
|
|
case 'sessions': {
|
|
// Route /api/sessions/:id/chat/* to conversations handler
|
|
const subResource = segments[3]
|
|
if (subResource === 'chat') {
|
|
return handleConversationsApi(req, url, segments)
|
|
}
|
|
return handleSessionsApi(req, url, segments)
|
|
}
|
|
|
|
case 'conversations':
|
|
return handleConversationsApi(req, url, segments)
|
|
|
|
case 'settings':
|
|
return handleSettingsApi(req, url, segments)
|
|
|
|
case 'models':
|
|
case 'effort':
|
|
return handleModelsApi(req, url, segments)
|
|
|
|
case 'permissions':
|
|
return handleSettingsApi(req, url, segments) // permissions under settings
|
|
|
|
case 'scheduled-tasks':
|
|
return handleScheduledTasksApi(req, url, segments)
|
|
|
|
case 'search':
|
|
return handleSearchApi(req, url, segments)
|
|
|
|
case 'agents':
|
|
case 'tasks':
|
|
return handleAgentsApi(req, url, segments)
|
|
|
|
case 'status':
|
|
return handleStatusApi(req, url, segments)
|
|
|
|
case 'teams':
|
|
return handleTeamsApi(req, url, segments)
|
|
|
|
case 'providers':
|
|
return handleProvidersApi(req, url, segments)
|
|
|
|
case 'haha-oauth':
|
|
return handleHahaOAuthApi(req, url, segments)
|
|
|
|
case 'haha-openai-oauth':
|
|
return handleHahaOpenAIOAuthApi(req, url, segments)
|
|
|
|
case 'adapters':
|
|
return handleAdaptersApi(req, url, segments)
|
|
|
|
case 'skills':
|
|
return handleSkillsApi(req, url, segments)
|
|
|
|
case 'mcp':
|
|
return handleMcpApi(req, url, segments)
|
|
|
|
case 'plugins':
|
|
return handlePluginsApi(req, url, segments)
|
|
|
|
case 'computer-use':
|
|
return handleComputerUseApi(req, url, segments)
|
|
|
|
case 'diagnostics':
|
|
return handleDiagnosticsApi(req, url, segments)
|
|
|
|
case 'filesystem':
|
|
return handleFilesystemRoute(url.pathname, url)
|
|
|
|
default:
|
|
return Response.json(
|
|
{ error: 'Not Found', message: `Unknown API resource: ${resource}` },
|
|
{ status: 404 }
|
|
)
|
|
}
|
|
}
|