@arizeai/openinference-instrumentation-beeai 1.0.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 (158) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +80 -0
  3. package/dist/esm/config.d.ts +39 -0
  4. package/dist/esm/config.d.ts.map +1 -0
  5. package/dist/esm/config.js +39 -0
  6. package/dist/esm/config.js.map +1 -0
  7. package/dist/esm/helpers/buildTraceTree.d.ts +21 -0
  8. package/dist/esm/helpers/buildTraceTree.d.ts.map +1 -0
  9. package/dist/esm/helpers/buildTraceTree.js +71 -0
  10. package/dist/esm/helpers/buildTraceTree.js.map +1 -0
  11. package/dist/esm/helpers/create-span.d.ts +32 -0
  12. package/dist/esm/helpers/create-span.d.ts.map +1 -0
  13. package/dist/esm/helpers/create-span.js +42 -0
  14. package/dist/esm/helpers/create-span.js.map +1 -0
  15. package/dist/esm/helpers/getErrorSafe.d.ts +17 -0
  16. package/dist/esm/helpers/getErrorSafe.d.ts.map +1 -0
  17. package/dist/esm/helpers/getErrorSafe.js +24 -0
  18. package/dist/esm/helpers/getErrorSafe.js.map +1 -0
  19. package/dist/esm/helpers/getSerializedObjectSafe.d.ts +18 -0
  20. package/dist/esm/helpers/getSerializedObjectSafe.d.ts.map +1 -0
  21. package/dist/esm/helpers/getSerializedObjectSafe.js +217 -0
  22. package/dist/esm/helpers/getSerializedObjectSafe.js.map +1 -0
  23. package/dist/esm/helpers/idNameManager.d.ts +31 -0
  24. package/dist/esm/helpers/idNameManager.d.ts.map +1 -0
  25. package/dist/esm/helpers/idNameManager.js +50 -0
  26. package/dist/esm/helpers/idNameManager.js.map +1 -0
  27. package/dist/esm/helpers/traceSerializer.d.ts +19 -0
  28. package/dist/esm/helpers/traceSerializer.d.ts.map +1 -0
  29. package/dist/esm/helpers/traceSerializer.js +35 -0
  30. package/dist/esm/helpers/traceSerializer.js.map +1 -0
  31. package/dist/esm/index.d.ts +2 -0
  32. package/dist/esm/index.d.ts.map +1 -0
  33. package/dist/esm/index.js +2 -0
  34. package/dist/esm/index.js.map +1 -0
  35. package/dist/esm/instrumentation.d.ts +34 -0
  36. package/dist/esm/instrumentation.d.ts.map +1 -0
  37. package/dist/esm/instrumentation.js +71 -0
  38. package/dist/esm/instrumentation.js.map +1 -0
  39. package/dist/esm/middleware.d.ts +27 -0
  40. package/dist/esm/middleware.d.ts.map +1 -0
  41. package/dist/esm/middleware.js +247 -0
  42. package/dist/esm/middleware.js.map +1 -0
  43. package/dist/esm/package.json +1 -0
  44. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  45. package/dist/esm/types.d.ts +36 -0
  46. package/dist/esm/types.d.ts.map +1 -0
  47. package/dist/esm/types.js +17 -0
  48. package/dist/esm/types.js.map +1 -0
  49. package/dist/esnext/config.d.ts +39 -0
  50. package/dist/esnext/config.d.ts.map +1 -0
  51. package/dist/esnext/config.js +39 -0
  52. package/dist/esnext/config.js.map +1 -0
  53. package/dist/esnext/helpers/buildTraceTree.d.ts +21 -0
  54. package/dist/esnext/helpers/buildTraceTree.d.ts.map +1 -0
  55. package/dist/esnext/helpers/buildTraceTree.js +57 -0
  56. package/dist/esnext/helpers/buildTraceTree.js.map +1 -0
  57. package/dist/esnext/helpers/create-span.d.ts +32 -0
  58. package/dist/esnext/helpers/create-span.d.ts.map +1 -0
  59. package/dist/esnext/helpers/create-span.js +37 -0
  60. package/dist/esnext/helpers/create-span.js.map +1 -0
  61. package/dist/esnext/helpers/getErrorSafe.d.ts +17 -0
  62. package/dist/esnext/helpers/getErrorSafe.d.ts.map +1 -0
  63. package/dist/esnext/helpers/getErrorSafe.js +24 -0
  64. package/dist/esnext/helpers/getErrorSafe.js.map +1 -0
  65. package/dist/esnext/helpers/getSerializedObjectSafe.d.ts +18 -0
  66. package/dist/esnext/helpers/getSerializedObjectSafe.d.ts.map +1 -0
  67. package/dist/esnext/helpers/getSerializedObjectSafe.js +165 -0
  68. package/dist/esnext/helpers/getSerializedObjectSafe.js.map +1 -0
  69. package/dist/esnext/helpers/idNameManager.d.ts +31 -0
  70. package/dist/esnext/helpers/idNameManager.d.ts.map +1 -0
  71. package/dist/esnext/helpers/idNameManager.js +50 -0
  72. package/dist/esnext/helpers/idNameManager.js.map +1 -0
  73. package/dist/esnext/helpers/traceSerializer.d.ts +19 -0
  74. package/dist/esnext/helpers/traceSerializer.d.ts.map +1 -0
  75. package/dist/esnext/helpers/traceSerializer.js +35 -0
  76. package/dist/esnext/helpers/traceSerializer.js.map +1 -0
  77. package/dist/esnext/index.d.ts +2 -0
  78. package/dist/esnext/index.d.ts.map +1 -0
  79. package/dist/esnext/index.js +2 -0
  80. package/dist/esnext/index.js.map +1 -0
  81. package/dist/esnext/instrumentation.d.ts +34 -0
  82. package/dist/esnext/instrumentation.d.ts.map +1 -0
  83. package/dist/esnext/instrumentation.js +71 -0
  84. package/dist/esnext/instrumentation.js.map +1 -0
  85. package/dist/esnext/middleware.d.ts +27 -0
  86. package/dist/esnext/middleware.d.ts.map +1 -0
  87. package/dist/esnext/middleware.js +241 -0
  88. package/dist/esnext/middleware.js.map +1 -0
  89. package/dist/esnext/tsconfig.esnext.tsbuildinfo +1 -0
  90. package/dist/esnext/types.d.ts +36 -0
  91. package/dist/esnext/types.d.ts.map +1 -0
  92. package/dist/esnext/types.js +17 -0
  93. package/dist/esnext/types.js.map +1 -0
  94. package/dist/examples/bee.d.ts +2 -0
  95. package/dist/examples/bee.d.ts.map +1 -0
  96. package/dist/examples/bee.js +35 -0
  97. package/dist/examples/bee.js.map +1 -0
  98. package/dist/examples/instrumentation.d.ts +2 -0
  99. package/dist/examples/instrumentation.d.ts.map +1 -0
  100. package/dist/examples/instrumentation.js +54 -0
  101. package/dist/examples/instrumentation.js.map +1 -0
  102. package/dist/src/config.d.ts +39 -0
  103. package/dist/src/config.d.ts.map +1 -0
  104. package/dist/src/config.js +42 -0
  105. package/dist/src/config.js.map +1 -0
  106. package/dist/src/helpers/buildTraceTree.d.ts +21 -0
  107. package/dist/src/helpers/buildTraceTree.d.ts.map +1 -0
  108. package/dist/src/helpers/buildTraceTree.js +60 -0
  109. package/dist/src/helpers/buildTraceTree.js.map +1 -0
  110. package/dist/src/helpers/create-span.d.ts +32 -0
  111. package/dist/src/helpers/create-span.d.ts.map +1 -0
  112. package/dist/src/helpers/create-span.js +40 -0
  113. package/dist/src/helpers/create-span.js.map +1 -0
  114. package/dist/src/helpers/getErrorSafe.d.ts +17 -0
  115. package/dist/src/helpers/getErrorSafe.d.ts.map +1 -0
  116. package/dist/src/helpers/getErrorSafe.js +27 -0
  117. package/dist/src/helpers/getErrorSafe.js.map +1 -0
  118. package/dist/src/helpers/getSerializedObjectSafe.d.ts +18 -0
  119. package/dist/src/helpers/getSerializedObjectSafe.d.ts.map +1 -0
  120. package/dist/src/helpers/getSerializedObjectSafe.js +168 -0
  121. package/dist/src/helpers/getSerializedObjectSafe.js.map +1 -0
  122. package/dist/src/helpers/idNameManager.d.ts +31 -0
  123. package/dist/src/helpers/idNameManager.d.ts.map +1 -0
  124. package/dist/src/helpers/idNameManager.js +54 -0
  125. package/dist/src/helpers/idNameManager.js.map +1 -0
  126. package/dist/src/helpers/traceSerializer.d.ts +19 -0
  127. package/dist/src/helpers/traceSerializer.d.ts.map +1 -0
  128. package/dist/src/helpers/traceSerializer.js +38 -0
  129. package/dist/src/helpers/traceSerializer.js.map +1 -0
  130. package/dist/src/index.d.ts +2 -0
  131. package/dist/src/index.d.ts.map +1 -0
  132. package/dist/src/index.js +18 -0
  133. package/dist/src/index.js.map +1 -0
  134. package/dist/src/instrumentation.d.ts +34 -0
  135. package/dist/src/instrumentation.d.ts.map +1 -0
  136. package/dist/src/instrumentation.js +76 -0
  137. package/dist/src/instrumentation.js.map +1 -0
  138. package/dist/src/middleware.d.ts +27 -0
  139. package/dist/src/middleware.d.ts.map +1 -0
  140. package/dist/src/middleware.js +254 -0
  141. package/dist/src/middleware.js.map +1 -0
  142. package/dist/src/types.d.ts +36 -0
  143. package/dist/src/types.d.ts.map +1 -0
  144. package/dist/src/types.js +18 -0
  145. package/dist/src/types.js.map +1 -0
  146. package/dist/tsconfig.tsbuildinfo +1 -0
  147. package/package.json +64 -0
  148. package/src/config.ts +48 -0
  149. package/src/helpers/buildTraceTree.ts +118 -0
  150. package/src/helpers/create-span.ts +66 -0
  151. package/src/helpers/getErrorSafe.ts +26 -0
  152. package/src/helpers/getSerializedObjectSafe.ts +325 -0
  153. package/src/helpers/idNameManager.ts +53 -0
  154. package/src/helpers/traceSerializer.ts +46 -0
  155. package/src/index.ts +1 -0
  156. package/src/instrumentation.ts +123 -0
  157. package/src/middleware.ts +318 -0
  158. package/src/types.ts +38 -0
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Copyright 2025 IBM Corp.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Serializable } from "beeai-framework/internals/serializable";
17
+ import { instrumentationLogger } from "beeai-framework/instrumentation/logger";
18
+ import { getProp } from "beeai-framework/internals/helpers/object";
19
+ import { ChatModel } from "beeai-framework/backend/chat";
20
+ import { BaseAgent } from "beeai-framework/agents/base";
21
+ import { errorEventName, errorLLMEventName, errorToolEventName, finishLLMEventName, finishToolEventName, newTokenLLMEventName, partialUpdateEventName, retryEventName, retryToolEventName, startEventName, startLLMEventName, startToolEventName, successEventName, successLLMEventName, successToolEventName, toolErrorEventName, toolStartEventName, toolSuccessEventName, updateEventName, } from "../config.js";
22
+ import { LLMAttributePostfixes, MessageAttributePostfixes, MimeType, OpenInferenceSpanKind, SemanticAttributePrefixes, SemanticConventions, } from "@arizeai/openinference-semantic-conventions";
23
+ import { Tool } from "beeai-framework/tools/base";
24
+ function parserLLMInputMessages(messages) {
25
+ return messages.reduce((acc, item, key) => ({
26
+ ...acc,
27
+ [`${SemanticAttributePrefixes.llm}.${LLMAttributePostfixes.input_messages}.${key}.${SemanticAttributePrefixes.message}.${MessageAttributePostfixes.role}`]: item.role,
28
+ [`${SemanticAttributePrefixes.llm}.${LLMAttributePostfixes.input_messages}.${key}.${SemanticAttributePrefixes.message}.${MessageAttributePostfixes.content}`]: item.content
29
+ .filter((c) => c.type === "text")
30
+ .map((c) => c.text)
31
+ .join(""),
32
+ }), {});
33
+ }
34
+ function parseLLMOutputMessages(messages) {
35
+ return messages.reduce((acc, item, key) => ({
36
+ ...acc,
37
+ [`${SemanticAttributePrefixes.llm}.${LLMAttributePostfixes.output_messages}.${key}.${SemanticAttributePrefixes.message}.${MessageAttributePostfixes.role}`]: item.role,
38
+ [`${SemanticAttributePrefixes.llm}.${LLMAttributePostfixes.output_messages}.${key}.${SemanticAttributePrefixes.message}.${MessageAttributePostfixes.content}`]: item.content
39
+ .filter((c) => c.type === "text")
40
+ .map((c) => c.text)
41
+ .join(""),
42
+ }), {});
43
+ }
44
+ export function getSerializedObjectSafe(dataObject, meta) {
45
+ // agent events
46
+ if ([startEventName, successEventName, errorEventName, retryEventName].includes(meta.name) &&
47
+ meta.creator instanceof BaseAgent) {
48
+ const { meta, tools, memory, error, data } = dataObject;
49
+ return {
50
+ [SemanticConventions.OPENINFERENCE_SPAN_KIND]: OpenInferenceSpanKind.AGENT,
51
+ iteration: meta.iteration,
52
+ ...(tools?.length > 0 && {
53
+ [SemanticConventions.LLM_TOOLS]: tools.map((tool) => ({
54
+ [SemanticConventions.TOOL_NAME]: tool.name,
55
+ [SemanticConventions.TOOL_DESCRIPTION]: tool.description,
56
+ "tool.options": tool.options,
57
+ })),
58
+ }),
59
+ ...(memory.messages.length > 0 && {
60
+ [SemanticConventions.INPUT_MIME_TYPE]: MimeType.JSON,
61
+ [SemanticConventions.INPUT_VALUE]: JSON.stringify(memory.messages),
62
+ }),
63
+ ...(error && {
64
+ "exception.message": error.message,
65
+ "exception.stacktrace": error.stack,
66
+ "exception.type": error.name,
67
+ }),
68
+ ...(data && {
69
+ [SemanticConventions.OUTPUT_MIME_TYPE]: MimeType.JSON,
70
+ [SemanticConventions.OUTPUT_VALUE]: JSON.stringify(data),
71
+ }),
72
+ };
73
+ }
74
+ // update events
75
+ if ([updateEventName, partialUpdateEventName].includes(meta.name)) {
76
+ const { data } = dataObject;
77
+ const output = data.final_answer || data.tool_output;
78
+ return {
79
+ [SemanticConventions.OPENINFERENCE_SPAN_KIND]: OpenInferenceSpanKind.AGENT,
80
+ thought: data.thought,
81
+ ...(data.tool_name && {
82
+ [SemanticConventions.TOOL_NAME]: data.tool_name,
83
+ }),
84
+ ...(data.tool_input && {
85
+ [SemanticConventions.TOOL_PARAMETERS]: JSON.stringify(data.tool_input),
86
+ }),
87
+ ...(output && {
88
+ [SemanticConventions.OUTPUT_MIME_TYPE]: MimeType.JSON,
89
+ [SemanticConventions.OUTPUT_VALUE]: output,
90
+ }),
91
+ };
92
+ }
93
+ // tool events (from agent)
94
+ if ([toolErrorEventName, toolStartEventName, toolSuccessEventName].includes(meta.name)) {
95
+ const { data } = dataObject;
96
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
97
+ const output = data.result && data.result.createSnapshot();
98
+ return {
99
+ [SemanticConventions.OPENINFERENCE_SPAN_KIND]: OpenInferenceSpanKind.TOOL,
100
+ thought: data.iteration.thought,
101
+ ...(data.input
102
+ ? { [SemanticConventions.TOOL_PARAMETERS]: JSON.stringify(data.input) }
103
+ : {}),
104
+ ...(data.tool.description && {
105
+ [SemanticConventions.TOOL_DESCRIPTION]: data.tool.description,
106
+ }),
107
+ ...(data.tool.name && {
108
+ [SemanticConventions.TOOL_NAME]: data.tool.name,
109
+ }),
110
+ ...(data.error && {
111
+ "exception.message": data.error.message,
112
+ "exception.stacktrace": data.error.stack,
113
+ "exception.type": data.error.name,
114
+ }),
115
+ ...(output && {
116
+ [SemanticConventions.OUTPUT_VALUE]: JSON.stringify(output),
117
+ }),
118
+ };
119
+ }
120
+ // tool events native
121
+ if ([
122
+ startToolEventName,
123
+ successToolEventName,
124
+ finishToolEventName,
125
+ errorToolEventName,
126
+ retryToolEventName,
127
+ ].includes(meta.name) &&
128
+ meta.creator instanceof Tool) {
129
+ if (!dataObject) {
130
+ return {
131
+ [SemanticConventions.OPENINFERENCE_SPAN_KIND]: OpenInferenceSpanKind.TOOL,
132
+ };
133
+ }
134
+ const { input, output, error } = dataObject;
135
+ return {
136
+ [SemanticConventions.OPENINFERENCE_SPAN_KIND]: OpenInferenceSpanKind.TOOL,
137
+ ...(input
138
+ ? { [SemanticConventions.TOOL_PARAMETERS]: JSON.stringify(input) }
139
+ : {}),
140
+ ...(output && {
141
+ [SemanticConventions.OUTPUT_VALUE]: JSON.stringify(output),
142
+ }),
143
+ ...(error && {
144
+ "exception.message": error.message,
145
+ "exception.stacktrace": error.stack,
146
+ "exception.type": error.name,
147
+ }),
148
+ };
149
+ }
150
+ // llm events
151
+ if ([
152
+ successLLMEventName,
153
+ startLLMEventName,
154
+ errorLLMEventName,
155
+ newTokenLLMEventName,
156
+ ].includes(meta.name) &&
157
+ meta.creator instanceof ChatModel) {
158
+ const { value, input, error } = dataObject;
159
+ const creator = meta.creator.createSnapshot();
160
+ return {
161
+ [SemanticConventions.OPENINFERENCE_SPAN_KIND]: OpenInferenceSpanKind.LLM,
162
+ ...(value?.usage?.completionTokens && {
163
+ [SemanticConventions.LLM_TOKEN_COUNT_COMPLETION]: value?.usage?.completionTokens,
164
+ }),
165
+ ...(value?.usage?.promptTokens && {
166
+ [SemanticConventions.LLM_TOKEN_COUNT_PROMPT]: value?.usage?.promptTokens,
167
+ }),
168
+ ...(value?.usage?.totalTokens && {
169
+ [SemanticConventions.LLM_TOKEN_COUNT_TOTAL]: value?.usage?.totalTokens,
170
+ }),
171
+ ...(input?.messages.length > 0 && {
172
+ [SemanticConventions.INPUT_MIME_TYPE]: MimeType.JSON,
173
+ [SemanticConventions.INPUT_VALUE]: JSON.stringify(input.messages),
174
+ ...parserLLMInputMessages(input.messages),
175
+ }),
176
+ ...(value?.messages.length > 0 && {
177
+ [SemanticConventions.OUTPUT_MIME_TYPE]: MimeType.JSON,
178
+ [SemanticConventions.OUTPUT_VALUE]: JSON.stringify(value.messages),
179
+ ...parseLLMOutputMessages(value.messages),
180
+ }),
181
+ ...(error && {
182
+ "exception.message": error.message,
183
+ "exception.stacktrace": error.stack,
184
+ "exception.type": error.name,
185
+ }),
186
+ ...("providerId" in creator && {
187
+ [SemanticConventions.LLM_PROVIDER]: creator.providerId,
188
+ [`${SemanticAttributePrefixes.metadata}.${LLMAttributePostfixes.provider}`]: creator.providerId,
189
+ }),
190
+ ...("modelId" in creator && {
191
+ [SemanticConventions.LLM_MODEL_NAME]: creator.modelId,
192
+ [`${SemanticAttributePrefixes.metadata}.${LLMAttributePostfixes.model_name}`]: creator.modelId,
193
+ }),
194
+ ...(creator.parameters && {
195
+ [SemanticConventions.LLM_INVOCATION_PARAMETERS]: JSON.stringify(creator.parameters),
196
+ }),
197
+ };
198
+ }
199
+ if (meta.name === finishLLMEventName && meta.creator instanceof ChatModel) {
200
+ return {
201
+ [SemanticConventions.OPENINFERENCE_SPAN_KIND]: OpenInferenceSpanKind.LLM,
202
+ };
203
+ }
204
+ // other events
205
+ const data = getProp(dataObject, ["data"], dataObject);
206
+ if (data instanceof Serializable) {
207
+ try {
208
+ return { data: JSON.stringify(data.createSnapshot()), test: "hallo" };
209
+ }
210
+ catch (e) {
211
+ instrumentationLogger.warn(e, "Invalid createSnapshot method in the Serializable class");
212
+ return null;
213
+ }
214
+ }
215
+ return { data: JSON.stringify(data) };
216
+ }
217
+ //# sourceMappingURL=getSerializedObjectSafe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSerializedObjectSafe.js","sourceRoot":"","sources":["../../../src/helpers/getSerializedObjectSafe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,0CAA0C,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAmB,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,QAAQ,EACR,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,IAAI,EAAc,MAAM,4BAA4B,CAAC;AAE9D,SAAS,sBAAsB,CAC7B,QAAwD;IAExD,OAAO,QAAQ,CAAC,MAAM,CACpB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACnB,GAAG,GAAG;QACN,CAAC,GAAG,yBAAyB,CAAC,GAAG,IAAI,qBAAqB,CAAC,cAAc,IAAI,GAAG,IAAI,yBAAyB,CAAC,OAAO,IAAI,yBAAyB,CAAC,IAAI,EAAE,CAAC,EACxJ,IAAI,CAAC,IAAI;QACX,CAAC,GAAG,yBAAyB,CAAC,GAAG,IAAI,qBAAqB,CAAC,cAAc,IAAI,GAAG,IAAI,yBAAyB,CAAC,OAAO,IAAI,yBAAyB,CAAC,OAAO,EAAE,CAAC,EAC3J,IAAI,CAAC,OAAO;aACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;aAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAClB,IAAI,CAAC,EAAE,CAAC;KACd,CAAC,EACF,EAAE,CACH,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAAwD;IAExD,OAAO,QAAQ,CAAC,MAAM,CACpB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACnB,GAAG,GAAG;QACN,CAAC,GAAG,yBAAyB,CAAC,GAAG,IAAI,qBAAqB,CAAC,eAAe,IAAI,GAAG,IAAI,yBAAyB,CAAC,OAAO,IAAI,yBAAyB,CAAC,IAAI,EAAE,CAAC,EACzJ,IAAI,CAAC,IAAI;QACX,CAAC,GAAG,yBAAyB,CAAC,GAAG,IAAI,qBAAqB,CAAC,eAAe,IAAI,GAAG,IAAI,yBAAyB,CAAC,OAAO,IAAI,yBAAyB,CAAC,OAAO,EAAE,CAAC,EAC5J,IAAI,CAAC,OAAO;aACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;aAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAClB,IAAI,CAAC,EAAE,CAAC;KACd,CAAC,EACF,EAAE,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,UAAmB,EACnB,IAAwB;IAExB,eAAe;IACf,IACE,CAAC,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,QAAQ,CACzE,IAAI,CAAC,IAA0B,CAChC;QACD,IAAI,CAAC,OAAO,YAAY,SAAS,EACjC,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GACxC,UAKC,CAAC;QACJ,OAAO;YACL,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,EAC3C,qBAAqB,CAAC,KAAK;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,IAAI;gBACvB,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACpD,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI;oBAC1C,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,WAAW;oBACxD,cAAc,EAAE,IAAI,CAAC,OAAO;iBAC7B,CAAC,CAAC;aACJ,CAAC;YACF,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI;gBAChC,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,IAAI;gBACpD,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;aACnE,CAAC;YACF,GAAG,CAAC,KAAK,IAAI;gBACX,mBAAmB,EAAE,KAAK,CAAC,OAAO;gBAClC,sBAAsB,EAAE,KAAK,CAAC,KAAK;gBACnC,gBAAgB,EAAE,KAAK,CAAC,IAAI;aAC7B,CAAC;YACF,GAAG,CAAC,IAAI,IAAI;gBACV,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,IAAI;gBACrD,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aACzD,CAAC;SACH,CAAC;IACJ,CAAC;IAED,gBAAgB;IAChB,IACE,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAC,QAAQ,CAChD,IAAI,CAAC,IAA0B,CAChC,EACD,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,UAEhB,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC;QACrD,OAAO;YACL,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,EAC3C,qBAAqB,CAAC,KAAK;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI;gBACpB,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS;aAChD,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI;gBACrB,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;aACvE,CAAC;YACF,GAAG,CAAC,MAAM,IAAI;gBACZ,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,IAAI;gBACrD,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM;aAC3C,CAAC;SACH,CAAC;IACJ,CAAC;IAED,2BAA2B;IAC3B,IACE,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,CAAC,CAAC,QAAQ,CACrE,IAAI,CAAC,IAA0B,CAChC,EACD,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,UAIhB,CAAC;QACF,8DAA8D;QAC9D,MAAM,MAAM,GAAQ,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAEhE,OAAO;YACL,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,EAAE,qBAAqB,CAAC,IAAI;YACzE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO;YAC/B,GAAG,CAAC,IAAI,CAAC,KAAK;gBACZ,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACvE,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI;gBAC3B,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;aAC9D,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI;gBACpB,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;aAChD,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI;gBAChB,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;gBACvC,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;gBACxC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;aAClC,CAAC;YACF,GAAG,CAAC,MAAM,IAAI;gBACZ,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;aAC3D,CAAC;SACH,CAAC;IACJ,CAAC;IACD,qBAAqB;IACrB,IACE;QACE,kBAAkB;QAClB,oBAAoB;QACpB,mBAAmB;QACnB,kBAAkB;QAClB,kBAAkB;KACnB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAwB,CAAC;QACzC,IAAI,CAAC,OAAO,YAAY,IAAI,EAC5B,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;gBACL,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,EAC3C,qBAAqB,CAAC,IAAI;aAC7B,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,UAKhC,CAAC;QAEF,OAAO;YACL,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,EAAE,qBAAqB,CAAC,IAAI;YACzE,GAAG,CAAC,KAAK;gBACP,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBAClE,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,MAAM,IAAI;gBACZ,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;aAC3D,CAAC;YACF,GAAG,CAAC,KAAK,IAAI;gBACX,mBAAmB,EAAE,KAAK,CAAC,OAAO;gBAClC,sBAAsB,EAAE,KAAK,CAAC,KAAK;gBACnC,gBAAgB,EAAE,KAAK,CAAC,IAAI;aAC7B,CAAC;SACH,CAAC;IACJ,CAAC;IAED,aAAa;IACb,IACE;QACE,mBAAmB;QACnB,iBAAiB;QACjB,iBAAiB;QACjB,oBAAoB;KACrB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAA6B,CAAC;QAC9C,IAAI,CAAC,OAAO,YAAY,SAAS,EACjC,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,UAK/B,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC9C,OAAO;YACL,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,EAAE,qBAAqB,CAAC,GAAG;YACxE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,IAAI;gBACpC,CAAC,mBAAmB,CAAC,0BAA0B,CAAC,EAC9C,KAAK,EAAE,KAAK,EAAE,gBAAgB;aACjC,CAAC;YACF,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,IAAI;gBAChC,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,EAC1C,KAAK,EAAE,KAAK,EAAE,YAAY;aAC7B,CAAC;YACF,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,IAAI;gBAC/B,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW;aACvE,CAAC;YACF,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI;gBAChC,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,IAAI;gBACpD,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACjE,GAAG,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC;aAC1C,CAAC;YACF,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI;gBAChC,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,IAAI;gBACrD,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAClE,GAAG,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC;aAC1C,CAAC;YACF,GAAG,CAAC,KAAK,IAAI;gBACX,mBAAmB,EAAE,KAAK,CAAC,OAAO;gBAClC,sBAAsB,EAAE,KAAK,CAAC,KAAK;gBACnC,gBAAgB,EAAE,KAAK,CAAC,IAAI;aAC7B,CAAC;YACF,GAAG,CAAC,YAAY,IAAI,OAAO,IAAI;gBAC7B,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,UAAU;gBACtD,CAAC,GAAG,yBAAyB,CAAC,QAAQ,IAAI,qBAAqB,CAAC,QAAQ,EAAE,CAAC,EACzE,OAAO,CAAC,UAAU;aACrB,CAAC;YACF,GAAG,CAAC,SAAS,IAAI,OAAO,IAAI;gBAC1B,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,OAAO;gBACrD,CAAC,GAAG,yBAAyB,CAAC,QAAQ,IAAI,qBAAqB,CAAC,UAAU,EAAE,CAAC,EAC3E,OAAO,CAAC,OAAO;aAClB,CAAC;YACF,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI;gBACxB,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,EAAE,IAAI,CAAC,SAAS,CAC7D,OAAO,CAAC,UAAU,CACnB;aACF,CAAC;SACH,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,IAAI,IAAI,CAAC,OAAO,YAAY,SAAS,EAAE,CAAC;QAC1E,OAAO;YACL,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,EAAE,qBAAqB,CAAC,GAAG;SACzE,CAAC;IACJ,CAAC;IAED,eAAe;IACf,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;IACvD,IAAI,IAAI,YAAY,YAAY,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACxE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,qBAAqB,CAAC,IAAI,CACxB,CAAC,EACD,yDAAyD,CAC1D,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;AACxC,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Copyright 2025 IBM Corp.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ interface GetIdsProps {
17
+ path: string;
18
+ id: string;
19
+ runId: string;
20
+ parentRunId?: string;
21
+ groupId?: string;
22
+ }
23
+ export declare class IdNameManager {
24
+ #private;
25
+ getIds({ path, id, runId, parentRunId, groupId }: GetIdsProps): {
26
+ spanId: string;
27
+ parentSpanId: string | undefined;
28
+ };
29
+ }
30
+ export {};
31
+ //# sourceMappingURL=idNameManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idNameManager.d.ts","sourceRoot":"","sources":["../../../src/helpers/idNameManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,aAAa;;IAcxB,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,WAAW;;;;CAc9D"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Copyright 2025 IBM Corp.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
17
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
18
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
19
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
20
+ };
21
+ var _IdNameManager_instances, _IdNameManager_idNamesCounter, _IdNameManager_idNameMap, _IdNameManager_runIdMap, _IdNameManager_spanIdGenerator;
22
+ export class IdNameManager {
23
+ constructor() {
24
+ _IdNameManager_instances.add(this);
25
+ /** Current index for each event */
26
+ _IdNameManager_idNamesCounter.set(this, new Map());
27
+ /** The new span id names and the original framework emitter event ids dictionary */
28
+ _IdNameManager_idNameMap.set(this, new Map());
29
+ /** We need to map the run tree structure with duplicities to the event tree structure */
30
+ _IdNameManager_runIdMap.set(this, new Map());
31
+ }
32
+ getIds({ path, id, runId, parentRunId, groupId }) {
33
+ __classPrivateFieldGet(this, _IdNameManager_runIdMap, "f").set(runId, id);
34
+ const spanId = __classPrivateFieldGet(this, _IdNameManager_instances, "m", _IdNameManager_spanIdGenerator).call(this, path);
35
+ __classPrivateFieldGet(this, _IdNameManager_idNameMap, "f").set(id, spanId);
36
+ const parentSpanId = parentRunId
37
+ ? __classPrivateFieldGet(this, _IdNameManager_idNameMap, "f").get(__classPrivateFieldGet(this, _IdNameManager_runIdMap, "f").get(parentRunId) || "")
38
+ : groupId;
39
+ return {
40
+ spanId,
41
+ parentSpanId,
42
+ };
43
+ }
44
+ }
45
+ _IdNameManager_idNamesCounter = new WeakMap(), _IdNameManager_idNameMap = new WeakMap(), _IdNameManager_runIdMap = new WeakMap(), _IdNameManager_instances = new WeakSet(), _IdNameManager_spanIdGenerator = function _IdNameManager_spanIdGenerator(name) {
46
+ const count = __classPrivateFieldGet(this, _IdNameManager_idNamesCounter, "f").get(name) || 0;
47
+ __classPrivateFieldGet(this, _IdNameManager_idNamesCounter, "f").set(name, count + 1);
48
+ return `${name}-${__classPrivateFieldGet(this, _IdNameManager_idNamesCounter, "f").get(name)}`;
49
+ };
50
+ //# sourceMappingURL=idNameManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idNameManager.js","sourceRoot":"","sources":["../../../src/helpers/idNameManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;;;;;AAUH,MAAM,OAAO,aAAa;IAA1B;;QACE,mCAAmC;QACnC,wCAAkB,IAAI,GAAG,EAAkB,EAAC;QAC5C,oFAAoF;QACpF,mCAAa,IAAI,GAAG,EAAkB,EAAC;QACvC,yFAAyF;QACzF,kCAAY,IAAI,GAAG,EAAkB,EAAC;IAsBxC,CAAC;IAdC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAe;QAC3D,uBAAA,IAAI,+BAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,uBAAA,IAAI,gEAAiB,MAArB,IAAI,EAAkB,IAAI,CAAC,CAAC;QAE3C,uBAAA,IAAI,gCAAW,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAChC,MAAM,YAAY,GAAG,WAAW;YAC9B,CAAC,CAAC,uBAAA,IAAI,gCAAW,CAAC,GAAG,CAAC,uBAAA,IAAI,+BAAU,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAC5D,CAAC,CAAC,OAAO,CAAC;QAEZ,OAAO;YACL,MAAM;YACN,YAAY;SACb,CAAC;IACJ,CAAC;CACF;qPApBkB,IAAY;IAC3B,MAAM,KAAK,GAAG,uBAAA,IAAI,qCAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,uBAAA,IAAI,qCAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC1C,OAAO,GAAG,IAAI,IAAI,uBAAA,IAAI,qCAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACrD,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Copyright 2025 IBM Corp.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export declare function traceSerializer({ ignored_keys, }: {
17
+ ignored_keys?: string[];
18
+ }): (body: object) => string;
19
+ //# sourceMappingURL=traceSerializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceSerializer.d.ts","sourceRoot":"","sources":["../../../src/helpers/traceSerializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,wBAAgB,eAAe,CAAC,EAC9B,YAAiB,GAClB,EAAE;IACD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,UAGe,MAAM,YAcrB"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Copyright 2025 IBM Corp.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ const DEFAULT_IGNORE_KEYS = [
17
+ "emitter",
18
+ "logger",
19
+ "tokens",
20
+ "createdBy",
21
+ "client",
22
+ ];
23
+ export function traceSerializer({ ignored_keys = [], }) {
24
+ const mergedIgnoreKeys = new Set([...DEFAULT_IGNORE_KEYS, ...ignored_keys]);
25
+ return (body) => JSON.stringify(body, (() => {
26
+ return (key, value) => {
27
+ // Ignore specific keys, all owned entities and keys starting with underscore
28
+ if (mergedIgnoreKeys.has(key) || key.startsWith("_")) {
29
+ return;
30
+ }
31
+ return value;
32
+ };
33
+ })());
34
+ }
35
+ //# sourceMappingURL=traceSerializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceSerializer.js","sourceRoot":"","sources":["../../../src/helpers/traceSerializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,mBAAmB,GAAG;IAC1B,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,QAAQ;CACT,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,EAC9B,YAAY,GAAG,EAAE,GAGlB;IACC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,mBAAmB,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;IAE5E,OAAO,CAAC,IAAY,EAAE,EAAE,CACtB,IAAI,CAAC,SAAS,CACZ,IAAI,EACJ,CAAC,GAAG,EAAE;QACJ,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACpB,6EAA6E;YAC7E,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrD,OAAO;YACT,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;IACJ,CAAC,CAAC,EAAE,CACL,CAAC;AACN,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./instrumentation.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./instrumentation.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { InstrumentationBase, InstrumentationNodeModuleDefinition, InstrumentationConfig } from "@opentelemetry/instrumentation";
2
+ import * as bee from "beeai-framework";
3
+ import { TraceConfigOptions } from "@arizeai/openinference-core";
4
+ /**
5
+ * function to check if instrumentation is enabled / disabled
6
+ */
7
+ export declare function isPatched(): boolean;
8
+ export declare class BeeAIInstrumentation extends InstrumentationBase {
9
+ private oiTracer;
10
+ constructor({ instrumentationConfig, traceConfig, }?: {
11
+ /**
12
+ * The config for the instrumentation
13
+ * @see {@link InstrumentationConfig}
14
+ */
15
+ instrumentationConfig?: InstrumentationConfig;
16
+ /**
17
+ * The OpenInference trace configuration. Can be used to mask or redact sensitive information on spans.
18
+ * @see {@link TraceConfigOptions}
19
+ */
20
+ traceConfig?: TraceConfigOptions;
21
+ });
22
+ protected init(): InstrumentationNodeModuleDefinition;
23
+ /**
24
+ * Manually instruments the BeeAI module. This is needed when the module is not loaded via require (commonjs)
25
+ * @param {openai} module
26
+ */
27
+ manuallyInstrument(module: typeof bee): void;
28
+ private patch;
29
+ /**
30
+ * Un-patches the OpenAI module's chat completions API
31
+ */
32
+ private unpatch;
33
+ }
34
+ //# sourceMappingURL=instrumentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mCAAmC,EACnC,qBAAqB,EACtB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,KAAK,GAAG,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAY,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAW3E;;GAEG;AACH,wBAAgB,SAAS,YAExB;AAED,qBAAa,oBAAqB,SAAQ,mBAAmB;IAC3D,OAAO,CAAC,QAAQ,CAAW;gBAEf,EACV,qBAAqB,EACrB,WAAW,GACZ,GAAE;QACD;;;WAGG;QACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;QAC9C;;;WAGG;QACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;KAC7B;IASN,SAAS,CAAC,IAAI;IAWd;;;OAGG;IACH,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG;IAKrC,OAAO,CAAC,KAAK;IA+Bb;;OAEG;IACH,OAAO,CAAC,OAAO;CAehB"}
@@ -0,0 +1,71 @@
1
+ import { InstrumentationBase, InstrumentationNodeModuleDefinition, } from "@opentelemetry/instrumentation";
2
+ import { diag } from "@opentelemetry/api";
3
+ import { Version } from "beeai-framework";
4
+ import { OITracer } from "@arizeai/openinference-core";
5
+ import { createTelemetryMiddleware } from "./middleware.js";
6
+ const MODULE_NAME = "beeai-framework";
7
+ /**
8
+ * Flag to check if the openai module has been patched
9
+ * Note: This is a fallback in case the module is made immutable (e.x. Deno, webpack, etc.)
10
+ */
11
+ let _isOpenInferencePatched = false;
12
+ /**
13
+ * function to check if instrumentation is enabled / disabled
14
+ */
15
+ export function isPatched() {
16
+ return _isOpenInferencePatched;
17
+ }
18
+ export class BeeAIInstrumentation extends InstrumentationBase {
19
+ constructor({ instrumentationConfig, traceConfig, } = {}) {
20
+ super("@arizeai/openinference-instrumentation-beeai", Version, Object.assign({}, instrumentationConfig));
21
+ this.oiTracer = new OITracer({ tracer: this.tracer, traceConfig });
22
+ }
23
+ init() {
24
+ const module = new InstrumentationNodeModuleDefinition(MODULE_NAME, ["0.*"], this.patch.bind(this), this.unpatch.bind(this));
25
+ return module;
26
+ }
27
+ /**
28
+ * Manually instruments the BeeAI module. This is needed when the module is not loaded via require (commonjs)
29
+ * @param {openai} module
30
+ */
31
+ manuallyInstrument(module) {
32
+ diag.debug(`[BeeaiInstrumentation] Manually instrumenting ${MODULE_NAME}`);
33
+ this.patch(module);
34
+ }
35
+ patch(module) {
36
+ if (!module?.BaseAgent) {
37
+ diag.warn("[BeeaiInstrumentation] BaseAgent not found, skipping instrumentation.");
38
+ return module;
39
+ }
40
+ if (module?.openInferencePatched || _isOpenInferencePatched) {
41
+ return module;
42
+ }
43
+ diag.info("[BeeaiInstrumentation] Patching BaseAgent.run");
44
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
45
+ const instrumentation = this;
46
+ this._wrap(module.BaseAgent.prototype, "run", (original) => {
47
+ return function wrappedRun(...args) {
48
+ const returned = original.apply(this, args);
49
+ returned.middleware(createTelemetryMiddleware(instrumentation.oiTracer));
50
+ return returned;
51
+ };
52
+ });
53
+ return module;
54
+ }
55
+ /**
56
+ * Un-patches the OpenAI module's chat completions API
57
+ */
58
+ unpatch(moduleExports, moduleVersion) {
59
+ diag.debug(`Removing patch for ${MODULE_NAME}@${moduleVersion}`);
60
+ this._unwrap(moduleExports.BaseAgent.prototype, "run");
61
+ _isOpenInferencePatched = false;
62
+ try {
63
+ // This can fail if the module is made immutable via the runtime or bundler
64
+ moduleExports.openInferencePatched = false;
65
+ }
66
+ catch (e) {
67
+ diag.warn(`Failed to unset ${MODULE_NAME} patched flag on the module`, e);
68
+ }
69
+ }
70
+ }
71
+ //# sourceMappingURL=instrumentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Copyright 2025 IBM Corp.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { OITracer } from "@arizeai/openinference-core";
17
+ import type { GetRunContext, RunInstance } from "beeai-framework/context";
18
+ export declare const activeTracesMap: Map<string, string>;
19
+ /**
20
+ * First we collect, filter and transform events from the beeai emitter to our internal framework spans in the `emitter.match("*.*"` block
21
+ * Some special data are collected in other `emitter.match` blocks like (history, response, rawPromt)
22
+ *
23
+ * Then we create the open telemetry spans when all data are collected. We are retroactively deleting some unnecessary internal spans
24
+ * see "emitter.match((event) => event.path === `${basePath}.run.${finishEventName}`" section
25
+ */
26
+ export declare function createTelemetryMiddleware(tracer: OITracer): (context: GetRunContext<RunInstance, unknown>) => void;
27
+ //# sourceMappingURL=middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAWvD,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAkB1E,eAAO,MAAM,eAAe,qBAA4B,CAAC;AAEzD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,QAAQ,aACvC,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,UAsQrD"}