Preserve reported token usage presence

This commit is contained in:
2026-09-23 16:39:43 +00:00
parent ea94d66fc2
commit d31a563ca1
8 changed files with 166 additions and 16 deletions

View File

@@ -12,6 +12,36 @@ import (
"gitea.maximumdirect.net/eric/promptkit"
)
func TestGenerateResponseUsagePresenceJSON(t *testing.T) {
value := promptkit.GenerateResponse{
Content: "ok",
Usage: promptkit.TokenUsage{TotalTokens: 5},
UsagePresence: &promptkit.TokenUsagePresence{
PromptTokens: true, CompletionTokens: true, TotalTokens: true,
CachedTokens: true, CacheWriteTokens: true,
},
}
payload, err := json.Marshal(value)
if err != nil {
t.Fatal(err)
}
object := decodeJSONObject(t, payload)
if _, ok := object["usage_presence"]; !ok {
t.Fatalf("missing usage_presence: %s", payload)
}
var decoded promptkit.GenerateResponse
if err := json.Unmarshal(payload, &decoded); err != nil || !reflect.DeepEqual(decoded, value) {
t.Fatalf("round trip = %+v, %v", decoded, err)
}
payload, err = json.Marshal(promptkit.GenerateResponse{})
if err != nil {
t.Fatal(err)
}
if _, ok := decodeJSONObject(t, payload)["usage_presence"]; ok {
t.Fatalf("nil usage_presence was serialized: %s", payload)
}
}
func TestPreparedRunJSONContractRoundTripsAllFields(t *testing.T) {
value := fullyPopulatedPreparedRun()
payload, err := json.Marshal(value)