@mastra/observability 1.14.1-alpha.0 → 1.14.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 +26 -0
- package/dist/index.cjs +42 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +42 -11
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# @mastra/observability
|
|
2
2
|
|
|
3
|
+
## 1.14.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Added documentation explaining how to query and retrieve metric data from Mastra's observability store. Developers can now learn how to aggregate metrics, break them down by labels, visualize time series, and calculate percentiles using the in-process store API, HTTP endpoints, or CLI commands. ([#17178](https://github.com/mastra-ai/mastra/pull/17178))
|
|
8
|
+
|
|
9
|
+
- Fix null `estimatedCost` for OpenRouter models whose id carries a vendor prefix and a dotted version (e.g. `google/gemini-2.5-flash`). These previously failed to match the pricing data (`gemini-2-5-flash`), leaving cost unreported in Studio's "Total Model Cost". Cost is now estimated correctly for these routes. ([#17140](https://github.com/mastra-ai/mastra/pull/17140))
|
|
10
|
+
|
|
11
|
+
- Added support for costs supplied by external SDK agent integrations. ([#16906](https://github.com/mastra-ai/mastra/pull/16906))
|
|
12
|
+
|
|
13
|
+
When an SDK agent records an estimated cost on its model generation span, observability now carries that cost onto the auto-extracted model token metric. This lets storage-backed metric queries and dashboards display costs reported by external agent SDKs, even when Mastra cannot calculate the cost from its own pricing registry.
|
|
14
|
+
|
|
15
|
+
- Updated dependencies [[`fa63872`](https://github.com/mastra-ai/mastra/commit/fa6387280954e6b667bec5714b55ba082bc627ff), [`d779de3`](https://github.com/mastra-ai/mastra/commit/d779de3cd9d2e7ed8110547190e2f15e786a0e41), [`1750c97`](https://github.com/mastra-ai/mastra/commit/1750c975d6179fbf6db2813b15229d4f8f23fc55), [`9283971`](https://github.com/mastra-ai/mastra/commit/928397157009b4aef4d5fdf3a0a273cb371beb55), [`f07b646`](https://github.com/mastra-ai/mastra/commit/f07b64604ab7d25391179790b7fd4823df9e2dff), [`d8838ae`](https://github.com/mastra-ai/mastra/commit/d8838ae80b69780361693d27098f7f6684af12fe), [`40f9297`](https://github.com/mastra-ai/mastra/commit/40f9297003b921c62373d3e8d3a4bda76c9f6de3), [`19a8658`](https://github.com/mastra-ai/mastra/commit/19a86589c788ef48bb6c1b0612cc82a201857379), [`850af77`](https://github.com/mastra-ai/mastra/commit/850af7779cb87c350804488734544a5b1843de25), [`0f0d1ba`](https://github.com/mastra-ai/mastra/commit/0f0d1ba67bfcb2204e571401662f1eceefc03357), [`a18775a`](https://github.com/mastra-ai/mastra/commit/a18775a693172546ee2378d39b67d4e32895b251), [`1baf2d1`](https://github.com/mastra-ai/mastra/commit/1baf2d152c6881338ff8f114633d5316fe13dd15), [`8c31bcd`](https://github.com/mastra-ai/mastra/commit/8c31bcdb00e597880d5939b1b7d7566fbe5dacae), [`0e32507`](https://github.com/mastra-ai/mastra/commit/0e32507962cdfa5569b7bda5bc6fb3dd34e40b03), [`95b14cd`](https://github.com/mastra-ai/mastra/commit/95b14cdd820e86d97ac05fe568424c513a252e31), [`07c3de7`](https://github.com/mastra-ai/mastra/commit/07c3de7f7bc418beccaea3b5e6b7f7cdda79d492), [`0bf2d93`](https://github.com/mastra-ai/mastra/commit/0bf2d932d20e2936f2d9abb8c0a86e24fbc97ec6), [`7b0d34c`](https://github.com/mastra-ai/mastra/commit/7b0d34cfe4a2fce22ac86ae17404685ff67a2ddb), [`a659a77`](https://github.com/mastra-ai/mastra/commit/a659a779bdebe3a52a518c56d2260592d0240fe0), [`aa36be2`](https://github.com/mastra-ai/mastra/commit/aa36be23aa513b7dc53cb8ca16b7fab8f20e43ad), [`3332be9`](https://github.com/mastra-ai/mastra/commit/3332be9701ecd77aba840959d9a1d1ce7aef02d3), [`212c635`](https://github.com/mastra-ai/mastra/commit/212c635203e61d036ab41db8ff86c3893dc795b3), [`d8838ae`](https://github.com/mastra-ai/mastra/commit/d8838ae80b69780361693d27098f7f6684af12fe), [`9aa5a73`](https://github.com/mastra-ai/mastra/commit/9aa5a73e7e110f6e9365eec69364a33d5f03bb56), [`f73c789`](https://github.com/mastra-ai/mastra/commit/f73c789e8ef21561580395d2c410119cab5848c8), [`8bd16da`](https://github.com/mastra-ai/mastra/commit/8bd16da73a4cb874d739373643dbd6a6e7f88684), [`c8630f8`](https://github.com/mastra-ai/mastra/commit/c8630f80d4f40cb5d22e60ab162b618b1907167a), [`94dfef6`](https://github.com/mastra-ai/mastra/commit/94dfef6e2bf19a88467ea3940afcbce88a433f0f), [`47f71dc`](https://github.com/mastra-ai/mastra/commit/47f71dc6fbcbd12d71e21a979e676e20a02bd77d), [`50ceae2`](https://github.com/mastra-ai/mastra/commit/50ceae270878e2f8fb2b2c6c2faab09df0007c8a), [`a122f79`](https://github.com/mastra-ai/mastra/commit/a122f79427ae225ec79c7b2ed46278da48d04b17), [`8cdde58`](https://github.com/mastra-ai/mastra/commit/8cdde5875bbba6702d9df226f2b20232b8d75d6c), [`3a081c1`](https://github.com/mastra-ai/mastra/commit/3a081c1255c5ae8c99f6dad91cc612934ef6f2bd), [`49f8abc`](https://github.com/mastra-ai/mastra/commit/49f8abce8258e4f2f87bd326acfbdb641264a47c), [`847ff1e`](https://github.com/mastra-ai/mastra/commit/847ff1e0d94368d94b2e173e4e0908e115568ef3), [`0c1ed1d`](https://github.com/mastra-ai/mastra/commit/0c1ed1d00c7d87b5ac99ca95896211a2fa9189fa), [`259d409`](https://github.com/mastra-ai/mastra/commit/259d409a514174299dbde1ff5e1121209b3ba850), [`9e16c68`](https://github.com/mastra-ai/mastra/commit/9e16c6818b6485ccb43df28aba6f3a2219d28662), [`cefca33`](https://github.com/mastra-ai/mastra/commit/cefca33ae666e69810c935fedf95a929c173d1d7), [`d00e8c5`](https://github.com/mastra-ai/mastra/commit/d00e8c50daebe5bce5bf2f48bde39c86fc3d2fe4), [`36fa7e2`](https://github.com/mastra-ai/mastra/commit/36fa7e24d14e58a1eb46147097b32f583e5b8775), [`87e9774`](https://github.com/mastra-ai/mastra/commit/87e97741c1e493cd6d62f478eb810b49bda4d57c), [`65a72e7`](https://github.com/mastra-ai/mastra/commit/65a72e70c25eedea8ff985a6624b96be2850236b), [`fe9eacd`](https://github.com/mastra-ai/mastra/commit/fe9eacd9545a0a9d64aad31c9fa90294a425289e), [`4c02027`](https://github.com/mastra-ai/mastra/commit/4c020277235eaa6b1dc957c90ad0639eef213992), [`0f77241`](https://github.com/mastra-ai/mastra/commit/0f7724108806703799a8ba80ad0f09414afd5066), [`849efb9`](https://github.com/mastra-ai/mastra/commit/849efb9fca6dc976589c1f90a303fea618769109), [`92ff509`](https://github.com/mastra-ai/mastra/commit/92ff5098ef8a990438ca038077021a5f7541ec1d), [`3fce5e7`](https://github.com/mastra-ai/mastra/commit/3fce5e70d011d289043e75003ef3336ed4aa43c3), [`a763592`](https://github.com/mastra-ai/mastra/commit/a763592c3db46963ef1011cfe16fe372816e775e), [`db79c86`](https://github.com/mastra-ai/mastra/commit/db79c86c60723d57e02f9636ca2611bd4515f194), [`6855012`](https://github.com/mastra-ai/mastra/commit/685501247cc4717506f3e89beed03509d63a5370), [`80c7737`](https://github.com/mastra-ai/mastra/commit/80c7737e32d7917b5f356957d67c169d01744fd3), [`7fef31c`](https://github.com/mastra-ai/mastra/commit/7fef31c0d2a6d362a43a647a8a4f6ab893758a23), [`7fef31c`](https://github.com/mastra-ai/mastra/commit/7fef31c0d2a6d362a43a647a8a4f6ab893758a23), [`3f1cf47`](https://github.com/mastra-ai/mastra/commit/3f1cf476f74c1e4cc2df908837e05853a5347e31)]:
|
|
16
|
+
- @mastra/core@1.38.0
|
|
17
|
+
|
|
18
|
+
## 1.14.1-alpha.1
|
|
19
|
+
|
|
20
|
+
### Patch Changes
|
|
21
|
+
|
|
22
|
+
- Added support for costs supplied by external SDK agent integrations. ([#16906](https://github.com/mastra-ai/mastra/pull/16906))
|
|
23
|
+
|
|
24
|
+
When an SDK agent records an estimated cost on its model generation span, observability now carries that cost onto the auto-extracted model token metric. This lets storage-backed metric queries and dashboards display costs reported by external agent SDKs, even when Mastra cannot calculate the cost from its own pricing registry.
|
|
25
|
+
|
|
26
|
+
- Updated dependencies:
|
|
27
|
+
- @mastra/core@1.38.0-alpha.7
|
|
28
|
+
|
|
3
29
|
## 1.14.1-alpha.0
|
|
4
30
|
|
|
5
31
|
### Patch Changes
|
package/dist/index.cjs
CHANGED
|
@@ -1438,18 +1438,23 @@ function emitAutoExtractedMetrics(span, metrics) {
|
|
|
1438
1438
|
}
|
|
1439
1439
|
function emitUsageMetrics(attrs, usage, metrics) {
|
|
1440
1440
|
let metricCosts = /* @__PURE__ */ new Map();
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1441
|
+
const providedCostContext = getProvidedCostContext(attrs, usage);
|
|
1442
|
+
if (providedCostContext) {
|
|
1443
|
+
metricCosts = providedCostContext;
|
|
1444
|
+
} else {
|
|
1445
|
+
try {
|
|
1446
|
+
const provider = attrs.provider;
|
|
1447
|
+
const model = attrs.responseModel ?? attrs.model;
|
|
1448
|
+
if (provider && model) {
|
|
1449
|
+
metricCosts = estimateCosts({
|
|
1450
|
+
provider,
|
|
1451
|
+
model,
|
|
1452
|
+
usage
|
|
1453
|
+
});
|
|
1454
|
+
}
|
|
1455
|
+
} catch {
|
|
1456
|
+
metricCosts = /* @__PURE__ */ new Map();
|
|
1450
1457
|
}
|
|
1451
|
-
} catch {
|
|
1452
|
-
metricCosts = /* @__PURE__ */ new Map();
|
|
1453
1458
|
}
|
|
1454
1459
|
const emit = (name, value) => {
|
|
1455
1460
|
const costContext = metricCosts.get(name);
|
|
@@ -1463,6 +1468,32 @@ function emitUsageMetrics(attrs, usage, metrics) {
|
|
|
1463
1468
|
emit(sample.name, sample.value);
|
|
1464
1469
|
}
|
|
1465
1470
|
}
|
|
1471
|
+
function getProvidedCostContext(attrs, usage) {
|
|
1472
|
+
const costContext = attrs.costContext;
|
|
1473
|
+
if (typeof costContext?.estimatedCost !== "number") {
|
|
1474
|
+
return void 0;
|
|
1475
|
+
}
|
|
1476
|
+
const carrierMetric = usage.inputTokens !== void 0 ? TokenMetrics.TOTAL_INPUT : TokenMetrics.TOTAL_OUTPUT;
|
|
1477
|
+
const provider = costContext.provider ?? attrs.provider;
|
|
1478
|
+
const model = costContext.model ?? attrs.responseModel ?? attrs.model;
|
|
1479
|
+
const contexts = /* @__PURE__ */ new Map();
|
|
1480
|
+
for (const sample of getTokenMetricSamples(usage)) {
|
|
1481
|
+
contexts.set(sample.name, {
|
|
1482
|
+
provider,
|
|
1483
|
+
model
|
|
1484
|
+
});
|
|
1485
|
+
}
|
|
1486
|
+
contexts.set(carrierMetric, {
|
|
1487
|
+
...costContext,
|
|
1488
|
+
provider,
|
|
1489
|
+
model,
|
|
1490
|
+
costMetadata: {
|
|
1491
|
+
...costContext.costMetadata,
|
|
1492
|
+
allocation: "query_total"
|
|
1493
|
+
}
|
|
1494
|
+
});
|
|
1495
|
+
return contexts;
|
|
1496
|
+
}
|
|
1466
1497
|
function getDurationMetricName(span) {
|
|
1467
1498
|
switch (span.type) {
|
|
1468
1499
|
case observability.SpanType.AGENT_RUN:
|