Coverage for src / lilbee / server / models.py: 100%

41 statements  

« prev     ^ index     » next       coverage.py v7.13.4, created at 2026-03-16 08:27 +0000

1"""Request and response models for the lilbee HTTP API. 

2 

3Typed pydantic models so Litestar's OpenAPI schema has field-level detail. 

4""" 

5 

6from __future__ import annotations 

7 

8from typing import Any 

9 

10from pydantic import BaseModel 

11 

12 

13class AskRequest(BaseModel): 

14 """Request body for /api/ask.""" 

15 

16 question: str 

17 top_k: int = 0 

18 options: dict[str, Any] | None = None 

19 

20 

21class ChatRequest(BaseModel): 

22 """Request body for /api/chat.""" 

23 

24 question: str 

25 history: list[ChatMessage] = [] 

26 top_k: int = 0 

27 options: dict[str, Any] | None = None 

28 

29 

30class SyncRequest(BaseModel): 

31 """Request body for /api/sync.""" 

32 

33 force_vision: bool = False 

34 

35 

36class AddRequest(BaseModel): 

37 """Request body for /api/add.""" 

38 

39 paths: list[str] 

40 force: bool = False 

41 vision_model: str = "" 

42 

43 

44class SetModelRequest(BaseModel): 

45 """Request body for /api/models/chat and /api/models/vision.""" 

46 

47 model: str 

48 

49 

50class ChatMessage(BaseModel): 

51 """A single message in a chat conversation.""" 

52 

53 role: str 

54 content: str 

55 

56 

57class CleanedChunk(BaseModel): 

58 """A search result chunk with vector stripped and distance renamed.""" 

59 

60 source: str 

61 content_type: str 

62 chunk: str 

63 distance: float 

64 page_start: int = 0 

65 page_end: int = 0 

66 line_start: int = 0 

67 line_end: int = 0 

68 chunk_index: int = 0 

69 

70 

71class HealthResponse(BaseModel): 

72 """Response for /api/health.""" 

73 

74 status: str 

75 version: str 

76 

77 

78class AskResponse(BaseModel): 

79 """Response for /api/ask and /api/chat.""" 

80 

81 answer: str 

82 sources: list[CleanedChunk] 

83 

84 

85class SetModelResponse(BaseModel): 

86 """Response for /api/models/chat and /api/models/vision.""" 

87 

88 model: str