## ADDED Requirements

### Requirement: Inline script execution
Script nodes SHALL execute inline TypeScript (runtime: `bun`) or Python (runtime: `uv`) code and capture stdout as the node output.

#### Scenario: Bun inline execution
- **WHEN** a script node has `runtime: bun` and `script: console.log("hello")`
- **THEN** the executor SHALL run the script via `bun -e`
- **THEN** stdout SHALL be captured as `$nodeId.output`

#### Scenario: Python inline execution
- **WHEN** a script node has `runtime: uv` and `script: print("hello")`
- **THEN** the executor SHALL run the script via `uv run python -c`
- **THEN** stdout SHALL be captured as `$nodeId.output`

### Requirement: Dependency installation
Script nodes SHALL support a `deps:` array that installs dependencies before execution.

#### Scenario: Bun with npm deps
- **WHEN** a script node has `runtime: bun` and `deps: ["lodash", "zod"]`
- **THEN** the executor SHALL run `bun install lodash zod` before executing

#### Scenario: Python with pip deps
- **WHEN** a script node has `runtime: uv` and `deps: ["requests", "click"]`
- **THEN** the executor SHALL run `uv pip install requests click` before executing

### Requirement: Named script files
Script nodes MAY reference named scripts from a `.archon/scripts/` directory by name instead of inline code.

#### Scenario: Named script discovery
- **WHEN** a script node has `script: analyze` and `scripts/analyze.ts` exists
- **THEN** the executor SHALL load and execute the file

#### Scenario: Runtime inferred from extension
- **WHEN** a script has `runtime: bun` and the named file has a `.ts` extension
- **THEN** the executor SHALL run it via `bun run`

### Requirement: Script timeout
Script nodes SHALL support a `timeout:` field in milliseconds. If execution exceeds the timeout, the process SHALL be killed and the node SHALL fail.

#### Scenario: Timeout exceeded
- **WHEN** a script node sets `timeout: 5000` and the script runs for 10 seconds
- **THEN** the process SHALL be killed after 5 seconds
- **THEN** the node SHALL be marked as failed with a timeout error
