@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.
- package/dist/components/ChatBot.d.ts.map +1 -1
- package/dist/components/ChatBot.js +6 -4
- package/dist/components/context/ChatBotContext.d.ts.map +1 -1
- package/dist/components/context/ChatBotContext.js +34 -78
- package/dist/components/types/ChatBotTypes.d.ts +1 -0
- package/dist/components/types/ChatBotTypes.d.ts.map +1 -1
- package/dist/components/ui/BerifyMeModal.d.ts +1 -0
- package/dist/components/ui/BerifyMeModal.d.ts.map +1 -1
- package/dist/components/ui/BerifyMeModal.js +32 -25
- package/dist/components/ui/ChatBotUI.d.ts.map +1 -1
- package/dist/components/ui/ChatBotUI.js +0 -9
- package/dist/components/ui/MessageList.d.ts.map +1 -1
- package/dist/components/ui/ModelSelector.d.ts.map +1 -1
- package/dist/components/ui/PermissionForm.d.ts.map +1 -1
- package/dist/components/ui/PermissionForm.js +8 -2
- package/dist/core/lib/useSpeechToTextFromMic/helper.d.ts.map +1 -1
- package/dist/core/lib/useSpeechToTextFromMic/helper.js +0 -4
- package/dist/core/lib/useSpeechToTextFromMic/index.js +1 -1
- package/dist/core/metakeepClient.d.ts.map +1 -1
- package/dist/core/metakeepClient.js +0 -1
- package/dist/core/utils/berifyMeReactFix.d.ts +8 -0
- package/dist/core/utils/berifyMeReactFix.d.ts.map +1 -0
- package/dist/core/utils/berifyMeReactFix.js +81 -0
- package/dist/core/utils/reactInstanceCheck.d.ts +9 -0
- package/dist/core/utils/reactInstanceCheck.d.ts.map +1 -0
- package/dist/core/utils/reactInstanceCheck.js +46 -0
- package/package.json +1 -1
- package/umd/nxtlinq-ai-agent.umd.js +2 -2
|
@@ -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,
|
|
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
|
-
//
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
210
|
-
|
|
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
|
-
|
|
213
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
|
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);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatBotTypes.d.ts","sourceRoot":"","sources":["../../../src/components/types/ChatBotTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,iBAAiB,EAAE,OAAO,EAKtC,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,OAAO,EAwBzC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAwB/C,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC1D,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,SAAS,CAAC,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAErC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,uBAAuB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatBotTypes.d.ts","sourceRoot":"","sources":["../../../src/components/types/ChatBotTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
32
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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"}
|