axiom 0.48.1 → 0.49.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.
Files changed (96) hide show
  1. package/dist/bin.js +5 -5
  2. package/dist/{chunk-P4YKSKIZ.js → chunk-3MMFYPFN.js} +89 -42
  3. package/dist/chunk-3MMFYPFN.js.map +1 -0
  4. package/dist/{chunk-3KVDJV5T.js → chunk-4S2HLGZW.js} +3 -3
  5. package/dist/{chunk-CG7FZS34.js → chunk-JX4IMYH5.js} +7 -7
  6. package/dist/{chunk-TMXR3FKM.js → chunk-MOSVZZAN.js} +2 -2
  7. package/dist/{chunk-WOJCPKV5.js → chunk-WO6AVN5J.js} +8 -2
  8. package/dist/{chunk-WOJCPKV5.js.map → chunk-WO6AVN5J.js.map} +1 -1
  9. package/dist/docs/README.md +2 -2
  10. package/dist/docs/config/README.md +1 -1
  11. package/dist/docs/config/functions/defineConfig.md +1 -1
  12. package/dist/docs/config/interfaces/AxiomConfig.md +1 -1
  13. package/dist/docs/config/type-aliases/AxiomEvalInstrumentationHook.md +1 -1
  14. package/dist/docs/evals/README.md +1 -1
  15. package/dist/docs/evals/classes/AxiomReporter.md +1 -1
  16. package/dist/docs/evals/functions/Eval.md +2 -2
  17. package/dist/docs/evals/interfaces/EvalBuilder.md +1 -1
  18. package/dist/docs/evals/interfaces/EvalContextData.md +1 -1
  19. package/dist/docs/evals/online/README.md +1 -1
  20. package/dist/docs/evals/online/functions/onlineEval.md +1 -1
  21. package/dist/docs/evals/online/type-aliases/OnlineEvalParams.md +1 -1
  22. package/dist/docs/evals/online/type-aliases/OnlineEvalScorerEntry.md +1 -1
  23. package/dist/docs/evals/online/type-aliases/OnlineEvalScorerInput.md +1 -1
  24. package/dist/docs/evals/online/type-aliases/SampledOnlineEvalScorer.md +1 -1
  25. package/dist/docs/evals/online/type-aliases/ScorerSampling.md +1 -1
  26. package/dist/docs/evals/type-aliases/Case.md +1 -1
  27. package/dist/docs/evals/type-aliases/Chat.md +1 -1
  28. package/dist/docs/evals/type-aliases/EvalParams.md +1 -1
  29. package/dist/docs/evals/type-aliases/EvalTask.md +1 -1
  30. package/dist/docs/evals/type-aliases/Evaluation.md +1 -1
  31. package/dist/docs/evals/type-aliases/Task.md +1 -1
  32. package/dist/docs/feedback/README.md +1 -1
  33. package/dist/docs/feedback/functions/createFeedbackClient.md +1 -1
  34. package/dist/docs/feedback/type-aliases/FeedbackClient.md +1 -1
  35. package/dist/docs/feedback/type-aliases/FeedbackConfig.md +1 -1
  36. package/dist/docs/feedback/type-aliases/FeedbackErrorContext.md +1 -1
  37. package/dist/docs/feedback/type-aliases/FeedbackEvent.md +1 -1
  38. package/dist/docs/feedback/type-aliases/FeedbackInput.md +1 -1
  39. package/dist/docs/feedback/type-aliases/FeedbackLinks.md +1 -1
  40. package/dist/docs/feedback/type-aliases/FeedbackSettings.md +1 -1
  41. package/dist/docs/feedback/type-aliases/SendFeedbackFn.md +1 -1
  42. package/dist/docs/feedback/variables/Feedback.md +1 -1
  43. package/dist/docs/index/README.md +1 -1
  44. package/dist/docs/index/functions/axiomAIMiddleware.md +1 -1
  45. package/dist/docs/index/functions/axiomAIMiddlewareV1.md +1 -1
  46. package/dist/docs/index/functions/axiomAIMiddlewareV2.md +1 -1
  47. package/dist/docs/index/functions/axiomAIMiddlewareV3.md +1 -1
  48. package/dist/docs/index/functions/createAppScope.md +1 -1
  49. package/dist/docs/index/functions/experimental_parse.md +1 -1
  50. package/dist/docs/index/functions/getGlobalTracer.md +1 -1
  51. package/dist/docs/index/functions/initAxiomAI.md +1 -1
  52. package/dist/docs/index/functions/resetAxiomAI.md +1 -1
  53. package/dist/docs/index/functions/withSpan.md +1 -1
  54. package/dist/docs/index/functions/wrapAISDKModel.md +1 -1
  55. package/dist/docs/index/functions/wrapTool.md +1 -1
  56. package/dist/docs/index/functions/wrapTools.md +1 -1
  57. package/dist/docs/index/interfaces/AxiomTelemetryConfig.md +1 -1
  58. package/dist/docs/index/interfaces/experimental_AxiomPromptMetadata.md +1 -1
  59. package/dist/docs/index/interfaces/experimental_ParsedMessage.md +1 -1
  60. package/dist/docs/index/type-aliases/AxiomAIRedactionPolicy.md +1 -1
  61. package/dist/docs/index/type-aliases/WithSpanOptions.md +1 -1
  62. package/dist/docs/index/type-aliases/experimental_InferContext.md +1 -1
  63. package/dist/docs/index/type-aliases/experimental_InferSchema.md +1 -1
  64. package/dist/docs/index/type-aliases/experimental_ParsedMessagesArray.md +1 -1
  65. package/dist/docs/index/type-aliases/experimental_Prompt.md +1 -1
  66. package/dist/docs/index/type-aliases/experimental_TSchema.md +1 -1
  67. package/dist/docs/index/variables/RedactionPolicy.md +1 -1
  68. package/dist/docs/index/variables/experimental_Type.md +1 -1
  69. package/dist/docs/index/variables/onlineEval.md +1 -1
  70. package/dist/docs/scorers/aggregations/README.md +1 -1
  71. package/dist/docs/scorers/aggregations/functions/Mean.md +1 -1
  72. package/dist/docs/scorers/aggregations/functions/Median.md +1 -1
  73. package/dist/docs/scorers/aggregations/functions/PassAtK.md +1 -1
  74. package/dist/docs/scorers/aggregations/functions/PassHatK.md +1 -1
  75. package/dist/docs/scorers/aggregations/type-aliases/Aggregation.md +1 -1
  76. package/dist/docs/scorers/aggregations/variables/AllTrialsPass.md +1 -1
  77. package/dist/docs/scorers/aggregations/variables/AtLeastOneTrialPasses.md +1 -1
  78. package/dist/docs/scorers/scorers/README.md +1 -1
  79. package/dist/docs/scorers/scorers/functions/Scorer.md +1 -1
  80. package/dist/docs/scorers/scorers/type-aliases/Score.md +1 -1
  81. package/dist/docs/scorers/scorers/type-aliases/ScoreWithName.md +1 -1
  82. package/dist/docs/scorers/scorers/type-aliases/ScorerLike.md +1 -1
  83. package/dist/docs/scorers/scorers/type-aliases/ScorerOptions.md +1 -1
  84. package/dist/docs/scorers/scorers/type-aliases/ScorerType.md +1 -1
  85. package/dist/evals/online.js +2 -2
  86. package/dist/evals.d.ts +2 -1
  87. package/dist/evals.js +4 -4
  88. package/dist/evals.js.map +1 -1
  89. package/dist/index.js +3 -3
  90. package/dist/{run-vitest-TESZNJA7.js → run-vitest-QMZWFYSW.js} +5 -5
  91. package/package.json +7 -1
  92. package/dist/chunk-P4YKSKIZ.js.map +0 -1
  93. /package/dist/{chunk-3KVDJV5T.js.map → chunk-4S2HLGZW.js.map} +0 -0
  94. /package/dist/{chunk-CG7FZS34.js.map → chunk-JX4IMYH5.js.map} +0 -0
  95. /package/dist/{chunk-TMXR3FKM.js.map → chunk-MOSVZZAN.js.map} +0 -0
  96. /package/dist/{run-vitest-TESZNJA7.js.map → run-vitest-QMZWFYSW.js.map} +0 -0
package/dist/bin.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  extractOverrides,
4
4
  loadEvalCommand
5
- } from "./chunk-3KVDJV5T.js";
5
+ } from "./chunk-4S2HLGZW.js";
6
6
  import {
7
7
  OAuth,
8
8
  fetchOrganizations,
@@ -15,11 +15,11 @@ import {
15
15
  verifyToken,
16
16
  waitForCallback
17
17
  } from "./chunk-3VKWOZAQ.js";
18
- import "./chunk-P4YKSKIZ.js";
18
+ import "./chunk-3MMFYPFN.js";
19
19
  import {
20
20
  AxiomCLIError
21
21
  } from "./chunk-ISSDOC43.js";
22
- import "./chunk-WOJCPKV5.js";
22
+ import "./chunk-WO6AVN5J.js";
23
23
  import "./chunk-MM5FFQJT.js";
24
24
  import "./chunk-4TKUTT24.js";
25
25
  import "./chunk-KEXKKQVW.js";
@@ -389,7 +389,7 @@ import { Command } from "commander";
389
389
  var loadVersionCommand = (program2) => {
390
390
  return program2.addCommand(
391
391
  new Command("version").description("cli version").action(() => {
392
- console.log("0.48.1");
392
+ console.log("0.49.1");
393
393
  })
394
394
  );
395
395
  };
@@ -399,7 +399,7 @@ var { loadEnvConfig } = pkg;
399
399
  loadEnvConfig(process.cwd());
400
400
  var { cleanedArgv, overrides } = extractOverrides(process.argv.slice(2));
401
401
  var program = new Command2();
402
- program.name("axiom").description("Axiom's CLI to manage your objects and run evals").version("0.48.1");
402
+ program.name("axiom").description("Axiom's CLI to manage your objects and run evals").version("0.49.1");
403
403
  program.hook("preAction", async (_, actionCommand) => {
404
404
  const commandName = actionCommand.name();
405
405
  const parentCommand = actionCommand.parent;
@@ -5,7 +5,7 @@ import {
5
5
  getRedactionPolicy,
6
6
  handleMaybeRedactedAttribute,
7
7
  package_default
8
- } from "./chunk-WOJCPKV5.js";
8
+ } from "./chunk-WO6AVN5J.js";
9
9
  import {
10
10
  isValidName
11
11
  } from "./chunk-MM5FFQJT.js";
@@ -260,10 +260,16 @@ function recordSpanError(span, err) {
260
260
  span.setAttribute(Attr.HTTP.Response.StatusCode, err.status);
261
261
  }
262
262
  }
263
+ var spanContextStore = /* @__PURE__ */ new WeakMap();
264
+ var spanContextFactories = {
265
+ v1: () => ({ version: "v1", originalPrompt: [], rawCall: void 0 }),
266
+ v2: () => ({ version: "v2", originalPrompt: [], originalV2Prompt: void 0 }),
267
+ v3: () => ({ version: "v3", originalPrompt: [], originalV3Prompt: void 0 })
268
+ };
263
269
  async function withSpanHandling(modelId, operation, options) {
264
270
  const bag = propagation.getActiveBaggage();
265
271
  const isWithinWithSpan = bag?.getEntry(WITHSPAN_BAGGAGE_KEY)?.value === "true";
266
- const spanContext = options?.version === "v3" ? { version: "v3", originalPrompt: [], originalV3Prompt: void 0 } : options?.version === "v2" ? { version: "v2", originalPrompt: [], originalV2Prompt: void 0 } : { version: "v1", originalPrompt: [], rawCall: void 0 };
272
+ const createSpanContext = spanContextFactories[options?.version ?? "v1"];
267
273
  const name = createGenAISpanName(Attr.GenAI.Operation.Name_Values.Chat, modelId);
268
274
  if (isWithinWithSpan) {
269
275
  const activeSpan = trace.getActiveSpan();
@@ -271,6 +277,11 @@ async function withSpanHandling(modelId, operation, options) {
271
277
  throw new Error("Expected active span when within withSpan");
272
278
  }
273
279
  activeSpan.updateName(name);
280
+ let spanContext = spanContextStore.get(activeSpan);
281
+ if (!spanContext) {
282
+ spanContext = createSpanContext();
283
+ spanContextStore.set(activeSpan, spanContext);
284
+ }
274
285
  const lease = {
275
286
  owned: false,
276
287
  end: () => {
@@ -294,7 +305,7 @@ async function withSpanHandling(modelId, operation, options) {
294
305
  owned: true,
295
306
  end: () => span.end()
296
307
  };
297
- return await operation(span, spanContext, lease);
308
+ return await operation(span, createSpanContext(), lease);
298
309
  },
299
310
  {
300
311
  manualEnd: options?.streaming ?? false,
@@ -1307,6 +1318,19 @@ var appendPromptMetadataToSpan = (span, messages) => {
1307
1318
  if (axiomMeta.version) span.setAttribute(Attr.GenAI.PromptMetadata.Version, axiomMeta.version);
1308
1319
  }
1309
1320
  };
1321
+ function setStreamStepAttributes(span, values) {
1322
+ const inputTokens = ensureNumber(values.inputTokens);
1323
+ if (inputTokens !== void 0) {
1324
+ span.setAttribute(Attr.GenAI.Usage.InputTokens, inputTokens);
1325
+ }
1326
+ const outputTokens = ensureNumber(values.outputTokens);
1327
+ if (outputTokens !== void 0) {
1328
+ span.setAttribute(Attr.GenAI.Usage.OutputTokens, outputTokens);
1329
+ }
1330
+ if (values.finishReason) {
1331
+ span.setAttribute(Attr.GenAI.Response.FinishReasons, JSON.stringify([values.finishReason]));
1332
+ }
1333
+ }
1310
1334
  function axiomAIMiddlewareV1() {
1311
1335
  return {
1312
1336
  wrapGenerate: async ({ doGenerate, params, model }) => {
@@ -1357,17 +1381,23 @@ function axiomAIMiddlewareV1() {
1357
1381
  },
1358
1382
  async flush(controller) {
1359
1383
  try {
1384
+ const statsResult = stats.result;
1360
1385
  await setPostCallAttributesV1(
1361
1386
  span,
1362
1387
  {
1363
1388
  ...head,
1364
- ...stats.result,
1389
+ ...statsResult,
1365
1390
  toolCalls: toolAggregator.result.length > 0 ? toolAggregator.result : void 0,
1366
1391
  text: textAggregator.text
1367
1392
  },
1368
1393
  context3,
1369
1394
  model
1370
1395
  );
1396
+ setStreamStepAttributes(childSpan, {
1397
+ inputTokens: statsResult.usage?.promptTokens,
1398
+ outputTokens: statsResult.usage?.completionTokens,
1399
+ finishReason: statsResult.finishReason
1400
+ });
1371
1401
  childSpan.end();
1372
1402
  if (lease.owned) lease.end();
1373
1403
  controller.terminate();
@@ -1452,14 +1482,20 @@ function axiomAIMiddlewareV2() {
1452
1482
  },
1453
1483
  async flush(controller) {
1454
1484
  try {
1485
+ const statsResult = stats.result;
1455
1486
  const streamResult = {
1456
- ...stats.result,
1487
+ ...statsResult,
1457
1488
  content: [
1458
1489
  ...textAggregator.text ? [{ type: "text", text: textAggregator.text }] : [],
1459
1490
  ...toolAggregator.result
1460
1491
  ]
1461
1492
  };
1462
1493
  await setPostCallAttributesV2(span, streamResult, context3, model);
1494
+ setStreamStepAttributes(childSpan, {
1495
+ inputTokens: statsResult.usage?.inputTokens,
1496
+ outputTokens: statsResult.usage?.outputTokens,
1497
+ finishReason: statsResult.finishReason
1498
+ });
1463
1499
  childSpan.end();
1464
1500
  if (lease.owned) lease.end();
1465
1501
  controller.terminate();
@@ -1557,11 +1593,15 @@ async function setPostCallAttributesV1(span, result, context3, _model) {
1557
1593
  }
1558
1594
  const inputTokens = ensureNumber(result.usage?.promptTokens);
1559
1595
  if (inputTokens !== void 0) {
1560
- span.setAttribute(Attr.GenAI.Usage.InputTokens, inputTokens);
1596
+ const curr = context3.accumulatedInputTokens ?? 0;
1597
+ context3.accumulatedInputTokens = curr + inputTokens;
1598
+ span.setAttribute(Attr.GenAI.Usage.InputTokens, context3.accumulatedInputTokens);
1561
1599
  }
1562
1600
  const outputTokens = ensureNumber(result.usage?.completionTokens);
1563
1601
  if (outputTokens !== void 0) {
1564
- span.setAttribute(Attr.GenAI.Usage.OutputTokens, outputTokens);
1602
+ const curr = context3.accumulatedOutputTokens ?? 0;
1603
+ context3.accumulatedOutputTokens = curr + outputTokens;
1604
+ span.setAttribute(Attr.GenAI.Usage.OutputTokens, context3.accumulatedOutputTokens);
1565
1605
  }
1566
1606
  if (result.finishReason) {
1567
1607
  span.setAttribute(Attr.GenAI.Response.FinishReasons, JSON.stringify([result.finishReason]));
@@ -1599,22 +1639,23 @@ async function setPostCallAttributesV2(span, result, context3, _model) {
1599
1639
  const toolCalls = result.content?.filter(
1600
1640
  (c) => c.type === "tool-call"
1601
1641
  );
1602
- const alreadySet = span.attributes?.[Attr.GenAI.Response.FinishReasons] !== void 0;
1603
- if (!alreadySet) {
1604
- if (result.response?.id) {
1605
- span.setAttribute(Attr.GenAI.Response.ID, result.response.id);
1606
- }
1607
- if (result.response?.modelId) {
1608
- span.setAttribute(Attr.GenAI.Response.Model, result.response.modelId);
1609
- }
1610
- const inputTokens = ensureNumber(result.usage?.inputTokens);
1611
- if (inputTokens !== void 0) {
1612
- span.setAttribute(Attr.GenAI.Usage.InputTokens, inputTokens);
1613
- }
1614
- const outputTokens = ensureNumber(result.usage?.outputTokens);
1615
- if (outputTokens !== void 0) {
1616
- span.setAttribute(Attr.GenAI.Usage.OutputTokens, outputTokens);
1617
- }
1642
+ if (result.response?.id) {
1643
+ span.setAttribute(Attr.GenAI.Response.ID, result.response.id);
1644
+ }
1645
+ if (result.response?.modelId) {
1646
+ span.setAttribute(Attr.GenAI.Response.Model, result.response.modelId);
1647
+ }
1648
+ const inputTokens = ensureNumber(result.usage?.inputTokens);
1649
+ if (inputTokens !== void 0) {
1650
+ const curr = context3.accumulatedInputTokens ?? 0;
1651
+ context3.accumulatedInputTokens = curr + inputTokens;
1652
+ span.setAttribute(Attr.GenAI.Usage.InputTokens, context3.accumulatedInputTokens);
1653
+ }
1654
+ const outputTokens = ensureNumber(result.usage?.outputTokens);
1655
+ if (outputTokens !== void 0) {
1656
+ const curr = context3.accumulatedOutputTokens ?? 0;
1657
+ context3.accumulatedOutputTokens = curr + outputTokens;
1658
+ span.setAttribute(Attr.GenAI.Usage.OutputTokens, context3.accumulatedOutputTokens);
1618
1659
  }
1619
1660
  if (toolCalls && toolCalls.length > 0) {
1620
1661
  const originalPrompt = context3.originalPrompt || [];
@@ -1648,7 +1689,7 @@ async function setPostCallAttributesV2(span, result, context3, _model) {
1648
1689
  redactionPolicy.captureMessageContent
1649
1690
  );
1650
1691
  }
1651
- if (result.finishReason && !alreadySet) {
1692
+ if (result.finishReason) {
1652
1693
  span.setAttribute(Attr.GenAI.Response.FinishReasons, JSON.stringify([result.finishReason]));
1653
1694
  }
1654
1695
  }
@@ -1737,6 +1778,11 @@ function axiomAIMiddlewareV3() {
1737
1778
  context3,
1738
1779
  model
1739
1780
  );
1781
+ setStreamStepAttributes(childSpan, {
1782
+ inputTokens: statsResult.usage?.inputTokens?.total,
1783
+ outputTokens: statsResult.usage?.outputTokens?.total,
1784
+ finishReason: statsResult.finishReason?.unified
1785
+ });
1740
1786
  childSpan.end();
1741
1787
  if (lease.owned) lease.end();
1742
1788
  controller.terminate();
@@ -1788,22 +1834,23 @@ async function setPostCallAttributesV3(span, result, context3, _model) {
1788
1834
  const toolCalls = result.content?.filter(
1789
1835
  (c) => c.type === "tool-call"
1790
1836
  );
1791
- const alreadySet = span.attributes?.[Attr.GenAI.Response.FinishReasons] !== void 0;
1792
- if (!alreadySet) {
1793
- if (result.response?.id) {
1794
- span.setAttribute(Attr.GenAI.Response.ID, result.response.id);
1795
- }
1796
- if (result.response?.modelId) {
1797
- span.setAttribute(Attr.GenAI.Response.Model, result.response.modelId);
1798
- }
1799
- const inputTokens = ensureNumber(result.usage?.inputTokens?.total);
1800
- if (inputTokens !== void 0) {
1801
- span.setAttribute(Attr.GenAI.Usage.InputTokens, inputTokens);
1802
- }
1803
- const outputTokens = ensureNumber(result.usage?.outputTokens?.total);
1804
- if (outputTokens !== void 0) {
1805
- span.setAttribute(Attr.GenAI.Usage.OutputTokens, outputTokens);
1806
- }
1837
+ if (result.response?.id) {
1838
+ span.setAttribute(Attr.GenAI.Response.ID, result.response.id);
1839
+ }
1840
+ if (result.response?.modelId) {
1841
+ span.setAttribute(Attr.GenAI.Response.Model, result.response.modelId);
1842
+ }
1843
+ const inputTokens = ensureNumber(result.usage?.inputTokens?.total);
1844
+ if (inputTokens !== void 0) {
1845
+ const curr = context3.accumulatedInputTokens ?? 0;
1846
+ context3.accumulatedInputTokens = curr + inputTokens;
1847
+ span.setAttribute(Attr.GenAI.Usage.InputTokens, context3.accumulatedInputTokens);
1848
+ }
1849
+ const outputTokens = ensureNumber(result.usage?.outputTokens?.total);
1850
+ if (outputTokens !== void 0) {
1851
+ const curr = context3.accumulatedOutputTokens ?? 0;
1852
+ context3.accumulatedOutputTokens = curr + outputTokens;
1853
+ span.setAttribute(Attr.GenAI.Usage.OutputTokens, context3.accumulatedOutputTokens);
1807
1854
  }
1808
1855
  if (toolCalls && toolCalls.length > 0) {
1809
1856
  const originalPrompt = context3.originalPrompt || [];
@@ -1837,7 +1884,7 @@ async function setPostCallAttributesV3(span, result, context3, _model) {
1837
1884
  redactionPolicy.captureMessageContent
1838
1885
  );
1839
1886
  }
1840
- if (result.finishReason && !alreadySet) {
1887
+ if (result.finishReason) {
1841
1888
  span.setAttribute(
1842
1889
  Attr.GenAI.Response.FinishReasons,
1843
1890
  JSON.stringify([result.finishReason.unified])
@@ -3099,4 +3146,4 @@ export {
3099
3146
  withEvalContext,
3100
3147
  getConfigScope
3101
3148
  };
3102
- //# sourceMappingURL=chunk-P4YKSKIZ.js.map
3149
+ //# sourceMappingURL=chunk-3MMFYPFN.js.map