Hợp đồng khả năng toàn cục
Danh mục thực thi này bao phủ mọi tuyến trang trong frontend/src/App.tsx, mọi phương thức/đường dẫn trên bộ định tuyến Express backend/src/routes/*.ts và mọi đường nâng cấp WebSocket trong backend/src/websocketServer.ts. Mỗi điểm cuối có một chủ sở hữu và bằng chứng xác thực. Mỗi khả năng cũng nêu lược đồ, bản kê khai, mặc định, bằng chứng nguồn, tài liệu và kiểm thử hành vi có tên trong CI.
Chi tiết nhà cung cấp vẫn do scripts/capability-contracts.json và scripts/test-capability-contracts.mjs quản lý; danh mục này chỉ liên kết hợp đồng.
| Khả năng | Tuyến UI | Điểm cuối HTTP | Điểm cuối WebSocket | Lược đồ | Bản kê khai | Mặc định | Tài liệu | Kiểm thử hành vi có tên |
|---|---|---|---|---|---|---|---|---|
| Trang chủ | / | 0 | 0 | Không áp dụng — Trang chủ không có payload riêng. | Không áp dụng — Trang chủ được tích hợp sẵn. | 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) |
| Quản lý mô hình | — | 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 | Không áp dụng — Persona là tài nguyên tài khoản. | 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) |
| Thư viện 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) |
| Ghi chú | /notes | 12 | 0 | backend/src/types/index.tsbackend/src/persistence/resourceTypes.ts | Không áp dụng — Ghi chú là tài nguyên tích hợp. | Không áp dụng — Ghi chú không có nội dung ngầm. | 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) |
| Lịch | /calendar | 10 | 0 | backend/src/types/index.ts | Không áp dụng — Sự kiện lịch là tài nguyên tích hợp. | Không áp dụng — Lịch dùng múi giờ trong 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) |
| Tự động hóa | /automations | 15 | 0 | backend/src/types/index.ts | Không áp dụng — Tự động hóa là tài nguyên tích hợp. | docs/48-AUTOMATIONS.md | docs/48-AUTOMATIONS.md | the scheduler fires due automations once and settles stalled runsscripts/test-automations.mjs (test:package) |
| Kênh | /channels | 24 | 0 | backend/src/types/index.ts | Không áp dụng — Kênh là tài nguyên tích hợp. | 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) |
| Thông báo | — | 13 | 0 | backend/src/types/index.ts | Không áp dụng — Thông báo là trạng thái tài khoản. | 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) |
| Thư viện lệnh | — | 9 | 0 | backend/src/services/promptService.ts | Không áp dụng — Dạng di động là libre-prompt.v1. | Không áp dụng — Trường do người dùng cung cấp; scripts/test-prompts.mjs kiểm tra. | docs/50-PROMPTS.md | prompts round-trip through the API and stay encrypted at restscripts/test-prompts.mjs (test:package) |
| Kỹ năng | — | 14 | 0 | backend/src/services/skillService.ts | backend/src/services/skillService.ts | Không áp dụng — Kỹ năng không có nội dung ngầm. | 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) |
| Công cụ 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) |
| Mô hình Agent CLI | /agents | 1 | 0 | backend/src/services/agentCliService.ts | Không áp dụng — Bộ chuyển Agent CLI được biên dịch sẵn. | 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) |
| Hiện vật | /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) |
| Sử dụng nhà cung cấp | /usage | 10 | 0 | backend/src/services/pluginUsageService.ts | Không áp dụng — Phân tích không có manifest riêng. | 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) |
| Nền tảng đánh giá | /evaluations | 16 | 0 | backend/src/persistence/resourceTypes.ts | Không áp dụng — Đánh giá là tài nguyên tài khoản. | 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) |
| Chẩn đoán hệ thống | /system | 5 | 0 | backend/src/services/systemDiagnosticsService.ts | Không áp dụng — Chẩn đoán là báo cáo tích hợp. | 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) |
| Quản trị người dùng | /users | 8 | 0 | backend/src/types/index.ts | Không áp dụng — Quản trị người dùng tích hợp sẵn. | Không áp dụng — Vai trò do chính sách chọn. | docs/12-AUTHENTICATION.md | public registrations require administrator approval before authenticationscripts/test-user-approval.mjs (test:package) |
| Xác thực | /login | 40 | 0 | backend/src/types/index.ts | Không áp dụng — Xác thực là ranh giới tích hợp. | 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) |
| Kiểm soát truy cập | — | 14 | 0 | backend/src/persistence/securityTypes.ts | Không áp dụng — Kiểm soát truy cập tích hợp. | 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 công khai | — | 2 | 0 | backend/src/routes/openaiCompat.ts | Không áp dụng — Giao diện OpenAI phản ánh định dạng ngoài. | Không áp dụng — Mặc định lấy từ yêu cầu và mô hình. | docs/53-PUBLIC_API.md | a streaming completion emits OpenAI chunk frames and [DONE]scripts/test-openai-compat.mjs (test:package) |
| Chuyển dữ liệu | — | 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) |
| Kiến thức tài liệu | — | 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) |
| Bộ nhớ persona | — | 6 | 0 | backend/src/types/index.ts | Không áp dụng — Bộ nhớ persona là nội bộ. | 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) |
| Tìm kiếm web | — | 6 | 0 | backend/src/services/webSearchService.ts | Không áp dụng — Tìm kiếm dùng cài đặt quản trị. | 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) |
| Cài đặt | — | 11 | 0 | backend/src/types/index.ts | Không áp dụng — Cài đặt không có manifest riêng. | 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) |
| Giọng nói | — | 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 | Không áp dụng — Metadata Hub là dữ liệu API xa. | 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 | Không áp dụng — Libre Claw là tích hợp dịch vụ. | 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) |
| Tác vụ và sự kiện | — | 4 | 0 | backend/src/platform/jobs/durableJobTypes.ts | Không áp dụng — Tác vụ dùng bộ xử lý và hợp đồng tải trọng. | 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) |
| Hồ sơ solo và 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) |
| Phục hồi và sao lưu | — | 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) |
Danh mục tuyến backend chính xác
Trang chủ
Không có endpoint Express được gắn. Ranh giới thực thi là UI hoặc bằng chứng nguồn ở trên.
Chat
DELETE /api/chat/folders/:folderId—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/folders/:folderId)DELETE /api/chat/sessions—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions)DELETE /api/chat/sessions/:sessionId—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId)DELETE /api/chat/sessions/:sessionId/queue/:entryId—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/queue/:entryId)GET /api/chat/compaction-config—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/compaction-config)GET /api/chat/context-policy—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/context-policy)GET /api/chat/folders—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/folders)GET /api/chat/sessions—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions)GET /api/chat/sessions/:sessionId—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId)GET /api/chat/sessions/:sessionId/events—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/events)GET /api/chat/sessions/:sessionId/messages/:messageId/branches—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/messages/:messageId/branches)POST /api/chat/folders—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/folders)POST /api/chat/sessions—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions)POST /api/chat/sessions/:sessionId/compaction/:messageId/restore—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/compaction/:messageId/restore)POST /api/chat/sessions/:sessionId/followups—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/followups)POST /api/chat/sessions/:sessionId/fork—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/fork)POST /api/chat/sessions/:sessionId/generate—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/generate)POST /api/chat/sessions/:sessionId/generate-title—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/generate-title)POST /api/chat/sessions/:sessionId/generate/stream—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/generate/stream)POST /api/chat/sessions/:sessionId/generations—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/generations)POST /api/chat/sessions/:sessionId/generations/:assistantMessageId/cancel—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/generations/:assistantMessageId/cancel)POST /api/chat/sessions/:sessionId/messages—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/messages)POST /api/chat/sessions/:sessionId/messages/:messageId/branch—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/messages/:messageId/branch)POST /api/chat/sessions/:sessionId/messages/:messageId/branches—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/messages/:messageId/branches)POST /api/chat/sessions/:sessionId/messages/:messageId/truncate—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/messages/:messageId/truncate)POST /api/chat/sessions/:sessionId/queue—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/queue)PUT /api/chat/compaction-config—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/compaction-config)PUT /api/chat/folders/:folderId—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/folders/:folderId)PUT /api/chat/sessions/:sessionId—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId)PUT /api/chat/sessions/:sessionId/messages/:messageId—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/messages/:messageId)PUT /api/chat/sessions/:sessionId/queue—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/queue)PUT /api/chat/sessions/:sessionId/queue/:entryId—backend/src/routes/chat.ts(điểm gắn/api/chat, đường con/sessions/:sessionId/queue/:entryId)
Quản lý mô hình
DELETE /api/ollama/models—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/models)GET /api/ollama/health—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/health)GET /api/ollama/library—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/library)GET /api/ollama/models—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/models)GET /api/ollama/models/:modelName/defaults—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/models/:modelName/defaults)GET /api/ollama/models/access—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/models/access)GET /api/ollama/models/pull-all/stream—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/models/pull-all/stream)GET /api/ollama/models/show—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/models/show)GET /api/ollama/models/visibility—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/models/visibility)GET /api/ollama/pull/stream—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/pull/stream)GET /api/ollama/running—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/running)GET /api/ollama/settings—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/settings)GET /api/ollama/version—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/version)HEAD /api/ollama/blobs/:digest—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/blobs/:digest)POST /api/ollama/blobs/:digest—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/blobs/:digest)POST /api/ollama/chat—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/chat)POST /api/ollama/chat/stream—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/chat/stream)POST /api/ollama/embed—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/embed)POST /api/ollama/embeddings—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/embeddings)POST /api/ollama/models—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/models)POST /api/ollama/models/copy—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/models/copy)POST /api/ollama/models/pull—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/models/pull)POST /api/ollama/models/pull-all—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/models/pull-all)POST /api/ollama/models/push—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/models/push)POST /api/ollama/models/unload—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/models/unload)POST /api/ollama/models/unload-all—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/models/unload-all)PUT /api/ollama/models/access—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/models/access)PUT /api/ollama/models/visibility—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/models/visibility)PUT /api/ollama/settings—backend/src/routes/ollama.ts(điểm gắn/api/ollama, đường con/settings)DELETE /api/plugins/:id—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/:id)DELETE /api/plugins/:id/credentials—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/:id/credentials)DELETE /api/plugins/:id/variables—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/:id/variables)GET /api/plugins—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/)GET /api/plugins/:id—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/:id)GET /api/plugins/:id/credentials/check—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/:id/credentials/check)GET /api/plugins/:id/export—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/:id/export)GET /api/plugins/:id/variables—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/:id/variables)GET /api/plugins/active—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/active)GET /api/plugins/active/current—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/active/current)GET /api/plugins/credentials/all—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/credentials/all)GET /api/plugins/status/all—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/status/all)POST /api/plugins/:id/credentials—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/:id/credentials)POST /api/plugins/activate/:id—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/activate/:id)POST /api/plugins/deactivate—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/deactivate)POST /api/plugins/deactivate/:id—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/deactivate/:id)POST /api/plugins/discover/:id—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/discover/:id)POST /api/plugins/install—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/install)POST /api/plugins/probe-endpoint—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/probe-endpoint)POST /api/plugins/upload—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/upload)PUT /api/plugins/:id—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/:id)PUT /api/plugins/:id/variables—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/:id/variables)
Persona
DELETE /api/personas/:id—backend/src/routes/personas.ts(điểm gắn/api/personas, đường con/:id)GET /api/personas—backend/src/routes/personas.ts(điểm gắn/api/personas, đường con/)GET /api/personas/:id—backend/src/routes/personas.ts(điểm gắn/api/personas, đường con/:id)GET /api/personas/:id/backup—backend/src/routes/personas.ts(điểm gắn/api/personas, đường con/:id/backup)GET /api/personas/:id/download—backend/src/routes/personas.ts(điểm gắn/api/personas, đường con/:id/download)GET /api/personas/:id/export—backend/src/routes/personas.ts(điểm gắn/api/personas, đường con/:id/export)GET /api/personas/:id/export/dna—backend/src/routes/personas.ts(điểm gắn/api/personas, đường con/:id/export/dna)GET /api/personas/defaults/parameters—backend/src/routes/personas.ts(điểm gắn/api/personas, đường con/defaults/parameters)GET /api/personas/stats/count—backend/src/routes/personas.ts(điểm gắn/api/personas, đường con/stats/count)POST /api/personas—backend/src/routes/personas.ts(điểm gắn/api/personas, đường con/)POST /api/personas/import—backend/src/routes/personas.ts(điểm gắn/api/personas, đường con/import)PUT /api/personas/:id—backend/src/routes/personas.ts(điểm gắn/api/personas, đường con/:id)
Thư viện media
DELETE /api/image-gen/gallery/:imageId—backend/src/routes/imageGen.ts(điểm gắn/api/image-gen, đường con/gallery/:imageId)GET /api/image-gen/config/:pluginId—backend/src/routes/imageGen.ts(điểm gắn/api/image-gen, đường con/config/:pluginId)GET /api/image-gen/gallery—backend/src/routes/imageGen.ts(điểm gắn/api/image-gen, đường con/gallery)GET /api/image-gen/gallery/:imageId—backend/src/routes/imageGen.ts(điểm gắn/api/image-gen, đường con/gallery/:imageId)GET /api/image-gen/models—backend/src/routes/imageGen.ts(điểm gắn/api/image-gen, đường con/models)GET /api/image-gen/plugins—backend/src/routes/imageGen.ts(điểm gắn/api/image-gen, đường con/plugins)POST /api/image-gen/generate—backend/src/routes/imageGen.ts(điểm gắn/api/image-gen, đường con/generate)DELETE /api/media/gallery/:mediaId—backend/src/routes/media.ts(điểm gắn/api/media, đường con/gallery/:mediaId)DELETE /api/media/video/jobs/:jobId—backend/src/routes/media.ts(điểm gắn/api/media, đường con/video/jobs/:jobId)GET /api/media/gallery—backend/src/routes/media.ts(điểm gắn/api/media, đường con/gallery)GET /api/media/gallery/:mediaId/content—backend/src/routes/media.ts(điểm gắn/api/media, đường con/gallery/:mediaId/content)GET /api/media/models—backend/src/routes/media.ts(điểm gắn/api/media, đường con/models)GET /api/media/video/jobs—backend/src/routes/media.ts(điểm gắn/api/media, đường con/video/jobs)GET /api/media/video/jobs/:jobId—backend/src/routes/media.ts(điểm gắn/api/media, đường con/video/jobs/:jobId)POST /api/media/audio/generate—backend/src/routes/media.ts(điểm gắn/api/media, đường con/audio/generate)POST /api/media/audio/voice-clone—backend/src/routes/media.ts(điểm gắn/api/media, đường con/audio/voice-clone)POST /api/media/image/edit—backend/src/routes/media.ts(điểm gắn/api/media, đường con/image/edit)POST /api/media/sound/generate—backend/src/routes/media.ts(điểm gắn/api/media, đường con/sound/generate)POST /api/media/video/generate—backend/src/routes/media.ts(điểm gắn/api/media, đường con/video/generate)POST /api/media/video/jobs/:jobId/resume—backend/src/routes/media.ts(điểm gắn/api/media, đường con/video/jobs/:jobId/resume)
Ghi chú
DELETE /api/notes/:noteId—backend/src/routes/notes.ts(điểm gắn/api/notes, đường con/:noteId)DELETE /api/notes/:noteId/attachments/:attachmentId—backend/src/routes/notes.ts(điểm gắn/api/notes, đường con/:noteId/attachments/:attachmentId)GET /api/notes—backend/src/routes/notes.ts(điểm gắn/api/notes, đường con/)GET /api/notes/:noteId—backend/src/routes/notes.ts(điểm gắn/api/notes, đường con/:noteId)GET /api/notes/:noteId/attachments—backend/src/routes/notes.ts(điểm gắn/api/notes, đường con/:noteId/attachments)GET /api/notes/:noteId/attachments/:attachmentId—backend/src/routes/notes.ts(điểm gắn/api/notes, đường con/:noteId/attachments/:attachmentId)GET /api/notes/:noteId/revisions—backend/src/routes/notes.ts(điểm gắn/api/notes, đường con/:noteId/revisions)POST /api/notes—backend/src/routes/notes.ts(điểm gắn/api/notes, đường con/)POST /api/notes/:noteId/assist—backend/src/routes/notes.ts(điểm gắn/api/notes, đường con/:noteId/assist)POST /api/notes/:noteId/attachments—backend/src/routes/notes.ts(điểm gắn/api/notes, đường con/:noteId/attachments)POST /api/notes/:noteId/revisions/:revisionId/restore—backend/src/routes/notes.ts(điểm gắn/api/notes, đường con/:noteId/revisions/:revisionId/restore)PUT /api/notes/:noteId—backend/src/routes/notes.ts(điểm gắn/api/notes, đường con/:noteId)
Lịch
DELETE /api/calendar/calendars/:calendarId—backend/src/routes/calendar.ts(điểm gắn/api/calendar, đường con/calendars/:calendarId)DELETE /api/calendar/events/:eventId—backend/src/routes/calendar.ts(điểm gắn/api/calendar, đường con/events/:eventId)GET /api/calendar/calendars—backend/src/routes/calendar.ts(điểm gắn/api/calendar, đường con/calendars)GET /api/calendar/events—backend/src/routes/calendar.ts(điểm gắn/api/calendar, đường con/events)GET /api/calendar/export—backend/src/routes/calendar.ts(điểm gắn/api/calendar, đường con/export)POST /api/calendar/calendars—backend/src/routes/calendar.ts(điểm gắn/api/calendar, đường con/calendars)POST /api/calendar/events—backend/src/routes/calendar.ts(điểm gắn/api/calendar, đường con/events)POST /api/calendar/import—backend/src/routes/calendar.ts(điểm gắn/api/calendar, đường con/import)PUT /api/calendar/calendars/:calendarId—backend/src/routes/calendar.ts(điểm gắn/api/calendar, đường con/calendars/:calendarId)PUT /api/calendar/events/:eventId—backend/src/routes/calendar.ts(điểm gắn/api/calendar, đường con/events/:eventId)
Tự động hóa
DELETE /api/automations/:automationId—backend/src/routes/automations.ts(điểm gắn/api/automations, đường con/:automationId)DELETE /api/automations/:automationId/webhook-secret—backend/src/routes/automations.ts(điểm gắn/api/automations, đường con/:automationId/webhook-secret)GET /api/automations—backend/src/routes/automations.ts(điểm gắn/api/automations, đường con/)GET /api/automations/:automationId—backend/src/routes/automations.ts(điểm gắn/api/automations, đường con/:automationId)GET /api/automations/occurrences—backend/src/routes/automations.ts(điểm gắn/api/automations, đường con/occurrences)GET /api/automations/runs—backend/src/routes/automations.ts(điểm gắn/api/automations, đường con/runs)GET /api/automations/runs/summary—backend/src/routes/automations.ts(điểm gắn/api/automations, đường con/runs/summary)POST /api/automations—backend/src/routes/automations.ts(điểm gắn/api/automations, đường con/)POST /api/automations/:automationId/pause—backend/src/routes/automations.ts(điểm gắn/api/automations, đường con/:automationId/pause)POST /api/automations/:automationId/resume—backend/src/routes/automations.ts(điểm gắn/api/automations, đường con/:automationId/resume)POST /api/automations/:automationId/run—backend/src/routes/automations.ts(điểm gắn/api/automations, đường con/:automationId/run)POST /api/automations/:automationId/webhook—backend/src/routes/automations.ts(điểm gắn/api/automations, đường con/:automationId/webhook)POST /api/automations/:automationId/webhook-secret—backend/src/routes/automations.ts(điểm gắn/api/automations, đường con/:automationId/webhook-secret)POST /api/automations/runs/seen—backend/src/routes/automations.ts(điểm gắn/api/automations, đường con/runs/seen)PUT /api/automations/:automationId—backend/src/routes/automations.ts(điểm gắn/api/automations, đường con/:automationId)
Kênh
DELETE /api/channels/:channelId—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/:channelId)DELETE /api/channels/:channelId/members/:userId—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/:channelId/members/:userId)DELETE /api/channels/messages/:messageId—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/messages/:messageId)DELETE /api/channels/messages/:messageId/reactions/:emoji—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/messages/:messageId/reactions/:emoji)GET /api/channels—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/)GET /api/channels/:channelId—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/:channelId)GET /api/channels/:channelId/events—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/:channelId/events)GET /api/channels/:channelId/members—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/:channelId/members)GET /api/channels/:channelId/messages—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/:channelId/messages)GET /api/channels/:channelId/pins—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/:channelId/pins)GET /api/channels/attachments/:attachmentId—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/attachments/:attachmentId)GET /api/channels/messages/:messageId/thread—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/messages/:messageId/thread)GET /api/channels/public—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/public)PATCH /api/channels/:channelId—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/:channelId)PATCH /api/channels/messages/:messageId—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/messages/:messageId)POST /api/channels—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/)POST /api/channels/:channelId/attachments—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/:channelId/attachments)POST /api/channels/:channelId/join—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/:channelId/join)POST /api/channels/:channelId/members—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/:channelId/members)POST /api/channels/:channelId/messages—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/:channelId/messages)POST /api/channels/:channelId/read—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/:channelId/read)POST /api/channels/dm—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/dm)POST /api/channels/messages/:messageId/pin—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/messages/:messageId/pin)POST /api/channels/messages/:messageId/reactions—backend/src/routes/channels.ts(điểm gắn/api/channels, đường con/messages/:messageId/reactions)
Thông báo
DELETE /api/notifications/:notificationId—backend/src/routes/notifications.ts(điểm gắn/api/notifications, đường con/:notificationId)DELETE /api/notifications/webhooks/:targetId—backend/src/routes/notifications.ts(điểm gắn/api/notifications, đường con/webhooks/:targetId)GET /api/notifications—backend/src/routes/notifications.ts(điểm gắn/api/notifications, đường con/)GET /api/notifications/events—backend/src/routes/notifications.ts(điểm gắn/api/notifications, đường con/events)GET /api/notifications/unread-count—backend/src/routes/notifications.ts(điểm gắn/api/notifications, đường con/unread-count)GET /api/notifications/webhooks—backend/src/routes/notifications.ts(điểm gắn/api/notifications, đường con/webhooks)POST /api/notifications/:notificationId/read—backend/src/routes/notifications.ts(điểm gắn/api/notifications, đường con/:notificationId/read)POST /api/notifications/read-all—backend/src/routes/notifications.ts(điểm gắn/api/notifications, đường con/read-all)POST /api/notifications/webhooks—backend/src/routes/notifications.ts(điểm gắn/api/notifications, đường con/webhooks)DELETE /api/push/subscriptions—backend/src/routes/push.ts(điểm gắn/api/push, đường con/subscriptions)GET /api/push/public-key—backend/src/routes/push.ts(điểm gắn/api/push, đường con/public-key)GET /api/push/subscriptions—backend/src/routes/push.ts(điểm gắn/api/push, đường con/subscriptions)POST /api/push/subscriptions—backend/src/routes/push.ts(điểm gắn/api/push, đường con/subscriptions)
Thư viện lệnh
DELETE /api/prompts/:promptId—backend/src/routes/prompts.ts(điểm gắn/api/prompts, đường con/:promptId)GET /api/prompts—backend/src/routes/prompts.ts(điểm gắn/api/prompts, đường con/)GET /api/prompts/:promptId—backend/src/routes/prompts.ts(điểm gắn/api/prompts, đường con/:promptId)GET /api/prompts/:promptId/export—backend/src/routes/prompts.ts(điểm gắn/api/prompts, đường con/:promptId/export)GET /api/prompts/:promptId/versions—backend/src/routes/prompts.ts(điểm gắn/api/prompts, đường con/:promptId/versions)POST /api/prompts—backend/src/routes/prompts.ts(điểm gắn/api/prompts, đường con/)POST /api/prompts/:promptId/rollback—backend/src/routes/prompts.ts(điểm gắn/api/prompts, đường con/:promptId/rollback)POST /api/prompts/import—backend/src/routes/prompts.ts(điểm gắn/api/prompts, đường con/import)PUT /api/prompts/:promptId—backend/src/routes/prompts.ts(điểm gắn/api/prompts, đường con/:promptId)
Kỹ năng
DELETE /api/skills/:skillId—backend/src/routes/skills.ts(điểm gắn/api/skills, đường con/:skillId)DELETE /api/skills/:skillId/files—backend/src/routes/skills.ts(điểm gắn/api/skills, đường con/:skillId/files)GET /api/skills—backend/src/routes/skills.ts(điểm gắn/api/skills, đường con/)GET /api/skills/:skillId—backend/src/routes/skills.ts(điểm gắn/api/skills, đường con/:skillId)GET /api/skills/:skillId/export—backend/src/routes/skills.ts(điểm gắn/api/skills, đường con/:skillId/export)GET /api/skills/:skillId/files—backend/src/routes/skills.ts(điểm gắn/api/skills, đường con/:skillId/files)GET /api/skills/:skillId/files/content—backend/src/routes/skills.ts(điểm gắn/api/skills, đường con/:skillId/files/content)GET /api/skills/:skillId/versions—backend/src/routes/skills.ts(điểm gắn/api/skills, đường con/:skillId/versions)POST /api/skills—backend/src/routes/skills.ts(điểm gắn/api/skills, đường con/)POST /api/skills/:skillId/rollback—backend/src/routes/skills.ts(điểm gắn/api/skills, đường con/:skillId/rollback)POST /api/skills/import—backend/src/routes/skills.ts(điểm gắn/api/skills, đường con/import)POST /api/skills/import-url—backend/src/routes/skills.ts(điểm gắn/api/skills, đường con/import-url)PUT /api/skills/:skillId—backend/src/routes/skills.ts(điểm gắn/api/skills, đường con/:skillId)PUT /api/skills/:skillId/files—backend/src/routes/skills.ts(điểm gắn/api/skills, đường con/:skillId/files)
Công cụ chat
DELETE /api/tools/approvals/:id—backend/src/routes/tools.ts(điểm gắn/api/tools, đường con/approvals/:id)DELETE /api/tools/servers/:id—backend/src/routes/tools.ts(điểm gắn/api/tools, đường con/servers/:id)DELETE /api/tools/servers/:id/credential—backend/src/routes/tools.ts(điểm gắn/api/tools, đường con/servers/:id/credential)GET /api/tools/access—backend/src/routes/tools.ts(điểm gắn/api/tools, đường con/access)GET /api/tools/approvals—backend/src/routes/tools.ts(điểm gắn/api/tools, đường con/approvals)GET /api/tools/catalog—backend/src/routes/tools.ts(điểm gắn/api/tools, đường con/catalog)GET /api/tools/servers—backend/src/routes/tools.ts(điểm gắn/api/tools, đường con/servers)GET /api/tools/servers/:id—backend/src/routes/tools.ts(điểm gắn/api/tools, đường con/servers/:id)POST /api/tools/approvals/:id—backend/src/routes/tools.ts(điểm gắn/api/tools, đường con/approvals/:id)POST /api/tools/servers—backend/src/routes/tools.ts(điểm gắn/api/tools, đường con/servers)POST /api/tools/servers/:id/refresh—backend/src/routes/tools.ts(điểm gắn/api/tools, đường con/servers/:id/refresh)PUT /api/tools/access—backend/src/routes/tools.ts(điểm gắn/api/tools, đường con/access)PUT /api/tools/servers/:id—backend/src/routes/tools.ts(điểm gắn/api/tools, đường con/servers/:id)PUT /api/tools/servers/:id/credential—backend/src/routes/tools.ts(điểm gắn/api/tools, đường con/servers/:id/credential)PUT /api/tools/servers/:id/tools/:toolName—backend/src/routes/tools.ts(điểm gắn/api/tools, đường con/servers/:id/tools/:toolName)
Work
DELETE /api/work/policies/:id—backend/src/routes/work.ts(điểm gắn/api/work, đường con/policies/:id)DELETE /api/work/tasks/:id—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id)DELETE /api/work/tasks/:id/approval-rules/:ruleId—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/approval-rules/:ruleId)DELETE /api/work/tasks/:id/computer/control—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/computer/control)GET /api/work/access—backend/src/routes/work.ts(điểm gắn/api/work, đường con/access)GET /api/work/admin/overview—backend/src/routes/work.ts(điểm gắn/api/work, đường con/admin/overview)GET /api/work/capabilities—backend/src/routes/work.ts(điểm gắn/api/work, đường con/capabilities)GET /api/work/computer/setup—backend/src/routes/work.ts(điểm gắn/api/work, đường con/computer/setup)GET /api/work/policies—backend/src/routes/work.ts(điểm gắn/api/work, đường con/policies)GET /api/work/tasks—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks)GET /api/work/tasks/:id—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id)GET /api/work/tasks/:id/approvals—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/approvals)GET /api/work/tasks/:id/computer/control—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/computer/control)GET /api/work/tasks/:id/file—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/file)GET /api/work/tasks/:id/files—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/files)GET /api/work/tasks/:id/git—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/git)GET /api/work/tasks/:id/git/diff—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/git/diff)GET /api/work/tasks/:id/messages—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/messages)GET /api/work/tasks/:taskId/runs/:runId/events—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:taskId/runs/:runId/events)PATCH /api/work/tasks/:id—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id)POST /api/work/computer/setup—backend/src/routes/work.ts(điểm gắn/api/work, đường con/computer/setup)POST /api/work/computer/skills/:slug/trace—backend/src/routes/work.ts(điểm gắn/api/work, đường con/computer/skills/:slug/trace)POST /api/work/policies—backend/src/routes/work.ts(điểm gắn/api/work, đường con/policies)POST /api/work/tasks—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks)POST /api/work/tasks/:id/approvals/:approvalId—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/approvals/:approvalId)POST /api/work/tasks/:id/cancel—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/cancel)POST /api/work/tasks/:id/computer/anchor—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/computer/anchor)POST /api/work/tasks/:id/computer/control—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/computer/control)POST /api/work/tasks/:id/computer/start—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/computer/start)POST /api/work/tasks/:id/computer/teach—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/computer/teach)POST /api/work/tasks/:id/git/branches—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/git/branches)POST /api/work/tasks/:id/git/commit—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/git/commit)POST /api/work/tasks/:id/git/init—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/git/init)POST /api/work/tasks/:id/git/stage—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/git/stage)POST /api/work/tasks/:id/git/switch—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/git/switch)POST /api/work/tasks/:id/messages—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/messages)POST /api/work/tasks/:id/preview/start—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/preview/start)POST /api/work/tasks/:id/preview/stop—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/preview/stop)POST /api/work/tasks/:id/runs—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/runs)POST /api/work/tasks/:id/seen—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/seen)PUT /api/work/access—backend/src/routes/work.ts(điểm gắn/api/work, đường con/access)PUT /api/work/policies/:id—backend/src/routes/work.ts(điểm gắn/api/work, đường con/policies/:id)PUT /api/work/tasks/:id/approvals—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/approvals)PUT /api/work/tasks/:id/file—backend/src/routes/work.ts(điểm gắn/api/work, đường con/tasks/:id/file)
Mô hình Agent CLI
GET /api/agent-clis/models—backend/src/routes/agentCli.ts(điểm gắn/api/agent-clis, đường con/models)
Hiện vật
GET /api/artifacts/sandbox—backend/src/routes/artifacts.ts(điểm gắn/api/artifacts, đường con/sandbox)
Sử dụng nhà cung cấp
DELETE /api/costs/budgets/:budgetId—backend/src/routes/costs.ts(điểm gắn/api/costs, đường con/budgets/:budgetId)DELETE /api/costs/tariffs/:tariffId—backend/src/routes/costs.ts(điểm gắn/api/costs, đường con/tariffs/:tariffId)GET /api/costs/analytics—backend/src/routes/costs.ts(điểm gắn/api/costs, đường con/analytics)GET /api/costs/budgets—backend/src/routes/costs.ts(điểm gắn/api/costs, đường con/budgets)GET /api/costs/export—backend/src/routes/costs.ts(điểm gắn/api/costs, đường con/export)GET /api/costs/tariffs—backend/src/routes/costs.ts(điểm gắn/api/costs, đường con/tariffs)POST /api/costs/budgets—backend/src/routes/costs.ts(điểm gắn/api/costs, đường con/budgets)POST /api/costs/tariffs—backend/src/routes/costs.ts(điểm gắn/api/costs, đường con/tariffs)PUT /api/costs/budgets/:budgetId—backend/src/routes/costs.ts(điểm gắn/api/costs, đường con/budgets/:budgetId)GET /api/plugins/usage—backend/src/routes/plugins.ts(điểm gắn/api/plugins, đường con/usage)
Nền tảng đánh giá
DELETE /api/evaluations/feedback/:messageId—backend/src/routes/evaluations.ts(điểm gắn/api/evaluations, đường con/feedback/:messageId)DELETE /api/evaluations/sets/:setId—backend/src/routes/evaluations.ts(điểm gắn/api/evaluations, đường con/sets/:setId)GET /api/evaluations/arena/leaderboard—backend/src/routes/evaluations.ts(điểm gắn/api/evaluations, đường con/arena/leaderboard)GET /api/evaluations/feedback—backend/src/routes/evaluations.ts(điểm gắn/api/evaluations, đường con/feedback)GET /api/evaluations/feedback/all—backend/src/routes/evaluations.ts(điểm gắn/api/evaluations, đường con/feedback/all)GET /api/evaluations/runs—backend/src/routes/evaluations.ts(điểm gắn/api/evaluations, đường con/runs)GET /api/evaluations/runs/:runId—backend/src/routes/evaluations.ts(điểm gắn/api/evaluations, đường con/runs/:runId)GET /api/evaluations/runs/:runId/export—backend/src/routes/evaluations.ts(điểm gắn/api/evaluations, đường con/runs/:runId/export)GET /api/evaluations/sets—backend/src/routes/evaluations.ts(điểm gắn/api/evaluations, đường con/sets)POST /api/evaluations/arena/matches—backend/src/routes/evaluations.ts(điểm gắn/api/evaluations, đường con/arena/matches)POST /api/evaluations/arena/votes—backend/src/routes/evaluations.ts(điểm gắn/api/evaluations, đường con/arena/votes)POST /api/evaluations/feedback—backend/src/routes/evaluations.ts(điểm gắn/api/evaluations, đường con/feedback)POST /api/evaluations/runs—backend/src/routes/evaluations.ts(điểm gắn/api/evaluations, đường con/runs)POST /api/evaluations/runs/:runId/cancel—backend/src/routes/evaluations.ts(điểm gắn/api/evaluations, đường con/runs/:runId/cancel)POST /api/evaluations/sets—backend/src/routes/evaluations.ts(điểm gắn/api/evaluations, đường con/sets)PUT /api/evaluations/sets/:setId—backend/src/routes/evaluations.ts(điểm gắn/api/evaluations, đường con/sets/:setId)
Chẩn đoán hệ thống
GET /health—backend/src/routes/health.ts(điểm gắn/health, đường con/)GET /health/deep—backend/src/routes/health.ts(điểm gắn/health, đường con/deep)GET /health/live—backend/src/routes/health.ts(điểm gắn/health, đường con/live)GET /health/ready—backend/src/routes/health.ts(điểm gắn/health, đường con/ready)GET /api/system—backend/src/routes/systemDiagnostics.ts(điểm gắn/api/system, đường con/)
Quản trị người dùng
DELETE /api/users/:id—backend/src/routes/users.ts(điểm gắn/api/users, đường con/:id)GET /api/users—backend/src/routes/users.ts(điểm gắn/api/users, đường con/)GET /api/users/pending-approvals—backend/src/routes/users.ts(điểm gắn/api/users, đường con/pending-approvals)PATCH /api/users/:id—backend/src/routes/users.ts(điểm gắn/api/users, đường con/:id)PATCH /api/users/:id/approve—backend/src/routes/users.ts(điểm gắn/api/users, đường con/:id/approve)PATCH /api/users/me/avatar—backend/src/routes/users.ts(điểm gắn/api/users, đường con/me/avatar)POST /api/users—backend/src/routes/users.ts(điểm gắn/api/users, đường con/)POST /api/users/:id/mfa/reset—backend/src/routes/users.ts(điểm gắn/api/users, đường con/:id/mfa/reset)
Xác thực
DELETE /api/auth/passkeys/:id—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/passkeys/:id)DELETE /api/auth/sessions/:id—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/sessions/:id)DELETE /api/auth/tokens/:id—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/tokens/:id)GET /api/auth/encryption-key—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/encryption-key)GET /api/auth/me—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/me)GET /api/auth/mfa—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/mfa)GET /api/auth/mfa/policy—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/mfa/policy)GET /api/auth/oauth/github—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/oauth/github)GET /api/auth/oauth/github/callback—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/oauth/github/callback)GET /api/auth/oauth/github/status—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/oauth/github/status)GET /api/auth/oauth/huggingface—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/oauth/huggingface)GET /api/auth/oauth/huggingface/callback—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/oauth/huggingface/callback)GET /api/auth/oauth/huggingface/status—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/oauth/huggingface/status)GET /api/auth/oauth/oidc—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/oauth/oidc)GET /api/auth/oauth/oidc/callback—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/oauth/oidc/callback)GET /api/auth/oauth/oidc/status—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/oauth/oidc/status)GET /api/auth/passkeys—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/passkeys)GET /api/auth/sessions—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/sessions)GET /api/auth/system-info—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/system-info)GET /api/auth/tokens—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/tokens)GET /api/auth/verify—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/verify)POST /api/auth/login—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/login)POST /api/auth/logout—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/logout)POST /api/auth/mfa/activate—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/mfa/activate)POST /api/auth/mfa/activate-challenge—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/mfa/activate-challenge)POST /api/auth/mfa/disable—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/mfa/disable)POST /api/auth/mfa/enroll—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/mfa/enroll)POST /api/auth/mfa/enroll-challenge—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/mfa/enroll-challenge)POST /api/auth/mfa/recovery-codes—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/mfa/recovery-codes)POST /api/auth/mfa/verify—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/mfa/verify)POST /api/auth/oauth/exchange—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/oauth/exchange)POST /api/auth/passkeys/login—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/passkeys/login)POST /api/auth/passkeys/login-options—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/passkeys/login-options)POST /api/auth/passkeys/register—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/passkeys/register)POST /api/auth/passkeys/register-options—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/passkeys/register-options)POST /api/auth/sessions/revoke-others—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/sessions/revoke-others)POST /api/auth/signup—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/signup)POST /api/auth/tokens—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/tokens)POST /api/auth/websocket-ticket—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/websocket-ticket)PUT /api/auth/mfa/policy—backend/src/routes/auth.ts(điểm gắn/api/auth, đường con/mfa/policy)
Kiểm soát truy cập
DELETE /api/access/grants/:id—backend/src/routes/access.ts(điểm gắn/api/access, đường con/grants/:id)GET /api/access/grants—backend/src/routes/access.ts(điểm gắn/api/access, đường con/grants)GET /api/access/principals—backend/src/routes/access.ts(điểm gắn/api/access, đường con/principals)GET /api/access/principals/groups—backend/src/routes/access.ts(điểm gắn/api/access, đường con/principals/groups)GET /api/access/shared-with-me—backend/src/routes/access.ts(điểm gắn/api/access, đường con/shared-with-me)POST /api/access/grants—backend/src/routes/access.ts(điểm gắn/api/access, đường con/grants)GET /api/audit—backend/src/routes/audit.ts(điểm gắn/api/audit, đường con/)DELETE /api/groups/:id—backend/src/routes/groups.ts(điểm gắn/api/groups, đường con/:id)DELETE /api/groups/:id/members/:userId—backend/src/routes/groups.ts(điểm gắn/api/groups, đường con/:id/members/:userId)GET /api/groups—backend/src/routes/groups.ts(điểm gắn/api/groups, đường con/)GET /api/groups/effective/:userId—backend/src/routes/groups.ts(điểm gắn/api/groups, đường con/effective/:userId)PATCH /api/groups/:id—backend/src/routes/groups.ts(điểm gắn/api/groups, đường con/:id)POST /api/groups—backend/src/routes/groups.ts(điểm gắn/api/groups, đường con/)POST /api/groups/:id/members—backend/src/routes/groups.ts(điểm gắn/api/groups, đường con/:id/members)
API công khai
GET /v1/models—backend/src/routes/openaiCompat.ts(điểm gắn/v1, đường con/models)POST /v1/chat/completions—backend/src/routes/openaiCompat.ts(điểm gắn/v1, đường con/chat/completions)
Khả năng chuyển dữ liệu
GET /api/preferences/export—backend/src/routes/preferences.ts(điểm gắn/api/preferences, đường con/export)POST /api/preferences/import—backend/src/routes/preferences.ts(điểm gắn/api/preferences, đường con/import)POST /api/preferences/import/preflight—backend/src/routes/preferences.ts(điểm gắn/api/preferences, đường con/import/preflight)
Kiến thức và truy xuất tài liệu
DELETE /api/documents/:documentId—backend/src/routes/documents.ts(điểm gắn/api/documents, đường con/:documentId)DELETE /api/documents/collections/:collectionId—backend/src/routes/documents.ts(điểm gắn/api/documents, đường con/collections/:collectionId)GET /api/documents—backend/src/routes/documents.ts(điểm gắn/api/documents, đường con/)GET /api/documents/:documentId—backend/src/routes/documents.ts(điểm gắn/api/documents, đường con/:documentId)GET /api/documents/:documentId/source—backend/src/routes/documents.ts(điểm gắn/api/documents, đường con/:documentId/source)GET /api/documents/collections—backend/src/routes/documents.ts(điểm gắn/api/documents, đường con/collections)GET /api/documents/embeddings/status—backend/src/routes/documents.ts(điểm gắn/api/documents, đường con/embeddings/status)GET /api/documents/session/:sessionId—backend/src/routes/documents.ts(điểm gắn/api/documents, đường con/session/:sessionId)POST /api/documents/collections—backend/src/routes/documents.ts(điểm gắn/api/documents, đường con/collections)POST /api/documents/embeddings/regenerate—backend/src/routes/documents.ts(điểm gắn/api/documents, đường con/embeddings/regenerate)POST /api/documents/fetch-url—backend/src/routes/documents.ts(điểm gắn/api/documents, đường con/fetch-url)POST /api/documents/search—backend/src/routes/documents.ts(điểm gắn/api/documents, đường con/search)POST /api/documents/upload—backend/src/routes/documents.ts(điểm gắn/api/documents, đường con/upload)PUT /api/documents/:documentId/collection—backend/src/routes/documents.ts(điểm gắn/api/documents, đường con/:documentId/collection)GET /api/embeddings/models—backend/src/routes/embeddings.ts(điểm gắn/api/embeddings, đường con/models)
Bộ nhớ persona
DELETE /api/personas/:id/memory—backend/src/routes/personas.ts(điểm gắn/api/personas, đường con/:id/memory)GET /api/personas/:id/memory/core—backend/src/routes/personas.ts(điểm gắn/api/personas, đường con/:id/memory/core)GET /api/personas/:id/memory/stats—backend/src/routes/personas.ts(điểm gắn/api/personas, đường con/:id/memory/stats)GET /api/personas/:id/memory/status—backend/src/routes/personas.ts(điểm gắn/api/personas, đường con/:id/memory/status)POST /api/personas/:id/memory/consolidate—backend/src/routes/personas.ts(điểm gắn/api/personas, đường con/:id/memory/consolidate)POST /api/personas/:id/memory/decay—backend/src/routes/personas.ts(điểm gắn/api/personas, đường con/:id/memory/decay)
Tìm kiếm web
GET /api/search/access—backend/src/routes/search.ts(điểm gắn/api/search, đường con/access)GET /api/search/app—backend/src/routes/search.ts(điểm gắn/api/search, đường con/app)GET /api/search/config—backend/src/routes/search.ts(điểm gắn/api/search, đường con/config)POST /api/search/test—backend/src/routes/search.ts(điểm gắn/api/search, đường con/test)PUT /api/search/access—backend/src/routes/search.ts(điểm gắn/api/search, đường con/access)PUT /api/search/config—backend/src/routes/search.ts(điểm gắn/api/search, đường con/config)
Cài đặt và tùy chọn
GET /api/preferences—backend/src/routes/preferences.ts(điểm gắn/api/preferences, đường con/)GET /api/preferences/default-theme—backend/src/routes/preferences.ts(điểm gắn/api/preferences, đường con/default-theme)POST /api/preferences/embedding-settings/reset—backend/src/routes/preferences.ts(điểm gắn/api/preferences, đường con/embedding-settings/reset)POST /api/preferences/generation-options/reset—backend/src/routes/preferences.ts(điểm gắn/api/preferences, đường con/generation-options/reset)PUT /api/preferences—backend/src/routes/preferences.ts(điểm gắn/api/preferences, đường con/)PUT /api/preferences/default-model—backend/src/routes/preferences.ts(điểm gắn/api/preferences, đường con/default-model)PUT /api/preferences/default-theme—backend/src/routes/preferences.ts(điểm gắn/api/preferences, đường con/default-theme)PUT /api/preferences/embedding-settings—backend/src/routes/preferences.ts(điểm gắn/api/preferences, đường con/embedding-settings)PUT /api/preferences/generation-options—backend/src/routes/preferences.ts(điểm gắn/api/preferences, đường con/generation-options)PUT /api/preferences/model-generation-options—backend/src/routes/preferences.ts(điểm gắn/api/preferences, đường con/model-generation-options)PUT /api/preferences/system-message—backend/src/routes/preferences.ts(điểm gắn/api/preferences, đường con/system-message)
Nhập xuất giọng nói
GET /api/stt/models—backend/src/routes/stt.ts(điểm gắn/api/stt, đường con/models)POST /api/stt/transcribe—backend/src/routes/stt.ts(điểm gắn/api/stt, đường con/transcribe)DELETE /api/tts/voice-profiles/:profileId—backend/src/routes/tts.ts(điểm gắn/api/tts, đường con/voice-profiles/:profileId)GET /api/tts/models—backend/src/routes/tts.ts(điểm gắn/api/tts, đường con/models)GET /api/tts/plugins—backend/src/routes/tts.ts(điểm gắn/api/tts, đường con/plugins)GET /api/tts/voice-profiles—backend/src/routes/tts.ts(điểm gắn/api/tts, đường con/voice-profiles)GET /api/tts/voices/:pluginId—backend/src/routes/tts.ts(điểm gắn/api/tts, đường con/voices/:pluginId)POST /api/tts/generate—backend/src/routes/tts.ts(điểm gắn/api/tts, đường con/generate)POST /api/tts/generate-base64—backend/src/routes/tts.ts(điểm gắn/api/tts, đường con/generate-base64)POST /api/tts/voice-clone—backend/src/routes/tts.ts(điểm gắn/api/tts, đường con/voice-clone)POST /api/tts/voice-profiles/:profileId/revoke—backend/src/routes/tts.ts(điểm gắn/api/tts, đường con/voice-profiles/:profileId/revoke)GET /api/voice-access—backend/src/routes/voiceAccess.ts(điểm gắn/api/voice-access, đường con/)PUT /api/voice-access/:feature—backend/src/routes/voiceAccess.ts(điểm gắn/api/voice-access, đường con/:feature)
Hugging Face Hub
GET /api/huggingface-hub/models—backend/src/routes/huggingfaceHub.ts(điểm gắn/api/huggingface-hub, đường con/models)GET /api/huggingface-hub/models/:author/:modelName—backend/src/routes/huggingfaceHub.ts(điểm gắn/api/huggingface-hub, đường con/models/:author/:modelName)GET /api/huggingface-hub/models/:author/:modelName/gguf—backend/src/routes/huggingfaceHub.ts(điểm gắn/api/huggingface-hub, đường con/models/:author/:modelName/gguf)GET /api/huggingface-hub/models/:author/:modelName/has-gguf—backend/src/routes/huggingfaceHub.ts(điểm gắn/api/huggingface-hub, đường con/models/:author/:modelName/has-gguf)GET /api/huggingface-hub/tasks—backend/src/routes/huggingfaceHub.ts(điểm gắn/api/huggingface-hub, đường con/tasks)GET /api/huggingface-hub/trending—backend/src/routes/huggingfaceHub.ts(điểm gắn/api/huggingface-hub, đường con/trending)POST /api/huggingface-hub/cache/clear—backend/src/routes/huggingfaceHub.ts(điểm gắn/api/huggingface-hub, đường con/cache/clear)
Libre Claw
DELETE /api/libre-claw/automations/:automationId—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/automations/:automationId)GET /api/libre-claw/access—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/access)GET /api/libre-claw/automations—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/automations)GET /api/libre-claw/automations/:automationId—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/automations/:automationId)GET /api/libre-claw/config/fallback—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/config/fallback)GET /api/libre-claw/config/model—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/config/model)GET /api/libre-claw/dashboard—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/dashboard)GET /api/libre-claw/health—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/health)GET /api/libre-claw/runs—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/runs)GET /api/libre-claw/runs/:runId—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/runs/:runId)GET /api/libre-claw/runs/:runId/events—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/runs/:runId/events)GET /api/libre-claw/status—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/status)GET /api/libre-claw/usage—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/usage)PATCH /api/libre-claw/automations/:automationId—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/automations/:automationId)PATCH /api/libre-claw/config/fallback—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/config/fallback)PATCH /api/libre-claw/config/model—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/config/model)PATCH /api/libre-claw/config/theme—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/config/theme)POST /api/libre-claw/automations—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/automations)POST /api/libre-claw/automations/:automationId/pause—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/automations/:automationId/pause)POST /api/libre-claw/automations/:automationId/resume—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/automations/:automationId/resume)POST /api/libre-claw/automations/:automationId/run—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/automations/:automationId/run)POST /api/libre-claw/runs—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/runs)POST /api/libre-claw/runs/:runId/cancel—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/runs/:runId/cancel)POST /api/libre-claw/runs/:runId/permissions/:toolCallId—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/runs/:runId/permissions/:toolCallId)PUT /api/libre-claw/access—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/access)PUT /api/libre-claw/automations/:automationId—backend/src/routes/libreClaw.ts(điểm gắn/api/libre-claw, đường con/automations/:automationId)
Job và event bền vững
GET /api/jobs—backend/src/routes/jobs.ts(điểm gắn/api/jobs, đường con/)GET /api/jobs/:jobId—backend/src/routes/jobs.ts(điểm gắn/api/jobs, đường con/:jobId)GET /api/jobs/:jobId/events—backend/src/routes/jobs.ts(điểm gắn/api/jobs, đường con/:jobId/events)POST /api/jobs/:jobId/cancel—backend/src/routes/jobs.ts(điểm gắn/api/jobs, đường con/:jobId/cancel)
Hồ sơ solo và team
Không có endpoint Express được gắn. Ranh giới thực thi là UI hoặc bằng chứng nguồn ở trên.
Phục hồi và sao lưu
GET /api/recovery/drills—backend/src/routes/recovery.ts(điểm gắn/api/recovery, đường con/drills)POST /api/recovery/drills/run—backend/src/routes/recovery.ts(điểm gắn/api/recovery, đường con/drills/run)
Danh mục WebSocket chính xác
WEBSOCKET /ws— Chat,backend/src/websocketServer.ts; bằng chứng xác thực:backend/src/websocketServer.ts,scripts/test-websocket-tickets.mjsWEBSOCKET /ws/work-terminal— Work,backend/src/websocketServer.ts; bằng chứng xác thực:backend/src/workTerminalServer.ts,scripts/test-websocket-tickets.mjsWEBSOCKET /ws/work-screen— Work,backend/src/websocketServer.ts; bằng chứng xác thực:backend/src/workScreenServer.tsWEBSOCKET /ws/work-audio— Work,backend/src/websocketServer.ts; bằng chứng xác thực:backend/src/workScreenServer.ts
Ranh giới cưỡng chế
Kiểm tra gói phân tích TypeScript/JavaScript, giải quyết bộ định tuyến Express và đối chiếu từng tuyến/WebSocket với danh mục. Tệp chưa gắn, router.route() không hỗ trợ, tuyến động, chủ sở hữu thiếu/trùng, bằng chứng WebSocket thiếu hoặc tài liệu cũ đều thất bại.
Bằng chứng kiểm thử tập trung giới hạn ở một test(...) có tên và hai mẫu hành vi. Kiểm thử backend phải là đối số tệp chính xác cho test:package; Playwright phải được khám phá bình thường. Kiểm tra cũng chứng minh chạy trong pull request và nhánh dev/main.