Upload folder using huggingface_hub
Browse files- .hfignore +19 -3
- README.md +18 -4
- app/layout.tsx +1 -14
- app/page.tsx +16 -2
- assets/globals.css +2 -0
- components/providers-models/connections-pane.tsx +6 -0
- components/providers-models/drawer.tsx +1 -1
.hfignore
CHANGED
|
@@ -1,8 +1,24 @@
|
|
|
|
|
| 1 |
node_modules/
|
| 2 |
.next/
|
|
|
|
|
|
|
| 3 |
.git/
|
| 4 |
.github/
|
| 5 |
-
out/
|
| 6 |
-
dist/
|
| 7 |
-
*.log
|
| 8 |
data/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Hugging Face deployment ignore list
|
| 2 |
node_modules/
|
| 3 |
.next/
|
| 4 |
+
out/
|
| 5 |
+
build/
|
| 6 |
.git/
|
| 7 |
.github/
|
|
|
|
|
|
|
|
|
|
| 8 |
data/
|
| 9 |
+
sites/
|
| 10 |
+
deployments/
|
| 11 |
+
public/sites/
|
| 12 |
+
public/deployments/
|
| 13 |
+
*.log
|
| 14 |
+
.env
|
| 15 |
+
.env.*
|
| 16 |
+
.vscode/
|
| 17 |
+
.idea/
|
| 18 |
+
.cache/
|
| 19 |
+
project_dump.txt
|
| 20 |
+
*.dump
|
| 21 |
+
scripts/
|
| 22 |
+
e2e/
|
| 23 |
+
test-results/
|
| 24 |
+
playwright.config.ts
|
README.md
CHANGED
|
@@ -1,10 +1,24 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: docker
|
| 7 |
app_port: 7860
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
<div align="center">
|
|
|
|
| 1 |
---
|
| 2 |
+
title: OSW Studio
|
| 3 |
+
emoji: 🤖
|
| 4 |
+
colorFrom: indigo
|
| 5 |
+
colorTo: yellow
|
| 6 |
sdk: docker
|
| 7 |
app_port: 7860
|
| 8 |
+
pinned: false
|
| 9 |
+
license: mit
|
| 10 |
+
hf_oauth: true
|
| 11 |
+
hf_oauth_scopes:
|
| 12 |
+
- inference-api
|
| 13 |
+
- contribute-repos
|
| 14 |
+
tags:
|
| 15 |
+
- ai
|
| 16 |
+
- web-development
|
| 17 |
+
- code-generation
|
| 18 |
+
- llm
|
| 19 |
+
- agent
|
| 20 |
+
- low-code
|
| 21 |
+
short_description: Agentic Browser-based Website Builder
|
| 22 |
---
|
| 23 |
|
| 24 |
<div align="center">
|
app/layout.tsx
CHANGED
|
@@ -1,23 +1,10 @@
|
|
| 1 |
import type { Metadata, Viewport } from "next";
|
| 2 |
-
import { Inter, PT_Sans } from "next/font/google";
|
| 3 |
-
|
| 4 |
import TanstackProvider from "@/components/providers/tanstack-query-provider";
|
| 5 |
import { ThemeProvider } from "@/components/providers/theme-provider";
|
| 6 |
import "@/assets/globals.css";
|
| 7 |
import { Toaster } from "@/components/ui/sonner";
|
| 8 |
import { BackendStatusBanner } from "@/components/backend-status-banner";
|
| 9 |
|
| 10 |
-
const inter = Inter({
|
| 11 |
-
variable: "--font-inter-sans",
|
| 12 |
-
subsets: ["latin"],
|
| 13 |
-
});
|
| 14 |
-
|
| 15 |
-
const ptSans = PT_Sans({
|
| 16 |
-
variable: "--font-ptSans-mono",
|
| 17 |
-
subsets: ["latin"],
|
| 18 |
-
weight: ["400", "700"],
|
| 19 |
-
});
|
| 20 |
-
|
| 21 |
export const metadata: Metadata = {
|
| 22 |
title: "OSW Studio",
|
| 23 |
description:
|
|
@@ -70,7 +57,7 @@ export default function RootLayout({
|
|
| 70 |
return (
|
| 71 |
<html lang="en" suppressHydrationWarning>
|
| 72 |
<body
|
| 73 |
-
className=
|
| 74 |
suppressHydrationWarning
|
| 75 |
>
|
| 76 |
<ThemeProvider>
|
|
|
|
| 1 |
import type { Metadata, Viewport } from "next";
|
|
|
|
|
|
|
| 2 |
import TanstackProvider from "@/components/providers/tanstack-query-provider";
|
| 3 |
import { ThemeProvider } from "@/components/providers/theme-provider";
|
| 4 |
import "@/assets/globals.css";
|
| 5 |
import { Toaster } from "@/components/ui/sonner";
|
| 6 |
import { BackendStatusBanner } from "@/components/backend-status-banner";
|
| 7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
export const metadata: Metadata = {
|
| 9 |
title: "OSW Studio",
|
| 10 |
description:
|
|
|
|
| 57 |
return (
|
| 58 |
<html lang="en" suppressHydrationWarning>
|
| 59 |
<body
|
| 60 |
+
className="antialiased bg-background h-[100dvh] overflow-hidden"
|
| 61 |
suppressHydrationWarning
|
| 62 |
>
|
| 63 |
<ThemeProvider>
|
app/page.tsx
CHANGED
|
@@ -15,6 +15,7 @@ export default function Home() {
|
|
| 15 |
const router = useRouter();
|
| 16 |
const [bootError, setBootError] = useState<string | null>(null);
|
| 17 |
const [bootDetail, setBootDetail] = useState<string | null>(null);
|
|
|
|
| 18 |
const isServerMode = process.env.NEXT_PUBLIC_SERVER_MODE === 'true';
|
| 19 |
const isDesktop = process.env.NEXT_PUBLIC_DESKTOP === 'true';
|
| 20 |
|
|
@@ -41,7 +42,13 @@ export default function Home() {
|
|
| 41 |
setBootError(err instanceof Error ? err.message : 'Workspace initialization request failed');
|
| 42 |
});
|
| 43 |
} else {
|
| 44 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 45 |
}
|
| 46 |
}, [isServerMode, isDesktop, router]);
|
| 47 |
|
|
@@ -66,7 +73,14 @@ export default function Home() {
|
|
| 66 |
</p>
|
| 67 |
</div>
|
| 68 |
) : (
|
| 69 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
)}
|
| 71 |
</div>
|
| 72 |
);
|
|
|
|
| 15 |
const router = useRouter();
|
| 16 |
const [bootError, setBootError] = useState<string | null>(null);
|
| 17 |
const [bootDetail, setBootDetail] = useState<string | null>(null);
|
| 18 |
+
const [bootTarget, setBootTarget] = useState<string | null>(null);
|
| 19 |
const isServerMode = process.env.NEXT_PUBLIC_SERVER_MODE === 'true';
|
| 20 |
const isDesktop = process.env.NEXT_PUBLIC_DESKTOP === 'true';
|
| 21 |
|
|
|
|
| 42 |
setBootError(err instanceof Error ? err.message : 'Workspace initialization request failed');
|
| 43 |
});
|
| 44 |
} else {
|
| 45 |
+
const target = '/admin/projects';
|
| 46 |
+
setBootTarget(target);
|
| 47 |
+
const timeout = window.setTimeout(() => {
|
| 48 |
+
setBootError(`Redirect to ${target} did not complete. Click the link below to continue.`);
|
| 49 |
+
}, 3000);
|
| 50 |
+
window.location.replace(target);
|
| 51 |
+
return () => window.clearTimeout(timeout);
|
| 52 |
}
|
| 53 |
}, [isServerMode, isDesktop, router]);
|
| 54 |
|
|
|
|
| 73 |
</p>
|
| 74 |
</div>
|
| 75 |
) : (
|
| 76 |
+
<div className="max-w-lg px-8 text-zinc-400 space-y-3 text-center">
|
| 77 |
+
<p>Loading...</p>
|
| 78 |
+
{bootTarget && (
|
| 79 |
+
<p className="text-sm">
|
| 80 |
+
Redirecting to <a className="underline" href={bootTarget}>OSW Studio</a>.
|
| 81 |
+
</p>
|
| 82 |
+
)}
|
| 83 |
+
</div>
|
| 84 |
)}
|
| 85 |
</div>
|
| 86 |
);
|
assets/globals.css
CHANGED
|
@@ -43,6 +43,8 @@
|
|
| 43 |
}
|
| 44 |
|
| 45 |
:root {
|
|
|
|
|
|
|
| 46 |
--radius: 0.75rem;
|
| 47 |
--background: oklch(0.98 0 0);
|
| 48 |
--foreground: oklch(0.145 0 0);
|
|
|
|
| 43 |
}
|
| 44 |
|
| 45 |
:root {
|
| 46 |
+
--font-inter-sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
| 47 |
+
--font-ptSans-mono: "PT Sans", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
|
| 48 |
--radius: 0.75rem;
|
| 49 |
--background: oklch(0.98 0 0);
|
| 50 |
--foreground: oklch(0.145 0 0);
|
components/providers-models/connections-pane.tsx
CHANGED
|
@@ -1124,6 +1124,12 @@ export function ConnectionsPane() {
|
|
| 1124 |
{/* GitHub section */}
|
| 1125 |
<GitHubConnectionsSection />
|
| 1126 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1127 |
{/* Separator between GitHub and Search */}
|
| 1128 |
<div className="border-t border-border" />
|
| 1129 |
|
|
|
|
| 1124 |
{/* GitHub section */}
|
| 1125 |
<GitHubConnectionsSection />
|
| 1126 |
|
| 1127 |
+
{/* Separator between AI and GitHub */}
|
| 1128 |
+
<div className="border-t border-border" />
|
| 1129 |
+
|
| 1130 |
+
{/* GitHub section */}
|
| 1131 |
+
<GitHubConnectionsSection />
|
| 1132 |
+
|
| 1133 |
{/* Separator between GitHub and Search */}
|
| 1134 |
<div className="border-t border-border" />
|
| 1135 |
|
components/providers-models/drawer.tsx
CHANGED
|
@@ -5,7 +5,7 @@ import { createPortal } from 'react-dom';
|
|
| 5 |
import { X } from 'lucide-react';
|
| 6 |
import { cn } from '@/lib/utils';
|
| 7 |
|
| 8 |
-
export type DrawerMode = 'pick' | 'connect-choose' | 'connect-config' | '
|
| 9 |
|
| 10 |
export interface DrawerProps {
|
| 11 |
open: boolean;
|
|
|
|
| 5 |
import { X } from 'lucide-react';
|
| 6 |
import { cn } from '@/lib/utils';
|
| 7 |
|
| 8 |
+
export type DrawerMode = 'pick' | 'connect-choose' | 'connect-config' | 'edit-config' | 'connect-custom' | 'save-template' | null;
|
| 9 |
|
| 10 |
export interface DrawerProps {
|
| 11 |
open: boolean;
|