local-operator-ui 0.7.3 → 0.7.4
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/out/main/index.jsc +0 -0
- package/out/preload/index.jsc +0 -0
- package/out/renderer/assets/{index-CUWbsc3s.js → index-BpktHwp9.js} +1 -1
- package/out/renderer/assets/{index-Bxd9cfRL.js → index-CXyUnv28.js} +420 -237
- package/out/renderer/assets/{index-DlgVvD7O.js → index-D4xePR3Q.js} +1 -1
- package/out/renderer/index.html +1 -1
- package/package.json +1 -1
package/out/main/index.jsc
CHANGED
|
Binary file
|
package/out/preload/index.jsc
CHANGED
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { L as LRParser, E as ExternalTokenizer, a as LocalTokenGroup, s as styleTags, C as ContextTracker, t as tags, b as LRLanguage, c as snippetCompletion, d as LanguageSupport, i as ifNotIn, e as completeFromList, f as indentNodeProp, g as foldNodeProp, h as continuedIndent, j as delimitedIndent, k as flatIndent, l as foldInside, m as syntaxTree, N as NodeWeakMap, I as IterMode } from "./index-
|
|
1
|
+
import { L as LRParser, E as ExternalTokenizer, a as LocalTokenGroup, s as styleTags, C as ContextTracker, t as tags, b as LRLanguage, c as snippetCompletion, d as LanguageSupport, i as ifNotIn, e as completeFromList, f as indentNodeProp, g as foldNodeProp, h as continuedIndent, j as delimitedIndent, k as flatIndent, l as foldInside, m as syntaxTree, N as NodeWeakMap, I as IterMode } from "./index-CXyUnv28.js";
|
|
2
2
|
import "./fonts-BAmz1ETd.js";
|
|
3
3
|
const insertedSemi = 177, space$1 = 179, identifier = 184, String = 12, closeParen$1 = 13, Number = 17, Rune = 20, closeBrace$1 = 25, closeBracket = 53, IncDecOp = 95, _return = 142, _break = 144, _continue = 145, fallthrough = 148;
|
|
4
4
|
const newline = 10, carriageReturn = 13, space = 32, tab = 9, slash = 47, closeParen = 41, closeBrace = 125;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-BpktHwp9.js","./fonts-BAmz1ETd.js","./fonts-B9KBGB-g.css","./index-D4xePR3Q.js","./pug-By0kVCfm.js","./javascript-C3MnDRiU.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import { c as createStyled, r as resolveProps, u as useTheme, a as reactExports, b as clsx, d as useForkRef, e as extendSxProp, j as jsxRuntimeExports, h as handleBreakpoints, f as resolveBreakpointValues, g as createUnarySpacing, i as deepmerge, m as mergeBreakpointsInOrder, k as composeClasses, l as generateUtilityClass, n as createTheme$1, o as getValue, R as React, p as getDefaultExportFromCjs, q as requireReactDom, s as React$1, t as generateUtilityClasses, v as useDefaultProps, w as styled$1, x as capitalize, y as memoTheme, _ as _inheritsLoose, z as _objectWithoutPropertiesLoose$i, T as TransitionGroupContext, A as duration, B as useTheme$1, C as useTimeout, D as useId, E as ButtonBase, F as alpha$1, G as createSimplePaletteValueFilter, H as CircularProgress, P as Paper, I as darken, J as lighten, K as useEventCallback, L as useEnhancedEffect, M as useRtl, N as globalCss, O as formatMuiErrorMessage, Q as rootShouldForwardProp, S as Typography, U as getPath$2, V as isFocusVisible, W as typographyClasses, X as slotShouldForwardProp, Y as css$1, Z as keyframes, $ as clamp, a0 as emphasize, a1 as Timeout, a2 as Button, a3 as Box, a4 as FontAwesomeIcon, a5 as faExclamationTriangle, a6 as DEFAULT_THEME, a7 as faChevronLeft, a8 as faChevronRight, a9 as faRobot, aa as faCheck, ab as faTimes, ac as faEraser, ad as faPen, ae as faFileImport, af as faUpload, ag as requireReact, ah as LinearProgress, ai as faComment, aj as faSave, ak as faEdit, al as faTrashAlt, am as faComments, an as faInfoCircle, ao as faGear, ap as faPlus, aq as faServer, ar as faStar, as as faTag, at as faIdCard, au as faCalendarAlt, av as faCodeBranch, aw as faShieldAlt, ax as faArrowLeft, ay as faClock, az as faHome, aA as faDownload, aB as faFileAlt, aC as faDesktop, aD as faImage, aE as faMusic, aF as faVideo, aG as faLaptop, aH as faUsers, aI as faDatabase, aJ as faBoxOpen, aK as faBook, aL as faHdd, aM as faBox, aN as faArchive, aO as faNetworkWired, aP as faFolder, aQ as faFolderOpen, aR as faFolderTree, aS as faChevronDown, aT as faTools, aU as _extends$u, aV as faSliders, aW as faTrash, aX as faArrowDown, aY as faPaperclip, aZ as faStop, a_ as faPaperPlane, a$ as faChevronUp, b0 as faQuestion, b1 as faFile, b2 as faExclamationCircle, b3 as faLightbulb, b4 as faCode, b5 as faCommentDots, b6 as faShare, b7 as faPencilAlt, b8 as faUser, b9 as faCopy, ba as isDevelopmentMode, bb as faCommentSlash, bc as faArrowRight, bd as faBrain, be as faWandMagicSparkles, bf as faExternalLinkAlt, bg as faKey, bh as radientTheme, bi as faGlobe, bj as faSearch, bk as commonjsGlobal, bl as PropTypes, bm as faLock, bn as faSignOut, bo as themes, bp as faMoon, bq as faSun, br as faHexagonNodes, bs as faSkull, bt as faLeaf, bu as faMountain, bv as faFire, bw as faIcicles, bx as faEnvelope, by as faHistory, bz as faListAlt, bA as faAdjust, bB as faCreditCard, bC as faPlusCircle, bD as faChartLine, bE as faShield, bF as library$1, bG as icons$1, bH as CssBaseline, bI as ThemeProvider$1, bJ as getTheme, bK as ReactDOM$1, bL as ErrorBoundary } from "./fonts-BAmz1ETd.js";
|
|
3
3
|
const styled = createStyled();
|
|
4
4
|
function getThemeProps(params) {
|
|
@@ -22596,7 +22596,7 @@ const styledRootConfig = {
|
|
|
22596
22596
|
slot: "Root"
|
|
22597
22597
|
};
|
|
22598
22598
|
const StyledInput$1 = styled$1(Input, styledRootConfig)("");
|
|
22599
|
-
const StyledOutlinedInput = styled$1(OutlinedInput, styledRootConfig)("");
|
|
22599
|
+
const StyledOutlinedInput$1 = styled$1(OutlinedInput, styledRootConfig)("");
|
|
22600
22600
|
const StyledFilledInput = styled$1(FilledInput, styledRootConfig)("");
|
|
22601
22601
|
const Select = /* @__PURE__ */ reactExports.forwardRef(function Select2(inProps, ref) {
|
|
22602
22602
|
const props2 = useDefaultProps({
|
|
@@ -22649,7 +22649,7 @@ const Select = /* @__PURE__ */ reactExports.forwardRef(function Select2(inProps,
|
|
|
22649
22649
|
standard: /* @__PURE__ */ jsxRuntimeExports.jsx(StyledInput$1, {
|
|
22650
22650
|
ownerState
|
|
22651
22651
|
}),
|
|
22652
|
-
outlined: /* @__PURE__ */ jsxRuntimeExports.jsx(StyledOutlinedInput, {
|
|
22652
|
+
outlined: /* @__PURE__ */ jsxRuntimeExports.jsx(StyledOutlinedInput$1, {
|
|
22653
22653
|
label,
|
|
22654
22654
|
ownerState
|
|
22655
22655
|
}),
|
|
@@ -35513,19 +35513,48 @@ const ChatLayout = ({ sidebar, content: content2 }) => {
|
|
|
35513
35513
|
] });
|
|
35514
35514
|
};
|
|
35515
35515
|
const DEFAULT_DEFER_TIMELINE_MS = 48 * 60 * 60 * 1e3;
|
|
35516
|
+
var UpdateType = /* @__PURE__ */ ((UpdateType2) => {
|
|
35517
|
+
UpdateType2["UI"] = "ui";
|
|
35518
|
+
UpdateType2["BACKEND"] = "backend";
|
|
35519
|
+
return UpdateType2;
|
|
35520
|
+
})(UpdateType || {});
|
|
35516
35521
|
const useDeferredUpdatesStore = create$1()(
|
|
35517
35522
|
persist(
|
|
35518
35523
|
(set, get2) => ({
|
|
35519
|
-
|
|
35520
|
-
|
|
35521
|
-
|
|
35522
|
-
|
|
35523
|
-
|
|
35524
|
-
|
|
35525
|
-
|
|
35524
|
+
uiDeferredVersion: null,
|
|
35525
|
+
uiDeferredAt: null,
|
|
35526
|
+
backendDeferredVersion: null,
|
|
35527
|
+
backendDeferredAt: null,
|
|
35528
|
+
hydrated: false,
|
|
35529
|
+
deferUpdate: (type2, version2) => {
|
|
35530
|
+
if (type2 === "ui") {
|
|
35531
|
+
set({
|
|
35532
|
+
uiDeferredVersion: version2,
|
|
35533
|
+
uiDeferredAt: Date.now()
|
|
35534
|
+
});
|
|
35535
|
+
} else {
|
|
35536
|
+
set({
|
|
35537
|
+
backendDeferredVersion: version2,
|
|
35538
|
+
backendDeferredAt: Date.now()
|
|
35539
|
+
});
|
|
35540
|
+
}
|
|
35526
35541
|
},
|
|
35527
|
-
shouldShowUpdate: (version2) => {
|
|
35528
|
-
const {
|
|
35542
|
+
shouldShowUpdate: (type2, version2) => {
|
|
35543
|
+
const {
|
|
35544
|
+
uiDeferredVersion,
|
|
35545
|
+
uiDeferredAt,
|
|
35546
|
+
backendDeferredVersion,
|
|
35547
|
+
backendDeferredAt
|
|
35548
|
+
} = get2();
|
|
35549
|
+
let deferredVersion;
|
|
35550
|
+
let deferredAt;
|
|
35551
|
+
if (type2 === "ui") {
|
|
35552
|
+
deferredVersion = uiDeferredVersion;
|
|
35553
|
+
deferredAt = uiDeferredAt;
|
|
35554
|
+
} else {
|
|
35555
|
+
deferredVersion = backendDeferredVersion;
|
|
35556
|
+
deferredAt = backendDeferredAt;
|
|
35557
|
+
}
|
|
35529
35558
|
if (!deferredVersion || !deferredAt) {
|
|
35530
35559
|
return true;
|
|
35531
35560
|
}
|
|
@@ -35536,15 +35565,31 @@ const useDeferredUpdatesStore = create$1()(
|
|
|
35536
35565
|
const timeElapsed = now - deferredAt;
|
|
35537
35566
|
return timeElapsed > DEFAULT_DEFER_TIMELINE_MS;
|
|
35538
35567
|
},
|
|
35539
|
-
clearDeferredUpdate: () => {
|
|
35540
|
-
|
|
35541
|
-
|
|
35542
|
-
|
|
35543
|
-
|
|
35568
|
+
clearDeferredUpdate: (type2) => {
|
|
35569
|
+
if (type2 === "ui") {
|
|
35570
|
+
set({
|
|
35571
|
+
uiDeferredVersion: null,
|
|
35572
|
+
uiDeferredAt: null
|
|
35573
|
+
});
|
|
35574
|
+
} else if (type2 === "backend") {
|
|
35575
|
+
set({
|
|
35576
|
+
backendDeferredVersion: null,
|
|
35577
|
+
backendDeferredAt: null
|
|
35578
|
+
});
|
|
35579
|
+
} else {
|
|
35580
|
+
throw new Error(`Invalid update type: ${type2}`);
|
|
35581
|
+
}
|
|
35544
35582
|
}
|
|
35545
35583
|
}),
|
|
35546
35584
|
{
|
|
35547
|
-
name: "deferred-updates-storage"
|
|
35585
|
+
name: "deferred-updates-storage",
|
|
35586
|
+
onRehydrateStorage: () => (store) => {
|
|
35587
|
+
if (store && typeof store === "object" && "setState" in store && typeof store.setState === "function") {
|
|
35588
|
+
store.setState({
|
|
35589
|
+
hydrated: true
|
|
35590
|
+
});
|
|
35591
|
+
}
|
|
35592
|
+
}
|
|
35548
35593
|
}
|
|
35549
35594
|
)
|
|
35550
35595
|
);
|
|
@@ -35607,7 +35652,8 @@ const CheckForUpdatesButton = () => {
|
|
|
35607
35652
|
try {
|
|
35608
35653
|
setChecking(true);
|
|
35609
35654
|
manualCheckRef.current = true;
|
|
35610
|
-
clearDeferredUpdate();
|
|
35655
|
+
clearDeferredUpdate(UpdateType.UI);
|
|
35656
|
+
clearDeferredUpdate(UpdateType.BACKEND);
|
|
35611
35657
|
await window.api.updater.checkForAllUpdates();
|
|
35612
35658
|
} catch (error) {
|
|
35613
35659
|
setSnackbarMessage(
|
|
@@ -36946,39 +36992,58 @@ const useJobPolling = ({
|
|
|
36946
36992
|
queryFn: async () => {
|
|
36947
36993
|
if (!currentJobId) return null;
|
|
36948
36994
|
const client2 = createLocalOperatorClient(apiConfig.baseUrl);
|
|
36949
|
-
|
|
36950
|
-
|
|
36995
|
+
try {
|
|
36996
|
+
const response = await client2.jobs.getJobStatus(currentJobId);
|
|
36997
|
+
return response.result;
|
|
36998
|
+
} catch (err) {
|
|
36999
|
+
const errorObj = err;
|
|
37000
|
+
if (errorObj?.response?.status === 404 || errorObj?.status === 404 || errorObj?.message?.toString().includes("404")) {
|
|
37001
|
+
return { status: "not_found" };
|
|
37002
|
+
}
|
|
37003
|
+
throw err;
|
|
37004
|
+
}
|
|
36951
37005
|
},
|
|
36952
|
-
// Only run the query if we have a job ID and server is online (bypass internet check)
|
|
36953
37006
|
enabled: shouldEnableQuery({ bypassInternetCheck: true }) && !!currentJobId,
|
|
36954
|
-
// Poll every 1 second while job is active
|
|
36955
37007
|
refetchInterval: currentJobId ? 1e3 : false,
|
|
36956
37008
|
refetchIntervalInBackground: false,
|
|
36957
37009
|
refetchOnWindowFocus: true,
|
|
36958
|
-
// Don't cache the result
|
|
36959
37010
|
gcTime: 0,
|
|
36960
37011
|
staleTime: 0,
|
|
36961
|
-
// Retry failed requests to ensure polling continues
|
|
36962
37012
|
retry: true,
|
|
36963
37013
|
retryDelay: 1e3
|
|
36964
37014
|
});
|
|
37015
|
+
function isJobDetails(data2) {
|
|
37016
|
+
return typeof data2 === "object" && data2 !== null && "id" in data2 && typeof data2.id === "string";
|
|
37017
|
+
}
|
|
36965
37018
|
reactExports.useEffect(() => {
|
|
36966
|
-
if (!
|
|
36967
|
-
|
|
36968
|
-
|
|
36969
|
-
|
|
36970
|
-
|
|
36971
|
-
|
|
36972
|
-
}
|
|
36973
|
-
if (jobData.status === "processing") {
|
|
36974
|
-
const debounceTimeout = setTimeout(() => {
|
|
36975
|
-
updateConversationMessages(conversationId);
|
|
36976
|
-
}, 500);
|
|
36977
|
-
return () => clearTimeout(debounceTimeout);
|
|
36978
|
-
}
|
|
36979
|
-
if (jobData.status === "completed" || jobData.status === "failed") {
|
|
36980
|
-
handleJobCompletion(jobData);
|
|
37019
|
+
if (!conversationId) return void 0;
|
|
37020
|
+
if (jobData && jobData.status === "not_found") {
|
|
37021
|
+
(async () => {
|
|
37022
|
+
await updateConversationMessages(conversationId);
|
|
37023
|
+
setCurrentJobId(null);
|
|
37024
|
+
setIsLoading(false);
|
|
36981
37025
|
setCurrentExecution(null);
|
|
37026
|
+
})();
|
|
37027
|
+
return;
|
|
37028
|
+
}
|
|
37029
|
+
if (!jobData) return void 0;
|
|
37030
|
+
if (isJobDetails(jobData)) {
|
|
37031
|
+
const jobDataSignature = `${jobData.id}-${jobData.status}-${dataUpdatedAt}`;
|
|
37032
|
+
if (jobDataSignature !== lastProcessedJobDataRef.current) {
|
|
37033
|
+
lastProcessedJobDataRef.current = jobDataSignature;
|
|
37034
|
+
if (jobData.current_execution) {
|
|
37035
|
+
setCurrentExecution(jobData.current_execution);
|
|
37036
|
+
}
|
|
37037
|
+
if (jobData.status === "processing") {
|
|
37038
|
+
const debounceTimeout = setTimeout(() => {
|
|
37039
|
+
updateConversationMessages(conversationId);
|
|
37040
|
+
}, 500);
|
|
37041
|
+
return () => clearTimeout(debounceTimeout);
|
|
37042
|
+
}
|
|
37043
|
+
if (jobData.status === "completed" || jobData.status === "failed") {
|
|
37044
|
+
handleJobCompletion(jobData);
|
|
37045
|
+
setCurrentExecution(null);
|
|
37046
|
+
}
|
|
36982
37047
|
}
|
|
36983
37048
|
}
|
|
36984
37049
|
return void 0;
|
|
@@ -36988,7 +37053,6 @@ const useJobPolling = ({
|
|
|
36988
37053
|
handleJobCompletion,
|
|
36989
37054
|
conversationId,
|
|
36990
37055
|
updateConversationMessages,
|
|
36991
|
-
setCurrentExecution,
|
|
36992
37056
|
setCurrentJobId
|
|
36993
37057
|
]);
|
|
36994
37058
|
reactExports.useEffect(() => {
|
|
@@ -36999,10 +37063,21 @@ const useJobPolling = ({
|
|
|
36999
37063
|
}
|
|
37000
37064
|
}
|
|
37001
37065
|
}, [error, currentJobId, queryClient2]);
|
|
37066
|
+
const validJobStatuses = [
|
|
37067
|
+
"pending",
|
|
37068
|
+
"processing",
|
|
37069
|
+
"completed",
|
|
37070
|
+
"failed",
|
|
37071
|
+
"cancelled"
|
|
37072
|
+
];
|
|
37073
|
+
let jobStatus = null;
|
|
37074
|
+
if (jobData && typeof jobData.status === "string" && validJobStatuses.includes(jobData.status)) {
|
|
37075
|
+
jobStatus = jobData.status;
|
|
37076
|
+
}
|
|
37002
37077
|
return {
|
|
37003
37078
|
currentJobId,
|
|
37004
37079
|
setCurrentJobId,
|
|
37005
|
-
jobStatus
|
|
37080
|
+
jobStatus,
|
|
37006
37081
|
isLoading,
|
|
37007
37082
|
setIsLoading,
|
|
37008
37083
|
checkForActiveJobs,
|
|
@@ -39753,7 +39828,7 @@ const StyledIcon$1 = styled$1(FontAwesomeIcon)(({ theme: theme2 }) => ({
|
|
|
39753
39828
|
color: theme2.palette.primary.main,
|
|
39754
39829
|
fontSize: "1.2rem"
|
|
39755
39830
|
}));
|
|
39756
|
-
const StyledTextField$
|
|
39831
|
+
const StyledTextField$4 = styled$1(TextField)(({ theme: theme2 }) => ({
|
|
39757
39832
|
"& .MuiOutlinedInput-root": {
|
|
39758
39833
|
borderRadius: 8,
|
|
39759
39834
|
transition: "all 0.2s ease-in-out",
|
|
@@ -39774,7 +39849,7 @@ const StyledTextField$5 = styled$1(TextField)(({ theme: theme2 }) => ({
|
|
|
39774
39849
|
padding: "12px 14px"
|
|
39775
39850
|
}
|
|
39776
39851
|
}));
|
|
39777
|
-
const NameField = styled$1(StyledTextField$
|
|
39852
|
+
const NameField = styled$1(StyledTextField$4)({
|
|
39778
39853
|
marginBottom: 12,
|
|
39779
39854
|
"& .MuiInputLabel-root": {
|
|
39780
39855
|
transform: "translate(12px, 12px) scale(1)"
|
|
@@ -39903,7 +39978,7 @@ const CreateAgentDialog = ({
|
|
|
39903
39978
|
}
|
|
39904
39979
|
),
|
|
39905
39980
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
39906
|
-
StyledTextField$
|
|
39981
|
+
StyledTextField$4,
|
|
39907
39982
|
{
|
|
39908
39983
|
margin: "dense",
|
|
39909
39984
|
id: "description",
|
|
@@ -39944,7 +40019,7 @@ const LabelIcon$7 = styled$1(Box)({
|
|
|
39944
40019
|
display: "flex",
|
|
39945
40020
|
alignItems: "center"
|
|
39946
40021
|
});
|
|
39947
|
-
const StyledTextField$
|
|
40022
|
+
const StyledTextField$3 = styled$1(TextField)(
|
|
39948
40023
|
({ theme: theme2, multiline }) => ({
|
|
39949
40024
|
"& .MuiOutlinedInput-root": {
|
|
39950
40025
|
borderRadius: 6,
|
|
@@ -40245,7 +40320,7 @@ const EditableField = ({
|
|
|
40245
40320
|
] }),
|
|
40246
40321
|
isEditing ? /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { position: "relative" }, children: [
|
|
40247
40322
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
40248
|
-
StyledTextField$
|
|
40323
|
+
StyledTextField$3,
|
|
40249
40324
|
{
|
|
40250
40325
|
fullWidth: true,
|
|
40251
40326
|
variant: "outlined",
|
|
@@ -40833,12 +40908,12 @@ const StyledSlider = styled$1(Slider)(({ theme: theme2 }) => ({
|
|
|
40833
40908
|
const InputContainer = styled$1(Box)({
|
|
40834
40909
|
display: "flex",
|
|
40835
40910
|
alignItems: "center",
|
|
40836
|
-
minWidth: "
|
|
40837
|
-
//
|
|
40911
|
+
minWidth: "110px"
|
|
40912
|
+
// Increased min-width for wider input
|
|
40838
40913
|
});
|
|
40839
|
-
const StyledTextField$
|
|
40840
|
-
width: "
|
|
40841
|
-
//
|
|
40914
|
+
const StyledTextField$2 = styled$1(TextField)(({ theme: theme2 }) => ({
|
|
40915
|
+
width: "110px",
|
|
40916
|
+
// Increased width for wider input
|
|
40842
40917
|
"& .MuiOutlinedInput-root": {
|
|
40843
40918
|
borderRadius: theme2.shape.borderRadius,
|
|
40844
40919
|
// Standard border radius
|
|
@@ -41021,7 +41096,7 @@ const SliderSetting = ({
|
|
|
41021
41096
|
// Consistent loading indicator size
|
|
41022
41097
|
/* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, { size: 20, sx: { margin: "8px 12px" } })
|
|
41023
41098
|
) : /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
41024
|
-
StyledTextField$
|
|
41099
|
+
StyledTextField$2,
|
|
41025
41100
|
{
|
|
41026
41101
|
value: inputValue,
|
|
41027
41102
|
onChange: handleInputChange,
|
|
@@ -43604,10 +43679,13 @@ const UpdateNotification = ({
|
|
|
43604
43679
|
const [backendUpdateCompleted, setBackendUpdateCompleted] = reactExports.useState(false);
|
|
43605
43680
|
const [manualUpdateRequired, setManualUpdateRequired] = reactExports.useState(false);
|
|
43606
43681
|
const [manualUpdateInfo, setManualUpdateInfo] = reactExports.useState(null);
|
|
43607
|
-
const { shouldShowUpdate, deferUpdate } = useDeferredUpdatesStore();
|
|
43682
|
+
const { shouldShowUpdate, deferUpdate, hydrated } = useDeferredUpdatesStore();
|
|
43608
43683
|
reactExports.useEffect(() => {
|
|
43609
43684
|
window.api.systemInfo.getAppVersion().then((version2) => setAppVersion(version2)).catch(() => setAppVersion("unknown"));
|
|
43610
43685
|
}, []);
|
|
43686
|
+
if (!hydrated) {
|
|
43687
|
+
return null;
|
|
43688
|
+
}
|
|
43611
43689
|
const checkForUpdates = reactExports.useCallback(async () => {
|
|
43612
43690
|
try {
|
|
43613
43691
|
setChecking(true);
|
|
@@ -43655,7 +43733,7 @@ const UpdateNotification = ({
|
|
|
43655
43733
|
}, []);
|
|
43656
43734
|
const handleDeferBackendUpdate = reactExports.useCallback(() => {
|
|
43657
43735
|
if (backendUpdateInfo) {
|
|
43658
|
-
deferUpdate(backendUpdateInfo.latestVersion);
|
|
43736
|
+
deferUpdate(UpdateType.BACKEND, backendUpdateInfo.latestVersion);
|
|
43659
43737
|
setSnackbarOpen(false);
|
|
43660
43738
|
setBackendUpdateAvailable(false);
|
|
43661
43739
|
setBackendUpdateInfo(null);
|
|
@@ -43663,7 +43741,7 @@ const UpdateNotification = ({
|
|
|
43663
43741
|
}, [deferUpdate, backendUpdateInfo]);
|
|
43664
43742
|
const handleDeferUpdate = reactExports.useCallback(() => {
|
|
43665
43743
|
if (updateInfo) {
|
|
43666
|
-
deferUpdate(updateInfo.version);
|
|
43744
|
+
deferUpdate(UpdateType.UI, updateInfo.version);
|
|
43667
43745
|
setSnackbarOpen(false);
|
|
43668
43746
|
setUpdateAvailable(false);
|
|
43669
43747
|
setUpdateDownloaded(false);
|
|
@@ -43672,7 +43750,7 @@ const UpdateNotification = ({
|
|
|
43672
43750
|
reactExports.useEffect(() => {
|
|
43673
43751
|
const removeUpdateAvailableListener = window.api.updater.onUpdateAvailable(
|
|
43674
43752
|
(info) => {
|
|
43675
|
-
if (shouldShowUpdate(info.version)) {
|
|
43753
|
+
if (shouldShowUpdate(UpdateType.UI, info.version)) {
|
|
43676
43754
|
setUpdateAvailable(true);
|
|
43677
43755
|
setUpdateInfo(info);
|
|
43678
43756
|
setSnackbarOpen(true);
|
|
@@ -43685,7 +43763,7 @@ const UpdateNotification = ({
|
|
|
43685
43763
|
});
|
|
43686
43764
|
const removeUpdateDownloadedListener = window.api.updater.onUpdateDownloaded((info) => {
|
|
43687
43765
|
setDownloading(false);
|
|
43688
|
-
if (shouldShowUpdate(info.version)) {
|
|
43766
|
+
if (shouldShowUpdate(UpdateType.UI, info.version)) {
|
|
43689
43767
|
setUpdateDownloaded(true);
|
|
43690
43768
|
setUpdateInfo(info);
|
|
43691
43769
|
setSnackbarOpen(true);
|
|
@@ -43714,7 +43792,7 @@ const UpdateNotification = ({
|
|
|
43714
43792
|
}
|
|
43715
43793
|
);
|
|
43716
43794
|
const removeBackendUpdateAvailableListener = window.api.updater.onBackendUpdateAvailable((info) => {
|
|
43717
|
-
if (shouldShowUpdate(info.latestVersion)) {
|
|
43795
|
+
if (shouldShowUpdate(UpdateType.BACKEND, info.latestVersion)) {
|
|
43718
43796
|
const enhancedInfo = {
|
|
43719
43797
|
...info,
|
|
43720
43798
|
canManageUpdate: !info.updateCommand.includes("manually")
|
|
@@ -49887,7 +49965,7 @@ const MetaInfoContainer$1 = styled$1(Box)(({ theme: theme2 }) => ({
|
|
|
49887
49965
|
color: theme2.palette.text.secondary,
|
|
49888
49966
|
fontSize: "0.875rem"
|
|
49889
49967
|
}));
|
|
49890
|
-
const DescriptionBox$
|
|
49968
|
+
const DescriptionBox$1 = styled$1(Box)(({ theme: theme2 }) => ({
|
|
49891
49969
|
marginTop: theme2.spacing(2),
|
|
49892
49970
|
marginBottom: theme2.spacing(4),
|
|
49893
49971
|
lineHeight: 1.6
|
|
@@ -50137,7 +50215,7 @@ const AgentDetailsPage = () => {
|
|
|
50137
50215
|
")"
|
|
50138
50216
|
] })
|
|
50139
50217
|
] }),
|
|
50140
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(DescriptionBox$
|
|
50218
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(DescriptionBox$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body1", sx: { fontSize: "0.875rem" }, children: agent.description || "No description provided." }) }),
|
|
50141
50219
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Divider, { sx: { my: 3 } }),
|
|
50142
50220
|
/* @__PURE__ */ jsxRuntimeExports.jsx(CommentsSection, { agentId: agent.id }),
|
|
50143
50221
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
@@ -82795,7 +82873,7 @@ const languages = [
|
|
|
82795
82873
|
name: "Go",
|
|
82796
82874
|
extensions: ["go"],
|
|
82797
82875
|
load() {
|
|
82798
|
-
return __vitePreload(() => import("./index-
|
|
82876
|
+
return __vitePreload(() => import("./index-BpktHwp9.js"), true ? __vite__mapDeps([0,1,2]) : void 0, import.meta.url).then((m2) => m2.go());
|
|
82799
82877
|
}
|
|
82800
82878
|
}),
|
|
82801
82879
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -82972,7 +83050,7 @@ const languages = [
|
|
|
82972
83050
|
alias: ["yml"],
|
|
82973
83051
|
extensions: ["yaml", "yml"],
|
|
82974
83052
|
load() {
|
|
82975
|
-
return __vitePreload(() => import("./index-
|
|
83053
|
+
return __vitePreload(() => import("./index-D4xePR3Q.js"), true ? __vite__mapDeps([3,1,2]) : void 0, import.meta.url).then((m2) => m2.yaml());
|
|
82976
83054
|
}
|
|
82977
83055
|
}),
|
|
82978
83056
|
// Legacy modes ported from CodeMirror 5
|
|
@@ -141592,7 +141670,7 @@ const OptionsButton = styled$1(IconButton)(({ theme: theme2 }) => ({
|
|
|
141592
141670
|
transform: "translateY(-1px)"
|
|
141593
141671
|
}
|
|
141594
141672
|
}));
|
|
141595
|
-
const DescriptionBox
|
|
141673
|
+
const DescriptionBox = styled$1(Box)({
|
|
141596
141674
|
display: "flex",
|
|
141597
141675
|
flexDirection: "column",
|
|
141598
141676
|
width: "90%"
|
|
@@ -141626,7 +141704,7 @@ const ChatHeader = ({
|
|
|
141626
141704
|
children: /* @__PURE__ */ jsxRuntimeExports.jsx(Bot, { size: 24 })
|
|
141627
141705
|
}
|
|
141628
141706
|
),
|
|
141629
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(DescriptionBox
|
|
141707
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(DescriptionBox, { children: [
|
|
141630
141708
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
141631
141709
|
Typography,
|
|
141632
141710
|
{
|
|
@@ -142676,7 +142754,7 @@ const SuggestionChip = styled$1(Button)(({ theme: theme2 }) => ({
|
|
|
142676
142754
|
}
|
|
142677
142755
|
}
|
|
142678
142756
|
}));
|
|
142679
|
-
const StyledTextField$
|
|
142757
|
+
const StyledTextField$1 = styled$1(TextField)(({ theme: theme2 }) => ({
|
|
142680
142758
|
flex: 1,
|
|
142681
142759
|
"& .MuiOutlinedInput-root": {
|
|
142682
142760
|
backgroundColor: "transparent",
|
|
@@ -142886,7 +142964,7 @@ const MessageInput = ({
|
|
|
142886
142964
|
}
|
|
142887
142965
|
),
|
|
142888
142966
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
142889
|
-
StyledTextField$
|
|
142967
|
+
StyledTextField$1,
|
|
142890
142968
|
{
|
|
142891
142969
|
fullWidth: true,
|
|
142892
142970
|
placeholder: isInputDisabled ? "Agent is busy" : "Ask me for help",
|
|
@@ -180937,8 +181015,13 @@ const FileAttachment = ({
|
|
|
180937
181015
|
const state = useCanvasStore.getState();
|
|
180938
181016
|
const files = state.conversations[conversationId]?.files ?? [];
|
|
180939
181017
|
const openTabs = state.conversations[conversationId]?.openTabs ?? [];
|
|
180940
|
-
const
|
|
180941
|
-
|
|
181018
|
+
const updatedFiles = (() => {
|
|
181019
|
+
const idx = files.findIndex((d2) => d2.id === docId);
|
|
181020
|
+
if (idx !== -1) {
|
|
181021
|
+
return [...files.slice(0, idx), newDoc, ...files.slice(idx + 1)];
|
|
181022
|
+
}
|
|
181023
|
+
return [...files, newDoc];
|
|
181024
|
+
})();
|
|
180942
181025
|
setFiles(conversationId, updatedFiles);
|
|
180943
181026
|
const existsTab = openTabs.some((t2) => t2.id === docId);
|
|
180944
181027
|
const updatedTabs = existsTab ? openTabs : [...openTabs, { id: docId, title }];
|
|
@@ -182346,6 +182429,47 @@ const getAttachmentUrl = (client, path2) => {
|
|
|
182346
182429
|
};
|
|
182347
182430
|
const MessageItem = reactExports.memo(
|
|
182348
182431
|
({ message: message2, onMessageComplete, isLastMessage, conversationId }) => {
|
|
182432
|
+
const setFiles = useCanvasStore((s2) => s2.setFiles);
|
|
182433
|
+
reactExports.useEffect(() => {
|
|
182434
|
+
if (!message2.files || message2.files.length === 0) return;
|
|
182435
|
+
const state = useCanvasStore.getState();
|
|
182436
|
+
const conv = state.conversations[conversationId];
|
|
182437
|
+
if (!conv) return;
|
|
182438
|
+
const { openTabs, files } = conv;
|
|
182439
|
+
if (!openTabs || openTabs.length === 0) return;
|
|
182440
|
+
(async () => {
|
|
182441
|
+
let updatedFiles = files;
|
|
182442
|
+
let didUpdate = false;
|
|
182443
|
+
for (const filePath of message2.files ?? []) {
|
|
182444
|
+
const normalizedPath = filePath.startsWith("file://") ? filePath.substring(7) : filePath;
|
|
182445
|
+
const tabIsOpen = openTabs.some((tab2) => tab2.id === normalizedPath);
|
|
182446
|
+
if (!tabIsOpen) continue;
|
|
182447
|
+
const fileIdx = updatedFiles.findIndex(
|
|
182448
|
+
(f2) => f2.id === normalizedPath
|
|
182449
|
+
);
|
|
182450
|
+
if (fileIdx === -1) continue;
|
|
182451
|
+
try {
|
|
182452
|
+
const result = await window.api.readFile(normalizedPath);
|
|
182453
|
+
if (result.success) {
|
|
182454
|
+
const currentDoc = updatedFiles[fileIdx];
|
|
182455
|
+
if (currentDoc.content !== result.data) {
|
|
182456
|
+
const updatedDoc = { ...currentDoc, content: result.data };
|
|
182457
|
+
updatedFiles = [
|
|
182458
|
+
...updatedFiles.slice(0, fileIdx),
|
|
182459
|
+
updatedDoc,
|
|
182460
|
+
...updatedFiles.slice(fileIdx + 1)
|
|
182461
|
+
];
|
|
182462
|
+
didUpdate = true;
|
|
182463
|
+
}
|
|
182464
|
+
}
|
|
182465
|
+
} catch (_2) {
|
|
182466
|
+
}
|
|
182467
|
+
}
|
|
182468
|
+
if (didUpdate) {
|
|
182469
|
+
setFiles(conversationId, updatedFiles);
|
|
182470
|
+
}
|
|
182471
|
+
})();
|
|
182472
|
+
}, [message2, conversationId, setFiles]);
|
|
182349
182473
|
const shouldHide = (message2.action === "DONE" || message2.action === "ASK") && message2.execution_type === "action" && message2.task_classification === "conversation" || !message2.message && (!message2.files || message2.files.length === 0) && !message2.code && !message2.stdout && !message2.stderr && !message2.logging && message2.is_complete;
|
|
182350
182474
|
if (shouldHide) {
|
|
182351
182475
|
return null;
|
|
@@ -184084,7 +184208,7 @@ const menuItemSx = (theme2) => ({
|
|
|
184084
184208
|
}
|
|
184085
184209
|
}
|
|
184086
184210
|
});
|
|
184087
|
-
const menuPropsSx = (theme2) => ({
|
|
184211
|
+
const menuPropsSx$1 = (theme2) => ({
|
|
184088
184212
|
PaperProps: {
|
|
184089
184213
|
sx: {
|
|
184090
184214
|
mt: 0.5,
|
|
@@ -184100,8 +184224,6 @@ const RECOMMENDED_AGENT_COUNT = 8;
|
|
|
184100
184224
|
const StyledGridContainer = styled$1(Grid)(({ theme: theme2 }) => ({
|
|
184101
184225
|
overflowY: "auto",
|
|
184102
184226
|
padding: theme2.spacing(2, 0),
|
|
184103
|
-
height: 400,
|
|
184104
|
-
maxHeight: 400,
|
|
184105
184227
|
flexGrow: 1,
|
|
184106
184228
|
width: "100%",
|
|
184107
184229
|
"&::-webkit-scrollbar": {
|
|
@@ -184221,7 +184343,7 @@ const CreateAgentStep = ({
|
|
|
184221
184343
|
] })
|
|
184222
184344
|
}
|
|
184223
184345
|
),
|
|
184224
|
-
!isLoadingAgents && !agentsError && /* @__PURE__ */ jsxRuntimeExports.jsx(StyledGridContainer, { container: true, spacing: 2, children: recommendedAgents.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body1", align: "center", children: "No recommended agents found. You can proceed or add agents later." }) }) : recommendedAgents.map((agent) => /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { item: true, xs: 12, sm: 6, md: 6, lg:
|
|
184346
|
+
!isLoadingAgents && !agentsError && /* @__PURE__ */ jsxRuntimeExports.jsx(StyledGridContainer, { container: true, spacing: 2, children: recommendedAgents.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body1", align: "center", children: "No recommended agents found. You can proceed or add agents later." }) }) : recommendedAgents.map((agent) => /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { item: true, xs: 12, sm: 6, md: 6, lg: 6, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
184225
184347
|
Box,
|
|
184226
184348
|
{
|
|
184227
184349
|
sx: {
|
|
@@ -184536,7 +184658,7 @@ const DefaultModelStep = () => {
|
|
|
184536
184658
|
id: "provider-select",
|
|
184537
184659
|
value: selectedProvider,
|
|
184538
184660
|
onChange: handleProviderChange,
|
|
184539
|
-
MenuProps: menuPropsSx(theme2),
|
|
184661
|
+
MenuProps: menuPropsSx$1(theme2),
|
|
184540
184662
|
children: availableProviders.map((provider) => /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: provider.id, children: provider.name }, provider.id))
|
|
184541
184663
|
}
|
|
184542
184664
|
),
|
|
@@ -184556,7 +184678,7 @@ const DefaultModelStep = () => {
|
|
|
184556
184678
|
id: "model-select",
|
|
184557
184679
|
value: selectedModel,
|
|
184558
184680
|
onChange: handleModelChange,
|
|
184559
|
-
MenuProps: menuPropsSx(theme2),
|
|
184681
|
+
MenuProps: menuPropsSx$1(theme2),
|
|
184560
184682
|
disabled: availableModels.length === 0,
|
|
184561
184683
|
children: [
|
|
184562
184684
|
availableModels.length === 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { disabled: true, value: "", children: "No models found for this provider" }),
|
|
@@ -184859,7 +184981,7 @@ const ModelCredentialStep = () => {
|
|
|
184859
184981
|
id: "credential-select",
|
|
184860
184982
|
value: selectedCredential,
|
|
184861
184983
|
onChange: handleCredentialChange,
|
|
184862
|
-
MenuProps: menuPropsSx(theme2),
|
|
184984
|
+
MenuProps: menuPropsSx$1(theme2),
|
|
184863
184985
|
children: modelProviderCredentials.map((cred) => /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: cred.key, children: cred.name }, cred.key))
|
|
184864
184986
|
}
|
|
184865
184987
|
),
|
|
@@ -185111,22 +185233,7 @@ const RadientChoiceStep = ({
|
|
|
185111
185233
|
"Get started for free with ",
|
|
185112
185234
|
/* @__PURE__ */ jsxRuntimeExports.jsx(RadientPassText, { children: "Radient Pass" })
|
|
185113
185235
|
] }),
|
|
185114
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
185115
|
-
" ",
|
|
185116
|
-
"Batteries included with",
|
|
185117
|
-
" ",
|
|
185118
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
185119
|
-
Typography,
|
|
185120
|
-
{
|
|
185121
|
-
component: "span",
|
|
185122
|
-
fontWeight: "medium",
|
|
185123
|
-
color: radientTheme.palette.primary.main,
|
|
185124
|
-
sx: { fontSize: "inherit" },
|
|
185125
|
-
children: "web search, image generation, site crawling, hundreds of AI models"
|
|
185126
|
-
}
|
|
185127
|
-
),
|
|
185128
|
-
", and more. One API key instead of many, with potential savings when Radient picks the best model to handle each step. Two-click setup, no credit card required."
|
|
185129
|
-
] })
|
|
185236
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(CardSubtitle, { variant: "body2", children: "Designed for best speed, accuracy, and performance with Local Operator. Get access to all tools and models at once, with potential savings when Radient picks the best model to handle each step. Two-click setup, no credit card required." })
|
|
185130
185237
|
] }),
|
|
185131
185238
|
/* @__PURE__ */ jsxRuntimeExports.jsx(CardIcon, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
185132
185239
|
"img",
|
|
@@ -185153,7 +185260,7 @@ const RadientChoiceStep = ({
|
|
|
185153
185260
|
"Set up your own keys ",
|
|
185154
185261
|
/* @__PURE__ */ jsxRuntimeExports.jsx(FreeText, { children: "(Free Forever)" })
|
|
185155
185262
|
] }),
|
|
185156
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(CardSubtitle, { variant: "body2", children: "Full flexibility for technical users. Bring your own API keys for providers like OpenAI, Anthropic,
|
|
185263
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(CardSubtitle, { variant: "body2", children: "Full flexibility for technical users. Bring your own API keys for providers like OpenAI, Anthropic, Tavily API, etc., and manage billing separately." })
|
|
185157
185264
|
] }),
|
|
185158
185265
|
/* @__PURE__ */ jsxRuntimeExports.jsx(CardIcon, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { fontSize: "3.5rem", children: "🔧" }) }),
|
|
185159
185266
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(ChooseOption, { className: "choose-option", children: [
|
|
@@ -185466,7 +185573,7 @@ const SearchApiStep = () => {
|
|
|
185466
185573
|
id: "search-api-select",
|
|
185467
185574
|
value: selectedCredential,
|
|
185468
185575
|
onChange: handleCredentialChange,
|
|
185469
|
-
MenuProps: menuPropsSx(theme2),
|
|
185576
|
+
MenuProps: menuPropsSx$1(theme2),
|
|
185470
185577
|
children: searchApiCredentials.map((cred) => /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: cred.key, children: cred.key === RECOMMENDED_CREDENTIAL ? `${cred.name} (Recommended)` : cred.name }, cred.key))
|
|
185471
185578
|
}
|
|
185472
185579
|
),
|
|
@@ -185755,7 +185862,6 @@ const OnboardingModal = ({ open: open2 }) => {
|
|
|
185755
185862
|
}
|
|
185756
185863
|
} catch (error) {
|
|
185757
185864
|
console.error("Error validating session/fetching user info:", error);
|
|
185758
|
-
showErrorToast("Session validation failed. Please sign in again.");
|
|
185759
185865
|
clearSession();
|
|
185760
185866
|
}
|
|
185761
185867
|
};
|
|
@@ -209383,15 +209489,20 @@ const CredentialCard = ({
|
|
|
209383
209489
|
variant: "outlined",
|
|
209384
209490
|
size: "small",
|
|
209385
209491
|
color: "primary",
|
|
209386
|
-
startIcon: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
209492
|
+
startIcon: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
209493
|
+
FontAwesomeIcon,
|
|
209494
|
+
{
|
|
209495
|
+
icon: faKey,
|
|
209496
|
+
size: "xs",
|
|
209497
|
+
style: { fontSize: "0.875rem" }
|
|
209498
|
+
}
|
|
209499
|
+
),
|
|
209387
209500
|
onClick: () => onAdd?.(credentialKey),
|
|
209388
209501
|
sx: { ...primaryButtonSx, boxShadow: "none" },
|
|
209389
209502
|
children: "Configure"
|
|
209390
209503
|
}
|
|
209391
209504
|
),
|
|
209392
|
-
credInfo.url &&
|
|
209393
|
-
// @ts-ignore
|
|
209394
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: `Get your ${credInfo.name} key`, placement: "top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
209505
|
+
credInfo.url && /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: `Get your ${credInfo.name} key`, placement: "top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
209395
209506
|
IconButton,
|
|
209396
209507
|
{
|
|
209397
209508
|
size: "small",
|
|
@@ -209407,57 +209518,101 @@ const CredentialCard = ({
|
|
|
209407
209518
|
] }) })
|
|
209408
209519
|
] });
|
|
209409
209520
|
};
|
|
209410
|
-
const
|
|
209411
|
-
|
|
209412
|
-
|
|
209413
|
-
}
|
|
209414
|
-
|
|
209415
|
-
|
|
209416
|
-
|
|
209417
|
-
|
|
209418
|
-
|
|
209419
|
-
|
|
209521
|
+
const StyledOutlinedInput = styled$1(OutlinedInput)(({ theme: theme2 }) => ({
|
|
209522
|
+
borderRadius: theme2.shape.borderRadius * 0.75,
|
|
209523
|
+
backgroundColor: theme2.palette.background.paper,
|
|
209524
|
+
border: `1px solid ${theme2.palette.divider}`,
|
|
209525
|
+
minHeight: "40px",
|
|
209526
|
+
height: "40px",
|
|
209527
|
+
fontSize: "0.875rem",
|
|
209528
|
+
paddingRight: 0,
|
|
209529
|
+
"& .MuiOutlinedInput-notchedOutline": {
|
|
209530
|
+
border: "none"
|
|
209420
209531
|
},
|
|
209532
|
+
"& .MuiSelect-select": {
|
|
209533
|
+
display: "flex",
|
|
209534
|
+
alignItems: "center",
|
|
209535
|
+
gap: theme2.spacing(1),
|
|
209536
|
+
fontSize: "0.875rem",
|
|
209537
|
+
padding: theme2.spacing(1, 1.5),
|
|
209538
|
+
height: "calc(40px - 16px)",
|
|
209539
|
+
boxSizing: "border-box"
|
|
209540
|
+
},
|
|
209541
|
+
"& .MuiInputBase-input": {
|
|
209542
|
+
padding: theme2.spacing(1, 1.5),
|
|
209543
|
+
fontSize: "0.875rem",
|
|
209544
|
+
height: "calc(40px - 16px)",
|
|
209545
|
+
boxSizing: "border-box"
|
|
209546
|
+
},
|
|
209547
|
+
"& .MuiInputBase-input::placeholder": {
|
|
209548
|
+
color: theme2.palette.text.disabled,
|
|
209549
|
+
opacity: 1
|
|
209550
|
+
},
|
|
209551
|
+
"&:hover": {
|
|
209552
|
+
borderColor: theme2.palette.text.secondary
|
|
209553
|
+
},
|
|
209554
|
+
"&.Mui-focused": {
|
|
209555
|
+
borderColor: theme2.palette.primary.main,
|
|
209556
|
+
boxShadow: `0 0 0 2px ${theme2.palette.primary.main}33`
|
|
209557
|
+
}
|
|
209558
|
+
}));
|
|
209559
|
+
const menuPropsSx = (theme2) => ({
|
|
209560
|
+
PaperProps: {
|
|
209561
|
+
sx: {
|
|
209562
|
+
borderRadius: theme2.shape.borderRadius * 0.75,
|
|
209563
|
+
boxShadow: theme2.shadows[2],
|
|
209564
|
+
mt: 0.5,
|
|
209565
|
+
"& .MuiMenuItem-root": {
|
|
209566
|
+
fontSize: "0.875rem",
|
|
209567
|
+
minHeight: "40px",
|
|
209568
|
+
px: 2
|
|
209569
|
+
}
|
|
209570
|
+
}
|
|
209571
|
+
}
|
|
209572
|
+
});
|
|
209573
|
+
const textFieldInputSx = (theme2) => ({
|
|
209421
209574
|
"& .MuiOutlinedInput-root": {
|
|
209422
|
-
|
|
209423
|
-
|
|
209424
|
-
}
|
|
209425
|
-
|
|
209575
|
+
borderRadius: theme2.shape.borderRadius * 0.75,
|
|
209576
|
+
backgroundColor: theme2.palette.background.paper,
|
|
209577
|
+
border: `1px solid ${theme2.palette.divider}`,
|
|
209578
|
+
minHeight: "40px",
|
|
209579
|
+
height: "40px",
|
|
209580
|
+
transition: "border-color 0.2s ease, box-shadow 0.2s ease",
|
|
209581
|
+
"&:hover": {
|
|
209426
209582
|
borderColor: theme2.palette.text.secondary
|
|
209427
209583
|
},
|
|
209428
|
-
"&.Mui-focused
|
|
209584
|
+
"&.Mui-focused": {
|
|
209429
209585
|
borderColor: theme2.palette.primary.main,
|
|
209430
|
-
|
|
209586
|
+
boxShadow: `0 0 0 2px ${theme2.palette.primary.main}33`
|
|
209587
|
+
},
|
|
209588
|
+
"& .MuiOutlinedInput-notchedOutline": {
|
|
209589
|
+
border: "none"
|
|
209431
209590
|
}
|
|
209432
209591
|
},
|
|
209433
|
-
"& .
|
|
209592
|
+
"& .MuiInputBase-input": {
|
|
209593
|
+
padding: theme2.spacing(1, 1.5),
|
|
209434
209594
|
fontSize: "0.875rem",
|
|
209435
|
-
"
|
|
209436
|
-
|
|
209437
|
-
}
|
|
209438
|
-
}
|
|
209439
|
-
}));
|
|
209440
|
-
const StyledSelect = styled$1(Select)(({ theme: theme2 }) => ({
|
|
209441
|
-
borderRadius: theme2.shape.borderRadius * 0.75,
|
|
209442
|
-
backgroundColor: theme2.palette.background.paper,
|
|
209443
|
-
"& .MuiOutlinedInput-notchedOutline": {
|
|
209444
|
-
borderColor: theme2.palette.divider
|
|
209595
|
+
height: "calc(40px - 16px)",
|
|
209596
|
+
boxSizing: "border-box"
|
|
209445
209597
|
},
|
|
209446
|
-
"
|
|
209447
|
-
|
|
209598
|
+
"& .MuiInputBase-input::placeholder": {
|
|
209599
|
+
color: theme2.palette.text.disabled,
|
|
209600
|
+
opacity: 1
|
|
209448
209601
|
},
|
|
209449
|
-
"
|
|
209450
|
-
|
|
209602
|
+
"& .MuiFormHelperText-root": {
|
|
209603
|
+
fontSize: "0.75rem",
|
|
209604
|
+
mt: 0.5,
|
|
209605
|
+
ml: 0.5
|
|
209451
209606
|
}
|
|
209452
|
-
})
|
|
209453
|
-
const
|
|
209607
|
+
});
|
|
209608
|
+
const DescriptionBoxSx = (theme2) => ({
|
|
209454
209609
|
marginTop: theme2.spacing(1),
|
|
209455
209610
|
marginBottom: theme2.spacing(2),
|
|
209456
209611
|
padding: theme2.spacing(1.5),
|
|
209457
|
-
backgroundColor: theme2.palette.
|
|
209612
|
+
backgroundColor: alpha$1(theme2.palette.background.default, 0.5),
|
|
209458
209613
|
border: `1px solid ${theme2.palette.divider}`,
|
|
209459
209614
|
borderRadius: theme2.shape.borderRadius * 0.75
|
|
209460
|
-
})
|
|
209615
|
+
});
|
|
209461
209616
|
const CredentialDialog = ({
|
|
209462
209617
|
open: open2,
|
|
209463
209618
|
onClose,
|
|
@@ -209510,6 +209665,21 @@ const CredentialDialog = ({
|
|
|
209510
209665
|
(cred) => cred.key === key
|
|
209511
209666
|
);
|
|
209512
209667
|
const dialogTitle = isEditMode ? "Update Credential" : "Add New Credential";
|
|
209668
|
+
const FieldLabel2 = styled$1("div")(({ theme: theme22 }) => ({
|
|
209669
|
+
fontFamily: theme22.typography.fontFamily,
|
|
209670
|
+
fontSize: "0.875rem",
|
|
209671
|
+
fontWeight: 500,
|
|
209672
|
+
color: theme22.palette.text.secondary,
|
|
209673
|
+
marginBottom: 6,
|
|
209674
|
+
display: "flex",
|
|
209675
|
+
alignItems: "center"
|
|
209676
|
+
}));
|
|
209677
|
+
const LabelIcon2 = styled$1(Box)({
|
|
209678
|
+
marginRight: 8,
|
|
209679
|
+
opacity: 0.9,
|
|
209680
|
+
display: "flex",
|
|
209681
|
+
alignItems: "center"
|
|
209682
|
+
});
|
|
209513
209683
|
const dialogActions = /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
209514
209684
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
209515
209685
|
Button,
|
|
@@ -209556,7 +209726,7 @@ const CredentialDialog = ({
|
|
|
209556
209726
|
}
|
|
209557
209727
|
)
|
|
209558
209728
|
] });
|
|
209559
|
-
return /* @__PURE__ */ jsxRuntimeExports.
|
|
209729
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
209560
209730
|
BaseDialog,
|
|
209561
209731
|
{
|
|
209562
209732
|
open: open2,
|
|
@@ -209565,111 +209735,120 @@ const CredentialDialog = ({
|
|
|
209565
209735
|
actions: dialogActions,
|
|
209566
209736
|
maxWidth: "sm",
|
|
209567
209737
|
fullWidth: true,
|
|
209568
|
-
children: [
|
|
209569
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(Box, {
|
|
209570
|
-
isEditMode ? (
|
|
209571
|
-
// Display the key being edited (non-editable)
|
|
209572
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { mb: 2.5, children: [
|
|
209573
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "overline", color: "text.secondary", children: "Credential Key" }),
|
|
209574
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { fontWeight: 500, children: initialKey })
|
|
209575
|
-
] })
|
|
209576
|
-
) : (
|
|
209577
|
-
// Show selection for adding new credentials
|
|
209578
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
209579
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(StyledFormControl, { fullWidth: true, children: [
|
|
209580
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(InputLabel, { id: "credential-key-label", children: "Credential Type" }),
|
|
209581
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
209582
|
-
StyledSelect,
|
|
209583
|
-
{
|
|
209584
|
-
labelId: "credential-key-label",
|
|
209585
|
-
value: useCustomKey ? "_custom_" : key,
|
|
209586
|
-
label: "Credential Type",
|
|
209587
|
-
onChange: (e3) => {
|
|
209588
|
-
const selectedValue = e3.target.value;
|
|
209589
|
-
if (selectedValue === "_custom_") {
|
|
209590
|
-
setUseCustomKey(true);
|
|
209591
|
-
setKey("");
|
|
209592
|
-
} else {
|
|
209593
|
-
setUseCustomKey(false);
|
|
209594
|
-
setKey(selectedValue);
|
|
209595
|
-
setCustomKey("");
|
|
209596
|
-
}
|
|
209597
|
-
},
|
|
209598
|
-
displayEmpty: !key && !useCustomKey,
|
|
209599
|
-
children: [
|
|
209600
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "", disabled: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx("em", { children: "Select a credential type..." }) }),
|
|
209601
|
-
CREDENTIAL_MANIFEST.map((cred) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
209602
|
-
MenuItem,
|
|
209603
|
-
{
|
|
209604
|
-
value: cred.key,
|
|
209605
|
-
disabled: isExistingKey(cred.key),
|
|
209606
|
-
children: [
|
|
209607
|
-
cred.name,
|
|
209608
|
-
" ",
|
|
209609
|
-
isExistingKey(cred.key) && "(Configured)"
|
|
209610
|
-
]
|
|
209611
|
-
},
|
|
209612
|
-
cred.key
|
|
209613
|
-
)),
|
|
209614
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "_custom_", children: "Custom Credential" })
|
|
209615
|
-
]
|
|
209616
|
-
}
|
|
209617
|
-
)
|
|
209618
|
-
] }),
|
|
209619
|
-
useCustomKey && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
209620
|
-
StyledTextField$1,
|
|
209621
|
-
{
|
|
209622
|
-
label: "Custom Credential Key",
|
|
209623
|
-
fullWidth: true,
|
|
209624
|
-
value: customKey,
|
|
209625
|
-
onChange: (e3) => setCustomKey(e3.target.value),
|
|
209626
|
-
error: isExistingKey(customKey),
|
|
209627
|
-
helperText: isExistingKey(customKey) ? "This credential already exists" : "",
|
|
209628
|
-
required: true,
|
|
209629
|
-
autoFocus: true
|
|
209630
|
-
}
|
|
209631
|
-
),
|
|
209632
|
-
selectedCredentialManifest && !useCustomKey && /* @__PURE__ */ jsxRuntimeExports.jsxs(DescriptionBox, { children: [
|
|
209633
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body2", color: "text.secondary", gutterBottom: true, children: selectedCredentialManifest.description }),
|
|
209634
|
-
selectedCredentialManifest.url && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
209635
|
-
Link,
|
|
209636
|
-
{
|
|
209637
|
-
href: selectedCredentialManifest.url,
|
|
209638
|
-
target: "_blank",
|
|
209639
|
-
rel: "noopener noreferrer",
|
|
209640
|
-
variant: "body2",
|
|
209641
|
-
sx: { display: "inline-flex", alignItems: "center" },
|
|
209642
|
-
children: [
|
|
209643
|
-
"Get your ",
|
|
209644
|
-
selectedCredentialManifest.name,
|
|
209645
|
-
" key"
|
|
209646
|
-
]
|
|
209647
|
-
}
|
|
209648
|
-
)
|
|
209649
|
-
] })
|
|
209650
|
-
] })
|
|
209651
|
-
),
|
|
209738
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { pt: 2 }, children: [
|
|
209739
|
+
isEditMode ? /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { mb: 2.5, children: [
|
|
209652
209740
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
209653
|
-
|
|
209741
|
+
Typography,
|
|
209742
|
+
{
|
|
209743
|
+
variant: "overline",
|
|
209744
|
+
color: "text.secondary",
|
|
209745
|
+
sx: { fontSize: "0.75rem", letterSpacing: 1, fontWeight: 500 },
|
|
209746
|
+
children: "Credential Key"
|
|
209747
|
+
}
|
|
209748
|
+
),
|
|
209749
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { fontWeight: 500, sx: { fontSize: "0.95rem" }, children: initialKey })
|
|
209750
|
+
] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
209751
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(FormControl, { fullWidth: true, sx: { mb: 2.5 }, children: [
|
|
209752
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel2, { children: [
|
|
209753
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(LabelIcon2, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faKey, size: "sm" }) }),
|
|
209754
|
+
"Credential Type"
|
|
209755
|
+
] }),
|
|
209756
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
209757
|
+
Select,
|
|
209758
|
+
{
|
|
209759
|
+
value: useCustomKey ? "_custom_" : key,
|
|
209760
|
+
onChange: (e3) => {
|
|
209761
|
+
const selectedValue = e3.target.value;
|
|
209762
|
+
if (selectedValue === "_custom_") {
|
|
209763
|
+
setUseCustomKey(true);
|
|
209764
|
+
setKey("");
|
|
209765
|
+
} else {
|
|
209766
|
+
setUseCustomKey(false);
|
|
209767
|
+
setKey(selectedValue);
|
|
209768
|
+
setCustomKey("");
|
|
209769
|
+
}
|
|
209770
|
+
},
|
|
209771
|
+
displayEmpty: !key && !useCustomKey,
|
|
209772
|
+
MenuProps: menuPropsSx(theme2),
|
|
209773
|
+
input: /* @__PURE__ */ jsxRuntimeExports.jsx(StyledOutlinedInput, { notched: false, label: void 0 }),
|
|
209774
|
+
children: [
|
|
209775
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "", disabled: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx("em", { children: "Select a credential type..." }) }),
|
|
209776
|
+
CREDENTIAL_MANIFEST.map((cred) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
209777
|
+
MenuItem,
|
|
209778
|
+
{
|
|
209779
|
+
value: cred.key,
|
|
209780
|
+
disabled: isExistingKey(cred.key),
|
|
209781
|
+
children: [
|
|
209782
|
+
cred.name,
|
|
209783
|
+
" ",
|
|
209784
|
+
isExistingKey(cred.key) && "(Configured)"
|
|
209785
|
+
]
|
|
209786
|
+
},
|
|
209787
|
+
cred.key
|
|
209788
|
+
)),
|
|
209789
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(MenuItem, { value: "_custom_", children: "Custom Credential" })
|
|
209790
|
+
]
|
|
209791
|
+
}
|
|
209792
|
+
)
|
|
209793
|
+
] }),
|
|
209794
|
+
useCustomKey && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
209795
|
+
TextField,
|
|
209654
209796
|
{
|
|
209655
|
-
label: "Credential
|
|
209797
|
+
label: "Custom Credential Key",
|
|
209656
209798
|
fullWidth: true,
|
|
209657
|
-
|
|
209658
|
-
value,
|
|
209659
|
-
|
|
209660
|
-
|
|
209661
|
-
if (e3.key === "Enter" && canSave) {
|
|
209662
|
-
handleSave();
|
|
209663
|
-
}
|
|
209664
|
-
},
|
|
209799
|
+
value: customKey,
|
|
209800
|
+
onChange: (e3) => setCustomKey(e3.target.value),
|
|
209801
|
+
error: isExistingKey(customKey),
|
|
209802
|
+
helperText: isExistingKey(customKey) ? "This credential already exists" : "",
|
|
209665
209803
|
required: true,
|
|
209666
|
-
autoFocus:
|
|
209667
|
-
|
|
209804
|
+
autoFocus: true,
|
|
209805
|
+
sx: textFieldInputSx(theme2)
|
|
209668
209806
|
}
|
|
209669
|
-
)
|
|
209807
|
+
),
|
|
209808
|
+
selectedCredentialManifest && !useCustomKey && /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: DescriptionBoxSx(theme2), children: [
|
|
209809
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body2", color: "text.secondary", gutterBottom: true, children: selectedCredentialManifest.description }),
|
|
209810
|
+
selectedCredentialManifest.url && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
209811
|
+
Link,
|
|
209812
|
+
{
|
|
209813
|
+
href: selectedCredentialManifest.url,
|
|
209814
|
+
target: "_blank",
|
|
209815
|
+
rel: "noopener noreferrer",
|
|
209816
|
+
variant: "body2",
|
|
209817
|
+
sx: { display: "inline-flex", alignItems: "center" },
|
|
209818
|
+
children: [
|
|
209819
|
+
"Get your ",
|
|
209820
|
+
selectedCredentialManifest.name,
|
|
209821
|
+
" key"
|
|
209822
|
+
]
|
|
209823
|
+
}
|
|
209824
|
+
)
|
|
209825
|
+
] })
|
|
209670
209826
|
] }),
|
|
209671
|
-
|
|
209672
|
-
|
|
209827
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel2, { children: [
|
|
209828
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(LabelIcon2, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faKey, size: "sm" }) }),
|
|
209829
|
+
"Credential Value"
|
|
209830
|
+
] }),
|
|
209831
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
209832
|
+
TextField,
|
|
209833
|
+
{
|
|
209834
|
+
fullWidth: true,
|
|
209835
|
+
type: "password",
|
|
209836
|
+
value,
|
|
209837
|
+
onChange: (e3) => setValue(e3.target.value),
|
|
209838
|
+
onKeyDown: (e3) => {
|
|
209839
|
+
if (e3.key === "Enter" && canSave) {
|
|
209840
|
+
handleSave();
|
|
209841
|
+
}
|
|
209842
|
+
},
|
|
209843
|
+
required: true,
|
|
209844
|
+
autoFocus: isEditMode,
|
|
209845
|
+
placeholder: "Enter the credential value or API key.",
|
|
209846
|
+
helperText: isEditMode ? `Enter the new value for ${initialKey}` : "Enter the credential value or API key.",
|
|
209847
|
+
sx: textFieldInputSx(theme2),
|
|
209848
|
+
InputLabelProps: { shrink: false }
|
|
209849
|
+
}
|
|
209850
|
+
)
|
|
209851
|
+
] })
|
|
209673
209852
|
}
|
|
209674
209853
|
);
|
|
209675
209854
|
};
|
|
@@ -210259,6 +210438,10 @@ const StyledTextField = styled$1(TextField)(({ theme: theme2 }) => ({
|
|
|
210259
210438
|
fontSize: "0.875rem",
|
|
210260
210439
|
// Consistent font size
|
|
210261
210440
|
lineHeight: 1.5,
|
|
210441
|
+
whiteSpace: "pre-wrap",
|
|
210442
|
+
// Ensure text wraps within the input
|
|
210443
|
+
wordBreak: "break-word",
|
|
210444
|
+
// Break long words to prevent overflow
|
|
210262
210445
|
// Shadcn-like scrollbar
|
|
210263
210446
|
"&::-webkit-scrollbar": {
|
|
210264
210447
|
width: "8px",
|
|
@@ -211606,7 +211789,7 @@ const SettingsPage = () => {
|
|
|
211606
211789
|
{
|
|
211607
211790
|
value: config2.values.conversation_length,
|
|
211608
211791
|
label: "Maximum Conversation History",
|
|
211609
|
-
description: "Number of messages to keep in conversation history for context. More messages will make the agents have longer memory but more expensive to run.",
|
|
211792
|
+
description: "Number of messages to keep in conversation history for context. More messages will make the agents have longer memory but more expensive to run. Recommended: 100",
|
|
211610
211793
|
min: 10,
|
|
211611
211794
|
max: 200,
|
|
211612
211795
|
step: 10,
|
|
@@ -211621,7 +211804,7 @@ const SettingsPage = () => {
|
|
|
211621
211804
|
{
|
|
211622
211805
|
value: config2.values.detail_length,
|
|
211623
211806
|
label: "Detail View Length",
|
|
211624
|
-
description: "Maximum number of messages to show in the detailed conversation view. Messages beyond this limit will be summarized. Shortening this will decrease costs but some important details could get lost from earlier messages.",
|
|
211807
|
+
description: "Maximum number of messages to show in the detailed conversation view. Messages beyond this limit will be summarized. Shortening this will decrease costs but some important details could get lost from earlier messages. Recommended: 20",
|
|
211625
211808
|
min: 10,
|
|
211626
211809
|
max: 100,
|
|
211627
211810
|
step: 5,
|
|
@@ -211636,7 +211819,7 @@ const SettingsPage = () => {
|
|
|
211636
211819
|
{
|
|
211637
211820
|
value: config2.values.max_learnings_history,
|
|
211638
211821
|
label: "Maximum Learnings History",
|
|
211639
|
-
description: "Number of learning items to retain for context and personalization. More items will make the agents acquire a longer history of knowledge from your conversations but more expensive to run.",
|
|
211822
|
+
description: "Number of learning items to retain for context and personalization. More items will make the agents acquire a longer history of knowledge from your conversations but more expensive to run. Recommended: 50",
|
|
211640
211823
|
min: 10,
|
|
211641
211824
|
max: 100,
|
|
211642
211825
|
step: 10,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { L as LRParser, E as ExternalTokenizer, s as styleTags, C as ContextTracker, t as tags, b as LRLanguage, d as LanguageSupport, p as parseMixed, f as indentNodeProp, g as foldNodeProp, j as delimitedIndent, l as foldInside } from "./index-
|
|
1
|
+
import { L as LRParser, E as ExternalTokenizer, s as styleTags, C as ContextTracker, t as tags, b as LRLanguage, d as LanguageSupport, p as parseMixed, f as indentNodeProp, g as foldNodeProp, j as delimitedIndent, l as foldInside } from "./index-CXyUnv28.js";
|
|
2
2
|
import "./fonts-BAmz1ETd.js";
|
|
3
3
|
const blockEnd = 63, eof = 64, DirectiveEnd = 1, DocEnd = 2, sequenceStartMark = 3, sequenceContinueMark = 4, explicitMapStartMark = 5, explicitMapContinueMark = 6, flowMapMark = 7, mapStartMark = 65, mapContinueMark = 66, Literal = 8, QuotedLiteral = 9, Anchor = 10, Alias = 11, Tag = 12, BlockLiteralContent = 13, BracketL = 19, FlowSequence = 20, Colon = 29, BraceL = 33, FlowMapping = 34, BlockLiteralHeader = 47;
|
|
4
4
|
const type_Top = 0, type_Seq = 1, type_Map = 2, type_Flow = 3, type_Lit = 4;
|
package/out/renderer/index.html
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<meta http-equiv="Content-Security-Policy"
|
|
10
10
|
content="default-src 'self'; connect-src 'self' http://localhost:1111 http://127.0.0.1:1111 ws://localhost:1111 ws://127.0.0.1:1111 http://localhost:8080 http://127.0.0.1:8080 https://api.radienthq.com https://us.i.posthog.com https://login.microsoftonline.com https://accounts.google.com; script-src 'self' https://us-assets.i.posthog.com https://accounts.google.com https://login.microsoftonline.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: http://localhost:1111 http://127.0.0.1:1111; media-src 'self' http://localhost:1111 http://127.0.0.1:1111; font-src 'self'; frame-src 'self' https://accounts.google.com https://login.microsoftonline.com" />
|
|
11
11
|
<meta http-equiv="Cross-Origin-Opener-Policy" content="same-origin-allow-popups" />
|
|
12
|
-
<script type="module" crossorigin src="./assets/index-
|
|
12
|
+
<script type="module" crossorigin src="./assets/index-CXyUnv28.js"></script>
|
|
13
13
|
<link rel="modulepreload" crossorigin href="./assets/fonts-BAmz1ETd.js">
|
|
14
14
|
<link rel="stylesheet" crossorigin href="./assets/fonts-B9KBGB-g.css">
|
|
15
15
|
<link rel="stylesheet" crossorigin href="./assets/index-0vP6mKPB.css">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "local-operator-ui",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.4",
|
|
4
4
|
"productName": "Local Operator",
|
|
5
5
|
"description": "User interface for AI agent assistants that run Python code safely on your device through an intuitive chat interface. Supports local and cloud LLM models with built-in security features.",
|
|
6
6
|
"main": "./out/main/index.js",
|