diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a1dcda..28bea29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ All notable changes to Plarix Scan will be documented in this file. +## [0.5.0] - 2026-01-03 + +### Added +- Transparent streaming (SSE) support: passes through chunks without buffering +- Automatic detection of streaming responses (marked as unknown cost by default) +- Optional `enable_openai_stream_usage_injection` input to force usage reporting in OpenAI streams +- Request body modification proxy logic for injection + ## [0.4.0] - 2026-01-03 ### Added diff --git a/cmd/plarix-scan/main.go b/cmd/plarix-scan/main.go index a907e21..4e063ae 100644 --- a/cmd/plarix-scan/main.go +++ b/cmd/plarix-scan/main.go @@ -234,16 +234,16 @@ func runUserCommand(command string, envVars map[string]string) error { func generateReport(s ledger.Summary, pricesAsOf string) string { var b strings.Builder - b.WriteString(fmt.Sprintf("## 💰 Plarix Scan Cost Report\n\n")) - b.WriteString(fmt.Sprintf("**Total Known Cost:** $%.4f USD\n", s.TotalKnownCostUSD)) - b.WriteString(fmt.Sprintf("**Calls Observed:** %d\n", s.TotalCalls)) - b.WriteString(fmt.Sprintf("**Tokens:** %d in / %d out\n\n", s.TotalInputTokens, s.TotalOutputTokens)) + b.WriteString("## 💰 Plarix Scan Cost Report\n\n") + fmt.Fprintf(&b, "**Total Known Cost:** $%.4f USD\n", s.TotalKnownCostUSD) + fmt.Fprintf(&b, "**Calls Observed:** %d\n", s.TotalCalls) + fmt.Fprintf(&b, "**Tokens:** %d in / %d out\n\n", s.TotalInputTokens, s.TotalOutputTokens) if s.UnknownCostCalls > 0 { - b.WriteString(fmt.Sprintf("⚠️ **Unknown Cost Calls:** %d\n", s.UnknownCostCalls)) + fmt.Fprintf(&b, "⚠️ **Unknown Cost Calls:** %d\n", s.UnknownCostCalls) if len(s.UnknownReasons) > 0 { for reason, count := range s.UnknownReasons { - b.WriteString(fmt.Sprintf(" - %s: %d\n", reason, count)) + fmt.Fprintf(&b, " - %s: %d\n", reason, count) } } b.WriteString("\n") @@ -263,8 +263,8 @@ func generateReport(s ledger.Summary, pricesAsOf string) string { if count >= 6 { break } - b.WriteString(fmt.Sprintf("| %s | %d | %d / %d | $%.4f |\n", - model, stats.Calls, stats.InputTokens, stats.OutputTokens, stats.KnownCostUSD)) + fmt.Fprintf(&b, "| %s | %d | %d / %d | $%.4f |\n", + model, stats.Calls, stats.InputTokens, stats.OutputTokens, stats.KnownCostUSD) count++ } b.WriteString("\n") @@ -276,8 +276,8 @@ func generateReport(s ledger.Summary, pricesAsOf string) string { } // Footer - b.WriteString(fmt.Sprintf("\n---\n*Plarix Scan v%s | Prices as of %s | %s*\n", - version, pricesAsOf, time.Now().UTC().Format("2006-01-02 15:04 UTC"))) + fmt.Fprintf(&b, "\n---\n*Plarix Scan v%s | Prices as of %s | %s*\n", + version, pricesAsOf, time.Now().UTC().Format("2006-01-02 15:04 UTC")) return b.String() } diff --git a/go.mod b/go.mod index 5c1b3a9..c3c61e4 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,3 @@ module plarix-action -go 1.22.2 +go 1.20