@burtson-labs/bandit-engine 2.0.50 → 2.0.52
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/{chat-CQWZOJH4.mjs → chat-YWYLVKXX.mjs} +5 -5
- package/dist/chat-provider.js +254 -22
- package/dist/chat-provider.js.map +1 -1
- package/dist/chat-provider.mjs +3 -3
- package/dist/{chunk-VL3CMSDO.mjs → chunk-37PEP5JK.mjs} +2 -2
- package/dist/{chunk-AXFX2HUK.mjs → chunk-M3BEAMCC.mjs} +2 -2
- package/dist/{chunk-HKJTRBWC.mjs → chunk-MH7WFWCP.mjs} +34 -3
- package/dist/chunk-MH7WFWCP.mjs.map +1 -0
- package/dist/{chunk-6WZUQHZT.mjs → chunk-QX6CO7TJ.mjs} +225 -23
- package/dist/chunk-QX6CO7TJ.mjs.map +1 -0
- package/dist/{chunk-TVF45U7B.mjs → chunk-RSSJADDD.mjs} +3 -3
- package/dist/{chunk-Q2N7CCZI.mjs → chunk-TSQCNHOX.mjs} +45 -6
- package/dist/chunk-TSQCNHOX.mjs.map +1 -0
- package/dist/{chunk-ZTTGERUG.mjs → chunk-Y5N3NSTU.mjs} +459 -180
- package/dist/chunk-Y5N3NSTU.mjs.map +1 -0
- package/dist/{chunk-KHKWYHXD.mjs → chunk-YZ2HJFPQ.mjs} +2 -2
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.js +747 -198
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8 -8
- package/dist/management/management.js +717 -198
- package/dist/management/management.js.map +1 -1
- package/dist/management/management.mjs +6 -6
- package/dist/modals/chat-modal/chat-modal.js +226 -22
- package/dist/modals/chat-modal/chat-modal.js.map +1 -1
- package/dist/modals/chat-modal/chat-modal.mjs +3 -3
- package/package.json +1 -1
- package/dist/chunk-6WZUQHZT.mjs.map +0 -1
- package/dist/chunk-HKJTRBWC.mjs.map +0 -1
- package/dist/chunk-Q2N7CCZI.mjs.map +0 -1
- package/dist/chunk-ZTTGERUG.mjs.map +0 -1
- /package/dist/{chat-CQWZOJH4.mjs.map → chat-YWYLVKXX.mjs.map} +0 -0
- /package/dist/{chunk-VL3CMSDO.mjs.map → chunk-37PEP5JK.mjs.map} +0 -0
- /package/dist/{chunk-AXFX2HUK.mjs.map → chunk-M3BEAMCC.mjs.map} +0 -0
- /package/dist/{chunk-TVF45U7B.mjs.map → chunk-RSSJADDD.mjs.map} +0 -0
- /package/dist/{chunk-KHKWYHXD.mjs.map → chunk-YZ2HJFPQ.mjs.map} +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
StreamingMarkdown_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YZ2HJFPQ.mjs";
|
|
4
4
|
import {
|
|
5
5
|
aiProviderInitService
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-37PEP5JK.mjs";
|
|
7
7
|
import {
|
|
8
8
|
useMCPToolsStore
|
|
9
9
|
} from "./chunk-EHNWQ4T3.mjs";
|
|
10
10
|
import {
|
|
11
11
|
chat_modal_default
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-RSSJADDD.mjs";
|
|
13
13
|
import {
|
|
14
14
|
DocumentCard_default,
|
|
15
15
|
banditDarkTheme,
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
predefinedThemes,
|
|
18
18
|
useNotificationService,
|
|
19
19
|
useVoiceStore
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-M3BEAMCC.mjs";
|
|
21
21
|
import {
|
|
22
22
|
authenticationService,
|
|
23
23
|
brandingService_default,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
useFeatures,
|
|
31
31
|
useKnowledgeStore2 as useKnowledgeStore,
|
|
32
32
|
useVectorStore
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-QX6CO7TJ.mjs";
|
|
34
34
|
import {
|
|
35
35
|
indexedDBService_default,
|
|
36
36
|
models,
|
|
@@ -95,6 +95,7 @@ import {
|
|
|
95
95
|
Tab,
|
|
96
96
|
Alert as Alert2,
|
|
97
97
|
Chip,
|
|
98
|
+
Collapse,
|
|
98
99
|
GlobalStyles
|
|
99
100
|
} from "@mui/material";
|
|
100
101
|
import useMediaQuery from "@mui/material/useMediaQuery";
|
|
@@ -500,6 +501,7 @@ var PersonalitiesTab = ({
|
|
|
500
501
|
const [deleteDialogOpen, setDeleteDialogOpen] = useState2(false);
|
|
501
502
|
const [personalityToDelete, setPersonalityToDelete] = useState2(null);
|
|
502
503
|
const [clickedChips, setClickedChips] = useState2(/* @__PURE__ */ new Set());
|
|
504
|
+
const [showTemplateHelp, setShowTemplateHelp] = useState2(false);
|
|
503
505
|
const [cropperOpen, setCropperOpen] = useState2(false);
|
|
504
506
|
const [selectedImageFile, setSelectedImageFile] = useState2(null);
|
|
505
507
|
const promptTemplates = [
|
|
@@ -753,28 +755,15 @@ var PersonalitiesTab = ({
|
|
|
753
755
|
}
|
|
754
756
|
}
|
|
755
757
|
),
|
|
756
|
-
/* @__PURE__ */ jsxs2(Box2, { sx: {
|
|
757
|
-
height: "100%",
|
|
758
|
-
overflow: "auto",
|
|
759
|
-
p: { xs: 1.5, sm: 2 },
|
|
760
|
-
// Hide scrollbars while keeping scroll functionality
|
|
761
|
-
scrollbarWidth: "none",
|
|
762
|
-
// Firefox
|
|
763
|
-
"&::-webkit-scrollbar": {
|
|
764
|
-
display: "none"
|
|
765
|
-
// Chrome, Safari, Edge
|
|
766
|
-
},
|
|
767
|
-
"-ms-overflow-style": "none"
|
|
768
|
-
// IE and Edge
|
|
769
|
-
}, children: [
|
|
758
|
+
/* @__PURE__ */ jsxs2(Box2, { sx: { p: { xs: 1, sm: 2 } }, children: [
|
|
770
759
|
/* @__PURE__ */ jsxs2(Box2, { sx: {
|
|
771
760
|
display: "flex",
|
|
772
761
|
flexDirection: { xs: "column", md: "row" },
|
|
773
762
|
alignItems: { xs: "flex-start", md: "center" },
|
|
774
763
|
justifyContent: "space-between",
|
|
775
|
-
mb: { xs:
|
|
764
|
+
mb: { xs: 1.25, md: 3 },
|
|
776
765
|
flexWrap: "wrap",
|
|
777
|
-
gap: { xs: 1
|
|
766
|
+
gap: { xs: 1, md: 2 }
|
|
778
767
|
}, children: [
|
|
779
768
|
/* @__PURE__ */ jsxs2(Box2, { sx: {
|
|
780
769
|
display: "flex",
|
|
@@ -804,8 +793,8 @@ var PersonalitiesTab = ({
|
|
|
804
793
|
backgroundClip: "text",
|
|
805
794
|
WebkitBackgroundClip: "text",
|
|
806
795
|
WebkitTextFillColor: "transparent",
|
|
807
|
-
mb: 0.5,
|
|
808
|
-
fontSize: { xs: "1.
|
|
796
|
+
mb: { xs: 0.25, sm: 0.5 },
|
|
797
|
+
fontSize: { xs: "1.35rem", sm: "1.75rem" }
|
|
809
798
|
},
|
|
810
799
|
children: "Quick Start Templates"
|
|
811
800
|
}
|
|
@@ -830,12 +819,40 @@ var PersonalitiesTab = ({
|
|
|
830
819
|
color: "white",
|
|
831
820
|
fontWeight: 600,
|
|
832
821
|
animation: "pulse 2s infinite",
|
|
833
|
-
alignSelf: { xs: "flex-start", md: "center" }
|
|
822
|
+
alignSelf: { xs: "flex-start", md: "center" },
|
|
823
|
+
display: { xs: "none", md: "inline-flex" }
|
|
834
824
|
}
|
|
835
825
|
}
|
|
836
826
|
)
|
|
837
827
|
] }),
|
|
838
|
-
/* @__PURE__ */
|
|
828
|
+
isMobile ? /* @__PURE__ */ jsxs2(
|
|
829
|
+
Box2,
|
|
830
|
+
{
|
|
831
|
+
sx: {
|
|
832
|
+
mb: 1.75,
|
|
833
|
+
borderRadius: 2,
|
|
834
|
+
border: "1px solid rgba(25, 118, 210, 0.2)",
|
|
835
|
+
background: "linear-gradient(135deg, rgba(25, 118, 210, 0.05) 0%, rgba(66, 165, 245, 0.05) 100%)",
|
|
836
|
+
px: 1.25,
|
|
837
|
+
py: 1
|
|
838
|
+
},
|
|
839
|
+
children: [
|
|
840
|
+
/* @__PURE__ */ jsxs2(Box2, { sx: { display: "flex", alignItems: "center", justifyContent: "space-between", gap: 1 }, children: [
|
|
841
|
+
/* @__PURE__ */ jsx2(Typography2, { variant: "body2", sx: { fontWeight: 600, color: "primary.main", fontSize: "0.82rem" }, children: "Tap any template to pre-fill your form" }),
|
|
842
|
+
/* @__PURE__ */ jsx2(
|
|
843
|
+
Button2,
|
|
844
|
+
{
|
|
845
|
+
size: "small",
|
|
846
|
+
onClick: () => setShowTemplateHelp((prev) => !prev),
|
|
847
|
+
sx: { minWidth: "auto", px: 1, fontSize: "0.72rem", whiteSpace: "nowrap" },
|
|
848
|
+
children: showTemplateHelp ? "Hide" : "Details"
|
|
849
|
+
}
|
|
850
|
+
)
|
|
851
|
+
] }),
|
|
852
|
+
/* @__PURE__ */ jsx2(Collapse, { in: showTemplateHelp, children: /* @__PURE__ */ jsx2(Typography2, { variant: "body2", sx: { color: "text.secondary", fontSize: "0.8rem", lineHeight: 1.4, mt: 0.75 }, children: "Choose a setup you like, then tweak name, tone, and prompt details in the Create/Edit tab." }) })
|
|
853
|
+
]
|
|
854
|
+
}
|
|
855
|
+
) : /* @__PURE__ */ jsx2(
|
|
839
856
|
Alert2,
|
|
840
857
|
{
|
|
841
858
|
severity: "info",
|
|
@@ -861,17 +878,19 @@ var PersonalitiesTab = ({
|
|
|
861
878
|
Card,
|
|
862
879
|
{
|
|
863
880
|
sx: {
|
|
864
|
-
mb: { xs:
|
|
881
|
+
mb: { xs: 2, md: 4 },
|
|
865
882
|
background: "linear-gradient(135deg, #1976d2 0%, #42a5f5 100%)",
|
|
866
883
|
border: "2px solid transparent",
|
|
867
|
-
borderRadius: 3,
|
|
884
|
+
borderRadius: { xs: 2.25, sm: 3 },
|
|
868
885
|
cursor: "pointer",
|
|
869
886
|
transition: "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
|
|
870
887
|
position: "relative",
|
|
871
888
|
overflow: "hidden",
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
889
|
+
...isMobile ? {} : {
|
|
890
|
+
"&:hover": {
|
|
891
|
+
transform: "translateY(-4px) scale(1.02)",
|
|
892
|
+
boxShadow: "0 12px 40px rgba(25, 118, 210, 0.3)"
|
|
893
|
+
}
|
|
875
894
|
},
|
|
876
895
|
"&::before": {
|
|
877
896
|
content: '""',
|
|
@@ -896,41 +915,70 @@ var PersonalitiesTab = ({
|
|
|
896
915
|
setPersonalityTabIndex(1);
|
|
897
916
|
},
|
|
898
917
|
children: /* @__PURE__ */ jsxs2(CardContent, { sx: {
|
|
899
|
-
p: { xs:
|
|
918
|
+
p: { xs: 1.75, sm: 4 },
|
|
900
919
|
color: "white",
|
|
901
|
-
textAlign: "center",
|
|
920
|
+
textAlign: { xs: "left", sm: "center" },
|
|
902
921
|
position: "relative",
|
|
903
|
-
zIndex: 1
|
|
922
|
+
zIndex: 1,
|
|
923
|
+
display: "flex",
|
|
924
|
+
flexDirection: { xs: "row", sm: "column" },
|
|
925
|
+
alignItems: { xs: "center", sm: "center" },
|
|
926
|
+
gap: { xs: 1.25, sm: 0 }
|
|
904
927
|
}, children: [
|
|
905
928
|
/* @__PURE__ */ jsx2(Box2, { sx: {
|
|
906
929
|
display: "flex",
|
|
907
930
|
alignItems: "center",
|
|
908
931
|
justifyContent: "center",
|
|
909
932
|
fontSize: 0,
|
|
910
|
-
mb: { xs:
|
|
911
|
-
|
|
912
|
-
/* @__PURE__ */ jsx2(
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
933
|
+
mb: { xs: 0, sm: 2 },
|
|
934
|
+
flexShrink: 0
|
|
935
|
+
}, children: /* @__PURE__ */ jsx2(AutoAwesomeIcon, { sx: { fontSize: { xs: 28, sm: 44 }, color: "common.white", filter: "drop-shadow(0 4px 12px rgba(0,0,0,0.25))" } }) }),
|
|
936
|
+
/* @__PURE__ */ jsxs2(Box2, { sx: { flex: 1, minWidth: 0 }, children: [
|
|
937
|
+
/* @__PURE__ */ jsx2(
|
|
938
|
+
Typography2,
|
|
939
|
+
{
|
|
940
|
+
variant: "h5",
|
|
941
|
+
sx: {
|
|
942
|
+
fontWeight: 700,
|
|
943
|
+
mb: { xs: 0.25, sm: 1 },
|
|
944
|
+
textShadow: "0 2px 4px rgba(0,0,0,0.2)",
|
|
945
|
+
fontSize: { xs: "1.1rem", sm: "1.75rem" }
|
|
946
|
+
},
|
|
947
|
+
children: "Create from Scratch"
|
|
948
|
+
}
|
|
949
|
+
),
|
|
950
|
+
/* @__PURE__ */ jsx2(
|
|
951
|
+
Typography2,
|
|
952
|
+
{
|
|
953
|
+
variant: "body1",
|
|
954
|
+
sx: {
|
|
955
|
+
opacity: 0.9,
|
|
956
|
+
fontWeight: 500,
|
|
957
|
+
textShadow: "0 1px 2px rgba(0,0,0,0.2)",
|
|
958
|
+
fontSize: { xs: "0.8rem", sm: "1rem" },
|
|
959
|
+
lineHeight: { xs: 1.3, sm: 1.5 },
|
|
960
|
+
display: "-webkit-box",
|
|
961
|
+
WebkitLineClamp: { xs: 2, sm: "unset" },
|
|
962
|
+
WebkitBoxOrient: "vertical",
|
|
963
|
+
overflow: "hidden"
|
|
964
|
+
},
|
|
965
|
+
children: "Start with a blank canvas and build your perfect AI personality"
|
|
966
|
+
}
|
|
967
|
+
)
|
|
968
|
+
] }),
|
|
969
|
+
isMobile && /* @__PURE__ */ jsx2(
|
|
970
|
+
Chip,
|
|
926
971
|
{
|
|
927
|
-
|
|
972
|
+
label: "Start",
|
|
973
|
+
size: "small",
|
|
928
974
|
sx: {
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
975
|
+
backgroundColor: "rgba(255,255,255,0.2)",
|
|
976
|
+
color: "common.white",
|
|
977
|
+
border: "1px solid rgba(255,255,255,0.45)",
|
|
978
|
+
fontWeight: 600,
|
|
979
|
+
height: 28,
|
|
980
|
+
flexShrink: 0
|
|
981
|
+
}
|
|
934
982
|
}
|
|
935
983
|
)
|
|
936
984
|
] })
|
|
@@ -945,7 +993,7 @@ var PersonalitiesTab = ({
|
|
|
945
993
|
lg: "repeat(4, 1fr)",
|
|
946
994
|
xl: "repeat(4, 1fr)"
|
|
947
995
|
},
|
|
948
|
-
gap: { xs:
|
|
996
|
+
gap: { xs: 1.25, sm: 2.5, md: 3 },
|
|
949
997
|
alignItems: "stretch"
|
|
950
998
|
}, children: promptTemplates.map((template, index) => /* @__PURE__ */ jsx2(
|
|
951
999
|
Card,
|
|
@@ -958,7 +1006,7 @@ var PersonalitiesTab = ({
|
|
|
958
1006
|
border: "1px solid",
|
|
959
1007
|
borderColor: "rgba(255,255,255,0.1)",
|
|
960
1008
|
borderRadius: 3,
|
|
961
|
-
minHeight: { xs: "
|
|
1009
|
+
minHeight: { xs: "200px", md: "280px" },
|
|
962
1010
|
display: "flex",
|
|
963
1011
|
flexDirection: "column",
|
|
964
1012
|
overflow: "hidden",
|
|
@@ -976,19 +1024,21 @@ var PersonalitiesTab = ({
|
|
|
976
1024
|
opacity: 0,
|
|
977
1025
|
transition: "opacity 0.3s ease"
|
|
978
1026
|
},
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
1027
|
+
...isMobile ? {} : {
|
|
1028
|
+
"&:hover": {
|
|
1029
|
+
transform: "translateY(-8px) scale(1.02)",
|
|
1030
|
+
boxShadow: "0 20px 40px rgba(0,0,0,0.15)",
|
|
1031
|
+
borderColor: "primary.main",
|
|
1032
|
+
"&::before": {
|
|
1033
|
+
opacity: 1
|
|
1034
|
+
},
|
|
1035
|
+
"& .template-icon": {
|
|
1036
|
+
transform: "scale(1.1) rotate(5deg)"
|
|
1037
|
+
},
|
|
1038
|
+
"& .template-chip": {
|
|
1039
|
+
transform: "translateY(-2px)",
|
|
1040
|
+
boxShadow: "0 4px 12px rgba(0,0,0,0.2)"
|
|
1041
|
+
}
|
|
992
1042
|
}
|
|
993
1043
|
},
|
|
994
1044
|
"&:active": {
|
|
@@ -997,7 +1047,7 @@ var PersonalitiesTab = ({
|
|
|
997
1047
|
},
|
|
998
1048
|
onClick: () => handleTemplateSelect(template),
|
|
999
1049
|
children: /* @__PURE__ */ jsxs2(CardContent, { sx: {
|
|
1000
|
-
p: { xs: 2
|
|
1050
|
+
p: { xs: 2, sm: 3 },
|
|
1001
1051
|
display: "flex",
|
|
1002
1052
|
flexDirection: "column",
|
|
1003
1053
|
height: "100%",
|
|
@@ -1007,7 +1057,7 @@ var PersonalitiesTab = ({
|
|
|
1007
1057
|
/* @__PURE__ */ jsxs2(Box2, { sx: {
|
|
1008
1058
|
display: "flex",
|
|
1009
1059
|
alignItems: "center",
|
|
1010
|
-
mb: { xs:
|
|
1060
|
+
mb: { xs: 1.25, md: 2.5 },
|
|
1011
1061
|
minHeight: { xs: "auto", md: "60px" }
|
|
1012
1062
|
}, children: [
|
|
1013
1063
|
/* @__PURE__ */ jsx2(
|
|
@@ -1016,9 +1066,9 @@ var PersonalitiesTab = ({
|
|
|
1016
1066
|
src: template.avatar,
|
|
1017
1067
|
alt: template.name,
|
|
1018
1068
|
sx: {
|
|
1019
|
-
width: { xs:
|
|
1020
|
-
height: { xs:
|
|
1021
|
-
mr: { xs: 1.
|
|
1069
|
+
width: { xs: 40, sm: 56, md: 60 },
|
|
1070
|
+
height: { xs: 40, sm: 56, md: 60 },
|
|
1071
|
+
mr: { xs: 1.2, md: 2 },
|
|
1022
1072
|
transition: "transform 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
|
|
1023
1073
|
boxShadow: "0 4px 12px rgba(0,0,0,0.15)",
|
|
1024
1074
|
border: "2px solid rgba(255,255,255,0.8)"
|
|
@@ -1072,10 +1122,10 @@ var PersonalitiesTab = ({
|
|
|
1072
1122
|
lineHeight: 1.5,
|
|
1073
1123
|
fontSize: { xs: "0.82rem", sm: "0.85rem", md: "0.875rem" },
|
|
1074
1124
|
display: "-webkit-box",
|
|
1075
|
-
WebkitLineClamp: 4,
|
|
1125
|
+
WebkitLineClamp: { xs: 2, sm: 4 },
|
|
1076
1126
|
WebkitBoxOrient: "vertical",
|
|
1077
1127
|
overflow: "hidden",
|
|
1078
|
-
mb: { xs: 1.
|
|
1128
|
+
mb: { xs: 1.25, md: 2 },
|
|
1079
1129
|
minHeight: { xs: "auto", md: "84px" }
|
|
1080
1130
|
},
|
|
1081
1131
|
children: template.description
|
|
@@ -1112,7 +1162,7 @@ var PersonalitiesTab = ({
|
|
|
1112
1162
|
},
|
|
1113
1163
|
index
|
|
1114
1164
|
)) }),
|
|
1115
|
-
/* @__PURE__ */ jsxs2(
|
|
1165
|
+
!isMobile && /* @__PURE__ */ jsxs2(
|
|
1116
1166
|
Alert2,
|
|
1117
1167
|
{
|
|
1118
1168
|
severity: "info",
|
|
@@ -1126,20 +1176,7 @@ var PersonalitiesTab = ({
|
|
|
1126
1176
|
)
|
|
1127
1177
|
] })
|
|
1128
1178
|
] });
|
|
1129
|
-
const renderCreateEditTab = () => /* @__PURE__ */ jsxs2(Box2, { sx: {
|
|
1130
|
-
height: "100%",
|
|
1131
|
-
overflow: "auto",
|
|
1132
|
-
p: { xs: 1.5, sm: 2 },
|
|
1133
|
-
// Hide scrollbars while keeping scroll functionality
|
|
1134
|
-
scrollbarWidth: "none",
|
|
1135
|
-
// Firefox
|
|
1136
|
-
"&::-webkit-scrollbar": {
|
|
1137
|
-
display: "none"
|
|
1138
|
-
// Chrome, Safari, Edge
|
|
1139
|
-
},
|
|
1140
|
-
"-ms-overflow-style": "none"
|
|
1141
|
-
// IE and Edge
|
|
1142
|
-
}, children: [
|
|
1179
|
+
const renderCreateEditTab = () => /* @__PURE__ */ jsxs2(Box2, { sx: { p: { xs: 1.5, sm: 2 } }, children: [
|
|
1143
1180
|
/* @__PURE__ */ jsxs2(Box2, { sx: { mb: { xs: 2.5, md: 4 } }, children: [
|
|
1144
1181
|
/* @__PURE__ */ jsx2(
|
|
1145
1182
|
Typography2,
|
|
@@ -1609,6 +1646,9 @@ var PersonalitiesTab = ({
|
|
|
1609
1646
|
Box2,
|
|
1610
1647
|
{
|
|
1611
1648
|
sx: {
|
|
1649
|
+
position: { xs: "sticky", sm: "static" },
|
|
1650
|
+
bottom: { xs: 10, sm: "auto" },
|
|
1651
|
+
zIndex: { xs: 5, sm: "auto" },
|
|
1612
1652
|
display: "flex",
|
|
1613
1653
|
flexDirection: { xs: "column", sm: "row" },
|
|
1614
1654
|
gap: { xs: 1.5, sm: 2 },
|
|
@@ -1616,8 +1656,15 @@ var PersonalitiesTab = ({
|
|
|
1616
1656
|
// Changed from flex-end to flex-start
|
|
1617
1657
|
mr: { xs: 0, sm: 10 },
|
|
1618
1658
|
// Add right margin to avoid FAB
|
|
1619
|
-
mb: { xs: 8, sm: 2 }
|
|
1659
|
+
mb: { xs: 8, sm: 2 },
|
|
1620
1660
|
// Add bottom margin on mobile for FAB clearance
|
|
1661
|
+
mt: { xs: 1.5, sm: 0 },
|
|
1662
|
+
p: { xs: 1.1, sm: 0 },
|
|
1663
|
+
borderRadius: { xs: 2, sm: 0 },
|
|
1664
|
+
border: { xs: "1px solid", sm: "none" },
|
|
1665
|
+
borderColor: { xs: "divider", sm: "transparent" },
|
|
1666
|
+
bgcolor: { xs: "background.paper", sm: "transparent" },
|
|
1667
|
+
boxShadow: { xs: 3, sm: "none" }
|
|
1621
1668
|
},
|
|
1622
1669
|
children: [
|
|
1623
1670
|
/* @__PURE__ */ jsx2(
|
|
@@ -1645,20 +1692,7 @@ var PersonalitiesTab = ({
|
|
|
1645
1692
|
}
|
|
1646
1693
|
)
|
|
1647
1694
|
] });
|
|
1648
|
-
const renderManageTab = () => /* @__PURE__ */ jsxs2(Box2, { sx: {
|
|
1649
|
-
height: "100%",
|
|
1650
|
-
overflow: "auto",
|
|
1651
|
-
p: { xs: 1.5, sm: 2 },
|
|
1652
|
-
// Hide scrollbars while keeping scroll functionality
|
|
1653
|
-
scrollbarWidth: "none",
|
|
1654
|
-
// Firefox
|
|
1655
|
-
"&::-webkit-scrollbar": {
|
|
1656
|
-
display: "none"
|
|
1657
|
-
// Chrome, Safari, Edge
|
|
1658
|
-
},
|
|
1659
|
-
"-ms-overflow-style": "none"
|
|
1660
|
-
// IE and Edge
|
|
1661
|
-
}, children: [
|
|
1695
|
+
const renderManageTab = () => /* @__PURE__ */ jsxs2(Box2, { sx: { p: { xs: 1.5, sm: 2 } }, children: [
|
|
1662
1696
|
/* @__PURE__ */ jsxs2(
|
|
1663
1697
|
Box2,
|
|
1664
1698
|
{
|
|
@@ -1907,7 +1941,7 @@ var PersonalitiesTab = ({
|
|
|
1907
1941
|
] })
|
|
1908
1942
|
] })
|
|
1909
1943
|
] });
|
|
1910
|
-
return /* @__PURE__ */ jsxs2(Box2, { sx: {
|
|
1944
|
+
return /* @__PURE__ */ jsxs2(Box2, { sx: { display: "flex", flexDirection: "column" }, children: [
|
|
1911
1945
|
/* @__PURE__ */ jsxs2(
|
|
1912
1946
|
Box2,
|
|
1913
1947
|
{
|
|
@@ -2033,7 +2067,7 @@ var PersonalitiesTab = ({
|
|
|
2033
2067
|
]
|
|
2034
2068
|
}
|
|
2035
2069
|
) }),
|
|
2036
|
-
/* @__PURE__ */ jsxs2(Box2, { sx: {
|
|
2070
|
+
/* @__PURE__ */ jsxs2(Box2, { sx: { minHeight: 0 }, children: [
|
|
2037
2071
|
personalityTabIndex === 0 && renderTemplatesTab(),
|
|
2038
2072
|
personalityTabIndex === 1 && renderCreateEditTab(),
|
|
2039
2073
|
personalityTabIndex === 2 && renderManageTab()
|
|
@@ -5957,6 +5991,7 @@ import AddIcon from "@mui/icons-material/Add";
|
|
|
5957
5991
|
import ArchiveIcon from "@mui/icons-material/Archive";
|
|
5958
5992
|
import DeleteIcon3 from "@mui/icons-material/Delete";
|
|
5959
5993
|
import DescriptionIcon2 from "@mui/icons-material/Description";
|
|
5994
|
+
import FolderOpenIcon from "@mui/icons-material/FolderOpen";
|
|
5960
5995
|
import GroupIcon2 from "@mui/icons-material/Group";
|
|
5961
5996
|
import PersonIcon2 from "@mui/icons-material/Person";
|
|
5962
5997
|
import PublishIcon from "@mui/icons-material/Publish";
|
|
@@ -6229,6 +6264,22 @@ var archiveSeedPack = async (sid) => {
|
|
|
6229
6264
|
throw error;
|
|
6230
6265
|
}
|
|
6231
6266
|
};
|
|
6267
|
+
var deleteSeedPack = async (sid) => {
|
|
6268
|
+
const url = buildUrl(`/seed-packs/${encodeURIComponent(sid)}`);
|
|
6269
|
+
try {
|
|
6270
|
+
const response = await fetch(url, { method: "DELETE", headers: buildHeaders() });
|
|
6271
|
+
if (response.status === 204) {
|
|
6272
|
+
return;
|
|
6273
|
+
}
|
|
6274
|
+
await handleJsonResponse(response, "Failed to delete seed pack");
|
|
6275
|
+
} catch (error) {
|
|
6276
|
+
debugLogger.error("seedPackService: failed to delete seed pack", {
|
|
6277
|
+
sid,
|
|
6278
|
+
error: error instanceof Error ? error.message : String(error)
|
|
6279
|
+
});
|
|
6280
|
+
throw error;
|
|
6281
|
+
}
|
|
6282
|
+
};
|
|
6232
6283
|
|
|
6233
6284
|
// src/management/components/SeedPacksTab.tsx
|
|
6234
6285
|
import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
@@ -6264,10 +6315,23 @@ var getPreviewSnippet = (content) => {
|
|
|
6264
6315
|
}
|
|
6265
6316
|
return trimmed.length > 120 ? `${trimmed.slice(0, 120)}...` : trimmed;
|
|
6266
6317
|
};
|
|
6318
|
+
var getImportedFileKey = (file) => (file.relativePath ?? file.name).toLowerCase();
|
|
6319
|
+
var isMarkdownFileName = (name) => {
|
|
6320
|
+
const lower = name.toLowerCase();
|
|
6321
|
+
return lower.endsWith(".md") || lower.endsWith(".markdown");
|
|
6322
|
+
};
|
|
6323
|
+
var getWebkitRelativePath = (file) => {
|
|
6324
|
+
const relativePath = file.webkitRelativePath;
|
|
6325
|
+
if (!relativePath) {
|
|
6326
|
+
return void 0;
|
|
6327
|
+
}
|
|
6328
|
+
const trimmed = relativePath.trim().replace(/^\/+/, "");
|
|
6329
|
+
return trimmed.length > 0 ? trimmed : void 0;
|
|
6330
|
+
};
|
|
6267
6331
|
var mergeMarkdownFiles = (existing, incoming) => {
|
|
6268
6332
|
const next = [...existing];
|
|
6269
6333
|
incoming.forEach((file) => {
|
|
6270
|
-
const index = next.findIndex((item) => item
|
|
6334
|
+
const index = next.findIndex((item) => getImportedFileKey(item) === getImportedFileKey(file));
|
|
6271
6335
|
if (index >= 0) {
|
|
6272
6336
|
next[index] = file;
|
|
6273
6337
|
} else {
|
|
@@ -6279,17 +6343,22 @@ var mergeMarkdownFiles = (existing, incoming) => {
|
|
|
6279
6343
|
var buildMarkdownContent = (files) => {
|
|
6280
6344
|
return files.map((file) => file.content.trim()).filter((content) => content.length > 0).join("\n\n---\n\n");
|
|
6281
6345
|
};
|
|
6282
|
-
var readMarkdownFiles = async (files) => {
|
|
6346
|
+
var readMarkdownFiles = async (files, source = "local") => {
|
|
6283
6347
|
const list = Array.from(files);
|
|
6284
|
-
const markdownFiles = list.filter((file) => file.name
|
|
6348
|
+
const markdownFiles = list.filter((file) => isMarkdownFileName(file.name));
|
|
6285
6349
|
const imported = await Promise.all(
|
|
6286
|
-
markdownFiles.map(async (file) =>
|
|
6287
|
-
|
|
6288
|
-
|
|
6289
|
-
|
|
6290
|
-
|
|
6291
|
-
|
|
6292
|
-
|
|
6350
|
+
markdownFiles.map(async (file) => {
|
|
6351
|
+
const relativePath = getWebkitRelativePath(file);
|
|
6352
|
+
return {
|
|
6353
|
+
id: `${source}-${relativePath ?? file.name}-${file.lastModified}-${file.size}`,
|
|
6354
|
+
name: file.name,
|
|
6355
|
+
size: file.size,
|
|
6356
|
+
content: await file.text(),
|
|
6357
|
+
lastModified: file.lastModified,
|
|
6358
|
+
relativePath,
|
|
6359
|
+
source
|
|
6360
|
+
};
|
|
6361
|
+
})
|
|
6293
6362
|
);
|
|
6294
6363
|
return { imported, skipped: list.length - markdownFiles.length };
|
|
6295
6364
|
};
|
|
@@ -6405,7 +6474,7 @@ var SeedPackFileCard = ({ file, onPreview, onRemove, isReadOnly }) => /* @__PURE
|
|
|
6405
6474
|
)
|
|
6406
6475
|
}
|
|
6407
6476
|
),
|
|
6408
|
-
/* @__PURE__ */ jsx8(Tooltip2, { title: file.name, arrow: true, children: /* @__PURE__ */ jsx8(
|
|
6477
|
+
/* @__PURE__ */ jsx8(Tooltip2, { title: file.relativePath ?? file.name, arrow: true, children: /* @__PURE__ */ jsx8(
|
|
6409
6478
|
Typography8,
|
|
6410
6479
|
{
|
|
6411
6480
|
variant: "body2",
|
|
@@ -6422,6 +6491,21 @@ var SeedPackFileCard = ({ file, onPreview, onRemove, isReadOnly }) => /* @__PURE
|
|
|
6422
6491
|
children: file.name
|
|
6423
6492
|
}
|
|
6424
6493
|
) }),
|
|
6494
|
+
file.relativePath && file.relativePath !== file.name && /* @__PURE__ */ jsx8(Tooltip2, { title: file.relativePath, arrow: true, children: /* @__PURE__ */ jsx8(
|
|
6495
|
+
Typography8,
|
|
6496
|
+
{
|
|
6497
|
+
variant: "caption",
|
|
6498
|
+
color: "text.secondary",
|
|
6499
|
+
sx: {
|
|
6500
|
+
display: "block",
|
|
6501
|
+
whiteSpace: "nowrap",
|
|
6502
|
+
overflow: "hidden",
|
|
6503
|
+
textOverflow: "ellipsis",
|
|
6504
|
+
mb: 1
|
|
6505
|
+
},
|
|
6506
|
+
children: file.relativePath
|
|
6507
|
+
}
|
|
6508
|
+
) }),
|
|
6425
6509
|
/* @__PURE__ */ jsxs8(
|
|
6426
6510
|
Box8,
|
|
6427
6511
|
{
|
|
@@ -6438,7 +6522,7 @@ var SeedPackFileCard = ({ file, onPreview, onRemove, isReadOnly }) => /* @__PURE
|
|
|
6438
6522
|
Chip6,
|
|
6439
6523
|
{
|
|
6440
6524
|
icon: /* @__PURE__ */ jsx8(PersonIcon2, { sx: { fontSize: "0.9rem !important" } }),
|
|
6441
|
-
label: "Local",
|
|
6525
|
+
label: file.source === "azure-wiki" ? "Azure Wiki" : "Local",
|
|
6442
6526
|
size: "small",
|
|
6443
6527
|
sx: {
|
|
6444
6528
|
bgcolor: "#388e3c20",
|
|
@@ -6527,16 +6611,20 @@ var SeedPacksTab = () => {
|
|
|
6527
6611
|
const [createImportedFiles, setCreateImportedFiles] = useState9([]);
|
|
6528
6612
|
const [previewFile, setPreviewFile] = useState9(null);
|
|
6529
6613
|
const fileInputRef = useRef5(null);
|
|
6614
|
+
const wikiFolderInputRef = useRef5(null);
|
|
6530
6615
|
const createFileInputRef = useRef5(null);
|
|
6616
|
+
const createWikiFolderInputRef = useRef5(null);
|
|
6531
6617
|
const [isLoadingList, setIsLoadingList] = useState9(false);
|
|
6532
6618
|
const [isLoadingDetail, setIsLoadingDetail] = useState9(false);
|
|
6533
6619
|
const [isSaving, setIsSaving] = useState9(false);
|
|
6534
6620
|
const [isPublishing, setIsPublishing] = useState9(false);
|
|
6535
6621
|
const [isArchiving, setIsArchiving] = useState9(false);
|
|
6622
|
+
const [isDeleting, setIsDeleting] = useState9(false);
|
|
6536
6623
|
const [isCreating, setIsCreating] = useState9(false);
|
|
6537
6624
|
const [createDialogOpen, setCreateDialogOpen] = useState9(false);
|
|
6538
6625
|
const [publishDialogOpen, setPublishDialogOpen] = useState9(false);
|
|
6539
6626
|
const [archiveDialogOpen, setArchiveDialogOpen] = useState9(false);
|
|
6627
|
+
const [deleteDialogOpen, setDeleteDialogOpen] = useState9(false);
|
|
6540
6628
|
const [newPackName, setNewPackName] = useState9("");
|
|
6541
6629
|
const [newPackDescription, setNewPackDescription] = useState9("");
|
|
6542
6630
|
const [newPackTags, setNewPackTags] = useState9("");
|
|
@@ -6641,26 +6729,37 @@ var SeedPacksTab = () => {
|
|
|
6641
6729
|
void loadSeedPackDetail(selectedSid);
|
|
6642
6730
|
}
|
|
6643
6731
|
}, [selectedSid, loadSeedPackDetail]);
|
|
6732
|
+
useEffect6(() => {
|
|
6733
|
+
const setDirectoryUploadAttributes = (input) => {
|
|
6734
|
+
if (!input) {
|
|
6735
|
+
return;
|
|
6736
|
+
}
|
|
6737
|
+
input.setAttribute("webkitdirectory", "");
|
|
6738
|
+
input.setAttribute("directory", "");
|
|
6739
|
+
};
|
|
6740
|
+
setDirectoryUploadAttributes(wikiFolderInputRef.current);
|
|
6741
|
+
setDirectoryUploadAttributes(createWikiFolderInputRef.current);
|
|
6742
|
+
}, [selectedSeedPack, createDialogOpen]);
|
|
6644
6743
|
const handleSelectPack = (pack) => {
|
|
6645
6744
|
setSelectedSid(pack.sid);
|
|
6646
6745
|
setSelectedSeedPack(pack);
|
|
6647
6746
|
hydrateDraft(pack);
|
|
6648
6747
|
};
|
|
6649
6748
|
const handleImportFiles = useCallback6(
|
|
6650
|
-
async (files) => {
|
|
6749
|
+
async (files, source = "local") => {
|
|
6651
6750
|
if (!files || files.length === 0) {
|
|
6652
6751
|
return;
|
|
6653
6752
|
}
|
|
6654
|
-
const { imported, skipped } = await readMarkdownFiles(files);
|
|
6753
|
+
const { imported, skipped } = await readMarkdownFiles(files, source);
|
|
6655
6754
|
if (skipped > 0) {
|
|
6656
|
-
showSnackbar("Only .md files are supported for seed packs.", "error");
|
|
6755
|
+
showSnackbar("Only .md and .markdown files are supported for seed packs.", "error");
|
|
6657
6756
|
}
|
|
6658
6757
|
if (imported.length === 0) {
|
|
6659
6758
|
return;
|
|
6660
6759
|
}
|
|
6661
6760
|
try {
|
|
6662
6761
|
const newlyAdded = imported.filter(
|
|
6663
|
-
(file) => !importedFiles.some((existing) => existing
|
|
6762
|
+
(file) => !importedFiles.some((existing) => getImportedFileKey(existing) === getImportedFileKey(file))
|
|
6664
6763
|
);
|
|
6665
6764
|
setImportedFiles((prev) => mergeMarkdownFiles(prev, imported));
|
|
6666
6765
|
const combined = buildMarkdownContent(newlyAdded);
|
|
@@ -6675,8 +6774,9 @@ ${combined}` : combined;
|
|
|
6675
6774
|
return { ...prev, content: nextContent };
|
|
6676
6775
|
});
|
|
6677
6776
|
}
|
|
6777
|
+
const importLabel = source === "azure-wiki" ? "from Azure DevOps wiki folder into the editor" : "into the editor";
|
|
6678
6778
|
showSnackbar(
|
|
6679
|
-
`Imported ${imported.length} markdown file${imported.length === 1 ? "" : "s"}
|
|
6779
|
+
`Imported ${imported.length} markdown file${imported.length === 1 ? "" : "s"} ${importLabel}.`,
|
|
6680
6780
|
"success"
|
|
6681
6781
|
);
|
|
6682
6782
|
} catch (error) {
|
|
@@ -6690,7 +6790,14 @@ ${combined}` : combined;
|
|
|
6690
6790
|
);
|
|
6691
6791
|
const handleFileInputChange = useCallback6(
|
|
6692
6792
|
async (event) => {
|
|
6693
|
-
await handleImportFiles(event.target.files);
|
|
6793
|
+
await handleImportFiles(event.target.files, "local");
|
|
6794
|
+
event.target.value = "";
|
|
6795
|
+
},
|
|
6796
|
+
[handleImportFiles]
|
|
6797
|
+
);
|
|
6798
|
+
const handleWikiFolderInputChange = useCallback6(
|
|
6799
|
+
async (event) => {
|
|
6800
|
+
await handleImportFiles(event.target.files, "azure-wiki");
|
|
6694
6801
|
event.target.value = "";
|
|
6695
6802
|
},
|
|
6696
6803
|
[handleImportFiles]
|
|
@@ -6699,20 +6806,21 @@ ${combined}` : combined;
|
|
|
6699
6806
|
setImportedFiles((prev) => prev.filter((file) => file.id !== id));
|
|
6700
6807
|
}, []);
|
|
6701
6808
|
const handleCreateImportFiles = useCallback6(
|
|
6702
|
-
async (files) => {
|
|
6809
|
+
async (files, source = "local") => {
|
|
6703
6810
|
if (!files || files.length === 0) {
|
|
6704
6811
|
return;
|
|
6705
6812
|
}
|
|
6706
|
-
const { imported, skipped } = await readMarkdownFiles(files);
|
|
6813
|
+
const { imported, skipped } = await readMarkdownFiles(files, source);
|
|
6707
6814
|
if (skipped > 0) {
|
|
6708
|
-
showSnackbar("Only .md files are supported for seed packs.", "error");
|
|
6815
|
+
showSnackbar("Only .md and .markdown files are supported for seed packs.", "error");
|
|
6709
6816
|
}
|
|
6710
6817
|
if (imported.length === 0) {
|
|
6711
6818
|
return;
|
|
6712
6819
|
}
|
|
6713
6820
|
setCreateImportedFiles((prev) => mergeMarkdownFiles(prev, imported));
|
|
6821
|
+
const importLabel = source === "azure-wiki" ? "from Azure DevOps wiki folder for this seed pack" : "for this seed pack";
|
|
6714
6822
|
showSnackbar(
|
|
6715
|
-
`Imported ${imported.length} markdown file${imported.length === 1 ? "" : "s"}
|
|
6823
|
+
`Imported ${imported.length} markdown file${imported.length === 1 ? "" : "s"} ${importLabel}.`,
|
|
6716
6824
|
"success"
|
|
6717
6825
|
);
|
|
6718
6826
|
},
|
|
@@ -6720,7 +6828,14 @@ ${combined}` : combined;
|
|
|
6720
6828
|
);
|
|
6721
6829
|
const handleCreateFileInputChange = useCallback6(
|
|
6722
6830
|
async (event) => {
|
|
6723
|
-
await handleCreateImportFiles(event.target.files);
|
|
6831
|
+
await handleCreateImportFiles(event.target.files, "local");
|
|
6832
|
+
event.target.value = "";
|
|
6833
|
+
},
|
|
6834
|
+
[handleCreateImportFiles]
|
|
6835
|
+
);
|
|
6836
|
+
const handleCreateWikiFolderInputChange = useCallback6(
|
|
6837
|
+
async (event) => {
|
|
6838
|
+
await handleCreateImportFiles(event.target.files, "azure-wiki");
|
|
6724
6839
|
event.target.value = "";
|
|
6725
6840
|
},
|
|
6726
6841
|
[handleCreateImportFiles]
|
|
@@ -6865,6 +6980,34 @@ ${combined}` : combined;
|
|
|
6865
6980
|
setIsArchiving(false);
|
|
6866
6981
|
}
|
|
6867
6982
|
};
|
|
6983
|
+
const handleDelete = async () => {
|
|
6984
|
+
if (!selectedSeedPack) {
|
|
6985
|
+
return;
|
|
6986
|
+
}
|
|
6987
|
+
const deletingSid = selectedSeedPack.sid;
|
|
6988
|
+
const deletingName = selectedSeedPack.name;
|
|
6989
|
+
setDeleteDialogOpen(false);
|
|
6990
|
+
setIsDeleting(true);
|
|
6991
|
+
try {
|
|
6992
|
+
await deleteSeedPack(deletingSid);
|
|
6993
|
+
setSelectedSid(null);
|
|
6994
|
+
setSelectedSeedPack(null);
|
|
6995
|
+
setDraft({ name: "", description: "", content: "" });
|
|
6996
|
+
setTagsInput("");
|
|
6997
|
+
setImportedFiles([]);
|
|
6998
|
+
setPreviewFile(null);
|
|
6999
|
+
await refreshSeedPacks();
|
|
7000
|
+
showSnackbar(`Deleted seed pack "${deletingName}".`, "success");
|
|
7001
|
+
} catch (error) {
|
|
7002
|
+
showSnackbar("Failed to delete seed pack.", "error");
|
|
7003
|
+
debugLogger.error("SeedPacksTab: failed to delete seed pack", {
|
|
7004
|
+
sid: deletingSid,
|
|
7005
|
+
error: error instanceof Error ? error.message : String(error)
|
|
7006
|
+
});
|
|
7007
|
+
} finally {
|
|
7008
|
+
setIsDeleting(false);
|
|
7009
|
+
}
|
|
7010
|
+
};
|
|
6868
7011
|
const previewContent = draft.content.trim().length > 0 ? draft.content : "Preview will appear here as you type.";
|
|
6869
7012
|
const selectedStatus = selectedSeedPack?.status ?? "draft";
|
|
6870
7013
|
const statusChip = getStatusChip(selectedStatus);
|
|
@@ -7066,32 +7209,56 @@ ${combined}` : combined;
|
|
|
7066
7209
|
sx: { mb: 1 },
|
|
7067
7210
|
children: [
|
|
7068
7211
|
/* @__PURE__ */ jsx8(Typography8, { variant: "subtitle2", children: "Markdown content" }),
|
|
7212
|
+
/* @__PURE__ */ jsxs8(Stack3, { direction: { xs: "column", sm: "row" }, spacing: 1, children: [
|
|
7213
|
+
/* @__PURE__ */ jsx8(
|
|
7214
|
+
Button7,
|
|
7215
|
+
{
|
|
7216
|
+
size: "small",
|
|
7217
|
+
variant: "outlined",
|
|
7218
|
+
startIcon: /* @__PURE__ */ jsx8(UploadFileIcon2, {}),
|
|
7219
|
+
onClick: () => fileInputRef.current?.click(),
|
|
7220
|
+
disabled: isReadOnly,
|
|
7221
|
+
children: "Import .md"
|
|
7222
|
+
}
|
|
7223
|
+
),
|
|
7224
|
+
/* @__PURE__ */ jsx8(
|
|
7225
|
+
Button7,
|
|
7226
|
+
{
|
|
7227
|
+
size: "small",
|
|
7228
|
+
variant: "outlined",
|
|
7229
|
+
startIcon: /* @__PURE__ */ jsx8(FolderOpenIcon, {}),
|
|
7230
|
+
onClick: () => wikiFolderInputRef.current?.click(),
|
|
7231
|
+
disabled: isReadOnly,
|
|
7232
|
+
children: "Import wiki folder"
|
|
7233
|
+
}
|
|
7234
|
+
)
|
|
7235
|
+
] }),
|
|
7069
7236
|
/* @__PURE__ */ jsx8(
|
|
7070
|
-
|
|
7237
|
+
"input",
|
|
7071
7238
|
{
|
|
7072
|
-
|
|
7073
|
-
|
|
7074
|
-
|
|
7075
|
-
|
|
7076
|
-
|
|
7077
|
-
|
|
7239
|
+
ref: fileInputRef,
|
|
7240
|
+
type: "file",
|
|
7241
|
+
accept: ".md,.markdown,text/markdown",
|
|
7242
|
+
multiple: true,
|
|
7243
|
+
onChange: handleFileInputChange,
|
|
7244
|
+
style: { display: "none" }
|
|
7078
7245
|
}
|
|
7079
7246
|
),
|
|
7080
7247
|
/* @__PURE__ */ jsx8(
|
|
7081
7248
|
"input",
|
|
7082
7249
|
{
|
|
7083
|
-
ref:
|
|
7250
|
+
ref: wikiFolderInputRef,
|
|
7084
7251
|
type: "file",
|
|
7085
|
-
accept: ".md",
|
|
7252
|
+
accept: ".md,.markdown,text/markdown",
|
|
7086
7253
|
multiple: true,
|
|
7087
|
-
onChange:
|
|
7254
|
+
onChange: handleWikiFolderInputChange,
|
|
7088
7255
|
style: { display: "none" }
|
|
7089
7256
|
}
|
|
7090
7257
|
)
|
|
7091
7258
|
]
|
|
7092
7259
|
}
|
|
7093
7260
|
),
|
|
7094
|
-
/* @__PURE__ */ jsx8(Typography8, { variant: "caption", color: "text.secondary", sx: { mb: 1, display: "block" }, children: "Paste or import markdown files.
|
|
7261
|
+
/* @__PURE__ */ jsx8(Typography8, { variant: "caption", color: "text.secondary", sx: { mb: 1, display: "block" }, children: "Paste or import markdown files. Use folder import for Azure DevOps wiki clones." }),
|
|
7095
7262
|
/* @__PURE__ */ jsx8(
|
|
7096
7263
|
TextField5,
|
|
7097
7264
|
{
|
|
@@ -7190,6 +7357,17 @@ ${combined}` : combined;
|
|
|
7190
7357
|
disabled: isReadOnly || isArchiving,
|
|
7191
7358
|
children: isArchiving ? "Archiving..." : "Archive"
|
|
7192
7359
|
}
|
|
7360
|
+
),
|
|
7361
|
+
/* @__PURE__ */ jsx8(
|
|
7362
|
+
Button7,
|
|
7363
|
+
{
|
|
7364
|
+
variant: "text",
|
|
7365
|
+
color: "error",
|
|
7366
|
+
startIcon: /* @__PURE__ */ jsx8(DeleteIcon3, {}),
|
|
7367
|
+
onClick: () => setDeleteDialogOpen(true),
|
|
7368
|
+
disabled: isDeleting,
|
|
7369
|
+
children: isDeleting ? "Deleting..." : "Delete"
|
|
7370
|
+
}
|
|
7193
7371
|
)
|
|
7194
7372
|
] })
|
|
7195
7373
|
] })
|
|
@@ -7239,26 +7417,50 @@ ${combined}` : combined;
|
|
|
7239
7417
|
),
|
|
7240
7418
|
/* @__PURE__ */ jsx8(Divider, {}),
|
|
7241
7419
|
/* @__PURE__ */ jsxs8(Stack3, { direction: { xs: "column", sm: "row" }, spacing: 1, alignItems: "center", children: [
|
|
7420
|
+
/* @__PURE__ */ jsxs8(Stack3, { direction: { xs: "column", sm: "row" }, spacing: 1, children: [
|
|
7421
|
+
/* @__PURE__ */ jsx8(
|
|
7422
|
+
Button7,
|
|
7423
|
+
{
|
|
7424
|
+
size: "small",
|
|
7425
|
+
variant: "outlined",
|
|
7426
|
+
startIcon: /* @__PURE__ */ jsx8(UploadFileIcon2, {}),
|
|
7427
|
+
onClick: () => createFileInputRef.current?.click(),
|
|
7428
|
+
disabled: !canManage,
|
|
7429
|
+
children: "Import .md files"
|
|
7430
|
+
}
|
|
7431
|
+
),
|
|
7432
|
+
/* @__PURE__ */ jsx8(
|
|
7433
|
+
Button7,
|
|
7434
|
+
{
|
|
7435
|
+
size: "small",
|
|
7436
|
+
variant: "outlined",
|
|
7437
|
+
startIcon: /* @__PURE__ */ jsx8(FolderOpenIcon, {}),
|
|
7438
|
+
onClick: () => createWikiFolderInputRef.current?.click(),
|
|
7439
|
+
disabled: !canManage,
|
|
7440
|
+
children: "Import wiki folder"
|
|
7441
|
+
}
|
|
7442
|
+
)
|
|
7443
|
+
] }),
|
|
7444
|
+
/* @__PURE__ */ jsx8(Typography8, { variant: "caption", color: "text.secondary", children: "Optional. Local files or cloned Azure DevOps wiki folders are merged into draft content." }),
|
|
7242
7445
|
/* @__PURE__ */ jsx8(
|
|
7243
|
-
|
|
7446
|
+
"input",
|
|
7244
7447
|
{
|
|
7245
|
-
|
|
7246
|
-
|
|
7247
|
-
|
|
7248
|
-
|
|
7249
|
-
|
|
7250
|
-
|
|
7448
|
+
ref: createFileInputRef,
|
|
7449
|
+
type: "file",
|
|
7450
|
+
accept: ".md,.markdown,text/markdown",
|
|
7451
|
+
multiple: true,
|
|
7452
|
+
onChange: handleCreateFileInputChange,
|
|
7453
|
+
style: { display: "none" }
|
|
7251
7454
|
}
|
|
7252
7455
|
),
|
|
7253
|
-
/* @__PURE__ */ jsx8(Typography8, { variant: "caption", color: "text.secondary", children: "Optional. Files are merged into the draft content." }),
|
|
7254
7456
|
/* @__PURE__ */ jsx8(
|
|
7255
7457
|
"input",
|
|
7256
7458
|
{
|
|
7257
|
-
ref:
|
|
7459
|
+
ref: createWikiFolderInputRef,
|
|
7258
7460
|
type: "file",
|
|
7259
|
-
accept: ".md",
|
|
7461
|
+
accept: ".md,.markdown,text/markdown",
|
|
7260
7462
|
multiple: true,
|
|
7261
|
-
onChange:
|
|
7463
|
+
onChange: handleCreateWikiFolderInputChange,
|
|
7262
7464
|
style: { display: "none" }
|
|
7263
7465
|
}
|
|
7264
7466
|
)
|
|
@@ -7323,6 +7525,21 @@ ${combined}` : combined;
|
|
|
7323
7525
|
/* @__PURE__ */ jsx8(Button7, { variant: "contained", color: "error", onClick: handleArchive, disabled: isArchiving, children: isArchiving ? "Archiving..." : "Archive" })
|
|
7324
7526
|
] })
|
|
7325
7527
|
] }),
|
|
7528
|
+
/* @__PURE__ */ jsxs8(Dialog6, { open: deleteDialogOpen, onClose: () => setDeleteDialogOpen(false), maxWidth: "sm", fullWidth: true, children: [
|
|
7529
|
+
/* @__PURE__ */ jsx8(DialogTitle5, { children: "Delete seed pack" }),
|
|
7530
|
+
/* @__PURE__ */ jsxs8(DialogContent6, { children: [
|
|
7531
|
+
/* @__PURE__ */ jsxs8(DialogContentText3, { children: [
|
|
7532
|
+
'Delete "',
|
|
7533
|
+
selectedSeedPack?.name ?? "this seed pack",
|
|
7534
|
+
'" permanently from this scope. Published versions and draft content will no longer be available.'
|
|
7535
|
+
] }),
|
|
7536
|
+
/* @__PURE__ */ jsx8(Alert7, { severity: "warning", sx: { mt: 2 }, children: "This action cannot be undone." })
|
|
7537
|
+
] }),
|
|
7538
|
+
/* @__PURE__ */ jsxs8(DialogActions5, { children: [
|
|
7539
|
+
/* @__PURE__ */ jsx8(Button7, { onClick: () => setDeleteDialogOpen(false), children: "Cancel" }),
|
|
7540
|
+
/* @__PURE__ */ jsx8(Button7, { variant: "contained", color: "error", onClick: handleDelete, disabled: isDeleting, children: isDeleting ? "Deleting..." : "Delete" })
|
|
7541
|
+
] })
|
|
7542
|
+
] }),
|
|
7326
7543
|
/* @__PURE__ */ jsxs8(
|
|
7327
7544
|
Dialog6,
|
|
7328
7545
|
{
|
|
@@ -8103,15 +8320,7 @@ var StorageTab = ({ currentTheme }) => {
|
|
|
8103
8320
|
] }) })
|
|
8104
8321
|
] }),
|
|
8105
8322
|
/* @__PURE__ */ jsx10(Typography9, { variant: "h6", gutterBottom: true, sx: { mb: 2, fontWeight: 600, color: "text.primary" }, children: "Storage Categories" }),
|
|
8106
|
-
/* @__PURE__ */ jsx10(Box10, { sx: {
|
|
8107
|
-
maxHeight: "60vh",
|
|
8108
|
-
overflow: "auto",
|
|
8109
|
-
"&::-webkit-scrollbar": {
|
|
8110
|
-
display: "none"
|
|
8111
|
-
},
|
|
8112
|
-
msOverflowStyle: "none",
|
|
8113
|
-
scrollbarWidth: "none"
|
|
8114
|
-
}, children: storageCategories.length === 0 ? /* @__PURE__ */ jsxs10(Alert8, { severity: "info", sx: { mt: 2 }, children: [
|
|
8323
|
+
/* @__PURE__ */ jsx10(Box10, { children: storageCategories.length === 0 ? /* @__PURE__ */ jsxs10(Alert8, { severity: "info", sx: { mt: 2 }, children: [
|
|
8115
8324
|
/* @__PURE__ */ jsx10(Typography9, { variant: "body2", children: "No storage data found. This could mean:" }),
|
|
8116
8325
|
/* @__PURE__ */ jsxs10(Typography9, { variant: "body2", component: "ul", sx: { mt: 1, pl: 2 }, children: [
|
|
8117
8326
|
/* @__PURE__ */ jsx10("li", { children: "All databases are empty" }),
|
|
@@ -9286,7 +9495,7 @@ var MCPToolsTabV2_default = MCPToolsTabV2;
|
|
|
9286
9495
|
|
|
9287
9496
|
// src/management/management.tsx
|
|
9288
9497
|
import { jsx as jsx13, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
9289
|
-
var preloadChatPage = () => import("./chat-
|
|
9498
|
+
var preloadChatPage = () => import("./chat-YWYLVKXX.mjs");
|
|
9290
9499
|
var buildCapabilitiesUrl = (gatewayApiUrl) => {
|
|
9291
9500
|
const trimmed = gatewayApiUrl.replace(/\/$/, "");
|
|
9292
9501
|
if (trimmed.endsWith("/api")) {
|
|
@@ -9341,7 +9550,7 @@ var Management = () => {
|
|
|
9341
9550
|
const [modalOpen, setModalOpen] = useState14(false);
|
|
9342
9551
|
const banditHead = "https://cdn.burtson.ai/images/bandit-head.png";
|
|
9343
9552
|
const [fabLogo, setFabLogo] = useState14(banditHead);
|
|
9344
|
-
const [tabIndex, setTabIndex] = useState14(
|
|
9553
|
+
const [tabIndex, setTabIndex] = useState14(4);
|
|
9345
9554
|
const [logoFile, setLogoFile] = useState14(null);
|
|
9346
9555
|
const [logoBase64, setLogoBase64] = useState14(null);
|
|
9347
9556
|
const [brandingText, setBrandingText] = useState14("");
|
|
@@ -10054,7 +10263,6 @@ var Management = () => {
|
|
|
10054
10263
|
}
|
|
10055
10264
|
});
|
|
10056
10265
|
}, [theme]);
|
|
10057
|
-
if (!brandingLoaded) return null;
|
|
10058
10266
|
const allNavTabs = [
|
|
10059
10267
|
{
|
|
10060
10268
|
label: "Personalities",
|
|
@@ -10111,6 +10319,18 @@ var Management = () => {
|
|
|
10111
10319
|
}
|
|
10112
10320
|
return true;
|
|
10113
10321
|
});
|
|
10322
|
+
const preferredDefaultTabIndex = navTabs.findIndex((tab) => tab.label === "Preferences");
|
|
10323
|
+
const defaultTabIndex = preferredDefaultTabIndex >= 0 ? preferredDefaultTabIndex : 0;
|
|
10324
|
+
useEffect11(() => {
|
|
10325
|
+
setTabIndex((current) => {
|
|
10326
|
+
if (current < 0 || current >= navTabs.length) {
|
|
10327
|
+
return defaultTabIndex;
|
|
10328
|
+
}
|
|
10329
|
+
return current;
|
|
10330
|
+
});
|
|
10331
|
+
}, [navTabs.length, defaultTabIndex]);
|
|
10332
|
+
const mobileQuickTabs = navTabs.slice(0, 5);
|
|
10333
|
+
const hasMobileOverflowTabs = navTabs.length > mobileQuickTabs.length;
|
|
10114
10334
|
const navigationContent = /* @__PURE__ */ jsxs13(
|
|
10115
10335
|
Box13,
|
|
10116
10336
|
{
|
|
@@ -10267,6 +10487,7 @@ var Management = () => {
|
|
|
10267
10487
|
]
|
|
10268
10488
|
}
|
|
10269
10489
|
);
|
|
10490
|
+
if (!brandingLoaded) return null;
|
|
10270
10491
|
return /* @__PURE__ */ jsxs13(ThemeProvider, { theme: currentTheme, children: [
|
|
10271
10492
|
/* @__PURE__ */ jsx13(CssBaseline, {}),
|
|
10272
10493
|
/* @__PURE__ */ jsxs13(
|
|
@@ -10287,7 +10508,7 @@ var Management = () => {
|
|
|
10287
10508
|
{
|
|
10288
10509
|
sx: {
|
|
10289
10510
|
width: "100%",
|
|
10290
|
-
|
|
10511
|
+
minHeight: 64,
|
|
10291
10512
|
display: "flex",
|
|
10292
10513
|
alignItems: "center",
|
|
10293
10514
|
justifyContent: "space-between",
|
|
@@ -10370,6 +10591,73 @@ var Management = () => {
|
|
|
10370
10591
|
]
|
|
10371
10592
|
}
|
|
10372
10593
|
),
|
|
10594
|
+
isMobile && /* @__PURE__ */ jsxs13(
|
|
10595
|
+
Box13,
|
|
10596
|
+
{
|
|
10597
|
+
sx: {
|
|
10598
|
+
width: "100%",
|
|
10599
|
+
display: "flex",
|
|
10600
|
+
gap: 1,
|
|
10601
|
+
px: 1.5,
|
|
10602
|
+
py: 1,
|
|
10603
|
+
overflowX: "auto",
|
|
10604
|
+
borderBottom: (theme2) => `1px solid ${theme2.palette.divider}`,
|
|
10605
|
+
bgcolor: (theme2) => theme2.palette.mode === "dark" ? "rgba(24,28,40,0.95)" : "rgba(255,255,255,0.95)",
|
|
10606
|
+
backdropFilter: "blur(12px)"
|
|
10607
|
+
},
|
|
10608
|
+
children: [
|
|
10609
|
+
mobileQuickTabs.map((tab) => {
|
|
10610
|
+
const quickTabIndex = navTabs.findIndex((navTab) => navTab.label === tab.label);
|
|
10611
|
+
const selected = tabIndex === quickTabIndex;
|
|
10612
|
+
return /* @__PURE__ */ jsx13(
|
|
10613
|
+
Button10,
|
|
10614
|
+
{
|
|
10615
|
+
size: "small",
|
|
10616
|
+
onClick: () => setTabIndex(quickTabIndex),
|
|
10617
|
+
sx: {
|
|
10618
|
+
flexShrink: 0,
|
|
10619
|
+
textTransform: "none",
|
|
10620
|
+
borderRadius: 999,
|
|
10621
|
+
px: 1.5,
|
|
10622
|
+
py: 0.6,
|
|
10623
|
+
minHeight: 32,
|
|
10624
|
+
fontSize: "0.78rem",
|
|
10625
|
+
fontWeight: selected ? 700 : 600,
|
|
10626
|
+
bgcolor: selected ? (theme2) => theme2.palette.mode === "dark" ? "rgba(25,118,210,0.2)" : "rgba(25,118,210,0.12)" : "transparent",
|
|
10627
|
+
color: selected ? "primary.main" : "text.secondary",
|
|
10628
|
+
border: (theme2) => selected ? `1px solid ${theme2.palette.primary.main}66` : `1px solid ${alpha2(theme2.palette.divider, 0.45)}`,
|
|
10629
|
+
"&:hover": {
|
|
10630
|
+
bgcolor: (theme2) => theme2.palette.mode === "dark" ? "rgba(25,118,210,0.16)" : "rgba(25,118,210,0.1)"
|
|
10631
|
+
}
|
|
10632
|
+
},
|
|
10633
|
+
children: tab.label
|
|
10634
|
+
},
|
|
10635
|
+
tab.label
|
|
10636
|
+
);
|
|
10637
|
+
}),
|
|
10638
|
+
hasMobileOverflowTabs && /* @__PURE__ */ jsx13(
|
|
10639
|
+
Button10,
|
|
10640
|
+
{
|
|
10641
|
+
size: "small",
|
|
10642
|
+
onClick: () => setSidebarOpen(true),
|
|
10643
|
+
sx: {
|
|
10644
|
+
flexShrink: 0,
|
|
10645
|
+
textTransform: "none",
|
|
10646
|
+
borderRadius: 999,
|
|
10647
|
+
px: 1.5,
|
|
10648
|
+
py: 0.6,
|
|
10649
|
+
minHeight: 32,
|
|
10650
|
+
fontSize: "0.78rem",
|
|
10651
|
+
fontWeight: 600,
|
|
10652
|
+
color: "text.secondary",
|
|
10653
|
+
border: (theme2) => `1px dashed ${alpha2(theme2.palette.divider, 0.6)}`
|
|
10654
|
+
},
|
|
10655
|
+
children: "More"
|
|
10656
|
+
}
|
|
10657
|
+
)
|
|
10658
|
+
]
|
|
10659
|
+
}
|
|
10660
|
+
),
|
|
10373
10661
|
isMobile ? /* @__PURE__ */ jsx13(
|
|
10374
10662
|
SwipeableDrawer,
|
|
10375
10663
|
{
|
|
@@ -10422,26 +10710,17 @@ var Management = () => {
|
|
|
10422
10710
|
flex: 1,
|
|
10423
10711
|
p: { xs: 1, sm: 3, md: 4 },
|
|
10424
10712
|
overflowY: "auto",
|
|
10425
|
-
|
|
10713
|
+
overflowX: "hidden",
|
|
10426
10714
|
maxWidth: "100vw",
|
|
10427
10715
|
minWidth: 0,
|
|
10716
|
+
minHeight: 0,
|
|
10428
10717
|
display: "flex",
|
|
10429
10718
|
flexDirection: "column",
|
|
10430
10719
|
bgcolor: "background.default",
|
|
10431
10720
|
ml: isMobile ? 0 : "280px",
|
|
10432
10721
|
// Fixed left margin only on desktop
|
|
10433
10722
|
mt: 0,
|
|
10434
|
-
transition: "margin-left 0.2s"
|
|
10435
|
-
overflow: "auto",
|
|
10436
|
-
// Hide scrollbars while keeping scroll functionality
|
|
10437
|
-
scrollbarWidth: "none",
|
|
10438
|
-
// Firefox
|
|
10439
|
-
"&::-webkit-scrollbar": {
|
|
10440
|
-
display: "none"
|
|
10441
|
-
// Chrome, Safari, Edge
|
|
10442
|
-
},
|
|
10443
|
-
"-ms-overflow-style": "none"
|
|
10444
|
-
// IE and Edge
|
|
10723
|
+
transition: "margin-left 0.2s"
|
|
10445
10724
|
},
|
|
10446
10725
|
children: [
|
|
10447
10726
|
navTabs[tabIndex]?.label === "Personalities" && /* @__PURE__ */ jsx13(
|
|
@@ -10561,4 +10840,4 @@ export {
|
|
|
10561
10840
|
useGatewayMemory,
|
|
10562
10841
|
management_default
|
|
10563
10842
|
};
|
|
10564
|
-
//# sourceMappingURL=chunk-
|
|
10843
|
+
//# sourceMappingURL=chunk-Y5N3NSTU.mjs.map
|