mirror of
https://github.com/tiennm99/goclaw.git
synced 2026-10-14 22:17:36 +00:00
fix(providerresolve): add debug logging for background provider resolution
- Log loaded system_configs (background.provider, agent.default_provider) - Log provider lookup attempts with source and error details - Warn when falling back to first registered provider - Surface config load errors instead of silently swallowing them Helps diagnose provider resolution failures in episodic/vault workers.
This commit is contained in:
1 parent
42966a5742
commit
7e798a5d13
1 file changed
+25
-5
@@ -2,6 +2,7 @@ package providerresolve
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log/slog"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/nextlevelbuilder/goclaw/internal/providers"
|
||||
@@ -25,40 +26,59 @@ func ResolveBackgroundProvider(
|
||||
var configs map[string]string
|
||||
if systemConfigs != nil {
|
||||
tctx := store.WithTenantID(ctx, tenantID)
|
||||
configs, _ = systemConfigs.List(tctx)
|
||||
var err error
|
||||
configs, err = systemConfigs.List(tctx)
|
||||
if err != nil {
|
||||
slog.Warn("background: failed to load system_configs", "tenant", tenantID, "error", err)
|
||||
} else {
|
||||
slog.Debug("background: loaded system_configs",
|
||||
"tenant", tenantID,
|
||||
"background.provider", configs["background.provider"],
|
||||
"agent.default_provider", configs["agent.default_provider"])
|
||||
}
|
||||
}
|
||||
|
||||
// tryResolve attempts to get a provider by name
|
||||
tryResolve := func(name, model string) (providers.Provider, string, bool) {
|
||||
tryResolve := func(name, model, source string) (providers.Provider, string, bool) {
|
||||
if name == "" {
|
||||
return nil, "", false
|
||||
}
|
||||
p, err := registry.GetForTenant(tenantID, name)
|
||||
if err != nil || p == nil {
|
||||
slog.Debug("background: provider not found",
|
||||
"source", source, "name", name, "tenant", tenantID, "error", err)
|
||||
return nil, "", false
|
||||
}
|
||||
if model == "" {
|
||||
model = p.DefaultModel()
|
||||
}
|
||||
slog.Debug("background: resolved provider",
|
||||
"source", source, "name", name, "model", model, "tenant", tenantID)
|
||||
return p, model, true
|
||||
}
|
||||
|
||||
// 1. Explicit background config
|
||||
if p, m, ok := tryResolve(configs["background.provider"], configs["background.model"]); ok {
|
||||
if p, m, ok := tryResolve(configs["background.provider"], configs["background.model"], "background.provider"); ok {
|
||||
return p, m
|
||||
}
|
||||
// 2. Agent default provider
|
||||
if p, m, ok := tryResolve(configs["agent.default_provider"], configs["agent.default_model"]); ok {
|
||||
if p, m, ok := tryResolve(configs["agent.default_provider"], configs["agent.default_model"], "agent.default_provider"); ok {
|
||||
return p, m
|
||||
}
|
||||
// 3. First registered provider
|
||||
// 3. First registered provider (fallback)
|
||||
names := registry.ListForTenant(tenantID)
|
||||
if len(names) == 0 {
|
||||
slog.Warn("background: no providers available", "tenant", tenantID)
|
||||
return nil, ""
|
||||
}
|
||||
p, err := registry.GetForTenant(tenantID, names[0])
|
||||
if err != nil {
|
||||
slog.Warn("background: fallback provider failed", "tenant", tenantID, "name", names[0], "error", err)
|
||||
return nil, ""
|
||||
}
|
||||
slog.Warn("background: using fallback provider (no explicit config)",
|
||||
"tenant", tenantID, "provider", names[0], "available", names,
|
||||
"background.provider", configs["background.provider"],
|
||||
"agent.default_provider", configs["agent.default_provider"])
|
||||
return p, p.DefaultModel()
|
||||
}
|
||||
Reference in new issue
Block a user