Contracte globale de capabilități
Acest inventar executabil acoperă fiecare rută explicită de pagină din frontend/src/App.tsx, fiecare declarație literală method/path din fiecare router Express montat din backend/src/routes/*.ts și fiecare pathname literal de upgrade WebSocket din backend/src/websocketServer.ts. Fiecare endpoint are exact un proprietar de capabilitate, iar fiecare endpoint WebSocket are dovezi de autentificare. Fiecare capabilitate declară și dacă se aplică scheme, manifeste și valori implicite, cu dovezi source sau un motiv concret pentru neaplicabilitate, plus documentație și un test comportamental nominalizat, înregistrat în CI-ul obișnuit pentru package sau browser.
Detaliile executabile ale furnizorilor rămân guvernate de scripts/capability-contracts.json și scripts/test-capability-contracts.mjs; acest inventar global face trimitere la acel contract, în loc să-i dubleze regulile de manifest și valorile implicite.
| Capabilitate | Rute UI | Endpoint-uri HTTP | Endpoint-uri WebSocket | Scheme | Manifeste | Valori implicite | Documentație | Teste comportamentale nominalizate |
|---|---|---|---|---|---|---|---|---|
| Home | / | 0 | 0 | Nu se aplică — Pagina Home este o suprafață de navigare și compoziție fără payload independent de cerere sau răspuns. | Nu se aplică — Pagina Home este integrată în aplicație și nu este instalată ori descoperită printr-un manifest. | 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) |
| Gestionarea modelelor | — | 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) |
| Personaje | /personas | 12 | 0 | backend/src/types/index.ts | Nu se aplică — Personajele sunt resurse ale contului păstrate de Libre și nu folosesc un manifest instalabil sau de discovery. | 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) |
| Galerie media | /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) |
| Notițe | /notes | 12 | 0 | backend/src/types/index.tsbackend/src/persistence/resourceTypes.ts | Nu se aplică — Notițele sunt resurse native ale contului și nu au un manifest instalabil sau de discovery. | Nu se aplică — Notițele nu au conținut sau prezentare implicită dincolo de câmpurile furnizate explicit de utilizator. | 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) |
| Calendar | /calendar | 10 | 0 | backend/src/types/index.ts | Nu se aplică — Evenimentele calendaristice sunt resurse native ale contului și nu au un manifest instalabil sau de discovery. | Nu se aplică — Evenimentele nu au conținut implicit dincolo de câmpurile furnizate explicit; recurența folosește fusul orar al serverului documentat în 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) |
| Automatizări | /automations | 15 | 0 | backend/src/types/index.ts | Nu se aplică — Automatizările sunt resurse native ale contului și nu au un manifest instalabil sau de discovery. | docs/48-AUTOMATIONS.md | docs/48-AUTOMATIONS.md | the scheduler fires due automations once and settles stalled runsscripts/test-automations.mjs (test:package) |
| Canale | /channels | 24 | 0 | backend/src/types/index.ts | Nu se aplică — Canalele sunt resurse native ale contului și nu au un manifest instalabil sau de discovery. | 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) |
| Notificări | — | 13 | 0 | backend/src/types/index.ts | Nu se aplică — Notificările sunt stare nativă a contului și nu au un manifest instalabil sau de discovery. | 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 prompturi | — | 9 | 0 | backend/src/services/promptService.ts | Nu se aplică — Prompturile sunt resurse native ale contului; forma portabilă este documentul de export versionat libre-prompt.v1, nu un manifest instalabil sau de discovery. | Nu se aplică — Un prompt nu are conținut implicit: fiecare câmp este furnizat de utilizator, iar randarea înlocuiește numai variabilele declarate, conform scripts/test-prompts.mjs. | docs/50-PROMPTS.md | prompts round-trip through the API and stay encrypted at restscripts/test-prompts.mjs (test:package) |
| Abilități | — | 14 | 0 | backend/src/services/skillService.ts | backend/src/services/skillService.ts | Nu se aplică — O abilitate nu are conținut implicit: manifestul și instrucțiunile sunt exact cele scrise de proprietar, iar abilitățile dezactivate dispar complet din manifest. | 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) |
| Instrumente 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) |
| Modele Agent CLI | /agents | 1 | 0 | backend/src/services/agentCliService.ts | Nu se aplică — Adaptoarele Agent CLI sunt definiții native compilate și nu sunt încărcate din manifeste de furnizor. | 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) |
| Artefacte | /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) |
| Utilizarea furnizorilor | /usage | 10 | 0 | backend/src/services/pluginUsageService.ts | Nu se aplică — Analizele de utilizare consumă evenimente de furnizor, dar nu definesc propriul manifest instalabil sau de discovery. | 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) |
| Platforma de evaluare | /evaluations | 16 | 0 | backend/src/persistence/resourceTypes.ts | Nu se aplică — Evaluările sunt resurse ale contului păstrate de Libre și nu folosesc un manifest instalabil sau de discovery. | 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) |
| Diagnosticarea sistemului | /system | 5 | 0 | backend/src/services/systemDiagnosticsService.ts | Nu se aplică — Diagnosticarea sistemului este un raport autentificat integrat și nu are manifest instalabil sau de discovery. | 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) |
| Administrarea utilizatorilor | /users | 8 | 0 | backend/src/types/index.ts | Nu se aplică — Administrarea utilizatorilor este o capabilitate de identitate integrată și nu are manifest instalabil sau de discovery. | Nu se aplică — Rolul și starea contului sunt alese prin bootstrap sau politica de aprobare, nu printr-o valoare implicită reutilizabilă a capabilității. | docs/12-AUTHENTICATION.md | public registrations require administrator approval before authenticationscripts/test-user-approval.mjs (test:package) |
| Autentificare | /login | 40 | 0 | backend/src/types/index.ts | Nu se aplică — Autentificarea este o limită de securitate integrată și nu este instalată ori descoperită prin manifest. | 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) |
| Controlul accesului | — | 14 | 0 | backend/src/persistence/securityTypes.ts | Nu se aplică — Controlul accesului este o limită de securitate integrată și nu este instalat ori descoperit prin manifest. | 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 public | — | 2 | 0 | backend/src/routes/openaiCompat.ts | Nu se aplică — Suprafața compatibilă OpenAI reflectă un format wire extern și nu are manifest instalabil. | Nu se aplică — Valorile implicite de sampling provin din cererea apelantului și configurația modelului, niciodată din această suprafață. | docs/53-PUBLIC_API.md | a streaming completion emits OpenAI chunk frames and [DONE]scripts/test-openai-compat.mjs (test:package) |
| Portabilitatea datelor | — | 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) |
| Cunoștințe și regăsire din documente | — | 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) |
| Memoria personajului | — | 6 | 0 | backend/src/types/index.ts | Nu se aplică — Memoria personajului este o resursă internă și nu are manifest instalabil sau de discovery. | 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) |
| Căutare web | — | 6 | 0 | backend/src/services/webSearchService.ts | Nu se aplică — Căutarea web folosește setările de conexiune ale administratorului, nu un manifest instalabil de furnizor. | 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) |
| Setări și preferințe | — | 11 | 0 | backend/src/types/index.ts | Nu se aplică — Setările reunesc configurația nativă și a furnizorilor, fără să definească un manifest instalabil separat. | 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) |
| Intrare și ieșire vocală | — | 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 | Nu se aplică — Metadata modelelor Hub sunt date API la distanță; Libre nu definește un manifest local instalabil pentru capabilitatea browserului. | 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 | Nu se aplică — Libre Claw este o integrare de serviciu configurată explicit și nu folosește un manifest de furnizor 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) |
| Job-uri și evenimente durabile | — | 4 | 0 | backend/src/platform/jobs/durableJobTypes.ts | Nu se aplică — Job-urile durabile folosesc tipuri handler înregistrate și contracte de payload persistente, nu manifeste instalabile. | 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) |
| Profiluri de deployment solo și team | — | 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) |
| Recuperare și 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) |
Inventarul exact al rutelor backend
Home
Nu există niciun endpoint Express montat. Limita executabilă este UI-ul și/sau dovada source înregistrată mai sus.
Chat
DELETE /api/chat/folders/:folderId—backend/src/routes/chat.ts(montare/api/chat, subcale/folders/:folderId)DELETE /api/chat/sessions—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions)DELETE /api/chat/sessions/:sessionId—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId)DELETE /api/chat/sessions/:sessionId/queue/:entryId—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/queue/:entryId)GET /api/chat/compaction-config—backend/src/routes/chat.ts(montare/api/chat, subcale/compaction-config)GET /api/chat/context-policy—backend/src/routes/chat.ts(montare/api/chat, subcale/context-policy)GET /api/chat/folders—backend/src/routes/chat.ts(montare/api/chat, subcale/folders)GET /api/chat/sessions—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions)GET /api/chat/sessions/:sessionId—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId)GET /api/chat/sessions/:sessionId/events—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/events)GET /api/chat/sessions/:sessionId/messages/:messageId/branches—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/messages/:messageId/branches)POST /api/chat/folders—backend/src/routes/chat.ts(montare/api/chat, subcale/folders)POST /api/chat/sessions—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions)POST /api/chat/sessions/:sessionId/compaction/:messageId/restore—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/compaction/:messageId/restore)POST /api/chat/sessions/:sessionId/followups—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/followups)POST /api/chat/sessions/:sessionId/fork—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/fork)POST /api/chat/sessions/:sessionId/generate—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/generate)POST /api/chat/sessions/:sessionId/generate-title—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/generate-title)POST /api/chat/sessions/:sessionId/generate/stream—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/generate/stream)POST /api/chat/sessions/:sessionId/generations—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/generations)POST /api/chat/sessions/:sessionId/generations/:assistantMessageId/cancel—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/generations/:assistantMessageId/cancel)POST /api/chat/sessions/:sessionId/messages—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/messages)POST /api/chat/sessions/:sessionId/messages/:messageId/branch—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/messages/:messageId/branch)POST /api/chat/sessions/:sessionId/messages/:messageId/branches—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/messages/:messageId/branches)POST /api/chat/sessions/:sessionId/messages/:messageId/truncate—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/messages/:messageId/truncate)POST /api/chat/sessions/:sessionId/queue—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/queue)PUT /api/chat/compaction-config—backend/src/routes/chat.ts(montare/api/chat, subcale/compaction-config)PUT /api/chat/folders/:folderId—backend/src/routes/chat.ts(montare/api/chat, subcale/folders/:folderId)PUT /api/chat/sessions/:sessionId—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId)PUT /api/chat/sessions/:sessionId/messages/:messageId—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/messages/:messageId)PUT /api/chat/sessions/:sessionId/queue—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/queue)PUT /api/chat/sessions/:sessionId/queue/:entryId—backend/src/routes/chat.ts(montare/api/chat, subcale/sessions/:sessionId/queue/:entryId)
Gestionarea modelelor
DELETE /api/ollama/models—backend/src/routes/ollama.ts(montare/api/ollama, subcale/models)GET /api/ollama/health—backend/src/routes/ollama.ts(montare/api/ollama, subcale/health)GET /api/ollama/library—backend/src/routes/ollama.ts(montare/api/ollama, subcale/library)GET /api/ollama/models—backend/src/routes/ollama.ts(montare/api/ollama, subcale/models)GET /api/ollama/models/:modelName/defaults—backend/src/routes/ollama.ts(montare/api/ollama, subcale/models/:modelName/defaults)GET /api/ollama/models/access—backend/src/routes/ollama.ts(montare/api/ollama, subcale/models/access)GET /api/ollama/models/pull-all/stream—backend/src/routes/ollama.ts(montare/api/ollama, subcale/models/pull-all/stream)GET /api/ollama/models/show—backend/src/routes/ollama.ts(montare/api/ollama, subcale/models/show)GET /api/ollama/models/visibility—backend/src/routes/ollama.ts(montare/api/ollama, subcale/models/visibility)GET /api/ollama/pull/stream—backend/src/routes/ollama.ts(montare/api/ollama, subcale/pull/stream)GET /api/ollama/running—backend/src/routes/ollama.ts(montare/api/ollama, subcale/running)GET /api/ollama/settings—backend/src/routes/ollama.ts(montare/api/ollama, subcale/settings)GET /api/ollama/version—backend/src/routes/ollama.ts(montare/api/ollama, subcale/version)HEAD /api/ollama/blobs/:digest—backend/src/routes/ollama.ts(montare/api/ollama, subcale/blobs/:digest)POST /api/ollama/blobs/:digest—backend/src/routes/ollama.ts(montare/api/ollama, subcale/blobs/:digest)POST /api/ollama/chat—backend/src/routes/ollama.ts(montare/api/ollama, subcale/chat)POST /api/ollama/chat/stream—backend/src/routes/ollama.ts(montare/api/ollama, subcale/chat/stream)POST /api/ollama/embed—backend/src/routes/ollama.ts(montare/api/ollama, subcale/embed)POST /api/ollama/embeddings—backend/src/routes/ollama.ts(montare/api/ollama, subcale/embeddings)POST /api/ollama/models—backend/src/routes/ollama.ts(montare/api/ollama, subcale/models)POST /api/ollama/models/copy—backend/src/routes/ollama.ts(montare/api/ollama, subcale/models/copy)POST /api/ollama/models/pull—backend/src/routes/ollama.ts(montare/api/ollama, subcale/models/pull)POST /api/ollama/models/pull-all—backend/src/routes/ollama.ts(montare/api/ollama, subcale/models/pull-all)POST /api/ollama/models/push—backend/src/routes/ollama.ts(montare/api/ollama, subcale/models/push)POST /api/ollama/models/unload—backend/src/routes/ollama.ts(montare/api/ollama, subcale/models/unload)POST /api/ollama/models/unload-all—backend/src/routes/ollama.ts(montare/api/ollama, subcale/models/unload-all)PUT /api/ollama/models/access—backend/src/routes/ollama.ts(montare/api/ollama, subcale/models/access)PUT /api/ollama/models/visibility—backend/src/routes/ollama.ts(montare/api/ollama, subcale/models/visibility)PUT /api/ollama/settings—backend/src/routes/ollama.ts(montare/api/ollama, subcale/settings)DELETE /api/plugins/:id—backend/src/routes/plugins.ts(montare/api/plugins, subcale/:id)DELETE /api/plugins/:id/credentials—backend/src/routes/plugins.ts(montare/api/plugins, subcale/:id/credentials)DELETE /api/plugins/:id/variables—backend/src/routes/plugins.ts(montare/api/plugins, subcale/:id/variables)GET /api/plugins—backend/src/routes/plugins.ts(montare/api/plugins, subcale/)GET /api/plugins/:id—backend/src/routes/plugins.ts(montare/api/plugins, subcale/:id)GET /api/plugins/:id/credentials/check—backend/src/routes/plugins.ts(montare/api/plugins, subcale/:id/credentials/check)GET /api/plugins/:id/export—backend/src/routes/plugins.ts(montare/api/plugins, subcale/:id/export)GET /api/plugins/:id/variables—backend/src/routes/plugins.ts(montare/api/plugins, subcale/:id/variables)GET /api/plugins/active—backend/src/routes/plugins.ts(montare/api/plugins, subcale/active)GET /api/plugins/active/current—backend/src/routes/plugins.ts(montare/api/plugins, subcale/active/current)GET /api/plugins/credentials/all—backend/src/routes/plugins.ts(montare/api/plugins, subcale/credentials/all)GET /api/plugins/status/all—backend/src/routes/plugins.ts(montare/api/plugins, subcale/status/all)POST /api/plugins/:id/credentials—backend/src/routes/plugins.ts(montare/api/plugins, subcale/:id/credentials)POST /api/plugins/activate/:id—backend/src/routes/plugins.ts(montare/api/plugins, subcale/activate/:id)POST /api/plugins/deactivate—backend/src/routes/plugins.ts(montare/api/plugins, subcale/deactivate)POST /api/plugins/deactivate/:id—backend/src/routes/plugins.ts(montare/api/plugins, subcale/deactivate/:id)POST /api/plugins/discover/:id—backend/src/routes/plugins.ts(montare/api/plugins, subcale/discover/:id)POST /api/plugins/install—backend/src/routes/plugins.ts(montare/api/plugins, subcale/install)POST /api/plugins/probe-endpoint—backend/src/routes/plugins.ts(montare/api/plugins, subcale/probe-endpoint)POST /api/plugins/upload—backend/src/routes/plugins.ts(montare/api/plugins, subcale/upload)PUT /api/plugins/:id—backend/src/routes/plugins.ts(montare/api/plugins, subcale/:id)PUT /api/plugins/:id/variables—backend/src/routes/plugins.ts(montare/api/plugins, subcale/:id/variables)
Personaje
DELETE /api/personas/:id—backend/src/routes/personas.ts(montare/api/personas, subcale/:id)GET /api/personas—backend/src/routes/personas.ts(montare/api/personas, subcale/)GET /api/personas/:id—backend/src/routes/personas.ts(montare/api/personas, subcale/:id)GET /api/personas/:id/backup—backend/src/routes/personas.ts(montare/api/personas, subcale/:id/backup)GET /api/personas/:id/download—backend/src/routes/personas.ts(montare/api/personas, subcale/:id/download)GET /api/personas/:id/export—backend/src/routes/personas.ts(montare/api/personas, subcale/:id/export)GET /api/personas/:id/export/dna—backend/src/routes/personas.ts(montare/api/personas, subcale/:id/export/dna)GET /api/personas/defaults/parameters—backend/src/routes/personas.ts(montare/api/personas, subcale/defaults/parameters)GET /api/personas/stats/count—backend/src/routes/personas.ts(montare/api/personas, subcale/stats/count)POST /api/personas—backend/src/routes/personas.ts(montare/api/personas, subcale/)POST /api/personas/import—backend/src/routes/personas.ts(montare/api/personas, subcale/import)PUT /api/personas/:id—backend/src/routes/personas.ts(montare/api/personas, subcale/:id)
Galerie media
DELETE /api/image-gen/gallery/:imageId—backend/src/routes/imageGen.ts(montare/api/image-gen, subcale/gallery/:imageId)GET /api/image-gen/config/:pluginId—backend/src/routes/imageGen.ts(montare/api/image-gen, subcale/config/:pluginId)GET /api/image-gen/gallery—backend/src/routes/imageGen.ts(montare/api/image-gen, subcale/gallery)GET /api/image-gen/gallery/:imageId—backend/src/routes/imageGen.ts(montare/api/image-gen, subcale/gallery/:imageId)GET /api/image-gen/models—backend/src/routes/imageGen.ts(montare/api/image-gen, subcale/models)GET /api/image-gen/plugins—backend/src/routes/imageGen.ts(montare/api/image-gen, subcale/plugins)POST /api/image-gen/generate—backend/src/routes/imageGen.ts(montare/api/image-gen, subcale/generate)DELETE /api/media/gallery/:mediaId—backend/src/routes/media.ts(montare/api/media, subcale/gallery/:mediaId)DELETE /api/media/video/jobs/:jobId—backend/src/routes/media.ts(montare/api/media, subcale/video/jobs/:jobId)GET /api/media/gallery—backend/src/routes/media.ts(montare/api/media, subcale/gallery)GET /api/media/gallery/:mediaId/content—backend/src/routes/media.ts(montare/api/media, subcale/gallery/:mediaId/content)GET /api/media/models—backend/src/routes/media.ts(montare/api/media, subcale/models)GET /api/media/video/jobs—backend/src/routes/media.ts(montare/api/media, subcale/video/jobs)GET /api/media/video/jobs/:jobId—backend/src/routes/media.ts(montare/api/media, subcale/video/jobs/:jobId)POST /api/media/audio/generate—backend/src/routes/media.ts(montare/api/media, subcale/audio/generate)POST /api/media/audio/voice-clone—backend/src/routes/media.ts(montare/api/media, subcale/audio/voice-clone)POST /api/media/image/edit—backend/src/routes/media.ts(montare/api/media, subcale/image/edit)POST /api/media/sound/generate—backend/src/routes/media.ts(montare/api/media, subcale/sound/generate)POST /api/media/video/generate—backend/src/routes/media.ts(montare/api/media, subcale/video/generate)POST /api/media/video/jobs/:jobId/resume—backend/src/routes/media.ts(montare/api/media, subcale/video/jobs/:jobId/resume)
Notițe
DELETE /api/notes/:noteId—backend/src/routes/notes.ts(montare/api/notes, subcale/:noteId)DELETE /api/notes/:noteId/attachments/:attachmentId—backend/src/routes/notes.ts(montare/api/notes, subcale/:noteId/attachments/:attachmentId)GET /api/notes—backend/src/routes/notes.ts(montare/api/notes, subcale/)GET /api/notes/:noteId—backend/src/routes/notes.ts(montare/api/notes, subcale/:noteId)GET /api/notes/:noteId/attachments—backend/src/routes/notes.ts(montare/api/notes, subcale/:noteId/attachments)GET /api/notes/:noteId/attachments/:attachmentId—backend/src/routes/notes.ts(montare/api/notes, subcale/:noteId/attachments/:attachmentId)GET /api/notes/:noteId/revisions—backend/src/routes/notes.ts(montare/api/notes, subcale/:noteId/revisions)POST /api/notes—backend/src/routes/notes.ts(montare/api/notes, subcale/)POST /api/notes/:noteId/assist—backend/src/routes/notes.ts(montare/api/notes, subcale/:noteId/assist)POST /api/notes/:noteId/attachments—backend/src/routes/notes.ts(montare/api/notes, subcale/:noteId/attachments)POST /api/notes/:noteId/revisions/:revisionId/restore—backend/src/routes/notes.ts(montare/api/notes, subcale/:noteId/revisions/:revisionId/restore)PUT /api/notes/:noteId—backend/src/routes/notes.ts(montare/api/notes, subcale/:noteId)
Calendar
DELETE /api/calendar/calendars/:calendarId—backend/src/routes/calendar.ts(montare/api/calendar, subcale/calendars/:calendarId)DELETE /api/calendar/events/:eventId—backend/src/routes/calendar.ts(montare/api/calendar, subcale/events/:eventId)GET /api/calendar/calendars—backend/src/routes/calendar.ts(montare/api/calendar, subcale/calendars)GET /api/calendar/events—backend/src/routes/calendar.ts(montare/api/calendar, subcale/events)GET /api/calendar/export—backend/src/routes/calendar.ts(montare/api/calendar, subcale/export)POST /api/calendar/calendars—backend/src/routes/calendar.ts(montare/api/calendar, subcale/calendars)POST /api/calendar/events—backend/src/routes/calendar.ts(montare/api/calendar, subcale/events)POST /api/calendar/import—backend/src/routes/calendar.ts(montare/api/calendar, subcale/import)PUT /api/calendar/calendars/:calendarId—backend/src/routes/calendar.ts(montare/api/calendar, subcale/calendars/:calendarId)PUT /api/calendar/events/:eventId—backend/src/routes/calendar.ts(montare/api/calendar, subcale/events/:eventId)
Automatizări
DELETE /api/automations/:automationId—backend/src/routes/automations.ts(montare/api/automations, subcale/:automationId)DELETE /api/automations/:automationId/webhook-secret—backend/src/routes/automations.ts(montare/api/automations, subcale/:automationId/webhook-secret)GET /api/automations—backend/src/routes/automations.ts(montare/api/automations, subcale/)GET /api/automations/:automationId—backend/src/routes/automations.ts(montare/api/automations, subcale/:automationId)GET /api/automations/occurrences—backend/src/routes/automations.ts(montare/api/automations, subcale/occurrences)GET /api/automations/runs—backend/src/routes/automations.ts(montare/api/automations, subcale/runs)GET /api/automations/runs/summary—backend/src/routes/automations.ts(montare/api/automations, subcale/runs/summary)POST /api/automations—backend/src/routes/automations.ts(montare/api/automations, subcale/)POST /api/automations/:automationId/pause—backend/src/routes/automations.ts(montare/api/automations, subcale/:automationId/pause)POST /api/automations/:automationId/resume—backend/src/routes/automations.ts(montare/api/automations, subcale/:automationId/resume)POST /api/automations/:automationId/run—backend/src/routes/automations.ts(montare/api/automations, subcale/:automationId/run)POST /api/automations/:automationId/webhook—backend/src/routes/automations.ts(montare/api/automations, subcale/:automationId/webhook)POST /api/automations/:automationId/webhook-secret—backend/src/routes/automations.ts(montare/api/automations, subcale/:automationId/webhook-secret)POST /api/automations/runs/seen—backend/src/routes/automations.ts(montare/api/automations, subcale/runs/seen)PUT /api/automations/:automationId—backend/src/routes/automations.ts(montare/api/automations, subcale/:automationId)
Canale
DELETE /api/channels/:channelId—backend/src/routes/channels.ts(montare/api/channels, subcale/:channelId)DELETE /api/channels/:channelId/members/:userId—backend/src/routes/channels.ts(montare/api/channels, subcale/:channelId/members/:userId)DELETE /api/channels/messages/:messageId—backend/src/routes/channels.ts(montare/api/channels, subcale/messages/:messageId)DELETE /api/channels/messages/:messageId/reactions/:emoji—backend/src/routes/channels.ts(montare/api/channels, subcale/messages/:messageId/reactions/:emoji)GET /api/channels—backend/src/routes/channels.ts(montare/api/channels, subcale/)GET /api/channels/:channelId—backend/src/routes/channels.ts(montare/api/channels, subcale/:channelId)GET /api/channels/:channelId/events—backend/src/routes/channels.ts(montare/api/channels, subcale/:channelId/events)GET /api/channels/:channelId/members—backend/src/routes/channels.ts(montare/api/channels, subcale/:channelId/members)GET /api/channels/:channelId/messages—backend/src/routes/channels.ts(montare/api/channels, subcale/:channelId/messages)GET /api/channels/:channelId/pins—backend/src/routes/channels.ts(montare/api/channels, subcale/:channelId/pins)GET /api/channels/attachments/:attachmentId—backend/src/routes/channels.ts(montare/api/channels, subcale/attachments/:attachmentId)GET /api/channels/messages/:messageId/thread—backend/src/routes/channels.ts(montare/api/channels, subcale/messages/:messageId/thread)GET /api/channels/public—backend/src/routes/channels.ts(montare/api/channels, subcale/public)PATCH /api/channels/:channelId—backend/src/routes/channels.ts(montare/api/channels, subcale/:channelId)PATCH /api/channels/messages/:messageId—backend/src/routes/channels.ts(montare/api/channels, subcale/messages/:messageId)POST /api/channels—backend/src/routes/channels.ts(montare/api/channels, subcale/)POST /api/channels/:channelId/attachments—backend/src/routes/channels.ts(montare/api/channels, subcale/:channelId/attachments)POST /api/channels/:channelId/join—backend/src/routes/channels.ts(montare/api/channels, subcale/:channelId/join)POST /api/channels/:channelId/members—backend/src/routes/channels.ts(montare/api/channels, subcale/:channelId/members)POST /api/channels/:channelId/messages—backend/src/routes/channels.ts(montare/api/channels, subcale/:channelId/messages)POST /api/channels/:channelId/read—backend/src/routes/channels.ts(montare/api/channels, subcale/:channelId/read)POST /api/channels/dm—backend/src/routes/channels.ts(montare/api/channels, subcale/dm)POST /api/channels/messages/:messageId/pin—backend/src/routes/channels.ts(montare/api/channels, subcale/messages/:messageId/pin)POST /api/channels/messages/:messageId/reactions—backend/src/routes/channels.ts(montare/api/channels, subcale/messages/:messageId/reactions)
Notificări
DELETE /api/notifications/:notificationId—backend/src/routes/notifications.ts(montare/api/notifications, subcale/:notificationId)DELETE /api/notifications/webhooks/:targetId—backend/src/routes/notifications.ts(montare/api/notifications, subcale/webhooks/:targetId)GET /api/notifications—backend/src/routes/notifications.ts(montare/api/notifications, subcale/)GET /api/notifications/events—backend/src/routes/notifications.ts(montare/api/notifications, subcale/events)GET /api/notifications/unread-count—backend/src/routes/notifications.ts(montare/api/notifications, subcale/unread-count)GET /api/notifications/webhooks—backend/src/routes/notifications.ts(montare/api/notifications, subcale/webhooks)POST /api/notifications/:notificationId/read—backend/src/routes/notifications.ts(montare/api/notifications, subcale/:notificationId/read)POST /api/notifications/read-all—backend/src/routes/notifications.ts(montare/api/notifications, subcale/read-all)POST /api/notifications/webhooks—backend/src/routes/notifications.ts(montare/api/notifications, subcale/webhooks)DELETE /api/push/subscriptions—backend/src/routes/push.ts(montare/api/push, subcale/subscriptions)GET /api/push/public-key—backend/src/routes/push.ts(montare/api/push, subcale/public-key)GET /api/push/subscriptions—backend/src/routes/push.ts(montare/api/push, subcale/subscriptions)POST /api/push/subscriptions—backend/src/routes/push.ts(montare/api/push, subcale/subscriptions)
Biblioteca de prompturi
DELETE /api/prompts/:promptId—backend/src/routes/prompts.ts(montare/api/prompts, subcale/:promptId)GET /api/prompts—backend/src/routes/prompts.ts(montare/api/prompts, subcale/)GET /api/prompts/:promptId—backend/src/routes/prompts.ts(montare/api/prompts, subcale/:promptId)GET /api/prompts/:promptId/export—backend/src/routes/prompts.ts(montare/api/prompts, subcale/:promptId/export)GET /api/prompts/:promptId/versions—backend/src/routes/prompts.ts(montare/api/prompts, subcale/:promptId/versions)POST /api/prompts—backend/src/routes/prompts.ts(montare/api/prompts, subcale/)POST /api/prompts/:promptId/rollback—backend/src/routes/prompts.ts(montare/api/prompts, subcale/:promptId/rollback)POST /api/prompts/import—backend/src/routes/prompts.ts(montare/api/prompts, subcale/import)PUT /api/prompts/:promptId—backend/src/routes/prompts.ts(montare/api/prompts, subcale/:promptId)
Abilități
DELETE /api/skills/:skillId—backend/src/routes/skills.ts(montare/api/skills, subcale/:skillId)DELETE /api/skills/:skillId/files—backend/src/routes/skills.ts(montare/api/skills, subcale/:skillId/files)GET /api/skills—backend/src/routes/skills.ts(montare/api/skills, subcale/)GET /api/skills/:skillId—backend/src/routes/skills.ts(montare/api/skills, subcale/:skillId)GET /api/skills/:skillId/export—backend/src/routes/skills.ts(montare/api/skills, subcale/:skillId/export)GET /api/skills/:skillId/files—backend/src/routes/skills.ts(montare/api/skills, subcale/:skillId/files)GET /api/skills/:skillId/files/content—backend/src/routes/skills.ts(montare/api/skills, subcale/:skillId/files/content)GET /api/skills/:skillId/versions—backend/src/routes/skills.ts(montare/api/skills, subcale/:skillId/versions)POST /api/skills—backend/src/routes/skills.ts(montare/api/skills, subcale/)POST /api/skills/:skillId/rollback—backend/src/routes/skills.ts(montare/api/skills, subcale/:skillId/rollback)POST /api/skills/import—backend/src/routes/skills.ts(montare/api/skills, subcale/import)POST /api/skills/import-url—backend/src/routes/skills.ts(montare/api/skills, subcale/import-url)PUT /api/skills/:skillId—backend/src/routes/skills.ts(montare/api/skills, subcale/:skillId)PUT /api/skills/:skillId/files—backend/src/routes/skills.ts(montare/api/skills, subcale/:skillId/files)
Instrumente chat
DELETE /api/tools/approvals/:id—backend/src/routes/tools.ts(montare/api/tools, subcale/approvals/:id)DELETE /api/tools/servers/:id—backend/src/routes/tools.ts(montare/api/tools, subcale/servers/:id)DELETE /api/tools/servers/:id/credential—backend/src/routes/tools.ts(montare/api/tools, subcale/servers/:id/credential)GET /api/tools/access—backend/src/routes/tools.ts(montare/api/tools, subcale/access)GET /api/tools/approvals—backend/src/routes/tools.ts(montare/api/tools, subcale/approvals)GET /api/tools/catalog—backend/src/routes/tools.ts(montare/api/tools, subcale/catalog)GET /api/tools/servers—backend/src/routes/tools.ts(montare/api/tools, subcale/servers)GET /api/tools/servers/:id—backend/src/routes/tools.ts(montare/api/tools, subcale/servers/:id)POST /api/tools/approvals/:id—backend/src/routes/tools.ts(montare/api/tools, subcale/approvals/:id)POST /api/tools/servers—backend/src/routes/tools.ts(montare/api/tools, subcale/servers)POST /api/tools/servers/:id/refresh—backend/src/routes/tools.ts(montare/api/tools, subcale/servers/:id/refresh)PUT /api/tools/access—backend/src/routes/tools.ts(montare/api/tools, subcale/access)PUT /api/tools/servers/:id—backend/src/routes/tools.ts(montare/api/tools, subcale/servers/:id)PUT /api/tools/servers/:id/credential—backend/src/routes/tools.ts(montare/api/tools, subcale/servers/:id/credential)PUT /api/tools/servers/:id/tools/:toolName—backend/src/routes/tools.ts(montare/api/tools, subcale/servers/:id/tools/:toolName)
Work
DELETE /api/work/policies/:id—backend/src/routes/work.ts(montare/api/work, subcale/policies/:id)DELETE /api/work/tasks/:id—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id)DELETE /api/work/tasks/:id/approval-rules/:ruleId—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/approval-rules/:ruleId)DELETE /api/work/tasks/:id/computer/control—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/computer/control)GET /api/work/access—backend/src/routes/work.ts(montare/api/work, subcale/access)GET /api/work/admin/overview—backend/src/routes/work.ts(montare/api/work, subcale/admin/overview)GET /api/work/capabilities—backend/src/routes/work.ts(montare/api/work, subcale/capabilities)GET /api/work/computer/setup—backend/src/routes/work.ts(montare/api/work, subcale/computer/setup)GET /api/work/policies—backend/src/routes/work.ts(montare/api/work, subcale/policies)GET /api/work/tasks—backend/src/routes/work.ts(montare/api/work, subcale/tasks)GET /api/work/tasks/:id—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id)GET /api/work/tasks/:id/approvals—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/approvals)GET /api/work/tasks/:id/computer/control—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/computer/control)GET /api/work/tasks/:id/file—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/file)GET /api/work/tasks/:id/files—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/files)GET /api/work/tasks/:id/git—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/git)GET /api/work/tasks/:id/git/diff—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/git/diff)GET /api/work/tasks/:id/messages—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/messages)GET /api/work/tasks/:taskId/runs/:runId/events—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:taskId/runs/:runId/events)PATCH /api/work/tasks/:id—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id)POST /api/work/computer/setup—backend/src/routes/work.ts(montare/api/work, subcale/computer/setup)POST /api/work/computer/skills/:slug/trace—backend/src/routes/work.ts(montare/api/work, subcale/computer/skills/:slug/trace)POST /api/work/policies—backend/src/routes/work.ts(montare/api/work, subcale/policies)POST /api/work/tasks—backend/src/routes/work.ts(montare/api/work, subcale/tasks)POST /api/work/tasks/:id/approvals/:approvalId—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/approvals/:approvalId)POST /api/work/tasks/:id/cancel—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/cancel)POST /api/work/tasks/:id/computer/anchor—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/computer/anchor)POST /api/work/tasks/:id/computer/control—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/computer/control)POST /api/work/tasks/:id/computer/start—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/computer/start)POST /api/work/tasks/:id/computer/teach—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/computer/teach)POST /api/work/tasks/:id/git/branches—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/git/branches)POST /api/work/tasks/:id/git/commit—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/git/commit)POST /api/work/tasks/:id/git/init—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/git/init)POST /api/work/tasks/:id/git/stage—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/git/stage)POST /api/work/tasks/:id/git/switch—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/git/switch)POST /api/work/tasks/:id/messages—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/messages)POST /api/work/tasks/:id/preview/start—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/preview/start)POST /api/work/tasks/:id/preview/stop—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/preview/stop)POST /api/work/tasks/:id/runs—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/runs)POST /api/work/tasks/:id/seen—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/seen)PUT /api/work/access—backend/src/routes/work.ts(montare/api/work, subcale/access)PUT /api/work/policies/:id—backend/src/routes/work.ts(montare/api/work, subcale/policies/:id)PUT /api/work/tasks/:id/approvals—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/approvals)PUT /api/work/tasks/:id/file—backend/src/routes/work.ts(montare/api/work, subcale/tasks/:id/file)
Modele Agent CLI
GET /api/agent-clis/models—backend/src/routes/agentCli.ts(montare/api/agent-clis, subcale/models)
Artefacte
GET /api/artifacts/sandbox—backend/src/routes/artifacts.ts(montare/api/artifacts, subcale/sandbox)
Utilizarea furnizorilor
DELETE /api/costs/budgets/:budgetId—backend/src/routes/costs.ts(montare/api/costs, subcale/budgets/:budgetId)DELETE /api/costs/tariffs/:tariffId—backend/src/routes/costs.ts(montare/api/costs, subcale/tariffs/:tariffId)GET /api/costs/analytics—backend/src/routes/costs.ts(montare/api/costs, subcale/analytics)GET /api/costs/budgets—backend/src/routes/costs.ts(montare/api/costs, subcale/budgets)GET /api/costs/export—backend/src/routes/costs.ts(montare/api/costs, subcale/export)GET /api/costs/tariffs—backend/src/routes/costs.ts(montare/api/costs, subcale/tariffs)POST /api/costs/budgets—backend/src/routes/costs.ts(montare/api/costs, subcale/budgets)POST /api/costs/tariffs—backend/src/routes/costs.ts(montare/api/costs, subcale/tariffs)PUT /api/costs/budgets/:budgetId—backend/src/routes/costs.ts(montare/api/costs, subcale/budgets/:budgetId)GET /api/plugins/usage—backend/src/routes/plugins.ts(montare/api/plugins, subcale/usage)
Platforma de evaluare
DELETE /api/evaluations/feedback/:messageId—backend/src/routes/evaluations.ts(montare/api/evaluations, subcale/feedback/:messageId)DELETE /api/evaluations/sets/:setId—backend/src/routes/evaluations.ts(montare/api/evaluations, subcale/sets/:setId)GET /api/evaluations/arena/leaderboard—backend/src/routes/evaluations.ts(montare/api/evaluations, subcale/arena/leaderboard)GET /api/evaluations/feedback—backend/src/routes/evaluations.ts(montare/api/evaluations, subcale/feedback)GET /api/evaluations/feedback/all—backend/src/routes/evaluations.ts(montare/api/evaluations, subcale/feedback/all)GET /api/evaluations/runs—backend/src/routes/evaluations.ts(montare/api/evaluations, subcale/runs)GET /api/evaluations/runs/:runId—backend/src/routes/evaluations.ts(montare/api/evaluations, subcale/runs/:runId)GET /api/evaluations/runs/:runId/export—backend/src/routes/evaluations.ts(montare/api/evaluations, subcale/runs/:runId/export)GET /api/evaluations/sets—backend/src/routes/evaluations.ts(montare/api/evaluations, subcale/sets)POST /api/evaluations/arena/matches—backend/src/routes/evaluations.ts(montare/api/evaluations, subcale/arena/matches)POST /api/evaluations/arena/votes—backend/src/routes/evaluations.ts(montare/api/evaluations, subcale/arena/votes)POST /api/evaluations/feedback—backend/src/routes/evaluations.ts(montare/api/evaluations, subcale/feedback)POST /api/evaluations/runs—backend/src/routes/evaluations.ts(montare/api/evaluations, subcale/runs)POST /api/evaluations/runs/:runId/cancel—backend/src/routes/evaluations.ts(montare/api/evaluations, subcale/runs/:runId/cancel)POST /api/evaluations/sets—backend/src/routes/evaluations.ts(montare/api/evaluations, subcale/sets)PUT /api/evaluations/sets/:setId—backend/src/routes/evaluations.ts(montare/api/evaluations, subcale/sets/:setId)
Diagnosticarea sistemului
GET /health—backend/src/routes/health.ts(montare/health, subcale/)GET /health/deep—backend/src/routes/health.ts(montare/health, subcale/deep)GET /health/live—backend/src/routes/health.ts(montare/health, subcale/live)GET /health/ready—backend/src/routes/health.ts(montare/health, subcale/ready)GET /api/system—backend/src/routes/systemDiagnostics.ts(montare/api/system, subcale/)
Administrarea utilizatorilor
DELETE /api/users/:id—backend/src/routes/users.ts(montare/api/users, subcale/:id)GET /api/users—backend/src/routes/users.ts(montare/api/users, subcale/)GET /api/users/pending-approvals—backend/src/routes/users.ts(montare/api/users, subcale/pending-approvals)PATCH /api/users/:id—backend/src/routes/users.ts(montare/api/users, subcale/:id)PATCH /api/users/:id/approve—backend/src/routes/users.ts(montare/api/users, subcale/:id/approve)PATCH /api/users/me/avatar—backend/src/routes/users.ts(montare/api/users, subcale/me/avatar)POST /api/users—backend/src/routes/users.ts(montare/api/users, subcale/)POST /api/users/:id/mfa/reset—backend/src/routes/users.ts(montare/api/users, subcale/:id/mfa/reset)
Autentificare
DELETE /api/auth/passkeys/:id—backend/src/routes/auth.ts(montare/api/auth, subcale/passkeys/:id)DELETE /api/auth/sessions/:id—backend/src/routes/auth.ts(montare/api/auth, subcale/sessions/:id)DELETE /api/auth/tokens/:id—backend/src/routes/auth.ts(montare/api/auth, subcale/tokens/:id)GET /api/auth/encryption-key—backend/src/routes/auth.ts(montare/api/auth, subcale/encryption-key)GET /api/auth/me—backend/src/routes/auth.ts(montare/api/auth, subcale/me)GET /api/auth/mfa—backend/src/routes/auth.ts(montare/api/auth, subcale/mfa)GET /api/auth/mfa/policy—backend/src/routes/auth.ts(montare/api/auth, subcale/mfa/policy)GET /api/auth/oauth/github—backend/src/routes/auth.ts(montare/api/auth, subcale/oauth/github)GET /api/auth/oauth/github/callback—backend/src/routes/auth.ts(montare/api/auth, subcale/oauth/github/callback)GET /api/auth/oauth/github/status—backend/src/routes/auth.ts(montare/api/auth, subcale/oauth/github/status)GET /api/auth/oauth/huggingface—backend/src/routes/auth.ts(montare/api/auth, subcale/oauth/huggingface)GET /api/auth/oauth/huggingface/callback—backend/src/routes/auth.ts(montare/api/auth, subcale/oauth/huggingface/callback)GET /api/auth/oauth/huggingface/status—backend/src/routes/auth.ts(montare/api/auth, subcale/oauth/huggingface/status)GET /api/auth/oauth/oidc—backend/src/routes/auth.ts(montare/api/auth, subcale/oauth/oidc)GET /api/auth/oauth/oidc/callback—backend/src/routes/auth.ts(montare/api/auth, subcale/oauth/oidc/callback)GET /api/auth/oauth/oidc/status—backend/src/routes/auth.ts(montare/api/auth, subcale/oauth/oidc/status)GET /api/auth/passkeys—backend/src/routes/auth.ts(montare/api/auth, subcale/passkeys)GET /api/auth/sessions—backend/src/routes/auth.ts(montare/api/auth, subcale/sessions)GET /api/auth/system-info—backend/src/routes/auth.ts(montare/api/auth, subcale/system-info)GET /api/auth/tokens—backend/src/routes/auth.ts(montare/api/auth, subcale/tokens)GET /api/auth/verify—backend/src/routes/auth.ts(montare/api/auth, subcale/verify)POST /api/auth/login—backend/src/routes/auth.ts(montare/api/auth, subcale/login)POST /api/auth/logout—backend/src/routes/auth.ts(montare/api/auth, subcale/logout)POST /api/auth/mfa/activate—backend/src/routes/auth.ts(montare/api/auth, subcale/mfa/activate)POST /api/auth/mfa/activate-challenge—backend/src/routes/auth.ts(montare/api/auth, subcale/mfa/activate-challenge)POST /api/auth/mfa/disable—backend/src/routes/auth.ts(montare/api/auth, subcale/mfa/disable)POST /api/auth/mfa/enroll—backend/src/routes/auth.ts(montare/api/auth, subcale/mfa/enroll)POST /api/auth/mfa/enroll-challenge—backend/src/routes/auth.ts(montare/api/auth, subcale/mfa/enroll-challenge)POST /api/auth/mfa/recovery-codes—backend/src/routes/auth.ts(montare/api/auth, subcale/mfa/recovery-codes)POST /api/auth/mfa/verify—backend/src/routes/auth.ts(montare/api/auth, subcale/mfa/verify)POST /api/auth/oauth/exchange—backend/src/routes/auth.ts(montare/api/auth, subcale/oauth/exchange)POST /api/auth/passkeys/login—backend/src/routes/auth.ts(montare/api/auth, subcale/passkeys/login)POST /api/auth/passkeys/login-options—backend/src/routes/auth.ts(montare/api/auth, subcale/passkeys/login-options)POST /api/auth/passkeys/register—backend/src/routes/auth.ts(montare/api/auth, subcale/passkeys/register)POST /api/auth/passkeys/register-options—backend/src/routes/auth.ts(montare/api/auth, subcale/passkeys/register-options)POST /api/auth/sessions/revoke-others—backend/src/routes/auth.ts(montare/api/auth, subcale/sessions/revoke-others)POST /api/auth/signup—backend/src/routes/auth.ts(montare/api/auth, subcale/signup)POST /api/auth/tokens—backend/src/routes/auth.ts(montare/api/auth, subcale/tokens)POST /api/auth/websocket-ticket—backend/src/routes/auth.ts(montare/api/auth, subcale/websocket-ticket)PUT /api/auth/mfa/policy—backend/src/routes/auth.ts(montare/api/auth, subcale/mfa/policy)
Controlul accesului
DELETE /api/access/grants/:id—backend/src/routes/access.ts(montare/api/access, subcale/grants/:id)GET /api/access/grants—backend/src/routes/access.ts(montare/api/access, subcale/grants)GET /api/access/principals—backend/src/routes/access.ts(montare/api/access, subcale/principals)GET /api/access/principals/groups—backend/src/routes/access.ts(montare/api/access, subcale/principals/groups)GET /api/access/shared-with-me—backend/src/routes/access.ts(montare/api/access, subcale/shared-with-me)POST /api/access/grants—backend/src/routes/access.ts(montare/api/access, subcale/grants)GET /api/audit—backend/src/routes/audit.ts(montare/api/audit, subcale/)DELETE /api/groups/:id—backend/src/routes/groups.ts(montare/api/groups, subcale/:id)DELETE /api/groups/:id/members/:userId—backend/src/routes/groups.ts(montare/api/groups, subcale/:id/members/:userId)GET /api/groups—backend/src/routes/groups.ts(montare/api/groups, subcale/)GET /api/groups/effective/:userId—backend/src/routes/groups.ts(montare/api/groups, subcale/effective/:userId)PATCH /api/groups/:id—backend/src/routes/groups.ts(montare/api/groups, subcale/:id)POST /api/groups—backend/src/routes/groups.ts(montare/api/groups, subcale/)POST /api/groups/:id/members—backend/src/routes/groups.ts(montare/api/groups, subcale/:id/members)
API public
GET /v1/models—backend/src/routes/openaiCompat.ts(montare/v1, subcale/models)POST /v1/chat/completions—backend/src/routes/openaiCompat.ts(montare/v1, subcale/chat/completions)
Portabilitatea datelor
GET /api/preferences/export—backend/src/routes/preferences.ts(montare/api/preferences, subcale/export)POST /api/preferences/import—backend/src/routes/preferences.ts(montare/api/preferences, subcale/import)POST /api/preferences/import/preflight—backend/src/routes/preferences.ts(montare/api/preferences, subcale/import/preflight)
Cunoștințe și regăsire din documente
DELETE /api/documents/:documentId—backend/src/routes/documents.ts(montare/api/documents, subcale/:documentId)DELETE /api/documents/collections/:collectionId—backend/src/routes/documents.ts(montare/api/documents, subcale/collections/:collectionId)GET /api/documents—backend/src/routes/documents.ts(montare/api/documents, subcale/)GET /api/documents/:documentId—backend/src/routes/documents.ts(montare/api/documents, subcale/:documentId)GET /api/documents/:documentId/source—backend/src/routes/documents.ts(montare/api/documents, subcale/:documentId/source)GET /api/documents/collections—backend/src/routes/documents.ts(montare/api/documents, subcale/collections)GET /api/documents/embeddings/status—backend/src/routes/documents.ts(montare/api/documents, subcale/embeddings/status)GET /api/documents/session/:sessionId—backend/src/routes/documents.ts(montare/api/documents, subcale/session/:sessionId)POST /api/documents/collections—backend/src/routes/documents.ts(montare/api/documents, subcale/collections)POST /api/documents/embeddings/regenerate—backend/src/routes/documents.ts(montare/api/documents, subcale/embeddings/regenerate)POST /api/documents/fetch-url—backend/src/routes/documents.ts(montare/api/documents, subcale/fetch-url)POST /api/documents/search—backend/src/routes/documents.ts(montare/api/documents, subcale/search)POST /api/documents/upload—backend/src/routes/documents.ts(montare/api/documents, subcale/upload)PUT /api/documents/:documentId/collection—backend/src/routes/documents.ts(montare/api/documents, subcale/:documentId/collection)GET /api/embeddings/models—backend/src/routes/embeddings.ts(montare/api/embeddings, subcale/models)
Memoria personajului
DELETE /api/personas/:id/memory—backend/src/routes/personas.ts(montare/api/personas, subcale/:id/memory)GET /api/personas/:id/memory/core—backend/src/routes/personas.ts(montare/api/personas, subcale/:id/memory/core)GET /api/personas/:id/memory/stats—backend/src/routes/personas.ts(montare/api/personas, subcale/:id/memory/stats)GET /api/personas/:id/memory/status—backend/src/routes/personas.ts(montare/api/personas, subcale/:id/memory/status)POST /api/personas/:id/memory/consolidate—backend/src/routes/personas.ts(montare/api/personas, subcale/:id/memory/consolidate)POST /api/personas/:id/memory/decay—backend/src/routes/personas.ts(montare/api/personas, subcale/:id/memory/decay)
Căutare web
GET /api/search/access—backend/src/routes/search.ts(montare/api/search, subcale/access)GET /api/search/app—backend/src/routes/search.ts(montare/api/search, subcale/app)GET /api/search/config—backend/src/routes/search.ts(montare/api/search, subcale/config)POST /api/search/test—backend/src/routes/search.ts(montare/api/search, subcale/test)PUT /api/search/access—backend/src/routes/search.ts(montare/api/search, subcale/access)PUT /api/search/config—backend/src/routes/search.ts(montare/api/search, subcale/config)
Setări și preferințe
GET /api/preferences—backend/src/routes/preferences.ts(montare/api/preferences, subcale/)GET /api/preferences/default-theme—backend/src/routes/preferences.ts(montare/api/preferences, subcale/default-theme)POST /api/preferences/embedding-settings/reset—backend/src/routes/preferences.ts(montare/api/preferences, subcale/embedding-settings/reset)POST /api/preferences/generation-options/reset—backend/src/routes/preferences.ts(montare/api/preferences, subcale/generation-options/reset)PUT /api/preferences—backend/src/routes/preferences.ts(montare/api/preferences, subcale/)PUT /api/preferences/default-model—backend/src/routes/preferences.ts(montare/api/preferences, subcale/default-model)PUT /api/preferences/default-theme—backend/src/routes/preferences.ts(montare/api/preferences, subcale/default-theme)PUT /api/preferences/embedding-settings—backend/src/routes/preferences.ts(montare/api/preferences, subcale/embedding-settings)PUT /api/preferences/generation-options—backend/src/routes/preferences.ts(montare/api/preferences, subcale/generation-options)PUT /api/preferences/model-generation-options—backend/src/routes/preferences.ts(montare/api/preferences, subcale/model-generation-options)PUT /api/preferences/system-message—backend/src/routes/preferences.ts(montare/api/preferences, subcale/system-message)
Intrare și ieșire vocală
GET /api/stt/models—backend/src/routes/stt.ts(montare/api/stt, subcale/models)POST /api/stt/transcribe—backend/src/routes/stt.ts(montare/api/stt, subcale/transcribe)DELETE /api/tts/voice-profiles/:profileId—backend/src/routes/tts.ts(montare/api/tts, subcale/voice-profiles/:profileId)GET /api/tts/models—backend/src/routes/tts.ts(montare/api/tts, subcale/models)GET /api/tts/plugins—backend/src/routes/tts.ts(montare/api/tts, subcale/plugins)GET /api/tts/voice-profiles—backend/src/routes/tts.ts(montare/api/tts, subcale/voice-profiles)GET /api/tts/voices/:pluginId—backend/src/routes/tts.ts(montare/api/tts, subcale/voices/:pluginId)POST /api/tts/generate—backend/src/routes/tts.ts(montare/api/tts, subcale/generate)POST /api/tts/generate-base64—backend/src/routes/tts.ts(montare/api/tts, subcale/generate-base64)POST /api/tts/voice-clone—backend/src/routes/tts.ts(montare/api/tts, subcale/voice-clone)POST /api/tts/voice-profiles/:profileId/revoke—backend/src/routes/tts.ts(montare/api/tts, subcale/voice-profiles/:profileId/revoke)GET /api/voice-access—backend/src/routes/voiceAccess.ts(montare/api/voice-access, subcale/)PUT /api/voice-access/:feature—backend/src/routes/voiceAccess.ts(montare/api/voice-access, subcale/:feature)
Hugging Face Hub
GET /api/huggingface-hub/models—backend/src/routes/huggingfaceHub.ts(montare/api/huggingface-hub, subcale/models)GET /api/huggingface-hub/models/:author/:modelName—backend/src/routes/huggingfaceHub.ts(montare/api/huggingface-hub, subcale/models/:author/:modelName)GET /api/huggingface-hub/models/:author/:modelName/gguf—backend/src/routes/huggingfaceHub.ts(montare/api/huggingface-hub, subcale/models/:author/:modelName/gguf)GET /api/huggingface-hub/models/:author/:modelName/has-gguf—backend/src/routes/huggingfaceHub.ts(montare/api/huggingface-hub, subcale/models/:author/:modelName/has-gguf)GET /api/huggingface-hub/tasks—backend/src/routes/huggingfaceHub.ts(montare/api/huggingface-hub, subcale/tasks)GET /api/huggingface-hub/trending—backend/src/routes/huggingfaceHub.ts(montare/api/huggingface-hub, subcale/trending)POST /api/huggingface-hub/cache/clear—backend/src/routes/huggingfaceHub.ts(montare/api/huggingface-hub, subcale/cache/clear)
Libre Claw
DELETE /api/libre-claw/automations/:automationId—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/automations/:automationId)GET /api/libre-claw/access—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/access)GET /api/libre-claw/automations—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/automations)GET /api/libre-claw/automations/:automationId—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/automations/:automationId)GET /api/libre-claw/config/fallback—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/config/fallback)GET /api/libre-claw/config/model—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/config/model)GET /api/libre-claw/dashboard—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/dashboard)GET /api/libre-claw/health—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/health)GET /api/libre-claw/runs—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/runs)GET /api/libre-claw/runs/:runId—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/runs/:runId)GET /api/libre-claw/runs/:runId/events—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/runs/:runId/events)GET /api/libre-claw/status—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/status)GET /api/libre-claw/usage—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/usage)PATCH /api/libre-claw/automations/:automationId—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/automations/:automationId)PATCH /api/libre-claw/config/fallback—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/config/fallback)PATCH /api/libre-claw/config/model—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/config/model)PATCH /api/libre-claw/config/theme—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/config/theme)POST /api/libre-claw/automations—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/automations)POST /api/libre-claw/automations/:automationId/pause—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/automations/:automationId/pause)POST /api/libre-claw/automations/:automationId/resume—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/automations/:automationId/resume)POST /api/libre-claw/automations/:automationId/run—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/automations/:automationId/run)POST /api/libre-claw/runs—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/runs)POST /api/libre-claw/runs/:runId/cancel—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/runs/:runId/cancel)POST /api/libre-claw/runs/:runId/permissions/:toolCallId—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/runs/:runId/permissions/:toolCallId)PUT /api/libre-claw/access—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/access)PUT /api/libre-claw/automations/:automationId—backend/src/routes/libreClaw.ts(montare/api/libre-claw, subcale/automations/:automationId)
Job-uri și evenimente durabile
GET /api/jobs—backend/src/routes/jobs.ts(montare/api/jobs, subcale/)GET /api/jobs/:jobId—backend/src/routes/jobs.ts(montare/api/jobs, subcale/:jobId)GET /api/jobs/:jobId/events—backend/src/routes/jobs.ts(montare/api/jobs, subcale/:jobId/events)POST /api/jobs/:jobId/cancel—backend/src/routes/jobs.ts(montare/api/jobs, subcale/:jobId/cancel)
Profiluri de deployment solo și team
Nu există niciun endpoint Express montat. Limita executabilă este UI-ul și/sau dovada source înregistrată mai sus.
Recuperare și backup
GET /api/recovery/drills—backend/src/routes/recovery.ts(montare/api/recovery, subcale/drills)POST /api/recovery/drills/run—backend/src/routes/recovery.ts(montare/api/recovery, subcale/drills/run)
Inventarul exact al rutelor WebSocket
WEBSOCKET /ws— Chat,backend/src/websocketServer.ts; dovezi de autentificare:backend/src/websocketServer.ts,scripts/test-websocket-tickets.mjsWEBSOCKET /ws/work-terminal— Work,backend/src/websocketServer.ts; dovezi de autentificare:backend/src/workTerminalServer.ts,scripts/test-websocket-tickets.mjsWEBSOCKET /ws/work-screen— Work,backend/src/websocketServer.ts; dovezi de autentificare:backend/src/workScreenServer.tsWEBSOCKET /ws/work-audio— Work,backend/src/websocketServer.ts; dovezi de autentificare:backend/src/workScreenServer.ts
Limita de aplicare
Poarta package analizează sursa TypeScript/JavaScript, rezolvă fiecare router Express importat la montarea sa literală în aplicație și reconciliază individual fiecare declarație literală method/path și fiecare pathname de upgrade WebSocket cu acest inventar. Eșuează pentru un fișier de rută nemontat, un builder router.route() neacceptat, o cale dinamică, un proprietar de endpoint lipsă sau duplicat, dovezi WebSocket de autentificare lipsă, o rută UI schimbată, aplicabilitatea schemei/manifestului/valorii implicite lipsă, dovezi învechite sau un document generat învechit.
Dovada testului focalizat este limitată la o singură declarație test(...) cu nume exact și cel puțin două tipare de comportament în corpul acelui test. Testele backend trebuie să fie argumente de fișier exacte pentru test:package; specificațiile Playwright trebuie să corespundă descoperirii normale. Poarta dovedește și că ambele sisteme de rulare se execută în workflow-ul normal Format & Lint pentru pull request și dev/main.