@loongsuite/otel-util-genai 0.1.0-beta.0

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 (103) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +262 -0
  3. package/dist/environment-variables.d.ts +8 -0
  4. package/dist/environment-variables.d.ts.map +1 -0
  5. package/dist/environment-variables.js +21 -0
  6. package/dist/environment-variables.js.map +1 -0
  7. package/dist/event-log/converter.d.ts +19 -0
  8. package/dist/event-log/converter.d.ts.map +1 -0
  9. package/dist/event-log/converter.js +216 -0
  10. package/dist/event-log/converter.js.map +1 -0
  11. package/dist/event-log/field-mapping.d.ts +53 -0
  12. package/dist/event-log/field-mapping.d.ts.map +1 -0
  13. package/dist/event-log/field-mapping.js +400 -0
  14. package/dist/event-log/field-mapping.js.map +1 -0
  15. package/dist/event-log/grouping.d.ts +67 -0
  16. package/dist/event-log/grouping.d.ts.map +1 -0
  17. package/dist/event-log/grouping.js +241 -0
  18. package/dist/event-log/grouping.js.map +1 -0
  19. package/dist/event-log/index.d.ts +5 -0
  20. package/dist/event-log/index.d.ts.map +1 -0
  21. package/dist/event-log/index.js +18 -0
  22. package/dist/event-log/index.js.map +1 -0
  23. package/dist/event-log/parent-context.d.ts +14 -0
  24. package/dist/event-log/parent-context.d.ts.map +1 -0
  25. package/dist/event-log/parent-context.js +45 -0
  26. package/dist/event-log/parent-context.js.map +1 -0
  27. package/dist/event-log/readable-spans.d.ts +36 -0
  28. package/dist/event-log/readable-spans.d.ts.map +1 -0
  29. package/dist/event-log/readable-spans.js +73 -0
  30. package/dist/event-log/readable-spans.js.map +1 -0
  31. package/dist/event-log/types.d.ts +78 -0
  32. package/dist/event-log/types.d.ts.map +1 -0
  33. package/dist/event-log/types.js +35 -0
  34. package/dist/event-log/types.js.map +1 -0
  35. package/dist/extended-environment-variables.d.ts +12 -0
  36. package/dist/extended-environment-variables.d.ts.map +1 -0
  37. package/dist/extended-environment-variables.js +25 -0
  38. package/dist/extended-environment-variables.js.map +1 -0
  39. package/dist/extended-handler.d.ts +50 -0
  40. package/dist/extended-handler.d.ts.map +1 -0
  41. package/dist/extended-handler.js +334 -0
  42. package/dist/extended-handler.js.map +1 -0
  43. package/dist/extended-metrics.d.ts +13 -0
  44. package/dist/extended-metrics.d.ts.map +1 -0
  45. package/dist/extended-metrics.js +27 -0
  46. package/dist/extended-metrics.js.map +1 -0
  47. package/dist/extended-span-utils.d.ts +14 -0
  48. package/dist/extended-span-utils.d.ts.map +1 -0
  49. package/dist/extended-span-utils.js +427 -0
  50. package/dist/extended-span-utils.js.map +1 -0
  51. package/dist/extended-types.d.ts +150 -0
  52. package/dist/extended-types.d.ts.map +1 -0
  53. package/dist/extended-types.js +46 -0
  54. package/dist/extended-types.js.map +1 -0
  55. package/dist/handler.d.ts +23 -0
  56. package/dist/handler.d.ts.map +1 -0
  57. package/dist/handler.js +127 -0
  58. package/dist/handler.js.map +1 -0
  59. package/dist/index.d.ts +22 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +43 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/instruments.d.ts +4 -0
  64. package/dist/instruments.d.ts.map +1 -0
  65. package/dist/instruments.js +37 -0
  66. package/dist/instruments.js.map +1 -0
  67. package/dist/memory/memory-types.d.ts +26 -0
  68. package/dist/memory/memory-types.d.ts.map +1 -0
  69. package/dist/memory/memory-types.js +17 -0
  70. package/dist/memory/memory-types.js.map +1 -0
  71. package/dist/memory/memory-utils.d.ts +7 -0
  72. package/dist/memory/memory-utils.d.ts.map +1 -0
  73. package/dist/memory/memory-utils.js +121 -0
  74. package/dist/memory/memory-utils.js.map +1 -0
  75. package/dist/metrics.d.ts +11 -0
  76. package/dist/metrics.d.ts.map +1 -0
  77. package/dist/metrics.js +77 -0
  78. package/dist/metrics.js.map +1 -0
  79. package/dist/semconv/gen-ai-extended-attributes.d.ts +101 -0
  80. package/dist/semconv/gen-ai-extended-attributes.d.ts.map +1 -0
  81. package/dist/semconv/gen-ai-extended-attributes.js +120 -0
  82. package/dist/semconv/gen-ai-extended-attributes.js.map +1 -0
  83. package/dist/semconv/gen-ai-memory-attributes.d.ts +28 -0
  84. package/dist/semconv/gen-ai-memory-attributes.d.ts.map +1 -0
  85. package/dist/semconv/gen-ai-memory-attributes.js +42 -0
  86. package/dist/semconv/gen-ai-memory-attributes.js.map +1 -0
  87. package/dist/span-utils.d.ts +18 -0
  88. package/dist/span-utils.d.ts.map +1 -0
  89. package/dist/span-utils.js +236 -0
  90. package/dist/span-utils.js.map +1 -0
  91. package/dist/types.d.ts +117 -0
  92. package/dist/types.d.ts.map +1 -0
  93. package/dist/types.js +33 -0
  94. package/dist/types.js.map +1 -0
  95. package/dist/utils.d.ts +8 -0
  96. package/dist/utils.d.ts.map +1 -0
  97. package/dist/utils.js +88 -0
  98. package/dist/utils.js.map +1 -0
  99. package/dist/version.d.ts +2 -0
  100. package/dist/version.d.ts.map +1 -0
  101. package/dist/version.js +2 -0
  102. package/dist/version.js.map +1 -0
  103. package/package.json +72 -0
@@ -0,0 +1,23 @@
1
+ import { type Tracer, type TracerProvider, type MeterProvider, type Context } from "@opentelemetry/api";
2
+ import { InvocationMetricsRecorder } from "./metrics.js";
3
+ import { type EventLogger } from "./span-utils.js";
4
+ import type { LLMInvocation, GenAIError } from "./types.js";
5
+ export interface TelemetryHandlerOptions {
6
+ tracerProvider?: TracerProvider;
7
+ meterProvider?: MeterProvider;
8
+ loggerProvider?: unknown;
9
+ instrumentationName?: string;
10
+ instrumentationVersion?: string;
11
+ }
12
+ export declare class TelemetryHandler {
13
+ protected _tracer: Tracer;
14
+ protected _metricsRecorder: InvocationMetricsRecorder;
15
+ protected _logger: EventLogger | null;
16
+ constructor(options?: TelemetryHandlerOptions);
17
+ startLlm(invocation: LLMInvocation, parentContext?: Context, startTime?: number): LLMInvocation;
18
+ stopLlm(invocation: LLMInvocation, endTime?: number): LLMInvocation;
19
+ failLlm(invocation: LLMInvocation, error: GenAIError, endTime?: number): LLMInvocation;
20
+ llm<T>(invocationOrFn?: LLMInvocation | null, fn?: (inv: LLMInvocation) => T): T extends Promise<unknown> ? Promise<LLMInvocation> : LLMInvocation;
21
+ }
22
+ export declare function getTelemetryHandler(options?: TelemetryHandlerOptions): TelemetryHandler;
23
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"AAcA,OAAO,EAML,KAAK,MAAM,EAGX,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,OAAO,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM5D,MAAM,WAAW,uBAAuB;IACtC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,qBAAa,gBAAgB;IAC3B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;IACtD,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;gBAE1B,OAAO,GAAE,uBAA4B;IAiBjD,QAAQ,CACN,UAAU,EAAE,aAAa,EACzB,aAAa,CAAC,EAAE,OAAO,EACvB,SAAS,CAAC,EAAE,MAAM,GACjB,aAAa;IAkBhB,OAAO,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa;IAWnE,OAAO,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa;IActF,GAAG,CAAC,CAAC,EACH,cAAc,CAAC,EAAE,aAAa,GAAG,IAAI,EACrC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,CAAC,GAC7B,CAAC,SAAS,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa;CAgDvE;AA2BD,wBAAgB,mBAAmB,CACjC,OAAO,CAAC,EAAE,uBAAuB,GAChC,gBAAgB,CAKlB"}
@@ -0,0 +1,127 @@
1
+ // Copyright The OpenTelemetry Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ import { trace, metrics, context, diag, SpanKind, } from "@opentelemetry/api";
15
+ import { InvocationMetricsRecorder } from "./metrics.js";
16
+ import { applyLlmFinishAttributes, applyErrorAttributes, maybeEmitLlmEvent, } from "./span-utils.js";
17
+ import { createLLMInvocation } from "./types.js";
18
+ import { VERSION } from "./version.js";
19
+ const INSTRUMENTATION_NAME = "@loongsuite/otel-util-genai";
20
+ export class TelemetryHandler {
21
+ _tracer;
22
+ _metricsRecorder;
23
+ _logger;
24
+ constructor(options = {}) {
25
+ const scopeName = options.instrumentationName ?? INSTRUMENTATION_NAME;
26
+ const scopeVersion = options.instrumentationVersion ?? VERSION;
27
+ this._tracer = (options.tracerProvider ?? trace).getTracer(scopeName, scopeVersion);
28
+ const meter = (options.meterProvider ?? metrics).getMeter(scopeName, scopeVersion);
29
+ this._metricsRecorder = new InvocationMetricsRecorder(meter);
30
+ // EventLogger from LoggerProvider (OTel Logs API)
31
+ this._logger = resolveEventLogger(options.loggerProvider, scopeName, scopeVersion);
32
+ }
33
+ startLlm(invocation, parentContext, startTime) {
34
+ const spanName = `${invocation.operationName ?? "chat"} ${invocation.requestModel ?? ""}`.trim();
35
+ const span = this._tracer.startSpan(spanName, { kind: SpanKind.CLIENT, startTime }, parentContext);
36
+ invocation.monotonicStartS = performance.now() / 1000;
37
+ invocation.span = span;
38
+ invocation.contextToken = trace.setSpan(parentContext ?? context.active(), span);
39
+ context.with(invocation.contextToken, () => { });
40
+ return invocation;
41
+ }
42
+ stopLlm(invocation, endTime) {
43
+ if (!invocation.span)
44
+ return invocation;
45
+ const span = invocation.span;
46
+ applyLlmFinishAttributes(span, invocation);
47
+ this._metricsRecorder.record(span, invocation);
48
+ maybeEmitLlmEvent(this._logger, span, invocation);
49
+ span.end(endTime);
50
+ return invocation;
51
+ }
52
+ failLlm(invocation, error, endTime) {
53
+ if (!invocation.span)
54
+ return invocation;
55
+ const span = invocation.span;
56
+ applyLlmFinishAttributes(span, invocation);
57
+ applyErrorAttributes(span, error);
58
+ this._metricsRecorder.record(span, invocation, {
59
+ errorType: error.type,
60
+ });
61
+ maybeEmitLlmEvent(this._logger, span, invocation, error);
62
+ span.end(endTime);
63
+ return invocation;
64
+ }
65
+ llm(invocationOrFn, fn) {
66
+ const invocation = invocationOrFn ?? createLLMInvocation();
67
+ this.startLlm(invocation);
68
+ if (!fn) {
69
+ // Return invocation for manual start/stop pattern when no callback
70
+ return invocation;
71
+ }
72
+ try {
73
+ const result = fn(invocation);
74
+ if (result instanceof Promise) {
75
+ return result
76
+ .then(() => {
77
+ this.stopLlm(invocation);
78
+ return invocation;
79
+ })
80
+ .catch((err) => {
81
+ const genErr = {
82
+ message: String(err),
83
+ type: err instanceof Error
84
+ ? err.constructor.name
85
+ : "Error",
86
+ };
87
+ this.failLlm(invocation, genErr);
88
+ throw err;
89
+ });
90
+ }
91
+ this.stopLlm(invocation);
92
+ return invocation;
93
+ }
94
+ catch (err) {
95
+ const genErr = {
96
+ message: String(err),
97
+ type: err instanceof Error ? err.constructor.name : "Error",
98
+ };
99
+ this.failLlm(invocation, genErr);
100
+ throw err;
101
+ }
102
+ }
103
+ }
104
+ function resolveEventLogger(loggerProvider, scopeName = INSTRUMENTATION_NAME, scopeVersion = VERSION) {
105
+ if (!loggerProvider)
106
+ return null;
107
+ if (typeof loggerProvider === "object" &&
108
+ loggerProvider !== null &&
109
+ "getLogger" in loggerProvider) {
110
+ try {
111
+ const lp = loggerProvider;
112
+ return lp.getLogger(scopeName, scopeVersion);
113
+ }
114
+ catch {
115
+ diag.debug("Failed to get event logger from LoggerProvider");
116
+ }
117
+ }
118
+ return null;
119
+ }
120
+ let _defaultHandler = null;
121
+ export function getTelemetryHandler(options) {
122
+ if (!_defaultHandler) {
123
+ _defaultHandler = new TelemetryHandler(options);
124
+ }
125
+ return _defaultHandler;
126
+ }
127
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export { VERSION } from "./version.js";
2
+ export type { GenAIInvocation, LLMInvocation, GenAIError, InputMessage, OutputMessage, MessagePart, Text, Reasoning, ToolCall, ToolCallResponse, Blob, GenAIFile, Uri, Base64Blob, FunctionToolDefinition, GenericToolDefinition, ToolDefinition, Modality, FinishReason, } from "./types.js";
3
+ export { ContentCapturingMode, createLLMInvocation } from "./types.js";
4
+ export type { RetrievalDocument, EmbeddingInvocation, ExecuteToolInvocation, CreateAgentInvocation, InvokeAgentInvocation, RetrievalInvocation, RerankInvocation, EntryInvocation, ReactStepInvocation, } from "./extended-types.js";
5
+ export { createEmbeddingInvocation, createExecuteToolInvocation, createCreateAgentInvocation, createInvokeAgentInvocation, createRetrievalInvocation, createRerankInvocation, createEntryInvocation, createReactStepInvocation, } from "./extended-types.js";
6
+ export type { MemoryInvocation } from "./memory/memory-types.js";
7
+ export { createMemoryInvocation } from "./memory/memory-types.js";
8
+ export { TelemetryHandler, getTelemetryHandler, type TelemetryHandlerOptions, } from "./handler.js";
9
+ export { ExtendedTelemetryHandler, getExtendedTelemetryHandler, } from "./extended-handler.js";
10
+ export { isExperimentalMode, getContentCapturingMode, shouldEmitEvent, shouldCaptureContentInSpan, shouldCaptureContentInEvent, genAiJsonDumps, } from "./utils.js";
11
+ export { createDurationHistogram, createTokenHistogram, } from "./instruments.js";
12
+ export { InvocationMetricsRecorder } from "./metrics.js";
13
+ export { ExtendedInvocationMetricsRecorder } from "./extended-metrics.js";
14
+ export { getLlmCommonAttributes, getLlmSpanName, getLlmRequestAttributes, getLlmResponseAttributes, getLlmMessagesAttributesForSpan, getToolDefinitionsForSpan, applyLlmFinishAttributes, applyErrorAttributes, maybeEmitLlmEvent, type EventLogger, } from "./span-utils.js";
15
+ export { applyEmbeddingFinishAttributes, applyCreateAgentFinishAttributes, applyExecuteToolFinishAttributes, applyInvokeAgentFinishAttributes, maybeEmitInvokeAgentEvent, applyRetrievalFinishAttributes, applyRerankFinishAttributes, applyEntryFinishAttributes, applyReactStepFinishAttributes, } from "./extended-span-utils.js";
16
+ export { applyMemoryFinishAttributes, maybeEmitMemoryEvent, } from "./memory/memory-utils.js";
17
+ export * from "./semconv/gen-ai-extended-attributes.js";
18
+ export * from "./semconv/gen-ai-memory-attributes.js";
19
+ export * from "./environment-variables.js";
20
+ export * from "./extended-environment-variables.js";
21
+ export * from "./event-log/index.js";
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,YAAY,EACV,eAAe,EACf,aAAa,EACb,UAAU,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,IAAI,EACJ,SAAS,EACT,GAAG,EACH,UAAU,EACV,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,QAAQ,EACR,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGvE,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,uBAAuB,GAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,0BAA0B,EAC1B,2BAA2B,EAC3B,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAC;AAG1E,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,uBAAuB,EACvB,wBAAwB,EACxB,+BAA+B,EAC/B,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,WAAW,GACjB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,EAChC,gCAAgC,EAChC,gCAAgC,EAChC,yBAAyB,EACzB,8BAA8B,EAC9B,2BAA2B,EAC3B,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAGlC,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AAGtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AAGpD,cAAc,sBAAsB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,43 @@
1
+ // Copyright The OpenTelemetry Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ // Version
15
+ export { VERSION } from "./version.js";
16
+ export { ContentCapturingMode, createLLMInvocation } from "./types.js";
17
+ export { createEmbeddingInvocation, createExecuteToolInvocation, createCreateAgentInvocation, createInvokeAgentInvocation, createRetrievalInvocation, createRerankInvocation, createEntryInvocation, createReactStepInvocation, } from "./extended-types.js";
18
+ export { createMemoryInvocation } from "./memory/memory-types.js";
19
+ // Handlers
20
+ export { TelemetryHandler, getTelemetryHandler, } from "./handler.js";
21
+ export { ExtendedTelemetryHandler, getExtendedTelemetryHandler, } from "./extended-handler.js";
22
+ // Utilities
23
+ export { isExperimentalMode, getContentCapturingMode, shouldEmitEvent, shouldCaptureContentInSpan, shouldCaptureContentInEvent, genAiJsonDumps, } from "./utils.js";
24
+ // Instruments
25
+ export { createDurationHistogram, createTokenHistogram, } from "./instruments.js";
26
+ // Metrics
27
+ export { InvocationMetricsRecorder } from "./metrics.js";
28
+ export { ExtendedInvocationMetricsRecorder } from "./extended-metrics.js";
29
+ // Span Utils
30
+ export { getLlmCommonAttributes, getLlmSpanName, getLlmRequestAttributes, getLlmResponseAttributes, getLlmMessagesAttributesForSpan, getToolDefinitionsForSpan, applyLlmFinishAttributes, applyErrorAttributes, maybeEmitLlmEvent, } from "./span-utils.js";
31
+ // Extended Span Utils
32
+ export { applyEmbeddingFinishAttributes, applyCreateAgentFinishAttributes, applyExecuteToolFinishAttributes, applyInvokeAgentFinishAttributes, maybeEmitInvokeAgentEvent, applyRetrievalFinishAttributes, applyRerankFinishAttributes, applyEntryFinishAttributes, applyReactStepFinishAttributes, } from "./extended-span-utils.js";
33
+ // Memory Utils
34
+ export { applyMemoryFinishAttributes, maybeEmitMemoryEvent, } from "./memory/memory-utils.js";
35
+ // Semantic Conventions
36
+ export * from "./semconv/gen-ai-extended-attributes.js";
37
+ export * from "./semconv/gen-ai-memory-attributes.js";
38
+ // Environment Variables
39
+ export * from "./environment-variables.js";
40
+ export * from "./extended-environment-variables.js";
41
+ // Event Log → Trace conversion
42
+ export * from "./event-log/index.js";
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,UAAU;AACV,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAwBvC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAcvE,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,WAAW;AACX,OAAO,EACL,gBAAgB,EAChB,mBAAmB,GAEpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAE/B,YAAY;AACZ,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,0BAA0B,EAC1B,2BAA2B,EAC3B,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,cAAc;AACd,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,UAAU;AACV,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAC;AAE1E,aAAa;AACb,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,uBAAuB,EACvB,wBAAwB,EACxB,+BAA+B,EAC/B,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,GAElB,MAAM,iBAAiB,CAAC;AAEzB,sBAAsB;AACtB,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,EAChC,gCAAgC,EAChC,gCAAgC,EAChC,yBAAyB,EACzB,8BAA8B,EAC9B,2BAA2B,EAC3B,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,0BAA0B,CAAC;AAElC,eAAe;AACf,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAElC,uBAAuB;AACvB,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AAEtD,wBAAwB;AACxB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AAEpD,+BAA+B;AAC/B,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Meter, Histogram } from "@opentelemetry/api";
2
+ export declare function createDurationHistogram(meter: Meter): Histogram;
3
+ export declare function createTokenHistogram(meter: Meter): Histogram;
4
+ //# sourceMappingURL=instruments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instruments.d.ts","sourceRoot":"","sources":["../src/instruments.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAgB3D,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAM/D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAO5D"}
@@ -0,0 +1,37 @@
1
+ // Copyright The OpenTelemetry Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ import { GEN_AI_CLIENT_OPERATION_DURATION, GEN_AI_CLIENT_TOKEN_USAGE, } from "./semconv/gen-ai-extended-attributes.js";
15
+ const DURATION_BUCKETS = [
16
+ 0.01, 0.02, 0.04, 0.08, 0.16, 0.32, 0.64, 1.28, 2.56, 5.12, 10.24, 20.48,
17
+ 40.96, 81.92,
18
+ ];
19
+ const TOKEN_USAGE_BUCKETS = [
20
+ 1, 4, 16, 64, 256, 1024, 4096, 16384, 65536, 262144, 1048576, 4194304,
21
+ 16777216, 67108864,
22
+ ];
23
+ export function createDurationHistogram(meter) {
24
+ return meter.createHistogram(GEN_AI_CLIENT_OPERATION_DURATION, {
25
+ description: "Duration of GenAI client operation",
26
+ unit: "s",
27
+ advice: { explicitBucketBoundaries: DURATION_BUCKETS },
28
+ });
29
+ }
30
+ export function createTokenHistogram(meter) {
31
+ return meter.createHistogram(GEN_AI_CLIENT_TOKEN_USAGE, {
32
+ description: "Number of input and output tokens used by GenAI clients",
33
+ unit: "{token}",
34
+ advice: { explicitBucketBoundaries: TOKEN_USAGE_BUCKETS },
35
+ });
36
+ }
37
+ //# sourceMappingURL=instruments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instruments.js","sourceRoot":"","sources":["../src/instruments.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAGjC,OAAO,EACL,gCAAgC,EAChC,yBAAyB,GAC1B,MAAM,yCAAyC,CAAC;AAEjD,MAAM,gBAAgB,GAAG;IACvB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK;IACxE,KAAK,EAAE,KAAK;CACb,CAAC;AAEF,MAAM,mBAAmB,GAAG;IAC1B,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IACrE,QAAQ,EAAE,QAAQ;CACnB,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,KAAY;IAClD,OAAO,KAAK,CAAC,eAAe,CAAC,gCAAgC,EAAE;QAC7D,WAAW,EAAE,oCAAoC;QACjD,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,EAAE,wBAAwB,EAAE,gBAAgB,EAAE;KACvD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAY;IAC/C,OAAO,KAAK,CAAC,eAAe,CAAC,yBAAyB,EAAE;QACtD,WAAW,EACT,yDAAyD;QAC3D,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,EAAE,wBAAwB,EAAE,mBAAmB,EAAE;KAC1D,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { Span, Context } from "@opentelemetry/api";
2
+ export interface MemoryInvocation {
3
+ operation: string;
4
+ contextToken?: Context | null;
5
+ span?: Span | null;
6
+ attributes?: Record<string, unknown>;
7
+ userId?: string | null;
8
+ agentId?: string | null;
9
+ runId?: string | null;
10
+ appId?: string | null;
11
+ memoryId?: string | null;
12
+ limit?: number | null;
13
+ page?: number | null;
14
+ pageSize?: number | null;
15
+ topK?: number | null;
16
+ memoryType?: string | null;
17
+ threshold?: number | null;
18
+ rerank?: boolean | null;
19
+ inputMessages?: unknown;
20
+ outputMessages?: unknown;
21
+ serverAddress?: string | null;
22
+ serverPort?: number | null;
23
+ monotonicStartS?: number | null;
24
+ }
25
+ export declare function createMemoryInvocation(operation: string, init?: Partial<MemoryInvocation>): MemoryInvocation;
26
+ //# sourceMappingURL=memory-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-types.d.ts","sourceRoot":"","sources":["../../src/memory/memory-types.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAC/B,gBAAgB,CAElB"}
@@ -0,0 +1,17 @@
1
+ // Copyright The OpenTelemetry Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ export function createMemoryInvocation(operation, init) {
15
+ return { operation, attributes: {}, ...init };
16
+ }
17
+ //# sourceMappingURL=memory-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-types.js","sourceRoot":"","sources":["../../src/memory/memory-types.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AA4BjC,MAAM,UAAU,sBAAsB,CACpC,SAAiB,EACjB,IAAgC;IAEhC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC;AAChD,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Span } from "@opentelemetry/api";
2
+ import type { GenAIError } from "../types.js";
3
+ import type { MemoryInvocation } from "./memory-types.js";
4
+ import type { EventLogger } from "../span-utils.js";
5
+ export declare function applyMemoryFinishAttributes(span: Span, invocation: MemoryInvocation): void;
6
+ export declare function maybeEmitMemoryEvent(logger: EventLogger | null | undefined, span: Span, invocation: MemoryInvocation, error?: GenAIError | null): void;
7
+ //# sourceMappingURL=memory-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-utils.d.ts","sourceRoot":"","sources":["../../src/memory/memory-utils.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AA0B1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAyFpD,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,gBAAgB,GAC3B,IAAI,CAwBN;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,EACtC,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,gBAAgB,EAC5B,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,GACxB,IAAI,CAgBN"}
@@ -0,0 +1,121 @@
1
+ // Copyright The OpenTelemetry Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ import { GEN_AI_OPERATION_NAME, GEN_AI_SPAN_KIND, SERVER_ADDRESS, SERVER_PORT, ERROR_TYPE, GenAiSpanKindValues, } from "../semconv/gen-ai-extended-attributes.js";
15
+ import { GEN_AI_MEMORY_OPERATION, GEN_AI_MEMORY_USER_ID, GEN_AI_MEMORY_AGENT_ID, GEN_AI_MEMORY_RUN_ID, GEN_AI_MEMORY_APP_ID, GEN_AI_MEMORY_ID, GEN_AI_MEMORY_LIMIT, GEN_AI_MEMORY_PAGE, GEN_AI_MEMORY_PAGE_SIZE, GEN_AI_MEMORY_TOP_K, GEN_AI_MEMORY_MEMORY_TYPE, GEN_AI_MEMORY_THRESHOLD, GEN_AI_MEMORY_RERANK, GEN_AI_MEMORY_INPUT_MESSAGES, GEN_AI_MEMORY_OUTPUT_MESSAGES, } from "../semconv/gen-ai-memory-attributes.js";
16
+ import { isExperimentalMode, shouldEmitEvent, shouldCaptureContentInSpan, shouldCaptureContentInEvent, genAiJsonDumps, } from "../utils.js";
17
+ function getMemoryCommonAttributes(invocation) {
18
+ const attrs = {
19
+ [GEN_AI_OPERATION_NAME]: "memory_operation",
20
+ [GEN_AI_MEMORY_OPERATION]: invocation.operation,
21
+ };
22
+ if (invocation.userId != null) {
23
+ attrs[GEN_AI_MEMORY_USER_ID] = invocation.userId;
24
+ }
25
+ if (invocation.agentId != null) {
26
+ attrs[GEN_AI_MEMORY_AGENT_ID] = invocation.agentId;
27
+ }
28
+ if (invocation.runId != null) {
29
+ attrs[GEN_AI_MEMORY_RUN_ID] = invocation.runId;
30
+ }
31
+ if (invocation.appId != null) {
32
+ attrs[GEN_AI_MEMORY_APP_ID] = invocation.appId;
33
+ }
34
+ return attrs;
35
+ }
36
+ function getMemoryParameterAttributes(invocation) {
37
+ const attrs = {};
38
+ if (invocation.memoryId != null) {
39
+ attrs[GEN_AI_MEMORY_ID] = invocation.memoryId;
40
+ }
41
+ if (invocation.limit != null) {
42
+ attrs[GEN_AI_MEMORY_LIMIT] = invocation.limit;
43
+ }
44
+ if (invocation.page != null) {
45
+ attrs[GEN_AI_MEMORY_PAGE] = invocation.page;
46
+ }
47
+ if (invocation.pageSize != null) {
48
+ attrs[GEN_AI_MEMORY_PAGE_SIZE] = invocation.pageSize;
49
+ }
50
+ if (invocation.topK != null) {
51
+ attrs[GEN_AI_MEMORY_TOP_K] = invocation.topK;
52
+ }
53
+ if (invocation.memoryType != null) {
54
+ attrs[GEN_AI_MEMORY_MEMORY_TYPE] = invocation.memoryType;
55
+ }
56
+ if (invocation.threshold != null) {
57
+ attrs[GEN_AI_MEMORY_THRESHOLD] = invocation.threshold;
58
+ }
59
+ if (invocation.rerank != null) {
60
+ attrs[GEN_AI_MEMORY_RERANK] = invocation.rerank;
61
+ }
62
+ return attrs;
63
+ }
64
+ function getMemoryContentAttributes(invocation, forSpan) {
65
+ if (!isExperimentalMode())
66
+ return {};
67
+ if (forSpan && !shouldCaptureContentInSpan())
68
+ return {};
69
+ if (!forSpan && !shouldCaptureContentInEvent())
70
+ return {};
71
+ const attrs = {};
72
+ if (invocation.inputMessages != null) {
73
+ attrs[GEN_AI_MEMORY_INPUT_MESSAGES] =
74
+ typeof invocation.inputMessages === "string"
75
+ ? invocation.inputMessages
76
+ : genAiJsonDumps(invocation.inputMessages);
77
+ }
78
+ if (invocation.outputMessages != null) {
79
+ attrs[GEN_AI_MEMORY_OUTPUT_MESSAGES] =
80
+ typeof invocation.outputMessages === "string"
81
+ ? invocation.outputMessages
82
+ : genAiJsonDumps(invocation.outputMessages);
83
+ }
84
+ return attrs;
85
+ }
86
+ export function applyMemoryFinishAttributes(span, invocation) {
87
+ span.updateName(invocation.operation
88
+ ? `memory_operation ${invocation.operation}`
89
+ : "memory_operation");
90
+ span.setAttribute(GEN_AI_SPAN_KIND, GenAiSpanKindValues.MEMORY);
91
+ const attrs = {};
92
+ Object.assign(attrs, getMemoryCommonAttributes(invocation));
93
+ Object.assign(attrs, getMemoryParameterAttributes(invocation));
94
+ if (invocation.serverAddress != null) {
95
+ attrs[SERVER_ADDRESS] = invocation.serverAddress;
96
+ }
97
+ if (invocation.serverPort != null) {
98
+ attrs[SERVER_PORT] = invocation.serverPort;
99
+ }
100
+ Object.assign(attrs, getMemoryContentAttributes(invocation, true));
101
+ if (invocation.attributes) {
102
+ Object.assign(attrs, invocation.attributes);
103
+ }
104
+ span.setAttributes(attrs);
105
+ }
106
+ export function maybeEmitMemoryEvent(logger, span, invocation, error) {
107
+ if (!isExperimentalMode() || !shouldEmitEvent() || !logger)
108
+ return;
109
+ const attrs = {};
110
+ Object.assign(attrs, getMemoryCommonAttributes(invocation));
111
+ Object.assign(attrs, getMemoryParameterAttributes(invocation));
112
+ Object.assign(attrs, getMemoryContentAttributes(invocation, false));
113
+ if (error) {
114
+ attrs[ERROR_TYPE] = error.type;
115
+ }
116
+ logger.emit({
117
+ name: "gen_ai.memory.operation.details",
118
+ attributes: attrs,
119
+ });
120
+ }
121
+ //# sourceMappingURL=memory-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-utils.js","sourceRoot":"","sources":["../../src/memory/memory-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Meter, Span } from "@opentelemetry/api";
2
+ import type { LLMInvocation } from "./types.js";
3
+ export declare class InvocationMetricsRecorder {
4
+ private _durationHistogram;
5
+ private _tokenHistogram;
6
+ constructor(meter: Meter);
7
+ record(span: Span | null | undefined, invocation: LLMInvocation, options?: {
8
+ errorType?: string;
9
+ }): void;
10
+ }
11
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAa,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAMjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAchD,qBAAa,yBAAyB;IACpC,OAAO,CAAC,kBAAkB,CAAY;IACtC,OAAO,CAAC,eAAe,CAAY;gBAEvB,KAAK,EAAE,KAAK;IAKxB,MAAM,CACJ,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,EAC7B,UAAU,EAAE,aAAa,EACzB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/B,IAAI;CAiER"}
@@ -0,0 +1,77 @@
1
+ // Copyright The OpenTelemetry Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ import { trace, context } from "@opentelemetry/api";
15
+ import { createDurationHistogram, createTokenHistogram, } from "./instruments.js";
16
+ import { GEN_AI_OPERATION_NAME, GEN_AI_REQUEST_MODEL, GEN_AI_PROVIDER_NAME, GEN_AI_RESPONSE_MODEL, GEN_AI_TOKEN_TYPE, GenAiOperationNameValues, GenAiTokenTypeValues, SERVER_ADDRESS, SERVER_PORT, ERROR_TYPE, } from "./semconv/gen-ai-extended-attributes.js";
17
+ export class InvocationMetricsRecorder {
18
+ _durationHistogram;
19
+ _tokenHistogram;
20
+ constructor(meter) {
21
+ this._durationHistogram = createDurationHistogram(meter);
22
+ this._tokenHistogram = createTokenHistogram(meter);
23
+ }
24
+ record(span, invocation, options) {
25
+ if (!span)
26
+ return;
27
+ const tokenCounts = [];
28
+ if (invocation.inputTokens != null) {
29
+ tokenCounts.push({
30
+ count: invocation.inputTokens,
31
+ type: GenAiTokenTypeValues.INPUT,
32
+ });
33
+ }
34
+ if (invocation.outputTokens != null) {
35
+ tokenCounts.push({
36
+ count: invocation.outputTokens,
37
+ type: GenAiTokenTypeValues.OUTPUT,
38
+ });
39
+ }
40
+ const attributes = {
41
+ [GEN_AI_OPERATION_NAME]: GenAiOperationNameValues.CHAT,
42
+ };
43
+ if (invocation.requestModel) {
44
+ attributes[GEN_AI_REQUEST_MODEL] = invocation.requestModel;
45
+ }
46
+ if (invocation.provider) {
47
+ attributes[GEN_AI_PROVIDER_NAME] = invocation.provider;
48
+ }
49
+ if (invocation.responseModelName) {
50
+ attributes[GEN_AI_RESPONSE_MODEL] = invocation.responseModelName;
51
+ }
52
+ if (invocation.serverAddress) {
53
+ attributes[SERVER_ADDRESS] = invocation.serverAddress;
54
+ }
55
+ if (invocation.serverPort != null) {
56
+ attributes[SERVER_PORT] = invocation.serverPort;
57
+ }
58
+ if (invocation.metricAttributes) {
59
+ Object.assign(attributes, invocation.metricAttributes);
60
+ }
61
+ let durationSeconds = null;
62
+ if (invocation.monotonicStartS != null) {
63
+ durationSeconds = Math.max(performance.now() / 1000 - invocation.monotonicStartS, 0.0);
64
+ }
65
+ const spanContext = trace.setSpan(context.active(), span);
66
+ if (options?.errorType) {
67
+ attributes[ERROR_TYPE] = options.errorType;
68
+ }
69
+ if (durationSeconds != null) {
70
+ this._durationHistogram.record(durationSeconds, attributes, spanContext);
71
+ }
72
+ for (const { count, type } of tokenCounts) {
73
+ this._tokenHistogram.record(count, { ...attributes, [GEN_AI_TOKEN_TYPE]: type }, spanContext);
74
+ }
75
+ }
76
+ }
77
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}