Coverage for node / src / stigmem_node / models / instruction.py: 95%

36 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-05-25 01:49 +0000

1"""Lazy instruction discovery route wire-format models.""" 

2 

3from __future__ import annotations 

4 

5import re 

6 

7from pydantic import BaseModel, Field, field_validator 

8 

9 

10class LoadTriggers(BaseModel): 

11 intents: list[str] = Field(default_factory=list) 

12 keywords: list[str] = Field(default_factory=list) 

13 task_types: list[str] = Field(default_factory=list) 

14 

15 

16class ManifestEntry(BaseModel): 

17 name: str = Field(..., min_length=1) 

18 description: str = Field(..., max_length=120) 

19 required_by_task_types: list[str] = Field(default_factory=list) 

20 guarantee_load: bool = False 

21 force_position: str | None = None 

22 load_triggers: LoadTriggers = Field(default_factory=LoadTriggers) 

23 fact_uri: str | None = None 

24 path: str | None = None 

25 token_estimate: int | None = None 

26 

27 @field_validator("name") 

28 @classmethod 

29 def no_spaces_in_name(cls, v: str) -> str: 

30 if re.search(r"\s", v): 30 ↛ 31line 30 didn't jump to line 31 because the condition on line 30 was never true

31 raise ValueError("name must not contain whitespace") 

32 return v 

33 

34 

35class PublishManifestRequest(BaseModel): 

36 version: str = Field(..., min_length=1) 

37 entries: list[ManifestEntry] 

38 skip_coverage_gate: bool = False 

39 

40 

41class RecallInstructionRequest(BaseModel): 

42 intent: str = Field(..., min_length=1) 

43 max_chunks: int = Field(3, ge=1, le=20) 

44 token_budget: int = Field(2000, ge=1, le=100_000) 

45 manifest_hint: list[str] = Field(default_factory=list) 

46 

47 

48class AuditSubmitRequest(BaseModel): 

49 audit_token: str = Field(..., min_length=1) 

50 used_chunks: list[str] = Field(default_factory=list) 

51 missed_chunks: list[str] = Field(default_factory=list)