Files
vecna/pkg/server/trace.go
Hein 4009a54e39 feat: 🎉 Vectors na Vectors, the begining
Translate 1536 <-> 768 , 3072 <-> 2048
2026-04-11 18:05:05 +02:00

38 lines
942 B
Go

package server
import (
"context"
"time"
)
type contextKey int
const traceKey contextKey = iota
// RequestTrace holds per-request timing data populated by handlers and middleware.
type RequestTrace struct {
Start time.Time
ForwardDuration time.Duration
TranslateDuration time.Duration
ForwardTarget string
ForwardURL string
ForwardModel string
AdapterType string
PromptTokens int
TotalTokens int
}
// WithTrace injects a new *RequestTrace into ctx.
func WithTrace(ctx context.Context) context.Context {
return context.WithValue(ctx, traceKey, &RequestTrace{Start: time.Now()})
}
// TraceFromContext retrieves the *RequestTrace from ctx.
// Returns a zero-value trace (non-nil) if none was set.
func TraceFromContext(ctx context.Context) *RequestTrace {
if t, ok := ctx.Value(traceKey).(*RequestTrace); ok && t != nil {
return t
}
return &RequestTrace{Start: time.Now()}
}