Skip to main content

Global Capability Contracts

This executable inventory covers every explicit page route in frontend/src/App.tsx, every literal method/path declaration in every mounted backend/src/routes/*.ts Express router, and every literal WebSocket upgrade pathname in backend/src/websocketServer.ts. Each endpoint has exactly one capability owner, and every WebSocket endpoint has authentication evidence. Every capability also declares whether schemas, manifests, and defaults apply, with source evidence or a specific not-applicable reason, plus documentation and a named behavioral test registered in normal package or browser CI.

Executable provider details remain governed by scripts/capability-contracts.json and scripts/test-capability-contracts.mjs; this global inventory links to that contract instead of duplicating its manifest and default rules.

CapabilityUI routesHTTP endpointsWebSocket endpointsSchemasManifestsDefaultsDocumentationNamed behavioral tests
Home/00N/A — The Home page is a navigation and composition surface with no independent request or response payload.N/A — The Home page is built into the application and is not installed or discovered through a manifest.frontend/src/utils/welcomePrompts.tsdocs/00-README.mdnew chats rotate through distinct creator prompts
frontend/e2e/welcome-prompts.spec.ts (test:e2e)
Chat/chat
/c/:sessionId
221backend/src/types/index.tsscripts/capability-contracts.jsonbackend/src/services/preferencesService.tsdocs/01-QUICK_START.mdChatRequestService prepares target, persona prompt, and shared messages
scripts/test-chat-context.mjs (test:package)
Model management/models460backend/src/types/index.tsscripts/capability-contracts.jsonbackend/src/services/ollamaService.tsdocs/02-WORKING_WITH_MODELS.mdcloud library pulls append the Ollama cloud suffix automatically
frontend/e2e/model-manager.spec.ts (test:e2e)
Personas/personas120backend/src/types/index.tsN/A — Personas are account resources persisted by Libre and do not use an installable or discovery manifest.frontend/src/components/persona-form/defaults.tsdocs/16-PERSONA_DEVELOPMENT_FRAMEWORK.mdmemory insert acknowledgement loss resolves the committed row and retry is idempotent
scripts/test-memory-reliability.mjs (test:package)
Media gallery/gallery190backend/src/types/index.tsscripts/capability-contracts.jsonscripts/test-capability-contracts.mjsdocs/38-MEDIA_GENERATION.mdvideo jobs can stop waiting, reopen, and resume without losing the handle
frontend/e2e/media-generation.spec.ts (test:e2e)
Notes/notes40backend/src/types/index.tsN/A — Notes are first-party account resources and have no installable or discovery manifest.N/A — Notes have no implicit content or presentation default beyond explicit user-supplied fields.docs/03-PRO_TIPS.mdnotes open in Markdown preview and make editing explicit
frontend/e2e/notes.spec.ts (test:e2e)
Work/work
/work/:taskId
291backend/src/types/work.tsscripts/capability-contracts.jsonbackend/src/services/workRuntimeShared.tsdocs/33-WORKSPACES.mdruntime limits expose admission capacity and live occupancy
scripts/test-work-runtime.mjs (test:package)
production Work upgrade applies task-bound ticket authentication
scripts/test-websocket-tickets.mjs (test:package)
Agent CLI models/agents10backend/src/services/agentCliService.tsN/A — Agent CLI adapters are compiled first-party definitions and are not loaded from provider manifests.backend/src/services/agentAccessService.tsdocs/36-AGENT_CLI_MODELS.mdevery agent CLI passes an explicit model through to its argv
scripts/test-agent-cli-chat.mjs (test:package)
Artifacts/artifacts10frontend/src/utils/artifactParser.tsfrontend/src/artifact-runtime/manifest.tsfrontend/src/components/ArtifactSlideOutPanel.tsxdocs/13-ARTIFACTS_FEATURE.mdchat detects multi-file HTML artifacts and renders them in the slide-out panel
frontend/e2e/artifacts.spec.ts (test:e2e)
Provider usage/usage10backend/src/services/pluginUsageService.tsN/A — Usage analytics consume provider events but define no installable or discovery manifest of their own.backend/src/services/pluginUsageService.tsdocs/37-SYSTEM_MONITORING.mdthe usage endpoint is explicitly protected by administrator middleware
scripts/test-plugin-usage-analytics.mjs (test:package)
System diagnostics/system50backend/src/services/systemDiagnosticsService.tsN/A — System diagnostics are a built-in authenticated report and have no installable or discovery manifest.backend/src/services/healthService.tsdocs/37-SYSTEM_MONITORING.mdsystem route requires both authentication and current administrator status
scripts/test-system-diagnostics.mjs (test:package)
User administration/users70backend/src/types/index.tsN/A — User administration is a built-in identity capability and has no installable or discovery manifest.N/A — User role and account status are selected by bootstrap or approval policy rather than a reusable capability default.docs/12-AUTHENTICATION.mdpublic registrations require administrator approval before authentication
scripts/test-user-approval.mjs (test:package)
Authentication/login240backend/src/types/index.tsN/A — Authentication is a built-in security boundary and is not installed or discovered through a manifest.backend/src/services/registrationPolicy.tsdocs/12-AUTHENTICATION.md
docs/12-AUTHENTICATION.md
password login requires and submits a Turnstile token
frontend/e2e/auth.spec.ts (test:e2e)
revoking the session rejects its token with 401
scripts/test-auth-sessions.mjs (test:package)
scope-to-path matrix: notes scope on notes, chat, and auth routes
scripts/test-api-tokens.mjs (test:package)
verifyIdToken accepts a good token and returns its claims
scripts/test-oidc-provider.mjs (test:package)
Access Control120backend/src/persistence/securityTypes.tsN/A — Access control is a built-in security boundary and is not installed or discovered through a manifest.backend/src/services/authorizationService.tsdocs/12-AUTHENTICATION.mdgroup grants reach members and die with the membership
scripts/test-authorization.mjs (test:package)
a rolled-back duplicate group create leaves no audit row
scripts/test-security-audit.mjs (test:package)
Data portability30backend/src/services/dataArchiveService.tsbackend/src/services/dataArchiveService.tsbackend/src/services/dataArchiveService.tsdocs/41-DATA_PORTABILITY.mdv3 export is complete, checksummed, user-scoped, and explicit about exclusions
scripts/test-data-archive.mjs (test:package)
Document knowledge and retrieval150backend/src/types/index.tsscripts/capability-contracts.jsonbackend/src/services/preferencesService.tsdocs/09-RAG_FEATURE.mdkeyword retrieval sees session documents AND user-scoped uploads
scripts/test-rag-retrieval.mjs (test:package)
Persona memory60backend/src/types/index.tsN/A — Persona memory is an internal persona resource and has no installable or discovery manifest.frontend/src/components/persona-form/defaults.tsdocs/16-PERSONA_DEVELOPMENT_FRAMEWORK.mdpersona deletion during vector publication still removes the recreated vector
scripts/test-memory-reliability.mjs (test:package)
Web search50backend/src/services/webSearchService.tsN/A — Web search uses administrator connection settings rather than an installable provider manifest.backend/src/services/webSearchService.tsdocs/39-WEB_SEARCH.mdweb search ships disabled and validates its configuration
scripts/test-web-search.mjs (test:package)
Settings and preferences90backend/src/types/index.tsN/A — Settings aggregate first-party and provider configuration but do not define a separate installable manifest.backend/src/services/preferencesService.tsdocs/35-PROVIDER_CONNECTIONS.mdtheme preference survives refresh and retries a failed save
frontend/e2e/settings.spec.ts (test:e2e)
Speech input and output100backend/src/types/index.tsscripts/capability-contracts.jsonscripts/test-capability-contracts.mjsdocs/42-SPEECH_TO_TEXT.md
docs/27-QWEN3_TTS.md
STT sends an OpenAI-compatible multipart request to the selected route
scripts/test-stt-routing.mjs (test:package)
provider speech input discloses its route and transcribes recorded audio
frontend/e2e/stt.spec.ts (test:e2e)
invalid provider audio is rejected safely without inserting a transcript
frontend/e2e/stt.spec.ts (test:e2e)
TTS routes a shared model alias through the selected plugin and user valve
scripts/test-tts-routing.mjs (test:package)
Hugging Face Hub70backend/src/routes/huggingfaceHub.tsN/A — Hub model metadata is remote API data; Libre defines no local installable manifest for the browser capability.backend/src/routes/huggingfaceHub.tsdocs/29-HUGGINGFACE_HUB.mdHugging Face Hub task discovery is authenticated route behavior
scripts/test-huggingface-hub-routes.mjs (test:package)
Libre Claw260backend/src/services/libreClawService.tsN/A — Libre Claw is an explicitly configured service integration and does not use a Libre provider manifest.backend/src/services/libreClawService.tsdocs/31-LIBRE_CLAW_INTEGRATION.mdWork and Agents are hidden and route-protected for non-admin users
frontend/e2e/sidebar-create-actions.spec.ts (test:e2e)
Durable jobs and events40backend/src/platform/jobs/durableJobTypes.tsN/A — Durable jobs use registered handler types and persisted payload contracts, not installable manifests.backend/src/platform/jobs/embeddedDurableJobWorker.tsdocs/45-PLATFORM_FOUNDATION.mdordered event replay uses global cursors and per-stream sequences
scripts/test-durable-jobs.mjs (test:package)
Solo and team deployment profiles00backend/src/platform/runtimeConfig.tshelm/libre-webui/values.schema.jsonhelm/libre-webui/values.yamldocs/45-PLATFORM_FOUNDATION.mdreal Redis coordinates independent replicas and fails closed after shutdown
scripts/test-platform-coordination.mjs (test:package)
Recovery and backup00backend/src/services/recoveryInventoryService.tsbackend/src/platform/recovery/backupArchive.tsbackend/src/services/recoveryInventoryService.tsdocs/44-RECOVERY_READINESS.mdintegrated backup is signed, encrypted, tamper-evident, and clean-restorable
scripts/test-integrated-backup.mjs (test:package)
team backup restores a clean PostgreSQL and versioned S3 target with authenticated PGVector state
scripts/test-team-backup.mjs (test:package)

Exact backend route inventory

Home

No mounted Express endpoint. The executable boundary is the UI and/or source evidence recorded above.

Chat

  • DELETE /api/chat/folders/:folderIdbackend/src/routes/chat.ts (mount /api/chat, subpath /folders/:folderId)
  • DELETE /api/chat/sessionsbackend/src/routes/chat.ts (mount /api/chat, subpath /sessions)
  • DELETE /api/chat/sessions/:sessionIdbackend/src/routes/chat.ts (mount /api/chat, subpath /sessions/:sessionId)
  • GET /api/chat/foldersbackend/src/routes/chat.ts (mount /api/chat, subpath /folders)
  • GET /api/chat/sessionsbackend/src/routes/chat.ts (mount /api/chat, subpath /sessions)
  • GET /api/chat/sessions/:sessionIdbackend/src/routes/chat.ts (mount /api/chat, subpath /sessions/:sessionId)
  • GET /api/chat/sessions/:sessionId/eventsbackend/src/routes/chat.ts (mount /api/chat, subpath /sessions/:sessionId/events)
  • GET /api/chat/sessions/:sessionId/messages/:messageId/branchesbackend/src/routes/chat.ts (mount /api/chat, subpath /sessions/:sessionId/messages/:messageId/branches)
  • POST /api/chat/foldersbackend/src/routes/chat.ts (mount /api/chat, subpath /folders)
  • POST /api/chat/sessionsbackend/src/routes/chat.ts (mount /api/chat, subpath /sessions)
  • POST /api/chat/sessions/:sessionId/followupsbackend/src/routes/chat.ts (mount /api/chat, subpath /sessions/:sessionId/followups)
  • POST /api/chat/sessions/:sessionId/generatebackend/src/routes/chat.ts (mount /api/chat, subpath /sessions/:sessionId/generate)
  • POST /api/chat/sessions/:sessionId/generate-titlebackend/src/routes/chat.ts (mount /api/chat, subpath /sessions/:sessionId/generate-title)
  • POST /api/chat/sessions/:sessionId/generate/streambackend/src/routes/chat.ts (mount /api/chat, subpath /sessions/:sessionId/generate/stream)
  • POST /api/chat/sessions/:sessionId/generationsbackend/src/routes/chat.ts (mount /api/chat, subpath /sessions/:sessionId/generations)
  • POST /api/chat/sessions/:sessionId/generations/:assistantMessageId/cancelbackend/src/routes/chat.ts (mount /api/chat, subpath /sessions/:sessionId/generations/:assistantMessageId/cancel)
  • POST /api/chat/sessions/:sessionId/messagesbackend/src/routes/chat.ts (mount /api/chat, subpath /sessions/:sessionId/messages)
  • POST /api/chat/sessions/:sessionId/messages/:messageId/branchbackend/src/routes/chat.ts (mount /api/chat, subpath /sessions/:sessionId/messages/:messageId/branch)
  • POST /api/chat/sessions/:sessionId/messages/:messageId/branchesbackend/src/routes/chat.ts (mount /api/chat, subpath /sessions/:sessionId/messages/:messageId/branches)
  • PUT /api/chat/folders/:folderIdbackend/src/routes/chat.ts (mount /api/chat, subpath /folders/:folderId)
  • PUT /api/chat/sessions/:sessionIdbackend/src/routes/chat.ts (mount /api/chat, subpath /sessions/:sessionId)
  • PUT /api/chat/sessions/:sessionId/messages/:messageIdbackend/src/routes/chat.ts (mount /api/chat, subpath /sessions/:sessionId/messages/:messageId)

Model management

  • DELETE /api/ollama/modelsbackend/src/routes/ollama.ts (mount /api/ollama, subpath /models)
  • GET /api/ollama/healthbackend/src/routes/ollama.ts (mount /api/ollama, subpath /health)
  • GET /api/ollama/librarybackend/src/routes/ollama.ts (mount /api/ollama, subpath /library)
  • GET /api/ollama/modelsbackend/src/routes/ollama.ts (mount /api/ollama, subpath /models)
  • GET /api/ollama/models/:modelName/defaultsbackend/src/routes/ollama.ts (mount /api/ollama, subpath /models/:modelName/defaults)
  • GET /api/ollama/models/accessbackend/src/routes/ollama.ts (mount /api/ollama, subpath /models/access)
  • GET /api/ollama/models/pull-all/streambackend/src/routes/ollama.ts (mount /api/ollama, subpath /models/pull-all/stream)
  • GET /api/ollama/models/showbackend/src/routes/ollama.ts (mount /api/ollama, subpath /models/show)
  • GET /api/ollama/pull/streambackend/src/routes/ollama.ts (mount /api/ollama, subpath /pull/stream)
  • GET /api/ollama/runningbackend/src/routes/ollama.ts (mount /api/ollama, subpath /running)
  • GET /api/ollama/versionbackend/src/routes/ollama.ts (mount /api/ollama, subpath /version)
  • HEAD /api/ollama/blobs/:digestbackend/src/routes/ollama.ts (mount /api/ollama, subpath /blobs/:digest)
  • POST /api/ollama/blobs/:digestbackend/src/routes/ollama.ts (mount /api/ollama, subpath /blobs/:digest)
  • POST /api/ollama/chatbackend/src/routes/ollama.ts (mount /api/ollama, subpath /chat)
  • POST /api/ollama/chat/streambackend/src/routes/ollama.ts (mount /api/ollama, subpath /chat/stream)
  • POST /api/ollama/embedbackend/src/routes/ollama.ts (mount /api/ollama, subpath /embed)
  • POST /api/ollama/embeddingsbackend/src/routes/ollama.ts (mount /api/ollama, subpath /embeddings)
  • POST /api/ollama/modelsbackend/src/routes/ollama.ts (mount /api/ollama, subpath /models)
  • POST /api/ollama/models/copybackend/src/routes/ollama.ts (mount /api/ollama, subpath /models/copy)
  • POST /api/ollama/models/pullbackend/src/routes/ollama.ts (mount /api/ollama, subpath /models/pull)
  • POST /api/ollama/models/pull-allbackend/src/routes/ollama.ts (mount /api/ollama, subpath /models/pull-all)
  • POST /api/ollama/models/pushbackend/src/routes/ollama.ts (mount /api/ollama, subpath /models/push)
  • POST /api/ollama/models/unloadbackend/src/routes/ollama.ts (mount /api/ollama, subpath /models/unload)
  • POST /api/ollama/models/unload-allbackend/src/routes/ollama.ts (mount /api/ollama, subpath /models/unload-all)
  • PUT /api/ollama/models/accessbackend/src/routes/ollama.ts (mount /api/ollama, subpath /models/access)
  • DELETE /api/plugins/:idbackend/src/routes/plugins.ts (mount /api/plugins, subpath /:id)
  • DELETE /api/plugins/:id/credentialsbackend/src/routes/plugins.ts (mount /api/plugins, subpath /:id/credentials)
  • DELETE /api/plugins/:id/variablesbackend/src/routes/plugins.ts (mount /api/plugins, subpath /:id/variables)
  • GET /api/pluginsbackend/src/routes/plugins.ts (mount /api/plugins, subpath /)
  • GET /api/plugins/:idbackend/src/routes/plugins.ts (mount /api/plugins, subpath /:id)
  • GET /api/plugins/:id/credentials/checkbackend/src/routes/plugins.ts (mount /api/plugins, subpath /:id/credentials/check)
  • GET /api/plugins/:id/exportbackend/src/routes/plugins.ts (mount /api/plugins, subpath /:id/export)
  • GET /api/plugins/:id/variablesbackend/src/routes/plugins.ts (mount /api/plugins, subpath /:id/variables)
  • GET /api/plugins/activebackend/src/routes/plugins.ts (mount /api/plugins, subpath /active)
  • GET /api/plugins/active/currentbackend/src/routes/plugins.ts (mount /api/plugins, subpath /active/current)
  • GET /api/plugins/credentials/allbackend/src/routes/plugins.ts (mount /api/plugins, subpath /credentials/all)
  • GET /api/plugins/status/allbackend/src/routes/plugins.ts (mount /api/plugins, subpath /status/all)
  • POST /api/plugins/:id/credentialsbackend/src/routes/plugins.ts (mount /api/plugins, subpath /:id/credentials)
  • POST /api/plugins/activate/:idbackend/src/routes/plugins.ts (mount /api/plugins, subpath /activate/:id)
  • POST /api/plugins/deactivatebackend/src/routes/plugins.ts (mount /api/plugins, subpath /deactivate)
  • POST /api/plugins/deactivate/:idbackend/src/routes/plugins.ts (mount /api/plugins, subpath /deactivate/:id)
  • POST /api/plugins/discover/:idbackend/src/routes/plugins.ts (mount /api/plugins, subpath /discover/:id)
  • POST /api/plugins/installbackend/src/routes/plugins.ts (mount /api/plugins, subpath /install)
  • POST /api/plugins/uploadbackend/src/routes/plugins.ts (mount /api/plugins, subpath /upload)
  • PUT /api/plugins/:idbackend/src/routes/plugins.ts (mount /api/plugins, subpath /:id)
  • PUT /api/plugins/:id/variablesbackend/src/routes/plugins.ts (mount /api/plugins, subpath /:id/variables)

Personas

  • DELETE /api/personas/:idbackend/src/routes/personas.ts (mount /api/personas, subpath /:id)
  • GET /api/personasbackend/src/routes/personas.ts (mount /api/personas, subpath /)
  • GET /api/personas/:idbackend/src/routes/personas.ts (mount /api/personas, subpath /:id)
  • GET /api/personas/:id/backupbackend/src/routes/personas.ts (mount /api/personas, subpath /:id/backup)
  • GET /api/personas/:id/downloadbackend/src/routes/personas.ts (mount /api/personas, subpath /:id/download)
  • GET /api/personas/:id/exportbackend/src/routes/personas.ts (mount /api/personas, subpath /:id/export)
  • GET /api/personas/:id/export/dnabackend/src/routes/personas.ts (mount /api/personas, subpath /:id/export/dna)
  • GET /api/personas/defaults/parametersbackend/src/routes/personas.ts (mount /api/personas, subpath /defaults/parameters)
  • GET /api/personas/stats/countbackend/src/routes/personas.ts (mount /api/personas, subpath /stats/count)
  • POST /api/personasbackend/src/routes/personas.ts (mount /api/personas, subpath /)
  • POST /api/personas/importbackend/src/routes/personas.ts (mount /api/personas, subpath /import)
  • PUT /api/personas/:idbackend/src/routes/personas.ts (mount /api/personas, subpath /:id)
  • DELETE /api/image-gen/gallery/:imageIdbackend/src/routes/imageGen.ts (mount /api/image-gen, subpath /gallery/:imageId)
  • GET /api/image-gen/config/:pluginIdbackend/src/routes/imageGen.ts (mount /api/image-gen, subpath /config/:pluginId)
  • GET /api/image-gen/gallerybackend/src/routes/imageGen.ts (mount /api/image-gen, subpath /gallery)
  • GET /api/image-gen/gallery/:imageIdbackend/src/routes/imageGen.ts (mount /api/image-gen, subpath /gallery/:imageId)
  • GET /api/image-gen/modelsbackend/src/routes/imageGen.ts (mount /api/image-gen, subpath /models)
  • GET /api/image-gen/pluginsbackend/src/routes/imageGen.ts (mount /api/image-gen, subpath /plugins)
  • POST /api/image-gen/generatebackend/src/routes/imageGen.ts (mount /api/image-gen, subpath /generate)
  • DELETE /api/media/gallery/:mediaIdbackend/src/routes/media.ts (mount /api/media, subpath /gallery/:mediaId)
  • DELETE /api/media/video/jobs/:jobIdbackend/src/routes/media.ts (mount /api/media, subpath /video/jobs/:jobId)
  • GET /api/media/gallerybackend/src/routes/media.ts (mount /api/media, subpath /gallery)
  • GET /api/media/gallery/:mediaId/contentbackend/src/routes/media.ts (mount /api/media, subpath /gallery/:mediaId/content)
  • GET /api/media/modelsbackend/src/routes/media.ts (mount /api/media, subpath /models)
  • GET /api/media/video/jobsbackend/src/routes/media.ts (mount /api/media, subpath /video/jobs)
  • GET /api/media/video/jobs/:jobIdbackend/src/routes/media.ts (mount /api/media, subpath /video/jobs/:jobId)
  • POST /api/media/audio/generatebackend/src/routes/media.ts (mount /api/media, subpath /audio/generate)
  • POST /api/media/audio/voice-clonebackend/src/routes/media.ts (mount /api/media, subpath /audio/voice-clone)
  • POST /api/media/sound/generatebackend/src/routes/media.ts (mount /api/media, subpath /sound/generate)
  • POST /api/media/video/generatebackend/src/routes/media.ts (mount /api/media, subpath /video/generate)
  • POST /api/media/video/jobs/:jobId/resumebackend/src/routes/media.ts (mount /api/media, subpath /video/jobs/:jobId/resume)

Notes

  • DELETE /api/notes/:noteIdbackend/src/routes/notes.ts (mount /api/notes, subpath /:noteId)
  • GET /api/notesbackend/src/routes/notes.ts (mount /api/notes, subpath /)
  • POST /api/notesbackend/src/routes/notes.ts (mount /api/notes, subpath /)
  • PUT /api/notes/:noteIdbackend/src/routes/notes.ts (mount /api/notes, subpath /:noteId)

Work

  • DELETE /api/work/policies/:idbackend/src/routes/work.ts (mount /api/work, subpath /policies/:id)
  • DELETE /api/work/tasks/:idbackend/src/routes/work.ts (mount /api/work, subpath /tasks/:id)
  • GET /api/work/accessbackend/src/routes/work.ts (mount /api/work, subpath /access)
  • GET /api/work/admin/overviewbackend/src/routes/work.ts (mount /api/work, subpath /admin/overview)
  • GET /api/work/capabilitiesbackend/src/routes/work.ts (mount /api/work, subpath /capabilities)
  • GET /api/work/policiesbackend/src/routes/work.ts (mount /api/work, subpath /policies)
  • GET /api/work/tasksbackend/src/routes/work.ts (mount /api/work, subpath /tasks)
  • GET /api/work/tasks/:idbackend/src/routes/work.ts (mount /api/work, subpath /tasks/:id)
  • GET /api/work/tasks/:id/filebackend/src/routes/work.ts (mount /api/work, subpath /tasks/:id/file)
  • GET /api/work/tasks/:id/filesbackend/src/routes/work.ts (mount /api/work, subpath /tasks/:id/files)
  • GET /api/work/tasks/:id/gitbackend/src/routes/work.ts (mount /api/work, subpath /tasks/:id/git)
  • GET /api/work/tasks/:id/git/diffbackend/src/routes/work.ts (mount /api/work, subpath /tasks/:id/git/diff)
  • GET /api/work/tasks/:id/messagesbackend/src/routes/work.ts (mount /api/work, subpath /tasks/:id/messages)
  • GET /api/work/tasks/:taskId/runs/:runId/eventsbackend/src/routes/work.ts (mount /api/work, subpath /tasks/:taskId/runs/:runId/events)
  • PATCH /api/work/tasks/:idbackend/src/routes/work.ts (mount /api/work, subpath /tasks/:id)
  • POST /api/work/policiesbackend/src/routes/work.ts (mount /api/work, subpath /policies)
  • POST /api/work/tasksbackend/src/routes/work.ts (mount /api/work, subpath /tasks)
  • POST /api/work/tasks/:id/cancelbackend/src/routes/work.ts (mount /api/work, subpath /tasks/:id/cancel)
  • POST /api/work/tasks/:id/git/branchesbackend/src/routes/work.ts (mount /api/work, subpath /tasks/:id/git/branches)
  • POST /api/work/tasks/:id/git/commitbackend/src/routes/work.ts (mount /api/work, subpath /tasks/:id/git/commit)
  • POST /api/work/tasks/:id/git/initbackend/src/routes/work.ts (mount /api/work, subpath /tasks/:id/git/init)
  • POST /api/work/tasks/:id/git/stagebackend/src/routes/work.ts (mount /api/work, subpath /tasks/:id/git/stage)
  • POST /api/work/tasks/:id/git/switchbackend/src/routes/work.ts (mount /api/work, subpath /tasks/:id/git/switch)
  • POST /api/work/tasks/:id/preview/startbackend/src/routes/work.ts (mount /api/work, subpath /tasks/:id/preview/start)
  • POST /api/work/tasks/:id/preview/stopbackend/src/routes/work.ts (mount /api/work, subpath /tasks/:id/preview/stop)
  • POST /api/work/tasks/:id/runsbackend/src/routes/work.ts (mount /api/work, subpath /tasks/:id/runs)
  • PUT /api/work/accessbackend/src/routes/work.ts (mount /api/work, subpath /access)
  • PUT /api/work/policies/:idbackend/src/routes/work.ts (mount /api/work, subpath /policies/:id)
  • PUT /api/work/tasks/:id/filebackend/src/routes/work.ts (mount /api/work, subpath /tasks/:id/file)

Agent CLI models

  • GET /api/agent-clis/modelsbackend/src/routes/agentCli.ts (mount /api/agent-clis, subpath /models)

Artifacts

  • GET /api/artifacts/sandboxbackend/src/routes/artifacts.ts (mount /api/artifacts, subpath /sandbox)

Provider usage

  • GET /api/plugins/usagebackend/src/routes/plugins.ts (mount /api/plugins, subpath /usage)

System diagnostics

  • GET /healthbackend/src/routes/health.ts (mount /health, subpath /)
  • GET /health/deepbackend/src/routes/health.ts (mount /health, subpath /deep)
  • GET /health/livebackend/src/routes/health.ts (mount /health, subpath /live)
  • GET /health/readybackend/src/routes/health.ts (mount /health, subpath /ready)
  • GET /api/systembackend/src/routes/systemDiagnostics.ts (mount /api/system, subpath /)

User administration

  • DELETE /api/users/:idbackend/src/routes/users.ts (mount /api/users, subpath /:id)
  • GET /api/usersbackend/src/routes/users.ts (mount /api/users, subpath /)
  • GET /api/users/pending-approvalsbackend/src/routes/users.ts (mount /api/users, subpath /pending-approvals)
  • PATCH /api/users/:idbackend/src/routes/users.ts (mount /api/users, subpath /:id)
  • PATCH /api/users/:id/approvebackend/src/routes/users.ts (mount /api/users, subpath /:id/approve)
  • PATCH /api/users/me/avatarbackend/src/routes/users.ts (mount /api/users, subpath /me/avatar)
  • POST /api/usersbackend/src/routes/users.ts (mount /api/users, subpath /)

Authentication

  • DELETE /api/auth/sessions/:idbackend/src/routes/auth.ts (mount /api/auth, subpath /sessions/:id)
  • DELETE /api/auth/tokens/:idbackend/src/routes/auth.ts (mount /api/auth, subpath /tokens/:id)
  • GET /api/auth/encryption-keybackend/src/routes/auth.ts (mount /api/auth, subpath /encryption-key)
  • GET /api/auth/mebackend/src/routes/auth.ts (mount /api/auth, subpath /me)
  • GET /api/auth/oauth/githubbackend/src/routes/auth.ts (mount /api/auth, subpath /oauth/github)
  • GET /api/auth/oauth/github/callbackbackend/src/routes/auth.ts (mount /api/auth, subpath /oauth/github/callback)
  • GET /api/auth/oauth/github/statusbackend/src/routes/auth.ts (mount /api/auth, subpath /oauth/github/status)
  • GET /api/auth/oauth/huggingfacebackend/src/routes/auth.ts (mount /api/auth, subpath /oauth/huggingface)
  • GET /api/auth/oauth/huggingface/callbackbackend/src/routes/auth.ts (mount /api/auth, subpath /oauth/huggingface/callback)
  • GET /api/auth/oauth/huggingface/statusbackend/src/routes/auth.ts (mount /api/auth, subpath /oauth/huggingface/status)
  • GET /api/auth/oauth/oidcbackend/src/routes/auth.ts (mount /api/auth, subpath /oauth/oidc)
  • GET /api/auth/oauth/oidc/callbackbackend/src/routes/auth.ts (mount /api/auth, subpath /oauth/oidc/callback)
  • GET /api/auth/oauth/oidc/statusbackend/src/routes/auth.ts (mount /api/auth, subpath /oauth/oidc/status)
  • GET /api/auth/sessionsbackend/src/routes/auth.ts (mount /api/auth, subpath /sessions)
  • GET /api/auth/system-infobackend/src/routes/auth.ts (mount /api/auth, subpath /system-info)
  • GET /api/auth/tokensbackend/src/routes/auth.ts (mount /api/auth, subpath /tokens)
  • GET /api/auth/verifybackend/src/routes/auth.ts (mount /api/auth, subpath /verify)
  • POST /api/auth/loginbackend/src/routes/auth.ts (mount /api/auth, subpath /login)
  • POST /api/auth/logoutbackend/src/routes/auth.ts (mount /api/auth, subpath /logout)
  • POST /api/auth/oauth/exchangebackend/src/routes/auth.ts (mount /api/auth, subpath /oauth/exchange)
  • POST /api/auth/sessions/revoke-othersbackend/src/routes/auth.ts (mount /api/auth, subpath /sessions/revoke-others)
  • POST /api/auth/signupbackend/src/routes/auth.ts (mount /api/auth, subpath /signup)
  • POST /api/auth/tokensbackend/src/routes/auth.ts (mount /api/auth, subpath /tokens)
  • POST /api/auth/websocket-ticketbackend/src/routes/auth.ts (mount /api/auth, subpath /websocket-ticket)

Access Control

  • DELETE /api/access/grants/:idbackend/src/routes/access.ts (mount /api/access, subpath /grants/:id)
  • GET /api/access/grantsbackend/src/routes/access.ts (mount /api/access, subpath /grants)
  • GET /api/access/shared-with-mebackend/src/routes/access.ts (mount /api/access, subpath /shared-with-me)
  • POST /api/access/grantsbackend/src/routes/access.ts (mount /api/access, subpath /grants)
  • GET /api/auditbackend/src/routes/audit.ts (mount /api/audit, subpath /)
  • DELETE /api/groups/:idbackend/src/routes/groups.ts (mount /api/groups, subpath /:id)
  • DELETE /api/groups/:id/members/:userIdbackend/src/routes/groups.ts (mount /api/groups, subpath /:id/members/:userId)
  • GET /api/groupsbackend/src/routes/groups.ts (mount /api/groups, subpath /)
  • GET /api/groups/effective/:userIdbackend/src/routes/groups.ts (mount /api/groups, subpath /effective/:userId)
  • PATCH /api/groups/:idbackend/src/routes/groups.ts (mount /api/groups, subpath /:id)
  • POST /api/groupsbackend/src/routes/groups.ts (mount /api/groups, subpath /)
  • POST /api/groups/:id/membersbackend/src/routes/groups.ts (mount /api/groups, subpath /:id/members)

Data portability

  • GET /api/preferences/exportbackend/src/routes/preferences.ts (mount /api/preferences, subpath /export)
  • POST /api/preferences/importbackend/src/routes/preferences.ts (mount /api/preferences, subpath /import)
  • POST /api/preferences/import/preflightbackend/src/routes/preferences.ts (mount /api/preferences, subpath /import/preflight)

Document knowledge and retrieval

  • DELETE /api/documents/:documentIdbackend/src/routes/documents.ts (mount /api/documents, subpath /:documentId)
  • DELETE /api/documents/collections/:collectionIdbackend/src/routes/documents.ts (mount /api/documents, subpath /collections/:collectionId)
  • GET /api/documentsbackend/src/routes/documents.ts (mount /api/documents, subpath /)
  • GET /api/documents/:documentIdbackend/src/routes/documents.ts (mount /api/documents, subpath /:documentId)
  • GET /api/documents/:documentId/sourcebackend/src/routes/documents.ts (mount /api/documents, subpath /:documentId/source)
  • GET /api/documents/collectionsbackend/src/routes/documents.ts (mount /api/documents, subpath /collections)
  • GET /api/documents/embeddings/statusbackend/src/routes/documents.ts (mount /api/documents, subpath /embeddings/status)
  • GET /api/documents/session/:sessionIdbackend/src/routes/documents.ts (mount /api/documents, subpath /session/:sessionId)
  • POST /api/documents/collectionsbackend/src/routes/documents.ts (mount /api/documents, subpath /collections)
  • POST /api/documents/embeddings/regeneratebackend/src/routes/documents.ts (mount /api/documents, subpath /embeddings/regenerate)
  • POST /api/documents/fetch-urlbackend/src/routes/documents.ts (mount /api/documents, subpath /fetch-url)
  • POST /api/documents/searchbackend/src/routes/documents.ts (mount /api/documents, subpath /search)
  • POST /api/documents/uploadbackend/src/routes/documents.ts (mount /api/documents, subpath /upload)
  • PUT /api/documents/:documentId/collectionbackend/src/routes/documents.ts (mount /api/documents, subpath /:documentId/collection)
  • GET /api/embeddings/modelsbackend/src/routes/embeddings.ts (mount /api/embeddings, subpath /models)

Persona memory

  • DELETE /api/personas/:id/memorybackend/src/routes/personas.ts (mount /api/personas, subpath /:id/memory)
  • GET /api/personas/:id/memory/corebackend/src/routes/personas.ts (mount /api/personas, subpath /:id/memory/core)
  • GET /api/personas/:id/memory/statsbackend/src/routes/personas.ts (mount /api/personas, subpath /:id/memory/stats)
  • GET /api/personas/:id/memory/statusbackend/src/routes/personas.ts (mount /api/personas, subpath /:id/memory/status)
  • POST /api/personas/:id/memory/consolidatebackend/src/routes/personas.ts (mount /api/personas, subpath /:id/memory/consolidate)
  • POST /api/personas/:id/memory/decaybackend/src/routes/personas.ts (mount /api/personas, subpath /:id/memory/decay)
  • GET /api/search/accessbackend/src/routes/search.ts (mount /api/search, subpath /access)
  • GET /api/search/configbackend/src/routes/search.ts (mount /api/search, subpath /config)
  • POST /api/search/testbackend/src/routes/search.ts (mount /api/search, subpath /test)
  • PUT /api/search/accessbackend/src/routes/search.ts (mount /api/search, subpath /access)
  • PUT /api/search/configbackend/src/routes/search.ts (mount /api/search, subpath /config)

Settings and preferences

  • GET /api/preferencesbackend/src/routes/preferences.ts (mount /api/preferences, subpath /)
  • POST /api/preferences/embedding-settings/resetbackend/src/routes/preferences.ts (mount /api/preferences, subpath /embedding-settings/reset)
  • POST /api/preferences/generation-options/resetbackend/src/routes/preferences.ts (mount /api/preferences, subpath /generation-options/reset)
  • PUT /api/preferencesbackend/src/routes/preferences.ts (mount /api/preferences, subpath /)
  • PUT /api/preferences/default-modelbackend/src/routes/preferences.ts (mount /api/preferences, subpath /default-model)
  • PUT /api/preferences/embedding-settingsbackend/src/routes/preferences.ts (mount /api/preferences, subpath /embedding-settings)
  • PUT /api/preferences/generation-optionsbackend/src/routes/preferences.ts (mount /api/preferences, subpath /generation-options)
  • PUT /api/preferences/model-generation-optionsbackend/src/routes/preferences.ts (mount /api/preferences, subpath /model-generation-options)
  • PUT /api/preferences/system-messagebackend/src/routes/preferences.ts (mount /api/preferences, subpath /system-message)

Speech input and output

  • GET /api/stt/modelsbackend/src/routes/stt.ts (mount /api/stt, subpath /models)
  • POST /api/stt/transcribebackend/src/routes/stt.ts (mount /api/stt, subpath /transcribe)
  • DELETE /api/tts/voice-profiles/:profileIdbackend/src/routes/tts.ts (mount /api/tts, subpath /voice-profiles/:profileId)
  • GET /api/tts/modelsbackend/src/routes/tts.ts (mount /api/tts, subpath /models)
  • GET /api/tts/pluginsbackend/src/routes/tts.ts (mount /api/tts, subpath /plugins)
  • GET /api/tts/voice-profilesbackend/src/routes/tts.ts (mount /api/tts, subpath /voice-profiles)
  • GET /api/tts/voices/:pluginIdbackend/src/routes/tts.ts (mount /api/tts, subpath /voices/:pluginId)
  • POST /api/tts/generatebackend/src/routes/tts.ts (mount /api/tts, subpath /generate)
  • POST /api/tts/generate-base64backend/src/routes/tts.ts (mount /api/tts, subpath /generate-base64)
  • POST /api/tts/voice-clonebackend/src/routes/tts.ts (mount /api/tts, subpath /voice-clone)

Hugging Face Hub

  • GET /api/huggingface-hub/modelsbackend/src/routes/huggingfaceHub.ts (mount /api/huggingface-hub, subpath /models)
  • GET /api/huggingface-hub/models/:author/:modelNamebackend/src/routes/huggingfaceHub.ts (mount /api/huggingface-hub, subpath /models/:author/:modelName)
  • GET /api/huggingface-hub/models/:author/:modelName/ggufbackend/src/routes/huggingfaceHub.ts (mount /api/huggingface-hub, subpath /models/:author/:modelName/gguf)
  • GET /api/huggingface-hub/models/:author/:modelName/has-ggufbackend/src/routes/huggingfaceHub.ts (mount /api/huggingface-hub, subpath /models/:author/:modelName/has-gguf)
  • GET /api/huggingface-hub/tasksbackend/src/routes/huggingfaceHub.ts (mount /api/huggingface-hub, subpath /tasks)
  • GET /api/huggingface-hub/trendingbackend/src/routes/huggingfaceHub.ts (mount /api/huggingface-hub, subpath /trending)
  • POST /api/huggingface-hub/cache/clearbackend/src/routes/huggingfaceHub.ts (mount /api/huggingface-hub, subpath /cache/clear)

Libre Claw

  • DELETE /api/libre-claw/automations/:automationIdbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /automations/:automationId)
  • GET /api/libre-claw/accessbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /access)
  • GET /api/libre-claw/automationsbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /automations)
  • GET /api/libre-claw/automations/:automationIdbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /automations/:automationId)
  • GET /api/libre-claw/config/fallbackbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /config/fallback)
  • GET /api/libre-claw/config/modelbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /config/model)
  • GET /api/libre-claw/dashboardbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /dashboard)
  • GET /api/libre-claw/healthbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /health)
  • GET /api/libre-claw/runsbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /runs)
  • GET /api/libre-claw/runs/:runIdbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /runs/:runId)
  • GET /api/libre-claw/runs/:runId/eventsbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /runs/:runId/events)
  • GET /api/libre-claw/statusbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /status)
  • GET /api/libre-claw/usagebackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /usage)
  • PATCH /api/libre-claw/automations/:automationIdbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /automations/:automationId)
  • PATCH /api/libre-claw/config/fallbackbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /config/fallback)
  • PATCH /api/libre-claw/config/modelbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /config/model)
  • PATCH /api/libre-claw/config/themebackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /config/theme)
  • POST /api/libre-claw/automationsbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /automations)
  • POST /api/libre-claw/automations/:automationId/pausebackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /automations/:automationId/pause)
  • POST /api/libre-claw/automations/:automationId/resumebackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /automations/:automationId/resume)
  • POST /api/libre-claw/automations/:automationId/runbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /automations/:automationId/run)
  • POST /api/libre-claw/runsbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /runs)
  • POST /api/libre-claw/runs/:runId/cancelbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /runs/:runId/cancel)
  • POST /api/libre-claw/runs/:runId/permissions/:toolCallIdbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /runs/:runId/permissions/:toolCallId)
  • PUT /api/libre-claw/accessbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /access)
  • PUT /api/libre-claw/automations/:automationIdbackend/src/routes/libreClaw.ts (mount /api/libre-claw, subpath /automations/:automationId)

Durable jobs and events

  • GET /api/jobsbackend/src/routes/jobs.ts (mount /api/jobs, subpath /)
  • GET /api/jobs/:jobIdbackend/src/routes/jobs.ts (mount /api/jobs, subpath /:jobId)
  • GET /api/jobs/:jobId/eventsbackend/src/routes/jobs.ts (mount /api/jobs, subpath /:jobId/events)
  • POST /api/jobs/:jobId/cancelbackend/src/routes/jobs.ts (mount /api/jobs, subpath /:jobId/cancel)

Solo and team deployment profiles

No mounted Express endpoint. The executable boundary is the UI and/or source evidence recorded above.

Recovery and backup

No mounted Express endpoint. The executable boundary is the UI and/or source evidence recorded above.

Exact WebSocket route inventory

  • WEBSOCKET /wsChat, backend/src/websocketServer.ts; authentication evidence: backend/src/websocketServer.ts, scripts/test-websocket-tickets.mjs
  • WEBSOCKET /ws/work-terminalWork, backend/src/websocketServer.ts; authentication evidence: backend/src/workTerminalServer.ts, scripts/test-websocket-tickets.mjs

Enforcement boundary

The package gate parses TypeScript/JavaScript source, resolves every imported Express router to its literal application mount, and reconciles every literal router method/path declaration and WebSocket upgrade pathname one-for-one with this inventory. It fails on an unmounted route file, an unsupported router.route() builder, a dynamic route path, a missing or duplicate endpoint owner, missing WebSocket authentication evidence, a changed UI route, missing schema/manifest/default applicability, stale evidence, or a stale generated document.

Focused-test evidence is scoped to one exact named test(...) declaration and at least two behavior patterns inside that test body. Backend tests must be exact file arguments to test:package; Playwright specs must match normal discovery. The gate also proves that both runners execute in the normal pull-request and dev/main Format & Lint workflow.