## Why

Tool instances require a type system to define what development tools can be launched. Without tool types, users cannot create instances of VS Code Server, Jupyter notebooks, or other dev environments from their repositories.

## What Changes

- Add `ToolType` SQLAlchemy model with Docker Compose template support
- Add CRUD API endpoints for tool type management
- Implement template variable substitution (`{{REPO_PATH}}`, etc.)
- Add built-in tool types (code-server, jupyter-notebook, opencode)
- Validate Docker Compose templates on creation/update

## Capabilities

### New Capabilities
- `tool-types-definition`: Define and manage tool types with Docker Compose templates

## Impact

- New database table: tool_types
- New API module: apps/api/src/api/tool_types.py
- New frontend page: apps/web/src/pages/tool-types.tsx
- Database migration required
