# Contributing to Agent Recon™

Thank you for your interest in contributing to Agent Recon™!

## Contributor License Agreement (CLA)

Before we can accept your contribution, you must sign our
[Contributor License Agreement](CLA.md). When you open your first pull
request, the CLA Assistant bot will prompt you to sign electronically.
You only need to sign once.

**Why a CLA?** Agent Recon™ uses an open-core model: core components are
Apache 2.0, while some components are proprietary. The CLA ensures PNW Great
Loop LLC can maintain both licenses. Your contributions to Apache 2.0 core
remain Apache 2.0.

## What Can I Contribute To?

Contributions are welcome to **Apache 2.0-licensed core components** (see
LICENSE for the full list). These include:

- Event ingestion server and SQLite layer
- Regex security engine
- Dashboard UI (feed, waveform, stats, filters)
- Token cost tracking
- Build system and hook scripts
- Setup scripts (all platforms)
- Tests (all test suites)

Contributions to proprietary components (LLM pipelines, telemetry, installer)
are generally not accepted via open PRs. If you have ideas for those areas,
please open an issue to discuss.

## How to Contribute

1. **Fork** the repository and create a feature branch from `main`
2. **Make your changes** — follow the existing code style
3. **Add tests** — every change must include tests (see CLAUDE.md > Testing Policy)
4. **Run tests** before submitting:
   ```bash
   cd server
   npm run test:unit && npm run test:fe
   ```
5. **Run the build** if you modified `src/` files:
   ```bash
   node build.js
   ```
6. **Open a pull request** against `main` with a clear description of the change

## Code Style

- No framework dependencies in the frontend (vanilla JS, single-file SPA)
- Tests use `node:test` and `node:assert` (Node 22+ built-ins, no test framework)
- LF line endings for `.py` and `.sh` files
- See CLAUDE.md for the full developer guide

## Reporting Issues

Open a GitHub issue with:
- Steps to reproduce
- Expected vs. actual behavior
- Platform info (OS, terminal, shell, Node.js version)

## Code of Conduct

Be respectful and constructive. We're building something useful together.

---

Questions? Email support@agent-recon.net
