internal/message/ — Content discriminated union, Message, Usage, StopReason, Response. 22 tests. internal/stream/ — Stream pull-based iterator interface, Event types, Accumulator (assembles Response from events). 8 tests. internal/provider/ — Provider interface, Request, ToolDefinition, Registry with factory pattern, ProviderError with HTTP status classification. errors.AsType[E] for Go 1.26. 13 tests. 43 tests total, all passing.
21 lines
614 B
Go
21 lines
614 B
Go
package message
|
|
|
|
// Usage tracks token consumption for a single API turn.
|
|
type Usage struct {
|
|
InputTokens int64 `json:"input_tokens"`
|
|
OutputTokens int64 `json:"output_tokens"`
|
|
CacheReadTokens int64 `json:"cache_read_tokens,omitempty"`
|
|
CacheCreationTokens int64 `json:"cache_creation_tokens,omitempty"`
|
|
}
|
|
|
|
func (u Usage) TotalTokens() int64 {
|
|
return u.InputTokens + u.OutputTokens
|
|
}
|
|
|
|
func (u *Usage) Add(other Usage) {
|
|
u.InputTokens += other.InputTokens
|
|
u.OutputTokens += other.OutputTokens
|
|
u.CacheReadTokens += other.CacheReadTokens
|
|
u.CacheCreationTokens += other.CacheCreationTokens
|
|
}
|