Skip to main content
Glama

RyanNg

by campfirein
CONTRIBUTING.mdβ€’6.32 kB
# Contributing to Cipher Thank you for your interest in contributing to **cipher**! We're excited to have you as part of our community building the next generation of agent memory systems with Model Context Protocol (MCP). ## πŸš€ Quick Start ### Prerequisites Before you begin, ensure you have: - **Node.js** β‰₯ 20.0.0 - **pnpm** β‰₯ 9.14.0 (we use pnpm, not npm) - **Git** configured with your GitHub account ### 1. Fork & Clone 1. **Fork** the repository to your GitHub account by clicking the "Fork" button 2. **Clone** your fork: ```bash git clone https://github.com/YOUR_USERNAME/cipher.git cd cipher ``` ### 2. Set Up Development Environment ```bash # Install dependencies pnpm install # Set up environment variables cp .env.example .env # Edit .env and add your API keys (at least one required): # OPENAI_API_KEY=your_openai_key # ANTHROPIC_API_KEY=your_anthropic_key # Build the project pnpm run build # Verify setup by running tests pnpm test ``` ### 3. Create Feature Branch ```bash git checkout -b feature/your-descriptive-branch-name # Examples: # - feature/add-memory-persistence # - fix/mcp-connection-timeout # - docs/update-api-examples ``` ## πŸ›  Development Workflow ### Code Quality Standards Before committing, ensure your code meets our standards: ```bash # Type checking pnpm run typecheck # Linting (with auto-fix) pnpm run lint:fix # Code formatting pnpm run format # Run tests pnpm test # Full build verification pnpm run build ``` ### Project Structure Understanding the codebase structure: ``` src/ β”œβ”€β”€ app/ # CLI application entry point β”œβ”€β”€ core/ β”‚ β”œβ”€β”€ brain/ # Core agent logic β”‚ β”‚ β”œβ”€β”€ llm/ # LLM providers (OpenAI, Anthropic) β”‚ β”‚ β”œβ”€β”€ memAgent/ # Agent management β”‚ β”‚ └── systemPrompt/ β”‚ β”œβ”€β”€ mcp/ # Model Context Protocol integration β”‚ β”œβ”€β”€ session/ # Session management β”‚ └── logger/ # Logging infrastructure └── utils/ # Shared utilities ``` ### Development Guidelines #### TypeScript Best Practices - Use strict TypeScript configuration - Implement proper error handling with custom error types - Use interfaces and types for clear API contracts #### Code Style - Follow existing naming conventions - Write self-documenting code with clear variable names - Add JSDoc comments for public APIs - Maintain consistent indentation and formatting #### Testing - Write tests for new functionality in `__test__/` directories - Maintain or improve test coverage - Use descriptive test names that explain the behavior - Mock external dependencies appropriately #### MCP Integration - Follow MCP protocol specifications - Implement proper connection lifecycle management - Add timeout and error handling for server connections - Use type-safe server configuration validation ## πŸ“‹ Contribution Types ### πŸ› Bug Fixes - Check existing issues before creating new ones - Include reproduction steps and environment details - Write regression tests to prevent future occurrences ### ✨ New Features - **Open an issue first** for discussion on larger features - Ensure the feature aligns with cipher's core mission - Include comprehensive tests and documentation - Update configuration schemas if needed ### πŸ“š Documentation - Keep README.md and docs/ up to date - Include code examples that work out-of-the-box - Update configuration references for new options ### πŸ”§ Refactoring - Maintain backward compatibility unless discussed - Include performance benchmarks for optimization claims - Update related tests and documentation ## πŸ”„ Submission Process ### 5. Commit Your Changes Follow conventional commit format: ```bash git add . git commit -m "feat: add persistent memory layer for agent sessions" # Other examples: # git commit -m "fix: resolve MCP connection timeout issues" # git commit -m "docs: update configuration examples" # git commit -m "test: add integration tests for memory persistence" ``` ### 6. Push and Create Pull Request ```bash git push origin feature/your-branch-name ``` Open a Pull Request against the `main` branch with: - **Clear title** describing the change - **Detailed description** explaining: - What problem this solves - How you solved it - Any breaking changes - Testing performed - **Link related issues** using `Fixes #123` or `Closes #123` ### Pull Request Checklist - [ ] Code follows project style guidelines - [ ] Self-review completed - [ ] Tests added/updated and passing - [ ] Documentation updated if needed - [ ] No breaking changes (or clearly documented) - [ ] Commits follow conventional format - [ ] Branch is up to date with main ## πŸ§ͺ Testing ### Running Tests ```bash # Run all tests pnpm test ``` ### Test Categories - **Unit tests**: Test individual functions and classes ## πŸ› Reporting Issues When reporting bugs, include: 1. **Environment details**: Node.js version, OS, pnpm version 2. **Reproduction steps**: Minimal code example that demonstrates the issue 3. **Expected behavior**: What should happen 4. **Actual behavior**: What actually happens 5. **Configuration**: Relevant parts of your `cipher.yml` and `.env` (redact API keys) 6. **Logs**: Any error messages or relevant log output ## πŸ’‘ Feature Requests Before suggesting new features: 1. **Check existing issues** to avoid duplicates 2. **Explain the use case** - what problem does this solve? 3. **Propose implementation** if you have ideas 4. **Consider alternatives** that might already exist ## 🏷 Release Process We follow semantic versioning: - **Patch** (0.1.x): Bug fixes, small improvements - **Minor** (0.x.0): New features, non-breaking changes - **Major** (x.0.0): Breaking changes ## 🀝 Community - **Discord**: Join our [Discord community](https://discord.com/invite/UMRrpNjh5W) - **GitHub Discussions**: For broader conversations and Q&A - **Issues**: For bug reports and feature requests ## πŸ“œ License By contributing to cipher, you agree that your contributions will be licensed under the [Elastic License 2.0](LICENSE). --- **Questions?** Don't hesitate to ask in our Discord or open a discussion on GitHub. We're here to help make your contribution experience smooth and rewarding! Happy coding! πŸŽ‰

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/campfirein/cipher'

If you have feedback or need assistance with the MCP directory API, please join our Discord server