This file is a merged representation of the entire codebase, combined into a single document by Repomix. This section contains a summary of this file. This file contains a packed representation of the entire repository's contents. It is designed to be easily consumable by AI systems for analysis, code review, or other automated processes. The content is organized as follows: 1. This summary section 2. Repository information 3. Directory structure 4. Repository files (if enabled) 5. Multiple file entries, each consisting of: - File path as an attribute - Full contents of the file - This file should be treated as read-only. Any changes should be made to the original repository files, not this packed version. - When processing this file, use the file path to distinguish between different files in the repository. - Be aware that this file may contain sensitive information. Handle it with the same level of security as you would the original repository. - Some files may have been excluded based on .gitignore rules and Repomix's configuration - Binary files are not included in this packed representation. Please refer to the Repository Structure section for a complete list of file paths, including binary files - Files matching patterns in .gitignore are excluded - Files matching default ignore patterns are excluded - Files are sorted by Git change count (files with more changes are at the bottom) .gitignore app/chat/page.tsx app/favicon.ico app/globals.css app/layout.tsx app/page.tsx app/setup/page.tsx components.json components/chat/chat-input.tsx components/chat/chat-message.tsx components/chat/code-block.tsx components/chat/markdown-renderers.tsx components/chat/message-actions.tsx components/chat/prompt-generator.tsx components/chat/system-panel.tsx components/landing/hero.tsx components/landing/stopped-card.tsx components/modals/install-modal.tsx components/setup/hardware-scan.tsx components/setup/model-selector.tsx components/theme-provider.tsx components/ui/badge.tsx components/ui/button.tsx components/ui/card.tsx components/ui/dialog.tsx components/ui/dropdown-menu.tsx components/ui/progress.tsx components/ui/resizable.tsx components/ui/select.tsx components/ui/separator.tsx components/ui/tabs.tsx components/ui/textarea.tsx data/models/alfred.json data/models/all-minilm.json data/models/athene-v2.json data/models/aya-expanse.json data/models/aya.json data/models/bakllava.json data/models/bespoke-minicheck.json data/models/bge-large.json data/models/bge-m3.json data/models/codebooga.json data/models/codegeex4.json data/models/codegemma.json data/models/codellama.json data/models/codeqwen.json data/models/codestral.json data/models/codeup.json data/models/cogito.json data/models/command-a.json data/models/command-r-plus.json data/models/command-r.json data/models/command-r7b-arabic.json data/models/command-r7b.json data/models/dbrx.json data/models/deepcoder.json data/models/deepscaler.json data/models/deepseek-coder-v2.json data/models/deepseek-coder.json data/models/deepseek-llm.json data/models/deepseek-r1.json data/models/deepseek-v2.5.json data/models/deepseek-v2.json data/models/deepseek-v3.1.json data/models/deepseek-v3.json data/models/devstral.json data/models/dolphin-llama3.json data/models/dolphin-mistral.json data/models/dolphin-mixtral.json data/models/dolphin-phi.json data/models/dolphin3.json data/models/dolphincoder.json data/models/duckdb-nsql.json data/models/embeddinggemma.json data/models/everythinglm.json data/models/exaone-deep.json data/models/exaone3.5.json data/models/falcon.json data/models/falcon2.json data/models/falcon3.json data/models/firefunction-v2.json data/models/gemini-3-pro-preview.json data/models/gemma.json data/models/gemma2.json data/models/gemma3.json data/models/gemma3n.json data/models/glm-4.6.json data/models/glm4.json data/models/goliath.json data/models/gpt-oss-safeguard.json data/models/gpt-oss.json data/models/granite-code.json data/models/granite-embedding.json data/models/granite3-dense.json data/models/granite3-guardian.json data/models/granite3-moe.json data/models/granite3.1-dense.json data/models/granite3.1-moe.json data/models/granite3.2-vision.json data/models/granite3.2.json data/models/granite3.3.json data/models/granite4.json data/models/hermes3.json data/models/internlm2.json data/models/kimi-k2-thinking.json data/models/kimi-k2.json data/models/llama-guard3.json data/models/llama-pro.json data/models/llama2-chinese.json data/models/llama2-uncensored.json data/models/llama2.json data/models/llama3-chatqa.json data/models/llama3-gradient.json data/models/llama3-groq-tool-use.json data/models/llama3.1.json data/models/llama3.2-vision.json data/models/llama3.2.json data/models/llama3.3.json data/models/llama3.json data/models/llama4.json data/models/llava-llama3.json data/models/llava-phi3.json data/models/llava.json data/models/magicoder.json data/models/magistral.json data/models/marco-o1.json data/models/mathstral.json data/models/meditron.json data/models/medllama2.json data/models/megadolphin.json data/models/minicpm-v.json data/models/minimax-m2.json data/models/mistral-large.json data/models/mistral-nemo.json data/models/mistral-openorca.json data/models/mistral-small.json data/models/mistral-small3.1.json data/models/mistral-small3.2.json data/models/mistral.json data/models/mistrallite.json data/models/mixtral.json data/models/moondream.json data/models/mxbai-embed-large.json data/models/nemotron-mini.json data/models/nemotron.json data/models/neural-chat.json data/models/nexusraven.json data/models/nomic-embed-text.json data/models/notus.json data/models/notux.json data/models/nous-hermes.json data/models/nous-hermes2-mixtral.json data/models/nous-hermes2.json data/models/nuextract.json data/models/olmo2.json data/models/open-orca-platypus2.json data/models/openchat.json data/models/opencoder.json data/models/openhermes.json data/models/openthinker.json data/models/orca-mini.json data/models/orca2.json data/models/paraphrase-multilingual.json data/models/phi.json data/models/phi3.5.json data/models/phi3.json data/models/phi4-mini-reasoning.json data/models/phi4-mini.json data/models/phi4-reasoning.json data/models/phi4.json data/models/phind-codellama.json data/models/qwen.json data/models/qwen2-math.json data/models/qwen2.5-coder.json data/models/qwen2.5.json data/models/qwen2.5vl.json data/models/qwen2.json data/models/qwen3-coder.json data/models/qwen3-embedding.json data/models/qwen3-vl.json data/models/qwen3.json data/models/qwq.json data/models/r1-1776.json data/models/reader-lm.json data/models/reflection.json data/models/sailor2.json data/models/samantha-mistral.json data/models/shieldgemma.json data/models/smallthinker.json data/models/smollm.json data/models/smollm2.json data/models/snowflake-arctic-embed.json data/models/snowflake-arctic-embed2.json data/models/solar-pro.json data/models/solar.json data/models/sqlcoder.json data/models/stable-beluga.json data/models/stable-code.json data/models/stablelm-zephyr.json data/models/stablelm2.json data/models/starcoder.json data/models/starcoder2.json data/models/starling-lm.json data/models/tinydolphin.json data/models/tinyllama.json data/models/tulu3.json data/models/vicuna.json data/models/wizard-math.json data/models/wizard-vicuna-uncensored.json data/models/wizard-vicuna.json data/models/wizardcoder.json data/models/wizardlm-uncensored.json data/models/wizardlm.json data/models/wizardlm2.json data/models/xwinlm.json data/models/yarn-llama2.json data/models/yarn-mistral.json data/models/yi-coder.json data/models/yi.json data/models/zephyr.json data/prompts/default-format.md data/prompts/prompt-gen.md eslint.config.mjs hooks/use-chat.ts hooks/use-hardware.ts hooks/use-local-models.ts hooks/use-ollama-check.ts hooks/use-prompt-generator.ts hooks/use-system-monitor.ts lib/recommendation.ts lib/utils.ts next.config.ts package.json postcss.config.mjs public/file.svg public/globe.svg public/next.svg public/vercel.svg public/window.svg README.md src-tauri/.gitignore src-tauri/build.rs src-tauri/capabilities/default.json src-tauri/Cargo.toml src-tauri/icons/128x128.png src-tauri/icons/128x128@2x.png src-tauri/icons/32x32.png src-tauri/icons/icon.icns src-tauri/icons/icon.ico src-tauri/icons/icon.png src-tauri/icons/Square107x107Logo.png src-tauri/icons/Square142x142Logo.png src-tauri/icons/Square150x150Logo.png src-tauri/icons/Square284x284Logo.png src-tauri/icons/Square30x30Logo.png src-tauri/icons/Square310x310Logo.png src-tauri/icons/Square44x44Logo.png src-tauri/icons/Square71x71Logo.png src-tauri/icons/Square89x89Logo.png src-tauri/icons/StoreLogo.png src-tauri/src/lib.rs src-tauri/src/main.rs src-tauri/tauri.conf.json tsconfig.json This section contains the contents of the repository's files. # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies /node_modules /.pnp .pnp.* .yarn/* !.yarn/patches !.yarn/plugins !.yarn/releases !.yarn/versions # testing /coverage # next.js /.next/ /out/ # production /build # misc .DS_Store *.pem # debug npm-debug.log* yarn-debug.log* yarn-error.log* .pnpm-debug.log* # env files (can opt-in for committing if needed) .env* # vercel .vercel # typescript *.tsbuildinfo next-env.d.ts 'use client'; import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/components/ui/resizable"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Button } from "@/components/ui/button"; import { Textarea } from "@/components/ui/textarea"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { MessageSquare, Settings, Server, Moon, Sun, PanelLeftClose, PanelLeftOpen } from "lucide-react"; import { ChatInput } from "@/components/chat/chat-input"; import { ChatMessage } from "@/components/chat/chat-message"; import { SystemPanel } from "@/components/chat/system-panel"; import { PromptGeneratorDialog } from "@/components/chat/prompt-generator"; import { useChat } from "@/hooks/use-chat"; import { useLocalModels } from "@/hooks/use-local-models"; import { useState, useEffect, useRef } from "react"; import { useTheme } from "next-themes"; import { ImperativePanelHandle } from "react-resizable-panels"; // @ts-ignore import defaultFormatPrompt from "@/data/prompts/default-format.md"; export default function ChatPage() { const { messages, sendMessage, isLoading, stop } = useChat(); const { models } = useLocalModels(); const { theme, setTheme } = useTheme(); const [selectedModel, setSelectedModel] = useState(""); // Initialize with default format prompt const [systemPrompt, setSystemPrompt] = useState(defaultFormatPrompt || "Você é um assistente útil e prestativo."); const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(false); const sidebarRef = useRef(null); // Auto-select first model useEffect(() => { if (models.length > 0 && !selectedModel) { setSelectedModel(models[0].name); } }, [models, selectedModel]); const handleSend = (content: string) => { if (!selectedModel) return; sendMessage(content, selectedModel, systemPrompt); }; const toggleSidebar = () => { const panel = sidebarRef.current; if (panel) { if (isSidebarCollapsed) { panel.expand(); } else { panel.collapse(); } } }; return (
{/* Left Sidebar (Nav) */} setIsSidebarCollapsed(true)} onExpand={() => setIsSidebarCollapsed(false)} className="border-r flex flex-col items-center py-4 gap-4 bg-muted/20 min-w-[60px]" >
{/* Main Chat Area */}
{/* Header */}
{isSidebarCollapsed && ( )} {!isSidebarCollapsed && ( )}
Chat
{/* Messages */}
{messages.length === 0 ? (

Inicie uma conversa com {selectedModel}

) : (
{messages.map((msg, i) => ( ))} {isLoading && (
Gerando resposta...
)}
)}
{/* Input */}
{/* Right Sidebar (Settings & Monitor) */}
Parâmetros Sistema