diff --git a/components/AIAssist.tsx b/components/AIAssist.tsx
index eb73028..10c8304 100644
--- a/components/AIAssist.tsx
+++ b/components/AIAssist.tsx
@@ -13,7 +13,8 @@ import modelAdapter from "@/lib/services/adapter-instance";
import {
MessageSquare, Send, Sparkles, Brain, Cpu, Code2, Palette, FileText, Search,
BarChart, Rocket, Terminal, Eye, History, Trash2, Loader2, Bot, User,
- Settings, Layers, AppWindow, Smartphone, Monitor, X
+ Settings, Layers, AppWindow, Smartphone, Monitor, X, ArrowLeftRight, RotateCcw,
+ CheckCircle2
} from "lucide-react";
import { cn } from "@/lib/utils";
import { AIAssistMessage } from "@/types";
@@ -153,6 +154,11 @@ const AIAssist = () => {
setCurrentAgent("general");
};
+ const undoLast = () => {
+ if (aiAssistHistory.length === 0) return;
+ setAIAssistHistory(prev => prev.slice(0, -2));
+ };
+
const renderPreview = () => {
if (!previewData) return (
@@ -162,42 +168,110 @@ const AIAssist = () => {
);
switch (previewData.type) {
- case "code":
case "web":
case "app":
+ return (
+
+
+
+
+ Live Runtime Sandbox
+
+
+
+
+
+
+
+ );
+ case "code":
return (
-
+
- Live Execution Sandbox
+ Code Architect Output
-
Secure Booted
+
{previewData.language || "source"}
-
-
{previewData.data}
-
-
-
+
);
case "design":
return (
-
+
-
UI Layout Preview
+
UI/UX Layout Frame
-
-
- {previewData.data}
+
+
+
+
+ {previewData.data}
+
);
+ case "seo":
+ try {
+ const seoData = JSON.parse(previewData.data);
+ return (
+
+
+ {Object.entries(seoData.metrics || {}).map(([key, val]: [string, any]) => (
+
+
+ {key}
+ {val}
+
+
+ ))}
+
+
+
+ Recommendations
+
+
+ {(seoData.recommendations || []).map((rec: string, i: number) => (
+ -
+
+ {rec}
+
+ ))}
+
+
+
+ );
+ } catch (e) {
+ return (
+
+
+ {previewData.data}
+
+
+ );
+ }
default:
return (
@@ -235,6 +309,9 @@ const AIAssist = () => {
))}
+
@@ -302,14 +379,28 @@ const AIAssist = () => {
{msg.role === "user" ? : }
- {msg.agent && (
-
- {AGENTS.find(a => a.id === msg.agent)?.label || msg.agent}
-
- )}
+
+ {msg.role === "user" && (
+
+ )}
+ {msg.agent && (
+
+ {AGENTS.find(a => a.id === msg.agent)?.label || msg.agent}
+
+ )}
+