feat(ollama): enhance model pull with improved error handling, persistence, and UI

- Add catalog metadata lookup for better error messages with hints (e.g., for missing manifests or tags)
- Persist downloaded model references in saved remote models for future reuse
- Replace searchRemoteModels import with getSavedRemoteModels in search route
- Enhance pull progress UI to display download bytes, digest, and fallback message when data is unavailable
- Improve error payload with model details, URL, and tags count to guide users toward valid tags or models
This commit is contained in:
Evandro Fonseca Junior committed 2025-10-29 19:42:24 -03:00
1 parent 1545020afe
commit a8bb7cc22d
33 files changed
+1298 -235

No files matched your search

+2 -13
View File
@@ -8,7 +8,6 @@ import {
SettingsButton,
SettingsModal,
} from "@/components/settings/SettingsModal";
import { MCPManualInstallModal } from "@/components/mcp/MCPManualInstallModal";
import { Store } from "lucide-react";
interface ClientHomeProps {
@@ -22,7 +21,7 @@ export function ClientHome({ offline, models }: ClientHomeProps) {
const [currentConversationId, setCurrentConversationId] = useState<
string | null
>(null);
const [showManualInstall, setShowManualInstall] = useState(false);
const handleConversationCreated = () => {
// Incrementar trigger para forçar atualização da sidebar
@@ -48,13 +47,6 @@ export function ClientHome({ offline, models }: ClientHomeProps) {
Ollama offline
</span>
)}
<button
onClick={() => setShowManualInstall(true)}
className="flex items-center gap-2 px-3 py-2 bg-[var(--surface)] border border-[var(--border)] rounded-md hover:bg-[var(--background)] transition-colors text-sm"
>
<Store className="h-4 w-4" />
Install MCP Manually
</button>
<SettingsButton onOpen={() => setOpen(true)} />
<ModeToggle />
</div>
@@ -77,10 +69,7 @@ export function ClientHome({ offline, models }: ClientHomeProps) {
</div>
</main>
<SettingsModal isOpen={open} onClose={() => setOpen(false)} />
<MCPManualInstallModal
isOpen={showManualInstall}
onClose={() => setShowManualInstall(false)}
/>
</div>
);
}