Files
kamidso-back/kamidso/api/routes/health.py
T
javadandCursor edbaa2acec Add native Didar connectors so chats can query CRM data reliably.
Connector calls, semantic rules, and DuckDB memory keep long runs stable, and stream retry stops chats from stalling.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-12 19:26:47 +03:30

57 lines
1.6 KiB
Python

from __future__ import annotations
from fastapi import APIRouter, Request
router = APIRouter()
def _features_payload(settings) -> dict:
flags = settings.features.to_dict()
from kamidso.native_connectors.flags import (
didar_connector_enabled,
native_connectors_v1_enabled,
)
flags["connectors"] = bool(
native_connectors_v1_enabled() and didar_connector_enabled()
)
return flags
@router.get("/health")
async def health(request: Request):
app = request.app.state.kamidso
engine = app.engines.default()
engine_health = await engine.health() if engine else {"status": "unavailable"}
return {
"status": "ok",
"product": app.settings.product.name,
"locale": app.settings.product.locale,
"engine": engine_health,
}
@router.get("/product")
async def product(request: Request):
settings = request.app.state.kamidso.settings
return {
"product": settings.product.name,
"locale": settings.product.locale,
"direction": settings.product.direction,
"features": _features_payload(settings),
"developer_mode": settings.developer_mode,
}
@router.get("/features")
async def features(request: Request):
settings = request.app.state.kamidso.settings
user = getattr(request.state, "kamidso_user", None)
flags = _features_payload(settings)
role = user.role if user else "user"
if role == "user" and not settings.developer_mode:
flags["apps"] = False
flags["awel"] = False
flags["scheduled_tasks"] = False
return {"features": flags, "developer_mode": settings.developer_mode, "role": role}