Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
A comprehensive collection of Agent Skills for context engineering, multi-agent architectures, and production agent systems.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
examples/interleaved-thinking/reasoning_trace_optimizer/models.py
1"""2Core data models for reasoning trace optimization.3"""45from dataclasses import dataclass, field6from datetime import datetime7from enum import Enum8from typing import Any91011class PatternType(Enum):12"""Types of patterns detected in reasoning traces."""1314CONTEXT_DEGRADATION = "context_degradation"15TOOL_CONFUSION = "tool_confusion"16INSTRUCTION_DRIFT = "instruction_drift"17HALLUCINATION = "hallucination"18INCOMPLETE_REASONING = "incomplete_reasoning"19TOOL_MISUSE = "tool_misuse"20GOAL_ABANDONMENT = "goal_abandonment"21CIRCULAR_REASONING = "circular_reasoning"22PREMATURE_CONCLUSION = "premature_conclusion"23MISSING_VALIDATION = "missing_validation"242526class Severity(Enum):27"""Severity levels for detected patterns."""2829LOW = "low"30MEDIUM = "medium"31HIGH = "high"32CRITICAL = "critical"333435@dataclass36class ThinkingBlock:37"""A single thinking/reasoning block from the model."""3839content: str40turn_index: int41timestamp: datetime = field(default_factory=datetime.now)42token_count: int = 043signature: str | None = None # M2.1 thinking signature4445# Context at time of thinking46preceding_tool_call: str | None = None47preceding_tool_result: str | None = None48following_action: str | None = None # tool_use, text, or end_turn495051@dataclass52class ToolCall:53"""A tool call made by the agent."""5455id: str56name: str57input: dict[str, Any]58turn_index: int59result: str | None = None60success: bool | None = None61error: str | None = None626364@dataclass65class ReasoningTrace:66"""Complete reasoning trace for an agent session."""6768session_id: str69task: str70system_prompt: str71thinking_blocks: list[ThinkingBlock] = field(default_factory=list)72tool_calls: list[ToolCall] = field(default_factory=list)73final_response: str | None = None7475# Metadata76model: str = "MiniMax-M2.1"77total_turns: int = 078total_tokens: int = 079success: bool | None = None80error: str | None = None81started_at: datetime = field(default_factory=datetime.now)82completed_at: datetime | None = None8384def get_thinking_at_turn(self, turn: int) -> ThinkingBlock | None:85"""Get thinking block at specific turn."""86for block in self.thinking_blocks:87if block.turn_index == turn:88return block89return None9091def get_tool_calls_at_turn(self, turn: int) -> list[ToolCall]:92"""Get all tool calls at specific turn."""93return [tc for tc in self.tool_calls if tc.turn_index == turn]949596@dataclass97class Pattern:98"""A detected pattern in reasoning traces."""99100type: PatternType101severity: Severity102description: str103evidence: list[str] # Excerpts from thinking blocks104turn_indices: list[int]105suggestion: str106confidence: float # 0.0 to 1.0107108109@dataclass110class AnalysisResult:111"""Result of analyzing a reasoning trace."""112113trace_id: str114patterns: list[Pattern] = field(default_factory=list)115116# Scores (0-100)117reasoning_clarity: float = 0.0118goal_adherence: float = 0.0119tool_usage_quality: float = 0.0120error_recovery: float = 0.0121overall_score: float = 0.0122123# Feedback124strengths: list[str] = field(default_factory=list)125weaknesses: list[str] = field(default_factory=list)126recommendations: list[str] = field(default_factory=list)127128# Analysis metadata129analyzer_model: str = "MiniMax-M2.1"130analyzer_thinking: str = "" # The analyzer's own reasoning131132133@dataclass134class PromptDiff:135"""Difference between original and optimized prompt."""136137section: str # e.g., "system_prompt", "tool_description", "instruction"138original: str139optimized: str140reason: str141142143@dataclass144class OptimizationResult:145"""Result of prompt optimization."""146147original_prompt: str148optimized_prompt: str149diffs: list[PromptDiff] = field(default_factory=list)150151# Improvement predictions152predicted_improvement: float = 0.0 # Percentage153confidence: float = 0.0154155# Optimizer reasoning156optimizer_thinking: str = ""157key_changes: list[str] = field(default_factory=list)158159160@dataclass161class LoopIteration:162"""Single iteration of the optimization loop."""163164iteration: int165trace: ReasoningTrace166analysis: AnalysisResult167optimization: OptimizationResult | None168169# Metrics170task_completed: bool = False171error_count: int = 0172token_usage: int = 0173174175@dataclass176class LoopResult:177"""Result of running the full optimization loop."""178179task: str180iterations: list[LoopIteration] = field(default_factory=list)181182# Final state183final_prompt: str = ""184converged: bool = False185total_iterations: int = 0186187# Improvement metrics188initial_score: float = 0.0189final_score: float = 0.0190improvement_percentage: float = 0.0191192# Generated artifacts193generated_skill_path: str | None = None194