humanbehavior-js 0.4.6 → 0.4.8

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 (58) hide show
  1. package/dist/cjs/angular/index.cjs +52 -7
  2. package/dist/cjs/angular/index.cjs.map +1 -1
  3. package/dist/cjs/index.cjs +52 -7
  4. package/dist/cjs/index.cjs.map +1 -1
  5. package/dist/cjs/install-wizard.cjs +4 -2
  6. package/dist/cjs/install-wizard.cjs.map +1 -1
  7. package/dist/cjs/react/index.cjs +52 -7
  8. package/dist/cjs/react/index.cjs.map +1 -1
  9. package/dist/cjs/remix/index.cjs +52 -7
  10. package/dist/cjs/remix/index.cjs.map +1 -1
  11. package/dist/cjs/svelte/index.cjs +52 -7
  12. package/dist/cjs/svelte/index.cjs.map +1 -1
  13. package/dist/cjs/vue/index.cjs +52 -7
  14. package/dist/cjs/vue/index.cjs.map +1 -1
  15. package/dist/cjs/wizard/index.cjs +3208 -0
  16. package/dist/cjs/wizard/index.cjs.map +1 -0
  17. package/dist/cli/ai-auto-install.js +2024 -0
  18. package/dist/cli/ai-auto-install.js.map +1 -0
  19. package/dist/cli/auto-install.js +4 -2
  20. package/dist/cli/auto-install.js.map +1 -1
  21. package/dist/esm/angular/index.js +52 -7
  22. package/dist/esm/angular/index.js.map +1 -1
  23. package/dist/esm/index.js +52 -7
  24. package/dist/esm/index.js.map +1 -1
  25. package/dist/esm/install-wizard.js +4 -2
  26. package/dist/esm/install-wizard.js.map +1 -1
  27. package/dist/esm/react/index.js +52 -7
  28. package/dist/esm/react/index.js.map +1 -1
  29. package/dist/esm/remix/index.js +52 -7
  30. package/dist/esm/remix/index.js.map +1 -1
  31. package/dist/esm/svelte/index.js +52 -7
  32. package/dist/esm/svelte/index.js.map +1 -1
  33. package/dist/esm/vue/index.js +52 -7
  34. package/dist/esm/vue/index.js.map +1 -1
  35. package/dist/esm/wizard/index.js +3178 -0
  36. package/dist/esm/wizard/index.js.map +1 -0
  37. package/dist/index.min.js +1 -1
  38. package/dist/index.min.js.map +1 -1
  39. package/dist/types/angular/index.d.ts +7 -0
  40. package/dist/types/index.d.ts +7 -0
  41. package/dist/types/install-wizard.d.ts +8 -8
  42. package/dist/types/react/index.d.ts +7 -0
  43. package/dist/types/remix/index.d.ts +7 -0
  44. package/dist/types/svelte/index.d.ts +7 -0
  45. package/dist/types/wizard/index.d.ts +489 -0
  46. package/package.json +14 -8
  47. package/rollup.config.js +65 -3
  48. package/src/react/AutoInstallWizard.tsx +1 -1
  49. package/src/tracker.ts +59 -8
  50. package/src/wizard/README.md +114 -0
  51. package/src/wizard/ai/ai-install-wizard.ts +894 -0
  52. package/src/wizard/ai/manual-framework-wizard.ts +236 -0
  53. package/src/wizard/cli/ai-auto-install.ts +369 -0
  54. package/src/{cli → wizard/cli}/auto-install.ts +1 -1
  55. package/src/{install-wizard.ts → wizard/core/install-wizard.ts} +12 -10
  56. package/src/wizard/index.ts +23 -0
  57. package/src/wizard/services/centralized-ai-service.ts +668 -0
  58. package/src/wizard/services/remote-ai-service.ts +224 -0
@@ -13238,6 +13238,8 @@ class HumanBehaviorTracker {
13238
13238
  this._connectionBlocked = false;
13239
13239
  this.recordInstance = null;
13240
13240
  this.sessionStartTime = Date.now();
13241
+ this.rrwebRecord = null;
13242
+ this.fullSnapshotTimeout = null;
13241
13243
  if (!apiKey) {
13242
13244
  throw new Error('Human Behavior API Key is required');
13243
13245
  }
@@ -13345,6 +13347,8 @@ class HumanBehaviorTracker {
13345
13347
  this.originalPushState.apply(history, args);
13346
13348
  // Track navigation event
13347
13349
  this.trackNavigationEvent('pushState', this.previousUrl, this.currentUrl);
13350
+ // Take FullSnapshot on navigation
13351
+ this.takeFullSnapshot();
13348
13352
  };
13349
13353
  // Override replaceState to capture programmatic navigation
13350
13354
  history.replaceState = (...args) => {
@@ -13354,12 +13358,16 @@ class HumanBehaviorTracker {
13354
13358
  this.originalReplaceState.apply(history, args);
13355
13359
  // Track navigation event
13356
13360
  this.trackNavigationEvent('replaceState', this.previousUrl, this.currentUrl);
13361
+ // Take FullSnapshot on navigation
13362
+ this.takeFullSnapshot();
13357
13363
  };
13358
13364
  // Listen for popstate events (back/forward navigation)
13359
13365
  const popstateListener = () => {
13360
13366
  this.previousUrl = this.currentUrl;
13361
13367
  this.currentUrl = window.location.href;
13362
13368
  this.trackNavigationEvent('popstate', this.previousUrl, this.currentUrl);
13369
+ // Take FullSnapshot on navigation
13370
+ this.takeFullSnapshot();
13363
13371
  };
13364
13372
  window.addEventListener('popstate', popstateListener);
13365
13373
  this.navigationListeners.push(() => {
@@ -13787,13 +13795,14 @@ class HumanBehaviorTracker {
13787
13795
  this.flushInterval = window.setInterval(() => {
13788
13796
  this.flush();
13789
13797
  }, this.FLUSH_INTERVAL_MS);
13790
- // Enable console tracking
13791
- this.enableConsoleTracking();
13798
+ // Disable console tracking to reduce event pollution
13799
+ // this.enableConsoleTracking();
13792
13800
  // ✅ DOM READY DETECTION
13793
13801
  // Wait for DOM to be ready before starting recording
13794
13802
  const startRecording = () => {
13795
13803
  logDebug('🎯 DOM ready, starting session recording');
13796
13804
  // ✅ HUMANBEHAVIOR RRWEB CONFIGURATION
13805
+ this.rrwebRecord = record;
13797
13806
  const recordInstance = record({
13798
13807
  emit: (event) => {
13799
13808
  // ✅ DIRECT EVENT HANDLING - Let rrweb handle events natively
@@ -13815,12 +13824,11 @@ class HumanBehaviorTracker {
13815
13824
  recordCrossOriginIframes: false, // HumanBehavior default
13816
13825
  // ✅ CANVAS RECORDING - Disabled to prevent large data URIs
13817
13826
  recordCanvas: false, // Disabled to prevent large data URIs
13818
- // ✅ FULLSNAPSHOT GENERATION - Use reasonable intervals
13819
- // checkoutEveryNms: 300000, // Take FullSnapshot every 5 minutes
13820
- // checkoutEveryNth: 1000, // Take FullSnapshot every 1000 events
13827
+ // ✅ FULLSNAPSHOT GENERATION - No periodic snapshots to avoid animation issues
13828
+ // Rely on initial FullSnapshot + navigation-triggered ones only
13821
13829
  });
13822
- // Store the record instance for cleanup
13823
- this.recordInstance = recordInstance;
13830
+ // Store the record instance for cleanup
13831
+ this.recordInstance = recordInstance || null;
13824
13832
  };
13825
13833
  // ✅ DOM READY DETECTION
13826
13834
  logDebug(`🎯 DOM ready state: ${document.readyState}`);
@@ -13839,6 +13847,37 @@ class HumanBehaviorTracker {
13839
13847
  }
13840
13848
  });
13841
13849
  }
13850
+ /**
13851
+ * Manually trigger a FullSnapshot (for navigation events)
13852
+ * Delays snapshot to avoid capturing mid-animation states
13853
+ */
13854
+ takeFullSnapshot() {
13855
+ // Clear any existing timeout to avoid multiple snapshots
13856
+ if (this.fullSnapshotTimeout) {
13857
+ clearTimeout(this.fullSnapshotTimeout);
13858
+ }
13859
+ // Delay FullSnapshot to let animations settle
13860
+ this.fullSnapshotTimeout = window.setTimeout(() => {
13861
+ try {
13862
+ // Wait for any pending animations/transitions to complete
13863
+ requestAnimationFrame(() => {
13864
+ requestAnimationFrame(() => {
13865
+ // Access takeFullSnapshot from the rrweb record function
13866
+ if (this.rrwebRecord && typeof this.rrwebRecord.takeFullSnapshot === 'function') {
13867
+ this.rrwebRecord.takeFullSnapshot();
13868
+ logDebug('✅ FullSnapshot taken for navigation (delayed for animations)');
13869
+ }
13870
+ else {
13871
+ logWarn('⚠️ takeFullSnapshot not available on record function');
13872
+ }
13873
+ });
13874
+ });
13875
+ }
13876
+ catch (error) {
13877
+ logError('❌ Failed to take FullSnapshot for navigation:', error);
13878
+ }
13879
+ }, 1000); // Wait 1 second for animations to settle
13880
+ }
13842
13881
  stop() {
13843
13882
  return __awaiter(this, void 0, void 0, function* () {
13844
13883
  yield this.ensureInitialized();
@@ -13853,6 +13892,12 @@ class HumanBehaviorTracker {
13853
13892
  this.recordInstance();
13854
13893
  this.recordInstance = null;
13855
13894
  }
13895
+ // Clear any pending FullSnapshot timeouts
13896
+ if (this.fullSnapshotTimeout) {
13897
+ clearTimeout(this.fullSnapshotTimeout);
13898
+ this.fullSnapshotTimeout = null;
13899
+ }
13900
+ this.rrwebRecord = null;
13856
13901
  // Disable console tracking
13857
13902
  this.disableConsoleTracking();
13858
13903
  // Cleanup navigation tracking