picoclaw/pkg/evolution/llm_timeout.go
2026-05-09 15:24:52 +08:00

25 lines
591 B
Go

package evolution
import (
"context"
"time"
)
const (
llmTaskSuccessJudgeTimeout = 15 * time.Second
llmPatternClusterTimeout = 45 * time.Second
llmDraftGenerationTimeout = 60 * time.Second
)
func withLLMCallTimeout(parent context.Context, timeout time.Duration) (context.Context, context.CancelFunc) {
if parent == nil {
parent = context.Background()
}
if timeout <= 0 {
return context.WithCancel(parent)
}
if deadline, ok := parent.Deadline(); ok && time.Until(deadline) <= timeout {
return context.WithCancel(parent)
}
return context.WithTimeout(parent, timeout)
}