guideai-app 0.4.1 → 0.4.2-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 (39) hide show
  1. package/API_DATA_CONTRACTS.md +516 -0
  2. package/API_SESSIONID_TESTING.md +215 -0
  3. package/PII_HASHING_EPIC.md +886 -0
  4. package/PII_HASHING_STORIES_SUMMARY.md +275 -0
  5. package/SESSION_ID_VERIFICATION.md +122 -0
  6. package/VISIT_COUNT_TESTING.md +453 -0
  7. package/dist/GuideAI.js +1 -1
  8. package/dist/GuideAI.js.LICENSE.txt +20 -0
  9. package/dist/GuideAI.js.map +1 -1
  10. package/dist/components/TranscriptBox.d.ts +4 -0
  11. package/dist/index.d.ts +3 -0
  12. package/dist/metric/index.d.ts +0 -2
  13. package/dist/metric/metadata-tracker.d.ts +1 -2
  14. package/dist/styles/GuideAI.styles.d.ts +1 -1
  15. package/dist/types/GuideAI.types.d.ts +3 -1
  16. package/dist/types/metadata.types.d.ts +2 -0
  17. package/dist/utils/api.d.ts +5 -0
  18. package/dist/utils/elementInteractions.d.ts +92 -0
  19. package/dist/utils/gemini.d.ts +3 -0
  20. package/dist/utils/goToAElmLink.d.ts +1 -0
  21. package/dist/utils/highlightThenClick.d.ts +1 -0
  22. package/dist/utils/hoverThenClick.d.ts +1 -0
  23. package/dist/utils/logger.d.ts +1 -5
  24. package/dist/utils/session.d.ts +23 -0
  25. package/dist/utils/ui.d.ts +1 -1
  26. package/dist/visualContext/VisualContextScheduler.d.ts +43 -0
  27. package/dist/visualContext/VisualContextStore.d.ts +11 -0
  28. package/dist/visualContext/debug-overlay.d.ts +10 -0
  29. package/dist/visualContext/defaultProvider.d.ts +15 -0
  30. package/dist/visualContext/index.d.ts +5 -0
  31. package/dist/visualContext/types.d.ts +45 -0
  32. package/index.d.ts +5 -1
  33. package/jest.config.js +26 -0
  34. package/jest.setup.js +21 -0
  35. package/metadata-tracking-example.md +11 -11
  36. package/package.json +14 -3
  37. package/dist/metric/event-listner.d.ts +0 -141
  38. package/dist/utils/highlightAndClick.d.ts +0 -3
  39. package/dist/utils/hoverAndClick.d.ts +0 -4
package/package.json CHANGED
@@ -1,13 +1,15 @@
1
1
  {
2
2
  "name": "guideai-app",
3
- "version": "0.4.1",
3
+ "version": "0.4.2-1",
4
4
  "description": "AI-powered guide component for React applications",
5
5
  "main": "dist/GuideAI.js",
6
- "types": "dist/GuideAI.d.ts",
6
+ "types": "dist/index.d.ts",
7
7
  "scripts": {
8
8
  "build": "webpack && tsc --emitDeclarationOnly && javascript-obfuscator dist/GuideAI.js --config obfuscator.json --output dist/GuideAI.js",
9
9
  "prepare": "npm run build",
10
- "test": "echo \"Error: no test specified\" && exit 1"
10
+ "test": "jest",
11
+ "test:watch": "jest --watch",
12
+ "test:coverage": "jest --coverage"
11
13
  },
12
14
  "keywords": [
13
15
  "react",
@@ -20,6 +22,7 @@
20
22
  "dependencies": {
21
23
  "@google/generative-ai": "^0.2.1",
22
24
  "guideai-app": "^0.3.4",
25
+ "html2canvas": "^1.4.1",
23
26
  "openai": "^4.28.0"
24
27
  },
25
28
  "peerDependencies": {
@@ -27,10 +30,18 @@
27
30
  "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
28
31
  },
29
32
  "devDependencies": {
33
+ "@testing-library/jest-dom": "^6.9.1",
34
+ "@testing-library/react": "^16.3.0",
35
+ "@types/jest": "^30.0.0",
30
36
  "@types/react": "^18.2.0",
31
37
  "javascript-obfuscator": "^4.1.0",
38
+ "jest": "^30.2.0",
39
+ "jest-circus": "^30.2.0",
40
+ "jest-environment-jsdom": "^30.2.0",
41
+ "jest-localstorage-mock": "^2.4.26",
32
42
  "process": "^0.11.10",
33
43
  "stream-browserify": "^3.0.0",
44
+ "ts-jest": "^29.4.5",
34
45
  "ts-loader": "^9.5.2",
35
46
  "typescript": "^5.0.0",
36
47
  "util": "^0.12.5",
@@ -1,141 +0,0 @@
1
- interface EventData {
2
- type: 'click' | 'focus' | 'change' | 'submit' | 'route_change';
3
- element?: Element;
4
- tagName?: string;
5
- className?: string;
6
- id?: string;
7
- textContent?: string;
8
- value?: string;
9
- formData?: FormData;
10
- timestamp: number;
11
- url: string;
12
- previousUrl?: string;
13
- event?: Event;
14
- customerId?: string;
15
- customerType?: string;
16
- customerSegment?: string;
17
- conversationStartTime?: number;
18
- timeSinceConversationStart?: number;
19
- deviceType?: 'desktop' | 'mobile' | 'tablet';
20
- userAgent?: string;
21
- screenResolution?: string;
22
- currentPage?: string;
23
- userRole?: string;
24
- organizationId?: string;
25
- timezone?: string;
26
- locale?: string;
27
- }
28
- declare class EventTracker {
29
- private isTracking;
30
- private eventData;
31
- private batchSize;
32
- private batchTimeout;
33
- private batchTimer;
34
- private pendingEvents;
35
- private currentUrl;
36
- private organizationKey?;
37
- private lastEventTime;
38
- private eventThrottleInterval;
39
- private lastEventsByType;
40
- private duplicateEventBuffer;
41
- private maxDuplicateBuffer;
42
- private isInitialized;
43
- private conversationStartTime;
44
- private inactivityTimer;
45
- private inactivityTimeout;
46
- private lastActivityTime;
47
- private customerMetadata;
48
- constructor(options?: {
49
- customerId?: string;
50
- customerType?: string;
51
- organizationId?: string;
52
- organizationKey?: string;
53
- batchSize?: number;
54
- batchTimeout?: number;
55
- eventThrottleInterval?: number;
56
- });
57
- private init;
58
- private loadEventsFromStorage;
59
- private saveEventsToStorage;
60
- setCustomerMetadata(metadata: Partial<typeof this.customerMetadata>): void;
61
- getCustomerMetadata(): typeof this.customerMetadata;
62
- clearCustomerMetadata(): void;
63
- initialize(): void;
64
- private enrichEventData;
65
- private sanitizeEventData;
66
- setConversationStartTime(startTime: number): void;
67
- private getConversationTiming;
68
- private getDeviceType;
69
- startTracking(): void;
70
- stopTracking(): void;
71
- private trackClickEvents;
72
- private trackFocusEvents;
73
- private trackChangeEvents;
74
- private trackSubmitEvents;
75
- private trackRouteChanges;
76
- private handleClick;
77
- private handleFocus;
78
- private handleChange;
79
- private handleSubmit;
80
- private handlePopstate;
81
- private handleHashChange;
82
- private interceptHistoryAPI;
83
- private getPreviousUrl;
84
- private getSafeValue;
85
- private isFocusable;
86
- private isFormElement;
87
- private generateEventKey;
88
- private shouldThrottleEvent;
89
- private isDuplicateEvent;
90
- private isSignificantClickTarget;
91
- private isSignificantFocusTarget;
92
- private isSignificantRouteChange;
93
- private logEvent;
94
- private emitBatch;
95
- private sendEventBatch;
96
- getEventData(): EventData[];
97
- clearEventData(): void;
98
- getEventDataByType(type: EventData['type']): EventData[];
99
- getEventDataByElement(tagName: string): EventData[];
100
- getEventDataByUrl(url: string): EventData[];
101
- emitPendingEvents(): void;
102
- setBatchConfig(batchSize: number, batchTimeout: number): void;
103
- getPendingEventsCount(): number;
104
- getCustomerAnalytics(): {
105
- totalEvents: number;
106
- eventsByCustomer: Record<string, number>;
107
- eventsByType: Record<string, number>;
108
- eventsByPage: Record<string, number>;
109
- eventsByDevice: Record<string, number>;
110
- sessionDuration: number;
111
- lastActivity: number;
112
- };
113
- private getSessionStartTime;
114
- identifyCustomerFromContext(): void;
115
- setCustomerFromAuth(authData: {
116
- id?: string;
117
- role?: string;
118
- customerType?: 'individual' | 'business' | 'agent' | 'admin';
119
- customerSegment?: string;
120
- }): void;
121
- private setupPageUnloadTracking;
122
- private setupInactivityTracking;
123
- private cleanupPageTracking;
124
- }
125
- export default EventTracker;
126
- export type { EventData };
127
- export interface CustomerMetadata {
128
- customerId?: string;
129
- customerType?: 'individual' | 'business' | 'agent' | 'admin';
130
- customerSegment?: string;
131
- userRole?: string;
132
- }
133
- export interface CustomerAnalytics {
134
- totalEvents: number;
135
- eventsByCustomer: Record<string, number>;
136
- eventsByType: Record<string, number>;
137
- eventsByPage: Record<string, number>;
138
- eventsByDevice: Record<string, number>;
139
- sessionDuration: number;
140
- lastActivity: number;
141
- }
@@ -1,3 +0,0 @@
1
- export declare const createHoverEffect: (element: Element, rect: DOMRect) => Promise<void>;
2
- export declare const createHoverEffectWithTracking: (element: Element, initialRect: DOMRect, cursorElement: HTMLElement | null, duration?: number) => Promise<void>;
3
- export declare const highlightThenClick: (selector: string | string[], isHovering: boolean, setIsHovering: (hovering: boolean) => void, logMessage: (content: string, sender: "GUIDEAI" | "HUMAN") => void, hoverTime?: number) => Promise<boolean>;
@@ -1,4 +0,0 @@
1
- export declare const createHoverEffect: (element: Element, rect: DOMRect) => Promise<void>;
2
- export declare const createHoverEffectWithTracking: (element: Element, initialRect: DOMRect, cursorElement: HTMLElement | null) => Promise<void>;
3
- export declare const clickElement: (element: Element, rect: DOMRect) => Promise<void>;
4
- export declare const hoverThenClick: (selector: string | string[], isHighlighting: boolean, setIsHighlighting: (highlighting: boolean) => void, logMessage: (content: string, sender: "GUIDEAI" | "HUMAN") => void) => Promise<boolean>;