Kontrak Kemampuan Global
Inventaris yang dapat dijalankan ini mencakup setiap rute halaman dalam frontend/src/App.tsx, setiap deklarasi metode/jalur literal pada router Express backend/src/routes/*.ts, dan setiap jalur peningkatan WebSocket dalam backend/src/websocketServer.ts. Setiap endpoint memiliki satu pemilik kemampuan dan bukti autentikasi WebSocket. Setiap kemampuan juga menyatakan penerapan skema, manifest, dan nilai bawaan dengan bukti sumber atau alasan khusus, dokumentasi, serta tes perilaku bernama dalam CI paket/peramban.
Detail penyedia tetap diatur oleh scripts/capability-contracts.json dan scripts/test-capability-contracts.mjs; inventaris ini menautkan kontrak alih-alih menggandakan aturan.
| Kemampuan | Rute UI | Endpoint HTTP | Endpoint WebSocket | Skema | Manifest | Bawaan | Dokumentasi | Tes perilaku bernama |
|---|---|---|---|---|---|---|---|---|
| Beranda | / | 0 | 0 | Tidak berlaku — Beranda adalah permukaan navigasi tanpa payload mandiri. | Tidak berlaku — Beranda tertanam dalam aplikasi, bukan melalui 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) |
| Pengelolaan Model | — | 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) |
| Persona | /personas | 12 | 0 | backend/src/types/index.ts | Tidak berlaku — Persona adalah sumber daya akun persisten tanpa manifest. | 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) |
| Galeri 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) |
| Catatan | /notes | 12 | 0 | backend/src/types/index.tsbackend/src/persistence/resourceTypes.ts | Tidak berlaku — Catatan adalah sumber daya akun bawaan tanpa manifest. | Tidak berlaku — Catatan tidak memiliki isi bawaan tersirat. | 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) |
| Kalender | /calendar | 10 | 0 | backend/src/types/index.ts | Tidak berlaku — Acara kalender adalah sumber daya akun bawaan. | Tidak berlaku — Acara memakai zona server dalam 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) |
| Otomasi | /automations | 15 | 0 | backend/src/types/index.ts | Tidak berlaku — Otomasi adalah sumber daya akun bawaan. | docs/48-AUTOMATIONS.md | docs/48-AUTOMATIONS.md | the scheduler fires due automations once and settles stalled runsscripts/test-automations.mjs (test:package) |
| Kanal | /channels | 24 | 0 | backend/src/types/index.ts | Tidak berlaku — Kanal adalah sumber daya akun bawaan. | 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) |
| Pemberitahuan | — | 13 | 0 | backend/src/types/index.ts | Tidak berlaku — Pemberitahuan adalah status akun bawaan. | 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) |
| Pustaka Perintah | — | 9 | 0 | backend/src/services/promptService.ts | Tidak berlaku — Bentuk portabel perintah adalah libre-prompt.v1. | Tidak berlaku — Semua kolom perintah diberikan pengguna; scripts/test-prompts.mjs menegakkan variabel. | docs/50-PROMPTS.md | prompts round-trip through the API and stay encrypted at restscripts/test-prompts.mjs (test:package) |
| Keterampilan | — | 14 | 0 | backend/src/services/skillService.ts | backend/src/services/skillService.ts | Tidak berlaku — Keterampilan tidak memiliki isi implisit; yang nonaktif keluar dari 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) |
| Alat 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) |
| Model Agent CLI | /agents | 1 | 0 | backend/src/services/agentCliService.ts | Tidak berlaku — Adaptor Agent CLI merupakan definisi bawaan terkompilasi. | 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) |
| Artefak | /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) |
| Penggunaan Penyedia | /usage | 10 | 0 | backend/src/services/pluginUsageService.ts | Tidak berlaku — Analitik penggunaan tidak memiliki manifest sendiri. | 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) |
| Platform Evaluasi | /evaluations | 16 | 0 | backend/src/persistence/resourceTypes.ts | Tidak berlaku — Evaluasi adalah sumber daya akun persisten. | 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) |
| Diagnostik Sistem | /system | 5 | 0 | backend/src/services/systemDiagnosticsService.ts | Tidak berlaku — Diagnostik adalah laporan bawaan. | 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) |
| Administrasi Pengguna | /users | 8 | 0 | backend/src/types/index.ts | Tidak berlaku — Administrasi pengguna adalah kemampuan bawaan. | Tidak berlaku — Peran ditentukan kebijakan bootstrap/persetujuan. | docs/12-AUTHENTICATION.md | public registrations require administrator approval before authenticationscripts/test-user-approval.mjs (test:package) |
| Autentikasi | /login | 40 | 0 | backend/src/types/index.ts | Tidak berlaku — Autentikasi adalah batas keamanan bawaan. | 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) |
| Kontrol Akses | — | 14 | 0 | backend/src/persistence/securityTypes.ts | Tidak berlaku — Kontrol akses adalah batas bawaan. | 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 Publik | — | 2 | 0 | backend/src/routes/openaiCompat.ts | Tidak berlaku — Permukaan OpenAI mencerminkan format eksternal. | Tidak berlaku — Bawaan sampling berasal dari pemanggil/model. | docs/53-PUBLIC_API.md | a streaming completion emits OpenAI chunk frames and [DONE]scripts/test-openai-compat.mjs (test:package) |
| Portabilitas Data | — | 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) |
| Pengetahuan dan Pengambilan Dokumen | — | 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) |
| Memori Persona | — | 6 | 0 | backend/src/types/index.ts | Tidak berlaku — Memori persona adalah sumber daya internal. | 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) |
| Pencarian Web | — | 6 | 0 | backend/src/services/webSearchService.ts | Tidak berlaku — Pencarian memakai pengaturan admin. | 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) |
| Pengaturan dan Preferensi | — | 11 | 0 | backend/src/types/index.ts | Tidak berlaku — Pengaturan tidak memiliki manifest terpisah. | 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) |
| Masukan dan Keluaran Ucapan | — | 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 | Tidak berlaku — Metadata Hub adalah data API jarak jauh. | 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 | Tidak berlaku — Libre Claw adalah integrasi layanan eksplisit. | 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) |
| Pekerjaan dan Peristiwa Persisten | — | 4 | 0 | backend/src/platform/jobs/durableJobTypes.ts | Tidak berlaku — Pekerjaan persisten memakai handler dan kontrak payload. | 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) |
| Profil Solo dan 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) |
| Pemulihan dan Cadangan | — | 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) |
Inventaris Rute Backend Tepat
Beranda
Tidak ada endpoint Express terpasang. Batas eksekusi adalah UI atau bukti sumber di atas.
Chat
DELETE /api/chat/folders/:folderId—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/folders/:folderId)DELETE /api/chat/sessions—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions)DELETE /api/chat/sessions/:sessionId—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId)DELETE /api/chat/sessions/:sessionId/queue/:entryId—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/queue/:entryId)GET /api/chat/compaction-config—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/compaction-config)GET /api/chat/context-policy—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/context-policy)GET /api/chat/folders—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/folders)GET /api/chat/sessions—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions)GET /api/chat/sessions/:sessionId—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId)GET /api/chat/sessions/:sessionId/events—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/events)GET /api/chat/sessions/:sessionId/messages/:messageId/branches—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/messages/:messageId/branches)POST /api/chat/folders—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/folders)POST /api/chat/sessions—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions)POST /api/chat/sessions/:sessionId/compaction/:messageId/restore—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/compaction/:messageId/restore)POST /api/chat/sessions/:sessionId/followups—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/followups)POST /api/chat/sessions/:sessionId/fork—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/fork)POST /api/chat/sessions/:sessionId/generate—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/generate)POST /api/chat/sessions/:sessionId/generate-title—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/generate-title)POST /api/chat/sessions/:sessionId/generate/stream—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/generate/stream)POST /api/chat/sessions/:sessionId/generations—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/generations)POST /api/chat/sessions/:sessionId/generations/:assistantMessageId/cancel—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/generations/:assistantMessageId/cancel)POST /api/chat/sessions/:sessionId/messages—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/messages)POST /api/chat/sessions/:sessionId/messages/:messageId/branch—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/messages/:messageId/branch)POST /api/chat/sessions/:sessionId/messages/:messageId/branches—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/messages/:messageId/branches)POST /api/chat/sessions/:sessionId/messages/:messageId/truncate—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/messages/:messageId/truncate)POST /api/chat/sessions/:sessionId/queue—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/queue)PUT /api/chat/compaction-config—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/compaction-config)PUT /api/chat/folders/:folderId—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/folders/:folderId)PUT /api/chat/sessions/:sessionId—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId)PUT /api/chat/sessions/:sessionId/messages/:messageId—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/messages/:messageId)PUT /api/chat/sessions/:sessionId/queue—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/queue)PUT /api/chat/sessions/:sessionId/queue/:entryId—backend/src/routes/chat.ts(titik pemasangan/api/chat, subjalur/sessions/:sessionId/queue/:entryId)
Pengelolaan Model
DELETE /api/ollama/models—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/models)GET /api/ollama/health—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/health)GET /api/ollama/library—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/library)GET /api/ollama/models—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/models)GET /api/ollama/models/:modelName/defaults—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/models/:modelName/defaults)GET /api/ollama/models/access—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/models/access)GET /api/ollama/models/pull-all/stream—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/models/pull-all/stream)GET /api/ollama/models/show—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/models/show)GET /api/ollama/models/visibility—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/models/visibility)GET /api/ollama/pull/stream—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/pull/stream)GET /api/ollama/running—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/running)GET /api/ollama/settings—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/settings)GET /api/ollama/version—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/version)HEAD /api/ollama/blobs/:digest—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/blobs/:digest)POST /api/ollama/blobs/:digest—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/blobs/:digest)POST /api/ollama/chat—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/chat)POST /api/ollama/chat/stream—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/chat/stream)POST /api/ollama/embed—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/embed)POST /api/ollama/embeddings—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/embeddings)POST /api/ollama/models—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/models)POST /api/ollama/models/copy—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/models/copy)POST /api/ollama/models/pull—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/models/pull)POST /api/ollama/models/pull-all—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/models/pull-all)POST /api/ollama/models/push—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/models/push)POST /api/ollama/models/unload—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/models/unload)POST /api/ollama/models/unload-all—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/models/unload-all)PUT /api/ollama/models/access—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/models/access)PUT /api/ollama/models/visibility—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/models/visibility)PUT /api/ollama/settings—backend/src/routes/ollama.ts(titik pemasangan/api/ollama, subjalur/settings)DELETE /api/plugins/:id—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/:id)DELETE /api/plugins/:id/credentials—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/:id/credentials)DELETE /api/plugins/:id/variables—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/:id/variables)GET /api/plugins—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/)GET /api/plugins/:id—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/:id)GET /api/plugins/:id/credentials/check—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/:id/credentials/check)GET /api/plugins/:id/export—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/:id/export)GET /api/plugins/:id/variables—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/:id/variables)GET /api/plugins/active—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/active)GET /api/plugins/active/current—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/active/current)GET /api/plugins/credentials/all—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/credentials/all)GET /api/plugins/status/all—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/status/all)POST /api/plugins/:id/credentials—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/:id/credentials)POST /api/plugins/activate/:id—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/activate/:id)POST /api/plugins/deactivate—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/deactivate)POST /api/plugins/deactivate/:id—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/deactivate/:id)POST /api/plugins/discover/:id—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/discover/:id)POST /api/plugins/install—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/install)POST /api/plugins/probe-endpoint—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/probe-endpoint)POST /api/plugins/upload—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/upload)PUT /api/plugins/:id—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/:id)PUT /api/plugins/:id/variables—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/:id/variables)
Persona
DELETE /api/personas/:id—backend/src/routes/personas.ts(titik pemasangan/api/personas, subjalur/:id)GET /api/personas—backend/src/routes/personas.ts(titik pemasangan/api/personas, subjalur/)GET /api/personas/:id—backend/src/routes/personas.ts(titik pemasangan/api/personas, subjalur/:id)GET /api/personas/:id/backup—backend/src/routes/personas.ts(titik pemasangan/api/personas, subjalur/:id/backup)GET /api/personas/:id/download—backend/src/routes/personas.ts(titik pemasangan/api/personas, subjalur/:id/download)GET /api/personas/:id/export—backend/src/routes/personas.ts(titik pemasangan/api/personas, subjalur/:id/export)GET /api/personas/:id/export/dna—backend/src/routes/personas.ts(titik pemasangan/api/personas, subjalur/:id/export/dna)GET /api/personas/defaults/parameters—backend/src/routes/personas.ts(titik pemasangan/api/personas, subjalur/defaults/parameters)GET /api/personas/stats/count—backend/src/routes/personas.ts(titik pemasangan/api/personas, subjalur/stats/count)POST /api/personas—backend/src/routes/personas.ts(titik pemasangan/api/personas, subjalur/)POST /api/personas/import—backend/src/routes/personas.ts(titik pemasangan/api/personas, subjalur/import)PUT /api/personas/:id—backend/src/routes/personas.ts(titik pemasangan/api/personas, subjalur/:id)
Galeri Media
DELETE /api/image-gen/gallery/:imageId—backend/src/routes/imageGen.ts(titik pemasangan/api/image-gen, subjalur/gallery/:imageId)GET /api/image-gen/config/:pluginId—backend/src/routes/imageGen.ts(titik pemasangan/api/image-gen, subjalur/config/:pluginId)GET /api/image-gen/gallery—backend/src/routes/imageGen.ts(titik pemasangan/api/image-gen, subjalur/gallery)GET /api/image-gen/gallery/:imageId—backend/src/routes/imageGen.ts(titik pemasangan/api/image-gen, subjalur/gallery/:imageId)GET /api/image-gen/models—backend/src/routes/imageGen.ts(titik pemasangan/api/image-gen, subjalur/models)GET /api/image-gen/plugins—backend/src/routes/imageGen.ts(titik pemasangan/api/image-gen, subjalur/plugins)POST /api/image-gen/generate—backend/src/routes/imageGen.ts(titik pemasangan/api/image-gen, subjalur/generate)DELETE /api/media/gallery/:mediaId—backend/src/routes/media.ts(titik pemasangan/api/media, subjalur/gallery/:mediaId)DELETE /api/media/video/jobs/:jobId—backend/src/routes/media.ts(titik pemasangan/api/media, subjalur/video/jobs/:jobId)GET /api/media/gallery—backend/src/routes/media.ts(titik pemasangan/api/media, subjalur/gallery)GET /api/media/gallery/:mediaId/content—backend/src/routes/media.ts(titik pemasangan/api/media, subjalur/gallery/:mediaId/content)GET /api/media/models—backend/src/routes/media.ts(titik pemasangan/api/media, subjalur/models)GET /api/media/video/jobs—backend/src/routes/media.ts(titik pemasangan/api/media, subjalur/video/jobs)GET /api/media/video/jobs/:jobId—backend/src/routes/media.ts(titik pemasangan/api/media, subjalur/video/jobs/:jobId)POST /api/media/audio/generate—backend/src/routes/media.ts(titik pemasangan/api/media, subjalur/audio/generate)POST /api/media/audio/voice-clone—backend/src/routes/media.ts(titik pemasangan/api/media, subjalur/audio/voice-clone)POST /api/media/image/edit—backend/src/routes/media.ts(titik pemasangan/api/media, subjalur/image/edit)POST /api/media/sound/generate—backend/src/routes/media.ts(titik pemasangan/api/media, subjalur/sound/generate)POST /api/media/video/generate—backend/src/routes/media.ts(titik pemasangan/api/media, subjalur/video/generate)POST /api/media/video/jobs/:jobId/resume—backend/src/routes/media.ts(titik pemasangan/api/media, subjalur/video/jobs/:jobId/resume)
Catatan
DELETE /api/notes/:noteId—backend/src/routes/notes.ts(titik pemasangan/api/notes, subjalur/:noteId)DELETE /api/notes/:noteId/attachments/:attachmentId—backend/src/routes/notes.ts(titik pemasangan/api/notes, subjalur/:noteId/attachments/:attachmentId)GET /api/notes—backend/src/routes/notes.ts(titik pemasangan/api/notes, subjalur/)GET /api/notes/:noteId—backend/src/routes/notes.ts(titik pemasangan/api/notes, subjalur/:noteId)GET /api/notes/:noteId/attachments—backend/src/routes/notes.ts(titik pemasangan/api/notes, subjalur/:noteId/attachments)GET /api/notes/:noteId/attachments/:attachmentId—backend/src/routes/notes.ts(titik pemasangan/api/notes, subjalur/:noteId/attachments/:attachmentId)GET /api/notes/:noteId/revisions—backend/src/routes/notes.ts(titik pemasangan/api/notes, subjalur/:noteId/revisions)POST /api/notes—backend/src/routes/notes.ts(titik pemasangan/api/notes, subjalur/)POST /api/notes/:noteId/assist—backend/src/routes/notes.ts(titik pemasangan/api/notes, subjalur/:noteId/assist)POST /api/notes/:noteId/attachments—backend/src/routes/notes.ts(titik pemasangan/api/notes, subjalur/:noteId/attachments)POST /api/notes/:noteId/revisions/:revisionId/restore—backend/src/routes/notes.ts(titik pemasangan/api/notes, subjalur/:noteId/revisions/:revisionId/restore)PUT /api/notes/:noteId—backend/src/routes/notes.ts(titik pemasangan/api/notes, subjalur/:noteId)
Kalender
DELETE /api/calendar/calendars/:calendarId—backend/src/routes/calendar.ts(titik pemasangan/api/calendar, subjalur/calendars/:calendarId)DELETE /api/calendar/events/:eventId—backend/src/routes/calendar.ts(titik pemasangan/api/calendar, subjalur/events/:eventId)GET /api/calendar/calendars—backend/src/routes/calendar.ts(titik pemasangan/api/calendar, subjalur/calendars)GET /api/calendar/events—backend/src/routes/calendar.ts(titik pemasangan/api/calendar, subjalur/events)GET /api/calendar/export—backend/src/routes/calendar.ts(titik pemasangan/api/calendar, subjalur/export)POST /api/calendar/calendars—backend/src/routes/calendar.ts(titik pemasangan/api/calendar, subjalur/calendars)POST /api/calendar/events—backend/src/routes/calendar.ts(titik pemasangan/api/calendar, subjalur/events)POST /api/calendar/import—backend/src/routes/calendar.ts(titik pemasangan/api/calendar, subjalur/import)PUT /api/calendar/calendars/:calendarId—backend/src/routes/calendar.ts(titik pemasangan/api/calendar, subjalur/calendars/:calendarId)PUT /api/calendar/events/:eventId—backend/src/routes/calendar.ts(titik pemasangan/api/calendar, subjalur/events/:eventId)
Otomasi
DELETE /api/automations/:automationId—backend/src/routes/automations.ts(titik pemasangan/api/automations, subjalur/:automationId)DELETE /api/automations/:automationId/webhook-secret—backend/src/routes/automations.ts(titik pemasangan/api/automations, subjalur/:automationId/webhook-secret)GET /api/automations—backend/src/routes/automations.ts(titik pemasangan/api/automations, subjalur/)GET /api/automations/:automationId—backend/src/routes/automations.ts(titik pemasangan/api/automations, subjalur/:automationId)GET /api/automations/occurrences—backend/src/routes/automations.ts(titik pemasangan/api/automations, subjalur/occurrences)GET /api/automations/runs—backend/src/routes/automations.ts(titik pemasangan/api/automations, subjalur/runs)GET /api/automations/runs/summary—backend/src/routes/automations.ts(titik pemasangan/api/automations, subjalur/runs/summary)POST /api/automations—backend/src/routes/automations.ts(titik pemasangan/api/automations, subjalur/)POST /api/automations/:automationId/pause—backend/src/routes/automations.ts(titik pemasangan/api/automations, subjalur/:automationId/pause)POST /api/automations/:automationId/resume—backend/src/routes/automations.ts(titik pemasangan/api/automations, subjalur/:automationId/resume)POST /api/automations/:automationId/run—backend/src/routes/automations.ts(titik pemasangan/api/automations, subjalur/:automationId/run)POST /api/automations/:automationId/webhook—backend/src/routes/automations.ts(titik pemasangan/api/automations, subjalur/:automationId/webhook)POST /api/automations/:automationId/webhook-secret—backend/src/routes/automations.ts(titik pemasangan/api/automations, subjalur/:automationId/webhook-secret)POST /api/automations/runs/seen—backend/src/routes/automations.ts(titik pemasangan/api/automations, subjalur/runs/seen)PUT /api/automations/:automationId—backend/src/routes/automations.ts(titik pemasangan/api/automations, subjalur/:automationId)
Kanal
DELETE /api/channels/:channelId—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/:channelId)DELETE /api/channels/:channelId/members/:userId—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/:channelId/members/:userId)DELETE /api/channels/messages/:messageId—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/messages/:messageId)DELETE /api/channels/messages/:messageId/reactions/:emoji—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/messages/:messageId/reactions/:emoji)GET /api/channels—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/)GET /api/channels/:channelId—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/:channelId)GET /api/channels/:channelId/events—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/:channelId/events)GET /api/channels/:channelId/members—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/:channelId/members)GET /api/channels/:channelId/messages—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/:channelId/messages)GET /api/channels/:channelId/pins—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/:channelId/pins)GET /api/channels/attachments/:attachmentId—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/attachments/:attachmentId)GET /api/channels/messages/:messageId/thread—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/messages/:messageId/thread)GET /api/channels/public—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/public)PATCH /api/channels/:channelId—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/:channelId)PATCH /api/channels/messages/:messageId—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/messages/:messageId)POST /api/channels—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/)POST /api/channels/:channelId/attachments—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/:channelId/attachments)POST /api/channels/:channelId/join—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/:channelId/join)POST /api/channels/:channelId/members—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/:channelId/members)POST /api/channels/:channelId/messages—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/:channelId/messages)POST /api/channels/:channelId/read—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/:channelId/read)POST /api/channels/dm—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/dm)POST /api/channels/messages/:messageId/pin—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/messages/:messageId/pin)POST /api/channels/messages/:messageId/reactions—backend/src/routes/channels.ts(titik pemasangan/api/channels, subjalur/messages/:messageId/reactions)
Pemberitahuan
DELETE /api/notifications/:notificationId—backend/src/routes/notifications.ts(titik pemasangan/api/notifications, subjalur/:notificationId)DELETE /api/notifications/webhooks/:targetId—backend/src/routes/notifications.ts(titik pemasangan/api/notifications, subjalur/webhooks/:targetId)GET /api/notifications—backend/src/routes/notifications.ts(titik pemasangan/api/notifications, subjalur/)GET /api/notifications/events—backend/src/routes/notifications.ts(titik pemasangan/api/notifications, subjalur/events)GET /api/notifications/unread-count—backend/src/routes/notifications.ts(titik pemasangan/api/notifications, subjalur/unread-count)GET /api/notifications/webhooks—backend/src/routes/notifications.ts(titik pemasangan/api/notifications, subjalur/webhooks)POST /api/notifications/:notificationId/read—backend/src/routes/notifications.ts(titik pemasangan/api/notifications, subjalur/:notificationId/read)POST /api/notifications/read-all—backend/src/routes/notifications.ts(titik pemasangan/api/notifications, subjalur/read-all)POST /api/notifications/webhooks—backend/src/routes/notifications.ts(titik pemasangan/api/notifications, subjalur/webhooks)DELETE /api/push/subscriptions—backend/src/routes/push.ts(titik pemasangan/api/push, subjalur/subscriptions)GET /api/push/public-key—backend/src/routes/push.ts(titik pemasangan/api/push, subjalur/public-key)GET /api/push/subscriptions—backend/src/routes/push.ts(titik pemasangan/api/push, subjalur/subscriptions)POST /api/push/subscriptions—backend/src/routes/push.ts(titik pemasangan/api/push, subjalur/subscriptions)
Pustaka Perintah
DELETE /api/prompts/:promptId—backend/src/routes/prompts.ts(titik pemasangan/api/prompts, subjalur/:promptId)GET /api/prompts—backend/src/routes/prompts.ts(titik pemasangan/api/prompts, subjalur/)GET /api/prompts/:promptId—backend/src/routes/prompts.ts(titik pemasangan/api/prompts, subjalur/:promptId)GET /api/prompts/:promptId/export—backend/src/routes/prompts.ts(titik pemasangan/api/prompts, subjalur/:promptId/export)GET /api/prompts/:promptId/versions—backend/src/routes/prompts.ts(titik pemasangan/api/prompts, subjalur/:promptId/versions)POST /api/prompts—backend/src/routes/prompts.ts(titik pemasangan/api/prompts, subjalur/)POST /api/prompts/:promptId/rollback—backend/src/routes/prompts.ts(titik pemasangan/api/prompts, subjalur/:promptId/rollback)POST /api/prompts/import—backend/src/routes/prompts.ts(titik pemasangan/api/prompts, subjalur/import)PUT /api/prompts/:promptId—backend/src/routes/prompts.ts(titik pemasangan/api/prompts, subjalur/:promptId)
Keterampilan
DELETE /api/skills/:skillId—backend/src/routes/skills.ts(titik pemasangan/api/skills, subjalur/:skillId)DELETE /api/skills/:skillId/files—backend/src/routes/skills.ts(titik pemasangan/api/skills, subjalur/:skillId/files)GET /api/skills—backend/src/routes/skills.ts(titik pemasangan/api/skills, subjalur/)GET /api/skills/:skillId—backend/src/routes/skills.ts(titik pemasangan/api/skills, subjalur/:skillId)GET /api/skills/:skillId/export—backend/src/routes/skills.ts(titik pemasangan/api/skills, subjalur/:skillId/export)GET /api/skills/:skillId/files—backend/src/routes/skills.ts(titik pemasangan/api/skills, subjalur/:skillId/files)GET /api/skills/:skillId/files/content—backend/src/routes/skills.ts(titik pemasangan/api/skills, subjalur/:skillId/files/content)GET /api/skills/:skillId/versions—backend/src/routes/skills.ts(titik pemasangan/api/skills, subjalur/:skillId/versions)POST /api/skills—backend/src/routes/skills.ts(titik pemasangan/api/skills, subjalur/)POST /api/skills/:skillId/rollback—backend/src/routes/skills.ts(titik pemasangan/api/skills, subjalur/:skillId/rollback)POST /api/skills/import—backend/src/routes/skills.ts(titik pemasangan/api/skills, subjalur/import)POST /api/skills/import-url—backend/src/routes/skills.ts(titik pemasangan/api/skills, subjalur/import-url)PUT /api/skills/:skillId—backend/src/routes/skills.ts(titik pemasangan/api/skills, subjalur/:skillId)PUT /api/skills/:skillId/files—backend/src/routes/skills.ts(titik pemasangan/api/skills, subjalur/:skillId/files)
Alat Chat
DELETE /api/tools/approvals/:id—backend/src/routes/tools.ts(titik pemasangan/api/tools, subjalur/approvals/:id)DELETE /api/tools/servers/:id—backend/src/routes/tools.ts(titik pemasangan/api/tools, subjalur/servers/:id)DELETE /api/tools/servers/:id/credential—backend/src/routes/tools.ts(titik pemasangan/api/tools, subjalur/servers/:id/credential)GET /api/tools/access—backend/src/routes/tools.ts(titik pemasangan/api/tools, subjalur/access)GET /api/tools/approvals—backend/src/routes/tools.ts(titik pemasangan/api/tools, subjalur/approvals)GET /api/tools/catalog—backend/src/routes/tools.ts(titik pemasangan/api/tools, subjalur/catalog)GET /api/tools/servers—backend/src/routes/tools.ts(titik pemasangan/api/tools, subjalur/servers)GET /api/tools/servers/:id—backend/src/routes/tools.ts(titik pemasangan/api/tools, subjalur/servers/:id)POST /api/tools/approvals/:id—backend/src/routes/tools.ts(titik pemasangan/api/tools, subjalur/approvals/:id)POST /api/tools/servers—backend/src/routes/tools.ts(titik pemasangan/api/tools, subjalur/servers)POST /api/tools/servers/:id/refresh—backend/src/routes/tools.ts(titik pemasangan/api/tools, subjalur/servers/:id/refresh)PUT /api/tools/access—backend/src/routes/tools.ts(titik pemasangan/api/tools, subjalur/access)PUT /api/tools/servers/:id—backend/src/routes/tools.ts(titik pemasangan/api/tools, subjalur/servers/:id)PUT /api/tools/servers/:id/credential—backend/src/routes/tools.ts(titik pemasangan/api/tools, subjalur/servers/:id/credential)PUT /api/tools/servers/:id/tools/:toolName—backend/src/routes/tools.ts(titik pemasangan/api/tools, subjalur/servers/:id/tools/:toolName)
Work
DELETE /api/work/policies/:id—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/policies/:id)DELETE /api/work/tasks/:id—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id)DELETE /api/work/tasks/:id/approval-rules/:ruleId—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/approval-rules/:ruleId)DELETE /api/work/tasks/:id/computer/control—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/computer/control)GET /api/work/access—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/access)GET /api/work/admin/overview—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/admin/overview)GET /api/work/capabilities—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/capabilities)GET /api/work/computer/setup—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/computer/setup)GET /api/work/policies—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/policies)GET /api/work/tasks—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks)GET /api/work/tasks/:id—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id)GET /api/work/tasks/:id/approvals—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/approvals)GET /api/work/tasks/:id/computer/control—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/computer/control)GET /api/work/tasks/:id/file—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/file)GET /api/work/tasks/:id/files—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/files)GET /api/work/tasks/:id/git—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/git)GET /api/work/tasks/:id/git/diff—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/git/diff)GET /api/work/tasks/:id/messages—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/messages)GET /api/work/tasks/:taskId/runs/:runId/events—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:taskId/runs/:runId/events)PATCH /api/work/tasks/:id—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id)POST /api/work/computer/setup—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/computer/setup)POST /api/work/computer/skills/:slug/trace—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/computer/skills/:slug/trace)POST /api/work/policies—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/policies)POST /api/work/tasks—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks)POST /api/work/tasks/:id/approvals/:approvalId—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/approvals/:approvalId)POST /api/work/tasks/:id/cancel—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/cancel)POST /api/work/tasks/:id/computer/anchor—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/computer/anchor)POST /api/work/tasks/:id/computer/control—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/computer/control)POST /api/work/tasks/:id/computer/start—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/computer/start)POST /api/work/tasks/:id/computer/teach—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/computer/teach)POST /api/work/tasks/:id/git/branches—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/git/branches)POST /api/work/tasks/:id/git/commit—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/git/commit)POST /api/work/tasks/:id/git/init—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/git/init)POST /api/work/tasks/:id/git/stage—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/git/stage)POST /api/work/tasks/:id/git/switch—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/git/switch)POST /api/work/tasks/:id/messages—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/messages)POST /api/work/tasks/:id/preview/start—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/preview/start)POST /api/work/tasks/:id/preview/stop—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/preview/stop)POST /api/work/tasks/:id/runs—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/runs)POST /api/work/tasks/:id/seen—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/seen)PUT /api/work/access—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/access)PUT /api/work/policies/:id—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/policies/:id)PUT /api/work/tasks/:id/approvals—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/approvals)PUT /api/work/tasks/:id/file—backend/src/routes/work.ts(titik pemasangan/api/work, subjalur/tasks/:id/file)
Model Agent CLI
GET /api/agent-clis/models—backend/src/routes/agentCli.ts(titik pemasangan/api/agent-clis, subjalur/models)
Artefak
GET /api/artifacts/sandbox—backend/src/routes/artifacts.ts(titik pemasangan/api/artifacts, subjalur/sandbox)
Penggunaan Penyedia
DELETE /api/costs/budgets/:budgetId—backend/src/routes/costs.ts(titik pemasangan/api/costs, subjalur/budgets/:budgetId)DELETE /api/costs/tariffs/:tariffId—backend/src/routes/costs.ts(titik pemasangan/api/costs, subjalur/tariffs/:tariffId)GET /api/costs/analytics—backend/src/routes/costs.ts(titik pemasangan/api/costs, subjalur/analytics)GET /api/costs/budgets—backend/src/routes/costs.ts(titik pemasangan/api/costs, subjalur/budgets)GET /api/costs/export—backend/src/routes/costs.ts(titik pemasangan/api/costs, subjalur/export)GET /api/costs/tariffs—backend/src/routes/costs.ts(titik pemasangan/api/costs, subjalur/tariffs)POST /api/costs/budgets—backend/src/routes/costs.ts(titik pemasangan/api/costs, subjalur/budgets)POST /api/costs/tariffs—backend/src/routes/costs.ts(titik pemasangan/api/costs, subjalur/tariffs)PUT /api/costs/budgets/:budgetId—backend/src/routes/costs.ts(titik pemasangan/api/costs, subjalur/budgets/:budgetId)GET /api/plugins/usage—backend/src/routes/plugins.ts(titik pemasangan/api/plugins, subjalur/usage)
Platform Evaluasi
DELETE /api/evaluations/feedback/:messageId—backend/src/routes/evaluations.ts(titik pemasangan/api/evaluations, subjalur/feedback/:messageId)DELETE /api/evaluations/sets/:setId—backend/src/routes/evaluations.ts(titik pemasangan/api/evaluations, subjalur/sets/:setId)GET /api/evaluations/arena/leaderboard—backend/src/routes/evaluations.ts(titik pemasangan/api/evaluations, subjalur/arena/leaderboard)GET /api/evaluations/feedback—backend/src/routes/evaluations.ts(titik pemasangan/api/evaluations, subjalur/feedback)GET /api/evaluations/feedback/all—backend/src/routes/evaluations.ts(titik pemasangan/api/evaluations, subjalur/feedback/all)GET /api/evaluations/runs—backend/src/routes/evaluations.ts(titik pemasangan/api/evaluations, subjalur/runs)GET /api/evaluations/runs/:runId—backend/src/routes/evaluations.ts(titik pemasangan/api/evaluations, subjalur/runs/:runId)GET /api/evaluations/runs/:runId/export—backend/src/routes/evaluations.ts(titik pemasangan/api/evaluations, subjalur/runs/:runId/export)GET /api/evaluations/sets—backend/src/routes/evaluations.ts(titik pemasangan/api/evaluations, subjalur/sets)POST /api/evaluations/arena/matches—backend/src/routes/evaluations.ts(titik pemasangan/api/evaluations, subjalur/arena/matches)POST /api/evaluations/arena/votes—backend/src/routes/evaluations.ts(titik pemasangan/api/evaluations, subjalur/arena/votes)POST /api/evaluations/feedback—backend/src/routes/evaluations.ts(titik pemasangan/api/evaluations, subjalur/feedback)POST /api/evaluations/runs—backend/src/routes/evaluations.ts(titik pemasangan/api/evaluations, subjalur/runs)POST /api/evaluations/runs/:runId/cancel—backend/src/routes/evaluations.ts(titik pemasangan/api/evaluations, subjalur/runs/:runId/cancel)POST /api/evaluations/sets—backend/src/routes/evaluations.ts(titik pemasangan/api/evaluations, subjalur/sets)PUT /api/evaluations/sets/:setId—backend/src/routes/evaluations.ts(titik pemasangan/api/evaluations, subjalur/sets/:setId)
Diagnostik Sistem
GET /health—backend/src/routes/health.ts(titik pemasangan/health, subjalur/)GET /health/deep—backend/src/routes/health.ts(titik pemasangan/health, subjalur/deep)GET /health/live—backend/src/routes/health.ts(titik pemasangan/health, subjalur/live)GET /health/ready—backend/src/routes/health.ts(titik pemasangan/health, subjalur/ready)GET /api/system—backend/src/routes/systemDiagnostics.ts(titik pemasangan/api/system, subjalur/)
Administrasi Pengguna
DELETE /api/users/:id—backend/src/routes/users.ts(titik pemasangan/api/users, subjalur/:id)GET /api/users—backend/src/routes/users.ts(titik pemasangan/api/users, subjalur/)GET /api/users/pending-approvals—backend/src/routes/users.ts(titik pemasangan/api/users, subjalur/pending-approvals)PATCH /api/users/:id—backend/src/routes/users.ts(titik pemasangan/api/users, subjalur/:id)PATCH /api/users/:id/approve—backend/src/routes/users.ts(titik pemasangan/api/users, subjalur/:id/approve)PATCH /api/users/me/avatar—backend/src/routes/users.ts(titik pemasangan/api/users, subjalur/me/avatar)POST /api/users—backend/src/routes/users.ts(titik pemasangan/api/users, subjalur/)POST /api/users/:id/mfa/reset—backend/src/routes/users.ts(titik pemasangan/api/users, subjalur/:id/mfa/reset)
Autentikasi
DELETE /api/auth/passkeys/:id—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/passkeys/:id)DELETE /api/auth/sessions/:id—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/sessions/:id)DELETE /api/auth/tokens/:id—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/tokens/:id)GET /api/auth/encryption-key—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/encryption-key)GET /api/auth/me—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/me)GET /api/auth/mfa—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/mfa)GET /api/auth/mfa/policy—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/mfa/policy)GET /api/auth/oauth/github—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/oauth/github)GET /api/auth/oauth/github/callback—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/oauth/github/callback)GET /api/auth/oauth/github/status—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/oauth/github/status)GET /api/auth/oauth/huggingface—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/oauth/huggingface)GET /api/auth/oauth/huggingface/callback—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/oauth/huggingface/callback)GET /api/auth/oauth/huggingface/status—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/oauth/huggingface/status)GET /api/auth/oauth/oidc—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/oauth/oidc)GET /api/auth/oauth/oidc/callback—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/oauth/oidc/callback)GET /api/auth/oauth/oidc/status—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/oauth/oidc/status)GET /api/auth/passkeys—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/passkeys)GET /api/auth/sessions—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/sessions)GET /api/auth/system-info—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/system-info)GET /api/auth/tokens—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/tokens)GET /api/auth/verify—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/verify)POST /api/auth/login—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/login)POST /api/auth/logout—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/logout)POST /api/auth/mfa/activate—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/mfa/activate)POST /api/auth/mfa/activate-challenge—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/mfa/activate-challenge)POST /api/auth/mfa/disable—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/mfa/disable)POST /api/auth/mfa/enroll—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/mfa/enroll)POST /api/auth/mfa/enroll-challenge—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/mfa/enroll-challenge)POST /api/auth/mfa/recovery-codes—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/mfa/recovery-codes)POST /api/auth/mfa/verify—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/mfa/verify)POST /api/auth/oauth/exchange—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/oauth/exchange)POST /api/auth/passkeys/login—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/passkeys/login)POST /api/auth/passkeys/login-options—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/passkeys/login-options)POST /api/auth/passkeys/register—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/passkeys/register)POST /api/auth/passkeys/register-options—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/passkeys/register-options)POST /api/auth/sessions/revoke-others—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/sessions/revoke-others)POST /api/auth/signup—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/signup)POST /api/auth/tokens—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/tokens)POST /api/auth/websocket-ticket—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/websocket-ticket)PUT /api/auth/mfa/policy—backend/src/routes/auth.ts(titik pemasangan/api/auth, subjalur/mfa/policy)
Kontrol Akses
DELETE /api/access/grants/:id—backend/src/routes/access.ts(titik pemasangan/api/access, subjalur/grants/:id)GET /api/access/grants—backend/src/routes/access.ts(titik pemasangan/api/access, subjalur/grants)GET /api/access/principals—backend/src/routes/access.ts(titik pemasangan/api/access, subjalur/principals)GET /api/access/principals/groups—backend/src/routes/access.ts(titik pemasangan/api/access, subjalur/principals/groups)GET /api/access/shared-with-me—backend/src/routes/access.ts(titik pemasangan/api/access, subjalur/shared-with-me)POST /api/access/grants—backend/src/routes/access.ts(titik pemasangan/api/access, subjalur/grants)GET /api/audit—backend/src/routes/audit.ts(titik pemasangan/api/audit, subjalur/)DELETE /api/groups/:id—backend/src/routes/groups.ts(titik pemasangan/api/groups, subjalur/:id)DELETE /api/groups/:id/members/:userId—backend/src/routes/groups.ts(titik pemasangan/api/groups, subjalur/:id/members/:userId)GET /api/groups—backend/src/routes/groups.ts(titik pemasangan/api/groups, subjalur/)GET /api/groups/effective/:userId—backend/src/routes/groups.ts(titik pemasangan/api/groups, subjalur/effective/:userId)PATCH /api/groups/:id—backend/src/routes/groups.ts(titik pemasangan/api/groups, subjalur/:id)POST /api/groups—backend/src/routes/groups.ts(titik pemasangan/api/groups, subjalur/)POST /api/groups/:id/members—backend/src/routes/groups.ts(titik pemasangan/api/groups, subjalur/:id/members)
API Publik
GET /v1/models—backend/src/routes/openaiCompat.ts(titik pemasangan/v1, subjalur/models)POST /v1/chat/completions—backend/src/routes/openaiCompat.ts(titik pemasangan/v1, subjalur/chat/completions)
Portabilitas Data
GET /api/preferences/export—backend/src/routes/preferences.ts(titik pemasangan/api/preferences, subjalur/export)POST /api/preferences/import—backend/src/routes/preferences.ts(titik pemasangan/api/preferences, subjalur/import)POST /api/preferences/import/preflight—backend/src/routes/preferences.ts(titik pemasangan/api/preferences, subjalur/import/preflight)
Pengetahuan dan Pengambilan Dokumen
DELETE /api/documents/:documentId—backend/src/routes/documents.ts(titik pemasangan/api/documents, subjalur/:documentId)DELETE /api/documents/collections/:collectionId—backend/src/routes/documents.ts(titik pemasangan/api/documents, subjalur/collections/:collectionId)GET /api/documents—backend/src/routes/documents.ts(titik pemasangan/api/documents, subjalur/)GET /api/documents/:documentId—backend/src/routes/documents.ts(titik pemasangan/api/documents, subjalur/:documentId)GET /api/documents/:documentId/source—backend/src/routes/documents.ts(titik pemasangan/api/documents, subjalur/:documentId/source)GET /api/documents/collections—backend/src/routes/documents.ts(titik pemasangan/api/documents, subjalur/collections)GET /api/documents/embeddings/status—backend/src/routes/documents.ts(titik pemasangan/api/documents, subjalur/embeddings/status)GET /api/documents/session/:sessionId—backend/src/routes/documents.ts(titik pemasangan/api/documents, subjalur/session/:sessionId)POST /api/documents/collections—backend/src/routes/documents.ts(titik pemasangan/api/documents, subjalur/collections)POST /api/documents/embeddings/regenerate—backend/src/routes/documents.ts(titik pemasangan/api/documents, subjalur/embeddings/regenerate)POST /api/documents/fetch-url—backend/src/routes/documents.ts(titik pemasangan/api/documents, subjalur/fetch-url)POST /api/documents/search—backend/src/routes/documents.ts(titik pemasangan/api/documents, subjalur/search)POST /api/documents/upload—backend/src/routes/documents.ts(titik pemasangan/api/documents, subjalur/upload)PUT /api/documents/:documentId/collection—backend/src/routes/documents.ts(titik pemasangan/api/documents, subjalur/:documentId/collection)GET /api/embeddings/models—backend/src/routes/embeddings.ts(titik pemasangan/api/embeddings, subjalur/models)
Memori Persona
DELETE /api/personas/:id/memory—backend/src/routes/personas.ts(titik pemasangan/api/personas, subjalur/:id/memory)GET /api/personas/:id/memory/core—backend/src/routes/personas.ts(titik pemasangan/api/personas, subjalur/:id/memory/core)GET /api/personas/:id/memory/stats—backend/src/routes/personas.ts(titik pemasangan/api/personas, subjalur/:id/memory/stats)GET /api/personas/:id/memory/status—backend/src/routes/personas.ts(titik pemasangan/api/personas, subjalur/:id/memory/status)POST /api/personas/:id/memory/consolidate—backend/src/routes/personas.ts(titik pemasangan/api/personas, subjalur/:id/memory/consolidate)POST /api/personas/:id/memory/decay—backend/src/routes/personas.ts(titik pemasangan/api/personas, subjalur/:id/memory/decay)
Pencarian Web
GET /api/search/access—backend/src/routes/search.ts(titik pemasangan/api/search, subjalur/access)GET /api/search/app—backend/src/routes/search.ts(titik pemasangan/api/search, subjalur/app)GET /api/search/config—backend/src/routes/search.ts(titik pemasangan/api/search, subjalur/config)POST /api/search/test—backend/src/routes/search.ts(titik pemasangan/api/search, subjalur/test)PUT /api/search/access—backend/src/routes/search.ts(titik pemasangan/api/search, subjalur/access)PUT /api/search/config—backend/src/routes/search.ts(titik pemasangan/api/search, subjalur/config)
Pengaturan dan Preferensi
GET /api/preferences—backend/src/routes/preferences.ts(titik pemasangan/api/preferences, subjalur/)GET /api/preferences/default-theme—backend/src/routes/preferences.ts(titik pemasangan/api/preferences, subjalur/default-theme)POST /api/preferences/embedding-settings/reset—backend/src/routes/preferences.ts(titik pemasangan/api/preferences, subjalur/embedding-settings/reset)POST /api/preferences/generation-options/reset—backend/src/routes/preferences.ts(titik pemasangan/api/preferences, subjalur/generation-options/reset)PUT /api/preferences—backend/src/routes/preferences.ts(titik pemasangan/api/preferences, subjalur/)PUT /api/preferences/default-model—backend/src/routes/preferences.ts(titik pemasangan/api/preferences, subjalur/default-model)PUT /api/preferences/default-theme—backend/src/routes/preferences.ts(titik pemasangan/api/preferences, subjalur/default-theme)PUT /api/preferences/embedding-settings—backend/src/routes/preferences.ts(titik pemasangan/api/preferences, subjalur/embedding-settings)PUT /api/preferences/generation-options—backend/src/routes/preferences.ts(titik pemasangan/api/preferences, subjalur/generation-options)PUT /api/preferences/model-generation-options—backend/src/routes/preferences.ts(titik pemasangan/api/preferences, subjalur/model-generation-options)PUT /api/preferences/system-message—backend/src/routes/preferences.ts(titik pemasangan/api/preferences, subjalur/system-message)
Masukan dan Keluaran Ucapan
GET /api/stt/models—backend/src/routes/stt.ts(titik pemasangan/api/stt, subjalur/models)POST /api/stt/transcribe—backend/src/routes/stt.ts(titik pemasangan/api/stt, subjalur/transcribe)DELETE /api/tts/voice-profiles/:profileId—backend/src/routes/tts.ts(titik pemasangan/api/tts, subjalur/voice-profiles/:profileId)GET /api/tts/models—backend/src/routes/tts.ts(titik pemasangan/api/tts, subjalur/models)GET /api/tts/plugins—backend/src/routes/tts.ts(titik pemasangan/api/tts, subjalur/plugins)GET /api/tts/voice-profiles—backend/src/routes/tts.ts(titik pemasangan/api/tts, subjalur/voice-profiles)GET /api/tts/voices/:pluginId—backend/src/routes/tts.ts(titik pemasangan/api/tts, subjalur/voices/:pluginId)POST /api/tts/generate—backend/src/routes/tts.ts(titik pemasangan/api/tts, subjalur/generate)POST /api/tts/generate-base64—backend/src/routes/tts.ts(titik pemasangan/api/tts, subjalur/generate-base64)POST /api/tts/voice-clone—backend/src/routes/tts.ts(titik pemasangan/api/tts, subjalur/voice-clone)POST /api/tts/voice-profiles/:profileId/revoke—backend/src/routes/tts.ts(titik pemasangan/api/tts, subjalur/voice-profiles/:profileId/revoke)GET /api/voice-access—backend/src/routes/voiceAccess.ts(titik pemasangan/api/voice-access, subjalur/)PUT /api/voice-access/:feature—backend/src/routes/voiceAccess.ts(titik pemasangan/api/voice-access, subjalur/:feature)
Hugging Face Hub
GET /api/huggingface-hub/models—backend/src/routes/huggingfaceHub.ts(titik pemasangan/api/huggingface-hub, subjalur/models)GET /api/huggingface-hub/models/:author/:modelName—backend/src/routes/huggingfaceHub.ts(titik pemasangan/api/huggingface-hub, subjalur/models/:author/:modelName)GET /api/huggingface-hub/models/:author/:modelName/gguf—backend/src/routes/huggingfaceHub.ts(titik pemasangan/api/huggingface-hub, subjalur/models/:author/:modelName/gguf)GET /api/huggingface-hub/models/:author/:modelName/has-gguf—backend/src/routes/huggingfaceHub.ts(titik pemasangan/api/huggingface-hub, subjalur/models/:author/:modelName/has-gguf)GET /api/huggingface-hub/tasks—backend/src/routes/huggingfaceHub.ts(titik pemasangan/api/huggingface-hub, subjalur/tasks)GET /api/huggingface-hub/trending—backend/src/routes/huggingfaceHub.ts(titik pemasangan/api/huggingface-hub, subjalur/trending)POST /api/huggingface-hub/cache/clear—backend/src/routes/huggingfaceHub.ts(titik pemasangan/api/huggingface-hub, subjalur/cache/clear)
Libre Claw
DELETE /api/libre-claw/automations/:automationId—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/automations/:automationId)GET /api/libre-claw/access—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/access)GET /api/libre-claw/automations—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/automations)GET /api/libre-claw/automations/:automationId—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/automations/:automationId)GET /api/libre-claw/config/fallback—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/config/fallback)GET /api/libre-claw/config/model—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/config/model)GET /api/libre-claw/dashboard—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/dashboard)GET /api/libre-claw/health—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/health)GET /api/libre-claw/runs—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/runs)GET /api/libre-claw/runs/:runId—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/runs/:runId)GET /api/libre-claw/runs/:runId/events—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/runs/:runId/events)GET /api/libre-claw/status—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/status)GET /api/libre-claw/usage—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/usage)PATCH /api/libre-claw/automations/:automationId—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/automations/:automationId)PATCH /api/libre-claw/config/fallback—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/config/fallback)PATCH /api/libre-claw/config/model—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/config/model)PATCH /api/libre-claw/config/theme—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/config/theme)POST /api/libre-claw/automations—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/automations)POST /api/libre-claw/automations/:automationId/pause—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/automations/:automationId/pause)POST /api/libre-claw/automations/:automationId/resume—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/automations/:automationId/resume)POST /api/libre-claw/automations/:automationId/run—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/automations/:automationId/run)POST /api/libre-claw/runs—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/runs)POST /api/libre-claw/runs/:runId/cancel—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/runs/:runId/cancel)POST /api/libre-claw/runs/:runId/permissions/:toolCallId—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/runs/:runId/permissions/:toolCallId)PUT /api/libre-claw/access—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/access)PUT /api/libre-claw/automations/:automationId—backend/src/routes/libreClaw.ts(titik pemasangan/api/libre-claw, subjalur/automations/:automationId)
Pekerjaan dan Peristiwa Persisten
GET /api/jobs—backend/src/routes/jobs.ts(titik pemasangan/api/jobs, subjalur/)GET /api/jobs/:jobId—backend/src/routes/jobs.ts(titik pemasangan/api/jobs, subjalur/:jobId)GET /api/jobs/:jobId/events—backend/src/routes/jobs.ts(titik pemasangan/api/jobs, subjalur/:jobId/events)POST /api/jobs/:jobId/cancel—backend/src/routes/jobs.ts(titik pemasangan/api/jobs, subjalur/:jobId/cancel)
Profil Solo dan Team
Tidak ada endpoint Express terpasang. Batas eksekusi adalah UI atau bukti sumber di atas.
Pemulihan dan Cadangan
GET /api/recovery/drills—backend/src/routes/recovery.ts(titik pemasangan/api/recovery, subjalur/drills)POST /api/recovery/drills/run—backend/src/routes/recovery.ts(titik pemasangan/api/recovery, subjalur/drills/run)
Inventaris Rute WebSocket Tepat
WEBSOCKET /ws— Chat,backend/src/websocketServer.ts; bukti autentikasi:backend/src/websocketServer.ts,scripts/test-websocket-tickets.mjsWEBSOCKET /ws/work-terminal— Work,backend/src/websocketServer.ts; bukti autentikasi:backend/src/workTerminalServer.ts,scripts/test-websocket-tickets.mjsWEBSOCKET /ws/work-screen— Work,backend/src/websocketServer.ts; bukti autentikasi:backend/src/workScreenServer.tsWEBSOCKET /ws/work-audio— Work,backend/src/websocketServer.ts; bukti autentikasi:backend/src/workScreenServer.ts
Batas Penegakan
Gerbang paket mengurai TypeScript/JavaScript, menyelesaikan setiap router Express ke titik pemasangan, dan mencocokkan setiap metode/jalur serta WebSocket satu per satu dengan inventaris. Berkas tidak terpasang, router.route() tidak didukung, jalur dinamis, pemilik hilang/ganda, bukti autentikasi hilang, rute UI berubah, penerapan skema/manifest/bawaan hilang, atau bukti usang akan gagal.
Bukti tes terfokus dibatasi pada satu deklarasi test(...) bernama tepat dan dua pola perilaku. Tes backend harus berupa argumen berkas tepat untuk test:package; spesifikasi Playwright harus ditemukan secara normal. Gerbang juga membuktikan kedua pelari dijalankan dalam alur Format & Lint biasa untuk pull request serta cabang dev/main.