@introspection-sdk/introspection-node 0.20.0 → 0.21.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 (211) hide show
  1. package/README.md +28 -8
  2. package/dist/auth.d.ts +1 -1
  3. package/dist/client.d.ts +4 -3
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +16 -7
  6. package/dist/client.js.map +1 -1
  7. package/dist/dev-target.js +1 -1
  8. package/dist/index.d.ts +3 -7
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +2 -6
  11. package/dist/index.js.map +1 -1
  12. package/dist/otel/index.d.ts +1 -14
  13. package/dist/otel/index.d.ts.map +1 -1
  14. package/dist/otel/index.js +10 -18
  15. package/dist/otel/index.js.map +1 -1
  16. package/dist/otel/init.d.ts +19 -21
  17. package/dist/otel/init.d.ts.map +1 -1
  18. package/dist/otel/init.js +62 -48
  19. package/dist/otel/init.js.map +1 -1
  20. package/dist/otel/integrations/base.d.ts +17 -37
  21. package/dist/otel/integrations/base.d.ts.map +1 -1
  22. package/dist/otel/integrations/base.js +6 -13
  23. package/dist/otel/integrations/base.js.map +1 -1
  24. package/dist/otel/integrations/index.d.ts +3 -4
  25. package/dist/otel/integrations/index.d.ts.map +1 -1
  26. package/dist/otel/integrations/index.js +6 -25
  27. package/dist/otel/integrations/index.js.map +1 -1
  28. package/dist/otel/integrations/pi.d.ts.map +1 -1
  29. package/dist/otel/integrations/pi.js +9 -1
  30. package/dist/otel/integrations/pi.js.map +1 -1
  31. package/dist/otel/logs.d.ts +41 -8
  32. package/dist/otel/logs.d.ts.map +1 -1
  33. package/dist/otel/logs.js +95 -66
  34. package/dist/otel/logs.js.map +1 -1
  35. package/dist/otel/pi.d.ts +18 -5
  36. package/dist/otel/pi.d.ts.map +1 -1
  37. package/dist/otel/pi.js +38 -9
  38. package/dist/otel/pi.js.map +1 -1
  39. package/dist/otel/register.d.ts +2 -2
  40. package/dist/otel/register.d.ts.map +1 -1
  41. package/dist/otel/register.js +7 -9
  42. package/dist/otel/register.js.map +1 -1
  43. package/dist/otel/setup.d.ts +2 -2
  44. package/dist/otel/setup.d.ts.map +1 -1
  45. package/dist/otel/setup.js +16 -6
  46. package/dist/otel/setup.js.map +1 -1
  47. package/dist/otel/span-processor.d.ts +18 -5
  48. package/dist/otel/span-processor.d.ts.map +1 -1
  49. package/dist/otel/span-processor.js +50 -65
  50. package/dist/otel/span-processor.js.map +1 -1
  51. package/dist/resources/experiments.d.ts +10 -5
  52. package/dist/resources/experiments.d.ts.map +1 -1
  53. package/dist/resources/experiments.js +9 -25
  54. package/dist/resources/experiments.js.map +1 -1
  55. package/dist/resources/recipes.d.ts +6 -6
  56. package/dist/resources/recipes.d.ts.map +1 -1
  57. package/dist/resources/recipes.js +5 -23
  58. package/dist/resources/recipes.js.map +1 -1
  59. package/dist/resources/runtimes.d.ts +2 -2
  60. package/dist/resources/runtimes.d.ts.map +1 -1
  61. package/dist/resources/runtimes.js +2 -2
  62. package/dist/resources/runtimes.js.map +1 -1
  63. package/dist/runner.d.ts +8 -4
  64. package/dist/runner.d.ts.map +1 -1
  65. package/dist/runner.js +26 -18
  66. package/dist/runner.js.map +1 -1
  67. package/dist/types.d.ts +1 -1
  68. package/dist/types.d.ts.map +1 -1
  69. package/dist/types.js +1 -1
  70. package/dist/types.js.map +1 -1
  71. package/dist/utils.d.ts +45 -0
  72. package/dist/utils.d.ts.map +1 -1
  73. package/dist/utils.js +61 -2
  74. package/dist/utils.js.map +1 -1
  75. package/dist/version.d.ts +1 -1
  76. package/dist/version.d.ts.map +1 -1
  77. package/dist/version.js +1 -1
  78. package/dist/version.js.map +1 -1
  79. package/package.json +18 -60
  80. package/.turbo/turbo-build.log +0 -4
  81. package/dist/converters/claude.d.ts +0 -150
  82. package/dist/converters/claude.d.ts.map +0 -1
  83. package/dist/converters/claude.js +0 -211
  84. package/dist/converters/claude.js.map +0 -1
  85. package/dist/converters/gemini.d.ts +0 -90
  86. package/dist/converters/gemini.d.ts.map +0 -1
  87. package/dist/converters/gemini.js +0 -171
  88. package/dist/converters/gemini.js.map +0 -1
  89. package/dist/converters/index.d.ts +0 -9
  90. package/dist/converters/index.d.ts.map +0 -1
  91. package/dist/converters/index.js +0 -9
  92. package/dist/converters/index.js.map +0 -1
  93. package/dist/converters/openai.d.ts +0 -51
  94. package/dist/converters/openai.d.ts.map +0 -1
  95. package/dist/converters/openai.js +0 -269
  96. package/dist/converters/openai.js.map +0 -1
  97. package/dist/converters/openinference.d.ts +0 -107
  98. package/dist/converters/openinference.d.ts.map +0 -1
  99. package/dist/converters/openinference.js +0 -553
  100. package/dist/converters/openinference.js.map +0 -1
  101. package/dist/converters/vercel.d.ts +0 -21
  102. package/dist/converters/vercel.d.ts.map +0 -1
  103. package/dist/converters/vercel.js +0 -236
  104. package/dist/converters/vercel.js.map +0 -1
  105. package/dist/otel/anthropic.d.ts +0 -63
  106. package/dist/otel/anthropic.d.ts.map +0 -1
  107. package/dist/otel/anthropic.js +0 -475
  108. package/dist/otel/anthropic.js.map +0 -1
  109. package/dist/otel/claude-hooks.d.ts +0 -346
  110. package/dist/otel/claude-hooks.d.ts.map +0 -1
  111. package/dist/otel/claude-hooks.js +0 -647
  112. package/dist/otel/claude-hooks.js.map +0 -1
  113. package/dist/otel/claude-wrapper.d.ts +0 -93
  114. package/dist/otel/claude-wrapper.d.ts.map +0 -1
  115. package/dist/otel/claude-wrapper.js +0 -155
  116. package/dist/otel/claude-wrapper.js.map +0 -1
  117. package/dist/otel/gemini.d.ts +0 -56
  118. package/dist/otel/gemini.d.ts.map +0 -1
  119. package/dist/otel/gemini.js +0 -350
  120. package/dist/otel/gemini.js.map +0 -1
  121. package/dist/otel/integrations/anthropic.d.ts +0 -10
  122. package/dist/otel/integrations/anthropic.d.ts.map +0 -1
  123. package/dist/otel/integrations/anthropic.js +0 -26
  124. package/dist/otel/integrations/anthropic.js.map +0 -1
  125. package/dist/otel/integrations/claude-agent.d.ts +0 -12
  126. package/dist/otel/integrations/claude-agent.d.ts.map +0 -1
  127. package/dist/otel/integrations/claude-agent.js +0 -28
  128. package/dist/otel/integrations/claude-agent.js.map +0 -1
  129. package/dist/otel/integrations/gemini.d.ts +0 -11
  130. package/dist/otel/integrations/gemini.d.ts.map +0 -1
  131. package/dist/otel/integrations/gemini.js +0 -23
  132. package/dist/otel/integrations/gemini.js.map +0 -1
  133. package/dist/otel/integrations/langchain.d.ts +0 -15
  134. package/dist/otel/integrations/langchain.d.ts.map +0 -1
  135. package/dist/otel/integrations/langchain.js +0 -43
  136. package/dist/otel/integrations/langchain.js.map +0 -1
  137. package/dist/otel/integrations/mastra.d.ts +0 -14
  138. package/dist/otel/integrations/mastra.d.ts.map +0 -1
  139. package/dist/otel/integrations/mastra.js +0 -31
  140. package/dist/otel/integrations/mastra.js.map +0 -1
  141. package/dist/otel/integrations/openai-agents.d.ts +0 -11
  142. package/dist/otel/integrations/openai-agents.d.ts.map +0 -1
  143. package/dist/otel/integrations/openai-agents.js +0 -30
  144. package/dist/otel/integrations/openai-agents.js.map +0 -1
  145. package/dist/otel/integrations/vercel.d.ts +0 -14
  146. package/dist/otel/integrations/vercel.d.ts.map +0 -1
  147. package/dist/otel/integrations/vercel.js +0 -20
  148. package/dist/otel/integrations/vercel.js.map +0 -1
  149. package/dist/otel/langchain-handler.d.ts +0 -112
  150. package/dist/otel/langchain-handler.d.ts.map +0 -1
  151. package/dist/otel/langchain-handler.js +0 -561
  152. package/dist/otel/langchain-handler.js.map +0 -1
  153. package/dist/otel/mastra-exporter.d.ts +0 -87
  154. package/dist/otel/mastra-exporter.d.ts.map +0 -1
  155. package/dist/otel/mastra-exporter.js +0 -530
  156. package/dist/otel/mastra-exporter.js.map +0 -1
  157. package/dist/otel/openai.d.ts +0 -20
  158. package/dist/otel/openai.d.ts.map +0 -1
  159. package/dist/otel/openai.js +0 -55
  160. package/dist/otel/openai.js.map +0 -1
  161. package/dist/otel/tracing-processor.d.ts +0 -139
  162. package/dist/otel/tracing-processor.d.ts.map +0 -1
  163. package/dist/otel/tracing-processor.js +0 -434
  164. package/dist/otel/tracing-processor.js.map +0 -1
  165. package/eslint.config.mjs +0 -4
  166. package/src/auth.ts +0 -236
  167. package/src/client.ts +0 -163
  168. package/src/converters/claude.ts +0 -343
  169. package/src/converters/gemini.ts +0 -243
  170. package/src/converters/index.ts +0 -50
  171. package/src/converters/openai.ts +0 -300
  172. package/src/converters/openinference.ts +0 -665
  173. package/src/converters/vercel.ts +0 -302
  174. package/src/dev-target.ts +0 -79
  175. package/src/http.ts +0 -43
  176. package/src/index.ts +0 -277
  177. package/src/otel/anthropic.ts +0 -619
  178. package/src/otel/claude-hooks.ts +0 -1116
  179. package/src/otel/claude-wrapper.ts +0 -239
  180. package/src/otel/gemini.ts +0 -483
  181. package/src/otel/index.ts +0 -128
  182. package/src/otel/init.ts +0 -411
  183. package/src/otel/integrations/anthropic.ts +0 -36
  184. package/src/otel/integrations/base.ts +0 -158
  185. package/src/otel/integrations/claude-agent.ts +0 -36
  186. package/src/otel/integrations/gemini.ts +0 -30
  187. package/src/otel/integrations/index.ts +0 -152
  188. package/src/otel/integrations/langchain.ts +0 -60
  189. package/src/otel/integrations/mastra.ts +0 -48
  190. package/src/otel/integrations/openai-agents.ts +0 -47
  191. package/src/otel/integrations/pi.ts +0 -28
  192. package/src/otel/integrations/vercel.ts +0 -26
  193. package/src/otel/langchain-handler.ts +0 -804
  194. package/src/otel/logs.ts +0 -395
  195. package/src/otel/mastra-exporter.ts +0 -714
  196. package/src/otel/openai.ts +0 -93
  197. package/src/otel/pi.ts +0 -94
  198. package/src/otel/register.ts +0 -50
  199. package/src/otel/setup.ts +0 -215
  200. package/src/otel/span-processor.ts +0 -512
  201. package/src/otel/tracing-processor.ts +0 -637
  202. package/src/pagination.ts +0 -10
  203. package/src/proxy-from-env.d.ts +0 -7
  204. package/src/resources/experiments.ts +0 -176
  205. package/src/resources/recipes.ts +0 -74
  206. package/src/resources/runtimes.ts +0 -31
  207. package/src/runner.ts +0 -213
  208. package/src/types.ts +0 -13
  209. package/src/utils.ts +0 -95
  210. package/src/version.ts +0 -2
  211. package/tsconfig.json +0 -8
@@ -1,236 +0,0 @@
1
- /**
2
- * Converter for Vercel AI SDK telemetry spans → Gen AI semantic conventions.
3
- *
4
- * The Vercel AI SDK emits spans with `ai.*` attributes when
5
- * `experimental_telemetry: { isEnabled: true }` is set on streamText/generateText.
6
- * This converter translates those to `gen_ai.*` so the Introspection frontend
7
- * can render them in the conversation view.
8
- */
9
- /** Check if a span is a Vercel AI SDK span worth converting.
10
- * Only converts child "do*" spans (doStream, doGenerate) which have
11
- * the actual prompt/response data with proper message windows.
12
- * Parent wrapper spans (ai.streamText, ai.generateText) are skipped
13
- * to avoid duplicate conversation steps without user messages. */
14
- export function isVercelAISpan(attrs) {
15
- const operationId = attrs["ai.operationId"];
16
- return typeof operationId === "string" && operationId.includes(".do");
17
- }
18
- /**
19
- * Convert Vercel AI SDK `ai.*` attributes to `gen_ai.*` semconv attributes.
20
- * Returns only the gen_ai attributes to merge — does NOT remove originals.
21
- */
22
- export function convertVercelAIToGenAI(attrs) {
23
- const result = {};
24
- // gen_ai.operation.name
25
- result["gen_ai.operation.name"] = "chat";
26
- // gen_ai.usage.cache_read.input_tokens from ai.usage.cachedInputTokens
27
- const cachedInput = attrs["ai.usage.cachedInputTokens"];
28
- if (typeof cachedInput === "number") {
29
- result["gen_ai.usage.cache_read.input_tokens"] = cachedInput;
30
- }
31
- // gen_ai.conversation.id from telemetry metadata (set by app)
32
- const metadataConvId = attrs["ai.telemetry.metadata.gen_ai.conversation.id"];
33
- if (typeof metadataConvId === "string") {
34
- result["gen_ai.conversation.id"] = metadataConvId;
35
- }
36
- // gen_ai.request.model and gen_ai.provider.name from ai.model.*
37
- const modelId = attrs["ai.model.id"];
38
- if (typeof modelId === "string" && !attrs["gen_ai.request.model"]) {
39
- result["gen_ai.request.model"] = modelId;
40
- }
41
- const modelProvider = attrs["ai.model.provider"];
42
- if (typeof modelProvider === "string" && !attrs["gen_ai.provider.name"]) {
43
- result["gen_ai.provider.name"] = modelProvider;
44
- }
45
- // Vercel AI SDK stores prompt data in two formats:
46
- // - Child spans (doStream): flat keys like ai.prompt.messages, ai.prompt.toolChoice
47
- // - Parent spans (streamText): single JSON string in ai.prompt
48
- const promptMessages = attrs["ai.prompt.messages"];
49
- const promptRaw = attrs["ai.prompt"];
50
- let parsedMessages = null;
51
- let parsedSystem = null;
52
- if (typeof promptMessages === "string") {
53
- try {
54
- const parsed = JSON.parse(promptMessages);
55
- if (Array.isArray(parsed))
56
- parsedMessages = parsed;
57
- }
58
- catch {
59
- /* ignore */
60
- }
61
- }
62
- else if (typeof promptRaw === "string") {
63
- try {
64
- const parsed = JSON.parse(promptRaw);
65
- if (Array.isArray(parsed?.messages))
66
- parsedMessages = parsed.messages;
67
- if (typeof parsed?.system === "string")
68
- parsedSystem = parsed.system;
69
- }
70
- catch {
71
- /* ignore */
72
- }
73
- }
74
- // gen_ai.input.messages — excluding system messages
75
- const nonSystemMessages = parsedMessages
76
- ? parsedMessages.filter((m) => m.role !== "system")
77
- : null;
78
- if (nonSystemMessages && nonSystemMessages.length > 0) {
79
- const converted = nonSystemMessages.map(convertVercelMessageToGenAI);
80
- result["gen_ai.input.messages"] = JSON.stringify(converted);
81
- }
82
- // gen_ai.output.messages — build from ai.response.text + ai.response.reasoning
83
- const responseText = attrs["ai.response.text"];
84
- const responseReasoning = attrs["ai.response.reasoning"];
85
- if (typeof responseText === "string" && responseText) {
86
- const parts = [];
87
- if (typeof responseReasoning === "string" && responseReasoning) {
88
- parts.push({ type: "reasoning", content: responseReasoning });
89
- }
90
- parts.push({ type: "text", content: responseText });
91
- result["gen_ai.output.messages"] = JSON.stringify([
92
- { role: "assistant", parts },
93
- ]);
94
- }
95
- // gen_ai.tool.definitions — parse ai.prompt.tools JSON strings
96
- const promptTools = attrs["ai.prompt.tools"];
97
- if (typeof promptTools === "string") {
98
- try {
99
- const parsed = JSON.parse(promptTools);
100
- if (Array.isArray(parsed)) {
101
- result["gen_ai.tool.definitions"] = JSON.stringify(parsed
102
- .map((t) => {
103
- if (typeof t === "string") {
104
- try {
105
- return JSON.parse(t);
106
- }
107
- catch {
108
- return { name: t };
109
- }
110
- }
111
- return t;
112
- })
113
- .map((t) => ({
114
- type: t.type || "function",
115
- name: t.name || "",
116
- description: t.description || "",
117
- parameters: t.inputSchema || t.parameters || undefined,
118
- })));
119
- }
120
- }
121
- catch {
122
- // ignore
123
- }
124
- }
125
- else if (Array.isArray(promptTools)) {
126
- const tools = promptTools.map((t) => {
127
- const parsed = (typeof t === "string" ? JSON.parse(t) : t);
128
- return {
129
- type: parsed.type || "function",
130
- name: parsed.name || "",
131
- description: parsed.description || "",
132
- parameters: parsed.inputSchema || parsed.parameters || undefined,
133
- };
134
- });
135
- result["gen_ai.tool.definitions"] = JSON.stringify(tools);
136
- }
137
- // gen_ai.agent.name — from telemetry functionId or operation
138
- const functionId = attrs["ai.telemetry.functionId"];
139
- if (typeof functionId === "string" && functionId) {
140
- result["gen_ai.agent.name"] = functionId;
141
- }
142
- // gen_ai.system_instructions — from parsed system prompt or system role messages
143
- if (parsedSystem) {
144
- result["gen_ai.system_instructions"] = JSON.stringify([
145
- { type: "text", content: parsedSystem },
146
- ]);
147
- }
148
- else if (parsedMessages) {
149
- const systemMsgs = parsedMessages.filter((m) => m.role === "system");
150
- if (systemMsgs.length > 0) {
151
- result["gen_ai.system_instructions"] = JSON.stringify(systemMsgs.map((m) => ({
152
- type: "text",
153
- content: typeof m.content === "string"
154
- ? m.content
155
- : JSON.stringify(m.content),
156
- })));
157
- }
158
- }
159
- return result;
160
- }
161
- function convertVercelMessageToGenAI(msg) {
162
- const role = msg.role || "user";
163
- if (role === "system") {
164
- return {
165
- role,
166
- parts: [{ type: "text", content: extractTextContent(msg.content) }],
167
- };
168
- }
169
- return {
170
- role,
171
- parts: extractParts(msg.content),
172
- };
173
- }
174
- function extractTextContent(content) {
175
- if (typeof content === "string")
176
- return content;
177
- if (Array.isArray(content)) {
178
- return content
179
- .filter((p) => p.type === "text")
180
- .map((p) => p.text || p.content || "")
181
- .join("");
182
- }
183
- return String(content || "");
184
- }
185
- function extractParts(content) {
186
- if (typeof content === "string") {
187
- return [{ type: "text", content }];
188
- }
189
- if (Array.isArray(content)) {
190
- return content.map((part) => {
191
- if (part.type === "text") {
192
- return { type: "text", content: part.text || part.content || "" };
193
- }
194
- if (part.type === "tool-call" || part.type === "tool_call") {
195
- // AI SDK v6 emits `input`; older versions emitted `args`.
196
- const rawArgs = part.input ?? part.args;
197
- return {
198
- type: "tool_call",
199
- name: part.toolName || part.name || "",
200
- id: part.toolCallId || part.id || "",
201
- arguments: typeof rawArgs === "string" ? rawArgs : JSON.stringify(rawArgs),
202
- };
203
- }
204
- if (part.type === "tool-result" || part.type === "tool_result") {
205
- // AI SDK v6 wraps text outputs in `{ output: { type: "text", value } }`.
206
- // Older shapes used `result`. Unwrap to the raw string when we can so
207
- // brightstaff's execution.failure.* / environment.exhaustion.* regex
208
- // detectors see the error text directly — otherwise downstream
209
- // consumers get a JSON-stringified blob and the canonical
210
- // `tool_call_response` shape is lost.
211
- const rawOutput = part.result !== undefined ? part.result : part.output;
212
- let response;
213
- if (typeof rawOutput === "string") {
214
- response = rawOutput;
215
- }
216
- else if (rawOutput &&
217
- typeof rawOutput === "object" &&
218
- "value" in rawOutput) {
219
- const value = rawOutput.value;
220
- response = typeof value === "string" ? value : JSON.stringify(value);
221
- }
222
- else {
223
- response = JSON.stringify(rawOutput);
224
- }
225
- return {
226
- type: "tool_call_response",
227
- id: part.toolCallId || part.id || "",
228
- response,
229
- };
230
- }
231
- return { type: "text", content: JSON.stringify(part) };
232
- });
233
- }
234
- return [{ type: "text", content: String(content || "") }];
235
- }
236
- //# sourceMappingURL=vercel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../src/converters/vercel.ts"],"names":[],"mappings":"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"}
@@ -1,63 +0,0 @@
1
- /**
2
- * Lightweight Anthropic instrumentor for Introspection SDK.
3
- *
4
- * Captures the full Anthropic response including thinking blocks (extended
5
- * thinking) with signatures, which third-party instrumentors drop.
6
- *
7
- * Supports both non-streaming (`messages.create`) and streaming
8
- * (`messages.create({ stream: true })`) calls.
9
- *
10
- * @example
11
- * ```ts
12
- * import { AnthropicInstrumentor } from "@introspection-sdk/introspection-node";
13
- *
14
- * const instrumentor = new AnthropicInstrumentor();
15
- * instrumentor.instrument({ tracerProvider: provider });
16
- * // All client.messages.create calls are now traced
17
- * ```
18
- */
19
- import type { Tracer, TracerProvider } from "@opentelemetry/api";
20
- /** Sentinel value for redacted thinking blocks — content was encrypted by safety systems. */
21
- export declare const REDACTED_THINKING_CONTENT = "[redacted]";
22
- /**
23
- * Traced wrapper around `client.messages.create(kwargs)`.
24
- * Creates a gen_ai span with full Anthropic response including thinking blocks.
25
- */
26
- export declare function tracedMessagesCreate(tracer: Tracer, client: {
27
- messages: {
28
- create: (...args: unknown[]) => Promise<unknown>;
29
- };
30
- }, kwargs: Record<string, unknown>, conversationId?: string): Promise<unknown>;
31
- export declare class AnthropicInstrumentor {
32
- private tracer;
33
- private patchedClients;
34
- private protoRestores;
35
- private conversationId;
36
- instrument(opts: {
37
- tracerProvider?: TracerProvider;
38
- /** The Anthropic client instance to instrument. */
39
- client: any;
40
- /**
41
- * Conversation ID shared across all spans produced by this instrumentor.
42
- * Enables the Introspection processor to reliably link multi-turn API calls
43
- * into a single conversation without relying on history-hash matching.
44
- * Defaults to a random UUID generated at instrument() time.
45
- */
46
- conversationId?: string;
47
- }): void;
48
- /**
49
- * Patch `Anthropic.Messages.prototype.create` so **every** client constructed
50
- * from the given module is traced — the one-liner path used by
51
- * `introspection.init()`. Idempotent: a second call is a no-op.
52
- *
53
- * @param opts.anthropic The `@anthropic-ai/sdk` module's default export
54
- * (the `Anthropic` class). Its `.Messages.prototype.create` is patched.
55
- */
56
- instrumentClass(opts: {
57
- anthropic: any;
58
- tracerProvider?: TracerProvider;
59
- conversationId?: string;
60
- }): void;
61
- uninstrument(): void;
62
- }
63
- //# sourceMappingURL=anthropic.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/otel/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAiBH,OAAO,KAAK,EAAE,MAAM,EAAQ,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMvE,6FAA6F;AAC7F,eAAO,MAAM,yBAAyB,eAAe,CAAC;AAuWtD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE;IAAE,QAAQ,EAAE;QAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,CAAA;CAAE,EAC1E,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,OAAO,CAAC,CAuBlB;AA+FD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAuB;IAErC,OAAO,CAAC,cAAc,CAAmD;IACzE,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,cAAc,CAAqB;IAE3C,UAAU,CAAC,IAAI,EAAE;QACf,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,mDAAmD;QAEnD,MAAM,EAAE,GAAG,CAAC;QACZ;;;;;WAKG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,IAAI;IAuBR;;;;;;;OAOG;IACH,eAAe,CAAC,IAAI,EAAE;QAEpB,SAAS,EAAE,GAAG,CAAC;QACf,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,IAAI;IA2BR,YAAY,IAAI,IAAI;CASrB"}