@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
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Image generation: one route per operation of the app's `DiffusionService`, in its camelCase
|
|
3
3
|
* (ADR 2026-09-17-diffusion-speaks-the-apps-camelcase-and-error-codes-verbatim). File-system paths
|
|
4
4
|
* travel in bodies, never in the URL. Lists and lookups that may be empty are wrapped
|
|
5
|
-
* (`{
|
|
5
|
+
* (`{files}`, `{job}`, `{item}`) so a `null` never stands alone as a body.
|
|
6
6
|
*/
|
|
7
|
-
import { parseDiffusionConfig,
|
|
7
|
+
import { parseDiffusionConfig, parseGalleryFlags, parseGalleryListOptions, parseImageGenerateRequest, parseLoadModelRequest, requireString, requireStringList, } from '../../../diffusion/index.js';
|
|
8
8
|
import { queryOf, readJsonBody, sendJson } from '../../http.js';
|
|
9
9
|
/** A generation request may carry a source image, a mask and references inline as base64. */
|
|
10
10
|
export const MAX_GENERATE_BODY_BYTES = 64 * 1024 * 1024;
|
|
@@ -27,13 +27,8 @@ export function registerDiffusionRoutes(router, deps, ctx) {
|
|
|
27
27
|
router.put(p('/diffusion/config'), async (req, res) => sendJson(res, 200, await diffusion.configure(parseDiffusionConfig(await readJsonBody(req)))));
|
|
28
28
|
router.get(p('/diffusion/status'), async (_req, res) => sendJson(res, 200, await diffusion.getStatus()));
|
|
29
29
|
router.put(p('/diffusion/output-dir'), async (req, res) => sendJson(res, 200, await diffusion.setOutputDir(requireString(await readJsonBody(req), 'path'))));
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
-
router.get(p('/diffusion/backends'), async (_req, res) => sendJson(res, 200, { backends: await diffusion.listInstalledBackends() }));
|
|
33
|
-
router.post(p('/diffusion/backends/remove'), async (req, res) => {
|
|
34
|
-
await diffusion.removeBackend(requireString(await readJsonBody(req), 'dir'));
|
|
35
|
-
sendJson(res, 200, {});
|
|
36
|
-
});
|
|
30
|
+
// The engine binary is installed, listed and removed through `/engine-builds/sd-cpp/…`
|
|
31
|
+
// (change `move-sdcpp-mlx-install-to-core`); `finalize` is gone with the app's own installer.
|
|
37
32
|
// --- model files -----------------------------------------------------------------------------
|
|
38
33
|
router.get(p('/diffusion/model-files'), async (_req, res) => sendJson(res, 200, { files: await diffusion.listModelFiles() }));
|
|
39
34
|
router.post(p('/diffusion/model-files/delete'), async (req, res) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diffusion.js","sourceRoot":"","sources":["../../../../src/server/control/routes/diffusion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"diffusion.js","sourceRoot":"","sources":["../../../../src/server/control/routes/diffusion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The embedding model: status, configuration, load and unload, and one request to the running model
|
|
3
|
+
* (ADR 2026-10-07-embedding-models-are-their-own-core-module). Bodies are snake_case like
|
|
4
|
+
* `settings.json`. `embed` takes a `/v1/embeddings` body (its `model` is replaced by the running
|
|
5
|
+
* model's) and answers `{status, body}`: the engine's own answer, an error envelope included.
|
|
6
|
+
*/
|
|
7
|
+
import type { Router } from '../../http.js';
|
|
8
|
+
import type { ControlRouteContext, ControlServerDeps } from '../types.js';
|
|
9
|
+
export declare function registerEmbeddingRoutes(router: Router, deps: ControlServerDeps, ctx: ControlRouteContext): void;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The embedding model: status, configuration, load and unload, and one request to the running model
|
|
3
|
+
* (ADR 2026-10-07-embedding-models-are-their-own-core-module). Bodies are snake_case like
|
|
4
|
+
* `settings.json`. `embed` takes a `/v1/embeddings` body (its `model` is replaced by the running
|
|
5
|
+
* model's) and answers `{status, body}`: the engine's own answer, an error envelope included.
|
|
6
|
+
*/
|
|
7
|
+
import { AtomicCoreError } from '../../../contracts/index.js';
|
|
8
|
+
import { readJsonBody, sendJson } from '../../http.js';
|
|
9
|
+
function control(deps) {
|
|
10
|
+
if (!deps.embedding)
|
|
11
|
+
throw new AtomicCoreError('EMBEDDING_UNAVAILABLE', 'The embedding model is not available in this core.');
|
|
12
|
+
return deps.embedding;
|
|
13
|
+
}
|
|
14
|
+
async function objectBody(req, what) {
|
|
15
|
+
const body = await readJsonBody(req);
|
|
16
|
+
if (typeof body !== 'object' || body === null || Array.isArray(body))
|
|
17
|
+
throw new AtomicCoreError('INVALID_ARGUMENT', `The ${what} must be a JSON object.`);
|
|
18
|
+
return body;
|
|
19
|
+
}
|
|
20
|
+
export function registerEmbeddingRoutes(router, deps, ctx) {
|
|
21
|
+
const { p } = ctx;
|
|
22
|
+
const configAnswer = (embedding) => ({
|
|
23
|
+
config: embedding.config(),
|
|
24
|
+
status: embedding.status(),
|
|
25
|
+
});
|
|
26
|
+
router.get(p('/embedding/status'), async (_req, res) => sendJson(res, 200, control(deps).status()));
|
|
27
|
+
router.get(p('/embedding/config'), async (_req, res) => sendJson(res, 200, configAnswer(control(deps))));
|
|
28
|
+
router.put(p('/embedding/config'), async (req, res) => {
|
|
29
|
+
const embedding = control(deps);
|
|
30
|
+
await embedding.configure(await objectBody(req, 'embedding settings'));
|
|
31
|
+
sendJson(res, 200, configAnswer(embedding));
|
|
32
|
+
});
|
|
33
|
+
router.post(p('/embedding/load'), async (_req, res) => sendJson(res, 200, await control(deps).load()));
|
|
34
|
+
router.post(p('/embedding/unload'), async (_req, res) => sendJson(res, 200, await control(deps).unload()));
|
|
35
|
+
router.post(p('/embedding/embed'), async (req, res) => {
|
|
36
|
+
const embedding = control(deps);
|
|
37
|
+
const body = await objectBody(req, 'embedding request');
|
|
38
|
+
if (body['input'] === undefined)
|
|
39
|
+
throw new AtomicCoreError('INVALID_ARGUMENT', "The embedding request needs an 'input'.");
|
|
40
|
+
sendJson(res, 200, await embedding.embed(body));
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=embedding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding.js","sourceRoot":"","sources":["../../../../src/server/control/routes/embedding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sd.cpp and MLX builds the core installs itself (openspec change `move-sdcpp-mlx-install-to-core`,
|
|
3
|
+
* spec `engine-builds`, design D1, D2). All of them POST or DELETE: the proxy policy may carry
|
|
4
|
+
* credentials, which never travel in a query string.
|
|
5
|
+
*
|
|
6
|
+
* Bodies are checked here, unknown fields included, as on `/environments`: a field this build would
|
|
7
|
+
* silently ignore means something to the caller and nothing to the core.
|
|
8
|
+
*/
|
|
9
|
+
import type { EngineBuildCatalogRequest, EngineBuildInstallRequest } from '../../../contracts/index.js';
|
|
10
|
+
import type { Router } from '../../http.js';
|
|
11
|
+
import type { ControlRouteContext, ControlServerDeps } from '../types.js';
|
|
12
|
+
export declare function parseEngineBuildReadBody(raw: unknown): EngineBuildCatalogRequest;
|
|
13
|
+
export declare function parseEngineBuildInstallBody(raw: unknown): EngineBuildInstallRequest;
|
|
14
|
+
export declare function registerEngineBuildRoutes(router: Router, deps: ControlServerDeps, ctx: ControlRouteContext): void;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sd.cpp and MLX builds the core installs itself (openspec change `move-sdcpp-mlx-install-to-core`,
|
|
3
|
+
* spec `engine-builds`, design D1, D2). All of them POST or DELETE: the proxy policy may carry
|
|
4
|
+
* credentials, which never travel in a query string.
|
|
5
|
+
*
|
|
6
|
+
* Bodies are checked here, unknown fields included, as on `/environments`: a field this build would
|
|
7
|
+
* silently ignore means something to the caller and nothing to the core.
|
|
8
|
+
*/
|
|
9
|
+
import { AtomicCoreError } from '../../../contracts/index.js';
|
|
10
|
+
import { parseEngineBuildId } from '../../../engine-builds/index.js';
|
|
11
|
+
import { readJsonBody, sendJson } from '../../http.js';
|
|
12
|
+
const invalid = (why, details) => {
|
|
13
|
+
throw new AtomicCoreError('INVALID_ARGUMENT', why, details);
|
|
14
|
+
};
|
|
15
|
+
/** A task id is an event name and a key in the downloader; a path segment is a folder name. */
|
|
16
|
+
const ID_SHAPE = /^[^/\\]{1,200}$/;
|
|
17
|
+
const SEGMENT_SHAPE = /^[A-Za-z0-9._-]{1,200}$/;
|
|
18
|
+
function object(value) {
|
|
19
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
20
|
+
return invalid('The request body must be a JSON object.');
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
function known(body, keys) {
|
|
24
|
+
const extra = Object.keys(body).filter((key) => !keys.includes(key));
|
|
25
|
+
if (extra.length > 0)
|
|
26
|
+
invalid('The request has fields this core does not know.', extra.sort().join(', '));
|
|
27
|
+
}
|
|
28
|
+
function common(body) {
|
|
29
|
+
const { force, proxy } = body;
|
|
30
|
+
if (force !== undefined && typeof force !== 'boolean')
|
|
31
|
+
invalid('force must be a boolean.');
|
|
32
|
+
if (proxy !== undefined && proxy !== null && (typeof proxy !== 'object' || Array.isArray(proxy)))
|
|
33
|
+
invalid('proxy must be an object or null.');
|
|
34
|
+
return {
|
|
35
|
+
...(force !== undefined ? { force: force } : {}),
|
|
36
|
+
...(proxy !== undefined ? { proxy: proxy } : {}),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export function parseEngineBuildReadBody(raw) {
|
|
40
|
+
const body = object(raw);
|
|
41
|
+
known(body, ['force', 'proxy']);
|
|
42
|
+
return common(body);
|
|
43
|
+
}
|
|
44
|
+
export function parseEngineBuildInstallBody(raw) {
|
|
45
|
+
const body = object(raw);
|
|
46
|
+
known(body, ['task_id', 'force', 'proxy']);
|
|
47
|
+
const taskId = body['task_id'];
|
|
48
|
+
if (typeof taskId !== 'string' ||
|
|
49
|
+
!ID_SHAPE.test(taskId) ||
|
|
50
|
+
[...taskId].some((ch) => ch.charCodeAt(0) < 0x20))
|
|
51
|
+
invalid('install needs task_id: the download task its progress and cancel run under.');
|
|
52
|
+
return { task_id: taskId, ...common(body) };
|
|
53
|
+
}
|
|
54
|
+
function segment(value, name) {
|
|
55
|
+
if (value === undefined || !SEGMENT_SHAPE.test(value) || value === '.' || value === '..')
|
|
56
|
+
return invalid(`${name} is not a build identifier.`, value);
|
|
57
|
+
return value;
|
|
58
|
+
}
|
|
59
|
+
export function registerEngineBuildRoutes(router, deps, ctx) {
|
|
60
|
+
const { p } = ctx;
|
|
61
|
+
router.post(p('/engine-builds/:engine/catalog'), async (req, res, { params }) => {
|
|
62
|
+
const engine = parseEngineBuildId(params['engine']);
|
|
63
|
+
sendJson(res, 200, await deps.engineBuilds.catalog(engine, parseEngineBuildReadBody(await readJsonBody(req))));
|
|
64
|
+
});
|
|
65
|
+
router.post(p('/engine-builds/:engine/updates'), async (req, res, { params }) => {
|
|
66
|
+
const engine = parseEngineBuildId(params['engine']);
|
|
67
|
+
sendJson(res, 200, await deps.engineBuilds.checkUpdates(engine, parseEngineBuildReadBody(await readJsonBody(req))));
|
|
68
|
+
});
|
|
69
|
+
// Synchronous like `POST /backends/:p/install` (design D2): progress and cancel go through
|
|
70
|
+
// `download:*` events and `POST /downloads/:task_id/cancel` under the caller's task id.
|
|
71
|
+
router.post(p('/engine-builds/:engine/install'), async (req, res, { params }) => {
|
|
72
|
+
const engine = parseEngineBuildId(params['engine']);
|
|
73
|
+
sendJson(res, 200, await deps.engineBuilds.install(engine, parseEngineBuildInstallBody(await readJsonBody(req))));
|
|
74
|
+
});
|
|
75
|
+
router.delete(p('/engine-builds/:engine/:tag/:backend_id'), async (_req, res, { params }) => {
|
|
76
|
+
const engine = parseEngineBuildId(params['engine']);
|
|
77
|
+
const tag = segment(params['tag'], 'tag');
|
|
78
|
+
const backendId = segment(params['backend_id'], 'backend_id');
|
|
79
|
+
sendJson(res, 200, await deps.engineBuilds.remove(engine, tag, backendId));
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=engine-builds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-builds.js","sourceRoot":"","sources":["../../../../src/server/control/routes/engine-builds.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `/engines` layer's routes (change `unify-engine-lifecycle`, spec `engine-lifecycle`, design D2,
|
|
3
|
+
* D10): the versions of every engine of this host, an update, an activation and the removal of one
|
|
4
|
+
* build. The versions and the update are POST: the proxy policy may carry credentials, which never
|
|
5
|
+
* travel in a query string.
|
|
6
|
+
*
|
|
7
|
+
* Bodies are checked here, unknown fields included, as on `/engine-builds`: a field this build would
|
|
8
|
+
* silently ignore means something to the caller and nothing to the core. Which body an update takes
|
|
9
|
+
* depends on the engine: `{task_id, target?, …}` for the engines that swap a build, `{request_id,
|
|
10
|
+
* app_version?}` for the managed ones, which answer `202` with the operation they began.
|
|
11
|
+
*/
|
|
12
|
+
import type { EngineId, EngineUpdateRequest, EngineVersionsRequest } from '../../../contracts/index.js';
|
|
13
|
+
import type { Router } from '../../http.js';
|
|
14
|
+
import type { ControlRouteContext, ControlServerDeps } from '../types.js';
|
|
15
|
+
export declare function parseEngineVersionsBody(raw: unknown): EngineVersionsRequest;
|
|
16
|
+
export declare function parseEngineUpdateBody(engine: EngineId, raw: unknown): EngineUpdateRequest;
|
|
17
|
+
export declare function registerEngineRoutes(router: Router, deps: ControlServerDeps, ctx: ControlRouteContext): void;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `/engines` layer's routes (change `unify-engine-lifecycle`, spec `engine-lifecycle`, design D2,
|
|
3
|
+
* D10): the versions of every engine of this host, an update, an activation and the removal of one
|
|
4
|
+
* build. The versions and the update are POST: the proxy policy may carry credentials, which never
|
|
5
|
+
* travel in a query string.
|
|
6
|
+
*
|
|
7
|
+
* Bodies are checked here, unknown fields included, as on `/engine-builds`: a field this build would
|
|
8
|
+
* silently ignore means something to the caller and nothing to the core. Which body an update takes
|
|
9
|
+
* depends on the engine: `{task_id, target?, …}` for the engines that swap a build, `{request_id,
|
|
10
|
+
* app_version?}` for the managed ones, which answer `202` with the operation they began.
|
|
11
|
+
*/
|
|
12
|
+
import { AtomicCoreError, ENGINE_IDS, ENGINE_KINDS } from '../../../contracts/index.js';
|
|
13
|
+
import { queryOf, readJsonBody, sendJson } from '../../http.js';
|
|
14
|
+
const invalid = (why, details) => {
|
|
15
|
+
throw new AtomicCoreError('INVALID_ARGUMENT', why, details);
|
|
16
|
+
};
|
|
17
|
+
/** A task or request id is an event name and a key on disk; a path segment is a folder name. */
|
|
18
|
+
const ID_SHAPE = /^[^/\\]{1,200}$/;
|
|
19
|
+
const SEGMENT_SHAPE = /^[A-Za-z0-9._-]{1,200}$/;
|
|
20
|
+
/** A managed engine's build variant is its image platform (`linux%2Famd64` in the path). */
|
|
21
|
+
const PLATFORM_SHAPE = /^linux\/(amd64|arm64)$/;
|
|
22
|
+
function engineOf(raw) {
|
|
23
|
+
if (raw === undefined || !ENGINE_IDS.includes(raw))
|
|
24
|
+
return invalid(`There is no engine named ${raw ?? ''}.`, raw);
|
|
25
|
+
return raw;
|
|
26
|
+
}
|
|
27
|
+
function object(value, what = 'The request body') {
|
|
28
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
29
|
+
return invalid(`${what} must be a JSON object.`);
|
|
30
|
+
return value;
|
|
31
|
+
}
|
|
32
|
+
function known(body, keys) {
|
|
33
|
+
const extra = Object.keys(body).filter((key) => !keys.includes(key));
|
|
34
|
+
if (extra.length > 0)
|
|
35
|
+
invalid('The request has fields this core does not know.', extra.sort().join(', '));
|
|
36
|
+
}
|
|
37
|
+
function id(value, name) {
|
|
38
|
+
if (typeof value !== 'string' || !ID_SHAPE.test(value) || [...value].some((ch) => ch.charCodeAt(0) < 0x20))
|
|
39
|
+
return invalid(`${name} must be a non-empty id without slashes.`);
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
function segment(value, name) {
|
|
43
|
+
if (typeof value !== 'string' || !SEGMENT_SHAPE.test(value) || value === '.' || value === '..')
|
|
44
|
+
return invalid(`${name} is not a build identifier.`, typeof value === 'string' ? value : undefined);
|
|
45
|
+
return value;
|
|
46
|
+
}
|
|
47
|
+
function variantOf(engine, value) {
|
|
48
|
+
if (ENGINE_KINDS[engine] === 'managed') {
|
|
49
|
+
if (value === undefined || !PLATFORM_SHAPE.test(value))
|
|
50
|
+
return invalid('A managed engine build is named by its image platform: linux/amd64 or linux/arm64.', value);
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
53
|
+
return segment(value, 'variant');
|
|
54
|
+
}
|
|
55
|
+
function appVersion(body) {
|
|
56
|
+
const value = body['app_version'];
|
|
57
|
+
if (value === undefined)
|
|
58
|
+
return {};
|
|
59
|
+
if (value !== null && typeof value !== 'string')
|
|
60
|
+
invalid('app_version must be a string or null.');
|
|
61
|
+
return { app_version: value };
|
|
62
|
+
}
|
|
63
|
+
function forceAndProxy(body) {
|
|
64
|
+
const { force, proxy } = body;
|
|
65
|
+
if (force !== undefined && typeof force !== 'boolean')
|
|
66
|
+
invalid('force must be a boolean.');
|
|
67
|
+
if (proxy !== undefined && proxy !== null && (typeof proxy !== 'object' || Array.isArray(proxy)))
|
|
68
|
+
invalid('proxy must be an object or null.');
|
|
69
|
+
return {
|
|
70
|
+
...(force !== undefined ? { force: force } : {}),
|
|
71
|
+
...(proxy !== undefined ? { proxy: proxy } : {}),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export function parseEngineVersionsBody(raw) {
|
|
75
|
+
const body = object(raw);
|
|
76
|
+
known(body, ['force', 'proxy', 'app_version']);
|
|
77
|
+
return { ...forceAndProxy(body), ...appVersion(body) };
|
|
78
|
+
}
|
|
79
|
+
export function parseEngineUpdateBody(engine, raw) {
|
|
80
|
+
const body = object(raw);
|
|
81
|
+
if (ENGINE_KINDS[engine] === 'managed') {
|
|
82
|
+
known(body, ['request_id', 'app_version']);
|
|
83
|
+
const request = {
|
|
84
|
+
request_id: id(body['request_id'], 'request_id'),
|
|
85
|
+
...appVersion(body),
|
|
86
|
+
};
|
|
87
|
+
return request;
|
|
88
|
+
}
|
|
89
|
+
known(body, ['task_id', 'target', 'force', 'proxy', 'app_version']);
|
|
90
|
+
const request = {
|
|
91
|
+
task_id: id(body['task_id'], 'task_id'),
|
|
92
|
+
...forceAndProxy(body),
|
|
93
|
+
...appVersion(body),
|
|
94
|
+
};
|
|
95
|
+
if (body['target'] !== undefined) {
|
|
96
|
+
if (ENGINE_KINDS[engine] !== 'llamacpp')
|
|
97
|
+
invalid(`The core picks the ${engine} build for this computer; an update takes no target.`);
|
|
98
|
+
const target = object(body['target'], 'target');
|
|
99
|
+
known(target, ['version', 'variant']);
|
|
100
|
+
request.target = {
|
|
101
|
+
...(target['version'] !== undefined ? { version: segment(target['version'], 'target.version') } : {}),
|
|
102
|
+
variant: segment(target['variant'], 'target.variant'),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return request;
|
|
106
|
+
}
|
|
107
|
+
function retainModels(req) {
|
|
108
|
+
const raw = queryOf(req).get('retain_models');
|
|
109
|
+
if (raw === null)
|
|
110
|
+
return {};
|
|
111
|
+
if (raw !== 'true' && raw !== 'false')
|
|
112
|
+
return invalid('retain_models must be true or false.', raw);
|
|
113
|
+
return { retainModels: raw === 'true' };
|
|
114
|
+
}
|
|
115
|
+
/** Without the layer wired (a core built without it), every route says so rather than 404. */
|
|
116
|
+
function enginesOf(deps) {
|
|
117
|
+
if (deps.engines === undefined)
|
|
118
|
+
throw new AtomicCoreError('INVALID_ARGUMENT', 'This core does not manage engines through /engines.');
|
|
119
|
+
return deps.engines;
|
|
120
|
+
}
|
|
121
|
+
/** A managed engine's update and removal answer with the operation they began. */
|
|
122
|
+
const statusOf = (result) => ('operation_id' in result ? 202 : 200);
|
|
123
|
+
export function registerEngineRoutes(router, deps, ctx) {
|
|
124
|
+
const { p } = ctx;
|
|
125
|
+
router.post(p('/engines/versions'), async (req, res) => {
|
|
126
|
+
const request = parseEngineVersionsBody(await readJsonBody(req));
|
|
127
|
+
sendJson(res, 200, await enginesOf(deps).versions(request));
|
|
128
|
+
});
|
|
129
|
+
// Synchronous for the engines that swap a build, like `POST /engine-builds/:engine/install`:
|
|
130
|
+
// progress and cancel go through `download:*` and `POST /downloads/:task_id/cancel`.
|
|
131
|
+
router.post(p('/engines/:engine/update'), async (req, res, { params }) => {
|
|
132
|
+
const engine = engineOf(params['engine']);
|
|
133
|
+
const request = parseEngineUpdateBody(engine, await readJsonBody(req));
|
|
134
|
+
const result = await enginesOf(deps).update(engine, request);
|
|
135
|
+
sendJson(res, statusOf(result), result);
|
|
136
|
+
});
|
|
137
|
+
router.delete(p('/engines/:engine/builds/:version/:variant'), async (req, res, { params }) => {
|
|
138
|
+
const engine = engineOf(params['engine']);
|
|
139
|
+
const version = segment(params['version'], 'version');
|
|
140
|
+
const variant = variantOf(engine, params['variant']);
|
|
141
|
+
const result = await enginesOf(deps).remove(engine, version, variant, retainModels(req));
|
|
142
|
+
sendJson(res, statusOf(result), result);
|
|
143
|
+
});
|
|
144
|
+
router.post(p('/engines/:engine/builds/:version/:variant/activate'), async (req, res, { params }) => {
|
|
145
|
+
const engine = engineOf(params['engine']);
|
|
146
|
+
const version = segment(params['version'], 'version');
|
|
147
|
+
const variant = variantOf(engine, params['variant']);
|
|
148
|
+
known(object(await readJsonBody(req)), []);
|
|
149
|
+
sendJson(res, 200, await enginesOf(deps).activate(engine, version, variant));
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=engines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engines.js","sourceRoot":"","sources":["../../../../src/server/control/routes/engines.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The managed container runtime over the control API: what the machine would need, starting the
|
|
3
|
+
* change, watching it, and coming back to it after the app was closed or the machine restarted.
|
|
4
|
+
*
|
|
5
|
+
* Bodies are validated here rather than trusted, including their unknown fields. A field this build
|
|
6
|
+
* would silently ignore is a request that means something to the caller and nothing to us, and on a
|
|
7
|
+
* surface where one of the calls ends in a password prompt that is worth refusing outright.
|
|
8
|
+
*
|
|
9
|
+
* The privileged step is the reason the shapes look the way they do. The core never runs it: it
|
|
10
|
+
* hands out a step bound to one operation, one revision and a single-use nonce, and the app comes
|
|
11
|
+
* back with a receipt naming all three. A replayed receipt is refused with
|
|
12
|
+
* `MANAGED_RECEIPT_CONFLICT` instead of authorizing anything a second time (task 2.6).
|
|
13
|
+
*/
|
|
14
|
+
import type { Router } from '../../http.js';
|
|
15
|
+
import type { ControlRouteContext, ControlServerDeps } from '../types.js';
|
|
16
|
+
export declare function registerEnvironmentRoutes(router: Router, deps: ControlServerDeps, ctx: ControlRouteContext): void;
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The managed container runtime over the control API: what the machine would need, starting the
|
|
3
|
+
* change, watching it, and coming back to it after the app was closed or the machine restarted.
|
|
4
|
+
*
|
|
5
|
+
* Bodies are validated here rather than trusted, including their unknown fields. A field this build
|
|
6
|
+
* would silently ignore is a request that means something to the caller and nothing to us, and on a
|
|
7
|
+
* surface where one of the calls ends in a password prompt that is worth refusing outright.
|
|
8
|
+
*
|
|
9
|
+
* The privileged step is the reason the shapes look the way they do. The core never runs it: it
|
|
10
|
+
* hands out a step bound to one operation, one revision and a single-use nonce, and the app comes
|
|
11
|
+
* back with a receipt naming all three. A replayed receipt is refused with
|
|
12
|
+
* `MANAGED_RECEIPT_CONFLICT` instead of authorizing anything a second time (task 2.6).
|
|
13
|
+
*/
|
|
14
|
+
import { AtomicCoreError, MANAGED_OPERATION_KINDS } from '../../../contracts/index.js';
|
|
15
|
+
import { readJsonBody, sendError, sendJson } from '../../http.js';
|
|
16
|
+
const invalid = (why, details) => {
|
|
17
|
+
throw new AtomicCoreError('INVALID_ARGUMENT', why, details);
|
|
18
|
+
};
|
|
19
|
+
const unavailable = () => {
|
|
20
|
+
throw new AtomicCoreError('MANAGED_ADAPTER_UNAVAILABLE', 'Managed runtimes are not available in this build.');
|
|
21
|
+
};
|
|
22
|
+
const DIGEST = /^sha256:[0-9a-f]{64}$/;
|
|
23
|
+
/** Ids travel in a path segment and become a directory name; anything else is a caller's mistake. */
|
|
24
|
+
const ID_SHAPE = /^[^/\\]{1,200}$/;
|
|
25
|
+
const isId = (value) => ID_SHAPE.test(value) && ![...value].some((ch) => ch.charCodeAt(0) < 0x20);
|
|
26
|
+
const object = (value, at) => typeof value === 'object' && value !== null && !Array.isArray(value)
|
|
27
|
+
? value
|
|
28
|
+
: invalid(`${at} must be an object.`);
|
|
29
|
+
const known = (source, at, keys) => {
|
|
30
|
+
const extra = Object.keys(source).filter((key) => !keys.includes(key));
|
|
31
|
+
if (extra.length > 0)
|
|
32
|
+
invalid(`${at} has fields this core does not know.`, extra.sort().join(', '));
|
|
33
|
+
};
|
|
34
|
+
const id = (value, at) => typeof value === 'string' && isId(value) ? value : invalid(`${at} is not a valid id.`);
|
|
35
|
+
const digest = (value, at) => typeof value === 'string' && DIGEST.test(value)
|
|
36
|
+
? value
|
|
37
|
+
: invalid(`${at} is not a sha256 digest.`);
|
|
38
|
+
const revision = (value, at) => typeof value === 'number' && Number.isSafeInteger(value) && value >= 0
|
|
39
|
+
? value
|
|
40
|
+
: invalid(`${at} is not a revision.`);
|
|
41
|
+
const oneOf = (value, at, allowed) => typeof value === 'string' && allowed.includes(value)
|
|
42
|
+
? value
|
|
43
|
+
: invalid(`${at} must be one of: ${allowed.join(', ')}.`);
|
|
44
|
+
const target = (value, at) => {
|
|
45
|
+
const raw = object(value, at);
|
|
46
|
+
const kind = oneOf(raw['kind'], `${at}.kind`, ['environment', 'runtime']);
|
|
47
|
+
if (kind === 'environment') {
|
|
48
|
+
known(raw, at, ['kind']);
|
|
49
|
+
return { kind };
|
|
50
|
+
}
|
|
51
|
+
known(raw, at, ['kind', 'installation_id', 'engine_id']);
|
|
52
|
+
return {
|
|
53
|
+
kind,
|
|
54
|
+
installation_id: id(raw['installation_id'], `${at}.installation_id`),
|
|
55
|
+
engine_id: id(raw['engine_id'], `${at}.engine_id`),
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
const beginBody = (value) => {
|
|
59
|
+
const raw = object(value, 'the request');
|
|
60
|
+
known(raw, 'the request', [
|
|
61
|
+
'request_id',
|
|
62
|
+
'target',
|
|
63
|
+
'kind',
|
|
64
|
+
'descriptor_id',
|
|
65
|
+
'retain_models',
|
|
66
|
+
'approved_plan_digest',
|
|
67
|
+
]);
|
|
68
|
+
const kind = oneOf(raw['kind'], 'kind', MANAGED_OPERATION_KINDS);
|
|
69
|
+
// Setting something up or replacing it needs to say what with; a removal already knows.
|
|
70
|
+
if (kind !== 'remove' && raw['descriptor_id'] === undefined) {
|
|
71
|
+
invalid('A setup or an update has to name the runtime it installs.', 'descriptor_id');
|
|
72
|
+
}
|
|
73
|
+
if (raw['retain_models'] !== undefined && typeof raw['retain_models'] !== 'boolean') {
|
|
74
|
+
invalid('retain_models must be true or false.');
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
request_id: id(raw['request_id'], 'request_id'),
|
|
78
|
+
target: target(raw['target'], 'target'),
|
|
79
|
+
kind,
|
|
80
|
+
...(raw['descriptor_id'] === undefined
|
|
81
|
+
? {}
|
|
82
|
+
: { descriptor_id: id(raw['descriptor_id'], 'descriptor_id') }),
|
|
83
|
+
...(raw['retain_models'] === undefined ? {} : { retain_models: raw['retain_models'] }),
|
|
84
|
+
...(raw['approved_plan_digest'] === undefined
|
|
85
|
+
? {}
|
|
86
|
+
: { approved_plan_digest: digest(raw['approved_plan_digest'], 'approved_plan_digest') }),
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
const resumeBody = (value) => {
|
|
90
|
+
const raw = object(value, 'the request');
|
|
91
|
+
known(raw, 'the request', ['expected_revision', 'approved_plan_digest']);
|
|
92
|
+
return {
|
|
93
|
+
expected_revision: revision(raw['expected_revision'], 'expected_revision'),
|
|
94
|
+
...(raw['approved_plan_digest'] === undefined
|
|
95
|
+
? {}
|
|
96
|
+
: { approved_plan_digest: digest(raw['approved_plan_digest'], 'approved_plan_digest') }),
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
const probeBody = (value) => {
|
|
100
|
+
const raw = object(value, 'the request');
|
|
101
|
+
known(raw, 'the request', ['descriptor_id', 'environment_id', 'target']);
|
|
102
|
+
return {
|
|
103
|
+
descriptor_id: id(raw['descriptor_id'], 'descriptor_id'),
|
|
104
|
+
...(raw['environment_id'] === undefined
|
|
105
|
+
? {}
|
|
106
|
+
: { environment_id: id(raw['environment_id'], 'environment_id') }),
|
|
107
|
+
target: target(raw['target'], 'target'),
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
/** How much of a receipt's `log_tail` the core keeps (the executor's own is 2 000 characters). */
|
|
111
|
+
const RECEIPT_LOG_TAIL_LIMIT = 16 * 1024;
|
|
112
|
+
const receiptBody = (value) => {
|
|
113
|
+
const raw = object(value, 'the request');
|
|
114
|
+
known(raw, 'the request', [
|
|
115
|
+
'step_id',
|
|
116
|
+
'nonce',
|
|
117
|
+
'expected_operation_revision',
|
|
118
|
+
'recipe_digest',
|
|
119
|
+
'parameters_digest',
|
|
120
|
+
'outcome',
|
|
121
|
+
'receipt_id',
|
|
122
|
+
'log_tail',
|
|
123
|
+
]);
|
|
124
|
+
const logTail = raw['log_tail'];
|
|
125
|
+
if (logTail !== undefined && typeof logTail !== 'string')
|
|
126
|
+
invalid('log_tail must be a string.');
|
|
127
|
+
return {
|
|
128
|
+
step_id: id(raw['step_id'], 'step_id'),
|
|
129
|
+
nonce: id(raw['nonce'], 'nonce'),
|
|
130
|
+
expected_operation_revision: revision(raw['expected_operation_revision'], 'expected_operation_revision'),
|
|
131
|
+
recipe_digest: digest(raw['recipe_digest'], 'recipe_digest'),
|
|
132
|
+
parameters_digest: digest(raw['parameters_digest'], 'parameters_digest'),
|
|
133
|
+
outcome: oneOf(raw['outcome'], 'outcome', [
|
|
134
|
+
'completed',
|
|
135
|
+
'declined',
|
|
136
|
+
'relogin-required',
|
|
137
|
+
'reboot-required',
|
|
138
|
+
'failed',
|
|
139
|
+
]),
|
|
140
|
+
receipt_id: id(raw['receipt_id'], 'receipt_id'),
|
|
141
|
+
// The step's own log tail (task 2.23, F-4), kept to its last 16 KiB: a diagnostic, never refused
|
|
142
|
+
// for its length — the receipt it rides on is what the operation is waiting for.
|
|
143
|
+
...(logTail === undefined ? {} : { log_tail: logTail.slice(-RECEIPT_LOG_TAIL_LIMIT) }),
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
export function registerEnvironmentRoutes(router, deps, ctx) {
|
|
147
|
+
const { p } = ctx;
|
|
148
|
+
const service = () => deps.environments ?? unavailable();
|
|
149
|
+
router.get(p('/environments'), async (_req, res) => {
|
|
150
|
+
sendJson(res, 200, { environments: await service().list() });
|
|
151
|
+
});
|
|
152
|
+
// A POST, not a query: the target and the descriptor are structured, and probing changes nothing.
|
|
153
|
+
router.post(p('/environments/probe'), async (req, res) => {
|
|
154
|
+
const body = await readJsonBody(req);
|
|
155
|
+
sendJson(res, 200, await service().probe(probeBody(body)));
|
|
156
|
+
});
|
|
157
|
+
// One cached runtime descriptor, from the cache only (task 2.22): the id an installation pins or a
|
|
158
|
+
// plan names. An id the cache does not hold is 404 here, although `MANAGED_METADATA_INVALID` is 400
|
|
159
|
+
// everywhere else (`statusForCode`): the caller asked for something that is not there, rather than
|
|
160
|
+
// sending a malformed descriptor. Registered with the other fixed segments, ahead of any
|
|
161
|
+
// `/environments/:environmentId/...` pattern.
|
|
162
|
+
router.get(p('/environments/descriptors/:descriptorId'), async (_req, res, { params }) => {
|
|
163
|
+
const environments = service();
|
|
164
|
+
const descriptorId = id(params['descriptorId'], 'descriptorId');
|
|
165
|
+
try {
|
|
166
|
+
sendJson(res, 200, await environments.descriptor(descriptorId));
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
if (error instanceof AtomicCoreError && error.code === 'MANAGED_METADATA_INVALID') {
|
|
170
|
+
sendError(res, error, 404);
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
throw error;
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
// Registered before the `:operationId` family so neither pattern can swallow the other.
|
|
177
|
+
router.get(p('/environments/operations/:operationId'), async (_req, res, { params }) => {
|
|
178
|
+
sendJson(res, 200, await service().get(id(params['operationId'], 'operationId')));
|
|
179
|
+
});
|
|
180
|
+
router.post(p('/environments/operations/:operationId/cancel'), async (_req, res, { params }) => {
|
|
181
|
+
sendJson(res, 200, await service().cancel(id(params['operationId'], 'operationId')));
|
|
182
|
+
});
|
|
183
|
+
router.post(p('/environments/operations/:operationId/resume'), async (req, res, { params }) => {
|
|
184
|
+
const body = await readJsonBody(req);
|
|
185
|
+
sendJson(res, 200, await service().resume(id(params['operationId'], 'operationId'), resumeBody(body)));
|
|
186
|
+
});
|
|
187
|
+
router.post(p('/environments/operations/:operationId/host-step-result'), async (req, res, { params }) => {
|
|
188
|
+
const body = await readJsonBody(req);
|
|
189
|
+
sendJson(res, 200, await service().acceptHostReceipt(id(params['operationId'], 'operationId'), receiptBody(body)));
|
|
190
|
+
});
|
|
191
|
+
// 202: the operation is recorded and running, and the work it starts outlives this request.
|
|
192
|
+
router.post(p('/environments/:environmentId/operations'), async (req, res, { params }) => {
|
|
193
|
+
const body = await readJsonBody(req);
|
|
194
|
+
const operation = await service().begin(id(params['environmentId'], 'environmentId'), beginBody(body));
|
|
195
|
+
sendJson(res, 202, operation);
|
|
196
|
+
});
|
|
197
|
+
// Archive the finished operations so the next setup starts from a fresh plan; installs nothing,
|
|
198
|
+
// removes nothing installed. 409 (`MANAGED_OPERATION_CONFLICT`) while an operation still runs.
|
|
199
|
+
router.post(p('/environments/:environmentId/reset'), async (_req, res, { params }) => {
|
|
200
|
+
sendJson(res, 200, await service().reset(id(params['environmentId'], 'environmentId')));
|
|
201
|
+
});
|
|
202
|
+
// Read-only: what a person pastes into a support message (`EnvironmentDiagnostics`).
|
|
203
|
+
router.get(p('/environments/:environmentId/diagnostics'), async (_req, res, { params }) => {
|
|
204
|
+
sendJson(res, 200, await service().diagnostics(id(params['environmentId'], 'environmentId')));
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=environments.js.map
|