picoclaw/pkg/evolution/llm_timeout.go

26 lines
591 B
Go
Raw Permalink Normal View History

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)
}