Contratos globais de capacidades
Este inventário executável abrange todas as rotas explícitas de páginas em frontend/src/App.tsx, todas as declarações literais de método/caminho em cada roteador Express montado de backend/src/routes/*.ts e todos os caminhos literais de upgrade do WebSocket em backend/src/websocketServer.ts. Cada endpoint tem exatamente um responsável pela capacidade, e cada endpoint WebSocket possui evidências de autenticação. Cada capacidade também declara se esquemas, manifestos e padrões se aplicam, com evidências no código-fonte ou um motivo específico para não se aplicarem, além de documentação e um teste comportamental nomeado registrado na CI normal de pacotes ou do navegador.
Os detalhes executáveis dos provedores continuam regidos por scripts/capability-contracts.json e scripts/test-capability-contracts.mjs; este inventário global referencia esse contrato em vez de duplicar suas regras de manifesto e padrões.
| Capacidade | Rotas da interface | Endpoints HTTP | Endpoints WebSocket | Esquemas | Manifestos | Padrões | Documentação | Testes comportamentais nomeados |
|---|---|---|---|---|---|---|---|---|
| Início | / | 0 | 0 | N/A — A página inicial é uma área de navegação e composição sem payload independente de solicitação ou resposta. | N/A — A página inicial é integrada ao aplicativo e não é instalada nem descoberta por um manifesto. | frontend/src/utils/welcomePrompts.ts | docs/00-README.md | new chats rotate through distinct creator promptsfrontend/e2e/welcome-prompts.spec.ts (test:e2e) |
| Chat | /chat/c/:sessionId | 32 | 1 | backend/src/types/index.ts | scripts/capability-contracts.json | backend/src/services/preferencesService.ts | docs/01-QUICK_START.md | ChatRequestService prepares target, persona prompt, and shared messagesscripts/test-chat-context.mjs (test:package)oversized history compacts into one summary on a user-turn boundaryscripts/test-context-compaction.mjs (test:package)queued prompts can be edited, reordered, and removed atomicallyscripts/test-prompt-queue.mjs (test:package)a comparison fan-out shares one user turn across independent jobsscripts/test-multi-model-compare.mjs (test:package)forking at a message copies the prefix with remapped identitiesscripts/test-chat-fork.mjs (test:package) |
| Gerenciamento de modelos | — | 51 | 0 | backend/src/types/index.ts | scripts/capability-contracts.json | backend/src/services/ollamaService.ts | docs/02-WORKING_WITH_MODELS.md | cloud library pulls append the Ollama cloud suffix automaticallyfrontend/e2e/model-manager.spec.ts (test:e2e) |
| Personas | /personas | 12 | 0 | backend/src/types/index.ts | N/A — Personas são recursos da conta persistidos pelo Libre e não usam um manifesto instalável ou de descoberta. | frontend/src/components/persona-form/defaults.ts | docs/16-PERSONA_DEVELOPMENT_FRAMEWORK.mddocs/52-ASSISTANT_PROFILES.md | memory insert acknowledgement loss resolves the committed row and retry is idempotentscripts/test-memory-reliability.mjs (test:package)a profile stores its bindings normalized, versioned, and encryptedscripts/test-assistant-profiles.mjs (test:package) |
| Galeria de mídia | /gallery | 20 | 0 | backend/src/types/index.ts | scripts/capability-contracts.json | scripts/test-capability-contracts.mjs | docs/38-MEDIA_GENERATION.md | video jobs can stop waiting, reopen, and resume without losing the handlefrontend/e2e/media-generation.spec.ts (test:e2e)edits post an authorized multipart request and meter usagescripts/test-image-editing.mjs (test:package) |
| Notas | /notes | 12 | 0 | backend/src/types/index.tsbackend/src/persistence/resourceTypes.ts | N/A — Notas são recursos próprios da conta e não possuem manifesto instalável ou de descoberta. | N/A — Notas não têm padrão implícito de conteúdo ou apresentação além dos campos informados explicitamente pelo usuário. | docs/61-NOTES.md | notes open in Markdown preview and make editing explicitfrontend/e2e/notes.spec.ts (test:e2e)content changes snapshot restorable revisions and prune beyond the capscripts/test-notes.mjs (test:package) |
| Calendário | /calendar | 10 | 0 | backend/src/types/index.ts | N/A — Eventos de calendário são recursos próprios da conta e não possuem manifesto instalável ou de descoberta. | N/A — Eventos de calendário não têm padrão implícito de conteúdo além dos campos informados pelo usuário; o cálculo de recorrência usa o fuso horário do servidor documentado em docs/47-CALENDAR.md. | docs/47-CALENDAR.md | calendar events persist per owner and expand recurrence into range queriesscripts/test-calendar.mjs (test:package)named calendars carry colors and share read/write through grantsscripts/test-calendar-team.mjs (test:package)reminders fire once per occurrence into the notification inboxscripts/test-calendar-team.mjs (test:package) |
| Automações | /automations | 15 | 0 | backend/src/types/index.ts | N/A — Automações são recursos próprios da conta e não possuem manifesto instalável ou de descoberta. | docs/48-AUTOMATIONS.md | docs/48-AUTOMATIONS.md | the scheduler fires due automations once and settles stalled runsscripts/test-automations.mjs (test:package) |
| Canais | /channels | 24 | 0 | backend/src/types/index.ts | N/A — Canais são recursos próprios da conta e não possuem manifesto instalável ou de descoberta. | docs/54-CHANNELS.md | docs/54-CHANNELS.md | timeline: idempotent posts, ordering, threads, edit and tombstone rulesscripts/test-channels.mjs (test:package)@model mentions run under the invoking member and fail safelyscripts/test-channels.mjs (test:package) |
| Notificações | — | 13 | 0 | backend/src/types/index.ts | N/A — Notificações são estado próprio da conta e não possuem manifesto instalável ou de descoberta. | docs/55-NOTIFICATIONS.md | docs/55-NOTIFICATIONS.mddocs/55-NOTIFICATIONS.md | the inbox is durable, encrypted, deduplicated, and cappedscripts/test-notifications.mjs (test:package)webhook targets are egress-guarded, signed, redacted, and retriedscripts/test-notifications.mjs (test:package)payload encryption reproduces the RFC 8291 test vectorscripts/test-web-push.mjs (test:package)revoking an auth session removes its device subscriptionsscripts/test-web-push.mjs (test:package) |
| Biblioteca de prompts | — | 9 | 0 | backend/src/services/promptService.ts | N/A — Prompts são recursos próprios da conta; sua forma portátil é o documento de exportação versionado libre-prompt.v1, e não um manifesto instalável ou de descoberta. | N/A — Um prompt não tem conteúdo padrão implícito: todos os campos são fornecidos pelo usuário, e a renderização substitui somente as variáveis declaradas, conforme aplicado por scripts/test-prompts.mjs. | docs/50-PROMPTS.md | prompts round-trip through the API and stay encrypted at restscripts/test-prompts.mjs (test:package) |
| Skills | — | 14 | 0 | backend/src/services/skillService.ts | backend/src/services/skillService.ts | N/A — Uma skill não tem conteúdo padrão implícito: o manifesto e as instruções são exatamente o que o proprietário escreveu, e skills desativadas saem totalmente do manifesto. | docs/51-SKILLS.md | skills round-trip through the API and stay encrypted at restscripts/test-skills.mjs (test:package)a skill imports from a remote store URL through the egress guardscripts/test-skills.mjs (test:package) |
| Ferramentas do Chat | — | 15 | 0 | backend/src/types/tools.ts | backend/src/services/toolServerService.ts | backend/src/services/toolAccessService.ts | docs/49-CHAT_TOOLS.md | registering an OpenAPI server pins the spec and extracts its toolsscripts/test-tool-gateway.mjs (test:package)a side-effecting call waits for approval and then executesscripts/test-chat-tool-loop.mjs (test:package) |
| Work | /work/work/:taskId | 44 | 3 | backend/src/types/work.ts | scripts/capability-contracts.json | backend/src/services/workRuntimeShared.ts | docs/33-WORKSPACES.md | runtime limits expose admission capacity and live occupancyscripts/test-work-runtime.mjs (test:package)approval decisions gate side-effecting Work actionsscripts/test-work-approvals.mjs (test:package)an agent delegates to a peer and the report returns to its conversationscripts/test-work-delegation.mjs (test:package)connected tools reach network-enabled runs and stay off offline onesscripts/test-work-mcp.mjs (test:package)production Work upgrade applies task-bound ticket authenticationscripts/test-websocket-tickets.mjs (test:package) |
| Modelos da Agent CLI | /agents | 1 | 0 | backend/src/services/agentCliService.ts | N/A — Os adaptadores da Agent CLI são definições próprias compiladas e não são carregados de manifestos de provedores. | backend/src/services/agentAccessService.ts | docs/36-AGENT_CLI_MODELS.md | every agent CLI passes an explicit model through to its argvscripts/test-agent-cli-chat.mjs (test:package) |
| Artifacts | /artifacts | 1 | 0 | frontend/src/utils/artifactParser.ts | frontend/src/artifact-runtime/manifest.ts | frontend/src/components/ArtifactSlideOutPanel.tsxfrontend/src/store/appStore.ts | docs/13-ARTIFACTS_FEATURE.md | chat detects multi-file HTML artifacts and renders them in the slide-out panelfrontend/e2e/artifacts.spec.ts (test:e2e) |
| Uso dos provedores | /usage | 10 | 0 | backend/src/services/pluginUsageService.ts | N/A — A analítica de uso consome eventos dos provedores, mas não define um manifesto próprio instalável ou de descoberta. | backend/src/services/pluginUsageService.ts | docs/37-SYSTEM_MONITORING.mddocs/58-COST_GOVERNANCE.mddocs/60-OBSERVABILITY.md | the usage endpoint is explicitly protected by administrator middlewarescripts/test-plugin-usage-analytics.mjs (test:package)hard budgets block exhausted principals and fail open otherwisescripts/test-cost-governance.mjs (test:package) |
| Plataforma de avaliações | /evaluations | 16 | 0 | backend/src/persistence/resourceTypes.ts | N/A — Avaliações são recursos da conta persistidos pelo Libre e não usam um manifesto instalável ou de descoberta. | backend/src/services/evaluationService.ts | docs/59-EVALUATIONS.md | arena votes are one per user per comparison and Elo replays deterministicallyscripts/test-evaluations.mjs (test:package) |
| Diagnósticos do sistema | /system | 5 | 0 | backend/src/services/systemDiagnosticsService.ts | N/A — Os diagnósticos do sistema são um relatório autenticado integrado e não possuem manifesto instalável ou de descoberta. | backend/src/services/healthService.ts | docs/37-SYSTEM_MONITORING.md | system route requires both authentication and current administrator statusscripts/test-system-diagnostics.mjs (test:package) |
| Administração de usuários | /users | 8 | 0 | backend/src/types/index.ts | N/A — A administração de usuários é uma capacidade de identidade integrada e não possui manifesto instalável ou de descoberta. | N/A — O papel do usuário e o estado da conta são selecionados pela inicialização ou pela política de aprovação, e não por um padrão reutilizável da capacidade. | docs/12-AUTHENTICATION.md | public registrations require administrator approval before authenticationscripts/test-user-approval.mjs (test:package) |
| Autenticação | /login | 40 | 0 | backend/src/types/index.ts | N/A — A autenticação é uma barreira de segurança integrada e não é instalada nem descoberta por um manifesto. | backend/src/services/registrationPolicy.ts | docs/12-AUTHENTICATION.mddocs/12-AUTHENTICATION.mddocs/12-AUTHENTICATION.md | password login requires and submits a Turnstile tokenfrontend/e2e/auth.spec.ts (test:e2e)revoking the session rejects its token with 401scripts/test-auth-sessions.mjs (test:package)scope-to-path matrix: notes scope on notes, chat, and auth routesscripts/test-api-tokens.mjs (test:package)verifyIdToken accepts a good token and returns its claimsscripts/test-oidc-provider.mjs (test:package)password login returns an MFA challenge, and the challenge is not a sessionscripts/test-mfa.mjs (test:package)a passkey assertion signs the user in and challenges are one-usescripts/test-mfa.mjs (test:package)the signup password field grades strength live against the real policyfrontend/e2e/password-strength.spec.ts (test:e2e) |
| Controle de acesso | — | 14 | 0 | backend/src/persistence/securityTypes.ts | N/A — O controle de acesso é uma barreira de segurança integrada e não é instalado nem descoberto por um manifesto. | backend/src/services/authorizationService.ts | docs/12-AUTHENTICATION.md | group grants reach members and die with the membershipscripts/test-authorization.mjs (test:package)a rolled-back duplicate group create leaves no audit rowscripts/test-security-audit.mjs (test:package)group principal lookup and grant names surface through the APIscripts/test-resource-sharing.mjs (test:package) |
| API pública | — | 2 | 0 | backend/src/routes/openaiCompat.ts | N/A — A interface compatível com OpenAI reproduz um formato de protocolo externo e não possui manifesto instalável. | N/A — Os padrões de amostragem vêm da solicitação do chamador e da configuração do próprio modelo, nunca desta interface. | docs/53-PUBLIC_API.md | a streaming completion emits OpenAI chunk frames and [DONE]scripts/test-openai-compat.mjs (test:package) |
| Portabilidade de dados | — | 3 | 0 | backend/src/services/dataArchiveService.ts | backend/src/services/dataArchiveService.ts | backend/src/services/dataArchiveService.ts | docs/41-DATA_PORTABILITY.md | v3 export is complete, checksummed, user-scoped, and explicit about exclusionsscripts/test-data-archive.mjs (test:package) |
| Conhecimento e recuperação de documentos | — | 15 | 0 | backend/src/types/index.ts | scripts/capability-contracts.json | backend/src/services/preferencesService.ts | docs/09-RAG_FEATURE.mddocs/09-RAG_FEATURE.md | keyword retrieval sees session documents AND user-scoped uploadsscripts/test-rag-retrieval.mjs (test:package)multi-image OCR produces one labeled page segment per imagescripts/test-media-extraction.mjs (test:package)audio transcripts carry one Transcript section and respect the stt gatescripts/test-media-extraction.mjs (test:package) |
| Memória de personas | — | 6 | 0 | backend/src/types/index.ts | N/A — A memória de personas é um recurso interno de persona e não possui manifesto instalável ou de descoberta. | frontend/src/components/persona-form/defaults.ts | docs/16-PERSONA_DEVELOPMENT_FRAMEWORK.md | persona deletion during vector publication still removes the recreated vectorscripts/test-memory-reliability.mjs (test:package) |
| Busca na web | — | 6 | 0 | backend/src/services/webSearchService.ts | N/A — A busca na web usa configurações de conexão do administrador, e não um manifesto instalável de provedor. | backend/src/services/webSearchService.ts | docs/39-WEB_SEARCH.md | web search ships disabled and validates its configurationscripts/test-web-search.mjs (test:package)search is scoped to what the actor can readscripts/test-workspace-search.mjs (test:package) |
| Configurações e preferências | — | 11 | 0 | backend/src/types/index.ts | N/A — As configurações agregam a configuração própria e dos provedores, mas não definem um manifesto instalável separado. | backend/src/services/preferencesService.ts | docs/35-PROVIDER_CONNECTIONS.md | theme preference survives refresh and retries a failed savefrontend/e2e/settings.spec.ts (test:e2e) |
| Entrada e saída de fala | — | 13 | 0 | backend/src/types/index.ts | scripts/capability-contracts.json | scripts/test-capability-contracts.mjs | docs/42-SPEECH_TO_TEXT.mddocs/27-QWEN3_TTS.mddocs/57-VOICE_MODE.md | STT sends an OpenAI-compatible multipart request to the selected routescripts/test-stt-routing.mjs (test:package)provider speech input discloses its route and transcribes recorded audiofrontend/e2e/stt.spec.ts (test:e2e)invalid provider audio is rejected safely without inserting a transcriptfrontend/e2e/stt.spec.ts (test:e2e)TTS routes a shared model alias through the selected plugin and user valvescripts/test-tts-routing.mjs (test:package)voice mode opens hands-free conversation and transcribes a manual turnfrontend/e2e/voice-mode.spec.ts (test:e2e) |
| Hugging Face Hub | — | 7 | 0 | backend/src/routes/huggingfaceHub.ts | N/A — Os metadados de modelos do Hub são dados de uma API remota; o Libre não define um manifesto local instalável para a capacidade do navegador. | backend/src/routes/huggingfaceHub.ts | docs/29-HUGGINGFACE_HUB.md | Hugging Face Hub task discovery is authenticated route behaviorscripts/test-huggingface-hub-routes.mjs (test:package) |
| Libre Claw | — | 26 | 0 | backend/src/services/libreClawService.ts | N/A — O Libre Claw é uma integração de serviço configurada explicitamente e não usa um manifesto de provedor do Libre. | backend/src/services/libreClawService.ts | docs/31-LIBRE_CLAW_INTEGRATION.md | Work and Agents are hidden and route-protected for non-admin usersfrontend/e2e/sidebar-create-actions.spec.ts (test:e2e) |
| Tarefas e eventos duráveis | — | 4 | 0 | backend/src/platform/jobs/durableJobTypes.ts | N/A — Tarefas duráveis usam tipos de manipuladores registrados e contratos de payload persistidos, e não manifestos instaláveis. | backend/src/platform/jobs/embeddedDurableJobWorker.ts | docs/45-PLATFORM_FOUNDATION.md | ordered event replay uses global cursors and per-stream sequencesscripts/test-durable-jobs.mjs (test:package) |
| Perfis de implantação solo e equipe | — | 0 | 0 | backend/src/platform/runtimeConfig.ts | helm/libre-webui/values.schema.json | helm/libre-webui/values.yaml | docs/45-PLATFORM_FOUNDATION.md | real Redis coordinates independent replicas and fails closed after shutdownscripts/test-platform-coordination.mjs (test:package) |
| Recuperação e backup | — | 2 | 0 | backend/src/services/recoveryInventoryService.ts | backend/src/platform/recovery/backupArchive.ts | backend/src/services/recoveryInventoryService.ts | docs/44-RECOVERY_READINESS.mddocs/44-RECOVERY_READINESS.md | integrated backup is signed, encrypted, tamper-evident, and clean-restorablescripts/test-integrated-backup.mjs (test:package)team backup restores a clean PostgreSQL and versioned S3 target with authenticated PGVector statescripts/test-team-backup.mjs (test:package)a manual drill backs up, restores in isolation, verifies, and measuresscripts/test-recovery-drills.mjs (test:package)an unattended drill failure alerts every administrator oncescripts/test-recovery-drills.mjs (test:package) |
Inventário exato de rotas do backend
Início
Nenhum endpoint Express montado. A barreira executável é a interface e/ou as evidências no código-fonte registradas acima.
Chat
DELETE /api/chat/folders/:folderId—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/folders/:folderId)DELETE /api/chat/sessions—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions)DELETE /api/chat/sessions/:sessionId—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId)DELETE /api/chat/sessions/:sessionId/queue/:entryId—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/queue/:entryId)GET /api/chat/compaction-config—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/compaction-config)GET /api/chat/context-policy—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/context-policy)GET /api/chat/folders—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/folders)GET /api/chat/sessions—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions)GET /api/chat/sessions/:sessionId—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId)GET /api/chat/sessions/:sessionId/events—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/events)GET /api/chat/sessions/:sessionId/messages/:messageId/branches—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/messages/:messageId/branches)POST /api/chat/folders—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/folders)POST /api/chat/sessions—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions)POST /api/chat/sessions/:sessionId/compaction/:messageId/restore—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/compaction/:messageId/restore)POST /api/chat/sessions/:sessionId/followups—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/followups)POST /api/chat/sessions/:sessionId/fork—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/fork)POST /api/chat/sessions/:sessionId/generate—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/generate)POST /api/chat/sessions/:sessionId/generate-title—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/generate-title)POST /api/chat/sessions/:sessionId/generate/stream—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/generate/stream)POST /api/chat/sessions/:sessionId/generations—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/generations)POST /api/chat/sessions/:sessionId/generations/:assistantMessageId/cancel—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/generations/:assistantMessageId/cancel)POST /api/chat/sessions/:sessionId/messages—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/messages)POST /api/chat/sessions/:sessionId/messages/:messageId/branch—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/messages/:messageId/branch)POST /api/chat/sessions/:sessionId/messages/:messageId/branches—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/messages/:messageId/branches)POST /api/chat/sessions/:sessionId/messages/:messageId/truncate—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/messages/:messageId/truncate)POST /api/chat/sessions/:sessionId/queue—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/queue)PUT /api/chat/compaction-config—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/compaction-config)PUT /api/chat/folders/:folderId—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/folders/:folderId)PUT /api/chat/sessions/:sessionId—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId)PUT /api/chat/sessions/:sessionId/messages/:messageId—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/messages/:messageId)PUT /api/chat/sessions/:sessionId/queue—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/queue)PUT /api/chat/sessions/:sessionId/queue/:entryId—backend/src/routes/chat.ts(montagem/api/chat, subcaminho/sessions/:sessionId/queue/:entryId)
Gerenciamento de modelos
DELETE /api/ollama/models—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/models)GET /api/ollama/health—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/health)GET /api/ollama/library—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/library)GET /api/ollama/models—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/models)GET /api/ollama/models/:modelName/defaults—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/models/:modelName/defaults)GET /api/ollama/models/access—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/models/access)GET /api/ollama/models/pull-all/stream—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/models/pull-all/stream)GET /api/ollama/models/show—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/models/show)GET /api/ollama/models/visibility—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/models/visibility)GET /api/ollama/pull/stream—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/pull/stream)GET /api/ollama/running—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/running)GET /api/ollama/settings—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/settings)GET /api/ollama/version—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/version)HEAD /api/ollama/blobs/:digest—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/blobs/:digest)POST /api/ollama/blobs/:digest—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/blobs/:digest)POST /api/ollama/chat—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/chat)POST /api/ollama/chat/stream—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/chat/stream)POST /api/ollama/embed—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/embed)POST /api/ollama/embeddings—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/embeddings)POST /api/ollama/models—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/models)POST /api/ollama/models/copy—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/models/copy)POST /api/ollama/models/pull—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/models/pull)POST /api/ollama/models/pull-all—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/models/pull-all)POST /api/ollama/models/push—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/models/push)POST /api/ollama/models/unload—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/models/unload)POST /api/ollama/models/unload-all—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/models/unload-all)PUT /api/ollama/models/access—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/models/access)PUT /api/ollama/models/visibility—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/models/visibility)PUT /api/ollama/settings—backend/src/routes/ollama.ts(montagem/api/ollama, subcaminho/settings)DELETE /api/plugins/:id—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/:id)DELETE /api/plugins/:id/credentials—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/:id/credentials)DELETE /api/plugins/:id/variables—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/:id/variables)GET /api/plugins—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/)GET /api/plugins/:id—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/:id)GET /api/plugins/:id/credentials/check—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/:id/credentials/check)GET /api/plugins/:id/export—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/:id/export)GET /api/plugins/:id/variables—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/:id/variables)GET /api/plugins/active—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/active)GET /api/plugins/active/current—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/active/current)GET /api/plugins/credentials/all—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/credentials/all)GET /api/plugins/status/all—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/status/all)POST /api/plugins/:id/credentials—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/:id/credentials)POST /api/plugins/activate/:id—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/activate/:id)POST /api/plugins/deactivate—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/deactivate)POST /api/plugins/deactivate/:id—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/deactivate/:id)POST /api/plugins/discover/:id—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/discover/:id)POST /api/plugins/install—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/install)POST /api/plugins/probe-endpoint—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/probe-endpoint)POST /api/plugins/upload—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/upload)PUT /api/plugins/:id—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/:id)PUT /api/plugins/:id/variables—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/:id/variables)
Personas
DELETE /api/personas/:id—backend/src/routes/personas.ts(montagem/api/personas, subcaminho/:id)GET /api/personas—backend/src/routes/personas.ts(montagem/api/personas, subcaminho/)GET /api/personas/:id—backend/src/routes/personas.ts(montagem/api/personas, subcaminho/:id)GET /api/personas/:id/backup—backend/src/routes/personas.ts(montagem/api/personas, subcaminho/:id/backup)GET /api/personas/:id/download—backend/src/routes/personas.ts(montagem/api/personas, subcaminho/:id/download)GET /api/personas/:id/export—backend/src/routes/personas.ts(montagem/api/personas, subcaminho/:id/export)GET /api/personas/:id/export/dna—backend/src/routes/personas.ts(montagem/api/personas, subcaminho/:id/export/dna)GET /api/personas/defaults/parameters—backend/src/routes/personas.ts(montagem/api/personas, subcaminho/defaults/parameters)GET /api/personas/stats/count—backend/src/routes/personas.ts(montagem/api/personas, subcaminho/stats/count)POST /api/personas—backend/src/routes/personas.ts(montagem/api/personas, subcaminho/)POST /api/personas/import—backend/src/routes/personas.ts(montagem/api/personas, subcaminho/import)PUT /api/personas/:id—backend/src/routes/personas.ts(montagem/api/personas, subcaminho/:id)
Galeria de mídia
DELETE /api/image-gen/gallery/:imageId—backend/src/routes/imageGen.ts(montagem/api/image-gen, subcaminho/gallery/:imageId)GET /api/image-gen/config/:pluginId—backend/src/routes/imageGen.ts(montagem/api/image-gen, subcaminho/config/:pluginId)GET /api/image-gen/gallery—backend/src/routes/imageGen.ts(montagem/api/image-gen, subcaminho/gallery)GET /api/image-gen/gallery/:imageId—backend/src/routes/imageGen.ts(montagem/api/image-gen, subcaminho/gallery/:imageId)GET /api/image-gen/models—backend/src/routes/imageGen.ts(montagem/api/image-gen, subcaminho/models)GET /api/image-gen/plugins—backend/src/routes/imageGen.ts(montagem/api/image-gen, subcaminho/plugins)POST /api/image-gen/generate—backend/src/routes/imageGen.ts(montagem/api/image-gen, subcaminho/generate)DELETE /api/media/gallery/:mediaId—backend/src/routes/media.ts(montagem/api/media, subcaminho/gallery/:mediaId)DELETE /api/media/video/jobs/:jobId—backend/src/routes/media.ts(montagem/api/media, subcaminho/video/jobs/:jobId)GET /api/media/gallery—backend/src/routes/media.ts(montagem/api/media, subcaminho/gallery)GET /api/media/gallery/:mediaId/content—backend/src/routes/media.ts(montagem/api/media, subcaminho/gallery/:mediaId/content)GET /api/media/models—backend/src/routes/media.ts(montagem/api/media, subcaminho/models)GET /api/media/video/jobs—backend/src/routes/media.ts(montagem/api/media, subcaminho/video/jobs)GET /api/media/video/jobs/:jobId—backend/src/routes/media.ts(montagem/api/media, subcaminho/video/jobs/:jobId)POST /api/media/audio/generate—backend/src/routes/media.ts(montagem/api/media, subcaminho/audio/generate)POST /api/media/audio/voice-clone—backend/src/routes/media.ts(montagem/api/media, subcaminho/audio/voice-clone)POST /api/media/image/edit—backend/src/routes/media.ts(montagem/api/media, subcaminho/image/edit)POST /api/media/sound/generate—backend/src/routes/media.ts(montagem/api/media, subcaminho/sound/generate)POST /api/media/video/generate—backend/src/routes/media.ts(montagem/api/media, subcaminho/video/generate)POST /api/media/video/jobs/:jobId/resume—backend/src/routes/media.ts(montagem/api/media, subcaminho/video/jobs/:jobId/resume)
Notas
DELETE /api/notes/:noteId—backend/src/routes/notes.ts(montagem/api/notes, subcaminho/:noteId)DELETE /api/notes/:noteId/attachments/:attachmentId—backend/src/routes/notes.ts(montagem/api/notes, subcaminho/:noteId/attachments/:attachmentId)GET /api/notes—backend/src/routes/notes.ts(montagem/api/notes, subcaminho/)GET /api/notes/:noteId—backend/src/routes/notes.ts(montagem/api/notes, subcaminho/:noteId)GET /api/notes/:noteId/attachments—backend/src/routes/notes.ts(montagem/api/notes, subcaminho/:noteId/attachments)GET /api/notes/:noteId/attachments/:attachmentId—backend/src/routes/notes.ts(montagem/api/notes, subcaminho/:noteId/attachments/:attachmentId)GET /api/notes/:noteId/revisions—backend/src/routes/notes.ts(montagem/api/notes, subcaminho/:noteId/revisions)POST /api/notes—backend/src/routes/notes.ts(montagem/api/notes, subcaminho/)POST /api/notes/:noteId/assist—backend/src/routes/notes.ts(montagem/api/notes, subcaminho/:noteId/assist)POST /api/notes/:noteId/attachments—backend/src/routes/notes.ts(montagem/api/notes, subcaminho/:noteId/attachments)POST /api/notes/:noteId/revisions/:revisionId/restore—backend/src/routes/notes.ts(montagem/api/notes, subcaminho/:noteId/revisions/:revisionId/restore)PUT /api/notes/:noteId—backend/src/routes/notes.ts(montagem/api/notes, subcaminho/:noteId)
Calendário
DELETE /api/calendar/calendars/:calendarId—backend/src/routes/calendar.ts(montagem/api/calendar, subcaminho/calendars/:calendarId)DELETE /api/calendar/events/:eventId—backend/src/routes/calendar.ts(montagem/api/calendar, subcaminho/events/:eventId)GET /api/calendar/calendars—backend/src/routes/calendar.ts(montagem/api/calendar, subcaminho/calendars)GET /api/calendar/events—backend/src/routes/calendar.ts(montagem/api/calendar, subcaminho/events)GET /api/calendar/export—backend/src/routes/calendar.ts(montagem/api/calendar, subcaminho/export)POST /api/calendar/calendars—backend/src/routes/calendar.ts(montagem/api/calendar, subcaminho/calendars)POST /api/calendar/events—backend/src/routes/calendar.ts(montagem/api/calendar, subcaminho/events)POST /api/calendar/import—backend/src/routes/calendar.ts(montagem/api/calendar, subcaminho/import)PUT /api/calendar/calendars/:calendarId—backend/src/routes/calendar.ts(montagem/api/calendar, subcaminho/calendars/:calendarId)PUT /api/calendar/events/:eventId—backend/src/routes/calendar.ts(montagem/api/calendar, subcaminho/events/:eventId)
Automações
DELETE /api/automations/:automationId—backend/src/routes/automations.ts(montagem/api/automations, subcaminho/:automationId)DELETE /api/automations/:automationId/webhook-secret—backend/src/routes/automations.ts(montagem/api/automations, subcaminho/:automationId/webhook-secret)GET /api/automations—backend/src/routes/automations.ts(montagem/api/automations, subcaminho/)GET /api/automations/:automationId—backend/src/routes/automations.ts(montagem/api/automations, subcaminho/:automationId)GET /api/automations/occurrences—backend/src/routes/automations.ts(montagem/api/automations, subcaminho/occurrences)GET /api/automations/runs—backend/src/routes/automations.ts(montagem/api/automations, subcaminho/runs)GET /api/automations/runs/summary—backend/src/routes/automations.ts(montagem/api/automations, subcaminho/runs/summary)POST /api/automations—backend/src/routes/automations.ts(montagem/api/automations, subcaminho/)POST /api/automations/:automationId/pause—backend/src/routes/automations.ts(montagem/api/automations, subcaminho/:automationId/pause)POST /api/automations/:automationId/resume—backend/src/routes/automations.ts(montagem/api/automations, subcaminho/:automationId/resume)POST /api/automations/:automationId/run—backend/src/routes/automations.ts(montagem/api/automations, subcaminho/:automationId/run)POST /api/automations/:automationId/webhook—backend/src/routes/automations.ts(montagem/api/automations, subcaminho/:automationId/webhook)POST /api/automations/:automationId/webhook-secret—backend/src/routes/automations.ts(montagem/api/automations, subcaminho/:automationId/webhook-secret)POST /api/automations/runs/seen—backend/src/routes/automations.ts(montagem/api/automations, subcaminho/runs/seen)PUT /api/automations/:automationId—backend/src/routes/automations.ts(montagem/api/automations, subcaminho/:automationId)
Canais
DELETE /api/channels/:channelId—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/:channelId)DELETE /api/channels/:channelId/members/:userId—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/:channelId/members/:userId)DELETE /api/channels/messages/:messageId—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/messages/:messageId)DELETE /api/channels/messages/:messageId/reactions/:emoji—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/messages/:messageId/reactions/:emoji)GET /api/channels—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/)GET /api/channels/:channelId—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/:channelId)GET /api/channels/:channelId/events—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/:channelId/events)GET /api/channels/:channelId/members—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/:channelId/members)GET /api/channels/:channelId/messages—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/:channelId/messages)GET /api/channels/:channelId/pins—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/:channelId/pins)GET /api/channels/attachments/:attachmentId—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/attachments/:attachmentId)GET /api/channels/messages/:messageId/thread—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/messages/:messageId/thread)GET /api/channels/public—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/public)PATCH /api/channels/:channelId—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/:channelId)PATCH /api/channels/messages/:messageId—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/messages/:messageId)POST /api/channels—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/)POST /api/channels/:channelId/attachments—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/:channelId/attachments)POST /api/channels/:channelId/join—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/:channelId/join)POST /api/channels/:channelId/members—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/:channelId/members)POST /api/channels/:channelId/messages—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/:channelId/messages)POST /api/channels/:channelId/read—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/:channelId/read)POST /api/channels/dm—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/dm)POST /api/channels/messages/:messageId/pin—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/messages/:messageId/pin)POST /api/channels/messages/:messageId/reactions—backend/src/routes/channels.ts(montagem/api/channels, subcaminho/messages/:messageId/reactions)
Notificações
DELETE /api/notifications/:notificationId—backend/src/routes/notifications.ts(montagem/api/notifications, subcaminho/:notificationId)DELETE /api/notifications/webhooks/:targetId—backend/src/routes/notifications.ts(montagem/api/notifications, subcaminho/webhooks/:targetId)GET /api/notifications—backend/src/routes/notifications.ts(montagem/api/notifications, subcaminho/)GET /api/notifications/events—backend/src/routes/notifications.ts(montagem/api/notifications, subcaminho/events)GET /api/notifications/unread-count—backend/src/routes/notifications.ts(montagem/api/notifications, subcaminho/unread-count)GET /api/notifications/webhooks—backend/src/routes/notifications.ts(montagem/api/notifications, subcaminho/webhooks)POST /api/notifications/:notificationId/read—backend/src/routes/notifications.ts(montagem/api/notifications, subcaminho/:notificationId/read)POST /api/notifications/read-all—backend/src/routes/notifications.ts(montagem/api/notifications, subcaminho/read-all)POST /api/notifications/webhooks—backend/src/routes/notifications.ts(montagem/api/notifications, subcaminho/webhooks)DELETE /api/push/subscriptions—backend/src/routes/push.ts(montagem/api/push, subcaminho/subscriptions)GET /api/push/public-key—backend/src/routes/push.ts(montagem/api/push, subcaminho/public-key)GET /api/push/subscriptions—backend/src/routes/push.ts(montagem/api/push, subcaminho/subscriptions)POST /api/push/subscriptions—backend/src/routes/push.ts(montagem/api/push, subcaminho/subscriptions)
Biblioteca de prompts
DELETE /api/prompts/:promptId—backend/src/routes/prompts.ts(montagem/api/prompts, subcaminho/:promptId)GET /api/prompts—backend/src/routes/prompts.ts(montagem/api/prompts, subcaminho/)GET /api/prompts/:promptId—backend/src/routes/prompts.ts(montagem/api/prompts, subcaminho/:promptId)GET /api/prompts/:promptId/export—backend/src/routes/prompts.ts(montagem/api/prompts, subcaminho/:promptId/export)GET /api/prompts/:promptId/versions—backend/src/routes/prompts.ts(montagem/api/prompts, subcaminho/:promptId/versions)POST /api/prompts—backend/src/routes/prompts.ts(montagem/api/prompts, subcaminho/)POST /api/prompts/:promptId/rollback—backend/src/routes/prompts.ts(montagem/api/prompts, subcaminho/:promptId/rollback)POST /api/prompts/import—backend/src/routes/prompts.ts(montagem/api/prompts, subcaminho/import)PUT /api/prompts/:promptId—backend/src/routes/prompts.ts(montagem/api/prompts, subcaminho/:promptId)
Skills
DELETE /api/skills/:skillId—backend/src/routes/skills.ts(montagem/api/skills, subcaminho/:skillId)DELETE /api/skills/:skillId/files—backend/src/routes/skills.ts(montagem/api/skills, subcaminho/:skillId/files)GET /api/skills—backend/src/routes/skills.ts(montagem/api/skills, subcaminho/)GET /api/skills/:skillId—backend/src/routes/skills.ts(montagem/api/skills, subcaminho/:skillId)GET /api/skills/:skillId/export—backend/src/routes/skills.ts(montagem/api/skills, subcaminho/:skillId/export)GET /api/skills/:skillId/files—backend/src/routes/skills.ts(montagem/api/skills, subcaminho/:skillId/files)GET /api/skills/:skillId/files/content—backend/src/routes/skills.ts(montagem/api/skills, subcaminho/:skillId/files/content)GET /api/skills/:skillId/versions—backend/src/routes/skills.ts(montagem/api/skills, subcaminho/:skillId/versions)POST /api/skills—backend/src/routes/skills.ts(montagem/api/skills, subcaminho/)POST /api/skills/:skillId/rollback—backend/src/routes/skills.ts(montagem/api/skills, subcaminho/:skillId/rollback)POST /api/skills/import—backend/src/routes/skills.ts(montagem/api/skills, subcaminho/import)POST /api/skills/import-url—backend/src/routes/skills.ts(montagem/api/skills, subcaminho/import-url)PUT /api/skills/:skillId—backend/src/routes/skills.ts(montagem/api/skills, subcaminho/:skillId)PUT /api/skills/:skillId/files—backend/src/routes/skills.ts(montagem/api/skills, subcaminho/:skillId/files)
Ferramentas do Chat
DELETE /api/tools/approvals/:id—backend/src/routes/tools.ts(montagem/api/tools, subcaminho/approvals/:id)DELETE /api/tools/servers/:id—backend/src/routes/tools.ts(montagem/api/tools, subcaminho/servers/:id)DELETE /api/tools/servers/:id/credential—backend/src/routes/tools.ts(montagem/api/tools, subcaminho/servers/:id/credential)GET /api/tools/access—backend/src/routes/tools.ts(montagem/api/tools, subcaminho/access)GET /api/tools/approvals—backend/src/routes/tools.ts(montagem/api/tools, subcaminho/approvals)GET /api/tools/catalog—backend/src/routes/tools.ts(montagem/api/tools, subcaminho/catalog)GET /api/tools/servers—backend/src/routes/tools.ts(montagem/api/tools, subcaminho/servers)GET /api/tools/servers/:id—backend/src/routes/tools.ts(montagem/api/tools, subcaminho/servers/:id)POST /api/tools/approvals/:id—backend/src/routes/tools.ts(montagem/api/tools, subcaminho/approvals/:id)POST /api/tools/servers—backend/src/routes/tools.ts(montagem/api/tools, subcaminho/servers)POST /api/tools/servers/:id/refresh—backend/src/routes/tools.ts(montagem/api/tools, subcaminho/servers/:id/refresh)PUT /api/tools/access—backend/src/routes/tools.ts(montagem/api/tools, subcaminho/access)PUT /api/tools/servers/:id—backend/src/routes/tools.ts(montagem/api/tools, subcaminho/servers/:id)PUT /api/tools/servers/:id/credential—backend/src/routes/tools.ts(montagem/api/tools, subcaminho/servers/:id/credential)PUT /api/tools/servers/:id/tools/:toolName—backend/src/routes/tools.ts(montagem/api/tools, subcaminho/servers/:id/tools/:toolName)
Work
DELETE /api/work/policies/:id—backend/src/routes/work.ts(montagem/api/work, subcaminho/policies/:id)DELETE /api/work/tasks/:id—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id)DELETE /api/work/tasks/:id/approval-rules/:ruleId—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/approval-rules/:ruleId)DELETE /api/work/tasks/:id/computer/control—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/computer/control)GET /api/work/access—backend/src/routes/work.ts(montagem/api/work, subcaminho/access)GET /api/work/admin/overview—backend/src/routes/work.ts(montagem/api/work, subcaminho/admin/overview)GET /api/work/capabilities—backend/src/routes/work.ts(montagem/api/work, subcaminho/capabilities)GET /api/work/computer/setup—backend/src/routes/work.ts(montagem/api/work, subcaminho/computer/setup)GET /api/work/policies—backend/src/routes/work.ts(montagem/api/work, subcaminho/policies)GET /api/work/tasks—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks)GET /api/work/tasks/:id—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id)GET /api/work/tasks/:id/approvals—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/approvals)GET /api/work/tasks/:id/computer/control—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/computer/control)GET /api/work/tasks/:id/file—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/file)GET /api/work/tasks/:id/files—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/files)GET /api/work/tasks/:id/git—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/git)GET /api/work/tasks/:id/git/diff—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/git/diff)GET /api/work/tasks/:id/messages—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/messages)GET /api/work/tasks/:taskId/runs/:runId/events—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:taskId/runs/:runId/events)PATCH /api/work/tasks/:id—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id)POST /api/work/computer/setup—backend/src/routes/work.ts(montagem/api/work, subcaminho/computer/setup)POST /api/work/computer/skills/:slug/trace—backend/src/routes/work.ts(montagem/api/work, subcaminho/computer/skills/:slug/trace)POST /api/work/policies—backend/src/routes/work.ts(montagem/api/work, subcaminho/policies)POST /api/work/tasks—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks)POST /api/work/tasks/:id/approvals/:approvalId—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/approvals/:approvalId)POST /api/work/tasks/:id/cancel—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/cancel)POST /api/work/tasks/:id/computer/anchor—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/computer/anchor)POST /api/work/tasks/:id/computer/control—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/computer/control)POST /api/work/tasks/:id/computer/start—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/computer/start)POST /api/work/tasks/:id/computer/teach—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/computer/teach)POST /api/work/tasks/:id/git/branches—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/git/branches)POST /api/work/tasks/:id/git/commit—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/git/commit)POST /api/work/tasks/:id/git/init—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/git/init)POST /api/work/tasks/:id/git/stage—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/git/stage)POST /api/work/tasks/:id/git/switch—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/git/switch)POST /api/work/tasks/:id/messages—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/messages)POST /api/work/tasks/:id/preview/start—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/preview/start)POST /api/work/tasks/:id/preview/stop—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/preview/stop)POST /api/work/tasks/:id/runs—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/runs)POST /api/work/tasks/:id/seen—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/seen)PUT /api/work/access—backend/src/routes/work.ts(montagem/api/work, subcaminho/access)PUT /api/work/policies/:id—backend/src/routes/work.ts(montagem/api/work, subcaminho/policies/:id)PUT /api/work/tasks/:id/approvals—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/approvals)PUT /api/work/tasks/:id/file—backend/src/routes/work.ts(montagem/api/work, subcaminho/tasks/:id/file)
Modelos da Agent CLI
GET /api/agent-clis/models—backend/src/routes/agentCli.ts(montagem/api/agent-clis, subcaminho/models)
Artifacts
GET /api/artifacts/sandbox—backend/src/routes/artifacts.ts(montagem/api/artifacts, subcaminho/sandbox)
Uso dos provedores
DELETE /api/costs/budgets/:budgetId—backend/src/routes/costs.ts(montagem/api/costs, subcaminho/budgets/:budgetId)DELETE /api/costs/tariffs/:tariffId—backend/src/routes/costs.ts(montagem/api/costs, subcaminho/tariffs/:tariffId)GET /api/costs/analytics—backend/src/routes/costs.ts(montagem/api/costs, subcaminho/analytics)GET /api/costs/budgets—backend/src/routes/costs.ts(montagem/api/costs, subcaminho/budgets)GET /api/costs/export—backend/src/routes/costs.ts(montagem/api/costs, subcaminho/export)GET /api/costs/tariffs—backend/src/routes/costs.ts(montagem/api/costs, subcaminho/tariffs)POST /api/costs/budgets—backend/src/routes/costs.ts(montagem/api/costs, subcaminho/budgets)POST /api/costs/tariffs—backend/src/routes/costs.ts(montagem/api/costs, subcaminho/tariffs)PUT /api/costs/budgets/:budgetId—backend/src/routes/costs.ts(montagem/api/costs, subcaminho/budgets/:budgetId)GET /api/plugins/usage—backend/src/routes/plugins.ts(montagem/api/plugins, subcaminho/usage)
Plataforma de avaliações
DELETE /api/evaluations/feedback/:messageId—backend/src/routes/evaluations.ts(montagem/api/evaluations, subcaminho/feedback/:messageId)DELETE /api/evaluations/sets/:setId—backend/src/routes/evaluations.ts(montagem/api/evaluations, subcaminho/sets/:setId)GET /api/evaluations/arena/leaderboard—backend/src/routes/evaluations.ts(montagem/api/evaluations, subcaminho/arena/leaderboard)GET /api/evaluations/feedback—backend/src/routes/evaluations.ts(montagem/api/evaluations, subcaminho/feedback)GET /api/evaluations/feedback/all—backend/src/routes/evaluations.ts(montagem/api/evaluations, subcaminho/feedback/all)GET /api/evaluations/runs—backend/src/routes/evaluations.ts(montagem/api/evaluations, subcaminho/runs)GET /api/evaluations/runs/:runId—backend/src/routes/evaluations.ts(montagem/api/evaluations, subcaminho/runs/:runId)GET /api/evaluations/runs/:runId/export—backend/src/routes/evaluations.ts(montagem/api/evaluations, subcaminho/runs/:runId/export)GET /api/evaluations/sets—backend/src/routes/evaluations.ts(montagem/api/evaluations, subcaminho/sets)POST /api/evaluations/arena/matches—backend/src/routes/evaluations.ts(montagem/api/evaluations, subcaminho/arena/matches)POST /api/evaluations/arena/votes—backend/src/routes/evaluations.ts(montagem/api/evaluations, subcaminho/arena/votes)POST /api/evaluations/feedback—backend/src/routes/evaluations.ts(montagem/api/evaluations, subcaminho/feedback)POST /api/evaluations/runs—backend/src/routes/evaluations.ts(montagem/api/evaluations, subcaminho/runs)POST /api/evaluations/runs/:runId/cancel—backend/src/routes/evaluations.ts(montagem/api/evaluations, subcaminho/runs/:runId/cancel)POST /api/evaluations/sets—backend/src/routes/evaluations.ts(montagem/api/evaluations, subcaminho/sets)PUT /api/evaluations/sets/:setId—backend/src/routes/evaluations.ts(montagem/api/evaluations, subcaminho/sets/:setId)
Diagnósticos do sistema
GET /health—backend/src/routes/health.ts(montagem/health, subcaminho/)GET /health/deep—backend/src/routes/health.ts(montagem/health, subcaminho/deep)GET /health/live—backend/src/routes/health.ts(montagem/health, subcaminho/live)GET /health/ready—backend/src/routes/health.ts(montagem/health, subcaminho/ready)GET /api/system—backend/src/routes/systemDiagnostics.ts(montagem/api/system, subcaminho/)
Administração de usuários
DELETE /api/users/:id—backend/src/routes/users.ts(montagem/api/users, subcaminho/:id)GET /api/users—backend/src/routes/users.ts(montagem/api/users, subcaminho/)GET /api/users/pending-approvals—backend/src/routes/users.ts(montagem/api/users, subcaminho/pending-approvals)PATCH /api/users/:id—backend/src/routes/users.ts(montagem/api/users, subcaminho/:id)PATCH /api/users/:id/approve—backend/src/routes/users.ts(montagem/api/users, subcaminho/:id/approve)PATCH /api/users/me/avatar—backend/src/routes/users.ts(montagem/api/users, subcaminho/me/avatar)POST /api/users—backend/src/routes/users.ts(montagem/api/users, subcaminho/)POST /api/users/:id/mfa/reset—backend/src/routes/users.ts(montagem/api/users, subcaminho/:id/mfa/reset)
Autenticação
DELETE /api/auth/passkeys/:id—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/passkeys/:id)DELETE /api/auth/sessions/:id—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/sessions/:id)DELETE /api/auth/tokens/:id—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/tokens/:id)GET /api/auth/encryption-key—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/encryption-key)GET /api/auth/me—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/me)GET /api/auth/mfa—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/mfa)GET /api/auth/mfa/policy—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/mfa/policy)GET /api/auth/oauth/github—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/oauth/github)GET /api/auth/oauth/github/callback—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/oauth/github/callback)GET /api/auth/oauth/github/status—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/oauth/github/status)GET /api/auth/oauth/huggingface—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/oauth/huggingface)GET /api/auth/oauth/huggingface/callback—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/oauth/huggingface/callback)GET /api/auth/oauth/huggingface/status—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/oauth/huggingface/status)GET /api/auth/oauth/oidc—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/oauth/oidc)GET /api/auth/oauth/oidc/callback—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/oauth/oidc/callback)GET /api/auth/oauth/oidc/status—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/oauth/oidc/status)GET /api/auth/passkeys—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/passkeys)GET /api/auth/sessions—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/sessions)GET /api/auth/system-info—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/system-info)GET /api/auth/tokens—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/tokens)GET /api/auth/verify—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/verify)POST /api/auth/login—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/login)POST /api/auth/logout—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/logout)POST /api/auth/mfa/activate—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/mfa/activate)POST /api/auth/mfa/activate-challenge—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/mfa/activate-challenge)POST /api/auth/mfa/disable—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/mfa/disable)POST /api/auth/mfa/enroll—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/mfa/enroll)POST /api/auth/mfa/enroll-challenge—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/mfa/enroll-challenge)POST /api/auth/mfa/recovery-codes—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/mfa/recovery-codes)POST /api/auth/mfa/verify—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/mfa/verify)POST /api/auth/oauth/exchange—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/oauth/exchange)POST /api/auth/passkeys/login—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/passkeys/login)POST /api/auth/passkeys/login-options—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/passkeys/login-options)POST /api/auth/passkeys/register—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/passkeys/register)POST /api/auth/passkeys/register-options—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/passkeys/register-options)POST /api/auth/sessions/revoke-others—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/sessions/revoke-others)POST /api/auth/signup—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/signup)POST /api/auth/tokens—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/tokens)POST /api/auth/websocket-ticket—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/websocket-ticket)PUT /api/auth/mfa/policy—backend/src/routes/auth.ts(montagem/api/auth, subcaminho/mfa/policy)
Controle de acesso
DELETE /api/access/grants/:id—backend/src/routes/access.ts(montagem/api/access, subcaminho/grants/:id)GET /api/access/grants—backend/src/routes/access.ts(montagem/api/access, subcaminho/grants)GET /api/access/principals—backend/src/routes/access.ts(montagem/api/access, subcaminho/principals)GET /api/access/principals/groups—backend/src/routes/access.ts(montagem/api/access, subcaminho/principals/groups)GET /api/access/shared-with-me—backend/src/routes/access.ts(montagem/api/access, subcaminho/shared-with-me)POST /api/access/grants—backend/src/routes/access.ts(montagem/api/access, subcaminho/grants)GET /api/audit—backend/src/routes/audit.ts(montagem/api/audit, subcaminho/)DELETE /api/groups/:id—backend/src/routes/groups.ts(montagem/api/groups, subcaminho/:id)DELETE /api/groups/:id/members/:userId—backend/src/routes/groups.ts(montagem/api/groups, subcaminho/:id/members/:userId)GET /api/groups—backend/src/routes/groups.ts(montagem/api/groups, subcaminho/)GET /api/groups/effective/:userId—backend/src/routes/groups.ts(montagem/api/groups, subcaminho/effective/:userId)PATCH /api/groups/:id—backend/src/routes/groups.ts(montagem/api/groups, subcaminho/:id)POST /api/groups—backend/src/routes/groups.ts(montagem/api/groups, subcaminho/)POST /api/groups/:id/members—backend/src/routes/groups.ts(montagem/api/groups, subcaminho/:id/members)
API pública
GET /v1/models—backend/src/routes/openaiCompat.ts(montagem/v1, subcaminho/models)POST /v1/chat/completions—backend/src/routes/openaiCompat.ts(montagem/v1, subcaminho/chat/completions)
Portabilidade de dados
GET /api/preferences/export—backend/src/routes/preferences.ts(montagem/api/preferences, subcaminho/export)POST /api/preferences/import—backend/src/routes/preferences.ts(montagem/api/preferences, subcaminho/import)POST /api/preferences/import/preflight—backend/src/routes/preferences.ts(montagem/api/preferences, subcaminho/import/preflight)
Conhecimento e recuperação de documentos
DELETE /api/documents/:documentId—backend/src/routes/documents.ts(montagem/api/documents, subcaminho/:documentId)DELETE /api/documents/collections/:collectionId—backend/src/routes/documents.ts(montagem/api/documents, subcaminho/collections/:collectionId)GET /api/documents—backend/src/routes/documents.ts(montagem/api/documents, subcaminho/)GET /api/documents/:documentId—backend/src/routes/documents.ts(montagem/api/documents, subcaminho/:documentId)GET /api/documents/:documentId/source—backend/src/routes/documents.ts(montagem/api/documents, subcaminho/:documentId/source)GET /api/documents/collections—backend/src/routes/documents.ts(montagem/api/documents, subcaminho/collections)GET /api/documents/embeddings/status—backend/src/routes/documents.ts(montagem/api/documents, subcaminho/embeddings/status)GET /api/documents/session/:sessionId—backend/src/routes/documents.ts(montagem/api/documents, subcaminho/session/:sessionId)POST /api/documents/collections—backend/src/routes/documents.ts(montagem/api/documents, subcaminho/collections)POST /api/documents/embeddings/regenerate—backend/src/routes/documents.ts(montagem/api/documents, subcaminho/embeddings/regenerate)POST /api/documents/fetch-url—backend/src/routes/documents.ts(montagem/api/documents, subcaminho/fetch-url)POST /api/documents/search—backend/src/routes/documents.ts(montagem/api/documents, subcaminho/search)POST /api/documents/upload—backend/src/routes/documents.ts(montagem/api/documents, subcaminho/upload)PUT /api/documents/:documentId/collection—backend/src/routes/documents.ts(montagem/api/documents, subcaminho/:documentId/collection)GET /api/embeddings/models—backend/src/routes/embeddings.ts(montagem/api/embeddings, subcaminho/models)
Memória de personas
DELETE /api/personas/:id/memory—backend/src/routes/personas.ts(montagem/api/personas, subcaminho/:id/memory)GET /api/personas/:id/memory/core—backend/src/routes/personas.ts(montagem/api/personas, subcaminho/:id/memory/core)GET /api/personas/:id/memory/stats—backend/src/routes/personas.ts(montagem/api/personas, subcaminho/:id/memory/stats)GET /api/personas/:id/memory/status—backend/src/routes/personas.ts(montagem/api/personas, subcaminho/:id/memory/status)POST /api/personas/:id/memory/consolidate—backend/src/routes/personas.ts(montagem/api/personas, subcaminho/:id/memory/consolidate)POST /api/personas/:id/memory/decay—backend/src/routes/personas.ts(montagem/api/personas, subcaminho/:id/memory/decay)
Busca na web
GET /api/search/access—backend/src/routes/search.ts(montagem/api/search, subcaminho/access)GET /api/search/app—backend/src/routes/search.ts(montagem/api/search, subcaminho/app)GET /api/search/config—backend/src/routes/search.ts(montagem/api/search, subcaminho/config)POST /api/search/test—backend/src/routes/search.ts(montagem/api/search, subcaminho/test)PUT /api/search/access—backend/src/routes/search.ts(montagem/api/search, subcaminho/access)PUT /api/search/config—backend/src/routes/search.ts(montagem/api/search, subcaminho/config)
Configurações e preferências
GET /api/preferences—backend/src/routes/preferences.ts(montagem/api/preferences, subcaminho/)GET /api/preferences/default-theme—backend/src/routes/preferences.ts(montagem/api/preferences, subcaminho/default-theme)POST /api/preferences/embedding-settings/reset—backend/src/routes/preferences.ts(montagem/api/preferences, subcaminho/embedding-settings/reset)POST /api/preferences/generation-options/reset—backend/src/routes/preferences.ts(montagem/api/preferences, subcaminho/generation-options/reset)PUT /api/preferences—backend/src/routes/preferences.ts(montagem/api/preferences, subcaminho/)PUT /api/preferences/default-model—backend/src/routes/preferences.ts(montagem/api/preferences, subcaminho/default-model)PUT /api/preferences/default-theme—backend/src/routes/preferences.ts(montagem/api/preferences, subcaminho/default-theme)PUT /api/preferences/embedding-settings—backend/src/routes/preferences.ts(montagem/api/preferences, subcaminho/embedding-settings)PUT /api/preferences/generation-options—backend/src/routes/preferences.ts(montagem/api/preferences, subcaminho/generation-options)PUT /api/preferences/model-generation-options—backend/src/routes/preferences.ts(montagem/api/preferences, subcaminho/model-generation-options)PUT /api/preferences/system-message—backend/src/routes/preferences.ts(montagem/api/preferences, subcaminho/system-message)
Entrada e saída de fala
GET /api/stt/models—backend/src/routes/stt.ts(montagem/api/stt, subcaminho/models)POST /api/stt/transcribe—backend/src/routes/stt.ts(montagem/api/stt, subcaminho/transcribe)DELETE /api/tts/voice-profiles/:profileId—backend/src/routes/tts.ts(montagem/api/tts, subcaminho/voice-profiles/:profileId)GET /api/tts/models—backend/src/routes/tts.ts(montagem/api/tts, subcaminho/models)GET /api/tts/plugins—backend/src/routes/tts.ts(montagem/api/tts, subcaminho/plugins)GET /api/tts/voice-profiles—backend/src/routes/tts.ts(montagem/api/tts, subcaminho/voice-profiles)GET /api/tts/voices/:pluginId—backend/src/routes/tts.ts(montagem/api/tts, subcaminho/voices/:pluginId)POST /api/tts/generate—backend/src/routes/tts.ts(montagem/api/tts, subcaminho/generate)POST /api/tts/generate-base64—backend/src/routes/tts.ts(montagem/api/tts, subcaminho/generate-base64)POST /api/tts/voice-clone—backend/src/routes/tts.ts(montagem/api/tts, subcaminho/voice-clone)POST /api/tts/voice-profiles/:profileId/revoke—backend/src/routes/tts.ts(montagem/api/tts, subcaminho/voice-profiles/:profileId/revoke)GET /api/voice-access—backend/src/routes/voiceAccess.ts(montagem/api/voice-access, subcaminho/)PUT /api/voice-access/:feature—backend/src/routes/voiceAccess.ts(montagem/api/voice-access, subcaminho/:feature)
Hugging Face Hub
GET /api/huggingface-hub/models—backend/src/routes/huggingfaceHub.ts(montagem/api/huggingface-hub, subcaminho/models)GET /api/huggingface-hub/models/:author/:modelName—backend/src/routes/huggingfaceHub.ts(montagem/api/huggingface-hub, subcaminho/models/:author/:modelName)GET /api/huggingface-hub/models/:author/:modelName/gguf—backend/src/routes/huggingfaceHub.ts(montagem/api/huggingface-hub, subcaminho/models/:author/:modelName/gguf)GET /api/huggingface-hub/models/:author/:modelName/has-gguf—backend/src/routes/huggingfaceHub.ts(montagem/api/huggingface-hub, subcaminho/models/:author/:modelName/has-gguf)GET /api/huggingface-hub/tasks—backend/src/routes/huggingfaceHub.ts(montagem/api/huggingface-hub, subcaminho/tasks)GET /api/huggingface-hub/trending—backend/src/routes/huggingfaceHub.ts(montagem/api/huggingface-hub, subcaminho/trending)POST /api/huggingface-hub/cache/clear—backend/src/routes/huggingfaceHub.ts(montagem/api/huggingface-hub, subcaminho/cache/clear)
Libre Claw
DELETE /api/libre-claw/automations/:automationId—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/automations/:automationId)GET /api/libre-claw/access—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/access)GET /api/libre-claw/automations—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/automations)GET /api/libre-claw/automations/:automationId—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/automations/:automationId)GET /api/libre-claw/config/fallback—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/config/fallback)GET /api/libre-claw/config/model—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/config/model)GET /api/libre-claw/dashboard—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/dashboard)GET /api/libre-claw/health—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/health)GET /api/libre-claw/runs—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/runs)GET /api/libre-claw/runs/:runId—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/runs/:runId)GET /api/libre-claw/runs/:runId/events—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/runs/:runId/events)GET /api/libre-claw/status—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/status)GET /api/libre-claw/usage—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/usage)PATCH /api/libre-claw/automations/:automationId—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/automations/:automationId)PATCH /api/libre-claw/config/fallback—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/config/fallback)PATCH /api/libre-claw/config/model—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/config/model)PATCH /api/libre-claw/config/theme—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/config/theme)POST /api/libre-claw/automations—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/automations)POST /api/libre-claw/automations/:automationId/pause—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/automations/:automationId/pause)POST /api/libre-claw/automations/:automationId/resume—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/automations/:automationId/resume)POST /api/libre-claw/automations/:automationId/run—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/automations/:automationId/run)POST /api/libre-claw/runs—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/runs)POST /api/libre-claw/runs/:runId/cancel—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/runs/:runId/cancel)POST /api/libre-claw/runs/:runId/permissions/:toolCallId—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/runs/:runId/permissions/:toolCallId)PUT /api/libre-claw/access—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/access)PUT /api/libre-claw/automations/:automationId—backend/src/routes/libreClaw.ts(montagem/api/libre-claw, subcaminho/automations/:automationId)
Tarefas e eventos duráveis
GET /api/jobs—backend/src/routes/jobs.ts(montagem/api/jobs, subcaminho/)GET /api/jobs/:jobId—backend/src/routes/jobs.ts(montagem/api/jobs, subcaminho/:jobId)GET /api/jobs/:jobId/events—backend/src/routes/jobs.ts(montagem/api/jobs, subcaminho/:jobId/events)POST /api/jobs/:jobId/cancel—backend/src/routes/jobs.ts(montagem/api/jobs, subcaminho/:jobId/cancel)
Perfis de implantação solo e equipe
Nenhum endpoint Express montado. A barreira executável é a interface e/ou as evidências no código-fonte registradas acima.
Recuperação e backup
GET /api/recovery/drills—backend/src/routes/recovery.ts(montagem/api/recovery, subcaminho/drills)POST /api/recovery/drills/run—backend/src/routes/recovery.ts(montagem/api/recovery, subcaminho/drills/run)
Inventário exato de rotas WebSocket
WEBSOCKET /ws— Chat,backend/src/websocketServer.ts; evidência de autenticação:backend/src/websocketServer.ts,scripts/test-websocket-tickets.mjsWEBSOCKET /ws/work-terminal— Work,backend/src/websocketServer.ts; evidência de autenticação:backend/src/workTerminalServer.ts,scripts/test-websocket-tickets.mjsWEBSOCKET /ws/work-screen— Work,backend/src/websocketServer.ts; evidência de autenticação:backend/src/workScreenServer.tsWEBSOCKET /ws/work-audio— Work,backend/src/websocketServer.ts; evidência de autenticação:backend/src/workScreenServer.ts
Barreira de aplicação
A barreira do pacote analisa o código-fonte TypeScript/JavaScript, resolve cada roteador Express importado para sua montagem literal no aplicativo e reconcilia, uma a uma, todas as declarações literais de método/caminho dos roteadores e os caminhos de upgrade do WebSocket com este inventário. Ela falha diante de um arquivo de rotas não montado, um construtor router.route() não compatível, um caminho de rota dinâmico, um responsável de endpoint ausente ou duplicado, evidências ausentes de autenticação do WebSocket, uma rota da interface alterada, aplicabilidade ausente de esquema/manifesto/padrão, evidências obsoletas ou um documento gerado desatualizado.
As evidências de testes focados são limitadas a uma declaração nomeada exata test(...) e a pelo menos dois padrões de comportamento dentro do corpo desse teste. Os testes do backend devem ser argumentos de arquivo exatos para test:package; as especificações do Playwright devem corresponder à descoberta normal. A barreira também comprova que os dois executores rodam no workflow normal Format & Lint dos pull requests e das branches dev/main.