Catch provider setup errors instead of crashing the server at boot
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 83/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- node.js, typescript
- Domaine
- backend
Piste de recherche
Commencez dans packages/server/src/handler.ts, au niveau de la création du fournisseur vers la ligne 18 et du await dans handleChat vers la ligne 33, puis lisez les tests existants du handler dans packages/server/tests/handler.test.ts, qui simulent createProvider. Vérifiez comment les échecs de génération de réponse sont renvoyés et comment la validation et la limitation du débit sont couvertes. Le travail est terminé lorsque le rejet lors de la configuration est pris en charge et journalisé une seule fois, que les requêtes renvoient { error: 'provider_error' } et que les tests incluent un changeset de type patch pour @chatcops/server.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
createChatHandler starts creating the provider right away and only awaits it inside the first request (packages/server/src/handler.ts, line 18 and line 33). If that promise rejects, for example with an unknown provider.type or a provider SDK that throws on a missing key, nothing handles the rejection. Node treats an unhandled rejection as fatal by default, so the whole server process exits at startup. After that, if the process survives, every request rethrows at line 33, outside the try that starts further down, and the visitor gets a bare internal_error.
What to do
- Handle the rejection where the promise is created, and log it once with the
[chatcops]prefix, for example[chatcops] Provider setup failed: <message>. Don't log the API key or the config object. - In
handleChat, await the provider inside atryand yield{ error: 'provider_error' }when setup failed, the same error the visitor already sees for a failed reply. - Keep request validation and rate limiting working as they do today.
Acceptance criteria
- A handler created with a provider whose setup rejects doesn't cause an unhandled rejection (a test can listen for
unhandledRejection, or check that the rejection is handled) - Requests to that handler yield
{ error: 'provider_error' }and the setup error is logged once, not once per request - Tests in
packages/server/tests/handler.test.ts(it already mockscreateProvider) - Changeset for
@chatcops/server(patch) -
pnpm -r build,pnpm testandpnpm -r typecheckpass
Want to work on this? Comment below and I'll assign it to you. Please take one issue at a time, branch off dev, and open your PR against dev with Closes #<this issue number>. Setup notes (pnpm, build before test) are in CONTRIBUTING.md.
- Langage dominant
- TypeScript
- Étoiles
- 13
- Forks
- 7
- Merge moyen
- 3 h 41 min
- PR mergées (30 j)
- 155
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de codercops/chatcops
-
Document the pre-chat formPeut-être pris @masyarakatai l’a pris il y a 5 jours. Ouvertedocumentation good first issue hacktoberfest widget
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
codercops/chatcops#70 · 5 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
docs: update the providers page for openai-compatible, registerProvider and provider importsPeut-être pris @prakashNalla l’a pris aujourd’hui. Ouvertedocumentation good first issue hacktoberfest website
Difficulté 3/5 1-2 jours Accessibilité débutants 76/100
codercops/chatcops#291 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
docs: add a protocol reference page for custom clientsPeut-être pris @kachamsiddarth l’a pris aujourd’hui. Ouvertedocumentation good first issue hacktoberfest website
codercops/chatcops#286 · 2 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Create @chatcops/store-cloudflare (D1, KV and a Durable Object counter)Peut-être pris @bhushan4work l’a pris aujourd’hui. Ouverteenhancement hacktoberfest help wanted server
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
codercops/chatcops#249 · 2 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Create @chatcops/store-sqlite, a store for single-server setupsPeut-être pris @srikar-naidu l’a pris aujourd’hui. Ouverteenhancement hacktoberfest help wanted server
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
codercops/chatcops#247 · 3 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de codercops/chatcops
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
chaitin/MonkeyCode#1437 ·
Les mainteneurs répondent en général sous 1 jour
-
rtdb-info-connected-order test: unhandled 'connection is closed' rejection fails the CLI suiteOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 69/100
carbon-design-system/carbon-ai-chat#2615 ·
Les mainteneurs répondent en général sous 1 jour
-
e2e-failure ready-to-code
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
redhat-developer/rhdh-plugin-export-overlays#4486 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
[Bug]: fileUploadMatrix.test.ts URL case does a real DNS lookup and fails offlinePeut-être pris @r2jaff l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
ComposioHQ/composio#5054 ·
Les mainteneurs répondent en général sous 1 jour