@countly/ai-sdk-openai 0.0.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.
package/README.md ADDED
@@ -0,0 +1,94 @@
1
+ # @countly/ai-sdk-openai
2
+
3
+ > Countly AI observability adapter for the [OpenAI Node.js SDK](https://github.com/openai/openai-node).
4
+
5
+ Part of the [Countly AI SDK](https://github.com/Countly/countly-ai-sdk) — provider-agnostic LLM observability for every AI stack.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install @countly/ai-sdk-openai
11
+ ```
12
+
13
+ `@countly/ai-sdk-core` is pulled in automatically.
14
+
15
+ ## Peer dependency
16
+
17
+ ```
18
+ openai >= 4.68.0
19
+ ```
20
+
21
+ ## Quick Start
22
+
23
+ ```typescript
24
+ import OpenAI from "openai";
25
+ import { observeOpenAI } from "@countly/ai-sdk-openai";
26
+
27
+ // Per-user attribution via AsyncLocalStorage (Node.js)
28
+ import { AsyncLocalStorage } from "node:async_hooks";
29
+ const userStore = new AsyncLocalStorage<{ userId: string }>();
30
+
31
+ // In your middleware — run once per request
32
+ app.use((req, res, next) => {
33
+ userStore.run({ userId: req.user.id }, next);
34
+ });
35
+
36
+ // Wrap your client — getDeviceId is called per event at enqueue time
37
+ const openai = observeOpenAI(new OpenAI(), {
38
+ appKey: "YOUR_APP_KEY",
39
+ url: "https://your-countly-server.com",
40
+ getDeviceId: () => userStore.getStore()?.userId,
41
+ });
42
+
43
+ // Use exactly as before — observability is automatic
44
+ const response = await openai.chat.completions.create({
45
+ model: "gpt-4o",
46
+ messages: [{ role: "user", content: "Explain quantum computing" }],
47
+ });
48
+ ```
49
+
50
+ ## Streaming
51
+
52
+ ```typescript
53
+ const stream = await openai.chat.completions.create({
54
+ model: "gpt-4o",
55
+ messages: [{ role: "user", content: "Hello" }],
56
+ stream: true,
57
+ });
58
+
59
+ for await (const chunk of stream) {
60
+ process.stdout.write(chunk.choices[0]?.delta?.content || "");
61
+ }
62
+ // Events reported automatically after stream completes
63
+ ```
64
+
65
+ ## What's captured
66
+
67
+ - Token usage (input, output, reasoning, cached)
68
+ - Cost (computed from model pricing)
69
+ - Latency (total + time to first token for streaming)
70
+ - Model config (temperature, top_p, max_tokens, frequency/presence penalties)
71
+ - Tool calls and their parameters
72
+ - Error tracking with categorization (rate_limit, context_length, content_filter, timeout, auth_error)
73
+ - APM traces for performance monitoring
74
+ - Per-user usage aggregation
75
+
76
+ ## Browser
77
+
78
+ In the browser there is no multi-user request mixing — each user runs in their own tab. Use a static device ID:
79
+
80
+ ```typescript
81
+ const openai = observeOpenAI(new OpenAI(), {
82
+ appKey: "YOUR_APP_KEY",
83
+ url: "https://your-countly-server.com",
84
+ deviceId: loggedInUser.id,
85
+ });
86
+ ```
87
+
88
+ ## Full documentation
89
+
90
+ See the [Countly AI SDK repository](https://github.com/Countly/countly-ai-sdk) for the unified data model, observability levels (0/1/2), cost calculation, privacy controls, and Countly plugin integration (Drill, Funnels, Cohorts, APM, Crash Analytics).
91
+
92
+ ## License
93
+
94
+ MIT
@@ -0,0 +1,25 @@
1
+ import { type CountlyAIConfig } from "@countly/ai-sdk-core";
2
+ export interface CountlyOpenAIOptions extends CountlyAIConfig {
3
+ }
4
+ /**
5
+ * Wraps an OpenAI client with Countly AI observability.
6
+ *
7
+ * Uses JS Proxy to intercept `client.chat.completions.create()` calls
8
+ * and automatically track LLM interactions, token usage, costs, and latency.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import OpenAI from "openai";
13
+ * import { observeOpenAI } from "@countly/ai-sdk-openai";
14
+ *
15
+ * const client = observeOpenAI(new OpenAI(), {
16
+ * appKey: "YOUR_APP_KEY",
17
+ * url: "https://your-countly-server.com",
18
+ * });
19
+ *
20
+ * // Use client as normal — all calls are automatically tracked
21
+ * const response = await client.chat.completions.create({ ... });
22
+ * ```
23
+ */
24
+ export declare function observeOpenAI<T>(client: T, options: CountlyAIConfig): T;
25
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,eAAe,EAKrB,MAAM,sBAAsB,CAAC;AAM9B,MAAM,WAAW,oBAAqB,SAAQ,eAAe;CAAG;AA6WhE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,GAAG,CAAC,CAyBvE"}
@@ -0,0 +1,356 @@
1
+ import { resolveConfig, createTransport, buildAllEvents, generatePromptId, } from "@countly/ai-sdk-core";
2
+ function extractTextInput(args) {
3
+ const params = args[0];
4
+ if (!params?.messages)
5
+ return undefined;
6
+ const messages = params.messages;
7
+ const last = messages[messages.length - 1];
8
+ if (!last)
9
+ return undefined;
10
+ if (typeof last.content === "string")
11
+ return last.content;
12
+ if (Array.isArray(last.content)) {
13
+ return last.content
14
+ .filter((p) => p.type === "text")
15
+ .map((p) => p.text)
16
+ .join("");
17
+ }
18
+ return undefined;
19
+ }
20
+ function extractFromResponse(response) {
21
+ const choice = response.choices?.[0];
22
+ const tools = (choice?.message?.tool_calls ?? []).map((tc) => ({
23
+ name: tc.function?.name ?? "unknown",
24
+ type: "function_call",
25
+ arguments: tc.function?.arguments
26
+ ? safeParseJSON(tc.function.arguments)
27
+ : undefined,
28
+ }));
29
+ // Collect provider-specific orphan fields into the open metadata bag.
30
+ const meta = {};
31
+ const r = response;
32
+ if (r.system_fingerprint)
33
+ meta.system_fingerprint = r.system_fingerprint;
34
+ if (r.service_tier)
35
+ meta.service_tier = r.service_tier;
36
+ const ctd = response.usage?.completion_tokens_details;
37
+ if (ctd?.accepted_prediction_tokens != null)
38
+ meta.accepted_prediction_tokens = ctd.accepted_prediction_tokens;
39
+ if (ctd?.rejected_prediction_tokens != null)
40
+ meta.rejected_prediction_tokens = ctd.rejected_prediction_tokens;
41
+ if (ctd?.audio_tokens != null)
42
+ meta.audio_tokens_completion = ctd.audio_tokens;
43
+ const ptd = response.usage?.prompt_tokens_details;
44
+ if (ptd?.audio_tokens != null)
45
+ meta.audio_tokens_prompt = ptd.audio_tokens;
46
+ if (choice && choice.logprobs)
47
+ meta.logprobs = choice.logprobs;
48
+ return {
49
+ model: response.model ?? "unknown",
50
+ provider: "openai",
51
+ usage_input: response.usage?.prompt_tokens ?? 0,
52
+ usage_output: response.usage?.completion_tokens ?? 0,
53
+ usage_total: response.usage?.total_tokens ?? 0,
54
+ usage_reasoning: response.usage?.completion_tokens_details?.reasoning_tokens,
55
+ usage_cache_read: response.usage?.prompt_tokens_details?.cached_tokens,
56
+ finish_reason: choice?.finish_reason ?? undefined,
57
+ tools: tools.length > 0 ? tools : undefined,
58
+ text_output: choice?.message?.content ?? undefined,
59
+ latency_total: 0, // filled by caller
60
+ status: "success",
61
+ ...(r.id && { response_id: String(r.id) }),
62
+ ...(response.model && { response_model: String(response.model) }),
63
+ ...(Object.keys(meta).length > 0 && { provider_metadata: meta }),
64
+ };
65
+ }
66
+ function extractFromChunks(chunks) {
67
+ if (chunks.length === 0) {
68
+ return {
69
+ model: "unknown",
70
+ provider: "openai",
71
+ usage_input: 0,
72
+ usage_output: 0,
73
+ usage_total: 0,
74
+ latency_total: 0,
75
+ status: "error",
76
+ error: "No chunks received",
77
+ };
78
+ }
79
+ // Collect text content from all chunks
80
+ const textParts = [];
81
+ const toolCallMap = new Map();
82
+ let model = "unknown";
83
+ let finishReason;
84
+ for (const chunk of chunks) {
85
+ if (chunk.model)
86
+ model = chunk.model;
87
+ const delta = chunk.choices?.[0]?.delta;
88
+ if (!delta)
89
+ continue;
90
+ if (chunk.choices?.[0]?.finish_reason) {
91
+ finishReason = chunk.choices[0].finish_reason;
92
+ }
93
+ if (delta.content) {
94
+ textParts.push(delta.content);
95
+ }
96
+ if (delta.tool_calls) {
97
+ for (const tc of delta.tool_calls) {
98
+ const idx = tc.index ?? 0;
99
+ const existing = toolCallMap.get(idx);
100
+ if (!existing) {
101
+ toolCallMap.set(idx, {
102
+ name: tc.function?.name ?? "",
103
+ arguments: tc.function?.arguments ?? "",
104
+ });
105
+ }
106
+ else {
107
+ if (tc.function?.name)
108
+ existing.name = tc.function.name;
109
+ if (tc.function?.arguments)
110
+ existing.arguments += tc.function.arguments;
111
+ }
112
+ }
113
+ }
114
+ }
115
+ // Extract usage from the final chunk (OpenAI includes usage in last chunk when stream_options.include_usage is true)
116
+ const lastChunk = chunks[chunks.length - 1];
117
+ const usage = lastChunk?.usage;
118
+ const tools = Array.from(toolCallMap.values()).map((tc) => ({
119
+ name: tc.name || "unknown",
120
+ type: "function_call",
121
+ arguments: tc.arguments ? safeParseJSON(tc.arguments) : undefined,
122
+ }));
123
+ return {
124
+ model: model,
125
+ provider: "openai",
126
+ usage_input: usage?.prompt_tokens ?? 0,
127
+ usage_output: usage?.completion_tokens ?? 0,
128
+ usage_total: usage?.total_tokens ?? 0,
129
+ usage_reasoning: usage?.completion_tokens_details?.reasoning_tokens,
130
+ usage_cache_read: usage?.prompt_tokens_details?.cached_tokens,
131
+ finish_reason: finishReason,
132
+ tools: tools.length > 0 ? tools : undefined,
133
+ text_output: textParts.join("") || undefined,
134
+ latency_total: 0, // filled by caller
135
+ status: "success",
136
+ };
137
+ }
138
+ function safeParseJSON(value) {
139
+ try {
140
+ return JSON.parse(value);
141
+ }
142
+ catch {
143
+ return undefined;
144
+ }
145
+ }
146
+ function isAsyncIterable(value) {
147
+ return value != null && typeof value[Symbol.asyncIterator] === "function";
148
+ }
149
+ function createCompletionsProxy(completions, config, transport) {
150
+ return new Proxy(completions, {
151
+ get(target, prop, receiver) {
152
+ if (prop === "create") {
153
+ return createInterceptedCreate(target, config, transport);
154
+ }
155
+ return Reflect.get(target, prop, receiver);
156
+ },
157
+ });
158
+ }
159
+ function createInterceptedCreate(completions, config, transport) {
160
+ const originalCreate = completions.create.bind(completions);
161
+ return async function interceptedCreate(...args) {
162
+ if (config.disabled) {
163
+ return originalCreate(...args);
164
+ }
165
+ const promptId = generatePromptId();
166
+ const textInput = extractTextInput(args);
167
+ const params = args[0] ?? {};
168
+ const isStream = params.stream === true;
169
+ const startTime = performance.now();
170
+ try {
171
+ const result = await originalCreate(...args);
172
+ if (isStream && isAsyncIterable(result)) {
173
+ return wrapStreamResponse(result, config, transport, promptId, textInput, startTime);
174
+ }
175
+ // Non-streaming response
176
+ const endTime = performance.now();
177
+ const raw = extractFromResponse(result);
178
+ raw.latency_total = Math.round(endTime - startTime);
179
+ raw.model_requested = params.model;
180
+ raw.config_temperature = params.temperature;
181
+ raw.config_top_p = params.top_p;
182
+ raw.config_max_tokens = params.max_tokens ?? params.max_completion_tokens;
183
+ raw.config_frequency_penalty = params.frequency_penalty;
184
+ raw.config_presence_penalty = params.presence_penalty;
185
+ raw.config_stream = isStream;
186
+ if (config.observabilityLevel === 2 && textInput) {
187
+ raw.text_input = textInput;
188
+ }
189
+ const eventContext = { prompt_id: promptId, sdk_adapter: "openai" };
190
+ const events = buildAllEvents(raw, config, eventContext);
191
+ transport.enqueue(events);
192
+ transport.reportTrace(raw, eventContext);
193
+ transport.reportUserData(raw);
194
+ return result;
195
+ }
196
+ catch (error) {
197
+ const endTime = performance.now();
198
+ const raw = {
199
+ model: params.model ?? "unknown",
200
+ model_requested: params.model,
201
+ provider: "openai",
202
+ usage_input: 0,
203
+ usage_output: 0,
204
+ usage_total: 0,
205
+ latency_total: Math.round(endTime - startTime),
206
+ config_temperature: params.temperature,
207
+ config_top_p: params.top_p,
208
+ config_max_tokens: params.max_tokens ?? params.max_completion_tokens,
209
+ config_frequency_penalty: params.frequency_penalty,
210
+ config_presence_penalty: params.presence_penalty,
211
+ config_stream: isStream,
212
+ status: "error",
213
+ error: error?.message ?? String(error),
214
+ };
215
+ if (config.observabilityLevel === 2 && textInput) {
216
+ raw.text_input = textInput;
217
+ }
218
+ const eventContext = { prompt_id: promptId, sdk_adapter: "openai" };
219
+ const events = buildAllEvents(raw, config, eventContext);
220
+ transport.enqueue(events);
221
+ transport.reportError(error, raw);
222
+ throw error;
223
+ }
224
+ };
225
+ }
226
+ function wrapStreamResponse(stream, config, transport, promptId, textInput, startTime) {
227
+ const chunks = [];
228
+ let firstChunkTime;
229
+ function reportSuccess() {
230
+ const endTime = performance.now();
231
+ const raw = extractFromChunks(chunks);
232
+ raw.latency_total = Math.round(endTime - startTime);
233
+ if (firstChunkTime !== undefined) {
234
+ raw.latency_ttft = Math.round(firstChunkTime - startTime);
235
+ }
236
+ raw.config_stream = true;
237
+ if (config.observabilityLevel === 2 && textInput) {
238
+ raw.text_input = textInput;
239
+ }
240
+ const eventContext = { prompt_id: promptId, sdk_adapter: "openai" };
241
+ const events = buildAllEvents(raw, config, eventContext);
242
+ transport.enqueue(events);
243
+ transport.reportTrace(raw, eventContext);
244
+ transport.reportUserData(raw);
245
+ }
246
+ function reportError(error) {
247
+ const endTime = performance.now();
248
+ const raw = {
249
+ model: chunks[0]?.model ?? "unknown",
250
+ provider: "openai",
251
+ usage_input: 0,
252
+ usage_output: 0,
253
+ usage_total: 0,
254
+ latency_total: Math.round(endTime - startTime),
255
+ config_stream: true,
256
+ status: "error",
257
+ error: error?.message ?? String(error),
258
+ };
259
+ if (firstChunkTime !== undefined) {
260
+ raw.latency_ttft = Math.round(firstChunkTime - startTime);
261
+ }
262
+ if (config.observabilityLevel === 2 && textInput) {
263
+ raw.text_input = textInput;
264
+ }
265
+ const eventContext = { prompt_id: promptId, sdk_adapter: "openai" };
266
+ const events = buildAllEvents(raw, config, eventContext);
267
+ transport.enqueue(events);
268
+ transport.reportError(error, raw);
269
+ }
270
+ // Use a Proxy to preserve the original Stream class interface (controller, tee,
271
+ // toReadableStream) while intercepting only async iteration to collect metrics.
272
+ return new Proxy(stream, {
273
+ get(target, prop, receiver) {
274
+ if (prop === Symbol.asyncIterator) {
275
+ return function () {
276
+ const originalIterator = target[Symbol.asyncIterator]();
277
+ return {
278
+ async next() {
279
+ try {
280
+ const result = await originalIterator.next();
281
+ if (result.done) {
282
+ reportSuccess();
283
+ return result;
284
+ }
285
+ if (firstChunkTime === undefined) {
286
+ firstChunkTime = performance.now();
287
+ }
288
+ chunks.push(result.value);
289
+ return result;
290
+ }
291
+ catch (error) {
292
+ reportError(error);
293
+ throw error;
294
+ }
295
+ },
296
+ async return(value) {
297
+ if (originalIterator.return) {
298
+ return originalIterator.return(value);
299
+ }
300
+ return { done: true, value: undefined };
301
+ },
302
+ async throw(error) {
303
+ if (originalIterator.throw) {
304
+ return originalIterator.throw(error);
305
+ }
306
+ throw error;
307
+ },
308
+ };
309
+ };
310
+ }
311
+ return Reflect.get(target, prop, receiver);
312
+ },
313
+ });
314
+ }
315
+ /**
316
+ * Wraps an OpenAI client with Countly AI observability.
317
+ *
318
+ * Uses JS Proxy to intercept `client.chat.completions.create()` calls
319
+ * and automatically track LLM interactions, token usage, costs, and latency.
320
+ *
321
+ * @example
322
+ * ```ts
323
+ * import OpenAI from "openai";
324
+ * import { observeOpenAI } from "@countly/ai-sdk-openai";
325
+ *
326
+ * const client = observeOpenAI(new OpenAI(), {
327
+ * appKey: "YOUR_APP_KEY",
328
+ * url: "https://your-countly-server.com",
329
+ * });
330
+ *
331
+ * // Use client as normal — all calls are automatically tracked
332
+ * const response = await client.chat.completions.create({ ... });
333
+ * ```
334
+ */
335
+ export function observeOpenAI(client, options) {
336
+ const config = resolveConfig(options);
337
+ const transport = createTransport(config);
338
+ return new Proxy(client, {
339
+ get(target, prop, receiver) {
340
+ if (prop === "chat") {
341
+ const chat = Reflect.get(target, prop, receiver);
342
+ return new Proxy(chat, {
343
+ get(chatTarget, chatProp, chatReceiver) {
344
+ if (chatProp === "completions") {
345
+ const completions = Reflect.get(chatTarget, chatProp, chatReceiver);
346
+ return createCompletionsProxy(completions, config, transport);
347
+ }
348
+ return Reflect.get(chatTarget, chatProp, chatReceiver);
349
+ },
350
+ });
351
+ }
352
+ return Reflect.get(target, prop, receiver);
353
+ },
354
+ });
355
+ }
356
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,EACf,cAAc,EACd,gBAAgB,GAOjB,MAAM,sBAAsB,CAAC;AAQ9B,SAAS,gBAAgB,CAAC,IAAW;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,CAAC,MAAM,EAAE,QAAQ;QAAE,OAAO,SAAS,CAAC;IACxC,MAAM,QAAQ,GAAU,MAAM,CAAC,QAAQ,CAAC;IACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC;IAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,OAAO;aAChB,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;aACrC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aACvB,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAwB;IACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAErC,MAAM,KAAK,GAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAClE,CAAC,EAAO,EAAE,EAAE,CAAC,CAAC;QACZ,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,IAAI,SAAS;QACpC,IAAI,EAAE,eAAwB;QAC9B,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS;YAC/B,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;YACtC,CAAC,CAAC,SAAS;KACd,CAAC,CACH,CAAC;IAEF,sEAAsE;IACtE,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,MAAM,CAAC,GAAG,QAAe,CAAC;IAC1B,IAAI,CAAC,CAAC,kBAAkB;QAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC;IACzE,IAAI,CAAC,CAAC,YAAY;QAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;IACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,yBAAgC,CAAC;IAC7D,IAAI,GAAG,EAAE,0BAA0B,IAAI,IAAI;QAAE,IAAI,CAAC,0BAA0B,GAAG,GAAG,CAAC,0BAA0B,CAAC;IAC9G,IAAI,GAAG,EAAE,0BAA0B,IAAI,IAAI;QAAE,IAAI,CAAC,0BAA0B,GAAG,GAAG,CAAC,0BAA0B,CAAC;IAC9G,IAAI,GAAG,EAAE,YAAY,IAAI,IAAI;QAAE,IAAI,CAAC,uBAAuB,GAAG,GAAG,CAAC,YAAY,CAAC;IAC/E,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,qBAA4B,CAAC;IACzD,IAAI,GAAG,EAAE,YAAY,IAAI,IAAI;QAAE,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC,YAAY,CAAC;IAC3E,IAAI,MAAM,IAAK,MAAc,CAAC,QAAQ;QAAE,IAAI,CAAC,QAAQ,GAAI,MAAc,CAAC,QAAQ,CAAC;IAEjF,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,SAAS;QAClC,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC;QAC/C,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC;QACpD,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC;QAC9C,eAAe,EAAE,QAAQ,CAAC,KAAK,EAAE,yBAAyB,EAAE,gBAAgB;QAC5E,gBAAgB,EAAE,QAAQ,CAAC,KAAK,EAAE,qBAAqB,EAAE,aAAa;QACtE,aAAa,EAAE,MAAM,EAAE,aAAa,IAAI,SAAS;QACjD,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QAC3C,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,IAAI,SAAS;QAClD,aAAa,EAAE,CAAC,EAAE,mBAAmB;QACrC,MAAM,EAAE,SAAS;QACjB,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1C,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,MAA6B;IACtD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,CAAC;YACd,aAAa,EAAE,CAAC;YAChB,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,oBAAoB;SAC5B,CAAC;IACJ,CAAC;IAED,uCAAuC;IACvC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,IAAI,GAAG,EAGxB,CAAC;IAEJ,IAAI,KAAK,GAAG,SAAS,CAAC;IACtB,IAAI,YAAgC,CAAC;IAErC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,KAAK;YAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAErC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;QACxC,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC;YACtC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;QAChD,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBAClC,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;gBAC1B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE;wBACnB,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE;wBAC7B,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE;qBACxC,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI;wBAAE,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACxD,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS;wBACxB,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,qHAAqH;IACrH,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,SAAS,EAAE,KAAK,CAAC;IAE/B,MAAM,KAAK,GAAkB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACzE,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,SAAS;QAC1B,IAAI,EAAE,eAAwB;QAC9B,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;KAClE,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,KAAK,EAAE,aAAa,IAAI,CAAC;QACtC,YAAY,EAAE,KAAK,EAAE,iBAAiB,IAAI,CAAC;QAC3C,WAAW,EAAE,KAAK,EAAE,YAAY,IAAI,CAAC;QACrC,eAAe,EAAE,KAAK,EAAE,yBAAyB,EAAE,gBAAgB;QACnE,gBAAgB,EAAE,KAAK,EAAE,qBAAqB,EAAE,aAAa;QAC7D,aAAa,EAAE,YAAY;QAC3B,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QAC3C,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,SAAS;QAC5C,aAAa,EAAE,CAAC,EAAE,mBAAmB;QACrC,MAAM,EAAE,SAAS;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAU;IACjC,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,UAAU,CAAC;AAC5E,CAAC;AAED,SAAS,sBAAsB,CAC7B,WAAgB,EAChB,MAAsB,EACtB,SAAoB;IAEpB,OAAO,IAAI,KAAK,CAAC,WAAW,EAAE;QAC5B,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,OAAO,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAC9B,WAAgB,EAChB,MAAsB,EACtB,SAAoB;IAEpB,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE5D,OAAO,KAAK,UAAU,iBAAiB,CAAC,GAAG,IAAW;QACpD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC;QACxC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEpC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC;YAE7C,IAAI,QAAQ,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxC,OAAO,kBAAkB,CACvB,MAAM,EACN,MAAM,EACN,SAAS,EACT,QAAQ,EACR,SAAS,EACT,SAAS,CACV,CAAC;YACJ,CAAC;YAED,yBAAyB;YACzB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACxC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;YACpD,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC;YACnC,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC,WAAW,CAAC;YAC5C,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;YAChC,GAAG,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,qBAAqB,CAAC;YAC1E,GAAG,CAAC,wBAAwB,GAAG,MAAM,CAAC,iBAAiB,CAAC;YACxD,GAAG,CAAC,uBAAuB,GAAG,MAAM,CAAC,gBAAgB,CAAC;YACtD,GAAG,CAAC,aAAa,GAAG,QAAQ,CAAC;YAE7B,IAAI,MAAM,CAAC,kBAAkB,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;gBACjD,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC;YAC7B,CAAC;YAED,MAAM,YAAY,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;YACpE,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;YACzD,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC1B,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YACzC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAE9B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAClC,MAAM,GAAG,GAAwB;gBAC/B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;gBAChC,eAAe,EAAE,MAAM,CAAC,KAAK;gBAC7B,QAAQ,EAAE,QAAQ;gBAClB,WAAW,EAAE,CAAC;gBACd,YAAY,EAAE,CAAC;gBACf,WAAW,EAAE,CAAC;gBACd,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;gBAC9C,kBAAkB,EAAE,MAAM,CAAC,WAAW;gBACtC,YAAY,EAAE,MAAM,CAAC,KAAK;gBAC1B,iBAAiB,EAAE,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,qBAAqB;gBACpE,wBAAwB,EAAE,MAAM,CAAC,iBAAiB;gBAClD,uBAAuB,EAAE,MAAM,CAAC,gBAAgB;gBAChD,aAAa,EAAE,QAAQ;gBACvB,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC;aACvC,CAAC;YAEF,IAAI,MAAM,CAAC,kBAAkB,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;gBACjD,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC;YAC7B,CAAC;YAED,MAAM,YAAY,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;YACpE,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;YACzD,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC1B,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAElC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,MAA0C,EAC1C,MAAsB,EACtB,SAAoB,EACpB,QAAgB,EAChB,SAA6B,EAC7B,SAAiB;IAEjB,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,IAAI,cAAkC,CAAC;IAEvC,SAAS,aAAa;QACpB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACtC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;QACpD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;QAC5D,CAAC;QACD,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC;QAEzB,IAAI,MAAM,CAAC,kBAAkB,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;YACjD,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC;QAC7B,CAAC;QAED,MAAM,YAAY,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;QACpE,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACzD,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1B,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACzC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,SAAS,WAAW,CAAC,KAAU;QAC7B,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,GAAG,GAAwB;YAC/B,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,SAAS;YACpC,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,CAAC;YACd,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;YAC9C,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC;SACvC,CAAC;QAEF,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,MAAM,CAAC,kBAAkB,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;YACjD,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC;QAC7B,CAAC;QAED,MAAM,YAAY,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;QACpE,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACzD,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1B,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,gFAAgF;IAChF,gFAAgF;IAChF,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACvB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,IAAI,IAAI,KAAK,MAAM,CAAC,aAAa,EAAE,CAAC;gBAClC,OAAO;oBACL,MAAM,gBAAgB,GAAI,MAAc,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;oBACjE,OAAO;wBACL,KAAK,CAAC,IAAI;4BACR,IAAI,CAAC;gCACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;gCAC7C,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oCAChB,aAAa,EAAE,CAAC;oCAChB,OAAO,MAAM,CAAC;gCAChB,CAAC;gCACD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;oCACjC,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gCACrC,CAAC;gCACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gCAC1B,OAAO,MAAM,CAAC;4BAChB,CAAC;4BAAC,OAAO,KAAU,EAAE,CAAC;gCACpB,WAAW,CAAC,KAAK,CAAC,CAAC;gCACnB,MAAM,KAAK,CAAC;4BACd,CAAC;wBACH,CAAC;wBACD,KAAK,CAAC,MAAM,CAAC,KAAW;4BACtB,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;gCAC5B,OAAO,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4BACxC,CAAC;4BACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAgB,EAAE,CAAC;wBACjD,CAAC;wBACD,KAAK,CAAC,KAAK,CAAC,KAAW;4BACrB,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC;gCAC3B,OAAO,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;4BACvC,CAAC;4BACD,MAAM,KAAK,CAAC;wBACd,CAAC;qBACF,CAAC;gBACJ,CAAC,CAAC;YACJ,CAAC;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,aAAa,CAAI,MAAS,EAAE,OAAwB;IAClE,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAE1C,OAAO,IAAI,KAAK,CAAC,MAAa,EAAE;QAC9B,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACjD,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;oBACrB,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY;wBACpC,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;4BAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAC7B,UAAU,EACV,QAAQ,EACR,YAAY,CACb,CAAC;4BACF,OAAO,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;wBAChE,CAAC;wBACD,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;oBACzD,CAAC;iBACF,CAAC,CAAC;YACL,CAAC;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;KACF,CAAM,CAAC;AACV,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { observeOpenAI } from "./adapter";
2
+ export type { CountlyOpenAIOptions } from "./adapter";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { observeOpenAI } from "./adapter";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@countly/ai-sdk-openai",
3
+ "version": "0.0.3",
4
+ "description": "Countly AI observability adapter for OpenAI SDK",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "import": "./dist/index.js",
9
+ "types": "./dist/index.d.ts"
10
+ }
11
+ },
12
+ "files": [
13
+ "dist"
14
+ ],
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "peerDependencies": {
19
+ "openai": ">=4.68.0"
20
+ },
21
+ "peerDependenciesMeta": {
22
+ "openai": {
23
+ "optional": false
24
+ }
25
+ },
26
+ "dependencies": {
27
+ "@countly/ai-sdk-core": "0.0.3"
28
+ },
29
+ "devDependencies": {
30
+ "typescript": "^5.8.3",
31
+ "@countly/ai-sdk-tsconfig": "0.0.0"
32
+ },
33
+ "scripts": {
34
+ "build": "tsc --project tsconfig.build.json",
35
+ "dev": "tsc --project tsconfig.build.json --watch",
36
+ "lint": "tsc --noEmit",
37
+ "test": "vitest run"
38
+ }
39
+ }