clawhub/convex/http.ts
2026-01-19 03:09:27 +00:00

195 lines
3.4 KiB
TypeScript

import { ApiRoutes, LegacyApiRoutes } from 'clawdhub-schema'
import { httpRouter } from 'convex/server'
import { auth } from './auth'
import { downloadZip } from './downloads'
import {
cliPublishHttp,
cliSkillDeleteHttp,
cliSkillUndeleteHttp,
cliTelemetrySyncHttp,
cliUploadUrlHttp,
cliWhoamiHttp,
getSkillHttp,
resolveSkillVersionHttp,
searchSkillsHttp,
} from './httpApi'
import {
listSkillsV1Http,
listSoulsV1Http,
publishSkillV1Http,
publishSoulV1Http,
resolveSkillVersionV1Http,
searchSkillsV1Http,
skillsDeleteRouterV1Http,
skillsGetRouterV1Http,
skillsPostRouterV1Http,
soulsDeleteRouterV1Http,
soulsGetRouterV1Http,
soulsPostRouterV1Http,
starsDeleteRouterV1Http,
starsPostRouterV1Http,
whoamiV1Http,
} from './httpApiV1'
const http = httpRouter()
auth.addHttpRoutes(http)
http.route({
path: ApiRoutes.download,
method: 'GET',
handler: downloadZip,
})
http.route({
path: ApiRoutes.search,
method: 'GET',
handler: searchSkillsV1Http,
})
http.route({
path: ApiRoutes.resolve,
method: 'GET',
handler: resolveSkillVersionV1Http,
})
http.route({
path: ApiRoutes.skills,
method: 'GET',
handler: listSkillsV1Http,
})
http.route({
pathPrefix: `${ApiRoutes.skills}/`,
method: 'GET',
handler: skillsGetRouterV1Http,
})
http.route({
path: ApiRoutes.skills,
method: 'POST',
handler: publishSkillV1Http,
})
http.route({
pathPrefix: `${ApiRoutes.skills}/`,
method: 'POST',
handler: skillsPostRouterV1Http,
})
http.route({
pathPrefix: `${ApiRoutes.skills}/`,
method: 'DELETE',
handler: skillsDeleteRouterV1Http,
})
http.route({
pathPrefix: `${ApiRoutes.stars}/`,
method: 'POST',
handler: starsPostRouterV1Http,
})
http.route({
pathPrefix: `${ApiRoutes.stars}/`,
method: 'DELETE',
handler: starsDeleteRouterV1Http,
})
http.route({
path: ApiRoutes.whoami,
method: 'GET',
handler: whoamiV1Http,
})
http.route({
path: ApiRoutes.souls,
method: 'GET',
handler: listSoulsV1Http,
})
http.route({
pathPrefix: `${ApiRoutes.souls}/`,
method: 'GET',
handler: soulsGetRouterV1Http,
})
http.route({
path: ApiRoutes.souls,
method: 'POST',
handler: publishSoulV1Http,
})
http.route({
pathPrefix: `${ApiRoutes.souls}/`,
method: 'POST',
handler: soulsPostRouterV1Http,
})
http.route({
pathPrefix: `${ApiRoutes.souls}/`,
method: 'DELETE',
handler: soulsDeleteRouterV1Http,
})
// TODO: remove legacy /api routes after deprecation window.
http.route({
path: LegacyApiRoutes.download,
method: 'GET',
handler: downloadZip,
})
http.route({
path: LegacyApiRoutes.search,
method: 'GET',
handler: searchSkillsHttp,
})
http.route({
path: LegacyApiRoutes.skill,
method: 'GET',
handler: getSkillHttp,
})
http.route({
path: LegacyApiRoutes.skillResolve,
method: 'GET',
handler: resolveSkillVersionHttp,
})
http.route({
path: LegacyApiRoutes.cliWhoami,
method: 'GET',
handler: cliWhoamiHttp,
})
http.route({
path: LegacyApiRoutes.cliUploadUrl,
method: 'POST',
handler: cliUploadUrlHttp,
})
http.route({
path: LegacyApiRoutes.cliPublish,
method: 'POST',
handler: cliPublishHttp,
})
http.route({
path: LegacyApiRoutes.cliTelemetrySync,
method: 'POST',
handler: cliTelemetrySyncHttp,
})
http.route({
path: LegacyApiRoutes.cliSkillDelete,
method: 'POST',
handler: cliSkillDeleteHttp,
})
http.route({
path: LegacyApiRoutes.cliSkillUndelete,
method: 'POST',
handler: cliSkillUndeleteHttp,
})
export default http