# 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.