Nanny7's picture
initial deploy
bcf46c3
|
Raw History Blame Contribute Delete
2.56 kB
# Project-Wide Agent Rules — OpticParse Monorepo
These rules apply to ALL agents working in this repository, regardless of
which service they are modifying.
## Repository Structure
This is a **polyglot monorepo** containing two independent microservices:
| Service | Language | Directory | Render URL |
|---------|----------|-----------|------------|
| OpticParse | Python / FastAPI | Repository root | `opticparse-python-sg.onrender.com` |
| PhishVision | TypeScript / Express | `opticparse-js/` | `opticparse-1opticparse-node-sg.onrender.com` |
## Strict Isolation Rules
1. **Never cross service boundaries.** If you are fixing OpticParse, do NOT
touch files inside `opticparse-js/`. If you are fixing PhishVision, do NOT
touch `server.py` or other root-level Python files.
2. **`render.yaml` ownership**: Lines 1–19 belong to OpticParse. Lines 21–39
belong to PhishVision. Never edit the other service's block.
## Git Workflow
1. **Never push directly to `main`.** Always create a `fix/<service>-<description>` branch.
2. Use **conventional commit** format:
- `fix(opticparse): <description>` for bug fixes
- `feat(opticparse): <description>` for new features
- `chore(opticparse): <description>` for maintenance
- Replace `opticparse` with `phishvision` for the Node service.
3. After pushing, create a **Draft Pull Request** and halt for user review.
## Security Rules
1. **Never commit `.env` files.** They contain API keys and database credentials.
2. **Never log API keys** — not even partially. Use `***` masking if needed.
3. **Never hardcode secrets** in source code. Always use `os.getenv()` (Python)
or `process.env` (TypeScript).
## Testing Requirements
1. **Python (OpticParse)**: Run `python -m pytest test_server.py -v` before committing.
2. **TypeScript (PhishVision)**: Run `npx tsc --noEmit` before committing.
3. If any test or compilation fails, fix it before committing. No exceptions.
## AI Provider Rotation
Both services share the same set of free AI provider API keys. When adding
or modifying providers:
1. Follow the existing data structure (`AI_PROVIDERS` dict in Python, `AIProvider` interface in TypeScript).
2. Add new providers to the END of the rotation list.
3. Update BOTH services if a provider key changes or a model is deprecated.
## Documentation
1. Preserve all existing comments and docstrings unless directly related to
your code change.
2. New public endpoints must include OpenAPI documentation.
3. Update `README.md` if adding new endpoints or changing the API contract.