@tangle-network/sandbox-ui 0.20.2 → 0.21.0
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.d.ts +51 -1
- package/dist/chat.js +5 -1
- package/dist/{chunk-N5RYCDLD.js → chunk-4KAPMTPU.js} +25 -546
- package/dist/{chunk-MQ52AYJX.js → chunk-666PYT5K.js} +146 -24
- package/dist/chunk-DNZ4DTNA.js +547 -0
- package/dist/chunk-ESRYVGHF.js +147 -0
- package/dist/{chunk-R6QNJQRH.js → chunk-FLWMBK77.js} +366 -507
- package/dist/{chunk-CMY7W45U.js → chunk-MEDE37J5.js} +8 -2
- package/dist/{chunk-CP2L6B53.js → chunk-R6NONXFC.js} +12 -8
- package/dist/dashboard.d.ts +4 -48
- package/dist/dashboard.js +12 -8
- package/dist/globals.css +0 -11
- package/dist/harness-picker-C1W3rTeb.d.ts +49 -0
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.js +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.js +19 -13
- package/dist/{template-card-gf-InrfN.d.ts → model-picker-DUfMTQo5.d.ts} +1 -86
- package/dist/pages.d.ts +5 -37
- package/dist/pages.js +208 -312
- package/dist/sdk-hooks-jUbIngSV.d.ts +96 -0
- package/dist/sdk-hooks.d.ts +2 -77
- package/dist/sdk-hooks.js +1 -1
- package/dist/styles.css +0 -11
- package/dist/template-card-UhV3pmRC.d.ts +88 -0
- package/dist/workspace.d.ts +7 -0
- package/dist/workspace.js +1 -1
- package/package.json +8 -8
package/dist/pages.js
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BillingDashboard,
|
|
3
3
|
InfoPanel,
|
|
4
|
-
ModelPicker,
|
|
5
4
|
PricingPage,
|
|
6
5
|
TemplateCard,
|
|
7
|
-
UsageChart
|
|
8
|
-
|
|
9
|
-
} from "./chunk-N5RYCDLD.js";
|
|
6
|
+
UsageChart
|
|
7
|
+
} from "./chunk-DNZ4DTNA.js";
|
|
10
8
|
import {
|
|
11
9
|
Badge,
|
|
12
10
|
Button,
|
|
13
11
|
Textarea
|
|
14
12
|
} from "./chunk-7ZA5SEK3.js";
|
|
13
|
+
import "./chunk-4KAPMTPU.js";
|
|
15
14
|
import {
|
|
16
15
|
cn
|
|
17
16
|
} from "./chunk-EI44GEQ5.js";
|
|
@@ -280,7 +279,6 @@ import {
|
|
|
280
279
|
ArrowLeft,
|
|
281
280
|
Layers,
|
|
282
281
|
Cpu,
|
|
283
|
-
Bot,
|
|
284
282
|
Info,
|
|
285
283
|
Loader2,
|
|
286
284
|
Settings,
|
|
@@ -509,10 +507,6 @@ function ProvisioningWizard({
|
|
|
509
507
|
skipToReview,
|
|
510
508
|
onLoadStartupScripts,
|
|
511
509
|
resourceLimits,
|
|
512
|
-
models,
|
|
513
|
-
popular,
|
|
514
|
-
defaultModel,
|
|
515
|
-
onSetDefault,
|
|
516
510
|
sshAccess,
|
|
517
511
|
pricingRates,
|
|
518
512
|
planTiers
|
|
@@ -599,19 +593,6 @@ function ProvisioningWizard({
|
|
|
599
593
|
(prev) => snapSliderValue(prev, STORAGE_MIN, storageMax, storageStep)
|
|
600
594
|
);
|
|
601
595
|
}, [cpuMax, ramMax, storageMax, cpuStep, ramStep, storageStep]);
|
|
602
|
-
const [modelTier, setModelTier] = React2.useState(
|
|
603
|
-
dc?.modelTier ?? defaultModel ?? ""
|
|
604
|
-
);
|
|
605
|
-
const [systemPrompt, setSystemPrompt] = React2.useState(
|
|
606
|
-
dc?.systemPrompt ?? ""
|
|
607
|
-
);
|
|
608
|
-
React2.useEffect(() => {
|
|
609
|
-
if (!models || models.length === 0) return;
|
|
610
|
-
const ids = models.map(canonicalModelId);
|
|
611
|
-
if (ids.includes(modelTier)) return;
|
|
612
|
-
const next = (defaultModel && ids.includes(defaultModel) ? defaultModel : void 0) ?? popular?.find((p) => ids.includes(p)) ?? ids[0];
|
|
613
|
-
if (next && next !== modelTier) setModelTier(next);
|
|
614
|
-
}, [models, modelTier, defaultModel, popular]);
|
|
615
596
|
const [name, setName] = React2.useState(dc?.name ?? "");
|
|
616
597
|
const [gitUrl, setGitUrl] = React2.useState(dc?.gitUrl ?? "");
|
|
617
598
|
const [envVars, setEnvVars] = React2.useState(dc?.envVars ?? [{ key: "", value: "" }]);
|
|
@@ -644,7 +625,7 @@ function ProvisioningWizard({
|
|
|
644
625
|
};
|
|
645
626
|
}, []);
|
|
646
627
|
const isMultistep = variant === "multistep";
|
|
647
|
-
const stepLabels = sshAccess ? ["Environment", "Resources", "
|
|
628
|
+
const stepLabels = sshAccess ? ["Environment", "Resources", "Access"] : ["Environment", "Resources"];
|
|
648
629
|
const finalStep = stepLabels.length;
|
|
649
630
|
const [currentStep, setCurrentStep] = React2.useState(
|
|
650
631
|
skipToReview && dc && isMultistep ? finalStep : 1
|
|
@@ -664,8 +645,6 @@ function ProvisioningWizard({
|
|
|
664
645
|
cpuCores,
|
|
665
646
|
ramGB,
|
|
666
647
|
storageGB,
|
|
667
|
-
modelTier,
|
|
668
|
-
systemPrompt,
|
|
669
648
|
name,
|
|
670
649
|
gitUrl,
|
|
671
650
|
envVars: envVars.filter((e) => e.key.trim() !== ""),
|
|
@@ -756,7 +735,7 @@ function ProvisioningWizard({
|
|
|
756
735
|
),
|
|
757
736
|
/* @__PURE__ */ jsxs2("div", { children: [
|
|
758
737
|
/* @__PURE__ */ jsx2("h1", { className: "text-3xl font-extrabold tracking-tight text-foreground mb-1", children: "Sandbox Provisioning" }),
|
|
759
|
-
/* @__PURE__ */ jsx2("p", { className: "text-muted-foreground text-sm", children: "Select your stack, allocate resources, and
|
|
738
|
+
/* @__PURE__ */ jsx2("p", { className: "text-muted-foreground text-sm", children: "Select your stack, allocate resources, and deploy." })
|
|
760
739
|
] })
|
|
761
740
|
] }),
|
|
762
741
|
/* @__PURE__ */ jsxs2("div", { className: "grid grid-cols-12 gap-6 flex-1 min-h-0", children: [
|
|
@@ -812,9 +791,6 @@ function ProvisioningWizard({
|
|
|
812
791
|
setStorageGB(
|
|
813
792
|
snapSliderValue(128, STORAGE_MIN, storageMax, storageStep)
|
|
814
793
|
);
|
|
815
|
-
const first = models?.[0];
|
|
816
|
-
setModelTier(first ? canonicalModelId(first) : "");
|
|
817
|
-
setSystemPrompt("");
|
|
818
794
|
setName("");
|
|
819
795
|
setGitUrl("");
|
|
820
796
|
setEnvVars([{ key: "", value: "" }]);
|
|
@@ -999,275 +975,230 @@ function ProvisioningWizard({
|
|
|
999
975
|
}
|
|
1000
976
|
) })
|
|
1001
977
|
] }) }),
|
|
1002
|
-
(!isMultistep || currentStep ===
|
|
1003
|
-
/* @__PURE__ */ jsxs2(
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
)
|
|
978
|
+
(!isMultistep || currentStep === 2) && /* @__PURE__ */ jsx2(React2.Fragment, { children: /* @__PURE__ */ jsx2("section", { className: "bg-card border border-border rounded-[24px] p-6 shadow-2xl relative overflow-hidden animate-in fade-in slide-in-from-bottom-4 duration-300", children: /* @__PURE__ */ jsx2("div", { className: "space-y-5", children: /* @__PURE__ */ jsxs2("div", { children: [
|
|
979
|
+
/* @__PURE__ */ jsxs2(
|
|
980
|
+
"button",
|
|
981
|
+
{
|
|
982
|
+
type: "button",
|
|
983
|
+
onClick: () => setShowAdvanced(!showAdvanced),
|
|
984
|
+
className: "flex items-center gap-2 text-foreground/70 hover:text-foreground transition-colors text-sm font-bold focus:outline-none",
|
|
985
|
+
children: [
|
|
986
|
+
/* @__PURE__ */ jsx2(Settings, { className: "w-4 h-4" }),
|
|
987
|
+
showAdvanced ? "Hide Advanced Options" : "Show Advanced Options"
|
|
988
|
+
]
|
|
989
|
+
}
|
|
990
|
+
),
|
|
991
|
+
showAdvanced && /* @__PURE__ */ jsxs2("div", { className: "mt-6 space-y-5 animate-in slide-in-from-top-4 fade-in duration-300", children: [
|
|
992
|
+
/* @__PURE__ */ jsxs2("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
|
|
993
|
+
/* @__PURE__ */ jsxs2("div", { children: [
|
|
994
|
+
/* @__PURE__ */ jsx2("label", { className: "block font-label text-xs font-bold uppercase tracking-widest text-muted-foreground mb-2", children: "Workspace Name" }),
|
|
995
|
+
/* @__PURE__ */ jsx2(
|
|
996
|
+
"input",
|
|
997
|
+
{
|
|
998
|
+
type: "text",
|
|
999
|
+
value: name,
|
|
1000
|
+
onChange: (e) => setName(e.target.value),
|
|
1001
|
+
maxLength: 128,
|
|
1002
|
+
className: "w-full bg-card border border-border rounded-xl h-12 px-4 font-bold text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent placeholder:text-muted-foreground",
|
|
1003
|
+
placeholder: "my-cool-sandbox"
|
|
1004
|
+
}
|
|
1005
|
+
)
|
|
1006
|
+
] }),
|
|
1007
|
+
/* @__PURE__ */ jsxs2("div", { children: [
|
|
1008
|
+
/* @__PURE__ */ jsx2("label", { className: "block font-label text-xs font-bold uppercase tracking-widest text-muted-foreground mb-2", children: "Virtualization Driver" }),
|
|
1009
|
+
/* @__PURE__ */ jsxs2(
|
|
1010
|
+
"select",
|
|
1011
|
+
{
|
|
1012
|
+
value: driver,
|
|
1013
|
+
onChange: (e) => {
|
|
1014
|
+
if (VALID_DRIVERS.has(e.target.value))
|
|
1015
|
+
setDriver(
|
|
1016
|
+
e.target.value
|
|
1017
|
+
);
|
|
1018
|
+
},
|
|
1019
|
+
className: "w-full bg-card border border-border rounded-xl h-12 px-4 font-bold text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent appearance-none",
|
|
1020
|
+
children: [
|
|
1021
|
+
/* @__PURE__ */ jsx2("option", { value: "docker", className: "bg-gray-900", children: "Docker container (Default)" }),
|
|
1022
|
+
/* @__PURE__ */ jsx2(
|
|
1023
|
+
"option",
|
|
1024
|
+
{
|
|
1025
|
+
value: "firecracker",
|
|
1026
|
+
className: "bg-gray-900",
|
|
1027
|
+
children: "Firecracker microVM (Secure)"
|
|
1028
|
+
}
|
|
1029
|
+
),
|
|
1030
|
+
/* @__PURE__ */ jsx2("option", { value: "tangle", className: "bg-gray-900", children: "Tangle Distributed Node" })
|
|
1031
|
+
]
|
|
1032
|
+
}
|
|
1033
|
+
)
|
|
1034
|
+
] })
|
|
1031
1035
|
] }),
|
|
1032
1036
|
/* @__PURE__ */ jsxs2("div", { children: [
|
|
1033
|
-
/* @__PURE__ */ jsx2("label", { className: "block font-label text-xs font-bold uppercase tracking-widest text-muted-foreground mb-2", children: "
|
|
1037
|
+
/* @__PURE__ */ jsx2("label", { className: "block font-label text-xs font-bold uppercase tracking-widest text-muted-foreground mb-2", children: "Git Repository URL" }),
|
|
1034
1038
|
/* @__PURE__ */ jsx2(
|
|
1035
|
-
"
|
|
1039
|
+
"input",
|
|
1036
1040
|
{
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
className: "w-full bg-card border border-border rounded-xl
|
|
1041
|
-
placeholder: "
|
|
1041
|
+
type: "text",
|
|
1042
|
+
value: gitUrl,
|
|
1043
|
+
onChange: (e) => setGitUrl(e.target.value),
|
|
1044
|
+
className: "w-full bg-card border border-border rounded-xl h-12 px-4 font-bold text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent placeholder:text-muted-foreground",
|
|
1045
|
+
placeholder: "https://github.com/my-org/my-repo.git"
|
|
1042
1046
|
}
|
|
1043
1047
|
)
|
|
1044
1048
|
] }),
|
|
1045
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
1046
|
-
/* @__PURE__ */ jsxs2(
|
|
1047
|
-
"
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
value: name,
|
|
1067
|
-
onChange: (e) => setName(e.target.value),
|
|
1068
|
-
maxLength: 128,
|
|
1069
|
-
className: "w-full bg-card border border-border rounded-xl h-12 px-4 font-bold text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent placeholder:text-muted-foreground",
|
|
1070
|
-
placeholder: "my-cool-sandbox"
|
|
1071
|
-
}
|
|
1072
|
-
)
|
|
1073
|
-
] }),
|
|
1074
|
-
/* @__PURE__ */ jsxs2("div", { children: [
|
|
1075
|
-
/* @__PURE__ */ jsx2("label", { className: "block font-label text-xs font-bold uppercase tracking-widest text-muted-foreground mb-2", children: "Virtualization Driver" }),
|
|
1076
|
-
/* @__PURE__ */ jsxs2(
|
|
1077
|
-
"select",
|
|
1078
|
-
{
|
|
1079
|
-
value: driver,
|
|
1080
|
-
onChange: (e) => {
|
|
1081
|
-
if (VALID_DRIVERS.has(e.target.value))
|
|
1082
|
-
setDriver(
|
|
1083
|
-
e.target.value
|
|
1084
|
-
);
|
|
1085
|
-
},
|
|
1086
|
-
className: "w-full bg-card border border-border rounded-xl h-12 px-4 font-bold text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent appearance-none",
|
|
1087
|
-
children: [
|
|
1088
|
-
/* @__PURE__ */ jsx2("option", { value: "docker", className: "bg-gray-900", children: "Docker container (Default)" }),
|
|
1089
|
-
/* @__PURE__ */ jsx2(
|
|
1090
|
-
"option",
|
|
1091
|
-
{
|
|
1092
|
-
value: "firecracker",
|
|
1093
|
-
className: "bg-gray-900",
|
|
1094
|
-
children: "Firecracker microVM (Secure)"
|
|
1095
|
-
}
|
|
1096
|
-
),
|
|
1097
|
-
/* @__PURE__ */ jsx2("option", { value: "tangle", className: "bg-gray-900", children: "Tangle Distributed Node" })
|
|
1098
|
-
]
|
|
1099
|
-
}
|
|
1100
|
-
)
|
|
1101
|
-
] })
|
|
1102
|
-
] }),
|
|
1103
|
-
/* @__PURE__ */ jsxs2("div", { children: [
|
|
1104
|
-
/* @__PURE__ */ jsx2("label", { className: "block font-label text-xs font-bold uppercase tracking-widest text-muted-foreground mb-2", children: "Git Repository URL" }),
|
|
1049
|
+
/* @__PURE__ */ jsxs2("div", { children: [
|
|
1050
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex justify-between items-center mb-2", children: [
|
|
1051
|
+
/* @__PURE__ */ jsx2("label", { className: "block font-label text-xs font-bold uppercase tracking-widest text-muted-foreground", children: "Environment Variables" }),
|
|
1052
|
+
/* @__PURE__ */ jsxs2(
|
|
1053
|
+
"button",
|
|
1054
|
+
{
|
|
1055
|
+
type: "button",
|
|
1056
|
+
onClick: () => setEnvVars([
|
|
1057
|
+
...envVars,
|
|
1058
|
+
{ key: "", value: "" }
|
|
1059
|
+
]),
|
|
1060
|
+
className: "flex items-center gap-1 text-xs text-primary hover:text-primary/70 transition-colors font-bold",
|
|
1061
|
+
children: [
|
|
1062
|
+
/* @__PURE__ */ jsx2(Plus, { className: "h-3 w-3" }),
|
|
1063
|
+
" Add Var"
|
|
1064
|
+
]
|
|
1065
|
+
}
|
|
1066
|
+
)
|
|
1067
|
+
] }),
|
|
1068
|
+
/* @__PURE__ */ jsxs2("div", { className: "space-y-2", children: [
|
|
1069
|
+
envVars.map((env, i) => /* @__PURE__ */ jsxs2("div", { className: "flex gap-2", children: [
|
|
1105
1070
|
/* @__PURE__ */ jsx2(
|
|
1106
1071
|
"input",
|
|
1107
1072
|
{
|
|
1108
1073
|
type: "text",
|
|
1109
|
-
value:
|
|
1110
|
-
onChange: (e) =>
|
|
1111
|
-
|
|
1112
|
-
|
|
1074
|
+
value: env.key,
|
|
1075
|
+
onChange: (e) => setEnvVars(
|
|
1076
|
+
envVars.map(
|
|
1077
|
+
(v, idx) => idx === i ? { ...v, key: e.target.value } : v
|
|
1078
|
+
)
|
|
1079
|
+
),
|
|
1080
|
+
className: "flex-1 bg-card border border-border rounded-xl h-10 px-3 font-mono text-sm text-foreground focus:outline-none focus:ring-1 focus:ring-primary placeholder:text-muted-foreground",
|
|
1081
|
+
placeholder: "API_KEY"
|
|
1113
1082
|
}
|
|
1114
|
-
)
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
...envVars,
|
|
1125
|
-
{ key: "", value: "" }
|
|
1126
|
-
]),
|
|
1127
|
-
className: "flex items-center gap-1 text-xs text-primary hover:text-primary/70 transition-colors font-bold",
|
|
1128
|
-
children: [
|
|
1129
|
-
/* @__PURE__ */ jsx2(Plus, { className: "h-3 w-3" }),
|
|
1130
|
-
" Add Var"
|
|
1131
|
-
]
|
|
1132
|
-
}
|
|
1133
|
-
)
|
|
1134
|
-
] }),
|
|
1135
|
-
/* @__PURE__ */ jsxs2("div", { className: "space-y-2", children: [
|
|
1136
|
-
envVars.map((env, i) => /* @__PURE__ */ jsxs2("div", { className: "flex gap-2", children: [
|
|
1137
|
-
/* @__PURE__ */ jsx2(
|
|
1138
|
-
"input",
|
|
1139
|
-
{
|
|
1140
|
-
type: "text",
|
|
1141
|
-
value: env.key,
|
|
1142
|
-
onChange: (e) => setEnvVars(
|
|
1143
|
-
envVars.map(
|
|
1144
|
-
(v, idx) => idx === i ? { ...v, key: e.target.value } : v
|
|
1145
|
-
)
|
|
1146
|
-
),
|
|
1147
|
-
className: "flex-1 bg-card border border-border rounded-xl h-10 px-3 font-mono text-sm text-foreground focus:outline-none focus:ring-1 focus:ring-primary placeholder:text-muted-foreground",
|
|
1148
|
-
placeholder: "API_KEY"
|
|
1149
|
-
}
|
|
1083
|
+
),
|
|
1084
|
+
/* @__PURE__ */ jsx2(
|
|
1085
|
+
"input",
|
|
1086
|
+
{
|
|
1087
|
+
type: "password",
|
|
1088
|
+
value: env.value,
|
|
1089
|
+
onChange: (e) => setEnvVars(
|
|
1090
|
+
envVars.map(
|
|
1091
|
+
(v, idx) => idx === i ? { ...v, value: e.target.value } : v
|
|
1092
|
+
)
|
|
1150
1093
|
),
|
|
1094
|
+
className: "flex-[2] bg-card border border-border rounded-xl h-10 px-3 font-mono text-sm text-foreground focus:outline-none focus:ring-1 focus:ring-primary placeholder:text-muted-foreground",
|
|
1095
|
+
placeholder: "sk-xxxxxxxxxxx"
|
|
1096
|
+
}
|
|
1097
|
+
),
|
|
1098
|
+
/* @__PURE__ */ jsx2(
|
|
1099
|
+
"button",
|
|
1100
|
+
{
|
|
1101
|
+
type: "button",
|
|
1102
|
+
onClick: () => setEnvVars(
|
|
1103
|
+
envVars.filter((_, idx) => idx !== i)
|
|
1104
|
+
),
|
|
1105
|
+
className: "h-10 w-10 flex items-center justify-center shrink-0 rounded-xl bg-card border border-border text-red-400 hover:bg-red-500/10 hover:border-red-500/30 transition-colors",
|
|
1106
|
+
children: /* @__PURE__ */ jsx2(Trash2, { className: "h-4 w-4" })
|
|
1107
|
+
}
|
|
1108
|
+
)
|
|
1109
|
+
] }, i)),
|
|
1110
|
+
envVars.length === 0 && /* @__PURE__ */ jsx2("div", { className: "text-center p-3 bg-card border border-border rounded-xl text-muted-foreground/60 text-sm italic", children: "No environment variables set" })
|
|
1111
|
+
] })
|
|
1112
|
+
] }),
|
|
1113
|
+
availableScripts.length > 0 && /* @__PURE__ */ jsxs2("div", { children: [
|
|
1114
|
+
/* @__PURE__ */ jsx2("div", { className: "text-xs font-bold uppercase tracking-widest text-muted-foreground mb-2", children: "Startup Scripts" }),
|
|
1115
|
+
/* @__PURE__ */ jsx2("div", { className: "space-y-2", children: availableScripts.filter((s) => s.enabled).map((script) => {
|
|
1116
|
+
const selected = startupScriptIds.includes(
|
|
1117
|
+
script.id
|
|
1118
|
+
);
|
|
1119
|
+
return /* @__PURE__ */ jsxs2(
|
|
1120
|
+
"label",
|
|
1121
|
+
{
|
|
1122
|
+
className: "flex items-start gap-3 cursor-pointer group rounded-lg border border-border p-3 transition-colors hover:border-primary/30",
|
|
1123
|
+
children: [
|
|
1151
1124
|
/* @__PURE__ */ jsx2(
|
|
1152
1125
|
"input",
|
|
1153
1126
|
{
|
|
1154
|
-
type: "
|
|
1155
|
-
|
|
1156
|
-
onChange: (
|
|
1157
|
-
|
|
1158
|
-
(
|
|
1159
|
-
)
|
|
1127
|
+
type: "checkbox",
|
|
1128
|
+
checked: selected,
|
|
1129
|
+
onChange: () => setStartupScriptIds(
|
|
1130
|
+
(prev) => selected ? prev.filter(
|
|
1131
|
+
(id) => id !== script.id
|
|
1132
|
+
) : [...prev, script.id]
|
|
1160
1133
|
),
|
|
1161
|
-
className: "
|
|
1162
|
-
placeholder: "sk-xxxxxxxxxxx"
|
|
1134
|
+
className: "mt-0.5 h-4 w-4 rounded border-border text-primary focus:ring-primary/30"
|
|
1163
1135
|
}
|
|
1164
1136
|
),
|
|
1165
|
-
/* @__PURE__ */
|
|
1166
|
-
"
|
|
1167
|
-
{
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
onChange: () => setStartupScriptIds(
|
|
1197
|
-
(prev) => selected ? prev.filter(
|
|
1198
|
-
(id) => id !== script.id
|
|
1199
|
-
) : [...prev, script.id]
|
|
1137
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex-1 min-w-0", children: [
|
|
1138
|
+
/* @__PURE__ */ jsx2("div", { className: "text-sm font-medium text-foreground group-hover:text-primary transition-colors", children: script.name }),
|
|
1139
|
+
script.description && /* @__PURE__ */ jsx2("div", { className: "text-xs text-muted-foreground mt-0.5", children: script.description }),
|
|
1140
|
+
script.injectSecrets.length > 0 && /* @__PURE__ */ jsx2("div", { className: "flex flex-wrap gap-1 mt-1.5", children: script.injectSecrets.map((s) => /* @__PURE__ */ jsxs2(
|
|
1141
|
+
"span",
|
|
1142
|
+
{
|
|
1143
|
+
className: "inline-flex items-center gap-0.5 rounded-full bg-muted px-2 py-0.5 text-[10px] text-muted-foreground",
|
|
1144
|
+
children: [
|
|
1145
|
+
/* @__PURE__ */ jsxs2(
|
|
1146
|
+
"svg",
|
|
1147
|
+
{
|
|
1148
|
+
className: "h-2.5 w-2.5",
|
|
1149
|
+
viewBox: "0 0 24 24",
|
|
1150
|
+
fill: "none",
|
|
1151
|
+
stroke: "currentColor",
|
|
1152
|
+
strokeWidth: "2",
|
|
1153
|
+
children: [
|
|
1154
|
+
/* @__PURE__ */ jsx2(
|
|
1155
|
+
"rect",
|
|
1156
|
+
{
|
|
1157
|
+
x: "3",
|
|
1158
|
+
y: "11",
|
|
1159
|
+
width: "18",
|
|
1160
|
+
height: "11",
|
|
1161
|
+
rx: "2",
|
|
1162
|
+
ry: "2"
|
|
1163
|
+
}
|
|
1164
|
+
),
|
|
1165
|
+
/* @__PURE__ */ jsx2("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })
|
|
1166
|
+
]
|
|
1167
|
+
}
|
|
1200
1168
|
),
|
|
1201
|
-
className: "mt-0.5 h-4 w-4 rounded border-border text-primary focus:ring-primary/30"
|
|
1202
|
-
}
|
|
1203
|
-
),
|
|
1204
|
-
/* @__PURE__ */ jsxs2("div", { className: "flex-1 min-w-0", children: [
|
|
1205
|
-
/* @__PURE__ */ jsx2("div", { className: "text-sm font-medium text-foreground group-hover:text-primary transition-colors", children: script.name }),
|
|
1206
|
-
script.description && /* @__PURE__ */ jsx2("div", { className: "text-xs text-muted-foreground mt-0.5", children: script.description }),
|
|
1207
|
-
script.injectSecrets.length > 0 && /* @__PURE__ */ jsx2("div", { className: "flex flex-wrap gap-1 mt-1.5", children: script.injectSecrets.map((s) => /* @__PURE__ */ jsxs2(
|
|
1208
|
-
"span",
|
|
1209
|
-
{
|
|
1210
|
-
className: "inline-flex items-center gap-0.5 rounded-full bg-muted px-2 py-0.5 text-[10px] text-muted-foreground",
|
|
1211
|
-
children: [
|
|
1212
|
-
/* @__PURE__ */ jsxs2(
|
|
1213
|
-
"svg",
|
|
1214
|
-
{
|
|
1215
|
-
className: "h-2.5 w-2.5",
|
|
1216
|
-
viewBox: "0 0 24 24",
|
|
1217
|
-
fill: "none",
|
|
1218
|
-
stroke: "currentColor",
|
|
1219
|
-
strokeWidth: "2",
|
|
1220
|
-
children: [
|
|
1221
|
-
/* @__PURE__ */ jsx2(
|
|
1222
|
-
"rect",
|
|
1223
|
-
{
|
|
1224
|
-
x: "3",
|
|
1225
|
-
y: "11",
|
|
1226
|
-
width: "18",
|
|
1227
|
-
height: "11",
|
|
1228
|
-
rx: "2",
|
|
1229
|
-
ry: "2"
|
|
1230
|
-
}
|
|
1231
|
-
),
|
|
1232
|
-
/* @__PURE__ */ jsx2("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })
|
|
1233
|
-
]
|
|
1234
|
-
}
|
|
1235
|
-
),
|
|
1236
|
-
s
|
|
1237
|
-
]
|
|
1238
|
-
},
|
|
1239
1169
|
s
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
}
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1170
|
+
]
|
|
1171
|
+
},
|
|
1172
|
+
s
|
|
1173
|
+
)) })
|
|
1174
|
+
] })
|
|
1175
|
+
]
|
|
1176
|
+
},
|
|
1177
|
+
script.id
|
|
1178
|
+
);
|
|
1179
|
+
}) })
|
|
1180
|
+
] }),
|
|
1181
|
+
/* @__PURE__ */ jsx2("div", { className: "pt-2 border-t border-border", children: /* @__PURE__ */ jsxs2("label", { className: "flex items-center gap-3 cursor-pointer group", children: [
|
|
1182
|
+
/* @__PURE__ */ jsxs2("div", { className: "relative flex items-center justify-center shrink-0", children: [
|
|
1183
|
+
/* @__PURE__ */ jsx2(
|
|
1184
|
+
"input",
|
|
1185
|
+
{
|
|
1186
|
+
type: "checkbox",
|
|
1187
|
+
className: "sr-only peer",
|
|
1188
|
+
checked: bare,
|
|
1189
|
+
onChange: (e) => setBare(e.target.checked)
|
|
1190
|
+
}
|
|
1191
|
+
),
|
|
1192
|
+
/* @__PURE__ */ jsx2("div", { className: "w-10 h-6 bg-muted peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-primary hover:bg-muted/80 transition-colors" })
|
|
1193
|
+
] }),
|
|
1194
|
+
/* @__PURE__ */ jsxs2("div", { children: [
|
|
1195
|
+
/* @__PURE__ */ jsx2("div", { className: "text-sm font-bold text-foreground mb-0.5 group-hover:text-primary transition-colors", children: "Bare Mode" }),
|
|
1196
|
+
/* @__PURE__ */ jsx2("div", { className: "text-xs text-muted-foreground", children: "Start as a raw container without an embedded AI Agent backend." })
|
|
1266
1197
|
] })
|
|
1267
|
-
] })
|
|
1198
|
+
] }) })
|
|
1268
1199
|
] })
|
|
1269
|
-
] }) }),
|
|
1270
|
-
sshAccess && (!isMultistep || currentStep ===
|
|
1200
|
+
] }) }) }) }),
|
|
1201
|
+
sshAccess && (!isMultistep || currentStep === 3) && /* @__PURE__ */ jsx2(React2.Fragment, { children: /* @__PURE__ */ jsxs2("section", { className: "bg-card border border-border rounded-[24px] p-6 shadow-2xl relative overflow-hidden animate-in fade-in slide-in-from-bottom-4 duration-300", children: [
|
|
1271
1202
|
/* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-3 mb-5", children: [
|
|
1272
1203
|
/* @__PURE__ */ jsx2("div", { className: "flex h-9 w-9 shrink-0 items-center justify-center rounded-xl bg-primary/10 border border-primary/20 text-primary", children: /* @__PURE__ */ jsx2(Settings, { className: "h-5 w-5" }) }),
|
|
1273
1204
|
/* @__PURE__ */ jsx2("h2", { className: "text-lg font-bold text-foreground tracking-tight", children: "Access Configuration" })
|
|
@@ -1393,7 +1324,7 @@ function ProvisioningWizard({
|
|
|
1393
1324
|
{
|
|
1394
1325
|
type: "button",
|
|
1395
1326
|
onClick: handleDeploy,
|
|
1396
|
-
disabled: isDeploying || !selectedEnv
|
|
1327
|
+
disabled: isDeploying || !selectedEnv,
|
|
1397
1328
|
className: "w-full h-12 bg-primary text-primary-foreground font-extrabold text-sm rounded-2xl tracking-wide shadow-md disabled:opacity-50 hover:brightness-110 active:scale-[0.98] transition-all",
|
|
1398
1329
|
children: isDeploying ? /* @__PURE__ */ jsxs2("span", { className: "flex items-center justify-center gap-2", children: [
|
|
1399
1330
|
/* @__PURE__ */ jsx2(Loader2, { className: "h-4 w-4 animate-spin" }),
|
|
@@ -1415,7 +1346,7 @@ function ProvisioningWizard({
|
|
|
1415
1346
|
{
|
|
1416
1347
|
type: "button",
|
|
1417
1348
|
onClick: handleDeploy,
|
|
1418
|
-
disabled: isDeploying || !selectedEnv
|
|
1349
|
+
disabled: isDeploying || !selectedEnv,
|
|
1419
1350
|
className: "w-full h-12 bg-primary text-primary-foreground font-extrabold text-sm rounded-2xl tracking-wide shadow-md disabled:opacity-50 hover:brightness-110 active:scale-[0.98] transition-all",
|
|
1420
1351
|
children: isDeploying ? /* @__PURE__ */ jsxs2("span", { className: "flex items-center justify-center gap-2", children: [
|
|
1421
1352
|
/* @__PURE__ */ jsx2(Loader2, { className: "h-4 w-4 animate-spin" }),
|
|
@@ -1427,36 +1358,6 @@ function ProvisioningWizard({
|
|
|
1427
1358
|
] })
|
|
1428
1359
|
] });
|
|
1429
1360
|
}
|
|
1430
|
-
function SaveAsDefault({
|
|
1431
|
-
modelTier,
|
|
1432
|
-
defaultModel,
|
|
1433
|
-
onSetDefault
|
|
1434
|
-
}) {
|
|
1435
|
-
const isCurrentDefault = Boolean(modelTier) && modelTier === defaultModel;
|
|
1436
|
-
const disabled = !modelTier || isCurrentDefault;
|
|
1437
|
-
return /* @__PURE__ */ jsxs2("div", { className: "mt-2 flex items-center gap-2 text-xs text-muted-foreground", children: [
|
|
1438
|
-
/* @__PURE__ */ jsx2(
|
|
1439
|
-
"button",
|
|
1440
|
-
{
|
|
1441
|
-
type: "button",
|
|
1442
|
-
onClick: () => {
|
|
1443
|
-
if (!disabled) onSetDefault(modelTier);
|
|
1444
|
-
},
|
|
1445
|
-
disabled,
|
|
1446
|
-
className: cn(
|
|
1447
|
-
"underline-offset-2 transition-colors",
|
|
1448
|
-
disabled ? "cursor-default opacity-60" : "hover:text-foreground hover:underline focus:outline-none focus:text-foreground focus:underline"
|
|
1449
|
-
),
|
|
1450
|
-
children: isCurrentDefault ? "\u2713 Saved as default" : "Save as default"
|
|
1451
|
-
}
|
|
1452
|
-
),
|
|
1453
|
-
defaultModel && !isCurrentDefault && /* @__PURE__ */ jsxs2("span", { className: "truncate", children: [
|
|
1454
|
-
"(current default: ",
|
|
1455
|
-
/* @__PURE__ */ jsx2("span", { className: "font-mono", children: defaultModel }),
|
|
1456
|
-
")"
|
|
1457
|
-
] })
|
|
1458
|
-
] });
|
|
1459
|
-
}
|
|
1460
1361
|
|
|
1461
1362
|
// src/pages/pricing-page.tsx
|
|
1462
1363
|
import * as React3 from "react";
|
|
@@ -3665,7 +3566,6 @@ var CATEGORY_DEFAULTS = {
|
|
|
3665
3566
|
cpuCores: 4,
|
|
3666
3567
|
ramGB: 16,
|
|
3667
3568
|
storageGB: 128,
|
|
3668
|
-
systemPrompt: "You are a blockchain development assistant. Help with smart contract development, testing, and deployment. Follow security best practices and suggest gas optimizations where relevant.",
|
|
3669
3569
|
bare: false
|
|
3670
3570
|
},
|
|
3671
3571
|
"ai-ml": {
|
|
@@ -3673,7 +3573,6 @@ var CATEGORY_DEFAULTS = {
|
|
|
3673
3573
|
cpuCores: 8,
|
|
3674
3574
|
ramGB: 32,
|
|
3675
3575
|
storageGB: 256,
|
|
3676
|
-
systemPrompt: "You are an AI/ML development assistant. Help with model training, data processing, and experiment management. Suggest efficient approaches for the available compute resources.",
|
|
3677
3576
|
bare: false
|
|
3678
3577
|
},
|
|
3679
3578
|
frontend: {
|
|
@@ -3681,7 +3580,6 @@ var CATEGORY_DEFAULTS = {
|
|
|
3681
3580
|
cpuCores: 2,
|
|
3682
3581
|
ramGB: 4,
|
|
3683
3582
|
storageGB: 50,
|
|
3684
|
-
systemPrompt: "You are a frontend development assistant. Help build modern, accessible, and performant user interfaces.",
|
|
3685
3583
|
bare: false
|
|
3686
3584
|
},
|
|
3687
3585
|
infrastructure: {
|
|
@@ -3689,7 +3587,6 @@ var CATEGORY_DEFAULTS = {
|
|
|
3689
3587
|
cpuCores: 4,
|
|
3690
3588
|
ramGB: 16,
|
|
3691
3589
|
storageGB: 128,
|
|
3692
|
-
systemPrompt: "You are an infrastructure and DevOps assistant. Help with service configuration, deployment, monitoring, and operational best practices.",
|
|
3693
3590
|
bare: false
|
|
3694
3591
|
},
|
|
3695
3592
|
general: {
|
|
@@ -3697,7 +3594,6 @@ var CATEGORY_DEFAULTS = {
|
|
|
3697
3594
|
cpuCores: 4,
|
|
3698
3595
|
ramGB: 16,
|
|
3699
3596
|
storageGB: 128,
|
|
3700
|
-
systemPrompt: "",
|
|
3701
3597
|
bare: false
|
|
3702
3598
|
}
|
|
3703
3599
|
};
|