Files
recflare/apps/moderation/src/moderation.app.ts
T
2026-08-21 15:16:00 -04:00

39 lines
1.2 KiB
TypeScript

import { Hono } from 'hono'
import { useWorkersLogger } from 'workers-tagged-logger'
import { withNotFound, withOnError } from '@repo/hono-helpers'
import type { App } from './context'
const app = new Hono<App>()
.use(
'*',
// middleware
(c, next) =>
useWorkersLogger(c.env.NAME, {
environment: c.env.ENVIRONMENT,
release: c.env.SENTRY_RELEASE,
})(c, next)
)
.onError(withOnError())
.notFound(withNotFound())
.get('/', async (c) => {
return c.text('hello, world!')
})
// Voice-moderation vendor credentials. The client fetches these while setting up voice
// so it can talk to the moderation vendor DIRECTLY — the audio never passes through this
// service, which is why the credentials are handed out rather than used server-side.
//
// Both are deliberately EMPTY: no vendor account is wired up here, and the client treats
// blank credentials as "voice moderation is off" instead of failing voice setup. The keys
// must still be present and strings — a missing key or a null trips the client's parser.
// Note `AccountId` is a STRING even though it reads as a number.
.get('/voice/config', (c) => {
return c.json({ AccountId: '', ApiKey: '' })
})
export default app