diff --git a/e2e-tests/mention_app.spec.ts b/e2e-tests/mention_app.spec.ts
index cbbf0d6..9822be4 100644
--- a/e2e-tests/mention_app.spec.ts
+++ b/e2e-tests/mention_app.spec.ts
@@ -17,5 +17,5 @@ test("mention app (with pro)", async ({ po }) => {
await po.goToAppsTab();
await po.sendPrompt("[dump] @app:minimal-with-ai-rules hi");
- await po.snapshotServerDump("all-messages");
+ await po.snapshotServerDump("request");
});
diff --git a/e2e-tests/snapshots/mention_app.spec.ts_mention-app-with-pro-1.txt b/e2e-tests/snapshots/mention_app.spec.ts_mention-app-with-pro-1.txt
index 2f5ee01..db8049f 100644
--- a/e2e-tests/snapshots/mention_app.spec.ts_mention-app-with-pro-1.txt
+++ b/e2e-tests/snapshots/mention_app.spec.ts_mention-app-with-pro-1.txt
@@ -1,190 +1,485 @@
-===
-role: system
-message:
-${BUILD_SYSTEM_PREFIX}
-
-# Tech Stack
-
-- You are building a React application.
-- Use TypeScript.
-- Use React Router. KEEP the routes in src/App.tsx
-- Always put source code in the src folder.
-- Put pages into src/pages/
-- Put components into src/components/
-- The main page (default page) is src/pages/Index.tsx
-- UPDATE the main page to include the new components. OTHERWISE, the user can NOT see any components!
-- ALWAYS try to use the shadcn/ui library.
-- Tailwind CSS: always use Tailwind CSS for styling components. Utilize Tailwind classes extensively for layout, spacing, colors, and other design aspects.
-
-Available packages and libraries:
-
-- The lucide-react package is installed for icons.
-- You ALREADY have ALL the shadcn/ui components and their dependencies installed. So you don't need to install them again.
-- You have ALL the necessary Radix UI components installed.
-- Use prebuilt components from the shadcn/ui library after importing them. Note that these files shouldn't be edited, so make new components if you need to change them.
-
-
-${BUILD_SYSTEM_POSTFIX}
-
-# Referenced Apps
-The user has mentioned the following apps in their prompt: minimal-with-ai-rules. Their codebases have been included in the context for your reference. When referring to these apps, you can understand their structure and code to provide better assistance, however you should NOT edit the files in these referenced apps. The referenced apps are NOT part of the current app and are READ-ONLY.
-
-
-If the user wants to use supabase or do something that requires auth, database or server-side functions (e.g. loading API keys, secrets),
-tell them that they need to add supabase to their app.
-
-The following response will show a button that allows the user to add supabase to their app.
-
-
-
-# Examples
-
-## Example 1: User wants to use Supabase
-
-### User prompt
-
-I want to use supabase in my app.
-
-### Assistant response
-
-You need to first add Supabase to your app.
-
-
-
-## Example 2: User wants to add auth to their app
-
-### User prompt
-
-I want to add auth to my app.
-
-### Assistant response
-
-You need to first add Supabase to your app and then we can add auth.
-
-
-
-
-===
-role: user
-message:
-# Referenced Apps
-
-These are the other apps that I've mentioned in my prompt. These other apps' codebases are READ-ONLY.
-
-
-
-=== Referenced App: minimal-with-ai-rules ===
-
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-lerna-debug.log*
-
-node_modules
-dist
-dist-ssr
-*.local
-
-# Editor directories and files
-.vscode/*
-!.vscode/extensions.json
-.idea
-.DS_Store
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
-
-
-
-
-[[beginning of AI_RULES.md]]
-There's already AI rules...
-[[end of AI_RULES.md]]
-
-
-
-
-
-
-
-
-
- dyad-generated-app
-
-
-
-
-
-
-
-
-
-
-
-const App = () =>
Minimal imported app
;
-
-export default App;
-
-
-
-
-import { createRoot } from "react-dom/client";
-import App from "./App.tsx";
-
-createRoot(document.getElementById("root")!).render();
-
-
-
-
-///
-
-
-
-
-// File contents excluded from context
-
-
-
-// File contents excluded from context
-
-
-
-// File contents excluded from context
-
-
-
-import { defineConfig } from "vite";
-import react from "@vitejs/plugin-react-swc";
-import path from "path";
-
-export default defineConfig(() => ({
- server: {
- host: "::",
- port: 8080,
- },
- plugins: [react()],
- resolve: {
- alias: {
- "@": path.resolve(__dirname, "./src"),
+{
+ "body": {
+ "model": "dyad/auto",
+ "max_tokens": 32000,
+ "temperature": 0,
+ "messages": [
+ {
+ "role": "system",
+ "content": "[[SYSTEM_MESSAGE]]"
+ },
+ {
+ "role": "user",
+ "content": "[dump] @app:minimal-with-ai-rules hi"
+ }
+ ],
+ "stream": true,
+ "thinking": {
+ "type": "enabled",
+ "include_thoughts": true,
+ "budget_tokens": 4000
},
+ "dyad_options": {
+ "files": [
+ {
+ "path": ".gitignore",
+ "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n",
+ "force": false
+ },
+ {
+ "path": "AI_RULES.md",
+ "content": "# Tech Stack\n\n- You are building a React application.\n- Use TypeScript.\n- Use React Router. KEEP the routes in src/App.tsx\n- Always put source code in the src folder.\n- Put pages into src/pages/\n- Put components into src/components/\n- The main page (default page) is src/pages/Index.tsx\n- UPDATE the main page to include the new components. OTHERWISE, the user can NOT see any components!\n- ALWAYS try to use the shadcn/ui library.\n- Tailwind CSS: always use Tailwind CSS for styling components. Utilize Tailwind classes extensively for layout, spacing, colors, and other design aspects.\n\nAvailable packages and libraries:\n\n- The lucide-react package is installed for icons.\n- You ALREADY have ALL the shadcn/ui components and their dependencies installed. So you don't need to install them again.\n- You have ALL the necessary Radix UI components installed.\n- Use prebuilt components from the shadcn/ui library after importing them. Note that these files shouldn't be edited, so make new components if you need to change them.\n",
+ "force": false
+ },
+ {
+ "path": "components.json",
+ "content": "{\n \"$schema\": \"https://ui.shadcn.com/schema.json\",\n \"style\": \"default\",\n \"rsc\": false,\n \"tsx\": true,\n \"tailwind\": {\n \"config\": \"tailwind.config.ts\",\n \"css\": \"src/index.css\",\n \"baseColor\": \"slate\",\n \"cssVariables\": true,\n \"prefix\": \"\"\n },\n \"aliases\": {\n \"components\": \"@/components\",\n \"utils\": \"@/lib/utils\",\n \"ui\": \"@/components/ui\",\n \"lib\": \"@/lib\",\n \"hooks\": \"@/hooks\"\n }\n}\n",
+ "force": false
+ },
+ {
+ "path": "eslint.config.js",
+ "content": "import js from \"@eslint/js\";\nimport globals from \"globals\";\nimport reactHooks from \"eslint-plugin-react-hooks\";\nimport reactRefresh from \"eslint-plugin-react-refresh\";\nimport tseslint from \"typescript-eslint\";\n\nexport default tseslint.config(\n { ignores: [\"dist\"] },\n {\n extends: [js.configs.recommended, ...tseslint.configs.recommended],\n files: [\"**/*.{ts,tsx}\"],\n languageOptions: {\n ecmaVersion: 2020,\n globals: globals.browser,\n },\n plugins: {\n \"react-hooks\": reactHooks,\n \"react-refresh\": reactRefresh,\n },\n rules: {\n ...reactHooks.configs.recommended.rules,\n \"react-refresh/only-export-components\": [\n \"warn\",\n { allowConstantExport: true },\n ],\n \"@typescript-eslint/no-unused-vars\": \"off\",\n },\n },\n);\n",
+ "force": false
+ },
+ {
+ "path": "index.html",
+ "content": "\n\n \n \n \n dyad-generated-app\n \n\n \n \n \n \n\n",
+ "force": false
+ },
+ {
+ "path": "package.json",
+ "content": "{\n \"name\": \"vite_react_shadcn_ts\",\n \"private\": true,\n \"version\": \"0.0.0\",\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"vite build\",\n \"build:dev\": \"vite build --mode development\",\n \"lint\": \"eslint .\",\n \"preview\": \"vite preview\"\n },\n \"dependencies\": {\n \"@hookform/resolvers\": \"^3.9.0\",\n \"@radix-ui/react-accordion\": \"^1.2.0\",\n \"@radix-ui/react-alert-dialog\": \"^1.1.1\",\n \"@radix-ui/react-aspect-ratio\": \"^1.1.0\",\n \"@radix-ui/react-avatar\": \"^1.1.0\",\n \"@radix-ui/react-checkbox\": \"^1.1.1\",\n \"@radix-ui/react-collapsible\": \"^1.1.0\",\n \"@radix-ui/react-context-menu\": \"^2.2.1\",\n \"@radix-ui/react-dialog\": \"^1.1.2\",\n \"@radix-ui/react-dropdown-menu\": \"^2.1.1\",\n \"@radix-ui/react-hover-card\": \"^1.1.1\",\n \"@radix-ui/react-label\": \"^2.1.0\",\n \"@radix-ui/react-menubar\": \"^1.1.1\",\n \"@radix-ui/react-navigation-menu\": \"^1.2.0\",\n \"@radix-ui/react-popover\": \"^1.1.1\",\n \"@radix-ui/react-progress\": \"^1.1.0\",\n \"@radix-ui/react-radio-group\": \"^1.2.0\",\n \"@radix-ui/react-scroll-area\": \"^1.1.0\",\n \"@radix-ui/react-select\": \"^2.1.1\",\n \"@radix-ui/react-separator\": \"^1.1.0\",\n \"@radix-ui/react-slider\": \"^1.2.0\",\n \"@radix-ui/react-slot\": \"^1.1.0\",\n \"@radix-ui/react-switch\": \"^1.1.0\",\n \"@radix-ui/react-tabs\": \"^1.1.0\",\n \"@radix-ui/react-toast\": \"^1.2.1\",\n \"@radix-ui/react-toggle\": \"^1.1.0\",\n \"@radix-ui/react-toggle-group\": \"^1.1.0\",\n \"@radix-ui/react-tooltip\": \"^1.1.4\",\n \"@tanstack/react-query\": \"^5.56.2\",\n \"class-variance-authority\": \"^0.7.1\",\n \"clsx\": \"^2.1.1\",\n \"cmdk\": \"^1.0.0\",\n \"date-fns\": \"^3.6.0\",\n \"embla-carousel-react\": \"^8.3.0\",\n \"input-otp\": \"^1.2.4\",\n \"lucide-react\": \"^0.462.0\",\n \"next-themes\": \"^0.3.0\",\n \"react\": \"^18.3.1\",\n \"react-day-picker\": \"^8.10.1\",\n \"react-dom\": \"^18.3.1\",\n \"react-hook-form\": \"^7.53.0\",\n \"react-resizable-panels\": \"^2.1.3\",\n \"react-router-dom\": \"^6.26.2\",\n \"recharts\": \"^2.12.7\",\n \"sonner\": \"^1.5.0\",\n \"tailwind-merge\": \"^2.5.2\",\n \"tailwindcss-animate\": \"^1.0.7\",\n \"vaul\": \"^0.9.3\",\n \"zod\": \"^3.23.8\"\n },\n \"devDependencies\": {\n \"@dyad-sh/react-vite-component-tagger\": \"^0.8.0\",\n \"@eslint/js\": \"^9.9.0\",\n \"@tailwindcss/typography\": \"^0.5.15\",\n \"@types/node\": \"^22.5.5\",\n \"@types/react\": \"^18.3.3\",\n \"@types/react-dom\": \"^18.3.0\",\n \"@vitejs/plugin-react-swc\": \"^3.9.0\",\n \"autoprefixer\": \"^10.4.20\",\n \"eslint\": \"^9.9.0\",\n \"eslint-plugin-react-hooks\": \"^5.1.0-rc.0\",\n \"eslint-plugin-react-refresh\": \"^0.4.9\",\n \"globals\": \"^15.9.0\",\n \"postcss\": \"^8.4.47\",\n \"tailwindcss\": \"^3.4.11\",\n \"typescript\": \"^5.5.3\",\n \"typescript-eslint\": \"^8.0.1\",\n \"vite\": \"^6.3.4\"\n }\n}\n",
+ "force": false
+ },
+ {
+ "path": "postcss.config.js",
+ "content": "export default {\n plugins: {\n tailwindcss: {},\n autoprefixer: {},\n },\n};\n",
+ "force": false
+ },
+ {
+ "path": "public/favicon.ico",
+ "content": "// File contents excluded from context",
+ "force": false
+ },
+ {
+ "path": "public/placeholder.svg",
+ "content": "// File contents excluded from context",
+ "force": false
+ },
+ {
+ "path": "public/robots.txt",
+ "content": "// File contents excluded from context",
+ "force": false
+ },
+ {
+ "path": "README.md",
+ "content": "# Welcome to your Dyad app\n",
+ "force": false
+ },
+ {
+ "path": "src/App.css",
+ "content": "#root {\n max-width: 1280px;\n margin: 0 auto;\n padding: 2rem;\n text-align: center;\n}\n\n.logo {\n height: 6em;\n padding: 1.5em;\n will-change: filter;\n transition: filter 300ms;\n}\n.logo:hover {\n filter: drop-shadow(0 0 2em #646cffaa);\n}\n.logo.react:hover {\n filter: drop-shadow(0 0 2em #61dafbaa);\n}\n\n@keyframes logo-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@media (prefers-reduced-motion: no-preference) {\n a:nth-of-type(2) .logo {\n animation: logo-spin infinite 20s linear;\n }\n}\n\n.card {\n padding: 2em;\n}\n\n.read-the-docs {\n color: #888;\n}\n",
+ "force": false
+ },
+ {
+ "path": "src/App.tsx",
+ "content": "import { Toaster } from \"@/components/ui/toaster\";\nimport { Toaster as Sonner } from \"@/components/ui/sonner\";\nimport { TooltipProvider } from \"@/components/ui/tooltip\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport { BrowserRouter, Routes, Route } from \"react-router-dom\";\nimport Index from \"./pages/Index\";\nimport NotFound from \"./pages/NotFound\";\n\nconst queryClient = new QueryClient();\n\nconst App = () => (\n \n \n \n \n \n \n } />\n {/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL \"*\" ROUTE */}\n } />\n \n \n \n \n);\n\nexport default App;\n",
+ "force": false
+ },
+ {
+ "path": "src/components/made-with-dyad.tsx",
+ "content": "export const MadeWithDyad = () => {\n return (\n