Thank you for your interest in contributing to openrappter! π¦
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/openrappter.git cd openrappter
This is a monorepo with two runtimes:
openrappter/
βββ python/ # Python runtime
β βββ openrappter/ # Package source
β βββ pyproject.toml
βββ typescript/ # TypeScript runtime
β βββ src/ # TypeScript source
β βββ package.json
βββ docs/ # Documentation
cd typescript
npm install
npm run dev # Development mode with hot reload
npm run build # Build
npm test # Run testscd python
pip install -e . # Install in editable mode
openrappter --status # TestBoth runtimes use the same agent pattern. See .github/copilot-instructions.md for the full contract.
import { BasicAgent } from './BasicAgent.js';
import type { AgentMetadata } from './types.js';
export class MyAgent extends BasicAgent {
constructor() {
const metadata: AgentMetadata = {
name: 'MyAgent',
description: 'What this agent does',
parameters: { type: 'object', properties: {}, required: [] }
};
super('MyAgent', metadata);
}
async perform(kwargs: Record<string, unknown>): Promise<string> {
return JSON.stringify({ status: 'success', result: '...' });
}
}from openrappter.agents.basic_agent import BasicAgent
import json
class MyAgent(BasicAgent):
def __init__(self):
self.name = 'MyAgent'
self.metadata = {
"name": self.name,
"description": "What this agent does",
"parameters": {"type": "object", "properties": {}, "required": []}
}
super().__init__(name=self.name, metadata=self.metadata)
def perform(self, **kwargs):
return json.dumps({"status": "success", "result": "..."})- Create a feature branch
- Make your changes
- Test both runtimes if applicable
- Update documentation if needed
- Submit PR with clear description
- Be respectful and inclusive
- Focus on the code, not the person
- Help others learn