Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions src/routeTree.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import { Route as ApiSessionsRouteImport } from './routes/api/sessions'
import { Route as ApiSessionStatusRouteImport } from './routes/api/session-status'
import { Route as ApiSendStreamRouteImport } from './routes/api/send-stream'
import { Route as ApiSendRouteImport } from './routes/api/send'
import { Route as ApiPingRouteImport } from './routes/api/ping'
import { Route as ApiPathsRouteImport } from './routes/api/paths'
import { Route as ApiModelsRouteImport } from './routes/api/models'
import { Route as ApiHistoryRouteImport } from './routes/api/history'
Expand Down Expand Up @@ -169,6 +170,11 @@ const ApiSendRoute = ApiSendRouteImport.update({
path: '/api/send',
getParentRoute: () => rootRouteImport,
} as any)
const ApiPingRoute = ApiPingRouteImport.update({
id: '/api/ping',
path: '/api/ping',
getParentRoute: () => rootRouteImport,
} as any)
const ApiPathsRoute = ApiPathsRouteImport.update({
id: '/api/paths',
path: '/api/paths',
Expand Down Expand Up @@ -297,6 +303,7 @@ export interface FileRoutesByFullPath {
'/api/history': typeof ApiHistoryRoute
'/api/models': typeof ApiModelsRoute
'/api/paths': typeof ApiPathsRoute
'/api/ping': typeof ApiPingRoute
'/api/send': typeof ApiSendRoute
'/api/send-stream': typeof ApiSendStreamRoute
'/api/session-status': typeof ApiSessionStatusRoute
Expand Down Expand Up @@ -342,6 +349,7 @@ export interface FileRoutesByTo {
'/api/history': typeof ApiHistoryRoute
'/api/models': typeof ApiModelsRoute
'/api/paths': typeof ApiPathsRoute
'/api/ping': typeof ApiPingRoute
'/api/send': typeof ApiSendRoute
'/api/send-stream': typeof ApiSendStreamRoute
'/api/session-status': typeof ApiSessionStatusRoute
Expand Down Expand Up @@ -389,6 +397,7 @@ export interface FileRoutesById {
'/api/history': typeof ApiHistoryRoute
'/api/models': typeof ApiModelsRoute
'/api/paths': typeof ApiPathsRoute
'/api/ping': typeof ApiPingRoute
'/api/send': typeof ApiSendRoute
'/api/send-stream': typeof ApiSendStreamRoute
'/api/session-status': typeof ApiSessionStatusRoute
Expand Down Expand Up @@ -437,6 +446,7 @@ export interface FileRouteTypes {
| '/api/history'
| '/api/models'
| '/api/paths'
| '/api/ping'
| '/api/send'
| '/api/send-stream'
| '/api/session-status'
Expand Down Expand Up @@ -482,6 +492,7 @@ export interface FileRouteTypes {
| '/api/history'
| '/api/models'
| '/api/paths'
| '/api/ping'
| '/api/send'
| '/api/send-stream'
| '/api/session-status'
Expand Down Expand Up @@ -528,6 +539,7 @@ export interface FileRouteTypes {
| '/api/history'
| '/api/models'
| '/api/paths'
| '/api/ping'
| '/api/send'
| '/api/send-stream'
| '/api/session-status'
Expand Down Expand Up @@ -575,6 +587,7 @@ export interface RootRouteChildren {
ApiHistoryRoute: typeof ApiHistoryRoute
ApiModelsRoute: typeof ApiModelsRoute
ApiPathsRoute: typeof ApiPathsRoute
ApiPingRoute: typeof ApiPingRoute
ApiSendRoute: typeof ApiSendRoute
ApiSendStreamRoute: typeof ApiSendStreamRoute
ApiSessionStatusRoute: typeof ApiSessionStatusRoute
Expand Down Expand Up @@ -759,6 +772,13 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof ApiSendRouteImport
parentRoute: typeof rootRouteImport
}
'/api/ping': {
id: '/api/ping'
path: '/api/ping'
fullPath: '/api/ping'
preLoaderRoute: typeof ApiPingRouteImport
parentRoute: typeof rootRouteImport
}
'/api/paths': {
id: '/api/paths'
path: '/api/paths'
Expand Down Expand Up @@ -970,6 +990,7 @@ const rootRouteChildren: RootRouteChildren = {
ApiHistoryRoute: ApiHistoryRoute,
ApiModelsRoute: ApiModelsRoute,
ApiPathsRoute: ApiPathsRoute,
ApiPingRoute: ApiPingRoute,
ApiSendRoute: ApiSendRoute,
ApiSendStreamRoute: ApiSendStreamRoute,
ApiSessionStatusRoute: ApiSessionStatusRoute,
Expand Down
55 changes: 55 additions & 0 deletions src/routes/api/ping.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import { createFileRoute } from '@tanstack/react-router'
import {
HERMES_API,
ensureGatewayProbed,
} from '../../server/gateway-capabilities'
import { requireLocalOrAuth } from '../../server/auth-middleware'

type PingResponse = {
ok: boolean
error?: string
status?: number
hermesUrl: string
}

export const Route = createFileRoute('/api/ping')({
server: {
handlers: {
GET: async ({ request }) => {
if (!requireLocalOrAuth(request)) {
return Response.json(
{
ok: false,
error: 'Authentication required',
status: 401,
hermesUrl: HERMES_API,
} satisfies PingResponse,
{ status: 401 },
)
}

const caps = await ensureGatewayProbed()
if (!caps.health) {
return Response.json(
{
ok: false,
error: 'Hermes unavailable',
status: 503,
hermesUrl: HERMES_API,
} satisfies PingResponse,
{ status: 503 },
)
}

return Response.json(
{
ok: true,
status: 200,
hermesUrl: HERMES_API,
} satisfies PingResponse,
{ status: 200 },
)
},
},
},
})