project-nomad/admin/start/routes.ts
Henry Estela c8ce28a84f
fix(ai-chat): ingestion of documents with openai and add cleanup button
Added a cleanup failed button for Processing Queue in the Knowledge Base
since documents that fail to process tend to get stuck and then can't be
cleared.

Fixed the ingestion of documents for OpenAI servers.

Updated some text in the chat and chat settings since user will need to
manually download models when using a non-ollama remote gpu server.
2026-03-25 17:18:05 -07:00

193 lines
8.2 KiB
TypeScript

/*
|--------------------------------------------------------------------------
| Routes file
|--------------------------------------------------------------------------
|
| The routes file is used for defining the HTTP routes.
|
*/
import BenchmarkController from '#controllers/benchmark_controller'
import ChatsController from '#controllers/chats_controller'
import DocsController from '#controllers/docs_controller'
import DownloadsController from '#controllers/downloads_controller'
import EasySetupController from '#controllers/easy_setup_controller'
import HomeController from '#controllers/home_controller'
import MapsController from '#controllers/maps_controller'
import OllamaController from '#controllers/ollama_controller'
import RagController from '#controllers/rag_controller'
import SettingsController from '#controllers/settings_controller'
import SystemController from '#controllers/system_controller'
import CollectionUpdatesController from '#controllers/collection_updates_controller'
import ZimController from '#controllers/zim_controller'
import router from '@adonisjs/core/services/router'
import transmit from '@adonisjs/transmit/services/main'
transmit.registerRoutes()
router.get('/', [HomeController, 'index'])
router.get('/home', [HomeController, 'home'])
router.on('/about').renderInertia('about')
router.get('/chat', [ChatsController, 'inertia'])
router.get('/maps', [MapsController, 'index'])
router.on('/knowledge-base').redirectToPath('/chat?knowledge_base=true') // redirect for legacy knowledge-base links
router.get('/easy-setup', [EasySetupController, 'index'])
router.get('/easy-setup/complete', [EasySetupController, 'complete'])
router.get('/api/easy-setup/curated-categories', [EasySetupController, 'listCuratedCategories'])
router.post('/api/manifests/refresh', [EasySetupController, 'refreshManifests'])
router
.group(() => {
router.post('/check', [CollectionUpdatesController, 'checkForUpdates'])
router.post('/apply', [CollectionUpdatesController, 'applyUpdate'])
router.post('/apply-all', [CollectionUpdatesController, 'applyAllUpdates'])
})
.prefix('/api/content-updates')
router
.group(() => {
router.get('/system', [SettingsController, 'system'])
router.get('/apps', [SettingsController, 'apps'])
router.get('/legal', [SettingsController, 'legal'])
router.get('/maps', [SettingsController, 'maps'])
router.get('/models', [SettingsController, 'models'])
router.get('/update', [SettingsController, 'update'])
router.get('/zim', [SettingsController, 'zim'])
router.get('/zim/remote-explorer', [SettingsController, 'zimRemote'])
router.get('/benchmark', [SettingsController, 'benchmark'])
router.get('/support', [SettingsController, 'support'])
})
.prefix('/settings')
router
.group(() => {
router.get('/:slug', [DocsController, 'show'])
router.get('/', ({ response }) => {
// redirect to /docs/home if accessing root
response.redirect('/docs/home')
})
})
.prefix('/docs')
router
.group(() => {
router.get('/regions', [MapsController, 'listRegions'])
router.get('/styles', [MapsController, 'styles'])
router.get('/curated-collections', [MapsController, 'listCuratedCollections'])
router.post('/fetch-latest-collections', [MapsController, 'fetchLatestCollections'])
router.post('/download-base-assets', [MapsController, 'downloadBaseAssets'])
router.post('/download-remote', [MapsController, 'downloadRemote'])
router.post('/download-remote-preflight', [MapsController, 'downloadRemotePreflight'])
router.post('/download-collection', [MapsController, 'downloadCollection'])
router.delete('/:filename', [MapsController, 'delete'])
})
.prefix('/api/maps')
router
.group(() => {
router.get('/list', [DocsController, 'list'])
})
.prefix('/api/docs')
router
.group(() => {
router.get('/jobs', [DownloadsController, 'index'])
router.get('/jobs/:filetype', [DownloadsController, 'filetype'])
router.delete('/jobs/:jobId', [DownloadsController, 'removeJob'])
})
.prefix('/api/downloads')
router.get('/api/health', () => {
return { status: 'ok' }
})
router
.group(() => {
router.post('/chat', [OllamaController, 'chat'])
router.get('/models', [OllamaController, 'availableModels'])
router.post('/models', [OllamaController, 'dispatchModelDownload'])
router.delete('/models', [OllamaController, 'deleteModel'])
router.get('/installed-models', [OllamaController, 'installedModels'])
router.post('/configure-remote', [OllamaController, 'configureRemote'])
})
.prefix('/api/ollama')
router
.group(() => {
router.get('/', [ChatsController, 'index'])
router.post('/', [ChatsController, 'store'])
router.delete('/all', [ChatsController, 'destroyAll'])
router.get('/:id', [ChatsController, 'show'])
router.put('/:id', [ChatsController, 'update'])
router.delete('/:id', [ChatsController, 'destroy'])
router.post('/:id/messages', [ChatsController, 'addMessage'])
})
.prefix('/api/chat/sessions')
router.get('/api/chat/suggestions', [ChatsController, 'suggestions'])
router
.group(() => {
router.post('/upload', [RagController, 'upload'])
router.get('/files', [RagController, 'getStoredFiles'])
router.delete('/files', [RagController, 'deleteFile'])
router.get('/active-jobs', [RagController, 'getActiveJobs'])
router.get('/failed-jobs', [RagController, 'getFailedJobs'])
router.delete('/failed-jobs', [RagController, 'cleanupFailedJobs'])
router.get('/job-status', [RagController, 'getJobStatus'])
router.post('/sync', [RagController, 'scanAndSync'])
})
.prefix('/api/rag')
router
.group(() => {
router.get('/debug-info', [SystemController, 'getDebugInfo'])
router.get('/info', [SystemController, 'getSystemInfo'])
router.get('/internet-status', [SystemController, 'getInternetStatus'])
router.get('/services', [SystemController, 'getServices'])
router.post('/services/affect', [SystemController, 'affectService'])
router.post('/services/install', [SystemController, 'installService'])
router.post('/services/force-reinstall', [SystemController, 'forceReinstallService'])
router.post('/services/check-updates', [SystemController, 'checkServiceUpdates'])
router.get('/services/:name/available-versions', [SystemController, 'getAvailableVersions'])
router.post('/services/update', [SystemController, 'updateService'])
router.post('/subscribe-release-notes', [SystemController, 'subscribeToReleaseNotes'])
router.get('/latest-version', [SystemController, 'checkLatestVersion'])
router.post('/update', [SystemController, 'requestSystemUpdate'])
router.get('/update/status', [SystemController, 'getSystemUpdateStatus'])
router.get('/update/logs', [SystemController, 'getSystemUpdateLogs'])
router.get('/settings', [SettingsController, 'getSetting'])
router.patch('/settings', [SettingsController, 'updateSetting'])
})
.prefix('/api/system')
router
.group(() => {
router.get('/list', [ZimController, 'list'])
router.get('/list-remote', [ZimController, 'listRemote'])
router.get('/curated-categories', [ZimController, 'listCuratedCategories'])
router.post('/download-remote', [ZimController, 'downloadRemote'])
router.post('/download-category-tier', [ZimController, 'downloadCategoryTier'])
router.get('/wikipedia', [ZimController, 'getWikipediaState'])
router.post('/wikipedia/select', [ZimController, 'selectWikipedia'])
router.delete('/:filename', [ZimController, 'delete'])
})
.prefix('/api/zim')
router
.group(() => {
router.post('/run', [BenchmarkController, 'run'])
router.post('/run/system', [BenchmarkController, 'runSystem'])
router.post('/run/ai', [BenchmarkController, 'runAI'])
router.get('/results', [BenchmarkController, 'results'])
router.get('/results/latest', [BenchmarkController, 'latest'])
router.get('/results/:id', [BenchmarkController, 'show'])
router.post('/submit', [BenchmarkController, 'submit'])
router.post('/builder-tag', [BenchmarkController, 'updateBuilderTag'])
router.get('/comparison', [BenchmarkController, 'comparison'])
router.get('/status', [BenchmarkController, 'status'])
router.get('/settings', [BenchmarkController, 'settings'])
router.post('/settings', [BenchmarkController, 'updateSettings'])
})
.prefix('/api/benchmark')