Add reusable LLM parser profiles with multi-event extract.

Support kind=llm profiles (instruction/schema), optional multi-event posts via #eN URLs, and recover stale running/queued parse jobs after worker crashes.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-13 20:22:38 +03:00
co-authored by Cursor
parent 5811ecb134
commit 3f9dc6643b
27 changed files with 1334 additions and 205 deletions
+6
View File
@@ -161,15 +161,19 @@ class IngestResponse(BaseModel):
class ParserProfileCreate(BaseModel):
name: str = Field(min_length=1, max_length=255)
kind: str = Field(default="heuristic", pattern="^(heuristic|llm)$")
sample_post: str = ""
heuristic_profile: dict[str, Any] | None = None
llm_profile: dict[str, Any] | None = None
status: str | None = None
class ParserProfileUpdate(BaseModel):
name: str | None = Field(default=None, min_length=1, max_length=255)
kind: str | None = Field(default=None, pattern="^(heuristic|llm)$")
sample_post: str | None = None
heuristic_profile: dict[str, Any] | None = None
llm_profile: dict[str, Any] | None = None
status: str | None = None
@@ -178,8 +182,10 @@ class ParserProfileRead(BaseModel):
id: int
name: str
kind: str = "heuristic"
sample_post: str
heuristic_profile: dict[str, Any] | None
llm_profile: dict[str, Any] | None = None
status: str
created_at: datetime