mirror of
https://github.com/hanzoai/agents.git
synced 2026-10-30 18:48:36 +00:00
Transforms hanzoai/agents from a marketplace config repo into a full agent orchestration platform by merging the AgentField infrastructure: - Go control plane (K8s-like agent orchestration, service mesh, DAG workflows) - Python SDK (FastAPI-based agent framework, LiteLLM, memory, DID/VC) - TypeScript SDK (@hanzo/agents - Vercel AI SDK, MCP, workflows) - Go SDK (idiomatic agent builder + client) - React 19 embedded dashboard (XyFlow DAGs, Recharts, Radix UI) - Docker/K8s/Helm deployment configs - Examples: hello world, deep research, RAG, simulation, benchmarks - Functional test suite across Python/Go/TypeScript All references rebranded: AgentField → Hanzo Agents - Module: github.com/hanzoai/agents/control-plane - Python: hanzo_agents - TypeScript: @hanzo/agents - Go: github.com/hanzoai/agents/sdk/go - Env vars: HANZO_AGENTS_* - Config: hanzo-agents.yaml Previous marketplace configs moved to config/ directory.
37 lines
675 B
Go
37 lines
675 B
Go
package handlers
|
|
|
|
import (
|
|
"math/rand"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
var retryableFragments = []string{
|
|
"database is locked",
|
|
"SQLITE_BUSY",
|
|
"database table is locked",
|
|
"deadlock detected",
|
|
}
|
|
|
|
func isRetryableDBError(err error) bool {
|
|
if err == nil {
|
|
return false
|
|
}
|
|
msg := strings.ToLower(err.Error())
|
|
for _, fragment := range retryableFragments {
|
|
if strings.Contains(msg, strings.ToLower(fragment)) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func backoffDelay(attempt int) time.Duration {
|
|
if attempt <= 0 {
|
|
attempt = 1
|
|
}
|
|
base := time.Duration(50*attempt) * time.Millisecond
|
|
jitter := time.Duration(rand.Int63n(int64(25 * time.Millisecond)))
|
|
return base + jitter
|
|
}
|