Retain injected client diagnostic evidence

This commit is contained in:
2026-10-13 17:05:40 +00:00
parent c5aed7a451
commit 2b723760d1
6 changed files with 233 additions and 12 deletions

View File

@@ -2,6 +2,7 @@ package promptkit
import (
"context"
"errors"
"reflect"
"strconv"
"sync"
@@ -65,12 +66,42 @@ func TestPublicLLMClientAdapterCopiesUsagePresence(t *testing.T) {
}
}
func TestPublicLLMClientAdapterPreservesOwnedResponseAlongsideError(t *testing.T) {
presence := &TokenUsagePresence{PromptTokens: true}
source := &GenerateResponse{
Content: "returned with error",
Usage: TokenUsage{PromptTokens: 6},
UsagePresence: presence,
}
marker := errors.New("injected failure")
adapter := publicLLMClientAdapter{client: responseAndErrorClient{response: source, err: marker}}
got, err := adapter.Generate(context.Background(), domain.GenerateRequest{})
if got == nil || !errors.Is(err, marker) {
t.Fatalf("response=%+v error=%v", got, err)
}
source.Content = "mutated after return"
presence.PromptTokens = false
if got.Content != "returned with error" || got.UsagePresence == nil || !got.UsagePresence.PromptTokens {
t.Fatalf("adapter response was not owned: %+v", got)
}
}
type usagePresenceClient struct{ response *GenerateResponse }
func (c *usagePresenceClient) Generate(context.Context, GenerateRequest) (*GenerateResponse, error) {
return c.response, nil
}
type responseAndErrorClient struct {
response *GenerateResponse
err error
}
func (c responseAndErrorClient) Generate(context.Context, GenerateRequest) (*GenerateResponse, error) {
return c.response, c.err
}
type retainingMutatingLLMClient struct {
retained GenerateRequest
}