neurocaster-env / models.py
NishithP2004's picture
Upload folder using huggingface_hub
147bd8f verified
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.
"""Data models for the NeuroCaster OpenEnv environment."""
from typing import Any, Dict, List, Literal, Optional
from openenv.core.env_server.types import Action, Observation, State
from pydantic import Field
NeurocasterStage = Literal[
"investigator",
"drafter",
"verifier_bio",
"investigate",
"draft",
"critic",
"render",
"tribe",
"done",
]
CurriculumLevel = Literal["easy", "medium", "hard"]
class NeurocasterAction(Action):
"""Action submitted by the worker policy for the current DAG stage."""
stage: NeurocasterStage = Field(..., description="Stage this action is attempting to complete")
repo_path: Optional[str] = Field(
default=None,
description="Repository path under shared_data/repos for investigator indexing",
)
query: Optional[str] = Field(default=None, description="Codebase question to investigate")
context_chunks: List[Dict[str, Any]] = Field(
default_factory=list,
description="Investigator context returned from Neo4j/code indexing",
)
slide_markdown: Optional[str] = Field(
default=None,
description="Marp/Slidev markdown produced by the drafter",
)
mermaid_diagrams: List[Dict[str, Any]] = Field(
default_factory=list,
description="Mermaid diagram payloads with name/code/embed path fields",
)
artifact_paths: Dict[str, str] = Field(
default_factory=dict,
description="Paths to generated artifacts inside /app/shared_data",
)
code_queries: List[Dict[str, Any]] = Field(
default_factory=list,
description="Optional investigator-authored code-index or Cypher queries",
)
metadata: Dict[str, Any] = Field(default_factory=dict, description="Optional agent metadata")
class NeurocasterObservation(Observation):
"""Observation returned by NeuroCaster after each deterministic DAG transition."""
stage: NeurocasterStage = Field(default="investigator", description="Next expected stage")
message: str = Field(default="", description="Human-readable environment status")
curriculum_level: CurriculumLevel = Field(default="easy", description="Selected task difficulty")
task: Dict[str, Any] = Field(default_factory=dict, description="Visible task prompt and repo target")
artifact_paths: Dict[str, str] = Field(default_factory=dict, description="Episode artifact paths")
repo_metadata: Dict[str, Any] = Field(default_factory=dict, description="Selected GitHub/local repo metadata")
complexity_scores: Dict[str, Any] = Field(default_factory=dict, description="Static repo complexity analysis")
ingestion_status: Dict[str, Any] = Field(default_factory=dict, description="code_indexing_mcp ingestion result")
query_plan: Dict[str, Any] = Field(default_factory=dict, description="Planned investigation queries")
query_logs: List[Dict[str, Any]] = Field(default_factory=list, description="Executed code-index/Cypher query audit log")
rubric: Dict[str, Any] = Field(default_factory=dict, description="Hidden rubric summary and artifact path")
curriculum_update: Dict[str, Any] = Field(default_factory=dict, description="Curriculum update from episode outcome")
verifier_results: List[Dict[str, Any]] = Field(
default_factory=list,
description="Programmatic and critic verifier results",
)
reward_components: List[Dict[str, Any]] = Field(
default_factory=list,
description="Dense and terminal reward components applied this step",
)
metrics: Dict[str, float] = Field(
default_factory=dict,
description="Logged pass rates and biological z-score metrics",
)
fatal_error: Optional[str] = Field(default=None, description="Fatal verifier failure, if any")
class NeurocasterState(State):
"""Serializable OpenEnv state for the deterministic NeuroCaster episode."""
curriculum_level: CurriculumLevel = Field(default="easy")
current_stage: NeurocasterStage = Field(default="investigator")
task: Dict[str, Any] = Field(default_factory=dict)
hidden_criteria: List[str] = Field(default_factory=list)
artifact_paths: Dict[str, str] = Field(default_factory=dict)
repo_metadata: Dict[str, Any] = Field(default_factory=dict)
complexity_scores: Dict[str, Any] = Field(default_factory=dict)
ingestion_status: Dict[str, Any] = Field(default_factory=dict)
query_plan: Dict[str, Any] = Field(default_factory=dict)
query_logs: List[Dict[str, Any]] = Field(default_factory=list)
rubric: Dict[str, Any] = Field(default_factory=dict)
curriculum_update: Dict[str, Any] = Field(default_factory=dict)
stage_history: List[Dict[str, Any]] = Field(default_factory=list)
verifier_results: List[Dict[str, Any]] = Field(default_factory=list)
reward_components: List[Dict[str, Any]] = Field(default_factory=list)
metrics: Dict[str, float] = Field(default_factory=dict)
cumulative_reward: float = Field(default=0.0)
done: bool = Field(default=False)