## ADDED Requirements

### Requirement: Code LLM-as-judge

The system SHALL provide `create_code_llm_as_judge()` that evaluates code correctness using an LLM, with code extraction from responses.

Parameters:
- `code_extraction_strategy: "none" | "llm" | "markdown_code_blocks"` — how to extract code from output
- `code_extractor?: Callable` — custom extraction function

#### Scenario: Markdown code block extraction

- **WHEN** `code_extraction_strategy="markdown_code_blocks"` and output contains triple-backtick code blocks
- **THEN** the evaluator SHALL extract code from those blocks before scoring

#### Scenario: LLM-based code extraction

- **WHEN** `code_extraction_strategy="llm"` and a `judge` is provided
- **THEN** the evaluator SHALL use an LLM with `ExtractCode`/`NoCode` tools to extract code

#### Scenario: No extraction returns raw output

- **WHEN** `code_extraction_strategy="none"`
- **THEN** the raw output string is passed directly to the scorer

### Requirement: Static analysis evaluator (Pyright)

The system SHALL provide `create_pyright_evaluator()` that runs Pyright static type checking on extracted Python code.

Parameters:
- `pyright_cli_args: string[]` — additional CLI flags
- `code_extraction_strategy` / `code_extractor` — same as code LLM evaluator

#### Scenario: Pyright detects type error

- **WHEN** code with a type error (e.g., `x: int = "string"`) is evaluated
- **THEN** the evaluator SHALL return score `false` with error details in `comment`

#### Scenario: Pyright passes clean code

- **WHEN** valid Python code is evaluated
- **THEN** the evaluator SHALL return score `true`

### Requirement: Static analysis evaluator (Mypy)

The system SHALL provide `create_mypy_evaluator()` with equivalent behavior to Pyright evaluator but using the Mypy type checker.

#### Scenario: Mypy detects type error

- **WHEN** code with an unannotated function returning mismatched types is evaluated
- **THEN** the evaluator SHALL return score `false`

### Requirement: Sandboxed code execution

The system SHALL provide `create_e2b_execution_evaluator()` that executes code in a sandbox and checks for runtime errors.

#### Scenario: Code executes without errors

- **WHEN** valid Python code runs in the sandbox
- **THEN** the evaluator SHALL return score `true`

#### Scenario: Code raises runtime exception

- **WHEN** code that raises an exception is executed
- **THEN** the evaluator SHALL return score `false` with error details
