@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,535 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The live half of the llama.cpp runtime: it turns a load plan into a running `llama-server` and
|
|
3
|
+
* keeps the session table the app's `model-factory.ts`, the Rust agent and `/v1` all read
|
|
4
|
+
* (PLAN.md §3.2, §3.3). Policy lives in `load-plan.ts` and `args.ts`; this file owns processes.
|
|
5
|
+
*
|
|
6
|
+
* What it guarantees:
|
|
7
|
+
* - a session exists only while its process does — the exit watcher removes it and emits
|
|
8
|
+
* `session:died`, so nothing dials a dead port;
|
|
9
|
+
* - every spawned process is journalled *before* it can be forgotten, so a crashed owner leaves a
|
|
10
|
+
* trail the next owner can clean up (PLAN.md §3.4);
|
|
11
|
+
* - the two post-failure retries of `performLoad` (drop mmproj, drop MTP) happen here, once each;
|
|
12
|
+
* - stderr is fed to the device accumulator while loading, which is the only place llama.cpp says
|
|
13
|
+
* which device it actually used;
|
|
14
|
+
* - a load the user cancels stops wherever it is — queued, planning, spawning or just ready — kills
|
|
15
|
+
* what it started at once, and never falls into a retry.
|
|
16
|
+
*/
|
|
17
|
+
import { dirname } from 'node:path';
|
|
18
|
+
import { AtomicCoreError } from '../../contracts/index.js';
|
|
19
|
+
import { DEFAULT_CTX_LEN, computeNextCtxLen } from './ctx-ladder.js';
|
|
20
|
+
import { processStartId } from '../../lock/index.js';
|
|
21
|
+
import { readGgufMetadataFromFile } from '../../models/index.js';
|
|
22
|
+
import { resolveLlama3TemplateOverride, STRICT_SYSTEM_GUARD_SIGNATURE } from '../../speculative/index.js';
|
|
23
|
+
import { checkDflashSupport } from '../../speculative/dflash-registry.js';
|
|
24
|
+
import { checkGemmaMtpSupport } from '../../speculative/gemma-mtp-registry.js';
|
|
25
|
+
import { buildProcessEnv, discoverCudaPaths, nodeCudaProbeEnv, textMentionsCudaRuntime, randomFreePort, spawnAndAwaitReady, spawnManaged, LLAMA_READY_MARKERS, closeLogStream, openLogStream, isLoadCancelled, raceLoadCancel, throwIfLoadCancelled, } from '../shared/index.js';
|
|
26
|
+
import { planLlamaArgs } from './args.js';
|
|
27
|
+
import { parseDeviceOutput } from './devices.js';
|
|
28
|
+
import { classifyProcessOutput } from './errors.js';
|
|
29
|
+
import { autoUnloadTargets, nextRetry, planLlamaLoad } from './load-plan.js';
|
|
30
|
+
import { classifyBackendMismatch, formatLoadError, isConcreteVersionBackend } from './policy.js';
|
|
31
|
+
import { checkSpecTypeSupport, DFLASH_SPEC_TYPE } from './probe.js';
|
|
32
|
+
import { RuntimeDeviceAccumulator } from './runtime-device.js';
|
|
33
|
+
export const DEVICE_PROBE_TIMEOUT_MS = 10_000;
|
|
34
|
+
export class LlamacppRuntime {
|
|
35
|
+
options;
|
|
36
|
+
sessions = new Map();
|
|
37
|
+
loading = new Map();
|
|
38
|
+
loadTail = Promise.resolve();
|
|
39
|
+
shutdownController = new AbortController();
|
|
40
|
+
closing = false;
|
|
41
|
+
shutdownPromise;
|
|
42
|
+
provider;
|
|
43
|
+
platform;
|
|
44
|
+
emit;
|
|
45
|
+
fetchImpl;
|
|
46
|
+
constructor(options) {
|
|
47
|
+
this.options = options;
|
|
48
|
+
this.provider = options.provider ?? 'llamacpp-upstream';
|
|
49
|
+
this.platform = options.platform ?? process.platform;
|
|
50
|
+
this.emit = options.emit ?? (() => { });
|
|
51
|
+
this.fetchImpl = options.fetch ?? fetch;
|
|
52
|
+
}
|
|
53
|
+
list() {
|
|
54
|
+
return [...this.sessions.values()].map((s) => ({ ...s.info }));
|
|
55
|
+
}
|
|
56
|
+
findSession(modelId) {
|
|
57
|
+
const session = this.sessions.get(modelId);
|
|
58
|
+
return session ? { ...session.info } : undefined;
|
|
59
|
+
}
|
|
60
|
+
getLoadedModels() {
|
|
61
|
+
return [...this.sessions.keys()];
|
|
62
|
+
}
|
|
63
|
+
getRuntimeDeviceInfo(modelId) {
|
|
64
|
+
return this.sessions.get(modelId)?.devices.snapshot();
|
|
65
|
+
}
|
|
66
|
+
getMaxCtxTrain(modelId) {
|
|
67
|
+
return this.sessions.get(modelId)?.plan.maxCtxTrain;
|
|
68
|
+
}
|
|
69
|
+
isLoading(modelId) {
|
|
70
|
+
return this.loading.has(modelId);
|
|
71
|
+
}
|
|
72
|
+
/** Load a model, or join the load already in flight for it. */
|
|
73
|
+
async load(modelId, opts = {}) {
|
|
74
|
+
this.assertRunning();
|
|
75
|
+
const existing = this.sessions.get(modelId);
|
|
76
|
+
if (existing)
|
|
77
|
+
return { ...existing.info };
|
|
78
|
+
const inFlight = this.loading.get(modelId);
|
|
79
|
+
if (inFlight)
|
|
80
|
+
return raceLoadCancel(inFlight, opts.signal);
|
|
81
|
+
const started = this.enqueueLoad(() => this.loadOnce(modelId, opts), opts.signal).finally(() => this.loading.delete(modelId));
|
|
82
|
+
this.loading.set(modelId, started);
|
|
83
|
+
return started;
|
|
84
|
+
}
|
|
85
|
+
async loadOnce(modelId, opts) {
|
|
86
|
+
this.assertRunning();
|
|
87
|
+
throwIfLoadCancelled(opts.signal);
|
|
88
|
+
const settings = await this.options.readSettings();
|
|
89
|
+
throwIfLoadCancelled(opts.signal);
|
|
90
|
+
const config = { ...settings.config };
|
|
91
|
+
if (opts.exePath)
|
|
92
|
+
config.version_backend = opts.versionBackend ?? 'cli/llama-server';
|
|
93
|
+
else {
|
|
94
|
+
const configured = String(config.version_backend ?? '').trim();
|
|
95
|
+
if (configured === '' || configured === 'none') {
|
|
96
|
+
throw new AtomicCoreError('BINARY_NOT_FOUND', 'No llama.cpp backend is installed in this data folder.', `install one in the app, or point at a binary with --bin (${this.options.layout.provider(this.provider).backendsDir})`);
|
|
97
|
+
}
|
|
98
|
+
if (!isConcreteVersionBackend(configured) && !configured.startsWith('latest/')) {
|
|
99
|
+
// Preserve the load-plan's INVALID_ARGUMENT wording for malformed, non-empty settings.
|
|
100
|
+
config.version_backend = configured;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const isEmbedding = opts.isEmbedding ?? false;
|
|
104
|
+
const targets = autoUnloadTargets(this.list(), {
|
|
105
|
+
autoUnload: opts.overrides?.auto_unload ?? config.auto_unload ?? true,
|
|
106
|
+
isEmbedding,
|
|
107
|
+
bypassAutoUnload: opts.bypassAutoUnload ?? false,
|
|
108
|
+
...(this.options.transcriptionModelId !== undefined
|
|
109
|
+
? { transcriptionModelId: this.options.transcriptionModelId }
|
|
110
|
+
: {}),
|
|
111
|
+
});
|
|
112
|
+
for (const target of targets) {
|
|
113
|
+
throwIfLoadCancelled(opts.signal);
|
|
114
|
+
const result = await this.unloadSession(target);
|
|
115
|
+
if (!result.success) {
|
|
116
|
+
throw new AtomicCoreError('LLAMA_CPP_PROCESS_ERROR', `Could not auto-unload model "${target}" before loading "${modelId}".`, result.error);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
this.assertRunning();
|
|
120
|
+
throwIfLoadCancelled(opts.signal);
|
|
121
|
+
if (opts.timeoutSecs !== undefined && (!Number.isFinite(opts.timeoutSecs) || opts.timeoutSecs <= 0)) {
|
|
122
|
+
throw new AtomicCoreError('INVALID_ARGUMENT', 'Load timeout must be a positive number of seconds.');
|
|
123
|
+
}
|
|
124
|
+
// Planning can wait on a backend install or a draft download; a cancel does not wait for them.
|
|
125
|
+
let plan = await raceLoadCancel(planLlamaLoad({
|
|
126
|
+
provider: this.provider,
|
|
127
|
+
modelId,
|
|
128
|
+
config,
|
|
129
|
+
engine: settings.engine,
|
|
130
|
+
overrides: opts.overrides,
|
|
131
|
+
...(opts.modelPath !== undefined ? { modelPath: opts.modelPath } : {}),
|
|
132
|
+
...(opts.mmprojPath !== undefined ? { mmprojPath: opts.mmprojPath } : {}),
|
|
133
|
+
...(opts.timeoutSecs !== undefined ? { timeoutSecs: opts.timeoutSecs } : {}),
|
|
134
|
+
isEmbedding,
|
|
135
|
+
dataFolder: this.options.layout.root,
|
|
136
|
+
...(this.options.transcriptionModelId !== undefined
|
|
137
|
+
? { transcriptionModelId: this.options.transcriptionModelId }
|
|
138
|
+
: {}),
|
|
139
|
+
}, this.planDeps(opts)), opts.signal);
|
|
140
|
+
if (opts.port !== undefined)
|
|
141
|
+
plan = { ...plan, port: opts.port };
|
|
142
|
+
for (let attempt = 0; attempt < 3; attempt++) {
|
|
143
|
+
this.assertRunning();
|
|
144
|
+
throwIfLoadCancelled(opts.signal);
|
|
145
|
+
try {
|
|
146
|
+
return await this.spawnSession(plan, opts);
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
// A cancelled load is a user stop, never a reason to try again without the projector or MTP.
|
|
150
|
+
if (this.closing || isLoadCancelled(opts.signal))
|
|
151
|
+
throw error;
|
|
152
|
+
const retry = nextRetry(error, plan, this.options.transcriptionModelId);
|
|
153
|
+
if (!retry)
|
|
154
|
+
throw error;
|
|
155
|
+
if (retry.kind === 'text-only') {
|
|
156
|
+
plan = retry.plan;
|
|
157
|
+
plan.warnings.push(`Vision support is unavailable for "${modelId}": the projector failed to load, retrying without it.`);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
plan = retry.plan;
|
|
161
|
+
plan.warnings.push(`Retrying "${modelId}" without MTP: ${formatLoadError(error)}`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
throw new AtomicCoreError('MODEL_LOAD_FAILED', `Could not load model "${modelId}" after fallback attempts.`);
|
|
166
|
+
}
|
|
167
|
+
enqueueLoad(operation, signal) {
|
|
168
|
+
const turn = this.loadTail;
|
|
169
|
+
const result = raceLoadCancel(turn, signal).then(operation);
|
|
170
|
+
// The queue waits for the turn as well as the result: a load cancelled while queued settles
|
|
171
|
+
// early, and the one behind it must still not start before the load ahead has finished.
|
|
172
|
+
this.loadTail = Promise.all([
|
|
173
|
+
turn,
|
|
174
|
+
result.then(() => { }, () => { }),
|
|
175
|
+
]).then(() => { });
|
|
176
|
+
return result;
|
|
177
|
+
}
|
|
178
|
+
planDeps(opts) {
|
|
179
|
+
const { layout, registry } = this.options;
|
|
180
|
+
const joinData = (relative) => registry.resolvePaths({ model_path: relative }).modelPath;
|
|
181
|
+
return {
|
|
182
|
+
joinData,
|
|
183
|
+
readModelYml: (id) => registry.read(id),
|
|
184
|
+
resolveLatestBackend: this.options.resolveLatestBackend ?? (async () => undefined),
|
|
185
|
+
ensureBackendReady: async (backend, version) => {
|
|
186
|
+
if (opts.exePath)
|
|
187
|
+
return { backend, version, exePath: opts.exePath };
|
|
188
|
+
if (this.options.ensureBackendReady)
|
|
189
|
+
return this.options.ensureBackendReady(backend, version);
|
|
190
|
+
throw new AtomicCoreError('BINARY_NOT_FOUND', 'No llama.cpp backend is available for this data folder.', `${version}/${backend} in ${layout.provider(this.provider).backendsDir}`);
|
|
191
|
+
},
|
|
192
|
+
cpuInfo: this.options.cpuInfo ?? (async () => undefined),
|
|
193
|
+
exists: async (path) => {
|
|
194
|
+
const { stat } = await import('node:fs/promises');
|
|
195
|
+
return stat(path).then(() => true, () => false);
|
|
196
|
+
},
|
|
197
|
+
fileSize: async (path) => {
|
|
198
|
+
const { stat } = await import('node:fs/promises');
|
|
199
|
+
return stat(path).then((s) => s.size, () => undefined);
|
|
200
|
+
},
|
|
201
|
+
readGgufMetadata: this.options.readGgufMetadata ?? (async (path) => (await readGgufMetadataFromFile(path)).metadata),
|
|
202
|
+
randomPort: () => randomFreePort(this.usedPorts()),
|
|
203
|
+
checkGemmaMtpSupport,
|
|
204
|
+
ensureGemmaMtpDraft: this.options.ensureGemmaMtpDraft ?? draftDownloadUnavailable,
|
|
205
|
+
checkDflashSupport,
|
|
206
|
+
ensureDflashDraft: this.options.ensureDflashDraft ?? draftDownloadUnavailable,
|
|
207
|
+
backendSupportsDflashSpec: (exePath, env) => checkSpecTypeSupport(exePath, DFLASH_SPEC_TYPE, env, dirname(exePath)),
|
|
208
|
+
resolveLlama3TemplateOverride: (modelId, embedded) => resolveLlama3TemplateOverride(modelId, embedded) ?? undefined,
|
|
209
|
+
strictSystemGuardSignature: STRICT_SYSTEM_GUARD_SIGNATURE,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
/** Ports this runtime already handed out, so a second load never lands on the same one. */
|
|
213
|
+
usedPorts() {
|
|
214
|
+
return [...this.sessions.values()].map((s) => s.info.port);
|
|
215
|
+
}
|
|
216
|
+
async spawnSession(plan, opts) {
|
|
217
|
+
const args = planLlamaArgs(plan.config, {
|
|
218
|
+
provider: plan.provider,
|
|
219
|
+
isEmbedding: plan.isEmbedding,
|
|
220
|
+
modelId: plan.modelId,
|
|
221
|
+
modelPath: plan.modelPath,
|
|
222
|
+
port: plan.port,
|
|
223
|
+
mmprojPath: plan.mmprojPath ?? null,
|
|
224
|
+
});
|
|
225
|
+
const exeDir = dirname(plan.exePath);
|
|
226
|
+
const { env, cwd } = buildProcessEnv({
|
|
227
|
+
platform: this.platform,
|
|
228
|
+
baseEnv: this.options.baseEnv ?? process.env,
|
|
229
|
+
exeDir,
|
|
230
|
+
cuda: discoverCudaPaths(nodeCudaProbeEnv(this.platform, this.options.baseEnv ?? process.env)),
|
|
231
|
+
userEnv: plan.env,
|
|
232
|
+
});
|
|
233
|
+
const devices = new RuntimeDeviceAccumulator();
|
|
234
|
+
const spawn = this.options.spawn ?? spawnAndAwaitReady;
|
|
235
|
+
const apiKey = plan.apiKey;
|
|
236
|
+
throwIfLoadCancelled(opts.signal);
|
|
237
|
+
const logStream = opts.logPath ? await openLogStream(opts.logPath) : undefined;
|
|
238
|
+
let proc;
|
|
239
|
+
try {
|
|
240
|
+
;
|
|
241
|
+
({ process: proc } = await spawn({ exe: plan.exePath, args: args.argv, env, cwd }, {
|
|
242
|
+
timeoutMs: plan.timeoutSecs * 1000,
|
|
243
|
+
signal: this.shutdownController.signal,
|
|
244
|
+
...(opts.signal ? { cancelSignal: opts.signal } : {}),
|
|
245
|
+
readyMarkers: LLAMA_READY_MARKERS,
|
|
246
|
+
healthCheck: () => this.healthy(plan.port, apiKey),
|
|
247
|
+
onLine: (stream, line) => {
|
|
248
|
+
if (stream === 'stderr')
|
|
249
|
+
devices.ingest(line);
|
|
250
|
+
if (textMentionsCudaRuntime(line, this.platform))
|
|
251
|
+
devices.markCudaRuntimeMissing();
|
|
252
|
+
logStream?.write(`[${stream}] ${line}\n`);
|
|
253
|
+
if (opts.verbose)
|
|
254
|
+
this.emit('core:log', {
|
|
255
|
+
level: 'debug',
|
|
256
|
+
msg: `[${plan.provider}/${plan.modelId}][${stream}] ${line}`,
|
|
257
|
+
});
|
|
258
|
+
},
|
|
259
|
+
classifyExit: (exit, stderr, stdout) => classifyProcessOutput(exit, stderr, stdout, this.platform, plan.provider),
|
|
260
|
+
timeoutMessage: `Timeout: ${plan.timeoutSecs}s`,
|
|
261
|
+
}));
|
|
262
|
+
}
|
|
263
|
+
catch (error) {
|
|
264
|
+
await closeLogStream(logStream);
|
|
265
|
+
throw error;
|
|
266
|
+
}
|
|
267
|
+
const info = {
|
|
268
|
+
pid: proc.pid,
|
|
269
|
+
port: plan.port,
|
|
270
|
+
model_id: plan.modelId,
|
|
271
|
+
model_path: plan.modelPath,
|
|
272
|
+
is_embedding: plan.isEmbedding,
|
|
273
|
+
api_key: apiKey,
|
|
274
|
+
mmproj_path: plan.mmprojPath ?? null,
|
|
275
|
+
runtime_device: devices.snapshot(),
|
|
276
|
+
};
|
|
277
|
+
const session = {
|
|
278
|
+
info,
|
|
279
|
+
process: proc,
|
|
280
|
+
plan,
|
|
281
|
+
devices,
|
|
282
|
+
journalled: false,
|
|
283
|
+
...(logStream ? { logStream } : {}),
|
|
284
|
+
};
|
|
285
|
+
try {
|
|
286
|
+
// A cancel that raced the ready signal still wins: no session is published for it.
|
|
287
|
+
throwIfLoadCancelled(opts.signal);
|
|
288
|
+
await this.journalSpawn(session);
|
|
289
|
+
this.assertRunning();
|
|
290
|
+
throwIfLoadCancelled(opts.signal);
|
|
291
|
+
this.sessions.set(plan.modelId, session);
|
|
292
|
+
this.watchExit(session);
|
|
293
|
+
}
|
|
294
|
+
catch (error) {
|
|
295
|
+
await proc.terminate(isLoadCancelled(opts.signal) ? 0 : undefined).catch(() => { });
|
|
296
|
+
if (session.journalled)
|
|
297
|
+
await this.options.journal?.remove(session.info.pid).catch(() => { });
|
|
298
|
+
await closeLogStream(session.logStream);
|
|
299
|
+
throw error;
|
|
300
|
+
}
|
|
301
|
+
this.emit('session:started', { ...info, provider: plan.provider });
|
|
302
|
+
this.reportRuntimeDevice(plan, devices.snapshot());
|
|
303
|
+
return { ...info };
|
|
304
|
+
}
|
|
305
|
+
async journalSpawn(session) {
|
|
306
|
+
const journal = this.options.journal;
|
|
307
|
+
if (!journal)
|
|
308
|
+
return;
|
|
309
|
+
const record = {
|
|
310
|
+
instance_id: this.options.instanceId,
|
|
311
|
+
pid: session.info.pid,
|
|
312
|
+
process_start_id: (await processStartId(session.info.pid)) ?? null,
|
|
313
|
+
exe: session.plan.exePath,
|
|
314
|
+
provider: session.plan.provider,
|
|
315
|
+
model_id: session.plan.modelId,
|
|
316
|
+
port: session.info.port,
|
|
317
|
+
started_at: new Date().toISOString(),
|
|
318
|
+
};
|
|
319
|
+
await journal.add(record);
|
|
320
|
+
session.journalled = true;
|
|
321
|
+
}
|
|
322
|
+
watchExit(session) {
|
|
323
|
+
void session.process.exited.then(async (exit) => {
|
|
324
|
+
const current = this.sessions.get(session.plan.modelId);
|
|
325
|
+
if (current !== session)
|
|
326
|
+
return; // already replaced or unloaded
|
|
327
|
+
this.sessions.delete(session.plan.modelId);
|
|
328
|
+
if (session.journalled)
|
|
329
|
+
await this.options.journal?.remove(session.info.pid).catch(() => { });
|
|
330
|
+
await closeLogStream(session.logStream);
|
|
331
|
+
const { stderr, stdout } = session.process.output();
|
|
332
|
+
const error = classifyProcessOutput(exit, stderr, stdout, this.platform, session.plan.provider);
|
|
333
|
+
this.emit('session:died', {
|
|
334
|
+
provider: session.plan.provider,
|
|
335
|
+
pid: session.info.pid,
|
|
336
|
+
model_id: session.plan.modelId,
|
|
337
|
+
exit_code: exit.code,
|
|
338
|
+
signal: exit.signal === null ? null : String(exit.signal),
|
|
339
|
+
message: error.message,
|
|
340
|
+
});
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
reportRuntimeDevice(plan, runtimeDevice) {
|
|
344
|
+
const configured = `${plan.version}/${plan.backend}`;
|
|
345
|
+
const mismatch = classifyBackendMismatch({
|
|
346
|
+
configuredBackend: plan.config.version_backend.split('/')[1] ?? '',
|
|
347
|
+
effectiveBackend: plan.backend,
|
|
348
|
+
runtimeDevice,
|
|
349
|
+
requestedGpuLayers: plan.config.n_gpu_layers,
|
|
350
|
+
categoryOf: (backend) => backend,
|
|
351
|
+
});
|
|
352
|
+
this.emit('backend:runtime-reported', {
|
|
353
|
+
provider: plan.provider,
|
|
354
|
+
modelId: plan.modelId,
|
|
355
|
+
configuredVersionBackend: plan.config.version_backend,
|
|
356
|
+
effectiveVersionBackend: configured,
|
|
357
|
+
runtimeDevice,
|
|
358
|
+
mismatch: mismatch.kind !== 'ok',
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
async healthy(port, apiKey) {
|
|
362
|
+
const res = await this.fetchImpl(`http://127.0.0.1:${port}/health`, {
|
|
363
|
+
headers: apiKey ? { Authorization: `Bearer ${apiKey}` } : {},
|
|
364
|
+
}).catch(() => undefined);
|
|
365
|
+
return res !== undefined && res.ok;
|
|
366
|
+
}
|
|
367
|
+
/** Stop one session. Unloading something that is not loaded is not an error. */
|
|
368
|
+
async unload(modelId) {
|
|
369
|
+
this.assertRunning();
|
|
370
|
+
return this.unloadSession(modelId);
|
|
371
|
+
}
|
|
372
|
+
/** The context window a loaded session is actually running with. */
|
|
373
|
+
getCtxSize(modelId) {
|
|
374
|
+
const configured = this.sessions.get(modelId)?.plan.config.ctx_size;
|
|
375
|
+
return typeof configured === 'number' && configured > 0 ? configured : undefined;
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Reload a model with the next context size up the ladder, because a request did not fit.
|
|
379
|
+
*
|
|
380
|
+
* Ported from the app's `auto_increase_ctx` handler, including the two cases where it declines:
|
|
381
|
+
*
|
|
382
|
+
* - `fit`: with fit on, llama.cpp sizes the window itself at load and `--ctx-size` is not even
|
|
383
|
+
* emitted, so a reload would change nothing and cost the user a model load.
|
|
384
|
+
* - `at_max`: the ladder has reached what the model was trained for. Reloading at the same size
|
|
385
|
+
* would loop — the next request would overflow again and ask again.
|
|
386
|
+
*
|
|
387
|
+
* The unload is allowed to fail: a session that is already gone is still a reload candidate, and
|
|
388
|
+
* refusing to reload because the corpse would not die is worse than reloading.
|
|
389
|
+
*/
|
|
390
|
+
async autoIncreaseCtx(modelId, reason = 'ctx-overflow') {
|
|
391
|
+
this.assertRunning();
|
|
392
|
+
const session = this.sessions.get(modelId);
|
|
393
|
+
if (!session)
|
|
394
|
+
return { ok: false, reason: 'not-loaded' };
|
|
395
|
+
if (session.plan.config.fit === true)
|
|
396
|
+
return { ok: false, reason: 'fit' };
|
|
397
|
+
const currentCtxLen = this.getCtxSize(modelId) ?? DEFAULT_CTX_LEN;
|
|
398
|
+
const maxCtxLen = session.plan.maxCtxTrain;
|
|
399
|
+
const newCtxLen = computeNextCtxLen(currentCtxLen, maxCtxLen);
|
|
400
|
+
if (newCtxLen <= currentCtxLen)
|
|
401
|
+
return {
|
|
402
|
+
ok: false,
|
|
403
|
+
reason: 'at_max',
|
|
404
|
+
current_ctx_len: currentCtxLen,
|
|
405
|
+
...(maxCtxLen !== undefined ? { max_ctx_len: maxCtxLen } : {}),
|
|
406
|
+
};
|
|
407
|
+
const unloaded = await this.unloadSession(modelId);
|
|
408
|
+
if (!unloaded.success)
|
|
409
|
+
this.emit('core:log', {
|
|
410
|
+
level: 'warn',
|
|
411
|
+
msg: `auto_increase_ctx: unload of ${modelId} failed, reloading anyway: ${unloaded.error}`,
|
|
412
|
+
});
|
|
413
|
+
// `bypassAutoUnload`: this is a reload of the model the user is talking to, not a new model
|
|
414
|
+
// taking its place, so it must not evict anything else.
|
|
415
|
+
const info = await this.load(modelId, {
|
|
416
|
+
overrides: { ctx_size: newCtxLen },
|
|
417
|
+
bypassAutoUnload: true,
|
|
418
|
+
});
|
|
419
|
+
// Informational only: the reload emitted `session:started` with the new port and pid, so a
|
|
420
|
+
// mirror that is following events already knows where the model moved to. This says why.
|
|
421
|
+
this.emit('session:ctx-increased', {
|
|
422
|
+
provider: this.provider,
|
|
423
|
+
modelId,
|
|
424
|
+
oldCtx: currentCtxLen,
|
|
425
|
+
newCtx: newCtxLen,
|
|
426
|
+
reason,
|
|
427
|
+
});
|
|
428
|
+
return { ok: true, new_ctx_len: newCtxLen, session: info };
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Reload a model at the context it already has, because its engine is unusable: a fatal compute
|
|
432
|
+
* failure (a Metal OOM during prompt processing) leaves the ggml backend in an error state that
|
|
433
|
+
* only a new process clears. The window is deliberately not grown — more context would only make
|
|
434
|
+
* an out-of-memory failure more likely. As with `autoIncreaseCtx`, a failed unload does not stop
|
|
435
|
+
* the reload.
|
|
436
|
+
*/
|
|
437
|
+
async recreateSession(modelId) {
|
|
438
|
+
this.assertRunning();
|
|
439
|
+
if (!this.sessions.has(modelId))
|
|
440
|
+
return { ok: false, reason: 'not-loaded' };
|
|
441
|
+
const ctxLen = this.getCtxSize(modelId);
|
|
442
|
+
const unloaded = await this.unloadSession(modelId);
|
|
443
|
+
if (!unloaded.success)
|
|
444
|
+
this.emit('core:log', {
|
|
445
|
+
level: 'warn',
|
|
446
|
+
msg: `compute_error_recovery: unload of ${modelId} failed, reloading anyway: ${unloaded.error}`,
|
|
447
|
+
});
|
|
448
|
+
const info = await this.load(modelId, {
|
|
449
|
+
...(ctxLen !== undefined ? { overrides: { ctx_size: ctxLen } } : {}),
|
|
450
|
+
bypassAutoUnload: true,
|
|
451
|
+
});
|
|
452
|
+
return { ok: true, session: info };
|
|
453
|
+
}
|
|
454
|
+
async unloadSession(modelId) {
|
|
455
|
+
const session = this.sessions.get(modelId);
|
|
456
|
+
if (!session)
|
|
457
|
+
return { success: true };
|
|
458
|
+
this.sessions.delete(modelId);
|
|
459
|
+
try {
|
|
460
|
+
await session.process.terminate();
|
|
461
|
+
if (session.journalled)
|
|
462
|
+
await this.options.journal?.remove(session.info.pid).catch(() => { });
|
|
463
|
+
await closeLogStream(session.logStream);
|
|
464
|
+
this.emit('session:unloaded', {
|
|
465
|
+
provider: session.plan.provider,
|
|
466
|
+
model_id: modelId,
|
|
467
|
+
pid: session.info.pid,
|
|
468
|
+
});
|
|
469
|
+
return { success: true };
|
|
470
|
+
}
|
|
471
|
+
catch (e) {
|
|
472
|
+
if (session.process.child.exitCode === null && session.process.child.signalCode === null)
|
|
473
|
+
this.sessions.set(modelId, session);
|
|
474
|
+
else if (session.journalled)
|
|
475
|
+
await this.options.journal?.remove(session.info.pid).catch(() => { });
|
|
476
|
+
return { success: false, error: e.message };
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
async unloadAll() {
|
|
480
|
+
this.assertRunning();
|
|
481
|
+
await Promise.all([...this.sessions.keys()].map((id) => this.unloadSession(id)));
|
|
482
|
+
}
|
|
483
|
+
/** `llama-server --list-devices` against an installed backend. */
|
|
484
|
+
async getDevices(exePath) {
|
|
485
|
+
this.assertRunning();
|
|
486
|
+
const spawnOne = this.options.probeDevicesWith ?? spawnManaged;
|
|
487
|
+
const { env, cwd } = buildProcessEnv({
|
|
488
|
+
platform: this.platform,
|
|
489
|
+
baseEnv: this.options.baseEnv ?? process.env,
|
|
490
|
+
exeDir: dirname(exePath),
|
|
491
|
+
cuda: discoverCudaPaths(nodeCudaProbeEnv(this.platform, this.options.baseEnv ?? process.env)),
|
|
492
|
+
userEnv: {},
|
|
493
|
+
});
|
|
494
|
+
const proc = spawnOne({ exe: exePath, args: ['--list-devices'], env, cwd });
|
|
495
|
+
const timeout = new Promise((r) => setTimeout(() => r('timeout'), DEVICE_PROBE_TIMEOUT_MS).unref());
|
|
496
|
+
const outcome = await Promise.race([proc.exited.then(() => 'exited'), timeout]);
|
|
497
|
+
if (outcome === 'timeout') {
|
|
498
|
+
await proc.terminate(500);
|
|
499
|
+
throw new AtomicCoreError('DEVICE_LIST_PARSE_FAILED', 'Timed out while listing llama.cpp devices.', `${exePath} --list-devices`);
|
|
500
|
+
}
|
|
501
|
+
const failure = proc.spawnFailure();
|
|
502
|
+
if (failure)
|
|
503
|
+
throw new AtomicCoreError('BINARY_NOT_FOUND', 'Cannot run the llama.cpp backend.', failure.message);
|
|
504
|
+
await new Promise((r) => setTimeout(r, 10)); // let the line readers drain
|
|
505
|
+
const { stdout, stderr } = proc.output();
|
|
506
|
+
return parseDeviceOutput(`${stdout}\n${stderr}`);
|
|
507
|
+
}
|
|
508
|
+
async shutdown() {
|
|
509
|
+
if (this.shutdownPromise)
|
|
510
|
+
return this.shutdownPromise;
|
|
511
|
+
this.closing = true;
|
|
512
|
+
this.shutdownController.abort();
|
|
513
|
+
this.shutdownPromise = (async () => {
|
|
514
|
+
await this.loadTail;
|
|
515
|
+
const results = await Promise.all([...this.sessions.keys()].map((id) => this.unloadSession(id)));
|
|
516
|
+
const failure = results.find((result) => !result.success);
|
|
517
|
+
if (failure) {
|
|
518
|
+
throw new AtomicCoreError('LLAMA_CPP_PROCESS_ERROR', 'Could not stop every llama.cpp session during shutdown.', failure.error);
|
|
519
|
+
}
|
|
520
|
+
})();
|
|
521
|
+
return this.shutdownPromise;
|
|
522
|
+
}
|
|
523
|
+
async dispose() {
|
|
524
|
+
await this.shutdown();
|
|
525
|
+
}
|
|
526
|
+
assertRunning() {
|
|
527
|
+
if (this.closing) {
|
|
528
|
+
throw new AtomicCoreError('CORE_NOT_RUNNING', 'The llama.cpp runtime is stopping or has stopped.');
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
function draftDownloadUnavailable() {
|
|
533
|
+
return Promise.reject(new AtomicCoreError('INTERNAL_ERROR', 'Downloading speculative draft models is not wired into this core yet.', 'pass ensureGemmaMtpDraft / ensureDflashDraft to LlamacppRuntime'));
|
|
534
|
+
}
|
|
535
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/runtime/llamacpp/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAS1D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAGpE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,6BAA6B,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAA;AACzG,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAA;AAC9E,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,oBAAoB,GACrB,MAAM,oBAAoB,CAAA;AAQ3B,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAEnD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE5E,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAChG,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AA6E9D,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAA;AAE7C,MAAM,OAAO,eAAe;IAYG;IAXZ,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAA;IACrC,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAA;IAC1D,QAAQ,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAA;IAClC,kBAAkB,GAAG,IAAI,eAAe,EAAE,CAAA;IACnD,OAAO,GAAG,KAAK,CAAA;IACf,eAAe,CAA2B;IACjC,QAAQ,CAAiB;IACzB,QAAQ,CAAiB;IACzB,IAAI,CAAQ;IACZ,SAAS,CAAc;IAExC,YAA6B,OAA+B;QAA/B,YAAO,GAAP,OAAO,CAAwB;QAC1D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,mBAAmB,CAAA;QACvD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAA;QACpD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACtC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAA;IACzC,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAChE,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC1C,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAClD,CAAC;IAED,eAAe;QACb,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAClC,CAAC;IAED,oBAAoB,CAAC,OAAe;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAA;IACvD,CAAC;IAED,cAAc,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,CAAA;IACrD,CAAC;IAED,SAAS,CAAC,OAAe;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAClC,CAAC;IAED,+DAA+D;IAC/D,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,OAAoB,EAAE;QAChD,IAAI,CAAC,aAAa,EAAE,CAAA;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC3C,IAAI,QAAQ;YAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAA;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC1C,IAAI,QAAQ;YAAE,OAAO,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAC7F,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAC7B,CAAA;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAClC,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,IAAiB;QACvD,IAAI,CAAC,aAAa,EAAE,CAAA;QACpB,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAA;QAClD,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,MAAM,GAAwB,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAA;QAC1D,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,IAAI,kBAAkB,CAAA;aAC/E,CAAC;YACJ,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;YAC9D,IAAI,UAAU,KAAK,EAAE,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;gBAC/C,MAAM,IAAI,eAAe,CACvB,kBAAkB,EAClB,wDAAwD,EACxD,4DAA4D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,GAAG,CACvH,CAAA;YACH,CAAC;YACD,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/E,uFAAuF;gBACvF,MAAM,CAAC,eAAe,GAAG,UAAU,CAAA;YACrC,CAAC;QACH,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,KAAK,CAAA;QAC7C,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;YAC7C,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI;YACrE,WAAW;YACX,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,KAAK;YAChD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,KAAK,SAAS;gBACjD,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;gBAC7D,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAA;QACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;YAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,eAAe,CACvB,yBAAyB,EACzB,gCAAgC,MAAM,qBAAqB,OAAO,IAAI,EACtE,MAAM,CAAC,KAAK,CACb,CAAA;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,aAAa,EAAE,CAAA;QACpB,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACjC,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,EAAE,CAAC;YACpG,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,oDAAoD,CAAC,CAAA;QACrG,CAAC;QACD,+FAA+F;QAC/F,IAAI,IAAI,GAAG,MAAM,cAAc,CAC7B,aAAa,CACX;YACE,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO;YACP,MAAM;YACN,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,SAAS,EAAE,IAAI,CAAC,SAAqD;YACrE,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,WAAW;YACX,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI;YACpC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,KAAK,SAAS;gBACjD,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;gBAC7D,CAAC,CAAC,EAAE,CAAC;SACR,EACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CACpB,EACD,IAAI,CAAC,MAAM,CACZ,CAAA;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAA;QAEhE,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC,aAAa,EAAE,CAAA;YACpB,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACjC,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAC5C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,6FAA6F;gBAC7F,IAAI,IAAI,CAAC,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;oBAAE,MAAM,KAAK,CAAA;gBAC7D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;gBACvE,IAAI,CAAC,KAAK;oBAAE,MAAM,KAAK,CAAA;gBACvB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBAC/B,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;oBACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,sCAAsC,OAAO,uDAAuD,CACrG,CAAA;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;oBACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,OAAO,kBAAkB,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBACpF,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,IAAI,eAAe,CACvB,mBAAmB,EACnB,yBAAyB,OAAO,4BAA4B,CAC7D,CAAA;IACH,CAAC;IAEO,WAAW,CAAI,SAA2B,EAAE,MAAoB;QACtE,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC1B,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC3D,4FAA4F;QAC5F,wFAAwF;QACxF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;YAC1B,IAAI;YACJ,MAAM,CAAC,IAAI,CACT,GAAG,EAAE,GAAE,CAAC,EACR,GAAG,EAAE,GAAE,CAAC,CACT;SACF,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACjB,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,QAAQ,CAAC,IAAiB;QAChC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QACzC,MAAM,QAAQ,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAW,CAAC,CAAC,SAAS,CAAA;QACzG,OAAO;YACL,QAAQ;YACR,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC;YAClF,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;gBAC7C,IAAI,IAAI,CAAC,OAAO;oBAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAA;gBACpE,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB;oBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;gBAC7F,MAAM,IAAI,eAAe,CACvB,kBAAkB,EAClB,yDAAyD,EACzD,GAAG,OAAO,IAAI,OAAO,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CACzE,CAAA;YACH,CAAC;YACD,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC;YACxD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACrB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;gBACjD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CACpB,GAAG,EAAE,CAAC,IAAI,EACV,GAAG,EAAE,CAAC,KAAK,CACZ,CAAA;YACH,CAAC;YACD,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;gBACjD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CACpB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EACb,GAAG,EAAE,CAAC,SAAS,CAChB,CAAA;YACH,CAAC;YACD,gBAAgB,EACd,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;YACpG,UAAU,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClD,oBAAoB;YACpB,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,wBAAwB;YACjF,kBAAkB;YAClB,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,wBAAwB;YAC7E,yBAAyB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAC1C,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACxE,6BAA6B,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CACnD,6BAA6B,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,SAAS;YAC/D,0BAA0B,EAAE,6BAA6B;SAC1D,CAAA;IACH,CAAC;IAED,2FAA2F;IACnF,SAAS;QACf,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5D,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,IAAc,EAAE,IAAiB;QAC1D,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE;YACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;SACpC,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACpC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,eAAe,CAAC;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG;YAC5C,MAAM;YACN,IAAI,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7F,OAAO,EAAE,IAAI,CAAC,GAAG;SAClB,CAAC,CAAA;QACF,MAAM,OAAO,GAAG,IAAI,wBAAwB,EAAE,CAAA;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,kBAAkB,CAAA;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAC1B,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAE9E,IAAI,IAAoB,CAAA;QACxB,IAAI,CAAC;YACH,CAAC;YAAA,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAC/B,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAChD;gBACE,SAAS,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI;gBAClC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM;gBACtC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,YAAY,EAAE,mBAAmB;gBACjC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;gBAClD,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;oBACvB,IAAI,MAAM,KAAK,QAAQ;wBAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;oBAC7C,IAAI,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;wBAAE,OAAO,CAAC,sBAAsB,EAAE,CAAA;oBAClF,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,CAAA;oBACzC,IAAI,IAAI,CAAC,OAAO;wBACd,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;4BACpB,KAAK,EAAE,OAAO;4BACd,GAAG,EAAE,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,KAAK,IAAI,EAAE;yBAC7D,CAAC,CAAA;gBACN,CAAC;gBACD,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CACrC,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;gBAC3E,cAAc,EAAE,YAAY,IAAI,CAAC,WAAW,GAAG;aAChD,CACF,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,cAAc,CAAC,SAAS,CAAC,CAAA;YAC/B,MAAM,KAAK,CAAA;QACb,CAAC;QAED,MAAM,IAAI,GAAgB;YACxB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,OAAO;YACtB,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;YACpC,cAAc,EAAE,OAAO,CAAC,QAAQ,EAAE;SACnC,CAAA;QACD,MAAM,OAAO,GAAY;YACvB,IAAI;YACJ,OAAO,EAAE,IAAI;YACb,IAAI;YACJ,OAAO;YACP,UAAU,EAAE,KAAK;YACjB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpC,CAAA;QACD,IAAI,CAAC;YACH,mFAAmF;YACnF,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACjC,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;YAChC,IAAI,CAAC,aAAa,EAAE,CAAA;YACpB,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YACxC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YAClF,IAAI,OAAO,CAAC,UAAU;gBAAE,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YAC5F,MAAM,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YACvC,MAAM,KAAK,CAAA;QACb,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QAClE,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QAClD,OAAO,EAAE,GAAG,IAAI,EAAE,CAAA;IACpB,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,OAAgB;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;QACpC,IAAI,CAAC,OAAO;YAAE,OAAM;QACpB,MAAM,MAAM,GAAuB;YACjC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;YACpC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG;YACrB,gBAAgB,EAAE,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI;YAClE,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;YACzB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ;YAC/B,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;YACvB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAA;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACzB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAA;IAC3B,CAAC;IAEO,SAAS,CAAC,OAAgB;QAChC,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAc,EAAE,EAAE;YACxD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACvD,IAAI,OAAO,KAAK,OAAO;gBAAE,OAAM,CAAC,+BAA+B;YAC/D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC1C,IAAI,OAAO,CAAC,UAAU;gBAAE,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YAC5F,MAAM,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YACvC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;YACnD,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC/F,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACxB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ;gBAC/B,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG;gBACrB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;gBAC9B,SAAS,EAAE,IAAI,CAAC,IAAI;gBACpB,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBACzD,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,mBAAmB,CAAC,IAAc,EAAE,aAAgC;QAC1E,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAA;QACpD,MAAM,QAAQ,GAAG,uBAAuB,CAAC;YACvC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YAClE,gBAAgB,EAAE,IAAI,CAAC,OAAO;YAC9B,aAAa;YACb,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;YAC5C,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO;SACjC,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACpC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,wBAAwB,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;YACrD,uBAAuB,EAAE,UAAU;YACnC,aAAa;YACb,QAAQ,EAAE,QAAQ,CAAC,IAAI,KAAK,IAAI;SACjC,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,MAAc;QAChD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,oBAAoB,IAAI,SAAS,EAAE;YAClE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;SAC7D,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACzB,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,EAAE,CAAA;IACpC,CAAC;IAED,gFAAgF;IAChF,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,IAAI,CAAC,aAAa,EAAE,CAAA;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC;IAED,oEAAoE;IACpE,UAAU,CAAC,OAAe;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAA;QACnE,OAAO,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;IAClF,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,eAAe,CAAC,OAAe,EAAE,MAAM,GAAG,cAAc;QAC5D,IAAI,CAAC,aAAa,EAAE,CAAA;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC1C,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA;QACxD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;QAEzE,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,eAAe,CAAA;QACjE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAA;QAC1C,MAAM,SAAS,GAAG,iBAAiB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;QAC7D,IAAI,SAAS,IAAI,aAAa;YAC5B,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,QAAQ;gBAChB,eAAe,EAAE,aAAa;gBAC9B,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D,CAAA;QAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAClD,IAAI,CAAC,QAAQ,CAAC,OAAO;YACnB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,KAAK,EAAE,MAAM;gBACb,GAAG,EAAE,gCAAgC,OAAO,8BAA8B,QAAQ,CAAC,KAAK,EAAE;aAC3F,CAAC,CAAA;QAEJ,4FAA4F;QAC5F,wDAAwD;QACxD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACpC,SAAS,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAClC,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAA;QACF,2FAA2F;QAC3F,yFAAyF;QACzF,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO;YACP,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,SAAS;YACjB,MAAM;SACP,CAAC,CAAA;QACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC5D,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,eAAe,CAAC,OAAe;QACnC,IAAI,CAAC,aAAa,EAAE,CAAA;QACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QACvC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAClD,IAAI,CAAC,QAAQ,CAAC,OAAO;YACnB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,KAAK,EAAE,MAAM;gBACb,GAAG,EAAE,qCAAqC,OAAO,8BAA8B,QAAQ,CAAC,KAAK,EAAE;aAChG,CAAC,CAAA;QACJ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACpC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAA;QACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACpC,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAAe;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC1C,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAA;YACjC,IAAI,OAAO,CAAC,UAAU;gBAAE,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YAC5F,MAAM,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YACvC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAC5B,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ;gBAC/B,QAAQ,EAAE,OAAO;gBACjB,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG;aACtB,CAAC,CAAA;YACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QAC1B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI;gBACtF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;iBAChC,IAAI,OAAO,CAAC,UAAU;gBAAE,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YACjG,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAA;QACxD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,CAAC,aAAa,EAAE,CAAA;QACpB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAClF,CAAC;IAED,kEAAkE;IAClE,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,IAAI,CAAC,aAAa,EAAE,CAAA;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,YAAY,CAAA;QAC9D,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,eAAe,CAAC;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG;YAC5C,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC;YACxB,IAAI,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7F,OAAO,EAAE,EAAE;SACZ,CAAC,CAAA;QACF,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;QAC3E,MAAM,OAAO,GAAG,IAAI,OAAO,CAAY,CAAC,CAAC,EAAE,EAAE,CAC3C,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAChE,CAAA;QACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAiB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;QACxF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YACzB,MAAM,IAAI,eAAe,CACvB,0BAA0B,EAC1B,4CAA4C,EAC5C,GAAG,OAAO,iBAAiB,CAC5B,CAAA;QACH,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QACnC,IAAI,OAAO;YACT,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,mCAAmC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QACrG,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA,CAAC,6BAA6B;QACzE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;QACxC,OAAO,iBAAiB,CAAC,GAAG,MAAM,KAAK,MAAM,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC,eAAe,CAAA;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAA;QAC/B,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK,IAAI,EAAE;YACjC,MAAM,IAAI,CAAC,QAAQ,CAAA;YACnB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAChG,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACzD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,IAAI,eAAe,CACvB,yBAAyB,EACzB,yDAAyD,EACzD,OAAO,CAAC,KAAK,CACd,CAAA;YACH,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;QACJ,OAAO,IAAI,CAAC,eAAe,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;IACvB,CAAC;IAEO,aAAa;QACnB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,mDAAmD,CAAC,CAAA;QACpG,CAAC;IACH,CAAC;CACF;AAED,SAAS,wBAAwB;IAC/B,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,eAAe,CACjB,gBAAgB,EAChB,uEAAuE,EACvE,iEAAiE,CAClE,CACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The argv mlx-server is started with.
|
|
3
|
+
*
|
|
4
|
+
* Ported from: tauri-plugin-mlx/src/commands.rs (`build_mlx_server_args`, `normalize_mlx_model_path`).
|
|
5
|
+
* Contract: test/fixtures/app/mlx-args.
|
|
6
|
+
*/
|
|
7
|
+
import type { MlxServerConfig } from './config.js';
|
|
8
|
+
/** A weight *file* stands for its model folder; anything else (a folder, a missing path) is kept. */
|
|
9
|
+
export declare function normalizeMlxModelPath(path: string, isFile?: (path: string) => boolean): string;
|
|
10
|
+
export declare function buildMlxServerArgs(modelPath: string, port: number, config: MlxServerConfig, isFile?: (path: string) => boolean): string[];
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The argv mlx-server is started with.
|
|
3
|
+
*
|
|
4
|
+
* Ported from: tauri-plugin-mlx/src/commands.rs (`build_mlx_server_args`, `normalize_mlx_model_path`).
|
|
5
|
+
* Contract: test/fixtures/app/mlx-args.
|
|
6
|
+
*/
|
|
7
|
+
import { statSync } from 'node:fs';
|
|
8
|
+
import { dirname } from 'node:path';
|
|
9
|
+
/** A weight *file* stands for its model folder; anything else (a folder, a missing path) is kept. */
|
|
10
|
+
export function normalizeMlxModelPath(path, isFile = isRegularFile) {
|
|
11
|
+
return isFile(path) ? dirname(path) : path;
|
|
12
|
+
}
|
|
13
|
+
function isRegularFile(path) {
|
|
14
|
+
try {
|
|
15
|
+
return statSync(path).isFile();
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const DRAFT_KINDS = new Set(['dflash', 'mtp', 'eagle3']);
|
|
22
|
+
export function buildMlxServerArgs(modelPath, port, config, isFile) {
|
|
23
|
+
const args = [
|
|
24
|
+
'--model',
|
|
25
|
+
normalizeMlxModelPath(modelPath, isFile),
|
|
26
|
+
'--host',
|
|
27
|
+
'127.0.0.1',
|
|
28
|
+
'--port',
|
|
29
|
+
String(port),
|
|
30
|
+
];
|
|
31
|
+
if (config.ctx_size > 0)
|
|
32
|
+
args.push('--max-kv-size', String(config.ctx_size));
|
|
33
|
+
if (config.draft_model_path !== '') {
|
|
34
|
+
args.push('--draft-model', normalizeMlxModelPath(config.draft_model_path, isFile));
|
|
35
|
+
args.push('--draft-kind', DRAFT_KINDS.has(config.draft_kind) ? config.draft_kind : 'dflash');
|
|
36
|
+
if (config.block_size > 0)
|
|
37
|
+
args.push('--draft-block-size', String(config.block_size));
|
|
38
|
+
}
|
|
39
|
+
if ((config.kv_quant_scheme === 'uniform' || config.kv_quant_scheme === 'turboquant') && config.kv_bits > 0)
|
|
40
|
+
// Rust formats the f32 without a trailing ".0"; so does String for the values settings allow.
|
|
41
|
+
args.push('--kv-bits', String(config.kv_bits), '--kv-quant-scheme', config.kv_quant_scheme);
|
|
42
|
+
return args;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/runtime/mlx/args.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,qGAAqG;AACrG,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,SAAoC,aAAa;IAEjD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAC5C,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAA;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;AAExD,MAAM,UAAU,kBAAkB,CAChC,SAAiB,EACjB,IAAY,EACZ,MAAuB,EACvB,MAAkC;IAElC,MAAM,IAAI,GAAG;QACX,SAAS;QACT,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC;QACxC,QAAQ;QACR,WAAW;QACX,QAAQ;QACR,MAAM,CAAC,IAAI,CAAC;KACb,CAAA;IACD,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC5E,IAAI,MAAM,CAAC,gBAAgB,KAAK,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,qBAAqB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAA;QAClF,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;QAC5F,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;IACvF,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,SAAS,IAAI,MAAM,CAAC,eAAe,KAAK,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC;QACzG,8FAA8F;QAC9F,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;IAC7F,OAAO,IAAI,CAAA;AACb,CAAC"}
|