@mastra/observability 1.16.1 → 1.16.2-alpha.0
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 +9 -0
- package/dist/index.cjs +48 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +48 -11
- package/dist/index.js.map +1 -1
- package/dist/metrics/pricing-registry.d.ts.map +1 -1
- package/dist/model-tracing.d.ts.map +1 -1
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -999,6 +999,13 @@ var PricingModel = class {
|
|
|
999
999
|
// src/metrics/pricing-registry.ts
|
|
1000
1000
|
var DATA_FILE_NAME = "pricing-data.jsonl";
|
|
1001
1001
|
var BEDROCK_GEOGRAPHY_PREFIXES = /* @__PURE__ */ new Set(["global", "us", "eu", "apac", "jp", "au"]);
|
|
1002
|
+
var AI_SDK_VERCEL_GATEWAY_PROVIDER_ID = "gateway";
|
|
1003
|
+
var VERCEL_PRICING_PROVIDER_ID = "vercel";
|
|
1004
|
+
var AI_SDK_PROVIDER_NAMESPACE_ALIASES = /* @__PURE__ */ new Map([
|
|
1005
|
+
["google.vertex", "google-vertex"],
|
|
1006
|
+
["vertex.anthropic", "google-vertex-anthropic"],
|
|
1007
|
+
["vertex.maas", "google-vertex"]
|
|
1008
|
+
]);
|
|
1002
1009
|
var MINIFIED_METER_TO_CANONICAL = {
|
|
1003
1010
|
it: "input_tokens",
|
|
1004
1011
|
ot: "output_tokens",
|
|
@@ -1033,11 +1040,13 @@ var PricingRegistry = class _PricingRegistry {
|
|
|
1033
1040
|
return _PricingRegistry.globalRegistry;
|
|
1034
1041
|
}
|
|
1035
1042
|
get(args) {
|
|
1036
|
-
const
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1043
|
+
for (const provider of getPricingProviderCandidates(args.provider, args.model)) {
|
|
1044
|
+
const variants = getModelVariants(args.model, provider);
|
|
1045
|
+
for (const variant of variants) {
|
|
1046
|
+
const key = makePricingKey({ provider, model: variant });
|
|
1047
|
+
const match = this.pricingModels.get(key);
|
|
1048
|
+
if (match) return match;
|
|
1049
|
+
}
|
|
1041
1050
|
}
|
|
1042
1051
|
return null;
|
|
1043
1052
|
}
|
|
@@ -1117,15 +1126,41 @@ function getPackageRoot() {
|
|
|
1117
1126
|
}
|
|
1118
1127
|
}
|
|
1119
1128
|
function makePricingKey(args) {
|
|
1120
|
-
return `${
|
|
1129
|
+
return `${normalizeKeyPart(args.provider)}::${normalizeKeyPart(args.model)}`;
|
|
1121
1130
|
}
|
|
1122
1131
|
function normalizeKeyPart(value) {
|
|
1123
1132
|
return value.trim().toLowerCase();
|
|
1124
1133
|
}
|
|
1125
|
-
function
|
|
1126
|
-
const
|
|
1127
|
-
const
|
|
1128
|
-
return
|
|
1134
|
+
function getPricingProviderCandidates(provider, model) {
|
|
1135
|
+
const normalizedProvider = normalizeKeyPart(provider);
|
|
1136
|
+
const providerCandidates = getNamespacedProviderCandidates(normalizedProvider) ?? getBaseProviderCandidates(normalizedProvider, model);
|
|
1137
|
+
return [.../* @__PURE__ */ new Set([normalizedProvider, ...providerCandidates])];
|
|
1138
|
+
}
|
|
1139
|
+
function getNamespacedProviderCandidates(provider) {
|
|
1140
|
+
for (const [providerNamespace, pricingProvider] of AI_SDK_PROVIDER_NAMESPACE_ALIASES) {
|
|
1141
|
+
if (matchesProviderNamespace(provider, providerNamespace)) {
|
|
1142
|
+
return [providerNamespace, pricingProvider];
|
|
1143
|
+
}
|
|
1144
|
+
}
|
|
1145
|
+
return null;
|
|
1146
|
+
}
|
|
1147
|
+
function matchesProviderNamespace(provider, providerNamespace) {
|
|
1148
|
+
return provider === providerNamespace || provider.startsWith(`${providerNamespace}.`);
|
|
1149
|
+
}
|
|
1150
|
+
function getBaseProviderCandidates(provider, model) {
|
|
1151
|
+
const baseProvider = getBaseProvider(provider);
|
|
1152
|
+
return isVercelGatewayModel(baseProvider, model) ? [baseProvider, VERCEL_PRICING_PROVIDER_ID] : [baseProvider];
|
|
1153
|
+
}
|
|
1154
|
+
function getBaseProvider(provider) {
|
|
1155
|
+
const capabilitySeparator = provider.indexOf(".");
|
|
1156
|
+
return capabilitySeparator === -1 ? provider : provider.substring(0, capabilitySeparator);
|
|
1157
|
+
}
|
|
1158
|
+
function isVercelGatewayModel(provider, model) {
|
|
1159
|
+
return provider === AI_SDK_VERCEL_GATEWAY_PROVIDER_ID && hasCreatorModelIdShape(model);
|
|
1160
|
+
}
|
|
1161
|
+
function hasCreatorModelIdShape(model) {
|
|
1162
|
+
const segments = model.split("/");
|
|
1163
|
+
return segments.length === 2 && segments.every((segment) => segment.trim().length > 0);
|
|
1129
1164
|
}
|
|
1130
1165
|
function getModelVariants(model, provider) {
|
|
1131
1166
|
const variants = /* @__PURE__ */ new Set();
|
|
@@ -1161,7 +1196,9 @@ function getModelVariants(model, provider) {
|
|
|
1161
1196
|
return [...variants];
|
|
1162
1197
|
}
|
|
1163
1198
|
function stripDateSuffix(model) {
|
|
1164
|
-
let stripped = model.replace(
|
|
1199
|
+
let stripped = model.replace(/@20\d{6}$/, "");
|
|
1200
|
+
if (stripped !== model) return stripped;
|
|
1201
|
+
stripped = model.replace(/-20\d{2}-\d{2}-\d{2}$/, "");
|
|
1165
1202
|
if (stripped !== model) return stripped;
|
|
1166
1203
|
stripped = model.replace(/-20\d{6}(-[a-z]+)?$/, "$1");
|
|
1167
1204
|
if (stripped !== model) return stripped;
|