@bytexbyte/nxtlinq-ai-agent-sdk 1.4.1 → 1.4.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":"nxtlinq-api.d.ts","sourceRoot":"","sources":["../../src/api/nxtlinq-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAoV1C,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,KAAG,MAUpE,CAAC"}
1
+ {"version":3,"file":"nxtlinq-api.d.ts","sourceRoot":"","sources":["../../src/api/nxtlinq-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAmW1C,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,KAAG,MAUpE,CAAC"}
@@ -72,10 +72,20 @@ const createAgentApi = () => ({
72
72
  sendMessage: async (params) => {
73
73
  try {
74
74
  const model = params.model || 'nova';
75
+ // Get AIT related information
76
+ const walletAddress = localStorage.getItem('walletAddress');
77
+ const aitTokenRaw = localStorage.getItem('nxtlinqAITServiceAccessToken');
78
+ const aitToken = aitTokenRaw ? JSON.parse(aitTokenRaw) : null;
79
+ console.log('=== SDK sendMessage AIT Info ===');
80
+ console.log('Wallet Address:', walletAddress);
81
+ console.log('AIT Token Raw:', aitTokenRaw);
82
+ console.log('AIT Token Parsed:', aitToken);
75
83
  const response = await fetch(`${AI_AGENT_API_HOST}/api/${model}`, {
76
84
  method: 'POST',
77
85
  headers: {
78
86
  'Content-Type': 'application/json',
87
+ 'X-Wallet-Address': walletAddress || '',
88
+ 'X-AIT-Token': aitToken || '',
79
89
  },
80
90
  body: JSON.stringify({
81
91
  apiKey: params.apiKey,
@@ -83,6 +93,8 @@ const createAgentApi = () => ({
83
93
  pseudoId: params.pseudoId,
84
94
  externalId: params.externalId,
85
95
  message: params.message,
96
+ walletAddress: walletAddress || undefined,
97
+ aitToken: aitToken || undefined,
86
98
  }),
87
99
  });
88
100
  if (!response.ok) {
@@ -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;AAQ/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,CA4iDlD,CAAC"}
1
+ {"version":3,"file":"ChatBotContext.d.ts","sourceRoot":"","sources":["../../../src/components/context/ChatBotContext.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/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,CAqrDlD,CAAC"}
@@ -302,6 +302,7 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
302
302
  if (autoShowSignInMessage) {
303
303
  throw error;
304
304
  }
305
+ return false; // Return false on failure
305
306
  }
306
307
  }, [nxtlinqAITServiceAccessToken, refreshAIT, isNeedSignInWithWallet]);
307
308
  // Sign in wallet
@@ -310,22 +311,25 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
310
311
  const currentHitAddress = hitAddressRef.current;
311
312
  const currentSigner = signerRef.current;
312
313
  console.log('signInWallet called: currentHitAddress =', currentHitAddress, 'currentSigner =', !!currentSigner);
313
- if (!currentHitAddress) {
314
- console.log('No currentHitAddress, returning early');
314
+ // If refs don't have the values, try using current state values
315
+ const addressToUse = currentHitAddress || hitAddress;
316
+ const signerToUse = currentSigner || signer;
317
+ if (!addressToUse) {
318
+ console.log('No address available, returning early');
315
319
  if (autoShowSuccessMessage) {
316
320
  showError('Please connect your wallet first.');
317
321
  }
318
322
  return;
319
323
  }
320
- if (!currentSigner) {
321
- console.log('No currentSigner, returning early');
324
+ if (!signerToUse) {
325
+ console.log('No signer available, returning early');
322
326
  if (autoShowSuccessMessage) {
323
327
  showError('Please connect your wallet first.');
324
328
  }
325
329
  return;
326
330
  }
327
331
  try {
328
- const nonceResponse = await nxtlinqApi.auth.getNonce({ address: currentHitAddress });
332
+ const nonceResponse = await nxtlinqApi.auth.getNonce({ address: addressToUse });
329
333
  if ('error' in nonceResponse) {
330
334
  if (autoShowSuccessMessage) {
331
335
  showError(nonceResponse.error);
@@ -333,12 +337,12 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
333
337
  return;
334
338
  }
335
339
  const payload = {
336
- address: currentHitAddress,
340
+ address: addressToUse,
337
341
  code: nonceResponse.code,
338
342
  timestamp: nonceResponse.timestamp
339
343
  };
340
344
  const stringToSign = stringify(payload);
341
- const signature = await currentSigner.signMessage(stringToSign || '');
345
+ const signature = await signerToUse.signMessage(stringToSign || '');
342
346
  const response = await nxtlinqApi.auth.signIn({
343
347
  ...payload,
344
348
  signature
@@ -381,7 +385,7 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
381
385
  content: 'Please connect your HIT wallet to continue.',
382
386
  role: 'assistant',
383
387
  timestamp: new Date().toISOString(),
384
- button: 'connect'
388
+ button: 'connectWallet'
385
389
  }]);
386
390
  try {
387
391
  setIsAutoConnecting(true); // Mark as auto-connecting
@@ -823,8 +827,96 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
823
827
  externalId: localStorage.getItem('walletAddress') || undefined,
824
828
  message: content,
825
829
  });
826
- if ('error' in response) {
827
- throw new Error(response.error);
830
+ if ('error' in response || response.result === 'error') {
831
+ // Check if it's an AIT-related error
832
+ const errorResponse = response;
833
+ if (errorResponse.requiresWalletConnection) {
834
+ // Case where wallet connection is required - trigger auto-connect logic
835
+ console.log('API requires wallet connection, triggering auto-connect...');
836
+ // Try to auto-connect wallet first
837
+ const autoConnectResult = await connectWallet(false); // Don't show sign-in message yet
838
+ if (autoConnectResult) {
839
+ // If auto-connect successful, try to sign in and then retry
840
+ console.log('Auto-connect successful, trying to sign in...');
841
+ try {
842
+ // Try to sign in wallet
843
+ await signInWallet(false); // Don't show success message yet
844
+ console.log('Auto sign-in successful, retrying message...');
845
+ // Wait a bit for everything to settle
846
+ await new Promise(resolve => setTimeout(resolve, 2000));
847
+ // Retry the message
848
+ sendMessage(content, retryCount + 1, isPresetMessage);
849
+ }
850
+ catch (signInError) {
851
+ console.log('Auto sign-in failed, showing error message');
852
+ setIsLoading(false);
853
+ setMessages(prev => [...prev, {
854
+ id: Date.now().toString(),
855
+ content: 'Wallet connected but sign-in failed. Please try signing in manually.',
856
+ role: 'assistant',
857
+ timestamp: new Date().toISOString(),
858
+ button: 'signIn',
859
+ metadata: {
860
+ requiresWalletConnection: true,
861
+ toolName: errorResponse.toolName
862
+ }
863
+ }]);
864
+ }
865
+ return;
866
+ }
867
+ else {
868
+ // If auto-connect failed, show the error message with connect button
869
+ setIsLoading(false);
870
+ setMessages(prev => [...prev, {
871
+ id: Date.now().toString(),
872
+ content: errorResponse.message,
873
+ role: 'assistant',
874
+ timestamp: new Date().toISOString(),
875
+ button: 'connectWallet',
876
+ metadata: {
877
+ requiresWalletConnection: true,
878
+ toolName: errorResponse.toolName
879
+ }
880
+ }]);
881
+ return;
882
+ }
883
+ }
884
+ else if (errorResponse.requiresPermissionUpdate) {
885
+ // Case where permission update is required - trigger auto-enable logic
886
+ console.log('API requires permission update, triggering auto-enable...');
887
+ // Try to auto-enable AIT permission first
888
+ const autoEnableResult = await autoEnableAIT(errorResponse.toolName);
889
+ if (autoEnableResult) {
890
+ // If auto-enable successful, retry the message
891
+ console.log('Auto-enable successful, retrying message...');
892
+ // Wait a bit for everything to settle
893
+ await new Promise(resolve => setTimeout(resolve, 2000));
894
+ // Retry the message
895
+ sendMessage(content, retryCount + 1, isPresetMessage);
896
+ return;
897
+ }
898
+ else {
899
+ // If auto-enable failed, show the error message with enable button
900
+ setIsLoading(false);
901
+ setMessages(prev => [...prev, {
902
+ id: Date.now().toString(),
903
+ content: errorResponse.message,
904
+ role: 'assistant',
905
+ timestamp: new Date().toISOString(),
906
+ button: 'enableAIT',
907
+ metadata: {
908
+ requiresPermissionUpdate: true,
909
+ toolName: errorResponse.toolName,
910
+ requiredPermission: errorResponse.requiredPermission
911
+ }
912
+ }]);
913
+ return;
914
+ }
915
+ }
916
+ else {
917
+ // Other errors
918
+ throw new Error(errorResponse.error || errorResponse.message);
919
+ }
828
920
  }
829
921
  let botResponse;
830
922
  if (response.toolCall?.toolUse) {
@@ -843,9 +935,21 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
843
935
  permissionDenied = true;
844
936
  }
845
937
  if (!isToolAllowed) {
846
- // If permission denied due to missing AIT permission, do not retry
938
+ // If permission denied due to missing AIT permission, show enable button
847
939
  if (permissionDenied) {
848
940
  setIsLoading(false);
941
+ setMessages(prev => [...prev, {
942
+ id: Date.now().toString(),
943
+ content: `You don't have the required AIT permission: ${toolUse.name}. Would you like to enable AIT permission?`,
944
+ role: 'assistant',
945
+ timestamp: new Date().toISOString(),
946
+ button: 'enableAIT',
947
+ metadata: {
948
+ requiresPermissionUpdate: true,
949
+ toolName: toolUse.name,
950
+ requiredPermission: toolUse.name
951
+ }
952
+ }]);
849
953
  return;
850
954
  }
851
955
  // Only retry for auto-connect/auto-sign-in scenarios
@@ -1137,10 +1241,37 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
1137
1241
  return false; // Prevent duplicate
1138
1242
  setIsAITEnabling(true);
1139
1243
  console.log('autoEnableAIT called with toolName:', toolName, 'isFromAIAgent will be set to true');
1244
+ // If no wallet connected, try to auto-connect first
1140
1245
  if (!signer || !hitAddress) {
1141
- showError('Please connect your wallet first');
1142
- setIsAITEnabling(false);
1143
- return false;
1246
+ console.log('No wallet connected, attempting auto-connect...');
1247
+ const autoConnectResult = await connectWallet(false); // Don't show sign-in message yet
1248
+ if (autoConnectResult) {
1249
+ console.log('Auto-connect successful, waiting for state update...');
1250
+ // Wait for state to update - increase wait time
1251
+ await new Promise(resolve => setTimeout(resolve, 1000));
1252
+ // Double check that we have the required state
1253
+ if (!signer || !hitAddress) {
1254
+ console.log('State not updated yet, waiting more...');
1255
+ await new Promise(resolve => setTimeout(resolve, 1000));
1256
+ }
1257
+ console.log('Trying to sign in...');
1258
+ try {
1259
+ await signInWallet(false); // Don't show success message yet
1260
+ console.log('Auto sign-in successful, continuing with AIT enable...');
1261
+ }
1262
+ catch (signInError) {
1263
+ console.log('Auto sign-in failed:', signInError);
1264
+ showError('Wallet connected but sign-in failed. Please try signing in manually.');
1265
+ setIsAITEnabling(false);
1266
+ return false;
1267
+ }
1268
+ }
1269
+ else {
1270
+ console.log('Auto-connect failed');
1271
+ showError('Please connect your wallet first');
1272
+ setIsAITEnabling(false);
1273
+ return false;
1274
+ }
1144
1275
  }
1145
1276
  try {
1146
1277
  // Get available permissions to find the tool
@@ -96,7 +96,7 @@ export interface ChatBotContextType {
96
96
  setSelectedModelIndex: (index: number) => void;
97
97
  setShowModelSelector: (show: boolean) => void;
98
98
  setSuggestions: (suggestions: PresetMessage[]) => void;
99
- connectWallet: (autoShowSignInMessage?: boolean) => Promise<string | undefined>;
99
+ connectWallet: (autoShowSignInMessage?: boolean) => Promise<string | false | undefined>;
100
100
  signInWallet: (autoShowSuccessMessage?: boolean) => Promise<void>;
101
101
  sendMessage: (content: string, retryCount?: number) => Promise<void>;
102
102
  handleSubmit: (e: React.FormEvent) => Promise<void>;
@@ -114,7 +114,7 @@ export interface ChatBotContextType {
114
114
  handleModelChange: (modelIndex: number) => void;
115
115
  getCurrentModel: () => AIModel;
116
116
  onSave: (newPermissions?: string[]) => Promise<void>;
117
- onConnectWallet: () => Promise<string | undefined>;
117
+ onConnectWallet: () => Promise<string | false | undefined>;
118
118
  onSignIn: () => Promise<void>;
119
119
  isNeedSignInWithWallet: boolean;
120
120
  onVerifyWallet: () => Promise<void>;
@@ -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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"}
@@ -11,6 +11,8 @@ export const ALL_AVAILABLE_MODELS = [
11
11
  { label: 'Llama', value: 'llama' },
12
12
  { label: 'Gemini', value: 'gemini' },
13
13
  { label: 'Nova', value: 'nova' },
14
+ { label: 'ChatGPT-v1.1', value: 'v1.1/open-ai' },
15
+ { label: 'ChatGPT-v1.2', value: 'v1.2/open-ai' },
14
16
  { label: "Claude-v2", value: "v2/claude" },
15
17
  { label: "ChatGPT-v2", value: "v2/open-ai" },
16
18
  { label: "Llama-v2", value: "v2/llama" },
@@ -23,6 +25,8 @@ export const AI_MODEL_MAP = {
23
25
  llama: 'Llama',
24
26
  gemini: 'Gemini',
25
27
  nova: 'Nova',
28
+ 'v1.1/open-ai': 'ChatGPT-v1.1',
29
+ 'v1.2/open-ai': 'ChatGPT-v1.2',
26
30
  'v2/claude': 'Claude-v2',
27
31
  'v2/open-ai': 'ChatGPT-v2',
28
32
  'v2/llama': 'Llama-v2',
@@ -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,EAmL/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;AAK/B,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAmL/B,CAAC"}
@@ -12,7 +12,7 @@ export const MessageList = () => {
12
12
  scrollToBottom();
13
13
  }, [messages]);
14
14
  const handleButtonClick = async (buttonType, message) => {
15
- if (buttonType === 'connect') {
15
+ if (buttonType === 'connectWallet') {
16
16
  connectWallet(true);
17
17
  }
18
18
  else if (buttonType === 'signIn') {
@@ -60,29 +60,29 @@ export const MessageList = () => {
60
60
  position: 'relative',
61
61
  border: message.metadata?.isRetry ? '1px solid #ffeaa7' : 'none'
62
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 ||
63
- (message.button === 'connect' && Boolean(hitAddress)) ||
63
+ (message.button === 'connectWallet' && Boolean(hitAddress)) ||
64
64
  (message.button === 'signIn' && !isNeedSignInWithWallet) ||
65
65
  (message.button === 'enableAIT' && (isAITLoading || isAITEnabling)), style: {
66
66
  padding: '8px 16px',
67
67
  backgroundColor: message.role === 'user' ? 'rgba(255, 255, 255, 0.2)' :
68
68
  isAutoConnecting ? '#6c757d' :
69
- (message.button === 'connect' && Boolean(hitAddress)) ? '#28a745' :
69
+ (message.button === 'connectWallet' && Boolean(hitAddress)) ? '#28a745' :
70
70
  (message.button === 'signIn' && !isNeedSignInWithWallet) ? '#28a745' :
71
71
  (message.button === 'enableAIT' && (isAITLoading || isAITEnabling)) ? '#6c757d' : '#007bff',
72
72
  color: message.role === 'user' ? 'white' : 'white',
73
73
  border: 'none',
74
74
  borderRadius: '5px',
75
75
  cursor: (isAutoConnecting ||
76
- (message.button === 'connect' && Boolean(hitAddress)) ||
76
+ (message.button === 'connectWallet' && Boolean(hitAddress)) ||
77
77
  (message.button === 'signIn' && !isNeedSignInWithWallet) ||
78
78
  (message.button === 'enableAIT' && (isAITLoading || isAITEnabling))) ? 'not-allowed' : 'pointer',
79
79
  fontSize: '14px',
80
80
  opacity: (isAutoConnecting ||
81
- (message.button === 'connect' && Boolean(hitAddress)) ||
81
+ (message.button === 'connectWallet' && Boolean(hitAddress)) ||
82
82
  (message.button === 'signIn' && !isNeedSignInWithWallet) ||
83
83
  (message.button === 'enableAIT' && (isAITLoading || isAITEnabling))) ? 0.8 : 1
84
84
  }, children: isAutoConnecting ? 'Connecting...' :
85
- message.button === 'connect' ? (Boolean(hitAddress) ? 'Connected' : 'Connect Wallet') :
85
+ message.button === 'connectWallet' ? (Boolean(hitAddress) ? 'Connected' : 'Connect Wallet') :
86
86
  message.button === 'signIn' ? (!isNeedSignInWithWallet ? 'Signed In' : 'Sign In') :
87
87
  message.button === 'enableAIT' ? ((isAITLoading || isAITEnabling) ? 'Enabling...' : 'Enable AIT Permissions') : message.button }) }))] }), message.role === 'assistant' && message.metadata?.model && (_jsx("div", { style: {
88
88
  display: 'flex',
@@ -1,14 +1,14 @@
1
1
  import { SpeechRecognizer } from 'microsoft-cognitiveservices-speech-sdk';
2
2
  import { Dispatch, SetStateAction } from 'react';
3
3
  /**
4
- * 啟動語音辨識,會不斷更新 speechToTextArray(每段句子為一個陣列元素)
4
+ * Start speech recognition, continuously updates speechToTextArray (each sentence as an array element)
5
5
  */
6
6
  export declare const startSpeechToTextFromMic: (setSpeechToTextArray: Dispatch<SetStateAction<string[]>>, config: {
7
7
  apiKey: string;
8
8
  apiSecret: string;
9
9
  }) => Promise<SpeechRecognizer | undefined>;
10
10
  /**
11
- * 停止語音辨識
11
+ * Stop speech recognition
12
12
  */
13
13
  export declare const stopRecognition: (recognizer: SpeechRecognizer | undefined) => void;
14
14
  export declare function getTokenOrRefresh(apiKey: string, apiSecret: string): Promise<{
@@ -3,7 +3,7 @@ import Cookie from 'universal-cookie';
3
3
  import { createNxtlinqApi } from '../../../api/nxtlinq-api';
4
4
  let recognizer;
5
5
  /**
6
- * 啟動語音辨識,會不斷更新 speechToTextArray(每段句子為一個陣列元素)
6
+ * Start speech recognition, continuously updates speechToTextArray (each sentence as an array element)
7
7
  */
8
8
  export const startSpeechToTextFromMic = async (setSpeechToTextArray, config) => {
9
9
  const tokenRes = await getTokenOrRefresh(config.apiKey, config.apiSecret);
@@ -42,7 +42,7 @@ export const startSpeechToTextFromMic = async (setSpeechToTextArray, config) =>
42
42
  return recognizer;
43
43
  };
44
44
  /**
45
- * 停止語音辨識
45
+ * Stop speech recognition
46
46
  */
47
47
  export const stopRecognition = (recognizer) => {
48
48
  if (recognizer) {
@@ -0,0 +1,3 @@
1
+ declare const NxtlinqAIAgent: any;
2
+ export default NxtlinqAIAgent;
3
+ //# sourceMappingURL=umd-entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"umd-entry.d.ts","sourceRoot":"","sources":["../src/umd-entry.ts"],"names":[],"mappings":"AAiBA,QAAA,MAAM,cAAc,EAAE,GAuDrB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,66 @@
1
+ // UMD Entry point for nxtlinq AI Agent SDK
2
+ import { ChatBot } from './components/ChatBot';
3
+ import { ChatBotProvider, useChatBot } from './components/context/ChatBotContext';
4
+ import { ChatBotUI } from './components/ui/ChatBotUI';
5
+ import { MessageInput } from './components/ui/MessageInput';
6
+ import { MessageList } from './components/ui/MessageList';
7
+ import { ModelSelector } from './components/ui/ModelSelector';
8
+ import { NotificationModal } from './components/ui/NotificationModal';
9
+ import { PermissionForm } from './components/ui/PermissionForm';
10
+ import { PresetMessages } from './components/ui/PresetMessages';
11
+ import { connectWallet, disconnectWallet, validateToken } from './core/utils/walletUtils';
12
+ import { createAITMetadata, generateAITId, prepareAITCreation } from './core/utils/aitUtils';
13
+ import { createNotification, getNotificationIcon } from './core/utils/notificationUtils';
14
+ import { createNxtlinqApi } from './api/nxtlinq-api';
15
+ import useLocalStorage from './core/lib/useLocalStorage';
16
+ // Export all components and utilities as a single object
17
+ const NxtlinqAIAgent = {
18
+ // Main components
19
+ ChatBot,
20
+ ChatBotProvider,
21
+ useChatBot,
22
+ // UI Components
23
+ ChatBotUI,
24
+ MessageInput,
25
+ MessageList,
26
+ ModelSelector,
27
+ NotificationModal,
28
+ PermissionForm,
29
+ PresetMessages,
30
+ // Utility functions
31
+ connectWallet,
32
+ disconnectWallet,
33
+ validateToken,
34
+ createAITMetadata,
35
+ generateAITId,
36
+ prepareAITCreation,
37
+ createNotification,
38
+ getNotificationIcon,
39
+ // API client
40
+ createNxtlinqApi,
41
+ // Hooks
42
+ useLocalStorage,
43
+ // Constants (will be available as static properties)
44
+ AI_MODEL_MAP: {
45
+ 'gpt-4': 'gpt-4',
46
+ 'gpt-3.5-turbo': 'gpt-3.5-turbo',
47
+ 'claude-3-opus': 'claude-3-opus',
48
+ 'claude-3-sonnet': 'claude-3-sonnet',
49
+ 'claude-3-haiku': 'claude-3-haiku'
50
+ },
51
+ ALL_AVAILABLE_MODELS: [
52
+ 'gpt-4',
53
+ 'gpt-3.5-turbo',
54
+ 'claude-3-opus',
55
+ 'claude-3-sonnet',
56
+ 'claude-3-haiku'
57
+ ],
58
+ DEFAULT_AI_MODELS: [
59
+ 'gpt-4',
60
+ 'gpt-3.5-turbo',
61
+ 'claude-3-opus',
62
+ 'claude-3-sonnet',
63
+ 'claude-3-haiku'
64
+ ]
65
+ };
66
+ export default NxtlinqAIAgent;
package/package.json CHANGED
@@ -1,15 +1,17 @@
1
1
  {
2
2
  "name": "@bytexbyte/nxtlinq-ai-agent-sdk",
3
- "version": "1.4.1",
3
+ "version": "1.4.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",
7
7
  "files": [
8
- "dist"
8
+ "dist",
9
+ "umd"
9
10
  ],
10
11
  "scripts": {
11
12
  "build": "tsc",
12
- "prepare": "npm run build",
13
+ "build:umd": "webpack --config webpack.config.js",
14
+ "build:all": "npm run build && npm run build:umd",
13
15
  "test": "jest"
14
16
  },
15
17
  "keywords": [
@@ -28,10 +30,22 @@
28
30
  "react": "^18.2.0"
29
31
  },
30
32
  "devDependencies": {
33
+ "@babel/core": "^7.24.0",
34
+ "@babel/preset-env": "^7.24.0",
35
+ "@babel/preset-react": "^7.23.3",
36
+ "@babel/preset-typescript": "^7.27.1",
31
37
  "@types/jest": "^29.5.12",
32
38
  "@types/react": "^18.2.64",
39
+ "babel-loader": "^9.1.3",
40
+ "css-loader": "^6.10.0",
33
41
  "jest": "^29.7.0",
34
- "typescript": "^5.4.2"
42
+ "react": "^18.2.0",
43
+ "react-dom": "^18.2.0",
44
+ "style-loader": "^3.3.4",
45
+ "ts-loader": "^9.5.2",
46
+ "typescript": "^5.4.2",
47
+ "webpack": "^5.90.3",
48
+ "webpack-cli": "^5.1.4"
35
49
  },
36
50
  "dependencies": {
37
51
  "@emotion/react": "^11.14.0",
@@ -45,4 +59,4 @@
45
59
  "universal-cookie": "^8.0.1",
46
60
  "uuid": "^11.1.0"
47
61
  }
48
- }
62
+ }