Skip to content

Latest commit

 

History

History
198 lines (140 loc) · 3.98 KB

File metadata and controls

198 lines (140 loc) · 3.98 KB

Contributing to Vectorless

Thank you for considering contributing to Vectorless!

Table of Contents

Code of Conduct

This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code.

How to Contribute

Reporting Bugs

If you find a bug, please create an issue including:

  • A clear description of the problem
  • Steps to reproduce
  • Expected behavior
  • Actual behavior
  • Rust version and operating system

Suggesting Features

Feature suggestions are welcome! Please create an issue describing:

  • The feature you'd like to see
  • Use cases
  • Possible implementation approach (optional)

Submitting Code

See Pull Request Process below.

Development Setup

Requirements

  • Rust 1.85+
  • cargo

Building

# Clone the repository
git clone https://github.com/vectorlessflow/vectorless.git
cd vectorless

# Build
cargo build

# Run tests
cargo test

# Run examples
cargo run --example basic

Project Structure

vectorless/
├── src/
│   ├── client/      # High-level API (Engine, EngineBuilder)
│   ├── domain/      # Core types (DocumentTree, TreeNode)
│   ├── parser/      # Document parsers (Markdown, PDF, DOCX)
│   ├── index/       # Index Pipeline
│   ├── retrieval/   # Retrieval Pipeline
│   ├── llm/         # LLM client
│   ├── storage/     # Persistence
│   └── config/      # Configuration
├── examples/        # Example code
├── tests/           # Integration tests
└── docs/            # Documentation

Code Standards

Formatting

cargo fmt

Linting

cargo clippy -- -D warnings

All code must pass clippy with no warnings.

Documentation

Public APIs must have documentation comments:

/// Brief description.
///
/// # Examples
///
/// ```
/// use vectorless::Engine;
/// ```
pub fn my_function() {}

Testing

  • New features must include unit tests
  • Bug fixes must include regression tests
# Run all tests
cargo test

# Run specific test
cargo test test_name

Commit Guidelines

Use Conventional Commits format:

<type>(<scope>): <description>

[optional body]

[optional footer]

Types

Type Description
feat New feature
fix Bug fix
docs Documentation changes
style Code style (formatting, no code change)
refactor Code refactoring
perf Performance improvement
test Adding/updating tests
chore Build/tooling changes

Examples

feat(parser): add HTML document support

fix(retrieval): fix backtracking logic in judge stage

docs(readme): update installation instructions

Pull Request Process

  1. Fork the repository
  2. Create a branch: git checkout -b feat/my-feature
  3. Make changes: Follow code standards
  4. Run checks:
    cargo fmt -- --check
    cargo clippy -- -D warnings
    cargo test
  5. Push: git push origin feat/my-feature
  6. Create Pull Request

PR Checklist

  • Code passes cargo fmt -- --check
  • Code passes cargo clippy -- -D warnings
  • All tests pass cargo test
  • New features have documentation
  • New features have tests
  • Commit messages follow guidelines

Review Process

  1. Automated CI checks must pass
  2. At least one maintainer review
  3. Merge after all issues resolved

Questions?

If you have questions, please create an issue or email beautifularea@gmail.com.


Thank you for contributing!