gitextract_mbg5_5ju/ ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug---issue.md │ │ └── feature-request.md │ └── workflows/ │ └── stale.yml ├── .gitignore ├── .pre-commit-ci.yaml ├── .pre-commit-config.yaml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── COPYING ├── LICENSE ├── README.md ├── build.sh ├── cli.py ├── install.ps1 ├── install.sh ├── pyproject.toml ├── scripts/ │ ├── enforce_kwargs_spacing.py │ └── run_ruff_format.py ├── studio/ │ ├── LICENSE.AGPL-3.0 │ ├── Unsloth_Studio_Colab.ipynb │ ├── __init__.py │ ├── backend/ │ │ ├── __init__.py │ │ ├── assets/ │ │ │ ├── __init__.py │ │ │ └── configs/ │ │ │ ├── __init__.py │ │ │ ├── full_finetune.yaml │ │ │ ├── inference_defaults.json │ │ │ ├── lora_text.yaml │ │ │ ├── model_defaults/ │ │ │ │ ├── default.yaml │ │ │ │ ├── embedding/ │ │ │ │ │ ├── unsloth_Qwen3-Embedding-0.6B.yaml │ │ │ │ │ ├── unsloth_all-MiniLM-L6-v2.yaml │ │ │ │ │ ├── unsloth_bge-m3.yaml │ │ │ │ │ ├── unsloth_embeddinggemma-300m.yaml │ │ │ │ │ └── unsloth_gte-modernbert-base.yaml │ │ │ │ ├── ernie/ │ │ │ │ │ ├── unsloth_ERNIE-4.5-21B-A3B-PT.yaml │ │ │ │ │ └── unsloth_ERNIE-4.5-VL-28B-A3B-PT.yaml │ │ │ │ ├── falcon/ │ │ │ │ │ └── tiiuae_Falcon-H1-0.5B-Instruct.yaml │ │ │ │ ├── gemma/ │ │ │ │ │ ├── unsloth_codegemma-7b-bnb-4bit.yaml │ │ │ │ │ ├── unsloth_functiongemma-270m-it.yaml │ │ │ │ │ ├── unsloth_gemma-2-27b-bnb-4bit.yaml │ │ │ │ │ ├── unsloth_gemma-2-2b.yaml │ │ │ │ │ ├── unsloth_gemma-3-270m-it.yaml │ │ │ │ │ ├── unsloth_gemma-3-27b-it.yaml │ │ │ │ │ ├── unsloth_gemma-3-4b-it.yaml │ │ │ │ │ ├── unsloth_gemma-3-4b-pt.yaml │ │ │ │ │ ├── unsloth_gemma-3n-E4B-it.yaml │ │ │ │ │ └── unsloth_gemma-3n-E4B.yaml │ │ │ │ ├── gpt-oss/ │ │ │ │ │ ├── unsloth_gpt-oss-120b.yaml │ │ │ │ │ └── unsloth_gpt-oss-20b.yaml │ │ │ │ ├── granite/ │ │ │ │ │ ├── unsloth_granite-4.0-350m-unsloth-bnb-4bit.yaml │ │ │ │ │ └── unsloth_granite-4.0-h-micro.yaml │ │ │ │ ├── llama/ │ │ │ │ │ ├── unsloth_Llama-3.2-11B-Vision-Instruct.yaml │ │ │ │ │ ├── unsloth_Llama-3.2-1B-Instruct.yaml │ │ │ │ │ ├── unsloth_Llama-3.2-3B-Instruct.yaml │ │ │ │ │ ├── unsloth_Llama-3.3-70B-Instruct.yaml │ │ │ │ │ ├── unsloth_Meta-Llama-3.1-70B-bnb-4bit.yaml │ │ │ │ │ ├── unsloth_Meta-Llama-3.1-8B-Instruct-bnb-4bit.yaml │ │ │ │ │ ├── unsloth_llama-3-8b-Instruct-bnb-4bit.yaml │ │ │ │ │ └── unsloth_llama-3-8b-bnb-4bit.yaml │ │ │ │ ├── llasa/ │ │ │ │ │ └── unsloth_Llasa-3B.yaml │ │ │ │ ├── mistral/ │ │ │ │ │ ├── unsloth_Magistral-Small-2509-unsloth-bnb-4bit.yaml │ │ │ │ │ ├── unsloth_Ministral-3-3B-Instruct-2512.yaml │ │ │ │ │ ├── unsloth_Mistral-Nemo-Base-2407-bnb-4bit.yaml │ │ │ │ │ ├── unsloth_Mistral-Small-Instruct-2409.yaml │ │ │ │ │ ├── unsloth_Pixtral-12B-2409.yaml │ │ │ │ │ ├── unsloth_mistral-7b-instruct-v0.3-bnb-4bit.yaml │ │ │ │ │ └── unsloth_mistral-7b-v0.3-bnb-4bit.yaml │ │ │ │ ├── other/ │ │ │ │ │ ├── OuteAI_Llama-OuteTTS-1.0-1B.yaml │ │ │ │ │ ├── Spark-TTS-0.5B_LLM.yaml │ │ │ │ │ ├── sesame_csm-1b.yaml │ │ │ │ │ ├── unsloth_GLM-4.7-Flash.yaml │ │ │ │ │ ├── unsloth_LFM2-1.2B.yaml │ │ │ │ │ ├── unsloth_Nemotron-3-Nano-30B-A3B.yaml │ │ │ │ │ ├── unsloth_PaddleOCR-VL.yaml │ │ │ │ │ ├── unsloth_answerdotai_ModernBERT-large.yaml │ │ │ │ │ ├── unsloth_orpheus-3b-0.1-ft.yaml │ │ │ │ │ ├── unsloth_tinyllama-bnb-4bit.yaml │ │ │ │ │ └── unsloth_whisper-large-v3.yaml │ │ │ │ ├── phi/ │ │ │ │ │ ├── unsloth_Phi-3-medium-4k-instruct.yaml │ │ │ │ │ ├── unsloth_Phi-3.5-mini-instruct.yaml │ │ │ │ │ └── unsloth_Phi-4.yaml │ │ │ │ └── qwen/ │ │ │ │ ├── imdatta0_tiny_qwen3_moe_2.8B_0.7B.yaml │ │ │ │ ├── unsloth_Qwen2-7B.yaml │ │ │ │ ├── unsloth_Qwen2-VL-7B-Instruct.yaml │ │ │ │ ├── unsloth_Qwen2.5-1.5B-Instruct.yaml │ │ │ │ ├── unsloth_Qwen2.5-7B.yaml │ │ │ │ ├── unsloth_Qwen2.5-Coder-1.5B-Instruct.yaml │ │ │ │ ├── unsloth_Qwen2.5-Coder-14B-Instruct.yaml │ │ │ │ ├── unsloth_Qwen2.5-Coder-7B-Instruct-bnb-4bit.yaml │ │ │ │ ├── unsloth_Qwen2.5-VL-7B-Instruct-bnb-4bit.yaml │ │ │ │ ├── unsloth_Qwen3-0.6B.yaml │ │ │ │ ├── unsloth_Qwen3-14B-Base-unsloth-bnb-4bit.yaml │ │ │ │ ├── unsloth_Qwen3-14B.yaml │ │ │ │ ├── unsloth_Qwen3-30B-A3B-Instruct-2507.yaml │ │ │ │ ├── unsloth_Qwen3-32B.yaml │ │ │ │ ├── unsloth_Qwen3-4B-Instruct-2507.yaml │ │ │ │ ├── unsloth_Qwen3-4B-Thinking-2507.yaml │ │ │ │ └── unsloth_Qwen3-VL-8B-Instruct-unsloth-bnb-4bit.yaml │ │ │ └── vision_lora.yaml │ │ ├── auth/ │ │ │ ├── .gitkeep │ │ │ ├── __init__.py │ │ │ ├── authentication.py │ │ │ ├── hashing.py │ │ │ └── storage.py │ │ ├── colab.py │ │ ├── core/ │ │ │ ├── __init__.py │ │ │ ├── data_recipe/ │ │ │ │ ├── __init__.py │ │ │ │ ├── huggingface.py │ │ │ │ ├── jobs/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── constants.py │ │ │ │ │ ├── manager.py │ │ │ │ │ ├── parse.py │ │ │ │ │ ├── types.py │ │ │ │ │ └── worker.py │ │ │ │ ├── jsonable.py │ │ │ │ ├── local_callable_validators.py │ │ │ │ ├── oxc-validator/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── validate.mjs │ │ │ │ └── service.py │ │ │ ├── export/ │ │ │ │ ├── __init__.py │ │ │ │ ├── export.py │ │ │ │ ├── orchestrator.py │ │ │ │ └── worker.py │ │ │ ├── inference/ │ │ │ │ ├── __init__.py │ │ │ │ ├── audio_codecs.py │ │ │ │ ├── defaults.py │ │ │ │ ├── inference.py │ │ │ │ ├── llama_cpp.py │ │ │ │ ├── orchestrator.py │ │ │ │ ├── tools.py │ │ │ │ └── worker.py │ │ │ └── training/ │ │ │ ├── __init__.py │ │ │ ├── trainer.py │ │ │ ├── training.py │ │ │ └── worker.py │ │ ├── loggers/ │ │ │ ├── .gitkeep │ │ │ ├── __init__.py │ │ │ ├── config.py │ │ │ └── handlers.py │ │ ├── main.py │ │ ├── models/ │ │ │ ├── .gitkeep │ │ │ ├── __init__.py │ │ │ ├── auth.py │ │ │ ├── data_recipe.py │ │ │ ├── datasets.py │ │ │ ├── export.py │ │ │ ├── inference.py │ │ │ ├── models.py │ │ │ ├── responses.py │ │ │ ├── training.py │ │ │ └── users.py │ │ ├── plugins/ │ │ │ ├── __init__.py │ │ │ └── data-designer-unstructured-seed/ │ │ │ ├── __init__.py │ │ │ ├── pyproject.toml │ │ │ └── src/ │ │ │ └── data_designer_unstructured_seed/ │ │ │ ├── __init__.py │ │ │ ├── chunking.py │ │ │ ├── config.py │ │ │ ├── impl.py │ │ │ └── plugin.py │ │ ├── requirements/ │ │ │ ├── __init__.py │ │ │ ├── base.txt │ │ │ ├── extras-no-deps.txt │ │ │ ├── extras.txt │ │ │ ├── overrides.txt │ │ │ ├── single-env/ │ │ │ │ ├── constraints.txt │ │ │ │ ├── data-designer-deps.txt │ │ │ │ ├── data-designer.txt │ │ │ │ └── patch_metadata.py │ │ │ ├── studio.txt │ │ │ └── triton-kernels.txt │ │ ├── routes/ │ │ │ ├── .gitkeep │ │ │ ├── __init__.py │ │ │ ├── auth.py │ │ │ ├── data_recipe/ │ │ │ │ ├── __init__.py │ │ │ │ ├── jobs.py │ │ │ │ ├── mcp.py │ │ │ │ ├── seed.py │ │ │ │ └── validate.py │ │ │ ├── datasets.py │ │ │ ├── export.py │ │ │ ├── inference.py │ │ │ ├── models.py │ │ │ └── training.py │ │ ├── run.py │ │ ├── state/ │ │ │ ├── .gitkeep │ │ │ └── __init__.py │ │ ├── tests/ │ │ │ ├── __init__.py │ │ │ ├── conftest.py │ │ │ ├── test_data_recipe_seed.py │ │ │ └── test_utils.py │ │ └── utils/ │ │ ├── .gitkeep │ │ ├── __init__.py │ │ ├── cache_cleanup.py │ │ ├── datasets/ │ │ │ ├── __init__.py │ │ │ ├── chat_templates.py │ │ │ ├── data_collators.py │ │ │ ├── dataset_utils.py │ │ │ ├── format_conversion.py │ │ │ ├── format_detection.py │ │ │ ├── llm_assist.py │ │ │ ├── model_mappings.py │ │ │ └── vlm_processing.py │ │ ├── hardware/ │ │ │ ├── __init__.py │ │ │ └── hardware.py │ │ ├── inference/ │ │ │ ├── __init__.py │ │ │ └── inference_config.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ ├── checkpoints.py │ │ │ └── model_config.py │ │ ├── paths/ │ │ │ ├── __init__.py │ │ │ ├── path_utils.py │ │ │ └── storage_roots.py │ │ ├── transformers_version.py │ │ └── utils.py │ ├── frontend/ │ │ ├── .gitignore │ │ ├── .gitkeep │ │ ├── biome.json │ │ ├── components.json │ │ ├── data-designer.openapi (1).yaml │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── package.json │ │ ├── public/ │ │ │ └── Hellix font official/ │ │ │ └── OTF/ │ │ │ └── Hellix-SemiBold.otf │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ ├── app.tsx │ │ │ │ ├── auth-guards.ts │ │ │ │ ├── provider.tsx │ │ │ │ ├── router.tsx │ │ │ │ └── routes/ │ │ │ │ ├── __root.tsx │ │ │ │ ├── change-password.tsx │ │ │ │ ├── chat.tsx │ │ │ │ ├── data-recipes.$recipeId.tsx │ │ │ │ ├── data-recipes.tsx │ │ │ │ ├── export.tsx │ │ │ │ ├── grid-test.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── login.tsx │ │ │ │ ├── onboarding.tsx │ │ │ │ └── studio.tsx │ │ │ ├── components/ │ │ │ │ ├── assistant-ui/ │ │ │ │ │ ├── attachment.tsx │ │ │ │ │ ├── audio-player.tsx │ │ │ │ │ ├── badge.tsx │ │ │ │ │ ├── markdown-text.tsx │ │ │ │ │ ├── message-timing.tsx │ │ │ │ │ ├── model-selector/ │ │ │ │ │ │ ├── pickers.tsx │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── model-selector.tsx │ │ │ │ │ ├── reasoning.tsx │ │ │ │ │ ├── sources.tsx │ │ │ │ │ ├── thread.tsx │ │ │ │ │ ├── tool-fallback.tsx │ │ │ │ │ ├── tool-group.tsx │ │ │ │ │ ├── tool-ui-python.tsx │ │ │ │ │ ├── tool-ui-terminal.tsx │ │ │ │ │ ├── tool-ui-web-search.tsx │ │ │ │ │ └── tooltip-icon-button.tsx │ │ │ │ ├── example.tsx │ │ │ │ ├── layout/ │ │ │ │ │ ├── dashboard-grid.tsx │ │ │ │ │ ├── dashboard-layout.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── markdown/ │ │ │ │ │ ├── markdown-preview.tsx │ │ │ │ │ └── mermaid-error.tsx │ │ │ │ ├── navbar.tsx │ │ │ │ ├── section-card.tsx │ │ │ │ └── ui/ │ │ │ │ ├── accordion.tsx │ │ │ │ ├── alert-dialog.tsx │ │ │ │ ├── alert.tsx │ │ │ │ ├── animated-shiny-text.tsx │ │ │ │ ├── animated-theme-toggler.tsx │ │ │ │ ├── aspect-ratio.tsx │ │ │ │ ├── avatar.tsx │ │ │ │ ├── badge.tsx │ │ │ │ ├── breadcrumb.tsx │ │ │ │ ├── button.tsx │ │ │ │ ├── calendar.tsx │ │ │ │ ├── card.tsx │ │ │ │ ├── chart.tsx │ │ │ │ ├── checkbox.tsx │ │ │ │ ├── collapsible.tsx │ │ │ │ ├── combobox.tsx │ │ │ │ ├── command.tsx │ │ │ │ ├── confetti.tsx │ │ │ │ ├── context-menu.tsx │ │ │ │ ├── data-table.tsx │ │ │ │ ├── dialog.tsx │ │ │ │ ├── dropdown-menu.tsx │ │ │ │ ├── empty.tsx │ │ │ │ ├── field.tsx │ │ │ │ ├── hover-card.tsx │ │ │ │ ├── input-group.tsx │ │ │ │ ├── input.tsx │ │ │ │ ├── label.tsx │ │ │ │ ├── light-rays.tsx │ │ │ │ ├── menubar.tsx │ │ │ │ ├── navigation-menu.tsx │ │ │ │ ├── pagination.tsx │ │ │ │ ├── popover.tsx │ │ │ │ ├── progress.tsx │ │ │ │ ├── radio-group.tsx │ │ │ │ ├── resizable.tsx │ │ │ │ ├── scroll-area.tsx │ │ │ │ ├── select.tsx │ │ │ │ ├── separator.tsx │ │ │ │ ├── sheet.tsx │ │ │ │ ├── shine-border.tsx │ │ │ │ ├── sidebar.tsx │ │ │ │ ├── skeleton.tsx │ │ │ │ ├── slider.tsx │ │ │ │ ├── sonner.tsx │ │ │ │ ├── sparkles-text.tsx │ │ │ │ ├── spinner.tsx │ │ │ │ ├── switch.tsx │ │ │ │ ├── table.tsx │ │ │ │ ├── tabs.tsx │ │ │ │ ├── terminal.tsx │ │ │ │ ├── textarea.tsx │ │ │ │ ├── toggle-group.tsx │ │ │ │ ├── toggle.tsx │ │ │ │ └── tooltip.tsx │ │ │ ├── config/ │ │ │ │ ├── env.ts │ │ │ │ └── training.ts │ │ │ ├── features/ │ │ │ │ ├── auth/ │ │ │ │ │ ├── api.ts │ │ │ │ │ ├── change-password-page.tsx │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── auth-form.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── login-page.tsx │ │ │ │ │ └── session.ts │ │ │ │ ├── chat/ │ │ │ │ │ ├── api/ │ │ │ │ │ │ ├── chat-adapter.ts │ │ │ │ │ │ └── chat-api.ts │ │ │ │ │ ├── chat-page.tsx │ │ │ │ │ ├── chat-settings-sheet.tsx │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── model-load-status.tsx │ │ │ │ │ ├── db.ts │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ └── use-chat-model-runtime.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── runtime-provider.tsx │ │ │ │ │ ├── shared-composer.tsx │ │ │ │ │ ├── stores/ │ │ │ │ │ │ └── chat-runtime-store.ts │ │ │ │ │ ├── thread-sidebar.tsx │ │ │ │ │ ├── tour/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── steps.tsx │ │ │ │ │ ├── types/ │ │ │ │ │ │ ├── api.ts │ │ │ │ │ │ └── runtime.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils/ │ │ │ │ │ └── parse-assistant-content.ts │ │ │ │ ├── data-recipes/ │ │ │ │ │ ├── data/ │ │ │ │ │ │ └── recipes-db.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── learning-recipes/ │ │ │ │ │ │ ├── conversation.json │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── instruction-from-answer.json │ │ │ │ │ │ ├── ocr-document-extraction.json │ │ │ │ │ │ ├── pdf-grounded-qa.json │ │ │ │ │ │ ├── structured-outputs-jinja.json │ │ │ │ │ │ ├── text-to-python.json │ │ │ │ │ │ └── text-to-sql.json │ │ │ │ │ ├── pages/ │ │ │ │ │ │ ├── data-recipes-page.tsx │ │ │ │ │ │ └── edit-recipe-page.tsx │ │ │ │ │ └── types.ts │ │ │ │ ├── export/ │ │ │ │ │ ├── anim.ts │ │ │ │ │ ├── api/ │ │ │ │ │ │ └── export-api.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── export-dialog.tsx │ │ │ │ │ │ ├── method-picker.tsx │ │ │ │ │ │ └── quant-picker.tsx │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── export-page.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── tour/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── steps.tsx │ │ │ │ ├── onboarding/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── splash-screen.tsx │ │ │ │ │ │ ├── steps/ │ │ │ │ │ │ │ ├── dataset-step.tsx │ │ │ │ │ │ │ ├── hyperparameters-step.tsx │ │ │ │ │ │ │ ├── model-selection-step.tsx │ │ │ │ │ │ │ ├── model-type-step.tsx │ │ │ │ │ │ │ └── summary-step.tsx │ │ │ │ │ │ ├── wizard-content.tsx │ │ │ │ │ │ ├── wizard-footer.tsx │ │ │ │ │ │ ├── wizard-layout.tsx │ │ │ │ │ │ ├── wizard-sidebar.tsx │ │ │ │ │ │ └── wizard-step-item.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── recipe-studio/ │ │ │ │ │ ├── api/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── blocks/ │ │ │ │ │ │ ├── definitions.ts │ │ │ │ │ │ ├── registry.ts │ │ │ │ │ │ └── render-dialog.tsx │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── block-sheet.tsx │ │ │ │ │ │ ├── chip-input.tsx │ │ │ │ │ │ ├── controls/ │ │ │ │ │ │ │ ├── layout-controls.tsx │ │ │ │ │ │ │ ├── run-validate-floating-controls.tsx │ │ │ │ │ │ │ └── viewport-controls.tsx │ │ │ │ │ │ ├── executions/ │ │ │ │ │ │ │ ├── execution-columns-tab.tsx │ │ │ │ │ │ │ ├── execution-data-tab.tsx │ │ │ │ │ │ │ ├── execution-overview-tab.tsx │ │ │ │ │ │ │ ├── execution-raw-tab.tsx │ │ │ │ │ │ │ ├── execution-sidebar.tsx │ │ │ │ │ │ │ ├── executions-view-helpers.ts │ │ │ │ │ │ │ ├── executions-view.tsx │ │ │ │ │ │ │ └── publish-execution-dialog.tsx │ │ │ │ │ │ ├── graph/ │ │ │ │ │ │ │ └── internals-sync.tsx │ │ │ │ │ │ ├── inline/ │ │ │ │ │ │ │ ├── inline-category-badges.tsx │ │ │ │ │ │ │ ├── inline-expression.tsx │ │ │ │ │ │ │ ├── inline-field.tsx │ │ │ │ │ │ │ ├── inline-llm.tsx │ │ │ │ │ │ │ ├── inline-model.tsx │ │ │ │ │ │ │ ├── inline-policy.ts │ │ │ │ │ │ │ ├── inline-sampler.tsx │ │ │ │ │ │ │ └── inline-seed.tsx │ │ │ │ │ │ ├── recipe-floating-icon-button-class.ts │ │ │ │ │ │ ├── recipe-graph-aux-node.tsx │ │ │ │ │ │ ├── recipe-graph-node.tsx │ │ │ │ │ │ ├── recipe-graph-semantic-edge.tsx │ │ │ │ │ │ ├── recipe-studio-header.tsx │ │ │ │ │ │ ├── rf-ui/ │ │ │ │ │ │ │ ├── base-handle.tsx │ │ │ │ │ │ │ ├── base-node.tsx │ │ │ │ │ │ │ ├── data-edge.tsx │ │ │ │ │ │ │ └── labeled-handle.tsx │ │ │ │ │ │ ├── runtime/ │ │ │ │ │ │ │ └── execution-progress-island.tsx │ │ │ │ │ │ └── shared/ │ │ │ │ │ │ ├── available-references-inline.tsx │ │ │ │ │ │ └── hf-dataset-combobox.tsx │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── data/ │ │ │ │ │ │ └── executions-db.ts │ │ │ │ │ ├── dialogs/ │ │ │ │ │ │ ├── config-dialog.tsx │ │ │ │ │ │ ├── expression/ │ │ │ │ │ │ │ └── expression-dialog.tsx │ │ │ │ │ │ ├── import-dialog.tsx │ │ │ │ │ │ ├── llm/ │ │ │ │ │ │ │ ├── general-tab.tsx │ │ │ │ │ │ │ ├── llm-dialog.tsx │ │ │ │ │ │ │ └── scores-tab.tsx │ │ │ │ │ │ ├── markdown-note/ │ │ │ │ │ │ │ └── markdown-note-dialog.tsx │ │ │ │ │ │ ├── models/ │ │ │ │ │ │ │ ├── model-config-dialog.tsx │ │ │ │ │ │ │ └── model-provider-dialog.tsx │ │ │ │ │ │ ├── preview-dialog.tsx │ │ │ │ │ │ ├── processors-dialog.tsx │ │ │ │ │ │ ├── samplers/ │ │ │ │ │ │ │ ├── bernoulli-dialog.tsx │ │ │ │ │ │ │ ├── category-dialog.tsx │ │ │ │ │ │ │ ├── datetime-dialog.tsx │ │ │ │ │ │ │ ├── gaussian-dialog.tsx │ │ │ │ │ │ │ ├── person-dialog.tsx │ │ │ │ │ │ │ ├── subcategory-dialog.tsx │ │ │ │ │ │ │ ├── timedelta-dialog.tsx │ │ │ │ │ │ │ ├── uniform-dialog.tsx │ │ │ │ │ │ │ └── uuid-dialog.tsx │ │ │ │ │ │ ├── seed/ │ │ │ │ │ │ │ └── seed-dialog.tsx │ │ │ │ │ │ ├── shared/ │ │ │ │ │ │ │ ├── available-variables.tsx │ │ │ │ │ │ │ ├── collapsible-section-trigger.tsx │ │ │ │ │ │ │ ├── dialog-shell.tsx │ │ │ │ │ │ │ ├── field-label.tsx │ │ │ │ │ │ │ ├── name-field.tsx │ │ │ │ │ │ │ └── validation-banner.tsx │ │ │ │ │ │ ├── tool-profile/ │ │ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ │ │ └── tool-profile-dialog.tsx │ │ │ │ │ │ └── validators/ │ │ │ │ │ │ └── validator-dialog.tsx │ │ │ │ │ ├── execution-types.ts │ │ │ │ │ ├── executions/ │ │ │ │ │ │ ├── execution-helpers.ts │ │ │ │ │ │ ├── hydration.ts │ │ │ │ │ │ ├── run-settings.ts │ │ │ │ │ │ ├── runtime.ts │ │ │ │ │ │ └── tracker.ts │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── use-node-connection-status.ts │ │ │ │ │ │ ├── use-recipe-editor-graph.ts │ │ │ │ │ │ ├── use-recipe-executions.ts │ │ │ │ │ │ ├── use-recipe-persistence.ts │ │ │ │ │ │ ├── use-recipe-runtime-visuals.ts │ │ │ │ │ │ └── use-recipe-studio-actions.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── recipe-studio-page.tsx │ │ │ │ │ ├── stores/ │ │ │ │ │ │ ├── helpers/ │ │ │ │ │ │ │ ├── edge-sync.ts │ │ │ │ │ │ │ ├── model-infra-layout.ts │ │ │ │ │ │ │ ├── node-updates.ts │ │ │ │ │ │ │ ├── reference-sync.ts │ │ │ │ │ │ │ └── removals.ts │ │ │ │ │ │ ├── recipe-executions.ts │ │ │ │ │ │ ├── recipe-studio-helpers.ts │ │ │ │ │ │ └── recipe-studio.ts │ │ │ │ │ ├── types/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── config-factories.ts │ │ │ │ │ ├── config-labels.ts │ │ │ │ │ ├── config-type-guards.ts │ │ │ │ │ ├── graph/ │ │ │ │ │ │ ├── derive-display-graph.ts │ │ │ │ │ │ ├── fit-view.ts │ │ │ │ │ │ ├── recipe-graph-connection.ts │ │ │ │ │ │ ├── relations.ts │ │ │ │ │ │ └── runtime-visual-state.ts │ │ │ │ │ ├── graph-warnings.ts │ │ │ │ │ ├── graph.ts │ │ │ │ │ ├── handle-layout.ts │ │ │ │ │ ├── handles.ts │ │ │ │ │ ├── image-preview.ts │ │ │ │ │ ├── import/ │ │ │ │ │ │ ├── edges.ts │ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ │ ├── importer.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── parsers/ │ │ │ │ │ │ │ ├── expression-parser.ts │ │ │ │ │ │ │ ├── llm-parser.ts │ │ │ │ │ │ │ ├── model-parser.ts │ │ │ │ │ │ │ ├── sampler-parser.ts │ │ │ │ │ │ │ ├── seed-config-parser.ts │ │ │ │ │ │ │ └── validator-parser.ts │ │ │ │ │ │ ├── parsers.ts │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ └── ui.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── layout.ts │ │ │ │ │ ├── naming.ts │ │ │ │ │ ├── node-data.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ ├── payload/ │ │ │ │ │ │ ├── build-payload.ts │ │ │ │ │ │ ├── builders-llm.ts │ │ │ │ │ │ ├── builders-model.ts │ │ │ │ │ │ ├── builders-processors.ts │ │ │ │ │ │ ├── builders-sampler.ts │ │ │ │ │ │ ├── builders-seed.ts │ │ │ │ │ │ ├── builders-validator.ts │ │ │ │ │ │ ├── builders.ts │ │ │ │ │ │ ├── empty.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── parse.ts │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ └── validate.ts │ │ │ │ │ ├── processors.ts │ │ │ │ │ ├── reactflow-changes.ts │ │ │ │ │ ├── recipe-studio-view.ts │ │ │ │ │ ├── refs.ts │ │ │ │ │ ├── rf-node-dimensions.ts │ │ │ │ │ ├── ui-tones.ts │ │ │ │ │ ├── validation.ts │ │ │ │ │ ├── validators/ │ │ │ │ │ │ ├── code-lang.ts │ │ │ │ │ │ ├── oxc-code-shape.ts │ │ │ │ │ │ └── oxc-mode.ts │ │ │ │ │ └── variables.ts │ │ │ │ ├── studio/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── sections/ │ │ │ │ │ │ ├── charts/ │ │ │ │ │ │ │ ├── chart-preferences-store.ts │ │ │ │ │ │ │ ├── chart-settings-sheet.tsx │ │ │ │ │ │ │ ├── eval-loss-chart-card.tsx │ │ │ │ │ │ │ ├── grad-norm-chart-card.tsx │ │ │ │ │ │ │ ├── learning-rate-chart-card.tsx │ │ │ │ │ │ │ ├── training-loss-chart-card.tsx │ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ ├── charts-content.tsx │ │ │ │ │ │ ├── charts-section.tsx │ │ │ │ │ │ ├── dataset-preview-dialog-mapping.tsx │ │ │ │ │ │ ├── dataset-preview-dialog-utils.ts │ │ │ │ │ │ ├── dataset-preview-dialog.tsx │ │ │ │ │ │ ├── dataset-section.tsx │ │ │ │ │ │ ├── document-upload-redirect-dialog.tsx │ │ │ │ │ │ ├── model-section.tsx │ │ │ │ │ │ ├── params-section.tsx │ │ │ │ │ │ ├── progress-section-lib.ts │ │ │ │ │ │ ├── progress-section.tsx │ │ │ │ │ │ └── training-section.tsx │ │ │ │ │ ├── studio-page.tsx │ │ │ │ │ ├── tour/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── steps/ │ │ │ │ │ │ │ ├── base-model.tsx │ │ │ │ │ │ │ ├── dataset.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── local-model.tsx │ │ │ │ │ │ │ ├── method.tsx │ │ │ │ │ │ │ ├── nav.tsx │ │ │ │ │ │ │ ├── params.tsx │ │ │ │ │ │ │ ├── save.tsx │ │ │ │ │ │ │ └── start.tsx │ │ │ │ │ │ └── training/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── steps.tsx │ │ │ │ │ ├── training-start-overlay.tsx │ │ │ │ │ └── training-view.tsx │ │ │ │ ├── tour/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── guided-tour.tsx │ │ │ │ │ │ ├── read-more.tsx │ │ │ │ │ │ └── spotlight-overlay.tsx │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ └── use-guided-tour-controller.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ └── training/ │ │ │ │ ├── api/ │ │ │ │ │ ├── datasets-api.ts │ │ │ │ │ ├── mappers.ts │ │ │ │ │ ├── models-api.ts │ │ │ │ │ └── train-api.ts │ │ │ │ ├── components/ │ │ │ │ │ └── hf-dataset-subset-split-selectors.tsx │ │ │ │ ├── hooks/ │ │ │ │ │ ├── use-max-steps-epochs-toggle.ts │ │ │ │ │ ├── use-training-actions.ts │ │ │ │ │ └── use-training-runtime-lifecycle.ts │ │ │ │ ├── index.ts │ │ │ │ ├── stores/ │ │ │ │ │ ├── dataset-preview-dialog-store.ts │ │ │ │ │ ├── training-config-store.ts │ │ │ │ │ └── training-runtime-store.ts │ │ │ │ └── types/ │ │ │ │ ├── api.ts │ │ │ │ ├── config.ts │ │ │ │ ├── datasets.ts │ │ │ │ └── runtime.ts │ │ │ ├── hooks/ │ │ │ │ ├── index.ts │ │ │ │ ├── use-debounced-value.ts │ │ │ │ ├── use-gpu-info.ts │ │ │ │ ├── use-gpu-utilization.ts │ │ │ │ ├── use-hardware-info.ts │ │ │ │ ├── use-hf-dataset-search.ts │ │ │ │ ├── use-hf-dataset-splits.ts │ │ │ │ ├── use-hf-model-search.ts │ │ │ │ ├── use-hf-paginated-search.ts │ │ │ │ ├── use-hf-token-validation.ts │ │ │ │ ├── use-infinite-scroll.ts │ │ │ │ ├── use-mobile.ts │ │ │ │ └── use-recommended-model-vram.ts │ │ │ ├── index.css │ │ │ ├── main.tsx │ │ │ ├── shared/ │ │ │ │ └── toast.ts │ │ │ ├── speech-recognition.d.ts │ │ │ ├── stores/ │ │ │ │ ├── index.ts │ │ │ │ └── training.ts │ │ │ ├── types/ │ │ │ │ ├── index.ts │ │ │ │ └── training.ts │ │ │ └── utils/ │ │ │ ├── index.ts │ │ │ └── strings.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ ├── tsconfig.node.json │ │ └── vite.config.ts │ ├── install_python_stack.py │ ├── setup.bat │ ├── setup.ps1 │ └── setup.sh ├── tests/ │ ├── __init__.py │ ├── qlora/ │ │ ├── README.md │ │ ├── test_hf_qlora_train_and_merge.py │ │ └── test_unsloth_qlora_train_and_merge.py │ ├── saving/ │ │ ├── gpt-oss-merge/ │ │ │ ├── run_test.sh │ │ │ ├── test_merged_model.py │ │ │ └── train_and_merge.py │ │ ├── language_models/ │ │ │ ├── test_merge_4bit_validation.py │ │ │ ├── test_merge_model_perplexity_llama-3.2.py │ │ │ ├── test_merge_model_perplexity_mistral.py │ │ │ ├── test_merge_model_perplexity_phi_4.py │ │ │ ├── test_merged_model_perplexity_llama-3.1-8b.py │ │ │ ├── test_merged_model_perplexity_qwen_2.5.py │ │ │ ├── test_push_to_hub_merged.py │ │ │ ├── test_push_to_hub_merged_sharded_index_file.py │ │ │ └── test_save_merged_grpo_model.py │ │ ├── non_peft/ │ │ │ ├── test_mistral_non_peft.py │ │ │ └── test_whisper_non_peft.py │ │ ├── test_unsloth_save.py │ │ ├── text_to_speech_models/ │ │ │ ├── test_csm.py │ │ │ ├── test_lasa.py │ │ │ ├── test_orpheus.py │ │ │ └── test_whisper.py │ │ └── vision_models/ │ │ ├── test_index_file_sharded_model.py │ │ ├── test_push_to_hub_merged.py │ │ ├── test_save_merge_qwen2.5vl32B_model_ocr_benchmark.py │ │ └── test_save_merge_vision_model_ocr_benchmark.py │ ├── test_get_model_name.py │ ├── test_model_registry.py │ ├── test_raw_text.py │ └── utils/ │ ├── __init__.py │ ├── aime_eval.md │ ├── aime_eval.py │ ├── cleanup_utils.py │ ├── data_utils.py │ ├── hf_utils.py │ ├── ocr_eval.md │ ├── ocr_eval.py │ ├── os_utils.py │ ├── perplexity_eval.md │ ├── perplexity_eval.py │ ├── test_attention_masks.py │ ├── test_packing.py │ ├── test_qat.py │ └── test_trunc_normal_patch.py ├── unsloth/ │ ├── __init__.py │ ├── _auto_install.py │ ├── chat_templates.py │ ├── dataprep/ │ │ ├── __init__.py │ │ ├── raw_text.py │ │ ├── synthetic.py │ │ └── synthetic_configs.py │ ├── device_type.py │ ├── import_fixes.py │ ├── kernels/ │ │ ├── __init__.py │ │ ├── cross_entropy_loss.py │ │ ├── fast_lora.py │ │ ├── flex_attention.py │ │ ├── fp8.py │ │ ├── geglu.py │ │ ├── layernorm.py │ │ ├── moe/ │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── autotune_cache.py │ │ │ ├── benchmark/ │ │ │ │ ├── benchmark_fused_moe.py │ │ │ │ └── utils.py │ │ │ ├── grouped_gemm/ │ │ │ │ ├── LICENSE │ │ │ │ ├── __init__.py │ │ │ │ ├── interface.py │ │ │ │ ├── kernels/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── autotuning.py │ │ │ │ │ ├── backward.py │ │ │ │ │ ├── forward.py │ │ │ │ │ └── tuning.py │ │ │ │ └── reference/ │ │ │ │ ├── __init__.py │ │ │ │ ├── layers/ │ │ │ │ │ ├── llama4_moe.py │ │ │ │ │ └── qwen3_moe.py │ │ │ │ ├── moe_block.py │ │ │ │ └── moe_ops.py │ │ │ ├── requirements.txt │ │ │ └── tests/ │ │ │ ├── __init__.py │ │ │ ├── common.py │ │ │ ├── moe_utils.py │ │ │ ├── run_qwen3_moe_tests.sh │ │ │ ├── test_grouped_gemm.py │ │ │ ├── test_llama4_moe.py │ │ │ └── test_qwen3_moe.py │ │ ├── rms_layernorm.py │ │ ├── rope_embedding.py │ │ ├── swiglu.py │ │ └── utils.py │ ├── models/ │ │ ├── __init__.py │ │ ├── _utils.py │ │ ├── cohere.py │ │ ├── dpo.py │ │ ├── falcon_h1.py │ │ ├── gemma.py │ │ ├── gemma2.py │ │ ├── glm4_moe.py │ │ ├── granite.py │ │ ├── llama.py │ │ ├── llama4.py │ │ ├── loader.py │ │ ├── loader_utils.py │ │ ├── mapper.py │ │ ├── mistral.py │ │ ├── qwen2.py │ │ ├── qwen3.py │ │ ├── qwen3_moe.py │ │ ├── rl.py │ │ ├── rl_replacements.py │ │ ├── sentence_transformer.py │ │ └── vision.py │ ├── ollama_template_mappers.py │ ├── registry/ │ │ ├── REGISTRY.md │ │ ├── __init__.py │ │ ├── _deepseek.py │ │ ├── _gemma.py │ │ ├── _llama.py │ │ ├── _mistral.py │ │ ├── _phi.py │ │ ├── _qwen.py │ │ └── registry.py │ ├── save.py │ ├── tokenizer_utils.py │ ├── trainer.py │ └── utils/ │ ├── __init__.py │ ├── attention_dispatch.py │ ├── hf_hub.py │ └── packing.py ├── unsloth-cli.py └── unsloth_cli/ ├── __init__.py ├── commands/ │ ├── __init__.py │ ├── export.py │ ├── inference.py │ ├── studio.py │ ├── train.py │ └── ui.py ├── config.py └── options.py