Repository navigation
fix(executor): un error interno de una herramienta dice qué tipo de falla fue y si conviene reintentar - #39
Merged
Conversation
Author
|
El CI de Blacksmith no corre en este repositorio (todas sus ejecuciones quedan en cola o canceladas), así que se verificó en local sobre el head adcbf6f (rama con
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Qué cambia
Cuando una llamada a
invokeoexecutefalla por un defecto interno, el mensaje ya no es soloInternal tool error [id]. Ahora indica el tipo de falla y si conviene reintentar, por ejemplo:Internal tool error [de660f2d]: upstream timeout calling slack_com_openapi.org.main.conversationsHistory. Retry may succeed.errorCategoryyretryableen el contenido estructurado. Las fallas internas conservan el mensaje opaco de antes.[executor:mcp] execute defect) ahora incluye categoría, herramienta y la causa completa. Antes no registraba la causa.retryable, porqueinvokepuede escribir en sistemas externos.Causa de de660f2d
Confirmada: una caída de D1 (
D1_ERROR: internal error; reference = ...) de unos 15 s el 2026-10-28 a las 14:50Z, más larga que el reintento de D1. No fue un timeout upstream (la hipótesis de los 19 s era incorrecta;searchni siquiera llama a un upstream). La corrección de la causa está en #41. Este PR solo mejora el diagnóstico: el log ahora trae la causa completa. Un error de D1 sigue clasificado como interno, porque la categoría solo lee etiquetas de error, no mensajes.Cómo se probó
failure-category.test.tsy una de integración entool-server.test.ts(un timeout con URL y token en el mensaje no filtra nada).vitest runenpackages/hosts/mcp: 275 pruebas pasan.oxlintsin errores en los archivos tocados.