@brizz/sdk 0.1.3-rc.1 → 0.1.3

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/dist/index.js CHANGED
@@ -1429,7 +1429,7 @@ var HANDLED_SPAN_NAMES = {
1429
1429
  "ai.streamText": "ai.streamText",
1430
1430
  "ai.toolCall": (span) => {
1431
1431
  const toolName = span.attributes["ai.toolCall.name"];
1432
- return `${toolName}.tool`;
1432
+ return `${String(toolName ?? "unknown")}.tool`;
1433
1433
  }
1434
1434
  };
1435
1435
  var AI_RESPONSE_TEXT = "ai.response.text";
@@ -1439,10 +1439,11 @@ var AI_USAGE_COMPLETION_TOKENS = "ai.usage.completionTokens";
1439
1439
  var AI_MODEL_PROVIDER = "ai.model.provider";
1440
1440
  var transformAiSdkSpanName = (span) => {
1441
1441
  if (span.name in HANDLED_SPAN_NAMES) {
1442
- if (typeof HANDLED_SPAN_NAMES[span.name] === "function") {
1443
- span.name = HANDLED_SPAN_NAMES[span.name](span);
1444
- } else {
1445
- span.name = HANDLED_SPAN_NAMES[span.name];
1442
+ const handler = HANDLED_SPAN_NAMES[span.name];
1443
+ if (typeof handler === "function") {
1444
+ span.name = handler(span);
1445
+ } else if (handler) {
1446
+ span.name = handler;
1446
1447
  }
1447
1448
  }
1448
1449
  };
@@ -1457,26 +1458,30 @@ var transformPromptMessages = (attributes) => {
1457
1458
  if (AI_PROMPT_MESSAGES in attributes) {
1458
1459
  try {
1459
1460
  const messages = JSON.parse(attributes[AI_PROMPT_MESSAGES]);
1460
- messages.forEach((msg, index) => {
1461
- logger.debug("Transforming prompt message", { msg, type: typeof msg.content });
1462
- if (typeof msg.content === "string") {
1463
- attributes[`${SpanAttributes.LLM_PROMPTS}.${index}.content`] = msg.content;
1461
+ for (const [index, msg] of messages.entries()) {
1462
+ const message = msg;
1463
+ logger.debug("Transforming prompt message", { msg: message, type: typeof message.content });
1464
+ if (typeof message.content === "string") {
1465
+ attributes[`${SpanAttributes.LLM_PROMPTS}.${index}.content`] = message.content;
1464
1466
  } else {
1465
- if (Array.isArray(msg.content) && msg.content.length > 0) {
1466
- const lastContent = msg.content[msg.content.length - 1];
1467
- if (lastContent.text) {
1467
+ if (Array.isArray(message.content) && message.content.length > 0) {
1468
+ const lastContent = message.content.at(-1);
1469
+ if (lastContent?.text) {
1468
1470
  attributes[`${SpanAttributes.LLM_PROMPTS}.${index}.content`] = lastContent.text;
1469
1471
  }
1470
1472
  } else {
1471
1473
  attributes[`${SpanAttributes.LLM_PROMPTS}.${index}.content`] = JSON.stringify(
1472
- msg.content
1474
+ message.content
1473
1475
  );
1474
1476
  }
1475
1477
  }
1476
- attributes[`${SpanAttributes.LLM_PROMPTS}.${index}.role`] = msg.role;
1477
- });
1478
+ attributes[`${SpanAttributes.LLM_PROMPTS}.${index}.role`] = message.role;
1479
+ }
1478
1480
  delete attributes[AI_PROMPT_MESSAGES];
1479
- } catch {
1481
+ } catch (error) {
1482
+ logger.debug("Skipping prompt messages transformation because of JSON parsing error", {
1483
+ e: error
1484
+ });
1480
1485
  }
1481
1486
  }
1482
1487
  };
@@ -1502,11 +1507,7 @@ var calculateTotalTokens = (attributes) => {
1502
1507
  var transformVendor = (attributes) => {
1503
1508
  if (AI_MODEL_PROVIDER in attributes) {
1504
1509
  const vendor = attributes[AI_MODEL_PROVIDER];
1505
- if (vendor && vendor.startsWith("openai")) {
1506
- attributes[SpanAttributes.LLM_SYSTEM] = "OpenAI";
1507
- } else {
1508
- attributes[SpanAttributes.LLM_SYSTEM] = vendor;
1509
- }
1510
+ attributes[SpanAttributes.LLM_SYSTEM] = vendor && vendor.startsWith("openai") ? "OpenAI" : vendor;
1510
1511
  delete attributes[AI_MODEL_PROVIDER];
1511
1512
  }
1512
1513
  };
@@ -1522,6 +1523,10 @@ var shouldHandleSpan = (span) => {
1522
1523
  return span.name in HANDLED_SPAN_NAMES;
1523
1524
  };
1524
1525
  var transformAiSdkSpan = (span) => {
1526
+ if (!shouldHandleSpan(span)) {
1527
+ logger.debug("Skipping span transformation", { spanName: span.name });
1528
+ return;
1529
+ }
1525
1530
  for (const key in span.attributes) {
1526
1531
  if (Number.isNaN(span.attributes[key])) {
1527
1532
  span.attributes[key] = 0;
@@ -1532,10 +1537,6 @@ var transformAiSdkSpan = (span) => {
1532
1537
  spanContext: span.spanContext(),
1533
1538
  attributes: span.attributes
1534
1539
  });
1535
- if (!shouldHandleSpan(span)) {
1536
- logger.debug("Skipping span transformation", { spanName: span.name });
1537
- return;
1538
- }
1539
1540
  transformAiSdkSpanName(span);
1540
1541
  transformAiSdkAttributes(span.attributes);
1541
1542
  };