@brizz/sdk 0.1.0 → 0.1.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 (89) hide show
  1. package/dist/index.js +26 -9
  2. package/dist/index.js.map +1 -1
  3. package/dist/internal/config.js +15 -11
  4. package/dist/internal/config.js.map +1 -1
  5. package/dist/internal/instrumentation/auto-init.d.ts.map +1 -1
  6. package/dist/internal/instrumentation/auto-init.js +35 -30
  7. package/dist/internal/instrumentation/auto-init.js.map +1 -1
  8. package/dist/internal/instrumentation/index.js +5 -1
  9. package/dist/internal/instrumentation/index.js.map +1 -1
  10. package/dist/internal/instrumentation/registry.d.ts +1 -0
  11. package/dist/internal/instrumentation/registry.d.ts.map +1 -1
  12. package/dist/internal/instrumentation/registry.js +37 -31
  13. package/dist/internal/instrumentation/registry.js.map +1 -1
  14. package/dist/internal/instrumentation/vercel-ai/index.d.ts +4 -0
  15. package/dist/internal/instrumentation/vercel-ai/index.d.ts.map +1 -0
  16. package/dist/internal/instrumentation/vercel-ai/index.js +8 -0
  17. package/dist/internal/instrumentation/vercel-ai/index.js.map +1 -0
  18. package/dist/internal/instrumentation/vercel-ai/instrumentation.d.ts +16 -0
  19. package/dist/internal/instrumentation/vercel-ai/instrumentation.d.ts.map +1 -0
  20. package/dist/internal/instrumentation/vercel-ai/instrumentation.js +119 -0
  21. package/dist/internal/instrumentation/vercel-ai/instrumentation.js.map +1 -0
  22. package/dist/internal/instrumentation/vercel-ai/patchers/base-patcher.d.ts +24 -0
  23. package/dist/internal/instrumentation/vercel-ai/patchers/base-patcher.d.ts.map +1 -0
  24. package/dist/internal/instrumentation/vercel-ai/patchers/base-patcher.js +57 -0
  25. package/dist/internal/instrumentation/vercel-ai/patchers/base-patcher.js.map +1 -0
  26. package/dist/internal/instrumentation/vercel-ai/patchers/embeddings-patcher.d.ts +16 -0
  27. package/dist/internal/instrumentation/vercel-ai/patchers/embeddings-patcher.d.ts.map +1 -0
  28. package/dist/internal/instrumentation/vercel-ai/patchers/embeddings-patcher.js +58 -0
  29. package/dist/internal/instrumentation/vercel-ai/patchers/embeddings-patcher.js.map +1 -0
  30. package/dist/internal/instrumentation/vercel-ai/patchers/generate-text-patcher.d.ts +8 -0
  31. package/dist/internal/instrumentation/vercel-ai/patchers/generate-text-patcher.d.ts.map +1 -0
  32. package/dist/internal/instrumentation/vercel-ai/patchers/generate-text-patcher.js +59 -0
  33. package/dist/internal/instrumentation/vercel-ai/patchers/generate-text-patcher.js.map +1 -0
  34. package/dist/internal/instrumentation/vercel-ai/patchers/index.d.ts +5 -0
  35. package/dist/internal/instrumentation/vercel-ai/patchers/index.d.ts.map +1 -0
  36. package/dist/internal/instrumentation/vercel-ai/patchers/index.js +12 -0
  37. package/dist/internal/instrumentation/vercel-ai/patchers/index.js.map +1 -0
  38. package/dist/internal/instrumentation/vercel-ai/patchers/stream-text-patcher.d.ts +12 -0
  39. package/dist/internal/instrumentation/vercel-ai/patchers/stream-text-patcher.d.ts.map +1 -0
  40. package/dist/internal/instrumentation/vercel-ai/patchers/stream-text-patcher.js +41 -0
  41. package/dist/internal/instrumentation/vercel-ai/patchers/stream-text-patcher.js.map +1 -0
  42. package/dist/internal/instrumentation/vercel-ai/semconv.d.ts +53 -0
  43. package/dist/internal/instrumentation/vercel-ai/semconv.d.ts.map +1 -0
  44. package/dist/internal/instrumentation/vercel-ai/semconv.js +57 -0
  45. package/dist/internal/instrumentation/vercel-ai/semconv.js.map +1 -0
  46. package/dist/internal/instrumentation/vercel-ai/stream-handler.d.ts +13 -0
  47. package/dist/internal/instrumentation/vercel-ai/stream-handler.d.ts.map +1 -0
  48. package/dist/internal/instrumentation/vercel-ai/stream-handler.js +101 -0
  49. package/dist/internal/instrumentation/vercel-ai/stream-handler.js.map +1 -0
  50. package/dist/internal/instrumentation/vercel-ai/telemetry-recorder.d.ts +13 -0
  51. package/dist/internal/instrumentation/vercel-ai/telemetry-recorder.d.ts.map +1 -0
  52. package/dist/internal/instrumentation/vercel-ai/telemetry-recorder.js +115 -0
  53. package/dist/internal/instrumentation/vercel-ai/telemetry-recorder.js.map +1 -0
  54. package/dist/internal/instrumentation/vercel-ai/types.d.ts +197 -0
  55. package/dist/internal/instrumentation/vercel-ai/types.d.ts.map +1 -0
  56. package/dist/internal/instrumentation/vercel-ai/types.js +3 -0
  57. package/dist/internal/instrumentation/vercel-ai/types.js.map +1 -0
  58. package/dist/internal/instrumentation/vercel-ai/utils.d.ts +14 -0
  59. package/dist/internal/instrumentation/vercel-ai/utils.d.ts.map +1 -0
  60. package/dist/internal/instrumentation/vercel-ai/utils.js +243 -0
  61. package/dist/internal/instrumentation/vercel-ai/utils.js.map +1 -0
  62. package/dist/internal/log/index.js +6 -1
  63. package/dist/internal/log/index.js.map +1 -1
  64. package/dist/internal/log/logging.js +45 -40
  65. package/dist/internal/log/logging.js.map +1 -1
  66. package/dist/internal/logger.js +28 -20
  67. package/dist/internal/logger.js.map +1 -1
  68. package/dist/internal/masking/index.js +8 -2
  69. package/dist/internal/masking/index.js.map +1 -1
  70. package/dist/internal/masking/patterns.js +4 -1
  71. package/dist/internal/masking/patterns.js.map +1 -1
  72. package/dist/internal/masking/types.js +2 -1
  73. package/dist/internal/masking/utils.js +20 -14
  74. package/dist/internal/masking/utils.js.map +1 -1
  75. package/dist/internal/metric/index.js +7 -1
  76. package/dist/internal/metric/index.js.map +1 -1
  77. package/dist/internal/metric/metrics.js +26 -20
  78. package/dist/internal/metric/metrics.js.map +1 -1
  79. package/dist/internal/sdk.js +57 -53
  80. package/dist/internal/sdk.js.map +1 -1
  81. package/dist/internal/trace/index.js +10 -2
  82. package/dist/internal/trace/index.js.map +1 -1
  83. package/dist/internal/trace/processors/log-masked.js +19 -13
  84. package/dist/internal/trace/processors/log-masked.js.map +1 -1
  85. package/dist/internal/trace/processors/span-masked.js +21 -15
  86. package/dist/internal/trace/processors/span-masked.js.map +1 -1
  87. package/dist/internal/trace/tracing.js +30 -24
  88. package/dist/internal/trace/tracing.js.map +1 -1
  89. package/package.json +40 -31
@@ -0,0 +1,24 @@
1
+ import type { Span, Tracer } from '@opentelemetry/api';
2
+ import type { VercelAIInstrumentationConfig, GenerationParams, ProviderInfo, AIMessage } from '../types';
3
+ export interface IPatcherContext {
4
+ tracer: Tracer;
5
+ getConfig: () => VercelAIInstrumentationConfig;
6
+ recordTokenMetrics: (usage: any, system: string, model: string) => void;
7
+ recordDurationMetric: (duration: number, system: string, model: string, operation: string) => void;
8
+ emitMessageEvents: (messages: AIMessage[], system: string, span: Span) => void;
9
+ emitAssistantMessageEvent: (text: string, system: string, span: Span) => void;
10
+ }
11
+ export type PatcherContext = IPatcherContext;
12
+ export declare abstract class BasePatcher {
13
+ protected context: PatcherContext;
14
+ constructor(context: PatcherContext);
15
+ protected createSpan(spanName: string, params: GenerationParams, operationName: string, additionalAttributes?: Record<string, any>): {
16
+ span: Span;
17
+ provider: ProviderInfo;
18
+ modelId: string;
19
+ };
20
+ protected handleError(error: unknown, span: Span): void;
21
+ protected finalizeDuration(span: Span, startTime: number, config: VercelAIInstrumentationConfig, provider: ProviderInfo, modelId: string, operationName: string): void;
22
+ abstract patch(original: Function): Function;
23
+ }
24
+ //# sourceMappingURL=base-patcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-patcher.d.ts","sourceRoot":"","sources":["../../../../../src/internal/instrumentation/vercel-ai/patchers/base-patcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAevD,OAAO,KAAK,EAAE,6BAA6B,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGzG,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,6BAA6B,CAAC;IAE/C,kBAAkB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxE,oBAAoB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACnG,iBAAiB,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/E,yBAAyB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;CAC/E;AAGD,MAAM,MAAM,cAAc,GAAG,eAAe,CAAC;AAE7C,8BAAsB,WAAW;IACnB,SAAS,CAAC,OAAO,EAAE,cAAc;gBAAvB,OAAO,EAAE,cAAc;IAE7C,SAAS,CAAC,UAAU,CAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,gBAAgB,EACxB,aAAa,EAAE,MAAM,EAErB,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACzC;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAiC1D,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;IAOvD,SAAS,CAAC,gBAAgB,CACxB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,6BAA6B,EACrC,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACpB,IAAI;IASP,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ;CAC7C"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BasePatcher = void 0;
4
+ const api_1 = require("@opentelemetry/api");
5
+ const semconv_1 = require("../semconv");
6
+ const utils_1 = require("../utils");
7
+ class BasePatcher {
8
+ context;
9
+ constructor(context) {
10
+ this.context = context;
11
+ }
12
+ createSpan(spanName, params, operationName, additionalAttributes) {
13
+ const provider = (0, utils_1.detectProvider)(params.model);
14
+ const modelId = (0, utils_1.extractModelId)(params.model);
15
+ const span = this.context.tracer.startSpan(spanName, {
16
+ kind: api_1.SpanKind.CLIENT,
17
+ attributes: {
18
+ [semconv_1.ATTR_GEN_AI_SYSTEM]: provider.system,
19
+ [semconv_1.ATTR_GEN_AI_OPERATION_NAME]: operationName,
20
+ [semconv_1.ATTR_GEN_AI_REQUEST_MODEL]: modelId,
21
+ ...(params.maxTokens && { [semconv_1.ATTR_GEN_AI_REQUEST_MAX_TOKENS]: params.maxTokens }),
22
+ ...(params.temperature !== undefined && {
23
+ [semconv_1.ATTR_GEN_AI_REQUEST_TEMPERATURE]: params.temperature,
24
+ }),
25
+ ...(params.topP !== undefined && { [semconv_1.ATTR_GEN_AI_REQUEST_TOP_P]: params.topP }),
26
+ ...(params.topK !== undefined && { [semconv_1.ATTR_GEN_AI_REQUEST_TOP_K]: params.topK }),
27
+ ...(params.frequencyPenalty !== undefined && {
28
+ [semconv_1.ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY]: params.frequencyPenalty,
29
+ }),
30
+ ...(params.presencePenalty !== undefined && {
31
+ [semconv_1.ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY]: params.presencePenalty,
32
+ }),
33
+ ...(params.stopSequences && {
34
+ [semconv_1.ATTR_GEN_AI_REQUEST_STOP_SEQUENCES]: params.stopSequences,
35
+ }),
36
+ ...(provider.apiBase && { [semconv_1.ATTR_GEN_AI_OPENAI_API_BASE]: provider.apiBase }),
37
+ ...additionalAttributes,
38
+ },
39
+ });
40
+ return { span, provider, modelId };
41
+ }
42
+ handleError(error, span) {
43
+ if ((0, utils_1.shouldRecordError)(error)) {
44
+ span.recordException(error);
45
+ span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: error.message });
46
+ }
47
+ }
48
+ finalizeDuration(span, startTime, config, provider, modelId, operationName) {
49
+ if (config.enableMetrics) {
50
+ const duration = (globalThis.performance.now() - startTime) / 1000;
51
+ this.context.recordDurationMetric(duration, provider.system, modelId, operationName);
52
+ }
53
+ span.end();
54
+ }
55
+ }
56
+ exports.BasePatcher = BasePatcher;
57
+ //# sourceMappingURL=base-patcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-patcher.js","sourceRoot":"","sources":["../../../../../src/internal/instrumentation/vercel-ai/patchers/base-patcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { EmbeddingResult } from '../types';
2
+ import { BasePatcher } from './base-patcher';
3
+ interface IEmbeddingParams {
4
+ value?: string;
5
+ values?: string[];
6
+ model?: string | {
7
+ [key: string]: unknown;
8
+ };
9
+ [key: string]: unknown;
10
+ }
11
+ type OriginalEmbedFunction = (params: IEmbeddingParams) => Promise<EmbeddingResult>;
12
+ export declare class EmbeddingsPatcher extends BasePatcher {
13
+ patch(original: OriginalEmbedFunction, isMany?: boolean): OriginalEmbedFunction;
14
+ }
15
+ export {};
16
+ //# sourceMappingURL=embeddings-patcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings-patcher.d.ts","sourceRoot":"","sources":["../../../../../src/internal/instrumentation/vercel-ai/patchers/embeddings-patcher.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAkC,MAAM,UAAU,CAAC;AAGhF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,KAAK,qBAAqB,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AASpF,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,KAAK,CAAC,QAAQ,EAAE,qBAAqB,EAAE,MAAM,GAAE,OAAe,GAAG,qBAAqB;CAiEvF"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EmbeddingsPatcher = void 0;
4
+ const api_1 = require("@opentelemetry/api");
5
+ const semconv_1 = require("../semconv");
6
+ const utils_1 = require("../utils");
7
+ const base_patcher_1 = require("./base-patcher");
8
+ class EmbeddingsPatcher extends base_patcher_1.BasePatcher {
9
+ patch(original, isMany = false) {
10
+ return async (params) => {
11
+ const config = this.context.getConfig();
12
+ const startTime = globalThis.performance.now();
13
+ const additionalAttributes = isMany
14
+ ? { 'gen_ai.embeddings.count': params.values ? params.values.length : 0 }
15
+ : {};
16
+ const { span, provider, modelId } = this.createSpan(semconv_1.SPAN_NAME_GEN_AI_EMBEDDINGS, params, semconv_1.OPERATION_NAME_EMBEDDINGS, additionalAttributes);
17
+ if (!isMany && config.captureMessageContent && params.value) {
18
+ span.setAttribute('gen_ai.prompt.0.content', params.value);
19
+ }
20
+ try {
21
+ const result = await api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => original(params));
22
+ if (result.response) {
23
+ span.setAttributes({
24
+ ...(result.response.id && { [semconv_1.ATTR_GEN_AI_RESPONSE_ID]: result.response.id }),
25
+ ...(result.response.model && { [semconv_1.ATTR_GEN_AI_RESPONSE_MODEL]: result.response.model }),
26
+ });
27
+ }
28
+ if (isMany) {
29
+ if (result.embeddings && result.embeddings.length > 0 && result.embeddings[0]) {
30
+ span.setAttribute('gen_ai.response.embedding_dimensions', result.embeddings[0].length);
31
+ }
32
+ }
33
+ else {
34
+ if (result.embedding) {
35
+ span.setAttribute('gen_ai.response.embedding_dimensions', result.embedding.length);
36
+ }
37
+ }
38
+ if (result.usage) {
39
+ span.setAttributes((0, utils_1.tokenUsageToAttributes)(result.usage));
40
+ if (config.enableMetrics) {
41
+ this.context.recordTokenMetrics(result.usage, provider.system, modelId);
42
+ }
43
+ }
44
+ span.setStatus({ code: api_1.SpanStatusCode.OK });
45
+ return result;
46
+ }
47
+ catch (error) {
48
+ this.handleError(error, span);
49
+ throw error;
50
+ }
51
+ finally {
52
+ this.finalizeDuration(span, startTime, config, provider, modelId, semconv_1.OPERATION_NAME_EMBEDDINGS);
53
+ }
54
+ };
55
+ }
56
+ }
57
+ exports.EmbeddingsPatcher = EmbeddingsPatcher;
58
+ //# sourceMappingURL=embeddings-patcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings-patcher.js","sourceRoot":"","sources":["../../../../../src/internal/instrumentation/vercel-ai/patchers/embeddings-patcher.ts"],"names":[],"mappings":";;;AAAA,4CAAoE;AAGpE,wCAKoB;AAEpB,oCAAkD;AAElD,iDAA6C;AAmB7C,MAAa,iBAAkB,SAAQ,0BAAW;IAChD,KAAK,CAAC,QAA+B,EAAE,SAAkB,KAAK;QAC5D,OAAO,KAAK,EAAE,MAAwB,EAA4B,EAAE;YAClE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YAE/C,MAAM,oBAAoB,GAAG,MAAM;gBACjC,CAAC,CAAC,EAAE,yBAAyB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzE,CAAC,CAAC,EAAE,CAAC;YAEP,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,CACjD,qCAA2B,EAC3B,MAA0B,EAC1B,mCAAyB,EACzB,oBAAoB,CACA,CAAC;YAGvB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,qBAAqB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC5D,IAAI,CAAC,YAAY,CAAC,yBAAyB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7D,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,aAAO,CAAC,IAAI,CAAC,WAAK,CAAC,OAAO,CAAC,aAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAC5E,QAAQ,CAAC,MAAM,CAAC,CACjB,CAAC;gBAGF,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACpB,IAAI,CAAC,aAAa,CAAC;wBACjB,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,iCAAuB,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;wBAC5E,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,oCAA0B,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;qBACtF,CAAC,CAAC;gBACL,CAAC;gBAGD,IAAI,MAAM,EAAE,CAAC;oBACX,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC9E,IAAI,CAAC,YAAY,CAAC,sCAAsC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;oBACzF,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;wBACrB,IAAI,CAAC,YAAY,CAAC,sCAAsC,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBACrF,CAAC;gBACH,CAAC;gBAGD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACjB,IAAI,CAAC,aAAa,CAAC,IAAA,8BAAsB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oBAGzD,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;wBACzB,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAC1E,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,oBAAc,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC5C,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC9B,MAAM,KAAK,CAAC;YACd,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,mCAAyB,CAAC,CAAC;YAC/F,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;CACF;AAlED,8CAkEC"}
@@ -0,0 +1,8 @@
1
+ import type { GenerationParams, TextGenerationResult } from '../types';
2
+ import { BasePatcher } from './base-patcher';
3
+ type OriginalGenerateTextFunction = (params: GenerationParams) => Promise<TextGenerationResult>;
4
+ export declare class GenerateTextPatcher extends BasePatcher {
5
+ patch(original: OriginalGenerateTextFunction): OriginalGenerateTextFunction;
6
+ }
7
+ export {};
8
+ //# sourceMappingURL=generate-text-patcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-text-patcher.d.ts","sourceRoot":"","sources":["../../../../../src/internal/instrumentation/vercel-ai/patchers/generate-text-patcher.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAgB,MAAM,UAAU,CAAC;AAGrF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,KAAK,4BAA4B,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAShG,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,KAAK,CAAC,QAAQ,EAAE,4BAA4B,GAAG,4BAA4B;CAoF5E"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GenerateTextPatcher = void 0;
4
+ const api_1 = require("@opentelemetry/api");
5
+ const semconv_1 = require("../semconv");
6
+ const utils_1 = require("../utils");
7
+ const base_patcher_1 = require("./base-patcher");
8
+ class GenerateTextPatcher extends base_patcher_1.BasePatcher {
9
+ patch(original) {
10
+ return async (params) => {
11
+ const config = this.context.getConfig();
12
+ const startTime = globalThis.performance.now();
13
+ const { span, provider, modelId } = this.createSpan(semconv_1.SPAN_NAME_GEN_AI_CHAT, params, semconv_1.OPERATION_NAME_CHAT);
14
+ if (params.prompt) {
15
+ span.setAttributes((0, utils_1.promptToAttributes)(params.prompt, config.captureMessageContent || false));
16
+ }
17
+ else if (params.messages) {
18
+ span.setAttributes((0, utils_1.messagesToAttributes)(params.messages, 'gen_ai.prompt', config.captureMessageContent || false));
19
+ if (config.emitEvents) {
20
+ this.context.emitMessageEvents(params.messages, provider.system, span);
21
+ }
22
+ }
23
+ try {
24
+ const result = await api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => original(params));
25
+ if (result.response) {
26
+ span.setAttributes({
27
+ ...(result.response.id && { [semconv_1.ATTR_GEN_AI_RESPONSE_ID]: result.response.id }),
28
+ ...(result.response.model && { [semconv_1.ATTR_GEN_AI_RESPONSE_MODEL]: result.response.model }),
29
+ });
30
+ }
31
+ if (result.finishReason) {
32
+ span.setAttribute(semconv_1.ATTR_GEN_AI_RESPONSE_FINISH_REASONS, [result.finishReason]);
33
+ }
34
+ span.setAttributes((0, utils_1.completionToAttributes)(result.text, result.finishReason, config.captureMessageContent || false));
35
+ const usage = result.usage || result.totalUsage || result.steps?.[0]?.usage;
36
+ if (usage) {
37
+ span.setAttributes((0, utils_1.tokenUsageToAttributes)(usage));
38
+ if (config.enableMetrics) {
39
+ this.context.recordTokenMetrics(usage, provider.system, modelId);
40
+ }
41
+ }
42
+ if (config.emitEvents) {
43
+ this.context.emitAssistantMessageEvent(result.text, provider.system, span);
44
+ }
45
+ span.setStatus({ code: api_1.SpanStatusCode.OK });
46
+ return result;
47
+ }
48
+ catch (error) {
49
+ this.handleError(error, span);
50
+ throw error;
51
+ }
52
+ finally {
53
+ this.finalizeDuration(span, startTime, config, provider, modelId, semconv_1.OPERATION_NAME_CHAT);
54
+ }
55
+ };
56
+ }
57
+ }
58
+ exports.GenerateTextPatcher = GenerateTextPatcher;
59
+ //# sourceMappingURL=generate-text-patcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-text-patcher.js","sourceRoot":"","sources":["../../../../../src/internal/instrumentation/vercel-ai/patchers/generate-text-patcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { BasePatcher, type PatcherContext } from './base-patcher';
2
+ export { GenerateTextPatcher } from './generate-text-patcher';
3
+ export { StreamTextPatcher } from './stream-text-patcher';
4
+ export { EmbeddingsPatcher } from './embeddings-patcher';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/instrumentation/vercel-ai/patchers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EmbeddingsPatcher = exports.StreamTextPatcher = exports.GenerateTextPatcher = exports.BasePatcher = void 0;
4
+ var base_patcher_1 = require("./base-patcher");
5
+ Object.defineProperty(exports, "BasePatcher", { enumerable: true, get: function () { return base_patcher_1.BasePatcher; } });
6
+ var generate_text_patcher_1 = require("./generate-text-patcher");
7
+ Object.defineProperty(exports, "GenerateTextPatcher", { enumerable: true, get: function () { return generate_text_patcher_1.GenerateTextPatcher; } });
8
+ var stream_text_patcher_1 = require("./stream-text-patcher");
9
+ Object.defineProperty(exports, "StreamTextPatcher", { enumerable: true, get: function () { return stream_text_patcher_1.StreamTextPatcher; } });
10
+ var embeddings_patcher_1 = require("./embeddings-patcher");
11
+ Object.defineProperty(exports, "EmbeddingsPatcher", { enumerable: true, get: function () { return embeddings_patcher_1.EmbeddingsPatcher; } });
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/instrumentation/vercel-ai/patchers/index.ts"],"names":[],"mappings":";;;AAAA,+CAAkE;AAAzD,2GAAA,WAAW,OAAA;AACpB,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAC5B,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA;AAC1B,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA"}
@@ -0,0 +1,12 @@
1
+ import type { StreamHandler } from '../stream-handler';
2
+ import type { GenerationParams } from '../types';
3
+ import { BasePatcher } from './base-patcher';
4
+ import type { PatcherContext } from './base-patcher';
5
+ type OriginalStreamTextFunction = (params: GenerationParams) => Promise<unknown>;
6
+ export declare class StreamTextPatcher extends BasePatcher {
7
+ private streamHandler;
8
+ constructor(context: PatcherContext, streamHandler: StreamHandler);
9
+ patch(original: OriginalStreamTextFunction): OriginalStreamTextFunction;
10
+ }
11
+ export {};
12
+ //# sourceMappingURL=stream-text-patcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-text-patcher.d.ts","sourceRoot":"","sources":["../../../../../src/internal/instrumentation/vercel-ai/patchers/stream-text-patcher.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,UAAU,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,KAAK,0BAA0B,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAUjF,qBAAa,iBAAkB,SAAQ,WAAW;IAG9C,OAAO,CAAC,aAAa;gBADrB,OAAO,EAAE,cAAc,EACf,aAAa,EAAE,aAAa;IAKtC,KAAK,CAAC,QAAQ,EAAE,0BAA0B,GAAG,0BAA0B;CA8CxE"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StreamTextPatcher = void 0;
4
+ const api_1 = require("@opentelemetry/api");
5
+ const semconv_1 = require("../semconv");
6
+ const utils_1 = require("../utils");
7
+ const base_patcher_1 = require("./base-patcher");
8
+ class StreamTextPatcher extends base_patcher_1.BasePatcher {
9
+ streamHandler;
10
+ constructor(context, streamHandler) {
11
+ super(context);
12
+ this.streamHandler = streamHandler;
13
+ }
14
+ patch(original) {
15
+ return async (params) => {
16
+ const config = this.context.getConfig();
17
+ const startTime = globalThis.performance.now();
18
+ const { span, provider, modelId } = this.createSpan(semconv_1.SPAN_NAME_GEN_AI_CHAT, params, semconv_1.OPERATION_NAME_CHAT, { 'gen_ai.streaming': true });
19
+ if (params.prompt) {
20
+ span.setAttributes((0, utils_1.promptToAttributes)(params.prompt, config.captureMessageContent || false));
21
+ }
22
+ else if (params.messages) {
23
+ span.setAttributes((0, utils_1.messagesToAttributes)(params.messages, 'gen_ai.prompt', config.captureMessageContent || false));
24
+ if (config.emitEvents) {
25
+ this.context.emitMessageEvents(params.messages, provider.system, span);
26
+ }
27
+ }
28
+ try {
29
+ const stream = await api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => original(params));
30
+ return this.streamHandler.wrapStream(stream, span, config, provider, modelId, startTime);
31
+ }
32
+ catch (error) {
33
+ this.handleError(error, span);
34
+ span.end();
35
+ throw error;
36
+ }
37
+ };
38
+ }
39
+ }
40
+ exports.StreamTextPatcher = StreamTextPatcher;
41
+ //# sourceMappingURL=stream-text-patcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-text-patcher.js","sourceRoot":"","sources":["../../../../../src/internal/instrumentation/vercel-ai/patchers/stream-text-patcher.ts"],"names":[],"mappings":";;;AAAA,4CAAoD;AAGpD,wCAGoB;AAGpB,oCAAoE;AAEpE,iDAA6C;AAc7C,MAAa,iBAAkB,SAAQ,0BAAW;IAGtC;IAFV,YACE,OAAuB,EACf,aAA4B;QAEpC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFP,kBAAa,GAAb,aAAa,CAAe;IAGtC,CAAC;IAED,KAAK,CAAC,QAAoC;QACxC,OAAO,KAAK,EAAE,MAAwB,EAAoB,EAAE;YAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YAE/C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,CACjD,+BAAqB,EACrB,MAAM,EACN,6BAAmB,EACnB,EAAE,kBAAkB,EAAE,IAAI,EAAE,CACR,CAAC;YAGvB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,IAAI,CAAC,aAAa,CAChB,IAAA,0BAAkB,EAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,qBAAqB,IAAI,KAAK,CAAC,CACzE,CAAC;YACJ,CAAC;iBAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC,aAAa,CAChB,IAAA,4BAAoB,EAClB,MAAM,CAAC,QAAQ,EACf,eAAe,EACf,MAAM,CAAC,qBAAqB,IAAI,KAAK,CACtC,CACF,CAAC;gBAGF,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACtB,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,aAAO,CAAC,IAAI,CAAC,WAAK,CAAC,OAAO,CAAC,aAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAC5E,QAAQ,CAAC,MAAM,CAAC,CACjB,CAAC;gBAGF,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YAC3F,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;gBACX,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;CACF;AAtDD,8CAsDC"}
@@ -0,0 +1,53 @@
1
+ export declare const ATTR_GEN_AI_SYSTEM: "gen_ai.system";
2
+ export declare const ATTR_GEN_AI_OPERATION_NAME: "gen_ai.operation.name";
3
+ export declare const ATTR_GEN_AI_REQUEST_MODEL: "gen_ai.request.model";
4
+ export declare const ATTR_GEN_AI_REQUEST_MAX_TOKENS: "gen_ai.request.max_tokens";
5
+ export declare const ATTR_GEN_AI_REQUEST_TEMPERATURE: "gen_ai.request.temperature";
6
+ export declare const ATTR_GEN_AI_REQUEST_TOP_P: "gen_ai.request.top_p";
7
+ export declare const ATTR_GEN_AI_REQUEST_TOP_K: "gen_ai.request.top_k";
8
+ export declare const ATTR_GEN_AI_REQUEST_STOP_SEQUENCES: "gen_ai.request.stop_sequences";
9
+ export declare const ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY: "gen_ai.request.frequency_penalty";
10
+ export declare const ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY: "gen_ai.request.presence_penalty";
11
+ export declare const ATTR_GEN_AI_REQUEST_ENCODING_FORMATS: "gen_ai.request.encoding_formats";
12
+ export declare const ATTR_GEN_AI_RESPONSE_ID: "gen_ai.response.id";
13
+ export declare const ATTR_GEN_AI_RESPONSE_MODEL: "gen_ai.response.model";
14
+ export declare const ATTR_GEN_AI_RESPONSE_FINISH_REASONS: "gen_ai.response.finish_reasons";
15
+ export declare const ATTR_GEN_AI_USAGE_PROMPT_TOKENS: "gen_ai.usage.prompt_tokens";
16
+ export declare const ATTR_GEN_AI_USAGE_COMPLETION_TOKENS: "gen_ai.usage.completion_tokens";
17
+ export declare const ATTR_GEN_AI_USAGE_TOTAL_TOKENS: "gen_ai.usage.total_tokens";
18
+ export declare const ATTR_GEN_AI_USAGE_INPUT_TOKENS: "gen_ai.usage.input_tokens";
19
+ export declare const ATTR_GEN_AI_USAGE_OUTPUT_TOKENS: "gen_ai.usage.output_tokens";
20
+ export declare const ATTR_GEN_AI_TOKEN_TYPE: "gen_ai.token.type";
21
+ export declare const ATTR_GEN_AI_PROMPT: "gen_ai.prompt";
22
+ export declare const ATTR_GEN_AI_COMPLETION: "gen_ai.completion";
23
+ export declare const ATTR_GEN_AI_OPENAI_API_BASE: "gen_ai.openai.api_base";
24
+ export declare const ATTR_GEN_AI_OPENAI_API_TYPE: "gen_ai.openai.api_type";
25
+ export declare const ATTR_GEN_AI_OPENAI_API_VERSION: "gen_ai.openai.api_version";
26
+ export declare const ATTR_EVENT_NAME: "event.name";
27
+ export declare const EVENT_GEN_AI_USER_MESSAGE: "gen_ai.user.message";
28
+ export declare const EVENT_GEN_AI_ASSISTANT_MESSAGE: "gen_ai.assistant.message";
29
+ export declare const EVENT_GEN_AI_SYSTEM_MESSAGE: "gen_ai.system.message";
30
+ export declare const EVENT_GEN_AI_TOOL_MESSAGE: "gen_ai.tool.message";
31
+ export declare const EVENT_GEN_AI_CHOICE: "gen_ai.choice";
32
+ export declare const METRIC_GEN_AI_CLIENT_OPERATION_DURATION: "gen_ai.client.operation.duration";
33
+ export declare const METRIC_GEN_AI_CLIENT_TOKEN_USAGE: "gen_ai.client.token.usage";
34
+ export declare const OPERATION_NAME_CHAT: "chat";
35
+ export declare const OPERATION_NAME_EMBEDDINGS: "embeddings";
36
+ export declare const OPERATION_NAME_IMAGE_GENERATION: "image_generation";
37
+ export declare const OPERATION_NAME_SPEECH_SYNTHESIS: "speech_synthesis";
38
+ export declare const OPERATION_NAME_TRANSCRIPTION: "transcription";
39
+ export declare const TOKEN_TYPE_INPUT: "input";
40
+ export declare const TOKEN_TYPE_OUTPUT: "output";
41
+ export declare const PROVIDER_OPENAI: "openai";
42
+ export declare const PROVIDER_ANTHROPIC: "anthropic";
43
+ export declare const PROVIDER_GOOGLE: "google";
44
+ export declare const PROVIDER_AMAZON: "amazon";
45
+ export declare const PROVIDER_AZURE: "azure";
46
+ export declare const PROVIDER_VERCEL: "vercel";
47
+ export declare const PROVIDER_UNKNOWN: "unknown";
48
+ export declare const SPAN_NAME_GEN_AI_CHAT: "gen_ai.chat";
49
+ export declare const SPAN_NAME_GEN_AI_EMBEDDINGS: "gen_ai.embeddings";
50
+ export declare const SPAN_NAME_GEN_AI_IMAGE_GENERATION: "gen_ai.image_generation";
51
+ export declare const SPAN_NAME_GEN_AI_SPEECH_SYNTHESIS: "gen_ai.speech_synthesis";
52
+ export declare const SPAN_NAME_GEN_AI_TRANSCRIPTION: "gen_ai.transcription";
53
+ //# sourceMappingURL=semconv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semconv.d.ts","sourceRoot":"","sources":["../../../../src/internal/instrumentation/vercel-ai/semconv.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SPAN_NAME_GEN_AI_IMAGE_GENERATION = exports.SPAN_NAME_GEN_AI_EMBEDDINGS = exports.SPAN_NAME_GEN_AI_CHAT = exports.PROVIDER_UNKNOWN = exports.PROVIDER_VERCEL = exports.PROVIDER_AZURE = exports.PROVIDER_AMAZON = exports.PROVIDER_GOOGLE = exports.PROVIDER_ANTHROPIC = exports.PROVIDER_OPENAI = exports.TOKEN_TYPE_OUTPUT = exports.TOKEN_TYPE_INPUT = exports.OPERATION_NAME_TRANSCRIPTION = exports.OPERATION_NAME_SPEECH_SYNTHESIS = exports.OPERATION_NAME_IMAGE_GENERATION = exports.OPERATION_NAME_EMBEDDINGS = exports.OPERATION_NAME_CHAT = exports.METRIC_GEN_AI_CLIENT_TOKEN_USAGE = exports.METRIC_GEN_AI_CLIENT_OPERATION_DURATION = exports.EVENT_GEN_AI_CHOICE = exports.EVENT_GEN_AI_TOOL_MESSAGE = exports.EVENT_GEN_AI_SYSTEM_MESSAGE = exports.EVENT_GEN_AI_ASSISTANT_MESSAGE = exports.EVENT_GEN_AI_USER_MESSAGE = exports.ATTR_EVENT_NAME = exports.ATTR_GEN_AI_OPENAI_API_VERSION = exports.ATTR_GEN_AI_OPENAI_API_TYPE = exports.ATTR_GEN_AI_OPENAI_API_BASE = exports.ATTR_GEN_AI_COMPLETION = exports.ATTR_GEN_AI_PROMPT = exports.ATTR_GEN_AI_TOKEN_TYPE = exports.ATTR_GEN_AI_USAGE_OUTPUT_TOKENS = exports.ATTR_GEN_AI_USAGE_INPUT_TOKENS = exports.ATTR_GEN_AI_USAGE_TOTAL_TOKENS = exports.ATTR_GEN_AI_USAGE_COMPLETION_TOKENS = exports.ATTR_GEN_AI_USAGE_PROMPT_TOKENS = exports.ATTR_GEN_AI_RESPONSE_FINISH_REASONS = exports.ATTR_GEN_AI_RESPONSE_MODEL = exports.ATTR_GEN_AI_RESPONSE_ID = exports.ATTR_GEN_AI_REQUEST_ENCODING_FORMATS = exports.ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY = exports.ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY = exports.ATTR_GEN_AI_REQUEST_STOP_SEQUENCES = exports.ATTR_GEN_AI_REQUEST_TOP_K = exports.ATTR_GEN_AI_REQUEST_TOP_P = exports.ATTR_GEN_AI_REQUEST_TEMPERATURE = exports.ATTR_GEN_AI_REQUEST_MAX_TOKENS = exports.ATTR_GEN_AI_REQUEST_MODEL = exports.ATTR_GEN_AI_OPERATION_NAME = exports.ATTR_GEN_AI_SYSTEM = void 0;
4
+ exports.SPAN_NAME_GEN_AI_TRANSCRIPTION = exports.SPAN_NAME_GEN_AI_SPEECH_SYNTHESIS = void 0;
5
+ exports.ATTR_GEN_AI_SYSTEM = 'gen_ai.system';
6
+ exports.ATTR_GEN_AI_OPERATION_NAME = 'gen_ai.operation.name';
7
+ exports.ATTR_GEN_AI_REQUEST_MODEL = 'gen_ai.request.model';
8
+ exports.ATTR_GEN_AI_REQUEST_MAX_TOKENS = 'gen_ai.request.max_tokens';
9
+ exports.ATTR_GEN_AI_REQUEST_TEMPERATURE = 'gen_ai.request.temperature';
10
+ exports.ATTR_GEN_AI_REQUEST_TOP_P = 'gen_ai.request.top_p';
11
+ exports.ATTR_GEN_AI_REQUEST_TOP_K = 'gen_ai.request.top_k';
12
+ exports.ATTR_GEN_AI_REQUEST_STOP_SEQUENCES = 'gen_ai.request.stop_sequences';
13
+ exports.ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY = 'gen_ai.request.frequency_penalty';
14
+ exports.ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY = 'gen_ai.request.presence_penalty';
15
+ exports.ATTR_GEN_AI_REQUEST_ENCODING_FORMATS = 'gen_ai.request.encoding_formats';
16
+ exports.ATTR_GEN_AI_RESPONSE_ID = 'gen_ai.response.id';
17
+ exports.ATTR_GEN_AI_RESPONSE_MODEL = 'gen_ai.response.model';
18
+ exports.ATTR_GEN_AI_RESPONSE_FINISH_REASONS = 'gen_ai.response.finish_reasons';
19
+ exports.ATTR_GEN_AI_USAGE_PROMPT_TOKENS = 'gen_ai.usage.prompt_tokens';
20
+ exports.ATTR_GEN_AI_USAGE_COMPLETION_TOKENS = 'gen_ai.usage.completion_tokens';
21
+ exports.ATTR_GEN_AI_USAGE_TOTAL_TOKENS = 'gen_ai.usage.total_tokens';
22
+ exports.ATTR_GEN_AI_USAGE_INPUT_TOKENS = 'gen_ai.usage.input_tokens';
23
+ exports.ATTR_GEN_AI_USAGE_OUTPUT_TOKENS = 'gen_ai.usage.output_tokens';
24
+ exports.ATTR_GEN_AI_TOKEN_TYPE = 'gen_ai.token.type';
25
+ exports.ATTR_GEN_AI_PROMPT = 'gen_ai.prompt';
26
+ exports.ATTR_GEN_AI_COMPLETION = 'gen_ai.completion';
27
+ exports.ATTR_GEN_AI_OPENAI_API_BASE = 'gen_ai.openai.api_base';
28
+ exports.ATTR_GEN_AI_OPENAI_API_TYPE = 'gen_ai.openai.api_type';
29
+ exports.ATTR_GEN_AI_OPENAI_API_VERSION = 'gen_ai.openai.api_version';
30
+ exports.ATTR_EVENT_NAME = 'event.name';
31
+ exports.EVENT_GEN_AI_USER_MESSAGE = 'gen_ai.user.message';
32
+ exports.EVENT_GEN_AI_ASSISTANT_MESSAGE = 'gen_ai.assistant.message';
33
+ exports.EVENT_GEN_AI_SYSTEM_MESSAGE = 'gen_ai.system.message';
34
+ exports.EVENT_GEN_AI_TOOL_MESSAGE = 'gen_ai.tool.message';
35
+ exports.EVENT_GEN_AI_CHOICE = 'gen_ai.choice';
36
+ exports.METRIC_GEN_AI_CLIENT_OPERATION_DURATION = 'gen_ai.client.operation.duration';
37
+ exports.METRIC_GEN_AI_CLIENT_TOKEN_USAGE = 'gen_ai.client.token.usage';
38
+ exports.OPERATION_NAME_CHAT = 'chat';
39
+ exports.OPERATION_NAME_EMBEDDINGS = 'embeddings';
40
+ exports.OPERATION_NAME_IMAGE_GENERATION = 'image_generation';
41
+ exports.OPERATION_NAME_SPEECH_SYNTHESIS = 'speech_synthesis';
42
+ exports.OPERATION_NAME_TRANSCRIPTION = 'transcription';
43
+ exports.TOKEN_TYPE_INPUT = 'input';
44
+ exports.TOKEN_TYPE_OUTPUT = 'output';
45
+ exports.PROVIDER_OPENAI = 'openai';
46
+ exports.PROVIDER_ANTHROPIC = 'anthropic';
47
+ exports.PROVIDER_GOOGLE = 'google';
48
+ exports.PROVIDER_AMAZON = 'amazon';
49
+ exports.PROVIDER_AZURE = 'azure';
50
+ exports.PROVIDER_VERCEL = 'vercel';
51
+ exports.PROVIDER_UNKNOWN = 'unknown';
52
+ exports.SPAN_NAME_GEN_AI_CHAT = 'gen_ai.chat';
53
+ exports.SPAN_NAME_GEN_AI_EMBEDDINGS = 'gen_ai.embeddings';
54
+ exports.SPAN_NAME_GEN_AI_IMAGE_GENERATION = 'gen_ai.image_generation';
55
+ exports.SPAN_NAME_GEN_AI_SPEECH_SYNTHESIS = 'gen_ai.speech_synthesis';
56
+ exports.SPAN_NAME_GEN_AI_TRANSCRIPTION = 'gen_ai.transcription';
57
+ //# sourceMappingURL=semconv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../../../src/internal/instrumentation/vercel-ai/semconv.ts"],"names":[],"mappings":";;;;AAMa,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAC9C,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAC9D,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAC5D,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AACtE,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AACxE,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAC5D,QAAA,yBAAyB,GAAG,sBAA+B,CAAC;AAC5D,QAAA,kCAAkC,GAAG,+BAAwC,CAAC;AAC9E,QAAA,qCAAqC,GAAG,kCAA2C,CAAC;AACpF,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAClF,QAAA,oCAAoC,GAAG,iCAA0C,CAAC;AAGlF,QAAA,uBAAuB,GAAG,oBAA6B,CAAC;AACxD,QAAA,0BAA0B,GAAG,uBAAgC,CAAC;AAC9D,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAGhF,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AACxE,QAAA,mCAAmC,GAAG,gCAAyC,CAAC;AAChF,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAGtE,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AACtE,QAAA,+BAA+B,GAAG,4BAAqC,CAAC;AAGxE,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAGtD,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAC9C,QAAA,sBAAsB,GAAG,mBAA4B,CAAC;AAGtD,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAChE,QAAA,2BAA2B,GAAG,wBAAiC,CAAC;AAChE,QAAA,8BAA8B,GAAG,2BAAoC,CAAC;AAGtE,QAAA,eAAe,GAAG,YAAqB,CAAC;AAGxC,QAAA,yBAAyB,GAAG,qBAA8B,CAAC;AAC3D,QAAA,8BAA8B,GAAG,0BAAmC,CAAC;AACrE,QAAA,2BAA2B,GAAG,uBAAgC,CAAC;AAC/D,QAAA,yBAAyB,GAAG,qBAA8B,CAAC;AAC3D,QAAA,mBAAmB,GAAG,eAAwB,CAAC;AAG/C,QAAA,uCAAuC,GAAG,kCAA2C,CAAC;AACtF,QAAA,gCAAgC,GAAG,2BAAoC,CAAC;AAGxE,QAAA,mBAAmB,GAAG,MAAe,CAAC;AACtC,QAAA,yBAAyB,GAAG,YAAqB,CAAC;AAClD,QAAA,+BAA+B,GAAG,kBAA2B,CAAC;AAC9D,QAAA,+BAA+B,GAAG,kBAA2B,CAAC;AAC9D,QAAA,4BAA4B,GAAG,eAAwB,CAAC;AAGxD,QAAA,gBAAgB,GAAG,OAAgB,CAAC;AACpC,QAAA,iBAAiB,GAAG,QAAiB,CAAC;AAGtC,QAAA,eAAe,GAAG,QAAiB,CAAC;AACpC,QAAA,kBAAkB,GAAG,WAAoB,CAAC;AAC1C,QAAA,eAAe,GAAG,QAAiB,CAAC;AACpC,QAAA,eAAe,GAAG,QAAiB,CAAC;AACpC,QAAA,cAAc,GAAG,OAAgB,CAAC;AAClC,QAAA,eAAe,GAAG,QAAiB,CAAC;AACpC,QAAA,gBAAgB,GAAG,SAAkB,CAAC;AAGtC,QAAA,qBAAqB,GAAG,aAAsB,CAAC;AAC/C,QAAA,2BAA2B,GAAG,mBAA4B,CAAC;AAC3D,QAAA,iCAAiC,GAAG,yBAAkC,CAAC;AACvE,QAAA,iCAAiC,GAAG,yBAAkC,CAAC;AACvE,QAAA,8BAA8B,GAAG,sBAA+B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { Span } from '@opentelemetry/api';
2
+ import type { VercelAIInstrumentationConfig } from './types';
3
+ export interface StreamHandlerContext {
4
+ recordTokenMetrics: (usage: any, system: string, model: string) => void;
5
+ recordDurationMetric: (duration: number, system: string, model: string, operation: string) => void;
6
+ }
7
+ export declare class StreamHandler {
8
+ private context;
9
+ constructor(context: StreamHandlerContext);
10
+ wrapStream(stream: any, span: Span, config: VercelAIInstrumentationConfig, provider: any, modelId: string, startTime: number): any;
11
+ private finalizeStream;
12
+ }
13
+ //# sourceMappingURL=stream-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-handler.d.ts","sourceRoot":"","sources":["../../../../src/internal/instrumentation/vercel-ai/stream-handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAQ/C,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAC;AAG7D,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxE,oBAAoB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACpG;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,oBAAoB;IAEjD,UAAU,CACR,MAAM,EAAE,GAAG,EACX,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,6BAA6B,EACrC,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM;IA6FnB,OAAO,CAAC,cAAc;CAmDvB"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StreamHandler = void 0;
4
+ const api_1 = require("@opentelemetry/api");
5
+ const semconv_1 = require("./semconv");
6
+ const utils_1 = require("./utils");
7
+ class StreamHandler {
8
+ context;
9
+ constructor(context) {
10
+ this.context = context;
11
+ }
12
+ wrapStream(stream, span, config, provider, modelId, startTime) {
13
+ const self = this;
14
+ let fullText = '';
15
+ let finishReason;
16
+ let usage;
17
+ let response;
18
+ const wrappedStream = new Proxy(stream, {
19
+ get(target, prop) {
20
+ if (prop === Symbol.asyncIterator) {
21
+ return async function* () {
22
+ try {
23
+ for await (const chunk of target) {
24
+ if (chunk.type === 'text-delta' && chunk.textDelta) {
25
+ fullText += chunk.textDelta;
26
+ }
27
+ else if (chunk.type === 'finish') {
28
+ finishReason = chunk.finishReason;
29
+ usage = chunk.usage;
30
+ }
31
+ else if (chunk.type === 'response-metadata') {
32
+ response = chunk.response;
33
+ }
34
+ yield chunk;
35
+ }
36
+ }
37
+ finally {
38
+ self.finalizeStream(span, config, provider, modelId, startTime, fullText, finishReason, usage, response);
39
+ }
40
+ };
41
+ }
42
+ if (prop === 'textStream' || prop === 'fullStream') {
43
+ const originalStream = target[prop];
44
+ return {
45
+ [Symbol.asyncIterator]: async function* () {
46
+ try {
47
+ for await (const chunk of originalStream) {
48
+ if (prop === 'textStream') {
49
+ fullText += chunk;
50
+ }
51
+ yield chunk;
52
+ }
53
+ }
54
+ finally {
55
+ const streamUsage = await target.usage.catch(() => null);
56
+ if (streamUsage) {
57
+ usage = streamUsage;
58
+ }
59
+ self.finalizeStream(span, config, provider, modelId, startTime, fullText, finishReason, usage, response);
60
+ }
61
+ }
62
+ };
63
+ }
64
+ const value = target[prop];
65
+ if (typeof value === 'function') {
66
+ return value.bind(target);
67
+ }
68
+ return value;
69
+ },
70
+ });
71
+ return wrappedStream;
72
+ }
73
+ finalizeStream(span, config, provider, modelId, startTime, fullText, finishReason, usage, response) {
74
+ if (response) {
75
+ span.setAttributes({
76
+ ...(response.id && { [semconv_1.ATTR_GEN_AI_RESPONSE_ID]: response.id }),
77
+ ...(response.model && { [semconv_1.ATTR_GEN_AI_RESPONSE_MODEL]: response.model }),
78
+ });
79
+ }
80
+ if (finishReason) {
81
+ span.setAttribute(semconv_1.ATTR_GEN_AI_RESPONSE_FINISH_REASONS, [finishReason]);
82
+ }
83
+ if (fullText) {
84
+ span.setAttributes((0, utils_1.completionToAttributes)(fullText, finishReason, config.captureMessageContent || false));
85
+ }
86
+ if (usage) {
87
+ span.setAttributes((0, utils_1.tokenUsageToAttributes)(usage));
88
+ if (config.enableMetrics) {
89
+ this.context.recordTokenMetrics(usage, provider.system, modelId);
90
+ }
91
+ }
92
+ if (config.enableMetrics) {
93
+ const duration = (performance.now() - startTime) / 1000;
94
+ this.context.recordDurationMetric(duration, provider.system, modelId, semconv_1.OPERATION_NAME_CHAT);
95
+ }
96
+ span.setStatus({ code: api_1.SpanStatusCode.OK });
97
+ span.end();
98
+ }
99
+ }
100
+ exports.StreamHandler = StreamHandler;
101
+ //# sourceMappingURL=stream-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-handler.js","sourceRoot":"","sources":["../../../../src/internal/instrumentation/vercel-ai/stream-handler.ts"],"names":[],"mappings":"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"}