@introspection-sdk/introspection-node 0.20.0 → 0.21.1

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 +16 -58
  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,211 +0,0 @@
1
- /**
2
- * Claude Agent SDK format conversion functions for OTel Gen AI Semantic Conventions.
3
- *
4
- * These functions convert Claude Agent SDK message formats to the standardized
5
- * OTel Gen AI Semantic Convention format for gen_ai.input.messages and gen_ai.output.messages.
6
- */
7
- import { toAttributes } from "@introspection-sdk/types";
8
- /**
9
- * Convert a user prompt string to OTel Gen AI input message format.
10
- *
11
- * @param prompt - The user's text prompt.
12
- * @returns An array containing a single user-role {@link InputMessage}.
13
- *
14
- * @example
15
- * ```ts
16
- * const msgs = convertClaudePromptToInputMessages("Hello, Claude!");
17
- * // [{ role: "user", parts: [{ type: "text", content: "Hello, Claude!" }] }]
18
- * ```
19
- */
20
- export function convertClaudePromptToInputMessages(prompt) {
21
- return [
22
- {
23
- role: "user",
24
- parts: [{ type: "text", content: prompt }],
25
- },
26
- ];
27
- }
28
- /**
29
- * Convert Claude content blocks to message parts.
30
- */
31
- function convertContentBlocksToParts(content) {
32
- if (typeof content === "string") {
33
- return [{ type: "text", content }];
34
- }
35
- const parts = [];
36
- for (const block of content) {
37
- if (block.type === "text" && "text" in block) {
38
- parts.push({ type: "text", content: block.text });
39
- }
40
- else if (block.type === "tool_use" && "name" in block) {
41
- parts.push({
42
- type: "tool_call",
43
- id: block.id,
44
- name: block.name,
45
- arguments: block.input,
46
- });
47
- }
48
- else if (block.type === "tool_result" && "tool_use_id" in block) {
49
- let response = block.content;
50
- if (typeof response === "string") {
51
- // Keep as string
52
- }
53
- else if (Array.isArray(response)) {
54
- // Extract text from content array
55
- response = response
56
- .filter((item) => typeof item === "object" &&
57
- item !== null &&
58
- item.type === "text")
59
- .map((item) => item.text)
60
- .join("");
61
- }
62
- parts.push({
63
- type: "tool_call_response",
64
- id: block.tool_use_id,
65
- response,
66
- });
67
- }
68
- else if (block.type === "thinking" && "thinking" in block) {
69
- const thinking = block.thinking;
70
- const signature = block.signature;
71
- const thinkingPart = {
72
- type: "reasoning",
73
- content: thinking || "[redacted]",
74
- signature: signature || undefined,
75
- provider_name: "anthropic",
76
- };
77
- parts.push(thinkingPart);
78
- }
79
- }
80
- return parts;
81
- }
82
- /**
83
- * Convert Claude assistant response content to OTel Gen AI output message format.
84
- *
85
- * @param content - A plain string or array of {@link ClaudeContentBlock} objects.
86
- * @param stopReason - Optional stop/finish reason (e.g. `"end_turn"`).
87
- * @returns An array containing a single assistant-role {@link OutputMessage}.
88
- *
89
- * @example
90
- * ```ts
91
- * const msgs = convertClaudeResponseToOutputMessages(response.content, response.stop_reason);
92
- * span.setAttribute("gen_ai.output.messages", JSON.stringify(msgs));
93
- * ```
94
- */
95
- export function convertClaudeResponseToOutputMessages(content, stopReason) {
96
- const parts = convertContentBlocksToParts(content);
97
- const message = {
98
- role: "assistant",
99
- parts,
100
- };
101
- if (stopReason) {
102
- message.finish_reason = stopReason;
103
- }
104
- return [message];
105
- }
106
- /**
107
- * Convert a Claude multi-turn conversation to OTel Gen AI input message format.
108
- *
109
- * @param messages - Array of {@link ClaudeMessage} objects (user + assistant turns).
110
- * @returns An array of {@link InputMessage} objects preserving turn order.
111
- *
112
- * @example
113
- * ```ts
114
- * const msgs = convertClaudeMessagesToInputMessages(conversation);
115
- * span.setAttribute("gen_ai.input.messages", JSON.stringify(msgs));
116
- * ```
117
- */
118
- export function convertClaudeMessagesToInputMessages(messages) {
119
- return messages.map((msg) => ({
120
- role: msg.role,
121
- parts: convertContentBlocksToParts(msg.content),
122
- }));
123
- }
124
- /**
125
- * Convert Claude session data to camelCase {@link GenAiAttributes}.
126
- *
127
- * @param data - Aggregated {@link ClaudeSessionData} for one session.
128
- * @returns A {@link GenAiAttributes} object ready for {@link toAttributes}.
129
- *
130
- * @example
131
- * ```ts
132
- * const genAi = convertClaudeSessionToGenAI({ model: "claude-sonnet-4-20250514", inputTokens: 100 });
133
- * const otel = toAttributes(genAi);
134
- * ```
135
- */
136
- export function convertClaudeSessionToGenAI(data) {
137
- const result = {};
138
- result.providerName = "anthropic";
139
- // Set model
140
- if (data.model) {
141
- result.requestModel = data.model;
142
- }
143
- // Convert input to gen_ai.input.messages format
144
- if (data.inputPrompt) {
145
- result.inputMessages = convertClaudePromptToInputMessages(data.inputPrompt);
146
- }
147
- // Convert output to gen_ai.output.messages format
148
- if (data.responseBlocks) {
149
- result.outputMessages = convertClaudeResponseToOutputMessages(data.responseBlocks, data.stopReason);
150
- }
151
- else if (data.responseContent) {
152
- result.outputMessages = convertClaudeResponseToOutputMessages(data.responseContent, data.stopReason);
153
- }
154
- // Set token counts
155
- if (data.inputTokens !== undefined) {
156
- result.inputTokens = data.inputTokens;
157
- }
158
- if (data.outputTokens !== undefined) {
159
- result.outputTokens = data.outputTokens;
160
- }
161
- if (data.cacheReadInputTokens !== undefined) {
162
- result.cacheReadInputTokens = data.cacheReadInputTokens;
163
- }
164
- if (data.cacheCreationInputTokens !== undefined) {
165
- result.cacheCreationInputTokens = data.cacheCreationInputTokens;
166
- }
167
- // Set response ID
168
- if (data.responseId) {
169
- result.responseId = data.responseId;
170
- }
171
- // Set tool definitions from tool names
172
- if (data.toolNames && data.toolNames.length > 0) {
173
- result.toolDefinitions = data.toolNames.map((name) => ({
174
- type: "function",
175
- name,
176
- }));
177
- }
178
- // Set system instructions
179
- if (data.systemInstructions) {
180
- result.systemInstructions = [
181
- { type: "text", content: data.systemInstructions },
182
- ];
183
- }
184
- return result;
185
- }
186
- /**
187
- * Convert Claude session data directly to OTel span attributes with `gen_ai.*`
188
- * dot-notation keys, plus Claude-specific keys like `claude.session_id`.
189
- *
190
- * @param data - Aggregated {@link ClaudeSessionData} for one session.
191
- * @returns A flat dictionary suitable for `span.setAttributes()`.
192
- *
193
- * @example
194
- * ```ts
195
- * const attrs = convertClaudeSessionToOtelAttributes(sessionData);
196
- * for (const [k, v] of Object.entries(attrs)) span.setAttribute(k, v);
197
- * ```
198
- */
199
- export function convertClaudeSessionToOtelAttributes(data) {
200
- const genaiAttrs = convertClaudeSessionToGenAI(data);
201
- const result = toAttributes(genaiAttrs);
202
- // Add Claude-specific attributes
203
- if (data.sessionId) {
204
- result["claude.session_id"] = data.sessionId;
205
- }
206
- if (data.costUsd !== undefined) {
207
- result["gen_ai.cost.usd"] = data.costUsd;
208
- }
209
- return result;
210
- }
211
- //# sourceMappingURL=claude.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/converters/claude.ts"],"names":[],"mappings":"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"}
@@ -1,90 +0,0 @@
1
- /**
2
- * Google Gemini (`@google/genai`) format conversion functions for OTel Gen AI
3
- * Semantic Conventions.
4
- *
5
- * Gemini 3.x / Gemini 3.5+ models emit per-part `thoughtSignature` payloads
6
- * that carry encrypted reasoning context which MUST be passed back on
7
- * subsequent turns (especially around tool calls) for the model to maintain
8
- * its chain of thought.
9
- *
10
- * @see https://ai.google.dev/gemini-api/docs/thought-signatures
11
- *
12
- * Whenever a Gemini part carries a `thoughtSignature`, this converter emits a
13
- * `reasoning` gen_ai part preceding the visible content. If the part is itself a
14
- * thought summary (`thought: true`), the visible thought text is used as the
15
- * thinking content; otherwise the signed-but-redacted sentinel
16
- * `REDACTED_THINKING_CONTENT` (`"[redacted]"`) is used — mirroring the way the
17
- * Anthropic instrumentor handles `redacted_thinking` blocks.
18
- */
19
- import type { InputMessage, OutputMessage, SystemInstruction, ToolDefinition } from "@introspection-sdk/types";
20
- /** Provider name reported on Gemini-produced thinking parts. */
21
- export declare const GEMINI_PROVIDER_NAME = "gemini";
22
- /** A single content part as returned by the `@google/genai` SDK. */
23
- export interface GeminiPart {
24
- text?: string;
25
- thought?: boolean;
26
- thoughtSignature?: string;
27
- functionCall?: {
28
- id?: string;
29
- name?: string;
30
- args?: unknown;
31
- };
32
- functionResponse?: {
33
- id?: string;
34
- name?: string;
35
- response?: unknown;
36
- };
37
- [key: string]: unknown;
38
- }
39
- /** A Content envelope as used in Gemini `contents` requests and candidate outputs. */
40
- export interface GeminiContent {
41
- role?: string;
42
- parts?: GeminiPart[];
43
- }
44
- /** A single candidate from a `generateContent` response. */
45
- export interface GeminiCandidate {
46
- content?: GeminiContent;
47
- finishReason?: string;
48
- index?: number;
49
- }
50
- /** A Gemini tool function declaration. */
51
- export interface GeminiFunctionDeclaration {
52
- name?: string;
53
- description?: string;
54
- parameters?: unknown;
55
- parametersJsonSchema?: unknown;
56
- }
57
- /** A Gemini tool entry — `{ functionDeclarations: [...] }`. */
58
- export interface GeminiTool {
59
- functionDeclarations?: GeminiFunctionDeclaration[];
60
- }
61
- /**
62
- * Convert a `contents` array from a Gemini request to gen_ai input messages.
63
- *
64
- * Accepts a plain string (the convenience form `generateContent({ contents: "hi" })`)
65
- * or an array of {@link GeminiContent} objects. Roles are normalized: Gemini's
66
- * `model` becomes `assistant`.
67
- *
68
- * @param contents - The Gemini request's `contents` field.
69
- * @returns Array of {@link InputMessage} objects.
70
- */
71
- export declare function convertGeminiContentsToInputMessages(contents: string | GeminiContent[] | GeminiContent | undefined): InputMessage[];
72
- /**
73
- * Convert Gemini response candidates to gen_ai output messages.
74
- *
75
- * @param candidates - The `candidates` array from a `generateContent` response.
76
- * @returns Array of {@link OutputMessage} objects (one per candidate that has content).
77
- */
78
- export declare function convertGeminiCandidatesToOutputMessages(candidates: GeminiCandidate[] | undefined): OutputMessage[];
79
- /**
80
- * Convert a Gemini `systemInstruction` field to gen_ai SystemInstruction[].
81
- *
82
- * Gemini accepts either a plain string or a {@link GeminiContent} object.
83
- */
84
- export declare function convertGeminiSystemInstructionToSemconv(systemInstruction: string | GeminiContent | undefined): SystemInstruction[] | undefined;
85
- /**
86
- * Convert Gemini `tools` (array of `{functionDeclarations}` entries) to gen_ai
87
- * ToolDefinition[].
88
- */
89
- export declare function convertGeminiToolsToToolDefinitions(tools: GeminiTool[] | undefined): ToolDefinition[] | undefined;
90
- //# sourceMappingURL=gemini.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/converters/gemini.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EAGb,iBAAiB,EACjB,cAAc,EACf,MAAM,0BAA0B,CAAC;AAKlC,gEAAgE;AAChE,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAE7C,oEAAoE;AACpE,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE;QACb,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,gBAAgB,CAAC,EAAE;QACjB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,sFAAsF;AACtF,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,4DAA4D;AAC5D,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,0CAA0C;AAC1C,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,+DAA+D;AAC/D,MAAM,WAAW,UAAU;IACzB,oBAAoB,CAAC,EAAE,yBAAyB,EAAE,CAAC;CACpD;AAqED;;;;;;;;;GASG;AACH,wBAAgB,oCAAoC,CAClD,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,aAAa,GAAG,SAAS,GAC7D,YAAY,EAAE,CAgBhB;AAED;;;;;GAKG;AACH,wBAAgB,uCAAuC,CACrD,UAAU,EAAE,eAAe,EAAE,GAAG,SAAS,GACxC,aAAa,EAAE,CAajB;AAED;;;;GAIG;AACH,wBAAgB,uCAAuC,CACrD,iBAAiB,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,GACpD,iBAAiB,EAAE,GAAG,SAAS,CAcjC;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,UAAU,EAAE,GAAG,SAAS,GAC9B,cAAc,EAAE,GAAG,SAAS,CAe9B"}
@@ -1,171 +0,0 @@
1
- /**
2
- * Google Gemini (`@google/genai`) format conversion functions for OTel Gen AI
3
- * Semantic Conventions.
4
- *
5
- * Gemini 3.x / Gemini 3.5+ models emit per-part `thoughtSignature` payloads
6
- * that carry encrypted reasoning context which MUST be passed back on
7
- * subsequent turns (especially around tool calls) for the model to maintain
8
- * its chain of thought.
9
- *
10
- * @see https://ai.google.dev/gemini-api/docs/thought-signatures
11
- *
12
- * Whenever a Gemini part carries a `thoughtSignature`, this converter emits a
13
- * `reasoning` gen_ai part preceding the visible content. If the part is itself a
14
- * thought summary (`thought: true`), the visible thought text is used as the
15
- * thinking content; otherwise the signed-but-redacted sentinel
16
- * `REDACTED_THINKING_CONTENT` (`"[redacted]"`) is used — mirroring the way the
17
- * Anthropic instrumentor handles `redacted_thinking` blocks.
18
- */
19
- /** Sentinel for parts that carry a thought signature but no visible thought content. */
20
- const REDACTED_THINKING_CONTENT = "[redacted]";
21
- /** Provider name reported on Gemini-produced thinking parts. */
22
- export const GEMINI_PROVIDER_NAME = "gemini";
23
- /** Normalize roles from Gemini to gen_ai. Gemini uses `model` for assistant turns. */
24
- function normalizeRole(role) {
25
- if (role === "model")
26
- return "assistant";
27
- if (role === "user" || role === "system" || role === "tool")
28
- return role;
29
- return "user";
30
- }
31
- /**
32
- * Convert a single Gemini part into zero-or-more gen_ai message parts.
33
- *
34
- * A part carrying a `thoughtSignature` always produces a leading `reasoning`
35
- * part so the signed reasoning payload is preserved alongside whatever visible
36
- * content the part contains.
37
- */
38
- function partToGenAiParts(part) {
39
- const out = [];
40
- const signature = part.thoughtSignature || undefined;
41
- const isThought = part.thought === true;
42
- if (isThought) {
43
- // Visible thought summary (Gemini emits these when `includeThoughts: true`).
44
- const reasoning = {
45
- type: "reasoning",
46
- content: part.text || REDACTED_THINKING_CONTENT,
47
- signature,
48
- provider_name: GEMINI_PROVIDER_NAME,
49
- };
50
- out.push(reasoning);
51
- return out;
52
- }
53
- if (signature) {
54
- // Signed but non-thought part — emit a redacted reasoning prefix carrying the signature.
55
- const reasoning = {
56
- type: "reasoning",
57
- content: REDACTED_THINKING_CONTENT,
58
- signature,
59
- provider_name: GEMINI_PROVIDER_NAME,
60
- };
61
- out.push(reasoning);
62
- }
63
- if (typeof part.text === "string" && part.text.length > 0) {
64
- out.push({ type: "text", content: part.text });
65
- }
66
- if (part.functionCall) {
67
- out.push({
68
- type: "tool_call",
69
- id: part.functionCall.id,
70
- name: part.functionCall.name || "",
71
- arguments: part.functionCall.args,
72
- });
73
- }
74
- if (part.functionResponse) {
75
- out.push({
76
- type: "tool_call_response",
77
- id: part.functionResponse.id,
78
- name: part.functionResponse.name,
79
- response: part.functionResponse.response,
80
- });
81
- }
82
- return out;
83
- }
84
- /**
85
- * Convert a `contents` array from a Gemini request to gen_ai input messages.
86
- *
87
- * Accepts a plain string (the convenience form `generateContent({ contents: "hi" })`)
88
- * or an array of {@link GeminiContent} objects. Roles are normalized: Gemini's
89
- * `model` becomes `assistant`.
90
- *
91
- * @param contents - The Gemini request's `contents` field.
92
- * @returns Array of {@link InputMessage} objects.
93
- */
94
- export function convertGeminiContentsToInputMessages(contents) {
95
- if (!contents)
96
- return [];
97
- if (typeof contents === "string") {
98
- return [{ role: "user", parts: [{ type: "text", content: contents }] }];
99
- }
100
- const list = Array.isArray(contents) ? contents : [contents];
101
- const result = [];
102
- for (const c of list) {
103
- const parts = (c.parts || []).flatMap(partToGenAiParts);
104
- if (parts.length === 0)
105
- continue;
106
- result.push({ role: normalizeRole(c.role), parts });
107
- }
108
- return result;
109
- }
110
- /**
111
- * Convert Gemini response candidates to gen_ai output messages.
112
- *
113
- * @param candidates - The `candidates` array from a `generateContent` response.
114
- * @returns Array of {@link OutputMessage} objects (one per candidate that has content).
115
- */
116
- export function convertGeminiCandidatesToOutputMessages(candidates) {
117
- if (!candidates || candidates.length === 0)
118
- return [];
119
- const result = [];
120
- for (const cand of candidates) {
121
- const role = normalizeRole(cand.content?.role || "model");
122
- const parts = (cand.content?.parts || []).flatMap(partToGenAiParts);
123
- if (parts.length === 0 && !cand.finishReason)
124
- continue;
125
- const msg = { role, parts };
126
- if (cand.finishReason)
127
- msg.finish_reason = cand.finishReason;
128
- result.push(msg);
129
- }
130
- return result;
131
- }
132
- /**
133
- * Convert a Gemini `systemInstruction` field to gen_ai SystemInstruction[].
134
- *
135
- * Gemini accepts either a plain string or a {@link GeminiContent} object.
136
- */
137
- export function convertGeminiSystemInstructionToSemconv(systemInstruction) {
138
- if (!systemInstruction)
139
- return undefined;
140
- if (typeof systemInstruction === "string") {
141
- return [{ type: "text", content: systemInstruction }];
142
- }
143
- const result = (systemInstruction.parts || []).flatMap((p) => typeof p.text === "string" && p.text.length > 0
144
- ? [{ type: "text", content: p.text }]
145
- : []);
146
- return result.length > 0 ? result : undefined;
147
- }
148
- /**
149
- * Convert Gemini `tools` (array of `{functionDeclarations}` entries) to gen_ai
150
- * ToolDefinition[].
151
- */
152
- export function convertGeminiToolsToToolDefinitions(tools) {
153
- if (!tools || tools.length === 0)
154
- return undefined;
155
- const defs = [];
156
- for (const tool of tools) {
157
- for (const fn of tool.functionDeclarations || []) {
158
- if (!fn.name)
159
- continue;
160
- const def = { type: "function", name: fn.name };
161
- if (fn.description)
162
- def.description = fn.description;
163
- const params = fn.parametersJsonSchema ?? fn.parameters;
164
- if (params)
165
- def.parameters = params;
166
- defs.push(def);
167
- }
168
- }
169
- return defs.length > 0 ? defs : undefined;
170
- }
171
- //# sourceMappingURL=gemini.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/converters/gemini.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Converters for transforming various API formats to OTel Gen AI Semantic Conventions.
3
- */
4
- export { convertResponsesInputsToSemconv, convertResponsesOutputsToSemconv, convertResponsesToolsToSemconv, convertResponsesInstructionsToSemconv, type ResponseInputItem, type ResponseOutputItem, type ResponseTool, type ResponseUsage, type Response as OpenAIResponse, } from "./openai.js";
5
- export { isOpenInferenceSpan, convertOpenInferenceToGenAI, replaceOpenInferenceWithGenAI, addOpenInferenceAttributes, OpenInferenceSpanExporter, } from "./openinference.js";
6
- export { isVercelAISpan, convertVercelAIToGenAI } from "./vercel.js";
7
- export { convertClaudePromptToInputMessages, convertClaudeResponseToOutputMessages, convertClaudeMessagesToInputMessages, convertClaudeSessionToGenAI, convertClaudeSessionToOtelAttributes, type ClaudeContentBlock, type ClaudeMessage, type ClaudeResponse, type ClaudeSessionData, } from "./claude.js";
8
- export { convertGeminiContentsToInputMessages, convertGeminiCandidatesToOutputMessages, convertGeminiSystemInstructionToSemconv, convertGeminiToolsToToolDefinitions, GEMINI_PROVIDER_NAME, type GeminiCandidate, type GeminiContent, type GeminiFunctionDeclaration, type GeminiPart, type GeminiTool, } from "./gemini.js";
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/converters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,EAChC,8BAA8B,EAC9B,qCAAqC,EACrC,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,QAAQ,IAAI,cAAc,GAChC,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,EACL,kCAAkC,EAClC,qCAAqC,EACrC,oCAAoC,EACpC,2BAA2B,EAC3B,oCAAoC,EACpC,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,oCAAoC,EACpC,uCAAuC,EACvC,uCAAuC,EACvC,mCAAmC,EACnC,oBAAoB,EACpB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC9B,KAAK,UAAU,EACf,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Converters for transforming various API formats to OTel Gen AI Semantic Conventions.
3
- */
4
- export { convertResponsesInputsToSemconv, convertResponsesOutputsToSemconv, convertResponsesToolsToSemconv, convertResponsesInstructionsToSemconv, } from "./openai.js";
5
- export { isOpenInferenceSpan, convertOpenInferenceToGenAI, replaceOpenInferenceWithGenAI, addOpenInferenceAttributes, OpenInferenceSpanExporter, } from "./openinference.js";
6
- export { isVercelAISpan, convertVercelAIToGenAI } from "./vercel.js";
7
- export { convertClaudePromptToInputMessages, convertClaudeResponseToOutputMessages, convertClaudeMessagesToInputMessages, convertClaudeSessionToGenAI, convertClaudeSessionToOtelAttributes, } from "./claude.js";
8
- export { convertGeminiContentsToInputMessages, convertGeminiCandidatesToOutputMessages, convertGeminiSystemInstructionToSemconv, convertGeminiToolsToToolDefinitions, GEMINI_PROVIDER_NAME, } from "./gemini.js";
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/converters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,EAChC,8BAA8B,EAC9B,qCAAqC,GAMtC,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,EACL,kCAAkC,EAClC,qCAAqC,EACrC,oCAAoC,EACpC,2BAA2B,EAC3B,oCAAoC,GAKrC,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,oCAAoC,EACpC,uCAAuC,EACvC,uCAAuC,EACvC,mCAAmC,EACnC,oBAAoB,GAMrB,MAAM,aAAa,CAAC"}
@@ -1,51 +0,0 @@
1
- /**
2
- * OpenAI format conversion functions for OTel Gen AI Semantic Conventions.
3
- *
4
- * These functions convert OpenAI API formats (Responses API, Agents SDK) to the
5
- * standardized OTel Gen AI Semantic Convention format for gen_ai.input.messages
6
- * and gen_ai.output.messages attributes.
7
- */
8
- import type { Responses } from "openai/resources/responses/responses";
9
- import type { InputMessage, OutputMessage, ToolDefinition, SystemInstruction } from "@introspection-sdk/types";
10
- /** Re-export OpenAI types used by callers (e.g. tracing-processor). */
11
- export type ResponseInputItem = Responses.ResponseInputItem;
12
- export type ResponseOutputItem = Responses.ResponseOutputItem;
13
- export type ResponseTool = Responses.Tool;
14
- export type ResponseUsage = Responses.ResponseUsage;
15
- export type Response = Responses.Response;
16
- /**
17
- * Convert OpenAI Responses API inputs to OTel Gen AI Semantic Convention format.
18
- *
19
- * Handles `message`, `function_call`, and `function_call_output` input types.
20
- * System instructions are returned separately so callers can set
21
- * `gen_ai.system_instructions` independently from `gen_ai.input.messages`.
22
- *
23
- * @param inputs - Input items array from the Responses API request body.
24
- * @param instructions - Optional system instructions / system prompt string.
25
- * @returns A `[inputMessages, systemInstructions]` tuple of {@link InputMessage} arrays.
26
- */
27
- export declare function convertResponsesInputsToSemconv(inputs: ResponseInputItem[] | undefined, instructions: string | undefined): [InputMessage[], InputMessage[]];
28
- /**
29
- * Convert OpenAI Responses API outputs to OTel Gen AI Semantic Convention format.
30
- *
31
- * Maps `message` and `function_call` output types to {@link OutputMessage} objects.
32
- *
33
- * @param outputs - Output items array from the Responses API response body.
34
- * @returns An array of {@link OutputMessage} objects in semconv format.
35
- */
36
- export declare function convertResponsesOutputsToSemconv(outputs: ResponseOutputItem[]): OutputMessage[];
37
- /**
38
- * Convert OpenAI Responses API tool definitions to GenAI ToolDefinition format.
39
- *
40
- * @param tools - The tools array from the Response object.
41
- * @returns An array of {@link ToolDefinition} objects.
42
- */
43
- export declare function convertResponsesToolsToSemconv(tools: ResponseTool[]): ToolDefinition[];
44
- /**
45
- * Convert OpenAI Response instructions to GenAI SystemInstruction format.
46
- *
47
- * @param instructions - The instructions field from the Response object.
48
- * @returns An array of {@link SystemInstruction} objects, or undefined if no instructions.
49
- */
50
- export declare function convertResponsesInstructionsToSemconv(instructions: string | ResponseInputItem[] | null | undefined): SystemInstruction[] | undefined;
51
- //# sourceMappingURL=openai.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/converters/openai.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EAGb,cAAc,EACd,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAElC,uEAAuE;AACvE,MAAM,MAAM,iBAAiB,GAAG,SAAS,CAAC,iBAAiB,CAAC;AAC5D,MAAM,MAAM,kBAAkB,GAAG,SAAS,CAAC,kBAAkB,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC;AAC1C,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;AACpD,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;AAgC1C;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,iBAAiB,EAAE,GAAG,SAAS,EACvC,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,CAAC,CAqDlC;AAED;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,kBAAkB,EAAE,GAC5B,aAAa,EAAE,CAoHjB;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,YAAY,EAAE,GACpB,cAAc,EAAE,CAelB;AAED;;;;;GAKG;AACH,wBAAgB,qCAAqC,CACnD,YAAY,EAAE,MAAM,GAAG,iBAAiB,EAAE,GAAG,IAAI,GAAG,SAAS,GAC5D,iBAAiB,EAAE,GAAG,SAAS,CAcjC"}