@od-oneapp/analytics 2026.1.1301
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 +509 -0
- package/dist/ai-YMnynb-t.mjs +3347 -0
- package/dist/ai-YMnynb-t.mjs.map +1 -0
- package/dist/chunk-DQk6qfdC.mjs +18 -0
- package/dist/client-CTzJVFU5.mjs +9 -0
- package/dist/client-CTzJVFU5.mjs.map +1 -0
- package/dist/client-CcFTauAh.mjs +54 -0
- package/dist/client-CcFTauAh.mjs.map +1 -0
- package/dist/client-CeOLjbac.mjs +281 -0
- package/dist/client-CeOLjbac.mjs.map +1 -0
- package/dist/client-D339NFJS.mjs +267 -0
- package/dist/client-D339NFJS.mjs.map +1 -0
- package/dist/client-next.d.mts +62 -0
- package/dist/client-next.d.mts.map +1 -0
- package/dist/client-next.mjs +525 -0
- package/dist/client-next.mjs.map +1 -0
- package/dist/client.d.mts +30 -0
- package/dist/client.d.mts.map +1 -0
- package/dist/client.mjs +186 -0
- package/dist/client.mjs.map +1 -0
- package/dist/config-DPS6bSYo.d.mts +34 -0
- package/dist/config-DPS6bSYo.d.mts.map +1 -0
- package/dist/config-P6P5adJg.mjs +287 -0
- package/dist/config-P6P5adJg.mjs.map +1 -0
- package/dist/console-8bND3mMU.mjs +128 -0
- package/dist/console-8bND3mMU.mjs.map +1 -0
- package/dist/ecommerce-Cgu4wlux.mjs +993 -0
- package/dist/ecommerce-Cgu4wlux.mjs.map +1 -0
- package/dist/emitters-6-nKo8i-.mjs +208 -0
- package/dist/emitters-6-nKo8i-.mjs.map +1 -0
- package/dist/emitters-DldkVSPp.d.mts +12 -0
- package/dist/emitters-DldkVSPp.d.mts.map +1 -0
- package/dist/index-BfNWgfa5.d.mts +1494 -0
- package/dist/index-BfNWgfa5.d.mts.map +1 -0
- package/dist/index-BkIWe--N.d.mts +953 -0
- package/dist/index-BkIWe--N.d.mts.map +1 -0
- package/dist/index-jPzXRn52.d.mts +184 -0
- package/dist/index-jPzXRn52.d.mts.map +1 -0
- package/dist/manager-DvRRjza6.d.mts +76 -0
- package/dist/manager-DvRRjza6.d.mts.map +1 -0
- package/dist/posthog-bootstrap-CYfIy_WS.mjs +1769 -0
- package/dist/posthog-bootstrap-CYfIy_WS.mjs.map +1 -0
- package/dist/posthog-bootstrap-DWxFrxlt.d.mts +81 -0
- package/dist/posthog-bootstrap-DWxFrxlt.d.mts.map +1 -0
- package/dist/providers-http-client.d.mts +37 -0
- package/dist/providers-http-client.d.mts.map +1 -0
- package/dist/providers-http-client.mjs +320 -0
- package/dist/providers-http-client.mjs.map +1 -0
- package/dist/providers-http-server.d.mts +31 -0
- package/dist/providers-http-server.d.mts.map +1 -0
- package/dist/providers-http-server.mjs +297 -0
- package/dist/providers-http-server.mjs.map +1 -0
- package/dist/providers-http.d.mts +46 -0
- package/dist/providers-http.d.mts.map +1 -0
- package/dist/providers-http.mjs +4 -0
- package/dist/server-edge.d.mts +9 -0
- package/dist/server-edge.d.mts.map +1 -0
- package/dist/server-edge.mjs +373 -0
- package/dist/server-edge.mjs.map +1 -0
- package/dist/server-next.d.mts +67 -0
- package/dist/server-next.d.mts.map +1 -0
- package/dist/server-next.mjs +193 -0
- package/dist/server-next.mjs.map +1 -0
- package/dist/server.d.mts +10 -0
- package/dist/server.mjs +7 -0
- package/dist/service-cYtBBL8x.mjs +945 -0
- package/dist/service-cYtBBL8x.mjs.map +1 -0
- package/dist/shared.d.mts +16 -0
- package/dist/shared.d.mts.map +1 -0
- package/dist/shared.mjs +93 -0
- package/dist/shared.mjs.map +1 -0
- package/dist/types-BxBnNQ0V.d.mts +354 -0
- package/dist/types-BxBnNQ0V.d.mts.map +1 -0
- package/dist/types-CBvxUEaF.d.mts +216 -0
- package/dist/types-CBvxUEaF.d.mts.map +1 -0
- package/dist/types.d.mts +4 -0
- package/dist/types.mjs +0 -0
- package/dist/vercel-types-lwakUfoI.d.mts +102 -0
- package/dist/vercel-types-lwakUfoI.d.mts.map +1 -0
- package/package.json +129 -0
- package/src/client/index.ts +164 -0
- package/src/client/manager.ts +71 -0
- package/src/client/next/components.tsx +270 -0
- package/src/client/next/hooks.ts +217 -0
- package/src/client/next/manager.ts +141 -0
- package/src/client/next.ts +144 -0
- package/src/client-next.ts +101 -0
- package/src/client.ts +89 -0
- package/src/examples/ai-sdk-patterns.ts +583 -0
- package/src/examples/emitter-patterns.ts +476 -0
- package/src/examples/nextjs-emitter-patterns.tsx +403 -0
- package/src/next/app-router.tsx +564 -0
- package/src/next/client.ts +419 -0
- package/src/next/index.ts +84 -0
- package/src/next/middleware.ts +429 -0
- package/src/next/rsc.tsx +300 -0
- package/src/next/server.ts +253 -0
- package/src/next/types.d.ts +220 -0
- package/src/providers/base-provider.ts +419 -0
- package/src/providers/console/client.ts +10 -0
- package/src/providers/console/index.ts +152 -0
- package/src/providers/console/server.ts +6 -0
- package/src/providers/console/types.ts +15 -0
- package/src/providers/http/client.ts +464 -0
- package/src/providers/http/index.ts +30 -0
- package/src/providers/http/server.ts +396 -0
- package/src/providers/http/types.ts +135 -0
- package/src/providers/posthog/client.ts +518 -0
- package/src/providers/posthog/index.ts +11 -0
- package/src/providers/posthog/server.ts +329 -0
- package/src/providers/posthog/types.ts +104 -0
- package/src/providers/segment/client.ts +113 -0
- package/src/providers/segment/index.ts +11 -0
- package/src/providers/segment/server.ts +115 -0
- package/src/providers/segment/types.ts +51 -0
- package/src/providers/vercel/client.ts +102 -0
- package/src/providers/vercel/index.ts +11 -0
- package/src/providers/vercel/server.ts +89 -0
- package/src/providers/vercel/types.ts +27 -0
- package/src/server/index.ts +103 -0
- package/src/server/manager.ts +62 -0
- package/src/server/next.ts +210 -0
- package/src/server-edge.ts +442 -0
- package/src/server-next.ts +39 -0
- package/src/server.ts +106 -0
- package/src/shared/emitters/ai/README.md +981 -0
- package/src/shared/emitters/ai/events/agent.ts +130 -0
- package/src/shared/emitters/ai/events/artifacts.ts +167 -0
- package/src/shared/emitters/ai/events/chat.ts +126 -0
- package/src/shared/emitters/ai/events/chatbot-ecommerce.ts +133 -0
- package/src/shared/emitters/ai/events/completion.ts +103 -0
- package/src/shared/emitters/ai/events/content-generation.ts +347 -0
- package/src/shared/emitters/ai/events/conversation.ts +332 -0
- package/src/shared/emitters/ai/events/product-features.ts +1402 -0
- package/src/shared/emitters/ai/events/streaming.ts +114 -0
- package/src/shared/emitters/ai/events/tool.ts +93 -0
- package/src/shared/emitters/ai/index.ts +69 -0
- package/src/shared/emitters/ai/track-ai-sdk.ts +74 -0
- package/src/shared/emitters/ai/track-ai.ts +50 -0
- package/src/shared/emitters/ai/types.ts +1041 -0
- package/src/shared/emitters/ai/utils.ts +468 -0
- package/src/shared/emitters/ecommerce/events/cart-checkout.ts +106 -0
- package/src/shared/emitters/ecommerce/events/coupon.ts +49 -0
- package/src/shared/emitters/ecommerce/events/engagement.ts +61 -0
- package/src/shared/emitters/ecommerce/events/marketplace.ts +119 -0
- package/src/shared/emitters/ecommerce/events/order.ts +199 -0
- package/src/shared/emitters/ecommerce/events/product.ts +205 -0
- package/src/shared/emitters/ecommerce/events/registry.ts +123 -0
- package/src/shared/emitters/ecommerce/events/wishlist-sharing.ts +140 -0
- package/src/shared/emitters/ecommerce/index.ts +46 -0
- package/src/shared/emitters/ecommerce/track-ecommerce.ts +53 -0
- package/src/shared/emitters/ecommerce/types.ts +314 -0
- package/src/shared/emitters/ecommerce/utils.ts +216 -0
- package/src/shared/emitters/emitter-types.ts +974 -0
- package/src/shared/emitters/emitters.ts +292 -0
- package/src/shared/emitters/helpers.ts +419 -0
- package/src/shared/emitters/index.ts +66 -0
- package/src/shared/index.ts +142 -0
- package/src/shared/ingestion/index.ts +66 -0
- package/src/shared/ingestion/schemas.ts +386 -0
- package/src/shared/ingestion/service.ts +628 -0
- package/src/shared/node22-features.ts +848 -0
- package/src/shared/providers/console-provider.ts +160 -0
- package/src/shared/types/base-types.ts +54 -0
- package/src/shared/types/console-types.ts +19 -0
- package/src/shared/types/posthog-types.ts +131 -0
- package/src/shared/types/segment-types.ts +15 -0
- package/src/shared/types/types.ts +397 -0
- package/src/shared/types/vercel-types.ts +19 -0
- package/src/shared/utils/config-client.ts +19 -0
- package/src/shared/utils/config.ts +250 -0
- package/src/shared/utils/emitter-adapter.ts +212 -0
- package/src/shared/utils/manager.test.ts +36 -0
- package/src/shared/utils/manager.ts +1322 -0
- package/src/shared/utils/posthog-bootstrap.ts +136 -0
- package/src/shared/utils/posthog-client-utils.ts +48 -0
- package/src/shared/utils/posthog-next-utils.ts +282 -0
- package/src/shared/utils/posthog-server-utils.ts +210 -0
- package/src/shared/utils/rate-limit.ts +289 -0
- package/src/shared/utils/security.ts +545 -0
- package/src/shared/utils/validation-client.ts +161 -0
- package/src/shared/utils/validation.ts +399 -0
- package/src/shared.ts +155 -0
- package/src/types/index.ts +62 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Streaming-related AI SDK v6 events
|
|
3
|
+
* Streaming-related AI SDK v6 events
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { trackAISDK } from '../track-ai-sdk';
|
|
7
|
+
import { AI_SDK_EVENTS, type AISdkEventSpec, type StreamingSDKProperties } from '../types';
|
|
8
|
+
import { cleanProperties, normalizeBaseProperties, validateRequiredProperties } from '../utils';
|
|
9
|
+
|
|
10
|
+
import type { EmitterOptions, EmitterTrackPayload } from '../../emitter-types';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Track when streaming starts
|
|
14
|
+
*/
|
|
15
|
+
export function streamStarted(
|
|
16
|
+
properties: StreamingSDKProperties,
|
|
17
|
+
options?: EmitterOptions,
|
|
18
|
+
): EmitterTrackPayload {
|
|
19
|
+
validateRequiredProperties(properties, ['model_id', 'stream_type']);
|
|
20
|
+
|
|
21
|
+
const normalizedProps = {
|
|
22
|
+
...normalizeBaseProperties(properties),
|
|
23
|
+
stream_type: properties.stream_type,
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const eventSpec: AISdkEventSpec = {
|
|
27
|
+
name: AI_SDK_EVENTS.STREAM_STARTED,
|
|
28
|
+
category: 'ai-sdk',
|
|
29
|
+
properties: cleanProperties(normalizedProps),
|
|
30
|
+
requiredProperties: ['model_id', 'stream_type'],
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
return trackAISDK(eventSpec, options);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Track when a stream chunk is received
|
|
38
|
+
*/
|
|
39
|
+
export function streamChunkReceived(
|
|
40
|
+
properties: StreamingSDKProperties,
|
|
41
|
+
options?: EmitterOptions,
|
|
42
|
+
): EmitterTrackPayload {
|
|
43
|
+
validateRequiredProperties(properties, ['model_id', 'stream_type']);
|
|
44
|
+
|
|
45
|
+
const normalizedProps = {
|
|
46
|
+
...normalizeBaseProperties(properties),
|
|
47
|
+
stream_type: properties.stream_type,
|
|
48
|
+
chunk_index: properties.chunk_index,
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const eventSpec: AISdkEventSpec = {
|
|
52
|
+
name: AI_SDK_EVENTS.STREAM_CHUNK_RECEIVED,
|
|
53
|
+
category: 'ai-sdk',
|
|
54
|
+
properties: cleanProperties(normalizedProps),
|
|
55
|
+
requiredProperties: ['model_id', 'stream_type'],
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
return trackAISDK(eventSpec, options);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Track when streaming completes
|
|
63
|
+
*/
|
|
64
|
+
export function streamCompleted(
|
|
65
|
+
properties: StreamingSDKProperties,
|
|
66
|
+
options?: EmitterOptions,
|
|
67
|
+
): EmitterTrackPayload {
|
|
68
|
+
validateRequiredProperties(properties, ['model_id', 'stream_type']);
|
|
69
|
+
|
|
70
|
+
const normalizedProps = {
|
|
71
|
+
...normalizeBaseProperties(properties),
|
|
72
|
+
stream_type: properties.stream_type,
|
|
73
|
+
chunk_count: properties.chunk_count,
|
|
74
|
+
stream_duration_ms: properties.stream_duration_ms,
|
|
75
|
+
time_to_first_chunk_ms: properties.time_to_first_chunk_ms,
|
|
76
|
+
chunks_per_second: properties.chunks_per_second,
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
const eventSpec: AISdkEventSpec = {
|
|
80
|
+
name: AI_SDK_EVENTS.STREAM_COMPLETED,
|
|
81
|
+
category: 'ai-sdk',
|
|
82
|
+
properties: cleanProperties(normalizedProps),
|
|
83
|
+
requiredProperties: ['model_id', 'stream_type'],
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
return trackAISDK(eventSpec, options);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Track when streaming fails
|
|
91
|
+
*/
|
|
92
|
+
export function streamFailed(
|
|
93
|
+
properties: StreamingSDKProperties & { error_message: string },
|
|
94
|
+
options?: EmitterOptions,
|
|
95
|
+
): EmitterTrackPayload {
|
|
96
|
+
validateRequiredProperties(properties, ['model_id', 'stream_type', 'error_message']);
|
|
97
|
+
|
|
98
|
+
const normalizedProps = {
|
|
99
|
+
...normalizeBaseProperties(properties),
|
|
100
|
+
stream_type: properties.stream_type,
|
|
101
|
+
error_message: properties.error_message,
|
|
102
|
+
chunk_count: properties.chunk_count,
|
|
103
|
+
stream_duration_ms: properties.stream_duration_ms,
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
const eventSpec: AISdkEventSpec = {
|
|
107
|
+
name: AI_SDK_EVENTS.STREAM_FAILED,
|
|
108
|
+
category: 'ai-sdk',
|
|
109
|
+
properties: cleanProperties(normalizedProps),
|
|
110
|
+
requiredProperties: ['model_id', 'stream_type', 'error_message'],
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
return trackAISDK(eventSpec, options);
|
|
114
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Tool-related AI SDK v6 events
|
|
3
|
+
* Tool-related AI SDK v6 events
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { trackAISDK } from '../track-ai-sdk';
|
|
7
|
+
import { AI_SDK_EVENTS, type AISdkEventSpec, type ToolCallSDKProperties } from '../types';
|
|
8
|
+
import { cleanProperties, normalizeBaseProperties, validateRequiredProperties } from '../utils';
|
|
9
|
+
|
|
10
|
+
import type { EmitterOptions, EmitterTrackPayload } from '../../emitter-types';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Track when a tool call starts
|
|
14
|
+
*/
|
|
15
|
+
export function toolCallStarted(
|
|
16
|
+
properties: ToolCallSDKProperties,
|
|
17
|
+
options?: EmitterOptions,
|
|
18
|
+
): EmitterTrackPayload {
|
|
19
|
+
validateRequiredProperties(properties, ['model_id', 'tool_name']);
|
|
20
|
+
|
|
21
|
+
const normalizedProps = {
|
|
22
|
+
...normalizeBaseProperties(properties),
|
|
23
|
+
tool_name: properties.tool_name,
|
|
24
|
+
tool_type: properties.tool_type,
|
|
25
|
+
input_size: properties.input_size,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const eventSpec: AISdkEventSpec = {
|
|
29
|
+
name: AI_SDK_EVENTS.TOOL_CALL_STARTED,
|
|
30
|
+
category: 'ai-sdk',
|
|
31
|
+
properties: cleanProperties(normalizedProps),
|
|
32
|
+
requiredProperties: ['model_id', 'tool_name'],
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
return trackAISDK(eventSpec, options);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Track when a tool call completes successfully
|
|
40
|
+
*/
|
|
41
|
+
export function toolCallCompleted(
|
|
42
|
+
properties: ToolCallSDKProperties,
|
|
43
|
+
options?: EmitterOptions,
|
|
44
|
+
): EmitterTrackPayload {
|
|
45
|
+
validateRequiredProperties(properties, ['model_id', 'tool_name', 'result_status']);
|
|
46
|
+
|
|
47
|
+
const normalizedProps = {
|
|
48
|
+
...normalizeBaseProperties(properties),
|
|
49
|
+
tool_name: properties.tool_name,
|
|
50
|
+
tool_type: properties.tool_type,
|
|
51
|
+
result_status: properties.result_status,
|
|
52
|
+
execution_time_ms: properties.execution_time_ms,
|
|
53
|
+
input_size: properties.input_size,
|
|
54
|
+
output_size: properties.output_size,
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const eventSpec: AISdkEventSpec = {
|
|
58
|
+
name: AI_SDK_EVENTS.TOOL_CALL_COMPLETED,
|
|
59
|
+
category: 'ai-sdk',
|
|
60
|
+
properties: cleanProperties(normalizedProps),
|
|
61
|
+
requiredProperties: ['model_id', 'tool_name', 'result_status'],
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
return trackAISDK(eventSpec, options);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Track when a tool call fails
|
|
69
|
+
*/
|
|
70
|
+
export function toolCallFailed(
|
|
71
|
+
properties: ToolCallSDKProperties & { error_message: string },
|
|
72
|
+
options?: EmitterOptions,
|
|
73
|
+
): EmitterTrackPayload {
|
|
74
|
+
validateRequiredProperties(properties, ['model_id', 'tool_name', 'error_message']);
|
|
75
|
+
|
|
76
|
+
const normalizedProps = {
|
|
77
|
+
...normalizeBaseProperties(properties),
|
|
78
|
+
tool_name: properties.tool_name,
|
|
79
|
+
tool_type: properties.tool_type,
|
|
80
|
+
result_status: 'error' as const,
|
|
81
|
+
error_message: properties.error_message,
|
|
82
|
+
execution_time_ms: properties.execution_time_ms,
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const eventSpec: AISdkEventSpec = {
|
|
86
|
+
name: AI_SDK_EVENTS.TOOL_CALL_FAILED,
|
|
87
|
+
category: 'ai-sdk',
|
|
88
|
+
properties: cleanProperties(normalizedProps),
|
|
89
|
+
requiredProperties: ['model_id', 'tool_name', 'error_message'],
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
return trackAISDK(eventSpec, options);
|
|
93
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview AI Product Analytics
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive tracking for AI product features like ChatGPT, Claude, and GitHub Copilot.
|
|
5
|
+
* Track how users interact with your AI-powered chat interface, code generation tools,
|
|
6
|
+
* and collaborative AI features.
|
|
7
|
+
*
|
|
8
|
+
* **90+ Events Covering**:
|
|
9
|
+
* - **Conversation & Messaging**: Message regeneration, branching, editing
|
|
10
|
+
* - **Content Generation**: Code, images, summaries, translations
|
|
11
|
+
* - **Artifacts & Canvas**: Interactive artifacts (Claude-style)
|
|
12
|
+
* - **Files & Attachments**: Upload, processing, referencing
|
|
13
|
+
* - **Context & Memory**: Custom instructions, RAG, memory
|
|
14
|
+
* - **Collaboration**: Sharing, forking, team workspaces
|
|
15
|
+
* - **User Interactions**: Copy, execute, download, modify
|
|
16
|
+
* - **Workspace**: Organization, search, tags
|
|
17
|
+
* - **Feedback & Quality**: Ratings, bug reports, quality issues
|
|
18
|
+
* - **System & Performance**: Model selection, errors, performance
|
|
19
|
+
* - **Tools & Functions**: Tool calls, plugins, extensions
|
|
20
|
+
* - **Search & Citations**: Web search, citations, browsing
|
|
21
|
+
*
|
|
22
|
+
* **Usage**: Import event functions and use with `analytics.emit()`:
|
|
23
|
+
* ```typescript
|
|
24
|
+
* import { ai } from '@od-oneapp/analytics/shared';
|
|
25
|
+
* await analytics.emit(ai.messageSent({ messageId: 'msg-123' }));
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @module @od-oneapp/analytics/shared/emitters/ai
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
// Export all types
|
|
32
|
+
export * from './types';
|
|
33
|
+
|
|
34
|
+
// Export utilities
|
|
35
|
+
export * from './utils';
|
|
36
|
+
|
|
37
|
+
// Export tracking functionality
|
|
38
|
+
export * from './track-ai';
|
|
39
|
+
export * from './track-ai-sdk';
|
|
40
|
+
|
|
41
|
+
// Re-export event constants for convenience
|
|
42
|
+
export { AI_EVENTS, AI_SDK_EVENTS } from './types';
|
|
43
|
+
|
|
44
|
+
// Export AI product feature events
|
|
45
|
+
// Organized by product capability for easy discoverability
|
|
46
|
+
|
|
47
|
+
// Core conversation features (ChatGPT/Claude-style)
|
|
48
|
+
export * from './events/conversation';
|
|
49
|
+
|
|
50
|
+
// Content generation (code, images, text)
|
|
51
|
+
export * from './events/content-generation';
|
|
52
|
+
|
|
53
|
+
// Interactive artifacts & canvas (Claude-style)
|
|
54
|
+
export * from './events/artifacts';
|
|
55
|
+
|
|
56
|
+
// All additional product features
|
|
57
|
+
export * from './events/product-features';
|
|
58
|
+
|
|
59
|
+
// =============================================================================
|
|
60
|
+
// AI SDK V6 EVENTS
|
|
61
|
+
// =============================================================================
|
|
62
|
+
// Export AI SDK v6 event tracking functions
|
|
63
|
+
|
|
64
|
+
export * from './events/agent';
|
|
65
|
+
export * from './events/chat';
|
|
66
|
+
export * from './events/chatbot-ecommerce';
|
|
67
|
+
export * from './events/completion';
|
|
68
|
+
export * from './events/streaming';
|
|
69
|
+
export * from './events/tool';
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview AI SDK v6 tracking wrapper that integrates with the core emitter system
|
|
3
|
+
* AI SDK v6 tracking wrapper that integrates with the core emitter system
|
|
4
|
+
*
|
|
5
|
+
* Provides tracking for AI SDK v6 operations including:
|
|
6
|
+
* - Agent execution
|
|
7
|
+
* - Completions and text generation
|
|
8
|
+
* - Tool calls and function calling
|
|
9
|
+
* - Streaming responses
|
|
10
|
+
* - Chat sessions
|
|
11
|
+
* - E-commerce chatbot interactions
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { track } from '../emitters';
|
|
15
|
+
|
|
16
|
+
import type { EmitterOptions, EmitterTrackPayload } from '../emitter-types';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* AI SDK event specification
|
|
20
|
+
*/
|
|
21
|
+
export interface AISdkEventSpec {
|
|
22
|
+
/** Event name following AI SDK v6 naming conventions */
|
|
23
|
+
name: string;
|
|
24
|
+
/** Event category (always 'ai-sdk' for AI SDK events) */
|
|
25
|
+
category: 'ai-sdk';
|
|
26
|
+
/** Event properties */
|
|
27
|
+
properties: Record<string, any>;
|
|
28
|
+
/** Required property names for validation */
|
|
29
|
+
requiredProperties?: string[];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Convert an AI SDK event specification to a track payload
|
|
34
|
+
*
|
|
35
|
+
* @param eventSpec - The AI SDK event specification
|
|
36
|
+
* @param options - Optional emitter options
|
|
37
|
+
* @returns Track payload ready to be sent to analytics providers
|
|
38
|
+
*/
|
|
39
|
+
export function trackAISDK(
|
|
40
|
+
eventSpec: AISdkEventSpec,
|
|
41
|
+
options?: EmitterOptions,
|
|
42
|
+
): EmitterTrackPayload {
|
|
43
|
+
// Add AI SDK-specific context to options
|
|
44
|
+
const enrichedOptions: EmitterOptions = {
|
|
45
|
+
...options,
|
|
46
|
+
context: {
|
|
47
|
+
...options?.context,
|
|
48
|
+
// Add AI SDK-specific context
|
|
49
|
+
traits: {
|
|
50
|
+
...options?.context?.traits,
|
|
51
|
+
event_category: eventSpec.category,
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// Return the track payload with the event name and properties
|
|
57
|
+
return track(eventSpec.name, eventSpec.properties, enrichedOptions);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Helper to create a tracking function for a specific AI SDK event
|
|
62
|
+
* This allows for cleaner usage in applications
|
|
63
|
+
*
|
|
64
|
+
* @param eventFactory - Function that creates an event spec from properties
|
|
65
|
+
* @returns Tracking function for the specific event
|
|
66
|
+
*/
|
|
67
|
+
export function createAISDKTracker<T extends Record<string, any>>(
|
|
68
|
+
eventFactory: (properties: T) => AISdkEventSpec,
|
|
69
|
+
) {
|
|
70
|
+
return (properties: T, options?: EmitterOptions): EmitterTrackPayload => {
|
|
71
|
+
const eventSpec = eventFactory(properties);
|
|
72
|
+
return trackAISDK(eventSpec, options);
|
|
73
|
+
};
|
|
74
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview AI tracking wrapper that integrates with the core emitter system
|
|
3
|
+
* AI tracking wrapper that integrates with the core emitter system
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { track } from '../emitters';
|
|
7
|
+
|
|
8
|
+
import type { EmitterOptions, EmitterTrackPayload } from '../emitter-types';
|
|
9
|
+
import type { AIEventSpec } from './types';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Convert an AI event specification to a track payload
|
|
13
|
+
*
|
|
14
|
+
* @param eventSpec - The AI event specification
|
|
15
|
+
* @param options - Optional emitter options
|
|
16
|
+
* @returns Track payload ready to be sent to analytics providers
|
|
17
|
+
*/
|
|
18
|
+
export function trackAI(eventSpec: AIEventSpec, options?: EmitterOptions): EmitterTrackPayload {
|
|
19
|
+
// Add AI-specific context to options
|
|
20
|
+
const enrichedOptions: EmitterOptions = {
|
|
21
|
+
...options,
|
|
22
|
+
context: {
|
|
23
|
+
...options?.context,
|
|
24
|
+
// Add AI-specific context
|
|
25
|
+
...(eventSpec.category && {
|
|
26
|
+
// Store category as a custom field since EmitterContext doesn't have category
|
|
27
|
+
traits: {
|
|
28
|
+
...options?.context?.traits,
|
|
29
|
+
event_category: eventSpec.category,
|
|
30
|
+
},
|
|
31
|
+
}),
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// Return the track payload with the event name and properties
|
|
36
|
+
return track(eventSpec.name, eventSpec.properties, enrichedOptions);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Helper to create a tracking function for a specific AI event
|
|
41
|
+
* This allows for cleaner usage in applications
|
|
42
|
+
*/
|
|
43
|
+
export function createAITracker<T extends Record<string, any>>(
|
|
44
|
+
eventFactory: (properties: T) => AIEventSpec,
|
|
45
|
+
) {
|
|
46
|
+
return (properties: T, options?: EmitterOptions): EmitterTrackPayload => {
|
|
47
|
+
const eventSpec = eventFactory(properties);
|
|
48
|
+
return trackAI(eventSpec, options);
|
|
49
|
+
};
|
|
50
|
+
}
|