@ai-sdk/otel 1.0.127 → 1.0.128

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 CHANGED
@@ -1,5 +1,20 @@
1
1
  # @ai-sdk/otel
2
2
 
3
+ ## 1.0.128
4
+
5
+ ### Patch Changes
6
+
7
+ - 2959d35: feat: rename `evaluate` to `decide`
8
+ - 51e1763: fix(otel): mark span status as `ERROR` when finish reason is `error`
9
+ - Updated dependencies [0fe8c67]
10
+ - Updated dependencies [2959d35]
11
+ - Updated dependencies [0ca1ab9]
12
+ - Updated dependencies [d6b42fd]
13
+ - Updated dependencies [ed6e72d]
14
+ - Updated dependencies [2136151]
15
+ - ai@7.0.128
16
+ - @ai-sdk/provider@4.0.22
17
+
3
18
  ## 1.0.127
4
19
 
5
20
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { Attributes, Tracer } from "@opentelemetry/api";
2
- import { EmbedEndEvent, EmbedStartEvent, EmbeddingModelCallEndEvent, EmbeddingModelCallStartEvent, Experimental_EvaluateEndEvent, Experimental_EvaluateStartEvent, Experimental_EvaluationModelCallEndEvent, Experimental_EvaluationModelCallStartEvent, Experimental_StreamTranscriptionEndEvent, Experimental_StreamTranscriptionStartEvent, GenerateObjectEndEvent, GenerateObjectStartEvent, GenerateObjectStepEndEvent, GenerateObjectStepStartEvent, GenerateSpeechEndEvent, GenerateSpeechStartEvent, GenerateTextAbortEvent, GenerateTextEndEvent, GenerateTextStartEvent, GenerateTextStepEndEvent, GenerateTextStepStartEvent, InferTelemetryEvent, LanguageModelCallEndEvent, LanguageModelCallStartEvent, Output, RerankEndEvent, RerankStartEvent, RerankingModelCallEndEvent, RerankingModelCallStartEvent, Telemetry, ToolExecutionEndEvent, ToolExecutionStartEvent, ToolSet, TranscriptionEndEvent, TranscriptionStartEvent } from "ai";
2
+ import { EmbedEndEvent, EmbedStartEvent, EmbeddingModelCallEndEvent, EmbeddingModelCallStartEvent, Experimental_DecideEndEvent, Experimental_DecideStartEvent, Experimental_DecisionModelCallEndEvent, Experimental_DecisionModelCallStartEvent, Experimental_StreamTranscriptionEndEvent, Experimental_StreamTranscriptionStartEvent, GenerateObjectEndEvent, GenerateObjectStartEvent, GenerateObjectStepEndEvent, GenerateObjectStepStartEvent, GenerateSpeechEndEvent, GenerateSpeechStartEvent, GenerateTextAbortEvent, GenerateTextEndEvent, GenerateTextStartEvent, GenerateTextStepEndEvent, GenerateTextStepStartEvent, InferTelemetryEvent, LanguageModelCallEndEvent, LanguageModelCallStartEvent, Output, RerankEndEvent, RerankStartEvent, RerankingModelCallEndEvent, RerankingModelCallStartEvent, Telemetry, ToolExecutionEndEvent, ToolExecutionStartEvent, ToolSet, TranscriptionEndEvent, TranscriptionStartEvent } from "ai";
3
3
  import { APICallError, LanguageModelV4Prompt } from "@ai-sdk/provider";
4
4
  //#region src/supplemental-attributes.d.ts
5
- type OpenTelemetrySpanType = 'operation' | 'step' | 'languageModel' | 'tool' | 'embedding' | 'reranking' | 'experimental_evaluation';
5
+ type OpenTelemetrySpanType = 'operation' | 'step' | 'languageModel' | 'tool' | 'embedding' | 'reranking' | 'experimental_decision';
6
6
  type EnrichSpan = (options: {
7
7
  spanType: OpenTelemetrySpanType;
8
8
  operationId: string;
@@ -36,8 +36,10 @@ type OpenTelemetryOptions = {
36
36
  */
37
37
  reranking?: boolean;
38
38
  /**
39
- * Emit evaluation state, questions, and answers.
39
+ * Emit decision state, questions, and answers.
40
40
  */
41
+ experimental_decision?: boolean;
42
+ /** @deprecated Use `experimental_decision` instead. */
41
43
  experimental_evaluation?: boolean;
42
44
  /**
43
45
  * Emit runtime context values.
@@ -113,12 +115,20 @@ export declare class OpenTelemetry implements Telemetry {
113
115
  private onRerankOperationEnd;
114
116
  onRerankStart(event: RerankingModelCallStartEvent): void;
115
117
  onRerankEnd(event: RerankingModelCallEndEvent): void;
116
- private onEvaluateOperationStart;
117
- private onEvaluateOperationEnd;
118
- experimental_onEvaluateStart(event: InferTelemetryEvent<Experimental_EvaluateStartEvent>): void;
119
- experimental_onEvaluateEnd(event: Experimental_EvaluateEndEvent): void;
120
- experimental_onEvaluationModelCallStart(event: Experimental_EvaluationModelCallStartEvent): void;
121
- experimental_onEvaluationModelCallEnd(event: Experimental_EvaluationModelCallEndEvent): void;
118
+ private onDecideOperationStart;
119
+ private onDecideOperationEnd;
120
+ experimental_onDecideStart(event: InferTelemetryEvent<Experimental_DecideStartEvent>): void;
121
+ experimental_onDecideEnd(event: Experimental_DecideEndEvent): void;
122
+ experimental_onDecisionModelCallStart(event: Experimental_DecisionModelCallStartEvent): void;
123
+ experimental_onDecisionModelCallEnd(event: Experimental_DecisionModelCallEndEvent): void;
124
+ /** @deprecated Use `experimental_onDecideStart` instead. */
125
+ experimental_onEvaluateStart(event: InferTelemetryEvent<Experimental_DecideStartEvent>): void;
126
+ /** @deprecated Use `experimental_onDecideEnd` instead. */
127
+ experimental_onEvaluateEnd(event: Experimental_DecideEndEvent): void;
128
+ /** @deprecated Use `experimental_onDecisionModelCallStart` instead. */
129
+ experimental_onEvaluationModelCallStart(event: InferTelemetryEvent<Experimental_DecisionModelCallStartEvent>): void;
130
+ /** @deprecated Use `experimental_onDecisionModelCallEnd` instead. */
131
+ experimental_onEvaluationModelCallEnd(event: InferTelemetryEvent<Experimental_DecisionModelCallEndEvent>): void;
122
132
  onAbort(event: GenerateTextAbortEvent<ToolSet>): void;
123
133
  onError(error: unknown): void;
124
134
  }
@@ -194,12 +204,20 @@ export declare class LegacyOpenTelemetry implements Telemetry {
194
204
  private onRerankOperationEnd;
195
205
  onRerankStart(event: RerankingModelCallStartEvent): void;
196
206
  onRerankEnd(event: RerankingModelCallEndEvent): void;
197
- private onEvaluateOperationStart;
198
- private onEvaluateOperationEnd;
199
- experimental_onEvaluateStart(event: InferTelemetryEvent<Experimental_EvaluateStartEvent>): void;
200
- experimental_onEvaluateEnd(event: Experimental_EvaluateEndEvent): void;
201
- experimental_onEvaluationModelCallStart(event: Experimental_EvaluationModelCallStartEvent): void;
202
- experimental_onEvaluationModelCallEnd(event: Experimental_EvaluationModelCallEndEvent): void;
207
+ private onDecideOperationStart;
208
+ private onDecideOperationEnd;
209
+ experimental_onDecideStart(event: InferTelemetryEvent<Experimental_DecideStartEvent>): void;
210
+ experimental_onDecideEnd(event: Experimental_DecideEndEvent): void;
211
+ experimental_onDecisionModelCallStart(event: Experimental_DecisionModelCallStartEvent): void;
212
+ experimental_onDecisionModelCallEnd(event: Experimental_DecisionModelCallEndEvent): void;
213
+ /** @deprecated Use `experimental_onDecideStart` instead. */
214
+ experimental_onEvaluateStart(event: InferTelemetryEvent<Experimental_DecideStartEvent>): void;
215
+ /** @deprecated Use `experimental_onDecideEnd` instead. */
216
+ experimental_onEvaluateEnd(event: Experimental_DecideEndEvent): void;
217
+ /** @deprecated Use `experimental_onDecisionModelCallStart` instead. */
218
+ experimental_onEvaluationModelCallStart(event: InferTelemetryEvent<Experimental_DecisionModelCallStartEvent>): void;
219
+ /** @deprecated Use `experimental_onDecisionModelCallEnd` instead. */
220
+ experimental_onEvaluationModelCallEnd(event: InferTelemetryEvent<Experimental_DecisionModelCallEndEvent>): void;
203
221
  onAbort(event: GenerateTextAbortEvent<ToolSet>): void;
204
222
  onError(error: unknown): void;
205
223
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["OtelStepStartEvent","StreamTranscriptionStartEvent","StreamTranscriptionEndEvent","EvaluateStartEvent","EvaluateEndEvent","EvaluationModelCallStartEvent","EvaluationModelCallEndEvent","AISDKContext","StreamTranscriptionStartEvent","StreamTranscriptionEndEvent","EvaluateStartEvent","EvaluateEndEvent","EvaluationModelCallStartEvent","EvaluationModelCallEndEvent"],"sources":["../src/supplemental-attributes.ts","../src/open-telemetry.ts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/schemas.d.cts","../../provider-utils/dist/index.d.ts","../src/legacy-open-telemetry.ts"],"x_google_ignoreList":[2],"mappings":";;;;KAwBY;KASA,cAAc;EACxB,UAAU;EACV;EACA;EACA,gBAAgB;MACZ;KAEM;;;;EAIV,SAAS;;;;;EAMT,aAAa;;;;EAKb;;;;EAKA;;;;EAKA;;;;EAKA;;;;EAKA;;;;EAKA;;;;EAKA;;;;EAKA;;;;EAKA;;;;UClBQA,6BAA2B,2BAA2B;WACrD;;qBA2CE,yBAAyB;mBACnB;mBAEA;mBACA;mBACA;EAEL,YAAA,UAAS;UAMb;UAIA;UAIA;EAgCR,YAAY,KACV,QACA,YACA;IAEA;IACA;IACA,eAAe,YAAY;MACzB,YAAY;;;;;EAchB,yBAAyB,KACvB,QACA;IAEA;IACA,eAAe,YAAY;MACzB,YAAY;EAWhB,QACE,OACI,oBAAoB,0BACpB,oBAAoB,4BACpB,oBAAoB,mBACpB,oBAAoB,oBACpB,oBAAoB,4BACpB,oBAAoB;EA4C1B,wCACE,OAAO,oBAAoBC;UAKrB;UA0FA;UAuGA;;EA6GR,kBAAkB,OAAO;;EAuEzB,gBAAgB,OAAO;UAiDf;EA6ER,YAAY,OAAOD;EAwCnB,yBAAyB,OAAO;EAyEhC,uBAAuB,OAAO,0BAA0B;EAiKxD,qBAAqB,OAAO,wBAAwB;EAyCpD,mBAAmB,OAAO,sBAAsB;EAqChD,UAAU,OAAO,yBAAyB;;EAuB1C,aAAa,OAAO,yBAAyB;EAI7C,MACE,OACI,qBAAqB,WACrB,kCACA,gBACA,iBACA,yBACA;EAuCN,sCACE,OAAO,oBAAoBE;UAKrB;UA8EA;UAiDA;UA2CA;EAoCR,aAAa,OAAO;EA4CpB,WAAW,OAAO;UAgCV;UAoEA;EAQR,cAAc,OAAO;EAyCrB,YAAY,OAAO;UAsBX;UAkEA;EAqBR,6BACE,OAAO,oBAAoBC;EAK7B,2BAA2B,OAAOC;EAIlC,wCACE,OAAOC;EA8CT,sCACE,OAAOC;EA+BT,QAAQ,OAAO,uBAAuB;EAwCtC,QAAQ;;;;QCljCF;YACM;;;;;;;;;KC22BT,UAAU;;;UCr+CL,mBACR,cAAc,UAAU,SACxB,wBAAwBC,UAAeA,SACvC,eAAe,OAAO,SAAS,OAAO,gBAC9B,2BAA2B,OAAO,iBAAiB;WAClD,iBAAiB;WACjB,YAAY,cAAc;WAC1B;;qBAkBE,+BAA+B;mBACzB;;;;mBAKA;EAGf,YAAA;IACE,SAAS;;UAML;UAIA;EAIR,YAAY,KACV,QACA,YACA;IAEA;IACA;IACA,eAAe,YAAY;MACzB,YAAY;;;;;EAchB,yBAAyB,KACvB,QACA;IAEA;IACA,eAAe,YAAY;MACzB,YAAY;EAUhB,QACE,OACI,oBAAoB,0BACpB,oBAAoB,4BACpB,oBAAoB,mBACpB,oBAAoB,oBACpB,oBAAoB,4BACpB,oBAAoB;EA4C1B,wCACE,OAAO,oBAAoBC;UAKrB;UAyDA;UAgEA;;EAqER,kBAAkB,OAAO;;EAmDzB,gBAAgB,OAAO;UAuDf;EA6DR,YAAY,OAAO;EAiEnB,qBAAqB,OAAO,wBAAwB;EAqCpD,mBAAmB,OAAO,sBAAsB;EA+BhD,UAAU,OAAO,yBAAyB;;EA4G1C,aAAa,OAAO,yBAAyB;EAI7C,MACE,OACI,qBAAqB,WACrB,kCACA,gBACA,iBACA,yBACA;EAuCN,sCACE,OAAO,oBAAoBC;UAKrB;UA+CA;UAyEA;UA+BA;EA6BR,aAAa,OAAO;EA8BpB,WAAW,OAAO;UAwBV;UAkDA;EAQR,cAAc,OAAO;EA2BrB,YAAY,OAAO;UAoBX;UA8CA;EAeR,6BACE,OAAO,oBAAoBC;EAK7B,2BAA2B,OAAOC;EAIlC,wCACE,OAAOC;EA6BT,sCACE,OAAOC;EAqBT,QAAQ,OAAO,uBAAuB;EAkCtC,QAAQ"}
1
+ {"version":3,"file":"index.d.ts","names":["OtelStepStartEvent","StreamTranscriptionStartEvent","StreamTranscriptionEndEvent","DecideStartEvent","DecideEndEvent","DecisionModelCallStartEvent","DecisionModelCallEndEvent","AISDKContext","StreamTranscriptionStartEvent","StreamTranscriptionEndEvent","DecideStartEvent","DecideEndEvent","DecisionModelCallStartEvent","DecisionModelCallEndEvent"],"sources":["../src/supplemental-attributes.ts","../src/open-telemetry.ts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/schemas.d.cts","../../provider-utils/dist/index.d.ts","../src/legacy-open-telemetry.ts"],"x_google_ignoreList":[2],"mappings":"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"}
package/dist/index.js CHANGED
@@ -573,7 +573,7 @@ const disabledSupplementalAttributes = {
573
573
  providerMetadata: false,
574
574
  embedding: false,
575
575
  reranking: false,
576
- experimental_evaluation: false,
576
+ experimental_decision: false,
577
577
  runtimeContext: false,
578
578
  headers: false,
579
579
  toolChoice: false,
@@ -586,7 +586,7 @@ function normalizeSupplementalAttributes(options) {
586
586
  providerMetadata: options.providerMetadata ?? false,
587
587
  embedding: options.embedding ?? false,
588
588
  reranking: options.reranking ?? false,
589
- experimental_evaluation: options.experimental_evaluation ?? false,
589
+ experimental_decision: options.experimental_decision ?? options.experimental_evaluation ?? false,
590
590
  runtimeContext: options.runtimeContext ?? false,
591
591
  headers: options.headers ?? false,
592
592
  toolChoice: options.toolChoice ?? false,
@@ -763,7 +763,7 @@ var OpenTelemetry = class {
763
763
  inferenceContext: void 0,
764
764
  embedSpans: /* @__PURE__ */ new Map(),
765
765
  rerankSpan: void 0,
766
- evaluationSpan: void 0,
766
+ decisionSpan: void 0,
767
767
  toolSpans: /* @__PURE__ */ new Map(),
768
768
  settings: {},
769
769
  provider: event.provider,
@@ -839,7 +839,7 @@ var OpenTelemetry = class {
839
839
  inferenceContext: void 0,
840
840
  embedSpans: /* @__PURE__ */ new Map(),
841
841
  rerankSpan: void 0,
842
- evaluationSpan: void 0,
842
+ decisionSpan: void 0,
843
843
  toolSpans: /* @__PURE__ */ new Map(),
844
844
  settings,
845
845
  provider: event.provider,
@@ -916,7 +916,7 @@ var OpenTelemetry = class {
916
916
  inferenceContext: void 0,
917
917
  embedSpans: /* @__PURE__ */ new Map(),
918
918
  rerankSpan: void 0,
919
- evaluationSpan: void 0,
919
+ decisionSpan: void 0,
920
920
  toolSpans: /* @__PURE__ */ new Map(),
921
921
  settings,
922
922
  provider: event.provider,
@@ -966,6 +966,7 @@ var OpenTelemetry = class {
966
966
  onObjectStepEnd(event) {
967
967
  const state = this.getCallState(event.callId);
968
968
  if (!state?.inferenceSpan) return;
969
+ if (event.finishReason === "error") state.inferenceSpan.setStatus({ code: SpanStatusCode.ERROR });
969
970
  const { telemetry } = state;
970
971
  state.inferenceSpan.setAttributes(selectAttributes$1(telemetry, {
971
972
  "gen_ai.response.finish_reasons": [event.finishReason],
@@ -1038,7 +1039,7 @@ var OpenTelemetry = class {
1038
1039
  inferenceContext: void 0,
1039
1040
  embedSpans: /* @__PURE__ */ new Map(),
1040
1041
  rerankSpan: void 0,
1041
- evaluationSpan: void 0,
1042
+ decisionSpan: void 0,
1042
1043
  toolSpans: /* @__PURE__ */ new Map(),
1043
1044
  settings: { maxRetries: event.maxRetries },
1044
1045
  provider: event.provider,
@@ -1111,6 +1112,7 @@ var OpenTelemetry = class {
1111
1112
  onLanguageModelCallEnd(event) {
1112
1113
  const state = this.getCallState(event.callId);
1113
1114
  if (!state?.inferenceSpan) return;
1115
+ if (event.finishReason === "error") state.inferenceSpan.setStatus({ code: SpanStatusCode.ERROR });
1114
1116
  const { telemetry } = state;
1115
1117
  const providerName = mapProviderName(event.provider);
1116
1118
  const toolDefinitions = [...state.inferenceToolDefinitions ?? []];
@@ -1232,6 +1234,7 @@ var OpenTelemetry = class {
1232
1234
  onStepEnd(event) {
1233
1235
  const state = this.getCallState(event.callId);
1234
1236
  if (!state?.stepSpan) return;
1237
+ if (event.finishReason === "error") state.stepSpan.setStatus({ code: SpanStatusCode.ERROR });
1235
1238
  const { telemetry } = state;
1236
1239
  state.stepSpan.setAttributes(selectSupplementalAttributes(telemetry, this.supplementalAttributes, {
1237
1240
  providerMetadata: { "ai.response.providerMetadata": event.providerMetadata ? JSON.stringify(event.providerMetadata) : void 0 },
@@ -1304,6 +1307,7 @@ var OpenTelemetry = class {
1304
1307
  onGenerateEnd(event) {
1305
1308
  const state = this.getCallState(event.callId);
1306
1309
  if (!state?.rootSpan) return;
1310
+ if (event.finishReason === "error") state.rootSpan.setStatus({ code: SpanStatusCode.ERROR });
1307
1311
  const { telemetry } = state;
1308
1312
  state.rootSpan.setAttributes(selectAttributes$1(telemetry, {
1309
1313
  "gen_ai.response.finish_reasons": [event.finishReason],
@@ -1330,6 +1334,7 @@ var OpenTelemetry = class {
1330
1334
  onObjectOperationEnd(event) {
1331
1335
  const state = this.getCallState(event.callId);
1332
1336
  if (!state?.rootSpan) return;
1337
+ if (event.finishReason === "error") state.rootSpan.setStatus({ code: SpanStatusCode.ERROR });
1333
1338
  const { telemetry } = state;
1334
1339
  state.rootSpan.setAttributes(selectAttributes$1(telemetry, {
1335
1340
  "gen_ai.response.finish_reasons": [event.finishReason],
@@ -1441,7 +1446,7 @@ var OpenTelemetry = class {
1441
1446
  inferenceContext: void 0,
1442
1447
  embedSpans: /* @__PURE__ */ new Map(),
1443
1448
  rerankSpan: void 0,
1444
- evaluationSpan: void 0,
1449
+ decisionSpan: void 0,
1445
1450
  toolSpans: /* @__PURE__ */ new Map(),
1446
1451
  settings: { maxRetries: event.maxRetries },
1447
1452
  provider: event.provider,
@@ -1495,7 +1500,7 @@ var OpenTelemetry = class {
1495
1500
  span.end();
1496
1501
  state.rerankSpan = void 0;
1497
1502
  }
1498
- onEvaluateOperationStart(event) {
1503
+ onDecideOperationStart(event) {
1499
1504
  const telemetry = {
1500
1505
  recordInputs: event.recordInputs,
1501
1506
  recordOutputs: event.recordOutputs,
@@ -1507,16 +1512,16 @@ var OpenTelemetry = class {
1507
1512
  headers: getHeaderAttributes(event.headers)
1508
1513
  });
1509
1514
  const attributes = selectAttributes$1(telemetry, {
1510
- "gen_ai.operation.name": "evaluate",
1515
+ "gen_ai.operation.name": "decide",
1511
1516
  "gen_ai.provider.name": mapProviderName(event.provider),
1512
1517
  "gen_ai.request.model": event.modelId,
1513
1518
  ...baseSupplementalAttributes,
1514
- ...selectSupplementalAttributes(telemetry, this.supplementalAttributes, { experimental_evaluation: {
1515
- "ai.evaluation.state": { input: () => JSON.stringify(event.state) },
1516
- "ai.evaluation.questions": { input: () => JSON.stringify(event.questions) }
1519
+ ...selectSupplementalAttributes(telemetry, this.supplementalAttributes, { experimental_decision: {
1520
+ "ai.decision.state": { input: () => JSON.stringify(event.state) },
1521
+ "ai.decision.questions": { input: () => JSON.stringify(event.questions) }
1517
1522
  } })
1518
1523
  });
1519
- const rootSpan = this.tracer.startSpan(`evaluate ${event.modelId}`, {
1524
+ const rootSpan = this.tracer.startSpan(`decide ${event.modelId}`, {
1520
1525
  attributes: this.getSpanAttributes({
1521
1526
  attributes,
1522
1527
  spanType: "operation",
@@ -1538,7 +1543,7 @@ var OpenTelemetry = class {
1538
1543
  inferenceContext: void 0,
1539
1544
  embedSpans: /* @__PURE__ */ new Map(),
1540
1545
  rerankSpan: void 0,
1541
- evaluationSpan: void 0,
1546
+ decisionSpan: void 0,
1542
1547
  toolSpans: /* @__PURE__ */ new Map(),
1543
1548
  settings: { maxRetries: event.maxRetries },
1544
1549
  provider: event.provider,
@@ -1547,60 +1552,76 @@ var OpenTelemetry = class {
1547
1552
  baseSupplementalAttributes
1548
1553
  });
1549
1554
  }
1550
- onEvaluateOperationEnd(event) {
1555
+ onDecideOperationEnd(event) {
1551
1556
  const state = this.getCallState(event.callId);
1552
1557
  if (!state?.rootSpan) return;
1553
- state.rootSpan.setAttributes(selectSupplementalAttributes(state.telemetry, this.supplementalAttributes, { experimental_evaluation: { "ai.evaluation.answers": { output: () => JSON.stringify(event.answers) } } }));
1558
+ state.rootSpan.setAttributes(selectSupplementalAttributes(state.telemetry, this.supplementalAttributes, { experimental_decision: { "ai.decision.answers": { output: () => JSON.stringify(event.answers) } } }));
1554
1559
  state.rootSpan.end();
1555
1560
  this.cleanupCallState(event.callId);
1556
1561
  }
1562
+ experimental_onDecideStart(event) {
1563
+ this.experimental_onEvaluateStart(event);
1564
+ }
1565
+ experimental_onDecideEnd(event) {
1566
+ this.experimental_onEvaluateEnd(event);
1567
+ }
1568
+ experimental_onDecisionModelCallStart(event) {
1569
+ this.experimental_onEvaluationModelCallStart(event);
1570
+ }
1571
+ experimental_onDecisionModelCallEnd(event) {
1572
+ this.experimental_onEvaluationModelCallEnd(event);
1573
+ }
1574
+ /** @deprecated Use `experimental_onDecideStart` instead. */
1557
1575
  experimental_onEvaluateStart(event) {
1558
- this.onEvaluateOperationStart(event);
1576
+ this.onDecideOperationStart(event);
1559
1577
  }
1578
+ /** @deprecated Use `experimental_onDecideEnd` instead. */
1560
1579
  experimental_onEvaluateEnd(event) {
1561
- this.onEvaluateOperationEnd(event);
1580
+ this.onDecideOperationEnd(event);
1562
1581
  }
1582
+ /** @deprecated Use `experimental_onDecisionModelCallStart` instead. */
1563
1583
  experimental_onEvaluationModelCallStart(event) {
1564
1584
  const state = this.getCallState(event.callId);
1565
1585
  if (!state?.rootSpan || !state.rootContext) return;
1566
1586
  const attributes = selectAttributes$1(state.telemetry, {
1567
- "gen_ai.operation.name": "evaluate",
1587
+ "gen_ai.operation.name": "decide",
1568
1588
  "gen_ai.provider.name": mapProviderName(state.provider),
1569
1589
  "gen_ai.request.model": state.modelId,
1570
1590
  ...state.baseSupplementalAttributes,
1571
- ...selectSupplementalAttributes(state.telemetry, this.supplementalAttributes, { experimental_evaluation: {
1572
- "ai.evaluation.state": { input: () => JSON.stringify(event.state) },
1573
- "ai.evaluation.questions": { input: () => JSON.stringify(event.questions) }
1591
+ ...selectSupplementalAttributes(state.telemetry, this.supplementalAttributes, { experimental_decision: {
1592
+ "ai.decision.state": { input: () => JSON.stringify(event.state) },
1593
+ "ai.decision.questions": { input: () => JSON.stringify(event.questions) }
1574
1594
  } })
1575
1595
  });
1576
- const span = this.tracer.startSpan(`evaluate ${state.modelId}`, {
1596
+ const span = this.tracer.startSpan(`decide ${state.modelId}`, {
1577
1597
  attributes: this.getSpanAttributes({
1578
1598
  attributes,
1579
- spanType: "experimental_evaluation",
1599
+ spanType: "experimental_decision",
1580
1600
  operationId: event.operationId,
1581
1601
  callId: event.callId,
1582
1602
  runtimeContext: state.runtimeContext
1583
1603
  }),
1584
1604
  kind: SpanKind.CLIENT
1585
1605
  }, state.rootContext);
1586
- state.evaluationSpan = {
1606
+ state.decisionSpan = {
1587
1607
  span,
1588
1608
  context: trace.setSpan(state.rootContext, span)
1589
1609
  };
1590
1610
  }
1611
+ /** @deprecated Use `experimental_onDecisionModelCallEnd` instead. */
1591
1612
  experimental_onEvaluationModelCallEnd(event) {
1592
1613
  const state = this.getCallState(event.callId);
1593
- if (!state?.evaluationSpan) return;
1594
- state.evaluationSpan.span.setAttributes(selectAttributes$1(state.telemetry, {
1614
+ if (!state?.decisionSpan) return;
1615
+ state.decisionSpan.span.setAttributes(selectAttributes$1(state.telemetry, {
1595
1616
  "gen_ai.usage.input_tokens": event.usage?.inputTokens,
1596
1617
  "gen_ai.usage.output_tokens": event.usage?.outputTokens,
1597
1618
  ...selectSupplementalAttributes(state.telemetry, this.supplementalAttributes, {
1598
- experimental_evaluation: { "ai.evaluation.answers": { output: () => JSON.stringify(event.answers) } },
1619
+ experimental_decision: { "ai.decision.answers": { output: () => JSON.stringify(event.answers) } },
1599
1620
  providerMetadata: { "ai.response.providerMetadata": event.providerMetadata ? JSON.stringify(event.providerMetadata) : void 0 }
1600
1621
  })
1601
1622
  }));
1602
- state.evaluationSpan.span.end();
1603
- state.evaluationSpan = void 0;
1623
+ state.decisionSpan.span.end();
1624
+ state.decisionSpan = void 0;
1604
1625
  }
1605
1626
  onAbort(event) {
1606
1627
  const state = this.getCallState(event.callId);
@@ -1623,9 +1644,9 @@ var OpenTelemetry = class {
1623
1644
  state.rerankSpan.span.end();
1624
1645
  state.rerankSpan = void 0;
1625
1646
  }
1626
- if (state.evaluationSpan) {
1627
- state.evaluationSpan.span.end();
1628
- state.evaluationSpan = void 0;
1647
+ if (state.decisionSpan) {
1648
+ state.decisionSpan.span.end();
1649
+ state.decisionSpan = void 0;
1629
1650
  }
1630
1651
  state.rootSpan.end();
1631
1652
  this.cleanupCallState(event.callId);
@@ -1663,10 +1684,10 @@ var OpenTelemetry = class {
1663
1684
  state.rerankSpan.span.end();
1664
1685
  state.rerankSpan = void 0;
1665
1686
  }
1666
- if (state.evaluationSpan) {
1667
- recordErrorOnSpan(state.evaluationSpan.span, actualError);
1668
- state.evaluationSpan.span.end();
1669
- state.evaluationSpan = void 0;
1687
+ if (state.decisionSpan) {
1688
+ recordErrorOnSpan(state.decisionSpan.span, actualError);
1689
+ state.decisionSpan.span.end();
1690
+ state.decisionSpan = void 0;
1670
1691
  }
1671
1692
  recordErrorOnSpan(state.rootSpan, actualError);
1672
1693
  state.rootSpan.end();
@@ -1856,7 +1877,7 @@ var LegacyOpenTelemetry = class {
1856
1877
  stepContext: void 0,
1857
1878
  embedSpans: /* @__PURE__ */ new Map(),
1858
1879
  rerankSpan: void 0,
1859
- evaluationSpan: void 0,
1880
+ decisionSpan: void 0,
1860
1881
  toolSpans: /* @__PURE__ */ new Map(),
1861
1882
  baseTelemetryAttributes,
1862
1883
  settings: {}
@@ -1912,7 +1933,7 @@ var LegacyOpenTelemetry = class {
1912
1933
  stepContext: void 0,
1913
1934
  embedSpans: /* @__PURE__ */ new Map(),
1914
1935
  rerankSpan: void 0,
1915
- evaluationSpan: void 0,
1936
+ decisionSpan: void 0,
1916
1937
  toolSpans: /* @__PURE__ */ new Map(),
1917
1938
  baseTelemetryAttributes,
1918
1939
  settings
@@ -1970,7 +1991,7 @@ var LegacyOpenTelemetry = class {
1970
1991
  stepContext: void 0,
1971
1992
  embedSpans: /* @__PURE__ */ new Map(),
1972
1993
  rerankSpan: void 0,
1973
- evaluationSpan: void 0,
1994
+ decisionSpan: void 0,
1974
1995
  toolSpans: /* @__PURE__ */ new Map(),
1975
1996
  baseTelemetryAttributes,
1976
1997
  settings
@@ -2005,6 +2026,7 @@ var LegacyOpenTelemetry = class {
2005
2026
  onObjectStepEnd(event) {
2006
2027
  const state = this.getCallState(event.callId);
2007
2028
  if (!state?.stepSpan) return;
2029
+ if (event.finishReason === "error") state.stepSpan.setStatus({ code: SpanStatusCode.ERROR });
2008
2030
  const { telemetry } = state;
2009
2031
  state.stepSpan.setAttributes(selectAttributes(telemetry, {
2010
2032
  "ai.response.finishReason": event.finishReason,
@@ -2075,7 +2097,7 @@ var LegacyOpenTelemetry = class {
2075
2097
  stepContext: void 0,
2076
2098
  embedSpans: /* @__PURE__ */ new Map(),
2077
2099
  rerankSpan: void 0,
2078
- evaluationSpan: void 0,
2100
+ decisionSpan: void 0,
2079
2101
  toolSpans: /* @__PURE__ */ new Map(),
2080
2102
  baseTelemetryAttributes,
2081
2103
  settings
@@ -2150,6 +2172,7 @@ var LegacyOpenTelemetry = class {
2150
2172
  onStepEnd(event) {
2151
2173
  const state = this.getCallState(event.callId);
2152
2174
  if (!state?.stepSpan) return;
2175
+ if (event.finishReason === "error") state.stepSpan.setStatus({ code: SpanStatusCode.ERROR });
2153
2176
  const { telemetry } = state;
2154
2177
  const isStreamText = state.operationId === "ai.streamText";
2155
2178
  state.stepSpan.setAttributes(selectAttributes(telemetry, {
@@ -2251,6 +2274,7 @@ var LegacyOpenTelemetry = class {
2251
2274
  onGenerateEnd(event) {
2252
2275
  const state = this.getCallState(event.callId);
2253
2276
  if (!state?.rootSpan) return;
2277
+ if (event.finishReason === "error") state.rootSpan.setStatus({ code: SpanStatusCode.ERROR });
2254
2278
  const { telemetry } = state;
2255
2279
  state.rootSpan.setAttributes(selectAttributes(telemetry, {
2256
2280
  "ai.response.finishReason": event.finishReason,
@@ -2284,6 +2308,7 @@ var LegacyOpenTelemetry = class {
2284
2308
  onObjectOperationEnd(event) {
2285
2309
  const state = this.getCallState(event.callId);
2286
2310
  if (!state?.rootSpan) return;
2311
+ if (event.finishReason === "error") state.rootSpan.setStatus({ code: SpanStatusCode.ERROR });
2287
2312
  const { telemetry } = state;
2288
2313
  state.rootSpan.setAttributes(selectAttributes(telemetry, {
2289
2314
  "ai.response.finishReason": event.finishReason,
@@ -2378,7 +2403,7 @@ var LegacyOpenTelemetry = class {
2378
2403
  stepContext: void 0,
2379
2404
  embedSpans: /* @__PURE__ */ new Map(),
2380
2405
  rerankSpan: void 0,
2381
- evaluationSpan: void 0,
2406
+ decisionSpan: void 0,
2382
2407
  toolSpans: /* @__PURE__ */ new Map(),
2383
2408
  baseTelemetryAttributes,
2384
2409
  settings
@@ -2420,7 +2445,7 @@ var LegacyOpenTelemetry = class {
2420
2445
  span.end();
2421
2446
  state.rerankSpan = void 0;
2422
2447
  }
2423
- onEvaluateOperationStart(event) {
2448
+ onDecideOperationStart(event) {
2424
2449
  const telemetry = {
2425
2450
  recordInputs: event.recordInputs,
2426
2451
  recordOutputs: event.recordOutputs,
@@ -2442,8 +2467,8 @@ var LegacyOpenTelemetry = class {
2442
2467
  telemetry
2443
2468
  }),
2444
2469
  ...baseTelemetryAttributes,
2445
- "ai.evaluation.state": { input: () => JSON.stringify(event.state) },
2446
- "ai.evaluation.questions": { input: () => JSON.stringify(event.questions) }
2470
+ "ai.decision.state": { input: () => JSON.stringify(event.state) },
2471
+ "ai.decision.questions": { input: () => JSON.stringify(event.questions) }
2447
2472
  });
2448
2473
  const rootSpan = this.tracer.startSpan(event.operationId, { attributes });
2449
2474
  const rootContext = trace.setSpan(context.active(), rootSpan);
@@ -2456,25 +2481,40 @@ var LegacyOpenTelemetry = class {
2456
2481
  stepContext: void 0,
2457
2482
  embedSpans: /* @__PURE__ */ new Map(),
2458
2483
  rerankSpan: void 0,
2459
- evaluationSpan: void 0,
2484
+ decisionSpan: void 0,
2460
2485
  toolSpans: /* @__PURE__ */ new Map(),
2461
2486
  baseTelemetryAttributes,
2462
2487
  settings
2463
2488
  });
2464
2489
  }
2465
- onEvaluateOperationEnd(event) {
2490
+ onDecideOperationEnd(event) {
2466
2491
  const state = this.getCallState(event.callId);
2467
2492
  if (!state?.rootSpan) return;
2468
- state.rootSpan.setAttributes(selectAttributes(state.telemetry, { "ai.evaluation.answers": { output: () => JSON.stringify(event.answers) } }));
2493
+ state.rootSpan.setAttributes(selectAttributes(state.telemetry, { "ai.decision.answers": { output: () => JSON.stringify(event.answers) } }));
2469
2494
  state.rootSpan.end();
2470
2495
  this.cleanupCallState(event.callId);
2471
2496
  }
2497
+ experimental_onDecideStart(event) {
2498
+ this.experimental_onEvaluateStart(event);
2499
+ }
2500
+ experimental_onDecideEnd(event) {
2501
+ this.experimental_onEvaluateEnd(event);
2502
+ }
2503
+ experimental_onDecisionModelCallStart(event) {
2504
+ this.experimental_onEvaluationModelCallStart(event);
2505
+ }
2506
+ experimental_onDecisionModelCallEnd(event) {
2507
+ this.experimental_onEvaluationModelCallEnd(event);
2508
+ }
2509
+ /** @deprecated Use `experimental_onDecideStart` instead. */
2472
2510
  experimental_onEvaluateStart(event) {
2473
- this.onEvaluateOperationStart(event);
2511
+ this.onDecideOperationStart(event);
2474
2512
  }
2513
+ /** @deprecated Use `experimental_onDecideEnd` instead. */
2475
2514
  experimental_onEvaluateEnd(event) {
2476
- this.onEvaluateOperationEnd(event);
2515
+ this.onDecideOperationEnd(event);
2477
2516
  }
2517
+ /** @deprecated Use `experimental_onDecisionModelCallStart` instead. */
2478
2518
  experimental_onEvaluationModelCallStart(event) {
2479
2519
  const state = this.getCallState(event.callId);
2480
2520
  if (!state?.rootSpan || !state.rootContext) return;
@@ -2484,26 +2524,27 @@ var LegacyOpenTelemetry = class {
2484
2524
  telemetry: state.telemetry
2485
2525
  }),
2486
2526
  ...state.baseTelemetryAttributes,
2487
- "ai.evaluation.state": { input: () => JSON.stringify(event.state) },
2488
- "ai.evaluation.questions": { input: () => JSON.stringify(event.questions) }
2527
+ "ai.decision.state": { input: () => JSON.stringify(event.state) },
2528
+ "ai.decision.questions": { input: () => JSON.stringify(event.questions) }
2489
2529
  });
2490
2530
  const span = this.tracer.startSpan(event.operationId, { attributes }, state.rootContext);
2491
- state.evaluationSpan = {
2531
+ state.decisionSpan = {
2492
2532
  span,
2493
2533
  context: trace.setSpan(state.rootContext, span)
2494
2534
  };
2495
2535
  }
2536
+ /** @deprecated Use `experimental_onDecisionModelCallEnd` instead. */
2496
2537
  experimental_onEvaluationModelCallEnd(event) {
2497
2538
  const state = this.getCallState(event.callId);
2498
- if (!state?.evaluationSpan) return;
2499
- state.evaluationSpan.span.setAttributes(selectAttributes(state.telemetry, {
2500
- "ai.evaluation.answers": { output: () => JSON.stringify(event.answers) },
2539
+ if (!state?.decisionSpan) return;
2540
+ state.decisionSpan.span.setAttributes(selectAttributes(state.telemetry, {
2541
+ "ai.decision.answers": { output: () => JSON.stringify(event.answers) },
2501
2542
  "ai.usage.inputTokens": event.usage?.inputTokens,
2502
2543
  "ai.usage.outputTokens": event.usage?.outputTokens,
2503
2544
  "ai.response.providerMetadata": event.providerMetadata ? JSON.stringify(event.providerMetadata) : void 0
2504
2545
  }));
2505
- state.evaluationSpan.span.end();
2506
- state.evaluationSpan = void 0;
2546
+ state.decisionSpan.span.end();
2547
+ state.decisionSpan = void 0;
2507
2548
  }
2508
2549
  onAbort(event) {
2509
2550
  const state = this.getCallState(event.callId);
@@ -2521,9 +2562,9 @@ var LegacyOpenTelemetry = class {
2521
2562
  state.rerankSpan.span.end();
2522
2563
  state.rerankSpan = void 0;
2523
2564
  }
2524
- if (state.evaluationSpan) {
2525
- state.evaluationSpan.span.end();
2526
- state.evaluationSpan = void 0;
2565
+ if (state.decisionSpan) {
2566
+ state.decisionSpan.span.end();
2567
+ state.decisionSpan = void 0;
2527
2568
  }
2528
2569
  state.rootSpan.end();
2529
2570
  this.cleanupCallState(event.callId);
@@ -2548,10 +2589,10 @@ var LegacyOpenTelemetry = class {
2548
2589
  state.rerankSpan.span.end();
2549
2590
  state.rerankSpan = void 0;
2550
2591
  }
2551
- if (state.evaluationSpan) {
2552
- recordSpanError(state.evaluationSpan.span, actualError);
2553
- state.evaluationSpan.span.end();
2554
- state.evaluationSpan = void 0;
2592
+ if (state.decisionSpan) {
2593
+ recordSpanError(state.decisionSpan.span, actualError);
2594
+ state.decisionSpan.span.end();
2595
+ state.decisionSpan = void 0;
2555
2596
  }
2556
2597
  recordSpanError(state.rootSpan, actualError);
2557
2598
  state.rootSpan.end();