| from __future__ import annotations | |
| from dataclasses import dataclass, field | |
| from pathlib import Path | |
| from typing import Literal | |
| ResourceKind = Literal["tool", "software", "database", "protocol", "knowledge"] | |
| class Resource: | |
| """A searchable resource available to the agent.""" | |
| name: str | |
| kind: ResourceKind | |
| description: str | |
| command_hint: str | None = None | |
| tags: tuple[str, ...] = () | |
| class TaskSpec: | |
| """Normalized task input for a Biomni-ReAct run.""" | |
| name: str | |
| objective: str | |
| workspace: Path | |
| expected_outputs: list[Path] = field(default_factory=list) | |
| constraints: list[str] = field(default_factory=list) | |
| metadata: dict[str, str] = field(default_factory=dict) | |
| class ReActStep: | |
| iteration: int | |
| thought: str | |
| action_type: str | None = None | |
| action: str | None = None | |
| observation: str | None = None | |
| class RunResult: | |
| task_name: str | |
| success: bool | |
| final_answer: str | |
| steps: list[ReActStep] | |
| selected_resources: list[Resource] | |
| artifact_paths: dict[str, Path] | |
| error: str | None = None | |