InvokeAI 6.14.1__tar.gz → 6.14.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {invokeai-6.14.1 → invokeai-6.14.2}/InvokeAI.egg-info/PKG-INFO +2 -1
- {invokeai-6.14.1 → invokeai-6.14.2}/InvokeAI.egg-info/SOURCES.txt +9 -2
- {invokeai-6.14.1 → invokeai-6.14.2}/InvokeAI.egg-info/requires.txt +1 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/PKG-INFO +2 -1
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/model_manager.py +66 -10
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/utilities.py +285 -1
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/videos.py +11 -10
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/fields.py +37 -1
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux2_denoise.py +93 -42
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/krea2_denoise.py +225 -43
- invokeai-6.14.2/invokeai/app/invocations/krea2_style_reference.py +235 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/krea2_text_encoder.py +2 -68
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/primitives.py +15 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/qwen_image_image_to_latents.py +6 -9
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/qwen_image_latents_to_image.py +9 -9
- invokeai-6.14.2/invokeai/app/invocations/qwen_image_text_encoder.py +493 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/config/config_default.py +27 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_images/model_images_default.py +28 -4
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_install/model_install_default.py +21 -1
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_records/model_records_base.py +7 -0
- invokeai-6.14.2/invokeai/app/services/object_serializer/object_serializer_common.py +12 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/object_serializer/object_serializer_disk.py +21 -2
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/invocation_context.py +20 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_24.py +9 -1
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/urls/urls_default.py +4 -1
- invokeai-6.14.2/invokeai/app/util/path_safety.py +89 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/ssrf.py +9 -6
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux2/sampling_utils.py +113 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ideogram4/quantized_loading.py +5 -5
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/krea2/attention.py +83 -13
- invokeai-6.14.2/invokeai/backend/krea2/style_reference.py +462 -0
- invokeai-6.14.2/invokeai/backend/krea2/style_reference_extension.py +186 -0
- invokeai-6.14.2/invokeai/backend/krea2/style_reference_rf.py +56 -0
- invokeai-6.14.2/invokeai/backend/krea2/text_encoding.py +126 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/mistral_encoder.py +5 -1
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/pid_decoder.py +13 -8
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/qwen3_encoder.py +117 -57
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/model_cache.py +75 -2
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/anima.py +8 -11
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/flux.py +25 -22
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/gemma2_encoder.py +2 -2
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/ideogram4.py +9 -8
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/krea2.py +10 -19
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/mistral_encoder.py +17 -7
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/qwen_image.py +8 -7
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/vae.py +3 -2
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/z_image.py +25 -14
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/starter_models.py +0 -9
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/util/lora_metadata_extractor.py +8 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/decode.py +7 -9
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/quantization/gguf/ggml_tensor.py +7 -1
- invokeai-6.14.2/invokeai/backend/quantization/gguf/loaders.py +121 -0
- invokeai-6.14.2/invokeai/backend/quantization/sdnq/detection.py +93 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/quantization/sdnq/loaders.py +10 -8
- invokeai-6.14.2/invokeai/backend/util/state_dict_loading.py +145 -0
- invokeai-6.14.2/invokeai/frontend/web/dist/assets/App-DvlZKGz7.js +157 -0
- invokeai-6.14.2/invokeai/frontend/web/dist/assets/index-BuK6cFYB.js +444 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/index.html +1 -1
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/en.json +17 -5
- invokeai-6.14.2/invokeai/version/invokeai_version.py +1 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/pyproject.toml +1 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_config.py +22 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_object_serializer_disk.py +81 -1
- invokeai-6.14.1/invokeai/app/invocations/qwen_image_text_encoder.py +0 -325
- invokeai-6.14.1/invokeai/app/services/object_serializer/object_serializer_common.py +0 -5
- invokeai-6.14.1/invokeai/backend/quantization/gguf/loaders.py +0 -57
- invokeai-6.14.1/invokeai/backend/quantization/sdnq/detection.py +0 -62
- invokeai-6.14.1/invokeai/frontend/web/dist/assets/App-CKkzUo1u.js +0 -157
- invokeai-6.14.1/invokeai/frontend/web/dist/assets/index-BRHi9LIu.js +0 -444
- invokeai-6.14.1/invokeai/version/invokeai_version.py +0 -1
- {invokeai-6.14.1 → invokeai-6.14.2}/InvokeAI.egg-info/dependency_links.txt +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/InvokeAI.egg-info/entry_points.txt +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/InvokeAI.egg-info/top_level.txt +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/LICENSE +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/LICENSE-HiDiffusion.txt +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/LICENSE-PiD.txt +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/LICENSE-SD1+SD2.txt +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/LICENSE-SDXL.txt +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/README.md +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/auth_dependencies.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/dependencies.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/extract_metadata_from_image.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/no_cache_staticfiles.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/_access.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/app_info.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/auth.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/board_images.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/boards.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/client_state.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/custom_nodes.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/gallery.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/image_move_maintenance.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/image_moves.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/images.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/model_relationships.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/recall_parameters.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/session_queue.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/style_presets.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/system_prompts.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/virtual_boards.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/routers/workflows.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api/sockets.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/api_app.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/assets/images/caution.png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/anima_denoise.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/anima_image_to_latents.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/anima_latents_to_image.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/anima_lllite.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/anima_lora_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/anima_model_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/anima_text_encoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/baseinvocation.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/batch.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/blend_latents.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/call_saved_workflow.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/canny.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/canvas.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/cogview4_denoise.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/cogview4_image_to_latents.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/cogview4_latents_to_image.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/cogview4_model_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/cogview4_text_encoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/collections.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/color_map.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/compel.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/composition-nodes.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/constants.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/content_shuffle.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/controlnet.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/create_denoise_mask.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/create_gradient_mask.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/crop_latents.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/custom_nodes/README.md +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/cv.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/denoise_latents.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/depth_anything.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/dw_openpose.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/ernie_image_denoise.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/ernie_image_model_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/ernie_image_prompt_enhancer.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/ernie_image_text_encoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/ernie_image_vae_decode.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/external_image_generation.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/facetools.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux2_dev_lora_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux2_dev_model_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux2_dev_text_encoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux2_klein_lora_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux2_klein_model_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux2_klein_text_encoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux2_pid_decode.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux2_vae_decode.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux2_vae_encode.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux_control_lora_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux_controlnet.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux_denoise.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux_fill.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux_ip_adapter.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux_kontext.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux_lora_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux_model_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux_pid_decode.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux_redux.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux_text_encoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux_vae_decode.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/flux_vae_encode.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/gemma2_encoder_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/grounding_dino.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/hed.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/ideal_size.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/ideogram4_caption.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/ideogram4_denoise.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/ideogram4_latents_to_image.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/ideogram4_model_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/ideogram4_text_encoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/image.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/image_panels.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/image_to_latents.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/infill.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/ip_adapter.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/krea2_conditioning_rebalance.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/krea2_lora_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/krea2_model_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/krea2_seed_variance.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/latent_noise.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/latents_to_image.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/lineart.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/lineart_anime.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/llava_onevision_vllm.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/load_custom_nodes.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/logic.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/mask.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/math.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/mediapipe_face.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/metadata.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/metadata_linked.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/mlsd.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/model.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/noise.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/normal_bae.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/param_easing.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/pbr_maps.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/pid_decoder_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/pid_upscale.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/pidi.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/prompt.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/prompt_template.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/qwen_image_denoise.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/qwen_image_lora_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/qwen_image_model_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/qwen_image_pid_decode.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/resize_latents.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/scheduler.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/sd3_denoise.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/sd3_image_to_latents.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/sd3_latents_to_image.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/sd3_model_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/sd3_pid_decode.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/sd3_text_encoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/sdxl.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/sdxl_pid_decode.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/segment_anything.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/spandrel_image_to_image.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/strings.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/t2i_adapter.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/text_llm.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/tiled_multi_diffusion_denoise_latents.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/tiles.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/upscale.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/util.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/video_concat.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/video_frame_extract.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/video_frame_extract_range.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/wan_denoise.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/wan_ideal_dimensions.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/wan_image_to_latents.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/wan_latents_to_image.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/wan_latents_to_video.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/wan_lora_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/wan_model_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/wan_ref_image_encoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/wan_text_encoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/wan_video_denoise.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/workflow_return.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/z_image_control.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/z_image_denoise.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/z_image_image_to_latents.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/z_image_latents_to_image.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/z_image_lora_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/z_image_model_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/z_image_pid_decode.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/z_image_seed_variance_enhancer.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/invocations/z_image_text_encoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/run_app.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/app_settings/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/app_settings/app_settings_service.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/auth/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/auth/password_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/auth/token_service.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/board_image_records/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/board_image_records/board_image_records_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/board_image_records/board_image_records_sqlite.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/board_images/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/board_images/board_images_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/board_images/board_images_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/board_images/board_images_default.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/board_records/board_records_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/board_records/board_records_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/board_records/board_records_sqlite.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/board_video_records/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/board_video_records/board_video_records_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/board_video_records/board_video_records_sqlite.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/boards/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/boards/boards_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/boards/boards_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/boards/boards_default.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/bulk_download/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/bulk_download/bulk_download_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/bulk_download/bulk_download_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/bulk_download/bulk_download_default.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/client_state_persistence/client_state_persistence_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/client_state_persistence/client_state_persistence_sqlite.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/config/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/config/config_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/download/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/download/download_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/download/download_default.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/events/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/events/events_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/events/events_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/events/events_fastapievents.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/external_generation/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/external_generation/errors.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/external_generation/external_generation_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/external_generation/external_generation_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/external_generation/external_generation_default.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/external_generation/image_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/external_generation/providers/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/external_generation/providers/alibabacloud.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/external_generation/providers/gemini.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/external_generation/providers/openai.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/external_generation/providers/seedream.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/external_generation/startup.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/gallery/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/gallery/gallery_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/gallery/gallery_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/gallery/gallery_default.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/image_files/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/image_files/image_files_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/image_files/image_files_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/image_files/image_files_disk.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/image_files/image_subfolder_strategy.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/image_moves/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/image_moves/image_moves_default.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/image_records/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/image_records/image_records_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/image_records/image_records_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/image_records/image_records_sqlite.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/images/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/images/images_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/images/images_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/images/images_default.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/invocation_cache/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/invocation_cache/invocation_cache_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/invocation_cache/invocation_cache_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/invocation_cache/invocation_cache_memory.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/invocation_services.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/invocation_stats/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/invocation_stats/invocation_stats_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/invocation_stats/invocation_stats_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/invocation_stats/invocation_stats_default.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/invoker.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/item_storage/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/item_storage/item_storage_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/item_storage/item_storage_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/item_storage/item_storage_memory.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_images/model_images_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_images/model_images_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_install/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_install/model_install_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_install/model_install_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_load/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_load/model_load_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_load/model_load_default.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_manager/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_manager/model_manager_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_manager/model_manager_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_manager/model_manager_default.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_records/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_records/model_records_sql.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_relationship_records/model_relationship_records_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_relationship_records/model_relationship_records_sqlite.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_relationships/model_relationships_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_relationships/model_relationships_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/model_relationships/model_relationships_default.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/names/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/names/names_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/names/names_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/names/names_default.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/object_serializer/object_serializer_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/object_serializer/object_serializer_forward_cache.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/orphaned_models/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/orphaned_models/orphaned_models_service.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/session_processor/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/session_processor/session_processor_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/session_processor/session_processor_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/session_processor/session_processor_default.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/session_processor/workflow_call_batch.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/session_processor/workflow_call_runtime.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/session_queue/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/session_queue/session_queue_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/session_queue/session_queue_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/session_queue/session_queue_sqlite.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/graph.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/pagination.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite/sqlite_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite/sqlite_database.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite/sqlite_util.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migration_loader.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_1.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_11.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_12.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_13.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_14.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_15.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_16.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_17.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_18.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_19.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_20.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2026_07_01_add_session_queue_device.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2026_07_01_add_videos_tables.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2026_07_01_add_workflow_call_queue_metadata.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2026_07_03_round_robin_indexes.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2026_07_10_create_system_prompts.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2026_07_31_add_user_token_epoch.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2026_08_08_demote_system_user.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_21.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_22.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_23.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_25.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_26.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_27.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_28.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_29.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_3.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_30.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_31.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_32.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_33.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_4.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_5.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_6.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_7.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_8.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_9.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_impl.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/workflow_call_compatibility.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/workflow_call_compatibility_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/shared/workflow_graph_builder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/Anime.png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/Architectural Visualization.png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Character).png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Fantasy).png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Painterly).png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Sci-Fi).png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/Environment Art.png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/Illustration.png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/Interior Design (Visualization).png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/Line Art.png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Black and White).png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (General).png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Landscape).png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Portrait).png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Studio Lighting).png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/Product Rendering.png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/Sketch.png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/Vehicles.png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/default_style_preset_images/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/style_preset_images_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/style_preset_images_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_images/style_preset_images_disk.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_records/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_records/default_style_presets.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_records/style_preset_records_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_records/style_preset_records_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/style_preset_records/style_preset_records_sqlite.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/system_prompt_records/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/system_prompt_records/system_prompt_records_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/system_prompt_records/system_prompt_records_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/system_prompt_records/system_prompt_records_sqlite.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/urls/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/urls/urls_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/users/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/users/users_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/users/users_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/users/users_default.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/video_files/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/video_files/video_files_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/video_files/video_files_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/video_files/video_files_disk.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/video_records/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/video_records/video_records_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/video_records/video_records_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/video_records/video_records_sqlite.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/videos/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/videos/videos_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/videos/videos_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/videos/videos_default.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/virtual_boards/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/virtual_boards/virtual_boards_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/CogView4_TextToImage.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Extend Video - Wan 2.2 Lightning w_ Concept LoRAs.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Extend Video - Wan 2.2 Lightning.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Extend Video to Image - Wan 2.2 Lightning.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/FLUX Image to Image.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Flux Text to Image.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Image to Video - Wan 2.2 Lightning w_ Concept LoRAs.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Image to Video - Wan 2.2 Lightning.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Image to Video - Wan 2.2 TI2V-5B (Low Quality).json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Interpolate 2 Images to Video - Wan 2.2 Lightning.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SD1.5.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SDXL.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Prompt from File.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/SD3.5 Text to Image.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SD1.5.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SDXL.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Text to Image with LoRA.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Text to Video - Wan 2.2 Lightning w_ Concept LoRAs.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Text to Video - Wan 2.2 Lightning.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Text to Video - Wan 2.2 TI2V-5B (Low Quality).json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Tiled Upscaling (Beta).json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Wan 2.2 Image to Image.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/default_workflows/Wan 2.2 Text to Image.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/workflow_records_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/workflow_records_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_records/workflow_records_sqlite.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_thumbnails/workflow_thumbnails_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_thumbnails/workflow_thumbnails_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/services/workflow_thumbnails/workflow_thumbnails_disk.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/shared/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/shared/models.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/controlnet_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/custom_openapi.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/dynamicprompts.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/metaenum.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/misc.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/model_exclude_null.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/profiler.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/startup_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/step_callback.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/suppress_output.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/t5_model_identifier.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/thumbnails.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/ti_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/torch_cuda_allocator.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/user_management.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/video_decode_worker.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/video_encoding.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/app/util/video_thumbnails.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/assets/fonts/inter/Inter-Regular.ttf +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/anima/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/anima/anima_transformer.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/anima/anima_transformer_patch.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/anima/conditioning_data.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/anima/control_net_lllite.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/anima/regional_prompting.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/anima/scheduler_driver.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ernie_image/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ernie_image/denoise.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ernie_image/sampling_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/controlnet/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/controlnet/controlnet_flux_output.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/controlnet/instantx_controlnet_flux.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/controlnet/state_dict_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/controlnet/xlabs_controlnet_flux.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/controlnet/zero_module.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/custom_block_processor.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/denoise.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/dype/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/dype/base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/dype/embed.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/dype/presets.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/dype/rope.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/extensions/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/extensions/base_controlnet_extension.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/extensions/dype_extension.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/extensions/instantx_controlnet_extension.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/extensions/kontext_extension.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/extensions/regional_prompting_extension.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/extensions/xlabs_controlnet_extension.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/extensions/xlabs_ip_adapter_extension.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/flux_state_dict_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/ip_adapter/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/ip_adapter/ip_double_stream_block_processor.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/ip_adapter/state_dict_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/ip_adapter/xlabs_ip_adapter_flux.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/math.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/model.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/modules/autoencoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/modules/conditioner.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/modules/layers.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/redux/flux_redux_model.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/redux/flux_redux_state_dict_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/sampling_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/schedulers.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/text_conditioning.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux/util.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux2/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux2/denoise.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux2/extensions/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux2/extensions/regional_prompting_extension.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux2/ref_image_extension.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/flux2/text_conditioning.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/hidiffusion/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/hidiffusion/hidiffusion.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/hidiffusion/sd_module_key/sd15_module_key.txt +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/hidiffusion/sd_module_key/sdxl_module_key.txt +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/hidiffusion/utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ideogram4/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ideogram4/autoencoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ideogram4/caption.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ideogram4/constants.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ideogram4/denoise.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ideogram4/latent_norm.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ideogram4/modeling_ideogram4.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ideogram4/sampler_configs.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ideogram4/sampling_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ideogram4/scheduler.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ideogram4/text_encoding.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ideogram4/transformer_pair.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/assets/CIELab_to_UPLab.icc +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/basicsr/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/basicsr/arch_util.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/basicsr/rrdbnet_arch.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/canny.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/color_conversion.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/composition.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/content_shuffle.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/controlnet_processor.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/depth_anything/depth_anything_pipeline.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/dw_openpose/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/dw_openpose/onnxdet.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/dw_openpose/onnxpose.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/dw_openpose/utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/grounding_dino/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/grounding_dino/detection_result.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/grounding_dino/grounding_dino_pipeline.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/hed.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/imwatermark/vendor.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/infill_methods/cv2_inpaint.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/infill_methods/lama.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/infill_methods/mosaic.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/infill_methods/patchmatch.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/infill_methods/tile.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/invisible_watermark.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/lineart.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/lineart_anime.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/mediapipe_face/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/mediapipe_face/mediapipe_face_common.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/mlsd/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/mlsd/models/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/mlsd/models/mbv2_mlsd_large.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/mlsd/models/mbv2_mlsd_tiny.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/mlsd/utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/NNET.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/baseline.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/decoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/caffe2_benchmark.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/caffe2_validate.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/activations.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/activations_jit.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/activations_me.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/config.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/conv2d_layers.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/efficientnet_builder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/gen_efficientnet.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/helpers.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/mobilenetv3.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/model_factory.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/version.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/hubconf.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_export.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_optimize.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_to_caffe.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_validate.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/setup.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/validate.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/encoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/normal_bae/nets/submodules/submodules.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/pbr_maps/architecture/block.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/pbr_maps/architecture/pbr_rrdb_net.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/pbr_maps/pbr_maps.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/pbr_maps/utils/image_ops.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/pidi/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/pidi/model.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/pngwriter.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/realesrgan/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/realesrgan/realesrgan.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/safety_checker.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/segment_anything/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/segment_anything/mask_refinement.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/segment_anything/segment_anything_2_pipeline.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/segment_anything/segment_anything_pipeline.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/segment_anything/shared.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/image_util/util.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ip_adapter/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ip_adapter/ip_adapter.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ip_adapter/ip_attention_weights.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/ip_adapter/resampler.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/krea2/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/krea2/regional_prompting.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/krea2/sampling_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/krea2/vae_compat.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/llava_onevision_pipeline.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_hash/hash_validator.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_hash/model_hash.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/clip_embed.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/clip_vision.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/controlnet.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/external_api.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/factory.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/flux2_variant.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/flux_redux.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/gemma2_encoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/identification_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/ip_adapter.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/llava_onevision.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/lora.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/main.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/qwen3_vl_encoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/qwen_vl_encoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/siglip.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/spandrel.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/t2i_adapter.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/t5_encoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/text_llm.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/textual_inversion.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/unknown.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/vae.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/configs/wan_t5_encoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/load_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/load_default.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/memory_snapshot.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/cache_record.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/cache_stats.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/cached_model/cached_model_only_full_load.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/cached_model/cached_model_with_partial_load.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/dev_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/ram_budget.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/shared_cpu_weights.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/cast_to_device.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_conv1d.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_conv2d.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_diffusers_rms_norm.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_embedding.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_flux_rms_norm.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_group_norm.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_invoke_linear_8_bit_lt.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_invoke_linear_nf4.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_layer_norm.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_linear.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_module_mixin.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/torch_module_autocast.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_cache/utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loader_registry.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/clip_vision.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/cogview4.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/comfyui_state_dict_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/controlnet.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/ernie_image.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/flux2_state_dict_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/ip_adapter.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/llava_onevision.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/lora.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/onnx.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/pid_decoder.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/sig_lip.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/spandrel_image_to_image.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/text_llm.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/textual_inversion.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_loaders/wan.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/model_util.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/load/optimizations.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/metadata/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/metadata/fetch/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/metadata/fetch/fetch_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/metadata/fetch/huggingface.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/metadata/metadata_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/model_on_disk.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/omi/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/omi/omi.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/omi/vendor/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/omi/vendor/convert/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/omi/vendor/convert/lora/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/omi/vendor/convert/lora/convert_clip.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/omi/vendor/convert/lora/convert_flux_lora.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/omi/vendor/convert/lora/convert_lora_util.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/omi/vendor/convert/lora/convert_sdxl_lora.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/omi/vendor/convert/lora/convert_t5.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/omi/vendor/model_spec/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/omi/vendor/model_spec/architecture.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/search.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/single_file_config_files.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/taxonomy.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/util/libc_util.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/util/model_util.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_manager/util/select_hf_files.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/model_patcher.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/onnx/onnx_runtime.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/layer_patcher.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/layers/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/layers/base_layer_patch.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/layers/dora_layer.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/layers/flux_control_lora_layer.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/layers/full_layer.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/layers/ia3_layer.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/layers/loha_layer.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/layers/lokr_layer.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/layers/lora_layer.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/layers/lora_layer_base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/layers/merged_layer_patch.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/layers/norm_layer.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/layers/param_shape_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/layers/set_parameter_layer.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/layers/utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/anima_lora_constants.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/anima_lora_conversion_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/flux_aitoolkit_lora_conversion_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/flux_bfl_peft_lora_conversion_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/flux_control_lora_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/flux_diffusers_lora_conversion_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/flux_kohya_lora_conversion_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/flux_lora_constants.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/flux_onetrainer_bfl_lora_conversion_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/flux_onetrainer_lora_conversion_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/flux_xlabs_lora_conversion_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/formats.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/kohya_key_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/krea2_lora_constants.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/krea2_lora_conversion_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/peft_adapter_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/qwen_image_lora_constants.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/qwen_image_lora_conversion_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/sd_lora_conversion_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/sdxl_lora_conversion_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/wan_lora_constants.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/wan_lora_conversion_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/z_image_lora_constants.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/lora_conversions/z_image_lora_conversion_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/model_patch_raw.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/patches/pad_with_zeros.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_ext/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_ext/imaginaire/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_ext/imaginaire/lazy_config/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_ext/imaginaire/lazy_config/file_io.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_ext/imaginaire/lazy_config/instantiate.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_ext/imaginaire/lazy_config/lazy.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_ext/imaginaire/lazy_config/registry.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_ext/imaginaire/model.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_ext/imaginaire/utils/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_ext/imaginaire/utils/count_params.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_ext/imaginaire/utils/device.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_ext/imaginaire/utils/distributed.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_ext/imaginaire/utils/log.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_ext/imaginaire/utils/misc.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_src/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_src/inference/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_src/inference/checkpoint_registry.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_src/inference/pipeline_registry.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_src/models/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_src/models/pid_distill_model.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_src/models/pid_model.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_src/models/pixeldit_model.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_src/modules/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_src/modules/conditioner.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_src/networks/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_src/networks/lq_projection_2d.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_src/networks/pid_net.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_src/networks/pixeldit_official.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_src/utils/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/_src/utils/context_parallel.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/pid/state_dict_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/quantization/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/quantization/bnb_llm_int8.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/quantization/bnb_nf4.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/quantization/gguf/utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/quantization/scripts/load_flux_model_bnb_llm_int8.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/quantization/scripts/load_flux_model_bnb_nf4.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/quantization/scripts/quantize_t5_xxl_bnb_llm_int8.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/quantization/sdnq/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/quantization/sdnq/sdnq_tensor.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/quantization/sdnq/utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/qwen3/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/qwen3/qwen3_tokenizer.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/qwen3/tokenizer/special_tokens_map.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/qwen3/tokenizer/tokenizer.json.gz +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/qwen3/tokenizer/tokenizer_config.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/raw_model.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/rectified_flow/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/rectified_flow/er_sde_scheduler.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/rectified_flow/rectified_flow_inpaint_extension.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/sig_lip/sig_lip_pipeline.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/spandrel_image_to_image_model.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/denoise_context.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/diffusers_pipeline.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/diffusion/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/diffusion/custom_atttention.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/diffusion/regional_ip_data.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/diffusion/regional_prompt_data.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/diffusion/unet_attention_patcher.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/diffusion_backend.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/extension_callback_type.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/extensions/base.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/extensions/controlnet.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/extensions/freeu.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/extensions/hidiffusion.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/extensions/inpaint.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/extensions/inpaint_model.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/extensions/lora.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/extensions/preview.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/extensions/rescale_cfg.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/extensions/seamless.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/extensions/t2i_adapter.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/extensions_manager.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/hidiffusion_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/multi_diffusion_pipeline.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/schedulers/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/schedulers/schedulers.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/stable_diffusion/vae_tiling.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/t5/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/t5/t5_tokenizer.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/t5/tokenizer/special_tokens_map.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/t5/tokenizer/tokenizer.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/t5/tokenizer/tokenizer_config.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/text_llm_pipeline.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/textual_inversion.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/tiles/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/tiles/tiles.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/tiles/utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/attention.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/build_line.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/calc_tensor_size.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/catch_sigint.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/device_pool.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/devices.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/fp8.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/gallery_maintenance.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/hotfixes.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/level_zero.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/logging.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/mask.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/original_weights_storage.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/prefix_logger_adapter.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/silence_warnings.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/test_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/util.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/util/vae_working_memory.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/wan/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/wan/extensions/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/wan/extensions/wan_ref_image_extension.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/wan/memory_optimization.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/wan/rocm_causal_conv3d.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/wan/sampling_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/wan/vae_decode.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/z_image/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/z_image/extensions/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/z_image/extensions/regional_prompting_extension.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/z_image/text_conditioning.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/z_image/z_image_control_adapter.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/z_image/z_image_control_transformer.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/z_image/z_image_controlnet_extension.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/z_image/z_image_patchify_utils.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/backend/z_image/z_image_transformer_patch.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/configs/controlnet/cldm_v15.yaml +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/configs/controlnet/cldm_v21.yaml +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/configs/stable-diffusion/sd_xl_base.yaml +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/configs/stable-diffusion/sd_xl_inpaint.yaml +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/configs/stable-diffusion/sd_xl_refiner.yaml +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/configs/stable-diffusion/v1-finetune.yaml +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/configs/stable-diffusion/v1-finetune_style.yaml +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/configs/stable-diffusion/v1-inference-v.yaml +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/configs/stable-diffusion/v1-inference.yaml +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/configs/stable-diffusion/v1-inpainting-inference.yaml +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/configs/stable-diffusion/v1-m1-finetune.yaml +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/configs/stable-diffusion/v2-inference-v.yaml +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/configs/stable-diffusion/v2-inference.yaml +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/configs/stable-diffusion/v2-inpainting-inference-v.yaml +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/configs/stable-diffusion/v2-inpainting-inference.yaml +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/configs/stable-diffusion/v2-midas-inference.yaml +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/cli/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/cli/arg_parser.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/install/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/install/import_images.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/App-tn1JZtBo.css +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/browser-ponyfill-BpMPqZAt.js +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/chunk-jRWAZmH_.js +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/denoising-strength-4mznP2tj.png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/commercial-license-bg.png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/denoising-strength.png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-alert-favicon.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-favicon.png +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-favicon.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-key-char-lrg.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-key-char-sml.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-lrg.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-sml.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-lrg.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-sml.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-lrg.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-sml.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-symbol-ylw-lrg.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-lrg.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-sml.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-tag-lrg.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-tag-sml.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-charcoal.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-white.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/images/mask.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/assets/worker-DrJIfe_t.js +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/ar.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/az.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/bg.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/de.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/en-GB.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/es.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/fi.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/fr.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/he.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/hu.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/it.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/ja.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/ko.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/mn.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/nl.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/pl.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/pt-BR.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/pt.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/ro.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/ru.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/sv.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/tr.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/uk.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/vi.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/zh-CN.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/dist/locales/zh-Hant.json +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/scripts/clean_translations.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/frontend/web/static/docs/invoke-favicon-docs.svg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/invocation_api/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/invokeai/version/__init__.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/setup.cfg +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_asyncio_shutdown.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_calibrate_wan_vae_working_memory.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_check_pins.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_dangerously_run_function_in_subprocess.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_docs_json_export.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_graph_execution_state.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_imports.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_invocation_cache_memory.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_item_storage_memory.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_model_hash.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_model_search.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_node_graph.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_nodes.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_path.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_profiler.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_session_queue.py +0 -0
- {invokeai-6.14.1 → invokeai-6.14.2}/tests/test_sqlite_migrator.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: InvokeAI
|
|
3
|
-
Version: 6.14.
|
|
3
|
+
Version: 6.14.2
|
|
4
4
|
Summary: A full-featured AI-assisted image generation environment designed for creatives and enthusiasts.
|
|
5
5
|
Author-email: Invoke <support@invoke.ai>
|
|
6
6
|
License: Apache License
|
|
@@ -247,6 +247,7 @@ Requires-Dist: dnspython
|
|
|
247
247
|
Requires-Dist: dynamicprompts
|
|
248
248
|
Requires-Dist: einops
|
|
249
249
|
Requires-Dist: email-validator>=2.0.0
|
|
250
|
+
Requires-Dist: fonttools[woff]
|
|
250
251
|
Requires-Dist: passlib[bcrypt]>=1.7.4
|
|
251
252
|
Requires-Dist: picklescan
|
|
252
253
|
Requires-Dist: pillow
|
|
@@ -124,6 +124,7 @@ invokeai/app/invocations/krea2_denoise.py
|
|
|
124
124
|
invokeai/app/invocations/krea2_lora_loader.py
|
|
125
125
|
invokeai/app/invocations/krea2_model_loader.py
|
|
126
126
|
invokeai/app/invocations/krea2_seed_variance.py
|
|
127
|
+
invokeai/app/invocations/krea2_style_reference.py
|
|
127
128
|
invokeai/app/invocations/krea2_text_encoder.py
|
|
128
129
|
invokeai/app/invocations/latent_noise.py
|
|
129
130
|
invokeai/app/invocations/latents_to_image.py
|
|
@@ -475,6 +476,7 @@ invokeai/app/util/dynamicprompts.py
|
|
|
475
476
|
invokeai/app/util/metaenum.py
|
|
476
477
|
invokeai/app/util/misc.py
|
|
477
478
|
invokeai/app/util/model_exclude_null.py
|
|
479
|
+
invokeai/app/util/path_safety.py
|
|
478
480
|
invokeai/app/util/profiler.py
|
|
479
481
|
invokeai/app/util/ssrf.py
|
|
480
482
|
invokeai/app/util/startup_utils.py
|
|
@@ -659,6 +661,10 @@ invokeai/backend/krea2/__init__.py
|
|
|
659
661
|
invokeai/backend/krea2/attention.py
|
|
660
662
|
invokeai/backend/krea2/regional_prompting.py
|
|
661
663
|
invokeai/backend/krea2/sampling_utils.py
|
|
664
|
+
invokeai/backend/krea2/style_reference.py
|
|
665
|
+
invokeai/backend/krea2/style_reference_extension.py
|
|
666
|
+
invokeai/backend/krea2/style_reference_rf.py
|
|
667
|
+
invokeai/backend/krea2/text_encoding.py
|
|
662
668
|
invokeai/backend/krea2/vae_compat.py
|
|
663
669
|
invokeai/backend/model_hash/hash_validator.py
|
|
664
670
|
invokeai/backend/model_hash/model_hash.py
|
|
@@ -933,6 +939,7 @@ invokeai/backend/util/mask.py
|
|
|
933
939
|
invokeai/backend/util/original_weights_storage.py
|
|
934
940
|
invokeai/backend/util/prefix_logger_adapter.py
|
|
935
941
|
invokeai/backend/util/silence_warnings.py
|
|
942
|
+
invokeai/backend/util/state_dict_loading.py
|
|
936
943
|
invokeai/backend/util/test_utils.py
|
|
937
944
|
invokeai/backend/util/util.py
|
|
938
945
|
invokeai/backend/util/vae_working_memory.py
|
|
@@ -975,12 +982,12 @@ invokeai/frontend/install/__init__.py
|
|
|
975
982
|
invokeai/frontend/install/import_images.py
|
|
976
983
|
invokeai/frontend/web/__init__.py
|
|
977
984
|
invokeai/frontend/web/dist/index.html
|
|
978
|
-
invokeai/frontend/web/dist/assets/App-
|
|
985
|
+
invokeai/frontend/web/dist/assets/App-DvlZKGz7.js
|
|
979
986
|
invokeai/frontend/web/dist/assets/App-tn1JZtBo.css
|
|
980
987
|
invokeai/frontend/web/dist/assets/browser-ponyfill-BpMPqZAt.js
|
|
981
988
|
invokeai/frontend/web/dist/assets/chunk-jRWAZmH_.js
|
|
982
989
|
invokeai/frontend/web/dist/assets/denoising-strength-4mznP2tj.png
|
|
983
|
-
invokeai/frontend/web/dist/assets/index-
|
|
990
|
+
invokeai/frontend/web/dist/assets/index-BuK6cFYB.js
|
|
984
991
|
invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2
|
|
985
992
|
invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2
|
|
986
993
|
invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: InvokeAI
|
|
3
|
-
Version: 6.14.
|
|
3
|
+
Version: 6.14.2
|
|
4
4
|
Summary: A full-featured AI-assisted image generation environment designed for creatives and enthusiasts.
|
|
5
5
|
Author-email: Invoke <support@invoke.ai>
|
|
6
6
|
License: Apache License
|
|
@@ -247,6 +247,7 @@ Requires-Dist: dnspython
|
|
|
247
247
|
Requires-Dist: dynamicprompts
|
|
248
248
|
Requires-Dist: einops
|
|
249
249
|
Requires-Dist: email-validator>=2.0.0
|
|
250
|
+
Requires-Dist: fonttools[woff]
|
|
250
251
|
Requires-Dist: passlib[bcrypt]>=1.7.4
|
|
251
252
|
Requires-Dist: picklescan
|
|
252
253
|
Requires-Dist: pillow
|
|
@@ -7,6 +7,7 @@ import io
|
|
|
7
7
|
import pathlib
|
|
8
8
|
import threading
|
|
9
9
|
import traceback
|
|
10
|
+
import unicodedata
|
|
10
11
|
from collections.abc import Generator
|
|
11
12
|
from copy import deepcopy
|
|
12
13
|
from enum import Enum
|
|
@@ -24,7 +25,10 @@ from typing_extensions import Annotated
|
|
|
24
25
|
|
|
25
26
|
from invokeai.app.api.auth_dependencies import AdminUserOrDefault, CurrentUserOrDefault
|
|
26
27
|
from invokeai.app.api.dependencies import ApiDependencies
|
|
27
|
-
from invokeai.app.services.model_images.model_images_common import
|
|
28
|
+
from invokeai.app.services.model_images.model_images_common import (
|
|
29
|
+
ModelImageFileDeleteException,
|
|
30
|
+
ModelImageFileNotFoundException,
|
|
31
|
+
)
|
|
28
32
|
from invokeai.app.services.model_install.model_install_common import ModelInstallJob
|
|
29
33
|
from invokeai.app.services.model_records import (
|
|
30
34
|
InvalidModelException,
|
|
@@ -34,6 +38,7 @@ from invokeai.app.services.model_records import (
|
|
|
34
38
|
)
|
|
35
39
|
from invokeai.app.services.orphaned_models import CONVERSION_SCRATCH_DIRNAME, OrphanedModelInfo
|
|
36
40
|
from invokeai.app.services.shared.sqlite.sqlite_common import SQLiteDirection
|
|
41
|
+
from invokeai.app.util.path_safety import is_plain_filename
|
|
37
42
|
from invokeai.app.util.suppress_output import SuppressOutput
|
|
38
43
|
from invokeai.backend.model_manager.configs.external_api import ExternalApiModelConfig
|
|
39
44
|
from invokeai.backend.model_manager.configs.factory import AnyModelConfig, ModelConfigFactory
|
|
@@ -77,6 +82,18 @@ _MODEL_KEY_CLAIM_LOCK = threading.Lock()
|
|
|
77
82
|
_CLAIMED_MODEL_KEYS: set[str] = set()
|
|
78
83
|
|
|
79
84
|
|
|
85
|
+
def _claim_token(key: str) -> str:
|
|
86
|
+
"""The form of a key recorded in `_CLAIMED_MODEL_KEYS`.
|
|
87
|
+
|
|
88
|
+
A model's cover image is stored as `<key>.webp`, and some filesystems map different strings to one file: the
|
|
89
|
+
macOS and Windows defaults are case-insensitive, and APFS also ignores Unicode normalization, so `\u00e9` and
|
|
90
|
+
`e\u0301` name the same entry. Claims use Unicode canonical caseless matching (NFD, casefold, NFD) so that such a
|
|
91
|
+
variant of a key cannot slip past a claim held on the key itself and touch that file. Two keys that are
|
|
92
|
+
distinct on disk but equal under this form would at worst serialize against each other.
|
|
93
|
+
"""
|
|
94
|
+
return unicodedata.normalize("NFD", unicodedata.normalize("NFD", key).casefold())
|
|
95
|
+
|
|
96
|
+
|
|
80
97
|
@contextlib.contextmanager
|
|
81
98
|
def _claim_model_key(key: str) -> Generator[None, None, None]:
|
|
82
99
|
"""Hold the exclusive claim on one model key, or raise 409 if another request holds it."""
|
|
@@ -87,20 +104,21 @@ def _claim_model_key(key: str) -> Generator[None, None, None]:
|
|
|
87
104
|
status_code=409,
|
|
88
105
|
detail="Another model operation is already in progress. Wait for it to finish and try again.",
|
|
89
106
|
)
|
|
107
|
+
token = _claim_token(key)
|
|
90
108
|
try:
|
|
91
|
-
if
|
|
109
|
+
if token in _CLAIMED_MODEL_KEYS:
|
|
92
110
|
raise HTTPException(
|
|
93
111
|
status_code=409,
|
|
94
112
|
detail=f"Another operation on model {key} is already in progress. Wait for it to finish and try again.",
|
|
95
113
|
)
|
|
96
|
-
_CLAIMED_MODEL_KEYS.add(
|
|
114
|
+
_CLAIMED_MODEL_KEYS.add(token)
|
|
97
115
|
finally:
|
|
98
116
|
_MODEL_KEY_CLAIM_LOCK.release()
|
|
99
117
|
try:
|
|
100
118
|
yield
|
|
101
119
|
finally:
|
|
102
120
|
with _MODEL_KEY_CLAIM_LOCK:
|
|
103
|
-
_CLAIMED_MODEL_KEYS.discard(
|
|
121
|
+
_CLAIMED_MODEL_KEYS.discard(token)
|
|
104
122
|
|
|
105
123
|
|
|
106
124
|
@contextlib.contextmanager
|
|
@@ -112,17 +130,18 @@ def _install_and_claim_model(
|
|
|
112
130
|
# request claims so a delete cannot observe the new record before its key is claimed.
|
|
113
131
|
with _MODEL_KEY_CLAIM_LOCK:
|
|
114
132
|
new_key = installer.install_path(model_path, config=config)
|
|
115
|
-
|
|
133
|
+
token = _claim_token(new_key)
|
|
134
|
+
if token in _CLAIMED_MODEL_KEYS:
|
|
116
135
|
raise HTTPException(
|
|
117
136
|
status_code=409,
|
|
118
137
|
detail=f"Another operation on model {new_key} is already in progress. Wait for it to finish and try again.",
|
|
119
138
|
)
|
|
120
|
-
_CLAIMED_MODEL_KEYS.add(
|
|
139
|
+
_CLAIMED_MODEL_KEYS.add(token)
|
|
121
140
|
try:
|
|
122
141
|
yield new_key
|
|
123
142
|
finally:
|
|
124
143
|
with _MODEL_KEY_CLAIM_LOCK:
|
|
125
|
-
_CLAIMED_MODEL_KEYS.discard(
|
|
144
|
+
_CLAIMED_MODEL_KEYS.discard(token)
|
|
126
145
|
|
|
127
146
|
|
|
128
147
|
# The HF token is process-global state backed by a file in the HF cache. Concurrent writers would
|
|
@@ -580,6 +599,13 @@ async def update_model_record(
|
|
|
580
599
|
current_admin: AdminUserOrDefault,
|
|
581
600
|
) -> AnyModelConfig:
|
|
582
601
|
"""Update a model's config."""
|
|
602
|
+
# The key identifies the row; it is not an editable field, and there is no UI to change one. The edit form
|
|
603
|
+
# does post the record back whole, so an unchanged echo is expected and accepted - but a *different* key is
|
|
604
|
+
# written into the stored config while the row id keeps the old one, which leaves a record that answers to a
|
|
605
|
+
# key nothing can look it up by: `replace_model` (and so reidentify) raises `UnknownModelException` forever
|
|
606
|
+
# after, and the UI caches the model under the new key so every later request for it 404s.
|
|
607
|
+
if "key" in changes.model_fields_set and changes.key != key:
|
|
608
|
+
raise HTTPException(status_code=422, detail="A model's key cannot be changed")
|
|
583
609
|
return await asyncio.to_thread(_update_model_record, key, changes)
|
|
584
610
|
|
|
585
611
|
|
|
@@ -643,6 +669,7 @@ def get_model_image(
|
|
|
643
669
|
"description": "The model image was updated successfully",
|
|
644
670
|
},
|
|
645
671
|
400: {"description": "Bad request"},
|
|
672
|
+
404: {"description": "The model could not be found"},
|
|
646
673
|
409: {"description": "Another operation on this model is already in progress"},
|
|
647
674
|
},
|
|
648
675
|
status_code=200,
|
|
@@ -660,6 +687,25 @@ async def update_model_image(
|
|
|
660
687
|
# A conversion moves this model's image to the replacement's key when it finishes, so claim
|
|
661
688
|
# the key before reading the upload and hold it until the image is saved.
|
|
662
689
|
with _claim_model_key(key):
|
|
690
|
+
# The image is stored in a file named after the key, so a key that names no model would have us write a
|
|
691
|
+
# stray file - and a key that is not a plain filename would have us write it outside the images folder.
|
|
692
|
+
# Resolving the record turns both into a 404 instead. It has to happen under the claim: the delete and
|
|
693
|
+
# convert routes claim the key too, so they cannot remove the record between this check and the save.
|
|
694
|
+
# (Removing an external provider's models in `app_info.py` does not take the claim, so that path can
|
|
695
|
+
# still leave an orphan image - which the image-delete route below can clean up.)
|
|
696
|
+
try:
|
|
697
|
+
ApiDependencies.invoker.services.model_manager.store.get_model(key)
|
|
698
|
+
except UnknownModelException as e:
|
|
699
|
+
raise HTTPException(status_code=404, detail=str(e))
|
|
700
|
+
|
|
701
|
+
# A record written before install requests had their keys validated can still carry a key that is not a
|
|
702
|
+
# plain filename. The storage service refuses to build a path from it; ask it now, so that is a 404
|
|
703
|
+
# rather than a save failure surfacing as a 500 after the upload has been read.
|
|
704
|
+
try:
|
|
705
|
+
model_images.get_path(key)
|
|
706
|
+
except ModelImageFileNotFoundException as e:
|
|
707
|
+
raise HTTPException(status_code=404, detail=str(e))
|
|
708
|
+
|
|
663
709
|
contents = await image.read()
|
|
664
710
|
try:
|
|
665
711
|
pil_image = await asyncio.to_thread(Image.open, io.BytesIO(contents))
|
|
@@ -847,13 +893,17 @@ def delete_model_image(
|
|
|
847
893
|
# Claimed for the same reason as the upload: a conversion carries this model's image over to
|
|
848
894
|
# the replacement's key, so a delete accepted meanwhile is undone by that copy.
|
|
849
895
|
with _claim_model_key(key):
|
|
896
|
+
# Unlike the upload, this does not require the model's record: deleting a model leaves its image
|
|
897
|
+
# behind, and this route is how that orphan gets cleaned up. The storage service rejects a key that
|
|
898
|
+
# is not a plain filename, and that - like a missing file - is a 404.
|
|
850
899
|
try:
|
|
851
900
|
model_images.delete(key)
|
|
852
901
|
logger.info(f"Deleted model image: {key}")
|
|
853
902
|
return
|
|
854
|
-
except
|
|
855
|
-
|
|
856
|
-
|
|
903
|
+
except ModelImageFileDeleteException as e:
|
|
904
|
+
if isinstance(e.__cause__, ModelImageFileNotFoundException):
|
|
905
|
+
raise HTTPException(status_code=404, detail=str(e.__cause__))
|
|
906
|
+
raise
|
|
857
907
|
|
|
858
908
|
|
|
859
909
|
@model_manager_router.post(
|
|
@@ -906,6 +956,12 @@ def install_model(
|
|
|
906
956
|
"""
|
|
907
957
|
logger = ApiDependencies.invoker.services.logger
|
|
908
958
|
|
|
959
|
+
# A caller may name the key it wants, and the key names the directory the model is moved into and the file its
|
|
960
|
+
# cover image is written to. Reject an unusable one here, where it is being chosen, rather than letting the
|
|
961
|
+
# install fail later at one of those joins. Existing records are not held to this - see `ModelRecordChanges.key`.
|
|
962
|
+
if config.key is not None and not is_plain_filename(config.key):
|
|
963
|
+
raise HTTPException(status_code=422, detail=f"Invalid model key {config.key!r}: it must be a plain filename")
|
|
964
|
+
|
|
909
965
|
try:
|
|
910
966
|
installer = ApiDependencies.invoker.services.model_manager.install
|
|
911
967
|
result: ModelInstallJob = installer.heuristic_import(
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
import logging
|
|
3
|
+
import re
|
|
3
4
|
import threading
|
|
4
5
|
from pathlib import Path
|
|
5
6
|
from typing import Optional, Union
|
|
7
|
+
from urllib.parse import quote
|
|
6
8
|
|
|
7
9
|
import torch
|
|
8
10
|
from dynamicprompts.generators import CombinatorialPromptGenerator, RandomPromptGenerator
|
|
9
11
|
from fastapi import Body, HTTPException
|
|
12
|
+
from fastapi.responses import FileResponse
|
|
10
13
|
from fastapi.routing import APIRouter
|
|
14
|
+
from fontTools.ttLib import TTFont
|
|
15
|
+
from PIL import ImageFont
|
|
11
16
|
from pydantic import BaseModel, Field
|
|
12
17
|
from pyparsing import ParseException
|
|
13
18
|
from transformers import AutoProcessor, AutoTokenizer, LlavaOnevisionForConditionalGeneration, LlavaOnevisionProcessor
|
|
@@ -29,6 +34,14 @@ from invokeai.backend.util.devices import TorchDevice
|
|
|
29
34
|
logger = logging.getLogger(__name__)
|
|
30
35
|
|
|
31
36
|
utilities_router = APIRouter(prefix="/v1/utilities", tags=["utilities"])
|
|
37
|
+
SUPPORTED_FONT_EXTENSIONS = {".ttf", ".otf", ".woff", ".woff2"}
|
|
38
|
+
FONT_MEDIA_TYPES = {
|
|
39
|
+
".ttf": "font/ttf",
|
|
40
|
+
".otf": "font/otf",
|
|
41
|
+
".woff": "font/woff",
|
|
42
|
+
".woff2": "font/woff2",
|
|
43
|
+
}
|
|
44
|
+
FONT_CACHE_CONTROL = "private, max-age=31536000, immutable"
|
|
32
45
|
|
|
33
46
|
# The underlying model loader is not thread-safe, so we serialize load_model calls.
|
|
34
47
|
_model_load_lock = threading.Lock()
|
|
@@ -39,6 +52,26 @@ class DynamicPromptsResponse(BaseModel):
|
|
|
39
52
|
error: Optional[str] = None
|
|
40
53
|
|
|
41
54
|
|
|
55
|
+
class UserFontFace(BaseModel):
|
|
56
|
+
path: str
|
|
57
|
+
url: str
|
|
58
|
+
weight: int
|
|
59
|
+
style: str
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
class UserFont(BaseModel):
|
|
63
|
+
id: str
|
|
64
|
+
family: str
|
|
65
|
+
label: str
|
|
66
|
+
path: str
|
|
67
|
+
url: str
|
|
68
|
+
faces: list[UserFontFace]
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
class UserFontsResponse(BaseModel):
|
|
72
|
+
fonts: list[UserFont]
|
|
73
|
+
|
|
74
|
+
|
|
42
75
|
@utilities_router.post(
|
|
43
76
|
"/dynamicprompts",
|
|
44
77
|
operation_id="parse_dynamicprompts",
|
|
@@ -81,6 +114,257 @@ def parse_dynamicprompts(
|
|
|
81
114
|
return DynamicPromptsResponse(prompts=prompts if prompts else [""], error=error)
|
|
82
115
|
|
|
83
116
|
|
|
117
|
+
def _get_fonts_dir() -> Path:
|
|
118
|
+
return ApiDependencies.invoker.services.configuration.fonts_path
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def _path_has_symlink_component(path: Path, boundary: Path) -> bool:
|
|
122
|
+
current = path
|
|
123
|
+
boundary = boundary.absolute()
|
|
124
|
+
try:
|
|
125
|
+
current.absolute().relative_to(boundary)
|
|
126
|
+
except ValueError:
|
|
127
|
+
return True
|
|
128
|
+
|
|
129
|
+
while True:
|
|
130
|
+
if current.is_symlink():
|
|
131
|
+
return True
|
|
132
|
+
if current == boundary:
|
|
133
|
+
return False
|
|
134
|
+
current = current.parent
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def _get_name_table_value(font: TTFont, name_ids: tuple[int, ...]) -> str | None:
|
|
138
|
+
if "name" not in font:
|
|
139
|
+
return None
|
|
140
|
+
|
|
141
|
+
def _sort_key(record: object) -> tuple[int, int]:
|
|
142
|
+
platform_id = getattr(record, "platformID", -1)
|
|
143
|
+
lang_id = getattr(record, "langID", -1)
|
|
144
|
+
if platform_id == 3 and lang_id in (0x0409, 0):
|
|
145
|
+
return (0, 0)
|
|
146
|
+
if platform_id == 3:
|
|
147
|
+
return (1, 0)
|
|
148
|
+
if platform_id == 0:
|
|
149
|
+
return (2, 0)
|
|
150
|
+
return (3, lang_id)
|
|
151
|
+
|
|
152
|
+
records = font["name"].names
|
|
153
|
+
for name_id in name_ids:
|
|
154
|
+
for record in sorted((record for record in records if record.nameID == name_id), key=_sort_key):
|
|
155
|
+
try:
|
|
156
|
+
value = record.toUnicode().strip()
|
|
157
|
+
except Exception:
|
|
158
|
+
continue
|
|
159
|
+
if value:
|
|
160
|
+
return value
|
|
161
|
+
return None
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
def _normalize_variant_text(value: str) -> str:
|
|
165
|
+
value = re.sub(r"(?<=[a-z])(?=[A-Z])", " ", value)
|
|
166
|
+
value = value.replace("_", " ").replace("-", " ")
|
|
167
|
+
value = re.sub(r"\s+", " ", value)
|
|
168
|
+
return value.strip().lower()
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def _infer_font_weight(style_name: str, file_stem: str, weight_class: int | None) -> int:
|
|
172
|
+
if isinstance(weight_class, int) and 1 <= weight_class <= 1000:
|
|
173
|
+
return weight_class
|
|
174
|
+
|
|
175
|
+
combined = _normalize_variant_text(f"{style_name} {file_stem}")
|
|
176
|
+
# Ordering matters: more specific keywords must be matched before "bold".
|
|
177
|
+
weight_keywords = [
|
|
178
|
+
(("thin", "hairline"), 100),
|
|
179
|
+
(("extra light", "ultra light", "extralight", "ultralight"), 200),
|
|
180
|
+
(("light",), 300),
|
|
181
|
+
(("normal", "regular", "roman", "book"), 400),
|
|
182
|
+
(("medium",), 500),
|
|
183
|
+
(("semi bold", "semibold", "demi bold", "demibold"), 600),
|
|
184
|
+
(("extra bold", "ultra bold", "extrabold", "ultrabold"), 800),
|
|
185
|
+
(("black", "heavy"), 900),
|
|
186
|
+
(("bold",), 700),
|
|
187
|
+
]
|
|
188
|
+
for keywords, weight in weight_keywords:
|
|
189
|
+
if any(keyword in combined for keyword in keywords):
|
|
190
|
+
return weight
|
|
191
|
+
|
|
192
|
+
return 400
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def _infer_font_style(style_name: str, file_stem: str, italic_flag: bool) -> str:
|
|
196
|
+
if italic_flag:
|
|
197
|
+
return "italic"
|
|
198
|
+
|
|
199
|
+
combined = _normalize_variant_text(f"{style_name} {file_stem}")
|
|
200
|
+
if "italic" in combined or "oblique" in combined:
|
|
201
|
+
return "italic"
|
|
202
|
+
|
|
203
|
+
return "normal"
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
def _get_font_metadata(font_file: Path) -> tuple[str, str, int, str] | None:
|
|
207
|
+
ttfont_error: Exception | None = None
|
|
208
|
+
try:
|
|
209
|
+
with TTFont(font_file.as_posix(), lazy=True) as font:
|
|
210
|
+
family_name = (_get_name_table_value(font, (16, 1)) or "").strip()
|
|
211
|
+
style_name = (_get_name_table_value(font, (17, 2)) or "").strip()
|
|
212
|
+
os2_table = font["OS/2"] if "OS/2" in font else None
|
|
213
|
+
head_table = font["head"] if "head" in font else None
|
|
214
|
+
post_table = font["post"] if "post" in font else None
|
|
215
|
+
weight_class = getattr(os2_table, "usWeightClass", None)
|
|
216
|
+
italic_flag = bool(getattr(os2_table, "fsSelection", 0) & 0x01) or bool(
|
|
217
|
+
getattr(head_table, "macStyle", 0) & 0x02
|
|
218
|
+
)
|
|
219
|
+
if post_table is not None:
|
|
220
|
+
italic_flag = italic_flag or bool(getattr(post_table, "italicAngle", 0))
|
|
221
|
+
if family_name:
|
|
222
|
+
return (
|
|
223
|
+
family_name,
|
|
224
|
+
family_name,
|
|
225
|
+
_infer_font_weight(style_name, font_file.stem, weight_class),
|
|
226
|
+
_infer_font_style(style_name, font_file.stem, italic_flag),
|
|
227
|
+
)
|
|
228
|
+
except Exception as e:
|
|
229
|
+
ttfont_error = e
|
|
230
|
+
|
|
231
|
+
try:
|
|
232
|
+
font = ImageFont.truetype(font_file.as_posix(), size=16)
|
|
233
|
+
family_name, style_name = font.getname()
|
|
234
|
+
family_name = family_name.strip()
|
|
235
|
+
style_name = style_name.strip()
|
|
236
|
+
if family_name:
|
|
237
|
+
return (
|
|
238
|
+
family_name,
|
|
239
|
+
family_name,
|
|
240
|
+
_infer_font_weight(style_name, font_file.stem, None),
|
|
241
|
+
_infer_font_style(style_name, font_file.stem, False),
|
|
242
|
+
)
|
|
243
|
+
except Exception as e:
|
|
244
|
+
logger.warning(
|
|
245
|
+
"Skipping font file %s: unable to read font metadata with fontTools or Pillow (%s, %s)",
|
|
246
|
+
font_file,
|
|
247
|
+
type(ttfont_error).__name__ if ttfont_error else "no-fontTools-error",
|
|
248
|
+
type(e).__name__,
|
|
249
|
+
exc_info=e,
|
|
250
|
+
)
|
|
251
|
+
return None
|
|
252
|
+
|
|
253
|
+
logger.warning("Skipping font file %s: missing font family metadata", font_file)
|
|
254
|
+
return None
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
def _resolve_font_request_path(font_path: str) -> Path:
|
|
258
|
+
fonts_dir = _get_fonts_dir()
|
|
259
|
+
if not fonts_dir.exists() or not fonts_dir.is_dir():
|
|
260
|
+
raise HTTPException(status_code=404, detail="Font file not found")
|
|
261
|
+
|
|
262
|
+
requested = (fonts_dir / font_path).absolute()
|
|
263
|
+
if _path_has_symlink_component(requested, fonts_dir):
|
|
264
|
+
raise HTTPException(status_code=400, detail="Invalid font path")
|
|
265
|
+
|
|
266
|
+
resolved_fonts_dir = fonts_dir.resolve()
|
|
267
|
+
resolved_requested = requested.resolve()
|
|
268
|
+
|
|
269
|
+
try:
|
|
270
|
+
resolved_requested.relative_to(resolved_fonts_dir)
|
|
271
|
+
except ValueError as e:
|
|
272
|
+
raise HTTPException(status_code=400, detail="Invalid font path") from e
|
|
273
|
+
|
|
274
|
+
return resolved_requested
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
@utilities_router.get(
|
|
278
|
+
"/fonts",
|
|
279
|
+
operation_id="list_user_fonts",
|
|
280
|
+
responses={200: {"model": UserFontsResponse}},
|
|
281
|
+
)
|
|
282
|
+
def list_user_fonts(_current_user: CurrentUserOrDefault) -> UserFontsResponse:
|
|
283
|
+
fonts_dir = _get_fonts_dir()
|
|
284
|
+
if not fonts_dir.exists() or not fonts_dir.is_dir() or fonts_dir.is_symlink():
|
|
285
|
+
if fonts_dir.is_symlink():
|
|
286
|
+
logger.warning("Skipping custom fonts directory %s: symlinks are not supported", fonts_dir)
|
|
287
|
+
return UserFontsResponse(fonts=[])
|
|
288
|
+
|
|
289
|
+
family_candidates: dict[str, list[tuple[Path, str, str, int, str]]] = {}
|
|
290
|
+
# key -> [(font_file, relative, family, weight, style)]
|
|
291
|
+
for font_file in sorted(fonts_dir.rglob("*")):
|
|
292
|
+
if _path_has_symlink_component(font_file.absolute(), fonts_dir):
|
|
293
|
+
logger.warning("Skipping font path %s: symlinks are not supported", font_file)
|
|
294
|
+
continue
|
|
295
|
+
if not font_file.is_file() or font_file.suffix.lower() not in SUPPORTED_FONT_EXTENSIONS:
|
|
296
|
+
continue
|
|
297
|
+
relative = font_file.relative_to(fonts_dir).as_posix()
|
|
298
|
+
metadata = _get_font_metadata(font_file)
|
|
299
|
+
if metadata is None:
|
|
300
|
+
continue
|
|
301
|
+
family, _label, weight, style = metadata
|
|
302
|
+
family_key = family.strip().lower()
|
|
303
|
+
family_candidates.setdefault(family_key, []).append((font_file, relative, family, weight, style))
|
|
304
|
+
|
|
305
|
+
def _candidate_score(weight: int, style: str, path: Path) -> tuple[int, int, int]:
|
|
306
|
+
"""Lower score is better. Prefer regular/normal faces, then shorter names."""
|
|
307
|
+
return (0 if style == "normal" else 1, abs(weight - 400), len(path.stem))
|
|
308
|
+
|
|
309
|
+
fonts: list[UserFont] = []
|
|
310
|
+
for family_key, candidates in sorted(family_candidates.items(), key=lambda kv: kv[0]):
|
|
311
|
+
_, selected_relative, selected_family, _, _ = min(candidates, key=lambda c: _candidate_score(c[3], c[4], c[0]))
|
|
312
|
+
faces_by_variant: dict[tuple[int, str], tuple[Path, str, str, int, str]] = {}
|
|
313
|
+
for candidate in candidates:
|
|
314
|
+
variant_key = (candidate[3], candidate[4])
|
|
315
|
+
current = faces_by_variant.get(variant_key)
|
|
316
|
+
if current is None or _candidate_score(candidate[3], candidate[4], candidate[0]) < _candidate_score(
|
|
317
|
+
current[3], current[4], current[0]
|
|
318
|
+
):
|
|
319
|
+
faces_by_variant[variant_key] = candidate
|
|
320
|
+
|
|
321
|
+
faces = [
|
|
322
|
+
UserFontFace(
|
|
323
|
+
path=relative,
|
|
324
|
+
url=f"api/v1/utilities/fonts/{quote(relative)}",
|
|
325
|
+
weight=weight,
|
|
326
|
+
style=style,
|
|
327
|
+
)
|
|
328
|
+
for (weight, style), (_, relative, _, _, _) in sorted(
|
|
329
|
+
faces_by_variant.items(), key=lambda item: (item[0][1] != "normal", abs(item[0][0] - 400), item[0][0])
|
|
330
|
+
)
|
|
331
|
+
]
|
|
332
|
+
|
|
333
|
+
fonts.append(
|
|
334
|
+
UserFont(
|
|
335
|
+
id=f"user:{family_key}",
|
|
336
|
+
family=selected_family,
|
|
337
|
+
label=selected_family,
|
|
338
|
+
path=selected_relative,
|
|
339
|
+
url=f"api/v1/utilities/fonts/{quote(selected_relative)}",
|
|
340
|
+
faces=faces,
|
|
341
|
+
)
|
|
342
|
+
)
|
|
343
|
+
|
|
344
|
+
return UserFontsResponse(fonts=fonts)
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
@utilities_router.get(
|
|
348
|
+
"/fonts/{font_path:path}",
|
|
349
|
+
operation_id="get_user_font_file",
|
|
350
|
+
)
|
|
351
|
+
def get_user_font_file(font_path: str, _current_user: CurrentUserOrDefault) -> FileResponse:
|
|
352
|
+
requested = _resolve_font_request_path(font_path)
|
|
353
|
+
if not requested.exists() or not requested.is_file():
|
|
354
|
+
raise HTTPException(status_code=404, detail="Font file not found")
|
|
355
|
+
|
|
356
|
+
if requested.suffix.lower() not in SUPPORTED_FONT_EXTENSIONS:
|
|
357
|
+
raise HTTPException(status_code=400, detail="Unsupported font format")
|
|
358
|
+
|
|
359
|
+
return FileResponse(
|
|
360
|
+
path=requested,
|
|
361
|
+
media_type=FONT_MEDIA_TYPES[requested.suffix.lower()],
|
|
362
|
+
filename=requested.name,
|
|
363
|
+
content_disposition_type="inline",
|
|
364
|
+
headers={"Cache-Control": FONT_CACHE_CONTROL},
|
|
365
|
+
)
|
|
366
|
+
|
|
367
|
+
|
|
84
368
|
# --- Expand Prompt ---
|
|
85
369
|
|
|
86
370
|
|
|
@@ -257,7 +541,7 @@ def _run_image_to_prompt(
|
|
|
257
541
|
with _model_load_lock:
|
|
258
542
|
loaded_model = model_manager.load.load_model(model_config, user_id=user_id)
|
|
259
543
|
|
|
260
|
-
# Load the image from InvokeAI's image store
|
|
544
|
+
# Load the image from InvokeAI's image store.
|
|
261
545
|
image = ApiDependencies.invoker.services.images.get_pil_image(image_name)
|
|
262
546
|
image = image.convert("RGB")
|
|
263
547
|
|
|
@@ -215,8 +215,12 @@ class _VideoUploadStreamParser:
|
|
|
215
215
|
self._header_value = bytearray()
|
|
216
216
|
self._headers: dict[bytes, bytes] = {}
|
|
217
217
|
self._part_name: Optional[bytes] = None
|
|
218
|
-
|
|
219
|
-
|
|
218
|
+
# A bytearray, not a list of per-callback chunks: the parser hands the metadata
|
|
219
|
+
# field over in whatever pieces the client sent it, and one `bytes` object per
|
|
220
|
+
# piece would let a client that dribbles the field in 2-byte pieces hold ~22x the
|
|
221
|
+
# size cap in memory. `len(self._metadata)` is the retained size, so the cap
|
|
222
|
+
# below bounds memory, not just payload.
|
|
223
|
+
self._metadata = bytearray()
|
|
220
224
|
self.filename: Optional[str] = None
|
|
221
225
|
self.content_type: Optional[str] = None
|
|
222
226
|
self.metadata: Optional[str] = None
|
|
@@ -247,8 +251,7 @@ class _VideoUploadStreamParser:
|
|
|
247
251
|
self._header_field = bytearray()
|
|
248
252
|
self._header_value = bytearray()
|
|
249
253
|
self._part_name = None
|
|
250
|
-
self.
|
|
251
|
-
self._metadata_size = 0
|
|
254
|
+
self._metadata = bytearray()
|
|
252
255
|
|
|
253
256
|
def _on_header_field(self, data: bytes, start: int, end: int) -> None:
|
|
254
257
|
self._header_field.extend(data[start:end])
|
|
@@ -288,25 +291,23 @@ class _VideoUploadStreamParser:
|
|
|
288
291
|
)
|
|
289
292
|
self._destination.write(chunk)
|
|
290
293
|
elif self._part_name == b"metadata":
|
|
291
|
-
self.
|
|
292
|
-
if self._metadata_size > MAX_UPLOAD_METADATA_SIZE:
|
|
294
|
+
if len(self._metadata) + len(chunk) > MAX_UPLOAD_METADATA_SIZE:
|
|
293
295
|
raise HTTPException(
|
|
294
296
|
status_code=413,
|
|
295
297
|
detail=f"Video metadata exceeds maximum size ({MAX_UPLOAD_METADATA_SIZE} bytes)",
|
|
296
298
|
)
|
|
297
|
-
self.
|
|
299
|
+
self._metadata.extend(chunk)
|
|
298
300
|
# Any other field is dropped rather than buffered: an unknown part must not be a
|
|
299
301
|
# way to make the server hold arbitrary bytes in memory.
|
|
300
302
|
|
|
301
303
|
def _on_part_end(self) -> None:
|
|
302
304
|
if self._part_name == b"metadata":
|
|
303
305
|
try:
|
|
304
|
-
self.metadata =
|
|
306
|
+
self.metadata = self._metadata.decode("utf-8")
|
|
305
307
|
except UnicodeDecodeError as error:
|
|
306
308
|
raise HTTPException(status_code=422, detail="Metadata must be UTF-8 encoded") from error
|
|
307
309
|
self._part_name = None
|
|
308
|
-
self.
|
|
309
|
-
self._metadata_size = 0
|
|
310
|
+
self._metadata = bytearray()
|
|
310
311
|
|
|
311
312
|
def _on_end(self) -> None:
|
|
312
313
|
self.saw_end = True
|