feat(keeld): construct AW memory store, nop fallback when AW is down
This commit is contained in:
@@ -14,10 +14,12 @@ import (
|
||||
"time"
|
||||
|
||||
"keel/internal/ai"
|
||||
"keel/internal/aw"
|
||||
"keel/internal/enforce"
|
||||
"keel/internal/evidence"
|
||||
"keel/internal/harness"
|
||||
"keel/internal/knowledge"
|
||||
"keel/internal/memory"
|
||||
"keel/internal/mode"
|
||||
"keel/internal/mode/focus"
|
||||
"keel/internal/mode/offscreen"
|
||||
@@ -63,11 +65,28 @@ func main() {
|
||||
return harness.Services{}, fmt.Errorf("%w: %v", settings.ErrInvalidBackend, err)
|
||||
}
|
||||
svc := ai.NewService(backend)
|
||||
|
||||
// Defend against a hand-blanked aw_url: SeedFromEnv defaults this only on
|
||||
// first run, but Load returns whatever the JSON file holds on later starts.
|
||||
awURL := s.AWURL
|
||||
if awURL == "" {
|
||||
awURL = "http://localhost:5600"
|
||||
}
|
||||
var mem memory.Store = memory.NewNop()
|
||||
awc := aw.New(awURL)
|
||||
if err := awc.EnsureBucket(context.Background(), "keel.events", "keel.event", "keel"); err != nil {
|
||||
log.Printf("memory: AW unavailable at %s (%v); running without memory", awURL, err)
|
||||
} else {
|
||||
mem = memory.NewAWStore(awc, "keel.events")
|
||||
log.Printf("memory: keel.events ready at %s", awURL)
|
||||
}
|
||||
|
||||
return harness.Services{
|
||||
AI: svc,
|
||||
Tasks: tasks.NewMarvin(s.MarvinCmd),
|
||||
Knowledge: knowledge.NewFileSource(s.KnowledgePath),
|
||||
Enforce: enforce.NewGuard(),
|
||||
Memory: mem,
|
||||
Clock: time.Now,
|
||||
}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user