InvokeAI 6.13.7__tar.gz → 6.13.8__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.13.7 → invokeai-6.13.8}/InvokeAI.egg-info/PKG-INFO +1 -1
- {invokeai-6.13.7 → invokeai-6.13.8}/InvokeAI.egg-info/SOURCES.txt +1 -1
- {invokeai-6.13.7 → invokeai-6.13.8}/PKG-INFO +1 -1
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/routers/app_info.py +6 -2
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/sockets.py +29 -1
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api_app.py +0 -2
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/config/config_default.py +4 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/download/download_base.py +12 -1
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/download/download_default.py +69 -6
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_install/model_install_default.py +12 -3
- invokeai-6.13.8/invokeai/app/util/ssrf.py +361 -0
- invokeai-6.13.8/invokeai/version/invokeai_version.py +1 -0
- invokeai-6.13.7/invokeai/app/api/routers/download_queue.py +0 -138
- invokeai-6.13.7/invokeai/version/invokeai_version.py +0 -1
- {invokeai-6.13.7 → invokeai-6.13.8}/InvokeAI.egg-info/dependency_links.txt +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/InvokeAI.egg-info/entry_points.txt +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/InvokeAI.egg-info/requires.txt +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/InvokeAI.egg-info/top_level.txt +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/LICENSE +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/LICENSE-SD1+SD2.txt +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/LICENSE-SDXL.txt +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/README.md +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/auth_dependencies.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/dependencies.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/extract_metadata_from_image.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/no_cache_staticfiles.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/routers/_access.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/routers/auth.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/routers/board_images.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/routers/boards.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/routers/client_state.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/routers/custom_nodes.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/routers/images.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/routers/model_manager.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/routers/model_relationships.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/routers/recall_parameters.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/routers/session_queue.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/routers/style_presets.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/routers/utilities.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/routers/virtual_boards.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/api/routers/workflows.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/assets/images/caution.png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/anima_denoise.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/anima_image_to_latents.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/anima_latents_to_image.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/anima_lora_loader.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/anima_model_loader.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/anima_text_encoder.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/baseinvocation.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/batch.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/blend_latents.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/canny.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/canvas.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/cogview4_denoise.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/cogview4_image_to_latents.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/cogview4_latents_to_image.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/cogview4_model_loader.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/cogview4_text_encoder.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/collections.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/color_map.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/compel.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/composition-nodes.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/constants.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/content_shuffle.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/controlnet.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/create_denoise_mask.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/create_gradient_mask.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/crop_latents.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/custom_nodes/README.md +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/cv.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/denoise_latents.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/depth_anything.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/dw_openpose.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/external_image_generation.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/facetools.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/fields.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/flux2_denoise.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/flux2_klein_lora_loader.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/flux2_klein_model_loader.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/flux2_klein_text_encoder.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/flux2_vae_decode.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/flux2_vae_encode.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/flux_control_lora_loader.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/flux_controlnet.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/flux_denoise.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/flux_fill.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/flux_ip_adapter.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/flux_kontext.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/flux_lora_loader.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/flux_model_loader.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/flux_redux.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/flux_text_encoder.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/flux_vae_decode.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/flux_vae_encode.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/grounding_dino.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/hed.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/ideal_size.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/image.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/image_panels.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/image_to_latents.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/infill.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/ip_adapter.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/latent_noise.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/latents_to_image.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/lineart.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/lineart_anime.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/llava_onevision_vllm.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/load_custom_nodes.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/logic.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/mask.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/math.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/mediapipe_face.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/metadata.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/metadata_linked.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/mlsd.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/model.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/noise.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/normal_bae.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/param_easing.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/pbr_maps.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/pidi.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/primitives.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/prompt.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/prompt_template.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/qwen_image_denoise.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/qwen_image_image_to_latents.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/qwen_image_latents_to_image.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/qwen_image_lora_loader.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/qwen_image_model_loader.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/qwen_image_text_encoder.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/resize_latents.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/scheduler.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/sd3_denoise.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/sd3_image_to_latents.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/sd3_latents_to_image.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/sd3_model_loader.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/sd3_text_encoder.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/sdxl.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/segment_anything.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/spandrel_image_to_image.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/strings.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/t2i_adapter.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/text_llm.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/tiled_multi_diffusion_denoise_latents.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/tiles.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/upscale.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/util.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/z_image_control.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/z_image_denoise.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/z_image_image_to_latents.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/z_image_latents_to_image.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/z_image_lora_loader.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/z_image_model_loader.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/z_image_seed_variance_enhancer.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/invocations/z_image_text_encoder.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/run_app.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/app_settings/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/app_settings/app_settings_service.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/auth/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/auth/password_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/auth/token_service.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/board_image_records/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/board_image_records/board_image_records_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/board_image_records/board_image_records_sqlite.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/board_images/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/board_images/board_images_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/board_images/board_images_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/board_images/board_images_default.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/board_records/board_records_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/board_records/board_records_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/board_records/board_records_sqlite.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/boards/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/boards/boards_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/boards/boards_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/boards/boards_default.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/bulk_download/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/bulk_download/bulk_download_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/bulk_download/bulk_download_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/bulk_download/bulk_download_default.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/client_state_persistence/client_state_persistence_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/client_state_persistence/client_state_persistence_sqlite.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/config/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/config/config_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/download/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/events/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/events/events_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/events/events_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/events/events_fastapievents.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/external_generation/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/external_generation/errors.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/external_generation/external_generation_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/external_generation/external_generation_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/external_generation/external_generation_default.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/external_generation/image_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/external_generation/providers/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/external_generation/providers/alibabacloud.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/external_generation/providers/gemini.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/external_generation/providers/openai.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/external_generation/providers/seedream.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/external_generation/startup.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/image_files/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/image_files/image_files_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/image_files/image_files_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/image_files/image_files_disk.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/image_files/image_subfolder_strategy.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/image_records/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/image_records/image_records_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/image_records/image_records_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/image_records/image_records_sqlite.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/images/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/images/images_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/images/images_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/images/images_default.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/invocation_cache/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/invocation_cache/invocation_cache_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/invocation_cache/invocation_cache_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/invocation_cache/invocation_cache_memory.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/invocation_services.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/invocation_stats/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/invocation_stats/invocation_stats_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/invocation_stats/invocation_stats_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/invocation_stats/invocation_stats_default.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/invoker.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/item_storage/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/item_storage/item_storage_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/item_storage/item_storage_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/item_storage/item_storage_memory.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_images/model_images_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_images/model_images_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_images/model_images_default.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_install/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_install/model_install_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_install/model_install_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_load/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_load/model_load_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_load/model_load_default.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_manager/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_manager/model_manager_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_manager/model_manager_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_manager/model_manager_default.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_records/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_records/model_records_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_records/model_records_sql.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_relationship_records/model_relationship_records_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_relationship_records/model_relationship_records_sqlite.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_relationships/model_relationships_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_relationships/model_relationships_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_relationships/model_relationships_default.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/names/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/names/names_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/names/names_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/names/names_default.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/object_serializer/object_serializer_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/object_serializer/object_serializer_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/object_serializer/object_serializer_disk.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/object_serializer/object_serializer_forward_cache.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/orphaned_models/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/orphaned_models/orphaned_models_service.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/session_processor/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/session_processor/session_processor_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/session_processor/session_processor_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/session_processor/session_processor_default.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/session_queue/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/session_queue/session_queue_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/session_queue/session_queue_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/session_queue/session_queue_sqlite.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/graph.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/invocation_context.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/pagination.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite/sqlite_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite/sqlite_database.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite/sqlite_util.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_1.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_11.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_12.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_13.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_14.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_15.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_16.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_17.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_18.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_19.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_20.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_21.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_22.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_23.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_24.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_25.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_26.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_27.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_28.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_29.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_3.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_30.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_31.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_32.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_4.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_5.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_6.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_7.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_8.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_9.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_impl.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/Anime.png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/Architectural Visualization.png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Character).png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Fantasy).png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Painterly).png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Sci-Fi).png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/Environment Art.png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/Illustration.png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/Interior Design (Visualization).png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/Line Art.png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Black and White).png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (General).png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Landscape).png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Portrait).png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Studio Lighting).png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/Product Rendering.png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/Sketch.png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/Vehicles.png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/default_style_preset_images/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/style_preset_images_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/style_preset_images_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_images/style_preset_images_disk.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_records/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_records/default_style_presets.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_records/style_preset_records_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_records/style_preset_records_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/style_preset_records/style_preset_records_sqlite.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/urls/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/urls/urls_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/urls/urls_default.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/users/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/users/users_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/users/users_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/users/users_default.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/virtual_boards/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/virtual_boards/virtual_boards_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_records/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_records/default_workflows/CogView4_TextToImage.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_records/default_workflows/FLUX Image to Image.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_records/default_workflows/Flux Text to Image.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SD1.5.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SDXL.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_records/default_workflows/Prompt from File.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_records/default_workflows/SD3.5 Text to Image.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SD1.5.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SDXL.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_records/default_workflows/Text to Image with LoRA.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_records/default_workflows/Tiled Upscaling (Beta).json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_records/workflow_records_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_records/workflow_records_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_records/workflow_records_sqlite.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_thumbnails/workflow_thumbnails_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_thumbnails/workflow_thumbnails_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/workflow_thumbnails/workflow_thumbnails_disk.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/shared/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/shared/models.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/util/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/util/controlnet_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/util/custom_openapi.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/util/dynamicprompts.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/util/metaenum.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/util/misc.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/util/model_exclude_null.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/util/profiler.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/util/startup_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/util/step_callback.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/util/suppress_output.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/util/t5_model_identifier.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/util/thumbnails.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/util/ti_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/util/torch_cuda_allocator.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/util/user_management.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/assets/fonts/inter/Inter-Regular.ttf +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/anima/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/anima/anima_transformer.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/anima/anima_transformer_patch.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/anima/conditioning_data.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/anima/regional_prompting.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/anima/scheduler_driver.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/anima/t5_tokenizer.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/anima/tokenizer/special_tokens_map.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/anima/tokenizer/tokenizer.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/anima/tokenizer/tokenizer_config.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/controlnet/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/controlnet/controlnet_flux_output.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/controlnet/instantx_controlnet_flux.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/controlnet/state_dict_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/controlnet/xlabs_controlnet_flux.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/controlnet/zero_module.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/custom_block_processor.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/denoise.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/dype/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/dype/base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/dype/embed.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/dype/presets.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/dype/rope.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/extensions/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/extensions/base_controlnet_extension.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/extensions/dype_extension.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/extensions/instantx_controlnet_extension.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/extensions/kontext_extension.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/extensions/regional_prompting_extension.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/extensions/xlabs_controlnet_extension.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/extensions/xlabs_ip_adapter_extension.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/flux_state_dict_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/ip_adapter/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/ip_adapter/ip_double_stream_block_processor.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/ip_adapter/state_dict_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/ip_adapter/xlabs_ip_adapter_flux.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/math.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/model.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/modules/autoencoder.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/modules/conditioner.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/modules/layers.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/redux/flux_redux_model.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/redux/flux_redux_state_dict_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/sampling_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/schedulers.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/text_conditioning.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux/util.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux2/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux2/denoise.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux2/ref_image_extension.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/flux2/sampling_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/assets/CIELab_to_UPLab.icc +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/basicsr/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/basicsr/arch_util.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/basicsr/rrdbnet_arch.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/canny.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/color_conversion.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/composition.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/content_shuffle.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/controlnet_processor.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/depth_anything/depth_anything_pipeline.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/dw_openpose/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/dw_openpose/onnxdet.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/dw_openpose/onnxpose.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/dw_openpose/utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/grounding_dino/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/grounding_dino/detection_result.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/grounding_dino/grounding_dino_pipeline.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/hed.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/imwatermark/vendor.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/infill_methods/cv2_inpaint.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/infill_methods/lama.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/infill_methods/mosaic.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/infill_methods/patchmatch.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/infill_methods/tile.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/invisible_watermark.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/lineart.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/lineart_anime.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/mediapipe_face/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/mediapipe_face/mediapipe_face_common.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/mlsd/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/mlsd/models/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/mlsd/models/mbv2_mlsd_large.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/mlsd/models/mbv2_mlsd_tiny.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/mlsd/utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/NNET.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/baseline.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/decoder.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/caffe2_benchmark.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/caffe2_validate.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/activations.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/activations_jit.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/activations_me.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/config.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/conv2d_layers.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/efficientnet_builder.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/gen_efficientnet.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/helpers.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/mobilenetv3.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/model_factory.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/version.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/hubconf.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_export.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_optimize.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_to_caffe.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_validate.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/setup.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/validate.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/encoder.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/normal_bae/nets/submodules/submodules.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/pbr_maps/architecture/block.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/pbr_maps/architecture/pbr_rrdb_net.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/pbr_maps/pbr_maps.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/pbr_maps/utils/image_ops.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/pidi/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/pidi/model.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/pngwriter.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/realesrgan/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/realesrgan/realesrgan.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/safety_checker.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/segment_anything/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/segment_anything/mask_refinement.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/segment_anything/segment_anything_2_pipeline.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/segment_anything/segment_anything_pipeline.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/segment_anything/shared.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/image_util/util.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/ip_adapter/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/ip_adapter/ip_adapter.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/ip_adapter/ip_attention_weights.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/ip_adapter/resampler.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/llava_onevision_pipeline.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_hash/hash_validator.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_hash/model_hash.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/clip_embed.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/clip_vision.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/controlnet.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/external_api.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/factory.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/flux_redux.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/identification_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/ip_adapter.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/llava_onevision.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/lora.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/main.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/qwen3_encoder.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/qwen_vl_encoder.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/siglip.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/spandrel.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/t2i_adapter.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/t5_encoder.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/text_llm.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/textual_inversion.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/unknown.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/configs/vae.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/load_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/load_default.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/memory_snapshot.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/cache_record.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/cache_stats.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/cached_model/cached_model_only_full_load.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/cached_model/cached_model_with_partial_load.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/dev_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/model_cache.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/cast_to_device.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_conv1d.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_conv2d.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_diffusers_rms_norm.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_embedding.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_flux_rms_norm.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_group_norm.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_invoke_linear_8_bit_lt.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_invoke_linear_nf4.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_layer_norm.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_linear.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_module_mixin.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/torch_module_autocast.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_cache/utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loader_registry.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/anima.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/clip_vision.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/cogview4.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/controlnet.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/flux.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/ip_adapter.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/llava_onevision.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/lora.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/onnx.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/qwen_image.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/sig_lip.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/spandrel_image_to_image.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/text_llm.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/textual_inversion.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/vae.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_loaders/z_image.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/model_util.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/load/optimizations.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/metadata/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/metadata/fetch/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/metadata/fetch/fetch_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/metadata/fetch/huggingface.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/metadata/metadata_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/model_on_disk.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/omi/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/omi/omi.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/omi/vendor/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/omi/vendor/convert/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/omi/vendor/convert/lora/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/omi/vendor/convert/lora/convert_clip.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/omi/vendor/convert/lora/convert_flux_lora.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/omi/vendor/convert/lora/convert_lora_util.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/omi/vendor/convert/lora/convert_sdxl_lora.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/omi/vendor/convert/lora/convert_t5.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/omi/vendor/model_spec/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/omi/vendor/model_spec/architecture.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/search.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/single_file_config_files.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/starter_models.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/taxonomy.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/util/libc_util.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/util/lora_metadata_extractor.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/util/model_util.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_manager/util/select_hf_files.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/model_patcher.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/onnx/onnx_runtime.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/layer_patcher.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/layers/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/layers/base_layer_patch.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/layers/dora_layer.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/layers/flux_control_lora_layer.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/layers/full_layer.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/layers/ia3_layer.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/layers/loha_layer.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/layers/lokr_layer.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/layers/lora_layer.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/layers/lora_layer_base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/layers/merged_layer_patch.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/layers/norm_layer.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/layers/param_shape_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/layers/set_parameter_layer.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/layers/utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/anima_lora_constants.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/anima_lora_conversion_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/flux_aitoolkit_lora_conversion_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/flux_bfl_peft_lora_conversion_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/flux_control_lora_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/flux_diffusers_lora_conversion_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/flux_kohya_lora_conversion_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/flux_lora_constants.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/flux_onetrainer_bfl_lora_conversion_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/flux_onetrainer_lora_conversion_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/flux_xlabs_lora_conversion_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/formats.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/kohya_key_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/peft_adapter_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/qwen_image_lora_constants.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/qwen_image_lora_conversion_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/sd_lora_conversion_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/sdxl_lora_conversion_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/z_image_lora_constants.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/lora_conversions/z_image_lora_conversion_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/model_patch_raw.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/patches/pad_with_zeros.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/quantization/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/quantization/bnb_llm_int8.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/quantization/bnb_nf4.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/quantization/gguf/ggml_tensor.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/quantization/gguf/loaders.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/quantization/gguf/utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/quantization/scripts/load_flux_model_bnb_llm_int8.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/quantization/scripts/load_flux_model_bnb_nf4.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/quantization/scripts/quantize_t5_xxl_bnb_llm_int8.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/raw_model.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/rectified_flow/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/rectified_flow/er_sde_scheduler.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/rectified_flow/rectified_flow_inpaint_extension.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/sig_lip/sig_lip_pipeline.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/spandrel_image_to_image_model.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/denoise_context.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/diffusers_pipeline.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/diffusion/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/diffusion/custom_atttention.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/diffusion/regional_ip_data.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/diffusion/regional_prompt_data.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/diffusion/unet_attention_patcher.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/diffusion_backend.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/extension_callback_type.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/extensions/base.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/extensions/controlnet.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/extensions/freeu.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/extensions/inpaint.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/extensions/inpaint_model.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/extensions/lora.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/extensions/preview.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/extensions/rescale_cfg.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/extensions/seamless.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/extensions/t2i_adapter.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/extensions_manager.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/multi_diffusion_pipeline.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/schedulers/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/schedulers/schedulers.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/stable_diffusion/vae_tiling.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/text_llm_pipeline.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/textual_inversion.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/tiles/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/tiles/tiles.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/tiles/utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/util/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/util/attention.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/util/build_line.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/util/calc_tensor_size.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/util/catch_sigint.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/util/devices.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/util/gallery_maintenance.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/util/hotfixes.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/util/logging.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/util/mask.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/util/original_weights_storage.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/util/prefix_logger_adapter.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/util/silence_warnings.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/util/test_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/util/util.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/util/vae_working_memory.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/z_image/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/z_image/extensions/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/z_image/extensions/regional_prompting_extension.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/z_image/text_conditioning.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/z_image/z_image_control_adapter.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/z_image/z_image_control_transformer.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/z_image/z_image_controlnet_extension.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/z_image/z_image_patchify_utils.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/backend/z_image/z_image_transformer_patch.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/configs/controlnet/cldm_v15.yaml +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/configs/controlnet/cldm_v21.yaml +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/configs/stable-diffusion/sd_xl_base.yaml +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/configs/stable-diffusion/sd_xl_inpaint.yaml +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/configs/stable-diffusion/sd_xl_refiner.yaml +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/configs/stable-diffusion/v1-finetune.yaml +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/configs/stable-diffusion/v1-finetune_style.yaml +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/configs/stable-diffusion/v1-inference-v.yaml +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/configs/stable-diffusion/v1-inference.yaml +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/configs/stable-diffusion/v1-inpainting-inference.yaml +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/configs/stable-diffusion/v1-m1-finetune.yaml +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/configs/stable-diffusion/v2-inference-v.yaml +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/configs/stable-diffusion/v2-inference.yaml +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/configs/stable-diffusion/v2-inpainting-inference-v.yaml +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/configs/stable-diffusion/v2-inpainting-inference.yaml +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/configs/stable-diffusion/v2-midas-inference.yaml +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/cli/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/cli/arg_parser.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/install/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/install/import_images.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/App-BpG1b7ec.js +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/App-tn1JZtBo.css +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/browser-ponyfill-BpMPqZAt.js +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/chunk-jRWAZmH_.js +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/denoising-strength-4mznP2tj.png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/commercial-license-bg.png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/denoising-strength.png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-alert-favicon.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-favicon.png +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-favicon.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-key-char-lrg.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-key-char-sml.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-lrg.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-sml.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-lrg.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-sml.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-lrg.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-sml.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-symbol-ylw-lrg.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-lrg.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-sml.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-tag-lrg.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-tag-sml.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-charcoal.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-white.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/images/mask.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/index-D-rswhgj.js +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/assets/worker-DrJIfe_t.js +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/index.html +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/ar.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/az.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/bg.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/de.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/en-GB.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/en.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/es.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/fi.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/fr.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/he.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/hu.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/it.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/ja.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/ko.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/mn.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/nl.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/pl.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/pt-BR.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/pt.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/ro.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/ru.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/sv.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/tr.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/uk.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/vi.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/zh-CN.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/dist/locales/zh-Hant.json +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/scripts/clean_translations.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/frontend/web/static/docs/invoke-favicon-docs.svg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/invocation_api/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/invokeai/version/__init__.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/pyproject.toml +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/setup.cfg +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/tests/test_asyncio_shutdown.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/tests/test_config.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/tests/test_dangerously_run_function_in_subprocess.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/tests/test_docs_json_export.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/tests/test_graph_execution_state.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/tests/test_imports.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/tests/test_invocation_cache_memory.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/tests/test_item_storage_memory.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/tests/test_model_hash.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/tests/test_model_search.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/tests/test_node_graph.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/tests/test_nodes.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/tests/test_object_serializer_disk.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/tests/test_path.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/tests/test_profiler.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/tests/test_session_queue.py +0 -0
- {invokeai-6.13.7 → invokeai-6.13.8}/tests/test_sqlite_migrator.py +0 -0
|
@@ -24,7 +24,6 @@ invokeai/app/api/routers/board_images.py
|
|
|
24
24
|
invokeai/app/api/routers/boards.py
|
|
25
25
|
invokeai/app/api/routers/client_state.py
|
|
26
26
|
invokeai/app/api/routers/custom_nodes.py
|
|
27
|
-
invokeai/app/api/routers/download_queue.py
|
|
28
27
|
invokeai/app/api/routers/images.py
|
|
29
28
|
invokeai/app/api/routers/model_manager.py
|
|
30
29
|
invokeai/app/api/routers/model_relationships.py
|
|
@@ -375,6 +374,7 @@ invokeai/app/util/metaenum.py
|
|
|
375
374
|
invokeai/app/util/misc.py
|
|
376
375
|
invokeai/app/util/model_exclude_null.py
|
|
377
376
|
invokeai/app/util/profiler.py
|
|
377
|
+
invokeai/app/util/ssrf.py
|
|
378
378
|
invokeai/app/util/startup_utils.py
|
|
379
379
|
invokeai/app/util/step_callback.py
|
|
380
380
|
invokeai/app/util/suppress_output.py
|
|
@@ -150,8 +150,9 @@ def _redact_config_secrets(config: InvokeAIAppConfig) -> InvokeAIAppConfig:
|
|
|
150
150
|
configured.
|
|
151
151
|
|
|
152
152
|
NOTE: coverage is by convention, not automatic. Only `*_api_key` fields listed in
|
|
153
|
-
EXTERNAL_PROVIDER_CONFIG_FIELDS plus `remote_api_tokens`
|
|
154
|
-
|
|
153
|
+
EXTERNAL_PROVIDER_CONFIG_FIELDS plus `remote_api_tokens` and credentials embedded in
|
|
154
|
+
`download_proxy` are masked. If you add a credential to InvokeAIAppConfig under any other
|
|
155
|
+
name, you must extend this function or it will be served verbatim.
|
|
155
156
|
"""
|
|
156
157
|
updates: dict[str, Any] = {}
|
|
157
158
|
|
|
@@ -166,6 +167,9 @@ def _redact_config_secrets(config: InvokeAIAppConfig) -> InvokeAIAppConfig:
|
|
|
166
167
|
pair.model_copy(update={"token": REDACTED_SECRET}) for pair in config.remote_api_tokens
|
|
167
168
|
]
|
|
168
169
|
|
|
170
|
+
if config.download_proxy and "@" in config.download_proxy:
|
|
171
|
+
updates["download_proxy"] = REDACTED_SECRET
|
|
172
|
+
|
|
169
173
|
return config.model_copy(update=updates) if updates else config
|
|
170
174
|
|
|
171
175
|
|
|
@@ -260,6 +260,17 @@ class SocketIO:
|
|
|
260
260
|
async def _handle_unsub_bulk_download(self, sid: str, data: Any) -> None:
|
|
261
261
|
await self._sio.leave_room(sid, BulkDownloadSubscriptionEvent(**data).bulk_download_id)
|
|
262
262
|
|
|
263
|
+
def _admin_sids(self) -> list[str]:
|
|
264
|
+
"""Sockets belonging to administrators, identified at connect time.
|
|
265
|
+
|
|
266
|
+
The "admin" room is only entered on queue subscription, so it cannot carry events
|
|
267
|
+
that are not tied to a queue: a socket that has connected but not yet sent
|
|
268
|
+
`subscribe_queue` is in no rooms at all and would miss them. `_socket_users` is
|
|
269
|
+
populated in `_handle_connect`, so addressing those sockets directly covers the
|
|
270
|
+
window between connect and subscribe.
|
|
271
|
+
"""
|
|
272
|
+
return [sid for sid, info in self._socket_users.items() if info.get("is_admin")]
|
|
273
|
+
|
|
263
274
|
async def _handle_queue_event(self, event: FastAPIEvent[QueueEventBase]):
|
|
264
275
|
"""Handle queue events with user isolation.
|
|
265
276
|
|
|
@@ -354,7 +365,24 @@ class SocketIO:
|
|
|
354
365
|
logger.error(f"Error handling queue event {event[0]}: {e}", exc_info=True)
|
|
355
366
|
|
|
356
367
|
async def _handle_model_event(self, event: FastAPIEvent[ModelEventBase | DownloadEventBase]) -> None:
|
|
357
|
-
|
|
368
|
+
event_name, event_data = event
|
|
369
|
+
|
|
370
|
+
# Model load events drive the loading-models spinner in every client, so they stay
|
|
371
|
+
# broadcast. Their `config` does carry `path` and `source`, but any authenticated user
|
|
372
|
+
# can already read those for every model from `list_model_records`, so broadcasting
|
|
373
|
+
# them discloses nothing new. (Upstream routes these to the triggering user's room
|
|
374
|
+
# instead, which needs a `user_id` on the event that this release line does not have.)
|
|
375
|
+
if isinstance(event_data, (ModelLoadStartedEvent, ModelLoadCompleteEvent)):
|
|
376
|
+
await self._sio.emit(event=event_name, data=event_data.model_dump(mode="json"))
|
|
377
|
+
return
|
|
378
|
+
|
|
379
|
+
# Model install and download events contain signed source URLs and server filesystem
|
|
380
|
+
# paths. They feed the admin-only model manager UI and must not be broadcast to users.
|
|
381
|
+
# Addressed to the admin sockets rather than the "admin" room because that room is only
|
|
382
|
+
# entered on queue subscription, and these events are not tied to a queue.
|
|
383
|
+
admin_sids = self._admin_sids()
|
|
384
|
+
if admin_sids:
|
|
385
|
+
await self._sio.emit(event=event_name, data=event_data.model_dump(mode="json"), to=admin_sids)
|
|
358
386
|
|
|
359
387
|
async def _handle_bulk_image_download_event(self, event: FastAPIEvent[BulkDownloadEventBase]) -> None:
|
|
360
388
|
event_name, event_data = event
|
|
@@ -22,7 +22,6 @@ from invokeai.app.api.routers import (
|
|
|
22
22
|
boards,
|
|
23
23
|
client_state,
|
|
24
24
|
custom_nodes,
|
|
25
|
-
download_queue,
|
|
26
25
|
images,
|
|
27
26
|
model_manager,
|
|
28
27
|
model_relationships,
|
|
@@ -175,7 +174,6 @@ app.add_middleware(GZipMiddleware, minimum_size=1000)
|
|
|
175
174
|
app.include_router(auth.auth_router, prefix="/api")
|
|
176
175
|
app.include_router(utilities.utilities_router, prefix="/api")
|
|
177
176
|
app.include_router(model_manager.model_manager_router, prefix="/api")
|
|
178
|
-
app.include_router(download_queue.download_queue_router, prefix="/api")
|
|
179
177
|
app.include_router(images.images_router, prefix="/api")
|
|
180
178
|
app.include_router(boards.boards_router, prefix="/api")
|
|
181
179
|
app.include_router(board_images.board_images_router, prefix="/api")
|
|
@@ -122,6 +122,8 @@ class InvokeAIAppConfig(BaseSettings):
|
|
|
122
122
|
hashing_algorithm: Model hashing algorthim for model installs. 'blake3_multi' is best for SSDs. 'blake3_single' is best for spinning disk HDDs. 'random' disables hashing, instead assigning a UUID to models. Useful when using a memory db to reduce model installation time, or if you don't care about storing stable hashes for models. Alternatively, any other hashlib algorithm is accepted, though these are not nearly as performant as blake3.<br>Valid values: `blake3_multi`, `blake3_single`, `random`, `md5`, `sha1`, `sha224`, `sha256`, `sha384`, `sha512`, `blake2b`, `blake2s`, `sha3_224`, `sha3_256`, `sha3_384`, `sha3_512`, `shake_128`, `shake_256`
|
|
123
123
|
remote_api_tokens: List of regular expression and token pairs used when downloading models from URLs. The download URL is tested against the regex, and if it matches, the token is provided in as a Bearer token.
|
|
124
124
|
scan_models_on_startup: Scan the models directory on startup, registering orphaned models. This is typically only used in conjunction with `use_memory_db` for testing purposes.
|
|
125
|
+
allow_private_download_urls: Allow the download queue to fetch from loopback, link-local and private-network addresses. Disabled by default so that a download URL cannot be used to reach services that are only reachable from the server. Enable this only if you install models from a mirror on your own network.
|
|
126
|
+
download_proxy: Optional HTTP proxy for model downloads. The proxy must enforce the public-address policy because proxy-side DNS cannot be checked by InvokeAI.
|
|
125
127
|
unsafe_disable_picklescan: UNSAFE. Disable the picklescan security check during model installation. Recommended only for development and testing purposes. This will allow arbitrary code execution during model installation, so should never be used in production.
|
|
126
128
|
allow_unknown_models: Allow installation of models that we are unable to identify. If enabled, models will be marked as `unknown` in the database, and will not have any metadata associated with them. If disabled, unknown models will be rejected during installation.
|
|
127
129
|
multiuser: Enable multiuser support. When disabled, the application runs in single-user mode using a default system account with administrator privileges. When enabled, requires user authentication and authorization.
|
|
@@ -226,6 +228,8 @@ class InvokeAIAppConfig(BaseSettings):
|
|
|
226
228
|
hashing_algorithm: HASHING_ALGORITHMS = Field(default="blake3_single", description="Model hashing algorthim for model installs. 'blake3_multi' is best for SSDs. 'blake3_single' is best for spinning disk HDDs. 'random' disables hashing, instead assigning a UUID to models. Useful when using a memory db to reduce model installation time, or if you don't care about storing stable hashes for models. Alternatively, any other hashlib algorithm is accepted, though these are not nearly as performant as blake3.")
|
|
227
229
|
remote_api_tokens: Optional[list[URLRegexTokenPair]] = Field(default=None, description="List of regular expression and token pairs used when downloading models from URLs. The download URL is tested against the regex, and if it matches, the token is provided in as a Bearer token.")
|
|
228
230
|
scan_models_on_startup: bool = Field(default=False, description="Scan the models directory on startup, registering orphaned models. This is typically only used in conjunction with `use_memory_db` for testing purposes.")
|
|
231
|
+
allow_private_download_urls: bool = Field(default=False, description="Allow the download queue to fetch from loopback, link-local and private-network addresses. Disabled by default so that a download URL cannot be used to reach services that are only reachable from the server. Enable this only if you install models from a mirror on your own network.")
|
|
232
|
+
download_proxy: Optional[str] = Field(default=None, description="Optional HTTP proxy for model downloads. The proxy must enforce the public-address policy because proxy-side DNS cannot be checked by InvokeAI.")
|
|
229
233
|
unsafe_disable_picklescan: bool = Field(default=False, description="UNSAFE. Disable the picklescan security check during model installation. Recommended only for development and testing purposes. This will allow arbitrary code execution during model installation, so should never be used in production.")
|
|
230
234
|
allow_unknown_models: bool = Field(default=True, description="Allow installation of models that we are unable to identify. If enabled, models will be marked as `unknown` in the database, and will not have any metadata associated with them. If disabled, unknown models will be rejected during installation.")
|
|
231
235
|
|
|
@@ -7,7 +7,7 @@ from functools import total_ordering
|
|
|
7
7
|
from pathlib import Path
|
|
8
8
|
from typing import Any, Callable, List, Optional, Set, Union
|
|
9
9
|
|
|
10
|
-
from pydantic import BaseModel, Field, PrivateAttr
|
|
10
|
+
from pydantic import BaseModel, Field, PrivateAttr, field_serializer
|
|
11
11
|
from pydantic.networks import AnyHttpUrl
|
|
12
12
|
|
|
13
13
|
from invokeai.backend.model_manager.metadata import RemoteModelFile
|
|
@@ -60,6 +60,17 @@ class DownloadJobBase(BaseModel):
|
|
|
60
60
|
error_type: Optional[str] = Field(default=None, description="Name of exception that caused an error")
|
|
61
61
|
error: Optional[str] = Field(default=None, description="Traceback of the exception that caused an error")
|
|
62
62
|
|
|
63
|
+
@field_serializer("dest", "download_path")
|
|
64
|
+
def _serialize_path(self, path: Optional[Path]) -> Optional[str]:
|
|
65
|
+
"""Emit paths with forward slashes so the wire format does not depend on the server's OS.
|
|
66
|
+
|
|
67
|
+
`str(WindowsPath("models/x.bin"))` is `models\\x.bin`, so without this a client that
|
|
68
|
+
submits a POSIX-style `dest` gets a different spelling back from a Windows host than
|
|
69
|
+
from a Linux one. The download events already normalise this way - see
|
|
70
|
+
`DownloadStartedEvent.build` in `events_common.py`.
|
|
71
|
+
"""
|
|
72
|
+
return path.as_posix() if path is not None else None
|
|
73
|
+
|
|
63
74
|
# internal flag
|
|
64
75
|
_cancelled: bool = PrivateAttr(default=False)
|
|
65
76
|
_paused: bool = PrivateAttr(default=False)
|
|
@@ -6,11 +6,11 @@ import re
|
|
|
6
6
|
import threading
|
|
7
7
|
import time
|
|
8
8
|
import traceback
|
|
9
|
-
from pathlib import Path
|
|
9
|
+
from pathlib import Path, PurePosixPath, PureWindowsPath
|
|
10
10
|
from queue import Empty, PriorityQueue
|
|
11
11
|
from shutil import disk_usage
|
|
12
12
|
from typing import TYPE_CHECKING, Any, Dict, List, Literal, Optional, Set
|
|
13
|
-
from urllib.parse import urlparse
|
|
13
|
+
from urllib.parse import urljoin, urlparse
|
|
14
14
|
|
|
15
15
|
import requests
|
|
16
16
|
from pydantic.networks import AnyHttpUrl
|
|
@@ -31,6 +31,7 @@ from invokeai.app.services.download.download_base import (
|
|
|
31
31
|
UnknownJobIDException,
|
|
32
32
|
)
|
|
33
33
|
from invokeai.app.util.misc import get_iso_timestamp
|
|
34
|
+
from invokeai.app.util.ssrf import build_guarded_session, validate_download_url, warn_if_proxied
|
|
34
35
|
from invokeai.backend.model_manager.metadata import RemoteModelFile
|
|
35
36
|
from invokeai.backend.util.logging import InvokeAILogger
|
|
36
37
|
|
|
@@ -71,7 +72,27 @@ class DownloadQueueService(DownloadQueueServiceBase):
|
|
|
71
72
|
self._lock = threading.Lock()
|
|
72
73
|
self._logger = InvokeAILogger.get_logger("DownloadQueueService")
|
|
73
74
|
self._event_bus = event_bus
|
|
74
|
-
|
|
75
|
+
# A caller-supplied session is left exactly as given (the tests inject mock
|
|
76
|
+
# transports). Sessions we build ourselves refuse to connect to a non-public
|
|
77
|
+
# address, which is the check that holds against DNS rebinding and against host
|
|
78
|
+
# spellings that `requests` decodes differently from us.
|
|
79
|
+
self._request_proxies: Optional[Dict[str, str]] = None
|
|
80
|
+
if requests_session is not None:
|
|
81
|
+
self._requests = requests_session
|
|
82
|
+
elif self._app_config.allow_private_download_urls:
|
|
83
|
+
# The operator has opted out of the address policy, so ambient proxy variables
|
|
84
|
+
# keep working here exactly as they always have — but an explicitly configured
|
|
85
|
+
# download_proxy must still be honored rather than silently ignored when both
|
|
86
|
+
# settings are present. It is applied per request (see the single call site in
|
|
87
|
+
# _do_download) because that is the only level that takes precedence over
|
|
88
|
+
# ambient *_PROXY variables in a plain Session.
|
|
89
|
+
self._requests = requests.Session()
|
|
90
|
+
if self._app_config.download_proxy:
|
|
91
|
+
proxy = self._app_config.download_proxy
|
|
92
|
+
self._request_proxies = {"http": proxy, "https": proxy}
|
|
93
|
+
else:
|
|
94
|
+
self._requests = build_guarded_session(proxy=self._app_config.download_proxy)
|
|
95
|
+
warn_if_proxied(self._requests, self._logger)
|
|
75
96
|
self._accept_download_requests = False
|
|
76
97
|
self._max_parallel_dl = max_parallel_dl
|
|
77
98
|
|
|
@@ -418,8 +439,18 @@ class DownloadQueueService(DownloadQueueServiceBase):
|
|
|
418
439
|
job.resume_message = "Partial file missing. Restarted download from the beginning."
|
|
419
440
|
|
|
420
441
|
# Make a streaming request. This will retrieve headers including
|
|
421
|
-
# content-length and content-disposition, but not fetch any content itself
|
|
422
|
-
|
|
442
|
+
# content-length and content-disposition, but not fetch any content itself.
|
|
443
|
+
# The URL is checked here rather than at submit time so that it is the address we
|
|
444
|
+
# are about to connect to that gets vetted, and the response hook re-checks every
|
|
445
|
+
# redirect hop — otherwise a public URL could bounce us onto a private address.
|
|
446
|
+
self._validate_url(url)
|
|
447
|
+
resp = self._requests.get(
|
|
448
|
+
str(url),
|
|
449
|
+
headers=header,
|
|
450
|
+
stream=True,
|
|
451
|
+
hooks={"response": self._reject_unsafe_redirect},
|
|
452
|
+
proxies=self._request_proxies,
|
|
453
|
+
)
|
|
423
454
|
job.final_url = str(resp.url) if resp.url else None
|
|
424
455
|
self._logger.debug(
|
|
425
456
|
"Resume response: "
|
|
@@ -467,6 +498,11 @@ class DownloadQueueService(DownloadQueueServiceBase):
|
|
|
467
498
|
if self._validate_filename(job.dest.as_posix(), remote_name):
|
|
468
499
|
file_name = remote_name
|
|
469
500
|
|
|
501
|
+
# The URL path is attacker-influenced too -- a final segment of ".." would
|
|
502
|
+
# otherwise put download_path one level above dest.
|
|
503
|
+
if not self._validate_filename(job.dest.as_posix(), file_name):
|
|
504
|
+
raise ValueError(f"Cannot derive a safe filename for {url} from '{file_name}'")
|
|
505
|
+
|
|
470
506
|
job.download_path = job.dest / file_name
|
|
471
507
|
|
|
472
508
|
else:
|
|
@@ -578,13 +614,40 @@ class DownloadQueueService(DownloadQueueServiceBase):
|
|
|
578
614
|
self._logger.debug(f"{job.source}: saved to {job.download_path} (bytes={job.bytes})")
|
|
579
615
|
in_progress_path.rename(job.download_path)
|
|
580
616
|
|
|
617
|
+
def _validate_url(self, url: str) -> None:
|
|
618
|
+
"""Refuse to fetch URLs that point at addresses only the server can reach."""
|
|
619
|
+
validate_download_url(str(url), allow_private_urls=self._app_config.allow_private_download_urls)
|
|
620
|
+
|
|
621
|
+
def _reject_unsafe_redirect(self, response: requests.Response, *args: Any, **kwargs: Any) -> requests.Response:
|
|
622
|
+
"""Response hook: vet each redirect target before `requests` follows it."""
|
|
623
|
+
if response.is_redirect or response.is_permanent_redirect:
|
|
624
|
+
location = response.headers.get("location")
|
|
625
|
+
if location:
|
|
626
|
+
try:
|
|
627
|
+
self._validate_url(urljoin(response.url, location))
|
|
628
|
+
except Exception:
|
|
629
|
+
response.close()
|
|
630
|
+
raise
|
|
631
|
+
return response
|
|
632
|
+
|
|
581
633
|
def _validate_filename(self, directory: str, filename: str) -> bool:
|
|
582
634
|
pc_name_max = get_pc_name_max(directory)
|
|
583
635
|
pc_path_max = get_pc_path_max(directory)
|
|
584
|
-
|
|
636
|
+
# The name must be a single path component. A remote server picks this value, so
|
|
637
|
+
# separators of either flavour, drive letters and '..' all have to be rejected --
|
|
638
|
+
# on Windows `Path(dir) / "..\\evil"` escapes `dir` even though it has no '/'.
|
|
639
|
+
if "/" in filename or "\\" in filename:
|
|
640
|
+
return False
|
|
641
|
+
if filename in ("", ".", ".."):
|
|
585
642
|
return False
|
|
586
643
|
if filename.startswith(".."):
|
|
587
644
|
return False
|
|
645
|
+
if PurePosixPath(filename).is_absolute() or PureWindowsPath(filename).is_absolute():
|
|
646
|
+
return False
|
|
647
|
+
# `WindowsPath("D:/dest") / "C:evil"` yields "C:evil" -- a drive-relative name
|
|
648
|
+
# replaces the destination entirely without ever looking absolute.
|
|
649
|
+
if PureWindowsPath(filename).drive:
|
|
650
|
+
return False
|
|
588
651
|
if len(filename) > pc_name_max:
|
|
589
652
|
return False
|
|
590
653
|
if len(os.path.join(directory, filename)) > pc_path_max:
|
{invokeai-6.13.7 → invokeai-6.13.8}/invokeai/app/services/model_install/model_install_default.py
RENAMED
|
@@ -355,7 +355,8 @@ class ModelInstallService(ModelInstallServiceBase):
|
|
|
355
355
|
self._logger.debug("calling stop_event.set()")
|
|
356
356
|
self._stop_event.set()
|
|
357
357
|
self._clear_pending_jobs()
|
|
358
|
-
self.
|
|
358
|
+
with self._lock:
|
|
359
|
+
self._download_cache.clear()
|
|
359
360
|
assert self._install_thread is not None
|
|
360
361
|
self._install_thread.join()
|
|
361
362
|
self._running = False
|
|
@@ -520,7 +521,14 @@ class ModelInstallService(ModelInstallServiceBase):
|
|
|
520
521
|
self._wait_for_restore_complete()
|
|
521
522
|
|
|
522
523
|
start = time.time()
|
|
523
|
-
while
|
|
524
|
+
while True:
|
|
525
|
+
# The completion callback removes a download from this cache while holding
|
|
526
|
+
# the same lock it uses to enqueue the install. Do not observe the cache
|
|
527
|
+
# between those two operations.
|
|
528
|
+
with self._lock:
|
|
529
|
+
downloads_pending = bool(self._download_cache)
|
|
530
|
+
if not downloads_pending:
|
|
531
|
+
break
|
|
524
532
|
if self._downloads_changed_event.wait(timeout=0.25): # in case we miss an event
|
|
525
533
|
self._downloads_changed_event.clear()
|
|
526
534
|
if timeout > 0 and time.time() - start > timeout:
|
|
@@ -1257,7 +1265,8 @@ class ModelInstallService(ModelInstallServiceBase):
|
|
|
1257
1265
|
part.final_url = meta.get("final_url") or part.final_url
|
|
1258
1266
|
if meta.get("download_path"):
|
|
1259
1267
|
part.download_path = Path(meta.get("download_path"))
|
|
1260
|
-
self.
|
|
1268
|
+
with self._lock:
|
|
1269
|
+
self._download_cache[multifile_job.id] = job
|
|
1261
1270
|
job._multifile_job = multifile_job
|
|
1262
1271
|
|
|
1263
1272
|
self._write_install_marker(job, status=InstallStatus.WAITING)
|