[0.13.1] - 2026-04-25
Added
- Synthetic provider reattribution layer (#31).
resolveProvider(model, rules?)returns a{ provider, normalizedModel, matchedRule }for Synthetic-routed model IDs — the cross-collector reattribution pattern used when a Claude Code or OpenCode session uses a model dispatched through Synthetic.new. First pass covers three prefix shapes (hf:*,accounts/fireworks/models/*,synthetic/*) and exposesDEFAULT_RULESplus aProviderRuletype so future aggregators (OpenRouter, etc.) plug in via the same scaffolding. Pricing lookup incostForTurn,attributeWaste, andattributeClaudeMd/attributeContextall consult the reattribution layer before falling back to the existingprovider/modelstrip, so a turn logged withhf:deepseek-ai/deepseek-r1resolves to thedeepseek-r1rate instead of returningnullacross summary, waste, and context views. Reattribution stays query-time only — raw model strings are never mutated in the ledger. Octofriend SQLite fallback and other aggregator prefixes are deferred to follow-up issues.