Files
goclaw/internal/http/provider_embedding_validation.go
Kai (Tam Nhu) Tran 65d0d62acf fix(memory): guard provider embedding dimensions to 1536 schema (#563)
- Reject incompatible explicit provider embedding dimensions on create/update
- Ignore previously saved incompatible dimensions at runtime, fall back to 1536
- Share RequiredMemoryEmbeddingDimensions constant from store package
- Remove dimensions input from provider UI (always 1536 per pgvector schema)
- Add HTTP, runtime, and validation unit tests

Closes #548
Supersedes #410
2026-03-30 21:36:09 +07:00

28 lines
810 B
Go

package http
import (
"fmt"
"github.com/nextlevelbuilder/goclaw/internal/store"
)
// Provider-level embedding settings are used by the memory system, whose
// PostgreSQL schema currently stores fixed vector(1536) embeddings.
func validateProviderEmbeddingSettings(p *store.LLMProviderData) error {
es := store.ParseEmbeddingSettings(p.Settings)
if es == nil || !es.Enabled {
return nil
}
if es.Dimensions < 0 {
return fmt.Errorf("embedding.dimensions must be a positive integer or omitted")
}
if es.Dimensions > 0 && es.Dimensions != store.RequiredMemoryEmbeddingDimensions {
return fmt.Errorf(
"embedding.dimensions must be %d or omitted because GoClaw memory stores vector(%d)",
store.RequiredMemoryEmbeddingDimensions,
store.RequiredMemoryEmbeddingDimensions,
)
}
return nil
}