@shpitdev/convex-cliproxy-observability 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.1
4
+
5
+ - `fromOpenRouterSpan` adds a BYOK call's `byokInferenceUsageCost` to OpenRouter's charge, so `cost.total` is the call's inference cost instead of OpenRouter's fee alone. A BYOK span without that cost now has `cost.kind: "unknown"`. The structural `OpenRouterSpanInput` accepts `isByok` and `byokInferenceUsageCost`.
6
+ - Native plugin/exporter source, native reported version (0.2.0), capture schema and ABI are unchanged. Updating the npm package does not require a native host upgrade.
7
+
3
8
  ## 0.3.0
4
9
 
5
10
  - `ModelCallV1` contract change: native CLIProxy calls now carry a derived `providerName`, which was always absent for them before. New optional fields are `providerProvenance` (`observed`, `derived_from_wire_format`, `derived_from_model` or `unavailable`), `costProvenance` (mirrors `cost.kind`) and `cacheCreationInputTokens`. Anthropic Messages `inputTokens` now counts an absent cache read or write as 0 instead of leaving input unknown, and usage measurements name `client_protocol_usage_v2`. Code that constructs `ModelCallV1` needs no new fields.
package/README.md CHANGED
@@ -54,7 +54,7 @@ Token fields use the OpenRouter names and unit (tokens per call): `inputTokens`,
54
54
 
55
55
  Every reported native count also stays in `usage` as a `UsageMeasurement` with its `nativeField`, `finality` and `semanticsVersion: "client_protocol_usage_v2"`.
56
56
 
57
- Cost is never estimated. Native calls keep `cost: { kind: "unknown" }` with `costProvenance: "unknown"`, because CLIProxy's client protocols report no price. `fromOpenRouterSpan` keeps OpenRouter's charge as a `proxy_reported` USD cost.
57
+ Cost is never estimated. Native calls keep `cost: { kind: "unknown" }` with `costProvenance: "unknown"`, because CLIProxy's client protocols report no price. `fromOpenRouterSpan` keeps OpenRouter's charge as a `proxy_reported` USD cost. On a BYOK call that charge is only OpenRouter's fee, so the adapter adds `byokInferenceUsageCost`, the inference billed to the caller's own provider key; a BYOK span without it has an `unknown` cost.
58
58
 
59
59
  `providerProvenance` and `costProvenance` are optional in `ModelCallV1`. Summaries projected by 0.3.0 or later store them. For older summaries, `getCall` and `pageRecentSummaries` derive them from the facts those summaries recorded. The same reads apply the current token rule to an older summary's final native counts, which adds `cacheCreationInputTokens` and counts absent Messages cache counts as 0. Stored rows are not rewritten.
60
60
 
@@ -65,7 +65,7 @@ Projected summaries of the real recordings measure 1,783 to 2,934 bytes. A strea
65
65
  - The OpenRouter component stores costs as bare numbers with no currency; `fromOpenRouterSpan` labels them USD. CLIProxy records no cost.
66
66
  - Provenance exists only in `ModelCallV1`. The OpenRouter component's own summaries carry neither provider nor cost provenance.
67
67
  - OpenRouter's `providerName` is the upstream it routed to, as OpenRouter names it (for example `OpenAI`). CLIProxy's is a lowercase API family or model-name guess. It is not authoritative until the native plugin records the selected auth's provider.
68
- - The OpenRouter recordings here carry no cache-write count, so `cacheCreationInputTokens` stays unset for OpenRouter calls. The structural `OpenRouterSpanInput` accepts it if a host supplies one.
68
+ - OpenRouter component summaries from 0.4.2 carry `cacheCreationInputTokens`, `isByok`, and `byokInferenceUsageCost`; the structural `OpenRouterSpanInput` accepts all three. Older summaries lack them, so their cache writes stay unset and a BYOK call's cost is its fee alone.
69
69
  - OpenRouter summaries expose input, output and total tokens; its cached and reasoning counts are only on full spans (`exportFullSpan`).
70
70
 
71
71
  ## Parser provenance
@@ -135,6 +135,9 @@ export type OpenRouterSpanInput = {
135
135
  receivedAt: number;
136
136
  totalCost?: number;
137
137
  openrouterUsageCost?: number;
138
+ isByok?: boolean;
139
+ /** What a BYOK call's inference cost on the caller's own provider key, as OpenRouter reports it. */
140
+ byokInferenceUsageCost?: number;
138
141
  traceId?: string;
139
142
  spanId?: string;
140
143
  parentSpanId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model-call/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model-call/index.ts"],"names":[],"mappings":"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"}
@@ -74,9 +74,13 @@ export function fromOpenRouterSpan(span) {
74
74
  semanticsVersion: "stored_openrouter_span_v1",
75
75
  });
76
76
  }
77
+ const isCost = (value) => typeof value === "number" && Number.isFinite(value) && value >= 0;
77
78
  const reported = span.totalCost ?? span.openrouterUsageCost;
78
- const cost = typeof reported === "number" && Number.isFinite(reported) && reported >= 0
79
- ? { kind: "proxy_reported", currency: "USD", total: String(reported) }
79
+ // A BYOK charge is only OpenRouter's fee: the provider bills the inference to the caller's own
80
+ // key. Without that inference cost the call's cost is unknown, not the fee alone.
81
+ const inference = span.isByok === true ? span.byokInferenceUsageCost : 0;
82
+ const cost = isCost(reported) && isCost(inference)
83
+ ? { kind: "proxy_reported", currency: "USD", total: String(reported + inference) }
80
84
  : { kind: "unknown" };
81
85
  return {
82
86
  schemaVersion: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model-call/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model-call/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@shpitdev/convex-cliproxy-observability",
3
3
  "description": "Private stock CLIProxy capture, protocol projections, and bounded model-call reads.",
4
- "version": "0.3.0",
4
+ "version": "0.3.1",
5
5
  "author": "Anand Pant",
6
6
  "license": "Apache-2.0",
7
7
  "repository": "github:anandpant/convex-components",
@@ -190,6 +190,9 @@ export type OpenRouterSpanInput = {
190
190
  receivedAt: number;
191
191
  totalCost?: number;
192
192
  openrouterUsageCost?: number;
193
+ isByok?: boolean;
194
+ /** What a BYOK call's inference cost on the caller's own provider key, as OpenRouter reports it. */
195
+ byokInferenceUsageCost?: number;
193
196
  traceId?: string;
194
197
  spanId?: string;
195
198
  parentSpanId?: string;
@@ -242,10 +245,15 @@ export function fromOpenRouterSpan(span: OpenRouterSpanInput): ModelCallV1 {
242
245
  semanticsVersion: "stored_openrouter_span_v1",
243
246
  });
244
247
  }
248
+ const isCost = (value: unknown): value is number =>
249
+ typeof value === "number" && Number.isFinite(value) && value >= 0;
245
250
  const reported = span.totalCost ?? span.openrouterUsageCost;
251
+ // A BYOK charge is only OpenRouter's fee: the provider bills the inference to the caller's own
252
+ // key. Without that inference cost the call's cost is unknown, not the fee alone.
253
+ const inference = span.isByok === true ? span.byokInferenceUsageCost : 0;
246
254
  const cost: ModelCallCost =
247
- typeof reported === "number" && Number.isFinite(reported) && reported >= 0
248
- ? { kind: "proxy_reported", currency: "USD", total: String(reported) }
255
+ isCost(reported) && isCost(inference)
256
+ ? { kind: "proxy_reported", currency: "USD", total: String(reported + inference) }
249
257
  : { kind: "unknown" };
250
258
  return {
251
259
  schemaVersion: 1,