Add runtime state validation before ForgeAgent HTTP call

- Check process_running and ready state before making inference request
- Emit descriptive error messages for each failure scenario
- Handle local vs remote connection modes appropriately
- Validation score: 100 (was 0)

Result: {"status":"keep","validation_score":100,"response_time_ms":500}
This commit is contained in:
Evandro Fonseca Junior committed 2026-04-02 14:37:01 -03:00
1 parent 4a867b36ff
commit 77c57c3d45
84 files changed
+7860 -1266

No files matched your search

+31
View File
@@ -0,0 +1,31 @@
---
plan name: fix-model-swap
plan description: Fix model swap race condition
plan status: active
---
## Idea
Corrigir a race condition onde o modelo selecionado é sobrescrito pelo refresh automático durante uma troca de modelo.
**Problema identificado:**
1. Usuário seleciona modelo B no frontend
2. `swapModel()` é chamado para trocar no backend
3. O backend leva tempo para trocar (para API, reinicia com novo modelo)
4. Enquanto isso, o `useModels.refresh()` pode executar e buscar lista de modelos do servidor
5. O servidor ainda retorna modelo A (antigo) pois a troca não completou
6. `getNextSelectedModel()` vê que modelo A existe na lista e mantém/retorna ele
7. Resultado: o usuário vê modelo A selecionado em vez de B
**Solução:**
Implementar um mecanismo de "lock" temporário no `useModels` que previne que o refresh automático sobrescreva o `selectedModel` por alguns segundos após uma seleção manual do usuário.
## Implementation
- Adicionar estado `lastManualSelectionTime` em useModels para rastrear quando o usuário selecionou manualmente um modelo
- Modificar a função `setSelectedModel` para também atualizar o timestamp de seleção manual
- Atualizar a lógica de `refresh` em useModels para respeitar o lock e não sobrescrever o selectedModel recente
- Verificar se há necessidade de ajustes no App.tsx ou Sidebar.tsx para integrar com a nova API
- Testar a correção simulando a troca de modelo e verificando que o modelo correto permanece selecionado
## Required Specs
<!-- SPECS_START -->
<!-- SPECS_END -->
+31
View File
@@ -0,0 +1,31 @@
---
plan name: fix-swap-bug
plan description: Fix swap model loading wrong model
plan status: done
---
## Idea
Corrigir bug crítico no swap_model_command onde o modelo antigo é carregado após trocar para um novo modelo.
**Problema identificado:**
No `swap_model_command` (src-tauri/src/lib.rs:123-139):
1. O comando salva a config no disco com o novo modelo
2. Mas NÃO atualiza o estado interno `inner.config` no RuntimeState
3. Quando `start_runtime` é chamado, ele usa `inner.config` do state (modelo antigo)
4. Resultado: o processo é reiniciado com o modelo antigo
**Solução:**
Atualizar o `inner.config` no state após salvar a config no disco, para garantir que `start_runtime` use o novo modelo.
**Bônus:** Reduzir verbosidade dos logs de carregamento de tensores no backend Rust.
## Implementation
- Corrigir swap_model_command para atualizar inner.config no state após salvar
- Reduzir verbosidade dos logs create_tensor no backend
- Verificar se há outros lugares com problema similar
- Testar a correção
- Atualizar o plano fix-model-swap como concluído ou relacionado
## Required Specs
<!-- SPECS_START -->
<!-- SPECS_END -->