sa2kit 1.6.66 → 1.6.68

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.
Files changed (41) hide show
  1. package/dist/festivalCard/index.d.mts +10 -0
  2. package/dist/festivalCard/index.d.ts +10 -0
  3. package/dist/festivalCard/index.js +206 -0
  4. package/dist/festivalCard/index.js.map +1 -0
  5. package/dist/festivalCard/index.mjs +181 -0
  6. package/dist/festivalCard/index.mjs.map +1 -0
  7. package/dist/index.d.mts +2 -1
  8. package/dist/index.d.ts +2 -1
  9. package/dist/index.js +210 -18
  10. package/dist/index.js.map +1 -1
  11. package/dist/index.mjs +208 -18
  12. package/dist/index.mjs.map +1 -1
  13. package/dist/screenReceiver/core/index.d.mts +10 -2
  14. package/dist/screenReceiver/core/index.d.ts +10 -2
  15. package/dist/screenReceiver/core/index.js +15 -0
  16. package/dist/screenReceiver/core/index.js.map +1 -1
  17. package/dist/screenReceiver/core/index.mjs +15 -1
  18. package/dist/screenReceiver/core/index.mjs.map +1 -1
  19. package/dist/screenReceiver/index.d.mts +1 -1
  20. package/dist/screenReceiver/index.d.ts +1 -1
  21. package/dist/screenReceiver/index.js +21 -3
  22. package/dist/screenReceiver/index.js.map +1 -1
  23. package/dist/screenReceiver/index.mjs +21 -4
  24. package/dist/screenReceiver/index.mjs.map +1 -1
  25. package/dist/screenReceiver/server/index.js +1 -1
  26. package/dist/screenReceiver/server/index.js.map +1 -1
  27. package/dist/screenReceiver/server/index.mjs +1 -1
  28. package/dist/screenReceiver/server/index.mjs.map +1 -1
  29. package/dist/screenReceiver/server/next.d.mts +9 -0
  30. package/dist/screenReceiver/server/next.d.ts +9 -0
  31. package/dist/screenReceiver/server/next.js +178 -0
  32. package/dist/screenReceiver/server/next.js.map +1 -0
  33. package/dist/screenReceiver/server/next.mjs +176 -0
  34. package/dist/screenReceiver/server/next.mjs.map +1 -0
  35. package/dist/screenReceiver/web/index.d.mts +1 -1
  36. package/dist/screenReceiver/web/index.d.ts +1 -1
  37. package/dist/screenReceiver/web/index.js +21 -3
  38. package/dist/screenReceiver/web/index.js.map +1 -1
  39. package/dist/screenReceiver/web/index.mjs +21 -4
  40. package/dist/screenReceiver/web/index.mjs.map +1 -1
  41. package/package.json +11 -1
package/dist/index.mjs CHANGED
@@ -16,7 +16,7 @@ import { sql, relations } from 'drizzle-orm';
16
16
  import 'crypto';
17
17
  import 'bcryptjs';
18
18
  import 'jsonwebtoken';
19
- import * as THREE2 from 'three';
19
+ import * as THREE3 from 'three';
20
20
 
21
21
  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
22
22
  get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
@@ -5839,7 +5839,7 @@ function createCircularSpriteTexture() {
5839
5839
  canvas.height = size;
5840
5840
  const ctx = canvas.getContext("2d");
5841
5841
  if (!ctx) {
5842
- return new THREE2.CanvasTexture(canvas);
5842
+ return new THREE3.CanvasTexture(canvas);
5843
5843
  }
5844
5844
  const center = size / 2;
5845
5845
  const gradient = ctx.createRadialGradient(center, center, 2, center, center, center);
@@ -5848,7 +5848,7 @@ function createCircularSpriteTexture() {
5848
5848
  gradient.addColorStop(1, "rgba(255,255,255,0)");
5849
5849
  ctx.fillStyle = gradient;
5850
5850
  ctx.fillRect(0, 0, size, size);
5851
- const texture = new THREE2.CanvasTexture(canvas);
5851
+ const texture = new THREE3.CanvasTexture(canvas);
5852
5852
  texture.needsUpdate = true;
5853
5853
  return texture;
5854
5854
  }
@@ -6055,11 +6055,11 @@ var FireworksEngine = class {
6055
6055
  this.maxActiveFireworks = init.options?.maxActiveFireworks ?? DEFAULT_MAX_ACTIVE_FIREWORKS;
6056
6056
  this.onError = init.options?.onError;
6057
6057
  this.onFpsReport = init.options?.onFpsReport;
6058
- this.scene = new THREE2.Scene();
6059
- this.scene.background = new THREE2.Color("#060816");
6060
- this.camera = new THREE2.PerspectiveCamera(50, 1, 0.1, 1e3);
6058
+ this.scene = new THREE3.Scene();
6059
+ this.scene.background = new THREE3.Color("#060816");
6060
+ this.camera = new THREE3.PerspectiveCamera(50, 1, 0.1, 1e3);
6061
6061
  this.camera.position.set(0, 0, 45);
6062
- this.renderer = new THREE2.WebGLRenderer({
6062
+ this.renderer = new THREE3.WebGLRenderer({
6063
6063
  canvas: this.canvas,
6064
6064
  alpha: true,
6065
6065
  antialias: true,
@@ -6104,7 +6104,7 @@ var FireworksEngine = class {
6104
6104
  const particles = [];
6105
6105
  const positions = new Float32Array(seeds.length * 3);
6106
6106
  const colors = new Float32Array(seeds.length * 3);
6107
- const colorHelper = new THREE2.Color();
6107
+ const colorHelper = new THREE3.Color();
6108
6108
  for (let i = 0; i < seeds.length; i += 1) {
6109
6109
  const seed = seeds[i];
6110
6110
  if (!seed) {
@@ -6136,19 +6136,19 @@ var FireworksEngine = class {
6136
6136
  this.releaseParticles(particles);
6137
6137
  return;
6138
6138
  }
6139
- const geometry = new THREE2.BufferGeometry();
6140
- geometry.setAttribute("position", new THREE2.BufferAttribute(positions, 3));
6141
- geometry.setAttribute("color", new THREE2.BufferAttribute(colors, 3));
6142
- const material = new THREE2.PointsMaterial({
6139
+ const geometry = new THREE3.BufferGeometry();
6140
+ geometry.setAttribute("position", new THREE3.BufferAttribute(positions, 3));
6141
+ geometry.setAttribute("color", new THREE3.BufferAttribute(colors, 3));
6142
+ const material = new THREE3.PointsMaterial({
6143
6143
  size: payload.kind === "miku" ? 0.42 : 0.36,
6144
6144
  vertexColors: true,
6145
6145
  map: this.spriteTexture,
6146
6146
  transparent: true,
6147
6147
  opacity: 1,
6148
6148
  depthWrite: false,
6149
- blending: THREE2.AdditiveBlending
6149
+ blending: THREE3.AdditiveBlending
6150
6150
  });
6151
- const points = new THREE2.Points(geometry, material);
6151
+ const points = new THREE3.Points(geometry, material);
6152
6152
  this.scene.add(points);
6153
6153
  const burst = {
6154
6154
  id: `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
@@ -7054,11 +7054,28 @@ function useScreenReceiver(options) {
7054
7054
  [clearLogs, connect, connectionState, disconnect, iceConnectionState, isConnected, logs, stream]
7055
7055
  );
7056
7056
  }
7057
- var DEFAULT_SIGNAL_URL = "ws://127.0.0.1:8787/ws";
7057
+
7058
+ // src/screenReceiver/signalUrl.ts
7059
+ var DEFAULT_PORT = 8787;
7060
+ var DEFAULT_PATH = "/ws";
7061
+ function resolveScreenReceiverSignalUrl(options = {}) {
7062
+ const { signalUrl, path = DEFAULT_PATH, port = DEFAULT_PORT } = options;
7063
+ if (signalUrl && signalUrl.trim()) return signalUrl.trim();
7064
+ const normalizedPath = path.startsWith("/") ? path : `/${path}`;
7065
+ if (typeof window !== "undefined") {
7066
+ const protocol = window.location.protocol === "https:" ? "wss:" : "ws:";
7067
+ return `${protocol}//${window.location.host}${normalizedPath}`;
7068
+ }
7069
+ return `ws://127.0.0.1:${port}${normalizedPath}`;
7070
+ }
7058
7071
  var DEFAULT_ROOM_ID = "screen-room-1";
7059
7072
  function ScreenReceiverPanel(props) {
7060
- const { defaultSignalUrl = DEFAULT_SIGNAL_URL, defaultRoomId = DEFAULT_ROOM_ID, className } = props;
7061
- const [wsUrl, setWsUrl] = useState(defaultSignalUrl);
7073
+ const { defaultSignalUrl, defaultRoomId = DEFAULT_ROOM_ID, className } = props;
7074
+ const initialSignalUrl = useMemo(
7075
+ () => resolveScreenReceiverSignalUrl({ signalUrl: defaultSignalUrl }),
7076
+ [defaultSignalUrl]
7077
+ );
7078
+ const [wsUrl, setWsUrl] = useState(initialSignalUrl);
7062
7079
  const [roomId, setRoomId] = useState(defaultRoomId);
7063
7080
  const receiver = useScreenReceiver({ wsUrl, roomId });
7064
7081
  const logs = useMemo(() => receiver.logs.map((entry) => entry.text).join("\n"), [receiver.logs]);
@@ -7112,6 +7129,179 @@ function ScreenReceiverPanel(props) {
7112
7129
  function StatusItem({ label, value }) {
7113
7130
  return /* @__PURE__ */ React42__default.createElement("div", { className: "rounded-md border px-3 py-2" }, /* @__PURE__ */ React42__default.createElement("p", { className: "text-xs text-slate-500" }, label), /* @__PURE__ */ React42__default.createElement("p", { className: "text-sm font-medium" }, value));
7114
7131
  }
7132
+ var createSnow = (count) => {
7133
+ const positions = new Float32Array(count * 3);
7134
+ const speeds = new Float32Array(count);
7135
+ for (let i = 0; i < count; i++) {
7136
+ const i3 = i * 3;
7137
+ positions[i3] = (Math.random() - 0.5) * 16;
7138
+ positions[i3 + 1] = Math.random() * 10 + 1;
7139
+ positions[i3 + 2] = (Math.random() - 0.5) * 16;
7140
+ speeds[i] = 4e-3 + Math.random() * 0.01;
7141
+ }
7142
+ return { positions, speeds };
7143
+ };
7144
+ var FestivalCard3D = ({
7145
+ title = "Happy Holidays",
7146
+ subtitle = "Wishing you joy and peace",
7147
+ className
7148
+ }) => {
7149
+ const mountRef = useRef(null);
7150
+ useEffect(() => {
7151
+ const mount = mountRef.current;
7152
+ if (!mount) return;
7153
+ const scene = new THREE3.Scene();
7154
+ scene.fog = new THREE3.Fog(528934, 12, 28);
7155
+ const camera = new THREE3.PerspectiveCamera(50, mount.clientWidth / mount.clientHeight, 0.1, 100);
7156
+ camera.position.set(0, 2.6, 7.5);
7157
+ const renderer = new THREE3.WebGLRenderer({ antialias: true, alpha: true });
7158
+ renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
7159
+ renderer.setSize(mount.clientWidth, mount.clientHeight);
7160
+ renderer.outputColorSpace = THREE3.SRGBColorSpace;
7161
+ mount.appendChild(renderer.domElement);
7162
+ const ambientLight = new THREE3.AmbientLight(9090303, 0.8);
7163
+ scene.add(ambientLight);
7164
+ const keyLight = new THREE3.DirectionalLight(16777215, 1.25);
7165
+ keyLight.position.set(2, 5, 4);
7166
+ scene.add(keyLight);
7167
+ const fillLight = new THREE3.PointLight(8050687, 0.9, 24);
7168
+ fillLight.position.set(-4, 3, -2);
7169
+ scene.add(fillLight);
7170
+ const floor = new THREE3.Mesh(
7171
+ new THREE3.CircleGeometry(12, 48),
7172
+ new THREE3.MeshStandardMaterial({ color: 1056826, roughness: 0.95, metalness: 0.05 })
7173
+ );
7174
+ floor.rotation.x = -Math.PI / 2;
7175
+ floor.position.y = -1.2;
7176
+ scene.add(floor);
7177
+ const giftGroup = new THREE3.Group();
7178
+ scene.add(giftGroup);
7179
+ const box = new THREE3.Mesh(
7180
+ new THREE3.BoxGeometry(2, 1.6, 2),
7181
+ new THREE3.MeshStandardMaterial({ color: 14238053, roughness: 0.55, metalness: 0.2 })
7182
+ );
7183
+ giftGroup.add(box);
7184
+ const ribbonMaterial = new THREE3.MeshStandardMaterial({ color: 16767354, roughness: 0.3, metalness: 0.5 });
7185
+ const verticalRibbon = new THREE3.Mesh(new THREE3.BoxGeometry(0.24, 1.7, 2.02), ribbonMaterial);
7186
+ const horizontalRibbon = new THREE3.Mesh(new THREE3.BoxGeometry(2.02, 1.7, 0.24), ribbonMaterial);
7187
+ giftGroup.add(verticalRibbon);
7188
+ giftGroup.add(horizontalRibbon);
7189
+ const lid = new THREE3.Mesh(
7190
+ new THREE3.BoxGeometry(2.15, 0.34, 2.15),
7191
+ new THREE3.MeshStandardMaterial({ color: 13448278, roughness: 0.52, metalness: 0.2 })
7192
+ );
7193
+ lid.position.y = 0.98;
7194
+ giftGroup.add(lid);
7195
+ const bowLeft = new THREE3.Mesh(new THREE3.TorusGeometry(0.26, 0.08, 12, 32), ribbonMaterial);
7196
+ bowLeft.rotation.set(Math.PI / 2, Math.PI / 6, 0);
7197
+ bowLeft.position.set(-0.22, 1.14, 0);
7198
+ const bowRight = bowLeft.clone();
7199
+ bowRight.rotation.y = -Math.PI / 6;
7200
+ bowRight.position.x = 0.22;
7201
+ giftGroup.add(bowLeft, bowRight);
7202
+ giftGroup.position.y = -0.15;
7203
+ const { positions, speeds } = createSnow(260);
7204
+ const snowGeometry = new THREE3.BufferGeometry();
7205
+ snowGeometry.setAttribute("position", new THREE3.BufferAttribute(positions, 3));
7206
+ const snow = new THREE3.Points(
7207
+ snowGeometry,
7208
+ new THREE3.PointsMaterial({
7209
+ color: 15267071,
7210
+ size: 0.08,
7211
+ transparent: true,
7212
+ opacity: 0.92,
7213
+ depthWrite: false
7214
+ })
7215
+ );
7216
+ scene.add(snow);
7217
+ let rafId = 0;
7218
+ const clock = new THREE3.Clock();
7219
+ const animate = () => {
7220
+ const elapsed = clock.getElapsedTime();
7221
+ const pos = snowGeometry.attributes.position;
7222
+ for (let i = 0; i < pos.count; i++) {
7223
+ const speed = speeds[i] ?? 0.01;
7224
+ const y = pos.getY(i) - speed;
7225
+ pos.setY(i, y < -1.1 ? 10 + Math.random() * 2 : y);
7226
+ pos.setX(i, pos.getX(i) + Math.sin(elapsed + i * 0.04) * 16e-4);
7227
+ }
7228
+ pos.needsUpdate = true;
7229
+ giftGroup.rotation.y = elapsed * 0.35;
7230
+ giftGroup.position.y = -0.15 + Math.sin(elapsed * 1.4) * 0.08;
7231
+ lid.position.y = 0.98 + Math.sin(elapsed * 2.2) * 0.08;
7232
+ renderer.render(scene, camera);
7233
+ rafId = window.requestAnimationFrame(animate);
7234
+ };
7235
+ const handleResize = () => {
7236
+ if (!mount) return;
7237
+ const width = mount.clientWidth;
7238
+ const height = mount.clientHeight;
7239
+ camera.aspect = width / height;
7240
+ camera.updateProjectionMatrix();
7241
+ renderer.setSize(width, height);
7242
+ };
7243
+ window.addEventListener("resize", handleResize);
7244
+ animate();
7245
+ return () => {
7246
+ window.cancelAnimationFrame(rafId);
7247
+ window.removeEventListener("resize", handleResize);
7248
+ scene.traverse((obj) => {
7249
+ const mesh = obj;
7250
+ if (mesh.geometry) mesh.geometry.dispose();
7251
+ const material = mesh.material;
7252
+ if (Array.isArray(material)) material.forEach((m) => m.dispose());
7253
+ else material?.dispose();
7254
+ });
7255
+ renderer.dispose();
7256
+ mount.removeChild(renderer.domElement);
7257
+ };
7258
+ }, []);
7259
+ return /* @__PURE__ */ React42__default.createElement(
7260
+ "div",
7261
+ {
7262
+ className,
7263
+ style: {
7264
+ position: "relative",
7265
+ width: "100%",
7266
+ minHeight: 420,
7267
+ borderRadius: 20,
7268
+ overflow: "hidden",
7269
+ background: "radial-gradient(circle at 20% 20%, #244d8c 0%, #0c1a34 45%, #060d1f 100%)"
7270
+ }
7271
+ },
7272
+ /* @__PURE__ */ React42__default.createElement("div", { ref: mountRef, style: { position: "absolute", inset: 0 } }),
7273
+ /* @__PURE__ */ React42__default.createElement(
7274
+ "div",
7275
+ {
7276
+ style: {
7277
+ position: "absolute",
7278
+ inset: 0,
7279
+ pointerEvents: "none",
7280
+ background: "linear-gradient(180deg, rgba(255,255,255,0.18) 0%, rgba(255,255,255,0.04) 35%, rgba(4,8,20,0.36) 100%)"
7281
+ }
7282
+ }
7283
+ ),
7284
+ /* @__PURE__ */ React42__default.createElement(
7285
+ "div",
7286
+ {
7287
+ style: {
7288
+ position: "absolute",
7289
+ left: 20,
7290
+ right: 20,
7291
+ bottom: 20,
7292
+ zIndex: 2,
7293
+ padding: "16px 18px",
7294
+ borderRadius: 14,
7295
+ backgroundColor: "rgba(8, 16, 35, 0.66)",
7296
+ border: "1px solid rgba(255, 255, 255, 0.16)",
7297
+ color: "#f8fafc"
7298
+ }
7299
+ },
7300
+ /* @__PURE__ */ React42__default.createElement("div", { style: { fontSize: 26, fontWeight: 700, lineHeight: 1.2 } }, title),
7301
+ /* @__PURE__ */ React42__default.createElement("div", { style: { marginTop: 6, fontSize: 15, opacity: 0.92 } }, subtitle)
7302
+ )
7303
+ );
7304
+ };
7115
7305
 
7116
7306
  // src/storage/adapters/react-native-adapter.ts
7117
7307
  var AsyncStorage = null;
@@ -7466,6 +7656,6 @@ function useElectronStorage(key, defaultValue) {
7466
7656
  return useStorage(electronStorage, key, defaultValue);
7467
7657
  }
7468
7658
 
7469
- export { About_default as About, Dialog as AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, DialogDescription as AlertDialogDescription, DialogFooter as AlertDialogFooter, DialogHeader as AlertDialogHeader, DialogOverlay as AlertDialogOverlay, DialogPortal as AlertDialogPortal, DialogTitle as AlertDialogTitle, DialogTrigger as AlertDialogTrigger, AutoOpenModal, Avatar, AvatarFallback, AvatarImage, BackButton, BackgroundRemover, Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CategoryFilter, CollisionBalls, CompletionFilterComponent, ConfirmModal, ConsoleLoggerAdapter, Contact_default as Contact, DANMAKU_MAX_LENGTH, DANMAKU_TRACK_COUNT, DEFAULT_MAX_ACTIVE_FIREWORKS, DEFAULT_MAX_PARTICLES, DEFAULT_OPENAI_BASE_URL, DEFAULT_OPENAI_MODEL, DanmakuPanel, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DraggableExperimentGrid, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EnhancedAvatar, ExperimentCard, ExperimentGrid, ExperimentItemGrid, FIREWORK_KIND_LABELS, FilterButtonGroup, FireworksCanvas, FireworksControlPanel, FloatingMenu_default as FloatingMenu, FloatingMenuExample_default as FloatingMenuExample, GenericOrderManager, Grid, Home_default as Home, ImageMappingPanel, InMemorySkillRegistry, Input, Label, LocalImageMappingPanel, LogLevel, Logger, MIKU_PALETTE, MikuFireworks3D, Modal, NORMAL_PALETTE, Navigation_default as Navigation, NavigationItem_default as NavigationItem, NavigationToggle_default as NavigationToggle, OCRScanner, PageHeader, PermissionGuard, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, ProfileButton, ProfileModal, Progress, ProjectCarousel, ScreenReceiverPanel, ScrollArea, ScrollBar, SearchBox, SearchResultHint, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SentimentAnalyzer, Separator, Dialog as Sheet, DialogClose as SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, DialogOverlay as SheetOverlay, DialogPortal as SheetPortal, SheetTitle, DialogTrigger as SheetTrigger, SmartAssistant, SortControl, SortModeToggle, SortableExperimentItem, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Timeline, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserInfoBar, WebSocketTransport, applyPromptTemplate, arrayUtils, badgeVariants, buttonVariants, cn, createAiClient, createChatSession, createLogger, createOpenAICompatibleProvider, createSkillRegistry, debugUtils, errorUtils, fileUtils, filterExperiments, formatTime, getAllTags, getCategoryColor, getCategoryDisplayName, getCompletionFilterDisplayName, getCompletionStatusColor, getCompletionStatusText, getExperimentCounts, japaneseUtils, logger, normalizePromptVariables, skillToToolDefinition, sortExperiments, stringUtils, useAiChat, useAsyncStorage, useBackgroundRemoval, useDanmakuController, useElectronStorage, useFireworksEngine, useFireworksRealtime, useLocalStorage, useOCR, useScreenReceiver, useSentimentAnalysis, useStorage, useTaroStorage, useTextGeneration, validateExperiment, validators };
7659
+ export { About_default as About, Dialog as AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, DialogDescription as AlertDialogDescription, DialogFooter as AlertDialogFooter, DialogHeader as AlertDialogHeader, DialogOverlay as AlertDialogOverlay, DialogPortal as AlertDialogPortal, DialogTitle as AlertDialogTitle, DialogTrigger as AlertDialogTrigger, AutoOpenModal, Avatar, AvatarFallback, AvatarImage, BackButton, BackgroundRemover, Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CategoryFilter, CollisionBalls, CompletionFilterComponent, ConfirmModal, ConsoleLoggerAdapter, Contact_default as Contact, DANMAKU_MAX_LENGTH, DANMAKU_TRACK_COUNT, DEFAULT_MAX_ACTIVE_FIREWORKS, DEFAULT_MAX_PARTICLES, DEFAULT_OPENAI_BASE_URL, DEFAULT_OPENAI_MODEL, DanmakuPanel, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DraggableExperimentGrid, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EnhancedAvatar, ExperimentCard, ExperimentGrid, ExperimentItemGrid, FIREWORK_KIND_LABELS, FestivalCard3D, FilterButtonGroup, FireworksCanvas, FireworksControlPanel, FloatingMenu_default as FloatingMenu, FloatingMenuExample_default as FloatingMenuExample, GenericOrderManager, Grid, Home_default as Home, ImageMappingPanel, InMemorySkillRegistry, Input, Label, LocalImageMappingPanel, LogLevel, Logger, MIKU_PALETTE, MikuFireworks3D, Modal, NORMAL_PALETTE, Navigation_default as Navigation, NavigationItem_default as NavigationItem, NavigationToggle_default as NavigationToggle, OCRScanner, PageHeader, PermissionGuard, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, ProfileButton, ProfileModal, Progress, ProjectCarousel, ScreenReceiverPanel, ScrollArea, ScrollBar, SearchBox, SearchResultHint, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SentimentAnalyzer, Separator, Dialog as Sheet, DialogClose as SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, DialogOverlay as SheetOverlay, DialogPortal as SheetPortal, SheetTitle, DialogTrigger as SheetTrigger, SmartAssistant, SortControl, SortModeToggle, SortableExperimentItem, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Timeline, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserInfoBar, WebSocketTransport, applyPromptTemplate, arrayUtils, badgeVariants, buttonVariants, cn, createAiClient, createChatSession, createLogger, createOpenAICompatibleProvider, createSkillRegistry, debugUtils, errorUtils, fileUtils, filterExperiments, formatTime, getAllTags, getCategoryColor, getCategoryDisplayName, getCompletionFilterDisplayName, getCompletionStatusColor, getCompletionStatusText, getExperimentCounts, japaneseUtils, logger, normalizePromptVariables, resolveScreenReceiverSignalUrl, skillToToolDefinition, sortExperiments, stringUtils, useAiChat, useAsyncStorage, useBackgroundRemoval, useDanmakuController, useElectronStorage, useFireworksEngine, useFireworksRealtime, useLocalStorage, useOCR, useScreenReceiver, useSentimentAnalysis, useStorage, useTaroStorage, useTextGeneration, validateExperiment, validators };
7470
7660
  //# sourceMappingURL=index.mjs.map
7471
7661
  //# sourceMappingURL=index.mjs.map