rd-mini 0.1.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.
@@ -0,0 +1,328 @@
1
+ /**
2
+ * OpenAI SDK Wrapper
3
+ * Wraps OpenAI client to auto-capture chat completions AND the new Responses API
4
+ */
5
+ /**
6
+ * Creates a wrapped OpenAI client that auto-traces all calls
7
+ * Supports both chat.completions.create AND responses.create (new API)
8
+ */
9
+ export function wrapOpenAI(client, context) {
10
+ // Create wrapped client, preserving prototype chain
11
+ const wrappedClient = Object.create(Object.getPrototypeOf(client));
12
+ Object.assign(wrappedClient, client);
13
+ // Wrap chat.completions.create if it exists
14
+ if (client.chat?.completions?.create) {
15
+ const originalCreate = client.chat.completions.create.bind(client.chat.completions);
16
+ wrappedClient.chat = Object.create(client.chat);
17
+ wrappedClient.chat.completions = Object.create(client.chat.completions);
18
+ wrappedClient.chat.completions.create = wrapChatCompletions(originalCreate, context);
19
+ }
20
+ // Wrap responses.create if it exists (new API)
21
+ if (client.responses?.create) {
22
+ const originalCreate = client.responses.create.bind(client.responses);
23
+ wrappedClient.responses = Object.create(client.responses);
24
+ wrappedClient.responses.create = wrapResponses(originalCreate, context);
25
+ }
26
+ return wrappedClient;
27
+ }
28
+ /**
29
+ * Wrap chat.completions.create
30
+ */
31
+ function wrapChatCompletions(originalCreate, context) {
32
+ return async (params, options) => {
33
+ const traceId = options?.raindrop?.traceId || context.generateTraceId();
34
+ const startTime = Date.now();
35
+ const userId = options?.raindrop?.userId || context.getUserId();
36
+ if (context.debug) {
37
+ console.log('[raindrop] OpenAI chat.completions started:', traceId);
38
+ }
39
+ // Handle streaming
40
+ if (params.stream) {
41
+ const stream = await originalCreate(params, options);
42
+ return wrapChatStream(stream, {
43
+ traceId,
44
+ startTime,
45
+ userId,
46
+ conversationId: options?.raindrop?.conversationId,
47
+ properties: options?.raindrop?.properties,
48
+ model: params.model,
49
+ input: params.messages,
50
+ context,
51
+ });
52
+ }
53
+ // Handle non-streaming
54
+ try {
55
+ const response = await originalCreate(params, options);
56
+ const endTime = Date.now();
57
+ const output = response.choices[0]?.message?.content || '';
58
+ const toolCalls = response.choices[0]?.message?.tool_calls?.map(tc => ({
59
+ id: tc.id,
60
+ name: tc.function.name,
61
+ arguments: JSON.parse(tc.function.arguments),
62
+ }));
63
+ // Check if we're within an interaction
64
+ const interaction = context.getInteractionContext();
65
+ if (interaction) {
66
+ // Add as span to the interaction
67
+ const span = {
68
+ spanId: traceId,
69
+ parentId: interaction.interactionId,
70
+ name: `openai:${params.model}`,
71
+ type: 'ai',
72
+ startTime,
73
+ endTime,
74
+ latencyMs: endTime - startTime,
75
+ input: params.messages,
76
+ output,
77
+ properties: {
78
+ ...options?.raindrop?.properties,
79
+ input_tokens: response.usage?.prompt_tokens,
80
+ output_tokens: response.usage?.completion_tokens,
81
+ tool_calls: toolCalls,
82
+ },
83
+ };
84
+ interaction.spans.push(span);
85
+ }
86
+ else {
87
+ // Standalone - send as trace
88
+ context.sendTrace({
89
+ traceId,
90
+ provider: 'openai',
91
+ model: params.model,
92
+ input: params.messages,
93
+ output,
94
+ startTime,
95
+ endTime,
96
+ latencyMs: endTime - startTime,
97
+ tokens: response.usage ? {
98
+ input: response.usage.prompt_tokens,
99
+ output: response.usage.completion_tokens,
100
+ total: response.usage.total_tokens,
101
+ } : undefined,
102
+ toolCalls,
103
+ userId,
104
+ conversationId: options?.raindrop?.conversationId,
105
+ properties: options?.raindrop?.properties,
106
+ });
107
+ }
108
+ return Object.assign(response, { _traceId: traceId });
109
+ }
110
+ catch (error) {
111
+ const endTime = Date.now();
112
+ const interaction = context.getInteractionContext();
113
+ if (interaction) {
114
+ const span = {
115
+ spanId: traceId,
116
+ parentId: interaction.interactionId,
117
+ name: `openai:${params.model}`,
118
+ type: 'ai',
119
+ startTime,
120
+ endTime,
121
+ latencyMs: endTime - startTime,
122
+ input: params.messages,
123
+ error: error instanceof Error ? error.message : String(error),
124
+ };
125
+ interaction.spans.push(span);
126
+ }
127
+ else {
128
+ context.sendTrace({
129
+ traceId,
130
+ provider: 'openai',
131
+ model: params.model,
132
+ input: params.messages,
133
+ startTime,
134
+ endTime,
135
+ latencyMs: endTime - startTime,
136
+ userId,
137
+ conversationId: options?.raindrop?.conversationId,
138
+ properties: options?.raindrop?.properties,
139
+ error: error instanceof Error ? error.message : String(error),
140
+ });
141
+ }
142
+ throw error;
143
+ }
144
+ };
145
+ }
146
+ /**
147
+ * Wrap responses.create (new Responses API)
148
+ */
149
+ function wrapResponses(originalCreate, context) {
150
+ return async (params, options) => {
151
+ const traceId = options?.raindrop?.traceId || context.generateTraceId();
152
+ const startTime = Date.now();
153
+ const userId = options?.raindrop?.userId || context.getUserId();
154
+ // Use previous_response_id or conversation as conversationId if not provided
155
+ const conversationId = options?.raindrop?.conversationId
156
+ || params.previous_response_id
157
+ || (typeof params.conversation === 'string' ? params.conversation : params.conversation?.id);
158
+ if (context.debug) {
159
+ console.log('[raindrop] OpenAI responses.create started:', traceId);
160
+ }
161
+ // TODO: Add streaming support for responses API when needed
162
+ // For now, handle non-streaming only
163
+ try {
164
+ const response = await originalCreate(params, options);
165
+ const endTime = Date.now();
166
+ // Extract output text from the new response format
167
+ const outputItems = response.output || [];
168
+ const messageItems = outputItems.filter(item => item.type === 'message');
169
+ const outputText = messageItems
170
+ .flatMap(msg => msg.content || [])
171
+ .filter(c => c.type === 'output_text')
172
+ .map(c => c.text || '')
173
+ .join('');
174
+ context.sendTrace({
175
+ traceId,
176
+ provider: 'openai',
177
+ model: params.model,
178
+ input: params.input,
179
+ output: outputText,
180
+ startTime,
181
+ endTime,
182
+ latencyMs: endTime - startTime,
183
+ tokens: response.usage ? {
184
+ input: response.usage.input_tokens,
185
+ output: response.usage.output_tokens,
186
+ total: response.usage.total_tokens,
187
+ } : undefined,
188
+ userId,
189
+ conversationId,
190
+ properties: {
191
+ ...options?.raindrop?.properties,
192
+ openai_response_id: response.id,
193
+ openai_response_status: response.status,
194
+ },
195
+ });
196
+ return Object.assign(response, { _traceId: traceId });
197
+ }
198
+ catch (error) {
199
+ const endTime = Date.now();
200
+ context.sendTrace({
201
+ traceId,
202
+ provider: 'openai',
203
+ model: params.model,
204
+ input: params.input,
205
+ startTime,
206
+ endTime,
207
+ latencyMs: endTime - startTime,
208
+ userId,
209
+ conversationId,
210
+ properties: options?.raindrop?.properties,
211
+ error: error instanceof Error ? error.message : String(error),
212
+ });
213
+ throw error;
214
+ }
215
+ };
216
+ }
217
+ /**
218
+ * Wrap a chat completions stream
219
+ */
220
+ function wrapChatStream(stream, options) {
221
+ const interaction = options.context.getInteractionContext();
222
+ const collectedContent = [];
223
+ const collectedToolCalls = new Map();
224
+ const wrappedStream = {
225
+ [Symbol.asyncIterator]: async function* () {
226
+ try {
227
+ for await (const chunk of stream) {
228
+ const deltaContent = chunk.choices[0]?.delta?.content;
229
+ if (deltaContent) {
230
+ collectedContent.push(deltaContent);
231
+ }
232
+ const deltaToolCalls = chunk.choices[0]?.delta?.tool_calls;
233
+ if (deltaToolCalls) {
234
+ for (const tc of deltaToolCalls) {
235
+ const existing = collectedToolCalls.get(tc.index) || { name: '', arguments: '' };
236
+ if (tc.id)
237
+ existing.id = tc.id;
238
+ if (tc.function?.name)
239
+ existing.name = tc.function.name;
240
+ if (tc.function?.arguments)
241
+ existing.arguments += tc.function.arguments;
242
+ collectedToolCalls.set(tc.index, existing);
243
+ }
244
+ }
245
+ yield chunk;
246
+ }
247
+ const endTime = Date.now();
248
+ const output = collectedContent.join('');
249
+ const toolCalls = Array.from(collectedToolCalls.values()).map(tc => ({
250
+ id: tc.id || '',
251
+ name: tc.name,
252
+ arguments: tc.arguments ? JSON.parse(tc.arguments) : {},
253
+ }));
254
+ if (interaction) {
255
+ // Add as span to the interaction
256
+ const span = {
257
+ spanId: options.traceId,
258
+ parentId: interaction.interactionId,
259
+ name: `openai:${options.model}`,
260
+ type: 'ai',
261
+ startTime: options.startTime,
262
+ endTime,
263
+ latencyMs: endTime - options.startTime,
264
+ input: options.input,
265
+ output,
266
+ properties: {
267
+ ...options.properties,
268
+ tool_calls: toolCalls.length > 0 ? toolCalls : undefined,
269
+ },
270
+ };
271
+ interaction.spans.push(span);
272
+ }
273
+ else {
274
+ options.context.sendTrace({
275
+ traceId: options.traceId,
276
+ provider: 'openai',
277
+ model: options.model,
278
+ input: options.input,
279
+ output,
280
+ startTime: options.startTime,
281
+ endTime,
282
+ latencyMs: endTime - options.startTime,
283
+ toolCalls,
284
+ userId: options.userId,
285
+ conversationId: options.conversationId,
286
+ properties: options.properties,
287
+ });
288
+ }
289
+ }
290
+ catch (error) {
291
+ const endTime = Date.now();
292
+ if (interaction) {
293
+ const span = {
294
+ spanId: options.traceId,
295
+ parentId: interaction.interactionId,
296
+ name: `openai:${options.model}`,
297
+ type: 'ai',
298
+ startTime: options.startTime,
299
+ endTime,
300
+ latencyMs: endTime - options.startTime,
301
+ input: options.input,
302
+ error: error instanceof Error ? error.message : String(error),
303
+ };
304
+ interaction.spans.push(span);
305
+ }
306
+ else {
307
+ options.context.sendTrace({
308
+ traceId: options.traceId,
309
+ provider: 'openai',
310
+ model: options.model,
311
+ input: options.input,
312
+ startTime: options.startTime,
313
+ endTime,
314
+ latencyMs: endTime - options.startTime,
315
+ userId: options.userId,
316
+ conversationId: options.conversationId,
317
+ properties: options.properties,
318
+ error: error instanceof Error ? error.message : String(error),
319
+ });
320
+ }
321
+ throw error;
322
+ }
323
+ },
324
+ _traceId: options.traceId,
325
+ };
326
+ return wrappedStream;
327
+ }
328
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/wrappers/openai.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "rd-mini",
3
+ "version": "0.1.0",
4
+ "description": "Zero-config AI observability SDK",
5
+ "module": "dist/index.js",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "type": "module",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "scripts": {
16
+ "build": "tsc",
17
+ "dev": "tsc --watch",
18
+ "example": "bun run examples/basic.ts",
19
+ "test:real": "bun run examples/real-test.ts",
20
+ "test:basic": "bun run examples/test-basic.ts",
21
+ "test:context": "bun run examples/test-context.ts",
22
+ "test:interaction": "bun run examples/test-interaction.ts",
23
+ "test:all": "bun run examples/run-all-tests.ts"
24
+ },
25
+ "files": [
26
+ "dist",
27
+ "README.md"
28
+ ],
29
+ "keywords": [
30
+ "ai",
31
+ "observability",
32
+ "tracing",
33
+ "openai",
34
+ "anthropic",
35
+ "llm"
36
+ ],
37
+ "devDependencies": {
38
+ "@anthropic-ai/sdk": "^0.30.0",
39
+ "@types/bun": "latest",
40
+ "@types/node": "^20.0.0",
41
+ "openai": "^4.0.0",
42
+ "typescript": "^5.0.0"
43
+ },
44
+ "peerDependencies": {
45
+ "@anthropic-ai/sdk": "^0.30.0",
46
+ "ai": "^3.0.0 || ^4.0.0",
47
+ "openai": "^4.0.0"
48
+ },
49
+ "peerDependenciesMeta": {
50
+ "@anthropic-ai/sdk": {
51
+ "optional": true
52
+ },
53
+ "ai": {
54
+ "optional": true
55
+ },
56
+ "openai": {
57
+ "optional": true
58
+ }
59
+ }
60
+ }