@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,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session port selection and the per-session API key. Port of `generate_random_port` in
|
|
3
|
+
* `src-tauri/utils/src/network.rs` and `generate_api_key` in the plugin's `commands.rs`.
|
|
4
|
+
*/
|
|
5
|
+
import { createHmac, randomInt } from 'node:crypto';
|
|
6
|
+
import { createServer } from 'node:net';
|
|
7
|
+
export const PORT_RANGE_MIN = 3000;
|
|
8
|
+
export const PORT_RANGE_MAX = 4000; // exclusive
|
|
9
|
+
export const PORT_MAX_ATTEMPTS = 20000;
|
|
10
|
+
export const PORT_EXHAUSTED_MESSAGE = 'Failed to find an available port for the model to load';
|
|
11
|
+
/** Bind-and-release probe on 127.0.0.1 (inherently racy, as in the original). */
|
|
12
|
+
export function isPortAvailable(port) {
|
|
13
|
+
return new Promise((resolve) => {
|
|
14
|
+
const server = createServer();
|
|
15
|
+
server.once('error', () => resolve(false));
|
|
16
|
+
server.listen(port, '127.0.0.1', () => server.close(() => resolve(true)));
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
/** A random port in [3000, 4000) that no session uses and that binds. */
|
|
20
|
+
export async function randomFreePort(usedPorts, opts = {}) {
|
|
21
|
+
const used = new Set(usedPorts);
|
|
22
|
+
const min = opts.min ?? PORT_RANGE_MIN;
|
|
23
|
+
const max = opts.max ?? PORT_RANGE_MAX;
|
|
24
|
+
const attempts = opts.attempts ?? PORT_MAX_ATTEMPTS;
|
|
25
|
+
const random = opts.random ?? ((lo, hi) => randomInt(lo, hi));
|
|
26
|
+
const isAvailable = opts.isAvailable ?? isPortAvailable;
|
|
27
|
+
for (let i = 0; i < attempts; i++) {
|
|
28
|
+
const port = random(min, max);
|
|
29
|
+
if (used.has(port))
|
|
30
|
+
continue;
|
|
31
|
+
if (await isAvailable(port))
|
|
32
|
+
return port;
|
|
33
|
+
}
|
|
34
|
+
throw new Error(PORT_EXHAUSTED_MESSAGE);
|
|
35
|
+
}
|
|
36
|
+
/** Secret the extension has always used for session keys (`index.ts:531`). */
|
|
37
|
+
export const DEFAULT_API_SECRET = 'JustAskNow';
|
|
38
|
+
/**
|
|
39
|
+
* base64(HMAC-SHA256(secret, modelId + port)) — what the process gets as `LLAMA_API_KEY`. The
|
|
40
|
+
* extension concatenates the port onto the model id before calling the Rust HMAC (`index.ts:3195`).
|
|
41
|
+
*/
|
|
42
|
+
export function generateApiKey(modelId, port, secret = DEFAULT_API_SECRET) {
|
|
43
|
+
return createHmac('sha256', secret).update(`${modelId}${port}`).digest('base64');
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=ports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../../../src/runtime/shared/ports.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAA;AAClC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAA,CAAC,YAAY;AAC/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAA;AACtC,MAAM,CAAC,MAAM,sBAAsB,GAAG,wDAAwD,CAAA;AAE9F,iFAAiF;AACjF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;QAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;AACJ,CAAC;AAUD,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAA2B,EAAE,OAAoB,EAAE;IACtF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAA;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,cAAc,CAAA;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,cAAc,CAAA;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAA;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,eAAe,CAAA;IACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAQ;QAC5B,IAAI,MAAM,WAAW,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;IAC1C,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;AACzC,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,YAAY,CAAA;AAE9C;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,IAAqB,EACrB,SAAiB,kBAAkB;IAEnC,OAAO,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AAClF,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spawn a backend process and wait until it is ready. Port of the process half of
|
|
3
|
+
* `load_llama_model_impl` (`commands.rs`) and `process.rs` in the llama.cpp plugin; MLX and
|
|
4
|
+
* Foundation Models reuse it with their own ready markers and no `/health` poll.
|
|
5
|
+
*
|
|
6
|
+
* Readiness = a stdout/stderr line whose lowercase form contains one of `readyMarkers`, OR the
|
|
7
|
+
* injected `healthCheck` reporting success (polled every 200 ms). An early exit is classified by the
|
|
8
|
+
* caller-provided `classifyExit`; a timeout kills the child and raises `MODEL_LOAD_TIMED_OUT`.
|
|
9
|
+
*
|
|
10
|
+
* Two signals can stop a start, and they mean different things. `signal` is the owner shutting
|
|
11
|
+
* down: the child gets a grace period and the caller sees `CORE_NOT_RUNNING`. `cancelSignal` is the
|
|
12
|
+
* user cancelling this load: the child is killed at once, so its memory is back before the error
|
|
13
|
+
* reaches anyone, and the caller sees `MODEL_LOAD_CANCELLED`.
|
|
14
|
+
*/
|
|
15
|
+
import type { ChildProcess } from 'node:child_process';
|
|
16
|
+
import { AtomicCoreError } from '../../contracts/index.js';
|
|
17
|
+
import type { ExitInfo } from '../llamacpp/index.js';
|
|
18
|
+
/** Substrings (lowercase) that mean llama-server's HTTP server is up; stable across upstream rewordings. */
|
|
19
|
+
export declare const LLAMA_READY_MARKERS: string[];
|
|
20
|
+
export declare function isReadyLogLine(lineLower: string, markers?: readonly string[]): boolean;
|
|
21
|
+
export interface SpawnSpec {
|
|
22
|
+
exe: string;
|
|
23
|
+
args: string[];
|
|
24
|
+
env: Record<string, string>;
|
|
25
|
+
cwd?: string | undefined;
|
|
26
|
+
}
|
|
27
|
+
export interface ReadyOptions {
|
|
28
|
+
timeoutMs: number;
|
|
29
|
+
/** Cancel process startup (owner shutdown); the child is terminated before rejection. */
|
|
30
|
+
signal?: AbortSignal;
|
|
31
|
+
/** The user cancelled this load: kill the child immediately and raise `MODEL_LOAD_CANCELLED`. */
|
|
32
|
+
cancelSignal?: AbortSignal;
|
|
33
|
+
readyMarkers?: readonly string[];
|
|
34
|
+
/** Poll for readiness (e.g. `GET /health` → 2xx); omitted for backends without a health route. */
|
|
35
|
+
healthCheck?: () => Promise<boolean>;
|
|
36
|
+
healthIntervalMs?: number;
|
|
37
|
+
onLine?: (stream: 'stdout' | 'stderr', line: string) => void;
|
|
38
|
+
/** Turn an early exit into the error the caller wants. */
|
|
39
|
+
classifyExit: (exit: ExitInfo, stderr: string, stdout: string) => AtomicCoreError;
|
|
40
|
+
/** Details for the timeout error (`Timeout: Ns\n\nStderr:\n…` in the app). */
|
|
41
|
+
timeoutMessage?: string;
|
|
42
|
+
/** Build the timeout error yourself, for backends whose timeout has its own code (MLX, Foundation Models). */
|
|
43
|
+
timeoutError?: (stderr: string) => AtomicCoreError;
|
|
44
|
+
/** Grace before SIGKILL when the startup times out; 0 kills at once, as the MLX plugin does. */
|
|
45
|
+
timeoutGraceMs?: number;
|
|
46
|
+
/**
|
|
47
|
+
* A line that means the startup has already failed, before the process exits — Foundation Models
|
|
48
|
+
* writes its reason and only then exits. The child is terminated and this error is raised.
|
|
49
|
+
*/
|
|
50
|
+
failOnLine?: (stream: 'stdout' | 'stderr', line: string) => AtomicCoreError | undefined;
|
|
51
|
+
/** Separate readiness markers per stream, when a backend says "ready" differently on each (MLX). */
|
|
52
|
+
streamReadyMarkers?: {
|
|
53
|
+
stdout: readonly string[];
|
|
54
|
+
stderr: readonly string[];
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export interface ManagedProcess {
|
|
58
|
+
child: ChildProcess;
|
|
59
|
+
pid: number;
|
|
60
|
+
/** Resolves when the process exits (never rejects). */
|
|
61
|
+
exited: Promise<ExitInfo>;
|
|
62
|
+
/** SIGTERM → wait `graceMs` → SIGKILL on unix; `kill()` (TerminateProcess) on Windows. */
|
|
63
|
+
terminate: (graceMs?: number) => Promise<ExitInfo>;
|
|
64
|
+
/** Everything the process wrote so far (kept for later classification). */
|
|
65
|
+
output: () => {
|
|
66
|
+
stdout: string;
|
|
67
|
+
stderr: string;
|
|
68
|
+
};
|
|
69
|
+
/** Set when the process could not be started at all (ENOENT, EACCES, …). */
|
|
70
|
+
spawnFailure: () => Error | undefined;
|
|
71
|
+
}
|
|
72
|
+
export declare const DEFAULT_TERMINATE_GRACE_MS = 5000;
|
|
73
|
+
/**
|
|
74
|
+
* What a caller that reads the output itself asks for
|
|
75
|
+
* (ADR 2026-09-17-spawnmanaged-reports-raw-chunks-and-can-skip-capturing-output).
|
|
76
|
+
*/
|
|
77
|
+
export interface SpawnHooks {
|
|
78
|
+
/**
|
|
79
|
+
* Raw bytes as they arrive, before any line splitting. For a process that redraws a line in place
|
|
80
|
+
* (`\r…ESC[K`): a reader keyed on line ends sees every redraw one step late.
|
|
81
|
+
*/
|
|
82
|
+
onData?: (stream: 'stdout' | 'stderr', chunk: Buffer) => void;
|
|
83
|
+
/** `false` keeps nothing: `output()` stays empty. For a verbose process that runs for hours. */
|
|
84
|
+
captureOutput?: boolean;
|
|
85
|
+
}
|
|
86
|
+
/** Spawn without waiting; used by `spawnAndAwaitReady` and by probes that just want output. */
|
|
87
|
+
export declare function spawnManaged(spec: SpawnSpec, onLine?: ReadyOptions['onLine'], hooks?: SpawnHooks): ManagedProcess;
|
|
88
|
+
export interface SpawnReadyResult {
|
|
89
|
+
process: ManagedProcess;
|
|
90
|
+
/** Which signal reported readiness. */
|
|
91
|
+
readyVia: 'log' | 'health';
|
|
92
|
+
}
|
|
93
|
+
export declare function spawnAndAwaitReady(spec: SpawnSpec, opts: ReadyOptions): Promise<SpawnReadyResult>;
|
|
94
|
+
/** `kill(pid, 0)` liveness probe. */
|
|
95
|
+
export declare function isProcessAlive(pid: number): boolean;
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spawn a backend process and wait until it is ready. Port of the process half of
|
|
3
|
+
* `load_llama_model_impl` (`commands.rs`) and `process.rs` in the llama.cpp plugin; MLX and
|
|
4
|
+
* Foundation Models reuse it with their own ready markers and no `/health` poll.
|
|
5
|
+
*
|
|
6
|
+
* Readiness = a stdout/stderr line whose lowercase form contains one of `readyMarkers`, OR the
|
|
7
|
+
* injected `healthCheck` reporting success (polled every 200 ms). An early exit is classified by the
|
|
8
|
+
* caller-provided `classifyExit`; a timeout kills the child and raises `MODEL_LOAD_TIMED_OUT`.
|
|
9
|
+
*
|
|
10
|
+
* Two signals can stop a start, and they mean different things. `signal` is the owner shutting
|
|
11
|
+
* down: the child gets a grace period and the caller sees `CORE_NOT_RUNNING`. `cancelSignal` is the
|
|
12
|
+
* user cancelling this load: the child is killed at once, so its memory is back before the error
|
|
13
|
+
* reaches anyone, and the caller sees `MODEL_LOAD_CANCELLED`.
|
|
14
|
+
*/
|
|
15
|
+
import { spawn } from 'node:child_process';
|
|
16
|
+
import { createInterface } from 'node:readline';
|
|
17
|
+
import { AtomicCoreError } from '../../contracts/index.js';
|
|
18
|
+
import { loadCancelledError } from './load-cancel.js';
|
|
19
|
+
/** Substrings (lowercase) that mean llama-server's HTTP server is up; stable across upstream rewordings. */
|
|
20
|
+
export const LLAMA_READY_MARKERS = [
|
|
21
|
+
'listening on',
|
|
22
|
+
'all slots are idle',
|
|
23
|
+
'starting the main loop',
|
|
24
|
+
'http server listening',
|
|
25
|
+
];
|
|
26
|
+
export function isReadyLogLine(lineLower, markers = LLAMA_READY_MARKERS) {
|
|
27
|
+
return markers.some((m) => lineLower.includes(m));
|
|
28
|
+
}
|
|
29
|
+
export const DEFAULT_TERMINATE_GRACE_MS = 5000;
|
|
30
|
+
function exitInfo(code, signal) {
|
|
31
|
+
return { code, signal };
|
|
32
|
+
}
|
|
33
|
+
/** Spawn without waiting; used by `spawnAndAwaitReady` and by probes that just want output. */
|
|
34
|
+
export function spawnManaged(spec, onLine, hooks = {}) {
|
|
35
|
+
const child = spawn(spec.exe, spec.args, {
|
|
36
|
+
env: spec.env,
|
|
37
|
+
cwd: spec.cwd,
|
|
38
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
39
|
+
windowsHide: true,
|
|
40
|
+
});
|
|
41
|
+
const capture = hooks.captureOutput !== false;
|
|
42
|
+
let stdoutBuf = '';
|
|
43
|
+
let stderrBuf = '';
|
|
44
|
+
const wire = (stream) => {
|
|
45
|
+
const src = stream === 'stdout' ? child.stdout : child.stderr;
|
|
46
|
+
if (!src)
|
|
47
|
+
return;
|
|
48
|
+
const { onData } = hooks;
|
|
49
|
+
if (onData)
|
|
50
|
+
src.on('data', (chunk) => onData(stream, chunk));
|
|
51
|
+
// Nobody wants lines: leave the pipe to `onData`, or drain it so the child never blocks on a full one.
|
|
52
|
+
if (!capture && !onLine) {
|
|
53
|
+
if (!onData)
|
|
54
|
+
src.resume();
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const rl = createInterface({ input: src, crlfDelay: Infinity });
|
|
58
|
+
rl.on('line', (raw) => {
|
|
59
|
+
const line = raw.replace(/\s+$/, '');
|
|
60
|
+
if (line === '')
|
|
61
|
+
return;
|
|
62
|
+
if (capture) {
|
|
63
|
+
if (stream === 'stdout')
|
|
64
|
+
stdoutBuf += line + '\n';
|
|
65
|
+
else
|
|
66
|
+
stderrBuf += line + '\n';
|
|
67
|
+
}
|
|
68
|
+
onLine?.(stream, line);
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
wire('stdout');
|
|
72
|
+
wire('stderr');
|
|
73
|
+
let spawnFailure;
|
|
74
|
+
const exited = new Promise((resolve) => {
|
|
75
|
+
child.once('exit', (code, signal) => resolve(exitInfo(code, signal)));
|
|
76
|
+
child.once('error', (e) => {
|
|
77
|
+
spawnFailure = e;
|
|
78
|
+
resolve(exitInfo(null, null));
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
const terminate = async (graceMs = DEFAULT_TERMINATE_GRACE_MS) => {
|
|
82
|
+
if (child.exitCode !== null || child.signalCode !== null)
|
|
83
|
+
return exited;
|
|
84
|
+
if (process.platform === 'win32') {
|
|
85
|
+
child.kill();
|
|
86
|
+
return exited;
|
|
87
|
+
}
|
|
88
|
+
if (graceMs <= 0) {
|
|
89
|
+
child.kill('SIGKILL');
|
|
90
|
+
return exited;
|
|
91
|
+
}
|
|
92
|
+
child.kill('SIGTERM');
|
|
93
|
+
const timer = new Promise((r) => setTimeout(() => r('timeout'), graceMs).unref());
|
|
94
|
+
const outcome = await Promise.race([exited, timer]);
|
|
95
|
+
if (outcome === 'timeout') {
|
|
96
|
+
child.kill('SIGKILL');
|
|
97
|
+
return exited;
|
|
98
|
+
}
|
|
99
|
+
return outcome;
|
|
100
|
+
};
|
|
101
|
+
return {
|
|
102
|
+
child,
|
|
103
|
+
pid: child.pid ?? -1,
|
|
104
|
+
exited,
|
|
105
|
+
terminate,
|
|
106
|
+
output: () => ({ stdout: stdoutBuf, stderr: stderrBuf }),
|
|
107
|
+
spawnFailure: () => spawnFailure,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
export async function spawnAndAwaitReady(spec, opts) {
|
|
111
|
+
if (opts.signal?.aborted)
|
|
112
|
+
throw new AtomicCoreError('CORE_NOT_RUNNING', 'The runtime stopped before the process could start.');
|
|
113
|
+
if (opts.cancelSignal?.aborted)
|
|
114
|
+
throw loadCancelledError();
|
|
115
|
+
const markers = opts.readyMarkers ?? LLAMA_READY_MARKERS;
|
|
116
|
+
let resolveReady;
|
|
117
|
+
const ready = new Promise((r) => (resolveReady = r));
|
|
118
|
+
let resolveFailed;
|
|
119
|
+
const failed = new Promise((r) => (resolveFailed = r));
|
|
120
|
+
const proc = spawnManaged(spec, (stream, line) => {
|
|
121
|
+
opts.onLine?.(stream, line);
|
|
122
|
+
const failure = opts.failOnLine?.(stream, line);
|
|
123
|
+
if (failure)
|
|
124
|
+
resolveFailed?.(failure);
|
|
125
|
+
const streamMarkers = opts.streamReadyMarkers ? opts.streamReadyMarkers[stream] : markers;
|
|
126
|
+
if (isReadyLogLine(line.toLowerCase(), streamMarkers))
|
|
127
|
+
resolveReady?.('log');
|
|
128
|
+
});
|
|
129
|
+
let healthTimer;
|
|
130
|
+
let healthStopped = false;
|
|
131
|
+
const stopHealth = () => {
|
|
132
|
+
healthStopped = true;
|
|
133
|
+
if (healthTimer)
|
|
134
|
+
clearTimeout(healthTimer);
|
|
135
|
+
};
|
|
136
|
+
if (opts.healthCheck) {
|
|
137
|
+
const interval = opts.healthIntervalMs ?? 200;
|
|
138
|
+
const poll = async () => {
|
|
139
|
+
if (healthStopped)
|
|
140
|
+
return;
|
|
141
|
+
try {
|
|
142
|
+
if (await opts.healthCheck()) {
|
|
143
|
+
resolveReady?.('health');
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
// not ready yet
|
|
149
|
+
}
|
|
150
|
+
if (!healthStopped)
|
|
151
|
+
healthTimer = setTimeout(poll, interval);
|
|
152
|
+
};
|
|
153
|
+
healthTimer = setTimeout(poll, interval);
|
|
154
|
+
}
|
|
155
|
+
const timeout = new Promise((r) => setTimeout(() => r('timeout'), opts.timeoutMs).unref());
|
|
156
|
+
let resolveAbort;
|
|
157
|
+
const aborted = new Promise((resolve) => {
|
|
158
|
+
resolveAbort = () => resolve('aborted');
|
|
159
|
+
opts.signal?.addEventListener('abort', resolveAbort, { once: true });
|
|
160
|
+
});
|
|
161
|
+
let resolveCancel;
|
|
162
|
+
const cancelled = new Promise((resolve) => {
|
|
163
|
+
resolveCancel = () => resolve('cancelled');
|
|
164
|
+
opts.cancelSignal?.addEventListener('abort', resolveCancel, { once: true });
|
|
165
|
+
});
|
|
166
|
+
try {
|
|
167
|
+
const outcome = await Promise.race([
|
|
168
|
+
ready.then((via) => ({ kind: 'ready', via })),
|
|
169
|
+
proc.exited.then((exit) => ({ kind: 'exit', exit })),
|
|
170
|
+
timeout.then(() => ({ kind: 'timeout' })),
|
|
171
|
+
aborted.then(() => ({ kind: 'aborted' })),
|
|
172
|
+
cancelled.then(() => ({ kind: 'cancelled' })),
|
|
173
|
+
failed.then((error) => ({ kind: 'failed', error })),
|
|
174
|
+
]);
|
|
175
|
+
if (outcome.kind === 'ready')
|
|
176
|
+
return { process: proc, readyVia: outcome.via };
|
|
177
|
+
if (outcome.kind === 'exit') {
|
|
178
|
+
// A process that never started (ENOENT, EACCES, …) also settles `exited`.
|
|
179
|
+
const failure = proc.spawnFailure();
|
|
180
|
+
if (failure)
|
|
181
|
+
throw new AtomicCoreError('IO_ERROR', 'An input/output error occurred.', failure.message);
|
|
182
|
+
// Give the pipes a tick to flush their last lines before classifying.
|
|
183
|
+
await new Promise((r) => setTimeout(r, 10));
|
|
184
|
+
const { stdout, stderr } = proc.output();
|
|
185
|
+
if (outcome.exit.code === 0 && outcome.exit.signal === null) {
|
|
186
|
+
// Exited cleanly without ever reporting ready.
|
|
187
|
+
throw opts.classifyExit({ code: 0, signal: null }, stderr, stdout);
|
|
188
|
+
}
|
|
189
|
+
throw opts.classifyExit(outcome.exit, stderr, stdout);
|
|
190
|
+
}
|
|
191
|
+
// A cancel frees the memory now: no grace, and the error is raised only once the child is gone.
|
|
192
|
+
const graceMs = outcome.kind === 'cancelled' ? 0 : outcome.kind === 'timeout' ? (opts.timeoutGraceMs ?? 1000) : 1000;
|
|
193
|
+
await proc.terminate(graceMs);
|
|
194
|
+
if (outcome.kind === 'cancelled')
|
|
195
|
+
throw loadCancelledError();
|
|
196
|
+
if (outcome.kind === 'failed')
|
|
197
|
+
throw outcome.error;
|
|
198
|
+
if (outcome.kind === 'aborted') {
|
|
199
|
+
throw new AtomicCoreError('CORE_NOT_RUNNING', 'The runtime stopped while the process was starting.');
|
|
200
|
+
}
|
|
201
|
+
const { stderr } = proc.output();
|
|
202
|
+
if (opts.timeoutError)
|
|
203
|
+
throw opts.timeoutError(stderr);
|
|
204
|
+
throw new AtomicCoreError('MODEL_LOAD_TIMED_OUT', opts.timeoutMessage ?? 'The model took too long to load and timed out.', `Timeout: ${Math.round(opts.timeoutMs / 1000)}s\n\nStderr:\n${stderr}`);
|
|
205
|
+
}
|
|
206
|
+
finally {
|
|
207
|
+
stopHealth();
|
|
208
|
+
if (resolveAbort)
|
|
209
|
+
opts.signal?.removeEventListener('abort', resolveAbort);
|
|
210
|
+
if (resolveCancel)
|
|
211
|
+
opts.cancelSignal?.removeEventListener('abort', resolveCancel);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/** `kill(pid, 0)` liveness probe. */
|
|
215
|
+
export function isProcessAlive(pid) {
|
|
216
|
+
try {
|
|
217
|
+
process.kill(pid, 0);
|
|
218
|
+
return true;
|
|
219
|
+
}
|
|
220
|
+
catch (e) {
|
|
221
|
+
return e.code === 'EPERM';
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/runtime/shared/process.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The session table of a sidecar runtime — MLX and Foundation Models: engines the core starts as
|
|
3
|
+
* one process per model and does not plan arguments for beyond a handful of flags.
|
|
4
|
+
*
|
|
5
|
+
* It holds what the llama.cpp runtime guarantees, in one place, so both sidecars keep it:
|
|
6
|
+
* - one load at a time for the provider, and a second request for a model already loading joins it
|
|
7
|
+
* (the MLX plugin's global load mutex; Foundation Models had none and could start two servers);
|
|
8
|
+
* - every spawned process is journalled before it can be forgotten, so a crashed owner leaves a
|
|
9
|
+
* trail the next owner can clean up and the app's reaper spares it;
|
|
10
|
+
* - a session exists only while its process does. Neither plugin watched its process: a crashed
|
|
11
|
+
* server stayed in the table until a chat request found the dead port. The table removes it on
|
|
12
|
+
* exit and emits `session:died`, which the app already listens for per provider;
|
|
13
|
+
* - a load the user cancels stops wherever it is — waiting for its turn, waiting on an unload,
|
|
14
|
+
* joined to another load, or about to be published — and never lets the load behind it start
|
|
15
|
+
* while the one ahead is still running.
|
|
16
|
+
*/
|
|
17
|
+
import type { WriteStream } from 'node:fs';
|
|
18
|
+
import type { CoreEvents, LocalProviderId, SessionInfo, UnloadResult } from '../../contracts/index.js';
|
|
19
|
+
import type { ProcessJournal } from '../../lock/index.js';
|
|
20
|
+
import type { ExitInfo } from '../llamacpp/index.js';
|
|
21
|
+
import type { ManagedProcess } from './process.js';
|
|
22
|
+
export type EmitFn = <K extends keyof CoreEvents>(name: K, payload: CoreEvents[K]) => void;
|
|
23
|
+
export interface SidecarSession<Extra = unknown> {
|
|
24
|
+
info: SessionInfo;
|
|
25
|
+
process: ManagedProcess;
|
|
26
|
+
exe: string;
|
|
27
|
+
/** What the runtime needs to remember about a session (its context size, its drafter…). */
|
|
28
|
+
extra: Extra;
|
|
29
|
+
logStream?: WriteStream | undefined;
|
|
30
|
+
journalled: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface SidecarTableOptions {
|
|
33
|
+
provider: LocalProviderId;
|
|
34
|
+
instanceId: string;
|
|
35
|
+
journal?: ProcessJournal | undefined;
|
|
36
|
+
emit: EmitFn;
|
|
37
|
+
/** Human wording of an unexpected exit, for `session:died`. */
|
|
38
|
+
describeExit: (exit: ExitInfo, stderr: string, stdout: string) => string;
|
|
39
|
+
/** SIGTERM grace on unload (both plugins: 5 s). */
|
|
40
|
+
unloadGraceMs: number;
|
|
41
|
+
/** SIGTERM grace when the owner shuts down (both plugins' exit cleanup: 2 s). */
|
|
42
|
+
shutdownGraceMs: number;
|
|
43
|
+
/** Engine name for messages. */
|
|
44
|
+
engine: string;
|
|
45
|
+
}
|
|
46
|
+
export declare class SidecarTable<Extra = unknown> {
|
|
47
|
+
private readonly options;
|
|
48
|
+
private readonly sessions;
|
|
49
|
+
private readonly loading;
|
|
50
|
+
private readonly unloading;
|
|
51
|
+
private loadTail;
|
|
52
|
+
private closing;
|
|
53
|
+
private readonly shutdownController;
|
|
54
|
+
constructor(options: SidecarTableOptions);
|
|
55
|
+
/** Aborts a process that is still starting when the owner shuts down. */
|
|
56
|
+
get signal(): AbortSignal;
|
|
57
|
+
get isClosing(): boolean;
|
|
58
|
+
list(): SessionInfo[];
|
|
59
|
+
get(modelId: string): SidecarSession<Extra> | undefined;
|
|
60
|
+
findSession(modelId: string): SessionInfo | undefined;
|
|
61
|
+
getLoadedModels(): string[];
|
|
62
|
+
isLoading(modelId: string): boolean;
|
|
63
|
+
/** Ports sessions already hold, so a new load never picks one of them. */
|
|
64
|
+
usedPorts(): number[];
|
|
65
|
+
/** In-flight loads other than this model's, which an auto-unload must wait for. */
|
|
66
|
+
otherLoads(modelId: string): Promise<SessionInfo>[];
|
|
67
|
+
/**
|
|
68
|
+
* Load through the provider's single queue, or join the load already in flight for this model.
|
|
69
|
+
* An already-loaded model answers with its session without queueing. `signal` is the user's
|
|
70
|
+
* cancel: it ends the wait at once, wherever the load is waiting.
|
|
71
|
+
*/
|
|
72
|
+
load(modelId: string, operation: () => Promise<SessionInfo>, signal?: AbortSignal): Promise<SessionInfo>;
|
|
73
|
+
/**
|
|
74
|
+
* Record a process that reported ready, and start watching it. Terminates it if that fails — or
|
|
75
|
+
* if the user cancelled while it was coming up: a cancel that raced the ready signal still wins,
|
|
76
|
+
* so no session is published for it.
|
|
77
|
+
*/
|
|
78
|
+
adopt(session: Omit<SidecarSession<Extra>, 'journalled'>, signal?: AbortSignal): Promise<SessionInfo>;
|
|
79
|
+
private journal;
|
|
80
|
+
private watchExit;
|
|
81
|
+
/** Stop one session. Unloading something that is not loaded is not an error. */
|
|
82
|
+
unload(modelId: string, graceMs?: number): Promise<UnloadResult>;
|
|
83
|
+
private unloadAfterLoading;
|
|
84
|
+
shutdown(): Promise<void>;
|
|
85
|
+
assertRunning(): void;
|
|
86
|
+
}
|