@atomic-chat/core 0.5.1 → 0.13.2
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 +22 -0
- package/dist/app-daemon.js +20 -67
- package/dist/app-daemon.js.map +1 -1
- package/dist/backend/advisor/advisor.d.ts +132 -0
- package/dist/backend/advisor/advisor.js +537 -0
- package/dist/backend/advisor/advisor.js.map +1 -0
- package/dist/backend/advisor/index.d.ts +6 -0
- package/dist/backend/advisor/index.js +7 -0
- package/dist/backend/advisor/index.js.map +1 -0
- package/dist/backend/advisor/policy.d.ts +81 -0
- package/dist/backend/advisor/policy.js +154 -0
- package/dist/backend/advisor/policy.js.map +1 -0
- package/dist/backend/catalog/archive.d.ts +21 -7
- package/dist/backend/catalog/archive.js +57 -17
- package/dist/backend/catalog/archive.js.map +1 -1
- package/dist/backend/catalog/bundled-manifest-baseline.js +42 -26
- package/dist/backend/catalog/bundled-manifest-baseline.js.map +1 -1
- package/dist/backend/catalog/cuda-family.d.ts +12 -2
- package/dist/backend/catalog/cuda-family.js +30 -7
- package/dist/backend/catalog/cuda-family.js.map +1 -1
- package/dist/backend/catalog/index.d.ts +5 -0
- package/dist/backend/catalog/index.js +5 -0
- package/dist/backend/catalog/index.js.map +1 -1
- package/dist/backend/catalog/manifest.d.ts +5 -3
- package/dist/backend/catalog/manifest.js +12 -9
- package/dist/backend/catalog/manifest.js.map +1 -1
- package/dist/backend/catalog/migrate.d.ts +8 -6
- package/dist/backend/catalog/migrate.js +26 -15
- package/dist/backend/catalog/migrate.js.map +1 -1
- package/dist/backend/catalog/prism-catalog.d.ts +42 -0
- package/dist/backend/catalog/prism-catalog.js +101 -0
- package/dist/backend/catalog/prism-catalog.js.map +1 -0
- package/dist/backend/catalog/prism-manifest-baseline.d.ts +2 -0
- package/dist/backend/catalog/prism-manifest-baseline.js +11 -0
- package/dist/backend/catalog/prism-manifest-baseline.js.map +1 -0
- package/dist/backend/catalog/prism-manifest-baseline.json +134 -0
- package/dist/backend/catalog/prism-manifest.d.ts +90 -0
- package/dist/backend/catalog/prism-manifest.js +171 -0
- package/dist/backend/catalog/prism-manifest.js.map +1 -0
- package/dist/backend/catalog/turboquant-catalog.d.ts +60 -0
- package/dist/backend/catalog/turboquant-catalog.js +162 -0
- package/dist/backend/catalog/turboquant-catalog.js.map +1 -0
- package/dist/backend/catalog/turboquant-index.d.ts +104 -0
- package/dist/backend/catalog/turboquant-index.js +260 -0
- package/dist/backend/catalog/turboquant-index.js.map +1 -0
- package/dist/backend/index.d.ts +1 -0
- package/dist/backend/index.js +1 -0
- package/dist/backend/index.js.map +1 -1
- package/dist/backend/install/runtime-backend.d.ts +6 -6
- package/dist/backend/install/runtime-backend.js +23 -20
- package/dist/backend/install/runtime-backend.js.map +1 -1
- package/dist/backend/install/service.d.ts +106 -5
- package/dist/backend/install/service.js +247 -21
- package/dist/backend/install/service.js.map +1 -1
- package/dist/backend/installed/bundled.d.ts +19 -0
- package/dist/backend/installed/bundled.js +45 -0
- package/dist/backend/installed/bundled.js.map +1 -0
- package/dist/backend/installed/index.d.ts +1 -0
- package/dist/backend/installed/index.js +1 -0
- package/dist/backend/installed/index.js.map +1 -1
- package/dist/backend/installed/installed.js +3 -0
- package/dist/backend/installed/installed.js.map +1 -1
- package/dist/backend/optimal/optimal-cache.d.ts +27 -8
- package/dist/backend/optimal/optimal-cache.js +38 -19
- package/dist/backend/optimal/optimal-cache.js.map +1 -1
- package/dist/backend/optimal/optimal-store.js +1 -1
- package/dist/backend/optimal/optimal-store.js.map +1 -1
- package/dist/backend/select/categories.d.ts +2 -1
- package/dist/backend/select/categories.js +8 -1
- package/dist/backend/select/categories.js.map +1 -1
- package/dist/backend/select/features.d.ts +13 -5
- package/dist/backend/select/features.js +36 -6
- package/dist/backend/select/features.js.map +1 -1
- package/dist/backend/select/index.d.ts +2 -0
- package/dist/backend/select/index.js +2 -0
- package/dist/backend/select/index.js.map +1 -1
- package/dist/backend/select/prism.d.ts +54 -0
- package/dist/backend/select/prism.js +212 -0
- package/dist/backend/select/prism.js.map +1 -0
- package/dist/backend/select/recovery.d.ts +4 -2
- package/dist/backend/select/recovery.js +17 -5
- package/dist/backend/select/recovery.js.map +1 -1
- package/dist/backend/select/tiers.d.ts +20 -11
- package/dist/backend/select/tiers.js +49 -11
- package/dist/backend/select/tiers.js.map +1 -1
- package/dist/backend/select/turboquant-tiers.d.ts +45 -0
- package/dist/backend/select/turboquant-tiers.js +114 -0
- package/dist/backend/select/turboquant-tiers.js.map +1 -0
- package/dist/backend/types.d.ts +6 -69
- package/dist/cli/commands/backends.d.ts +10 -0
- package/dist/cli/commands/backends.js +142 -0
- package/dist/cli/commands/backends.js.map +1 -0
- package/dist/cli/commands/hardware.d.ts +13 -0
- package/dist/cli/commands/hardware.js +71 -0
- package/dist/cli/commands/hardware.js.map +1 -0
- package/dist/cli/commands/host-step.d.ts +28 -0
- package/dist/cli/commands/host-step.js +67 -0
- package/dist/cli/commands/host-step.js.map +1 -0
- package/dist/cli/commands/index.d.ts +4 -1
- package/dist/cli/commands/index.js +4 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/serve.js +4 -4
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/shared.d.ts +6 -1
- package/dist/cli/commands/shared.js +7 -0
- package/dist/cli/commands/shared.js.map +1 -1
- package/dist/cli/io.d.ts +11 -0
- package/dist/cli/io.js +28 -3
- package/dist/cli/io.js.map +1 -1
- package/dist/cli/launch.js +2 -2
- package/dist/cli/launch.js.map +1 -1
- package/dist/cli/main.d.ts +1 -1
- package/dist/cli/main.js +11 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/client/control-client.d.ts +128 -7
- package/dist/client/control-client.js +211 -12
- package/dist/client/control-client.js.map +1 -1
- package/dist/cloud/registry.js +9 -1
- package/dist/cloud/registry.js.map +1 -1
- package/dist/config/paths.d.ts +137 -0
- package/dist/config/paths.js +163 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/contracts/backend-advisor.d.ts +225 -0
- package/dist/contracts/backend-advisor.js +14 -0
- package/dist/contracts/backend-advisor.js.map +1 -0
- package/dist/contracts/control-api.d.ts +7 -1
- package/dist/contracts/control-api.js +7 -1
- package/dist/contracts/control-api.js.map +1 -1
- package/dist/contracts/decision.d.ts +394 -0
- package/dist/contracts/decision.js +69 -0
- package/dist/contracts/decision.js.map +1 -0
- package/dist/contracts/diffusion.d.ts +62 -9
- package/dist/contracts/embedding.d.ts +103 -0
- package/dist/contracts/embedding.js +24 -0
- package/dist/contracts/embedding.js.map +1 -0
- package/dist/contracts/engine-builds.d.ts +108 -0
- package/dist/contracts/engine-builds.js +11 -0
- package/dist/contracts/engine-builds.js.map +1 -0
- package/dist/contracts/engines.d.ts +157 -0
- package/dist/contracts/engines.js +50 -0
- package/dist/contracts/engines.js.map +1 -0
- package/dist/contracts/environment.d.ts +774 -0
- package/dist/contracts/environment.js +116 -0
- package/dist/contracts/environment.js.map +1 -0
- package/dist/contracts/errors.d.ts +43 -2
- package/dist/contracts/errors.js +41 -0
- package/dist/contracts/errors.js.map +1 -1
- package/dist/contracts/events.d.ts +82 -4
- package/dist/contracts/hardware.d.ts +79 -6
- package/dist/contracts/hardware.js +9 -5
- package/dist/contracts/hardware.js.map +1 -1
- package/dist/contracts/index.d.ts +8 -0
- package/dist/contracts/index.js +8 -0
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/model-compatibility.d.ts +97 -0
- package/dist/contracts/model-compatibility.js +6 -0
- package/dist/contracts/model-compatibility.js.map +1 -0
- package/dist/contracts/model-setup.d.ts +115 -0
- package/dist/contracts/model-setup.js +33 -0
- package/dist/contracts/model-setup.js.map +1 -0
- package/dist/contracts/model-yml.d.ts +14 -0
- package/dist/contracts/model-yml.js +1 -0
- package/dist/contracts/model-yml.js.map +1 -1
- package/dist/contracts/session.d.ts +45 -2
- package/dist/contracts/session.js +14 -1
- package/dist/contracts/session.js.map +1 -1
- package/dist/contracts/settings.d.ts +44 -1
- package/dist/contracts/settings.js.map +1 -1
- package/dist/core/atomic-core.d.ts +44 -5
- package/dist/core/atomic-core.js +24 -0
- package/dist/core/atomic-core.js.map +1 -1
- package/dist/core/create.js +517 -23
- package/dist/core/create.js.map +1 -1
- package/dist/core/gpu/index.d.ts +6 -0
- package/dist/core/gpu/index.js +7 -0
- package/dist/core/gpu/index.js.map +1 -0
- package/dist/core/gpu/policy.d.ts +68 -0
- package/dist/core/gpu/policy.js +99 -0
- package/dist/core/gpu/policy.js.map +1 -0
- package/dist/core/gpu/residency.d.ts +44 -0
- package/dist/core/gpu/residency.js +101 -0
- package/dist/core/gpu/residency.js.map +1 -0
- package/dist/core/gpu-residency.d.ts +39 -0
- package/dist/core/gpu-residency.js +32 -0
- package/dist/core/gpu-residency.js.map +1 -0
- package/dist/core/index.d.ts +1 -1
- package/dist/core/managed-engines.d.ts +207 -0
- package/dist/core/managed-engines.js +579 -0
- package/dist/core/managed-engines.js.map +1 -0
- package/dist/core/managed-environment.d.ts +72 -0
- package/dist/core/managed-environment.js +218 -0
- package/dist/core/managed-environment.js.map +1 -0
- package/dist/core/model-setup/index.d.ts +4 -0
- package/dist/core/model-setup/index.js +5 -0
- package/dist/core/model-setup/index.js.map +1 -0
- package/dist/core/model-setup/plan.d.ts +56 -0
- package/dist/core/model-setup/plan.js +158 -0
- package/dist/core/model-setup/plan.js.map +1 -0
- package/dist/core/model-setup/service.d.ts +92 -0
- package/dist/core/model-setup/service.js +329 -0
- package/dist/core/model-setup/service.js.map +1 -0
- package/dist/core/model-setup/store.d.ts +29 -0
- package/dist/core/model-setup/store.js +116 -0
- package/dist/core/model-setup/store.js.map +1 -0
- package/dist/core/model-setup/wiring.d.ts +59 -0
- package/dist/core/model-setup/wiring.js +132 -0
- package/dist/core/model-setup/wiring.js.map +1 -0
- package/dist/core/prism.d.ts +36 -0
- package/dist/core/prism.js +42 -0
- package/dist/core/prism.js.map +1 -0
- package/dist/core/public-server.d.ts +7 -0
- package/dist/core/public-server.js +2 -0
- package/dist/core/public-server.js.map +1 -1
- package/dist/core/sessions.d.ts +6 -1
- package/dist/core/sessions.js +18 -14
- package/dist/core/sessions.js.map +1 -1
- package/dist/core/types.d.ts +27 -1
- package/dist/core/types.js.map +1 -1
- package/dist/decision/args.d.ts +110 -0
- package/dist/decision/args.js +126 -0
- package/dist/decision/args.js.map +1 -0
- package/dist/decision/backoff.d.ts +25 -0
- package/dist/decision/backoff.js +33 -0
- package/dist/decision/backoff.js.map +1 -0
- package/dist/decision/engine-candidates.d.ts +52 -0
- package/dist/decision/engine-candidates.js +138 -0
- package/dist/decision/engine-candidates.js.map +1 -0
- package/dist/decision/engine-fallback.d.ts +41 -0
- package/dist/decision/engine-fallback.js +57 -0
- package/dist/decision/engine-fallback.js.map +1 -0
- package/dist/decision/engine-version.d.ts +27 -0
- package/dist/decision/engine-version.js +54 -0
- package/dist/decision/engine-version.js.map +1 -0
- package/dist/decision/engine.d.ts +114 -0
- package/dist/decision/engine.js +253 -0
- package/dist/decision/engine.js.map +1 -0
- package/dist/decision/http.d.ts +36 -0
- package/dist/decision/http.js +73 -0
- package/dist/decision/http.js.map +1 -0
- package/dist/decision/index.d.ts +20 -0
- package/dist/decision/index.js +21 -0
- package/dist/decision/index.js.map +1 -0
- package/dist/decision/model-facts.d.ts +32 -0
- package/dist/decision/model-facts.js +40 -0
- package/dist/decision/model-facts.js.map +1 -0
- package/dist/decision/outcome.d.ts +35 -0
- package/dist/decision/outcome.js +105 -0
- package/dist/decision/outcome.js.map +1 -0
- package/dist/decision/process.d.ts +67 -0
- package/dist/decision/process.js +133 -0
- package/dist/decision/process.js.map +1 -0
- package/dist/decision/readiness.d.ts +74 -0
- package/dist/decision/readiness.js +165 -0
- package/dist/decision/readiness.js.map +1 -0
- package/dist/decision/request.d.ts +11 -0
- package/dist/decision/request.js +56 -0
- package/dist/decision/request.js.map +1 -0
- package/dist/decision/service.d.ts +202 -0
- package/dist/decision/service.js +711 -0
- package/dist/decision/service.js.map +1 -0
- package/dist/decision/upstream-version.d.ts +23 -0
- package/dist/decision/upstream-version.js +34 -0
- package/dist/decision/upstream-version.js.map +1 -0
- package/dist/decision/wiring.d.ts +67 -0
- package/dist/decision/wiring.js +101 -0
- package/dist/decision/wiring.js.map +1 -0
- package/dist/diffusion/args.d.ts +4 -2
- package/dist/diffusion/args.js +10 -3
- package/dist/diffusion/args.js.map +1 -1
- package/dist/diffusion/image-job.js +1 -1
- package/dist/diffusion/image-job.js.map +1 -1
- package/dist/diffusion/install.d.ts +35 -11
- package/dist/diffusion/install.js +74 -49
- package/dist/diffusion/install.js.map +1 -1
- package/dist/diffusion/job-kind.d.ts +33 -7
- package/dist/diffusion/jobs.d.ts +6 -1
- package/dist/diffusion/jobs.js +60 -18
- package/dist/diffusion/jobs.js.map +1 -1
- package/dist/diffusion/parse.d.ts +1 -2
- package/dist/diffusion/parse.js +1 -13
- package/dist/diffusion/parse.js.map +1 -1
- package/dist/diffusion/progress.js +3 -0
- package/dist/diffusion/progress.js.map +1 -1
- package/dist/diffusion/server-process.d.ts +6 -0
- package/dist/diffusion/server-process.js +3 -2
- package/dist/diffusion/server-process.js.map +1 -1
- package/dist/diffusion/service.d.ts +52 -6
- package/dist/diffusion/service.js +215 -40
- package/dist/diffusion/service.js.map +1 -1
- package/dist/diffusion/session.d.ts +27 -3
- package/dist/diffusion/session.js +108 -17
- package/dist/diffusion/session.js.map +1 -1
- package/dist/diffusion/state.d.ts +19 -1
- package/dist/diffusion/state.js +10 -0
- package/dist/diffusion/state.js.map +1 -1
- package/dist/diffusion/tracker.d.ts +15 -1
- package/dist/diffusion/tracker.js +32 -6
- package/dist/diffusion/tracker.js.map +1 -1
- package/dist/diffusion/types.d.ts +7 -0
- package/dist/diffusion/types.js +11 -0
- package/dist/diffusion/types.js.map +1 -1
- package/dist/diffusion/video-estimate.d.ts +214 -0
- package/dist/diffusion/video-estimate.js +402 -0
- package/dist/diffusion/video-estimate.js.map +1 -0
- package/dist/diffusion/video-eta.d.ts +90 -0
- package/dist/diffusion/video-eta.js +248 -0
- package/dist/diffusion/video-eta.js.map +1 -0
- package/dist/diffusion/video-history.d.ts +45 -0
- package/dist/diffusion/video-history.js +121 -0
- package/dist/diffusion/video-history.js.map +1 -0
- package/dist/diffusion/video-job.d.ts +13 -5
- package/dist/diffusion/video-job.js +42 -15
- package/dist/diffusion/video-job.js.map +1 -1
- package/dist/diffusion/video-recipe.js +3 -0
- package/dist/diffusion/video-recipe.js.map +1 -1
- package/dist/diffusion/video-tiling.d.ts +54 -0
- package/dist/diffusion/video-tiling.js +70 -0
- package/dist/diffusion/video-tiling.js.map +1 -0
- package/dist/diffusion/wiring.d.ts +14 -1
- package/dist/diffusion/wiring.js +7 -0
- package/dist/diffusion/wiring.js.map +1 -1
- package/dist/downloads/protocol.d.ts +3 -8
- package/dist/downloads/protocol.js.map +1 -1
- package/dist/embedding/args.d.ts +39 -0
- package/dist/embedding/args.js +46 -0
- package/dist/embedding/args.js.map +1 -0
- package/dist/embedding/engine.d.ts +50 -0
- package/dist/embedding/engine.js +100 -0
- package/dist/embedding/engine.js.map +1 -0
- package/dist/embedding/ffmpeg.d.ts +18 -0
- package/dist/embedding/ffmpeg.js +63 -0
- package/dist/embedding/ffmpeg.js.map +1 -0
- package/dist/embedding/index.d.ts +16 -0
- package/dist/embedding/index.js +17 -0
- package/dist/embedding/index.js.map +1 -0
- package/dist/embedding/model-facts.d.ts +51 -0
- package/dist/embedding/model-facts.js +84 -0
- package/dist/embedding/model-facts.js.map +1 -0
- package/dist/embedding/process.d.ts +66 -0
- package/dist/embedding/process.js +131 -0
- package/dist/embedding/process.js.map +1 -0
- package/dist/embedding/readiness.d.ts +56 -0
- package/dist/embedding/readiness.js +114 -0
- package/dist/embedding/readiness.js.map +1 -0
- package/dist/embedding/request.d.ts +43 -0
- package/dist/embedding/request.js +285 -0
- package/dist/embedding/request.js.map +1 -0
- package/dist/embedding/service.d.ts +152 -0
- package/dist/embedding/service.js +602 -0
- package/dist/embedding/service.js.map +1 -0
- package/dist/embedding/wiring.d.ts +51 -0
- package/dist/embedding/wiring.js +79 -0
- package/dist/embedding/wiring.js.map +1 -0
- package/dist/engine-builds/builds.d.ts +54 -0
- package/dist/engine-builds/builds.js +151 -0
- package/dist/engine-builds/builds.js.map +1 -0
- package/dist/engine-builds/index.d.ts +10 -0
- package/dist/engine-builds/index.js +11 -0
- package/dist/engine-builds/index.js.map +1 -0
- package/dist/engine-builds/install.d.ts +42 -0
- package/dist/engine-builds/install.js +100 -0
- package/dist/engine-builds/install.js.map +1 -0
- package/dist/engine-builds/manifest.d.ts +121 -0
- package/dist/engine-builds/manifest.js +254 -0
- package/dist/engine-builds/manifest.js.map +1 -0
- package/dist/engine-builds/order.d.ts +24 -0
- package/dist/engine-builds/order.js +44 -0
- package/dist/engine-builds/order.js.map +1 -0
- package/dist/engine-builds/select.d.ts +123 -0
- package/dist/engine-builds/select.js +223 -0
- package/dist/engine-builds/select.js.map +1 -0
- package/dist/engine-builds/service.d.ts +123 -0
- package/dist/engine-builds/service.js +392 -0
- package/dist/engine-builds/service.js.map +1 -0
- package/dist/engines/descriptor-order.d.ts +28 -0
- package/dist/engines/descriptor-order.js +60 -0
- package/dist/engines/descriptor-order.js.map +1 -0
- package/dist/engines/engine-build.d.ts +23 -0
- package/dist/engines/engine-build.js +58 -0
- package/dist/engines/engine-build.js.map +1 -0
- package/dist/engines/index.d.ts +10 -0
- package/dist/engines/index.js +11 -0
- package/dist/engines/index.js.map +1 -0
- package/dist/engines/llamacpp.d.ts +71 -0
- package/dist/engines/llamacpp.js +176 -0
- package/dist/engines/llamacpp.js.map +1 -0
- package/dist/engines/managed.d.ts +49 -0
- package/dist/engines/managed.js +88 -0
- package/dist/engines/managed.js.map +1 -0
- package/dist/engines/service.d.ts +46 -0
- package/dist/engines/service.js +61 -0
- package/dist/engines/service.js.map +1 -0
- package/dist/engines/versions.d.ts +65 -0
- package/dist/engines/versions.js +259 -0
- package/dist/engines/versions.js.map +1 -0
- package/dist/hardware/cpu-flags.d.ts +44 -0
- package/dist/hardware/cpu-flags.js +206 -0
- package/dist/hardware/cpu-flags.js.map +1 -0
- package/dist/hardware/drm-sysfs.d.ts +51 -0
- package/dist/hardware/drm-sysfs.js +67 -0
- package/dist/hardware/drm-sysfs.js.map +1 -0
- package/dist/hardware/facts.d.ts +42 -0
- package/dist/hardware/facts.js +92 -0
- package/dist/hardware/facts.js.map +1 -0
- package/dist/hardware/index.d.ts +19 -3
- package/dist/hardware/index.js +19 -3
- package/dist/hardware/index.js.map +1 -1
- package/dist/hardware/merge.d.ts +55 -0
- package/dist/hardware/merge.js +141 -0
- package/dist/hardware/merge.js.map +1 -0
- package/dist/hardware/nvidia-smi.d.ts +43 -0
- package/dist/hardware/nvidia-smi.js +118 -0
- package/dist/hardware/nvidia-smi.js.map +1 -0
- package/dist/hardware/probe-common.d.ts +72 -0
- package/dist/hardware/probe-common.js +106 -0
- package/dist/hardware/probe-common.js.map +1 -0
- package/dist/hardware/probe-darwin.d.ts +20 -0
- package/dist/hardware/probe-darwin.js +76 -0
- package/dist/hardware/probe-darwin.js.map +1 -0
- package/dist/hardware/probe-linux.d.ts +9 -0
- package/dist/hardware/probe-linux.js +133 -0
- package/dist/hardware/probe-linux.js.map +1 -0
- package/dist/hardware/probe-windows.d.ts +7 -0
- package/dist/hardware/probe-windows.js +50 -0
- package/dist/hardware/probe-windows.js.map +1 -0
- package/dist/hardware/probe.d.ts +16 -0
- package/dist/hardware/probe.js +65 -0
- package/dist/hardware/probe.js.map +1 -0
- package/dist/hardware/service.d.ts +60 -0
- package/dist/hardware/service.js +114 -0
- package/dist/hardware/service.js.map +1 -0
- package/dist/hardware/vulkan.d.ts +47 -0
- package/dist/hardware/vulkan.js +148 -0
- package/dist/hardware/vulkan.js.map +1 -0
- package/dist/hardware/windows-video.d.ts +97 -0
- package/dist/hardware/windows-video.js +214 -0
- package/dist/hardware/windows-video.js.map +1 -0
- package/dist/host/app-daemon.d.ts +47 -0
- package/dist/host/app-daemon.js +146 -0
- package/dist/host/app-daemon.js.map +1 -0
- package/dist/host/index.d.ts +5 -3
- package/dist/host/index.js +5 -3
- package/dist/host/index.js.map +1 -1
- package/dist/host/log-file.d.ts +74 -0
- package/dist/host/log-file.js +214 -0
- package/dist/host/log-file.js.map +1 -0
- package/dist/host/recipes/enable-wsl.d.ts +63 -0
- package/dist/host/recipes/enable-wsl.js +73 -0
- package/dist/host/recipes/enable-wsl.js.map +1 -0
- package/dist/host/recipes/executor-io-windows.d.ts +69 -0
- package/dist/host/recipes/executor-io-windows.js +235 -0
- package/dist/host/recipes/executor-io-windows.js.map +1 -0
- package/dist/host/recipes/executor-io.d.ts +80 -0
- package/dist/host/recipes/executor-io.js +211 -0
- package/dist/host/recipes/executor-io.js.map +1 -0
- package/dist/host/recipes/executor.d.ts +81 -0
- package/dist/host/recipes/executor.js +678 -0
- package/dist/host/recipes/executor.js.map +1 -0
- package/dist/host/recipes/guest-executor.d.ts +29 -0
- package/dist/host/recipes/guest-executor.js +76 -0
- package/dist/host/recipes/guest-executor.js.map +1 -0
- package/dist/host/recipes/index.d.ts +16 -0
- package/dist/host/recipes/index.js +17 -0
- package/dist/host/recipes/index.js.map +1 -0
- package/dist/host/recipes/install-container-runtime.d.ts +389 -0
- package/dist/host/recipes/install-container-runtime.js +796 -0
- package/dist/host/recipes/install-container-runtime.js.map +1 -0
- package/dist/host/recipes/openpgp.d.ts +23 -0
- package/dist/host/recipes/openpgp.js +153 -0
- package/dist/host/recipes/openpgp.js.map +1 -0
- package/dist/host/recipes/request-file.d.ts +96 -0
- package/dist/host/recipes/request-file.js +103 -0
- package/dist/host/recipes/request-file.js.map +1 -0
- package/dist/lock/process-journal.d.ts +5 -2
- package/dist/lock/process-journal.js.map +1 -1
- package/dist/models/capabilities.d.ts +7 -0
- package/dist/models/capabilities.js +17 -1
- package/dist/models/capabilities.js.map +1 -1
- package/dist/models/compatibility/index.d.ts +10 -0
- package/dist/models/compatibility/index.js +11 -0
- package/dist/models/compatibility/index.js.map +1 -0
- package/dist/models/compatibility/inspect.d.ts +19 -0
- package/dist/models/compatibility/inspect.js +59 -0
- package/dist/models/compatibility/inspect.js.map +1 -0
- package/dist/models/compatibility/resolve.d.ts +59 -0
- package/dist/models/compatibility/resolve.js +219 -0
- package/dist/models/compatibility/resolve.js.map +1 -0
- package/dist/models/compatibility/rules-baseline.d.ts +2 -0
- package/dist/models/compatibility/rules-baseline.js +10 -0
- package/dist/models/compatibility/rules-baseline.js.map +1 -0
- package/dist/models/compatibility/rules-baseline.json +292 -0
- package/dist/models/compatibility/rules-service.d.ts +36 -0
- package/dist/models/compatibility/rules-service.js +109 -0
- package/dist/models/compatibility/rules-service.js.map +1 -0
- package/dist/models/compatibility/rules.d.ts +81 -0
- package/dist/models/compatibility/rules.js +164 -0
- package/dist/models/compatibility/rules.js.map +1 -0
- package/dist/models/compatibility/service.d.ts +59 -0
- package/dist/models/compatibility/service.js +137 -0
- package/dist/models/compatibility/service.js.map +1 -0
- package/dist/models/decision-checkpoint.d.ts +22 -0
- package/dist/models/decision-checkpoint.js +33 -0
- package/dist/models/decision-checkpoint.js.map +1 -0
- package/dist/models/gguf/classify.d.ts +27 -1
- package/dist/models/gguf/classify.js +78 -2
- package/dist/models/gguf/classify.js.map +1 -1
- package/dist/models/gguf/index.d.ts +1 -0
- package/dist/models/gguf/index.js +1 -0
- package/dist/models/gguf/index.js.map +1 -1
- package/dist/models/gguf/tensors.d.ts +56 -0
- package/dist/models/gguf/tensors.js +236 -0
- package/dist/models/gguf/tensors.js.map +1 -0
- package/dist/models/index.d.ts +2 -0
- package/dist/models/index.js +2 -0
- package/dist/models/index.js.map +1 -1
- package/dist/router/resolve.d.ts +7 -1
- package/dist/router/resolve.js +14 -1
- package/dist/router/resolve.js.map +1 -1
- package/dist/runtime/container/argv.d.ts +88 -0
- package/dist/runtime/container/argv.js +406 -0
- package/dist/runtime/container/argv.js.map +1 -0
- package/dist/runtime/container/docker-binary.d.ts +4 -0
- package/dist/runtime/container/docker-binary.js +34 -0
- package/dist/runtime/container/docker-binary.js.map +1 -0
- package/dist/runtime/container/env.d.ts +17 -0
- package/dist/runtime/container/env.js +52 -0
- package/dist/runtime/container/env.js.map +1 -0
- package/dist/runtime/container/exec.d.ts +27 -0
- package/dist/runtime/container/exec.js +79 -0
- package/dist/runtime/container/exec.js.map +1 -0
- package/dist/runtime/container/execution-journal.d.ts +55 -0
- package/dist/runtime/container/execution-journal.js +167 -0
- package/dist/runtime/container/execution-journal.js.map +1 -0
- package/dist/runtime/container/heartbeat.d.ts +47 -0
- package/dist/runtime/container/heartbeat.js +78 -0
- package/dist/runtime/container/heartbeat.js.map +1 -0
- package/dist/runtime/container/index.d.ts +30 -0
- package/dist/runtime/container/index.js +31 -0
- package/dist/runtime/container/index.js.map +1 -0
- package/dist/runtime/container/operations.d.ts +40 -0
- package/dist/runtime/container/operations.js +233 -0
- package/dist/runtime/container/operations.js.map +1 -0
- package/dist/runtime/container/pull.d.ts +48 -0
- package/dist/runtime/container/pull.js +280 -0
- package/dist/runtime/container/pull.js.map +1 -0
- package/dist/runtime/container/reconcile.d.ts +34 -0
- package/dist/runtime/container/reconcile.js +79 -0
- package/dist/runtime/container/reconcile.js.map +1 -0
- package/dist/runtime/container/types.d.ts +124 -0
- package/dist/runtime/container/types.js +2 -0
- package/dist/runtime/container/types.js.map +1 -0
- package/dist/runtime/container/watchdog.d.ts +114 -0
- package/dist/runtime/container/watchdog.js +418 -0
- package/dist/runtime/container/watchdog.js.map +1 -0
- package/dist/runtime/container/wiring.d.ts +78 -0
- package/dist/runtime/container/wiring.js +92 -0
- package/dist/runtime/container/wiring.js.map +1 -0
- package/dist/runtime/container/wsl-exec.d.ts +13 -0
- package/dist/runtime/container/wsl-exec.js +18 -0
- package/dist/runtime/container/wsl-exec.js.map +1 -0
- package/dist/runtime/environment/cached-document.d.ts +128 -0
- package/dist/runtime/environment/cached-document.js +218 -0
- package/dist/runtime/environment/cached-document.js.map +1 -0
- package/dist/runtime/environment/canonical-json.d.ts +78 -0
- package/dist/runtime/environment/canonical-json.js +86 -0
- package/dist/runtime/environment/canonical-json.js.map +1 -0
- package/dist/runtime/environment/descriptor-provider.d.ts +121 -0
- package/dist/runtime/environment/descriptor-provider.js +159 -0
- package/dist/runtime/environment/descriptor-provider.js.map +1 -0
- package/dist/runtime/environment/descriptor.d.ts +35 -0
- package/dist/runtime/environment/descriptor.js +239 -0
- package/dist/runtime/environment/descriptor.js.map +1 -0
- package/dist/runtime/environment/diagnostics.d.ts +50 -0
- package/dist/runtime/environment/diagnostics.js +114 -0
- package/dist/runtime/environment/diagnostics.js.map +1 -0
- package/dist/runtime/environment/document-fields.d.ts +39 -0
- package/dist/runtime/environment/document-fields.js +96 -0
- package/dist/runtime/environment/document-fields.js.map +1 -0
- package/dist/runtime/environment/environment-manifest-provider.d.ts +65 -0
- package/dist/runtime/environment/environment-manifest-provider.js +89 -0
- package/dist/runtime/environment/environment-manifest-provider.js.map +1 -0
- package/dist/runtime/environment/environment-manifest.d.ts +35 -0
- package/dist/runtime/environment/environment-manifest.js +131 -0
- package/dist/runtime/environment/environment-manifest.js.map +1 -0
- package/dist/runtime/environment/guest-host.d.ts +43 -0
- package/dist/runtime/environment/guest-host.js +88 -0
- package/dist/runtime/environment/guest-host.js.map +1 -0
- package/dist/runtime/environment/host-exec.d.ts +38 -0
- package/dist/runtime/environment/host-exec.js +145 -0
- package/dist/runtime/environment/host-exec.js.map +1 -0
- package/dist/runtime/environment/host-step-failure.d.ts +33 -0
- package/dist/runtime/environment/host-step-failure.js +34 -0
- package/dist/runtime/environment/host-step-failure.js.map +1 -0
- package/dist/runtime/environment/index.d.ts +56 -0
- package/dist/runtime/environment/index.js +57 -0
- package/dist/runtime/environment/index.js.map +1 -0
- package/dist/runtime/environment/installations.d.ts +25 -0
- package/dist/runtime/environment/installations.js +70 -0
- package/dist/runtime/environment/installations.js.map +1 -0
- package/dist/runtime/environment/inventory.d.ts +42 -0
- package/dist/runtime/environment/inventory.js +57 -0
- package/dist/runtime/environment/inventory.js.map +1 -0
- package/dist/runtime/environment/linux-blockers.d.ts +130 -0
- package/dist/runtime/environment/linux-blockers.js +251 -0
- package/dist/runtime/environment/linux-blockers.js.map +1 -0
- package/dist/runtime/environment/linux-docker-facts.d.ts +200 -0
- package/dist/runtime/environment/linux-docker-facts.js +342 -0
- package/dist/runtime/environment/linux-docker-facts.js.map +1 -0
- package/dist/runtime/environment/linux-docker-network.d.ts +80 -0
- package/dist/runtime/environment/linux-docker-network.js +195 -0
- package/dist/runtime/environment/linux-docker-network.js.map +1 -0
- package/dist/runtime/environment/linux-host.d.ts +22 -0
- package/dist/runtime/environment/linux-host.js +98 -0
- package/dist/runtime/environment/linux-host.js.map +1 -0
- package/dist/runtime/environment/linux-plan.d.ts +126 -0
- package/dist/runtime/environment/linux-plan.js +392 -0
- package/dist/runtime/environment/linux-plan.js.map +1 -0
- package/dist/runtime/environment/linux-probe.d.ts +245 -0
- package/dist/runtime/environment/linux-probe.js +315 -0
- package/dist/runtime/environment/linux-probe.js.map +1 -0
- package/dist/runtime/environment/linux-provisioner.d.ts +102 -0
- package/dist/runtime/environment/linux-provisioner.js +734 -0
- package/dist/runtime/environment/linux-provisioner.js.map +1 -0
- package/dist/runtime/environment/provisioner-descriptors.d.ts +17 -0
- package/dist/runtime/environment/provisioner-descriptors.js +62 -0
- package/dist/runtime/environment/provisioner-descriptors.js.map +1 -0
- package/dist/runtime/environment/recovery.d.ts +74 -0
- package/dist/runtime/environment/recovery.js +121 -0
- package/dist/runtime/environment/recovery.js.map +1 -0
- package/dist/runtime/environment/rootfs-download.d.ts +2 -0
- package/dist/runtime/environment/rootfs-download.js +47 -0
- package/dist/runtime/environment/rootfs-download.js.map +1 -0
- package/dist/runtime/environment/service.d.ts +280 -0
- package/dist/runtime/environment/service.js +776 -0
- package/dist/runtime/environment/service.js.map +1 -0
- package/dist/runtime/environment/state.d.ts +163 -0
- package/dist/runtime/environment/state.js +479 -0
- package/dist/runtime/environment/state.js.map +1 -0
- package/dist/runtime/environment/store-models.d.ts +19 -0
- package/dist/runtime/environment/store-models.js +30 -0
- package/dist/runtime/environment/store-models.js.map +1 -0
- package/dist/runtime/environment/store.d.ts +210 -0
- package/dist/runtime/environment/store.js +438 -0
- package/dist/runtime/environment/store.js.map +1 -0
- package/dist/runtime/environment/windows-environment-record.d.ts +48 -0
- package/dist/runtime/environment/windows-environment-record.js +89 -0
- package/dist/runtime/environment/windows-environment-record.js.map +1 -0
- package/dist/runtime/environment/windows-forwarding.d.ts +27 -0
- package/dist/runtime/environment/windows-forwarding.js +84 -0
- package/dist/runtime/environment/windows-forwarding.js.map +1 -0
- package/dist/runtime/environment/windows-guest-setup.d.ts +48 -0
- package/dist/runtime/environment/windows-guest-setup.js +157 -0
- package/dist/runtime/environment/windows-guest-setup.js.map +1 -0
- package/dist/runtime/environment/windows-host.d.ts +46 -0
- package/dist/runtime/environment/windows-host.js +163 -0
- package/dist/runtime/environment/windows-host.js.map +1 -0
- package/dist/runtime/environment/windows-plan.d.ts +78 -0
- package/dist/runtime/environment/windows-plan.js +216 -0
- package/dist/runtime/environment/windows-plan.js.map +1 -0
- package/dist/runtime/environment/windows-probe.d.ts +135 -0
- package/dist/runtime/environment/windows-probe.js +261 -0
- package/dist/runtime/environment/windows-probe.js.map +1 -0
- package/dist/runtime/environment/windows-provisioner.d.ts +113 -0
- package/dist/runtime/environment/windows-provisioner.js +782 -0
- package/dist/runtime/environment/windows-provisioner.js.map +1 -0
- package/dist/runtime/environment/wiring.d.ts +117 -0
- package/dist/runtime/environment/wiring.js +354 -0
- package/dist/runtime/environment/wiring.js.map +1 -0
- package/dist/runtime/foundation-models/runtime.d.ts +8 -0
- package/dist/runtime/foundation-models/runtime.js +5 -2
- package/dist/runtime/foundation-models/runtime.js.map +1 -1
- package/dist/runtime/llamacpp/args.d.ts +10 -1
- package/dist/runtime/llamacpp/args.js +43 -7
- package/dist/runtime/llamacpp/args.js.map +1 -1
- package/dist/runtime/llamacpp/fit-margin.d.ts +46 -0
- package/dist/runtime/llamacpp/fit-margin.js +47 -0
- package/dist/runtime/llamacpp/fit-margin.js.map +1 -0
- package/dist/runtime/llamacpp/index.d.ts +1 -0
- package/dist/runtime/llamacpp/index.js +1 -0
- package/dist/runtime/llamacpp/index.js.map +1 -1
- package/dist/runtime/llamacpp/load-plan.d.ts +23 -1
- package/dist/runtime/llamacpp/load-plan.js +82 -1
- package/dist/runtime/llamacpp/load-plan.js.map +1 -1
- package/dist/runtime/llamacpp/policy.d.ts +16 -0
- package/dist/runtime/llamacpp/policy.js +20 -0
- package/dist/runtime/llamacpp/policy.js.map +1 -1
- package/dist/runtime/llamacpp/probe.d.ts +21 -1
- package/dist/runtime/llamacpp/probe.js +32 -6
- package/dist/runtime/llamacpp/probe.js.map +1 -1
- package/dist/runtime/llamacpp/runtime.d.ts +56 -1
- package/dist/runtime/llamacpp/runtime.js +142 -15
- package/dist/runtime/llamacpp/runtime.js.map +1 -1
- package/dist/runtime/managed-engines/index.d.ts +8 -0
- package/dist/runtime/managed-engines/index.js +9 -0
- package/dist/runtime/managed-engines/index.js.map +1 -0
- package/dist/runtime/managed-engines/runtime.d.ts +140 -0
- package/dist/runtime/managed-engines/runtime.js +402 -0
- package/dist/runtime/managed-engines/runtime.js.map +1 -0
- package/dist/runtime/managed-engines/spec.d.ts +70 -0
- package/dist/runtime/managed-engines/spec.js +39 -0
- package/dist/runtime/managed-engines/spec.js.map +1 -0
- package/dist/runtime/managed-models/check.d.ts +50 -0
- package/dist/runtime/managed-models/check.js +157 -0
- package/dist/runtime/managed-models/check.js.map +1 -0
- package/dist/runtime/managed-models/compatibility.d.ts +256 -0
- package/dist/runtime/managed-models/compatibility.js +594 -0
- package/dist/runtime/managed-models/compatibility.js.map +1 -0
- package/dist/runtime/managed-models/delete.d.ts +15 -0
- package/dist/runtime/managed-models/delete.js +60 -0
- package/dist/runtime/managed-models/delete.js.map +1 -0
- package/dist/runtime/managed-models/guest-files.d.ts +8 -0
- package/dist/runtime/managed-models/guest-files.js +49 -0
- package/dist/runtime/managed-models/guest-files.js.map +1 -0
- package/dist/runtime/managed-models/index.d.ts +17 -0
- package/dist/runtime/managed-models/index.js +18 -0
- package/dist/runtime/managed-models/index.js.map +1 -0
- package/dist/runtime/managed-models/location.d.ts +22 -0
- package/dist/runtime/managed-models/location.js +53 -0
- package/dist/runtime/managed-models/location.js.map +1 -0
- package/dist/runtime/managed-models/migrate.d.ts +30 -0
- package/dist/runtime/managed-models/migrate.js +119 -0
- package/dist/runtime/managed-models/migrate.js.map +1 -0
- package/dist/runtime/managed-models/model-dir.d.ts +36 -0
- package/dist/runtime/managed-models/model-dir.js +136 -0
- package/dist/runtime/managed-models/model-dir.js.map +1 -0
- package/dist/runtime/managed-models/quant-format.d.ts +71 -0
- package/dist/runtime/managed-models/quant-format.js +299 -0
- package/dist/runtime/managed-models/quant-format.js.map +1 -0
- package/dist/runtime/managed-models/registry.d.ts +26 -0
- package/dist/runtime/managed-models/registry.js +66 -0
- package/dist/runtime/managed-models/registry.js.map +1 -0
- package/dist/runtime/managed-text/adapter.d.ts +266 -0
- package/dist/runtime/managed-text/adapter.js +96 -0
- package/dist/runtime/managed-text/adapter.js.map +1 -0
- package/dist/runtime/managed-text/backend-target.d.ts +3 -0
- package/dist/runtime/managed-text/backend-target.js +52 -0
- package/dist/runtime/managed-text/backend-target.js.map +1 -0
- package/dist/runtime/managed-text/deployment.d.ts +14 -0
- package/dist/runtime/managed-text/deployment.js +32 -0
- package/dist/runtime/managed-text/deployment.js.map +1 -0
- package/dist/runtime/managed-text/engine-cache.d.ts +15 -0
- package/dist/runtime/managed-text/engine-cache.js +64 -0
- package/dist/runtime/managed-text/engine-cache.js.map +1 -0
- package/dist/runtime/managed-text/gateway.d.ts +158 -0
- package/dist/runtime/managed-text/gateway.js +535 -0
- package/dist/runtime/managed-text/gateway.js.map +1 -0
- package/dist/runtime/managed-text/generation-defaults.d.ts +23 -0
- package/dist/runtime/managed-text/generation-defaults.js +51 -0
- package/dist/runtime/managed-text/generation-defaults.js.map +1 -0
- package/dist/runtime/managed-text/index.d.ts +26 -0
- package/dist/runtime/managed-text/index.js +27 -0
- package/dist/runtime/managed-text/index.js.map +1 -0
- package/dist/runtime/managed-text/lifecycle.d.ts +276 -0
- package/dist/runtime/managed-text/lifecycle.js +859 -0
- package/dist/runtime/managed-text/lifecycle.js.map +1 -0
- package/dist/runtime/managed-text/load-policy.d.ts +47 -0
- package/dist/runtime/managed-text/load-policy.js +111 -0
- package/dist/runtime/managed-text/load-policy.js.map +1 -0
- package/dist/runtime/managed-text/mount-source.d.ts +14 -0
- package/dist/runtime/managed-text/mount-source.js +18 -0
- package/dist/runtime/managed-text/mount-source.js.map +1 -0
- package/dist/runtime/managed-text/readiness.d.ts +13 -0
- package/dist/runtime/managed-text/readiness.js +24 -0
- package/dist/runtime/managed-text/readiness.js.map +1 -0
- package/dist/runtime/managed-text/request-rules.d.ts +18 -0
- package/dist/runtime/managed-text/request-rules.js +62 -0
- package/dist/runtime/managed-text/request-rules.js.map +1 -0
- package/dist/runtime/managed-text/types.d.ts +88 -0
- package/dist/runtime/managed-text/types.js +12 -0
- package/dist/runtime/managed-text/types.js.map +1 -0
- package/dist/runtime/managed-text/wsl-deployment.d.ts +24 -0
- package/dist/runtime/managed-text/wsl-deployment.js +70 -0
- package/dist/runtime/managed-text/wsl-deployment.js.map +1 -0
- package/dist/runtime/mlx/errors.d.ts +6 -1
- package/dist/runtime/mlx/errors.js +7 -2
- package/dist/runtime/mlx/errors.js.map +1 -1
- package/dist/runtime/mlx/runtime.d.ts +36 -1
- package/dist/runtime/mlx/runtime.js +85 -4
- package/dist/runtime/mlx/runtime.js.map +1 -1
- package/dist/runtime/shared/backend-output.d.ts +23 -0
- package/dist/runtime/shared/backend-output.js +32 -0
- package/dist/runtime/shared/backend-output.js.map +1 -0
- package/dist/runtime/shared/bounded-output.d.ts +24 -0
- package/dist/runtime/shared/bounded-output.js +63 -0
- package/dist/runtime/shared/bounded-output.js.map +1 -0
- package/dist/runtime/shared/external-sessions.js +9 -1
- package/dist/runtime/shared/external-sessions.js.map +1 -1
- package/dist/runtime/shared/gpu-occupancy.d.ts +60 -0
- package/dist/runtime/shared/gpu-occupancy.js +10 -0
- package/dist/runtime/shared/gpu-occupancy.js.map +1 -0
- package/dist/runtime/shared/index.d.ts +4 -0
- package/dist/runtime/shared/index.js +4 -0
- package/dist/runtime/shared/index.js.map +1 -1
- package/dist/runtime/shared/local-runtime.d.ts +35 -0
- package/dist/runtime/shared/ports.d.ts +6 -0
- package/dist/runtime/shared/ports.js +12 -1
- package/dist/runtime/shared/ports.js.map +1 -1
- package/dist/runtime/shared/process.d.ts +11 -0
- package/dist/runtime/shared/process.js +20 -0
- package/dist/runtime/shared/process.js.map +1 -1
- package/dist/runtime/shared/redact-args.d.ts +7 -0
- package/dist/runtime/shared/redact-args.js +26 -0
- package/dist/runtime/shared/redact-args.js.map +1 -0
- package/dist/runtime/shared/sidecar.d.ts +15 -0
- package/dist/runtime/shared/sidecar.js +43 -8
- package/dist/runtime/shared/sidecar.js.map +1 -1
- package/dist/runtime/tensorrt-llm/adapter.d.ts +250 -0
- package/dist/runtime/tensorrt-llm/adapter.js +1011 -0
- package/dist/runtime/tensorrt-llm/adapter.js.map +1 -0
- package/dist/runtime/tensorrt-llm/check.d.ts +12 -0
- package/dist/runtime/tensorrt-llm/check.js +21 -0
- package/dist/runtime/tensorrt-llm/check.js.map +1 -0
- package/dist/runtime/tensorrt-llm/compatibility.d.ts +100 -0
- package/dist/runtime/tensorrt-llm/compatibility.js +181 -0
- package/dist/runtime/tensorrt-llm/compatibility.js.map +1 -0
- package/dist/runtime/tensorrt-llm/engine.d.ts +3 -0
- package/dist/runtime/tensorrt-llm/engine.js +24 -0
- package/dist/runtime/tensorrt-llm/engine.js.map +1 -0
- package/dist/runtime/tensorrt-llm/host-facts.d.ts +55 -0
- package/dist/runtime/tensorrt-llm/host-facts.js +87 -0
- package/dist/runtime/tensorrt-llm/host-facts.js.map +1 -0
- package/dist/runtime/tensorrt-llm/index.d.ts +30 -0
- package/dist/runtime/tensorrt-llm/index.js +31 -0
- package/dist/runtime/tensorrt-llm/index.js.map +1 -0
- package/dist/runtime/tensorrt-llm/installation.d.ts +23 -0
- package/dist/runtime/tensorrt-llm/installation.js +53 -0
- package/dist/runtime/tensorrt-llm/installation.js.map +1 -0
- package/dist/runtime/tensorrt-llm/kv-cache.d.ts +25 -0
- package/dist/runtime/tensorrt-llm/kv-cache.js +28 -0
- package/dist/runtime/tensorrt-llm/kv-cache.js.map +1 -0
- package/dist/runtime/tensorrt-llm/prelaunch.d.ts +20 -0
- package/dist/runtime/tensorrt-llm/prelaunch.js +168 -0
- package/dist/runtime/tensorrt-llm/prelaunch.js.map +1 -0
- package/dist/runtime/tensorrt-llm/route-policy.d.ts +19 -0
- package/dist/runtime/tensorrt-llm/route-policy.js +17 -0
- package/dist/runtime/tensorrt-llm/route-policy.js.map +1 -0
- package/dist/runtime/tensorrt-llm/settings.d.ts +7 -0
- package/dist/runtime/tensorrt-llm/settings.js +48 -0
- package/dist/runtime/tensorrt-llm/settings.js.map +1 -0
- package/dist/runtime/vllm/adapter.d.ts +46 -0
- package/dist/runtime/vllm/adapter.js +425 -0
- package/dist/runtime/vllm/adapter.js.map +1 -0
- package/dist/runtime/vllm/engine.d.ts +16 -0
- package/dist/runtime/vllm/engine.js +37 -0
- package/dist/runtime/vllm/engine.js.map +1 -0
- package/dist/runtime/vllm/index.d.ts +11 -0
- package/dist/runtime/vllm/index.js +12 -0
- package/dist/runtime/vllm/index.js.map +1 -0
- package/dist/runtime/vllm/memory.d.ts +69 -0
- package/dist/runtime/vllm/memory.js +123 -0
- package/dist/runtime/vllm/memory.js.map +1 -0
- package/dist/runtime/vllm/settings.d.ts +52 -0
- package/dist/runtime/vllm/settings.js +151 -0
- package/dist/runtime/vllm/settings.js.map +1 -0
- package/dist/runtime/wsl/guest-paths.d.ts +33 -0
- package/dist/runtime/wsl/guest-paths.js +83 -0
- package/dist/runtime/wsl/guest-paths.js.map +1 -0
- package/dist/runtime/wsl/guest-scope.d.ts +14 -0
- package/dist/runtime/wsl/guest-scope.js +98 -0
- package/dist/runtime/wsl/guest-scope.js.map +1 -0
- package/dist/runtime/wsl/index.d.ts +12 -0
- package/dist/runtime/wsl/index.js +13 -0
- package/dist/runtime/wsl/index.js.map +1 -0
- package/dist/runtime/wsl/keeper.d.ts +29 -0
- package/dist/runtime/wsl/keeper.js +48 -0
- package/dist/runtime/wsl/keeper.js.map +1 -0
- package/dist/runtime/wsl/transport.d.ts +106 -0
- package/dist/runtime/wsl/transport.js +181 -0
- package/dist/runtime/wsl/transport.js.map +1 -0
- package/dist/server/control/index.d.ts +1 -1
- package/dist/server/control/router.js +15 -0
- package/dist/server/control/router.js.map +1 -1
- package/dist/server/control/routes/backends.js +26 -0
- package/dist/server/control/routes/backends.js.map +1 -1
- package/dist/server/control/routes/decision.d.ts +10 -0
- package/dist/server/control/routes/decision.js +43 -0
- package/dist/server/control/routes/decision.js.map +1 -0
- package/dist/server/control/routes/diffusion-video.js +4 -0
- package/dist/server/control/routes/diffusion-video.js.map +1 -1
- package/dist/server/control/routes/diffusion.d.ts +1 -1
- package/dist/server/control/routes/diffusion.js +4 -9
- package/dist/server/control/routes/diffusion.js.map +1 -1
- package/dist/server/control/routes/embedding.d.ts +9 -0
- package/dist/server/control/routes/embedding.js +43 -0
- package/dist/server/control/routes/embedding.js.map +1 -0
- package/dist/server/control/routes/engine-builds.d.ts +14 -0
- package/dist/server/control/routes/engine-builds.js +82 -0
- package/dist/server/control/routes/engine-builds.js.map +1 -0
- package/dist/server/control/routes/engines.d.ts +17 -0
- package/dist/server/control/routes/engines.js +152 -0
- package/dist/server/control/routes/engines.js.map +1 -0
- package/dist/server/control/routes/environments.d.ts +16 -0
- package/dist/server/control/routes/environments.js +207 -0
- package/dist/server/control/routes/environments.js.map +1 -0
- package/dist/server/control/routes/hardware.d.ts +1 -1
- package/dist/server/control/routes/hardware.js +11 -6
- package/dist/server/control/routes/hardware.js.map +1 -1
- package/dist/server/control/routes/model-setups.d.ts +11 -0
- package/dist/server/control/routes/model-setups.js +55 -0
- package/dist/server/control/routes/model-setups.js.map +1 -0
- package/dist/server/control/routes/models.d.ts +3 -2
- package/dist/server/control/routes/models.js +45 -2
- package/dist/server/control/routes/models.js.map +1 -1
- package/dist/server/control/types.d.ts +167 -9
- package/dist/server/control/types.js.map +1 -1
- package/dist/server/http.d.ts +9 -1
- package/dist/server/http.js +51 -1
- package/dist/server/http.js.map +1 -1
- package/dist/server/public/decision-preview.d.ts +17 -0
- package/dist/server/public/decision-preview.js +119 -0
- package/dist/server/public/decision-preview.js.map +1 -0
- package/dist/server/public/decision.d.ts +32 -0
- package/dist/server/public/decision.js +135 -0
- package/dist/server/public/decision.js.map +1 -0
- package/dist/server/public/embedding.d.ts +31 -0
- package/dist/server/public/embedding.js +126 -0
- package/dist/server/public/embedding.js.map +1 -0
- package/dist/server/public/errors.d.ts +2 -1
- package/dist/server/public/errors.js +5 -2
- package/dist/server/public/errors.js.map +1 -1
- package/dist/server/public/forward.js +75 -3
- package/dist/server/public/forward.js.map +1 -1
- package/dist/server/public/gates.d.ts +13 -0
- package/dist/server/public/gates.js +37 -14
- package/dist/server/public/gates.js.map +1 -1
- package/dist/server/public/index.d.ts +5 -2
- package/dist/server/public/index.js +14 -1
- package/dist/server/public/index.js.map +1 -1
- package/dist/server/public/listing.d.ts +13 -2
- package/dist/server/public/listing.js +33 -9
- package/dist/server/public/listing.js.map +1 -1
- package/dist/server/public/policy.d.ts +9 -0
- package/dist/server/public/policy.js +68 -0
- package/dist/server/public/policy.js.map +1 -0
- package/dist/server/public/responses.js +10 -0
- package/dist/server/public/responses.js.map +1 -1
- package/dist/server/public/trace.d.ts +2 -2
- package/dist/server/public/trace.js +6 -2
- package/dist/server/public/trace.js.map +1 -1
- package/dist/server/public/types.d.ts +84 -1
- package/dist/settings/decision.d.ts +15 -0
- package/dist/settings/decision.js +88 -0
- package/dist/settings/decision.js.map +1 -0
- package/dist/settings/embedding.d.ts +12 -0
- package/dist/settings/embedding.js +82 -0
- package/dist/settings/embedding.js.map +1 -0
- package/dist/settings/index.d.ts +2 -0
- package/dist/settings/index.js +2 -0
- package/dist/settings/index.js.map +1 -1
- package/dist/settings/schema/atomic-prism.json +433 -0
- package/dist/settings/schema/tensorrt-llm.json +253 -0
- package/dist/settings/schema/vllm.json +273 -0
- package/dist/settings/schema.js +58 -0
- package/dist/settings/schema.js.map +1 -1
- package/dist/settings/store.d.ts +13 -2
- package/dist/settings/store.js +44 -0
- package/dist/settings/store.js.map +1 -1
- package/dist/util/index.d.ts +1 -0
- package/dist/util/index.js +1 -0
- package/dist/util/index.js.map +1 -1
- package/dist/util/result.d.ts +19 -0
- package/dist/util/result.js +15 -0
- package/dist/util/result.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
- package/src/settings/schema/atomic-prism.json +433 -0
- package/src/settings/schema/tensorrt-llm.json +253 -0
- package/src/settings/schema/vllm.json +273 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reading an environment manifest (openspec change `extract-environment-manifest`, task 2.1; spec
|
|
3
|
+
* `runtime-environment-manifest`): the data about the foundation every managed engine runs on,
|
|
4
|
+
* published in conf apart from any engine descriptor, one file per platform. One parser per platform
|
|
5
|
+
* (change `add-tensorrt-llm-windows`, task 2.1): Linux's lists which install recipes exist and on
|
|
6
|
+
* which distributions each is qualified; Windows' pins the rootfs core imports as its own WSL
|
|
7
|
+
* distribution and names the recipe that prepares the guest. A core picks the parser of its own
|
|
8
|
+
* platform (`environmentManifestParser`), and each parser accepts nothing but its own `platform`, so
|
|
9
|
+
* another platform's manifest never reaches it.
|
|
10
|
+
*
|
|
11
|
+
* Each shape follows its conf schema (`atomic-chat-conf/runtimes/environments/<platform>.schema.json`)
|
|
12
|
+
* exactly, with the same strictness as the descriptor parser (`document-fields.ts`): every level
|
|
13
|
+
* refuses an unknown field, so a command or a script added anywhere refuses the whole document. Conf
|
|
14
|
+
* CI's integrity checks — `recipe_id` unique, a distribution unique by `(id, version_id, arch)` within
|
|
15
|
+
* its recipe, `manifest_id` prefixed by its platform — hold here too. An empty `recipes` list is a
|
|
16
|
+
* valid Linux manifest (conf ruling 1.1): it qualifies no distribution for automatic setup.
|
|
17
|
+
*/
|
|
18
|
+
import { DOCUMENT_ID, DOCUMENT_ID_LABEL, DOCUMENT_SEMVER, documentFields, installRecipe, } from './document-fields.js';
|
|
19
|
+
/** `manifest_id`: `<platform>-r<N>` (schema `properties.manifest_id.pattern`). */
|
|
20
|
+
const LINUX_MANIFEST_ID = /^linux-r[0-9]+$/;
|
|
21
|
+
/**
|
|
22
|
+
* `windows-r<N>` for x64 (`windows.json`), `windows-arm64-r<N>` for Windows on Arm
|
|
23
|
+
* (`windows-arm64.json`, its own file: every released core parses `windows.json` strictly and would
|
|
24
|
+
* refuse an arm64 rootfs there). The id names the architecture its rootfs is for.
|
|
25
|
+
*/
|
|
26
|
+
export const WINDOWS_MANIFEST_ID = /^windows(-arm64)?-r[0-9]+$/;
|
|
27
|
+
// Copied character-for-character from `windows.schema.json`'s `definitions.rootfs`.
|
|
28
|
+
/** `rootfs.url`: HTTPS only, no whitespace. */
|
|
29
|
+
const ROOTFS_URL = /^https:\/\/[^\s]+$/;
|
|
30
|
+
/** `rootfs.sha256`: lowercase hex, 64 characters. */
|
|
31
|
+
const ROOTFS_SHA256 = /^[0-9a-f]{64}$/;
|
|
32
|
+
const DISTRIBUTION_ID = /^[a-z0-9._-]+$/;
|
|
33
|
+
const VERSION_ID = /^[0-9][0-9.]*$/;
|
|
34
|
+
const SEMVER_LABEL = 'a semver version (major.minor.patch)';
|
|
35
|
+
const LINUX_KEYS = ['schema_version', 'manifest_id', 'platform', 'minimum_core_version', 'recipes'];
|
|
36
|
+
const WINDOWS_KEYS = [
|
|
37
|
+
'schema_version',
|
|
38
|
+
'manifest_id',
|
|
39
|
+
'platform',
|
|
40
|
+
'minimum_core_version',
|
|
41
|
+
'minimum_windows_build',
|
|
42
|
+
'minimum_wsl_version',
|
|
43
|
+
'rootfs',
|
|
44
|
+
'guest_recipe_id',
|
|
45
|
+
];
|
|
46
|
+
const ROOTFS_KEYS = ['url', 'sha256', 'distribution'];
|
|
47
|
+
const ROOTFS_DISTRIBUTION_KEYS = ['id', 'version_id', 'arch'];
|
|
48
|
+
const fields = documentFields('environment manifest');
|
|
49
|
+
/** The checks every platform's manifest starts with: an object, known keys, version 1, its own platform. */
|
|
50
|
+
function manifestObject(input, keys, platform) {
|
|
51
|
+
const raw = fields.object(input, 'the manifest');
|
|
52
|
+
fields.known(raw, 'the manifest', keys);
|
|
53
|
+
if (raw['schema_version'] !== 1) {
|
|
54
|
+
fields.fail('schema_version is not 1', JSON.stringify(raw['schema_version']));
|
|
55
|
+
}
|
|
56
|
+
if (raw['platform'] !== platform) {
|
|
57
|
+
fields.fail(`platform is not ${platform}`, JSON.stringify(raw['platform']));
|
|
58
|
+
}
|
|
59
|
+
return raw;
|
|
60
|
+
}
|
|
61
|
+
/** Validate one Linux environment manifest; throws `MANAGED_METADATA_INVALID` naming the first misfit. */
|
|
62
|
+
export function parseLinuxEnvironmentManifest(input) {
|
|
63
|
+
const raw = manifestObject(input, LINUX_KEYS, 'linux');
|
|
64
|
+
const recipes = fields
|
|
65
|
+
.list(raw['recipes'], 'recipes')
|
|
66
|
+
.map((item, i) => installRecipe(fields, item, `recipes[${i}]`));
|
|
67
|
+
fields.unique(recipes.map((recipe) => recipe.recipe_id), 'recipes', 'a recipe id');
|
|
68
|
+
return {
|
|
69
|
+
schema_version: 1,
|
|
70
|
+
manifest_id: fields.pattern(LINUX_MANIFEST_ID, 'a Linux manifest id (linux-r<N>)')(raw['manifest_id'], 'manifest_id'),
|
|
71
|
+
platform: 'linux',
|
|
72
|
+
minimum_core_version: fields.pattern(DOCUMENT_SEMVER, SEMVER_LABEL)(raw['minimum_core_version'], 'minimum_core_version'),
|
|
73
|
+
recipes,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/** Validate one Windows environment manifest; throws `MANAGED_METADATA_INVALID` naming the first misfit. */
|
|
77
|
+
export function parseWindowsEnvironmentManifest(input) {
|
|
78
|
+
const raw = manifestObject(input, WINDOWS_KEYS, 'windows');
|
|
79
|
+
const build = raw['minimum_windows_build'];
|
|
80
|
+
if (typeof build !== 'number' || !Number.isSafeInteger(build) || build < 1) {
|
|
81
|
+
fields.fail('minimum_windows_build is not a whole number >= 1', JSON.stringify(build));
|
|
82
|
+
}
|
|
83
|
+
const manifestId = fields.pattern(WINDOWS_MANIFEST_ID, 'a Windows manifest id (windows-r<N> or windows-arm64-r<N>)')(raw['manifest_id'], 'manifest_id');
|
|
84
|
+
return {
|
|
85
|
+
schema_version: 1,
|
|
86
|
+
manifest_id: manifestId,
|
|
87
|
+
platform: 'windows',
|
|
88
|
+
minimum_core_version: fields.pattern(DOCUMENT_SEMVER, SEMVER_LABEL)(raw['minimum_core_version'], 'minimum_core_version'),
|
|
89
|
+
minimum_windows_build: build,
|
|
90
|
+
minimum_wsl_version: fields.pattern(DOCUMENT_SEMVER, SEMVER_LABEL)(raw['minimum_wsl_version'], 'minimum_wsl_version'),
|
|
91
|
+
rootfs: rootfsFor(manifestId, rootfs(fields, raw['rootfs'])),
|
|
92
|
+
guest_recipe_id: fields.pattern(DOCUMENT_ID, DOCUMENT_ID_LABEL)(raw['guest_recipe_id'], 'guest_recipe_id'),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/** An arm64 manifest carries an aarch64 guest and an x64 one an x86_64 guest — never the other. */
|
|
96
|
+
function rootfsFor(manifestId, entry) {
|
|
97
|
+
const expected = manifestId.startsWith('windows-arm64-') ? 'aarch64' : 'x86_64';
|
|
98
|
+
if (entry.distribution.arch !== expected) {
|
|
99
|
+
fields.fail(`rootfs.distribution.arch is not ${expected} for ${manifestId}`, entry.distribution.arch);
|
|
100
|
+
}
|
|
101
|
+
return entry;
|
|
102
|
+
}
|
|
103
|
+
/** `#/definitions/rootfs`: where the guest comes from and what it is — never how to import it. */
|
|
104
|
+
function rootfs(fields, value) {
|
|
105
|
+
const entry = fields.object(value, 'rootfs');
|
|
106
|
+
fields.known(entry, 'rootfs', ROOTFS_KEYS);
|
|
107
|
+
const distribution = fields.object(entry['distribution'], 'rootfs.distribution');
|
|
108
|
+
fields.known(distribution, 'rootfs.distribution', ROOTFS_DISTRIBUTION_KEYS);
|
|
109
|
+
const arch = distribution['arch'];
|
|
110
|
+
if (arch !== 'x86_64' && arch !== 'aarch64') {
|
|
111
|
+
fields.fail('rootfs.distribution.arch is not x86_64 or aarch64', JSON.stringify(arch));
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
url: fields.pattern(ROOTFS_URL, 'an https:// URL')(entry['url'], 'rootfs.url'),
|
|
115
|
+
sha256: fields.pattern(ROOTFS_SHA256, '64 lowercase hex characters')(entry['sha256'], 'rootfs.sha256'),
|
|
116
|
+
distribution: {
|
|
117
|
+
id: fields.pattern(DISTRIBUTION_ID, 'an os-release id')(distribution['id'], 'rootfs.distribution.id'),
|
|
118
|
+
version_id: fields.pattern(VERSION_ID, 'an os-release version id')(distribution['version_id'], 'rootfs.distribution.version_id'),
|
|
119
|
+
arch: arch,
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/** The parser of one platform's manifest: it refuses every other platform's document. */
|
|
124
|
+
export function environmentManifestParser(platform) {
|
|
125
|
+
const parsers = {
|
|
126
|
+
linux: parseLinuxEnvironmentManifest,
|
|
127
|
+
windows: parseWindowsEnvironmentManifest,
|
|
128
|
+
};
|
|
129
|
+
return parsers[platform];
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=environment-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment-manifest.js","sourceRoot":"","sources":["../../../src/runtime/environment/environment-manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atomic Chat's own WSL distribution, seen as a Linux host (change `add-tensorrt-llm-windows`,
|
|
3
|
+
* design D1): the same `LinuxProbeDeps` the Linux provisioner reads a machine through, answered by
|
|
4
|
+
* commands run in the guest through the WSL transport — so `probeLinux` and `assessLinux` judge the
|
|
5
|
+
* guest exactly as they judge a Linux host, and nothing about Docker or the toolkit is written twice.
|
|
6
|
+
*
|
|
7
|
+
* Everything runs as the guest's root (design D3): root in a distribution the user owns gives no
|
|
8
|
+
* rights on Windows, and Docker is reached through its system socket without a `docker` group. No
|
|
9
|
+
* command goes through a shell: a file is read with `cat`, its existence checked with `test -e`, free
|
|
10
|
+
* space with `df`, each as its own argv.
|
|
11
|
+
*
|
|
12
|
+
* Two facts only the guest has (spec "Память и драйвер оцениваются по гостю"): the version of the
|
|
13
|
+
* NVIDIA user-space libraries WSL hands the guest (`/usr/lib/wsl/lib`), in Linux numbering — the guest's
|
|
14
|
+
* `nvidia-smi` reports the *Windows* driver's number (591.xx), which is not comparable with a
|
|
15
|
+
* descriptor's `minimum_driver_version`, while the NVML library's own version is (design D10:
|
|
16
|
+
* `nvidia-smi --version`'s `NVML version` line) — and the VM's memory, from the guest's
|
|
17
|
+
* `/proc/meminfo` (by default half of the Windows RAM).
|
|
18
|
+
*/
|
|
19
|
+
import type { WslDistributionTransport } from '../wsl/index.js';
|
|
20
|
+
import type { LinuxHost } from './linux-host.js';
|
|
21
|
+
import type { CommandOutput, LinuxProbeDeps } from './linux-probe.js';
|
|
22
|
+
/** The guest account every probe, recipe and docker call runs as. */
|
|
23
|
+
export declare const GUEST_ROOT = "root";
|
|
24
|
+
/** The docker CLI the guest recipe installs; never whatever `PATH` would find (a Windows `docker.exe`). */
|
|
25
|
+
export declare const GUEST_DOCKER = "/usr/bin/docker";
|
|
26
|
+
/** `df --output=avail -B1 <path>`: a header line, then the bytes. */
|
|
27
|
+
export declare function parseDfAvail(output: CommandOutput): number | null;
|
|
28
|
+
/** `nvidia-smi --version`'s `NVML version : 580.95.02` — the library version, Linux numbering. */
|
|
29
|
+
export declare function parseNvmlVersion(output: CommandOutput): string | null;
|
|
30
|
+
/** `/proc/meminfo`'s `MemTotal: 16303452 kB`, in bytes. */
|
|
31
|
+
export declare function parseMemTotal(text: string | null): number | null;
|
|
32
|
+
/** The guest's `LinuxProbeDeps`, honouring their contracts: `null`/`false` only for "not there". */
|
|
33
|
+
export declare function guestProbeDeps(transport: WslDistributionTransport): LinuxProbeDeps;
|
|
34
|
+
/** The guest as `probeLinux` reads it: root, no session runtime directory. */
|
|
35
|
+
export declare function guestLinuxHost(transport: WslDistributionTransport): LinuxHost;
|
|
36
|
+
/** What only the guest knows, read alongside `probeLinux`. */
|
|
37
|
+
export interface GuestExtras {
|
|
38
|
+
/** The NVIDIA libraries WSL provides, Linux numbering; null when unread. */
|
|
39
|
+
nvidia_library_version: string | null;
|
|
40
|
+
/** The VM's memory, bytes; null when unread. */
|
|
41
|
+
memory_bytes: number | null;
|
|
42
|
+
}
|
|
43
|
+
export declare function probeGuestExtras(transport: WslDistributionTransport): Promise<GuestExtras>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atomic Chat's own WSL distribution, seen as a Linux host (change `add-tensorrt-llm-windows`,
|
|
3
|
+
* design D1): the same `LinuxProbeDeps` the Linux provisioner reads a machine through, answered by
|
|
4
|
+
* commands run in the guest through the WSL transport — so `probeLinux` and `assessLinux` judge the
|
|
5
|
+
* guest exactly as they judge a Linux host, and nothing about Docker or the toolkit is written twice.
|
|
6
|
+
*
|
|
7
|
+
* Everything runs as the guest's root (design D3): root in a distribution the user owns gives no
|
|
8
|
+
* rights on Windows, and Docker is reached through its system socket without a `docker` group. No
|
|
9
|
+
* command goes through a shell: a file is read with `cat`, its existence checked with `test -e`, free
|
|
10
|
+
* space with `df`, each as its own argv.
|
|
11
|
+
*
|
|
12
|
+
* Two facts only the guest has (spec "Память и драйвер оцениваются по гостю"): the version of the
|
|
13
|
+
* NVIDIA user-space libraries WSL hands the guest (`/usr/lib/wsl/lib`), in Linux numbering — the guest's
|
|
14
|
+
* `nvidia-smi` reports the *Windows* driver's number (591.xx), which is not comparable with a
|
|
15
|
+
* descriptor's `minimum_driver_version`, while the NVML library's own version is (design D10:
|
|
16
|
+
* `nvidia-smi --version`'s `NVML version` line) — and the VM's memory, from the guest's
|
|
17
|
+
* `/proc/meminfo` (by default half of the Windows RAM).
|
|
18
|
+
*/
|
|
19
|
+
/** The guest account every probe, recipe and docker call runs as. */
|
|
20
|
+
export const GUEST_ROOT = 'root';
|
|
21
|
+
/** The docker CLI the guest recipe installs; never whatever `PATH` would find (a Windows `docker.exe`). */
|
|
22
|
+
export const GUEST_DOCKER = '/usr/bin/docker';
|
|
23
|
+
/** How long one guest command may take: the first one also boots the distribution. */
|
|
24
|
+
const GUEST_TIMEOUT_MS = 120_000;
|
|
25
|
+
const run = (transport, argv) => transport.exec(argv, { user: GUEST_ROOT, timeoutMs: GUEST_TIMEOUT_MS });
|
|
26
|
+
/** `df --output=avail -B1 <path>`: a header line, then the bytes. */
|
|
27
|
+
export function parseDfAvail(output) {
|
|
28
|
+
if (output.code !== 0)
|
|
29
|
+
return null;
|
|
30
|
+
const lines = output.stdout.trim().split('\n');
|
|
31
|
+
const value = Number(lines[lines.length - 1]?.trim());
|
|
32
|
+
return lines.length >= 2 && Number.isSafeInteger(value) ? value : null;
|
|
33
|
+
}
|
|
34
|
+
/** `nvidia-smi --version`'s `NVML version : 580.95.02` — the library version, Linux numbering. */
|
|
35
|
+
export function parseNvmlVersion(output) {
|
|
36
|
+
if (output.code !== 0)
|
|
37
|
+
return null;
|
|
38
|
+
const match = /^\s*NVML version\s*:\s*([0-9][0-9.]*)\s*$/im.exec(output.stdout);
|
|
39
|
+
return match === null ? null : match[1];
|
|
40
|
+
}
|
|
41
|
+
/** `/proc/meminfo`'s `MemTotal: 16303452 kB`, in bytes. */
|
|
42
|
+
export function parseMemTotal(text) {
|
|
43
|
+
if (text === null)
|
|
44
|
+
return null;
|
|
45
|
+
const match = /^MemTotal:\s+(\d+)\s*kB\s*$/m.exec(text);
|
|
46
|
+
return match === null ? null : Number(match[1]) * 1024;
|
|
47
|
+
}
|
|
48
|
+
/** The guest's `LinuxProbeDeps`, honouring their contracts: `null`/`false` only for "not there". */
|
|
49
|
+
export function guestProbeDeps(transport) {
|
|
50
|
+
const exists = async (path) => {
|
|
51
|
+
const tested = await run(transport, ['test', '-e', path]);
|
|
52
|
+
if (tested.code === 0)
|
|
53
|
+
return true;
|
|
54
|
+
if (tested.code === 1)
|
|
55
|
+
return false;
|
|
56
|
+
throw new Error(`could not check ${path} in the distribution: ${tested.stderr.trim()}`);
|
|
57
|
+
};
|
|
58
|
+
return {
|
|
59
|
+
// The guest's own environment is not this process's: an `env` overlay has nothing to apply to.
|
|
60
|
+
exec: (command, args) => run(transport, [command === 'docker' ? GUEST_DOCKER : command, ...args]),
|
|
61
|
+
readFile: async (path) => {
|
|
62
|
+
if (!(await exists(path)))
|
|
63
|
+
return null;
|
|
64
|
+
const read = await run(transport, ['cat', '--', path]);
|
|
65
|
+
if (read.code !== 0)
|
|
66
|
+
throw new Error(`could not read ${path} in the distribution: ${read.stderr.trim()}`);
|
|
67
|
+
return read.stdout;
|
|
68
|
+
},
|
|
69
|
+
pathExists: exists,
|
|
70
|
+
freeDiskBytes: async (path) => parseDfAvail(await run(transport, ['df', '--output=avail', '-B1', path])),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/** The guest as `probeLinux` reads it: root, no session runtime directory. */
|
|
74
|
+
export function guestLinuxHost(transport) {
|
|
75
|
+
return {
|
|
76
|
+
probeDeps: guestProbeDeps(transport),
|
|
77
|
+
options: () => ({ user: GUEST_ROOT, xdgRuntimeDir: null }),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export async function probeGuestExtras(transport) {
|
|
81
|
+
const deps = guestProbeDeps(transport);
|
|
82
|
+
const [smi, meminfo] = await Promise.all([
|
|
83
|
+
run(transport, ['nvidia-smi', '--version']),
|
|
84
|
+
deps.readFile('/proc/meminfo').catch(() => null),
|
|
85
|
+
]);
|
|
86
|
+
return { nvidia_library_version: parseNvmlVersion(smi), memory_bytes: parseMemTotal(meminfo) };
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=guest-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guest-host.js","sourceRoot":"","sources":["../../../src/runtime/environment/guest-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Running a read-only probe command on the real machine.
|
|
3
|
+
*
|
|
4
|
+
* The probes (`linux-probe`, `windows-probe`) are pure over an injected `exec`; this is the one that
|
|
5
|
+
* actually spawns. Three things about it are deliberate.
|
|
6
|
+
*
|
|
7
|
+
* There is no shell. The command and every argument go to `spawn` as they are, so nothing in a path,
|
|
8
|
+
* a user name or a registry value is ever interpreted.
|
|
9
|
+
*
|
|
10
|
+
* A command that could not answer is reported as `code: null`, the same as one that is not on the
|
|
11
|
+
* machine at all. That covers a missing binary, a spawn that failed and a command that hung past the
|
|
12
|
+
* deadline. The probes turn `null` into "unknown", and unknown blocks a setup rather than being read
|
|
13
|
+
* as "absent": a hung `nvidia-smi` is not evidence that there is no driver, and treating it as such
|
|
14
|
+
* would tell the user to install one they already have.
|
|
15
|
+
*
|
|
16
|
+
* Output is capped. A probe reads a few lines; a process that floods stdout is not allowed to fill
|
|
17
|
+
* the core's memory on the way to being ignored.
|
|
18
|
+
*/
|
|
19
|
+
import { spawn } from 'node:child_process';
|
|
20
|
+
import type { CommandOutput } from './linux-probe.js';
|
|
21
|
+
export interface HostExecOptions {
|
|
22
|
+
/** How long one command may take before it counts as unanswered. */
|
|
23
|
+
timeoutMs?: number;
|
|
24
|
+
/** Per stream. Anything past it is dropped, and the command still counts as answered. */
|
|
25
|
+
maxOutputBytes?: number;
|
|
26
|
+
/** Base environment every call spawns with. Defaults to inheriting `process.env` when omitted. */
|
|
27
|
+
env?: NodeJS.ProcessEnv;
|
|
28
|
+
/**
|
|
29
|
+
* When set, a command past its deadline gets SIGTERM first and this long to exit before SIGKILL,
|
|
30
|
+
* and the answer waits for it to exit. For a package manager: killed outright, dpkg can be left
|
|
31
|
+
* half-configured. Unset (the default for probes): SIGKILL and answer at once.
|
|
32
|
+
*/
|
|
33
|
+
terminateGraceMs?: number;
|
|
34
|
+
/** Tests only: stands in for `child_process.spawn`. */
|
|
35
|
+
spawnProcess?: typeof spawn;
|
|
36
|
+
}
|
|
37
|
+
export type HostExec = (command: string, args: string[], env?: Record<string, string | undefined>) => Promise<CommandOutput>;
|
|
38
|
+
export declare function hostExec(options?: HostExecOptions): HostExec;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Running a read-only probe command on the real machine.
|
|
3
|
+
*
|
|
4
|
+
* The probes (`linux-probe`, `windows-probe`) are pure over an injected `exec`; this is the one that
|
|
5
|
+
* actually spawns. Three things about it are deliberate.
|
|
6
|
+
*
|
|
7
|
+
* There is no shell. The command and every argument go to `spawn` as they are, so nothing in a path,
|
|
8
|
+
* a user name or a registry value is ever interpreted.
|
|
9
|
+
*
|
|
10
|
+
* A command that could not answer is reported as `code: null`, the same as one that is not on the
|
|
11
|
+
* machine at all. That covers a missing binary, a spawn that failed and a command that hung past the
|
|
12
|
+
* deadline. The probes turn `null` into "unknown", and unknown blocks a setup rather than being read
|
|
13
|
+
* as "absent": a hung `nvidia-smi` is not evidence that there is no driver, and treating it as such
|
|
14
|
+
* would tell the user to install one they already have.
|
|
15
|
+
*
|
|
16
|
+
* Output is capped. A probe reads a few lines; a process that floods stdout is not allowed to fill
|
|
17
|
+
* the core's memory on the way to being ignored.
|
|
18
|
+
*/
|
|
19
|
+
import { spawn } from 'node:child_process';
|
|
20
|
+
const DEFAULT_TIMEOUT_MS = 15_000;
|
|
21
|
+
const DEFAULT_MAX_OUTPUT_BYTES = 1024 * 1024;
|
|
22
|
+
/**
|
|
23
|
+
* After a timed-out command has exited, how long to wait for its output pipes to close. A leftover
|
|
24
|
+
* grandchild can hold them open indefinitely, and `close` would wait for it.
|
|
25
|
+
*/
|
|
26
|
+
const PIPE_SETTLE_MS = 1_000;
|
|
27
|
+
/** After SIGKILL, answer at the latest this much later, whatever the process table says. */
|
|
28
|
+
const KILL_SETTLE_MS = 5_000;
|
|
29
|
+
/**
|
|
30
|
+
* Overlays `overlay` onto `base` — a key mapped to a string sets it, a key mapped to `undefined`
|
|
31
|
+
* strips it, and every other key of `base` passes through untouched. This is the "merge, not
|
|
32
|
+
* replace" semantics `LinuxProbeDeps.exec`'s own `env` parameter documents (round 2, item 10): a
|
|
33
|
+
* caller stripping `DOCKER_HOST` for one call must not also lose `PATH` for it.
|
|
34
|
+
*/
|
|
35
|
+
function overlayEnv(base, overlay) {
|
|
36
|
+
const merged = { ...base };
|
|
37
|
+
for (const [key, value] of Object.entries(overlay)) {
|
|
38
|
+
if (value === undefined)
|
|
39
|
+
delete merged[key];
|
|
40
|
+
else
|
|
41
|
+
merged[key] = value;
|
|
42
|
+
}
|
|
43
|
+
return merged;
|
|
44
|
+
}
|
|
45
|
+
export function hostExec(options = {}) {
|
|
46
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
47
|
+
const limit = options.maxOutputBytes ?? DEFAULT_MAX_OUTPUT_BYTES;
|
|
48
|
+
return (command, args, envOverlay) => new Promise((resolve) => {
|
|
49
|
+
let settled = false;
|
|
50
|
+
const stdout = [];
|
|
51
|
+
const stderr = [];
|
|
52
|
+
let stdoutBytes = 0;
|
|
53
|
+
let stderrBytes = 0;
|
|
54
|
+
// Unset until spawn succeeds: a spawn that throws leaves nothing to kill.
|
|
55
|
+
let child;
|
|
56
|
+
// Armed before the spawn, so every way of finishing — including a spawn that throws on the
|
|
57
|
+
// spot — has a real timer to clear, and none of them can reach it before it exists.
|
|
58
|
+
let timedOut = false;
|
|
59
|
+
const timer = setTimeout(() => {
|
|
60
|
+
if (options.terminateGraceMs === undefined || child === undefined) {
|
|
61
|
+
child?.kill('SIGKILL');
|
|
62
|
+
finish({ code: null, stdout: '', stderr: `timed out after ${timeoutMs} ms` });
|
|
63
|
+
releasePipes();
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
// Ask first, then insist. The answer comes when the process is gone (`exit`, then a moment
|
|
67
|
+
// for the pipes), or at the latest shortly after SIGKILL — never only on `close`.
|
|
68
|
+
timedOut = true;
|
|
69
|
+
child.kill('SIGTERM');
|
|
70
|
+
setTimeout(() => {
|
|
71
|
+
child?.kill('SIGKILL');
|
|
72
|
+
setTimeout(finishTimedOut, KILL_SETTLE_MS).unref();
|
|
73
|
+
}, options.terminateGraceMs).unref();
|
|
74
|
+
}, timeoutMs);
|
|
75
|
+
timer.unref();
|
|
76
|
+
/**
|
|
77
|
+
* After a timeout has been answered: release our ends of the pipes, so a grandchild still
|
|
78
|
+
* holding theirs cannot keep this (possibly root) process alive.
|
|
79
|
+
*/
|
|
80
|
+
const releasePipes = () => {
|
|
81
|
+
child?.stdout?.destroy();
|
|
82
|
+
child?.stderr?.destroy();
|
|
83
|
+
};
|
|
84
|
+
const finishTimedOut = () => {
|
|
85
|
+
const said = Buffer.concat(stderr).toString('utf8');
|
|
86
|
+
finish({ code: null, stdout: '', stderr: `${said}\ntimed out after ${timeoutMs} ms` });
|
|
87
|
+
releasePipes();
|
|
88
|
+
};
|
|
89
|
+
const finish = (output) => {
|
|
90
|
+
if (settled)
|
|
91
|
+
return;
|
|
92
|
+
settled = true;
|
|
93
|
+
clearTimeout(timer);
|
|
94
|
+
resolve(output);
|
|
95
|
+
};
|
|
96
|
+
// No overlay for this call and no configured base: `spawn` gets no `env` key at all, which is
|
|
97
|
+
// how Node inherits `process.env` on its own — the same as before this parameter existed.
|
|
98
|
+
const spawnEnv = envOverlay === undefined ? options.env : overlayEnv(options.env ?? process.env, envOverlay);
|
|
99
|
+
try {
|
|
100
|
+
child = (options.spawnProcess ?? spawn)(command, args, {
|
|
101
|
+
shell: false,
|
|
102
|
+
windowsHide: true,
|
|
103
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
104
|
+
...(spawnEnv === undefined ? {} : { env: spawnEnv }),
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
// `spawn` throws synchronously for some malformed calls; that is an unanswered command.
|
|
109
|
+
finish({ code: null, stdout: '', stderr: error.message });
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
child.stdout?.on('data', (chunk) => {
|
|
113
|
+
if (stdoutBytes >= limit)
|
|
114
|
+
return;
|
|
115
|
+
const take = chunk.subarray(0, limit - stdoutBytes);
|
|
116
|
+
stdout.push(take);
|
|
117
|
+
stdoutBytes += take.length;
|
|
118
|
+
});
|
|
119
|
+
child.stderr?.on('data', (chunk) => {
|
|
120
|
+
if (stderrBytes >= limit)
|
|
121
|
+
return;
|
|
122
|
+
const take = chunk.subarray(0, limit - stderrBytes);
|
|
123
|
+
stderr.push(take);
|
|
124
|
+
stderrBytes += take.length;
|
|
125
|
+
});
|
|
126
|
+
// A binary that is not on the machine arrives here as ENOENT, not as an exit code.
|
|
127
|
+
child.on('error', (error) => finish({ code: null, stdout: '', stderr: error.message }));
|
|
128
|
+
child.on('exit', () => {
|
|
129
|
+
if (timedOut)
|
|
130
|
+
setTimeout(finishTimedOut, PIPE_SETTLE_MS).unref();
|
|
131
|
+
});
|
|
132
|
+
child.on('close', (code) => {
|
|
133
|
+
if (timedOut) {
|
|
134
|
+
finishTimedOut();
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
finish({
|
|
138
|
+
code,
|
|
139
|
+
stdout: Buffer.concat(stdout).toString('utf8'),
|
|
140
|
+
stderr: Buffer.concat(stderr).toString('utf8'),
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=host-exec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-exec.js","sourceRoot":"","sources":["../../../src/runtime/environment/host-exec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a `failed` host-step receipt becomes as the operation's error (task 2.23, finding F-4).
|
|
3
|
+
*
|
|
4
|
+
* The privileged step runs outside the core, as root; all the core gets back is the app's receipt.
|
|
5
|
+
* Since task 2.23 the receipt may carry the step's own `log_tail` (the executor's summary of the
|
|
6
|
+
* failed step, with the tail of docker.service's journal when Docker did not start, aeef103). The
|
|
7
|
+
* core never believes it as evidence of anything done, but it does read it for a cause it knows how
|
|
8
|
+
* to explain: dockerd finding no free address pool for its bridge. That failure otherwise reaches the
|
|
9
|
+
* user as "did not finish", with the real reason buried in the journal (3.10 acceptance run, F-2/F-4).
|
|
10
|
+
*
|
|
11
|
+
* Docker prints the same words for two causes, and the message follows what `daemon.json` says
|
|
12
|
+
* (review round 1): with no `bip`/`default-address-pools` there, its default pools are covered by the
|
|
13
|
+
* host's routes — typically a full-tunnel VPN; with one of them set, the ranges the user configured
|
|
14
|
+
* are the ones used up or overlapped. When `daemon.json` could not be read, the message says which is
|
|
15
|
+
* the likely one rather than asserting it.
|
|
16
|
+
*
|
|
17
|
+
* The cause is recognised by Docker's own words wherever they appear in the tail: `docker-service`
|
|
18
|
+
* (`enable --now`) is where the 3.10 host hit it, and the approved restart after the runtime
|
|
19
|
+
* configuration fails the same way on the same host. Nothing here runs as root or changes the
|
|
20
|
+
* executor; the raw tail stays in `details` either way.
|
|
21
|
+
*/
|
|
22
|
+
import type { ErrorBody, ManagedHostReceipt } from '../../contracts/index.js';
|
|
23
|
+
/** dockerd's own message when no address pool is free (libnetwork `ipamutils`). */
|
|
24
|
+
export declare const DOCKER_POOLS_EXHAUSTED = "all predefined address pools have been fully subnetted";
|
|
25
|
+
/** Whether a step's log tail shows dockerd finding no free address pool. */
|
|
26
|
+
export declare function poolsExhaustedIn(logTail: string | undefined): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* The operation error for a `failed` receipt: `MANAGED_PREREQUISITE_BLOCKED`, a message that names a
|
|
29
|
+
* recognised cause and its fix, and `details` holding the raw log tail (or, without one, the
|
|
30
|
+
* receipt id, as before task 2.23). `addressPoolsConfigured` is what `/etc/docker/daemon.json` says
|
|
31
|
+
* when the receipt arrived (`bip` or `default-address-pools` set); undefined when nobody read it.
|
|
32
|
+
*/
|
|
33
|
+
export declare function hostStepFailureError(receipt: Pick<ManagedHostReceipt, 'receipt_id' | 'log_tail'>, addressPoolsConfigured?: boolean | 'unknown'): ErrorBody;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { DOCKER_ADDRESS_POOLS_INSTRUCTION } from './linux-docker-network.js';
|
|
2
|
+
/** dockerd's own message when no address pool is free (libnetwork `ipamutils`). */
|
|
3
|
+
export const DOCKER_POOLS_EXHAUSTED = 'all predefined address pools have been fully subnetted';
|
|
4
|
+
/** Whether a step's log tail shows dockerd finding no free address pool. */
|
|
5
|
+
export function poolsExhaustedIn(logTail) {
|
|
6
|
+
return (logTail ?? '').toLowerCase().includes(DOCKER_POOLS_EXHAUSTED);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The operation error for a `failed` receipt: `MANAGED_PREREQUISITE_BLOCKED`, a message that names a
|
|
10
|
+
* recognised cause and its fix, and `details` holding the raw log tail (or, without one, the
|
|
11
|
+
* receipt id, as before task 2.23). `addressPoolsConfigured` is what `/etc/docker/daemon.json` says
|
|
12
|
+
* when the receipt arrived (`bip` or `default-address-pools` set); undefined when nobody read it.
|
|
13
|
+
*/
|
|
14
|
+
export function hostStepFailureError(receipt, addressPoolsConfigured) {
|
|
15
|
+
const tail = receipt.log_tail?.trim() ?? '';
|
|
16
|
+
const details = tail === '' ? receipt.receipt_id : tail;
|
|
17
|
+
const failed = 'Preparing the system did not finish: Docker could not start';
|
|
18
|
+
if (!poolsExhaustedIn(tail)) {
|
|
19
|
+
return { code: 'MANAGED_PREREQUISITE_BLOCKED', message: 'Preparing the system did not finish.', details };
|
|
20
|
+
}
|
|
21
|
+
const words = `("${DOCKER_POOLS_EXHAUSTED}")`;
|
|
22
|
+
const message = addressPoolsConfigured === true
|
|
23
|
+
? `${failed}: the address ranges set in /etc/docker/daemon.json ("default-address-pools" or ` +
|
|
24
|
+
`"bip") are used up or overlap routes on this machine ${words}. Set ranges there that no route ` +
|
|
25
|
+
'uses, then try again.'
|
|
26
|
+
: addressPoolsConfigured === false
|
|
27
|
+
? `${failed}, because the routes on this machine (often a full-tunnel VPN) cover every address ` +
|
|
28
|
+
`range Docker uses for its networks by default ${words}. ${DOCKER_ADDRESS_POOLS_INSTRUCTION}`
|
|
29
|
+
: `${failed}: it found no free address range for its networks ${words}, most often because the ` +
|
|
30
|
+
'routes on this machine (a full-tunnel VPN) cover its default ranges, or because the ranges set ' +
|
|
31
|
+
`in /etc/docker/daemon.json are used up. ${DOCKER_ADDRESS_POOLS_INSTRUCTION}`;
|
|
32
|
+
return { code: 'MANAGED_PREREQUISITE_BLOCKED', message, details };
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=host-step-failure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-step-failure.js","sourceRoot":"","sources":["../../../src/runtime/environment/host-step-failure.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAA;AAE5E,mFAAmF;AACnF,MAAM,CAAC,MAAM,sBAAsB,GAAG,wDAAwD,CAAA;AAE9F,4EAA4E;AAC5E,MAAM,UAAU,gBAAgB,CAAC,OAA2B;IAC1D,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAA;AACvE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAA4D,EAC5D,sBAA4C;IAE5C,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IAC3C,MAAM,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA;IACvD,MAAM,MAAM,GAAG,6DAA6D,CAAA;IAC5E,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,8BAA8B,EAAE,OAAO,EAAE,sCAAsC,EAAE,OAAO,EAAE,CAAA;IAC3G,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,sBAAsB,IAAI,CAAA;IAC7C,MAAM,OAAO,GACX,sBAAsB,KAAK,IAAI;QAC7B,CAAC,CAAC,GAAG,MAAM,kFAAkF;YAC3F,wDAAwD,KAAK,mCAAmC;YAChG,uBAAuB;QACzB,CAAC,CAAC,sBAAsB,KAAK,KAAK;YAChC,CAAC,CAAC,GAAG,MAAM,qFAAqF;gBAC9F,iDAAiD,KAAK,KAAK,gCAAgC,EAAE;YAC/F,CAAC,CAAC,GAAG,MAAM,qDAAqD,KAAK,2BAA2B;gBAC9F,iGAAiG;gBACjG,2CAA2C,gCAAgC,EAAE,CAAA;IACrF,OAAO,EAAE,IAAI,EAAE,8BAA8B,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;AACnE,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The managed text-runtime environment: installing, updating and removing the container runtime a
|
|
3
|
+
* text engine needs, as an operation that survives the app closing, the core dying and the machine
|
|
4
|
+
* rebooting (openspec change `add-tensorrt-llm-linux`).
|
|
5
|
+
*
|
|
6
|
+
* The pieces, in the order a setup goes through them: `descriptor` reads the metadata that says
|
|
7
|
+
* what to install, `descriptor-provider` gets it from conf (or an override) over HTTPS, caches it by
|
|
8
|
+
* `descriptor_id`, applies the version gate, and pins an installation to the one it was set up with
|
|
9
|
+
* (task 2.3), `environment-manifest` and `environment-manifest-provider` do the same for the Linux
|
|
10
|
+
* environment manifest — the install recipe's qualified distributions, kept apart from any engine
|
|
11
|
+
* (change `extract-environment-manifest`) — over the mechanism both share (`cached-document`,
|
|
12
|
+
* `document-fields`), `canonical-json` hashes what consent and idempotency are decided on, `state` is
|
|
13
|
+
* the transition table, `store` keeps the record across restarts under a lock two cores respect,
|
|
14
|
+
* `recovery` reconciles a record against what the machine actually shows, and `service` turns each
|
|
15
|
+
* decision into one piece of injected external work. `host-exec` runs a read-only probe command for
|
|
16
|
+
* real; `linux-probe` and `windows-probe` are the pure assessments built on top of it — `wiring`
|
|
17
|
+
* only ever selects the Linux one (task 2.2): Windows is a non-goal of this change, so
|
|
18
|
+
* `windows-probe` is ported and tested but never registered. `linux-provisioner` is the Linux host
|
|
19
|
+
* recipe the service runs a setup and a removal through (task 2.6), over `linux-host` (the real
|
|
20
|
+
* machine, or the e2e test host) and `installations` (the records both scopes share). `inventory`
|
|
21
|
+
* is the one piece of the model-compatibility check (spec `tensorrt-llm-models`) that belongs
|
|
22
|
+
* here: the digest that pins a curated model's file listing.
|
|
23
|
+
*
|
|
24
|
+
* Public API of this module is exported from this file only.
|
|
25
|
+
*/
|
|
26
|
+
export * from './canonical-json.js';
|
|
27
|
+
export * from './descriptor.js';
|
|
28
|
+
export * from './descriptor-provider.js';
|
|
29
|
+
export * from './diagnostics.js';
|
|
30
|
+
export * from './environment-manifest.js';
|
|
31
|
+
export * from './environment-manifest-provider.js';
|
|
32
|
+
export * from './cached-document.js';
|
|
33
|
+
export * from './host-exec.js';
|
|
34
|
+
export * from './inventory.js';
|
|
35
|
+
export * from './linux-docker-facts.js';
|
|
36
|
+
export * from './linux-plan.js';
|
|
37
|
+
export * from './linux-probe.js';
|
|
38
|
+
export * from './recovery.js';
|
|
39
|
+
export * from './service.js';
|
|
40
|
+
export * from './state.js';
|
|
41
|
+
export * from './store.js';
|
|
42
|
+
export * from './wiring.js';
|
|
43
|
+
export * from './windows-probe.js';
|
|
44
|
+
export * from './installations.js';
|
|
45
|
+
export * from './store-models.js';
|
|
46
|
+
export * from './linux-host.js';
|
|
47
|
+
export * from './linux-provisioner.js';
|
|
48
|
+
export * from './guest-host.js';
|
|
49
|
+
export * from './provisioner-descriptors.js';
|
|
50
|
+
export * from './windows-environment-record.js';
|
|
51
|
+
export * from './windows-host.js';
|
|
52
|
+
export * from './windows-plan.js';
|
|
53
|
+
export * from './windows-provisioner.js';
|
|
54
|
+
export * from './windows-guest-setup.js';
|
|
55
|
+
export * from './rootfs-download.js';
|
|
56
|
+
export * from './windows-forwarding.js';
|