@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,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Installed backend packs on disk — the pure half. Port of `getBackendDir`, `getBackendExePath`,
|
|
3
|
+
* `isBackendInstalled`, `listInstalledBackendPacks`, `deleteBackendPack` (validation only),
|
|
4
|
+
* `backendTypeEquivalents`, `findCompatibleInstalledBackend` and `mergeBackendOptions` from
|
|
5
|
+
* `extensions/llamacpp-upstream-extension/src/backend.ts`, plus the `order` semantics of
|
|
6
|
+
* `get_local_installed_backends` and the library-name half of `is_cuda_installed` from `backend.rs`.
|
|
7
|
+
*
|
|
8
|
+
* Layout (PLAN.md §8.1): `<data>/<provider>/backends/<version>/<backend>/build/bin/llama-server`,
|
|
9
|
+
* legacy flat `<backend>/llama-server`. Directory scanning, `rm` and `stat` are phase 1
|
|
10
|
+
* (`store.ts`); this file only turns scan results into decisions and joins paths.
|
|
11
|
+
*/
|
|
12
|
+
import { join } from 'node:path';
|
|
13
|
+
import { llamaServerExeName } from '../../config/index.js';
|
|
14
|
+
import { AtomicCoreError } from '../../contracts/index.js';
|
|
15
|
+
import { parseRustU32, stripBom } from '../version.js';
|
|
16
|
+
/**
|
|
17
|
+
* Rust `get_local_installed_backends` on scan results: only directories carrying the executable,
|
|
18
|
+
* names BOM-stripped and trimmed, `order` = mtime seconds as u32 (0 when unknown).
|
|
19
|
+
*/
|
|
20
|
+
export function installedBackendsFromEntries(entries) {
|
|
21
|
+
const out = [];
|
|
22
|
+
for (const entry of entries) {
|
|
23
|
+
if (!entry.hasExe)
|
|
24
|
+
continue;
|
|
25
|
+
const mtime = entry.mtimeSeconds;
|
|
26
|
+
const order = mtime !== undefined && mtime > 0 ? (parseRustU32(String(Math.floor(mtime))) ?? 0) : 0;
|
|
27
|
+
out.push({ version: stripBom(entry.version), backend: stripBom(entry.backend), order });
|
|
28
|
+
}
|
|
29
|
+
return out;
|
|
30
|
+
}
|
|
31
|
+
/** `<backendsDir>/<version>/<backend>`, both ids BOM-stripped. */
|
|
32
|
+
export function getBackendDir(paths, backend, version) {
|
|
33
|
+
return join(paths.backendsDir, stripBom(version), stripBom(backend));
|
|
34
|
+
}
|
|
35
|
+
/** `[build/bin/<exe>, <exe>]` under the pack directory, per platform. */
|
|
36
|
+
export function backendExePathCandidates(paths, backend, version, platform) {
|
|
37
|
+
const dir = getBackendDir(paths, backend, version);
|
|
38
|
+
const exe = llamaServerExeName(platform);
|
|
39
|
+
return [join(dir, 'build', 'bin', exe), join(dir, exe)];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The executable path the app would launch: `build/bin/<exe>` when the pack has a `build/` directory,
|
|
43
|
+
* else the legacy flat `<exe>`. (The app checks for the directory, not the file.)
|
|
44
|
+
*/
|
|
45
|
+
export async function getBackendExePath(paths, backend, version, platform, exists) {
|
|
46
|
+
const [buildExe, flatExe] = backendExePathCandidates(paths, backend, version, platform);
|
|
47
|
+
return (await exists(join(getBackendDir(paths, backend, version), 'build'))) ? buildExe : flatExe;
|
|
48
|
+
}
|
|
49
|
+
/** Rust `is_backend_installed`: either candidate executable exists. */
|
|
50
|
+
export async function isBackendInstalled(paths, backend, version, platform, exists) {
|
|
51
|
+
for (const candidate of backendExePathCandidates(paths, backend, version, platform)) {
|
|
52
|
+
if (await exists(candidate))
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Every installed build with its absolute path (for "reveal in file manager") and whether it is the
|
|
59
|
+
* selected one (which must not be deletable).
|
|
60
|
+
*/
|
|
61
|
+
export function listInstalledBackendPacks(paths, installed, currentVersionBackend) {
|
|
62
|
+
const current = stripBom(currentVersionBackend);
|
|
63
|
+
return installed.map((entry) => {
|
|
64
|
+
const version = stripBom(entry.version);
|
|
65
|
+
const backend = stripBom(entry.backend);
|
|
66
|
+
return {
|
|
67
|
+
version,
|
|
68
|
+
backend,
|
|
69
|
+
path: join(paths.backendsDir, version, backend),
|
|
70
|
+
active: `${version}/${backend}` === current,
|
|
71
|
+
};
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Validate a pack for deletion: both ids non-empty, free of path separators and not `.`/`..` (no
|
|
76
|
+
* escape from the backends directory),
|
|
77
|
+
* and not the selected build — deleting that would leave `version_backend` pointing at nothing and
|
|
78
|
+
* the next load would fail with `BINARY_NOT_FOUND` instead of anything actionable.
|
|
79
|
+
*/
|
|
80
|
+
export function deletableBackendPack(currentVersionBackend, version, backend) {
|
|
81
|
+
const cleanVersion = stripBom(version);
|
|
82
|
+
const cleanBackend = stripBom(backend);
|
|
83
|
+
if (!cleanVersion ||
|
|
84
|
+
!cleanBackend ||
|
|
85
|
+
/[/\\]/.test(cleanVersion) ||
|
|
86
|
+
/[/\\]/.test(cleanBackend) ||
|
|
87
|
+
/^\.+$/.test(cleanVersion) ||
|
|
88
|
+
/^\.+$/.test(cleanBackend)) {
|
|
89
|
+
throw new AtomicCoreError('INVALID_ARGUMENT', `Invalid backend pack: '${version}/${backend}'`);
|
|
90
|
+
}
|
|
91
|
+
if (`${cleanVersion}/${cleanBackend}` === stripBom(currentVersionBackend)) {
|
|
92
|
+
throw new AtomicCoreError('INVALID_ARGUMENT', 'Cannot remove the backend that is currently selected');
|
|
93
|
+
}
|
|
94
|
+
return { version: cleanVersion, backend: cleanBackend };
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Ids treated as the same backend type (ATO-233): a tarball installed by its upstream file name sits
|
|
98
|
+
* on disk as `ubuntu-vulkan-x64` while the app stores `linux-vulkan-x64`.
|
|
99
|
+
*/
|
|
100
|
+
export function backendTypeEquivalents(backendType) {
|
|
101
|
+
const bt = stripBom(backendType);
|
|
102
|
+
const ids = new Set([bt]);
|
|
103
|
+
const pairs = [
|
|
104
|
+
['linux-vulkan-x64', 'ubuntu-vulkan-x64'],
|
|
105
|
+
['linux-vulkan-arm64', 'ubuntu-vulkan-arm64'],
|
|
106
|
+
['linux-cpu-x64', 'ubuntu-x64'],
|
|
107
|
+
['linux-cpu-arm64', 'ubuntu-arm64'],
|
|
108
|
+
];
|
|
109
|
+
for (const [linux, ubuntu] of pairs) {
|
|
110
|
+
if (bt === linux)
|
|
111
|
+
ids.add(ubuntu);
|
|
112
|
+
if (bt === ubuntu)
|
|
113
|
+
ids.add(linux);
|
|
114
|
+
}
|
|
115
|
+
return ids;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Newest installed build of exactly this type (any release tag), by install `order`, or `null`.
|
|
119
|
+
* Never crosses types (cuda → cpu is a user choice). Fallback for a pinned tag that cannot be
|
|
120
|
+
* downloaded (ATO-179).
|
|
121
|
+
*/
|
|
122
|
+
export function findCompatibleInstalledBackend(backendType, installed) {
|
|
123
|
+
const equivalents = backendTypeEquivalents(backendType);
|
|
124
|
+
const sameType = installed.filter((b) => equivalents.has(stripBom(b.backend)));
|
|
125
|
+
if (sameType.length === 0)
|
|
126
|
+
return null;
|
|
127
|
+
return sameType.sort((a, b) => (b.order ?? 0) - (a.order ?? 0))[0] ?? null;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Flatten the dropdown tiers (most-preferred first) into one list: first spelling of a value wins
|
|
131
|
+
* (keeps the richest label), blanks and BOM-only values drop, and `recommended` is forced to the
|
|
132
|
+
* front when absent — a recommendation the dropdown cannot offer is a dead end.
|
|
133
|
+
*/
|
|
134
|
+
export function mergeBackendOptions(tiers, recommended) {
|
|
135
|
+
const merged = [];
|
|
136
|
+
const seen = new Set();
|
|
137
|
+
for (const tier of tiers) {
|
|
138
|
+
for (const option of tier) {
|
|
139
|
+
const value = stripBom(option.value);
|
|
140
|
+
if (!value || seen.has(value))
|
|
141
|
+
continue;
|
|
142
|
+
seen.add(value);
|
|
143
|
+
merged.push({ value, name: option.name });
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
const recommendedValue = recommended ? stripBom(recommended.value) : '';
|
|
147
|
+
if (recommended && recommendedValue && !seen.has(recommendedValue)) {
|
|
148
|
+
merged.unshift({ value: recommendedValue, name: recommended.name });
|
|
149
|
+
}
|
|
150
|
+
return merged;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* CUDA runtime library a backend needs, by CUDA *major* (so a 13.x minor bump does not break the
|
|
154
|
+
* probe): `cudart64_{110,12,13}.dll` on Windows, `libcudart.so.{11.0,12,13}` on Linux; `null` for
|
|
155
|
+
* any other OS or major.
|
|
156
|
+
*/
|
|
157
|
+
export function cudaRuntimeLibName(osType, version) {
|
|
158
|
+
const major = parseRustU32(version.split('.')[0] ?? '') ?? 0;
|
|
159
|
+
const key = `${osType}:${major}`;
|
|
160
|
+
switch (key) {
|
|
161
|
+
case 'windows:11':
|
|
162
|
+
return 'cudart64_110.dll';
|
|
163
|
+
case 'windows:12':
|
|
164
|
+
return 'cudart64_12.dll';
|
|
165
|
+
case 'windows:13':
|
|
166
|
+
return 'cudart64_13.dll';
|
|
167
|
+
case 'linux:11':
|
|
168
|
+
return 'libcudart.so.11.0';
|
|
169
|
+
case 'linux:12':
|
|
170
|
+
return 'libcudart.so.12';
|
|
171
|
+
case 'linux:13':
|
|
172
|
+
return 'libcudart.so.13';
|
|
173
|
+
default:
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Rust `is_cuda_installed`: the runtime library is present at `<backendDir>/build/bin/<lib>`, or it
|
|
179
|
+
* sits at the legacy `<data>/llamacpp/lib/<lib>` and is moved into place (creating `build/bin`;
|
|
180
|
+
* a failed `mkdir` is `IO_ERROR`, a failed `rename` is `false`). `false` for an unknown OS/major.
|
|
181
|
+
*/
|
|
182
|
+
export async function isCudaInstalled(input) {
|
|
183
|
+
const libName = cudaRuntimeLibName(input.osType, input.version);
|
|
184
|
+
if (!libName)
|
|
185
|
+
return false;
|
|
186
|
+
const targetDir = join(input.backendDir, 'build', 'bin');
|
|
187
|
+
const newPath = join(targetDir, libName);
|
|
188
|
+
if (await input.fs.exists(newPath))
|
|
189
|
+
return true;
|
|
190
|
+
const oldPath = join(input.legacyLibDir, libName);
|
|
191
|
+
if (!(await input.fs.exists(oldPath)))
|
|
192
|
+
return false;
|
|
193
|
+
if (!(await input.fs.exists(targetDir))) {
|
|
194
|
+
try {
|
|
195
|
+
await input.fs.mkdir(targetDir);
|
|
196
|
+
}
|
|
197
|
+
catch (err) {
|
|
198
|
+
throw new AtomicCoreError('IO_ERROR', `Failed to create target directory: ${err instanceof Error ? err.message : String(err)}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
try {
|
|
202
|
+
await input.fs.rename(oldPath, newPath);
|
|
203
|
+
return true;
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=installed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installed.js","sourceRoot":"","sources":["../../../src/backend/installed/installed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The filesystem half of `backend/`: what is actually installed under
|
|
3
|
+
* `<data>/<provider>/backends/<version>/<backend>/`.
|
|
4
|
+
*
|
|
5
|
+
* `discoverBackendBinary` reproduces `discover_llamacpp_binary_in` (cli/mod.rs:198) exactly, because
|
|
6
|
+
* `serve` without `--bin` must pick the same executable the Rust CLI picks: version directories are
|
|
7
|
+
* ordered by parsed build number (so `b10018-1.3.0` outranks `b9000`, which plain string sort gets
|
|
8
|
+
* wrong), ties broken by name descending, backends inside a version by name ascending, and each pack
|
|
9
|
+
* is probed at `build/bin/<exe>` before the flat `<exe>`.
|
|
10
|
+
*/
|
|
11
|
+
import type { LocalProviderId } from '../../contracts/index.js';
|
|
12
|
+
import type { DataLayout } from '../../config/index.js';
|
|
13
|
+
import type { BackendVersion } from '../types.js';
|
|
14
|
+
export interface DiscoveredBackendBinary {
|
|
15
|
+
path: string;
|
|
16
|
+
/** `<version>/<backend>`, the form the argument builder parses for feature gates. */
|
|
17
|
+
version_backend: string;
|
|
18
|
+
version: string;
|
|
19
|
+
backend: string;
|
|
20
|
+
}
|
|
21
|
+
/** Version directories newest first: build number descending, then raw name descending. */
|
|
22
|
+
export declare function orderVersionDirs(names: readonly string[]): string[];
|
|
23
|
+
/**
|
|
24
|
+
* Every installed pack, in directory order with `order` = install mtime, exactly as Rust
|
|
25
|
+
* `get_local_installed_backends` reports it. Callers that need a ranking sort it themselves.
|
|
26
|
+
*/
|
|
27
|
+
export declare function scanInstalledBackends(layout: DataLayout, provider: LocalProviderId, platform?: NodeJS.Platform): Promise<BackendVersion[]>;
|
|
28
|
+
/** The newest usable `llama-server` in the data folder, or `undefined` when none is installed. */
|
|
29
|
+
export declare function discoverBackendBinary(layout: DataLayout, provider?: LocalProviderId, platform?: NodeJS.Platform): Promise<DiscoveredBackendBinary | undefined>;
|
|
30
|
+
/**
|
|
31
|
+
* Recover `<version>/<backend>` from a hand-supplied `--bin` path that still sits in the standard
|
|
32
|
+
* layout (`version_backend_from_bin_path`, cli/mod.rs). A binary from anywhere else has no tag, and
|
|
33
|
+
* the caller must fall back to a neutral placeholder rather than guess a feature set.
|
|
34
|
+
*/
|
|
35
|
+
export declare function versionBackendFromBinPath(binPath: string): string | undefined;
|
|
36
|
+
/** Path of a specific pack's executable, or `undefined` when that pack is not installed. */
|
|
37
|
+
export declare function resolveBackendExe(layout: DataLayout, provider: LocalProviderId, version: string, backend: string, platform?: NodeJS.Platform): Promise<string | undefined>;
|
|
38
|
+
/** Directory a pack lives in, for deletion and disk accounting. */
|
|
39
|
+
export declare function backendPackDir(layout: DataLayout, provider: LocalProviderId, version: string, backend: string): string;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The filesystem half of `backend/`: what is actually installed under
|
|
3
|
+
* `<data>/<provider>/backends/<version>/<backend>/`.
|
|
4
|
+
*
|
|
5
|
+
* `discoverBackendBinary` reproduces `discover_llamacpp_binary_in` (cli/mod.rs:198) exactly, because
|
|
6
|
+
* `serve` without `--bin` must pick the same executable the Rust CLI picks: version directories are
|
|
7
|
+
* ordered by parsed build number (so `b10018-1.3.0` outranks `b9000`, which plain string sort gets
|
|
8
|
+
* wrong), ties broken by name descending, backends inside a version by name ascending, and each pack
|
|
9
|
+
* is probed at `build/bin/<exe>` before the flat `<exe>`.
|
|
10
|
+
*/
|
|
11
|
+
import { readdir, stat } from 'node:fs/promises';
|
|
12
|
+
import { join, sep } from 'node:path';
|
|
13
|
+
import { backendExeCandidates, llamaServerExeName } from '../../config/index.js';
|
|
14
|
+
import { installedBackendsFromEntries } from './installed.js';
|
|
15
|
+
// Two build-number parsers exist on purpose: `version.ts` has the app's strict `^b(\d+)$` one, and
|
|
16
|
+
// this is the Rust `ArgumentBuilder::parse_build_number`, which also reads the unified fork tag
|
|
17
|
+
// `b10018-1.3.0`. Discovery must use the lenient one, or the fork's builds sort last.
|
|
18
|
+
import { parseBuildNumber as parseLenientBuildNumber } from '../../runtime/llamacpp/args.js';
|
|
19
|
+
import { stripBom } from '../version.js';
|
|
20
|
+
const dirNames = async (dir) => {
|
|
21
|
+
const entries = await readdir(dir, { withFileTypes: true }).catch(() => []);
|
|
22
|
+
return entries.filter((e) => e.isDirectory()).map((e) => e.name);
|
|
23
|
+
};
|
|
24
|
+
const exists = (path) => stat(path)
|
|
25
|
+
.then(() => true)
|
|
26
|
+
.catch(() => false);
|
|
27
|
+
/** Version directories newest first: build number descending, then raw name descending. */
|
|
28
|
+
export function orderVersionDirs(names) {
|
|
29
|
+
return [...names].sort((a, b) => {
|
|
30
|
+
const ba = parseLenientBuildNumber(a);
|
|
31
|
+
const bb = parseLenientBuildNumber(b);
|
|
32
|
+
if (ba !== bb)
|
|
33
|
+
return (bb ?? -1) - (ba ?? -1);
|
|
34
|
+
return a < b ? 1 : a > b ? -1 : 0;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Every installed pack, in directory order with `order` = install mtime, exactly as Rust
|
|
39
|
+
* `get_local_installed_backends` reports it. Callers that need a ranking sort it themselves.
|
|
40
|
+
*/
|
|
41
|
+
export async function scanInstalledBackends(layout, provider, platform = process.platform) {
|
|
42
|
+
const paths = layout.provider(provider);
|
|
43
|
+
const exe = llamaServerExeName(platform);
|
|
44
|
+
const entries = [];
|
|
45
|
+
for (const version of await dirNames(paths.backendsDir)) {
|
|
46
|
+
for (const backend of await dirNames(join(paths.backendsDir, version))) {
|
|
47
|
+
const candidates = backendExeCandidates(paths, version, backend, exe);
|
|
48
|
+
let hasExe = false;
|
|
49
|
+
let mtimeSeconds = 0;
|
|
50
|
+
for (const candidate of candidates) {
|
|
51
|
+
const s = await stat(candidate).catch(() => undefined);
|
|
52
|
+
if (s) {
|
|
53
|
+
hasExe = true;
|
|
54
|
+
mtimeSeconds = Math.floor(s.mtimeMs / 1000);
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
entries.push({ version: stripBom(version), backend: stripBom(backend), hasExe, mtimeSeconds });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return installedBackendsFromEntries(entries);
|
|
62
|
+
}
|
|
63
|
+
/** The newest usable `llama-server` in the data folder, or `undefined` when none is installed. */
|
|
64
|
+
export async function discoverBackendBinary(layout, provider = 'llamacpp-upstream', platform = process.platform) {
|
|
65
|
+
const paths = layout.provider(provider);
|
|
66
|
+
const exe = llamaServerExeName(platform);
|
|
67
|
+
for (const version of orderVersionDirs(await dirNames(paths.backendsDir))) {
|
|
68
|
+
for (const backend of (await dirNames(join(paths.backendsDir, version))).sort()) {
|
|
69
|
+
for (const candidate of backendExeCandidates(paths, version, backend, exe)) {
|
|
70
|
+
if (await exists(candidate))
|
|
71
|
+
return { path: candidate, version_backend: `${version}/${backend}`, version, backend };
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Recover `<version>/<backend>` from a hand-supplied `--bin` path that still sits in the standard
|
|
79
|
+
* layout (`version_backend_from_bin_path`, cli/mod.rs). A binary from anywhere else has no tag, and
|
|
80
|
+
* the caller must fall back to a neutral placeholder rather than guess a feature set.
|
|
81
|
+
*/
|
|
82
|
+
export function versionBackendFromBinPath(binPath) {
|
|
83
|
+
const parts = binPath.split(/[\\/]/).filter(Boolean);
|
|
84
|
+
const backendsAt = parts.lastIndexOf('backends');
|
|
85
|
+
if (backendsAt < 0 || parts.length < backendsAt + 3)
|
|
86
|
+
return undefined;
|
|
87
|
+
const version = parts[backendsAt + 1];
|
|
88
|
+
const backend = parts[backendsAt + 2];
|
|
89
|
+
if (!version || !backend)
|
|
90
|
+
return undefined;
|
|
91
|
+
return `${version}/${backend}`;
|
|
92
|
+
}
|
|
93
|
+
/** Path of a specific pack's executable, or `undefined` when that pack is not installed. */
|
|
94
|
+
export async function resolveBackendExe(layout, provider, version, backend, platform = process.platform) {
|
|
95
|
+
const candidates = backendExeCandidates(layout.provider(provider), stripBom(version), stripBom(backend), llamaServerExeName(platform));
|
|
96
|
+
for (const candidate of candidates)
|
|
97
|
+
if (await exists(candidate))
|
|
98
|
+
return candidate;
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
/** Directory a pack lives in, for deletion and disk accounting. */
|
|
102
|
+
export function backendPackDir(layout, provider, version, backend) {
|
|
103
|
+
return [layout.provider(provider).backendsDir, stripBom(version), stripBom(backend)].join(sep);
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/backend/installed/scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/backend/optimal/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The optimal-backend cache record and the recheck / refresh decisions around it. Port of
|
|
3
|
+
* `getCachedOptimalBackend`, `persistOptimalBackendCache`, `resolveConcreteOptimalBackend`,
|
|
4
|
+
* `refreshOptimalBackendCache` and `recheckOptimalBackend` from
|
|
5
|
+
* `extensions/llamacpp-upstream-extension/src/index.ts`, without the storage, events and timeouts.
|
|
6
|
+
*
|
|
7
|
+
* The app keeps the record in `localStorage[OPTIMAL_BACKEND_CACHE_KEY]`; the core keeps it in
|
|
8
|
+
* `<data>/atomic-core/optimal-backend.json` (`DataLayout.core.optimalBackend`). Same JSON either way.
|
|
9
|
+
*
|
|
10
|
+
* What the caller does around these functions (the entangled halves left in the app):
|
|
11
|
+
* - skips both flows entirely on macOS (there are no GPU tiers to recommend);
|
|
12
|
+
* - runs `detectIdealBackendType` under a 20 s timeout, mapping a timeout to `detection-failed`;
|
|
13
|
+
* - on `detection_failed` throws the `BACKEND_DETECTION_FAILED` sentinel (the UI matches its
|
|
14
|
+
* message) and leaves the record and any prior recommendation untouched;
|
|
15
|
+
* - persists `record`, and for `recheckOptimalBackend` writes / removes
|
|
16
|
+
* `BETTER_BACKEND_RECOMMENDATION_KEY` and emits `onBetterBackendDetected` with `payload`.
|
|
17
|
+
*/
|
|
18
|
+
import type { BackendRecommendation, BackendVersion, IdealBackendResult, OptimalBackendCacheRecord } from '../types.js';
|
|
19
|
+
export declare const OPTIMAL_BACKEND_CACHE_KEY = "atomic_llamacpp_upstream_optimal_backend_v1";
|
|
20
|
+
export declare const OPTIMAL_BACKEND_PROVIDER = "llamacpp-upstream";
|
|
21
|
+
/** Legacy recommendation key the `useBackendUpdater` mount path still reads. */
|
|
22
|
+
export declare const BETTER_BACKEND_RECOMMENDATION_KEY = "llama_cpp_better_backend_recommendation";
|
|
23
|
+
/**
|
|
24
|
+
* Sentinel `Error.message` for "detection could not complete — keep the current backend"
|
|
25
|
+
* (ATO-161). The web-app handler matches the literal value; keep the two in sync.
|
|
26
|
+
*/
|
|
27
|
+
export declare const BACKEND_DETECTION_FAILED = "BACKEND_DETECTION_FAILED";
|
|
28
|
+
export type CompletedDetection = Exclude<IdealBackendResult, {
|
|
29
|
+
kind: 'detection-failed';
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Validate a stored record. Anything with the wrong schema, provider, a non-finite or negative
|
|
33
|
+
* `detectedAt`, missing strings, a `gpu` record whose `recommendedBackend` is not a concrete
|
|
34
|
+
* `<tag>/<idealBackendId>`, or a `cpu-optimal` record carrying GPU fields is `null` (ignored).
|
|
35
|
+
*/
|
|
36
|
+
export declare function parseOptimalBackendCache(raw: string | null | undefined, provider?: 'llamacpp-upstream' | 'llamacpp'): OptimalBackendCacheRecord | null;
|
|
37
|
+
/** The record to persist for a completed detection (`persistOptimalBackendCache` minus the write). */
|
|
38
|
+
export declare function buildOptimalBackendCacheRecord(detection: CompletedDetection, currentBackend: string, recommendedBackend: string | null | undefined, now: number): OptimalBackendCacheRecord;
|
|
39
|
+
export interface ConcreteBackendResolver {
|
|
40
|
+
/** The hardware-gated catalog (remote + local). The caller bounds it (the app: 20 s → `[]`). */
|
|
41
|
+
listSupportedBackends: () => Promise<BackendVersion[]>;
|
|
42
|
+
/** The remote catalog alone, for `resolveLatestVersionBackend`. Bounded likewise (20 s → `[]`). */
|
|
43
|
+
fetchRemoteBackends: () => Promise<BackendVersion[]>;
|
|
44
|
+
onWarn?: (message: string) => void;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Concrete `<tag>/<backend>` for the detected ideal type: newest catalog entry of that type, else the
|
|
48
|
+
* newest remote asset (exact or family match), else the current backend's tag with the ideal type
|
|
49
|
+
* (so an in-family migration such as CUDA 13.1 → 13.3 still gets a target), else `null` when there is
|
|
50
|
+
* no current tag to borrow.
|
|
51
|
+
*/
|
|
52
|
+
export declare function resolveConcreteOptimalBackend(idealType: string, currentBackend: string, deps: ConcreteBackendResolver, operation?: string): Promise<string | null>;
|
|
53
|
+
export type RefreshOutcome = {
|
|
54
|
+
outcome: 'detection_failed';
|
|
55
|
+
} | {
|
|
56
|
+
outcome: 'cached';
|
|
57
|
+
record: OptimalBackendCacheRecord;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Silent cache refresh (startup coordinator, once per launch). Never emits a recommendation. A
|
|
61
|
+
* failed concrete resolution still caches the `gpu` verdict, just without `recommendedBackend`.
|
|
62
|
+
*/
|
|
63
|
+
export declare function refreshOptimalBackendCache(detection: IdealBackendResult, currentBackend: string, resolveConcrete: (idealType: string, currentBackend: string) => Promise<string | null>, now: number): Promise<RefreshOutcome>;
|
|
64
|
+
/**
|
|
65
|
+
* Why `recheckOptimalBackend` did or did not produce a recommendation. The app collapsed four of
|
|
66
|
+
* these into `null` and telemetry could not tell `already_optimal` (healthy) from the rest.
|
|
67
|
+
*/
|
|
68
|
+
export type RecheckOutcome = {
|
|
69
|
+
outcome: 'detection_failed';
|
|
70
|
+
} | {
|
|
71
|
+
outcome: 'cpu_optimal';
|
|
72
|
+
record: OptimalBackendCacheRecord;
|
|
73
|
+
} | {
|
|
74
|
+
outcome: 'already_optimal';
|
|
75
|
+
record: OptimalBackendCacheRecord;
|
|
76
|
+
} | {
|
|
77
|
+
outcome: 'no_catalog_entry';
|
|
78
|
+
record: OptimalBackendCacheRecord;
|
|
79
|
+
} | {
|
|
80
|
+
outcome: 'recommend';
|
|
81
|
+
record: OptimalBackendCacheRecord;
|
|
82
|
+
payload: BackendRecommendation;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Manual "Find optimal backend" / onboarding recheck. Same category *and* same backend type as the
|
|
86
|
+
* current build is `already_optimal` without resolving anything; otherwise the concrete target is
|
|
87
|
+
* resolved and compared — equal to current is `already_optimal`, nothing resolvable is
|
|
88
|
+
* `no_catalog_entry`, else `recommend` with the event payload.
|
|
89
|
+
*/
|
|
90
|
+
export declare function recheckOptimalBackend(detection: IdealBackendResult, currentBackend: string, resolveConcrete: (idealType: string, currentBackend: string) => Promise<string | null>, now: number): Promise<RecheckOutcome>;
|