docs: document openai-compatible provider and FIXME_M9 corrections
Update GUIDE_DEV_PYTHON.md, TODO.md, and AGENTS.md to reflect the decisions and work done in the FEAT_M9 and FIXME_M9 sessions. GUIDE_DEV_PYTHON.md: - Header: add entry in recent updates - 3.1.2: AI_PROVIDER now documents openai-compatible with Literal type; add AI_ALLOW_INSECURE_HTTP row; move decision block after table to fix rendering - 3.2: AISettings code block updated with openai-compatible and allow_insecure_http field; decision note extended - 3.1.3: .env.example adds OpenRouter (HTTPS) and Ollama (HTTP) examples, both commented TODO.md: - M9 factory line now mentions openai-compatible with URL validation - Add FEAT_M9 and FIXME_M9 notes after M9 acceptance criteria AGENTS.md: - Section 5: new subsection for openai-compatible provider contract documenting validation rules, degraded mode, and security constraints Co-authored-by: opencode/tech-writer anthropic.claude-sonnet-4-5 <anthropic.claude-sonnet-4-5@agents.invalid>
This commit is contained in:
11
AGENTS.md
11
AGENTS.md
@@ -146,6 +146,17 @@ pronote-sync --dry-run
|
||||
- Réutiliser un téléchargement/parsing iCal pour l'agenda et les devoirs pendant un même run, sans
|
||||
cache global ni persistant.
|
||||
|
||||
### Contrat du provider `openai-compatible`
|
||||
- Le provider `openai-compatible` réutilise `OpenAISynthesisProvider` avec un `base_url` personnalisé ; aucun nouveau provider n'est créé.
|
||||
- `AI_BASE_URL` et `AI_MODEL` sont requis ; `AI_API_KEY` est requis (MVP).
|
||||
- L'URL doit utiliser `https` sauf si `AI_ALLOW_INSECURE_HTTP=true`.
|
||||
- Les credentials dans l'URL (`user:pass@host`) sont refusés.
|
||||
- Les paramètres sensibles dans la *query string* sont refusés, y compris ceux sans valeur (`?token`).
|
||||
- Les URL malformées ou sans hostname sont rejetées (`ValueError` catché).
|
||||
- Aucune manipulation automatique de `/v1` n'est effectuée.
|
||||
- Configuration incomplète ou invalide → `None` avec avertissement (mode dégradé) ; la factory ne lève jamais d'exception.
|
||||
- La factory ne fait aucun appel réseau ; les avertissements utilisent `redact_url()`.
|
||||
|
||||
### Documentation (docstrings)
|
||||
- **Obligatoire** : **Toute** fonction, méthode et classe publique doit avoir une docstring.
|
||||
- **Format** : Utiliser le format **Sphinx/reST** (pas Google ou NumPy) pour une compatibilité native avec Sphinx.
|
||||
|
||||
Reference in New Issue
Block a user