@bytexbyte/nxtlinq-ai-agent-sdk 1.5.8 → 1.6.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ChatBot.d.ts","sourceRoot":"","sources":["../../src/components/ChatBot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA6C1C,CAAC;AAEF,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"ChatBot.d.ts","sourceRoot":"","sources":["../../src/components/ChatBot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAoD1C,CAAC;AAEF,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC"}
@@ -7,15 +7,17 @@ export const ChatBot = (props) => {
7
7
  const [isBerifyMeModalOpen, setIsBerifyMeModalOpen] = React.useState(false);
8
8
  // Handle wallet verification
9
9
  const handleVerifyWallet = async () => {
10
- // Built-in BerifyMe support is always available
11
10
  // Check if token already exists in URL
12
11
  const urlParams = new URLSearchParams(window.location.search);
13
12
  const token = urlParams.get('token');
14
13
  if (token) {
15
- console.log('Token found in URL, returning it');
16
14
  return Promise.resolve({ token });
17
15
  }
18
- // Open built-in BerifyMe modal
16
+ // Use external onVerifyWallet if provided and in external mode
17
+ if (props.berifymeMode === 'external' && props.onVerifyWallet) {
18
+ return props.onVerifyWallet();
19
+ }
20
+ // Built-in mode: Open built-in BerifyMe modal
19
21
  setIsBerifyMeModalOpen(true);
20
22
  return;
21
23
  };
@@ -29,5 +31,5 @@ export const ChatBot = (props) => {
29
31
  ...props,
30
32
  onVerifyWallet: handleVerifyWallet
31
33
  };
32
- return (_jsxs(_Fragment, { children: [_jsx(ChatBotProvider, { ...enhancedProps, children: _jsx(ChatBotUI, {}) }), _jsx(BerifyMeModal, { isOpen: isBerifyMeModalOpen, onClose: () => setIsBerifyMeModalOpen(false), onVerificationComplete: handleBerifyMeComplete })] }));
34
+ return (_jsxs(_Fragment, { children: [_jsx(ChatBotProvider, { ...enhancedProps, children: _jsx(ChatBotUI, {}) }), props.berifymeMode !== 'external' && (_jsx(BerifyMeModal, { isOpen: isBerifyMeModalOpen, onClose: () => setIsBerifyMeModalOpen(false), onVerificationComplete: handleBerifyMeComplete, mode: props.berifymeMode || 'built-in' }))] }));
33
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ChatBotContext.d.ts","sourceRoot":"","sources":["../../../src/components/context/ChatBotContext.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,EACL,kBAAkB,EAClB,YAAY,EAGb,MAAM,uBAAuB,CAAC;AAI/B,eAAO,MAAM,UAAU,0BAMtB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAs4DlD,CAAC"}
1
+ {"version":3,"file":"ChatBotContext.d.ts","sourceRoot":"","sources":["../../../src/components/context/ChatBotContext.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,EACL,kBAAkB,EAClB,YAAY,EAGb,MAAM,uBAAuB,CAAC;AAI/B,eAAO,MAAM,UAAU,0BAMtB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAu1DlD,CAAC"}
@@ -38,7 +38,6 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
38
38
  apiKey,
39
39
  apiSecret
40
40
  });
41
- // State
42
41
  // Session-level data (always use sessionStorage when useSessionStorageMode is true)
43
42
  const [messages, setMessages] = useSessionStorageMode
44
43
  ? useSessionStorage('chatbot-messages', [])
@@ -46,7 +45,6 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
46
45
  const [isOpen, setIsOpen] = useSessionStorageMode
47
46
  ? useSessionStorage('chatbot-is-open', false)
48
47
  : React.useState(false);
49
- // Non-stored state
50
48
  const [inputValue, setInputValue] = React.useState('');
51
49
  const [isLoading, setIsLoading] = React.useState(false);
52
50
  const [hitAddress, setHitAddress] = React.useState(null);
@@ -61,7 +59,6 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
61
59
  const [walletInfo, setWalletInfo] = React.useState(null);
62
60
  const [isWalletLoading, setIsWalletLoading] = React.useState(false);
63
61
  const [isAutoConnecting, setIsAutoConnecting] = React.useState(false);
64
- const [justAutoConnected, setJustAutoConnected] = React.useState(false);
65
62
  // Persistent data (always use localStorage)
66
63
  const [nxtlinqAITServiceAccessToken, setNxtlinqAITServiceAccessToken] = useLocalStorage('nxtlinqAITServiceAccessToken', '');
67
64
  const [pseudoId, setPseudoId] = useLocalStorage('pseudoId', uuidv4());
@@ -77,6 +74,16 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
77
74
  // Refs for input value and recording state
78
75
  const isRecordingRef = React.useRef(false);
79
76
  const textInputRef = React.useRef(null);
77
+ // Simple token cleanup function
78
+ const clearExpiredToken = React.useCallback(() => {
79
+ try {
80
+ localStorage.removeItem('nxtlinqAITServiceAccessToken');
81
+ setNxtlinqAITServiceAccessToken('');
82
+ }
83
+ catch (error) {
84
+ console.error('Error clearing expired token:', error);
85
+ }
86
+ }, []);
80
87
  // Update refs when state changes
81
88
  React.useEffect(() => {
82
89
  hitAddressRef.current = hitAddress;
@@ -191,14 +198,12 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
191
198
  const walletResponse = await nxtlinqApi.wallet.getWallet({ address: hitAddress }, nxtlinqAITServiceAccessToken);
192
199
  if (!('error' in walletResponse)) {
193
200
  setWalletInfo(walletResponse);
194
- console.log('Wallet info updated:', walletResponse);
195
201
  }
196
202
  else {
197
- console.log('Failed to get wallet info:', walletResponse.error);
198
203
  // Check if the error is due to invalid/expired token
199
204
  if (walletResponse.error.includes('Invalid or expired token')) {
200
205
  console.log('Token appears to be invalid during wallet info fetch, clearing it');
201
- setNxtlinqAITServiceAccessToken('');
206
+ clearExpiredToken();
202
207
  }
203
208
  }
204
209
  }
@@ -206,23 +211,28 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
206
211
  console.error('Failed to fetch wallet info:', error);
207
212
  }
208
213
  }
209
- else {
210
- console.log('No access token available for wallet info fetch');
214
+ // Only try to fetch AIT if we have a token
215
+ if (nxtlinqAITServiceAccessToken) {
216
+ const response = await nxtlinqApi.ait.getAITByServiceIdAndController({
217
+ serviceId,
218
+ controller: hitAddress
219
+ }, nxtlinqAITServiceAccessToken);
220
+ if ('error' in response) {
221
+ console.error('Failed to fetch AIT:', response.error);
222
+ setAit(null);
223
+ setPermissions([]);
224
+ return;
225
+ }
226
+ setAit(response);
227
+ if (!isPermissionFormOpen || forceUpdatePermissions) {
228
+ const newPermissions = response.metadata?.permissions || [];
229
+ setPermissions(newPermissions);
230
+ }
211
231
  }
212
- const response = await nxtlinqApi.ait.getAITByServiceIdAndController({
213
- serviceId,
214
- controller: hitAddress
215
- }, nxtlinqAITServiceAccessToken || '');
216
- if ('error' in response) {
217
- console.error('Failed to fetch AIT:', response.error);
232
+ else {
233
+ // No token available, clear AIT data
218
234
  setAit(null);
219
235
  setPermissions([]);
220
- return;
221
- }
222
- setAit(response);
223
- if (!isPermissionFormOpen || forceUpdatePermissions) {
224
- const newPermissions = response.metadata?.permissions || [];
225
- setPermissions(newPermissions);
226
236
  }
227
237
  }
228
238
  catch (error) {
@@ -287,7 +297,7 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
287
297
  // Check if token is expired or address mismatch
288
298
  if (exp < now || address !== userAddress) {
289
299
  console.log('Token is expired or address mismatch, clearing token');
290
- setNxtlinqAITServiceAccessToken('');
300
+ clearExpiredToken();
291
301
  // Don't call refreshAIT with invalid token
292
302
  }
293
303
  else {
@@ -298,7 +308,7 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
298
308
  }
299
309
  catch (error) {
300
310
  console.error('Error parsing token during wallet connection:', error);
301
- setNxtlinqAITServiceAccessToken('');
311
+ clearExpiredToken();
302
312
  }
303
313
  }
304
314
  // If requireIDV is false and we have customUsername, check if wallet exists in AIT Service
@@ -319,12 +329,6 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
319
329
  if ('error' in verifyResponse) {
320
330
  console.error('Failed to create wallet with custom method:', verifyResponse.error);
321
331
  }
322
- else {
323
- console.log('Successfully created wallet with custom method');
324
- }
325
- }
326
- else {
327
- console.log('Wallet already exists in AIT Service');
328
332
  }
329
333
  }
330
334
  catch (error) {
@@ -355,15 +359,13 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
355
359
  if (autoShowSignInMessage) {
356
360
  throw error;
357
361
  }
358
- return false; // Return false on failure
362
+ return false;
359
363
  }
360
364
  }, [nxtlinqAITServiceAccessToken, refreshAIT, isNeedSignInWithWallet, requireWalletIDVVerification, customUsername, nxtlinqApi]);
361
- // Sign in wallet
362
365
  const signInWallet = async (autoShowSuccessMessage = true) => {
363
366
  // Use refs to get latest state values for consistency with hasPermission
364
367
  const currentHitAddress = hitAddressRef.current;
365
368
  const currentSigner = signerRef.current;
366
- console.log('signInWallet called: currentHitAddress =', currentHitAddress, 'currentSigner =', !!currentSigner);
367
369
  // If refs don't have the values, try using current state values
368
370
  const addressToUse = currentHitAddress || hitAddress;
369
371
  const signerToUse = currentSigner || signer;
@@ -410,7 +412,6 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
410
412
  setNxtlinqAITServiceAccessToken(accessToken);
411
413
  // Wait for state to update before refreshing AIT
412
414
  await new Promise(resolve => setTimeout(resolve, 100));
413
- // Wait for AIT to be loaded before showing success message
414
415
  await refreshAIT();
415
416
  if (autoShowSuccessMessage) {
416
417
  showSuccess('Successfully signed in with your HIT wallet. You can now use the AI agent.');
@@ -444,16 +445,9 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
444
445
  setIsAutoConnecting(true); // Mark as auto-connecting
445
446
  await connectWallet(false); // Don't show sign-in message yet
446
447
  setIsAutoConnecting(false); // Clear auto-connecting state
447
- setJustAutoConnected(true); // Mark that we just auto-connected
448
- console.log('Set justAutoConnected to true after auto-connect');
449
448
  // Show brief success message for auto-connect
450
449
  showSuccess('Auto wallet connection successful');
451
- // Clear the flag after a longer delay to allow for AIT loading
452
- setTimeout(() => {
453
- setJustAutoConnected(false);
454
- }, 15000); // 15 seconds to allow for full AIT loading process
455
450
  onAutoConnect?.(); // Call callback if provided
456
- // Wait a bit for state to update
457
451
  await new Promise(resolve => setTimeout(resolve, 2000));
458
452
  // After auto connect, if not signed in, then auto sign-in
459
453
  const tokenAfterConnect = nxtlinqAITServiceAccessTokenRef.current;
@@ -487,7 +481,6 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
487
481
  }
488
482
  if (!currentToken) {
489
483
  if (autoRetry) {
490
- console.log('Auto sign-in triggered: currentHitAddress =', currentHitAddress, 'currentToken =', currentToken);
491
484
  setIsLoading(false); // Stop thinking before showing message
492
485
  setMessages(prev => [...prev, {
493
486
  id: Date.now().toString(),
@@ -498,10 +491,8 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
498
491
  }]);
499
492
  try {
500
493
  setIsAutoConnecting(true); // Mark as auto-signing
501
- console.log('Starting auto sign-in...');
502
494
  await signInWallet(false); // Don't show success message yet
503
495
  onAutoSignIn?.(); // Call callback if provided
504
- console.log('Auto sign-in completed');
505
496
  setIsAutoConnecting(false); // Clear auto-signing state
506
497
  // Show brief success message for auto-sign-in
507
498
  showSuccess('Auto sign-in successful');
@@ -516,7 +507,6 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
516
507
  }
517
508
  // Only continue if AIT is actually loaded
518
509
  if (aitRef.current) {
519
- console.log('AIT loaded successfully after sign-in, continuing permission check');
520
510
  // Wait a bit more to ensure permissions are also loaded
521
511
  await new Promise(resolve => setTimeout(resolve, 2000));
522
512
  // If sign-in successful, continue with permission check
@@ -524,7 +514,6 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
524
514
  return result;
525
515
  }
526
516
  else {
527
- console.log('AIT failed to load after sign-in, returning false');
528
517
  return false;
529
518
  }
530
519
  }
@@ -570,7 +559,6 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
570
559
  }
571
560
  // Only continue if AIT is actually loaded
572
561
  if (aitRef.current) {
573
- console.log('AIT loaded successfully after session expiry, continuing permission check');
574
562
  // Wait a bit more to ensure permissions are also loaded
575
563
  await new Promise(resolve => setTimeout(resolve, 2000));
576
564
  // If sign-in successful, continue with permission check
@@ -578,7 +566,6 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
578
566
  return result;
579
567
  }
580
568
  else {
581
- console.log('AIT failed to load after session expiry, returning false');
582
569
  return false;
583
570
  }
584
571
  }
@@ -621,7 +608,6 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
621
608
  }
622
609
  // Only continue if AIT is actually loaded
623
610
  if (aitRef.current) {
624
- console.log('AIT loaded successfully after address mismatch, continuing permission check');
625
611
  // Wait a bit more to ensure permissions are also loaded
626
612
  await new Promise(resolve => setTimeout(resolve, 2000));
627
613
  // If sign-in successful, continue with permission check
@@ -629,7 +615,6 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
629
615
  return result;
630
616
  }
631
617
  else {
632
- console.log('AIT failed to load after address mismatch, returning false');
633
618
  return false;
634
619
  }
635
620
  }
@@ -673,7 +658,6 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
673
658
  }
674
659
  // Only continue if AIT is actually loaded
675
660
  if (aitRef.current) {
676
- console.log('AIT loaded successfully after token error, continuing permission check');
677
661
  // Wait a bit more to ensure permissions are also loaded
678
662
  await new Promise(resolve => setTimeout(resolve, 2000));
679
663
  // If sign-in successful, continue with permission check
@@ -681,7 +665,6 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
681
665
  return result;
682
666
  }
683
667
  else {
684
- console.log('AIT failed to load after token error, returning false');
685
668
  return false;
686
669
  }
687
670
  }
@@ -891,16 +874,13 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
891
874
  const errorResponse = response;
892
875
  if (errorResponse.requiresWalletConnection) {
893
876
  // Case where wallet connection is required - trigger auto-connect logic
894
- console.log('API requires wallet connection, triggering auto-connect...');
895
877
  // Try to auto-connect wallet first
896
878
  const autoConnectResult = await connectWallet(false); // Don't show sign-in message yet
897
879
  if (autoConnectResult) {
898
880
  // If auto-connect successful, try to sign in and then retry
899
- console.log('Auto-connect successful, trying to sign in...');
900
881
  try {
901
882
  // Try to sign in wallet
902
883
  await signInWallet(false); // Don't show success message yet
903
- console.log('Auto sign-in successful, retrying message...');
904
884
  if (isSemiAutomaticMode) {
905
885
  setIsLoading(false);
906
886
  setMessages(prev => [...prev, {
@@ -920,7 +900,6 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
920
900
  }
921
901
  }
922
902
  catch (signInError) {
923
- console.log('Auto sign-in failed, showing error message');
924
903
  setIsLoading(false);
925
904
  setMessages(prev => [...prev, {
926
905
  id: Date.now().toString(),
@@ -955,7 +934,6 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
955
934
  }
956
935
  else if (errorResponse.requiresPermissionUpdate) {
957
936
  // Case where permission update is required - show manual enable option
958
- console.log('API requires permission update, showing manual enable option...');
959
937
  setIsLoading(false);
960
938
  setMessages(prev => [...prev, {
961
939
  id: Date.now().toString(),
@@ -1013,14 +991,12 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
1013
991
  else {
1014
992
  // Only retry for auto-connect/auto-sign-in scenarios
1015
993
  if (wasAutoConnected && retryCount < 1) {
1016
- console.log('Auto-connected, retrying message...');
1017
994
  // Clear loading state and retry immediately
1018
995
  setIsLoading(false);
1019
996
  // Check if wallet is already signed in
1020
997
  const currentToken = nxtlinqAITServiceAccessTokenRef.current;
1021
998
  if (!currentToken) {
1022
999
  // If not signed in, directly retry the message without waiting for AIT
1023
- console.log('Wallet connected but not signed in, retrying message directly');
1024
1000
  setTimeout(() => {
1025
1001
  sendMessage(content, retryCount + 1, isPresetMessage);
1026
1002
  }, 2000);
@@ -1041,20 +1017,13 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
1041
1017
  }
1042
1018
  // Only retry if AIT is actually loaded
1043
1019
  if (aitRef.current) {
1044
- console.log('AIT loaded successfully, retrying message');
1045
1020
  // Wait a bit more to ensure permissions are also loaded
1046
1021
  await new Promise(resolve => setTimeout(resolve, 3000));
1047
1022
  sendMessage(content, retryCount + 1, isPresetMessage);
1048
1023
  }
1049
- else {
1050
- console.log('AIT failed to load, not retrying');
1051
- }
1052
1024
  }, 2000);
1053
1025
  }
1054
1026
  }
1055
- else {
1056
- console.log('Permission denied, not retrying. wasAutoConnected:', wasAutoConnected, 'retryCount:', retryCount);
1057
- }
1058
1027
  return;
1059
1028
  }
1060
1029
  }
@@ -1307,7 +1276,6 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
1307
1276
  isFromAIAgent: isFromAIAgent,
1308
1277
  parentAITId: isFromAIAgent ? aitRef.current?.aitId : undefined,
1309
1278
  };
1310
- console.log('createAIT params:', createAITParams);
1311
1279
  const createAITResponse = await nxtlinqApi.ait.createAIT(createAITParams, nxtlinqAITServiceAccessToken || '');
1312
1280
  if ('error' in createAITResponse) {
1313
1281
  throw new Error(`Failed to create AIT: ${createAITResponse.error}`);
@@ -1327,15 +1295,12 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
1327
1295
  if (isAITEnabling)
1328
1296
  return false; // Prevent duplicate
1329
1297
  setIsAITEnabling(true);
1330
- console.log('enableAIT called with toolName:', toolName, 'existing AIT:', !!aitRef.current);
1331
1298
  let currentSigner = signer;
1332
1299
  let currentHitAddress = hitAddress;
1333
1300
  // If no wallet connected, try to auto-connect first
1334
1301
  if (!currentSigner || !currentHitAddress) {
1335
- console.log('No wallet connected, attempting auto-connect...');
1336
1302
  const autoConnectResult = await connectWallet(false); // Don't show sign-in message yet
1337
1303
  if (autoConnectResult) {
1338
- console.log('Auto-connect successful, waiting for state update...');
1339
1304
  // Wait for state to update - increase wait time
1340
1305
  await new Promise(resolve => setTimeout(resolve, 1500));
1341
1306
  // Get the latest state values after connection
@@ -1343,25 +1308,20 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
1343
1308
  currentHitAddress = hitAddressRef.current || hitAddress;
1344
1309
  // Double check that we have the required state
1345
1310
  if (!currentSigner || !currentHitAddress) {
1346
- console.log('State not updated yet, waiting more...');
1347
1311
  await new Promise(resolve => setTimeout(resolve, 1500));
1348
1312
  currentSigner = signerRef.current || signer;
1349
1313
  currentHitAddress = hitAddressRef.current || hitAddress;
1350
1314
  }
1351
- console.log('Trying to sign in...');
1352
1315
  try {
1353
1316
  await signInWallet(false); // Don't show success message yet
1354
- console.log('Auto sign-in successful, continuing with AIT enable...');
1355
1317
  }
1356
1318
  catch (signInError) {
1357
- console.log('Auto sign-in failed:', signInError);
1358
1319
  showError('Wallet connected but sign-in failed. Please try signing in manually.');
1359
1320
  setIsAITEnabling(false);
1360
1321
  return false;
1361
1322
  }
1362
1323
  }
1363
1324
  else {
1364
- console.log('Auto-connect failed');
1365
1325
  showError('Please connect your wallet first');
1366
1326
  setIsAITEnabling(false);
1367
1327
  return false;
@@ -1378,19 +1338,16 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
1378
1338
  setIsAITEnabling(false);
1379
1339
  return false;
1380
1340
  }
1381
- console.log('Proceeding with AIT creation - Signer:', !!currentSigner, 'Address:', currentHitAddress);
1382
1341
  // If we don't have AIT loaded but we have a token, try to refresh it first
1383
1342
  if (!aitRef.current && nxtlinqAITServiceAccessToken) {
1384
- console.log('No AIT loaded but have token, attempting to refresh AIT...');
1385
1343
  try {
1386
1344
  await refreshAIT();
1387
1345
  // Wait a bit for AIT to be loaded
1388
1346
  await new Promise(resolve => setTimeout(resolve, 1000));
1389
- console.log('AIT refresh completed, current AIT:', !!aitRef.current);
1390
1347
  }
1391
1348
  catch (error) {
1392
- console.log('Failed to refresh AIT:', error);
1393
1349
  // Continue anyway, we'll create a new AIT if needed
1350
+ console.error('Failed to refresh AIT:', error);
1394
1351
  }
1395
1352
  }
1396
1353
  try {
@@ -1409,7 +1366,6 @@ idvBannerDismissSeconds = 86400 // 24 hours in seconds
1409
1366
  // Generate and register AIT with new permissions
1410
1367
  // For auto-enable, we should create a regular AIT (not AI Agent AIT) if user doesn't have existing AIT
1411
1368
  const shouldCreateAsAIAgent = !!aitRef.current; // Only create as AI Agent if user already has an AIT
1412
- console.log('Creating AIT - isFromAIAgent:', shouldCreateAsAIAgent, 'existing AIT:', !!aitRef.current);
1413
1369
  await generateAndRegisterAITWithSigner(newPermissions, shouldCreateAsAIAgent, currentSigner, currentHitAddress);
1414
1370
  showSuccess('AIT permission enabled successfully! You can now use the AI agent.');
1415
1371
  await refreshAIT(true);
@@ -59,6 +59,7 @@ export interface ChatBotProps {
59
59
  customUserInfo?: Record<string, any>;
60
60
  customUsername?: string;
61
61
  idvBannerDismissSeconds?: number;
62
+ berifymeMode?: 'built-in' | 'external';
62
63
  }
63
64
  export interface ChatBotContextType {
64
65
  messages: Message[];
@@ -1 +1 @@
1
- {"version":3,"file":"ChatBotTypes.d.ts","sourceRoot":"","sources":["../../../src/components/types/ChatBotTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChatBotTypes.d.ts","sourceRoot":"","sources":["../../../src/components/types/ChatBotTypes.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ interface BerifyMeModalProps {
3
3
  isOpen: boolean;
4
4
  onClose: () => void;
5
5
  onVerificationComplete?: (token?: string) => void;
6
+ mode?: 'built-in' | 'external';
6
7
  }
7
8
  export declare const BerifyMeModal: React.FC<BerifyMeModalProps>;
8
9
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"BerifyMeModal.d.ts","sourceRoot":"","sources":["../../../src/components/ui/BerifyMeModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,UAAU,kBAAkB;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,sBAAsB,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD;AASD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAoHtD,CAAC;AAGF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,WAAW,CAAC,EAAE;YACZ,KAAK,EAAE,GAAG,CAAC;YACX,WAAW,EAAE;gBACX,OAAO,EAAE,GAAG,CAAC;gBACb,UAAU,EAAE,GAAG,CAAC;aACjB,CAAC;SACH,CAAC;KACH;CACF"}
1
+ {"version":3,"file":"BerifyMeModal.d.ts","sourceRoot":"","sources":["../../../src/components/ui/BerifyMeModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,UAAU,kBAAkB;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,sBAAsB,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;CAChC;AASD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA2HtD,CAAC;AAGF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,WAAW,CAAC,EAAE;YACZ,KAAK,EAAE,GAAG,CAAC;YACX,WAAW,EAAE;gBACX,OAAO,EAAE,GAAG,CAAC;gBACb,UAAU,EAAE,GAAG,CAAC;aACjB,CAAC;SACH,CAAC;KACH;CACF"}
@@ -6,40 +6,47 @@ const BUILT_IN_BERIFYME_CONFIG = {
6
6
  secretKey: 'ee96158a-9ae2-42ad-8c30-f7b23edbf258',
7
7
  environment: 'staging'
8
8
  };
9
- export const BerifyMeModal = ({ isOpen, onClose, onVerificationComplete }) => {
9
+ export const BerifyMeModal = ({ isOpen, onClose, onVerificationComplete, mode = 'built-in' }) => {
10
10
  const modalRef = useRef(null);
11
11
  const berifyMeModalRef = useRef(null);
12
12
  useEffect(() => {
13
13
  if (!isOpen)
14
14
  return;
15
- // Dynamically load BerifyMe SDK
16
- const loadBerifyMeSDK = async () => {
17
- try {
18
- // Check if already loaded
19
- if (window.BerifyMeSDK) {
20
- renderBerifyMeModal();
21
- return;
22
- }
23
- // Dynamically load SDK
24
- const script = document.createElement('script');
25
- script.src = 'https://docs.nxtlinq.ai/sdk/umd/berifyme-sdk.umd.js';
26
- script.onload = () => {
15
+ if (mode === 'external') {
16
+ // External mode: This should not be called as BerifyMeModal is not rendered in external mode
17
+ console.warn('⚠️ BerifyMeModal should not be rendered in external mode');
18
+ onClose();
19
+ }
20
+ else {
21
+ // Built-in mode: dynamically load BerifyMe SDK
22
+ const loadBerifyMeSDK = async () => {
23
+ try {
24
+ // Check if already loaded
27
25
  if (window.BerifyMeSDK) {
28
26
  renderBerifyMeModal();
27
+ return;
29
28
  }
30
- };
31
- script.onerror = () => {
32
- console.error('❌ Failed to load BerifyMe SDK');
29
+ // Dynamically load SDK
30
+ const script = document.createElement('script');
31
+ script.src = 'https://docs.nxtlinq.ai/sdk/umd/berifyme-sdk.umd.js';
32
+ script.onload = () => {
33
+ if (window.BerifyMeSDK) {
34
+ renderBerifyMeModal();
35
+ }
36
+ };
37
+ script.onerror = () => {
38
+ console.error('❌ Failed to load BerifyMe SDK');
39
+ onClose();
40
+ };
41
+ document.head.appendChild(script);
42
+ }
43
+ catch (error) {
44
+ console.error('❌ Error loading BerifyMe SDK:', error);
33
45
  onClose();
34
- };
35
- document.head.appendChild(script);
36
- }
37
- catch (error) {
38
- console.error('❌ Error loading BerifyMe SDK:', error);
39
- onClose();
40
- }
41
- };
42
- loadBerifyMeSDK();
46
+ }
47
+ };
48
+ loadBerifyMeSDK();
49
+ }
43
50
  return () => {
44
51
  // Cleanup function
45
52
  if (berifyMeModalRef.current) {
@@ -1 +1 @@
1
- {"version":3,"file":"ChatBotUI.d.ts","sourceRoot":"","sources":["../../../src/components/ui/ChatBotUI.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAqG/B,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAke7B,CAAC"}
1
+ {"version":3,"file":"ChatBotUI.d.ts","sourceRoot":"","sources":["../../../src/components/ui/ChatBotUI.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAqG/B,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EA2c7B,CAAC"}
@@ -89,16 +89,13 @@ export const ChatBotUI = () => {
89
89
  const isWalletVerifiedWithBerifyme = walletInfo?.id && walletInfo?.method === 'berifyme';
90
90
  // Check if IDV suggestion should be shown
91
91
  React.useEffect(() => {
92
- // Add delay to prevent flashing when wallet info is still loading
93
92
  // Only show suggestion when verification is not required and wallet is not verified with berifyme
94
93
  const shouldShowBanner = hitAddress &&
95
94
  !props.requireWalletIDVVerification &&
96
95
  !hasBerifymeToken &&
97
96
  !isWalletVerifiedWithBerifyme;
98
97
  if (shouldShowBanner) {
99
- // Wait 1 second to allow wallet info to fully load
100
98
  const timer = setTimeout(() => {
101
- // Re-check conditions after delay
102
99
  const shouldShowBannerAfterDelay = hitAddress &&
103
100
  !props.requireWalletIDVVerification &&
104
101
  !hasBerifymeToken &&
@@ -110,10 +107,8 @@ export const ChatBotUI = () => {
110
107
  const now = Date.now();
111
108
  const timeLeft = dismissTime - now;
112
109
  if (timeLeft > 0) {
113
- // Still within 24 hours, don't show
114
110
  setShowIDVSuggestion(false);
115
111
  setDismissUntil(dismissTime);
116
- // Start countdown timer
117
112
  const countdownTimer = setInterval(() => {
118
113
  const remaining = dismissTime - Date.now();
119
114
  if (remaining > 0) {
@@ -122,7 +117,6 @@ export const ChatBotUI = () => {
122
117
  setTimeRemaining(`${hours}h ${minutes}m`);
123
118
  }
124
119
  else {
125
- // 24 hours passed, show again
126
120
  setShowIDVSuggestion(true);
127
121
  setDismissUntil(null);
128
122
  setTimeRemaining('');
@@ -133,7 +127,6 @@ export const ChatBotUI = () => {
133
127
  return () => clearInterval(countdownTimer);
134
128
  }
135
129
  else {
136
- // 24 hours passed, show again
137
130
  localStorage.removeItem('idv-suggestion-dismissed');
138
131
  setShowIDVSuggestion(true);
139
132
  setDismissUntil(null);
@@ -141,14 +134,12 @@ export const ChatBotUI = () => {
141
134
  }
142
135
  }
143
136
  else {
144
- // Never dismissed, show
145
137
  setShowIDVSuggestion(true);
146
138
  setDismissUntil(null);
147
139
  setTimeRemaining('');
148
140
  }
149
141
  }
150
142
  else {
151
- console.log('❌ After delay: conditions no longer met, hiding suggestion');
152
143
  setShowIDVSuggestion(false);
153
144
  setDismissUntil(null);
154
145
  setTimeRemaining('');
@@ -1 +1 @@
1
- {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/ui/MessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAuM/B,CAAC"}
1
+ {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/ui/MessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAoM/B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModelSelector.d.ts","sourceRoot":"","sources":["../../../src/components/ui/ModelSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAwHjC,CAAC"}
1
+ {"version":3,"file":"ModelSelector.d.ts","sourceRoot":"","sources":["../../../src/components/ui/ModelSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAsHjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionForm.d.ts","sourceRoot":"","sources":["../../../src/components/ui/PermissionForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAoiBxD,CAAC"}
1
+ {"version":3,"file":"PermissionForm.d.ts","sourceRoot":"","sources":["../../../src/components/ui/PermissionForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA8iBxD,CAAC"}