@keak/sdk 1.0.8 → 1.0.9

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,20 @@
1
+ /**
2
+ * Telemetry Service
3
+ *
4
+ * Handles all telemetry tracking for the Keak SDK, including:
5
+ * - Session management
6
+ * - Generation tracking (AI requests)
7
+ * - Variant management (AI outputs)
8
+ * - User interactions (previews, accepts, rejects)
9
+ */
10
+ import { TelemetryService } from "./telemetryService";
11
+ import { GenerationType, VariantOutcome } from "./types";
12
+ import type { InitialVariantData as _InitialVariantData } from "./types";
13
+ export declare const telemetry: TelemetryService & {
14
+ GenerationType: typeof GenerationType;
15
+ VariantOutcome: typeof VariantOutcome;
16
+ };
17
+ export declare namespace TelemetryTypes {
18
+ type InitialVariantData = _InitialVariantData;
19
+ }
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/telemetry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,IAAI,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAKzE,eAAO,MAAM,SAAS;;;CAGpB,CAAC;AAMH,yBAAiB,cAAc,CAAC;IAC9B,KAAY,kBAAkB,GAAG,mBAAmB,CAAC;CACtD"}
@@ -0,0 +1,66 @@
1
+ import { ChatStartEvent, TelemetryConfig, UserContext } from './types';
2
+ import { GenerationStartEvent, GenerationCompleteEvent, VariantUpdates } from './types';
3
+ export declare class TelemetryService {
4
+ private supabase;
5
+ private enabled;
6
+ private currentSessionId;
7
+ /**
8
+ * Initialize the telemetry service
9
+ */
10
+ initialize(config: TelemetryConfig): void;
11
+ /**
12
+ * Check if telemetry is enabled and configured
13
+ */
14
+ private isReady;
15
+ /**
16
+ * Handle errors gracefully
17
+ */
18
+ private handleError;
19
+ /**
20
+ * Start a new session or return existing session ID
21
+ */
22
+ startSession(userContext?: UserContext): Promise<string | null>;
23
+ /**
24
+ * Get the current session ID
25
+ */
26
+ getCurrentSessionId(): string | null;
27
+ /**
28
+ * End the current session
29
+ */
30
+ endSession(): void;
31
+ /**
32
+ * Start a new chat or select existing chat
33
+ */
34
+ trackChatStart(event: ChatStartEvent): Promise<{
35
+ chatId: string | null;
36
+ }>;
37
+ /**
38
+ * Track the start of a generation (AI request)
39
+ * Creates chat if needed and generation record
40
+ */
41
+ trackGenerationStart(event: GenerationStartEvent): Promise<{
42
+ generationId: string | null;
43
+ }>;
44
+ /**
45
+ * Track the completion of a generation
46
+ * Updates generation with metrics, inserts variants, and updates context with complexity
47
+ */
48
+ trackGenerationComplete(event: GenerationCompleteEvent): Promise<{
49
+ variantId: string | null;
50
+ }>;
51
+ updateVariant(variantId: string, updates: VariantUpdates): Promise<void>;
52
+ trackVariantAccept(variantId: string): Promise<void>;
53
+ trackVariantRetry(variantId: string): Promise<void>;
54
+ trackVariantFollowup(variantId: string): Promise<void>;
55
+ trackVariantPreview(variantId: string, new_code: string): Promise<void>;
56
+ trackChatClear(chatId: string): Promise<void>;
57
+ /**
58
+ * Disable telemetry
59
+ */
60
+ disable(): void;
61
+ /**
62
+ * Enable telemetry
63
+ */
64
+ enable(): void;
65
+ }
66
+ //# sourceMappingURL=telemetryService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetryService.d.ts","sourceRoot":"","sources":["../../../src/services/telemetry/telemetryService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAkB,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAMxF,qBAAa,gBAAgB;IACzB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,gBAAgB,CAAuB;IAE/C;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAoBzC;;OAEG;IACH,OAAO,CAAC,OAAO;IAOf;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;IACG,YAAY,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA2BrE;;OAEG;IACH,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,UAAU,IAAI,IAAI;IAQlB;;MAEE;IACI,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAoC/E;;;OAGG;IACG,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC;QAC7D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAC9B,CAAC;IAsBF;;;OAGG;IACG,uBAAuB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IA0C9F,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxE,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BvE,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBnD;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,MAAM,IAAI,IAAI;CAKjB"}
@@ -0,0 +1,64 @@
1
+ export interface TelemetryConfig {
2
+ supabaseUrl: string;
3
+ supabaseKey: string;
4
+ enabled?: boolean;
5
+ }
6
+ export interface UserContext {
7
+ userId?: string;
8
+ metadata?: Record<string, any>;
9
+ }
10
+ export interface ChatStartEvent {
11
+ sessionId: string;
12
+ elementSelector: string;
13
+ originalCode: string;
14
+ }
15
+ export interface GenerationStartEvent {
16
+ chatId: string;
17
+ userPrompt: string;
18
+ generationType: GenerationType;
19
+ llmModel: string;
20
+ modelTier: string;
21
+ }
22
+ export interface GenerationCompleteEvent {
23
+ generationId: string;
24
+ durationMs: number;
25
+ inputTokens: number;
26
+ outputTokens: number;
27
+ variant: InitialVariantData;
28
+ complexity?: ComplexityScores;
29
+ }
30
+ export interface ComplexityScores {
31
+ overall: number;
32
+ structural: number;
33
+ content: number;
34
+ technical: number;
35
+ }
36
+ export interface InitialVariantData {
37
+ generationId: string;
38
+ chatId: string;
39
+ variantCode: string;
40
+ validationScore: number;
41
+ }
42
+ export declare enum GenerationType {
43
+ INITIAL = "INITIAL",
44
+ RETRY = "RETRY",
45
+ FOLLOWUP = "FOLLOWUP"
46
+ }
47
+ export declare enum VariantOutcome {
48
+ PENDING = "PENDING",
49
+ EDITED = "EDITED",
50
+ ACCEPTED = "ACCEPTED",
51
+ REPLACED = "REPLACED",// Retried
52
+ CLEARED = "CLEARED",
53
+ SKIPPED = "SKIPPED"
54
+ }
55
+ export interface VariantUpdates {
56
+ variant_code?: string;
57
+ validation_score?: number | null;
58
+ final_code?: string | null;
59
+ has_edits?: boolean;
60
+ outcome?: VariantOutcome;
61
+ preview_count?: number;
62
+ last_previewed_at?: string;
63
+ }
64
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/telemetry/types.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CAExB;AAED,MAAM,WAAW,oBAAoB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,UAAU,CAAC,EAAE,gBAAgB,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,oBAAY,cAAc;IACtB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,QAAQ,aAAa;CACxB;AACD,oBAAY,cAAc;IACtB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa,CAAE,UAAU;IACjC,OAAO,YAAY;IACnB,OAAO,YAAY;CACtB;AAED,MAAM,WAAW,cAAc;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B"}
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
2
  import { type VariantProps } from "class-variance-authority";
3
3
  declare const badgeVariants: (props?: ({
4
- variant?: "default" | "destructive" | "outline" | "secondary" | null | undefined;
4
+ variant?: "default" | "secondary" | "destructive" | "outline" | null | undefined;
5
5
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
6
  export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
7
7
  }
@@ -1,8 +1,8 @@
1
1
  import * as React from "react";
2
2
  import { type VariantProps } from "class-variance-authority";
3
3
  declare const buttonVariants: (props?: ({
4
- variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
5
- size?: "default" | "sm" | "lg" | "icon" | null | undefined;
4
+ variant?: "link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
5
+ size?: "default" | "icon" | "sm" | "lg" | null | undefined;
6
6
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
7
  export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
8
8
  asChild?: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keak/sdk",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "description": "Production-ready A/B testing and experimentation SDK for React applications with visual editing, source mapping, and real-time variant testing",
5
5
  "author": "Keak Team",
6
6
  "homepage": "https://www.keak.com/",
@@ -27,11 +27,6 @@
27
27
  "import": "./dist/toolbar.js",
28
28
  "default": "./dist/toolbar.js"
29
29
  },
30
- "./toolbar/KeakToolbarNew": {
31
- "types": "./dist/toolbar/KeakToolbarNew.d.ts",
32
- "import": "./dist/toolbar/KeakToolbarNew.js",
33
- "default": "./dist/toolbar/KeakToolbarNew.js"
34
- },
35
30
  "./toolbar.css": "./dist/toolbar.css",
36
31
  "./keak-toolbar.css": "./dist/keak-toolbar.css",
37
32
  "./plugins/next": "./src/plugins/next.cjs",
@@ -80,14 +75,9 @@
80
75
  }
81
76
  },
82
77
  "dependencies": {
83
- "@jsx-tool/jsx-tool": "^0.0.21",
84
- "@radix-ui/react-dropdown-menu": "^2.1.16",
85
- "@radix-ui/react-progress": "^1.1.7",
86
- "@radix-ui/react-slot": "^1.2.3",
87
- "@supabase/supabase-js": "^2.86.0",
88
- "class-variance-authority": "^0.7.1",
78
+ "@babel/parser": "^7.26.3",
79
+ "@babel/traverse": "^7.26.5",
89
80
  "clsx": "^2.1.1",
90
- "framer-motion": "^12.23.12",
91
81
  "lucide-react": "^0.542.0",
92
82
  "tailwind-merge": "^3.3.1",
93
83
  "tw-animate-css": "^1.3.8"
@@ -342,7 +342,7 @@ class KeakInstaller {
342
342
  if (bodyMatch) {
343
343
  const bodyContent = bodyMatch[2].trim();
344
344
  const wrapped = `${bodyMatch[1]}
345
- <KeakProvider config={{ apiKey: 'demo', debug: true }}>
345
+ <KeakProvider>
346
346
  ${bodyContent}
347
347
  <KeakToolbar />
348
348
  </KeakProvider>
@@ -371,7 +371,7 @@ ${bodyContent}
371
371
  const componentMatch = modified.match(/(return\s*\(?\s*)([\s\S]*?)(\s*\)?;?\s*})/);
372
372
  if (componentMatch) {
373
373
  const wrapped = `${componentMatch[1]}
374
- <KeakProvider config={{ apiKey: 'demo', debug: true }}>
374
+ <KeakProvider>
375
375
  ${componentMatch[2]}
376
376
  <KeakToolbar />
377
377
  </KeakProvider>
@@ -408,7 +408,7 @@ ${bodyContent}
408
408
  const renderMatch = modified.match(/(ReactDOM\.render\s*\(\s*)([\s\S]*?)(\s*,\s*document\.getElementById)/);
409
409
  if (renderMatch) {
410
410
  const wrapped = `${renderMatch[1]}
411
- <KeakProvider config={{ apiKey: 'demo', debug: true }}>
411
+ <KeakProvider>
412
412
  ${renderMatch[2]}
413
413
  <KeakToolbar />
414
414
  </KeakProvider>
@@ -420,7 +420,7 @@ ${bodyContent}
420
420
  const renderMatch = modified.match(/(root\.render\s*\(\s*)([\s\S]*?)(\s*\))/);
421
421
  if (renderMatch) {
422
422
  const wrapped = `${renderMatch[1]}
423
- <KeakProvider config={{ apiKey: 'demo', debug: true }}>
423
+ <KeakProvider>
424
424
  ${renderMatch[2]}
425
425
  <KeakToolbar />
426
426
  </KeakProvider>
@@ -513,7 +513,7 @@ Please add Keak to your app manually:
513
513
  ${colors.green}import { KeakProvider } from '@keak/sdk';${colors.reset}
514
514
 
515
515
  3. Wrap your main component:
516
- ${colors.green}<KeakProvider config={{ apiKey: 'demo', debug: true }}><YourApp /></KeakProvider>${colors.reset}
516
+ ${colors.green}<KeakProvider><YourApp /></KeakProvider>${colors.reset}
517
517
 
518
518
  Example for ${this.framework}:
519
519
  ${this.getFrameworkExample()}
@@ -529,7 +529,7 @@ import { KeakProvider } from '@keak/sdk';
529
529
  export default function RootLayout({ children }) {
530
530
  return (
531
531
  <html><body>
532
- <KeakProvider config={{ apiKey: 'demo', debug: true }}>
532
+ <KeakProvider>
533
533
  {children}
534
534
  </KeakProvider>
535
535
  </body></html>);
@@ -539,7 +539,7 @@ export default function RootLayout({ children }) {
539
539
  import { KeakProvider } from '@keak/sdk';
540
540
 
541
541
  root.render(
542
- <KeakProvider config={{ apiKey: 'demo', debug: true }}>
542
+ <KeakProvider>
543
543
  <App />
544
544
  </KeakProvider>
545
545
  );`,
@@ -548,7 +548,7 @@ root.render(
548
548
  import { KeakProvider } from '@keak/sdk';
549
549
 
550
550
  ReactDOM.createRoot(document.getElementById('root')).render(
551
- <KeakProvider config={{ apiKey: 'demo', debug: true }}>
551
+ <KeakProvider>
552
552
  <App />
553
553
  </KeakProvider>
554
554
  );`