(undefined)
// Runs history state
type RunListItem = { id: string; title?: string; createdAt: string; agentId: string }
@@ -1598,12 +1618,17 @@ function App() {
+ {!hasConversation && (
+
+ )}
setPresetMessage(undefined)}
/>
diff --git a/apps/x/apps/renderer/src/components/ai-elements/suggestions.tsx b/apps/x/apps/renderer/src/components/ai-elements/suggestions.tsx
new file mode 100644
index 00000000..cd07ed7a
--- /dev/null
+++ b/apps/x/apps/renderer/src/components/ai-elements/suggestions.tsx
@@ -0,0 +1,76 @@
+import { Mail, Calendar, FolderOpen, FileText } from 'lucide-react'
+import { cn } from '@/lib/utils'
+
+export interface Suggestion {
+ id: string
+ label: string
+ prompt: string
+ icon: React.ReactNode
+}
+
+const defaultSuggestions: Suggestion[] = [
+ {
+ id: 'email-draft',
+ label: 'Draft an email',
+ prompt: "Let's draft an email response to [name]",
+ icon: ,
+ },
+ {
+ id: 'meeting-prep',
+ label: 'Prep for a meeting',
+ prompt: 'Help me prep for my next meeting with [name]',
+ icon: ,
+ },
+ {
+ id: 'doc-collab',
+ label: 'Work on a document',
+ prompt: "Let's work on [document name]",
+ icon: ,
+ },
+ {
+ id: 'organize-files',
+ label: 'Organize files',
+ prompt: 'Help me organize [folder or files]',
+ icon: ,
+ },
+]
+
+interface SuggestionsProps {
+ suggestions?: Suggestion[]
+ onSelect: (prompt: string) => void
+ className?: string
+ vertical?: boolean
+}
+
+export function Suggestions({
+ suggestions = defaultSuggestions,
+ onSelect,
+ className,
+ vertical = false,
+}: SuggestionsProps) {
+ return (
+
+ {suggestions.map((suggestion) => (
+
+ ))}
+
+ )
+}
diff --git a/apps/x/apps/renderer/src/components/chat-sidebar.tsx b/apps/x/apps/renderer/src/components/chat-sidebar.tsx
index 5c5f7713..0d9a7d7e 100644
--- a/apps/x/apps/renderer/src/components/chat-sidebar.tsx
+++ b/apps/x/apps/renderer/src/components/chat-sidebar.tsx
@@ -23,6 +23,7 @@ import { Shimmer } from '@/components/ai-elements/shimmer'
import { Tool, ToolContent, ToolHeader, ToolInput, ToolOutput } from '@/components/ai-elements/tool'
import { PermissionRequest } from '@/components/ai-elements/permission-request'
import { AskHumanRequest } from '@/components/ai-elements/ask-human-request'
+import { Suggestions } from '@/components/ai-elements/suggestions'
import { type PromptInputMessage, type FileMention } from '@/components/ai-elements/prompt-input'
import { useMentionDetection } from '@/hooks/use-mention-detection'
import { MentionPopover } from '@/components/mention-popover'
@@ -544,6 +545,16 @@ export function ChatSidebar({
{/* Input area - responsive to sidebar width, matches floating bar position exactly */}
+ {!hasConversation && (
+
{
+ onMessageChange(prompt)
+ setTimeout(() => textareaRef.current?.focus(), 0)
+ }}
+ vertical
+ className="mb-3"
+ />
+ )}
{mentionHighlights.hasHighlights && (