fix(secretaria): fallback resiliente a erros de rede no callAI
isRecoverableError inclui fetch failed/timeout/econnreset/etimedout/und_err — um blip de rede no primeiro provider agora cai para o próximo da chain (openai→ gemini→anthropic→ollama) em vez de virar "[Erro ao chamar IA: fetch failed]". Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -463,7 +463,17 @@ class ProtocolEngine {
|
|||||||
msg.includes('invalid_api_key') ||
|
msg.includes('invalid_api_key') ||
|
||||||
msg.includes('econnrefused') ||
|
msg.includes('econnrefused') ||
|
||||||
msg.includes('enotfound') ||
|
msg.includes('enotfound') ||
|
||||||
msg.includes('não configurada'));
|
msg.includes('não configurada') ||
|
||||||
|
// Erros de rede transitórios — devem cair para o próximo provider da chain,
|
||||||
|
// não abortar a resposta (era o que gerava "[Erro ao chamar IA: fetch failed]").
|
||||||
|
msg.includes('fetch failed') ||
|
||||||
|
msg.includes('timeout') ||
|
||||||
|
msg.includes('timed out') ||
|
||||||
|
msg.includes('aborted') ||
|
||||||
|
msg.includes('econnreset') ||
|
||||||
|
msg.includes('etimedout') ||
|
||||||
|
msg.includes('und_err') ||
|
||||||
|
msg.includes('socket hang up'));
|
||||||
}
|
}
|
||||||
async callAI(agent, systemPrompt, messages) {
|
async callAI(agent, systemPrompt, messages) {
|
||||||
const cfg = await this.config.get('secretaria');
|
const cfg = await this.config.get('secretaria');
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -482,7 +482,17 @@ export class ProtocolEngine {
|
|||||||
msg.includes('invalid_api_key') ||
|
msg.includes('invalid_api_key') ||
|
||||||
msg.includes('econnrefused') ||
|
msg.includes('econnrefused') ||
|
||||||
msg.includes('enotfound') ||
|
msg.includes('enotfound') ||
|
||||||
msg.includes('não configurada')
|
msg.includes('não configurada') ||
|
||||||
|
// Erros de rede transitórios — devem cair para o próximo provider da chain,
|
||||||
|
// não abortar a resposta (era o que gerava "[Erro ao chamar IA: fetch failed]").
|
||||||
|
msg.includes('fetch failed') ||
|
||||||
|
msg.includes('timeout') ||
|
||||||
|
msg.includes('timed out') ||
|
||||||
|
msg.includes('aborted') ||
|
||||||
|
msg.includes('econnreset') ||
|
||||||
|
msg.includes('etimedout') ||
|
||||||
|
msg.includes('und_err') ||
|
||||||
|
msg.includes('socket hang up')
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user