@bytexbyte/nxtlinq-ai-agent-sdk 1.4.5 → 1.4.6

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;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,CAyqDlD,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,CAutDlD,CAAC"}
@@ -254,6 +254,9 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
254
254
  localStorage.setItem('walletAddress', userAddress);
255
255
  setHitAddress(userAddress);
256
256
  setSigner(userSigner);
257
+ // Immediately update refs to ensure they're available for subsequent operations
258
+ hitAddressRef.current = userAddress;
259
+ signerRef.current = userSigner;
257
260
  // Check if we have a valid token before trying to load AIT
258
261
  if (nxtlinqAITServiceAccessToken) {
259
262
  try {
@@ -882,36 +885,22 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
882
885
  }
883
886
  }
884
887
  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
- }
888
+ // Case where permission update is required - show manual enable option
889
+ console.log('API requires permission update, showing manual enable option...');
890
+ setIsLoading(false);
891
+ setMessages(prev => [...prev, {
892
+ id: Date.now().toString(),
893
+ content: errorResponse.message,
894
+ role: 'assistant',
895
+ timestamp: new Date().toISOString(),
896
+ button: 'enableAIT',
897
+ metadata: {
898
+ requiresPermissionUpdate: true,
899
+ toolName: errorResponse.toolName,
900
+ requiredPermission: errorResponse.requiredPermission
901
+ }
902
+ }]);
903
+ return;
915
904
  }
916
905
  else {
917
906
  // Other errors
@@ -1181,16 +1170,25 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
1181
1170
  if (!signer || !hitAddress) {
1182
1171
  throw new Error('Missing signer or wallet address');
1183
1172
  }
1173
+ return generateAndRegisterAITWithSigner(newPermissions, isFromAIAgent, signer, hitAddress);
1174
+ };
1175
+ // Generate and register AIT with explicit signer and address
1176
+ const generateAndRegisterAITWithSigner = async (newPermissions, isFromAIAgent = false, explicitSigner, explicitAddress) => {
1177
+ const currentSigner = explicitSigner || signer;
1178
+ const currentAddress = explicitAddress || hitAddress;
1179
+ if (!currentSigner || !currentAddress) {
1180
+ throw new Error('Missing signer or wallet address');
1181
+ }
1184
1182
  // If AI Agent is creating, must check if user has existing AIT
1185
- if (isFromAIAgent && !ait) {
1183
+ if (isFromAIAgent && !aitRef.current) {
1186
1184
  throw new Error('You must have an existing AIT before AI Agent can create new AITs');
1187
1185
  }
1188
1186
  const timestamp = Math.floor(Date.now() / 1000);
1189
- const aitId = `did:polygon:nxtlinq:${hitAddress}:${timestamp}`;
1187
+ const aitId = `did:polygon:nxtlinq:${currentAddress}:${timestamp}`;
1190
1188
  const metadata = {
1191
1189
  model: 'gpt-4',
1192
1190
  permissions: newPermissions || permissions,
1193
- issuedBy: hitAddress,
1191
+ issuedBy: currentAddress,
1194
1192
  };
1195
1193
  const metadataStr = stringify(metadata);
1196
1194
  const metadataHash = ethers.utils.keccak256(ethers.utils.toUtf8Bytes(metadataStr));
@@ -1201,12 +1199,12 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
1201
1199
  const { metadataCid } = uploadResponse;
1202
1200
  const createAITParams = {
1203
1201
  aitId,
1204
- controller: hitAddress,
1202
+ controller: currentAddress,
1205
1203
  serviceId,
1206
1204
  metadataHash,
1207
1205
  metadataCid,
1208
1206
  isFromAIAgent: isFromAIAgent,
1209
- parentAITId: isFromAIAgent ? ait?.aitId : undefined,
1207
+ parentAITId: isFromAIAgent ? aitRef.current?.aitId : undefined,
1210
1208
  };
1211
1209
  console.log('createAIT params:', createAITParams);
1212
1210
  const createAITResponse = await nxtlinqApi.ait.createAIT(createAITParams, nxtlinqAITServiceAccessToken || '');
@@ -1215,7 +1213,7 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
1215
1213
  }
1216
1214
  const aitInfo = {
1217
1215
  aitId,
1218
- controller: hitAddress,
1216
+ controller: currentAddress,
1219
1217
  metadata,
1220
1218
  metadataHash,
1221
1219
  metadataCid,
@@ -1224,23 +1222,30 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
1224
1222
  setPermissions(permissions);
1225
1223
  };
1226
1224
  // Auto enable AIT permission
1227
- const autoEnableAIT = async (toolName) => {
1225
+ const enableAIT = async (toolName) => {
1228
1226
  if (isAITEnabling)
1229
1227
  return false; // Prevent duplicate
1230
1228
  setIsAITEnabling(true);
1231
- console.log('autoEnableAIT called with toolName:', toolName, 'isFromAIAgent will be set to true');
1229
+ console.log('enableAIT called with toolName:', toolName, 'existing AIT:', !!aitRef.current);
1230
+ let currentSigner = signer;
1231
+ let currentHitAddress = hitAddress;
1232
1232
  // If no wallet connected, try to auto-connect first
1233
- if (!signer || !hitAddress) {
1233
+ if (!currentSigner || !currentHitAddress) {
1234
1234
  console.log('No wallet connected, attempting auto-connect...');
1235
1235
  const autoConnectResult = await connectWallet(false); // Don't show sign-in message yet
1236
1236
  if (autoConnectResult) {
1237
1237
  console.log('Auto-connect successful, waiting for state update...');
1238
1238
  // Wait for state to update - increase wait time
1239
- await new Promise(resolve => setTimeout(resolve, 1000));
1239
+ await new Promise(resolve => setTimeout(resolve, 1500));
1240
+ // Get the latest state values after connection
1241
+ currentSigner = signerRef.current || signer;
1242
+ currentHitAddress = hitAddressRef.current || hitAddress;
1240
1243
  // Double check that we have the required state
1241
- if (!signer || !hitAddress) {
1244
+ if (!currentSigner || !currentHitAddress) {
1242
1245
  console.log('State not updated yet, waiting more...');
1243
- await new Promise(resolve => setTimeout(resolve, 1000));
1246
+ await new Promise(resolve => setTimeout(resolve, 1500));
1247
+ currentSigner = signerRef.current || signer;
1248
+ currentHitAddress = hitAddressRef.current || hitAddress;
1244
1249
  }
1245
1250
  console.log('Trying to sign in...');
1246
1251
  try {
@@ -1261,6 +1266,32 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
1261
1266
  return false;
1262
1267
  }
1263
1268
  }
1269
+ // Final check before proceeding
1270
+ if (!currentSigner || !currentHitAddress) {
1271
+ console.error('Missing signer or wallet address after connection process');
1272
+ console.error('Current signer:', !!currentSigner);
1273
+ console.error('Current hitAddress:', currentHitAddress);
1274
+ console.error('Signer ref:', !!signerRef.current);
1275
+ console.error('HitAddress ref:', hitAddressRef.current);
1276
+ showError('Wallet connection failed. Please try connecting your wallet manually.');
1277
+ setIsAITEnabling(false);
1278
+ return false;
1279
+ }
1280
+ console.log('Proceeding with AIT creation - Signer:', !!currentSigner, 'Address:', currentHitAddress);
1281
+ // If we don't have AIT loaded but we have a token, try to refresh it first
1282
+ if (!aitRef.current && nxtlinqAITServiceAccessToken) {
1283
+ console.log('No AIT loaded but have token, attempting to refresh AIT...');
1284
+ try {
1285
+ await refreshAIT();
1286
+ // Wait a bit for AIT to be loaded
1287
+ await new Promise(resolve => setTimeout(resolve, 1000));
1288
+ console.log('AIT refresh completed, current AIT:', !!aitRef.current);
1289
+ }
1290
+ catch (error) {
1291
+ console.log('Failed to refresh AIT:', error);
1292
+ // Continue anyway, we'll create a new AIT if needed
1293
+ }
1294
+ }
1264
1295
  try {
1265
1296
  // Get available permissions to find the tool
1266
1297
  const availablePermissionLabels = availablePermissions.map(p => p.label);
@@ -1274,8 +1305,11 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
1274
1305
  if (!newPermissions.includes(toolName)) {
1275
1306
  newPermissions.push(toolName);
1276
1307
  }
1277
- // Generate and register AIT with new permissions (AI Agent creation)
1278
- await generateAndRegisterAIT(newPermissions, true);
1308
+ // Generate and register AIT with new permissions
1309
+ // For auto-enable, we should create a regular AIT (not AI Agent AIT) if user doesn't have existing AIT
1310
+ const shouldCreateAsAIAgent = !!aitRef.current; // Only create as AI Agent if user already has an AIT
1311
+ console.log('Creating AIT - isFromAIAgent:', shouldCreateAsAIAgent, 'existing AIT:', !!aitRef.current);
1312
+ await generateAndRegisterAITWithSigner(newPermissions, shouldCreateAsAIAgent, currentSigner, currentHitAddress);
1279
1313
  showSuccess('AIT permission enabled successfully! You can now use the AI agent.');
1280
1314
  await refreshAIT(true);
1281
1315
  setIsAITEnabling(false);
@@ -1536,7 +1570,7 @@ availableModels = DEFAULT_AI_MODELS, defaultModelIndex = 0, showModelSelector =
1536
1570
  handleSubmit,
1537
1571
  handlePresetMessage,
1538
1572
  savePermissions,
1539
- autoEnableAIT,
1573
+ enableAIT,
1540
1574
  handleVerifyWalletClick,
1541
1575
  showSuccess,
1542
1576
  showError,
@@ -102,7 +102,7 @@ export interface ChatBotContextType {
102
102
  handleSubmit: (e: React.FormEvent) => Promise<void>;
103
103
  handlePresetMessage: (message: PresetMessage) => void;
104
104
  savePermissions: (newPermissions?: string[]) => Promise<void>;
105
- autoEnableAIT: (toolName: string) => Promise<boolean>;
105
+ enableAIT: (toolName: string) => Promise<boolean>;
106
106
  handleVerifyWalletClick: () => Promise<void>;
107
107
  showSuccess: (message: string) => void;
108
108
  showError: (message: string) => 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":"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,EAezC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAe/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;CAC1C;AAED,MAAM,WAAW,kBAAkB;IAEjC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,oBAAoB,EAAE,iBAAiB,EAAE,CAAC;IAC1C,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,GAAG,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE;QACZ,IAAI,EAAE,OAAO,CAAC;QACd,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;QAC/C,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAEhD,eAAe,EAAE,OAAO,EAAE,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,WAAW,EAAE,aAAa,EAAE,CAAC;IAG7B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,qBAAqB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,uBAAuB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAChD,aAAa,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,eAAe,EAAE,CAAC,YAAY,EAAE,GAAG,KAAK,IAAI,CAAC;IAE7C,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,oBAAoB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,cAAc,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IAGvD,aAAa,EAAE,CAAC,qBAAqB,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC;IACxF,YAAY,EAAE,CAAC,sBAAsB,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,YAAY,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IACtD,eAAe,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,uBAAuB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,UAAU,EAAE,CAAC,sBAAsB,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,aAAa,EAAE,MAAM,IAAI,CAAC;IAE1B,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,eAAe,EAAE,MAAM,OAAO,CAAC;IAG/B,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,eAAe,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC;IAC3D,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,sBAAsB,EAAE,OAAO,CAAC;IAChC,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -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,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;AAM/B,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EA+L/B,CAAC"}
@@ -4,7 +4,7 @@ import { useChatBot } from '../context/ChatBotContext';
4
4
  import { AI_MODEL_MAP } from '../types/ChatBotTypes';
5
5
  import { convertUrlsToLinks } from '../../core/utils/urlUtils';
6
6
  export const MessageList = () => {
7
- const { messages, isLoading, connectWallet, signInWallet, hitAddress, ait, setShowPermissionForm, isWalletLoading, isAutoConnecting, isNeedSignInWithWallet, autoEnableAIT, isAITLoading, isAITEnabling, sendMessage } = useChatBot();
7
+ const { messages, isLoading, connectWallet, signInWallet, hitAddress, ait, setShowPermissionForm, isWalletLoading, isAutoConnecting, isNeedSignInWithWallet, enableAIT, isAITLoading, isAITEnabling, sendMessage, permissions } = useChatBot();
8
8
  const messagesEndRef = React.useRef(null);
9
9
  const scrollToBottom = () => {
10
10
  messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' });
@@ -22,7 +22,7 @@ export const MessageList = () => {
22
22
  else if (buttonType === 'enableAIT') {
23
23
  const toolName = message.metadata?.toolName;
24
24
  if (toolName) {
25
- const success = await autoEnableAIT(toolName);
25
+ const success = await enableAIT(toolName);
26
26
  if (success) {
27
27
  // Find the last user message
28
28
  const lastUserMsg = [...messages].reverse().find(m => m.role === 'user');
@@ -60,32 +60,44 @@ export const MessageList = () => {
60
60
  wordWrap: 'break-word',
61
61
  position: 'relative',
62
62
  border: message.metadata?.isRetry ? '1px solid #ffeaa7' : 'none'
63
- }, children: [message.metadata?.isRetry && (_jsx("span", { style: { marginRight: '8px', fontSize: '14px' }, children: "\uD83D\uDD04" })), convertUrlsToLinks(message.content), message.button && (_jsx("div", { style: { marginTop: '10px' }, children: _jsx("button", { onClick: () => handleButtonClick(message.button, message), disabled: isAutoConnecting ||
63
+ }, children: [message.metadata?.isRetry && (_jsx("span", { style: { marginRight: '8px', fontSize: '14px' }, children: "\uD83D\uDD04" })), message.role === 'assistant' ? convertUrlsToLinks(message.content) : message.content, message.button && (_jsx("div", { style: { marginTop: '10px' }, children: _jsx("button", { onClick: () => {
64
+ if (message.button && message.button.trim()) {
65
+ handleButtonClick(message.button, message);
66
+ }
67
+ }, disabled: isAutoConnecting ||
64
68
  (message.button === 'connectWallet' && Boolean(hitAddress)) ||
65
69
  (message.button === 'signIn' && !isNeedSignInWithWallet) ||
66
- (message.button === 'enableAIT' && (isAITLoading || isAITEnabling)), style: {
70
+ (message.button === 'enableAIT' && (isAITLoading || isAITEnabling ||
71
+ (message.metadata?.toolName && permissions.includes(message.metadata.toolName)))) || false, style: {
67
72
  padding: '8px 16px',
68
73
  backgroundColor: message.role === 'user' ? 'rgba(255, 255, 255, 0.2)' :
69
74
  isAutoConnecting ? '#6c757d' :
70
75
  (message.button === 'connectWallet' && Boolean(hitAddress)) ? '#28a745' :
71
76
  (message.button === 'signIn' && !isNeedSignInWithWallet) ? '#28a745' :
72
- (message.button === 'enableAIT' && (isAITLoading || isAITEnabling)) ? '#6c757d' : '#007bff',
77
+ (message.button === 'enableAIT' && (isAITLoading || isAITEnabling ||
78
+ (message.metadata?.toolName && permissions.includes(message.metadata.toolName)))) ?
79
+ ((message.metadata?.toolName && permissions.includes(message.metadata.toolName)) ? '#28a745' : '#6c757d') : '#007bff',
73
80
  color: message.role === 'user' ? 'white' : 'white',
74
81
  border: 'none',
75
82
  borderRadius: '5px',
76
83
  cursor: (isAutoConnecting ||
77
84
  (message.button === 'connectWallet' && Boolean(hitAddress)) ||
78
85
  (message.button === 'signIn' && !isNeedSignInWithWallet) ||
79
- (message.button === 'enableAIT' && (isAITLoading || isAITEnabling))) ? 'not-allowed' : 'pointer',
86
+ (message.button === 'enableAIT' && (isAITLoading || isAITEnabling ||
87
+ (message.metadata?.toolName && permissions.includes(message.metadata.toolName))))) ? 'not-allowed' : 'pointer',
80
88
  fontSize: '14px',
81
89
  opacity: (isAutoConnecting ||
82
90
  (message.button === 'connectWallet' && Boolean(hitAddress)) ||
83
91
  (message.button === 'signIn' && !isNeedSignInWithWallet) ||
84
- (message.button === 'enableAIT' && (isAITLoading || isAITEnabling))) ? 0.8 : 1
92
+ (message.button === 'enableAIT' && (isAITLoading || isAITEnabling ||
93
+ (message.metadata?.toolName && permissions.includes(message.metadata.toolName))))) ? 0.8 : 1
85
94
  }, children: isAutoConnecting ? 'Connecting...' :
86
95
  message.button === 'connectWallet' ? (Boolean(hitAddress) ? 'Connected' : 'Connect Wallet') :
87
96
  message.button === 'signIn' ? (!isNeedSignInWithWallet ? 'Signed In' : 'Sign In') :
88
- message.button === 'enableAIT' ? ((isAITLoading || isAITEnabling) ? 'Enabling...' : 'Enable AIT Permissions') : message.button }) }))] }), message.role === 'assistant' && message.metadata?.model && (_jsx("div", { style: {
97
+ message.button === 'enableAIT' ?
98
+ ((isAITLoading || isAITEnabling) ? 'Enabling...' :
99
+ (message.metadata?.toolName && permissions.includes(message.metadata.toolName)) ? 'AIT Enabled' : 'Enable AIT Permissions') :
100
+ message.button }) }))] }), message.role === 'assistant' && message.metadata?.model && (_jsx("div", { style: {
89
101
  display: 'flex',
90
102
  alignItems: 'center',
91
103
  marginTop: '4px',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bytexbyte/nxtlinq-ai-agent-sdk",
3
- "version": "1.4.5",
3
+ "version": "1.4.6",
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",