codebug / models.py
Samridhi24's picture
initial commit
3bfeaae
Raw
History Blame Contribute Delete
3.15 kB
"""Data models for the production Codebug debugging environment."""
from typing import Any, Dict, List, Literal, Optional
try:
from .compat import Action, Field, Observation
except ImportError:
from compat import Action, Field, Observation
ToolName = Literal[
"set_breakpoint",
"step_over",
"step_into",
"step_out",
"inspect_variable",
"set_variable",
"get_stack_trace",
"list_locals",
"search_symbol",
"run_tests",
"submit_fix",
]
class CodebugAction(Action):
"""Generic debugger action envelope."""
tool: ToolName = Field(..., description="Debugger tool to execute.")
line_no: Optional[int] = Field(
default=None,
description="1-based source line number used by set_breakpoint.",
)
var_name: Optional[str] = Field(
default=None,
description="Variable name used by inspect_variable or set_variable.",
)
value: Optional[str] = Field(
default=None,
description="Stringified literal for set_variable, parsed with ast.literal_eval.",
)
query: Optional[str] = Field(
default=None,
description="Search string used by search_symbol.",
)
patch: Optional[str] = Field(
default=None,
description=(
"Patch payload for submit_fix. Either full replacement source or a JSON "
"array of {line_no, content} objects."
),
)
class CodebugObservation(Observation):
"""Structured observation for RL-driven debugging."""
task_id: str = Field(default="", description="Current benchmark task identifier.")
difficulty: str = Field(default="", description="Task difficulty tier.")
instruction: str = Field(default="", description="Task goal shown to the agent.")
code: str = Field(default="", description="Current source code with pointer markers.")
current_line: int = Field(default=0, description="Current highlighted source line.")
locals: Dict[str, str] = Field(
default_factory=dict,
description="Locals visible at the current trace frame.",
)
stack: List[str] = Field(
default_factory=list,
description="Function stack at the current point of execution.",
)
breakpoints: List[int] = Field(
default_factory=list,
description="Sorted active breakpoints.",
)
test_output: str = Field(
default="",
description="Logs from the most recent validation run.",
)
error: Optional[str] = Field(
default=None,
description="Current traceback or runtime error.",
)
last_action_error: Optional[str] = Field(
default=None,
description="Error from the most recent tool invocation, if any.",
)
available_actions: List[str] = Field(
default_factory=list,
description="Tools accepted by the environment.",
)
patch_budget_lines: int = Field(
default=0,
description="Maximum changed lines before penalties grow sharply.",
)
metadata: Dict[str, Any] = Field(
default_factory=dict,
description="Extra reproducibility metadata.",
)