diff --git a/README.md b/README.md index 3efbd27..a7656b6 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ # Fulling - AI-Powered Full-Stack Development Platform
- Next.js - TypeScript + Next.js + TypeScript PostgreSQL Kubernetes Claude Code
-## πŸš€ Overview +## Overview Fulling provides a sandboxed environment with Claude Code and PostgreSQL β€” everything you need to vibe code full-stack apps. @@ -23,46 +23,30 @@ Fulling automatically sets up the following for your project, ready in a minute: project_details -### ✨ Key Features +### Features -Fulling is designed to streamline the entire full-stack development lifecycle using an AI-centric approach. Its core capabilities are delivered through a highly orchestrated, self-contained development sandbox: +- **Dev environment** - Next.js + shadcn/ui + Claude Code CLI, all pre-configured. Environment variables are set up, so you can start coding immediately. -* **Pre-Configured AI Development Environment:** - * A complete, immediately usable development environment is provisioned, featuring **Next.js**, **shadcn/ui**, and the **Claude Code CLI**. - * Essential AI-related environment variables (e.g., `BASE_URL`, `KEY`, etc.) are automatically configured and injected, allowing the AI agent to begin coding instantly without manual setup. +- **Database** - Each project gets its own PostgreSQL instance via KubeBlocks. Connection string is injected as `DATABASE_URL`. -* **Isolated PostgreSQL Database Provisioning:** - * A dedicated and isolated **PostgreSQL** database instance is automatically created for each project using **KubeBlocks**. - * The database connection string is securely injected into the development environment as an environment variable (`DATABASE_URL`), ensuring the AI can access and configure the persistence layer. +- **Live domains** - HTTPS subdomains with SSL, mapped to ports 3000/5000/8080. Your app is accessible the moment you run it. -* **Automated Public Endpoint and Domain Mapping:** - * Multiple accessible subdomains are automatically allocated and managed (**HTTPS ingress with SSL termination**). - * These subdomains are configured to map to the specific application ports you wish to expose (e.g., ports 3000, 5000, 8080), providing immediate external access for testing and live development. +- **Web terminal** - Built-in ttyd terminal. Chat with Claude Code, run commands, see outputβ€”all in your browser. -* **Natural Language Interaction via Web Terminal:** - * All core development and configuration tasks are performed through a built-in **Web Terminal (ttyd)** using natural language instructions. - * This provides a direct, low-friction interface for interacting with the AI engineer, receiving code, running commands, and monitoring the development process. +- **Config awareness** - Set up OAuth or payment configs in the UI. Claude Code can read these and implement the features for you. -* **AI-Aware Business Configuration:** - * Specific business configurations, such as **OAuth settings** (e.g., GitHub authentication) and **Payment configurations**, can be fed into the platform. - * This configuration metadata is made accessible as contextual prompts, allowing the Claude Code agent to intelligently perceive and implement corresponding features (e.g., configuring NextAuth) directly into the generated code. +- **GitHub sync** - Connect your repo. Push, pull, version controlβ€”works like you'd expect. -* **Seamless GitHub Repository Integration:** - * The platform is designed for easy association with an external **GitHub repository**. - * This facilitates standard code repository management, version control, and collaboration by connecting the AI's generated code to your preferred source control workflow. +- **One-click deploy** - Deploy from sandbox to production Kubernetes. No YAML wrangling required. -* **Automated High-Availability Deployment:** - * Projects can be automatically deployed from the development sandbox to a high-availability production environment, leveraging the underlying **Kubernetes** infrastructure. - * This aims to abstract away the complexities of deployment, allowing the AI to manage the transition from development to live application. - -## Star Fulling on GitHub can get the latest released information. +## Star us for latest updates ![star-demo](https://github.com/user-attachments/assets/bc497e0b-bd23-4ded-a231-1e382d56f92e) -## πŸ› οΈ Technology Stack +## Tech Stack ### Frontend -- **Framework**: Next.js 15.5.4 (App Router) +- **Framework**: Next.js 16.0.10 (App Router) - **Language**: TypeScript - **Styling**: Tailwind CSS v4 - **UI Components**: Shadcn/UI @@ -80,7 +64,7 @@ Fulling is designed to streamline the entire full-stack development lifecycle us - **Web Terminal**: ttyd - **Container Image**: fullstack-web-runtime (Custom Docker image with development tools) -## πŸ“¦ Installation +## Installation ### Prerequisites @@ -93,7 +77,7 @@ Fulling is designed to streamline the entire full-stack development lifecycle us 1. Clone the repository: ```bash -git clone https://github.com/FullstackAgent/fulling.git +git clone https://github.com/FullAgent/fulling.git cd fulling ``` @@ -139,18 +123,16 @@ ANTHROPIC_BASE_URL="" LOG_LEVEL="info" # login -ENABLE_PASSWORD_AUTH="" -ENABLE_PASSWORD_AUTH="" ENABLE_SEALOS_AUTH="" ``` -6. Initialize database: +4. Initialize database: ```bash npx prisma generate npx prisma db push ``` -7. Run the development server: +5. Run the development server: ```bash pnpm run dev ``` @@ -161,7 +143,7 @@ Open [http://localhost:3000](http://localhost:3000) to access the application. prisma/schema.prisma -## 🚒 Deployment +## Deployment ### Kubernetes Resources @@ -190,12 +172,12 @@ Default resource allocation per sandbox: - Memory: 256Mi limit, 25Mi request - Storage: 3Gi for database -## πŸ”§ Development +## Development ### Project Structure ``` -fullstack-agent/ +fulling/ β”œβ”€β”€ app/ # Next.js App Router pages β”‚ β”œβ”€β”€ api/ # API routes β”‚ β”œβ”€β”€ projects/ # Project management pages @@ -229,46 +211,7 @@ fullstack-agent/ - Prisma ORM configuration - Connection pooling -## πŸ“š API Documentation - -### Sandbox Management - -#### Create Sandbox -```http -POST /api/sandbox/[projectId] -Content-Type: application/json - -{ - "envVars": { - "KEY": "value" - } -} -``` - -#### Get Sandbox Status -```http -GET /api/sandbox/[projectId] -``` - -#### Delete Sandbox -```http -DELETE /api/sandbox/[projectId] -``` - -### Project Management - -#### Create Project -```http -POST /api/projects -Content-Type: application/json - -{ - "name": "project-name", - "description": "Project description" -} -``` - -## πŸ”’ Security +## Security - **Authentication**: GitHub OAuth ensures only authorized users can access the platform - **Isolation**: Each sandbox runs in its own Kubernetes namespace @@ -276,9 +219,9 @@ Content-Type: application/json - **Network Policies**: Sandboxes isolated from each other - **Resource Limits**: Prevents resource exhaustion attacks -## 🀝 Contributing +## Contributing -We welcome contributions! Please see our [Contributing Guidelines](CONTRIBUTING.md) for details. +See [Contributing Guidelines](CONTRIBUTING.md) for details. ### Development Setup @@ -288,20 +231,20 @@ We welcome contributions! Please see our [Contributing Guidelines](CONTRIBUTING. 4. Run tests: `npm test` 5. Submit a pull request -## πŸ“„ License +## License -This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. +MIT License - see [LICENSE](LICENSE). -## πŸ™ Acknowledgments +## Acknowledgments - [Anthropic](https://www.anthropic.com/) for Claude Code - [Sealos](https://sealos.io/) for Kubernetes platform - [ttyd](https://github.com/tsl0922/ttyd) for web terminal -## πŸ“ž Contact +## Contact - GitHub: [@fanux](https://github.com/fanux) -- Issues: [GitHub Issues](https://github.com/FullstackAgent/FullstackAgent/issues) +- Issues: [GitHub Issues](https://github.com/FullAgent/fulling/issues) --- diff --git a/components/home-page.tsx b/components/home-page.tsx index 849eb21..b23f608 100644 --- a/components/home-page.tsx +++ b/components/home-page.tsx @@ -6,9 +6,9 @@ import Link from 'next/link'; import { useRouter } from 'next/navigation'; import { useSession } from 'next-auth/react'; -import { authenticateWithSealos } from '@/actions/sealos-auth'; import { MatrixRain } from '@/components/MatrixRain'; import { Button } from '@/components/ui/button'; +import { authenticateWithSealos } from '@/lib/actions/sealos-auth'; import { useSealos } from '@/provider/sealos'; /** diff --git a/components/terminal/toolbar/directory-selector.tsx b/components/terminal/toolbar/directory-selector.tsx index 0eeb864..17ced40 100644 --- a/components/terminal/toolbar/directory-selector.tsx +++ b/components/terminal/toolbar/directory-selector.tsx @@ -3,13 +3,13 @@ import { useEffect,useState } from 'react'; import { ChevronDown, Folder, Loader2 } from 'lucide-react'; -import { runCommand } from '@/actions/sandbox'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; +import { runCommand } from '@/lib/actions/sandbox'; interface DirectorySelectorProps { sandboxId?: string; diff --git a/.claude/commands/changelog.md b/docs/commands/changelog.md similarity index 100% rename from .claude/commands/changelog.md rename to docs/commands/changelog.md diff --git a/.claude/commands/usecase.md b/docs/commands/usecase.md similarity index 100% rename from .claude/commands/usecase.md rename to docs/commands/usecase.md diff --git a/docs/design_specification.md b/docs/design_specification.md deleted file mode 100644 index 3bf49db..0000000 --- a/docs/design_specification.md +++ /dev/null @@ -1,198 +0,0 @@ -# Fulling Design Specification - -This document defines the visual design standards for the Fulling project. All pages and components must adhere to this specification. - ---- - -## Design Philosophy - -### Core Principles - -1. **VS Code-Inspired Dark Theme** β€” Familiar interface for developers -2. **Two-Section Sidebar Architecture** β€” Visual separation between navigation and project areas -3. **Semantic Naming** β€” CSS variables named by purpose for easy maintenance -4. **WCAG Accessibility** β€” Contrast ratios meet accessibility standards - -### Visual Hierarchy - -| Level | Background | Usage | -|-------|------------|-------| -| Main Background | `#1E1E1E` | Editor/content area | -| Panel Background | `#252526` | Cards, modals, tab containers | -| Sidebar Navigation | `#333333` | Primary navigation area | -| Sidebar Project | `#242426` | Project list area | - ---- - -## Color System - -### Primary Colors - -| Variable | Value | Usage | -|----------|-------|-------| -| `--primary` | `#10639D` | Brand color (buttons, links, accents) | -| `--primary-hover` | `#155a8a` | Primary hover state | -| `--primary-foreground` | `#FFFFFF` | Text on primary elements | - -### Functional Colors - -| Variable | Usage | -|----------|-------| -| `--destructive` | Delete actions, error states (red spectrum) | -| `--accent` | Hover states, highlights (`#2B2D2E`) | -| `--muted` | Supporting element backgrounds | -| `--muted-foreground` | Secondary text (`#808080`) | - -### Text Colors - -| Variable | Value | Usage | -|----------|-------|-------| -| `--foreground` | `#CCCCCC` | Primary text | -| `--muted-foreground` | `oklch(0.72 0 0)` | Secondary text, descriptions | -| `--card-foreground` | `#FFFFFF` | Card titles only | - -### Borders - -| Variable | Value | Usage | -|----------|-------|-------| -| `--border` | `#3E3E3E` | General borders | -| `--input` | `oklch(0.37 0 0)` | Input field borders | -| `--ring` | `oklch(0.62 0.19 259.76)` | Focus ring | - ---- - -## Theme Configuration - -The project supports two dark themes, switched via CSS class: - -### `.dark` (Default) -- Primary: `#10639D` (deep blue) -- Suitable for: General use - -### `.stealth` (Alternate) -- Primary: `#007acc` (VS Code blue) -- Suitable for: Pure VS Code experience - -> **Note**: Light theme (`:root`) definitions exist but are incomplete. Do not use. - ---- - -## Typography - -| Variable | Font | Usage | -|----------|------|-------| -| `--font-mono` | JetBrains Mono, monospace | Code, terminal | -| `--font-serif` | Source Serif 4, serif | Headings, emphasis | - ---- - -## Border Radius System - -| Variable | Computed Value | Usage | -|----------|---------------|-------| -| `--radius` | `0.375rem` | Base radius | -| `--radius-sm` | `calc(var(--radius) - 4px)` | Small elements | -| `--radius-md` | `calc(var(--radius) - 2px)` | Medium elements | -| `--radius-lg` | `var(--radius)` | Large elements | -| `--radius-xl` | `calc(var(--radius) + 4px)` | Cards, modals | - ---- - -## Shadow System - -Multi-level shadows optimized for dark theme: - -| Variable | Usage | -|----------|-------| -| `--shadow-xs` | Minimal shadow | -| `--shadow-sm` | Small shadow (default buttons) | -| `--shadow-md` | Medium shadow | -| `--shadow-lg` | Large shadow (modals) | -| `--shadow-xl` | Extra large shadow | - ---- - -## Component Specifications - -### Button - -**Variants:** - -| Variant | Style | Usage | -|---------|-------|-------| -| `default` | Primary background + white text | Primary actions | -| `secondary` | Secondary background + border | Secondary actions | -| `outline` | Transparent + border | Neutral actions | -| `ghost` | Transparent | Toolbar buttons | -| `destructive` | Red background | Dangerous actions | -| `link` | Link style | Text links | - -**Sizes:** - -| Size | Height | Usage | -|------|--------|-------| -| `sm` | `h-8` | Compact contexts | -| `default` | `h-9` | Standard buttons | -| `lg` | `h-10` | Emphasized buttons | -| `icon` | `size-9` | Icon buttons | -| `icon-sm` | `size-8` | Small icon buttons | -| `icon-lg` | `size-10` | Large icon buttons | - -### Card - -- Background: `bg-card` -- Border Radius: `rounded-xl` -- Padding: `py-6 px-6` -- Shadow: `shadow-sm` -- Border: `border` - -### Tabs - -| State | Background | Text | -|-------|------------|------| -| Container | `#252526` | β€” | -| Inactive | `#292929` | `#A0A0A0` | -| Active | `#1E1E1E` | `#FFFFFF` | -| Hover | `#363637` | β€” | - ---- - -## Sidebar Specifications - -### Primary Navigation - -| Variable | Value | -|----------|-------| -| `--sidebar-background` | `#333333` | -| `--sidebar-primary-foreground` | `#808080` | -| `--sidebar-primary-active` | `#FFFFFF` | -| `--sidebar-primary-hover` | `#2B2D2E` | - -### Project Section - -| Variable | Value | -|----------|-------| -| `--sidebar-project-background` | `#242426` | -| `--sidebar-project-foreground` | `#CCCCCC` | -| `--sidebar-project-active-background` | `#3A3D41` | - ---- - -## Chart Colors - -Sequential color palette for data visualization (blue-purple spectrum): - -| Variable | Usage | -|----------|-------| -| `--chart-1` | Primary chart color | -| `--chart-2` | Secondary chart color | -| `--chart-3` | Tertiary chart color | -| `--chart-4` | Quaternary chart color | -| `--chart-5` | Quinary chart color | - ---- - -## Related Files - -- [globals.css](file:///Users/che/Documents/GitHub/fulling/app/globals.css) β€” CSS variable definitions -- [style.md](file:///Users/che/Documents/GitHub/fulling/docs/style.md) β€” Detailed color reference diff --git a/docs/style.md b/docs/style.md deleted file mode 100644 index 6c2e784..0000000 --- a/docs/style.md +++ /dev/null @@ -1,163 +0,0 @@ -# FullstackAgent Color Scheme - -This document outlines the complete color scheme used by the FullstackAgent project, inspired by VS Code's Dark theme and based on CSS variables defined in `app/globals.css`. - -## Overview - -Fulling uses a modern CSS variable system with oklch color space, providing a complete dark theme color scheme that closely resembles VS Code's familiar developer-friendly interface. The design features a distinct two-section sidebar architecture with carefully crafted visual hierarchy for optimal user experience. - -### Technical Features -- **Color Space**: oklch (better perceptual uniformity) -- **CSS Variables**: Custom properties for easy theme switching -- **Semantic Naming**: Clear, usage-based naming conventions -- **Two-Section Sidebar**: Separated primary navigation and project content areas -- **Accessibility**: WCAG-compliant contrast ratios -- **VS Code Inspiration**: Familiar dark theme that developers recognize - -### Design Philosophy -- **Visual Hierarchy**: Clear distinction between navigation (`#333333`) and content (`#242426`) areas -- **State Management**: Dedicated colors for hover, active, and inactive states -- **Developer Familiarity**: Colors mapped to VS Code's established dark theme patterns - -## VS Code-Inspired Dark Theme - -### Core Color System - -| Variable | Hex Value | oklch Value | Usage | -|----------|-----------|-------------|-------| -| `--background` | `#1E1E1E` | - | Main application background (VS Code editor background) | -| `--foreground` | `#CCCCCC` | `oklch(0.92 0 0)` | Primary text color (VS Code default text) | -| `--content-background` | `#1E1E1E` | - | Content area background | - -### Container Colors - -| Variable | Hex Value | oklch Value | Usage | -|----------|-----------|-------------|-------| -| `--card` | `#252526` | - | Card and container backgrounds (VS Code panels) | -| `--card-foreground` | `#ffffff` | - | Card title text color (for card titles only) | -| `--popover` | `#252526` | - | Dialog and popup backgrounds | -| `--popover-foreground` | `#CCCCCC` | - | Dialog text color | - -### Brand Colors - -| Variable | Hex Value | oklch Value | Usage | -|----------|-----------|-------------|-------| -| `--primary` | `#10639D` | - | Primary brand color (buttons, links, accents) | -| `--primary-hover` | `#155a8a` | - | Primary brand hover state | -| `--primary-foreground` | `#FFFFFF` | - | Text on primary elements | -| `--ring` | - | `oklch(0.62 0.19 259.76)` | Focus ring color | - -### Secondary Colors - -| Variable | Hex Value | oklch Value | Usage | -|----------|-----------|-------------|-------| -| `--secondary` | - | `oklch(0.27 0 0)` | Secondary buttons, tags, badges | -| `--secondary-foreground` | - | `oklch(0.92 0 0)` | Text on secondary elements | - -### Functional Colors - -| Variable | Hex Value | oklch Value | Usage | -|----------|-----------|-------------|-------| -| `--muted` | - | `oklch(0.27 0 0)` | Supporting element backgrounds | -| `--muted-foreground` | - | `oklch(0.72 0 0)` | Secondary text, descriptions | -| `--accent` | `#2B2D2E` | - | Hover states, highlights (VS Code selection) | -| `--accent-foreground` | - | `oklch(0.88 0.06 254.63)` | Text on accent elements | -| `--destructive` | - | `oklch(0.64 0.21 25.39)` | Delete actions, error states | -| `--destructive-foreground` | - | `oklch(1.0000 0 0)` | Text on destructive elements | - -### Borders and Inputs - -| Variable | Hex Value | oklch Value | Usage | -|----------|-----------|-------------|-------| -| `--border` | - | `oklch(0.37 0 0)` | Border colors (VS Code widget borders) | -| `--input` | - | `oklch(0.37 0 0)` | Input field borders and backgrounds | - -## Sidebar Color Scheme - -The sidebar uses an independent color system with two distinct sections to create visual hierarchy, similar to VS Code's activity bar and sidebar: - -### Sidebar Primary Section - -| Variable | Hex Value | oklch Value | Usage | -|----------|-----------|-------------|-------| -| `--sidebar-primary-background` | `#333333` | - | Sidebar primary background (navigation area) | -| `--sidebar-primary-foreground` | `#808080` | - | Sidebar primary text color | -| `--sidebar-primary-accent` | - | `oklch(0.49 0.24 264.40)` | Sidebar primary accent elements | -| `--sidebar-primary-accent-foreground` | - | `oklch(0.99 0 0)` | Sidebar primary accent text | -| `--sidebar-primary-hover` | `#2B2D2E` | - | Sidebar primary hover backgrounds | -| `--sidebar-primary-hover-foreground` | - | `oklch(0.99 0 0)` | Sidebar primary hover text | -| `--sidebar-primary-active` | `#FFFFFF` | - | Sidebar primary active text color | -| `--sidebar-primary-border` | - | `oklch(1.00 0 0 / 10%)` | Sidebar primary borders | -| `--sidebar-primary-ring` | - | `oklch(0.55 0.02 285.93)` | Sidebar primary focus rings | - -### Sidebar Project Section - -| Variable | Hex Value | oklch Value | Usage | -|----------|-----------|-------------|-------| -| `--sidebar-project-background` | `#242426` | - | Project section background (project cards area) | -| `--sidebar-project-foreground` | `#CCCCCC` | - | Project section text color | -| `--sidebar-project-active-background` | `#3A3D41` | - | Project section active background | - -## Chart Color Scheme - -Sequential color palette for data visualization: - -| Variable | oklch Value | Description | -|----------|-------------|-------------| -| `--chart-1` | `oklch(0.71 0.14 254.69)` | Primary chart color (blue spectrum) | -| `--chart-2` | `oklch(0.62 0.19 259.76)` | Secondary chart color (deep blue) | -| `--chart-3` | `oklch(0.55 0.22 262.96)` | Tertiary chart color (blue-purple) | -| `--chart-4` | `oklch(0.49 0.22 264.43)` | Quaternary chart color (purple) | -| `--chart-5` | `oklch(0.42 0.18 265.55)` | Quinary chart color (deep purple) | - -## Shadow System - -Multi-level shadow effects optimized for dark theme: - -| Variable | CSS Value | Usage | -|----------|-----------|-------| -| `--shadow-2xs` | `0px 4px 8px -1px hsl(0 0% 0% / 0.05)` | Extra extra small shadow | -| `--shadow-xs` | `0px 4px 8px -1px hsl(0 0% 0% / 0.05)` | Extra small shadow | -| `--shadow-sm` | `0px 4px 8px -1px hsl(0 0% 0% / 0.10), 0px 1px 2px -2px hsl(0 0% 0% / 0.10)` | Small shadow | -| `--shadow` | `0px 4px 8px -1px hsl(0 0% 0% / 0.10), 0px 1px 2px -2px hsl(0 0% 0% / 0.10)` | Default shadow | -| `--shadow-md` | `0px 4px 8px -1px hsl(0 0% 0% / 0.10), 0px 2px 4px -2px hsl(0 0% 0% / 0.10)` | Medium shadow | -| `--shadow-lg` | `0px 4px 8px -1px hsl(0 0% 0% / 0.10), 0px 4px 6px -2px hsl(0 0% 0% / 0.10)` | Large shadow | -| `--shadow-xl` | `0px 4px 8px -1px hsl(0 0% 0% / 0.10), 0px 8px 10px -2px hsl(0 0% 0% / 0.10)` | Extra large shadow | -| `--shadow-2xl` | `0px 4px 8px -1px hsl(0 0% 0% / 0.25)` | Extra extra large shadow | - -## Typography and Border Radius - -### Font Families -- `--font-serif`: Source Serif 4, serif -- `--font-mono`: JetBrains Mono, monospace (developer-friendly) - -### Border Radius System -- `--radius`: `0.375rem` (base radius) -- `--radius-sm`: `calc(var(--radius) - 4px)` -- `--radius-md`: `calc(var(--radius) - 2px)` -- `--radius-lg`: `var(--radius)` -- `--radius-xl`: `calc(var(--radius) + 4px)` - -## Tabs Component Styling - -### Tab Container Colors - -| Variable | Hex Value | Usage | -|----------|-----------|-------| -| `--tabs-background` | `#252526` | Tab container background | - -### Tab Item States - -| Variable | Hex Value | Usage | -|----------|-----------|-------| -| `--tab-background` | `#292929` | Default/inactive tab background | -| `--tab-foreground` | `#A0A0A0` | Default/inactive tab text color | -| `--tab-active-background` | `#1E1E1E` | Active tab background | -| `--tab-active-foreground` | `#FFFFFF` | Active tab text color | -| `--tab-hover-background` | `#363637` | Hover background for tab buttons | - -### Implementation Notes - -- **Visual Hierarchy**: Active tabs use a darker background (`#1E1E1E`) with white text for maximum contrast -- **Inactive State**: Default tabs use a lighter background (`#292929`) with muted gray text (`#A0A0A0`) -- **Container**: Tab container uses a distinct purple-tinted background (`#252556`) to differentiate from main content \ No newline at end of file diff --git a/actions/sandbox.ts b/lib/actions/sandbox.ts similarity index 100% rename from actions/sandbox.ts rename to lib/actions/sandbox.ts diff --git a/actions/sealos-auth.ts b/lib/actions/sealos-auth.ts similarity index 100% rename from actions/sealos-auth.ts rename to lib/actions/sealos-auth.ts diff --git a/actions/types.ts b/lib/actions/types.ts similarity index 100% rename from actions/types.ts rename to lib/actions/types.ts