@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,535 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The per-session authenticating gateway that sits in front of a managed engine's port.
|
|
3
|
+
*
|
|
4
|
+
* `trtllm-serve` (and any future container-hosted engine) listens on loopback but checks no API key
|
|
5
|
+
* of its own, so anything on the machine — and, through DNS rebinding, any web page the user has
|
|
6
|
+
* open — could reach it directly. Core instead binds a listener of its own on `127.0.0.1:<random>`
|
|
7
|
+
* for each session, hands that port and a fresh key out as `SessionInfo.port`/`api_key`, and proxies
|
|
8
|
+
* through to the container's real port only once a request presents that key from an allowed Host.
|
|
9
|
+
* The container's own port is never handed to a caller.
|
|
10
|
+
*
|
|
11
|
+
* The Host and Bearer-key checks are the public server's own (`server/public/gates.ts`,
|
|
12
|
+
* `hostAndKeyGate`) — the same code `:1337` gates on, so the trusted-Host allowlist behaves
|
|
13
|
+
* identically everywhere in the process. Streaming is the public server's own upstream plumbing too
|
|
14
|
+
* (`server/public/wire.ts`): `sendUpstream` for the request, `relay`/`pipeBody` to copy the response
|
|
15
|
+
* to the client as it arrives, with no buffering, and to close the upstream connection the moment
|
|
16
|
+
* the client goes away.
|
|
17
|
+
*
|
|
18
|
+
* New for TensorRT-LLM managed sessions (design D11, spec `managed-session-gateway`). Engine-neutral:
|
|
19
|
+
* nothing here knows about `trtllm-serve` specifically, only that it speaks HTTP on loopback.
|
|
20
|
+
*
|
|
21
|
+
* `routes`/`rewritableRoutes`/`rewriteRequestBody` (task 2.13 fix rounds 1-3; ADR
|
|
22
|
+
* `docs/decisions/2026-09-28-tensorrt-llm-output-cap-enforced-by-the-session-gateway.md`) are the
|
|
23
|
+
* deliberate exceptions to design D11's own Risks/Trade-offs entry, "только копирование байтов без
|
|
24
|
+
* парсинга" (only copies bytes, never parses):
|
|
25
|
+
* - every request's method+path is checked against the adapter's own declared `routes` before
|
|
26
|
+
* anything is forwarded — a path the adapter never declared at all gets `404`; a path it declared
|
|
27
|
+
* for a *different* method gets `405` with an `Allow` header (round 3: round 2's path-only
|
|
28
|
+
* matching let a wrong method through). Neither is ever forwarded, closing off both whatever else
|
|
29
|
+
* the engine's own HTTP server happens to also expose, and a wrong method on a route that is
|
|
30
|
+
* otherwise real;
|
|
31
|
+
* - a request matching a declared route the adapter also lists in `rewritableRoutes` gets its JSON
|
|
32
|
+
* body parsed, handed to `rewriteRequestBody`, and re-serialized before forwarding.
|
|
33
|
+
* Every other declared route still proxies byte-for-byte, exactly as before this existed. This
|
|
34
|
+
* module stays engine-neutral about *why* an adapter wants either of these — it only enforces the
|
|
35
|
+
* mechanics (method+path route matching on the decoded path, a body-size cap enforced while the body
|
|
36
|
+
* streams in, a parse failure or a rewriter's own throw answering `400`/`500` instead of forwarding).
|
|
37
|
+
*
|
|
38
|
+
* `mapErrorResponse` (task 2.14 fix round 1, findings-2.14-r1.md item 1; ADR
|
|
39
|
+
* `docs/decisions/2026-09-29-tensorrt-llm-sessions-carry-a-route-policy-to-the-public-server.md`) is the
|
|
40
|
+
* one exception on the response side, and only for errors: a non-2xx answer on a declared POST route
|
|
41
|
+
* is read (up to `MANAGED_GATEWAY_ERROR_BODY_CAP_BYTES`) and answered with whatever OpenAI error the
|
|
42
|
+
* adapter maps it to, so a client talking to `SessionInfo.port` directly gets the same
|
|
43
|
+
* `context_length_exceeded` as one going through `:1337`. A 2xx answer is never read or parsed: it
|
|
44
|
+
* streams through as it arrives, exactly as before.
|
|
45
|
+
*/
|
|
46
|
+
import { createServer } from 'node:http';
|
|
47
|
+
import { randomBytes } from 'node:crypto';
|
|
48
|
+
import { StringDecoder } from 'node:string_decoder';
|
|
49
|
+
import { AtomicCoreError } from '../../contracts/index.js';
|
|
50
|
+
import { hostAndKeyGate } from '../../server/public/index.js';
|
|
51
|
+
import { forwardableHeaders, pipeBody, readBody, relay, relayedHeaders, sendUpstream, sendWhole, } from '../../server/public/index.js';
|
|
52
|
+
import { ManagedRequestRefusal } from './adapter.js';
|
|
53
|
+
/** Hosts accepted as "loopback" for the upstream the gateway proxies to. */
|
|
54
|
+
const LOOPBACK_HOSTS = new Set(['127.0.0.1', 'localhost', '::1', '[::1]']);
|
|
55
|
+
/** The gateway's own listener never binds anywhere else. */
|
|
56
|
+
const GATEWAY_HOST = '127.0.0.1';
|
|
57
|
+
/**
|
|
58
|
+
* `host`, bracketed when it is a bare IPv6 literal — what has to follow `http://` for `new URL` (and
|
|
59
|
+
* everything downstream of it) to parse the address instead of tripping over its colons. `::1` alone
|
|
60
|
+
* would otherwise be read as `host "::1"` with a bogus port after the last colon; `[::1]` already
|
|
61
|
+
* carries its own brackets and is left alone, as is every other accepted loopback spelling.
|
|
62
|
+
*/
|
|
63
|
+
export function bracketIfIpv6(host) {
|
|
64
|
+
return host.includes(':') && !host.startsWith('[') ? `[${host}]` : host;
|
|
65
|
+
}
|
|
66
|
+
/** Upstream connect timeout: generous because the container is local, but requests must not hang forever. */
|
|
67
|
+
const CONNECT_TIMEOUT_MS = 30_000;
|
|
68
|
+
/**
|
|
69
|
+
* The largest request body the rewrite path will read at all. Enforced *while the body streams in*
|
|
70
|
+
* (`readCappedBody`, below), not after it is fully buffered: reading stops the moment the running
|
|
71
|
+
* total crosses the cap, so an oversized body is never held in memory in full just to then be thrown
|
|
72
|
+
* away (findings-2.13-r2.md item 2). A declared route that is not rewritable never goes through this
|
|
73
|
+
* cap at all; it proxies through the same unbounded `readBody` every request used before any of this
|
|
74
|
+
* existed.
|
|
75
|
+
*/
|
|
76
|
+
export const MANAGED_GATEWAY_REWRITE_BODY_CAP_BYTES = 8 * 1024 * 1024;
|
|
77
|
+
/**
|
|
78
|
+
* The largest engine *error* answer `mapErrorResponse` gets to read. An engine error is a short JSON
|
|
79
|
+
* document; one past this is answered with a generic error of the same status instead of being held
|
|
80
|
+
* in memory (findings-2.14-r1.md item 1: bounded, and only ever for non-2xx answers).
|
|
81
|
+
*/
|
|
82
|
+
export const MANAGED_GATEWAY_ERROR_BODY_CAP_BYTES = 1024 * 1024;
|
|
83
|
+
const OPENAI_ERROR_HEADERS = [['content-type', 'application/json']];
|
|
84
|
+
/**
|
|
85
|
+
* An OpenAI-shaped `{"error": {message, type, code}}` body (findings-2.13-r2.md item 5) — the same
|
|
86
|
+
* envelope convention `server/public/errors.ts`'s `structureBackendErrorBody` already uses for
|
|
87
|
+
* llama.cpp/MLX, and `tensorrtLlmAdapter`'s own `context_length_exceeded` mapping, so a client never
|
|
88
|
+
* has to special-case a third error shape for the one gateway that happens to front a container.
|
|
89
|
+
*/
|
|
90
|
+
function sendOpenAIError(res, status, message, type, code) {
|
|
91
|
+
sendWhole(res, status, OPENAI_ERROR_HEADERS, JSON.stringify({ error: { message, type, code } }));
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* `405` for a path this session *does* declare, just not for this method (e.g. `GET
|
|
95
|
+
* /v1/chat/completions` when only `POST` is declared) — never forwarded, same as a `404`
|
|
96
|
+
* (findings-2.13-r3.md item 1). `Allow` lists every method actually declared for this path, per
|
|
97
|
+
* RFC 9110 §15.5.6. `HEAD` is never implied by a declared `GET`: an adapter that wants `HEAD`
|
|
98
|
+
* served declares it as its own route; the default (nothing declares it) lands here too, which is
|
|
99
|
+
* the safe answer for a route with no dedicated `HEAD` handler.
|
|
100
|
+
*/
|
|
101
|
+
function sendMethodNotAllowed(res, allowedMethods) {
|
|
102
|
+
const allow = allowedMethods.join(', ');
|
|
103
|
+
const body = JSON.stringify({
|
|
104
|
+
error: {
|
|
105
|
+
message: `Method not allowed on this route. Allowed: ${allow}.`,
|
|
106
|
+
type: 'invalid_request_error',
|
|
107
|
+
code: 'method_not_allowed',
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
sendWhole(res, 405, [...OPENAI_ERROR_HEADERS, ['allow', allow]], body);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Answers `413` for a body abandoned mid-read (over the rewrite cap) and only *then* — once the
|
|
114
|
+
* response has actually finished writing, via `res.end`'s own callback — destroys the connection.
|
|
115
|
+
* Order matters: destroying it before the response leaves would race the client into seeing a
|
|
116
|
+
* truncated response as a bare socket error instead of a clean `413` (this raced and failed exactly
|
|
117
|
+
* that way during development, when the destroy happened immediately instead of after the write).
|
|
118
|
+
* `req.destroy()` here is a deliberate, explicit call for a real `IncomingMessage`, even though
|
|
119
|
+
* `readCappedBody`'s own early `return` already tore down that same stream as a side effect of
|
|
120
|
+
* leaving its `for await` loop (see that function's own comment) — destroying an already-destroyed
|
|
121
|
+
* stream is a harmless no-op, and this call stays correct even for a hypothetical future `source`
|
|
122
|
+
* that is not a Node stream and so has no such side effect.
|
|
123
|
+
*
|
|
124
|
+
* Known, accepted limit (findings-2.13-r2.md item 2 / findings-2.13-r3.md item 5): a client that is
|
|
125
|
+
* still *actively writing* past the cap when the connection closes may never see this `413` body at
|
|
126
|
+
* all — it can observe a bare transport error instead (`EPIPE`/`ECONNRESET`), because closing a
|
|
127
|
+
* socket that still has unread bytes queued on it can make the OS send a reset instead of a clean
|
|
128
|
+
* close. This is not fixable from here (it is how TCP itself behaves, not a Node or gateway quirk),
|
|
129
|
+
* and is the same trade-off any server rejecting an oversized body mid-stream makes: protecting this
|
|
130
|
+
* process's memory against an oversized or runaway sender wins over guaranteeing that sender a
|
|
131
|
+
* pretty error message. A client that sends its body in one normal `write`-then-`end` (every real
|
|
132
|
+
* OpenAI client) sees the `413` cleanly, as `gateway.test.ts` covers.
|
|
133
|
+
*/
|
|
134
|
+
function sendTooLargeAndClose(req, res) {
|
|
135
|
+
const body = JSON.stringify({
|
|
136
|
+
error: {
|
|
137
|
+
message: 'Request body exceeds the maximum size accepted here.',
|
|
138
|
+
type: 'invalid_request_error',
|
|
139
|
+
code: 'request_too_large',
|
|
140
|
+
},
|
|
141
|
+
});
|
|
142
|
+
res.writeHead(413, [...OPENAI_ERROR_HEADERS, ['connection', 'close']].flat());
|
|
143
|
+
res.end(body, () => {
|
|
144
|
+
req.destroy();
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
/** The request path, with no query string — what a route is matched and rewritten on. */
|
|
148
|
+
function routeOf(url) {
|
|
149
|
+
if (url === undefined)
|
|
150
|
+
return '/';
|
|
151
|
+
const qIndex = url.indexOf('?');
|
|
152
|
+
return qIndex === -1 ? url : url.slice(0, qIndex);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Percent-decodes a route path for matching against `options.routes`, refusing to do so at all when
|
|
156
|
+
* that would be ambiguous. An encoded slash (`%2f`/`%2F`) decoding into a literal `/` is the classic
|
|
157
|
+
* path-confusion trick — two request paths that look different before decoding could otherwise land
|
|
158
|
+
* on the same declared route, or a path that looks like it climbs into an unrelated route once
|
|
159
|
+
* decoded — so its mere presence makes the whole path unmatchable (`null`, which equals no entry in
|
|
160
|
+
* `routes`, so it always 404s) rather than trying to reason about which reading is "the real one".
|
|
161
|
+
* Malformed percent-encoding that `decodeURIComponent` itself rejects does the same.
|
|
162
|
+
*/
|
|
163
|
+
function decodedRoute(rawPath) {
|
|
164
|
+
if (/%2f/i.test(rawPath))
|
|
165
|
+
return null;
|
|
166
|
+
try {
|
|
167
|
+
return decodeURIComponent(rawPath);
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Reads a body up to `capBytes` from any chunked async source (an `IncomingMessage` satisfies
|
|
175
|
+
* `AsyncIterable<Buffer>` on its own), counting while chunks arrive. The moment the running total
|
|
176
|
+
* would exceed the cap, reading stops immediately — the source is never asked for another chunk,
|
|
177
|
+
* and nothing past the cap is ever buffered — and `'too-large'` comes back instead of a `Buffer`
|
|
178
|
+
* (findings-2.13-r2.md item 2: exported, and typed against the generic interface rather than
|
|
179
|
+
* `IncomingMessage` specifically, so this exact claim — stops pulling before the cap, not after —
|
|
180
|
+
* has a direct unit test against a source that never ends, instead of only an HTTP-level test whose
|
|
181
|
+
* client would have to keep sending past a connection the server has already closed, which is an
|
|
182
|
+
* inherently racy thing to assert on at the TCP level).
|
|
183
|
+
*
|
|
184
|
+
* That early `return` is not as passive as it looks (findings-2.13-r3.md item 4): exiting a `for
|
|
185
|
+
* await...of` loop before it runs to completion — by `return`, `break` or an uncaught throw — makes
|
|
186
|
+
* the language call the async iterator's own `.return()`, and for a Node.js `Readable` (which is
|
|
187
|
+
* what a real `IncomingMessage` is), that already tears the stream down as a side effect, before
|
|
188
|
+
* this function's caller ever gets a chance to decide anything. So for the real gateway path, the
|
|
189
|
+
* connection's read side is already gone by the time `readCappedBody` returns `'too-large'` — this
|
|
190
|
+
* function does not *decide* to leave the connection alone, the language leaves it no choice in the
|
|
191
|
+
* matter. (This has no such effect on a `source` that is not backed by a Node stream — an async
|
|
192
|
+
* generator, say, as this file's own unit test for this function uses — where "stop iterating" truly
|
|
193
|
+
* is just that.) `sendTooLargeAndClose` still calls `req.destroy()` itself explicitly, both because
|
|
194
|
+
* destroying an already-destroyed stream is a harmless no-op and because relying on this implicit
|
|
195
|
+
* side effect would silently stop working for a source that is not a plain Node stream.
|
|
196
|
+
*/
|
|
197
|
+
export async function readCappedBody(source, capBytes) {
|
|
198
|
+
const chunks = [];
|
|
199
|
+
let total = 0;
|
|
200
|
+
for await (const chunk of source) {
|
|
201
|
+
total += chunk.length;
|
|
202
|
+
if (total > capBytes)
|
|
203
|
+
return 'too-large';
|
|
204
|
+
chunks.push(chunk);
|
|
205
|
+
}
|
|
206
|
+
return Buffer.concat(chunks);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* A fresh, unguessable session key: 256 bits of `crypto.randomBytes`, base64url so it fits a Bearer
|
|
210
|
+
* header verbatim. Call this once per generation — a reload gets a new key, so a caller holding the
|
|
211
|
+
* previous one is refused (`SESSION_GENERATION_STALE` at the session layer; here, plain 401).
|
|
212
|
+
*/
|
|
213
|
+
export function generateGatewayKey() {
|
|
214
|
+
return randomBytes(32).toString('base64url');
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Sends `body` (already fully read) to the upstream and relays its answer back unmodified,
|
|
218
|
+
* streamed or not. Shared by the rewritten and the byte-for-byte paths — everything from here down
|
|
219
|
+
* has never cared, and still does not care, which one a request came through.
|
|
220
|
+
*/
|
|
221
|
+
async function sendBodyToUpstream(req, res, upstream, body, mapError, responseRewrite = null, streamFailure) {
|
|
222
|
+
// A client that disconnects before the upstream has even answered must not leave that connect
|
|
223
|
+
// attempt, or a slow-to-respond container, running unattended.
|
|
224
|
+
const controller = new AbortController();
|
|
225
|
+
const onEarlyClose = () => controller.abort();
|
|
226
|
+
res.once('close', onEarlyClose);
|
|
227
|
+
let upstreamResponse;
|
|
228
|
+
try {
|
|
229
|
+
const origin = `http://${bracketIfIpv6(upstream.host)}:${upstream.port}`;
|
|
230
|
+
upstreamResponse = await sendUpstream(`${origin}${req.url ?? '/'}`, {
|
|
231
|
+
method: req.method ?? 'GET',
|
|
232
|
+
// The client's own auth headers are this gateway's secret, not the container's; they stop here.
|
|
233
|
+
headers: forwardableHeaders(req, ['authorization', 'x-api-key']),
|
|
234
|
+
...(body.length > 0 ? { body } : {}),
|
|
235
|
+
connectTimeoutMs: CONNECT_TIMEOUT_MS,
|
|
236
|
+
signal: controller.signal,
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
res.off('close', onEarlyClose);
|
|
241
|
+
if (!res.headersSent && !res.destroyed)
|
|
242
|
+
sendWhole(res, 502, [], 'Bad Gateway');
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
res.off('close', onEarlyClose);
|
|
246
|
+
const status = upstreamResponse.status;
|
|
247
|
+
if (mapError !== undefined && (status < 200 || status > 299)) {
|
|
248
|
+
await answerEngineError(res, upstreamResponse, mapError);
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
if (status >= 200 && status <= 299 && isEventStream(upstreamResponse)) {
|
|
252
|
+
res.writeHead(upstreamResponse.status, relayedHeaders(upstreamResponse, []).flat());
|
|
253
|
+
await pipeBody(res, guardedEventStream(upstreamResponse.body, responseRewrite, streamFailure), () => upstreamResponse.body.destroy());
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
if (responseRewrite !== null && status >= 200 && status <= 299) {
|
|
257
|
+
await relayRewritten(res, upstreamResponse, responseRewrite);
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
// `relay` owns the rest: it writes the status/headers, pipes the body with backpressure, and
|
|
261
|
+
// tears the upstream connection down itself if the client disconnects mid-stream.
|
|
262
|
+
await relay(res, upstreamResponse, []);
|
|
263
|
+
}
|
|
264
|
+
/** A JSON text rewritten by `rewrite`, or the text itself when it is not a JSON object. */
|
|
265
|
+
function rewriteJsonText(text, rewrite) {
|
|
266
|
+
try {
|
|
267
|
+
const parsed = JSON.parse(text);
|
|
268
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
269
|
+
return text;
|
|
270
|
+
return JSON.stringify(rewrite(parsed));
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
return text;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
function isEventStream(upstream) {
|
|
277
|
+
const type = upstream.headers.find(([name]) => name.toLowerCase() === 'content-type')?.[1] ?? '';
|
|
278
|
+
return type.toLowerCase().includes('text/event-stream');
|
|
279
|
+
}
|
|
280
|
+
/** What a client reads when the engine ends a stream without finishing it and says nothing better. */
|
|
281
|
+
export const MANAGED_STREAM_CUT_MESSAGE = 'The engine stopped the answer before finishing it.';
|
|
282
|
+
/**
|
|
283
|
+
* Each complete SSE line of a 2xx stream, `data:` JSON events through `rewrite` when there is one,
|
|
284
|
+
* everything else verbatim — and an end the client can tell from a finished answer: a stream that
|
|
285
|
+
* breaks off or closes without `data: [DONE]` gets an OpenAI error event (`streamFailure`'s words,
|
|
286
|
+
* else {@link MANAGED_STREAM_CUT_MESSAGE}) and then `[DONE]`. Without it an engine that failed a
|
|
287
|
+
* request after `200 OK` (TensorRT-LLM's `RequestError` when the KV cache cannot hold it) reached the
|
|
288
|
+
* client as a clean, empty answer: `pipeBody` swallows an upstream failure mid-stream.
|
|
289
|
+
*/
|
|
290
|
+
async function* guardedEventStream(source, rewrite, streamFailure) {
|
|
291
|
+
// A multi-byte character can straddle two chunks; the decoder holds its first bytes back.
|
|
292
|
+
const decoder = new StringDecoder('utf8');
|
|
293
|
+
let pending = '';
|
|
294
|
+
let done = false;
|
|
295
|
+
const line = (raw) => {
|
|
296
|
+
const match = /^data:\s?(.*)$/.exec(raw.replace(/\r$/, ''));
|
|
297
|
+
if (match === null)
|
|
298
|
+
return raw;
|
|
299
|
+
const payload = match[1].trim();
|
|
300
|
+
if (payload === '[DONE]')
|
|
301
|
+
done = true;
|
|
302
|
+
if (payload === '' || payload === '[DONE]' || rewrite === null)
|
|
303
|
+
return raw;
|
|
304
|
+
return `data: ${rewriteJsonText(payload, rewrite)}`;
|
|
305
|
+
};
|
|
306
|
+
try {
|
|
307
|
+
for await (const chunk of source) {
|
|
308
|
+
pending += typeof chunk === 'string' ? chunk : decoder.write(chunk);
|
|
309
|
+
const lines = pending.split('\n');
|
|
310
|
+
pending = lines.pop();
|
|
311
|
+
if (lines.length > 0)
|
|
312
|
+
yield `${lines.map(line).join('\n')}\n`;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
catch {
|
|
316
|
+
// The upstream broke off mid-stream; what follows tells the client so.
|
|
317
|
+
}
|
|
318
|
+
pending += decoder.end();
|
|
319
|
+
if (pending !== '')
|
|
320
|
+
yield `${line(pending)}\n`;
|
|
321
|
+
if (done)
|
|
322
|
+
return;
|
|
323
|
+
const message = (await streamFailure?.().catch(() => null)) ?? MANAGED_STREAM_CUT_MESSAGE;
|
|
324
|
+
const error = { error: { message, type: 'server_error', code: 'stream_interrupted' } };
|
|
325
|
+
yield `\ndata: ${JSON.stringify(error)}\n\ndata: [DONE]\n\n`;
|
|
326
|
+
}
|
|
327
|
+
/** A 2xx JSON answer through `rewrite`, as a whole (event streams go through `guardedEventStream`). */
|
|
328
|
+
async function relayRewritten(res, upstream, rewrite) {
|
|
329
|
+
const whole = await readCappedBody(upstream.body, MANAGED_GATEWAY_REWRITE_BODY_CAP_BYTES * 64).catch(() => null);
|
|
330
|
+
if (whole === null || whole === 'too-large') {
|
|
331
|
+
if (!res.headersSent && !res.destroyed)
|
|
332
|
+
sendWhole(res, 502, [], 'Bad Gateway');
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
sendWhole(res, upstream.status, relayedHeaders(upstream, []), rewriteJsonText(whole.toString('utf8'), rewrite));
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* An engine's error answer, read under `MANAGED_GATEWAY_ERROR_BODY_CAP_BYTES`: the adapter's mapped
|
|
339
|
+
* OpenAI error when it has one, otherwise the engine's own answer (status, headers, bytes) as it was.
|
|
340
|
+
* A client that leaves while the body is still arriving tears the engine connection down with it
|
|
341
|
+
* (final review M-4): an engine stalled mid-error would otherwise hold that socket forever. An
|
|
342
|
+
* answer that cannot be relayed keeps the engine's status, labelled a client error for a `4xx`.
|
|
343
|
+
*/
|
|
344
|
+
async function answerEngineError(res, upstream, mapError) {
|
|
345
|
+
const onClientGone = () => upstream.body.destroy();
|
|
346
|
+
res.once('close', onClientGone);
|
|
347
|
+
let capped;
|
|
348
|
+
try {
|
|
349
|
+
capped = res.destroyed
|
|
350
|
+
? null
|
|
351
|
+
: await readCappedBody(upstream.body, MANAGED_GATEWAY_ERROR_BODY_CAP_BYTES).catch(() => null);
|
|
352
|
+
}
|
|
353
|
+
finally {
|
|
354
|
+
res.off('close', onClientGone);
|
|
355
|
+
}
|
|
356
|
+
if (res.destroyed) {
|
|
357
|
+
upstream.body.destroy();
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
if (capped === null || capped === 'too-large') {
|
|
361
|
+
upstream.body.destroy();
|
|
362
|
+
const clientError = upstream.status >= 400 && upstream.status < 500;
|
|
363
|
+
sendOpenAIError(res, upstream.status, 'The engine answered with an error that could not be relayed.', clientError ? 'invalid_request_error' : 'server_error', 'upstream_error');
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
const mapped = mapError(upstream.status, capped.toString('utf8'));
|
|
367
|
+
if (mapped !== null) {
|
|
368
|
+
sendWhole(res, upstream.status, OPENAI_ERROR_HEADERS, JSON.stringify(mapped));
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
sendWhole(res, upstream.status, relayedHeaders(upstream, []), capped);
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Reads the client's body under the rewrite cap, parses it as JSON, hands it to `rewriteRequestBody`
|
|
375
|
+
* and re-serializes the result — or answers `413`/`400`/`500` itself and returns `null`, meaning the
|
|
376
|
+
* caller must not proceed to the upstream at all. `sendUpstream` derives `Content-Length` from
|
|
377
|
+
* whatever buffer it is actually given, so a body that grew or shrank under rewriting is never sent
|
|
378
|
+
* with the client's original, now-stale length (and never as `Transfer-Encoding: chunked`, whatever
|
|
379
|
+
* the client itself sent it as — the whole point of reading it here first).
|
|
380
|
+
*/
|
|
381
|
+
async function readAndRewriteBody(req, res, route, rewriteRequestBody) {
|
|
382
|
+
const capped = await readCappedBody(req, MANAGED_GATEWAY_REWRITE_BODY_CAP_BYTES);
|
|
383
|
+
if (capped === 'too-large') {
|
|
384
|
+
sendTooLargeAndClose(req, res);
|
|
385
|
+
return null;
|
|
386
|
+
}
|
|
387
|
+
if (capped.length === 0)
|
|
388
|
+
return capped;
|
|
389
|
+
let parsed;
|
|
390
|
+
try {
|
|
391
|
+
parsed = JSON.parse(capped.toString('utf8'));
|
|
392
|
+
}
|
|
393
|
+
catch {
|
|
394
|
+
sendOpenAIError(res, 400, 'Request body is not valid JSON.', 'invalid_request_error', 'invalid_json');
|
|
395
|
+
return null;
|
|
396
|
+
}
|
|
397
|
+
let rewritten;
|
|
398
|
+
try {
|
|
399
|
+
rewritten = rewriteRequestBody(route, parsed);
|
|
400
|
+
}
|
|
401
|
+
catch (error) {
|
|
402
|
+
// Only a validation error — the adapter rejecting something the *client* sent — is safe to
|
|
403
|
+
// surface verbatim as a 400: its message was written to be read by that client. Anything else
|
|
404
|
+
// (a bug in the adapter's own rewrite logic, for instance) becomes a generic 500 instead of
|
|
405
|
+
// leaking an internal error message to the client; the detail still goes to this process's own
|
|
406
|
+
// log, since this module has no injected logger of its own to hand it to (findings-2.13-r3.md
|
|
407
|
+
// item 3).
|
|
408
|
+
if (error instanceof ManagedRequestRefusal) {
|
|
409
|
+
sendOpenAIError(res, 400, error.message, 'invalid_request_error', error.openaiCode);
|
|
410
|
+
}
|
|
411
|
+
else if (error instanceof AtomicCoreError && error.code === 'INVALID_ARGUMENT') {
|
|
412
|
+
sendOpenAIError(res, 400, error.message, 'invalid_request_error', 'invalid_request_error');
|
|
413
|
+
}
|
|
414
|
+
else {
|
|
415
|
+
console.error('managed-text gateway: rewriteRequestBody threw an unexpected error:', error);
|
|
416
|
+
sendOpenAIError(res, 500, 'The request could not be processed.', 'server_error', 'internal_error');
|
|
417
|
+
}
|
|
418
|
+
return null;
|
|
419
|
+
}
|
|
420
|
+
return Buffer.from(JSON.stringify(rewritten), 'utf8');
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Matches the request against `options.routes`, method and path together (findings-2.13-r3.md item
|
|
424
|
+
* 1): no declared route for this path at all is `404`; the path is declared, just not for this
|
|
425
|
+
* method, is `405` with an `Allow` header. Neither is ever forwarded, and neither reads the body.
|
|
426
|
+
* Otherwise, either rewrites the body (a declared, rewritable route, `rewriteRequestBody`
|
|
427
|
+
* configured) or proxies it through untouched — the same byte-for-byte path every request took
|
|
428
|
+
* before rewriting existed at all, still used for every other route.
|
|
429
|
+
*/
|
|
430
|
+
async function proxyToUpstream(req, res, options) {
|
|
431
|
+
const path = decodedRoute(routeOf(req.url));
|
|
432
|
+
const method = req.method ?? 'GET';
|
|
433
|
+
const declaredForPath = path === null ? [] : options.routes.filter((r) => r.path === path);
|
|
434
|
+
if (path === null || declaredForPath.length === 0) {
|
|
435
|
+
sendOpenAIError(res, 404, 'No route on this session matches this request.', 'invalid_request_error', 'not_found');
|
|
436
|
+
return;
|
|
437
|
+
}
|
|
438
|
+
if (!declaredForPath.some((r) => r.method === method)) {
|
|
439
|
+
sendMethodNotAllowed(res, declaredForPath.map((r) => r.method));
|
|
440
|
+
return;
|
|
441
|
+
}
|
|
442
|
+
const route = path;
|
|
443
|
+
const rewriteRequestBody = options.rewriteRequestBody;
|
|
444
|
+
const rewritable = rewriteRequestBody !== undefined &&
|
|
445
|
+
(options.rewritableRoutes ?? []).some((r) => r.method === method && r.path === route);
|
|
446
|
+
let body;
|
|
447
|
+
if (rewritable) {
|
|
448
|
+
const rewritten = await readAndRewriteBody(req, res, route, rewriteRequestBody);
|
|
449
|
+
if (rewritten === null)
|
|
450
|
+
return; // readAndRewriteBody already answered the client.
|
|
451
|
+
body = rewritten;
|
|
452
|
+
}
|
|
453
|
+
else {
|
|
454
|
+
try {
|
|
455
|
+
body = await readBody(req);
|
|
456
|
+
}
|
|
457
|
+
catch {
|
|
458
|
+
if (!res.headersSent)
|
|
459
|
+
sendOpenAIError(res, 400, 'Failed to read the request body.', 'invalid_request_error', 'invalid_request_error');
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
// Only a declared POST route's error answer is ever read: that is where an engine reports what a
|
|
464
|
+
// client sent it (a prompt past the context), and where a client expects an OpenAI error back.
|
|
465
|
+
const mapErrorResponse = options.mapErrorResponse;
|
|
466
|
+
const mapError = mapErrorResponse !== undefined && method === 'POST'
|
|
467
|
+
? (status, text) => mapErrorResponse(route, status, text)
|
|
468
|
+
: undefined;
|
|
469
|
+
// A response rewrite is chosen from the request the engine actually gets (rewritable routes only).
|
|
470
|
+
let responseRewrite = null;
|
|
471
|
+
if (rewritable && options.rewriteResponseFor !== undefined && body.length > 0) {
|
|
472
|
+
try {
|
|
473
|
+
responseRewrite = options.rewriteResponseFor(route, JSON.parse(body.toString('utf8')));
|
|
474
|
+
}
|
|
475
|
+
catch {
|
|
476
|
+
responseRewrite = null;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
await sendBodyToUpstream(req, res, options.upstream, body, mapError, responseRewrite, options.streamFailure);
|
|
480
|
+
}
|
|
481
|
+
function assertLoopback(host) {
|
|
482
|
+
if (!LOOPBACK_HOSTS.has(host.toLowerCase())) {
|
|
483
|
+
throw new AtomicCoreError('INVALID_ARGUMENT', 'Managed session gateway upstream must be loopback.', `got host "${host}"`);
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* `trtllm-serve` checks no key of its own — this gateway is the *only* thing standing between the
|
|
488
|
+
* container's port and anything on the machine (or, via DNS rebinding, a web page). `hostAndKeyGate`
|
|
489
|
+
* treats an empty `apiKey` as "auth disabled", which is the right default for `:1337` (a user opted
|
|
490
|
+
* out in Settings) but is never correct here: nobody can opt a managed session out of its own only
|
|
491
|
+
* guard. A caller starting one without a key is a bug, not a configuration choice, so it fails loud.
|
|
492
|
+
*/
|
|
493
|
+
function assertApiKeyPresent(apiKey) {
|
|
494
|
+
if (apiKey === '') {
|
|
495
|
+
throw new AtomicCoreError('INVALID_ARGUMENT', 'Managed session gateway requires a non-empty api key: it is the only auth in front of an ' +
|
|
496
|
+
'engine that checks none of its own.');
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
/**
|
|
500
|
+
* Start a gateway for one managed session: binds `127.0.0.1:0`, gates every request on the Host and
|
|
501
|
+
* Bearer checks, and streams whatever passes through to `options.upstream`.
|
|
502
|
+
*/
|
|
503
|
+
export async function startManagedGateway(options) {
|
|
504
|
+
assertLoopback(options.upstream.host);
|
|
505
|
+
assertApiKeyPresent(options.apiKey);
|
|
506
|
+
const gateConfig = { apiKey: options.apiKey, trustedHosts: options.allowedHosts };
|
|
507
|
+
const server = createServer({ requireHostHeader: false }, (req, res) => {
|
|
508
|
+
const refused = hostAndKeyGate(req, gateConfig);
|
|
509
|
+
if (refused) {
|
|
510
|
+
sendWhole(res, refused.status, [], refused.body);
|
|
511
|
+
return;
|
|
512
|
+
}
|
|
513
|
+
proxyToUpstream(req, res, options).catch(() => {
|
|
514
|
+
if (!res.headersSent && !res.destroyed)
|
|
515
|
+
sendWhole(res, 502, [], 'Bad Gateway');
|
|
516
|
+
else
|
|
517
|
+
res.destroy();
|
|
518
|
+
});
|
|
519
|
+
});
|
|
520
|
+
await new Promise((resolve, reject) => {
|
|
521
|
+
server.once('error', reject);
|
|
522
|
+
server.listen(0, GATEWAY_HOST, () => resolve());
|
|
523
|
+
});
|
|
524
|
+
const address = server.address();
|
|
525
|
+
const port = typeof address === 'object' && address !== null ? address.port : 0;
|
|
526
|
+
return {
|
|
527
|
+
host: GATEWAY_HOST,
|
|
528
|
+
port,
|
|
529
|
+
close: () => new Promise((resolve) => {
|
|
530
|
+
server.closeAllConnections?.();
|
|
531
|
+
server.close(() => resolve());
|
|
532
|
+
}),
|
|
533
|
+
};
|
|
534
|
+
}
|
|
535
|
+
//# sourceMappingURL=gateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../src/runtime/managed-text/gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** In the names both engines' sampling parameters use. */
|
|
2
|
+
export interface GenerationDefaults {
|
|
3
|
+
temperature?: number;
|
|
4
|
+
top_p?: number;
|
|
5
|
+
top_k?: number;
|
|
6
|
+
min_p?: number;
|
|
7
|
+
repetition_penalty?: number;
|
|
8
|
+
}
|
|
9
|
+
/** The stored key of each default, by its sampling-parameter name. */
|
|
10
|
+
export declare const GENERATION_DEFAULT_KEYS: {
|
|
11
|
+
readonly temperature: "default_temperature";
|
|
12
|
+
readonly top_p: "default_top_p";
|
|
13
|
+
readonly top_k: "default_top_k";
|
|
14
|
+
readonly min_p: "default_min_p";
|
|
15
|
+
readonly repetition_penalty: "default_repetition_penalty";
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* The defaults `raw` sets, validated; `INVALID_ARGUMENT` for one out of range. `raw` holds the stored
|
|
19
|
+
* keys (`default_temperature`, …); a value may be a number or its text, `''`/`null` is not set.
|
|
20
|
+
*/
|
|
21
|
+
export declare function readGenerationDefaults(provider: string, raw: Record<string, unknown>): GenerationDefaults;
|
|
22
|
+
/** `body` with every default it does not set itself. */
|
|
23
|
+
export declare function withGenerationDefaults(body: Record<string, unknown>, defaults: GenerationDefaults): Record<string, unknown>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sampling defaults a managed provider applies to a request that sets none (change
|
|
3
|
+
* `add-vllm-runtime`, owner's decision after the live run): the settings `default_temperature`,
|
|
4
|
+
* `default_top_p`, `default_top_k`, `default_min_p` and `default_repetition_penalty`, read once for
|
|
5
|
+
* every engine. vLLM receives them in `--override-generation-config`; TensorRT-LLM, which has no such
|
|
6
|
+
* launch option, gets them from the session gateway, written into a request that names none. `''`
|
|
7
|
+
* (or nothing stored) is "not set" — the model's own default stands; a request's own value always wins.
|
|
8
|
+
*/
|
|
9
|
+
import { AtomicCoreError } from '../../contracts/index.js';
|
|
10
|
+
/** The stored key of each default, by its sampling-parameter name. */
|
|
11
|
+
export const GENERATION_DEFAULT_KEYS = {
|
|
12
|
+
temperature: 'default_temperature',
|
|
13
|
+
top_p: 'default_top_p',
|
|
14
|
+
top_k: 'default_top_k',
|
|
15
|
+
min_p: 'default_min_p',
|
|
16
|
+
repetition_penalty: 'default_repetition_penalty',
|
|
17
|
+
};
|
|
18
|
+
/** The bounds both engines accept (vLLM's `SamplingParams._verify_args`; TRT-LLM's are looser). */
|
|
19
|
+
const RULES = {
|
|
20
|
+
temperature: { valid: (n) => n >= 0 && n <= 2, range: 'a number from 0 to 2' },
|
|
21
|
+
top_p: { valid: (n) => n > 0 && n <= 1, range: 'a number above 0 and up to 1' },
|
|
22
|
+
top_k: { valid: (n) => Number.isInteger(n) && n >= -1 && n <= 1_000_000, range: 'a whole number from -1' },
|
|
23
|
+
min_p: { valid: (n) => n >= 0 && n <= 1, range: 'a number from 0 to 1' },
|
|
24
|
+
repetition_penalty: { valid: (n) => n > 0 && n <= 10, range: 'a number above 0 and up to 10' },
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* The defaults `raw` sets, validated; `INVALID_ARGUMENT` for one out of range. `raw` holds the stored
|
|
28
|
+
* keys (`default_temperature`, …); a value may be a number or its text, `''`/`null` is not set.
|
|
29
|
+
*/
|
|
30
|
+
export function readGenerationDefaults(provider, raw) {
|
|
31
|
+
const defaults = {};
|
|
32
|
+
for (const [name, key] of Object.entries(GENERATION_DEFAULT_KEYS)) {
|
|
33
|
+
const value = raw[key];
|
|
34
|
+
if (value === undefined || value === null)
|
|
35
|
+
continue;
|
|
36
|
+
if (typeof value === 'string' && value.trim() === '')
|
|
37
|
+
continue;
|
|
38
|
+
const number = typeof value === 'string' ? Number(value) : value;
|
|
39
|
+
if (typeof number !== 'number' || !Number.isFinite(number) || !RULES[name].valid(number)) {
|
|
40
|
+
throw new AtomicCoreError('INVALID_ARGUMENT', `${provider} setting ${key} must be ${RULES[name].range}.`, `${key}=${JSON.stringify(value)}`);
|
|
41
|
+
}
|
|
42
|
+
defaults[name] = number;
|
|
43
|
+
}
|
|
44
|
+
return defaults;
|
|
45
|
+
}
|
|
46
|
+
/** `body` with every default it does not set itself. */
|
|
47
|
+
export function withGenerationDefaults(body, defaults) {
|
|
48
|
+
const missing = Object.entries(defaults).filter(([name]) => body[name] === undefined || body[name] === null);
|
|
49
|
+
return missing.length === 0 ? body : { ...body, ...Object.fromEntries(missing) };
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=generation-defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generation-defaults.js","sourceRoot":"","sources":["../../../src/runtime/managed-text/generation-defaults.ts"],"names":[],"mappings":"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"}
|