# Contributing to lambdagentpaas

Thank you for your interest in contributing! This document provides guidelines for contributing to the project.

## Getting Started

### Prerequisites

- Python >= 3.10
- Git

### Development Setup

```bash
# Clone the repository
git clone https://github.com/kenny67nju/lambdagent.git
cd lambdagent

# Create a virtual environment
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install in development mode with all dependencies
pip install -e ".[all]"
pip install pytest

# Verify installation
python -c "import lambdagent; print(f'lambdagent OK: {len(lambdagent.__all__)} exports')"
```

## Development Workflow

### Running Tests

```bash
python -m pytest tests/ -v --tb=short
```

### Project Structure

```
lambdagentpaas/
├── lambdagent/       # Core Lambda Calculus Agent DSL framework
├── agentpaas/        # Agent Platform as a Service layer
├── agentexample/     # Example applications
├── docs/             # Documentation (mkdocs)
└── tests/            # Test suite
```

### Key Conventions

- **lambdagent** is the pure computation kernel (no I/O side effects in core)
- **agentpaas** is the platform layer that imports from `lambdagent`
- Use absolute imports between packages (e.g., `from lambdagent.core import Context`)
- Type hints are expected for public APIs
- Docstrings for public classes and functions

## Submitting Changes

### Pull Request Process

1. Fork the repository and create your branch from `main`
2. Write or update tests for your changes
3. Ensure all tests pass: `python -m pytest tests/ -v`
4. Update documentation if you've changed public APIs
5. Submit a pull request with a clear description

### Commit Messages

Use clear, descriptive commit messages:

- `feat: add new primitive for parallel composition`
- `fix: resolve beta-reduction loop in Y combinator`
- `docs: update quickstart with MCP example`
- `test: add coverage for fromconfig compiler`

## Reporting Issues

- Use GitHub Issues for bug reports and feature requests
- Include Python version, OS, and steps to reproduce for bugs
- For security vulnerabilities, please email directly instead of opening a public issue

## License

By contributing, you agree that your contributions will be licensed under the
[Business Source License 1.1](LICENSE) — the same license that covers this
repository. On **2031-04-05** (the Change Date), the license automatically
converts to Apache License 2.0 for all prior contributions.

Non-production use (development, testing, personal projects, academic research)
is always permitted. Production use is free for organizations with ≤10 users
or employees. See [`LICENSE`](LICENSE) and the **License** section of the
top-level [`README.md`](README.md) for the threshold and how to obtain a
commercial license before the Change Date.
