@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,117 @@
1
+ import type { Span, Context } from "@opentelemetry/api";
2
+ export declare enum ContentCapturingMode {
3
+ NO_CONTENT = 0,
4
+ SPAN_ONLY = 1,
5
+ EVENT_ONLY = 2,
6
+ SPAN_AND_EVENT = 3
7
+ }
8
+ export interface ToolCall {
9
+ type: "tool_call";
10
+ arguments: unknown;
11
+ name: string;
12
+ id: string | null;
13
+ }
14
+ export interface ToolCallResponse {
15
+ type: "tool_call_response";
16
+ response: unknown;
17
+ id: string | null;
18
+ }
19
+ export interface Text {
20
+ type: "text";
21
+ content: string;
22
+ }
23
+ export interface Reasoning {
24
+ type: "reasoning";
25
+ content: string;
26
+ }
27
+ export type Modality = "image" | "video" | "audio";
28
+ export interface Blob {
29
+ type: "blob";
30
+ mimeType: string | null;
31
+ modality: Modality | string;
32
+ content: Uint8Array;
33
+ }
34
+ export interface GenAIFile {
35
+ type: "file";
36
+ mimeType: string | null;
37
+ modality: Modality | string;
38
+ fileId: string;
39
+ }
40
+ export interface Uri {
41
+ type: "uri";
42
+ mimeType: string | null;
43
+ modality: Modality | string;
44
+ uri: string;
45
+ }
46
+ export interface Base64Blob {
47
+ type: "base64_blob";
48
+ mimeType: string | null;
49
+ modality: Modality | string;
50
+ content: string;
51
+ }
52
+ export interface FunctionToolDefinition {
53
+ type: "function";
54
+ name: string;
55
+ description: string | null;
56
+ parameters: unknown;
57
+ }
58
+ export interface GenericToolDefinition {
59
+ type: string;
60
+ name: string;
61
+ }
62
+ export type ToolDefinition = FunctionToolDefinition | GenericToolDefinition;
63
+ export type MessagePart = Text | ToolCall | ToolCallResponse | Blob | GenAIFile | Uri | Reasoning | Base64Blob | Record<string, unknown>;
64
+ export type FinishReason = "content_filter" | "error" | "length" | "stop" | "tool_calls";
65
+ export interface InputMessage {
66
+ role: string;
67
+ parts: MessagePart[];
68
+ }
69
+ export interface OutputMessage {
70
+ role: string;
71
+ parts: MessagePart[];
72
+ finishReason: string | FinishReason;
73
+ }
74
+ export interface GenAIError {
75
+ message: string;
76
+ type: string;
77
+ }
78
+ export interface GenAIInvocation {
79
+ contextToken?: Context | null;
80
+ span?: Span | null;
81
+ attributes?: Record<string, unknown>;
82
+ }
83
+ export interface LLMInvocation extends GenAIInvocation {
84
+ requestModel?: string | null;
85
+ operationName?: string;
86
+ inputMessages?: InputMessage[];
87
+ outputMessages?: OutputMessage[];
88
+ systemInstruction?: MessagePart[];
89
+ toolDefinitions?: ToolDefinition[];
90
+ provider?: string | null;
91
+ responseModelName?: string | null;
92
+ responseId?: string | null;
93
+ finishReasons?: string[] | null;
94
+ inputTokens?: number | null;
95
+ outputTokens?: number | null;
96
+ metricAttributes?: Record<string, unknown>;
97
+ temperature?: number | null;
98
+ topP?: number | null;
99
+ frequencyPenalty?: number | null;
100
+ presencePenalty?: number | null;
101
+ maxTokens?: number | null;
102
+ stopSequences?: string[] | null;
103
+ seed?: number | null;
104
+ serverAddress?: string | null;
105
+ serverPort?: number | null;
106
+ conversationId?: string | null;
107
+ outputType?: string | null;
108
+ choiceCount?: number | null;
109
+ topK?: number | null;
110
+ usageCacheCreationInputTokens?: number | null;
111
+ usageCacheReadInputTokens?: number | null;
112
+ monotonicStartS?: number | null;
113
+ monotonicEndS?: number | null;
114
+ monotonicFirstTokenS?: number | null;
115
+ }
116
+ export declare function createLLMInvocation(init?: Partial<LLMInvocation>): LLMInvocation;
117
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,33 @@
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 var ContentCapturingMode;
15
+ (function (ContentCapturingMode) {
16
+ ContentCapturingMode[ContentCapturingMode["NO_CONTENT"] = 0] = "NO_CONTENT";
17
+ ContentCapturingMode[ContentCapturingMode["SPAN_ONLY"] = 1] = "SPAN_ONLY";
18
+ ContentCapturingMode[ContentCapturingMode["EVENT_ONLY"] = 2] = "EVENT_ONLY";
19
+ ContentCapturingMode[ContentCapturingMode["SPAN_AND_EVENT"] = 3] = "SPAN_AND_EVENT";
20
+ })(ContentCapturingMode || (ContentCapturingMode = {}));
21
+ export function createLLMInvocation(init) {
22
+ return {
23
+ operationName: "chat",
24
+ inputMessages: [],
25
+ outputMessages: [],
26
+ systemInstruction: [],
27
+ toolDefinitions: [],
28
+ attributes: {},
29
+ metricAttributes: {},
30
+ ...init,
31
+ };
32
+ }
33
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/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;AAIjC,MAAM,CAAN,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC9B,2EAAc,CAAA;IACd,yEAAa,CAAA;IACb,2EAAc,CAAA;IACd,mFAAkB,CAAA;AACpB,CAAC,EALW,oBAAoB,KAApB,oBAAoB,QAK/B;AA+ID,MAAM,UAAU,mBAAmB,CACjC,IAA6B;IAE7B,OAAO;QACL,aAAa,EAAE,MAAM;QACrB,aAAa,EAAE,EAAE;QACjB,cAAc,EAAE,EAAE;QAClB,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE;QACnB,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,EAAE;QACpB,GAAG,IAAI;KACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { ContentCapturingMode } from "./types.js";
2
+ export declare function isExperimentalMode(): boolean;
3
+ export declare function getContentCapturingMode(): ContentCapturingMode;
4
+ export declare function shouldCaptureContentInSpan(): boolean;
5
+ export declare function shouldCaptureContentInEvent(): boolean;
6
+ export declare function shouldEmitEvent(): boolean;
7
+ export declare function genAiJsonDumps(obj: unknown): string;
8
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AASlD,wBAAgB,kBAAkB,IAAI,OAAO,CAM5C;AAED,wBAAgB,uBAAuB,IAAI,oBAAoB,CA4B9D;AAED,wBAAgB,0BAA0B,IAAI,OAAO,CAMpD;AAED,wBAAgB,2BAA2B,IAAI,OAAO,CAMrD;AAED,wBAAgB,eAAe,IAAI,OAAO,CAqBzC;AAaD,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAEnD"}
package/dist/utils.js ADDED
@@ -0,0 +1,88 @@
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 { diag } from "@opentelemetry/api";
15
+ import { ContentCapturingMode } from "./types.js";
16
+ import { OTEL_SEMCONV_STABILITY_OPT_IN, OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT, OTEL_INSTRUMENTATION_GENAI_EMIT_EVENT, } from "./environment-variables.js";
17
+ const GEN_AI_EXPERIMENTAL = "gen_ai_latest_experimental";
18
+ export function isExperimentalMode() {
19
+ const optIn = process.env[OTEL_SEMCONV_STABILITY_OPT_IN];
20
+ if (!optIn)
21
+ return false;
22
+ return optIn
23
+ .split(",")
24
+ .some((v) => v.trim().toLowerCase() === GEN_AI_EXPERIMENTAL);
25
+ }
26
+ export function getContentCapturingMode() {
27
+ if (!isExperimentalMode()) {
28
+ return ContentCapturingMode.NO_CONTENT;
29
+ }
30
+ const envvar = process.env[OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT];
31
+ if (!envvar) {
32
+ return ContentCapturingMode.NO_CONTENT;
33
+ }
34
+ const upper = envvar.toUpperCase().trim();
35
+ const mapping = {
36
+ NO_CONTENT: ContentCapturingMode.NO_CONTENT,
37
+ SPAN_ONLY: ContentCapturingMode.SPAN_ONLY,
38
+ EVENT_ONLY: ContentCapturingMode.EVENT_ONLY,
39
+ SPAN_AND_EVENT: ContentCapturingMode.SPAN_AND_EVENT,
40
+ };
41
+ if (upper in mapping) {
42
+ return mapping[upper];
43
+ }
44
+ diag.warn(`${envvar} is not a valid option for \`${OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT}\`. ` +
45
+ `Must be one of ${Object.keys(mapping).join(", ")}. Defaulting to NO_CONTENT.`);
46
+ return ContentCapturingMode.NO_CONTENT;
47
+ }
48
+ export function shouldCaptureContentInSpan() {
49
+ const mode = getContentCapturingMode();
50
+ return (mode === ContentCapturingMode.SPAN_ONLY ||
51
+ mode === ContentCapturingMode.SPAN_AND_EVENT);
52
+ }
53
+ export function shouldCaptureContentInEvent() {
54
+ const mode = getContentCapturingMode();
55
+ return (mode === ContentCapturingMode.EVENT_ONLY ||
56
+ mode === ContentCapturingMode.SPAN_AND_EVENT);
57
+ }
58
+ export function shouldEmitEvent() {
59
+ const envvar = process.env[OTEL_INSTRUMENTATION_GENAI_EMIT_EVENT];
60
+ if (envvar && envvar.trim()) {
61
+ const lower = envvar.toLowerCase().trim();
62
+ if (lower === "true")
63
+ return true;
64
+ if (lower === "false")
65
+ return false;
66
+ diag.warn(`${envvar} is not a valid option for \`${OTEL_INSTRUMENTATION_GENAI_EMIT_EVENT}\`. ` +
67
+ `Must be one of true or false (case-insensitive). Defaulting based on content capturing mode.`);
68
+ }
69
+ if (!isExperimentalMode()) {
70
+ return false;
71
+ }
72
+ const contentMode = getContentCapturingMode();
73
+ return (contentMode === ContentCapturingMode.EVENT_ONLY ||
74
+ contentMode === ContentCapturingMode.SPAN_AND_EVENT);
75
+ }
76
+ function bufferToBase64(value) {
77
+ if (value instanceof Uint8Array || Buffer.isBuffer(value)) {
78
+ return Buffer.from(value).toString("base64");
79
+ }
80
+ return value;
81
+ }
82
+ function replacer(_key, value) {
83
+ return bufferToBase64(value);
84
+ }
85
+ export function genAiJsonDumps(obj) {
86
+ return JSON.stringify(obj, replacer);
87
+ }
88
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const VERSION = "0.1.0";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const VERSION = "0.1.0";
2
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
package/package.json ADDED
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "@loongsuite/otel-util-genai",
3
+ "version": "0.1.0-beta.0",
4
+ "description": "OpenTelemetry GenAI utility for standardized telemetry collection across LLM, Agent, Embedding, Tool, Retrieval, Rerank, Memory and more",
5
+ "type": "module",
6
+ "license": "Apache-2.0",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/alibaba/loongsuite-js-plugins.git",
10
+ "directory": "opentelemetry-util-genai"
11
+ },
12
+ "homepage": "https://github.com/alibaba/loongsuite-js-plugins/tree/main/opentelemetry-util-genai#readme",
13
+ "bugs": {
14
+ "url": "https://github.com/alibaba/loongsuite-js-plugins/issues"
15
+ },
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
19
+ "keywords": [
20
+ "opentelemetry",
21
+ "otel",
22
+ "genai",
23
+ "llm",
24
+ "agent",
25
+ "observability",
26
+ "tracing",
27
+ "instrumentation",
28
+ "loongsuite"
29
+ ],
30
+ "main": "dist/index.js",
31
+ "types": "dist/index.d.ts",
32
+ "exports": {
33
+ ".": {
34
+ "types": "./dist/index.d.ts",
35
+ "import": "./dist/index.js"
36
+ }
37
+ },
38
+ "files": [
39
+ "dist"
40
+ ],
41
+ "scripts": {
42
+ "build": "tsc",
43
+ "dev": "tsc --watch",
44
+ "clean": "rm -rf dist",
45
+ "prepublishOnly": "npm run build",
46
+ "test": "vitest run",
47
+ "test:coverage": "vitest run --coverage"
48
+ },
49
+ "engines": {
50
+ "node": ">=20"
51
+ },
52
+ "dependencies": {
53
+ "@opentelemetry/semantic-conventions": "^1.40.0"
54
+ },
55
+ "peerDependencies": {
56
+ "@opentelemetry/api": "^1.9.0",
57
+ "@opentelemetry/sdk-trace-base": "^1.30.0"
58
+ },
59
+ "peerDependenciesMeta": {
60
+ "@opentelemetry/sdk-trace-base": {
61
+ "optional": true
62
+ }
63
+ },
64
+ "devDependencies": {
65
+ "@opentelemetry/api": "^1.9.0",
66
+ "@opentelemetry/sdk-trace-base": "^1.30.0",
67
+ "@types/node": "^20.0.0",
68
+ "@vitest/coverage-v8": "^4.1.3",
69
+ "typescript": "^5.0.0",
70
+ "vitest": "^4.1.3"
71
+ }
72
+ }