Contributing¶
Thank you for your interest in contributing to OpenAICE!
Getting Started¶
- Fork and clone the repository
- Install development dependencies:
- Run tests to ensure everything works:
Development Workflow¶
Making Changes¶
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes
- Add tests for new functionality
- Run the test suite:
pytest tests/ -v - Submit a pull request
Code Style¶
- We use Ruff for linting and formatting
- Type hints are required for all public functions
- Docstrings follow Google style
What to Contribute¶
High-Impact Areas¶
| Area | Description | Difficulty |
|---|---|---|
| New adapters | Integrate additional telemetry/runtime sources | Medium |
| Policy rules | Add decision rules for new scenarios | Easy |
| Replay scenarios | Create test scenarios for edge cases | Easy |
| Documentation | Improve docs, add examples, fix typos | Easy |
| Core improvements | State bus, policy engine, guardrails enhancements | Hard |
Adding a New Adapter¶
- Create a new file in
openaice/adapters/telemetry/oropenaice/adapters/runtime/ - Implement the
TelemetryAdapterorRuntimeStateAdapterinterface - Add tests in
tests/ - Document in
docs/adapters/ - See the Writing Custom Adapters guide
Adding a Policy Rule¶
- Add the rule to
policies/rules.yaml - If the rule needs new logic, add a method in
openaice/core/policy_engine.py - Create a replay scenario in
examples/telemetry-replay/ - Add a golden test in
tests/test_replay.py
Code of Conduct¶
We expect all contributors to follow standard open-source community guidelines. Be respectful, constructive, and inclusive.
License¶
By contributing, you agree that your contributions will be licensed under the Apache 2.0 License.