@bytexbyte/nxtlinq-ai-agent-ui-react-development 0.4.8 → 0.4.9
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/context/ChatBotContext.d.ts.map +1 -1
- package/dist/context/ChatBotContext.js +18 -35
- package/dist/types/ChatBotTypes.d.ts +1 -1
- package/dist/types/ChatBotTypes.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/context/ChatBotContext.tsx +20 -49
- package/src/types/ChatBotTypes.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatBotContext.d.ts","sourceRoot":"","sources":["../../src/context/ChatBotContext.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA+B/B,OAAO,EAEL,kBAAkB,EAClB,YAAY,EAEb,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatBotContext.d.ts","sourceRoot":"","sources":["../../src/context/ChatBotContext.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA+B/B,OAAO,EAEL,kBAAkB,EAClB,YAAY,EAEb,MAAM,uBAAuB,CAAC;AAuB/B,eAAO,MAAM,UAAU,0BAMtB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA8+FlD,CAAC"}
|
|
@@ -10,7 +10,7 @@ import { AuthorizationLoadingState } from '../authorizationLoadingState';
|
|
|
10
10
|
import { PendingTextToolRetryController } from '../pendingTextToolRetry';
|
|
11
11
|
import { completePiiScan } from '../piiMessageState';
|
|
12
12
|
import { filterSuggestions } from '../suggestionState';
|
|
13
|
-
import {
|
|
13
|
+
import { RuntimeAITMutationQueue, RuntimeAITRecomputeCoordinator, StaleRuntimeAITResponseError, runtimeAITContextKey, runtimeAITSubjectKey, runtimeAuthorizationMatchesContext, runtimeAuthorizationState, unavailableRuntimeAuthorization, useProviderRuntimeCommit, useRuntimeAITContextCommit, } from '../permissionState';
|
|
14
14
|
const MIC_ENABLED_SESSION_KEY = 'chatbot-mic-enabled';
|
|
15
15
|
const ChatBotContext = React.createContext(undefined);
|
|
16
16
|
export const useChatBot = () => {
|
|
@@ -938,30 +938,23 @@ customError, voiceThresholds, debugVoiceRms = false, sttGlossary, }) => {
|
|
|
938
938
|
setRuntimeAuthorizationContextKey(activeContext ? runtimeAITContextKey(activeContext) : null);
|
|
939
939
|
}, []);
|
|
940
940
|
useRuntimeAITContextCommit(runtimeRecomputeCoordinatorRef.current, runtimeContext, invalidateCommittedRuntimeContext);
|
|
941
|
-
const
|
|
941
|
+
const readRuntimeAIT = React.useCallback(async (context) => {
|
|
942
942
|
const capturedContext = {
|
|
943
943
|
controller: context.controller,
|
|
944
944
|
serviceId: context.serviceId,
|
|
945
945
|
...(context.roles !== undefined ? { roles: [...context.roles] } : {}),
|
|
946
946
|
...(context.permissionGroup !== undefined ? { permissionGroup: context.permissionGroup } : {}),
|
|
947
947
|
};
|
|
948
|
-
return runtimeRecomputeCoordinatorRef.current.run(capturedContext, () => nxtlinqApi.ait.
|
|
948
|
+
return runtimeRecomputeCoordinatorRef.current.run(capturedContext, () => nxtlinqApi.ait.readAIT(capturedContext), applyRuntimeResult, clearRuntimeAuthorization);
|
|
949
949
|
}, [applyRuntimeResult, clearRuntimeAuthorization, nxtlinqApi]);
|
|
950
950
|
const queueRuntimeAITRefresh = React.useCallback((context) => runtimeMutationQueueRef.current.run(runtimeAITSubjectKey(context), async () => {
|
|
951
951
|
runtimeRecomputeCoordinatorRef.current.assertContextActive(context);
|
|
952
|
-
return
|
|
953
|
-
}), [
|
|
954
|
-
const
|
|
955
|
-
const activeContext = runtimeRecomputeCoordinatorRef.current.getActiveContext();
|
|
956
|
-
if (!activeContext || runtimeAITSubjectKey(activeContext) !== subjectKey) {
|
|
957
|
-
return;
|
|
958
|
-
}
|
|
959
|
-
await recomputeRuntimeAIT(activeContext);
|
|
960
|
-
}, [recomputeRuntimeAIT]);
|
|
961
|
-
const dispatchRuntimeDenyListReplacement = React.useCallback(async (context, nextDeniedPermissions) => dispatchRuntimeAITCompleteReplacement(runtimeRecomputeCoordinatorRef.current, context, () => nxtlinqApi.ait.updatePermissionDenyList({
|
|
952
|
+
return readRuntimeAIT(context);
|
|
953
|
+
}), [readRuntimeAIT]);
|
|
954
|
+
const replaceRuntimeActivePermissions = React.useCallback(async (context, activePermissions) => runtimeRecomputeCoordinatorRef.current.run(context, () => nxtlinqApi.ait.updateActivePermissions({
|
|
962
955
|
...context,
|
|
963
|
-
|
|
964
|
-
}),
|
|
956
|
+
activePermissions,
|
|
957
|
+
}), applyRuntimeResult, clearRuntimeAuthorization), [applyRuntimeResult, clearRuntimeAuthorization, nxtlinqApi]);
|
|
965
958
|
// Refresh the authoritative runtime AIT state.
|
|
966
959
|
const refreshAIT = async (forceUpdatePermissions = false) => {
|
|
967
960
|
const currentHitAddress = hitAddressRef.current || hitAddress;
|
|
@@ -2281,18 +2274,6 @@ customError, voiceThresholds, debugVoiceRms = false, sttGlossary, }) => {
|
|
|
2281
2274
|
setIsAITEnabling(false);
|
|
2282
2275
|
return false;
|
|
2283
2276
|
}
|
|
2284
|
-
// If we don't have AIT loaded but we have a token, try to refresh it first
|
|
2285
|
-
if (!aitRef.current && nxtlinqAITServiceAccessToken) {
|
|
2286
|
-
try {
|
|
2287
|
-
await refreshAIT();
|
|
2288
|
-
// Wait a bit for AIT to be loaded
|
|
2289
|
-
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
2290
|
-
}
|
|
2291
|
-
catch (error) {
|
|
2292
|
-
// Continue anyway, we'll create a new AIT if needed
|
|
2293
|
-
console.error('Failed to refresh AIT:', error);
|
|
2294
|
-
}
|
|
2295
|
-
}
|
|
2296
2277
|
try {
|
|
2297
2278
|
const context = {
|
|
2298
2279
|
controller: currentHitAddress,
|
|
@@ -2302,13 +2283,19 @@ customError, voiceThresholds, debugVoiceRms = false, sttGlossary, }) => {
|
|
|
2302
2283
|
};
|
|
2303
2284
|
const enabled = await runtimeMutationQueueRef.current.run(runtimeAITSubjectKey(context), async () => {
|
|
2304
2285
|
runtimeRecomputeCoordinatorRef.current.assertContextActive(context);
|
|
2305
|
-
const current = await
|
|
2286
|
+
const current = await readRuntimeAIT(context);
|
|
2306
2287
|
if (!current.maximumPermissions.includes(toolName)) {
|
|
2307
2288
|
return false;
|
|
2308
2289
|
}
|
|
2309
|
-
|
|
2290
|
+
if (current.effectivePermissions.includes(toolName) && current.aitId) {
|
|
2291
|
+
return true;
|
|
2292
|
+
}
|
|
2293
|
+
const nextActivePermissions = Array.from(new Set([
|
|
2294
|
+
...current.effectivePermissions,
|
|
2295
|
+
toolName,
|
|
2296
|
+
]));
|
|
2310
2297
|
runtimeRecomputeCoordinatorRef.current.assertContextActive(context);
|
|
2311
|
-
await
|
|
2298
|
+
await replaceRuntimeActivePermissions(context, nextActivePermissions);
|
|
2312
2299
|
return true;
|
|
2313
2300
|
});
|
|
2314
2301
|
if (!enabled) {
|
|
@@ -2353,15 +2340,11 @@ customError, voiceThresholds, debugVoiceRms = false, sttGlossary, }) => {
|
|
|
2353
2340
|
const checkedPermissions = [...(newPermissions ?? permissions)];
|
|
2354
2341
|
await runtimeMutationQueueRef.current.run(runtimeAITSubjectKey(context), async () => {
|
|
2355
2342
|
runtimeRecomputeCoordinatorRef.current.assertContextActive(context);
|
|
2356
|
-
|
|
2357
|
-
const nextDeniedPermissions = replaceCurrentMaximumDenyList(fresh.deniedPermissions, fresh.maximumPermissions, checkedPermissions);
|
|
2358
|
-
runtimeRecomputeCoordinatorRef.current.assertContextActive(context);
|
|
2359
|
-
await dispatchRuntimeDenyListReplacement(context, nextDeniedPermissions);
|
|
2343
|
+
await replaceRuntimeActivePermissions(context, checkedPermissions);
|
|
2360
2344
|
});
|
|
2361
2345
|
showSuccess('AIT permissions saved successfully! You can now use the AI agent with your configured permissions.');
|
|
2362
2346
|
setShowPermissionForm(false);
|
|
2363
2347
|
setIsPermissionFormOpen(false);
|
|
2364
|
-
await refreshAIT(true);
|
|
2365
2348
|
await retryPendingTextTool();
|
|
2366
2349
|
}
|
|
2367
2350
|
catch (error) {
|
|
@@ -44,7 +44,7 @@ export interface ChatBotProps {
|
|
|
44
44
|
apiSecret?: string;
|
|
45
45
|
serviceToken?: string;
|
|
46
46
|
getAuthToken?: () => Promise<string>;
|
|
47
|
-
environment?: 'production' | 'staging';
|
|
47
|
+
environment?: 'production' | 'staging' | 'local';
|
|
48
48
|
onVerifyWallet?: () => Promise<{
|
|
49
49
|
token: string;
|
|
50
50
|
} | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatBotTypes.d.ts","sourceRoot":"","sources":["../../src/types/ChatBotTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAErI,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;AAGD,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AACD,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,CACV,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,KAAK,IAAI,KACP,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC7B,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,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatBotTypes.d.ts","sourceRoot":"","sources":["../../src/types/ChatBotTypes.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bytexbyte/nxtlinq-ai-agent-ui-react-development",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.9",
|
|
4
4
|
"description": "Official React Web UI for nxtlinq AI Agent — drop-in chat widget",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"react-dom": ">=18.0.0"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@bytexbyte/nxtlinq-ai-agent-core-development": "2.0.
|
|
42
|
-
"@bytexbyte/nxtlinq-ai-agent-web-development": "1.0.
|
|
41
|
+
"@bytexbyte/nxtlinq-ai-agent-core-development": "2.0.4",
|
|
42
|
+
"@bytexbyte/nxtlinq-ai-agent-web-development": "1.0.4",
|
|
43
43
|
"@emotion/react": "^11.14.0",
|
|
44
44
|
"@emotion/styled": "^11.14.1",
|
|
45
45
|
"@mui/icons-material": "^7.2.0",
|
|
@@ -42,9 +42,6 @@ import { PendingTextToolRetryController } from '../pendingTextToolRetry';
|
|
|
42
42
|
import { completePiiScan } from '../piiMessageState';
|
|
43
43
|
import { filterSuggestions } from '../suggestionState';
|
|
44
44
|
import {
|
|
45
|
-
dispatchRuntimeAITCompleteReplacement,
|
|
46
|
-
removeOneDeniedPermission,
|
|
47
|
-
replaceCurrentMaximumDenyList,
|
|
48
45
|
RuntimeAITMutationQueue,
|
|
49
46
|
RuntimeAITRecomputeCoordinator,
|
|
50
47
|
StaleRuntimeAITResponseError,
|
|
@@ -1125,7 +1122,7 @@ export const ChatBotProvider: React.FC<ChatBotProps> = ({
|
|
|
1125
1122
|
invalidateCommittedRuntimeContext,
|
|
1126
1123
|
);
|
|
1127
1124
|
|
|
1128
|
-
const
|
|
1125
|
+
const readRuntimeAIT = React.useCallback(async (context: RuntimeAITContext) => {
|
|
1129
1126
|
const capturedContext: RuntimeAITContext = {
|
|
1130
1127
|
controller: context.controller,
|
|
1131
1128
|
serviceId: context.serviceId,
|
|
@@ -1134,7 +1131,7 @@ export const ChatBotProvider: React.FC<ChatBotProps> = ({
|
|
|
1134
1131
|
};
|
|
1135
1132
|
return runtimeRecomputeCoordinatorRef.current.run(
|
|
1136
1133
|
capturedContext,
|
|
1137
|
-
() => nxtlinqApi.ait.
|
|
1134
|
+
() => nxtlinqApi.ait.readAIT(capturedContext),
|
|
1138
1135
|
applyRuntimeResult,
|
|
1139
1136
|
clearRuntimeAuthorization,
|
|
1140
1137
|
);
|
|
@@ -1145,33 +1142,24 @@ export const ChatBotProvider: React.FC<ChatBotProps> = ({
|
|
|
1145
1142
|
runtimeAITSubjectKey(context),
|
|
1146
1143
|
async () => {
|
|
1147
1144
|
runtimeRecomputeCoordinatorRef.current.assertContextActive(context);
|
|
1148
|
-
return
|
|
1145
|
+
return readRuntimeAIT(context);
|
|
1149
1146
|
},
|
|
1150
1147
|
),
|
|
1151
|
-
[
|
|
1148
|
+
[readRuntimeAIT],
|
|
1152
1149
|
);
|
|
1153
1150
|
|
|
1154
|
-
const
|
|
1155
|
-
const activeContext = runtimeRecomputeCoordinatorRef.current.getActiveContext();
|
|
1156
|
-
if (!activeContext || runtimeAITSubjectKey(activeContext) !== subjectKey) {
|
|
1157
|
-
return;
|
|
1158
|
-
}
|
|
1159
|
-
await recomputeRuntimeAIT(activeContext);
|
|
1160
|
-
}, [recomputeRuntimeAIT]);
|
|
1161
|
-
|
|
1162
|
-
const dispatchRuntimeDenyListReplacement = React.useCallback(async (
|
|
1151
|
+
const replaceRuntimeActivePermissions = React.useCallback(async (
|
|
1163
1152
|
context: RuntimeAITContext,
|
|
1164
|
-
|
|
1165
|
-
) =>
|
|
1166
|
-
runtimeRecomputeCoordinatorRef.current,
|
|
1153
|
+
activePermissions: string[],
|
|
1154
|
+
) => runtimeRecomputeCoordinatorRef.current.run(
|
|
1167
1155
|
context,
|
|
1168
|
-
() => nxtlinqApi.ait.
|
|
1156
|
+
() => nxtlinqApi.ait.updateActivePermissions({
|
|
1169
1157
|
...context,
|
|
1170
|
-
|
|
1158
|
+
activePermissions,
|
|
1171
1159
|
}),
|
|
1172
|
-
|
|
1160
|
+
applyRuntimeResult,
|
|
1173
1161
|
clearRuntimeAuthorization,
|
|
1174
|
-
), [
|
|
1162
|
+
), [applyRuntimeResult, clearRuntimeAuthorization, nxtlinqApi]);
|
|
1175
1163
|
|
|
1176
1164
|
// Refresh the authoritative runtime AIT state.
|
|
1177
1165
|
const refreshAIT = async (forceUpdatePermissions = false) => {
|
|
@@ -2617,18 +2605,6 @@ export const ChatBotProvider: React.FC<ChatBotProps> = ({
|
|
|
2617
2605
|
return false;
|
|
2618
2606
|
}
|
|
2619
2607
|
|
|
2620
|
-
// If we don't have AIT loaded but we have a token, try to refresh it first
|
|
2621
|
-
if (!aitRef.current && nxtlinqAITServiceAccessToken) {
|
|
2622
|
-
try {
|
|
2623
|
-
await refreshAIT();
|
|
2624
|
-
// Wait a bit for AIT to be loaded
|
|
2625
|
-
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
2626
|
-
} catch (error) {
|
|
2627
|
-
// Continue anyway, we'll create a new AIT if needed
|
|
2628
|
-
console.error('Failed to refresh AIT:', error);
|
|
2629
|
-
}
|
|
2630
|
-
}
|
|
2631
|
-
|
|
2632
2608
|
try {
|
|
2633
2609
|
const context: RuntimeAITContext = {
|
|
2634
2610
|
controller: currentHitAddress,
|
|
@@ -2640,16 +2616,19 @@ export const ChatBotProvider: React.FC<ChatBotProps> = ({
|
|
|
2640
2616
|
runtimeAITSubjectKey(context),
|
|
2641
2617
|
async () => {
|
|
2642
2618
|
runtimeRecomputeCoordinatorRef.current.assertContextActive(context);
|
|
2643
|
-
const current = await
|
|
2619
|
+
const current = await readRuntimeAIT(context);
|
|
2644
2620
|
if (!current.maximumPermissions.includes(toolName)) {
|
|
2645
2621
|
return false;
|
|
2646
2622
|
}
|
|
2647
|
-
|
|
2648
|
-
|
|
2623
|
+
if (current.effectivePermissions.includes(toolName) && current.aitId) {
|
|
2624
|
+
return true;
|
|
2625
|
+
}
|
|
2626
|
+
const nextActivePermissions = Array.from(new Set([
|
|
2627
|
+
...current.effectivePermissions,
|
|
2649
2628
|
toolName,
|
|
2650
|
-
);
|
|
2629
|
+
]));
|
|
2651
2630
|
runtimeRecomputeCoordinatorRef.current.assertContextActive(context);
|
|
2652
|
-
await
|
|
2631
|
+
await replaceRuntimeActivePermissions(context, nextActivePermissions);
|
|
2653
2632
|
return true;
|
|
2654
2633
|
},
|
|
2655
2634
|
);
|
|
@@ -2695,20 +2674,12 @@ export const ChatBotProvider: React.FC<ChatBotProps> = ({
|
|
|
2695
2674
|
runtimeAITSubjectKey(context),
|
|
2696
2675
|
async () => {
|
|
2697
2676
|
runtimeRecomputeCoordinatorRef.current.assertContextActive(context);
|
|
2698
|
-
|
|
2699
|
-
const nextDeniedPermissions = replaceCurrentMaximumDenyList(
|
|
2700
|
-
fresh.deniedPermissions,
|
|
2701
|
-
fresh.maximumPermissions,
|
|
2702
|
-
checkedPermissions,
|
|
2703
|
-
);
|
|
2704
|
-
runtimeRecomputeCoordinatorRef.current.assertContextActive(context);
|
|
2705
|
-
await dispatchRuntimeDenyListReplacement(context, nextDeniedPermissions);
|
|
2677
|
+
await replaceRuntimeActivePermissions(context, checkedPermissions);
|
|
2706
2678
|
},
|
|
2707
2679
|
);
|
|
2708
2680
|
showSuccess('AIT permissions saved successfully! You can now use the AI agent with your configured permissions.');
|
|
2709
2681
|
setShowPermissionForm(false);
|
|
2710
2682
|
setIsPermissionFormOpen(false);
|
|
2711
|
-
await refreshAIT(true);
|
|
2712
2683
|
await retryPendingTextTool();
|
|
2713
2684
|
} catch (error) {
|
|
2714
2685
|
if (!(error instanceof StaleRuntimeAITResponseError)) {
|
|
@@ -52,7 +52,7 @@ export interface ChatBotProps {
|
|
|
52
52
|
apiSecret?: string;
|
|
53
53
|
serviceToken?: string;
|
|
54
54
|
getAuthToken?: () => Promise<string>;
|
|
55
|
-
environment?: 'production' | 'staging'; // API environment (default: production)
|
|
55
|
+
environment?: 'production' | 'staging' | 'local'; // API environment (default: production)
|
|
56
56
|
onVerifyWallet?: () => Promise<{
|
|
57
57
|
token: string;
|
|
58
58
|
} | undefined>;
|