First off, thank you for considering contributing to SambaNova Agents! It's people like you that make this tool a great resource for the sales and research community.
Before creating bug reports, please check the issue list as you might find out that you don't need to create one. When you are creating a bug report, please include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps which reproduce the problem
- Provide specific examples to demonstrate the steps
- Describe the behavior you observed after following the steps
- Explain which behavior you expected to see instead and why
- Include screenshots if possible
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion, please include:
- A clear and descriptive title
- A detailed description of the proposed functionality
- Any possible implementation details
- Why this enhancement would be useful to most users
- Fork the repo and create your branch from
main
- If you've added code that should be tested, add tests
- If you've changed APIs, update the documentation
- Ensure the test suite passes
- Make sure your code lints
- Issue that pull request!
- Clone your fork of the repository
- Install the required dependencies:
# Frontend
cd frontend/sales-agent-crew
yarn install
# Backend
cd backend
python -m venv venv
source venv/bin/activate # or `venv\Scripts\activate` on Windows
pip install -r requirements.txt
├── frontend/
│ └── sales-agent-crew/
│ ├── src/
│ │ ├── components/ # Vue components
│ │ ├── routes/ # Vue router configurations
│ │ ├── stores/ # Pinia stores
│ │ └── services/ # API services
└── backend/
├── api/
│ ├── routes/ # FastAPI route handlers
│ ├── models/ # Data models
│ └── services/ # Business logic
└── tests/ # Test files
- Backend Route:
# backend/api/routes/your_route.py
from fastapi import APIRouter
router = APIRouter()
@router.get("/your-endpoint")
async def your_endpoint():
return {"message": "Your endpoint"}
- Frontend Route:
// frontend/sales-agent-crew/src/router/index.js
{
path: '/your-route',
name: 'YourRoute',
component: () => import('@/views/YourView.vue')
}
- Create a new agent class in
backend/api/agents/
- Implement the required interfaces
- Add the agent to the routing logic
- Update the frontend to support the new agent type
We use the following testing frameworks:
- Backend: pytest
- Frontend: Vitest
# Run backend tests
cd backend
pytest
# Run frontend tests
cd frontend/sales-agent-crew
yarn test
- Backend Tests:
# backend/tests/test_your_feature.py
def test_your_feature():
# Your test code here
assert True
- Frontend Tests:
// frontend/sales-agent-crew/tests/YourComponent.test.js
import { mount } from '@vue/test-utils'
import YourComponent from '@/components/YourComponent.vue'
describe('YourComponent', () => {
test('renders properly', () => {
const wrapper = mount(YourComponent)
expect(wrapper.text()).toContain('Expected text')
})
})
- Create a new branch for your feature:
git checkout -b feature/your-feature-name
- Make your changes and commit using conventional commits:
git commit -m "feat: add new feature"
git commit -m "fix: resolve bug in existing feature"
- Push to your fork and submit a pull request
- Update the README.md with details of changes if applicable
- Update the documentation if you're changing functionality
- The PR must pass all CI/CD checks
- Get at least one code review from a maintainer
- Follow the PR template provided
- Use JSDoc for JavaScript/Vue components
- Use docstrings for Python functions
- Update the README.md for major changes
- Add inline comments for complex logic
- Python: Follow PEP 8
- JavaScript: Use ESLint configuration
- Vue: Follow Vue Style Guide
- CSS: Follow TailwindCSS best practices
- Maintainers will handle version bumps
- Follow semantic versioning
- Update CHANGELOG.md
- Tag releases appropriately
Feel free to open an issue or contact the maintainers if you have any questions.
Thank you for contributing to SambaNova Agents! 🎉