{"status":"ok","service":"aisp-worker","timestamp":"2026-06-05T21:23:05.763Z","version":"2.5.6","buildTime":"2026-06-05T20:29:28+08:00","gitRevision":"c216c8f4decacaabd580b846a9b82c3008e74cb3","policy":{"version":"v1","mode":"observe","failClosed":true,"source":"defaults"},"endpoints":{"llm-providers":"/api/llm/providers (GET, list supported providers)","llm-tenant":"/api/tenant/llm (external recommended, auto session validation)","llm-providers-tenant":"/api/tenant/llm/providers (GET, list supported providers)","persona-tenant":"/api/tenant/persona (GET, list available personas)","tenant-llm-tools-infer":"/api/tenant/llm (POST, tools.infer.enabled=true, knowledge base inference)","tenant-llm-tools-websearch":"/api/tenant/llm (POST, tools.websearch.enabled=true, web search capability)","tenant-llm-tools-code-execution":"/api/tenant/llm (POST, tools.codeExecution.enabled=true, code execution)","tenant-llm-tools-url-context":"/api/tenant/llm (POST, tools.urlContext.enabled=true, URL content analysis)","tenant-llm-agentic-rag":"/api/tenant/llm (POST, mode=agentic_rag, optional rag.space)","infer-codes":"/inferCodes (POST)","error-codes":"/api/error-codes (GET)","market-list":"/api/market/list (GET)","sync-error-codes-vector":"/api/sync/error-codes-vector (POST)","auth-providers":"/api/auth/providers (GET)","github-login":"/api/auth/providers/github/start (GET)","github-callback":"/api/auth/providers/github/callback (GET)","google-login":"/api/auth/providers/google/start (GET)","google-callback":"/api/auth/providers/google/callback (GET)","auth-session":"/api/auth/session (GET)","auth-logout":"/api/auth/logout (POST)","tenant-images-upload":"/api/tenant/images (POST, multipart/form-data, image & conversationId)","tenant-image-generate":"/api/tenant/image (POST, JSON, unified_v1; executed by llm-worker /api/image)","tenant-chat-messages":"/api/tenant/chat/messages?conversationId=<id>&afterSeq=<seq>&limit=<n> (GET, incremental chat history)","tenant-chat-archive-feishu":"/api/tenant/chat/archive/feishu (POST, create public Feishu doc from D1 conversation history)","tenant-rag-query":"/api/tenant/rag/query (POST, tenant RAG query, supports intent, multilingual, LLM generation)","rag-admin":"/api/rag/admin (POST, unified endpoint, supports action: upsert|delete|upsert-texts|clear|reconcile|reset-tenant|sync-reconcile|sync-full)","rag-metrics":"/api/rag/metrics (GET, unified endpoint, supports type: overview|errors|performance|summary|sync|health)","rag-sync-status":"/api/rag/sync/status?tenantId=<id> (GET, overview status for all namespaces of a tenant)","rag-sync-status-detail":"/api/rag/sync/status/detail?tenantId=<id>&namespace=error-codes|market (GET, detailed status)","r2-get":"/api/r2/get?key=<file-key> (GET)","r2-list":"/api/r2/list?prefix=<prefix> (GET)","r2-tree":"/api/r2/tree (GET, tree structure, supports prefix|delimiter|depth|limit|maxNodes|withMeta|aggregate|cursor)","r2-put":"/api/r2/put (POST, multipart/form-data)","r2-delete":"/api/r2/delete?key=<file-key> (DELETE)","r2-head":"/api/r2/head?key=<file-key> (GET, metadata only)","kb-collections-create":"/api/tenant/kb/collections (POST)","kb-collections-list":"/api/tenant/kb/collections (GET)","kb-collection-get":"/api/tenant/kb/collections/:id (GET)","kb-collection-delete":"/api/tenant/kb/collections/:id (DELETE)","kb-documents-upload":"/api/tenant/kb/documents (POST, multipart/form-data)","kb-document-download":"/api/tenant/kb/documents/:id (GET)","kb-document-delete":"/api/tenant/kb/documents/:id (DELETE)","kb-documents-list":"/api/tenant/kb/collections/:collectionId/documents (GET)","kb-migrate-r2-preview":"/api/tenant/kb/admin/migrate-r2/preview (GET)","kb-migrate-r2-execute":"/api/tenant/kb/admin/migrate-r2 (POST)","kb-verify-r2":"/api/tenant/kb/admin/verify-r2 (GET)"}}