@atomic-chat/core 0.13.2 → 0.17.0
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.
- package/README.md +1 -1
- package/dist/backend/advisor/advisor.d.ts +8 -7
- package/dist/backend/advisor/advisor.js +17 -25
- package/dist/backend/advisor/advisor.js.map +1 -1
- package/dist/backend/catalog/index.d.ts +4 -2
- package/dist/backend/catalog/index.js +4 -2
- package/dist/backend/catalog/index.js.map +1 -1
- package/dist/backend/catalog/manifest.d.ts +5 -51
- package/dist/backend/catalog/manifest.js +5 -93
- package/dist/backend/catalog/manifest.js.map +1 -1
- package/dist/backend/catalog/upstream-releases-baseline.d.ts +2 -0
- package/dist/backend/catalog/upstream-releases-baseline.js +12 -0
- package/dist/backend/catalog/upstream-releases-baseline.js.map +1 -0
- package/dist/backend/catalog/upstream-releases-baseline.json +101 -0
- package/dist/backend/catalog/upstream-releases-catalog.d.ts +54 -0
- package/dist/backend/catalog/upstream-releases-catalog.js +148 -0
- package/dist/backend/catalog/upstream-releases-catalog.js.map +1 -0
- package/dist/backend/catalog/upstream-releases.d.ts +75 -0
- package/dist/backend/catalog/upstream-releases.js +155 -0
- package/dist/backend/catalog/upstream-releases.js.map +1 -0
- package/dist/backend/install/service.d.ts +7 -4
- package/dist/backend/install/service.js +4 -4
- package/dist/backend/install/service.js.map +1 -1
- package/dist/cli/commands/serve.js +10 -28
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/main.d.ts +1 -1
- package/dist/cli/main.js +0 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/client/control-client.d.ts +7 -19
- package/dist/client/control-client.js +9 -29
- package/dist/client/control-client.js.map +1 -1
- package/dist/cloud/registry.d.ts +14 -1
- package/dist/cloud/registry.js +73 -2
- package/dist/cloud/registry.js.map +1 -1
- package/dist/config/paths.d.ts +4 -3
- package/dist/config/paths.js +15 -14
- package/dist/config/paths.js.map +1 -1
- package/dist/contracts/diffusion.d.ts +45 -18
- package/dist/contracts/diffusion.js +1 -1
- package/dist/contracts/diffusion.js.map +1 -1
- package/dist/contracts/engines.d.ts +1 -1
- package/dist/contracts/engines.js +2 -0
- package/dist/contracts/engines.js.map +1 -1
- package/dist/contracts/errors.d.ts +1 -3
- package/dist/contracts/errors.js +16 -0
- package/dist/contracts/errors.js.map +1 -1
- package/dist/contracts/events.d.ts +11 -6
- package/dist/contracts/index.d.ts +1 -1
- package/dist/contracts/index.js +1 -1
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/media.d.ts +186 -0
- package/dist/contracts/media.js +55 -0
- package/dist/contracts/media.js.map +1 -0
- package/dist/contracts/session.d.ts +10 -1
- package/dist/contracts/session.js +10 -0
- package/dist/contracts/session.js.map +1 -1
- package/dist/contracts/settings.d.ts +36 -1
- package/dist/contracts/settings.js.map +1 -1
- package/dist/core/atomic-core.d.ts +7 -5
- package/dist/core/atomic-core.js +1 -0
- package/dist/core/atomic-core.js.map +1 -1
- package/dist/core/create.js +48 -58
- package/dist/core/create.js.map +1 -1
- package/dist/core/managed-engines.js +2 -0
- package/dist/core/managed-engines.js.map +1 -1
- package/dist/core/prism.d.ts +23 -6
- package/dist/core/prism.js +45 -0
- package/dist/core/prism.js.map +1 -1
- package/dist/core/public-server.js +3 -2
- package/dist/core/public-server.js.map +1 -1
- package/dist/core/types.d.ts +11 -0
- package/dist/core/types.js.map +1 -1
- package/dist/decision/process.d.ts +4 -0
- package/dist/decision/process.js +10 -1
- package/dist/decision/process.js.map +1 -1
- package/dist/diffusion/args.d.ts +3 -2
- package/dist/diffusion/args.js +21 -4
- package/dist/diffusion/args.js.map +1 -1
- package/dist/diffusion/compat.d.ts +1 -1
- package/dist/diffusion/compat.js +6 -2
- package/dist/diffusion/compat.js.map +1 -1
- package/dist/diffusion/gallery.d.ts +24 -3
- package/dist/diffusion/gallery.js +151 -21
- package/dist/diffusion/gallery.js.map +1 -1
- package/dist/diffusion/index.d.ts +3 -0
- package/dist/diffusion/index.js +3 -0
- package/dist/diffusion/index.js.map +1 -1
- package/dist/diffusion/jobs.d.ts +6 -1
- package/dist/diffusion/jobs.js +10 -1
- package/dist/diffusion/jobs.js.map +1 -1
- package/dist/diffusion/media-header.d.ts +22 -0
- package/dist/diffusion/media-header.js +149 -0
- package/dist/diffusion/media-header.js.map +1 -0
- package/dist/diffusion/parse.d.ts +3 -1
- package/dist/diffusion/parse.js +36 -0
- package/dist/diffusion/parse.js.map +1 -1
- package/dist/diffusion/recipe.d.ts +10 -1
- package/dist/diffusion/recipe.js +85 -21
- package/dist/diffusion/recipe.js.map +1 -1
- package/dist/diffusion/remote-job.d.ts +76 -0
- package/dist/diffusion/remote-job.js +643 -0
- package/dist/diffusion/remote-job.js.map +1 -0
- package/dist/diffusion/remote-store.d.ts +38 -0
- package/dist/diffusion/remote-store.js +91 -0
- package/dist/diffusion/remote-store.js.map +1 -0
- package/dist/diffusion/service.d.ts +9 -1
- package/dist/diffusion/service.js +49 -9
- package/dist/diffusion/service.js.map +1 -1
- package/dist/diffusion/state.d.ts +13 -1
- package/dist/diffusion/state.js +8 -0
- package/dist/diffusion/state.js.map +1 -1
- package/dist/diffusion/tracker.d.ts +6 -0
- package/dist/diffusion/tracker.js +11 -0
- package/dist/diffusion/tracker.js.map +1 -1
- package/dist/diffusion/validate.js +2 -2
- package/dist/diffusion/validate.js.map +1 -1
- package/dist/diffusion/video-gallery.d.ts +11 -4
- package/dist/diffusion/video-gallery.js +62 -25
- package/dist/diffusion/video-gallery.js.map +1 -1
- package/dist/diffusion/video-history.js +4 -1
- package/dist/diffusion/video-history.js.map +1 -1
- package/dist/diffusion/video-recipe.js +58 -25
- package/dist/diffusion/video-recipe.js.map +1 -1
- package/dist/diffusion/wiring.d.ts +3 -0
- package/dist/diffusion/wiring.js +1 -0
- package/dist/diffusion/wiring.js.map +1 -1
- package/dist/diffusion/workflow.d.ts +8 -2
- package/dist/diffusion/workflow.js +13 -5
- package/dist/diffusion/workflow.js.map +1 -1
- package/dist/downloads/downloader.d.ts +6 -1
- package/dist/downloads/downloader.js +12 -1
- package/dist/downloads/downloader.js.map +1 -1
- package/dist/embedding/process.d.ts +4 -0
- package/dist/embedding/process.js +10 -1
- package/dist/embedding/process.js.map +1 -1
- package/dist/media/adapters/a1111.d.ts +32 -0
- package/dist/media/adapters/a1111.js +207 -0
- package/dist/media/adapters/a1111.js.map +1 -0
- package/dist/media/adapters/aimlapi-videos.d.ts +34 -0
- package/dist/media/adapters/aimlapi-videos.js +172 -0
- package/dist/media/adapters/aimlapi-videos.js.map +1 -0
- package/dist/media/adapters/dashscope-image.d.ts +26 -0
- package/dist/media/adapters/dashscope-image.js +160 -0
- package/dist/media/adapters/dashscope-image.js.map +1 -0
- package/dist/media/adapters/dashscope-video.d.ts +47 -0
- package/dist/media/adapters/dashscope-video.js +251 -0
- package/dist/media/adapters/dashscope-video.js.map +1 -0
- package/dist/media/adapters/gemini-image.d.ts +27 -0
- package/dist/media/adapters/gemini-image.js +181 -0
- package/dist/media/adapters/gemini-image.js.map +1 -0
- package/dist/media/adapters/gemini-veo.d.ts +39 -0
- package/dist/media/adapters/gemini-veo.js +196 -0
- package/dist/media/adapters/gemini-veo.js.map +1 -0
- package/dist/media/adapters/hf-images.d.ts +85 -0
- package/dist/media/adapters/hf-images.js +439 -0
- package/dist/media/adapters/hf-images.js.map +1 -0
- package/dist/media/adapters/hf-videos.d.ts +44 -0
- package/dist/media/adapters/hf-videos.js +265 -0
- package/dist/media/adapters/hf-videos.js.map +1 -0
- package/dist/media/adapters/minimax-image.d.ts +26 -0
- package/dist/media/adapters/minimax-image.js +111 -0
- package/dist/media/adapters/minimax-image.js.map +1 -0
- package/dist/media/adapters/minimax-video-v2.d.ts +34 -0
- package/dist/media/adapters/minimax-video-v2.js +191 -0
- package/dist/media/adapters/minimax-video-v2.js.map +1 -0
- package/dist/media/adapters/minimax-video.d.ts +28 -0
- package/dist/media/adapters/minimax-video.js +155 -0
- package/dist/media/adapters/minimax-video.js.map +1 -0
- package/dist/media/adapters/mistral-agent-image.d.ts +33 -0
- package/dist/media/adapters/mistral-agent-image.js +108 -0
- package/dist/media/adapters/mistral-agent-image.js.map +1 -0
- package/dist/media/adapters/nvidia-genai.d.ts +28 -0
- package/dist/media/adapters/nvidia-genai.js +182 -0
- package/dist/media/adapters/nvidia-genai.js.map +1 -0
- package/dist/media/adapters/openai-images.d.ts +23 -0
- package/dist/media/adapters/openai-images.js +164 -0
- package/dist/media/adapters/openai-images.js.map +1 -0
- package/dist/media/adapters/openai-videos.d.ts +34 -0
- package/dist/media/adapters/openai-videos.js +175 -0
- package/dist/media/adapters/openai-videos.js.map +1 -0
- package/dist/media/adapters/openrouter-images.d.ts +25 -0
- package/dist/media/adapters/openrouter-images.js +161 -0
- package/dist/media/adapters/openrouter-images.js.map +1 -0
- package/dist/media/adapters/openrouter-videos.d.ts +43 -0
- package/dist/media/adapters/openrouter-videos.js +208 -0
- package/dist/media/adapters/openrouter-videos.js.map +1 -0
- package/dist/media/adapters/registry.d.ts +7 -0
- package/dist/media/adapters/registry.js +45 -0
- package/dist/media/adapters/registry.js.map +1 -0
- package/dist/media/adapters/types.d.ts +133 -0
- package/dist/media/adapters/types.js +15 -0
- package/dist/media/adapters/types.js.map +1 -0
- package/dist/media/adapters/xai-images.d.ts +19 -0
- package/dist/media/adapters/xai-images.js +83 -0
- package/dist/media/adapters/xai-images.js.map +1 -0
- package/dist/media/adapters/xai-videos.d.ts +29 -0
- package/dist/media/adapters/xai-videos.js +148 -0
- package/dist/media/adapters/xai-videos.js.map +1 -0
- package/dist/media/catalog-baseline.d.ts +2 -0
- package/dist/media/catalog-baseline.js +10 -0
- package/dist/media/catalog-baseline.js.map +1 -0
- package/dist/media/catalog-baseline.json +1819 -0
- package/dist/media/catalog-service.d.ts +42 -0
- package/dist/media/catalog-service.js +111 -0
- package/dist/media/catalog-service.js.map +1 -0
- package/dist/media/catalog.d.ts +50 -0
- package/dist/media/catalog.js +315 -0
- package/dist/media/catalog.js.map +1 -0
- package/dist/media/http.d.ts +125 -0
- package/dist/media/http.js +308 -0
- package/dist/media/http.js.map +1 -0
- package/dist/media/index.d.ts +14 -0
- package/dist/media/index.js +15 -0
- package/dist/media/index.js.map +1 -0
- package/dist/media/mask.d.ts +12 -0
- package/dist/media/mask.js +57 -0
- package/dist/media/mask.js.map +1 -0
- package/dist/media/service.d.ts +42 -0
- package/dist/media/service.js +144 -0
- package/dist/media/service.js.map +1 -0
- package/dist/models/compatibility/inspect.d.ts +11 -2
- package/dist/models/compatibility/inspect.js +44 -13
- package/dist/models/compatibility/inspect.js.map +1 -1
- package/dist/models/compatibility/service.d.ts +3 -0
- package/dist/models/compatibility/service.js +1 -0
- package/dist/models/compatibility/service.js.map +1 -1
- package/dist/models/gguf/tensors.d.ts +1 -0
- package/dist/models/gguf/tensors.js +4 -1
- package/dist/models/gguf/tensors.js.map +1 -1
- package/dist/models/hf.d.ts +3 -16
- package/dist/models/hf.js +4 -42
- package/dist/models/hf.js.map +1 -1
- package/dist/router/resolve.d.ts +15 -4
- package/dist/router/resolve.js +25 -3
- package/dist/router/resolve.js.map +1 -1
- package/dist/runtime/environment/linux-provisioner.js +7 -67
- package/dist/runtime/environment/linux-provisioner.js.map +1 -1
- package/dist/runtime/environment/runtime-removal-plan.d.ts +19 -0
- package/dist/runtime/environment/runtime-removal-plan.js +74 -0
- package/dist/runtime/environment/runtime-removal-plan.js.map +1 -0
- package/dist/runtime/environment/windows-provisioner.js +20 -4
- package/dist/runtime/environment/windows-provisioner.js.map +1 -1
- package/dist/runtime/managed-engines/spec.d.ts +2 -2
- package/dist/runtime/managed-engines/spec.js +6 -0
- package/dist/runtime/managed-engines/spec.js.map +1 -1
- package/dist/runtime/managed-models/compatibility.d.ts +10 -0
- package/dist/runtime/managed-models/compatibility.js +18 -0
- package/dist/runtime/managed-models/compatibility.js.map +1 -1
- package/dist/runtime/managed-text/adapter.d.ts +17 -0
- package/dist/runtime/managed-text/adapter.js.map +1 -1
- package/dist/runtime/managed-text/lifecycle.d.ts +8 -0
- package/dist/runtime/managed-text/lifecycle.js +38 -1
- package/dist/runtime/managed-text/lifecycle.js.map +1 -1
- package/dist/runtime/managed-text/readiness.d.ts +21 -1
- package/dist/runtime/managed-text/readiness.js +64 -0
- package/dist/runtime/managed-text/readiness.js.map +1 -1
- package/dist/runtime/managed-text/request-rules.d.ts +9 -7
- package/dist/runtime/managed-text/request-rules.js +58 -2
- package/dist/runtime/managed-text/request-rules.js.map +1 -1
- package/dist/runtime/managed-text/setting-values.d.ts +9 -0
- package/dist/runtime/managed-text/setting-values.js +44 -0
- package/dist/runtime/managed-text/setting-values.js.map +1 -0
- package/dist/runtime/sglang/adapter.d.ts +50 -0
- package/dist/runtime/sglang/adapter.js +393 -0
- package/dist/runtime/sglang/adapter.js.map +1 -0
- package/dist/runtime/sglang/engine.d.ts +16 -0
- package/dist/runtime/sglang/engine.js +38 -0
- package/dist/runtime/sglang/engine.js.map +1 -0
- package/dist/runtime/sglang/index.d.ts +11 -0
- package/dist/runtime/sglang/index.js +12 -0
- package/dist/runtime/sglang/index.js.map +1 -0
- package/dist/runtime/sglang/memory.d.ts +64 -0
- package/dist/runtime/sglang/memory.js +90 -0
- package/dist/runtime/sglang/memory.js.map +1 -0
- package/dist/runtime/sglang/settings.d.ts +49 -0
- package/dist/runtime/sglang/settings.js +118 -0
- package/dist/runtime/sglang/settings.js.map +1 -0
- package/dist/runtime/shared/external-sessions.js +1 -0
- package/dist/runtime/shared/external-sessions.js.map +1 -1
- package/dist/runtime/shared/ports.d.ts +10 -0
- package/dist/runtime/shared/ports.js +30 -0
- package/dist/runtime/shared/ports.js.map +1 -1
- package/dist/runtime/tensorrt-llm/adapter.d.ts +1 -4
- package/dist/runtime/tensorrt-llm/adapter.js +28 -11
- package/dist/runtime/tensorrt-llm/adapter.js.map +1 -1
- package/dist/runtime/tensorrt-llm/check.js +1 -0
- package/dist/runtime/tensorrt-llm/check.js.map +1 -1
- package/dist/runtime/tensorrt-llm/compatibility.d.ts +30 -6
- package/dist/runtime/tensorrt-llm/compatibility.js +41 -9
- package/dist/runtime/tensorrt-llm/compatibility.js.map +1 -1
- package/dist/runtime/tensorrt-llm/cuda-graphs.d.ts +32 -0
- package/dist/runtime/tensorrt-llm/cuda-graphs.js +33 -0
- package/dist/runtime/tensorrt-llm/cuda-graphs.js.map +1 -0
- package/dist/runtime/tensorrt-llm/engine.js +11 -5
- package/dist/runtime/tensorrt-llm/engine.js.map +1 -1
- package/dist/runtime/tensorrt-llm/kv-cache.d.ts +16 -0
- package/dist/runtime/tensorrt-llm/kv-cache.js +21 -1
- package/dist/runtime/tensorrt-llm/kv-cache.js.map +1 -1
- package/dist/runtime/vllm/adapter.js +2 -47
- package/dist/runtime/vllm/adapter.js.map +1 -1
- package/dist/runtime/vllm/memory.js +3 -16
- package/dist/runtime/vllm/memory.js.map +1 -1
- package/dist/runtime/vllm/settings.d.ts +7 -0
- package/dist/runtime/vllm/settings.js +2 -30
- package/dist/runtime/vllm/settings.js.map +1 -1
- package/dist/server/control/router.js +5 -4
- package/dist/server/control/router.js.map +1 -1
- package/dist/server/control/routes/media.d.ts +9 -0
- package/dist/server/control/routes/media.js +24 -0
- package/dist/server/control/routes/media.js.map +1 -0
- package/dist/server/control/routes/model-compatibility.d.ts +9 -0
- package/dist/server/control/routes/model-compatibility.js +31 -0
- package/dist/server/control/routes/model-compatibility.js.map +1 -0
- package/dist/server/control/types.d.ts +18 -20
- package/dist/server/http.js +15 -2
- package/dist/server/http.js.map +1 -1
- package/dist/server/public/gates.d.ts +6 -1
- package/dist/server/public/gates.js +7 -3
- package/dist/server/public/gates.js.map +1 -1
- package/dist/server/public/images-params.js +18 -1
- package/dist/server/public/images-params.js.map +1 -1
- package/dist/server/public/images.d.ts +11 -2
- package/dist/server/public/images.js +73 -9
- package/dist/server/public/images.js.map +1 -1
- package/dist/server/public/index.d.ts +1 -0
- package/dist/server/public/index.js +16 -7
- package/dist/server/public/index.js.map +1 -1
- package/dist/server/public/listing.js +1 -0
- package/dist/server/public/listing.js.map +1 -1
- package/dist/server/public/remote-media.d.ts +51 -0
- package/dist/server/public/remote-media.js +225 -0
- package/dist/server/public/remote-media.js.map +1 -0
- package/dist/server/public/responses.js +4 -2
- package/dist/server/public/responses.js.map +1 -1
- package/dist/server/public/static-assets.generated.js +1 -1
- package/dist/server/public/static-assets.generated.js.map +1 -1
- package/dist/server/public/trace.js +2 -0
- package/dist/server/public/trace.js.map +1 -1
- package/dist/server/public/types.d.ts +12 -1
- package/dist/server/public/videos-params.js +13 -3
- package/dist/server/public/videos-params.js.map +1 -1
- package/dist/server/public/videos.d.ts +1 -0
- package/dist/server/public/videos.js +21 -3
- package/dist/server/public/videos.js.map +1 -1
- package/dist/settings/schema/llamacpp-upstream.json +9 -0
- package/dist/settings/schema/sglang.json +251 -0
- package/dist/settings/schema.js +27 -1
- package/dist/settings/schema.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -6
- package/src/settings/schema/llamacpp-upstream.json +9 -0
- package/src/settings/schema/sglang.json +251 -0
- package/dist/backend/catalog/bundled-manifest-baseline.d.ts +0 -2
- package/dist/backend/catalog/bundled-manifest-baseline.js +0 -65
- package/dist/backend/catalog/bundled-manifest-baseline.js.map +0 -1
- package/dist/contracts/model-setup.d.ts +0 -115
- package/dist/contracts/model-setup.js +0 -33
- package/dist/contracts/model-setup.js.map +0 -1
- package/dist/core/model-setup/index.d.ts +0 -4
- package/dist/core/model-setup/index.js +0 -5
- package/dist/core/model-setup/index.js.map +0 -1
- package/dist/core/model-setup/plan.d.ts +0 -56
- package/dist/core/model-setup/plan.js +0 -158
- package/dist/core/model-setup/plan.js.map +0 -1
- package/dist/core/model-setup/service.d.ts +0 -92
- package/dist/core/model-setup/service.js +0 -329
- package/dist/core/model-setup/service.js.map +0 -1
- package/dist/core/model-setup/store.d.ts +0 -29
- package/dist/core/model-setup/store.js +0 -116
- package/dist/core/model-setup/store.js.map +0 -1
- package/dist/core/model-setup/wiring.d.ts +0 -59
- package/dist/core/model-setup/wiring.js +0 -132
- package/dist/core/model-setup/wiring.js.map +0 -1
- package/dist/server/control/routes/model-setups.d.ts +0 -11
- package/dist/server/control/routes/model-setups.js +0 -55
- package/dist/server/control/routes/model-setups.js.map +0 -1
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Automatic1111 line other tools read. `gallery.rs` in `tauri-plugin-atomic-diffusion` (app commit
|
|
5
5
|
* `767ff6350`).
|
|
6
6
|
*/
|
|
7
|
-
import type { ImageRecipe } from '../contracts/index.js';
|
|
7
|
+
import type { DiffusionRecipeEngine, ImageRecipe } from '../contracts/index.js';
|
|
8
8
|
export declare const RECIPE_KEYWORD = "atomic";
|
|
9
9
|
export declare const PARAMETERS_KEYWORD = "parameters";
|
|
10
10
|
/** A whole number without a fraction, anything else as Rust's `Display` prints it (never an exponent). */
|
|
@@ -13,14 +13,23 @@ export declare function fmtFloat(value: number): string;
|
|
|
13
13
|
export declare function a1111Parameters(recipe: ImageRecipe): string;
|
|
14
14
|
/** The recipe as it is embedded: every key present, in the plugin's order, absent values as `null`. */
|
|
15
15
|
export declare function serializeRecipe(recipe: ImageRecipe): string;
|
|
16
|
+
/** A recipe's engine with its keys in a fixed order, whichever kind it is. */
|
|
17
|
+
export declare function orderedEngine(engine: DiffusionRecipeEngine): DiffusionRecipeEngine;
|
|
16
18
|
/**
|
|
17
19
|
* Insert the `atomic` and `parameters` chunks right after `IHDR`, without touching the image data.
|
|
18
20
|
* Whatever the engine wrote after them (sd.cpp adds a `parameters` chunk of its own) stays.
|
|
19
21
|
*/
|
|
20
22
|
export declare function spliceRecipe(png: Buffer, recipe: ImageRecipe): Buffer;
|
|
23
|
+
type Fields = Record<string, unknown>;
|
|
24
|
+
/**
|
|
25
|
+
* A recipe's engine, or `undefined` when it is neither a local engine the plugin knew nor a remote
|
|
26
|
+
* provider through an adapter this core has.
|
|
27
|
+
*/
|
|
28
|
+
export declare function parseRecipeEngine(engine: Fields): DiffusionRecipeEngine | undefined;
|
|
21
29
|
/**
|
|
22
30
|
* The recipe out of an `atomic` chunk, or `undefined` when the text is not one. As strict as the
|
|
23
31
|
* plugin's serde was, because this is what decides whether a PNG in the output folder is ours: an
|
|
24
32
|
* image without a valid recipe is never listed and never deleted.
|
|
25
33
|
*/
|
|
26
34
|
export declare function parseRecipe(text: string): ImageRecipe | undefined;
|
|
35
|
+
export {};
|
package/dist/diffusion/recipe.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Automatic1111 line other tools read. `gallery.rs` in `tauri-plugin-atomic-diffusion` (app commit
|
|
5
5
|
* `767ff6350`).
|
|
6
6
|
*/
|
|
7
|
+
import { MEDIA_DIALECTS } from '../contracts/index.js';
|
|
7
8
|
import { expandExponent } from '../util/index.js';
|
|
8
9
|
import { internalError } from './errors.js';
|
|
9
10
|
import { insertAfterHeader, textChunk } from './png.js';
|
|
@@ -37,7 +38,9 @@ export function a1111Parameters(recipe) {
|
|
|
37
38
|
];
|
|
38
39
|
if (recipe.guidance !== null)
|
|
39
40
|
fields.push(`Distilled Guidance: ${fmtFloat(recipe.guidance)}`);
|
|
40
|
-
fields.push(`Seed: ${recipe.seed}`, `Size: ${recipe.width}x${recipe.height}`,
|
|
41
|
+
fields.push(`Seed: ${recipe.seed}`, `Size: ${recipe.width}x${recipe.height}`,
|
|
42
|
+
// A remote model has no file: its id stands in.
|
|
43
|
+
`Model: ${recipe.model.filename || recipe.model.modelId}`);
|
|
41
44
|
if (recipe.flowShift !== null)
|
|
42
45
|
fields.push(`Flow shift: ${fmtFloat(recipe.flowShift)}`);
|
|
43
46
|
if (recipe.strength !== null)
|
|
@@ -69,18 +72,41 @@ export function serializeRecipe(recipe) {
|
|
|
69
72
|
displayName: recipe.model.displayName,
|
|
70
73
|
filename: recipe.model.filename,
|
|
71
74
|
},
|
|
72
|
-
engine:
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
tag: recipe.engine.tag,
|
|
76
|
-
offload: recipe.engine.offload,
|
|
77
|
-
cpuFallback: recipe.engine.cpuFallback,
|
|
78
|
-
},
|
|
75
|
+
engine: orderedEngine(recipe.engine),
|
|
76
|
+
// Only a remote recipe has it, so a local recipe keeps the plugin's exact shape.
|
|
77
|
+
...(recipe.remote === undefined ? {} : { remote: orderedRemoteImage(recipe.remote) }),
|
|
79
78
|
createdAtMs: recipe.createdAtMs,
|
|
80
79
|
durationMs: recipe.durationMs,
|
|
81
80
|
};
|
|
82
81
|
return JSON.stringify(ordered);
|
|
83
82
|
}
|
|
83
|
+
/** A recipe's engine with its keys in a fixed order, whichever kind it is. */
|
|
84
|
+
export function orderedEngine(engine) {
|
|
85
|
+
if (engine.kind === 'remote')
|
|
86
|
+
return { kind: 'remote', provider: engine.provider, api: engine.api };
|
|
87
|
+
return {
|
|
88
|
+
kind: engine.kind,
|
|
89
|
+
backend: engine.backend,
|
|
90
|
+
tag: engine.tag,
|
|
91
|
+
offload: engine.offload,
|
|
92
|
+
cpuFallback: engine.cpuFallback,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
const REMOTE_IMAGE_KEYS = [
|
|
96
|
+
'size',
|
|
97
|
+
'aspectRatio',
|
|
98
|
+
'resolution',
|
|
99
|
+
'quality',
|
|
100
|
+
'background',
|
|
101
|
+
'outputFormat',
|
|
102
|
+
];
|
|
103
|
+
function orderedRemoteImage(options) {
|
|
104
|
+
const out = {};
|
|
105
|
+
for (const key of REMOTE_IMAGE_KEYS)
|
|
106
|
+
if (options[key] !== undefined)
|
|
107
|
+
out[key] = options[key];
|
|
108
|
+
return out;
|
|
109
|
+
}
|
|
84
110
|
/**
|
|
85
111
|
* Insert the `atomic` and `parameters` chunks right after `IHDR`, without touching the image data.
|
|
86
112
|
* Whatever the engine wrote after them (sd.cpp adds a `parameters` chunk of its own) stays.
|
|
@@ -119,6 +145,50 @@ function optional(value, check) {
|
|
|
119
145
|
return null;
|
|
120
146
|
return check(value) ? value : undefined;
|
|
121
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* A recipe's engine, or `undefined` when it is neither a local engine the plugin knew nor a remote
|
|
150
|
+
* provider through an adapter this core has.
|
|
151
|
+
*/
|
|
152
|
+
export function parseRecipeEngine(engine) {
|
|
153
|
+
if (engine['kind'] === 'remote') {
|
|
154
|
+
if (!isString(engine['provider']) || engine['provider'] === '')
|
|
155
|
+
return undefined;
|
|
156
|
+
if (!among(engine['api'], MEDIA_DIALECTS))
|
|
157
|
+
return undefined;
|
|
158
|
+
return { kind: 'remote', provider: engine['provider'], api: engine['api'] };
|
|
159
|
+
}
|
|
160
|
+
const ok = among(engine['kind'], ENGINES) &&
|
|
161
|
+
among(engine['backend'], BACKENDS) &&
|
|
162
|
+
isString(engine['tag']) &&
|
|
163
|
+
among(engine['offload'], OFFLOADS) &&
|
|
164
|
+
typeof engine['cpuFallback'] === 'boolean';
|
|
165
|
+
if (!ok)
|
|
166
|
+
return undefined;
|
|
167
|
+
return {
|
|
168
|
+
kind: engine['kind'],
|
|
169
|
+
backend: engine['backend'],
|
|
170
|
+
tag: engine['tag'],
|
|
171
|
+
offload: engine['offload'],
|
|
172
|
+
cpuFallback: engine['cpuFallback'],
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
/** A remote recipe's extra settings: strings only; `undefined` when the value is not such an object. */
|
|
176
|
+
function parseRemoteImage(value) {
|
|
177
|
+
if (value === undefined || value === null)
|
|
178
|
+
return null;
|
|
179
|
+
if (!isObject(value))
|
|
180
|
+
return undefined;
|
|
181
|
+
const out = {};
|
|
182
|
+
for (const key of REMOTE_IMAGE_KEYS) {
|
|
183
|
+
const item = value[key];
|
|
184
|
+
if (item === undefined || item === null)
|
|
185
|
+
continue;
|
|
186
|
+
if (!isString(item))
|
|
187
|
+
return undefined;
|
|
188
|
+
out[key] = item;
|
|
189
|
+
}
|
|
190
|
+
return out;
|
|
191
|
+
}
|
|
122
192
|
/**
|
|
123
193
|
* The recipe out of an `atomic` chunk, or `undefined` when the text is not one. As strict as the
|
|
124
194
|
* plugin's serde was, because this is what decides whether a PNG in the output folder is ours: an
|
|
@@ -140,6 +210,8 @@ export function parseRecipe(text) {
|
|
|
140
210
|
const samplingMethod = optional(raw['samplingMethod'], isString);
|
|
141
211
|
const flowShift = optional(raw['flowShift'], isNumber);
|
|
142
212
|
const strength = optional(raw['strength'], isNumber);
|
|
213
|
+
const parsedEngine = parseRecipeEngine(engine);
|
|
214
|
+
const remote = parseRemoteImage(raw['remote']);
|
|
143
215
|
const ok = isString(raw['jobId']) &&
|
|
144
216
|
isWhole(raw['index']) &&
|
|
145
217
|
isString(raw['prompt']) &&
|
|
@@ -155,11 +227,8 @@ export function parseRecipe(text) {
|
|
|
155
227
|
isString(model['family']) &&
|
|
156
228
|
isString(model['displayName']) &&
|
|
157
229
|
isString(model['filename']) &&
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
isString(engine['tag']) &&
|
|
161
|
-
among(engine['offload'], OFFLOADS) &&
|
|
162
|
-
typeof engine['cpuFallback'] === 'boolean' &&
|
|
230
|
+
parsedEngine !== undefined &&
|
|
231
|
+
remote !== undefined &&
|
|
163
232
|
isWhole(raw['createdAtMs']) &&
|
|
164
233
|
isWhole(raw['durationMs']) &&
|
|
165
234
|
negativePrompt !== undefined &&
|
|
@@ -167,7 +236,7 @@ export function parseRecipe(text) {
|
|
|
167
236
|
samplingMethod !== undefined &&
|
|
168
237
|
flowShift !== undefined &&
|
|
169
238
|
strength !== undefined;
|
|
170
|
-
if (!ok)
|
|
239
|
+
if (!ok || parsedEngine === undefined || remote === undefined)
|
|
171
240
|
return undefined;
|
|
172
241
|
return {
|
|
173
242
|
jobId: raw['jobId'],
|
|
@@ -192,13 +261,8 @@ export function parseRecipe(text) {
|
|
|
192
261
|
displayName: model['displayName'],
|
|
193
262
|
filename: model['filename'],
|
|
194
263
|
},
|
|
195
|
-
engine:
|
|
196
|
-
|
|
197
|
-
backend: engine['backend'],
|
|
198
|
-
tag: engine['tag'],
|
|
199
|
-
offload: engine['offload'],
|
|
200
|
-
cpuFallback: engine['cpuFallback'],
|
|
201
|
-
},
|
|
264
|
+
engine: parsedEngine,
|
|
265
|
+
...(remote === null ? {} : { remote }),
|
|
202
266
|
createdAtMs: raw['createdAtMs'],
|
|
203
267
|
durationMs: raw['durationMs'],
|
|
204
268
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../src/diffusion/recipe.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../src/diffusion/recipe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remote jobs: an image or a clip a cloud or self-hosted provider makes for a request whose
|
|
3
|
+
* `target` names it (ADR 2026-10-13-remote-media-shares-the-diffusion-job-table). The records live in
|
|
4
|
+
* the same job table as the local runner's, go out as the same `diffusion:*` events and land in the
|
|
5
|
+
* same galleries, so the Images and Video pages, `/v1/images/generations` and `/v1/videos` see them
|
|
6
|
+
* the way they see a local job. What differs:
|
|
7
|
+
*
|
|
8
|
+
* - no `sd-server`, no `activeJobId`, no GPU claim, no idle timer: a remote job never blocks a local
|
|
9
|
+
* one, and up to `MAX_REMOTE_JOBS` run at once;
|
|
10
|
+
* - the request that starts a generation is never retried (the provider would bill twice);
|
|
11
|
+
* - cancel aborts every request and wait, then asks the provider to stop, best effort;
|
|
12
|
+
* - a video job is written to `remote-jobs.json` once submitted and polled again after a restart.
|
|
13
|
+
*
|
|
14
|
+
* The adapters that speak each provider live in `src/media/`; this file sees them through
|
|
15
|
+
* `RemoteMediaGateway`, injected by the owner.
|
|
16
|
+
*/
|
|
17
|
+
import type { DiffusionCancelResult, ImageGenerateRequest, ImageJob, ImageModelDescriptor, MediaKind, MediaTarget, RemoteImageWorkflow, RemoteVideoWorkflow, VideoGenerateRequest, VideoJob, VideoModelDescriptor } from '../contracts/index.js';
|
|
18
|
+
import type { ImageAdapter, ImageGenerationJob, MediaContext, MediaInput, VideoAdapter, VideoGenerationJob } from '../media/index.js';
|
|
19
|
+
import type { JobDeps, StartedJob } from './jobs.js';
|
|
20
|
+
import type { RemoteJobStore } from './remote-store.js';
|
|
21
|
+
/** Remote jobs running at once, images and clips together. */
|
|
22
|
+
export declare const MAX_REMOTE_JOBS = 4;
|
|
23
|
+
/** A clip still not done after this long is given up on. */
|
|
24
|
+
export declare const REMOTE_VIDEO_CEILING_MS: number;
|
|
25
|
+
/** Polls that may fail in a row (network, 5xx, rate limit) before the job fails. */
|
|
26
|
+
export declare const MAX_POLL_FAILURES = 10;
|
|
27
|
+
/** Progress goes out at least this often while a remote job runs. */
|
|
28
|
+
export declare const REMOTE_HEARTBEAT_MS = 1000;
|
|
29
|
+
/** How long a resumed job waits for the app to configure the galleries before saving to the defaults. */
|
|
30
|
+
export declare const RESUME_CONFIG_WAIT_MS = 60000;
|
|
31
|
+
/** A provider's model, ready to run: what it is, the code that speaks to it, and a context per job. */
|
|
32
|
+
export interface ResolvedRemote<Descriptor, Adapter> {
|
|
33
|
+
target: MediaTarget;
|
|
34
|
+
descriptor: Descriptor;
|
|
35
|
+
adapter: Adapter;
|
|
36
|
+
context(signal: AbortSignal): MediaContext;
|
|
37
|
+
}
|
|
38
|
+
/** What the runner needs of `src/media/`: resolve a target, find a public model. */
|
|
39
|
+
export interface RemoteMediaGateway {
|
|
40
|
+
image(target: MediaTarget): Promise<ResolvedRemote<ImageModelDescriptor, ImageAdapter>>;
|
|
41
|
+
video(target: MediaTarget): Promise<ResolvedRemote<VideoModelDescriptor, VideoAdapter>>;
|
|
42
|
+
/** The provider and model a client's `model` names among the enabled media models. */
|
|
43
|
+
find(model: string, kind: MediaKind): MediaTarget | undefined;
|
|
44
|
+
}
|
|
45
|
+
export interface RemoteDeps {
|
|
46
|
+
gateway: RemoteMediaGateway;
|
|
47
|
+
store: RemoteJobStore;
|
|
48
|
+
maxJobs?: number;
|
|
49
|
+
}
|
|
50
|
+
/** A fraction that creeps toward `cap` over time, for providers that say nothing about progress. */
|
|
51
|
+
export declare function timeFraction(elapsedMs: number, scaleMs: number, cap?: number): number;
|
|
52
|
+
/** Refuse what the model cannot do before anything is sent; the workflow it runs. */
|
|
53
|
+
export declare function checkRemoteImageRequest(request: ImageGenerateRequest, model: ImageModelDescriptor): RemoteImageWorkflow;
|
|
54
|
+
/** The adapter's job out of the request, the model's defaults filling what the request left out. */
|
|
55
|
+
export declare function imageGenerationJob(request: ImageGenerateRequest, model: ImageModelDescriptor, workflow: RemoteImageWorkflow, inputs: {
|
|
56
|
+
images: MediaInput[];
|
|
57
|
+
mask?: MediaInput;
|
|
58
|
+
}, seed: number | undefined): ImageGenerationJob;
|
|
59
|
+
/** Refuse what the model cannot do before anything is sent; the workflow it runs. */
|
|
60
|
+
export declare function checkRemoteVideoRequest(request: VideoGenerateRequest, model: VideoModelDescriptor): RemoteVideoWorkflow;
|
|
61
|
+
/** The adapter's job out of the request, the model's defaults filling what the request left out. */
|
|
62
|
+
export declare function videoGenerationJob(request: VideoGenerateRequest, model: VideoModelDescriptor, workflow: RemoteVideoWorkflow, frames: {
|
|
63
|
+
first?: MediaInput;
|
|
64
|
+
last?: MediaInput;
|
|
65
|
+
}, seed: number | undefined): VideoGenerationJob;
|
|
66
|
+
/** Validate, register and start an image job on a provider's model. */
|
|
67
|
+
export declare function startRemoteImageJob(deps: JobDeps, request: ImageGenerateRequest): Promise<StartedJob<ImageJob>>;
|
|
68
|
+
/** Validate, register, submit and follow a clip on a provider's model. */
|
|
69
|
+
export declare function startRemoteVideoJob(deps: JobDeps, request: VideoGenerateRequest): Promise<StartedJob<VideoJob>>;
|
|
70
|
+
/**
|
|
71
|
+
* Follow again every clip the last core submitted and did not finish. A job whose provider is gone
|
|
72
|
+
* fails at once; none is ever submitted twice.
|
|
73
|
+
*/
|
|
74
|
+
export declare function resumeRemoteVideoJobs(deps: JobDeps): Promise<void>;
|
|
75
|
+
/** Stop a remote job: every request and wait aborts, and the provider is asked to stop it too. */
|
|
76
|
+
export declare function cancelRemoteJob(deps: JobDeps, id: string): Promise<DiffusionCancelResult>;
|