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:
1 parent
4a867b36ff
commit
77c57c3d45
84 files changed
+7860
-1266
No files matched your search
@@ -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 -->
|
||||
@@ -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 -->
|
||||
Reference in new issue
Block a user