agent-hitch 0.2.16 → 0.2.17
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 +7 -28
- package/README.zh-CN.md +6 -26
- package/dist/scripts/benchmark-dataset-verification.js +118 -0
- package/dist/scripts/benchmark-dataset-verification.js.map +1 -0
- package/dist/scripts/canary-external-endpoint.js +56 -0
- package/dist/scripts/canary-external-endpoint.js.map +1 -0
- package/dist/scripts/canary-native-training.js +8 -6
- package/dist/scripts/canary-native-training.js.map +1 -1
- package/dist/scripts/canary-remote-training.js +8 -6
- package/dist/scripts/canary-remote-training.js.map +1 -1
- package/dist/scripts/check-architecture.js +1 -1
- package/dist/scripts/check-architecture.js.map +1 -1
- package/dist/src/adapters/providers/codex.js +5 -2
- package/dist/src/adapters/providers/codex.js.map +1 -1
- package/dist/src/adapters/providers/model-call.js +1 -2
- package/dist/src/adapters/providers/model-call.js.map +1 -1
- package/dist/src/adapters/providers/training-tool.js +2 -0
- package/dist/src/adapters/providers/training-tool.js.map +1 -1
- package/dist/src/backends/harbor/artifact-pins.js +42 -0
- package/dist/src/backends/harbor/artifact-pins.js.map +1 -0
- package/dist/src/backends/harbor/backend.js +16 -8
- package/dist/src/backends/harbor/backend.js.map +1 -1
- package/dist/src/backends/harbor/bound-credential-helper.js +24 -0
- package/dist/src/backends/harbor/bound-credential-helper.js.map +1 -0
- package/dist/src/backends/harbor/credential-snapshot.js +71 -0
- package/dist/src/backends/harbor/credential-snapshot.js.map +1 -0
- package/dist/src/backends/harbor/environment-config.js +25 -2
- package/dist/src/backends/harbor/environment-config.js.map +1 -1
- package/dist/src/backends/harbor/environment-files.js +143 -0
- package/dist/src/backends/harbor/environment-files.js.map +1 -0
- package/dist/src/backends/harbor/evaluation-binding.js +160 -0
- package/dist/src/backends/harbor/evaluation-binding.js.map +1 -0
- package/dist/src/backends/harbor/host-credential-helper.js +5 -0
- package/dist/src/backends/harbor/host-credential-helper.js.map +1 -1
- package/dist/src/backends/harbor/index.js +2 -0
- package/dist/src/backends/harbor/index.js.map +1 -1
- package/dist/src/backends/harbor/model-proxy-config.js +3 -18
- package/dist/src/backends/harbor/model-proxy-config.js.map +1 -1
- package/dist/src/backends/harbor/portable-regrade.js +15 -3
- package/dist/src/backends/harbor/portable-regrade.js.map +1 -1
- package/dist/src/backends/harbor/python-runtime.js +71 -0
- package/dist/src/backends/harbor/python-runtime.js.map +1 -0
- package/dist/src/backends/harbor/tools.js +6 -4
- package/dist/src/backends/harbor/tools.js.map +1 -1
- package/dist/src/backends/index.js +3 -0
- package/dist/src/backends/index.js.map +1 -1
- package/dist/src/cli/arguments.js +30 -30
- package/dist/src/cli/arguments.js.map +1 -1
- package/dist/src/cli/commands/capabilities.js +7 -3
- package/dist/src/cli/commands/capabilities.js.map +1 -1
- package/dist/src/cli/commands/daemon.js +0 -17
- package/dist/src/cli/commands/daemon.js.map +1 -1
- package/dist/src/cli/commands/eval-binding.js +32 -0
- package/dist/src/cli/commands/eval-binding.js.map +1 -0
- package/dist/src/cli/commands/eval.js +21 -15
- package/dist/src/cli/commands/eval.js.map +1 -1
- package/dist/src/cli/commands/models.js +32 -45
- package/dist/src/cli/commands/models.js.map +1 -1
- package/dist/src/cli/commands/run.js +0 -35
- package/dist/src/cli/commands/run.js.map +1 -1
- package/dist/src/cli/main.js +0 -4
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/cli/output.js +5 -16
- package/dist/src/cli/output.js.map +1 -1
- package/dist/src/control-plane/eval-records.js +3 -1
- package/dist/src/control-plane/eval-records.js.map +1 -1
- package/dist/src/control-plane/eval-recovery.js +4 -1
- package/dist/src/control-plane/eval-recovery.js.map +1 -1
- package/dist/src/control-plane/eval-scheduler.js +16 -8
- package/dist/src/control-plane/eval-scheduler.js.map +1 -1
- package/dist/src/control-plane/index.js +0 -2
- package/dist/src/control-plane/index.js.map +1 -1
- package/dist/src/control-plane/model-capture-planning.js +3 -4
- package/dist/src/control-plane/model-capture-planning.js.map +1 -1
- package/dist/src/control-plane/remote-model-routes.js +4 -24
- package/dist/src/control-plane/remote-model-routes.js.map +1 -1
- package/dist/src/control-plane/remote-offer-contract.js +2 -2
- package/dist/src/control-plane/remote-offer-contract.js.map +1 -1
- package/dist/src/control-plane/remote-result-transport.js +7 -8
- package/dist/src/control-plane/remote-result-transport.js.map +1 -1
- package/dist/src/control-plane/remote-work-coordinator.js +2 -2
- package/dist/src/control-plane/remote-work-coordinator.js.map +1 -1
- package/dist/src/control-plane/remote-work-recovery.js +2 -2
- package/dist/src/control-plane/remote-work-recovery.js.map +1 -1
- package/dist/src/control-plane/remote-worker-protocol.js +1 -1
- package/dist/src/control-plane/remote-worker-protocol.js.map +1 -1
- package/dist/src/control-plane/remote-worker-runner.js +21 -6
- package/dist/src/control-plane/remote-worker-runner.js.map +1 -1
- package/dist/src/control-plane/remote-workers.js +2 -2
- package/dist/src/control-plane/remote-workers.js.map +1 -1
- package/dist/src/control-plane/rerun-recovery.js +1 -1
- package/dist/src/control-plane/rerun-recovery.js.map +1 -1
- package/dist/src/control-plane/rerun-scheduler.js +21 -14
- package/dist/src/control-plane/rerun-scheduler.js.map +1 -1
- package/dist/src/control-plane/rerun-source.js +5 -2
- package/dist/src/control-plane/rerun-source.js.map +1 -1
- package/dist/src/control-plane/rerun-submission.js +7 -5
- package/dist/src/control-plane/rerun-submission.js.map +1 -1
- package/dist/src/control-plane/synthetic-result.js +3 -2
- package/dist/src/control-plane/synthetic-result.js.map +1 -1
- package/dist/src/control-plane/worker-model-relay.js +1 -1
- package/dist/src/control-plane/worker-model-relay.js.map +1 -1
- package/dist/src/controller-runtime/hash.js +6 -0
- package/dist/src/controller-runtime/hash.js.map +1 -1
- package/dist/src/daemon/client.js +12 -35
- package/dist/src/daemon/client.js.map +1 -1
- package/dist/src/daemon/evaluation-binding.js +33 -0
- package/dist/src/daemon/evaluation-binding.js.map +1 -0
- package/dist/src/daemon/evaluation-submission.js +27 -0
- package/dist/src/daemon/evaluation-submission.js.map +1 -0
- package/dist/src/daemon/index.js +1 -0
- package/dist/src/daemon/index.js.map +1 -1
- package/dist/src/daemon/json-stream.js +98 -0
- package/dist/src/daemon/json-stream.js.map +1 -0
- package/dist/src/daemon/scheduler.js +1 -4
- package/dist/src/daemon/scheduler.js.map +1 -1
- package/dist/src/daemon/server.js +14 -54
- package/dist/src/daemon/server.js.map +1 -1
- package/dist/src/domain/endpoints.js +2 -0
- package/dist/src/domain/endpoints.js.map +1 -0
- package/dist/src/domain/evaluation-binding.js +5 -0
- package/dist/src/domain/evaluation-binding.js.map +1 -0
- package/dist/src/domain/index.js +2 -0
- package/dist/src/domain/index.js.map +1 -1
- package/dist/src/domain/runs.js.map +1 -1
- package/dist/src/evals/benchmark-adapter-manifest.js +95 -32
- package/dist/src/evals/benchmark-adapter-manifest.js.map +1 -1
- package/dist/src/evals/benchmark-verification.js +106 -0
- package/dist/src/evals/benchmark-verification.js.map +1 -0
- package/dist/src/evals/collect-only-rerun.js +3 -2
- package/dist/src/evals/collect-only-rerun.js.map +1 -1
- package/dist/src/evals/directory.js +9 -1
- package/dist/src/evals/directory.js.map +1 -1
- package/dist/src/evals/endpoint-attempts.js +112 -0
- package/dist/src/evals/endpoint-attempts.js.map +1 -0
- package/dist/src/evals/endpoint-usage.js +8 -0
- package/dist/src/evals/endpoint-usage.js.map +1 -0
- package/dist/src/evals/environment-binding.js +9 -0
- package/dist/src/evals/environment-binding.js.map +1 -0
- package/dist/src/evals/eval-artifact-planning.js +10 -1
- package/dist/src/evals/eval-artifact-planning.js.map +1 -1
- package/dist/src/evals/eval-finalization.js +2 -3
- package/dist/src/evals/eval-finalization.js.map +1 -1
- package/dist/src/evals/eval-logical-plan.js +2 -0
- package/dist/src/evals/eval-logical-plan.js.map +1 -1
- package/dist/src/evals/eval-result-builder.js +4 -0
- package/dist/src/evals/eval-result-builder.js.map +1 -1
- package/dist/src/evals/eval-state.js +22 -0
- package/dist/src/evals/eval-state.js.map +1 -0
- package/dist/src/evals/execution-plan.js +6 -2
- package/dist/src/evals/execution-plan.js.map +1 -1
- package/dist/src/evals/index.js +5 -1
- package/dist/src/evals/index.js.map +1 -1
- package/dist/src/evals/infrastructure-retry.js +2 -0
- package/dist/src/evals/infrastructure-retry.js.map +1 -1
- package/dist/src/evals/model-capture-runtime.js +9 -13
- package/dist/src/evals/model-capture-runtime.js.map +1 -1
- package/dist/src/evals/native-phase-evidence.js +8 -2
- package/dist/src/evals/native-phase-evidence.js.map +1 -1
- package/dist/src/evals/planned-execution.js +7 -2
- package/dist/src/evals/planned-execution.js.map +1 -1
- package/dist/src/evals/planned-progress-publisher.js +18 -5
- package/dist/src/evals/planned-progress-publisher.js.map +1 -1
- package/dist/src/evals/planned-retry-execution.js +1 -0
- package/dist/src/evals/planned-retry-execution.js.map +1 -1
- package/dist/src/evals/preparation-rerun.js +0 -1
- package/dist/src/evals/preparation-rerun.js.map +1 -1
- package/dist/src/evals/progress.js +92 -7
- package/dist/src/evals/progress.js.map +1 -1
- package/dist/src/evals/records.js +12 -2
- package/dist/src/evals/records.js.map +1 -1
- package/dist/src/evals/recovery.js +2 -0
- package/dist/src/evals/recovery.js.map +1 -1
- package/dist/src/evals/remote-rerun-execution.js +1 -3
- package/dist/src/evals/remote-rerun-execution.js.map +1 -1
- package/dist/src/evals/remote-verifier-rerun.js +1 -1
- package/dist/src/evals/remote-verifier-rerun.js.map +1 -1
- package/dist/src/evals/request.js +14 -45
- package/dist/src/evals/request.js.map +1 -1
- package/dist/src/evals/rerun-observation.js +31 -0
- package/dist/src/evals/rerun-observation.js.map +1 -0
- package/dist/src/evals/rerun.js +23 -28
- package/dist/src/evals/rerun.js.map +1 -1
- package/dist/src/evals/service.js +45 -42
- package/dist/src/evals/service.js.map +1 -1
- package/dist/src/evals/shared-runtime.js +125 -0
- package/dist/src/evals/shared-runtime.js.map +1 -0
- package/dist/src/evals/trial-import.js +10 -2
- package/dist/src/evals/trial-import.js.map +1 -1
- package/dist/src/evals/trial-publication-recovery.js +1 -1
- package/dist/src/evals/trial-publication-recovery.js.map +1 -1
- package/dist/src/evals/verifier-artifacts.js +1 -0
- package/dist/src/evals/verifier-artifacts.js.map +1 -1
- package/dist/src/evals/verifier-only-rerun.js +1 -1
- package/dist/src/evals/verifier-only-rerun.js.map +1 -1
- package/dist/src/evals/verifier-rerun-result.js +3 -2
- package/dist/src/evals/verifier-rerun-result.js.map +1 -1
- package/dist/src/evals/verifier-score-artifacts.js +9 -1
- package/dist/src/evals/verifier-score-artifacts.js.map +1 -1
- package/dist/src/foundation/config.js +0 -5
- package/dist/src/foundation/config.js.map +1 -1
- package/dist/src/inference/index.js +3 -22
- package/dist/src/inference/index.js.map +1 -1
- package/dist/src/inference/lock.js +44 -130
- package/dist/src/inference/lock.js.map +1 -1
- package/dist/src/model-access/endpoint-contract.js +127 -0
- package/dist/src/model-access/endpoint-contract.js.map +1 -0
- package/dist/src/model-access/endpoint-credentials.js +54 -0
- package/dist/src/model-access/endpoint-credentials.js.map +1 -0
- package/dist/src/model-access/endpoint-probe-stream.js +66 -0
- package/dist/src/model-access/endpoint-probe-stream.js.map +1 -0
- package/dist/src/model-access/endpoint-verification.js +76 -0
- package/dist/src/model-access/endpoint-verification.js.map +1 -0
- package/dist/src/model-access/endpoints.js +105 -0
- package/dist/src/model-access/endpoints.js.map +1 -0
- package/dist/src/model-access/index.js +5 -1
- package/dist/src/model-access/index.js.map +1 -1
- package/dist/src/model-access/proxy.js +57 -14
- package/dist/src/model-access/proxy.js.map +1 -1
- package/dist/src/model-access/remote-model.js +21 -29
- package/dist/src/model-access/remote-model.js.map +1 -1
- package/dist/src/model-access/usage.js +30 -0
- package/dist/src/model-access/usage.js.map +1 -0
- package/dist/src/runs/endpoint-runtime.js +40 -0
- package/dist/src/runs/endpoint-runtime.js.map +1 -0
- package/dist/src/runs/executor.js +28 -42
- package/dist/src/runs/executor.js.map +1 -1
- package/dist/src/runs/local-inference-environment.js +5 -53
- package/dist/src/runs/local-inference-environment.js.map +1 -1
- package/dist/src/runs/manifest.js +1 -0
- package/dist/src/runs/manifest.js.map +1 -1
- package/dist/src/runs/outcome.js +3 -10
- package/dist/src/runs/outcome.js.map +1 -1
- package/dist/src/runs/queued.js +3 -2
- package/dist/src/runs/queued.js.map +1 -1
- package/dist/src/runs/records.js +3 -0
- package/dist/src/runs/records.js.map +1 -1
- package/dist/src/runs/request.js +10 -38
- package/dist/src/runs/request.js.map +1 -1
- package/dist/src/workers/remote-harbor-work-spec.js +8 -10
- package/dist/src/workers/remote-harbor-work-spec.js.map +1 -1
- package/dist/src/workers/remote-harbor-worker.js +3 -0
- package/dist/src/workers/remote-harbor-worker.js.map +1 -1
- package/docs/evidence/eval-preparation-2026-10-09.json +393 -0
- package/docs/evidence/eval-preparation-2026-10-09.md +178 -0
- package/docs/local-model-inference-spec.zh-CN.md +4 -663
- package/docs/resource-storage.zh-CN.md +116 -0
- package/docs/schemas/endpoint-evaluation-attempt.schema.json +29 -0
- package/docs/schemas/eval-artifact-pin.schema.json +14 -0
- package/docs/schemas/eval-execution-plan.schema.json +486 -105
- package/docs/schemas/eval-progress.schema.json +1 -1
- package/docs/schemas/eval-request.schema.json +149 -18
- package/docs/schemas/eval-rerun-submission.schema.json +8 -1
- package/docs/schemas/eval-result.schema.json +310 -56
- package/docs/schemas/evaluation-binding.schema.json +15 -0
- package/docs/schemas/external-endpoint-binding.schema.json +153 -0
- package/docs/schemas/external-endpoint-config.schema.json +93 -0
- package/docs/schemas/inference-execution-evidence.schema.json +253 -3
- package/docs/schemas/inference-lock-v3.schema.json +6 -0
- package/docs/schemas/inference-lock.schema.json +842 -341
- package/docs/schemas/ordered-eval-control.schema.json +7 -1
- package/docs/schemas/ready-endpoint-binding.schema.json +201 -0
- package/docs/schemas/run-manifest.schema.json +6 -0
- package/docs/schemas/run-request.schema.json +122 -20
- package/examples/external-inference/.env.example +16 -0
- package/examples/external-inference/README.md +203 -0
- package/examples/external-inference/accept.mjs +297 -0
- package/examples/external-inference/compose.gateway.yaml +119 -0
- package/examples/external-inference/compose.single.yaml +64 -0
- package/examples/external-inference/compose.tp2.yaml +15 -0
- package/examples/external-inference/deployment.example.json +58 -0
- package/examples/external-inference/endpoint.chat-completions.example.json +13 -0
- package/examples/external-inference/endpoint.responses.example.json +13 -0
- package/integrations/harbor/hitch_build_inputs.py +213 -0
- package/integrations/harbor/hitch_build_process.py +126 -0
- package/integrations/harbor/hitch_compose_preparation.py +274 -0
- package/integrations/harbor/hitch_harbor_agent.py +25 -39
- package/integrations/harbor/hitch_harbor_environment.py +96 -3
- package/integrations/harbor/hitch_image_cache.py +357 -0
- package/integrations/harbor/hitch_python_runtime.py +303 -0
- package/integrations/harbor/hitch_shared_runtime.py +123 -0
- package/integrations/model-call/cli.js +11 -10
- package/integrations/training-tool/cli.js +5 -3
- package/node_modules/smol-toml/LICENSE +24 -0
- package/node_modules/smol-toml/README.md +418 -0
- package/node_modules/smol-toml/dist/date.d.ts +41 -0
- package/node_modules/smol-toml/dist/date.js +127 -0
- package/node_modules/smol-toml/dist/error.d.ts +38 -0
- package/node_modules/smol-toml/dist/error.js +63 -0
- package/node_modules/smol-toml/dist/extract.js +69 -0
- package/node_modules/smol-toml/dist/index.cjs +734 -0
- package/node_modules/smol-toml/dist/index.d.ts +43 -0
- package/node_modules/smol-toml/dist/index.js +33 -0
- package/node_modules/smol-toml/dist/parse.d.ts +36 -0
- package/node_modules/smol-toml/dist/parse.js +149 -0
- package/node_modules/smol-toml/dist/primitive.js +238 -0
- package/node_modules/smol-toml/dist/stringify.d.ts +31 -0
- package/node_modules/smol-toml/dist/stringify.js +181 -0
- package/node_modules/smol-toml/dist/struct.js +179 -0
- package/node_modules/smol-toml/dist/util.d.ts +38 -0
- package/node_modules/smol-toml/dist/util.js +89 -0
- package/node_modules/smol-toml/package.json +68 -0
- package/package.json +15 -4
- package/dist/src/cli/commands/local.js +0 -130
- package/dist/src/cli/commands/local.js.map +0 -1
- package/dist/src/cli/commands/model-node.js +0 -26
- package/dist/src/cli/commands/model-node.js.map +0 -1
- package/dist/src/control-plane/inference-manager.js +0 -357
- package/dist/src/control-plane/inference-manager.js.map +0 -1
- package/dist/src/control-plane/managed-gateway-receipt.js +0 -26
- package/dist/src/control-plane/managed-gateway-receipt.js.map +0 -1
- package/dist/src/control-plane/managed-service-recovery.js +0 -158
- package/dist/src/control-plane/managed-service-recovery.js.map +0 -1
- package/dist/src/daemon/inference-prepare.js +0 -47
- package/dist/src/daemon/inference-prepare.js.map +0 -1
- package/dist/src/inference/daemon-capacity.js +0 -41
- package/dist/src/inference/daemon-capacity.js.map +0 -1
- package/dist/src/inference/device-reservation.js +0 -58
- package/dist/src/inference/device-reservation.js.map +0 -1
- package/dist/src/inference/doctor.js +0 -95
- package/dist/src/inference/doctor.js.map +0 -1
- package/dist/src/inference/generation-recovery.js +0 -83
- package/dist/src/inference/generation-recovery.js.map +0 -1
- package/dist/src/inference/managed-launcher.js +0 -35
- package/dist/src/inference/managed-launcher.js.map +0 -1
- package/dist/src/inference/materialize.js +0 -66
- package/dist/src/inference/materialize.js.map +0 -1
- package/dist/src/inference/model-location.js +0 -34
- package/dist/src/inference/model-location.js.map +0 -1
- package/dist/src/inference/node-client.js +0 -167
- package/dist/src/inference/node-client.js.map +0 -1
- package/dist/src/inference/node-registry.js +0 -79
- package/dist/src/inference/node-registry.js.map +0 -1
- package/dist/src/inference/observation.js +0 -79
- package/dist/src/inference/observation.js.map +0 -1
- package/dist/src/inference/preflight.js +0 -132
- package/dist/src/inference/preflight.js.map +0 -1
- package/dist/src/inference/process-sglang.js +0 -169
- package/dist/src/inference/process-sglang.js.map +0 -1
- package/dist/src/inference/protocol-probe.js +0 -29
- package/dist/src/inference/protocol-probe.js.map +0 -1
- package/dist/src/inference/remote-model-store.js +0 -24
- package/dist/src/inference/remote-model-store.js.map +0 -1
- package/dist/src/inference/runtime-catalog.js +0 -41
- package/dist/src/inference/runtime-catalog.js.map +0 -1
- package/dist/src/inference/runtime-store.js +0 -93
- package/dist/src/inference/runtime-store.js.map +0 -1
- package/dist/src/inference/service-attachment.js +0 -46
- package/dist/src/inference/service-attachment.js.map +0 -1
- package/dist/src/inference/service-inspection.js +0 -38
- package/dist/src/inference/service-inspection.js.map +0 -1
- package/dist/src/inference/sglang.js +0 -279
- package/dist/src/inference/sglang.js.map +0 -1
- package/dist/src/inference/supervisor.js +0 -460
- package/dist/src/inference/supervisor.js.map +0 -1
- package/dist/src/model-access/local-gateway-request.js +0 -139
- package/dist/src/model-access/local-gateway-request.js.map +0 -1
- package/dist/src/model-access/local-gateway.js +0 -323
- package/dist/src/model-access/local-gateway.js.map +0 -1
- package/dist/src/runs/local-inference-run.js +0 -53
- package/dist/src/runs/local-inference-run.js.map +0 -1
|
@@ -1,120 +1,7 @@
|
|
|
1
|
-
import { availableParallelism } from "node:os";
|
|
2
1
|
import path from "node:path";
|
|
3
|
-
import { HitchError,
|
|
2
|
+
import { HitchError, readJSON, statePaths } from "../foundation/index.js";
|
|
4
3
|
import { inferenceLockIdentity, parseModelNodeBinding } from "./manifest.js";
|
|
5
|
-
|
|
6
|
-
if (runtime.backend !== options.backend || (runtime.package.kind !== "oci" && runtime.schema_version !== "2")) {
|
|
7
|
-
throw new TypeError("runtime backend does not match the lock request");
|
|
8
|
-
}
|
|
9
|
-
if (options.modelNode && (options.backend !== "cuda" || !options.deviceConstraint || runtime.schema_version !== "2"
|
|
10
|
-
|| runtime.package.kind !== "python-env" || runtime.package.environment_digest !== options.modelNode.runtime_digest)) {
|
|
11
|
-
throw new TypeError("model node lock requires its observed Python CUDA runtime and explicit GPU");
|
|
12
|
-
}
|
|
13
|
-
if (model.dtype === "unknown") {
|
|
14
|
-
throw new HitchError("model config must declare torch_dtype", { code: "inference_model_unsupported", exitCode: 2 });
|
|
15
|
-
}
|
|
16
|
-
const throughput = options.profile === "throughput";
|
|
17
|
-
const context = Math.min(8_192, model.context_tokens ?? 8_192);
|
|
18
|
-
const maxRunning = throughput ? options.backend === "cuda" ? 8 : 2 : 1;
|
|
19
|
-
const weights = model.files.filter((file) => file.path.endsWith(".safetensors")).reduce((total, file) => total + file.size, 0);
|
|
20
|
-
const memoryBytes = Math.max(2 * 1024 ** 3, Math.ceil(weights * 1.25 + 1024 ** 3));
|
|
21
|
-
const parser = toolParserFor(model.model_type);
|
|
22
|
-
const cpuThreads = Math.max(1, Math.min(options.cpuThreads ?? availableParallelism(), 8));
|
|
23
|
-
const platform = options.backend === "cpu"
|
|
24
|
-
? {
|
|
25
|
-
backend: "cpu",
|
|
26
|
-
cpu_threads: cpuThreads,
|
|
27
|
-
numa_policy: "single-node",
|
|
28
|
-
cpu_feature_requirement: "amx",
|
|
29
|
-
overlap_schedule: false,
|
|
30
|
-
}
|
|
31
|
-
: {
|
|
32
|
-
backend: "cuda",
|
|
33
|
-
...(options.deviceConstraint ? { device_constraint: options.deviceConstraint } : {}),
|
|
34
|
-
mem_fraction_static: 0.8,
|
|
35
|
-
overlap_schedule: throughput,
|
|
36
|
-
cuda_graph: throughput ? "enabled" : "disabled",
|
|
37
|
-
};
|
|
38
|
-
const withoutIdentity = {
|
|
39
|
-
schema_version: options.modelNode ? "2" : "1",
|
|
40
|
-
...(options.modelNode ? { model_node: parseModelNodeBinding(options.modelNode) } : {}),
|
|
41
|
-
engine: "sglang",
|
|
42
|
-
model_id: model.model_id,
|
|
43
|
-
runtime_id: runtime.runtime_id,
|
|
44
|
-
profile: options.profile,
|
|
45
|
-
execution: {
|
|
46
|
-
platform,
|
|
47
|
-
load_format: "safetensors",
|
|
48
|
-
dtype: model.dtype,
|
|
49
|
-
quantization: model.quantization,
|
|
50
|
-
tensor_parallel_size: 1,
|
|
51
|
-
data_parallel_size: 1,
|
|
52
|
-
pipeline_parallel_size: 1,
|
|
53
|
-
context_tokens_per_request: context,
|
|
54
|
-
max_running_requests: maxRunning,
|
|
55
|
-
max_queued_requests: maxRunning,
|
|
56
|
-
max_total_tokens: context * (maxRunning + 1),
|
|
57
|
-
chunked_prefill_size: throughput ? Math.min(4_096, context) : -1,
|
|
58
|
-
max_prefill_tokens: context,
|
|
59
|
-
kv_cache_dtype: model.dtype === "bfloat16" || model.dtype === "bf16" ? "bfloat16" : "auto",
|
|
60
|
-
attention_backend: options.backend === "cpu" ? "intel_amx" : "flashinfer",
|
|
61
|
-
sampling_backend: options.backend === "cpu" ? "pytorch" : "flashinfer",
|
|
62
|
-
deterministic_inference: false,
|
|
63
|
-
prefix_cache: {
|
|
64
|
-
mode: throughput ? "radix" : "disabled",
|
|
65
|
-
scope: "eval",
|
|
66
|
-
initial_state: "empty",
|
|
67
|
-
},
|
|
68
|
-
hicache: false,
|
|
69
|
-
speculative_decoding: false,
|
|
70
|
-
cpu_offload_gb: 0,
|
|
71
|
-
startup_timeout_ms: 600_000,
|
|
72
|
-
queue_timeout_ms: 60_000,
|
|
73
|
-
request_timeout_ms: 600_000,
|
|
74
|
-
idle_ttl_ms: 60_000,
|
|
75
|
-
},
|
|
76
|
-
generation: {
|
|
77
|
-
temperature: 0,
|
|
78
|
-
top_p: 1,
|
|
79
|
-
top_k: 0,
|
|
80
|
-
min_p: 0,
|
|
81
|
-
repetition_penalty: 1,
|
|
82
|
-
seed: 0,
|
|
83
|
-
max_output_tokens: Math.min(2_048, Math.max(1, Math.floor(context / 4))),
|
|
84
|
-
override_policy: "reject-conflicts",
|
|
85
|
-
},
|
|
86
|
-
protocol: {
|
|
87
|
-
api: options.api ?? "responses",
|
|
88
|
-
streaming: true,
|
|
89
|
-
tool_calls: parser !== null,
|
|
90
|
-
parallel_tool_calls: false,
|
|
91
|
-
input_modalities: ["text"],
|
|
92
|
-
tool_call_parser: parser,
|
|
93
|
-
reasoning_parser: null,
|
|
94
|
-
compatibility_profile_id: sha256JSON({
|
|
95
|
-
engine: "sglang",
|
|
96
|
-
runtime_id: runtime.runtime_id,
|
|
97
|
-
model_type: model.model_type,
|
|
98
|
-
template_digest: model.template_digest,
|
|
99
|
-
api: options.api ?? "responses",
|
|
100
|
-
tool_call_parser: parser,
|
|
101
|
-
}),
|
|
102
|
-
},
|
|
103
|
-
resources: {
|
|
104
|
-
cpu_millis: options.backend === "cpu" ? cpuThreads * 1_000 : 2_000,
|
|
105
|
-
memory_bytes: memoryBytes,
|
|
106
|
-
container_slots: options.modelNode ? 0 : 1,
|
|
107
|
-
build_slots: 0,
|
|
108
|
-
...(options.backend === "cuda" ? { gpu_count: 1 } : {}),
|
|
109
|
-
ephemeral_disk_bytes: 4 * 1024 ** 3,
|
|
110
|
-
},
|
|
111
|
-
};
|
|
112
|
-
return { ...withoutIdentity, inference_id: inferenceLockIdentity(withoutIdentity) };
|
|
113
|
-
}
|
|
114
|
-
export async function persistInferenceLock(root, lock) {
|
|
115
|
-
const directory = path.join(statePaths(root).inferenceLocks, lock.inference_id.slice("sha256:".length));
|
|
116
|
-
await atomicWriteJSON(path.join(directory, "lock.json"), lock);
|
|
117
|
-
}
|
|
4
|
+
/** Read historical locks without installing their former model runtime. */
|
|
118
5
|
export async function loadInferenceLock(root, inferenceId) {
|
|
119
6
|
let value;
|
|
120
7
|
try {
|
|
@@ -130,22 +17,26 @@ export async function loadInferenceLock(root, inferenceId) {
|
|
|
130
17
|
return lock;
|
|
131
18
|
}
|
|
132
19
|
export function validateInferenceLockShape(value) {
|
|
133
|
-
const record = exact(value, ["schema_version", "engine", "model_id", "runtime_id", "inference_id", "profile", "execution", "generation", "protocol", "resources", "model_node"], "inference lock");
|
|
134
|
-
if (!["1", "2"].includes(String(record.schema_version)) || record.engine !== "sglang"
|
|
20
|
+
const record = exact(value, ["schema_version", "engine", "model_id", "runtime_id", "inference_id", "profile", "execution", "generation", "protocol", "resources", "model_node", "topology"], "inference lock");
|
|
21
|
+
if (!["1", "2", "3"].includes(String(record.schema_version)) || record.engine !== "sglang"
|
|
135
22
|
|| !digest(record.model_id) || !digest(record.runtime_id) || !digest(record.inference_id)
|
|
136
23
|
|| (record.profile !== "baseline" && record.profile !== "throughput"))
|
|
137
24
|
throw lockError("inference lock identity is invalid");
|
|
138
|
-
const execution = parseExecution(record.execution);
|
|
25
|
+
const execution = parseExecution(record.execution, record.schema_version === "3");
|
|
139
26
|
const generation = parseGeneration(record.generation);
|
|
140
27
|
const protocol = parseProtocol(record.protocol);
|
|
141
|
-
const modelNode = record.schema_version
|
|
28
|
+
const modelNode = record.schema_version !== "1" ? parseModelNodeBinding(record.model_node) : undefined;
|
|
142
29
|
if (!modelNode && record.model_node !== undefined)
|
|
143
30
|
throw lockError("legacy inference lock cannot contain a model node");
|
|
144
31
|
if (modelNode && (execution.platform.backend !== "cuda" || !execution.platform.device_constraint))
|
|
145
32
|
throw lockError("model node requires an explicit physical CUDA device");
|
|
146
|
-
const
|
|
33
|
+
const topology = record.schema_version === "3" ? parseInferencePoolTopology(record.topology, execution) : undefined;
|
|
34
|
+
if (!topology && record.topology !== undefined)
|
|
35
|
+
throw lockError("legacy inference locks cannot contain a replica pool");
|
|
36
|
+
const gpuCount = topology ? topology.replicas.length * execution.tensor_parallel_size : 1;
|
|
37
|
+
const resources = parseResources(record.resources, execution.platform.backend, !!modelNode, gpuCount);
|
|
147
38
|
const lock = {
|
|
148
|
-
schema_version:
|
|
39
|
+
schema_version: record.schema_version, ...(topology ? { topology } : {}), ...(modelNode ? { model_node: modelNode } : {}), engine: "sglang", model_id: record.model_id, runtime_id: record.runtime_id,
|
|
149
40
|
inference_id: record.inference_id, profile: record.profile, execution, generation, protocol, resources,
|
|
150
41
|
};
|
|
151
42
|
validateProfile(lock);
|
|
@@ -154,14 +45,37 @@ export function validateInferenceLockShape(value) {
|
|
|
154
45
|
throw lockError("inference lock identity mismatch");
|
|
155
46
|
return lock;
|
|
156
47
|
}
|
|
157
|
-
function
|
|
48
|
+
function parseDevices(value) {
|
|
49
|
+
if (!Array.isArray(value) || value.length === 0 || value.some(v => typeof v !== "string" || !/^GPU-[A-Za-z0-9-]+$/.test(v))
|
|
50
|
+
|| new Set(value).size !== value.length)
|
|
51
|
+
throw lockError("replica devices require unique physical GPU UUIDs");
|
|
52
|
+
return [...value];
|
|
53
|
+
}
|
|
54
|
+
export function parseInferencePoolTopology(value, execution) {
|
|
55
|
+
const record = exact(value, ["replicas", "routing", "max_running_requests", "max_queued_requests"], "inference pool");
|
|
56
|
+
if (record.routing !== "least-active" || !Array.isArray(record.replicas) || record.replicas.length === 0)
|
|
57
|
+
throw lockError("invalid inference pool routing/replicas");
|
|
58
|
+
const replicas = record.replicas.map(value => ({ devices: parseDevices(exact(value, ["devices"], "inference replica").devices) }));
|
|
59
|
+
const tp = replicas[0].devices.length;
|
|
60
|
+
const devices = replicas.flatMap(r => r.devices);
|
|
61
|
+
if (replicas.some(r => r.devices.length !== tp) || new Set(devices).size !== devices.length)
|
|
62
|
+
throw lockError("replicas must use disjoint equally sized TP groups");
|
|
63
|
+
const running = positiveInteger(record.max_running_requests, "pool running capacity");
|
|
64
|
+
const queued = nonNegativeInteger(record.max_queued_requests, "pool queue capacity");
|
|
65
|
+
if (execution && (execution.platform.backend !== "cuda" || execution.tensor_parallel_size !== tp
|
|
66
|
+
|| JSON.stringify(execution.platform.device_constraints) !== JSON.stringify(replicas[0].devices)
|
|
67
|
+
|| execution.platform.device_constraint !== replicas[0].devices[0] || running > replicas.length * execution.max_running_requests))
|
|
68
|
+
throw lockError("pool does not match per-engine execution capacity and TP placement");
|
|
69
|
+
return { replicas, routing: "least-active", max_running_requests: running, max_queued_requests: queued };
|
|
70
|
+
}
|
|
71
|
+
function parseExecution(value, pool) {
|
|
158
72
|
const record = exact(value, [
|
|
159
73
|
"platform", "load_format", "dtype", "quantization", "tensor_parallel_size", "data_parallel_size", "pipeline_parallel_size",
|
|
160
74
|
"context_tokens_per_request", "max_running_requests", "max_queued_requests", "max_total_tokens", "chunked_prefill_size",
|
|
161
75
|
"max_prefill_tokens", "kv_cache_dtype", "attention_backend", "sampling_backend", "deterministic_inference", "prefix_cache",
|
|
162
76
|
"hicache", "speculative_decoding", "cpu_offload_gb", "startup_timeout_ms", "queue_timeout_ms", "request_timeout_ms", "idle_ttl_ms",
|
|
163
77
|
], "inference execution");
|
|
164
|
-
if (record.load_format !== "safetensors" || record.tensor_parallel_size !== 1 || record.data_parallel_size !== 1
|
|
78
|
+
if (record.load_format !== "safetensors" || (pool ? !Number.isSafeInteger(record.tensor_parallel_size) || record.tensor_parallel_size < 1 : record.tensor_parallel_size !== 1) || record.data_parallel_size !== 1
|
|
165
79
|
|| record.pipeline_parallel_size !== 1 || typeof record.dtype !== "string" || !record.dtype
|
|
166
80
|
|| record.quantization !== null && (typeof record.quantization !== "string" || !record.quantization)
|
|
167
81
|
|| typeof record.deterministic_inference !== "boolean" || record.hicache !== false
|
|
@@ -185,13 +99,13 @@ function parseExecution(value) {
|
|
|
185
99
|
|| record.max_prefill_tokens > record.context_tokens_per_request) {
|
|
186
100
|
throw lockError("inference token budgets are inconsistent");
|
|
187
101
|
}
|
|
188
|
-
const platform = parsePlatform(record.platform);
|
|
102
|
+
const platform = parsePlatform(record.platform, pool);
|
|
189
103
|
return {
|
|
190
104
|
platform,
|
|
191
105
|
load_format: "safetensors",
|
|
192
106
|
dtype: record.dtype,
|
|
193
107
|
quantization: record.quantization,
|
|
194
|
-
tensor_parallel_size:
|
|
108
|
+
tensor_parallel_size: record.tensor_parallel_size, data_parallel_size: 1, pipeline_parallel_size: 1,
|
|
195
109
|
context_tokens_per_request: record.context_tokens_per_request,
|
|
196
110
|
max_running_requests: record.max_running_requests,
|
|
197
111
|
max_queued_requests: record.max_queued_requests,
|
|
@@ -210,7 +124,7 @@ function parseExecution(value) {
|
|
|
210
124
|
idle_ttl_ms: record.idle_ttl_ms,
|
|
211
125
|
};
|
|
212
126
|
}
|
|
213
|
-
function parsePlatform(value) {
|
|
127
|
+
function parsePlatform(value, pool) {
|
|
214
128
|
const base = exactRecord(value, "inference platform");
|
|
215
129
|
if (base.backend === "cpu") {
|
|
216
130
|
const record = exact(base, ["backend", "cpu_threads", "numa_policy", "cpu_feature_requirement", "overlap_schedule"], "CPU inference platform");
|
|
@@ -219,13 +133,13 @@ function parsePlatform(value) {
|
|
|
219
133
|
return { backend: "cpu", cpu_threads: positiveInteger(record.cpu_threads, "CPU inference threads"), numa_policy: "single-node", cpu_feature_requirement: "amx", overlap_schedule: false };
|
|
220
134
|
}
|
|
221
135
|
if (base.backend === "cuda") {
|
|
222
|
-
const record = exact(base, ["backend", "device_constraint", "mem_fraction_static", "overlap_schedule", "cuda_graph"], "CUDA inference platform");
|
|
136
|
+
const record = exact(base, ["backend", "device_constraint", ...(pool ? ["device_constraints"] : []), "mem_fraction_static", "overlap_schedule", "cuda_graph"], "CUDA inference platform");
|
|
223
137
|
if (record.device_constraint !== undefined && (typeof record.device_constraint !== "string" || !record.device_constraint)
|
|
224
138
|
|| typeof record.mem_fraction_static !== "number" || !Number.isFinite(record.mem_fraction_static)
|
|
225
139
|
|| record.mem_fraction_static <= 0 || record.mem_fraction_static > 1 || typeof record.overlap_schedule !== "boolean"
|
|
226
140
|
|| record.cuda_graph !== "enabled" && record.cuda_graph !== "disabled")
|
|
227
141
|
throw lockError("CUDA inference platform is invalid");
|
|
228
|
-
return { backend: "cuda", ...(record.device_constraint ? { device_constraint: record.device_constraint } : {}), mem_fraction_static: record.mem_fraction_static, overlap_schedule: record.overlap_schedule, cuda_graph: record.cuda_graph };
|
|
142
|
+
return { backend: "cuda", ...(pool ? { device_constraints: parseDevices(record.device_constraints) } : {}), ...(record.device_constraint ? { device_constraint: record.device_constraint } : {}), mem_fraction_static: record.mem_fraction_static, overlap_schedule: record.overlap_schedule, cuda_graph: record.cuda_graph };
|
|
229
143
|
}
|
|
230
144
|
if (base.backend === "metal") {
|
|
231
145
|
const record = exact(base, ["backend", "mlx_quantization", "overlap_schedule"], "Metal inference platform");
|
|
@@ -264,7 +178,7 @@ function parseProtocol(value) {
|
|
|
264
178
|
input_modalities: ["text"], tool_call_parser: record.tool_call_parser,
|
|
265
179
|
reasoning_parser: record.reasoning_parser, compatibility_profile_id: record.compatibility_profile_id };
|
|
266
180
|
}
|
|
267
|
-
function parseResources(value, backend, processNode) {
|
|
181
|
+
function parseResources(value, backend, processNode, gpuCount) {
|
|
268
182
|
const record = exact(value, ["cpu_millis", "memory_bytes", "container_slots", "build_slots", "gpu_count", "ephemeral_disk_bytes"], "inference resources");
|
|
269
183
|
const resources = {
|
|
270
184
|
cpu_millis: positiveInteger(record.cpu_millis, "inference CPU reservation"),
|
|
@@ -274,7 +188,7 @@ function parseResources(value, backend, processNode) {
|
|
|
274
188
|
...(record.gpu_count === undefined ? {} : { gpu_count: nonNegativeInteger(record.gpu_count, "inference GPU reservation") }),
|
|
275
189
|
...(record.ephemeral_disk_bytes === undefined ? {} : { ephemeral_disk_bytes: nonNegativeInteger(record.ephemeral_disk_bytes, "inference disk reservation") }),
|
|
276
190
|
};
|
|
277
|
-
if (resources.build_slots !== 0 || processNode && resources.container_slots !== 0 || backend === "cuda" && resources.gpu_count !==
|
|
191
|
+
if (resources.build_slots !== 0 || processNode && resources.container_slots !== 0 || backend === "cuda" && resources.gpu_count !== gpuCount
|
|
278
192
|
|| backend !== "cuda" && (resources.gpu_count ?? 0) !== 0)
|
|
279
193
|
throw lockError("inference resource/backend combination is invalid");
|
|
280
194
|
return resources;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../src/inference/lock.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../src/inference/lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { invalidInput, sha256JSON } from "../foundation/index.js";
|
|
2
|
+
function object(value, label) {
|
|
3
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
4
|
+
throw invalidInput(`${label} must be an object`);
|
|
5
|
+
return value;
|
|
6
|
+
}
|
|
7
|
+
function exact(value, fields, label) {
|
|
8
|
+
if (Object.keys(value).some(key => !fields.includes(key)))
|
|
9
|
+
throw invalidInput(`${label} has unknown fields`);
|
|
10
|
+
}
|
|
11
|
+
function text(value, label) {
|
|
12
|
+
if (typeof value !== "string" || !value || value.length > 4096 || /[\0\r\n]/.test(value))
|
|
13
|
+
throw invalidInput(`${label} must be a non-empty string`);
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
export function parseEndpointConfig(value) {
|
|
17
|
+
const r = object(value, "endpoint");
|
|
18
|
+
exact(r, ["schema_version", "base_url", "wire_model", "api", "auth", "capabilities"], "endpoint");
|
|
19
|
+
let url;
|
|
20
|
+
try {
|
|
21
|
+
url = new URL(text(r.base_url, "base_url"));
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
throw invalidInput("endpoint base_url must be an absolute URL");
|
|
25
|
+
}
|
|
26
|
+
if (!["http:", "https:"].includes(url.protocol) || url.username || url.password || url.search || url.hash)
|
|
27
|
+
throw invalidInput("endpoint base_url cannot contain credentials, query or fragment");
|
|
28
|
+
if (r.schema_version !== "1" || !["responses", "chat-completions"].includes(String(r.api)))
|
|
29
|
+
throw invalidInput("endpoint schema_version/api is invalid");
|
|
30
|
+
const auth = object(r.auth, "endpoint auth");
|
|
31
|
+
if (auth.kind === "none")
|
|
32
|
+
exact(auth, ["kind"], "endpoint auth");
|
|
33
|
+
else if (auth.kind === "env" && typeof auth.name === "string" && /^[A-Za-z_][A-Za-z0-9_]*$/.test(auth.name))
|
|
34
|
+
exact(auth, ["kind", "name"], "endpoint auth");
|
|
35
|
+
else
|
|
36
|
+
throw invalidInput("endpoint auth must be explicit none or an environment variable reference");
|
|
37
|
+
const cap = object(r.capabilities, "endpoint capabilities");
|
|
38
|
+
exact(cap, ["streaming", "tool_calls", "parallel_tool_calls", "input_modalities"], "endpoint capabilities");
|
|
39
|
+
if ([cap.streaming, cap.tool_calls, cap.parallel_tool_calls].some(v => typeof v !== "boolean") || JSON.stringify(cap.input_modalities) !== '["text"]'
|
|
40
|
+
|| cap.parallel_tool_calls && !cap.tool_calls)
|
|
41
|
+
throw invalidInput("endpoint capabilities must declare text and explicit protocol features");
|
|
42
|
+
if (cap.parallel_tool_calls)
|
|
43
|
+
throw invalidInput("parallel function calls are not verified by this release; declare parallel_tool_calls=false");
|
|
44
|
+
return { schema_version: "1", base_url: url.toString().replace(/\/+$/, ""), wire_model: text(r.wire_model, "wire_model"),
|
|
45
|
+
api: r.api, auth: auth.kind === "none" ? { kind: "none" } : { kind: "env", name: auth.name },
|
|
46
|
+
capabilities: { streaming: cap.streaming, tool_calls: cap.tool_calls, parallel_tool_calls: cap.parallel_tool_calls, input_modalities: ["text"] } };
|
|
47
|
+
}
|
|
48
|
+
export function parseGeneration(value = {}) {
|
|
49
|
+
const r = object(value, "generation");
|
|
50
|
+
exact(r, ["temperature", "top_p", "top_k", "min_p", "repetition_penalty", "seed", "max_output_tokens"], "generation");
|
|
51
|
+
for (const [key, v] of Object.entries(r)) {
|
|
52
|
+
if (typeof v !== "number" || !Number.isFinite(v))
|
|
53
|
+
throw invalidInput(`generation ${key} must be finite`);
|
|
54
|
+
if (["max_output_tokens", "top_k"].includes(key) && (!Number.isSafeInteger(v) || v < (key === "max_output_tokens" ? 1 : -1)))
|
|
55
|
+
throw invalidInput(`generation ${key} is invalid`);
|
|
56
|
+
}
|
|
57
|
+
return { ...r };
|
|
58
|
+
}
|
|
59
|
+
export function parseEndpointBinding(value) {
|
|
60
|
+
const r = object(value, "endpoint binding");
|
|
61
|
+
exact(r, ["schema_version", "kind", "endpoint_ref", "endpoint_revision", "api", "wire_model", "capabilities", "generation", "deployment_receipt"], "endpoint binding");
|
|
62
|
+
if (r.schema_version !== "1" || r.kind !== "external-endpoint" || typeof r.endpoint_ref !== "string"
|
|
63
|
+
|| !/^endpoint\/[a-z0-9][a-z0-9._-]{0,63}(?:@sha256:[a-f0-9]{64})?$/.test(r.endpoint_ref)
|
|
64
|
+
|| typeof r.endpoint_revision !== "string" || !/^sha256:[a-f0-9]{64}$/.test(r.endpoint_revision))
|
|
65
|
+
throw invalidInput("endpoint binding identity is invalid");
|
|
66
|
+
if (r.endpoint_ref.includes("@") && r.endpoint_ref.split("@")[1] !== r.endpoint_revision)
|
|
67
|
+
throw invalidInput("pinned endpoint ref differs from endpoint_revision");
|
|
68
|
+
const config = parseEndpointConfig({ schema_version: "1", base_url: "http://endpoint.invalid", wire_model: r.wire_model, api: r.api, auth: { kind: "none" }, capabilities: r.capabilities });
|
|
69
|
+
const result = { schema_version: "1", kind: "external-endpoint", endpoint_ref: r.endpoint_ref,
|
|
70
|
+
endpoint_revision: r.endpoint_revision, api: config.api, wire_model: config.wire_model,
|
|
71
|
+
capabilities: config.capabilities, generation: parseGeneration(r.generation) };
|
|
72
|
+
if (r.deployment_receipt !== undefined) {
|
|
73
|
+
const receipt = object(r.deployment_receipt, "deployment receipt");
|
|
74
|
+
exact(receipt, ["schema_version", "model_digest", "wire_model", "deployment_ref", "source", "service_config"], "deployment receipt");
|
|
75
|
+
if (receipt.schema_version !== "1" || typeof receipt.model_digest !== "string" || !/^sha256:[a-f0-9]{64}$/.test(receipt.model_digest)
|
|
76
|
+
|| receipt.wire_model !== config.wire_model)
|
|
77
|
+
throw invalidInput("deployment receipt model/wire model is invalid");
|
|
78
|
+
result.deployment_receipt = { schema_version: "1", model_digest: receipt.model_digest,
|
|
79
|
+
wire_model: config.wire_model, deployment_ref: text(receipt.deployment_ref, "deployment_ref"), source: text(receipt.source, "receipt source"),
|
|
80
|
+
service_config: parsePublicServiceConfig(receipt.service_config) };
|
|
81
|
+
}
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
export function parseReadyEndpointBinding(value) {
|
|
85
|
+
const { connection, ...publicValue } = object(value, "ready endpoint binding");
|
|
86
|
+
const binding = parseEndpointBinding(publicValue), c = object(connection, "endpoint connection");
|
|
87
|
+
exact(c, ["base_url", "auth"], "endpoint connection");
|
|
88
|
+
const config = parseEndpointConfig({ schema_version: "1", ...c, api: binding.api, wire_model: binding.wire_model, capabilities: binding.capabilities });
|
|
89
|
+
if (sha256JSON(config) !== binding.endpoint_revision)
|
|
90
|
+
throw invalidInput("endpoint revision does not match its immutable configuration");
|
|
91
|
+
return { ...binding, connection: { base_url: config.base_url, auth: config.auth } };
|
|
92
|
+
}
|
|
93
|
+
export function publicEndpointBinding(ready) {
|
|
94
|
+
const { connection: _connection, ...binding } = ready;
|
|
95
|
+
return parseEndpointBinding(binding);
|
|
96
|
+
}
|
|
97
|
+
export function endpointRequest(binding, payload) {
|
|
98
|
+
const generation = { ...binding.generation, ...(Array.isArray(payload.tools) && payload.tools.length ? { parallel_tool_calls: false } : {}) };
|
|
99
|
+
if (binding.api === "chat-completions" && generation.max_output_tokens !== undefined) {
|
|
100
|
+
const maxTokens = generation.max_output_tokens;
|
|
101
|
+
delete generation.max_output_tokens;
|
|
102
|
+
return { ...payload, ...generation, max_tokens: maxTokens, model: binding.wire_model };
|
|
103
|
+
}
|
|
104
|
+
return { ...payload, ...generation, model: binding.wire_model };
|
|
105
|
+
}
|
|
106
|
+
function parsePublicServiceConfig(value) {
|
|
107
|
+
const config = object(value, "service_config");
|
|
108
|
+
exact(config, ["engine", "engine_version", "engine_digest", "quantization", "tool_parser", "reasoning_parser", "tokenizer_digest", "chat_template_digest", "cache_policy", "isolation", "parsing"], "public service_config");
|
|
109
|
+
text(config.engine, "service_config engine");
|
|
110
|
+
const forbidden = /^(?:connection|base_url|url|auth|credentials?|secrets?|token|api_key|password|env|model_digest|wire_model|deployment_ref|endpoint_revision)$/i;
|
|
111
|
+
const walk = (item) => {
|
|
112
|
+
if (typeof item === "string" && /(?:https?|ssh|file):\/\//i.test(item))
|
|
113
|
+
throw invalidInput("public service_config cannot contain connection URLs");
|
|
114
|
+
if (Array.isArray(item))
|
|
115
|
+
for (const v of item)
|
|
116
|
+
walk(v);
|
|
117
|
+
else if (item && typeof item === "object")
|
|
118
|
+
for (const [key, v] of Object.entries(item)) {
|
|
119
|
+
if (forbidden.test(key))
|
|
120
|
+
throw invalidInput(`private/candidate-specific field is prohibited in public service_config: ${key}`);
|
|
121
|
+
walk(v);
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
walk(config);
|
|
125
|
+
return config;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=endpoint-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-contract.js","sourceRoot":"","sources":["../../../src/model-access/endpoint-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { chmod, lstat } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { atomicWriteJSON, ensureDir, HitchError, readJSON, withFileLock } from "../foundation/index.js";
|
|
4
|
+
const credentials = new WeakMap();
|
|
5
|
+
const directory = (root) => path.join(root, "private", "model-endpoints", "credentials");
|
|
6
|
+
const file = (root, binding) => path.join(directory(root), `${binding.endpoint_revision.slice(7)}.json`);
|
|
7
|
+
function failure() { throw new HitchError("immutable host endpoint credential is missing, unsafe or changed", { code: "endpoint_credential_conflict", exitCode: 12 }); }
|
|
8
|
+
async function readCredential(root, binding) {
|
|
9
|
+
if (binding.connection.auth.kind === "none")
|
|
10
|
+
return undefined;
|
|
11
|
+
let metadata;
|
|
12
|
+
try {
|
|
13
|
+
metadata = await lstat(file(root, binding));
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
if (error.code === "ENOENT")
|
|
17
|
+
return undefined;
|
|
18
|
+
throw error;
|
|
19
|
+
}
|
|
20
|
+
if (!metadata.isFile() || metadata.isSymbolicLink() || metadata.mode & 0o077 || process.getuid && metadata.uid !== process.getuid())
|
|
21
|
+
failure();
|
|
22
|
+
const value = await readJSON(file(root, binding));
|
|
23
|
+
if (value.schema_version !== "1" || value.endpoint_revision !== binding.endpoint_revision || value.auth_name !== binding.connection.auth.name
|
|
24
|
+
|| typeof value.credential !== "string" || !value.credential || /[\r\n\0]/.test(value.credential))
|
|
25
|
+
failure();
|
|
26
|
+
return value.credential;
|
|
27
|
+
}
|
|
28
|
+
/** Explicit host-only handoff, keyed by an immutable incarnation revision. */
|
|
29
|
+
export async function persistEndpointCredential(root, binding, env = process.env) {
|
|
30
|
+
if (binding.connection.auth.kind === "none")
|
|
31
|
+
return;
|
|
32
|
+
const name = binding.connection.auth.name, credential = env[name];
|
|
33
|
+
if (!credential || /[\r\n\0]/.test(credential))
|
|
34
|
+
failure();
|
|
35
|
+
await chmod(await ensureDir(directory(root)), 0o700);
|
|
36
|
+
await withFileLock(path.join(directory(root), "locks"), binding.endpoint_revision.slice(7), async () => {
|
|
37
|
+
const saved = await readCredential(root, binding);
|
|
38
|
+
if (saved !== undefined && saved !== credential)
|
|
39
|
+
failure();
|
|
40
|
+
if (saved === undefined) {
|
|
41
|
+
await atomicWriteJSON(file(root, binding), { schema_version: "1", endpoint_revision: binding.endpoint_revision, auth_name: name, credential });
|
|
42
|
+
await chmod(file(root, binding), 0o600);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
credentials.set(binding, credential);
|
|
46
|
+
}
|
|
47
|
+
export async function restoreEndpointCredential(root, binding) {
|
|
48
|
+
const value = await readCredential(root, binding);
|
|
49
|
+
if (value !== undefined)
|
|
50
|
+
credentials.set(binding, value);
|
|
51
|
+
return binding;
|
|
52
|
+
}
|
|
53
|
+
export const persistedEndpointCredential = (binding) => credentials.get(binding);
|
|
54
|
+
//# sourceMappingURL=endpoint-credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-credentials.js","sourceRoot":"","sources":["../../../src/model-access/endpoint-credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { HitchError } from "../foundation/index.js";
|
|
2
|
+
/** Bounded one-shot readiness probe decoder, not a runtime protocol conversion service. */
|
|
3
|
+
export async function endpointProbeStream(response, responses, wireModel) {
|
|
4
|
+
if (!response.headers.get("content-type")?.includes("text/event-stream")) {
|
|
5
|
+
await response.body?.cancel();
|
|
6
|
+
throw failure("endpoint does not support SSE");
|
|
7
|
+
}
|
|
8
|
+
let raw = "", bytes = 0;
|
|
9
|
+
const decoder = new TextDecoder();
|
|
10
|
+
for await (const chunk of response.body) {
|
|
11
|
+
bytes += chunk.byteLength;
|
|
12
|
+
if (bytes > 8 * 1024 * 1024)
|
|
13
|
+
throw failure("endpoint verification stream exceeds 8 MiB");
|
|
14
|
+
raw += decoder.decode(chunk, { stream: true });
|
|
15
|
+
}
|
|
16
|
+
raw += decoder.decode();
|
|
17
|
+
let completed, done = false, finish, usage, text = "", argumentsText = "";
|
|
18
|
+
const calls = new Map();
|
|
19
|
+
for (const block of raw.split(/\r?\n\r?\n/)) {
|
|
20
|
+
const data = block.split(/\r?\n/).filter(line => line.startsWith("data:")).map(line => line.slice(5).trimStart()).join("\n");
|
|
21
|
+
if (!data)
|
|
22
|
+
continue;
|
|
23
|
+
if (data === "[DONE]") {
|
|
24
|
+
done = true;
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const event = JSON.parse(data);
|
|
28
|
+
if (event.error || event.type === "error" || event.type === "response.failed")
|
|
29
|
+
throw failure("endpoint SSE reported an error");
|
|
30
|
+
const nested = event.response && typeof event.response === "object" ? event.response : undefined;
|
|
31
|
+
if (event.model !== undefined && event.model !== wireModel || nested?.model !== undefined && nested.model !== wireModel)
|
|
32
|
+
throw failure("endpoint SSE returned a different wire model");
|
|
33
|
+
if (nested?.error || nested?.status === "failed")
|
|
34
|
+
throw failure("endpoint SSE reported a failed response");
|
|
35
|
+
if (responses) {
|
|
36
|
+
if (event.type === "response.function_call_arguments.delta")
|
|
37
|
+
argumentsText += String(event.delta ?? "");
|
|
38
|
+
if (event.type === "response.output_text.delta")
|
|
39
|
+
text += String(event.delta ?? "");
|
|
40
|
+
if (event.type === "response.completed" || event.type === "response.incomplete")
|
|
41
|
+
completed = event.response;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
if (event.usage)
|
|
45
|
+
usage = event.usage;
|
|
46
|
+
for (const choice of (event.choices ?? [])) {
|
|
47
|
+
if (choice.finish_reason)
|
|
48
|
+
finish = choice.finish_reason;
|
|
49
|
+
text += choice.delta?.content ?? "";
|
|
50
|
+
for (const delta of choice.delta?.tool_calls ?? []) {
|
|
51
|
+
const call = calls.get(delta.index) ?? { id: "", type: "function", function: { name: "", arguments: "" } };
|
|
52
|
+
call.id += delta.id ?? "";
|
|
53
|
+
call.function.name += delta.function?.name ?? "";
|
|
54
|
+
call.function.arguments += delta.function?.arguments ?? "";
|
|
55
|
+
argumentsText += delta.function?.arguments ?? "";
|
|
56
|
+
calls.set(delta.index, call);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (responses && !completed || !responses && (!done || !finish))
|
|
62
|
+
throw failure("endpoint SSE ended without a completion event");
|
|
63
|
+
return { body: responses ? completed : { model: wireModel, usage, choices: [{ finish_reason: finish, message: { role: "assistant", content: text || null, ...(calls.size ? { tool_calls: [...calls.values()] } : {}) } }] }, toolArguments: argumentsText, text };
|
|
64
|
+
}
|
|
65
|
+
function failure(message) { return new HitchError(message, { code: "endpoint_verification_failed", exitCode: 2 }); }
|
|
66
|
+
//# sourceMappingURL=endpoint-probe-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-probe-stream.js","sourceRoot":"","sources":["../../../src/model-access/endpoint-probe-stream.ts"],"names":[],"mappings":"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"}
|