autotel-devtools 28.0.0 → 28.0.2

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.
@@ -62,6 +62,43 @@ const TABLE = {
62
62
  inputPerMTok: .5,
63
63
  outputPerMTok: 1.5
64
64
  },
65
+ "anthropic/claude-fable-5-1": {
66
+ inputPerMTok: 10,
67
+ outputPerMTok: 50,
68
+ cacheReadPerMTok: .25
69
+ },
70
+ "anthropic/claude-fable-5": {
71
+ inputPerMTok: 10,
72
+ outputPerMTok: 50
73
+ },
74
+ "anthropic/claude-opus-5": {
75
+ inputPerMTok: 5,
76
+ outputPerMTok: 25
77
+ },
78
+ "anthropic/claude-opus-4-8": {
79
+ inputPerMTok: 5,
80
+ outputPerMTok: 25
81
+ },
82
+ "anthropic/claude-opus-4-7": {
83
+ inputPerMTok: 5,
84
+ outputPerMTok: 25
85
+ },
86
+ "anthropic/claude-opus-4-6": {
87
+ inputPerMTok: 5,
88
+ outputPerMTok: 25
89
+ },
90
+ "anthropic/claude-sonnet-5": {
91
+ inputPerMTok: 2,
92
+ outputPerMTok: 10
93
+ },
94
+ "anthropic/claude-sonnet-4-6": {
95
+ inputPerMTok: 3,
96
+ outputPerMTok: 15
97
+ },
98
+ "anthropic/claude-haiku-4-5": {
99
+ inputPerMTok: 1,
100
+ outputPerMTok: 5
101
+ },
65
102
  "anthropic/claude-opus-4": {
66
103
  inputPerMTok: 15,
67
104
  outputPerMTok: 75
@@ -366,16 +403,22 @@ function readToolDefinitions(attrs) {
366
403
  }));
367
404
  }
368
405
  function readUsage(attrs) {
406
+ const inputTokens = require_json_fields.asNumber(attrs["gen_ai.usage.input_tokens"]) ?? require_json_fields.asNumber(attrs["gen_ai.usage.prompt_tokens"]) ?? require_json_fields.asNumber(attrs["llm.usage.prompt_tokens"]) ?? require_json_fields.asNumber(attrs["ai.usage.inputTokens"]);
407
+ const outputTokens = require_json_fields.asNumber(attrs["gen_ai.usage.output_tokens"]) ?? require_json_fields.asNumber(attrs["gen_ai.usage.completion_tokens"]) ?? require_json_fields.asNumber(attrs["llm.usage.completion_tokens"]) ?? require_json_fields.asNumber(attrs["ai.usage.outputTokens"]);
408
+ const cacheReadInputTokens = require_json_fields.asNumber(attrs["gen_ai.usage.cache_read.input_tokens"]) ?? require_json_fields.asNumber(attrs["cache_read_tokens"]);
409
+ const cacheCreationInputTokens = require_json_fields.asNumber(attrs["gen_ai.usage.cache_write.input_tokens"]) ?? require_json_fields.asNumber(attrs["gen_ai.usage.cache_creation.input_tokens"]) ?? require_json_fields.asNumber(attrs["cache_creation_tokens"]);
410
+ const ccInput = require_json_fields.asNumber(attrs["input_tokens"]);
369
411
  return {
370
- inputTokens: require_json_fields.asNumber(attrs["gen_ai.usage.input_tokens"]) ?? require_json_fields.asNumber(attrs["gen_ai.usage.prompt_tokens"]) ?? require_json_fields.asNumber(attrs["llm.usage.prompt_tokens"]) ?? require_json_fields.asNumber(attrs["ai.usage.inputTokens"]),
371
- outputTokens: require_json_fields.asNumber(attrs["gen_ai.usage.output_tokens"]) ?? require_json_fields.asNumber(attrs["gen_ai.usage.completion_tokens"]) ?? require_json_fields.asNumber(attrs["llm.usage.completion_tokens"]) ?? require_json_fields.asNumber(attrs["ai.usage.outputTokens"]),
412
+ inputTokens: inputTokens ?? (ccInput === void 0 ? void 0 : ccInput + (cacheReadInputTokens ?? 0) + (cacheCreationInputTokens ?? 0)),
413
+ outputTokens: outputTokens ?? require_json_fields.asNumber(attrs["output_tokens"]),
372
414
  reasoningOutputTokens: require_json_fields.asNumber(attrs["gen_ai.usage.reasoning.output_tokens"]),
373
- cacheReadInputTokens: require_json_fields.asNumber(attrs["gen_ai.usage.cache_read.input_tokens"]),
374
- cacheCreationInputTokens: require_json_fields.asNumber(attrs["gen_ai.usage.cache_creation.input_tokens"])
415
+ cacheReadInputTokens,
416
+ cacheCreationInputTokens
375
417
  };
376
418
  }
377
419
  function readStreaming(attrs) {
378
- const timeToFirstChunkS = require_json_fields.asNumber(attrs["gen_ai.response.time_to_first_chunk"]);
420
+ const ttftMs = require_json_fields.asNumber(attrs["ttft_ms"]);
421
+ const timeToFirstChunkS = require_json_fields.asNumber(attrs["gen_ai.response.time_to_first_chunk"]) ?? (ttftMs === void 0 ? void 0 : ttftMs / 1e3);
379
422
  const timeToFinishS = require_json_fields.asNumber(attrs["gen_ai.response.time_to_finish"]);
380
423
  const outputTokensPerSecond = require_json_fields.asNumber(attrs["gen_ai.response.output_tokens_per_second"]);
381
424
  const timePerOutputChunkS = require_json_fields.asNumber(attrs["gen_ai.response.time_per_output_chunk"]);
@@ -469,6 +512,7 @@ const KNOWN_TOP_LEVEL_KEYS = /* @__PURE__ */ new Set([
469
512
  "gen_ai.usage.completion_tokens",
470
513
  "gen_ai.usage.reasoning.output_tokens",
471
514
  "gen_ai.usage.cache_read.input_tokens",
515
+ "gen_ai.usage.cache_write.input_tokens",
472
516
  "gen_ai.usage.cache_creation.input_tokens",
473
517
  "gen_ai.usage.cost.usd",
474
518
  "gen_ai.response.time_to_first_chunk",
@@ -61,6 +61,43 @@ const TABLE = {
61
61
  inputPerMTok: .5,
62
62
  outputPerMTok: 1.5
63
63
  },
64
+ "anthropic/claude-fable-5-1": {
65
+ inputPerMTok: 10,
66
+ outputPerMTok: 50,
67
+ cacheReadPerMTok: .25
68
+ },
69
+ "anthropic/claude-fable-5": {
70
+ inputPerMTok: 10,
71
+ outputPerMTok: 50
72
+ },
73
+ "anthropic/claude-opus-5": {
74
+ inputPerMTok: 5,
75
+ outputPerMTok: 25
76
+ },
77
+ "anthropic/claude-opus-4-8": {
78
+ inputPerMTok: 5,
79
+ outputPerMTok: 25
80
+ },
81
+ "anthropic/claude-opus-4-7": {
82
+ inputPerMTok: 5,
83
+ outputPerMTok: 25
84
+ },
85
+ "anthropic/claude-opus-4-6": {
86
+ inputPerMTok: 5,
87
+ outputPerMTok: 25
88
+ },
89
+ "anthropic/claude-sonnet-5": {
90
+ inputPerMTok: 2,
91
+ outputPerMTok: 10
92
+ },
93
+ "anthropic/claude-sonnet-4-6": {
94
+ inputPerMTok: 3,
95
+ outputPerMTok: 15
96
+ },
97
+ "anthropic/claude-haiku-4-5": {
98
+ inputPerMTok: 1,
99
+ outputPerMTok: 5
100
+ },
64
101
  "anthropic/claude-opus-4": {
65
102
  inputPerMTok: 15,
66
103
  outputPerMTok: 75
@@ -365,16 +402,22 @@ function readToolDefinitions(attrs) {
365
402
  }));
366
403
  }
367
404
  function readUsage(attrs) {
405
+ const inputTokens = asNumber(attrs["gen_ai.usage.input_tokens"]) ?? asNumber(attrs["gen_ai.usage.prompt_tokens"]) ?? asNumber(attrs["llm.usage.prompt_tokens"]) ?? asNumber(attrs["ai.usage.inputTokens"]);
406
+ const outputTokens = asNumber(attrs["gen_ai.usage.output_tokens"]) ?? asNumber(attrs["gen_ai.usage.completion_tokens"]) ?? asNumber(attrs["llm.usage.completion_tokens"]) ?? asNumber(attrs["ai.usage.outputTokens"]);
407
+ const cacheReadInputTokens = asNumber(attrs["gen_ai.usage.cache_read.input_tokens"]) ?? asNumber(attrs["cache_read_tokens"]);
408
+ const cacheCreationInputTokens = asNumber(attrs["gen_ai.usage.cache_write.input_tokens"]) ?? asNumber(attrs["gen_ai.usage.cache_creation.input_tokens"]) ?? asNumber(attrs["cache_creation_tokens"]);
409
+ const ccInput = asNumber(attrs["input_tokens"]);
368
410
  return {
369
- inputTokens: asNumber(attrs["gen_ai.usage.input_tokens"]) ?? asNumber(attrs["gen_ai.usage.prompt_tokens"]) ?? asNumber(attrs["llm.usage.prompt_tokens"]) ?? asNumber(attrs["ai.usage.inputTokens"]),
370
- outputTokens: asNumber(attrs["gen_ai.usage.output_tokens"]) ?? asNumber(attrs["gen_ai.usage.completion_tokens"]) ?? asNumber(attrs["llm.usage.completion_tokens"]) ?? asNumber(attrs["ai.usage.outputTokens"]),
411
+ inputTokens: inputTokens ?? (ccInput === void 0 ? void 0 : ccInput + (cacheReadInputTokens ?? 0) + (cacheCreationInputTokens ?? 0)),
412
+ outputTokens: outputTokens ?? asNumber(attrs["output_tokens"]),
371
413
  reasoningOutputTokens: asNumber(attrs["gen_ai.usage.reasoning.output_tokens"]),
372
- cacheReadInputTokens: asNumber(attrs["gen_ai.usage.cache_read.input_tokens"]),
373
- cacheCreationInputTokens: asNumber(attrs["gen_ai.usage.cache_creation.input_tokens"])
414
+ cacheReadInputTokens,
415
+ cacheCreationInputTokens
374
416
  };
375
417
  }
376
418
  function readStreaming(attrs) {
377
- const timeToFirstChunkS = asNumber(attrs["gen_ai.response.time_to_first_chunk"]);
419
+ const ttftMs = asNumber(attrs["ttft_ms"]);
420
+ const timeToFirstChunkS = asNumber(attrs["gen_ai.response.time_to_first_chunk"]) ?? (ttftMs === void 0 ? void 0 : ttftMs / 1e3);
378
421
  const timeToFinishS = asNumber(attrs["gen_ai.response.time_to_finish"]);
379
422
  const outputTokensPerSecond = asNumber(attrs["gen_ai.response.output_tokens_per_second"]);
380
423
  const timePerOutputChunkS = asNumber(attrs["gen_ai.response.time_per_output_chunk"]);
@@ -468,6 +511,7 @@ const KNOWN_TOP_LEVEL_KEYS = /* @__PURE__ */ new Set([
468
511
  "gen_ai.usage.completion_tokens",
469
512
  "gen_ai.usage.reasoning.output_tokens",
470
513
  "gen_ai.usage.cache_read.input_tokens",
514
+ "gen_ai.usage.cache_write.input_tokens",
471
515
  "gen_ai.usage.cache_creation.input_tokens",
472
516
  "gen_ai.usage.cost.usd",
473
517
  "gen_ai.response.time_to_first_chunk",
@@ -1,4 +1,4 @@
1
- const require_http = require('./http-DD3SVQJp.cjs');
1
+ const require_http = require('./http-B1v_UPgL.cjs');
2
2
  let _grpc_grpc_js = require("@grpc/grpc-js");
3
3
 
4
4
  //#region src/server/grpc.ts
@@ -1,4 +1,4 @@
1
- import { c as decodeOtlpTraceRequest, o as decodeOtlpLogsRequest, s as decodeOtlpMetricsRequest } from "./http-CHt5okyc.js";
1
+ import { c as decodeOtlpTraceRequest, o as decodeOtlpLogsRequest, s as decodeOtlpMetricsRequest } from "./http-CBOtd0Yi.js";
2
2
  import { Server, ServerCredentials, status } from "@grpc/grpc-js";
3
3
 
4
4
  //#region src/server/grpc.ts
@@ -2378,8 +2378,10 @@ function parseOtlpLogs(payload) {
2378
2378
  const traceId = normalizeHexId(rec.traceId) || void 0;
2379
2379
  const spanId = normalizeHexId(rec.spanId) || void 0;
2380
2380
  const body = rec.body ? resolveOtlpValue(rec.body) : "";
2381
+ const attributes = flattenAttributes(rec.attributes);
2382
+ const digest = (0, node_crypto.createHash)("sha1").update(JSON.stringify([body, attributes])).digest("hex").slice(0, 8);
2381
2383
  logs.push({
2382
- id: `${traceId || "no-trace"}:${spanId || "no-span"}:${timestamp}:${rec.severityNumber || 0}`,
2384
+ id: `${traceId || "no-trace"}:${spanId || "no-span"}:${timestamp}:${rec.severityNumber || 0}:${digest}`,
2383
2385
  traceId,
2384
2386
  spanId,
2385
2387
  resourceName: require_resource_utils.getResourceName(resourceAttrs),
@@ -2387,7 +2389,7 @@ function parseOtlpLogs(payload) {
2387
2389
  severityNumber: rec.severityNumber,
2388
2390
  body: logBody(body),
2389
2391
  timestamp,
2390
- attributes: flattenAttributes(rec.attributes),
2392
+ attributes,
2391
2393
  resource: resourceAttrs
2392
2394
  });
2393
2395
  }
@@ -2349,8 +2349,10 @@ function parseOtlpLogs(payload) {
2349
2349
  const traceId = normalizeHexId(rec.traceId) || void 0;
2350
2350
  const spanId = normalizeHexId(rec.spanId) || void 0;
2351
2351
  const body = rec.body ? resolveOtlpValue(rec.body) : "";
2352
+ const attributes = flattenAttributes(rec.attributes);
2353
+ const digest = createHash("sha1").update(JSON.stringify([body, attributes])).digest("hex").slice(0, 8);
2352
2354
  logs.push({
2353
- id: `${traceId || "no-trace"}:${spanId || "no-span"}:${timestamp}:${rec.severityNumber || 0}`,
2355
+ id: `${traceId || "no-trace"}:${spanId || "no-span"}:${timestamp}:${rec.severityNumber || 0}:${digest}`,
2354
2356
  traceId,
2355
2357
  spanId,
2356
2358
  resourceName: getResourceName(resourceAttrs),
@@ -2358,7 +2360,7 @@ function parseOtlpLogs(payload) {
2358
2360
  severityNumber: rec.severityNumber,
2359
2361
  body: logBody(body),
2360
2362
  timestamp,
2361
- attributes: flattenAttributes(rec.attributes),
2363
+ attributes,
2362
2364
  resource: resourceAttrs
2363
2365
  });
2364
2366
  }
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_http = require('./http-DD3SVQJp.cjs');
2
+ const require_http = require('./http-B1v_UPgL.cjs');
3
3
  const require_listen = require('./listen-l09RRHht.cjs');
4
4
  const require_server_exporter = require('./server/exporter.cjs');
5
5
  const require_server_log_exporter = require('./server/log-exporter.cjs');
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { C as ErrorAggregator, g as hostHeaderIsLoopback, l as DevtoolsServer, r as resolveSourceRoot, t as attachDevtoolsRoutes } from "./http-CHt5okyc.js";
1
+ import { C as ErrorAggregator, g as hostHeaderIsLoopback, l as DevtoolsServer, r as resolveSourceRoot, t as attachDevtoolsRoutes } from "./http-CBOtd0Yi.js";
2
2
  import { t as listenLoopbackDualStack } from "./listen-D-lLgfro.js";
3
3
  import { DevtoolsSpanExporter } from "./server/exporter.js";
4
4
  import { DevtoolsLogExporter } from "./server/log-exporter.js";
@@ -1,9 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_http = require('../http-DD3SVQJp.cjs');
2
+ const require_http = require('../http-B1v_UPgL.cjs');
3
3
  const require_server_exporter = require('./exporter.cjs');
4
4
  const require_server_log_exporter = require('./log-exporter.cjs');
5
5
  const require_server_remote_exporter = require('./remote-exporter.cjs');
6
- const require_grpc = require('../grpc-DB8OLUPR.cjs');
6
+ const require_grpc = require('../grpc-CU54oyWh.cjs');
7
7
 
8
8
  exports.DEVTOOLS_IDENTITY = require_http.DEVTOOLS_IDENTITY;
9
9
  exports.DevtoolsLogExporter = require_server_log_exporter.DevtoolsLogExporter;
@@ -1,7 +1,7 @@
1
- import { C as ErrorAggregator, S as resolveTelemetryLimits, _ as isLoopbackHostname, a as probePortHolder, b as appendWithLimit, c as decodeOtlpTraceRequest, d as parseOtlpLogs, f as parseOtlpTraces, g as hostHeaderIsLoopback, h as allowSensitiveRequest, i as DEVTOOLS_IDENTITY, l as DevtoolsServer, m as SPAN_SCHEMA, n as createDevtoolsHttpServer, o as decodeOtlpLogsRequest, p as DevtoolsStore, s as decodeOtlpMetricsRequest, t as attachDevtoolsRoutes, u as isProtobufContentType, v as originIsLoopback, x as applyTelemetryLimits, y as appendManyWithLimit } from "../http-CHt5okyc.js";
1
+ import { C as ErrorAggregator, S as resolveTelemetryLimits, _ as isLoopbackHostname, a as probePortHolder, b as appendWithLimit, c as decodeOtlpTraceRequest, d as parseOtlpLogs, f as parseOtlpTraces, g as hostHeaderIsLoopback, h as allowSensitiveRequest, i as DEVTOOLS_IDENTITY, l as DevtoolsServer, m as SPAN_SCHEMA, n as createDevtoolsHttpServer, o as decodeOtlpLogsRequest, p as DevtoolsStore, s as decodeOtlpMetricsRequest, t as attachDevtoolsRoutes, u as isProtobufContentType, v as originIsLoopback, x as applyTelemetryLimits, y as appendManyWithLimit } from "../http-CBOtd0Yi.js";
2
2
  import { DevtoolsSpanExporter } from "./exporter.js";
3
3
  import { DevtoolsLogExporter } from "./log-exporter.js";
4
4
  import { DevtoolsRemoteExporter } from "./remote-exporter.js";
5
- import { t as startOtlpGrpcReceiver } from "../grpc-BhGs5AGf.js";
5
+ import { t as startOtlpGrpcReceiver } from "../grpc-D0ZTTAmW.js";
6
6
 
7
7
  export { DEVTOOLS_IDENTITY, DevtoolsLogExporter, DevtoolsRemoteExporter, DevtoolsServer, DevtoolsSpanExporter, DevtoolsStore, ErrorAggregator, SPAN_SCHEMA, allowSensitiveRequest, appendManyWithLimit, appendWithLimit, applyTelemetryLimits, attachDevtoolsRoutes, createDevtoolsHttpServer, decodeOtlpLogsRequest, decodeOtlpMetricsRequest, decodeOtlpTraceRequest, hostHeaderIsLoopback, isLoopbackHostname, isProtobufContentType, originIsLoopback, parseOtlpLogs, parseOtlpTraces, probePortHolder, resolveTelemetryLimits, startOtlpGrpcReceiver };