@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,350 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<data>/atomic-core/settings.json` — the core's replacement for the app's `localStorage[<extension>]`
|
|
3
|
+
* descriptor arrays (core/src/browser/extension.ts:150-240) and its loose service keys
|
|
4
|
+
* (`llama_cpp_pending_backend`, `llama_cpp_better_backend_recommendation`, … — PLAN.md §8.1).
|
|
5
|
+
*
|
|
6
|
+
* Shape (PLAN.md §3.4):
|
|
7
|
+
* { version, revision, updated_at,
|
|
8
|
+
* providers: { <provider>: { <canonical key>: <typed value> } },
|
|
9
|
+
* server: ServerSettings, cloud: { providers: [] },
|
|
10
|
+
* state: { providers: { <provider>: { backend_type, pending_backend, better_backend_recommendation,
|
|
11
|
+
* last_recheck_outcome } },
|
|
12
|
+
* migrations: { <scope>: { baseline, legacy_hash, acknowledged_revision } } } }
|
|
13
|
+
*
|
|
14
|
+
* Rules:
|
|
15
|
+
* - `revision` is monotonic and only moves when a value actually changed; callers pass
|
|
16
|
+
* `expectedRevision` to get a conflict (`INVALID_ARGUMENT`) instead of a lost update.
|
|
17
|
+
* - Every write is atomic: `<file>.tmp` then rename, mode 0600 (protected like credentials).
|
|
18
|
+
* - Unknown keys — at the top level, inside a provider, inside `state` — survive read → write, so an
|
|
19
|
+
* older core never destroys what a newer one stored (PLAN.md §5.1).
|
|
20
|
+
* - Values are canonicalized on read and on write (`canonicalizeSettingValues`), so `get()` returns
|
|
21
|
+
* the types Rust `LlamacppConfig` expects even when the file was hand-edited with strings.
|
|
22
|
+
* - I/O is injected (`fs`, `now`) so tests run on an in-memory fake.
|
|
23
|
+
*/
|
|
24
|
+
import { mkdir, readFile, rename, stat, writeFile } from 'node:fs/promises';
|
|
25
|
+
import { dirname } from 'node:path';
|
|
26
|
+
import { AtomicCoreError, DEFAULT_SERVER_SETTINGS } from '../contracts/index.js';
|
|
27
|
+
import { LOCAL_PROVIDER_IDS, canonicalizeSettingValues, defaultSettingValues } from './schema.js';
|
|
28
|
+
import { classifyImport, legacyHash, planImport } from './import.js';
|
|
29
|
+
export const SETTINGS_FILE_VERSION = 1;
|
|
30
|
+
const NODE_FS = { readFile, writeFile, rename, mkdir, stat };
|
|
31
|
+
export const EMPTY_PROVIDER_STATE = {
|
|
32
|
+
backend_type: null,
|
|
33
|
+
pending_backend: null,
|
|
34
|
+
better_backend_recommendation: null,
|
|
35
|
+
last_recheck_outcome: null,
|
|
36
|
+
};
|
|
37
|
+
function isRecord(v) {
|
|
38
|
+
return typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
39
|
+
}
|
|
40
|
+
function asRecord(v) {
|
|
41
|
+
return isRecord(v) ? v : {};
|
|
42
|
+
}
|
|
43
|
+
function isEnoent(e) {
|
|
44
|
+
return isRecord(e) && e['code'] === 'ENOENT';
|
|
45
|
+
}
|
|
46
|
+
function sameValue(a, b) {
|
|
47
|
+
return a === b || JSON.stringify(a) === JSON.stringify(b);
|
|
48
|
+
}
|
|
49
|
+
/** Schema defaults with the wire types applied — what a fresh provider section holds. */
|
|
50
|
+
export function canonicalProviderDefaults(provider) {
|
|
51
|
+
return canonicalizeSettingValues(provider, defaultSettingValues(provider));
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Fill every known section with defaults, keep everything else. `raw` may be `{}` (fresh file) or
|
|
55
|
+
* anything a previous core wrote. Throws `IO_ERROR` when the file claims a newer format version.
|
|
56
|
+
*/
|
|
57
|
+
export function normalizeSettingsDocument(raw, nowMs) {
|
|
58
|
+
const version = raw['version'];
|
|
59
|
+
if (typeof version === 'number' && version > SETTINGS_FILE_VERSION) {
|
|
60
|
+
throw new AtomicCoreError('IO_ERROR', `settings.json version ${version} is newer than this core supports (${SETTINGS_FILE_VERSION})`);
|
|
61
|
+
}
|
|
62
|
+
const revisionRaw = raw['revision'];
|
|
63
|
+
const revision = typeof revisionRaw === 'number' && Number.isInteger(revisionRaw) && revisionRaw >= 0 ? revisionRaw : 0;
|
|
64
|
+
const rawProviders = asRecord(raw['providers']);
|
|
65
|
+
const providers = { ...rawProviders };
|
|
66
|
+
for (const p of LOCAL_PROVIDER_IDS) {
|
|
67
|
+
providers[p] = canonicalizeSettingValues(p, {
|
|
68
|
+
...canonicalProviderDefaults(p),
|
|
69
|
+
...asRecord(rawProviders[p]),
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
const rawState = asRecord(raw['state']);
|
|
73
|
+
const rawStateProviders = asRecord(rawState['providers']);
|
|
74
|
+
const stateProviders = { ...rawStateProviders };
|
|
75
|
+
for (const p of LOCAL_PROVIDER_IDS) {
|
|
76
|
+
stateProviders[p] = { ...EMPTY_PROVIDER_STATE, ...asRecord(rawStateProviders[p]) };
|
|
77
|
+
}
|
|
78
|
+
const rawMigrations = asRecord(rawState['migrations']);
|
|
79
|
+
const migrations = {};
|
|
80
|
+
for (const [scope, rec] of Object.entries(rawMigrations)) {
|
|
81
|
+
const r = asRecord(rec);
|
|
82
|
+
migrations[scope] = {
|
|
83
|
+
...r,
|
|
84
|
+
baseline: isRecord(r['baseline']) ? r['baseline'] : null,
|
|
85
|
+
legacy_hash: typeof r['legacy_hash'] === 'string' ? r['legacy_hash'] : null,
|
|
86
|
+
acknowledged_revision: typeof r['acknowledged_revision'] === 'number' ? r['acknowledged_revision'] : null,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
const rawCloud = asRecord(raw['cloud']);
|
|
90
|
+
const cloudProviders = Array.isArray(rawCloud['providers'])
|
|
91
|
+
? rawCloud['providers'].filter(isRecord)
|
|
92
|
+
: [];
|
|
93
|
+
return {
|
|
94
|
+
...raw,
|
|
95
|
+
version: SETTINGS_FILE_VERSION,
|
|
96
|
+
revision,
|
|
97
|
+
updated_at: typeof raw['updated_at'] === 'string' ? raw['updated_at'] : new Date(nowMs).toISOString(),
|
|
98
|
+
providers,
|
|
99
|
+
server: { ...DEFAULT_SERVER_SETTINGS, ...asRecord(raw['server']) },
|
|
100
|
+
cloud: { ...rawCloud, providers: cloudProviders },
|
|
101
|
+
state: { ...rawState, providers: stateProviders, migrations },
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
export class SettingsStore {
|
|
105
|
+
path;
|
|
106
|
+
doc;
|
|
107
|
+
fs;
|
|
108
|
+
now;
|
|
109
|
+
listeners = new Set();
|
|
110
|
+
/** Serialises mutations so two concurrent `update`s never race on `.tmp`. */
|
|
111
|
+
chain = Promise.resolve();
|
|
112
|
+
constructor(path, doc, fs, now) {
|
|
113
|
+
this.path = path;
|
|
114
|
+
this.doc = doc;
|
|
115
|
+
this.fs = fs;
|
|
116
|
+
this.now = now;
|
|
117
|
+
}
|
|
118
|
+
/** Read the file, or create it with schema defaults when absent. Corrupt JSON is an `IO_ERROR`. */
|
|
119
|
+
static async open(path, options = {}) {
|
|
120
|
+
const fs = options.fs ?? NODE_FS;
|
|
121
|
+
const now = options.now ?? Date.now;
|
|
122
|
+
let exists = true;
|
|
123
|
+
try {
|
|
124
|
+
await fs.stat(path);
|
|
125
|
+
}
|
|
126
|
+
catch (e) {
|
|
127
|
+
if (!isEnoent(e))
|
|
128
|
+
throw new AtomicCoreError('IO_ERROR', `cannot stat ${path}: ${e.message}`);
|
|
129
|
+
exists = false;
|
|
130
|
+
}
|
|
131
|
+
if (!exists) {
|
|
132
|
+
const store = new SettingsStore(path, normalizeSettingsDocument(options.ownerScope ? { owner_scope: options.ownerScope } : {}, now()), fs, now);
|
|
133
|
+
await store.persist();
|
|
134
|
+
return store;
|
|
135
|
+
}
|
|
136
|
+
let text;
|
|
137
|
+
try {
|
|
138
|
+
text = await fs.readFile(path, 'utf8');
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
throw new AtomicCoreError('IO_ERROR', `cannot read ${path}: ${e.message}`);
|
|
142
|
+
}
|
|
143
|
+
let raw;
|
|
144
|
+
try {
|
|
145
|
+
raw = JSON.parse(text);
|
|
146
|
+
}
|
|
147
|
+
catch (e) {
|
|
148
|
+
throw new AtomicCoreError('IO_ERROR', `${path} is not valid JSON: ${e.message}`);
|
|
149
|
+
}
|
|
150
|
+
if (!isRecord(raw))
|
|
151
|
+
throw new AtomicCoreError('IO_ERROR', `${path} is not a JSON object`);
|
|
152
|
+
if (options.ownerScope && raw['owner_scope'] && raw['owner_scope'] !== options.ownerScope)
|
|
153
|
+
throw new AtomicCoreError('CORE_ALREADY_RUNNING', 'This data folder belongs to another core scope.');
|
|
154
|
+
const store = new SettingsStore(path, normalizeSettingsDocument(options.ownerScope ? { ...raw, owner_scope: options.ownerScope } : raw, now()), fs, now);
|
|
155
|
+
if (options.ownerScope && !raw['owner_scope'])
|
|
156
|
+
await store.persist();
|
|
157
|
+
return store;
|
|
158
|
+
}
|
|
159
|
+
get revision() {
|
|
160
|
+
return this.doc.revision;
|
|
161
|
+
}
|
|
162
|
+
/** Full deep copy of the document (control API snapshot). */
|
|
163
|
+
snapshot() {
|
|
164
|
+
return structuredClone(this.doc);
|
|
165
|
+
}
|
|
166
|
+
get(provider) {
|
|
167
|
+
assertProvider(provider);
|
|
168
|
+
return structuredClone(this.doc.providers[provider]);
|
|
169
|
+
}
|
|
170
|
+
get server() {
|
|
171
|
+
return structuredClone(this.doc.server);
|
|
172
|
+
}
|
|
173
|
+
get state() {
|
|
174
|
+
return structuredClone(this.doc.state);
|
|
175
|
+
}
|
|
176
|
+
/** Apply `patch` (canonicalized) to a provider; keys whose value is unchanged are ignored. */
|
|
177
|
+
async update(provider, patch, options = {}) {
|
|
178
|
+
assertProvider(provider);
|
|
179
|
+
const canonical = canonicalizeSettingValues(provider, patch);
|
|
180
|
+
return this.mutate(options, (doc) => applyPatch(doc.providers[provider], canonical, (key, value) => ({ scope: provider, key, value })));
|
|
181
|
+
}
|
|
182
|
+
async updateServer(patch, options = {}) {
|
|
183
|
+
return this.mutate(options, (doc) => applyPatch(doc.server, patch, (key, value) => ({ scope: 'server', key, value })));
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Replace the cloud provider list (non-secret parts only; keys live in credentials.json). One
|
|
187
|
+
* change is reported for the whole list when anything in it differs.
|
|
188
|
+
*/
|
|
189
|
+
async setCloudProviders(providers, options = {}) {
|
|
190
|
+
return this.mutate(options, (doc) => {
|
|
191
|
+
if (JSON.stringify(doc.cloud.providers) === JSON.stringify(providers))
|
|
192
|
+
return [];
|
|
193
|
+
doc.cloud.providers = structuredClone(providers);
|
|
194
|
+
return [{ scope: 'cloud', key: 'providers', value: providers.map((p) => p['provider']) }];
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
async updateState(provider, patch, options = {}) {
|
|
198
|
+
assertProvider(provider);
|
|
199
|
+
return this.mutate(options, (doc) => applyPatch(doc.state.providers[provider], patch, (key, value) => ({
|
|
200
|
+
scope: 'state',
|
|
201
|
+
key: `${provider}.${key}`,
|
|
202
|
+
value,
|
|
203
|
+
})));
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Take the desktop app's settings for a provider (PLAN.md §3.4).
|
|
207
|
+
*
|
|
208
|
+
* Three-way, not a copy: see `import.ts`. Nothing is written when any key conflicts, so a scope
|
|
209
|
+
* is either fully migrated or not migrated at all — a half-applied import would leave the app and
|
|
210
|
+
* the core disagreeing about settings neither side accepted.
|
|
211
|
+
*
|
|
212
|
+
* The migration record is written even when the merge applies no values, because the record is
|
|
213
|
+
* what stops the next start from merging the same change all over again.
|
|
214
|
+
*/
|
|
215
|
+
async importProvider(provider, legacyValues, options = {}) {
|
|
216
|
+
assertProvider(provider);
|
|
217
|
+
const canonicalLegacy = canonicalizeSettingValues(provider, legacyValues);
|
|
218
|
+
const hash = legacyHash(canonicalLegacy);
|
|
219
|
+
let outcome = { status: 'unchanged', applied: [], conflicts: [] };
|
|
220
|
+
const result = await this.mutate(options, (doc) => {
|
|
221
|
+
const record = doc.state.migrations[provider] ?? null;
|
|
222
|
+
// A first import has no base of its own: the provider's defaults stand in, so a value the CLI
|
|
223
|
+
// already changed reads as a change rather than as where both sides started.
|
|
224
|
+
const base = record?.baseline ?? canonicalProviderDefaults(provider);
|
|
225
|
+
const core = doc.providers[provider];
|
|
226
|
+
const plan = planImport(base, core, canonicalLegacy, options.resolutions ?? {});
|
|
227
|
+
const status = classifyImport(record?.legacy_hash ?? null, record?.baseline != null, hash, plan);
|
|
228
|
+
outcome = { status, applied: Object.keys(plan.apply), conflicts: plan.conflicts };
|
|
229
|
+
if (status === 'conflict' || status === 'unchanged')
|
|
230
|
+
return [];
|
|
231
|
+
const changes = applyPatch(core, plan.apply, (key, value) => ({
|
|
232
|
+
scope: provider,
|
|
233
|
+
key,
|
|
234
|
+
value,
|
|
235
|
+
}));
|
|
236
|
+
doc.state.migrations[provider] = {
|
|
237
|
+
...(record ?? { acknowledged_revision: null }),
|
|
238
|
+
baseline: structuredClone(canonicalLegacy),
|
|
239
|
+
legacy_hash: hash,
|
|
240
|
+
};
|
|
241
|
+
changes.push({ scope: 'state', key: `migrations.${provider}`, value: hash });
|
|
242
|
+
return changes;
|
|
243
|
+
});
|
|
244
|
+
return { ...outcome, revision: result.revision };
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Record that the app has mirrored the core's settings up to `revision`.
|
|
248
|
+
*
|
|
249
|
+
* Only meaningful after an import: it is how a planned rollback knows whether the app's copy is
|
|
250
|
+
* current enough to hand ownership back (PLAN.md §3.4). The acknowledgement itself is a
|
|
251
|
+
* metadata-only write, but it advances the file's revision like every other write. Store that
|
|
252
|
+
* resulting revision as the equivalent mirrored state so status is in sync immediately after it.
|
|
253
|
+
*/
|
|
254
|
+
async acknowledge(scope, revision) {
|
|
255
|
+
return this.mutate({}, (doc) => {
|
|
256
|
+
const record = doc.state.migrations[scope];
|
|
257
|
+
if (!record)
|
|
258
|
+
return [];
|
|
259
|
+
// The app can retry after losing the response. Both its original snapshot revision and
|
|
260
|
+
// the post-ack revision identify the same provider values, so neither retry is a new write.
|
|
261
|
+
if (record.acknowledged_revision === doc.revision &&
|
|
262
|
+
(revision === doc.revision || revision === doc.revision - 1))
|
|
263
|
+
return [];
|
|
264
|
+
// A value changed while the app was copying the snapshot. Acknowledging that stale copy
|
|
265
|
+
// would authorize rollback with settings that the core has already replaced.
|
|
266
|
+
if (revision !== doc.revision) {
|
|
267
|
+
throw new AtomicCoreError('INVALID_ARGUMENT', `settings revision conflict: expected ${revision}, current ${doc.revision}`, this.path);
|
|
268
|
+
}
|
|
269
|
+
const acknowledged = doc.revision + 1;
|
|
270
|
+
record.acknowledged_revision = acknowledged;
|
|
271
|
+
return [{ scope: 'state', key: `migrations.${scope}.acknowledged_revision`, value: acknowledged }];
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
/** What the core knows about a scope's migration, or `null` when it has never been imported. */
|
|
275
|
+
migration(scope) {
|
|
276
|
+
const record = this.doc.state.migrations[scope];
|
|
277
|
+
return record ? structuredClone(record) : null;
|
|
278
|
+
}
|
|
279
|
+
/** Called once per changed key after the write landed; returns the unsubscribe function. */
|
|
280
|
+
onChange(listener) {
|
|
281
|
+
this.listeners.add(listener);
|
|
282
|
+
return () => {
|
|
283
|
+
this.listeners.delete(listener);
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
mutate(options, apply) {
|
|
287
|
+
const run = this.chain.then(async () => {
|
|
288
|
+
const expected = options.expectedRevision;
|
|
289
|
+
if (expected !== undefined && expected !== this.doc.revision) {
|
|
290
|
+
throw new AtomicCoreError('INVALID_ARGUMENT', `settings revision conflict: expected ${expected}, current ${this.doc.revision}`, this.path);
|
|
291
|
+
}
|
|
292
|
+
const next = structuredClone(this.doc);
|
|
293
|
+
const changes = apply(next);
|
|
294
|
+
if (changes.length === 0)
|
|
295
|
+
return { revision: this.doc.revision, changed: [] };
|
|
296
|
+
next.revision = this.doc.revision + 1;
|
|
297
|
+
next.updated_at = new Date(this.now()).toISOString();
|
|
298
|
+
const previous = this.doc;
|
|
299
|
+
this.doc = next;
|
|
300
|
+
try {
|
|
301
|
+
await this.persist();
|
|
302
|
+
}
|
|
303
|
+
catch (e) {
|
|
304
|
+
this.doc = previous;
|
|
305
|
+
throw e;
|
|
306
|
+
}
|
|
307
|
+
for (const change of changes) {
|
|
308
|
+
for (const listener of this.listeners) {
|
|
309
|
+
try {
|
|
310
|
+
listener({ ...change, revision: next.revision });
|
|
311
|
+
}
|
|
312
|
+
catch {
|
|
313
|
+
// a broken listener must not undo a write that already landed
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return { revision: next.revision, changed: changes.map((c) => c.key) };
|
|
318
|
+
});
|
|
319
|
+
this.chain = run.then(() => undefined, () => undefined);
|
|
320
|
+
return run;
|
|
321
|
+
}
|
|
322
|
+
async persist() {
|
|
323
|
+
const text = JSON.stringify(this.doc, null, 2) + '\n';
|
|
324
|
+
const tmp = `${this.path}.tmp`;
|
|
325
|
+
try {
|
|
326
|
+
await this.fs.mkdir(dirname(this.path), { recursive: true });
|
|
327
|
+
await this.fs.writeFile(tmp, text, { encoding: 'utf8', mode: 0o600 });
|
|
328
|
+
await this.fs.rename(tmp, this.path);
|
|
329
|
+
}
|
|
330
|
+
catch (e) {
|
|
331
|
+
throw new AtomicCoreError('IO_ERROR', `cannot write ${this.path}: ${e.message}`);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
function assertProvider(provider) {
|
|
336
|
+
if (!LOCAL_PROVIDER_IDS.includes(provider))
|
|
337
|
+
throw new AtomicCoreError('PROVIDER_NOT_FOUND', `unknown provider '${provider}'`);
|
|
338
|
+
}
|
|
339
|
+
/** Write the differing keys of `patch` into `target`; `undefined` means "leave as is". */
|
|
340
|
+
function applyPatch(target, patch, describe) {
|
|
341
|
+
const changes = [];
|
|
342
|
+
for (const [key, value] of Object.entries(patch)) {
|
|
343
|
+
if (value === undefined || sameValue(target[key], value))
|
|
344
|
+
continue;
|
|
345
|
+
target[key] = value;
|
|
346
|
+
changes.push(describe(key, value));
|
|
347
|
+
}
|
|
348
|
+
return changes;
|
|
349
|
+
}
|
|
350
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/settings/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ported verbatim from: extensions/llamacpp-upstream-extension/src/chatTemplateOverrides.ts
|
|
3
|
+
* @file Load-time chat_template overrides for models whose embedded Jinja
|
|
4
|
+
* template carries a strict guard that breaks llama.cpp's `--jinja` auto-parser.
|
|
5
|
+
*
|
|
6
|
+
* The unsloth conversions of Llama 3.x ship a chat template with a hard guard
|
|
7
|
+
* `{{- raise_exception('System message must be at the beginning') }}`. When the
|
|
8
|
+
* server runs with `--jinja`, the auto-parser feeds the template synthetic
|
|
9
|
+
* message permutations during differential analysis; one of those probes
|
|
10
|
+
* violates the guard, so parser generation aborts with
|
|
11
|
+
* `400 Unable to generate parser for this template`. The canonical Meta Llama
|
|
12
|
+
* 3.x template has no such guard (it softly defaults the system message to "").
|
|
13
|
+
*
|
|
14
|
+
* We detect the strict guard in the embedded template and, only for Llama-3
|
|
15
|
+
* format models, substitute the canonical Meta template via `cfg.chat_template`
|
|
16
|
+
* (-> `--chat-template`). The substitute is the standard Llama 3 tool format the
|
|
17
|
+
* auto-parser already supports.
|
|
18
|
+
*/
|
|
19
|
+
/** Signature of the strict system-message guard embedded in the bad templates. */
|
|
20
|
+
export declare const STRICT_SYSTEM_GUARD_SIGNATURE = "System message must be at the beginning";
|
|
21
|
+
/**
|
|
22
|
+
* Canonical Meta Llama 3.x instruct chat template (covers 3.1/3.2/3.3).
|
|
23
|
+
*
|
|
24
|
+
* Sourced verbatim from
|
|
25
|
+
* `models/templates/meta-llama-Llama-3.2-3B-Instruct.jinja` in the llama.cpp
|
|
26
|
+
* backend repo. `String.raw` preserves the literal `\n` escapes inside the
|
|
27
|
+
* Jinja string literals (minja interprets them, not JS).
|
|
28
|
+
*/
|
|
29
|
+
export declare const CANONICAL_LLAMA3_CHAT_TEMPLATE: string;
|
|
30
|
+
/**
|
|
31
|
+
* Returns the canonical Meta Llama 3.x chat template when the embedded template
|
|
32
|
+
* carries the strict system-message guard AND the model is Llama-3 format;
|
|
33
|
+
* otherwise `null` (leave the embedded template untouched).
|
|
34
|
+
*/
|
|
35
|
+
export declare function resolveLlama3TemplateOverride(modelId: string, embeddedTemplate: string | null | undefined): string | null;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ported verbatim from: extensions/llamacpp-upstream-extension/src/chatTemplateOverrides.ts
|
|
3
|
+
* @file Load-time chat_template overrides for models whose embedded Jinja
|
|
4
|
+
* template carries a strict guard that breaks llama.cpp's `--jinja` auto-parser.
|
|
5
|
+
*
|
|
6
|
+
* The unsloth conversions of Llama 3.x ship a chat template with a hard guard
|
|
7
|
+
* `{{- raise_exception('System message must be at the beginning') }}`. When the
|
|
8
|
+
* server runs with `--jinja`, the auto-parser feeds the template synthetic
|
|
9
|
+
* message permutations during differential analysis; one of those probes
|
|
10
|
+
* violates the guard, so parser generation aborts with
|
|
11
|
+
* `400 Unable to generate parser for this template`. The canonical Meta Llama
|
|
12
|
+
* 3.x template has no such guard (it softly defaults the system message to "").
|
|
13
|
+
*
|
|
14
|
+
* We detect the strict guard in the embedded template and, only for Llama-3
|
|
15
|
+
* format models, substitute the canonical Meta template via `cfg.chat_template`
|
|
16
|
+
* (-> `--chat-template`). The substitute is the standard Llama 3 tool format the
|
|
17
|
+
* auto-parser already supports.
|
|
18
|
+
*/
|
|
19
|
+
/** Signature of the strict system-message guard embedded in the bad templates. */
|
|
20
|
+
export const STRICT_SYSTEM_GUARD_SIGNATURE = 'System message must be at the beginning';
|
|
21
|
+
/** Matches Llama 3 / 3.x model ids (e.g. `Llama-3_2-3B`, `llama-3.1-8b`). */
|
|
22
|
+
const LLAMA3_MODEL_ID_RE = /llama[-_. ]?3(\.\d+)?/i;
|
|
23
|
+
/** Llama 3 prompt-format marker present in any genuine Llama 3 template. */
|
|
24
|
+
const LLAMA3_FORMAT_MARKER = '<|start_header_id|>';
|
|
25
|
+
/**
|
|
26
|
+
* Canonical Meta Llama 3.x instruct chat template (covers 3.1/3.2/3.3).
|
|
27
|
+
*
|
|
28
|
+
* Sourced verbatim from
|
|
29
|
+
* `models/templates/meta-llama-Llama-3.2-3B-Instruct.jinja` in the llama.cpp
|
|
30
|
+
* backend repo. `String.raw` preserves the literal `\n` escapes inside the
|
|
31
|
+
* Jinja string literals (minja interprets them, not JS).
|
|
32
|
+
*/
|
|
33
|
+
export const CANONICAL_LLAMA3_CHAT_TEMPLATE = String.raw `{{- bos_token }}
|
|
34
|
+
{%- if custom_tools is defined %}
|
|
35
|
+
{%- set tools = custom_tools %}
|
|
36
|
+
{%- endif %}
|
|
37
|
+
{%- if not tools_in_user_message is defined %}
|
|
38
|
+
{%- set tools_in_user_message = true %}
|
|
39
|
+
{%- endif %}
|
|
40
|
+
{%- if not date_string is defined %}
|
|
41
|
+
{%- if strftime_now is defined %}
|
|
42
|
+
{%- set date_string = strftime_now("%d %b %Y") %}
|
|
43
|
+
{%- else %}
|
|
44
|
+
{%- set date_string = "26 Jul 2024" %}
|
|
45
|
+
{%- endif %}
|
|
46
|
+
{%- endif %}
|
|
47
|
+
{%- if not tools is defined %}
|
|
48
|
+
{%- set tools = none %}
|
|
49
|
+
{%- endif %}
|
|
50
|
+
|
|
51
|
+
{#- This block extracts the system message, so we can slot it into the right place. #}
|
|
52
|
+
{%- if messages[0]['role'] == 'system' %}
|
|
53
|
+
{%- set system_message = messages[0]['content']|trim %}
|
|
54
|
+
{%- set messages = messages[1:] %}
|
|
55
|
+
{%- else %}
|
|
56
|
+
{%- set system_message = "" %}
|
|
57
|
+
{%- endif %}
|
|
58
|
+
|
|
59
|
+
{#- System message #}
|
|
60
|
+
{{- "<|start_header_id|>system<|end_header_id|>\n\n" }}
|
|
61
|
+
{%- if tools is not none %}
|
|
62
|
+
{{- "Environment: ipython\n" }}
|
|
63
|
+
{%- endif %}
|
|
64
|
+
{{- "Cutting Knowledge Date: December 2023\n" }}
|
|
65
|
+
{{- "Today Date: " + date_string + "\n\n" }}
|
|
66
|
+
{%- if tools is not none and not tools_in_user_message %}
|
|
67
|
+
{{- "You have access to the following functions. To call a function, please respond with JSON for a function call." }}
|
|
68
|
+
{{- 'Respond in the format {"name": function name, "parameters": dictionary of argument name and its value}.' }}
|
|
69
|
+
{{- "Do not use variables.\n\n" }}
|
|
70
|
+
{%- for t in tools %}
|
|
71
|
+
{{- t | tojson(indent=4) }}
|
|
72
|
+
{{- "\n\n" }}
|
|
73
|
+
{%- endfor %}
|
|
74
|
+
{%- endif %}
|
|
75
|
+
{{- system_message }}
|
|
76
|
+
{{- "<|eot_id|>" }}
|
|
77
|
+
|
|
78
|
+
{#- Custom tools are passed in a user message with some extra guidance #}
|
|
79
|
+
{%- if tools_in_user_message and not tools is none %}
|
|
80
|
+
{#- Extract the first user message so we can plug it in here #}
|
|
81
|
+
{%- if messages | length != 0 %}
|
|
82
|
+
{%- set first_user_message = messages[0]['content']|trim %}
|
|
83
|
+
{%- set messages = messages[1:] %}
|
|
84
|
+
{%- else %}
|
|
85
|
+
{{- raise_exception("Cannot put tools in the first user message when there's no first user message!") }}
|
|
86
|
+
{%- endif %}
|
|
87
|
+
{{- '<|start_header_id|>user<|end_header_id|>\n\n' -}}
|
|
88
|
+
{{- "Given the following functions, please respond with a JSON for a function call " }}
|
|
89
|
+
{{- "with its proper arguments that best answers the given prompt.\n\n" }}
|
|
90
|
+
{{- 'Respond in the format {"name": function name, "parameters": dictionary of argument name and its value}.' }}
|
|
91
|
+
{{- "Do not use variables.\n\n" }}
|
|
92
|
+
{%- for t in tools %}
|
|
93
|
+
{{- t | tojson(indent=4) }}
|
|
94
|
+
{{- "\n\n" }}
|
|
95
|
+
{%- endfor %}
|
|
96
|
+
{{- first_user_message + "<|eot_id|>"}}
|
|
97
|
+
{%- endif %}
|
|
98
|
+
|
|
99
|
+
{%- for message in messages %}
|
|
100
|
+
{%- if not (message.role == 'ipython' or message.role == 'tool' or 'tool_calls' in message) %}
|
|
101
|
+
{{- '<|start_header_id|>' + message['role'] + '<|end_header_id|>\n\n'+ message['content'] | trim + '<|eot_id|>' }}
|
|
102
|
+
{%- elif 'tool_calls' in message %}
|
|
103
|
+
{%- if not message.tool_calls|length == 1 %}
|
|
104
|
+
{{- raise_exception("This model only supports single tool-calls at once!") }}
|
|
105
|
+
{%- endif %}
|
|
106
|
+
{%- set tool_call = message.tool_calls[0].function %}
|
|
107
|
+
{{- '<|start_header_id|>assistant<|end_header_id|>\n\n' -}}
|
|
108
|
+
{{- '{"name": "' + tool_call.name + '", ' }}
|
|
109
|
+
{{- '"parameters": ' }}
|
|
110
|
+
{{- tool_call.arguments | tojson }}
|
|
111
|
+
{{- "}" }}
|
|
112
|
+
{{- "<|eot_id|>" }}
|
|
113
|
+
{%- elif message.role == "tool" or message.role == "ipython" %}
|
|
114
|
+
{{- "<|start_header_id|>ipython<|end_header_id|>\n\n" }}
|
|
115
|
+
{%- if message.content is mapping or message.content is iterable %}
|
|
116
|
+
{{- message.content | tojson }}
|
|
117
|
+
{%- else %}
|
|
118
|
+
{{- message.content }}
|
|
119
|
+
{%- endif %}
|
|
120
|
+
{{- "<|eot_id|>" }}
|
|
121
|
+
{%- endif %}
|
|
122
|
+
{%- endfor %}
|
|
123
|
+
{%- if add_generation_prompt %}
|
|
124
|
+
{{- '<|start_header_id|>assistant<|end_header_id|>\n\n' }}
|
|
125
|
+
{%- endif %}
|
|
126
|
+
`;
|
|
127
|
+
/**
|
|
128
|
+
* Returns the canonical Meta Llama 3.x chat template when the embedded template
|
|
129
|
+
* carries the strict system-message guard AND the model is Llama-3 format;
|
|
130
|
+
* otherwise `null` (leave the embedded template untouched).
|
|
131
|
+
*/
|
|
132
|
+
export function resolveLlama3TemplateOverride(modelId, embeddedTemplate) {
|
|
133
|
+
if (!embeddedTemplate)
|
|
134
|
+
return null;
|
|
135
|
+
if (!embeddedTemplate.includes(STRICT_SYSTEM_GUARD_SIGNATURE))
|
|
136
|
+
return null;
|
|
137
|
+
const looksLikeLlama3 = LLAMA3_MODEL_ID_RE.test(modelId) || embeddedTemplate.includes(LLAMA3_FORMAT_MARKER);
|
|
138
|
+
if (!looksLikeLlama3)
|
|
139
|
+
return null;
|
|
140
|
+
return CANONICAL_LLAMA3_CHAT_TEMPLATE;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=chat-template-overrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-template-overrides.js","sourceRoot":"","sources":["../../src/speculative/chat-template-overrides.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,kFAAkF;AAClF,MAAM,CAAC,MAAM,6BAA6B,GAAG,yCAAyC,CAAA;AAEtF,6EAA6E;AAC7E,MAAM,kBAAkB,GAAG,wBAAwB,CAAA;AAEnD,4EAA4E;AAC5E,MAAM,oBAAoB,GAAG,qBAAqB,CAAA;AAElD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6FvD,CAAA;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAC3C,OAAe,EACf,gBAA2C;IAE3C,IAAI,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAA;IAClC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QAAE,OAAO,IAAI,CAAA;IAE1E,MAAM,eAAe,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAC3G,IAAI,CAAC,eAAe;QAAE,OAAO,IAAI,CAAA;IAEjC,OAAO,8BAA8B,CAAA;AACvC,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ported verbatim from: extensions/llamacpp-upstream-extension/src/dflashRegistry.ts
|
|
3
|
+
* @file Static registry mapping a DFlash *target* model to the separate DFlash
|
|
4
|
+
* *draft* GGUF it needs for upstream llama.cpp multi-layer draft speculative
|
|
5
|
+
* decoding (`--model-draft <draft> --spec-type draft-dflash`, PR
|
|
6
|
+
* ggml-org/llama.cpp#22105, commit d1b34251b, first tagged release `b9831`).
|
|
7
|
+
*
|
|
8
|
+
* DFlash ships the draft as a second, small GGUF that must be downloaded next
|
|
9
|
+
* to the target model (the same way `mmproj` and Gemma 4 MTP heads are handled
|
|
10
|
+
* — see gemmaMtpRegistry.ts). The upstream MLX DFlash drafts are published as
|
|
11
|
+
* safetensors and would need conversion; these entries instead point at
|
|
12
|
+
* GGUF repos built for mainline llama.cpp so the file can be consumed
|
|
13
|
+
* directly. Fork-only `dflash-draft` / `qwen35-dflash-draft` architectures
|
|
14
|
+
* are deliberately excluded.
|
|
15
|
+
*
|
|
16
|
+
* Draft files were verified against the live Hugging Face API (sha256 + size
|
|
17
|
+
* pinned so the downloader validates them). Atomic Chat's verified Q8_0
|
|
18
|
+
* conversions are the default for every target-model quantization when
|
|
19
|
+
* available; compatible community conversions provide the remaining draft
|
|
20
|
+
* choices and cover families without an Atomic Chat conversion.
|
|
21
|
+
*/
|
|
22
|
+
export interface DflashDraft {
|
|
23
|
+
/** Quantization label shown in the settings picker. */
|
|
24
|
+
quant: string;
|
|
25
|
+
/** Hugging Face repo id that hosts the DFlash draft GGUF. */
|
|
26
|
+
repo: string;
|
|
27
|
+
/** Exact filename of the draft inside the repo. */
|
|
28
|
+
draftFilename: string;
|
|
29
|
+
/** Pinned sha256 of the draft file (lowercase hex) for download validation. */
|
|
30
|
+
draftSha256: string;
|
|
31
|
+
/** Pinned byte size of the draft file for download validation. */
|
|
32
|
+
draftSize: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Every draft this registry downloads — the files the app itself puts on disk
|
|
36
|
+
* next to a target. The web app's model-file filter is tested against them so
|
|
37
|
+
* a local scan never offers one back as a model (ATO-523).
|
|
38
|
+
*/
|
|
39
|
+
export declare const DFLASH_DRAFT_FILENAMES: readonly string[];
|
|
40
|
+
export declare const DEFAULT_DFLASH_DRAFT_QUANT = "Q8_0";
|
|
41
|
+
/**
|
|
42
|
+
* Resolve the DFlash draft for a target model id, or `null` if the model is
|
|
43
|
+
* not a DFlash-capable target in the registry.
|
|
44
|
+
*/
|
|
45
|
+
export declare function listDflashDrafts(modelId: string): DflashDraft[];
|
|
46
|
+
export declare function resolveDflashDraft(modelId: string, quant?: string): DflashDraft | null;
|
|
47
|
+
/** Whether the given model id is a DFlash-capable target. */
|
|
48
|
+
export declare function checkDflashSupport(modelId: string): boolean;
|
|
49
|
+
/** Build the Hugging Face resolve URL for a DFlash draft. */
|
|
50
|
+
export declare function dflashDraftUrl(draft: DflashDraft): string;
|