@introspection-sdk/introspection-node 0.4.1 → 0.4.3

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 (166) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-check-types.log +4 -0
  3. package/.turbo/turbo-lint.log +5 -0
  4. package/dist/ai-sdk-integration.d.ts.map +1 -1
  5. package/dist/ai-sdk-integration.js +2 -2
  6. package/dist/claude-hooks.d.ts.map +1 -1
  7. package/dist/claude-hooks.js +3 -3
  8. package/dist/client.d.ts +42 -132
  9. package/dist/client.d.ts.map +1 -1
  10. package/dist/client.js +66 -365
  11. package/dist/client.js.map +1 -0
  12. package/dist/converters/claude.d.ts +5 -1
  13. package/dist/converters/claude.d.ts.map +1 -1
  14. package/dist/converters/claude.js +7 -0
  15. package/dist/converters/claude.js.map +1 -0
  16. package/dist/converters/gemini.d.ts +90 -0
  17. package/dist/converters/gemini.d.ts.map +1 -0
  18. package/dist/converters/gemini.js +171 -0
  19. package/dist/converters/gemini.js.map +1 -0
  20. package/dist/converters/index.d.ts +1 -1
  21. package/dist/converters/index.d.ts.map +1 -1
  22. package/dist/converters/index.js +2 -1
  23. package/dist/converters/index.js.map +1 -0
  24. package/dist/converters/openai.js +1 -0
  25. package/dist/converters/openai.js.map +1 -0
  26. package/dist/converters/openclaw.d.ts +16 -0
  27. package/dist/converters/openclaw.d.ts.map +1 -0
  28. package/dist/converters/openclaw.js +49 -0
  29. package/dist/converters/openinference.js +1 -0
  30. package/dist/converters/openinference.js.map +1 -0
  31. package/dist/converters/vercel.d.ts.map +1 -1
  32. package/dist/converters/vercel.js +31 -3
  33. package/dist/converters/vercel.js.map +1 -0
  34. package/dist/http.d.ts +36 -0
  35. package/dist/http.d.ts.map +1 -0
  36. package/dist/http.js +145 -0
  37. package/dist/http.js.map +1 -0
  38. package/dist/index.d.ts +24 -27
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +22 -32
  41. package/dist/index.js.map +1 -0
  42. package/dist/langchain-handler.d.ts.map +1 -1
  43. package/dist/langchain-handler.js +2 -2
  44. package/dist/mastra-exporter.d.ts.map +1 -1
  45. package/dist/mastra-exporter.js +2 -2
  46. package/dist/otel/anthropic.d.ts +62 -0
  47. package/dist/otel/anthropic.d.ts.map +1 -0
  48. package/dist/otel/anthropic.js +425 -0
  49. package/dist/otel/anthropic.js.map +1 -0
  50. package/dist/otel/claude-hooks.d.ts +346 -0
  51. package/dist/otel/claude-hooks.d.ts.map +1 -0
  52. package/dist/otel/claude-hooks.js +645 -0
  53. package/dist/otel/claude-hooks.js.map +1 -0
  54. package/dist/otel/claude-wrapper.d.ts +93 -0
  55. package/dist/otel/claude-wrapper.d.ts.map +1 -0
  56. package/dist/otel/claude-wrapper.js +155 -0
  57. package/dist/otel/claude-wrapper.js.map +1 -0
  58. package/dist/otel/gemini.d.ts +48 -0
  59. package/dist/otel/gemini.d.ts.map +1 -0
  60. package/dist/otel/gemini.js +297 -0
  61. package/dist/otel/gemini.js.map +1 -0
  62. package/dist/otel/index.d.ts +27 -0
  63. package/dist/otel/index.d.ts.map +1 -0
  64. package/dist/otel/index.js +33 -0
  65. package/dist/otel/index.js.map +1 -0
  66. package/dist/otel/langchain-handler.d.ts +112 -0
  67. package/dist/otel/langchain-handler.d.ts.map +1 -0
  68. package/dist/otel/langchain-handler.js +555 -0
  69. package/dist/otel/langchain-handler.js.map +1 -0
  70. package/dist/otel/logs.d.ts +82 -0
  71. package/dist/otel/logs.d.ts.map +1 -0
  72. package/dist/otel/logs.js +271 -0
  73. package/dist/otel/logs.js.map +1 -0
  74. package/dist/otel/mastra-exporter.d.ts +87 -0
  75. package/dist/otel/mastra-exporter.d.ts.map +1 -0
  76. package/dist/otel/mastra-exporter.js +525 -0
  77. package/dist/otel/mastra-exporter.js.map +1 -0
  78. package/dist/otel/pi.d.ts +59 -0
  79. package/dist/otel/pi.d.ts.map +1 -0
  80. package/dist/otel/pi.js +67 -0
  81. package/dist/otel/pi.js.map +1 -0
  82. package/dist/otel/setup.d.ts +23 -0
  83. package/dist/otel/setup.d.ts.map +1 -0
  84. package/dist/otel/setup.js +127 -0
  85. package/dist/otel/setup.js.map +1 -0
  86. package/dist/otel/span-processor.d.ts +62 -0
  87. package/dist/otel/span-processor.d.ts.map +1 -0
  88. package/dist/otel/span-processor.js +319 -0
  89. package/dist/otel/span-processor.js.map +1 -0
  90. package/dist/otel/tracing-processor.d.ts +139 -0
  91. package/dist/otel/tracing-processor.d.ts.map +1 -0
  92. package/dist/otel/tracing-processor.js +418 -0
  93. package/dist/otel/tracing-processor.js.map +1 -0
  94. package/dist/resources/experiments.d.ts +31 -0
  95. package/dist/resources/experiments.d.ts.map +1 -0
  96. package/dist/resources/experiments.js +133 -0
  97. package/dist/resources/experiments.js.map +1 -0
  98. package/dist/resources/recipes.d.ts +22 -0
  99. package/dist/resources/recipes.d.ts.map +1 -0
  100. package/dist/resources/recipes.js +61 -0
  101. package/dist/resources/recipes.js.map +1 -0
  102. package/dist/resources/runtimes.d.ts +76 -0
  103. package/dist/resources/runtimes.d.ts.map +1 -0
  104. package/dist/resources/runtimes.js +179 -0
  105. package/dist/resources/runtimes.js.map +1 -0
  106. package/dist/runner-resources/files.d.ts +35 -0
  107. package/dist/runner-resources/files.d.ts.map +1 -0
  108. package/dist/runner-resources/files.js +131 -0
  109. package/dist/runner-resources/files.js.map +1 -0
  110. package/dist/runner-resources/tasks.d.ts +39 -0
  111. package/dist/runner-resources/tasks.d.ts.map +1 -0
  112. package/dist/runner-resources/tasks.js +129 -0
  113. package/dist/runner-resources/tasks.js.map +1 -0
  114. package/dist/runner.d.ts +80 -0
  115. package/dist/runner.d.ts.map +1 -0
  116. package/dist/runner.js +159 -0
  117. package/dist/runner.js.map +1 -0
  118. package/dist/span-processor.d.ts.map +1 -1
  119. package/dist/span-processor.js +3 -3
  120. package/dist/streaming.d.ts +8 -0
  121. package/dist/streaming.d.ts.map +1 -0
  122. package/dist/streaming.js +67 -0
  123. package/dist/streaming.js.map +1 -0
  124. package/dist/tracing-processor.d.ts.map +1 -1
  125. package/dist/tracing-processor.js +3 -3
  126. package/dist/types/genai.d.ts +165 -0
  127. package/dist/types/genai.d.ts.map +1 -0
  128. package/dist/types/genai.js +82 -0
  129. package/dist/types.js +1 -0
  130. package/dist/types.js.map +1 -0
  131. package/dist/utils.d.ts +1 -0
  132. package/dist/utils.d.ts.map +1 -1
  133. package/dist/utils.js +14 -0
  134. package/dist/utils.js.map +1 -0
  135. package/dist/version.js +1 -0
  136. package/dist/version.js.map +1 -0
  137. package/package.json +83 -25
  138. package/src/client.ts +76 -471
  139. package/src/converters/claude.ts +11 -1
  140. package/src/converters/gemini.ts +243 -0
  141. package/src/converters/index.ts +13 -7
  142. package/src/converters/vercel.ts +41 -3
  143. package/src/http.ts +163 -0
  144. package/src/index.ts +110 -75
  145. package/src/{anthropic.ts → otel/anthropic.ts} +95 -8
  146. package/src/{claude-hooks.ts → otel/claude-hooks.ts} +125 -24
  147. package/src/{claude-wrapper.ts → otel/claude-wrapper.ts} +1 -1
  148. package/src/otel/gemini.ts +397 -0
  149. package/src/otel/index.ts +80 -0
  150. package/src/{langchain-handler.ts → otel/langchain-handler.ts} +56 -7
  151. package/src/otel/logs.ts +394 -0
  152. package/src/{mastra-exporter.ts → otel/mastra-exporter.ts} +86 -23
  153. package/src/otel/pi.ts +88 -0
  154. package/src/otel/setup.ts +174 -0
  155. package/src/{span-processor.ts → otel/span-processor.ts} +17 -10
  156. package/src/{tracing-processor.ts → otel/tracing-processor.ts} +100 -23
  157. package/src/resources/experiments.ts +170 -0
  158. package/src/resources/recipes.ts +73 -0
  159. package/src/resources/runtimes.ts +231 -0
  160. package/src/runner-resources/files.ts +163 -0
  161. package/src/runner-resources/tasks.ts +156 -0
  162. package/src/runner.ts +194 -0
  163. package/src/streaming.ts +57 -0
  164. package/src/utils.ts +15 -0
  165. package/src/ai-sdk-integration.ts +0 -689
  166. package/src/converters/ai-sdk.ts +0 -323
@@ -0,0 +1,425 @@
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 { trace, context as otelContext, propagation, SpanKind, SpanStatusCode, } from "@opentelemetry/api";
20
+ // ---------------------------------------------------------------------------
21
+ // Converters
22
+ // ---------------------------------------------------------------------------
23
+ /** Sentinel value for redacted thinking blocks — content was encrypted by safety systems. */
24
+ export const REDACTED_THINKING_CONTENT = "[redacted]";
25
+ function blockToParts(block) {
26
+ const bt = block.type || "";
27
+ if (bt === "text") {
28
+ return [{ type: "text", content: block.text || "" }];
29
+ }
30
+ if (bt === "thinking") {
31
+ const part = {
32
+ type: "thinking",
33
+ content: block.thinking || undefined,
34
+ signature: block.signature || undefined,
35
+ provider_name: "anthropic",
36
+ };
37
+ return [part];
38
+ }
39
+ if (bt === "redacted_thinking") {
40
+ return [
41
+ {
42
+ type: "thinking",
43
+ content: REDACTED_THINKING_CONTENT,
44
+ signature: block.data || undefined,
45
+ provider_name: "anthropic",
46
+ },
47
+ ];
48
+ }
49
+ if (bt === "tool_use") {
50
+ return [
51
+ {
52
+ type: "tool_call",
53
+ id: block.id || "",
54
+ name: block.name || "",
55
+ arguments: block.input,
56
+ },
57
+ ];
58
+ }
59
+ if (bt === "tool_result") {
60
+ return [
61
+ {
62
+ type: "tool_call_response",
63
+ id: block.tool_use_id || "",
64
+ response: block.content != null ? String(block.content) : "",
65
+ },
66
+ ];
67
+ }
68
+ return [];
69
+ }
70
+ function convertAnthropicInput(messages) {
71
+ const result = [];
72
+ for (const msg of messages) {
73
+ const role = msg.role || "user";
74
+ const content = msg.content;
75
+ if (typeof content === "string") {
76
+ result.push({
77
+ role: role,
78
+ parts: [{ type: "text", content }],
79
+ });
80
+ }
81
+ else if (Array.isArray(content)) {
82
+ const parts = [];
83
+ for (const block of content) {
84
+ const rec = typeof block === "object" && block !== null
85
+ ? block
86
+ : { type: "text", text: String(block) };
87
+ parts.push(...blockToParts(rec));
88
+ }
89
+ if (parts.length > 0) {
90
+ result.push({ role: role, parts });
91
+ }
92
+ }
93
+ }
94
+ return result;
95
+ }
96
+ function convertAnthropicOutput(content) {
97
+ const parts = [];
98
+ let hasToolCalls = false;
99
+ for (const block of content) {
100
+ const newParts = blockToParts(block);
101
+ for (const p of newParts) {
102
+ if (p.type === "tool_call")
103
+ hasToolCalls = true;
104
+ }
105
+ parts.push(...newParts);
106
+ }
107
+ if (parts.length === 0)
108
+ return [];
109
+ return [
110
+ {
111
+ role: "assistant",
112
+ parts,
113
+ finish_reason: hasToolCalls ? "tool-calls" : "stop",
114
+ },
115
+ ];
116
+ }
117
+ // ---------------------------------------------------------------------------
118
+ // Span helpers
119
+ // ---------------------------------------------------------------------------
120
+ function serializeMessages(msgs) {
121
+ return JSON.stringify(msgs.map((m) => {
122
+ const obj = { role: m.role, parts: m.parts };
123
+ if ("finish_reason" in m && m.finish_reason) {
124
+ obj.finish_reason = m.finish_reason;
125
+ }
126
+ return obj;
127
+ }));
128
+ }
129
+ function startSpan(tracer, model, conversationId) {
130
+ const span = tracer.startSpan("chat", {
131
+ kind: SpanKind.CLIENT,
132
+ attributes: {
133
+ "gen_ai.system": "anthropic",
134
+ "gen_ai.provider.name": "anthropic",
135
+ "gen_ai.operation.name": "chat",
136
+ "gen_ai.request.model": model,
137
+ "openinference.span.kind": "LLM",
138
+ ...(conversationId
139
+ ? { "gen_ai.conversation.id": conversationId }
140
+ : undefined),
141
+ },
142
+ });
143
+ return { span, token: null };
144
+ }
145
+ function setRequestAttrs(span, kwargs) {
146
+ const messages = kwargs.messages || [];
147
+ const inputMsgs = convertAnthropicInput(messages);
148
+ if (inputMsgs.length > 0) {
149
+ span.setAttribute("gen_ai.input.messages", serializeMessages(inputMsgs));
150
+ }
151
+ const system = kwargs.system;
152
+ if (system) {
153
+ let sysVal;
154
+ if (typeof system === "string") {
155
+ sysVal = JSON.stringify([{ type: "text", content: system }]);
156
+ }
157
+ else if (Array.isArray(system)) {
158
+ // Anthropic block format: [{type:"text", text:"...", cache_control:{...}}]
159
+ // Normalize to gen_ai format: [{type:"text", content:"..."}]
160
+ sysVal = JSON.stringify(system.map((block) => ({
161
+ type: "text",
162
+ content: typeof block.text === "string"
163
+ ? block.text
164
+ : typeof block.content === "string"
165
+ ? block.content
166
+ : "",
167
+ })));
168
+ }
169
+ else {
170
+ sysVal = JSON.stringify(system);
171
+ }
172
+ span.setAttribute("gen_ai.system_instructions", sysVal);
173
+ }
174
+ const tools = kwargs.tools;
175
+ if (tools && tools.length > 0) {
176
+ const defs = tools.map((t) => ({
177
+ name: t.name || "",
178
+ description: t.description,
179
+ parameters: t.input_schema,
180
+ }));
181
+ span.setAttribute("gen_ai.tool.definitions", JSON.stringify(defs));
182
+ }
183
+ }
184
+ function setResponseAttrs(span, response) {
185
+ const content = response.content;
186
+ if (content) {
187
+ const outputMsgs = convertAnthropicOutput(content);
188
+ if (outputMsgs.length > 0) {
189
+ span.setAttribute("gen_ai.output.messages", serializeMessages(outputMsgs));
190
+ }
191
+ }
192
+ if (response.id)
193
+ span.setAttribute("gen_ai.response.id", String(response.id));
194
+ if (response.model)
195
+ span.setAttribute("gen_ai.response.model", String(response.model));
196
+ const usage = response.usage;
197
+ if (usage) {
198
+ if (usage.input_tokens != null)
199
+ span.setAttribute("gen_ai.usage.input_tokens", usage.input_tokens);
200
+ if (usage.output_tokens != null)
201
+ span.setAttribute("gen_ai.usage.output_tokens", usage.output_tokens);
202
+ if (usage.cache_read_input_tokens != null)
203
+ span.setAttribute("gen_ai.usage.cache_read.input_tokens", usage.cache_read_input_tokens);
204
+ if (usage.cache_creation_input_tokens != null)
205
+ span.setAttribute("gen_ai.usage.cache_creation.input_tokens", usage.cache_creation_input_tokens);
206
+ }
207
+ span.setStatus({ code: SpanStatusCode.OK });
208
+ }
209
+ class TracedStream {
210
+ inner;
211
+ span;
212
+ blocks = [];
213
+ currentBlock = null;
214
+ responseId = null;
215
+ responseModel = null;
216
+ inputTokens = 0;
217
+ outputTokens = 0;
218
+ cacheReadInputTokens = 0;
219
+ cacheCreationInputTokens = 0;
220
+ finalized = false;
221
+ constructor(inner, span) {
222
+ this.inner = inner;
223
+ this.span = span;
224
+ }
225
+ async *[Symbol.asyncIterator]() {
226
+ try {
227
+ for await (const event of this.inner) {
228
+ this.processEvent(event);
229
+ yield event;
230
+ }
231
+ }
232
+ finally {
233
+ this.finalize();
234
+ }
235
+ }
236
+ processEvent(event) {
237
+ if (event.type === "message_start" && event.message) {
238
+ this.responseId = event.message.id || null;
239
+ this.responseModel = event.message.model || null;
240
+ const usage = event.message.usage;
241
+ if (usage) {
242
+ this.inputTokens = usage.input_tokens || 0;
243
+ this.cacheReadInputTokens = usage.cache_read_input_tokens || 0;
244
+ this.cacheCreationInputTokens = usage.cache_creation_input_tokens || 0;
245
+ }
246
+ }
247
+ else if (event.type === "content_block_start" && event.content_block) {
248
+ const bt = event.content_block.type || "";
249
+ this.currentBlock = { type: bt };
250
+ if (bt === "thinking") {
251
+ this.currentBlock.thinking = "";
252
+ this.currentBlock.signature = "";
253
+ }
254
+ else if (bt === "text") {
255
+ this.currentBlock.text = "";
256
+ }
257
+ }
258
+ else if (event.type === "content_block_delta" && event.delta) {
259
+ if (!this.currentBlock)
260
+ return;
261
+ const dt = event.delta.type || "";
262
+ if (dt === "thinking_delta") {
263
+ this.currentBlock.thinking =
264
+ (this.currentBlock.thinking || "") +
265
+ (event.delta.thinking || "");
266
+ }
267
+ else if (dt === "text_delta") {
268
+ this.currentBlock.text =
269
+ (this.currentBlock.text || "") +
270
+ (event.delta.text || "");
271
+ }
272
+ else if (dt === "signature_delta") {
273
+ this.currentBlock.signature =
274
+ (this.currentBlock.signature || "") +
275
+ (event.delta.signature || "");
276
+ }
277
+ }
278
+ else if (event.type === "content_block_stop") {
279
+ if (this.currentBlock) {
280
+ this.blocks.push(this.currentBlock);
281
+ this.currentBlock = null;
282
+ }
283
+ }
284
+ else if (event.type === "message_delta") {
285
+ const usage = event.usage;
286
+ if (usage)
287
+ this.outputTokens = usage.output_tokens || 0;
288
+ }
289
+ }
290
+ finalize() {
291
+ if (this.finalized)
292
+ return;
293
+ this.finalized = true;
294
+ if (this.blocks.length > 0) {
295
+ const outputMsgs = convertAnthropicOutput(this.blocks);
296
+ if (outputMsgs.length > 0) {
297
+ this.span.setAttribute("gen_ai.output.messages", serializeMessages(outputMsgs));
298
+ }
299
+ }
300
+ if (this.responseId)
301
+ this.span.setAttribute("gen_ai.response.id", this.responseId);
302
+ if (this.responseModel)
303
+ this.span.setAttribute("gen_ai.response.model", this.responseModel);
304
+ if (this.inputTokens)
305
+ this.span.setAttribute("gen_ai.usage.input_tokens", this.inputTokens);
306
+ if (this.outputTokens)
307
+ this.span.setAttribute("gen_ai.usage.output_tokens", this.outputTokens);
308
+ if (this.cacheReadInputTokens)
309
+ this.span.setAttribute("gen_ai.usage.cache_read.input_tokens", this.cacheReadInputTokens);
310
+ if (this.cacheCreationInputTokens)
311
+ this.span.setAttribute("gen_ai.usage.cache_creation.input_tokens", this.cacheCreationInputTokens);
312
+ this.span.setStatus({ code: SpanStatusCode.OK });
313
+ this.span.end();
314
+ }
315
+ }
316
+ // ---------------------------------------------------------------------------
317
+ // Public API
318
+ // ---------------------------------------------------------------------------
319
+ /**
320
+ * Traced wrapper around `client.messages.create(kwargs)`.
321
+ * Creates a gen_ai span with full Anthropic response including thinking blocks.
322
+ */
323
+ export async function tracedMessagesCreate(tracer, client, kwargs, conversationId) {
324
+ const { span } = startSpan(tracer, kwargs.model || "unknown", conversationId);
325
+ try {
326
+ setRequestAttrs(span, kwargs);
327
+ const response = (await client.messages.create(kwargs));
328
+ setResponseAttrs(span, response);
329
+ return response;
330
+ }
331
+ catch (e) {
332
+ span.setStatus({
333
+ code: SpanStatusCode.ERROR,
334
+ message: String(e),
335
+ });
336
+ throw e;
337
+ }
338
+ finally {
339
+ span.end();
340
+ }
341
+ }
342
+ /**
343
+ * Auto-instrumentor that patches `Anthropic.messages.create` to add tracing.
344
+ *
345
+ * Captures all content blocks including thinking (extended thinking) with
346
+ * signatures. Supports both non-streaming and streaming calls.
347
+ */
348
+ /**
349
+ * Auto-instrumentor that wraps an Anthropic client instance to add tracing.
350
+ *
351
+ * Captures all content blocks including thinking (extended thinking) with
352
+ * signatures. Supports both non-streaming and streaming calls.
353
+ */
354
+ export class AnthropicInstrumentor {
355
+ tracer = null;
356
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
357
+ patchedClients = [];
358
+ conversationId;
359
+ instrument(opts) {
360
+ const { client } = opts;
361
+ if (!client?.messages?.create) {
362
+ throw new Error("Invalid client — pass an Anthropic client instance (new Anthropic())");
363
+ }
364
+ this.conversationId = opts.conversationId ?? crypto.randomUUID();
365
+ const provider = opts.tracerProvider ?? trace.getTracerProvider();
366
+ this.tracer = provider.getTracer("introspection-anthropic");
367
+ const origCreate = client.messages.create.bind(client.messages);
368
+ this.patchedClients.push({ client, originalCreate: origCreate });
369
+ const tracer = this.tracer;
370
+ const defaultConversationId = this.conversationId;
371
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
372
+ client.messages.create = function (...args) {
373
+ const kwargs = args[0];
374
+ const isStream = kwargs?.stream === true;
375
+ // Baggage on the active context overrides the conversation ID bound
376
+ // at instrument() time, so callers can wrap a request in
377
+ // IntrospectionClient.withConversation() to scope a single call to a
378
+ // distinct conversation without re-instrumenting the client.
379
+ const baggage = propagation.getBaggage(otelContext.active());
380
+ const baggageConvId = baggage?.getEntry("gen_ai.conversation.id")?.value;
381
+ const baggageAgentName = baggage?.getEntry("gen_ai.agent.name")?.value;
382
+ const baggageAgentId = baggage?.getEntry("gen_ai.agent.id")?.value;
383
+ const { span } = startSpan(tracer, kwargs?.model || "unknown", baggageConvId ?? defaultConversationId);
384
+ if (baggageAgentName) {
385
+ span.setAttribute("gen_ai.agent.name", baggageAgentName);
386
+ }
387
+ if (baggageAgentId) {
388
+ span.setAttribute("gen_ai.agent.id", baggageAgentId);
389
+ }
390
+ setRequestAttrs(span, kwargs || {});
391
+ if (isStream) {
392
+ const streamPromise = origCreate(...args);
393
+ return streamPromise.then((stream) => new TracedStream(stream, span), (err) => {
394
+ span.setStatus({
395
+ code: SpanStatusCode.ERROR,
396
+ message: String(err),
397
+ });
398
+ span.end();
399
+ throw err;
400
+ });
401
+ }
402
+ const resultPromise = origCreate(...args);
403
+ return resultPromise.then((response) => {
404
+ setResponseAttrs(span, response);
405
+ span.end();
406
+ return response;
407
+ }, (err) => {
408
+ span.setStatus({
409
+ code: SpanStatusCode.ERROR,
410
+ message: String(err),
411
+ });
412
+ span.end();
413
+ throw err;
414
+ });
415
+ };
416
+ }
417
+ uninstrument() {
418
+ for (const { client, originalCreate } of this.patchedClients) {
419
+ client.messages.create = originalCreate;
420
+ }
421
+ this.patchedClients = [];
422
+ this.tracer = null;
423
+ }
424
+ }
425
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/otel/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AASH,OAAO,EACL,KAAK,EACL,OAAO,IAAI,WAAW,EACtB,WAAW,EACX,QAAQ,EACR,cAAc,GACf,MAAM,oBAAoB,CAAC;AAI5B,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,6FAA6F;AAC7F,MAAM,CAAC,MAAM,yBAAyB,GAAG,YAAY,CAAC;AAEtD,SAAS,YAAY,CAAC,KAA8B;IAClD,MAAM,EAAE,GAAI,KAAK,CAAC,IAAe,IAAI,EAAE,CAAC;IAExC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAG,KAAK,CAAC,IAAe,IAAI,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;QACtB,MAAM,IAAI,GAAkB;YAC1B,IAAI,EAAE,UAAU;YAChB,OAAO,EAAG,KAAK,CAAC,QAAmB,IAAI,SAAS;YAChD,SAAS,EAAG,KAAK,CAAC,SAAoB,IAAI,SAAS;YACnD,aAAa,EAAE,WAAW;SAC3B,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,IAAI,EAAE,KAAK,mBAAmB,EAAE,CAAC;QAC/B,OAAO;YACL;gBACE,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,yBAAyB;gBAClC,SAAS,EAAG,KAAK,CAAC,IAAe,IAAI,SAAS;gBAC9C,aAAa,EAAE,WAAW;aACV;SACnB,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;QACtB,OAAO;YACL;gBACE,IAAI,EAAE,WAAW;gBACjB,EAAE,EAAG,KAAK,CAAC,EAAa,IAAI,EAAE;gBAC9B,IAAI,EAAG,KAAK,CAAC,IAAe,IAAI,EAAE;gBAClC,SAAS,EAAE,KAAK,CAAC,KAAK;aACvB;SACF,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,KAAK,aAAa,EAAE,CAAC;QACzB,OAAO;YACL;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,EAAE,EAAG,KAAK,CAAC,WAAsB,IAAI,EAAE;gBACvC,QAAQ,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;aAC7D;SACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,qBAAqB,CAC5B,QAAwC;IAExC,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAI,GAAG,CAAC,IAAe,IAAI,MAAM,CAAC;QAC5C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,IAA4B;gBAClC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;aACnC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,KAAK,GAAkB,EAAE,CAAC;YAChC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,GAAG,GACP,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;oBACzC,CAAC,CAAE,KAAiC;oBACpC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5C,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAA4B,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAuC;IAEvC,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;gBAAE,YAAY,GAAG,IAAI,CAAC;QAClD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO;QACL;YACE,IAAI,EAAE,WAAW;YACjB,KAAK;YACL,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM;SACpD;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,SAAS,iBAAiB,CAAC,IAAsC;IAC/D,OAAO,IAAI,CAAC,SAAS,CACnB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACb,MAAM,GAAG,GAA4B,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QACtE,IAAI,eAAe,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;YAC5C,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;QACtC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAChB,MAAc,EACd,KAAa,EACb,cAAuB;IAEvB,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE;QACpC,IAAI,EAAE,QAAQ,CAAC,MAAM;QACrB,UAAU,EAAE;YACV,eAAe,EAAE,WAAW;YAC5B,sBAAsB,EAAE,WAAW;YACnC,uBAAuB,EAAE,MAAM;YAC/B,sBAAsB,EAAE,KAAK;YAC7B,yBAAyB,EAAE,KAAK;YAChC,GAAG,CAAC,cAAc;gBAChB,CAAC,CAAC,EAAE,wBAAwB,EAAE,cAAc,EAAE;gBAC9C,CAAC,CAAC,SAAS,CAAC;SACf;KACF,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,eAAe,CAAC,IAAU,EAAE,MAA+B;IAClE,MAAM,QAAQ,GAAI,MAAM,CAAC,QAA2C,IAAI,EAAE,CAAC;IAC3E,MAAM,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,MAAc,CAAC;QACnB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,2EAA2E;YAC3E,6DAA6D;YAC7D,MAAM,GAAG,IAAI,CAAC,SAAS,CACpB,MAAyC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACzD,IAAI,EAAE,MAAM;gBACZ,OAAO,EACL,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;oBAC5B,CAAC,CAAC,KAAK,CAAC,IAAI;oBACZ,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;wBACjC,CAAC,CAAC,KAAK,CAAC,OAAO;wBACf,CAAC,CAAC,EAAE;aACX,CAAC,CAAC,CACJ,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAmD,CAAC;IACzE,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;YAClB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,UAAU,EAAE,CAAC,CAAC,YAAY;SAC3B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,YAAY,CAAC,yBAAyB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAU,EAAE,QAAiC;IACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAEZ,CAAC;IACd,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,UAAU,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,YAAY,CACf,wBAAwB,EACxB,iBAAiB,CAAC,UAAU,CAAC,CAC9B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,IAAI,QAAQ,CAAC,KAAK;QAChB,IAAI,CAAC,YAAY,CAAC,uBAAuB,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAErE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAA2C,CAAC;IACnE,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,KAAK,CAAC,YAAY,IAAI,IAAI;YAC5B,IAAI,CAAC,YAAY,CAAC,2BAA2B,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QACrE,IAAI,KAAK,CAAC,aAAa,IAAI,IAAI;YAC7B,IAAI,CAAC,YAAY,CAAC,4BAA4B,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QACvE,IAAI,KAAK,CAAC,uBAAuB,IAAI,IAAI;YACvC,IAAI,CAAC,YAAY,CACf,sCAAsC,EACtC,KAAK,CAAC,uBAAuB,CAC9B,CAAC;QACJ,IAAI,KAAK,CAAC,2BAA2B,IAAI,IAAI;YAC3C,IAAI,CAAC,YAAY,CACf,0CAA0C,EAC1C,KAAK,CAAC,2BAA2B,CAClC,CAAC;IACN,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9C,CAAC;AAcD,MAAM,YAAY;IACR,KAAK,CAA6B;IAClC,IAAI,CAAO;IACX,MAAM,GAAmC,EAAE,CAAC;IAC5C,YAAY,GAAmC,IAAI,CAAC;IACpD,UAAU,GAAkB,IAAI,CAAC;IACjC,aAAa,GAAkB,IAAI,CAAC;IACpC,WAAW,GAAG,CAAC,CAAC;IAChB,YAAY,GAAG,CAAC,CAAC;IACjB,oBAAoB,GAAG,CAAC,CAAC;IACzB,wBAAwB,GAAG,CAAC,CAAC;IAC7B,SAAS,GAAG,KAAK,CAAC;IAE1B,YAAY,KAAiC,EAAE,IAAU;QACvD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACrC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,KAAkB;QACrC,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACpD,IAAI,CAAC,UAAU,GAAI,KAAK,CAAC,OAAO,CAAC,EAAa,IAAI,IAAI,CAAC;YACvD,IAAI,CAAC,aAAa,GAAI,KAAK,CAAC,OAAO,CAAC,KAAgB,IAAI,IAAI,CAAC;YAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAA2C,CAAC;YACxE,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;gBAC3C,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,uBAAuB,IAAI,CAAC,CAAC;gBAC/D,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC,2BAA2B,IAAI,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACvE,MAAM,EAAE,GAAI,KAAK,CAAC,aAAa,CAAC,IAAe,IAAI,EAAE,CAAC;YACtD,IAAI,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YACjC,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;gBACtB,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,EAAE,CAAC;gBAChC,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,EAAE,CAAC;YACnC,CAAC;iBAAM,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/D,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,OAAO;YAC/B,MAAM,EAAE,GAAI,KAAK,CAAC,KAAK,CAAC,IAAe,IAAI,EAAE,CAAC;YAC9C,IAAI,EAAE,KAAK,gBAAgB,EAAE,CAAC;gBAC5B,IAAI,CAAC,YAAY,CAAC,QAAQ;oBACxB,CAAE,IAAI,CAAC,YAAY,CAAC,QAAmB,IAAI,EAAE,CAAC;wBAC9C,CAAE,KAAK,CAAC,KAAK,CAAC,QAAmB,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;iBAAM,IAAI,EAAE,KAAK,YAAY,EAAE,CAAC;gBAC/B,IAAI,CAAC,YAAY,CAAC,IAAI;oBACpB,CAAE,IAAI,CAAC,YAAY,CAAC,IAAe,IAAI,EAAE,CAAC;wBAC1C,CAAE,KAAK,CAAC,KAAK,CAAC,IAAe,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;iBAAM,IAAI,EAAE,KAAK,iBAAiB,EAAE,CAAC;gBACpC,IAAI,CAAC,YAAY,CAAC,SAAS;oBACzB,CAAE,IAAI,CAAC,YAAY,CAAC,SAAoB,IAAI,EAAE,CAAC;wBAC/C,CAAE,KAAK,CAAC,KAAK,CAAC,SAAoB,IAAI,EAAE,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YAC/C,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAC3B,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAI,KAA4C,CAAC,KAE/C,CAAC;YACd,IAAI,KAAK;gBAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAEO,QAAQ;QACd,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,YAAY,CACpB,wBAAwB,EACxB,iBAAiB,CAAC,UAAU,CAAC,CAC9B,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,UAAU;YACjB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,aAAa;YACpB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,WAAW;YAClB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,2BAA2B,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC,YAAY;YACnB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,4BAA4B,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,oBAAoB;YAC3B,IAAI,CAAC,IAAI,CAAC,YAAY,CACpB,sCAAsC,EACtC,IAAI,CAAC,oBAAoB,CAC1B,CAAC;QACJ,IAAI,IAAI,CAAC,wBAAwB;YAC/B,IAAI,CAAC,IAAI,CAAC,YAAY,CACpB,0CAA0C,EAC1C,IAAI,CAAC,wBAAwB,CAC9B,CAAC;QACJ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,CAAC;CACF;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAc,EACd,MAA0E,EAC1E,MAA+B,EAC/B,cAAuB;IAEvB,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CACxB,MAAM,EACL,MAAM,CAAC,KAAgB,IAAI,SAAS,EACrC,cAAc,CACf,CAAC;IACF,IAAI,CAAC;QACH,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAGrD,CAAC;QACF,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACjC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE,cAAc,CAAC,KAAK;YAC1B,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;SACnB,CAAC,CAAC;QACH,MAAM,CAAC,CAAC;IACV,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,GAAG,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH;;;;;GAKG;AACH,MAAM,OAAO,qBAAqB;IACxB,MAAM,GAAkB,IAAI,CAAC;IACrC,8DAA8D;IACtD,cAAc,GAAgD,EAAE,CAAC;IACjE,cAAc,CAAqB;IAE3C,UAAU,CAAC,IAYV;QACC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QAEjE,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAClE,IAAI,CAAC,MAAM,GAAI,QAAgC,CAAC,SAAS,CACvD,yBAAyB,CAC1B,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAO,CAAC;QAC5B,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC;QAElD,8DAA8D;QAC9D,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,UAAU,GAAG,IAAW;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAA4B,CAAC;YAClD,MAAM,QAAQ,GAAG,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;YAEzC,oEAAoE;YACpE,yDAAyD;YACzD,qEAAqE;YACrE,6DAA6D;YAC7D,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7D,MAAM,aAAa,GAAG,OAAO,EAAE,QAAQ,CAAC,wBAAwB,CAAC,EAAE,KAAK,CAAC;YACzE,MAAM,gBAAgB,GAAG,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC;YACvE,MAAM,cAAc,GAAG,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC;YAEnE,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CACxB,MAAM,EACL,MAAM,EAAE,KAAgB,IAAI,SAAS,EACtC,aAAa,IAAI,qBAAqB,CACvC,CAAC;YACF,IAAI,gBAAgB,EAAE,CAAC;gBACrB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;YAC3D,CAAC;YACD,IAAI,cAAc,EAAE,CAAC;gBACnB,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;YACvD,CAAC;YACD,eAAe,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;YAEpC,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,IAAI,CAEvC,CAAC;gBACF,OAAO,aAAa,CAAC,IAAI,CACvB,CAAC,MAAkC,EAAE,EAAE,CACrC,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,EAChC,CAAC,GAAU,EAAE,EAAE;oBACb,IAAI,CAAC,SAAS,CAAC;wBACb,IAAI,EAAE,cAAc,CAAC,KAAK;wBAC1B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC;qBACrB,CAAC,CAAC;oBACH,IAAI,CAAC,GAAG,EAAE,CAAC;oBACX,MAAM,GAAG,CAAC;gBACZ,CAAC,CACF,CAAC;YACJ,CAAC;YAED,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,IAAI,CAEvC,CAAC;YACF,OAAO,aAAa,CAAC,IAAI,CACvB,CAAC,QAAiC,EAAE,EAAE;gBACpC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACjC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACX,OAAO,QAAQ,CAAC;YAClB,CAAC,EACD,CAAC,GAAU,EAAE,EAAE;gBACb,IAAI,CAAC,SAAS,CAAC;oBACb,IAAI,EAAE,cAAc,CAAC,KAAK;oBAC1B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC;iBACrB,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,EAAE,CAAC;gBACX,MAAM,GAAG,CAAC;YACZ,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAED,YAAY;QACV,KAAK,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC7D,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;CACF"}