3 months ago
33e99d1GithubHttp gains an onCall metering hook (one text read serves both byte count and parse; a throwing hook can never break a forge call). The OpenRouter fetch is wrapped to size request bodies. An AsyncLocalStorage counter scopes both per run, so concurrent runs never bleed. runWorkflows runs inside that scope and writes one usage_counters row at completion (gated on meterSource, best-effort), activeMs summed from step durations.
Parent97302e9