plugins/logging/v1.7.0

maximhq/bifrostplugins/logging/v1.7.0Aug 26, 2026by akshaydeo

AI Summary

A major logging plugin release introducing comprehensive batch accounting, cost breakdowns, overhead latency tracking, and video edit logging.

Key Highlights

  • Comprehensive batch accounting system with lifecycle persistence and settlement.
  • Detailed cost breakdowns (input/output/additional) persisted on logs.
  • Bifrost overhead latency tracking with per-span self-time decomposition.
  • Video edit requests are now logged with their input.
  • Performance improvements using sonic JSON encoding.

New Features

  • Batch accounting
  • Cost breakdowns
  • Overhead latency tracking
  • Video edit logging
  • JSON encoding optimization

Full Release Notes

## Plugin Release: logging v1.7.0

- feat: batch accounting: `recordBatchJobLifecycle` persists batch state on create and retrieve, `accountBatchResults` settles costs inline on the `/results` path under a 30-second bound, `StartBatchAccountingSweeper` re-drives jobs that timed out with a per-runner ownership identity, `EmitBatchAggregateLog` writes the aggregate cost entry with the creating request's identity and a `bifrost/<version>` user agent, `calculateBatchAggregateCost` reprices `Model="mixed"` rows per model breakdown during cost recalculation (foreground and background, via the shared `persistRecalcOutcomes`), and `batch_debug` is included in list queries; `Init` takes a `batchStore` (nil disables batch accounting) (thanks [@SahilChoudhary22](https://github.com/SahilChoudhary22)!) (#5296, #6121, #6474, #6505)
- feat: input/output/additional cost split persisted on every log and surfaced as `cost_breakdown` in the log detail API, with cached-read, reasoning, guardrail, MCP and semantic cache detail; fallback billing paths, speech, transcription and OCR usages populate the split, and legacy total-only rows are attributed to input cost (#6511)
- feat: Bifrost overhead latency: `upstream_latency` and `overhead_latency` forwarded from `PostLLMHook` and backfilled from the root span's authoritative attributes in `Inject`, stamped only on the terminal entry per trace; `computeOverheadBreakdown` walks the span tree, computes self-time per span, groups overhead-side spans into buckets (serialization, middleware, plugins, queue wait, key selection, convertor, networking, client delivery, scheduling, worker hand-off, provider-internal) and persists them to `overhead_breakdown`, with streaming traces folding parse, convert, backpressure, transport CPU and client-write time into their own buckets and using the measured sum as overhead; `ConsumesOverheadSpans` returns true so the plugin keeps receiving breakdown spans that other connectors no longer see (#5533, #6388, #6389, #6433, #6470, #6495)
- feat: `service_tier` from streamed Anthropic responses flows through `convertToProcessedStreamResponse` into the log entry so repricing uses the served tier (#6236)
- feat: video edit requests are logged with their input (#6270)
- perf: identity and governance context reads are deferred past the non-final-chunk gate in `PostLLMHook`, and JSON encoding in HTTP helpers uses sonic (#5957, #6268)
- feat: add a no-op `HTTPTransportPreAuthHook` for the new pre-authentication transport phase (#6375)
- chore: upgraded core to v1.8.0 and framework to v1.6.0

### Installation

```bash
# Update your go.mod to use the new plugin version
go get github.com/maximhq/bifrost/plugins/logging@v1.7.0
```

---
_This release was automatically created from version file: `plugins/logging/version`_