Models Module

Typed models for the research pipeline.

This module defines Pydantic models and light-weight data structures used across the pipeline: input tasks, intermediate candidates, and outputs.

class agent.pipeline.models.AnalysisAgentOutput(*args, **kwargs)[source]

Bases: BaseModel

Output schema for the analysis agent via output_type.

Parameters:
  • args (Any)

  • kwargs (Any)

Return type:

Any

contextual_reasoning: Optional[str] = None
key_fragments: Optional[str] = None
relevance: float
summary: str
class agent.pipeline.models.AnalysisInput(*args, **kwargs)[source]

Bases: BaseModel

Selected, ranked input to the LLM for deep analysis.

Parameters:
  • args (Any)

  • kwargs (Any)

Return type:

Any

candidate: PaperCandidate
class agent.pipeline.models.AnalysisResult(*args, **kwargs)[source]

Bases: BaseModel

Outcome of a single LLM analysis of a paper candidate.

Parameters:
  • args (Any)

  • kwargs (Any)

Return type:

Any

candidate: PaperCandidate
contextual_reasoning: Optional[str] = None
key_fragments: Optional[str] = None
relevance: float
summary: str
class agent.pipeline.models.DecisionReport(*args, **kwargs)[source]

Bases: BaseModel

Decision agent output controlling whether to notify and the report text.

Parameters:
  • args (Any)

  • kwargs (Any)

Return type:

Any

report_text: Optional[str]
should_notify: bool
class agent.pipeline.models.GeneratedQuery(*args, **kwargs)[source]

Bases: BaseModel

Structured query item produced by the strategy agent.

Parameters:
  • args (Any)

  • kwargs (Any)

Return type:

Any

categories: Optional[List[str]] = None
query_text: str
rationale: Optional[str] = None
source: Literal['arxiv', 'scholar', 'pubmed', 'github']
time_from: Optional[str] = None
time_to: Optional[str] = None
class agent.pipeline.models.PaperCandidate(*args, **kwargs)[source]

Bases: BaseModel

A lightweight representation of a potential paper to evaluate.

Notes

The bm25_score is populated during ranking and defaults to 0.0.

Parameters:
  • args (Any)

  • kwargs (Any)

Return type:

Any

abs_url: Optional[str] = None
arxiv_id: str
bm25_score: float = 0.0
comment: Optional[str] = None
doi: Optional[str] = None
journal_ref: Optional[str] = None
pdf_url: Optional[str] = None
primary_category: Optional[str] = None
published: Optional[datetime] = None
summary: str
title: str
updated: Optional[datetime] = None
class agent.pipeline.models.PipelineOutput(*args, **kwargs)[source]

Bases: BaseModel

Final output of the pipeline for consumer channels.

Examples

from agent.pipeline.pipeline import run_pipeline_sync
out = run_pipeline_sync(PipelineTask(query="graph neural networks for molecules"))
print(out.should_notify, len(out.analyzed))
Parameters:
  • args (Any)

  • kwargs (Any)

Return type:

Any

analyzed: List[AnalysisResult]
generated_queries: List[str]
report_text: Optional[str] = None
should_notify: bool = False
task: PipelineTask
class agent.pipeline.models.PipelineTask(*args, **kwargs)[source]

Bases: BaseModel

A high-level pipeline task describing the user’s research intent.

Parameters:
  • query – Free-text task description or target area.

  • categories – Optional arXiv categories to constrain the search, e.g. ["cs.AI"].

  • max_queries – Upper bound on generated search queries. Default: 5.

  • bm25_top_k – Number of top-ranked candidates to keep. Default: 20.

  • max_analyze – Max number of candidates to analyze with LLM. Default: 10.

  • min_relevance – Minimum score required for inclusion in the final selection. Default: 50.0.

  • args (Any)

  • kwargs (Any)

Return type:

Any

Examples

PipelineTask(query="RAG for small datasets", categories=["cs.AI"])  # doctest: +ELLIPSIS
categories: Optional[List[str]] = None
query: str
query_must_not_be_empty()
class agent.pipeline.models.QueryPlan(*args, **kwargs)[source]

Bases: BaseModel

Agentic query plan consisting of multiple queries and optional notes.

Parameters:
  • args (Any)

  • kwargs (Any)

Return type:

Any

notes: Optional[str] = None
class agent.pipeline.models.ScoredAnalysis(*args, **kwargs)[source]

Bases: BaseModel

Analysis result with overall score used for decision making.

Parameters:
  • args (Any)

  • kwargs (Any)

Return type:

Any

overall_score: float
reasoning: Optional[str] = None
result: AnalysisResult
class agent.pipeline.models.TelegramSummary(*args, **kwargs)[source]

Bases: BaseModel

Output schema for Telegram formatting agent.

Parameters:
  • args (Any)

  • kwargs (Any)

Return type:

Any

html: str