@bytexbyte/nxtlinq-ai-agent-sdk 1.3.2 → 1.3.3

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":"ChatBotContext.d.ts","sourceRoot":"","sources":["../../../src/components/context/ChatBotContext.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/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,CA86ClD,CAAC"}
1
+ {"version":3,"file":"ChatBotContext.d.ts","sourceRoot":"","sources":["../../../src/components/context/ChatBotContext.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/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,CAk9ClD,CAAC"}
@@ -45,6 +45,7 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
45
45
  const [justAutoConnected, setJustAutoConnected] = React.useState(false);
46
46
  const [nxtlinqAITServiceAccessToken, setNxtlinqAITServiceAccessToken] = useLocalStorage('nxtlinqAITServiceAccessToken', '');
47
47
  const [suggestions, setSuggestions] = React.useState(presetMessages);
48
+ const [isAITEnabling, setIsAITEnabling] = React.useState(false);
48
49
  // Use refs to get latest state values in hasPermission function
49
50
  const hitAddressRef = React.useRef(hitAddress);
50
51
  const aitRef = React.useRef(ait);
@@ -350,9 +351,25 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
350
351
  setJustAutoConnected(false);
351
352
  }, 15000); // 15 seconds to allow for full AIT loading process
352
353
  onAutoConnect?.(); // Call callback if provided
353
- // If connection successful, continue with permission check
354
354
  // Wait a bit for state to update
355
355
  await new Promise(resolve => setTimeout(resolve, 2000));
356
+ // After auto connect, if not signed in, then auto sign-in
357
+ const tokenAfterConnect = nxtlinqAITServiceAccessTokenRef.current;
358
+ if (!tokenAfterConnect) {
359
+ setIsAutoConnecting(true);
360
+ await signInWallet(false);
361
+ setIsAutoConnecting(false);
362
+ showSuccess('Auto sign-in successful after wallet connect');
363
+ await refreshAIT();
364
+ // Wait for AIT to be fully loaded with polling
365
+ let attempts = 0;
366
+ const maxAttempts = 5;
367
+ while (!aitRef.current && attempts < maxAttempts) {
368
+ await new Promise(resolve => setTimeout(resolve, 2000));
369
+ attempts++;
370
+ }
371
+ }
372
+ // If connection (and sign-in if needed) successful, continue with permission check
356
373
  const result = await hasPermission(toolName, false);
357
374
  return result;
358
375
  }
@@ -674,13 +691,18 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
674
691
  }
675
692
  // Only show permission error if AIT is loaded and permissions are not empty
676
693
  setIsLoading(false); // Stop thinking before showing message
677
- setMessages(prev => [...prev, {
694
+ const permissionMsg = `You don't have the required AIT permission: ${toolName}. Would you like to enable AIT permission?`;
695
+ setMessages(prev => [
696
+ ...prev,
697
+ {
678
698
  id: Date.now().toString(),
679
- content: `You don't have the required AIT permission: ${toolName}. Would you like to enable AIT permissions?`,
699
+ content: permissionMsg,
680
700
  role: 'assistant',
681
701
  timestamp: new Date().toISOString(),
682
- button: 'enableAIT'
683
- }]);
702
+ button: 'enableAIT',
703
+ metadata: { toolName }
704
+ }
705
+ ]);
684
706
  return false;
685
707
  }
686
708
  return true;
@@ -754,13 +776,25 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
754
776
  if (response.toolCall?.toolUse) {
755
777
  // Handle tool calls
756
778
  const toolUse = response.toolCall.toolUse;
779
+ let toolMsg = '';
757
780
  if (onToolUse) {
758
781
  let wasAutoConnected = false;
782
+ // Added: Mark if permission denied due to missing AIT permission
783
+ let permissionDenied = false;
759
784
  const isToolAllowed = await hasPermission(toolUse.name, true, () => {
760
785
  wasAutoConnected = true;
761
786
  });
787
+ // If currentPermissions does not include toolName and availablePermissionLabels includes toolName, it means AIT permission is missing
788
+ if (!isToolAllowed && !permissions.includes(toolUse.name) && availablePermissions.map(p => p.label).includes(toolUse.name)) {
789
+ permissionDenied = true;
790
+ }
762
791
  if (!isToolAllowed) {
763
- // If we just auto-connected, retry the message once
792
+ // If permission denied due to missing AIT permission, do not retry
793
+ if (permissionDenied) {
794
+ setIsLoading(false);
795
+ return;
796
+ }
797
+ // Only retry for auto-connect/auto-sign-in scenarios
764
798
  if (wasAutoConnected && retryCount < 1) {
765
799
  console.log('Auto-connected, retrying message...');
766
800
  // Clear loading state and retry immediately
@@ -807,48 +841,44 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
807
841
  return;
808
842
  }
809
843
  const toolResult = await onToolUse(toolUse);
810
- if (toolResult) {
811
- // Ensure the tool result has model information
812
- botResponse = {
813
- ...toolResult,
814
- metadata: {
815
- ...toolResult.metadata,
816
- model: currentModel.value,
817
- permissions: permissions,
818
- issuedBy: hitAddress || '',
819
- toolUse: toolUse
820
- }
821
- };
822
- }
823
- else {
824
- botResponse = {
825
- id: (Date.now() + 1).toString(),
826
- content: `Tool ${toolUse.name} executed successfully`,
827
- role: 'assistant',
828
- timestamp: new Date().toISOString(),
829
- metadata: {
830
- model: currentModel.value,
831
- permissions: permissions,
832
- issuedBy: hitAddress || '',
833
- toolUse: toolUse
834
- }
835
- };
836
- }
844
+ toolMsg = toolResult?.content || `Tool ${toolUse.name} executed successfully`;
837
845
  }
838
846
  else {
839
- botResponse = {
840
- id: (Date.now() + 1).toString(),
841
- content: `Tool ${toolUse.name} executed successfully`,
842
- role: 'assistant',
843
- timestamp: new Date().toISOString(),
844
- metadata: {
845
- model: currentModel.value,
846
- permissions: permissions,
847
- issuedBy: hitAddress || '',
848
- toolUse: toolUse
849
- }
850
- };
847
+ toolMsg = `Tool ${toolUse.name} executed successfully`;
848
+ }
849
+ // Merge AI original reply
850
+ let replyText = '';
851
+ if (response.reply) {
852
+ replyText = Array.isArray(response.reply)
853
+ ? response.reply
854
+ .map((item) => item.text.replace(/<thinking>/g, '').replace(/<\/thinking>/g, ''))
855
+ .join(' ') || ''
856
+ : response.reply.replace(/<thinking>/g, '').replace(/<\/thinking>/g, '') || '';
857
+ }
858
+ else if (response.fullResponse?.output?.message?.content) {
859
+ replyText = response.fullResponse.output.message.content
860
+ ?.find((item) => item.text)?.text || '';
861
+ }
862
+ let mergedContent = '';
863
+ if (toolMsg) {
864
+ mergedContent += toolMsg;
865
+ }
866
+ if (replyText && replyText.trim()) {
867
+ mergedContent += `\n\n${replyText}`;
851
868
  }
869
+ botResponse = {
870
+ id: (Date.now() + 1).toString(),
871
+ content: mergedContent,
872
+ role: 'assistant',
873
+ timestamp: new Date().toISOString(),
874
+ metadata: {
875
+ model: currentModel.value,
876
+ permissions: permissions,
877
+ issuedBy: hitAddress || '',
878
+ toolUse: toolUse
879
+ }
880
+ };
881
+ setMessages(prev => [...prev, botResponse]);
852
882
  }
853
883
  else if (response.reply) {
854
884
  const replyText = Array.isArray(response.reply)
@@ -868,6 +898,7 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
868
898
  issuedBy: hitAddress || ''
869
899
  }
870
900
  };
901
+ setMessages(prev => [...prev, botResponse]);
871
902
  }
872
903
  else {
873
904
  const replyText = response.fullResponse?.output?.message?.content
@@ -883,8 +914,8 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
883
914
  issuedBy: hitAddress || ''
884
915
  }
885
916
  };
917
+ setMessages(prev => [...prev, botResponse]);
886
918
  }
887
- setMessages(prev => [...prev, botResponse]);
888
919
  }
889
920
  catch (error) {
890
921
  console.error('Failed to send message:', error);
@@ -1045,11 +1076,15 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
1045
1076
  setAit(aitInfo);
1046
1077
  setPermissions(permissions);
1047
1078
  };
1048
- // Auto enable AIT permissions
1079
+ // Auto enable AIT permission
1049
1080
  const autoEnableAIT = async (toolName) => {
1081
+ if (isAITEnabling)
1082
+ return false; // Prevent duplicate
1083
+ setIsAITEnabling(true);
1050
1084
  console.log('autoEnableAIT called with toolName:', toolName, 'isFromAIAgent will be set to true');
1051
1085
  if (!signer || !hitAddress) {
1052
1086
  showError('Please connect your wallet first');
1087
+ setIsAITEnabling(false);
1053
1088
  return false;
1054
1089
  }
1055
1090
  try {
@@ -1057,6 +1092,7 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
1057
1092
  const availablePermissionLabels = availablePermissions.map(p => p.label);
1058
1093
  if (!availablePermissionLabels.includes(toolName)) {
1059
1094
  showError(`Tool ${toolName} is not available for your current identity provider`);
1095
+ setIsAITEnabling(false);
1060
1096
  return false;
1061
1097
  }
1062
1098
  // Add the required permission to current permissions
@@ -1066,17 +1102,19 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
1066
1102
  }
1067
1103
  // Generate and register AIT with new permissions (AI Agent creation)
1068
1104
  await generateAndRegisterAIT(newPermissions, true);
1069
- showSuccess('AIT permissions enabled successfully! You can now use the AI agent.');
1105
+ showSuccess('AIT permission enabled successfully! You can now use the AI agent.');
1070
1106
  await refreshAIT(true);
1107
+ setIsAITEnabling(false);
1071
1108
  return true;
1072
1109
  }
1073
1110
  catch (error) {
1074
1111
  console.error('Failed to auto-enable AIT:', error);
1112
+ setIsAITEnabling(false);
1075
1113
  if (error instanceof Error) {
1076
1114
  showError(error.message);
1077
1115
  }
1078
1116
  else {
1079
- showError('Failed to enable AIT permissions. Please try again.');
1117
+ showError('Failed to enable AIT permission. Please try again.');
1080
1118
  }
1081
1119
  return false;
1082
1120
  }
@@ -1277,6 +1315,7 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
1277
1315
  selectedModelIndex,
1278
1316
  showModelSelector: showModelSelectorState,
1279
1317
  suggestions,
1318
+ isAITEnabling,
1280
1319
  // Actions
1281
1320
  setInputValue,
1282
1321
  setIsOpen,
@@ -65,6 +65,7 @@ export interface ChatBotContextType {
65
65
  showPermissionForm: boolean;
66
66
  isPermissionFormOpen: boolean;
67
67
  isAITLoading: boolean;
68
+ isAITEnabling: boolean;
68
69
  isDisabled: boolean;
69
70
  walletInfo: any;
70
71
  isWalletLoading: boolean;
@@ -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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"}
@@ -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;AAI/B,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EA6K/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;AAI/B,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAmL/B,CAAC"}
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import { useChatBot } from '../context/ChatBotContext';
4
4
  import { AI_MODEL_MAP } from '../types/ChatBotTypes';
5
5
  export const MessageList = () => {
6
- const { messages, isLoading, connectWallet, signInWallet, hitAddress, ait, setShowPermissionForm, isWalletLoading, isAutoConnecting, isNeedSignInWithWallet, autoEnableAIT, isAITLoading } = useChatBot();
6
+ const { messages, isLoading, connectWallet, signInWallet, hitAddress, ait, setShowPermissionForm, isWalletLoading, isAutoConnecting, isNeedSignInWithWallet, autoEnableAIT, isAITLoading, isAITEnabling, sendMessage } = useChatBot();
7
7
  const messagesEndRef = React.useRef(null);
8
8
  const scrollToBottom = () => {
9
9
  messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' });
@@ -23,8 +23,12 @@ export const MessageList = () => {
23
23
  if (toolName) {
24
24
  const success = await autoEnableAIT(toolName);
25
25
  if (success) {
26
- // If AIT is successfully enabled, you can choose to resend the user's last message
27
- // Here you can add logic to reprocess the user's request
26
+ // Find the last user message
27
+ const lastUserMsg = [...messages].reverse().find(m => m.role === 'user');
28
+ if (lastUserMsg && lastUserMsg.content) {
29
+ // Re-execute the previous user message
30
+ await sendMessage(lastUserMsg.content);
31
+ }
28
32
  }
29
33
  }
30
34
  }
@@ -58,29 +62,29 @@ export const MessageList = () => {
58
62
  }, children: [message.metadata?.isRetry && (_jsx("span", { style: { marginRight: '8px', fontSize: '14px' }, children: "\uD83D\uDD04" })), message.content, message.button && (_jsx("div", { style: { marginTop: '10px' }, children: _jsx("button", { onClick: () => handleButtonClick(message.button, message), disabled: isAutoConnecting ||
59
63
  (message.button === 'connect' && Boolean(hitAddress)) ||
60
64
  (message.button === 'signIn' && !isNeedSignInWithWallet) ||
61
- (message.button === 'enableAIT' && isAITLoading), style: {
65
+ (message.button === 'enableAIT' && (isAITLoading || isAITEnabling)), style: {
62
66
  padding: '8px 16px',
63
67
  backgroundColor: message.role === 'user' ? 'rgba(255, 255, 255, 0.2)' :
64
68
  isAutoConnecting ? '#6c757d' :
65
69
  (message.button === 'connect' && Boolean(hitAddress)) ? '#28a745' :
66
70
  (message.button === 'signIn' && !isNeedSignInWithWallet) ? '#28a745' :
67
- (message.button === 'enableAIT' && isAITLoading) ? '#6c757d' : '#007bff',
71
+ (message.button === 'enableAIT' && (isAITLoading || isAITEnabling)) ? '#6c757d' : '#007bff',
68
72
  color: message.role === 'user' ? 'white' : 'white',
69
73
  border: 'none',
70
74
  borderRadius: '5px',
71
75
  cursor: (isAutoConnecting ||
72
76
  (message.button === 'connect' && Boolean(hitAddress)) ||
73
77
  (message.button === 'signIn' && !isNeedSignInWithWallet) ||
74
- (message.button === 'enableAIT' && isAITLoading)) ? 'not-allowed' : 'pointer',
78
+ (message.button === 'enableAIT' && (isAITLoading || isAITEnabling))) ? 'not-allowed' : 'pointer',
75
79
  fontSize: '14px',
76
80
  opacity: (isAutoConnecting ||
77
81
  (message.button === 'connect' && Boolean(hitAddress)) ||
78
82
  (message.button === 'signIn' && !isNeedSignInWithWallet) ||
79
- (message.button === 'enableAIT' && isAITLoading)) ? 0.8 : 1
83
+ (message.button === 'enableAIT' && (isAITLoading || isAITEnabling))) ? 0.8 : 1
80
84
  }, children: isAutoConnecting ? 'Connecting...' :
81
85
  message.button === 'connect' ? (Boolean(hitAddress) ? 'Connected' : 'Connect Wallet') :
82
86
  message.button === 'signIn' ? (!isNeedSignInWithWallet ? 'Signed In' : 'Sign In') :
83
- message.button === 'enableAIT' ? (isAITLoading ? 'Enabling...' : 'Enable AIT Permissions') : message.button }) }))] }), message.role === 'assistant' && message.metadata?.model && (_jsx("div", { style: {
87
+ message.button === 'enableAIT' ? ((isAITLoading || isAITEnabling) ? 'Enabling...' : 'Enable AIT Permissions') : message.button }) }))] }), message.role === 'assistant' && message.metadata?.model && (_jsx("div", { style: {
84
88
  display: 'flex',
85
89
  alignItems: 'center',
86
90
  marginTop: '4px',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bytexbyte/nxtlinq-ai-agent-sdk",
3
- "version": "1.3.2",
3
+ "version": "1.3.3",
4
4
  "description": "Nxtlinq AI Agent SDK - Proprietary Software with enhanced async operation handling",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -10,8 +10,7 @@
10
10
  "scripts": {
11
11
  "build": "tsc",
12
12
  "prepare": "npm run build",
13
- "test": "jest",
14
- "publish": "npm run build && npm pack && npm publish"
13
+ "test": "jest"
15
14
  },
16
15
  "keywords": [
17
16
  "nxtlinq",
@@ -45,4 +44,4 @@
45
44
  "microsoft-cognitiveservices-speech-sdk": "^1.45.0",
46
45
  "universal-cookie": "^8.0.1"
47
46
  }
48
- }
47
+ }