@atomic-chat/core 0.5.1
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 +46 -0
- package/dist/app-daemon.d.ts +2 -0
- package/dist/app-daemon.js +72 -0
- package/dist/app-daemon.js.map +1 -0
- package/dist/backend/catalog/archive.d.ts +70 -0
- package/dist/backend/catalog/archive.js +138 -0
- package/dist/backend/catalog/archive.js.map +1 -0
- package/dist/backend/catalog/bundled-manifest-baseline.d.ts +2 -0
- package/dist/backend/catalog/bundled-manifest-baseline.js +49 -0
- package/dist/backend/catalog/bundled-manifest-baseline.js.map +1 -0
- package/dist/backend/catalog/cuda-family.d.ts +54 -0
- package/dist/backend/catalog/cuda-family.js +93 -0
- package/dist/backend/catalog/cuda-family.js.map +1 -0
- package/dist/backend/catalog/index.d.ts +6 -0
- package/dist/backend/catalog/index.js +7 -0
- package/dist/backend/catalog/index.js.map +1 -0
- package/dist/backend/catalog/manifest.d.ts +102 -0
- package/dist/backend/catalog/manifest.js +233 -0
- package/dist/backend/catalog/manifest.js.map +1 -0
- package/dist/backend/catalog/migrate.d.ts +40 -0
- package/dist/backend/catalog/migrate.js +135 -0
- package/dist/backend/catalog/migrate.js.map +1 -0
- package/dist/backend/index.d.ts +18 -0
- package/dist/backend/index.js +19 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/install/index.d.ts +3 -0
- package/dist/backend/install/index.js +4 -0
- package/dist/backend/install/index.js.map +1 -0
- package/dist/backend/install/runtime-backend.d.ts +22 -0
- package/dist/backend/install/runtime-backend.js +95 -0
- package/dist/backend/install/runtime-backend.js.map +1 -0
- package/dist/backend/install/service.d.ts +119 -0
- package/dist/backend/install/service.js +218 -0
- package/dist/backend/install/service.js.map +1 -0
- package/dist/backend/installed/index.d.ts +3 -0
- package/dist/backend/installed/index.js +4 -0
- package/dist/backend/installed/index.js.map +1 -0
- package/dist/backend/installed/installed.d.ts +93 -0
- package/dist/backend/installed/installed.js +209 -0
- package/dist/backend/installed/installed.js.map +1 -0
- package/dist/backend/installed/scan.d.ts +39 -0
- package/dist/backend/installed/scan.js +105 -0
- package/dist/backend/installed/scan.js.map +1 -0
- package/dist/backend/optimal/index.d.ts +3 -0
- package/dist/backend/optimal/index.js +4 -0
- package/dist/backend/optimal/index.js.map +1 -0
- package/dist/backend/optimal/optimal-cache.d.ts +90 -0
- package/dist/backend/optimal/optimal-cache.js +198 -0
- package/dist/backend/optimal/optimal-cache.js.map +1 -0
- package/dist/backend/optimal/optimal-store.d.ts +24 -0
- package/dist/backend/optimal/optimal-store.js +103 -0
- package/dist/backend/optimal/optimal-store.js.map +1 -0
- package/dist/backend/select/amd-rocm-pci-ids.d.ts +3 -0
- package/dist/backend/select/amd-rocm-pci-ids.js +57 -0
- package/dist/backend/select/amd-rocm-pci-ids.js.map +1 -0
- package/dist/backend/select/categories.d.ts +49 -0
- package/dist/backend/select/categories.js +178 -0
- package/dist/backend/select/categories.js.map +1 -0
- package/dist/backend/select/features.d.ts +81 -0
- package/dist/backend/select/features.js +221 -0
- package/dist/backend/select/features.js.map +1 -0
- package/dist/backend/select/index.d.ts +9 -0
- package/dist/backend/select/index.js +10 -0
- package/dist/backend/select/index.js.map +1 -0
- package/dist/backend/select/recovery.d.ts +51 -0
- package/dist/backend/select/recovery.js +108 -0
- package/dist/backend/select/recovery.js.map +1 -0
- package/dist/backend/select/tiers.d.ts +76 -0
- package/dist/backend/select/tiers.js +179 -0
- package/dist/backend/select/tiers.js.map +1 -0
- package/dist/backend/turboquant.d.ts +134 -0
- package/dist/backend/turboquant.js +587 -0
- package/dist/backend/turboquant.js.map +1 -0
- package/dist/backend/types.d.ts +139 -0
- package/dist/backend/types.js +13 -0
- package/dist/backend/types.js.map +1 -0
- package/dist/backend/version.d.ts +59 -0
- package/dist/backend/version.js +168 -0
- package/dist/backend/version.js.map +1 -0
- package/dist/cli/bin.d.ts +2 -0
- package/dist/cli/bin.js +10 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/cloud.d.ts +13 -0
- package/dist/cli/cloud.js +146 -0
- package/dist/cli/cloud.js.map +1 -0
- package/dist/cli/commands/daemon.d.ts +4 -0
- package/dist/cli/commands/daemon.js +88 -0
- package/dist/cli/commands/daemon.js.map +1 -0
- package/dist/cli/commands/index.d.ts +16 -0
- package/dist/cli/commands/index.js +17 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/models.d.ts +4 -0
- package/dist/cli/commands/models.js +52 -0
- package/dist/cli/commands/models.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +16 -0
- package/dist/cli/commands/serve.js +263 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/server.d.ts +4 -0
- package/dist/cli/commands/server.js +126 -0
- package/dist/cli/commands/server.js.map +1 -0
- package/dist/cli/commands/shared.d.ts +10 -0
- package/dist/cli/commands/shared.js +34 -0
- package/dist/cli/commands/shared.js.map +1 -0
- package/dist/cli/commands/shutdown.d.ts +4 -0
- package/dist/cli/commands/shutdown.js +32 -0
- package/dist/cli/commands/shutdown.js.map +1 -0
- package/dist/cli/commands/telemetry.d.ts +8 -0
- package/dist/cli/commands/telemetry.js +50 -0
- package/dist/cli/commands/telemetry.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.js +8 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/io.d.ts +46 -0
- package/dist/cli/io.js +101 -0
- package/dist/cli/io.js.map +1 -0
- package/dist/cli/launch.d.ts +50 -0
- package/dist/cli/launch.js +327 -0
- package/dist/cli/launch.js.map +1 -0
- package/dist/cli/main.d.ts +10 -0
- package/dist/cli/main.js +109 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/owner.d.ts +39 -0
- package/dist/cli/owner.js +179 -0
- package/dist/cli/owner.js.map +1 -0
- package/dist/client/control-client.d.ts +213 -0
- package/dist/client/control-client.js +368 -0
- package/dist/client/control-client.js.map +1 -0
- package/dist/client/index.d.ts +7 -0
- package/dist/client/index.js +8 -0
- package/dist/client/index.js.map +1 -0
- package/dist/cloud/chatgpt.d.ts +63 -0
- package/dist/cloud/chatgpt.js +233 -0
- package/dist/cloud/chatgpt.js.map +1 -0
- package/dist/cloud/index.d.ts +8 -0
- package/dist/cloud/index.js +9 -0
- package/dist/cloud/index.js.map +1 -0
- package/dist/cloud/registry.d.ts +51 -0
- package/dist/cloud/registry.js +148 -0
- package/dist/cloud/registry.js.map +1 -0
- package/dist/config/data-folder.d.ts +57 -0
- package/dist/config/data-folder.js +150 -0
- package/dist/config/data-folder.js.map +1 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.js +10 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/paths.d.ts +98 -0
- package/dist/config/paths.js +109 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/contracts/control-api.d.ts +61 -0
- package/dist/contracts/control-api.js +7 -0
- package/dist/contracts/control-api.js.map +1 -0
- package/dist/contracts/diffusion.d.ts +477 -0
- package/dist/contracts/diffusion.js +10 -0
- package/dist/contracts/diffusion.js.map +1 -0
- package/dist/contracts/errors.d.ts +61 -0
- package/dist/contracts/errors.js +70 -0
- package/dist/contracts/errors.js.map +1 -0
- package/dist/contracts/events.d.ts +270 -0
- package/dist/contracts/events.js +7 -0
- package/dist/contracts/events.js.map +1 -0
- package/dist/contracts/hardware.d.ts +53 -0
- package/dist/contracts/hardware.js +12 -0
- package/dist/contracts/hardware.js.map +1 -0
- package/dist/contracts/index.d.ts +12 -0
- package/dist/contracts/index.js +13 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/model-yml.d.ts +28 -0
- package/dist/contracts/model-yml.js +23 -0
- package/dist/contracts/model-yml.js.map +1 -0
- package/dist/contracts/remote-access.d.ts +43 -0
- package/dist/contracts/remote-access.js +12 -0
- package/dist/contracts/remote-access.js.map +1 -0
- package/dist/contracts/session.d.ts +39 -0
- package/dist/contracts/session.js +7 -0
- package/dist/contracts/session.js.map +1 -0
- package/dist/contracts/settings.d.ts +106 -0
- package/dist/contracts/settings.js +17 -0
- package/dist/contracts/settings.js.map +1 -0
- package/dist/core/atomic-core.d.ts +149 -0
- package/dist/core/atomic-core.js +289 -0
- package/dist/core/atomic-core.js.map +1 -0
- package/dist/core/create.d.ts +12 -0
- package/dist/core/create.js +393 -0
- package/dist/core/create.js.map +1 -0
- package/dist/core/index.d.ts +10 -0
- package/dist/core/index.js +9 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/public-server.d.ts +76 -0
- package/dist/core/public-server.js +143 -0
- package/dist/core/public-server.js.map +1 -0
- package/dist/core/reap-orphans.d.ts +7 -0
- package/dist/core/reap-orphans.js +40 -0
- package/dist/core/reap-orphans.js.map +1 -0
- package/dist/core/sessions.d.ts +60 -0
- package/dist/core/sessions.js +180 -0
- package/dist/core/sessions.js.map +1 -0
- package/dist/core/types.d.ts +61 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/credentials/api-keys.d.ts +41 -0
- package/dist/credentials/api-keys.js +156 -0
- package/dist/credentials/api-keys.js.map +1 -0
- package/dist/credentials/chatgpt-auth.d.ts +73 -0
- package/dist/credentials/chatgpt-auth.js +167 -0
- package/dist/credentials/chatgpt-auth.js.map +1 -0
- package/dist/credentials/chatgpt-oauth.d.ts +97 -0
- package/dist/credentials/chatgpt-oauth.js +329 -0
- package/dist/credentials/chatgpt-oauth.js.map +1 -0
- package/dist/credentials/chatgpt-store.d.ts +33 -0
- package/dist/credentials/chatgpt-store.js +110 -0
- package/dist/credentials/chatgpt-store.js.map +1 -0
- package/dist/credentials/index.d.ts +11 -0
- package/dist/credentials/index.js +12 -0
- package/dist/credentials/index.js.map +1 -0
- package/dist/diffusion/args.d.ts +102 -0
- package/dist/diffusion/args.js +291 -0
- package/dist/diffusion/args.js.map +1 -0
- package/dist/diffusion/compat.d.ts +20 -0
- package/dist/diffusion/compat.js +58 -0
- package/dist/diffusion/compat.js.map +1 -0
- package/dist/diffusion/containment.d.ts +15 -0
- package/dist/diffusion/containment.js +32 -0
- package/dist/diffusion/containment.js.map +1 -0
- package/dist/diffusion/errors.d.ts +28 -0
- package/dist/diffusion/errors.js +63 -0
- package/dist/diffusion/errors.js.map +1 -0
- package/dist/diffusion/gallery.d.ts +76 -0
- package/dist/diffusion/gallery.js +307 -0
- package/dist/diffusion/gallery.js.map +1 -0
- package/dist/diffusion/http.d.ts +16 -0
- package/dist/diffusion/http.js +41 -0
- package/dist/diffusion/http.js.map +1 -0
- package/dist/diffusion/idle.d.ts +23 -0
- package/dist/diffusion/idle.js +45 -0
- package/dist/diffusion/idle.js.map +1 -0
- package/dist/diffusion/image-job.d.ts +25 -0
- package/dist/diffusion/image-job.js +176 -0
- package/dist/diffusion/image-job.js.map +1 -0
- package/dist/diffusion/index.d.ts +35 -0
- package/dist/diffusion/index.js +36 -0
- package/dist/diffusion/index.js.map +1 -0
- package/dist/diffusion/install.d.ts +61 -0
- package/dist/diffusion/install.js +287 -0
- package/dist/diffusion/install.js.map +1 -0
- package/dist/diffusion/job-kind.d.ts +74 -0
- package/dist/diffusion/job-kind.js +7 -0
- package/dist/diffusion/job-kind.js.map +1 -0
- package/dist/diffusion/jobs.d.ts +90 -0
- package/dist/diffusion/jobs.js +433 -0
- package/dist/diffusion/jobs.js.map +1 -0
- package/dist/diffusion/mutex.d.ts +16 -0
- package/dist/diffusion/mutex.js +46 -0
- package/dist/diffusion/mutex.js.map +1 -0
- package/dist/diffusion/parse.d.ts +19 -0
- package/dist/diffusion/parse.js +274 -0
- package/dist/diffusion/parse.js.map +1 -0
- package/dist/diffusion/png.d.ts +77 -0
- package/dist/diffusion/png.js +335 -0
- package/dist/diffusion/png.js.map +1 -0
- package/dist/diffusion/progress.d.ts +74 -0
- package/dist/diffusion/progress.js +223 -0
- package/dist/diffusion/progress.js.map +1 -0
- package/dist/diffusion/recipe.d.ts +26 -0
- package/dist/diffusion/recipe.js +206 -0
- package/dist/diffusion/recipe.js.map +1 -0
- package/dist/diffusion/server-process.d.ts +59 -0
- package/dist/diffusion/server-process.js +235 -0
- package/dist/diffusion/server-process.js.map +1 -0
- package/dist/diffusion/service.d.ts +107 -0
- package/dist/diffusion/service.js +431 -0
- package/dist/diffusion/service.js.map +1 -0
- package/dist/diffusion/session.d.ts +58 -0
- package/dist/diffusion/session.js +226 -0
- package/dist/diffusion/session.js.map +1 -0
- package/dist/diffusion/state.d.ts +90 -0
- package/dist/diffusion/state.js +122 -0
- package/dist/diffusion/state.js.map +1 -0
- package/dist/diffusion/tracker.d.ts +46 -0
- package/dist/diffusion/tracker.js +153 -0
- package/dist/diffusion/tracker.js.map +1 -0
- package/dist/diffusion/types.d.ts +62 -0
- package/dist/diffusion/types.js +10 -0
- package/dist/diffusion/types.js.map +1 -0
- package/dist/diffusion/validate.d.ts +36 -0
- package/dist/diffusion/validate.js +166 -0
- package/dist/diffusion/validate.js.map +1 -0
- package/dist/diffusion/video-gallery.d.ts +56 -0
- package/dist/diffusion/video-gallery.js +252 -0
- package/dist/diffusion/video-gallery.js.map +1 -0
- package/dist/diffusion/video-job.d.ts +33 -0
- package/dist/diffusion/video-job.js +150 -0
- package/dist/diffusion/video-job.js.map +1 -0
- package/dist/diffusion/video-recipe.d.ts +12 -0
- package/dist/diffusion/video-recipe.js +141 -0
- package/dist/diffusion/video-recipe.js.map +1 -0
- package/dist/diffusion/wiring.d.ts +24 -0
- package/dist/diffusion/wiring.js +38 -0
- package/dist/diffusion/wiring.js.map +1 -0
- package/dist/diffusion/workflow.d.ts +33 -0
- package/dist/diffusion/workflow.js +78 -0
- package/dist/diffusion/workflow.js.map +1 -0
- package/dist/downloads/archive.d.ts +15 -0
- package/dist/downloads/archive.js +121 -0
- package/dist/downloads/archive.js.map +1 -0
- package/dist/downloads/disk-space.d.ts +18 -0
- package/dist/downloads/disk-space.js +32 -0
- package/dist/downloads/disk-space.js.map +1 -0
- package/dist/downloads/disk.d.ts +38 -0
- package/dist/downloads/disk.js +88 -0
- package/dist/downloads/disk.js.map +1 -0
- package/dist/downloads/downloader.d.ts +75 -0
- package/dist/downloads/downloader.js +479 -0
- package/dist/downloads/downloader.js.map +1 -0
- package/dist/downloads/index.d.ts +14 -0
- package/dist/downloads/index.js +15 -0
- package/dist/downloads/index.js.map +1 -0
- package/dist/downloads/protocol.d.ts +52 -0
- package/dist/downloads/protocol.js +153 -0
- package/dist/downloads/protocol.js.map +1 -0
- package/dist/downloads/proxy-fetch.d.ts +45 -0
- package/dist/downloads/proxy-fetch.js +571 -0
- package/dist/downloads/proxy-fetch.js.map +1 -0
- package/dist/downloads/verify.d.ts +22 -0
- package/dist/downloads/verify.js +74 -0
- package/dist/downloads/verify.js.map +1 -0
- package/dist/events/emitter.d.ts +44 -0
- package/dist/events/emitter.js +104 -0
- package/dist/events/emitter.js.map +1 -0
- package/dist/events/index.d.ts +5 -0
- package/dist/events/index.js +6 -0
- package/dist/events/index.js.map +1 -0
- package/dist/hardware/index.d.ts +7 -0
- package/dist/hardware/index.js +8 -0
- package/dist/hardware/index.js.map +1 -0
- package/dist/hardware/override.d.ts +46 -0
- package/dist/hardware/override.js +81 -0
- package/dist/hardware/override.js.map +1 -0
- package/dist/host/index.d.ts +15 -0
- package/dist/host/index.js +16 -0
- package/dist/host/index.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/catalog.d.ts +67 -0
- package/dist/integrations/catalog.js +385 -0
- package/dist/integrations/catalog.js.map +1 -0
- package/dist/integrations/config-io.d.ts +86 -0
- package/dist/integrations/config-io.js +229 -0
- package/dist/integrations/config-io.js.map +1 -0
- package/dist/integrations/configure/atomic-agent.d.ts +33 -0
- package/dist/integrations/configure/atomic-agent.js +127 -0
- package/dist/integrations/configure/atomic-agent.js.map +1 -0
- package/dist/integrations/configure/claude-code.d.ts +16 -0
- package/dist/integrations/configure/claude-code.js +45 -0
- package/dist/integrations/configure/claude-code.js.map +1 -0
- package/dist/integrations/configure/cline.d.ts +28 -0
- package/dist/integrations/configure/cline.js +70 -0
- package/dist/integrations/configure/cline.js.map +1 -0
- package/dist/integrations/configure/codex.d.ts +17 -0
- package/dist/integrations/configure/codex.js +43 -0
- package/dist/integrations/configure/codex.js.map +1 -0
- package/dist/integrations/configure/copilot.d.ts +10 -0
- package/dist/integrations/configure/copilot.js +14 -0
- package/dist/integrations/configure/copilot.js.map +1 -0
- package/dist/integrations/configure/droid.d.ts +12 -0
- package/dist/integrations/configure/droid.js +47 -0
- package/dist/integrations/configure/droid.js.map +1 -0
- package/dist/integrations/configure/dsh.d.ts +34 -0
- package/dist/integrations/configure/dsh.js +146 -0
- package/dist/integrations/configure/dsh.js.map +1 -0
- package/dist/integrations/configure/env-agent.d.ts +26 -0
- package/dist/integrations/configure/env-agent.js +41 -0
- package/dist/integrations/configure/env-agent.js.map +1 -0
- package/dist/integrations/configure/goose.d.ts +12 -0
- package/dist/integrations/configure/goose.js +16 -0
- package/dist/integrations/configure/goose.js.map +1 -0
- package/dist/integrations/configure/hermes.d.ts +41 -0
- package/dist/integrations/configure/hermes.js +247 -0
- package/dist/integrations/configure/hermes.js.map +1 -0
- package/dist/integrations/configure/index.d.ts +25 -0
- package/dist/integrations/configure/index.js +26 -0
- package/dist/integrations/configure/index.js.map +1 -0
- package/dist/integrations/configure/json-tree.d.ts +16 -0
- package/dist/integrations/configure/json-tree.js +19 -0
- package/dist/integrations/configure/json-tree.js.map +1 -0
- package/dist/integrations/configure/kilo.d.ts +9 -0
- package/dist/integrations/configure/kilo.js +19 -0
- package/dist/integrations/configure/kilo.js.map +1 -0
- package/dist/integrations/configure/mimo.d.ts +9 -0
- package/dist/integrations/configure/mimo.js +19 -0
- package/dist/integrations/configure/mimo.js.map +1 -0
- package/dist/integrations/configure/muse.d.ts +9 -0
- package/dist/integrations/configure/muse.js +13 -0
- package/dist/integrations/configure/muse.js.map +1 -0
- package/dist/integrations/configure/openclaude.d.ts +13 -0
- package/dist/integrations/configure/openclaude.js +56 -0
- package/dist/integrations/configure/openclaude.js.map +1 -0
- package/dist/integrations/configure/openclaw.d.ts +24 -0
- package/dist/integrations/configure/openclaw.js +99 -0
- package/dist/integrations/configure/openclaw.js.map +1 -0
- package/dist/integrations/configure/opencode-style.d.ts +25 -0
- package/dist/integrations/configure/opencode-style.js +43 -0
- package/dist/integrations/configure/opencode-style.js.map +1 -0
- package/dist/integrations/configure/opencode.d.ts +9 -0
- package/dist/integrations/configure/opencode.js +19 -0
- package/dist/integrations/configure/opencode.js.map +1 -0
- package/dist/integrations/configure/openhands.d.ts +8 -0
- package/dist/integrations/configure/openhands.js +12 -0
- package/dist/integrations/configure/openhands.js.map +1 -0
- package/dist/integrations/configure/pi.d.ts +14 -0
- package/dist/integrations/configure/pi.js +49 -0
- package/dist/integrations/configure/pi.js.map +1 -0
- package/dist/integrations/configure/poolside.d.ts +8 -0
- package/dist/integrations/configure/poolside.js +12 -0
- package/dist/integrations/configure/poolside.js.map +1 -0
- package/dist/integrations/configure/registry.d.ts +41 -0
- package/dist/integrations/configure/registry.js +50 -0
- package/dist/integrations/configure/registry.js.map +1 -0
- package/dist/integrations/configure/zcode.d.ts +59 -0
- package/dist/integrations/configure/zcode.js +260 -0
- package/dist/integrations/configure/zcode.js.map +1 -0
- package/dist/integrations/configure/zed.d.ts +16 -0
- package/dist/integrations/configure/zed.js +61 -0
- package/dist/integrations/configure/zed.js.map +1 -0
- package/dist/integrations/detect.d.ts +29 -0
- package/dist/integrations/detect.js +43 -0
- package/dist/integrations/detect.js.map +1 -0
- package/dist/integrations/index.d.ts +9 -0
- package/dist/integrations/index.js +10 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/lock/control-token.d.ts +19 -0
- package/dist/lock/control-token.js +58 -0
- package/dist/lock/control-token.js.map +1 -0
- package/dist/lock/index.d.ts +10 -0
- package/dist/lock/index.js +11 -0
- package/dist/lock/index.js.map +1 -0
- package/dist/lock/instance-lock.d.ts +93 -0
- package/dist/lock/instance-lock.js +244 -0
- package/dist/lock/instance-lock.js.map +1 -0
- package/dist/lock/legacy-guard.d.ts +46 -0
- package/dist/lock/legacy-guard.js +87 -0
- package/dist/lock/legacy-guard.js.map +1 -0
- package/dist/lock/model-claim.d.ts +20 -0
- package/dist/lock/model-claim.js +84 -0
- package/dist/lock/model-claim.js.map +1 -0
- package/dist/lock/process-identity.d.ts +48 -0
- package/dist/lock/process-identity.js +180 -0
- package/dist/lock/process-identity.js.map +1 -0
- package/dist/lock/process-journal.d.ts +56 -0
- package/dist/lock/process-journal.js +113 -0
- package/dist/lock/process-journal.js.map +1 -0
- package/dist/models/capabilities.d.ts +73 -0
- package/dist/models/capabilities.js +123 -0
- package/dist/models/capabilities.js.map +1 -0
- package/dist/models/embed.d.ts +30 -0
- package/dist/models/embed.js +83 -0
- package/dist/models/embed.js.map +1 -0
- package/dist/models/gguf/classify.d.ts +29 -0
- package/dist/models/gguf/classify.js +89 -0
- package/dist/models/gguf/classify.js.map +1 -0
- package/dist/models/gguf/index.d.ts +5 -0
- package/dist/models/gguf/index.js +6 -0
- package/dist/models/gguf/index.js.map +1 -0
- package/dist/models/gguf/kv-cache.d.ts +27 -0
- package/dist/models/gguf/kv-cache.js +101 -0
- package/dist/models/gguf/kv-cache.js.map +1 -0
- package/dist/models/gguf/read-file.d.ts +11 -0
- package/dist/models/gguf/read-file.js +21 -0
- package/dist/models/gguf/read-file.js.map +1 -0
- package/dist/models/gguf/reader.d.ts +40 -0
- package/dist/models/gguf/reader.js +271 -0
- package/dist/models/gguf/reader.js.map +1 -0
- package/dist/models/gguf/support.d.ts +47 -0
- package/dist/models/gguf/support.js +48 -0
- package/dist/models/gguf/support.js.map +1 -0
- package/dist/models/hf.d.ts +35 -0
- package/dist/models/hf.js +140 -0
- package/dist/models/hf.js.map +1 -0
- package/dist/models/index.d.ts +14 -0
- package/dist/models/index.js +15 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/model-yml.d.ts +22 -0
- package/dist/models/model-yml.js +63 -0
- package/dist/models/model-yml.js.map +1 -0
- package/dist/models/registry.d.ts +51 -0
- package/dist/models/registry.js +102 -0
- package/dist/models/registry.js.map +1 -0
- package/dist/models/shards.d.ts +20 -0
- package/dist/models/shards.js +46 -0
- package/dist/models/shards.js.map +1 -0
- package/dist/remote-access/cloudflared-args.d.ts +41 -0
- package/dist/remote-access/cloudflared-args.js +59 -0
- package/dist/remote-access/cloudflared-args.js.map +1 -0
- package/dist/remote-access/cloudflared-output.d.ts +26 -0
- package/dist/remote-access/cloudflared-output.js +51 -0
- package/dist/remote-access/cloudflared-output.js.map +1 -0
- package/dist/remote-access/index.d.ts +16 -0
- package/dist/remote-access/index.js +17 -0
- package/dist/remote-access/index.js.map +1 -0
- package/dist/remote-access/journal.d.ts +63 -0
- package/dist/remote-access/journal.js +140 -0
- package/dist/remote-access/journal.js.map +1 -0
- package/dist/remote-access/lan-probe.d.ts +28 -0
- package/dist/remote-access/lan-probe.js +63 -0
- package/dist/remote-access/lan-probe.js.map +1 -0
- package/dist/remote-access/lan.d.ts +31 -0
- package/dist/remote-access/lan.js +90 -0
- package/dist/remote-access/lan.js.map +1 -0
- package/dist/remote-access/manager.d.ts +111 -0
- package/dist/remote-access/manager.js +316 -0
- package/dist/remote-access/manager.js.map +1 -0
- package/dist/remote-access/probe.d.ts +92 -0
- package/dist/remote-access/probe.js +186 -0
- package/dist/remote-access/probe.js.map +1 -0
- package/dist/remote-access/process.d.ts +66 -0
- package/dist/remote-access/process.js +160 -0
- package/dist/remote-access/process.js.map +1 -0
- package/dist/remote-access/spawner.d.ts +25 -0
- package/dist/remote-access/spawner.js +49 -0
- package/dist/remote-access/spawner.js.map +1 -0
- package/dist/remote-access/status.d.ts +39 -0
- package/dist/remote-access/status.js +49 -0
- package/dist/remote-access/status.js.map +1 -0
- package/dist/remote-access/wiring.d.ts +34 -0
- package/dist/remote-access/wiring.js +47 -0
- package/dist/remote-access/wiring.js.map +1 -0
- package/dist/router/index.d.ts +7 -0
- package/dist/router/index.js +8 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/resolve.d.ts +41 -0
- package/dist/router/resolve.js +53 -0
- package/dist/router/resolve.js.map +1 -0
- package/dist/runtime/foundation-models/errors.d.ts +28 -0
- package/dist/runtime/foundation-models/errors.js +48 -0
- package/dist/runtime/foundation-models/errors.js.map +1 -0
- package/dist/runtime/foundation-models/index.d.ts +8 -0
- package/dist/runtime/foundation-models/index.js +9 -0
- package/dist/runtime/foundation-models/index.js.map +1 -0
- package/dist/runtime/foundation-models/runtime.d.ts +73 -0
- package/dist/runtime/foundation-models/runtime.js +186 -0
- package/dist/runtime/foundation-models/runtime.js.map +1 -0
- package/dist/runtime/index.d.ts +5 -0
- package/dist/runtime/index.js +6 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/llamacpp/args.d.ts +90 -0
- package/dist/runtime/llamacpp/args.js +379 -0
- package/dist/runtime/llamacpp/args.js.map +1 -0
- package/dist/runtime/llamacpp/ctx-ladder.d.ts +16 -0
- package/dist/runtime/llamacpp/ctx-ladder.js +28 -0
- package/dist/runtime/llamacpp/ctx-ladder.js.map +1 -0
- package/dist/runtime/llamacpp/devices.d.ts +26 -0
- package/dist/runtime/llamacpp/devices.js +86 -0
- package/dist/runtime/llamacpp/devices.js.map +1 -0
- package/dist/runtime/llamacpp/errors.d.ts +34 -0
- package/dist/runtime/llamacpp/errors.js +137 -0
- package/dist/runtime/llamacpp/errors.js.map +1 -0
- package/dist/runtime/llamacpp/index.d.ts +14 -0
- package/dist/runtime/llamacpp/index.js +15 -0
- package/dist/runtime/llamacpp/index.js.map +1 -0
- package/dist/runtime/llamacpp/load-plan.d.ts +113 -0
- package/dist/runtime/llamacpp/load-plan.js +259 -0
- package/dist/runtime/llamacpp/load-plan.js.map +1 -0
- package/dist/runtime/llamacpp/policy.d.ts +70 -0
- package/dist/runtime/llamacpp/policy.js +191 -0
- package/dist/runtime/llamacpp/policy.js.map +1 -0
- package/dist/runtime/llamacpp/probe.d.ts +13 -0
- package/dist/runtime/llamacpp/probe.js +35 -0
- package/dist/runtime/llamacpp/probe.js.map +1 -0
- package/dist/runtime/llamacpp/runtime-device.d.ts +33 -0
- package/dist/runtime/llamacpp/runtime-device.js +169 -0
- package/dist/runtime/llamacpp/runtime-device.js.map +1 -0
- package/dist/runtime/llamacpp/runtime.d.ts +151 -0
- package/dist/runtime/llamacpp/runtime.js +535 -0
- package/dist/runtime/llamacpp/runtime.js.map +1 -0
- package/dist/runtime/mlx/args.d.ts +10 -0
- package/dist/runtime/mlx/args.js +44 -0
- package/dist/runtime/mlx/args.js.map +1 -0
- package/dist/runtime/mlx/config.d.ts +71 -0
- package/dist/runtime/mlx/config.js +91 -0
- package/dist/runtime/mlx/config.js.map +1 -0
- package/dist/runtime/mlx/errors.d.ts +21 -0
- package/dist/runtime/mlx/errors.js +73 -0
- package/dist/runtime/mlx/errors.js.map +1 -0
- package/dist/runtime/mlx/index.d.ts +12 -0
- package/dist/runtime/mlx/index.js +13 -0
- package/dist/runtime/mlx/index.js.map +1 -0
- package/dist/runtime/mlx/model-files.d.ts +29 -0
- package/dist/runtime/mlx/model-files.js +82 -0
- package/dist/runtime/mlx/model-files.js.map +1 -0
- package/dist/runtime/mlx/runtime.d.ts +77 -0
- package/dist/runtime/mlx/runtime.js +223 -0
- package/dist/runtime/mlx/runtime.js.map +1 -0
- package/dist/runtime/mlx/shard-repair.d.ts +25 -0
- package/dist/runtime/mlx/shard-repair.js +44 -0
- package/dist/runtime/mlx/shard-repair.js.map +1 -0
- package/dist/runtime/shared/env.d.ts +49 -0
- package/dist/runtime/shared/env.js +155 -0
- package/dist/runtime/shared/env.js.map +1 -0
- package/dist/runtime/shared/external-sessions.d.ts +67 -0
- package/dist/runtime/shared/external-sessions.js +155 -0
- package/dist/runtime/shared/external-sessions.js.map +1 -0
- package/dist/runtime/shared/index.d.ts +17 -0
- package/dist/runtime/shared/index.js +18 -0
- package/dist/runtime/shared/index.js.map +1 -0
- package/dist/runtime/shared/load-cancel.d.ts +45 -0
- package/dist/runtime/shared/load-cancel.js +95 -0
- package/dist/runtime/shared/load-cancel.js.map +1 -0
- package/dist/runtime/shared/local-runtime.d.ts +68 -0
- package/dist/runtime/shared/local-runtime.js +12 -0
- package/dist/runtime/shared/local-runtime.js.map +1 -0
- package/dist/runtime/shared/log-stream.d.ts +4 -0
- package/dist/runtime/shared/log-stream.js +28 -0
- package/dist/runtime/shared/log-stream.js.map +1 -0
- package/dist/runtime/shared/paths.d.ts +21 -0
- package/dist/runtime/shared/paths.js +63 -0
- package/dist/runtime/shared/paths.js.map +1 -0
- package/dist/runtime/shared/ports.d.ts +26 -0
- package/dist/runtime/shared/ports.js +45 -0
- package/dist/runtime/shared/ports.js.map +1 -0
- package/dist/runtime/shared/process.d.ts +95 -0
- package/dist/runtime/shared/process.js +224 -0
- package/dist/runtime/shared/process.js.map +1 -0
- package/dist/runtime/shared/sidecar.d.ts +86 -0
- package/dist/runtime/shared/sidecar.js +214 -0
- package/dist/runtime/shared/sidecar.js.map +1 -0
- package/dist/server/clients.d.ts +40 -0
- package/dist/server/clients.js +74 -0
- package/dist/server/clients.js.map +1 -0
- package/dist/server/control/index.d.ts +12 -0
- package/dist/server/control/index.js +12 -0
- package/dist/server/control/index.js.map +1 -0
- package/dist/server/control/router.d.ts +9 -0
- package/dist/server/control/router.js +61 -0
- package/dist/server/control/router.js.map +1 -0
- package/dist/server/control/routes/backends.d.ts +4 -0
- package/dist/server/control/routes/backends.js +47 -0
- package/dist/server/control/routes/backends.js.map +1 -0
- package/dist/server/control/routes/clients.d.ts +4 -0
- package/dist/server/control/routes/clients.js +30 -0
- package/dist/server/control/routes/clients.js.map +1 -0
- package/dist/server/control/routes/cloud.d.ts +4 -0
- package/dist/server/control/routes/cloud.js +32 -0
- package/dist/server/control/routes/cloud.js.map +1 -0
- package/dist/server/control/routes/diffusion-video.d.ts +10 -0
- package/dist/server/control/routes/diffusion-video.js +33 -0
- package/dist/server/control/routes/diffusion-video.js.map +1 -0
- package/dist/server/control/routes/diffusion.d.ts +15 -0
- package/dist/server/control/routes/diffusion.js +71 -0
- package/dist/server/control/routes/diffusion.js.map +1 -0
- package/dist/server/control/routes/disk.d.ts +4 -0
- package/dist/server/control/routes/disk.js +11 -0
- package/dist/server/control/routes/disk.js.map +1 -0
- package/dist/server/control/routes/external-sessions.d.ts +4 -0
- package/dist/server/control/routes/external-sessions.js +27 -0
- package/dist/server/control/routes/external-sessions.js.map +1 -0
- package/dist/server/control/routes/hardware.d.ts +4 -0
- package/dist/server/control/routes/hardware.js +14 -0
- package/dist/server/control/routes/hardware.js.map +1 -0
- package/dist/server/control/routes/lifecycle.d.ts +12 -0
- package/dist/server/control/routes/lifecycle.js +67 -0
- package/dist/server/control/routes/lifecycle.js.map +1 -0
- package/dist/server/control/routes/models.d.ts +7 -0
- package/dist/server/control/routes/models.js +59 -0
- package/dist/server/control/routes/models.js.map +1 -0
- package/dist/server/control/routes/public-server.d.ts +4 -0
- package/dist/server/control/routes/public-server.js +30 -0
- package/dist/server/control/routes/public-server.js.map +1 -0
- package/dist/server/control/routes/remote-access.d.ts +7 -0
- package/dist/server/control/routes/remote-access.js +16 -0
- package/dist/server/control/routes/remote-access.js.map +1 -0
- package/dist/server/control/routes/settings.d.ts +4 -0
- package/dist/server/control/routes/settings.js +58 -0
- package/dist/server/control/routes/settings.js.map +1 -0
- package/dist/server/control/routes/telemetry.d.ts +7 -0
- package/dist/server/control/routes/telemetry.js +46 -0
- package/dist/server/control/routes/telemetry.js.map +1 -0
- package/dist/server/control/server.d.ts +26 -0
- package/dist/server/control/server.js +111 -0
- package/dist/server/control/server.js.map +1 -0
- package/dist/server/control/types.d.ts +271 -0
- package/dist/server/control/types.js +6 -0
- package/dist/server/control/types.js.map +1 -0
- package/dist/server/http.d.ts +62 -0
- package/dist/server/http.js +220 -0
- package/dist/server/http.js.map +1 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.js +10 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/public/ctx.d.ts +23 -0
- package/dist/server/public/ctx.js +42 -0
- package/dist/server/public/ctx.js.map +1 -0
- package/dist/server/public/dynamic-hosts.d.ts +40 -0
- package/dist/server/public/dynamic-hosts.js +117 -0
- package/dist/server/public/dynamic-hosts.js.map +1 -0
- package/dist/server/public/errors.d.ts +36 -0
- package/dist/server/public/errors.js +120 -0
- package/dist/server/public/errors.js.map +1 -0
- package/dist/server/public/exchange.d.ts +42 -0
- package/dist/server/public/exchange.js +85 -0
- package/dist/server/public/exchange.js.map +1 -0
- package/dist/server/public/forward.d.ts +53 -0
- package/dist/server/public/forward.js +448 -0
- package/dist/server/public/forward.js.map +1 -0
- package/dist/server/public/gates.d.ts +49 -0
- package/dist/server/public/gates.js +181 -0
- package/dist/server/public/gates.js.map +1 -0
- package/dist/server/public/images-params.d.ts +50 -0
- package/dist/server/public/images-params.js +162 -0
- package/dist/server/public/images-params.js.map +1 -0
- package/dist/server/public/images.d.ts +12 -0
- package/dist/server/public/images.js +96 -0
- package/dist/server/public/images.js.map +1 -0
- package/dist/server/public/index.d.ts +58 -0
- package/dist/server/public/index.js +253 -0
- package/dist/server/public/index.js.map +1 -0
- package/dist/server/public/listing.d.ts +27 -0
- package/dist/server/public/listing.js +116 -0
- package/dist/server/public/listing.js.map +1 -0
- package/dist/server/public/responses.d.ts +11 -0
- package/dist/server/public/responses.js +158 -0
- package/dist/server/public/responses.js.map +1 -0
- package/dist/server/public/sse.d.ts +33 -0
- package/dist/server/public/sse.js +48 -0
- package/dist/server/public/sse.js.map +1 -0
- package/dist/server/public/static-assets.generated.d.ts +3 -0
- package/dist/server/public/static-assets.generated.js +6 -0
- package/dist/server/public/static-assets.generated.js.map +1 -0
- package/dist/server/public/static.d.ts +13 -0
- package/dist/server/public/static.js +75 -0
- package/dist/server/public/static.js.map +1 -0
- package/dist/server/public/subscription.d.ts +14 -0
- package/dist/server/public/subscription.js +56 -0
- package/dist/server/public/subscription.js.map +1 -0
- package/dist/server/public/telemetry.d.ts +65 -0
- package/dist/server/public/telemetry.js +284 -0
- package/dist/server/public/telemetry.js.map +1 -0
- package/dist/server/public/trace.d.ts +66 -0
- package/dist/server/public/trace.js +223 -0
- package/dist/server/public/trace.js.map +1 -0
- package/dist/server/public/types.d.ts +131 -0
- package/dist/server/public/types.js +9 -0
- package/dist/server/public/types.js.map +1 -0
- package/dist/server/public/videos-params.d.ts +95 -0
- package/dist/server/public/videos-params.js +220 -0
- package/dist/server/public/videos-params.js.map +1 -0
- package/dist/server/public/videos.d.ts +16 -0
- package/dist/server/public/videos.js +188 -0
- package/dist/server/public/videos.js.map +1 -0
- package/dist/server/public/wire.d.ts +53 -0
- package/dist/server/public/wire.js +174 -0
- package/dist/server/public/wire.js.map +1 -0
- package/dist/server/shims/anthropic.d.ts +52 -0
- package/dist/server/shims/anthropic.js +519 -0
- package/dist/server/shims/anthropic.js.map +1 -0
- package/dist/server/shims/chat-to-responses.d.ts +113 -0
- package/dist/server/shims/chat-to-responses.js +557 -0
- package/dist/server/shims/chat-to-responses.js.map +1 -0
- package/dist/server/shims/index.d.ts +8 -0
- package/dist/server/shims/index.js +9 -0
- package/dist/server/shims/index.js.map +1 -0
- package/dist/server/shims/json.d.ts +10 -0
- package/dist/server/shims/json.js +78 -0
- package/dist/server/shims/json.js.map +1 -0
- package/dist/server/shims/responses.d.ts +79 -0
- package/dist/server/shims/responses.js +543 -0
- package/dist/server/shims/responses.js.map +1 -0
- package/dist/server/state-file.d.ts +44 -0
- package/dist/server/state-file.js +107 -0
- package/dist/server/state-file.js.map +1 -0
- package/dist/settings/import.d.ts +61 -0
- package/dist/settings/import.js +104 -0
- package/dist/settings/import.js.map +1 -0
- package/dist/settings/index.d.ts +11 -0
- package/dist/settings/index.js +12 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/schema/foundation-models.json +1 -0
- package/dist/settings/schema/llamacpp-upstream.json +489 -0
- package/dist/settings/schema/llamacpp.json +475 -0
- package/dist/settings/schema/mlx.json +136 -0
- package/dist/settings/schema.d.ts +35 -0
- package/dist/settings/schema.js +196 -0
- package/dist/settings/schema.js.map +1 -0
- package/dist/settings/store.d.ts +168 -0
- package/dist/settings/store.js +350 -0
- package/dist/settings/store.js.map +1 -0
- package/dist/speculative/chat-template-overrides.d.ts +35 -0
- package/dist/speculative/chat-template-overrides.js +142 -0
- package/dist/speculative/chat-template-overrides.js.map +1 -0
- package/dist/speculative/dflash-registry.d.ts +50 -0
- package/dist/speculative/dflash-registry.js +258 -0
- package/dist/speculative/dflash-registry.js.map +1 -0
- package/dist/speculative/gemma-mtp-registry.d.ts +48 -0
- package/dist/speculative/gemma-mtp-registry.js +79 -0
- package/dist/speculative/gemma-mtp-registry.js.map +1 -0
- package/dist/speculative/index.d.ts +18 -0
- package/dist/speculative/index.js +19 -0
- package/dist/speculative/index.js.map +1 -0
- package/dist/speculative/mlx-dflash-registry.d.ts +39 -0
- package/dist/speculative/mlx-dflash-registry.js +230 -0
- package/dist/speculative/mlx-dflash-registry.js.map +1 -0
- package/dist/speculative/mlx-eagle3-registry.d.ts +24 -0
- package/dist/speculative/mlx-eagle3-registry.js +81 -0
- package/dist/speculative/mlx-eagle3-registry.js.map +1 -0
- package/dist/speculative/mlx-mtp-registry.d.ts +31 -0
- package/dist/speculative/mlx-mtp-registry.js +139 -0
- package/dist/speculative/mlx-mtp-registry.js.map +1 -0
- package/dist/speculative/transcription-registry.d.ts +72 -0
- package/dist/speculative/transcription-registry.js +94 -0
- package/dist/speculative/transcription-registry.js.map +1 -0
- package/dist/telemetry/config.d.ts +38 -0
- package/dist/telemetry/config.js +44 -0
- package/dist/telemetry/config.js.map +1 -0
- package/dist/telemetry/consent.d.ts +21 -0
- package/dist/telemetry/consent.js +35 -0
- package/dist/telemetry/consent.js.map +1 -0
- package/dist/telemetry/core-reporter.d.ts +47 -0
- package/dist/telemetry/core-reporter.js +72 -0
- package/dist/telemetry/core-reporter.js.map +1 -0
- package/dist/telemetry/daemon.d.ts +40 -0
- package/dist/telemetry/daemon.js +67 -0
- package/dist/telemetry/daemon.js.map +1 -0
- package/dist/telemetry/dsn.d.ts +15 -0
- package/dist/telemetry/dsn.js +32 -0
- package/dist/telemetry/dsn.js.map +1 -0
- package/dist/telemetry/envelope.d.ts +97 -0
- package/dist/telemetry/envelope.js +95 -0
- package/dist/telemetry/envelope.js.map +1 -0
- package/dist/telemetry/index.d.ts +18 -0
- package/dist/telemetry/index.js +19 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/policy.d.ts +39 -0
- package/dist/telemetry/policy.js +142 -0
- package/dist/telemetry/policy.js.map +1 -0
- package/dist/telemetry/reporter.d.ts +80 -0
- package/dist/telemetry/reporter.js +0 -0
- package/dist/telemetry/reporter.js.map +1 -0
- package/dist/telemetry/reports.d.ts +68 -0
- package/dist/telemetry/reports.js +212 -0
- package/dist/telemetry/reports.js.map +1 -0
- package/dist/telemetry/scrub.d.ts +19 -0
- package/dist/telemetry/scrub.js +75 -0
- package/dist/telemetry/scrub.js.map +1 -0
- package/dist/telemetry/stack.d.ts +21 -0
- package/dist/telemetry/stack.js +68 -0
- package/dist/telemetry/stack.js.map +1 -0
- package/dist/telemetry/store.d.ts +17 -0
- package/dist/telemetry/store.js +51 -0
- package/dist/telemetry/store.js.map +1 -0
- package/dist/telemetry/subscribe.d.ts +13 -0
- package/dist/telemetry/subscribe.js +19 -0
- package/dist/telemetry/subscribe.js.map +1 -0
- package/dist/telemetry/types.d.ts +40 -0
- package/dist/telemetry/types.js +2 -0
- package/dist/telemetry/types.js.map +1 -0
- package/dist/util/index.d.ts +5 -0
- package/dist/util/index.js +6 -0
- package/dist/util/index.js.map +1 -0
- package/dist/util/rust-number.d.ts +27 -0
- package/dist/util/rust-number.js +101 -0
- package/dist/util/rust-number.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/package.json +86 -0
- package/src/settings/schema/foundation-models.json +1 -0
- package/src/settings/schema/llamacpp-upstream.json +489 -0
- package/src/settings/schema/llamacpp.json +475 -0
- package/src/settings/schema/mlx.json +136 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The image side of the job runner: what an image job validates, sends, decodes and saves. Moved
|
|
3
|
+
* out of `jobs.ts` when video arrived; the functions are the plugin's (`jobs.rs` at app commit
|
|
4
|
+
* `ec1fd3ea7`), the `JobKind` wrapper is what the shared runner sees.
|
|
5
|
+
*/
|
|
6
|
+
import { basename } from 'node:path';
|
|
7
|
+
import { buildImgGenRequest } from './args.js';
|
|
8
|
+
import { diffusionError, internalError } from './errors.js';
|
|
9
|
+
import { isBlankOutput } from './gallery.js';
|
|
10
|
+
import { sampledSteps } from './tracker.js';
|
|
11
|
+
import { stripDataUrl, validateRequest } from './validate.js';
|
|
12
|
+
import { defaultStrength, usesInitImage, usesMask, usesReferences, workflowOf } from './workflow.js';
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Inputs
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
/** One source as the base64 `sd-server` takes: inline bytes as they are, a file read from disk. */
|
|
17
|
+
export async function resolveSource(source, deps) {
|
|
18
|
+
if ('base64' in source)
|
|
19
|
+
return stripDataUrl(source.base64);
|
|
20
|
+
try {
|
|
21
|
+
return (await deps.readSource(source.path)).toString('base64');
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
throw diffusionError('INVALID_REQUEST', 'The source image could not be read.', error instanceof Error ? error.message : String(error));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** The request's images as the base64 `sd-server` takes, once per job (not per retry). Only what the workflow uses is read. */
|
|
28
|
+
export async function resolveInputs(request, deps) {
|
|
29
|
+
const workflow = workflowOf(request);
|
|
30
|
+
const inputs = { refs: [] };
|
|
31
|
+
if (workflow === 'create' || request.initImage === undefined)
|
|
32
|
+
return inputs;
|
|
33
|
+
const source = await resolveSource(request.initImage, deps);
|
|
34
|
+
if (usesReferences(workflow)) {
|
|
35
|
+
inputs.refs.push(source);
|
|
36
|
+
for (const extra of request.referenceImages ?? [])
|
|
37
|
+
inputs.refs.push(await resolveSource(extra, deps));
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
inputs.init = source;
|
|
41
|
+
if (usesMask(workflow) && request.maskImage !== undefined)
|
|
42
|
+
inputs.mask = await resolveSource(request.maskImage, deps);
|
|
43
|
+
}
|
|
44
|
+
return inputs;
|
|
45
|
+
}
|
|
46
|
+
/** A source as a job record carries it: the path stays, inline bytes are blanked. */
|
|
47
|
+
export const redactSource = (source) => 'path' in source ? { path: source.path } : { base64: '' };
|
|
48
|
+
/** The request as the job record and every job event carry it: file paths stay, inline bytes are blanked. */
|
|
49
|
+
export function withoutSources(request) {
|
|
50
|
+
const copy = { ...request };
|
|
51
|
+
if (request.initImage)
|
|
52
|
+
copy.initImage = redactSource(request.initImage);
|
|
53
|
+
if (request.maskImage)
|
|
54
|
+
copy.maskImage = redactSource(request.maskImage);
|
|
55
|
+
if (request.referenceImages)
|
|
56
|
+
copy.referenceImages = request.referenceImages.map(redactSource);
|
|
57
|
+
return copy;
|
|
58
|
+
}
|
|
59
|
+
// ---------------------------------------------------------------------------
|
|
60
|
+
// Results
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
/** The images of a completed job, in index order. */
|
|
63
|
+
export function decodeImages(job) {
|
|
64
|
+
const result = job['result'];
|
|
65
|
+
const list = result !== null && typeof result === 'object' ? result['images'] : undefined;
|
|
66
|
+
const items = [];
|
|
67
|
+
if (Array.isArray(list))
|
|
68
|
+
for (const image of list) {
|
|
69
|
+
if (image === null || typeof image !== 'object')
|
|
70
|
+
continue;
|
|
71
|
+
const { b64_json: b64, index } = image;
|
|
72
|
+
if (typeof b64 !== 'string')
|
|
73
|
+
continue;
|
|
74
|
+
items.push({ index: typeof index === 'number' ? index : 0, b64 });
|
|
75
|
+
}
|
|
76
|
+
items.sort((a, b) => a.index - b.index);
|
|
77
|
+
const out = items.map(({ b64 }) => {
|
|
78
|
+
const trimmed = b64.trim();
|
|
79
|
+
const bytes = Buffer.from(trimmed, 'base64');
|
|
80
|
+
if (bytes.length === 0 && trimmed !== '')
|
|
81
|
+
throw internalError('sd-server returned an undecodable image.');
|
|
82
|
+
return bytes;
|
|
83
|
+
});
|
|
84
|
+
if (out.length === 0)
|
|
85
|
+
throw internalError('The image server completed the job but returned no images.');
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
88
|
+
/** Refuse a blank batch, then write every PNG with its recipe and thumbnail into the gallery. */
|
|
89
|
+
export async function saveImageOutputs(deps, ctx, pngs) {
|
|
90
|
+
const { id, request, spec, seed: batchSeed, startedAt } = ctx;
|
|
91
|
+
// A frame sd.cpp returned after a numerical overflow is not an image; nothing of the batch is kept.
|
|
92
|
+
for (const png of pngs)
|
|
93
|
+
if (await isBlankOutput(png))
|
|
94
|
+
throw diffusionError('INVALID_OUTPUT', 'The image engine produced a blank frame. Nothing was saved.');
|
|
95
|
+
const outputDir = deps.state.outputDir();
|
|
96
|
+
const workflow = workflowOf(request);
|
|
97
|
+
const createdAtMs = deps.now();
|
|
98
|
+
const durationMs = Math.max(createdAtMs - startedAt, 0);
|
|
99
|
+
const items = [];
|
|
100
|
+
const bytes = [];
|
|
101
|
+
for (const [index, png] of pngs.entries()) {
|
|
102
|
+
const recipe = {
|
|
103
|
+
jobId: id,
|
|
104
|
+
index,
|
|
105
|
+
prompt: request.prompt,
|
|
106
|
+
negativePrompt: request.negativePrompt ? request.negativePrompt : null,
|
|
107
|
+
width: request.width,
|
|
108
|
+
height: request.height,
|
|
109
|
+
steps: request.steps,
|
|
110
|
+
cfgScale: request.cfgScale,
|
|
111
|
+
guidance: request.guidance ?? spec.defaults.guidance ?? null,
|
|
112
|
+
seed: batchSeed + index,
|
|
113
|
+
batchSeed,
|
|
114
|
+
batchSize: request.batchSize,
|
|
115
|
+
samplingMethod: request.samplingMethod ?? spec.defaults.samplingMethod ?? null,
|
|
116
|
+
flowShift: request.flowShift ?? spec.defaults.flowShift ?? null,
|
|
117
|
+
workflow,
|
|
118
|
+
// The effective value, so a recipe can be replayed as sent.
|
|
119
|
+
strength: usesInitImage(workflow) ? (request.strength ?? defaultStrength(workflow)) : null,
|
|
120
|
+
model: {
|
|
121
|
+
modelId: spec.modelId,
|
|
122
|
+
family: spec.family,
|
|
123
|
+
displayName: spec.displayName,
|
|
124
|
+
filename: basename(spec.files.diffusionModel),
|
|
125
|
+
},
|
|
126
|
+
engine: {
|
|
127
|
+
kind: spec.engine,
|
|
128
|
+
backend: spec.backend,
|
|
129
|
+
tag: spec.tag,
|
|
130
|
+
offload: spec.offload,
|
|
131
|
+
cpuFallback: spec.cpuFallback,
|
|
132
|
+
},
|
|
133
|
+
createdAtMs,
|
|
134
|
+
durationMs,
|
|
135
|
+
};
|
|
136
|
+
const saved = await deps.gallery.save(outputDir, recipe, png);
|
|
137
|
+
deps.state.updateJob(id, (record) => record.job.outputs.push(saved.item));
|
|
138
|
+
items.push(saved.item);
|
|
139
|
+
bytes.push(saved.bytes);
|
|
140
|
+
}
|
|
141
|
+
return { items, bytes };
|
|
142
|
+
}
|
|
143
|
+
// ---------------------------------------------------------------------------
|
|
144
|
+
// The kind
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
146
|
+
export const IMAGE_JOB_KIND = {
|
|
147
|
+
id: 'image',
|
|
148
|
+
modality: 'image',
|
|
149
|
+
submitPath: '/sdcpp/v1/img_gen',
|
|
150
|
+
messages: {
|
|
151
|
+
busy: 'An image is already being generated.',
|
|
152
|
+
wrongModel: 'The loaded model generates video, not images. Load an image model first.',
|
|
153
|
+
outOfMemory: 'sd-server ran out of memory while generating.',
|
|
154
|
+
failed: 'The image server failed to generate.',
|
|
155
|
+
},
|
|
156
|
+
validate: (request, spec, deps) => validateRequest(request, spec, deps),
|
|
157
|
+
newJob: (id, spec, request, now) => ({
|
|
158
|
+
id,
|
|
159
|
+
state: 'queued',
|
|
160
|
+
modelId: spec.modelId,
|
|
161
|
+
request: withoutSources(request),
|
|
162
|
+
createdAtMs: now,
|
|
163
|
+
progress: null,
|
|
164
|
+
outputs: [],
|
|
165
|
+
}),
|
|
166
|
+
resolveInputs,
|
|
167
|
+
buildBody: (request, spec, seed, inputs) => buildImgGenRequest(request, spec.defaults, seed, inputs),
|
|
168
|
+
trackerShape: (request) => ({ steps: sampledSteps(request), batch: request.batchSize }),
|
|
169
|
+
progress: (snapshot) => snapshot,
|
|
170
|
+
emitJob: (emit, job) => emit('diffusion:job', { job }),
|
|
171
|
+
emitProgress: (emit, jobId, progress) => emit('diffusion:progress', { jobId, progress }),
|
|
172
|
+
cancelGenerating: (capabilities) => capabilities.cancelGenerating,
|
|
173
|
+
decode: decodeImages,
|
|
174
|
+
save: saveImageOutputs,
|
|
175
|
+
};
|
|
176
|
+
//# sourceMappingURL=image-job.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-job.js","sourceRoot":"","sources":["../../src/diffusion/image-job.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image generation on stable-diffusion.cpp: one resident `sd-server`, jobs against its
|
|
3
|
+
* `/sdcpp/v1/*` API, step progress read from its output, and the gallery on disk. A module of its
|
|
4
|
+
* own, not a local runtime (ADR 2026-09-17-image-generation-is-its-own-module-not-a-local-runtime).
|
|
5
|
+
*
|
|
6
|
+
* Ported from: src-tauri/plugins/tauri-plugin-atomic-diffusion/src/ at app commit `ec1fd3ea7`.
|
|
7
|
+
*/
|
|
8
|
+
export * from './args.js';
|
|
9
|
+
export * from './compat.js';
|
|
10
|
+
export * from './containment.js';
|
|
11
|
+
export * from './errors.js';
|
|
12
|
+
export * from './gallery.js';
|
|
13
|
+
export * from './http.js';
|
|
14
|
+
export * from './idle.js';
|
|
15
|
+
export * from './image-job.js';
|
|
16
|
+
export * from './install.js';
|
|
17
|
+
export * from './job-kind.js';
|
|
18
|
+
export * from './jobs.js';
|
|
19
|
+
export * from './mutex.js';
|
|
20
|
+
export * from './parse.js';
|
|
21
|
+
export * from './png.js';
|
|
22
|
+
export * from './progress.js';
|
|
23
|
+
export * from './recipe.js';
|
|
24
|
+
export * from './server-process.js';
|
|
25
|
+
export * from './service.js';
|
|
26
|
+
export * from './session.js';
|
|
27
|
+
export * from './state.js';
|
|
28
|
+
export * from './tracker.js';
|
|
29
|
+
export * from './types.js';
|
|
30
|
+
export * from './validate.js';
|
|
31
|
+
export * from './video-gallery.js';
|
|
32
|
+
export * from './video-job.js';
|
|
33
|
+
export * from './video-recipe.js';
|
|
34
|
+
export * from './wiring.js';
|
|
35
|
+
export * from './workflow.js';
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image generation on stable-diffusion.cpp: one resident `sd-server`, jobs against its
|
|
3
|
+
* `/sdcpp/v1/*` API, step progress read from its output, and the gallery on disk. A module of its
|
|
4
|
+
* own, not a local runtime (ADR 2026-09-17-image-generation-is-its-own-module-not-a-local-runtime).
|
|
5
|
+
*
|
|
6
|
+
* Ported from: src-tauri/plugins/tauri-plugin-atomic-diffusion/src/ at app commit `ec1fd3ea7`.
|
|
7
|
+
*/
|
|
8
|
+
export * from './args.js';
|
|
9
|
+
export * from './compat.js';
|
|
10
|
+
export * from './containment.js';
|
|
11
|
+
export * from './errors.js';
|
|
12
|
+
export * from './gallery.js';
|
|
13
|
+
export * from './http.js';
|
|
14
|
+
export * from './idle.js';
|
|
15
|
+
export * from './image-job.js';
|
|
16
|
+
export * from './install.js';
|
|
17
|
+
export * from './job-kind.js';
|
|
18
|
+
export * from './jobs.js';
|
|
19
|
+
export * from './mutex.js';
|
|
20
|
+
export * from './parse.js';
|
|
21
|
+
export * from './png.js';
|
|
22
|
+
export * from './progress.js';
|
|
23
|
+
export * from './recipe.js';
|
|
24
|
+
export * from './server-process.js';
|
|
25
|
+
export * from './service.js';
|
|
26
|
+
export * from './session.js';
|
|
27
|
+
export * from './state.js';
|
|
28
|
+
export * from './tracker.js';
|
|
29
|
+
export * from './types.js';
|
|
30
|
+
export * from './validate.js';
|
|
31
|
+
export * from './video-gallery.js';
|
|
32
|
+
export * from './video-job.js';
|
|
33
|
+
export * from './video-recipe.js';
|
|
34
|
+
export * from './wiring.js';
|
|
35
|
+
export * from './workflow.js';
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diffusion/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,qBAAqB,CAAA;AACnC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Engine installs under `<data>/diffusion/backends/<tag>/<backendId>/` and the model-file store
|
|
3
|
+
* under `<data>/diffusion/models/`. Port of `install.rs` in `tauri-plugin-atomic-diffusion` (app
|
|
4
|
+
* commit `767ff6350`).
|
|
5
|
+
*
|
|
6
|
+
* The download and the extraction happen in the app, through its ordinary download pipeline. This
|
|
7
|
+
* module finalises a tree (permissions, sanity probe, ownership marker, install record) and refuses
|
|
8
|
+
* to delete anything it did not mark as its own.
|
|
9
|
+
*/
|
|
10
|
+
import type { DiffusionBackendInstallRecord, DiffusionModelFile, FinalizeBackendInstallArgs } from '../contracts/index.js';
|
|
11
|
+
export declare const OWNER_MARKER = ".atomic-owned";
|
|
12
|
+
export declare const INSTALL_RECORD = "install.json";
|
|
13
|
+
/**
|
|
14
|
+
* The first launch of a just-unpacked tree is slow for reasons unrelated to the binary: Gatekeeper
|
|
15
|
+
* looks every new Mach-O up at Apple and XProtect scans the 109 MB dylib (1.5–2.3 s on an idle M4
|
|
16
|
+
* Pro, 0.02 s the second time); Windows real-time protection scans each unseen DLL, and the CUDA
|
|
17
|
+
* tree is 1.2 GB of them written the moment before. A 10 s budget failed a healthy install that
|
|
18
|
+
* passed on retry.
|
|
19
|
+
*/
|
|
20
|
+
export declare const PROBE_TIMEOUT_MS = 120000;
|
|
21
|
+
/** A scanner can hold a freshly written executable for a moment, which surfaces as a spawn error. */
|
|
22
|
+
export declare const PROBE_SPAWN_ATTEMPTS = 3;
|
|
23
|
+
export declare const PROBE_SPAWN_RETRY_DELAY_MS = 1000;
|
|
24
|
+
export declare function serverBinaryName(platform: NodeJS.Platform): string;
|
|
25
|
+
export declare function cliBinaryName(platform: NodeJS.Platform): string;
|
|
26
|
+
export interface InstallDeps {
|
|
27
|
+
platform?: NodeJS.Platform;
|
|
28
|
+
env?: NodeJS.ProcessEnv;
|
|
29
|
+
now?: () => number;
|
|
30
|
+
probeTimeoutMs?: number;
|
|
31
|
+
spawnRetryDelayMs?: number;
|
|
32
|
+
log?: (level: 'info' | 'warn', msg: string) => void;
|
|
33
|
+
}
|
|
34
|
+
/** `install.json` holds the record minus `dir`, which is where the file lives. */
|
|
35
|
+
export declare function writeInstallRecord(dir: string, record: DiffusionBackendInstallRecord): Promise<void>;
|
|
36
|
+
export declare function readInstallRecord(dir: string): Promise<DiffusionBackendInstallRecord | undefined>;
|
|
37
|
+
export declare function isOwned(dir: string): Promise<boolean>;
|
|
38
|
+
export declare function probeOutputIsSdcpp(text: string): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Run `<binary> --help` and check that the output is stable-diffusion.cpp's. A spawn failure is
|
|
41
|
+
* retried (a scanner may still be holding the file); a binary that never answers is killed.
|
|
42
|
+
*/
|
|
43
|
+
export declare function probeBinary(binary: string, deps?: InstallDeps): Promise<void>;
|
|
44
|
+
/** Finalise a tree the app extracted: permissions, probe, then marker and record. */
|
|
45
|
+
export declare function finalizeBackendInstall(backendsRoot: string, args: FinalizeBackendInstallArgs, deps?: InstallDeps): Promise<DiffusionBackendInstallRecord>;
|
|
46
|
+
/** Every `<root>/<tag>/<backendId>/install.json` with its marker and its server binary, newest first. */
|
|
47
|
+
export declare function listInstalledBackends(backendsRoot: string, platform?: NodeJS.Platform): Promise<DiffusionBackendInstallRecord[]>;
|
|
48
|
+
/**
|
|
49
|
+
* Delete an installed tree. Refuses trees without the ownership marker and anything outside the
|
|
50
|
+
* backends root; whether the tree is in use is the caller's question.
|
|
51
|
+
*/
|
|
52
|
+
export declare function removeBackend(backendsRoot: string, dir: string, platform?: NodeJS.Platform): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Regular files under the models root, recursively, with `/`-separated relative paths. Hidden files
|
|
55
|
+
* and in-flight downloads are skipped.
|
|
56
|
+
*/
|
|
57
|
+
export declare function listModelFiles(modelsRoot: string): Promise<DiffusionModelFile[]>;
|
|
58
|
+
/** Delete one file under the models root, and the family folders it leaves empty. Anything outside is refused. */
|
|
59
|
+
export declare function deleteModelFile(modelsRoot: string, path: string, platform?: NodeJS.Platform): Promise<void>;
|
|
60
|
+
/** Make sure the folders the rest of the module assumes are there. */
|
|
61
|
+
export declare function ensureDirs(dirs: readonly string[]): Promise<void>;
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Engine installs under `<data>/diffusion/backends/<tag>/<backendId>/` and the model-file store
|
|
3
|
+
* under `<data>/diffusion/models/`. Port of `install.rs` in `tauri-plugin-atomic-diffusion` (app
|
|
4
|
+
* commit `767ff6350`).
|
|
5
|
+
*
|
|
6
|
+
* The download and the extraction happen in the app, through its ordinary download pipeline. This
|
|
7
|
+
* module finalises a tree (permissions, sanity probe, ownership marker, install record) and refuses
|
|
8
|
+
* to delete anything it did not mark as its own.
|
|
9
|
+
*/
|
|
10
|
+
import { chmod, mkdir, readdir, readFile, rm, rmdir, stat, writeFile } from 'node:fs/promises';
|
|
11
|
+
import { dirname, join, relative, sep } from 'node:path';
|
|
12
|
+
import { buildProcessEnv, spawnManaged } from '../runtime/shared/index.js';
|
|
13
|
+
import { locate, samePath } from './containment.js';
|
|
14
|
+
import { diffusionError, ioError } from './errors.js';
|
|
15
|
+
export const OWNER_MARKER = '.atomic-owned';
|
|
16
|
+
export const INSTALL_RECORD = 'install.json';
|
|
17
|
+
/**
|
|
18
|
+
* The first launch of a just-unpacked tree is slow for reasons unrelated to the binary: Gatekeeper
|
|
19
|
+
* looks every new Mach-O up at Apple and XProtect scans the 109 MB dylib (1.5–2.3 s on an idle M4
|
|
20
|
+
* Pro, 0.02 s the second time); Windows real-time protection scans each unseen DLL, and the CUDA
|
|
21
|
+
* tree is 1.2 GB of them written the moment before. A 10 s budget failed a healthy install that
|
|
22
|
+
* passed on retry.
|
|
23
|
+
*/
|
|
24
|
+
export const PROBE_TIMEOUT_MS = 120_000;
|
|
25
|
+
/** A scanner can hold a freshly written executable for a moment, which surfaces as a spawn error. */
|
|
26
|
+
export const PROBE_SPAWN_ATTEMPTS = 3;
|
|
27
|
+
export const PROBE_SPAWN_RETRY_DELAY_MS = 1_000;
|
|
28
|
+
const PROBE_MARKERS = ['stable-diffusion.cpp', '--cfg-scale'];
|
|
29
|
+
export function serverBinaryName(platform) {
|
|
30
|
+
return platform === 'win32' ? 'sd-server.exe' : 'sd-server';
|
|
31
|
+
}
|
|
32
|
+
export function cliBinaryName(platform) {
|
|
33
|
+
return platform === 'win32' ? 'sd-cli.exe' : 'sd-cli';
|
|
34
|
+
}
|
|
35
|
+
const isFile = (path) => stat(path).then((s) => s.isFile(), () => false);
|
|
36
|
+
const isDirectory = (path) => stat(path).then((s) => s.isDirectory(), () => false);
|
|
37
|
+
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
38
|
+
const ENGINES = ['sd-cpp', 'diffusers'];
|
|
39
|
+
const BACKENDS = ['cpu', 'metal', 'cuda', 'vulkan', 'rocm'];
|
|
40
|
+
/** `install.json` holds the record minus `dir`, which is where the file lives. */
|
|
41
|
+
export async function writeInstallRecord(dir, record) {
|
|
42
|
+
const file = {
|
|
43
|
+
tag: record.tag,
|
|
44
|
+
backendId: record.backendId,
|
|
45
|
+
backend: record.backend,
|
|
46
|
+
engine: record.engine,
|
|
47
|
+
sha256: record.sha256,
|
|
48
|
+
installedAtMs: record.installedAtMs,
|
|
49
|
+
};
|
|
50
|
+
await writeFile(join(dir, OWNER_MARKER), 'atomic-chat\n').catch((error) => {
|
|
51
|
+
throw ioError('Could not write the ownership marker.', error);
|
|
52
|
+
});
|
|
53
|
+
await writeFile(join(dir, INSTALL_RECORD), JSON.stringify(file, null, 2)).catch((error) => {
|
|
54
|
+
throw ioError('Could not write the install record.', error);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
export async function readInstallRecord(dir) {
|
|
58
|
+
let raw;
|
|
59
|
+
try {
|
|
60
|
+
raw = JSON.parse(await readFile(join(dir, INSTALL_RECORD), 'utf8'));
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
if (raw === null || typeof raw !== 'object' || Array.isArray(raw))
|
|
66
|
+
return undefined;
|
|
67
|
+
const file = raw;
|
|
68
|
+
const sha256 = file['sha256'] ?? null;
|
|
69
|
+
const { tag, backendId, backend, engine, installedAtMs } = file;
|
|
70
|
+
if (typeof tag !== 'string' ||
|
|
71
|
+
typeof backendId !== 'string' ||
|
|
72
|
+
typeof backend !== 'string' ||
|
|
73
|
+
!BACKENDS.includes(backend) ||
|
|
74
|
+
typeof engine !== 'string' ||
|
|
75
|
+
!ENGINES.includes(engine) ||
|
|
76
|
+
(sha256 !== null && typeof sha256 !== 'string') ||
|
|
77
|
+
typeof installedAtMs !== 'number' ||
|
|
78
|
+
!Number.isInteger(installedAtMs) ||
|
|
79
|
+
installedAtMs < 0)
|
|
80
|
+
return undefined;
|
|
81
|
+
return {
|
|
82
|
+
tag,
|
|
83
|
+
backendId,
|
|
84
|
+
backend: backend,
|
|
85
|
+
engine: engine,
|
|
86
|
+
sha256,
|
|
87
|
+
installedAtMs,
|
|
88
|
+
dir,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export function isOwned(dir) {
|
|
92
|
+
return isFile(join(dir, OWNER_MARKER));
|
|
93
|
+
}
|
|
94
|
+
async function setExecutable(path, deps) {
|
|
95
|
+
if ((deps.platform ?? process.platform) === 'win32' || !(await isFile(path)))
|
|
96
|
+
return;
|
|
97
|
+
await chmod(path, 0o755).catch((error) => {
|
|
98
|
+
deps.log?.('warn', `chmod ${path} failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
export function probeOutputIsSdcpp(text) {
|
|
102
|
+
const lower = text.toLowerCase();
|
|
103
|
+
return PROBE_MARKERS.some((marker) => lower.includes(marker));
|
|
104
|
+
}
|
|
105
|
+
function couldNotStart(binary, error) {
|
|
106
|
+
return diffusionError('ENGINE_INSTALL_FAILED', 'The image engine could not be started.', `${binary}: ${error.message}`);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Run `<binary> --help` and check that the output is stable-diffusion.cpp's. A spawn failure is
|
|
110
|
+
* retried (a scanner may still be holding the file); a binary that never answers is killed.
|
|
111
|
+
*/
|
|
112
|
+
export async function probeBinary(binary, deps = {}) {
|
|
113
|
+
const platform = deps.platform ?? process.platform;
|
|
114
|
+
const timeoutMs = deps.probeTimeoutMs ?? PROBE_TIMEOUT_MS;
|
|
115
|
+
const started = Date.now();
|
|
116
|
+
const elapsed = () => ((Date.now() - started) / 1000).toFixed(1);
|
|
117
|
+
try {
|
|
118
|
+
await probeOnce(binary, platform, timeoutMs, deps);
|
|
119
|
+
deps.log?.('info', `engine probe passed in ${elapsed()}s`);
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
// The UI shows only the message, so the log is where the details live.
|
|
123
|
+
const { message, details } = error;
|
|
124
|
+
deps.log?.('warn', `engine probe failed after ${elapsed()}s: ${message} (${details ?? 'no details'})`);
|
|
125
|
+
throw error;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
async function probeOnce(binary, platform, timeoutMs, deps) {
|
|
129
|
+
const { env, cwd } = buildProcessEnv({
|
|
130
|
+
platform,
|
|
131
|
+
baseEnv: deps.env ?? process.env,
|
|
132
|
+
exeDir: dirname(binary),
|
|
133
|
+
cuda: { libDirs: [], binDirs: [] },
|
|
134
|
+
userEnv: {},
|
|
135
|
+
});
|
|
136
|
+
for (let attempt = 1;; attempt++) {
|
|
137
|
+
const proc = spawnManaged({ exe: binary, args: ['--help'], env, cwd });
|
|
138
|
+
let timer;
|
|
139
|
+
const timedOut = new Promise((resolve) => {
|
|
140
|
+
timer = setTimeout(() => resolve('timeout'), timeoutMs);
|
|
141
|
+
});
|
|
142
|
+
const outcome = await Promise.race([proc.exited, timedOut]);
|
|
143
|
+
clearTimeout(timer);
|
|
144
|
+
if (outcome === 'timeout') {
|
|
145
|
+
await proc.terminate(0);
|
|
146
|
+
throw diffusionError('ENGINE_INSTALL_FAILED', 'The image engine did not respond to --help.', `${binary} timed out after ${Math.round(timeoutMs / 1000)}s`);
|
|
147
|
+
}
|
|
148
|
+
const failure = proc.spawnFailure();
|
|
149
|
+
if (failure) {
|
|
150
|
+
if (attempt >= PROBE_SPAWN_ATTEMPTS)
|
|
151
|
+
throw couldNotStart(binary, failure);
|
|
152
|
+
deps.log?.('warn', `engine probe did not start (attempt ${attempt}/${PROBE_SPAWN_ATTEMPTS}): ${failure.message}`);
|
|
153
|
+
await sleep(deps.spawnRetryDelayMs ?? PROBE_SPAWN_RETRY_DELAY_MS);
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
// Give the pipes a tick to flush their last lines.
|
|
157
|
+
await sleep(10);
|
|
158
|
+
const { stdout, stderr } = proc.output();
|
|
159
|
+
const text = stdout + stderr;
|
|
160
|
+
if (probeOutputIsSdcpp(text))
|
|
161
|
+
return;
|
|
162
|
+
throw diffusionError('ENGINE_INSTALL_FAILED', 'The downloaded binary is not stable-diffusion.cpp.', [...text].slice(0, 800).join(''));
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/** Finalise a tree the app extracted: permissions, probe, then marker and record. */
|
|
166
|
+
export async function finalizeBackendInstall(backendsRoot, args, deps = {}) {
|
|
167
|
+
const platform = deps.platform ?? process.platform;
|
|
168
|
+
const { dir } = args;
|
|
169
|
+
if (!(await isDirectory(dir)))
|
|
170
|
+
throw diffusionError('ENGINE_INSTALL_FAILED', 'The engine directory does not exist.', dir);
|
|
171
|
+
if ((await locate(dir, backendsRoot, platform)) === 'outside')
|
|
172
|
+
throw diffusionError('INVALID_REQUEST', 'The engine directory is outside the diffusion backends folder.', dir);
|
|
173
|
+
const server = join(dir, serverBinaryName(platform));
|
|
174
|
+
if (!(await isFile(server)))
|
|
175
|
+
throw diffusionError('ENGINE_INSTALL_FAILED', 'The archive did not contain sd-server.', server);
|
|
176
|
+
const cli = join(dir, cliBinaryName(platform));
|
|
177
|
+
await setExecutable(server, deps);
|
|
178
|
+
await setExecutable(cli, deps);
|
|
179
|
+
// Some release layouts ship a bare `sd` too.
|
|
180
|
+
await setExecutable(join(dir, platform === 'win32' ? 'sd.exe' : 'sd'), deps);
|
|
181
|
+
await probeBinary((await isFile(cli)) ? cli : server, deps);
|
|
182
|
+
const record = {
|
|
183
|
+
tag: args.tag,
|
|
184
|
+
backendId: args.backendId,
|
|
185
|
+
backend: args.backend,
|
|
186
|
+
engine: args.engine,
|
|
187
|
+
sha256: args.sha256 ?? null,
|
|
188
|
+
installedAtMs: (deps.now ?? Date.now)(),
|
|
189
|
+
dir,
|
|
190
|
+
};
|
|
191
|
+
await writeInstallRecord(dir, record);
|
|
192
|
+
return record;
|
|
193
|
+
}
|
|
194
|
+
/** Every `<root>/<tag>/<backendId>/install.json` with its marker and its server binary, newest first. */
|
|
195
|
+
export async function listInstalledBackends(backendsRoot, platform = process.platform) {
|
|
196
|
+
const out = [];
|
|
197
|
+
for (const tag of await readdir(backendsRoot).catch(() => [])) {
|
|
198
|
+
const tagPath = join(backendsRoot, tag);
|
|
199
|
+
if (!(await isDirectory(tagPath)))
|
|
200
|
+
continue;
|
|
201
|
+
for (const backend of await readdir(tagPath).catch(() => [])) {
|
|
202
|
+
const dir = join(tagPath, backend);
|
|
203
|
+
if (!(await isDirectory(dir)) || !(await isOwned(dir)))
|
|
204
|
+
continue;
|
|
205
|
+
const record = await readInstallRecord(dir);
|
|
206
|
+
if (record && (await isFile(join(dir, serverBinaryName(platform)))))
|
|
207
|
+
out.push(record);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return out.sort((a, b) => b.installedAtMs - a.installedAtMs);
|
|
211
|
+
}
|
|
212
|
+
const isEmptyDir = (dir) => readdir(dir).then((names) => names.length === 0, () => false);
|
|
213
|
+
/**
|
|
214
|
+
* Delete an installed tree. Refuses trees without the ownership marker and anything outside the
|
|
215
|
+
* backends root; whether the tree is in use is the caller's question.
|
|
216
|
+
*/
|
|
217
|
+
export async function removeBackend(backendsRoot, dir, platform = process.platform) {
|
|
218
|
+
if ((await locate(dir, backendsRoot, platform)) !== 'inside')
|
|
219
|
+
throw diffusionError('INVALID_REQUEST', 'That directory is not a diffusion backend install.', dir);
|
|
220
|
+
if (!(await isDirectory(dir)))
|
|
221
|
+
return;
|
|
222
|
+
if (!(await isOwned(dir)))
|
|
223
|
+
throw diffusionError('INVALID_REQUEST', 'Refusing to delete a directory Atomic Chat did not install.', `${dir} has no ${OWNER_MARKER} marker`);
|
|
224
|
+
await rm(dir, { recursive: true, force: true }).catch((error) => {
|
|
225
|
+
throw ioError('Could not remove the engine directory.', error);
|
|
226
|
+
});
|
|
227
|
+
// Drop the now-empty `<tag>` parent so the listing stays tidy.
|
|
228
|
+
const parent = dirname(dir);
|
|
229
|
+
if (!(await samePath(parent, backendsRoot, platform)) && (await isEmptyDir(parent)))
|
|
230
|
+
await rmdir(parent).catch(() => { });
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Regular files under the models root, recursively, with `/`-separated relative paths. Hidden files
|
|
234
|
+
* and in-flight downloads are skipped.
|
|
235
|
+
*/
|
|
236
|
+
export async function listModelFiles(modelsRoot) {
|
|
237
|
+
const out = [];
|
|
238
|
+
const walk = async (dir) => {
|
|
239
|
+
for (const entry of await readdir(dir, { withFileTypes: true }).catch(() => [])) {
|
|
240
|
+
if (entry.name.startsWith('.'))
|
|
241
|
+
continue;
|
|
242
|
+
const path = join(dir, entry.name);
|
|
243
|
+
const meta = await stat(path).catch(() => undefined);
|
|
244
|
+
if (!meta)
|
|
245
|
+
continue;
|
|
246
|
+
if (meta.isDirectory()) {
|
|
247
|
+
await walk(path);
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
// A link to a file is not a model file of ours (the plugin read the entry itself, not its target).
|
|
251
|
+
if (entry.isSymbolicLink() || !meta.isFile())
|
|
252
|
+
continue;
|
|
253
|
+
if (['.tmp', '.part', '.download'].some((suffix) => entry.name.endsWith(suffix)))
|
|
254
|
+
continue;
|
|
255
|
+
out.push({ path, relativePath: relative(modelsRoot, path).split(sep).join('/'), bytes: meta.size });
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
await walk(modelsRoot);
|
|
259
|
+
return out.sort((a, b) => (a.relativePath < b.relativePath ? -1 : a.relativePath > b.relativePath ? 1 : 0));
|
|
260
|
+
}
|
|
261
|
+
/** Delete one file under the models root, and the family folders it leaves empty. Anything outside is refused. */
|
|
262
|
+
export async function deleteModelFile(modelsRoot, path, platform = process.platform) {
|
|
263
|
+
if ((await locate(path, modelsRoot, platform)) !== 'inside')
|
|
264
|
+
throw diffusionError('INVALID_REQUEST', 'That file is not in the diffusion models folder.', path);
|
|
265
|
+
const meta = await stat(path).catch(() => undefined);
|
|
266
|
+
if (!meta)
|
|
267
|
+
return;
|
|
268
|
+
if (meta.isDirectory())
|
|
269
|
+
throw diffusionError('INVALID_REQUEST', 'That path is a directory, not a model file.', path);
|
|
270
|
+
await rm(path).catch((error) => {
|
|
271
|
+
throw ioError('Could not delete the model file.', error);
|
|
272
|
+
});
|
|
273
|
+
// Prune empty family directories on the way up, never the root itself.
|
|
274
|
+
for (let dir = dirname(path);; dir = dirname(dir)) {
|
|
275
|
+
if ((await locate(dir, modelsRoot, platform)) !== 'inside' || !(await isEmptyDir(dir)))
|
|
276
|
+
break;
|
|
277
|
+
await rmdir(dir).catch(() => { });
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/** Make sure the folders the rest of the module assumes are there. */
|
|
281
|
+
export async function ensureDirs(dirs) {
|
|
282
|
+
for (const dir of dirs)
|
|
283
|
+
await mkdir(dir, { recursive: true }).catch((error) => {
|
|
284
|
+
throw ioError('Could not create the diffusion folders.', error);
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/diffusion/install.ts"],"names":[],"mappings":"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"}
|