@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/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
- canonicalModelId
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", "AI Agent", "Access"] : ["Environment", "Resources", "AI Agent"];
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 configure your agent." })
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 === 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: [
1003
- /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-3 mb-5", children: [
1004
- /* @__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(Bot, { className: "h-5 w-5" }) }),
1005
- /* @__PURE__ */ jsx2("h2", { className: "text-lg font-bold text-foreground tracking-tight", children: "AI Agent Capability" })
1006
- ] }),
1007
- /* @__PURE__ */ jsxs2("div", { className: "space-y-5", children: [
1008
- /* @__PURE__ */ jsxs2("div", { children: [
1009
- /* @__PURE__ */ jsx2("label", { className: "block font-label text-xs font-bold uppercase tracking-widest text-muted-foreground mb-2", children: "Model Engine" }),
1010
- /* @__PURE__ */ jsx2(
1011
- ModelPicker,
1012
- {
1013
- label: "",
1014
- value: modelTier,
1015
- onChange: setModelTier,
1016
- models: models ?? [],
1017
- loading: !models,
1018
- disabled: !models || models.length === 0,
1019
- popular,
1020
- triggerClassName: "rounded-xl h-12 px-4 font-bold"
1021
- }
1022
- ),
1023
- onSetDefault && /* @__PURE__ */ jsx2(
1024
- SaveAsDefault,
1025
- {
1026
- modelTier,
1027
- defaultModel: defaultModel ?? null,
1028
- onSetDefault
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: "Core Directives (System Prompt)" }),
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
- "textarea",
1039
+ "input",
1036
1040
  {
1037
- value: systemPrompt,
1038
- onChange: (e) => setSystemPrompt(e.target.value),
1039
- maxLength: 1e4,
1040
- className: "w-full bg-card border border-border rounded-xl p-4 font-mono text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent h-32 resize-none placeholder:text-muted-foreground",
1041
- placeholder: "Define the autonomous directives or operational boundaries..."
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", { className: "pt-4 border-t border-border", children: [
1046
- /* @__PURE__ */ jsxs2(
1047
- "button",
1048
- {
1049
- type: "button",
1050
- onClick: () => setShowAdvanced(!showAdvanced),
1051
- className: "flex items-center gap-2 text-foreground/70 hover:text-foreground transition-colors text-sm font-bold focus:outline-none",
1052
- children: [
1053
- /* @__PURE__ */ jsx2(Settings, { className: "w-4 h-4" }),
1054
- showAdvanced ? "Hide Advanced Options" : "Show Advanced Options"
1055
- ]
1056
- }
1057
- ),
1058
- showAdvanced && /* @__PURE__ */ jsxs2("div", { className: "mt-6 space-y-5 animate-in slide-in-from-top-4 fade-in duration-300", children: [
1059
- /* @__PURE__ */ jsxs2("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
1060
- /* @__PURE__ */ jsxs2("div", { children: [
1061
- /* @__PURE__ */ jsx2("label", { className: "block font-label text-xs font-bold uppercase tracking-widest text-muted-foreground mb-2", children: "Workspace Name" }),
1062
- /* @__PURE__ */ jsx2(
1063
- "input",
1064
- {
1065
- type: "text",
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: gitUrl,
1110
- onChange: (e) => setGitUrl(e.target.value),
1111
- 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",
1112
- placeholder: "https://github.com/my-org/my-repo.git"
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
- /* @__PURE__ */ jsxs2("div", { children: [
1117
- /* @__PURE__ */ jsxs2("div", { className: "flex justify-between items-center mb-2", children: [
1118
- /* @__PURE__ */ jsx2("label", { className: "block font-label text-xs font-bold uppercase tracking-widest text-muted-foreground", children: "Environment Variables" }),
1119
- /* @__PURE__ */ jsxs2(
1120
- "button",
1121
- {
1122
- type: "button",
1123
- onClick: () => setEnvVars([
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: "password",
1155
- value: env.value,
1156
- onChange: (e) => setEnvVars(
1157
- envVars.map(
1158
- (v, idx) => idx === i ? { ...v, value: e.target.value } : v
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: "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",
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__ */ jsx2(
1166
- "button",
1167
- {
1168
- type: "button",
1169
- onClick: () => setEnvVars(
1170
- envVars.filter((_, idx) => idx !== i)
1171
- ),
1172
- 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",
1173
- children: /* @__PURE__ */ jsx2(Trash2, { className: "h-4 w-4" })
1174
- }
1175
- )
1176
- ] }, i)),
1177
- 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" })
1178
- ] })
1179
- ] }),
1180
- availableScripts.length > 0 && /* @__PURE__ */ jsxs2("div", { children: [
1181
- /* @__PURE__ */ jsx2("div", { className: "text-xs font-bold uppercase tracking-widest text-muted-foreground mb-2", children: "Startup Scripts" }),
1182
- /* @__PURE__ */ jsx2("div", { className: "space-y-2", children: availableScripts.filter((s) => s.enabled).map((script) => {
1183
- const selected = startupScriptIds.includes(
1184
- script.id
1185
- );
1186
- return /* @__PURE__ */ jsxs2(
1187
- "label",
1188
- {
1189
- className: "flex items-start gap-3 cursor-pointer group rounded-lg border border-border p-3 transition-colors hover:border-primary/30",
1190
- children: [
1191
- /* @__PURE__ */ jsx2(
1192
- "input",
1193
- {
1194
- type: "checkbox",
1195
- checked: selected,
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
- script.id
1245
- );
1246
- }) })
1247
- ] }),
1248
- /* @__PURE__ */ jsx2("div", { className: "pt-2 border-t border-border", children: /* @__PURE__ */ jsxs2("label", { className: "flex items-center gap-3 cursor-pointer group", children: [
1249
- /* @__PURE__ */ jsxs2("div", { className: "relative flex items-center justify-center shrink-0", children: [
1250
- /* @__PURE__ */ jsx2(
1251
- "input",
1252
- {
1253
- type: "checkbox",
1254
- className: "sr-only peer",
1255
- checked: bare,
1256
- onChange: (e) => setBare(e.target.checked)
1257
- }
1258
- ),
1259
- /* @__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" })
1260
- ] }),
1261
- /* @__PURE__ */ jsxs2("div", { children: [
1262
- /* @__PURE__ */ jsx2("div", { className: "text-sm font-bold text-foreground mb-0.5 group-hover:text-primary transition-colors", children: "Bare Mode" }),
1263
- /* @__PURE__ */ jsx2("div", { className: "text-xs text-muted-foreground", children: "Start as a raw container without an embedded AI Agent backend." })
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 === 4) && /* @__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: [
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 || !modelTier && !bare,
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 || !modelTier && !bare,
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
  };