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.
Files changed (361) hide show
  1. package/README.md +7 -28
  2. package/README.zh-CN.md +6 -26
  3. package/dist/scripts/benchmark-dataset-verification.js +118 -0
  4. package/dist/scripts/benchmark-dataset-verification.js.map +1 -0
  5. package/dist/scripts/canary-external-endpoint.js +56 -0
  6. package/dist/scripts/canary-external-endpoint.js.map +1 -0
  7. package/dist/scripts/canary-native-training.js +8 -6
  8. package/dist/scripts/canary-native-training.js.map +1 -1
  9. package/dist/scripts/canary-remote-training.js +8 -6
  10. package/dist/scripts/canary-remote-training.js.map +1 -1
  11. package/dist/scripts/check-architecture.js +1 -1
  12. package/dist/scripts/check-architecture.js.map +1 -1
  13. package/dist/src/adapters/providers/codex.js +5 -2
  14. package/dist/src/adapters/providers/codex.js.map +1 -1
  15. package/dist/src/adapters/providers/model-call.js +1 -2
  16. package/dist/src/adapters/providers/model-call.js.map +1 -1
  17. package/dist/src/adapters/providers/training-tool.js +2 -0
  18. package/dist/src/adapters/providers/training-tool.js.map +1 -1
  19. package/dist/src/backends/harbor/artifact-pins.js +42 -0
  20. package/dist/src/backends/harbor/artifact-pins.js.map +1 -0
  21. package/dist/src/backends/harbor/backend.js +16 -8
  22. package/dist/src/backends/harbor/backend.js.map +1 -1
  23. package/dist/src/backends/harbor/bound-credential-helper.js +24 -0
  24. package/dist/src/backends/harbor/bound-credential-helper.js.map +1 -0
  25. package/dist/src/backends/harbor/credential-snapshot.js +71 -0
  26. package/dist/src/backends/harbor/credential-snapshot.js.map +1 -0
  27. package/dist/src/backends/harbor/environment-config.js +25 -2
  28. package/dist/src/backends/harbor/environment-config.js.map +1 -1
  29. package/dist/src/backends/harbor/environment-files.js +143 -0
  30. package/dist/src/backends/harbor/environment-files.js.map +1 -0
  31. package/dist/src/backends/harbor/evaluation-binding.js +160 -0
  32. package/dist/src/backends/harbor/evaluation-binding.js.map +1 -0
  33. package/dist/src/backends/harbor/host-credential-helper.js +5 -0
  34. package/dist/src/backends/harbor/host-credential-helper.js.map +1 -1
  35. package/dist/src/backends/harbor/index.js +2 -0
  36. package/dist/src/backends/harbor/index.js.map +1 -1
  37. package/dist/src/backends/harbor/model-proxy-config.js +3 -18
  38. package/dist/src/backends/harbor/model-proxy-config.js.map +1 -1
  39. package/dist/src/backends/harbor/portable-regrade.js +15 -3
  40. package/dist/src/backends/harbor/portable-regrade.js.map +1 -1
  41. package/dist/src/backends/harbor/python-runtime.js +71 -0
  42. package/dist/src/backends/harbor/python-runtime.js.map +1 -0
  43. package/dist/src/backends/harbor/tools.js +6 -4
  44. package/dist/src/backends/harbor/tools.js.map +1 -1
  45. package/dist/src/backends/index.js +3 -0
  46. package/dist/src/backends/index.js.map +1 -1
  47. package/dist/src/cli/arguments.js +30 -30
  48. package/dist/src/cli/arguments.js.map +1 -1
  49. package/dist/src/cli/commands/capabilities.js +7 -3
  50. package/dist/src/cli/commands/capabilities.js.map +1 -1
  51. package/dist/src/cli/commands/daemon.js +0 -17
  52. package/dist/src/cli/commands/daemon.js.map +1 -1
  53. package/dist/src/cli/commands/eval-binding.js +32 -0
  54. package/dist/src/cli/commands/eval-binding.js.map +1 -0
  55. package/dist/src/cli/commands/eval.js +21 -15
  56. package/dist/src/cli/commands/eval.js.map +1 -1
  57. package/dist/src/cli/commands/models.js +32 -45
  58. package/dist/src/cli/commands/models.js.map +1 -1
  59. package/dist/src/cli/commands/run.js +0 -35
  60. package/dist/src/cli/commands/run.js.map +1 -1
  61. package/dist/src/cli/main.js +0 -4
  62. package/dist/src/cli/main.js.map +1 -1
  63. package/dist/src/cli/output.js +5 -16
  64. package/dist/src/cli/output.js.map +1 -1
  65. package/dist/src/control-plane/eval-records.js +3 -1
  66. package/dist/src/control-plane/eval-records.js.map +1 -1
  67. package/dist/src/control-plane/eval-recovery.js +4 -1
  68. package/dist/src/control-plane/eval-recovery.js.map +1 -1
  69. package/dist/src/control-plane/eval-scheduler.js +16 -8
  70. package/dist/src/control-plane/eval-scheduler.js.map +1 -1
  71. package/dist/src/control-plane/index.js +0 -2
  72. package/dist/src/control-plane/index.js.map +1 -1
  73. package/dist/src/control-plane/model-capture-planning.js +3 -4
  74. package/dist/src/control-plane/model-capture-planning.js.map +1 -1
  75. package/dist/src/control-plane/remote-model-routes.js +4 -24
  76. package/dist/src/control-plane/remote-model-routes.js.map +1 -1
  77. package/dist/src/control-plane/remote-offer-contract.js +2 -2
  78. package/dist/src/control-plane/remote-offer-contract.js.map +1 -1
  79. package/dist/src/control-plane/remote-result-transport.js +7 -8
  80. package/dist/src/control-plane/remote-result-transport.js.map +1 -1
  81. package/dist/src/control-plane/remote-work-coordinator.js +2 -2
  82. package/dist/src/control-plane/remote-work-coordinator.js.map +1 -1
  83. package/dist/src/control-plane/remote-work-recovery.js +2 -2
  84. package/dist/src/control-plane/remote-work-recovery.js.map +1 -1
  85. package/dist/src/control-plane/remote-worker-protocol.js +1 -1
  86. package/dist/src/control-plane/remote-worker-protocol.js.map +1 -1
  87. package/dist/src/control-plane/remote-worker-runner.js +21 -6
  88. package/dist/src/control-plane/remote-worker-runner.js.map +1 -1
  89. package/dist/src/control-plane/remote-workers.js +2 -2
  90. package/dist/src/control-plane/remote-workers.js.map +1 -1
  91. package/dist/src/control-plane/rerun-recovery.js +1 -1
  92. package/dist/src/control-plane/rerun-recovery.js.map +1 -1
  93. package/dist/src/control-plane/rerun-scheduler.js +21 -14
  94. package/dist/src/control-plane/rerun-scheduler.js.map +1 -1
  95. package/dist/src/control-plane/rerun-source.js +5 -2
  96. package/dist/src/control-plane/rerun-source.js.map +1 -1
  97. package/dist/src/control-plane/rerun-submission.js +7 -5
  98. package/dist/src/control-plane/rerun-submission.js.map +1 -1
  99. package/dist/src/control-plane/synthetic-result.js +3 -2
  100. package/dist/src/control-plane/synthetic-result.js.map +1 -1
  101. package/dist/src/control-plane/worker-model-relay.js +1 -1
  102. package/dist/src/control-plane/worker-model-relay.js.map +1 -1
  103. package/dist/src/controller-runtime/hash.js +6 -0
  104. package/dist/src/controller-runtime/hash.js.map +1 -1
  105. package/dist/src/daemon/client.js +12 -35
  106. package/dist/src/daemon/client.js.map +1 -1
  107. package/dist/src/daemon/evaluation-binding.js +33 -0
  108. package/dist/src/daemon/evaluation-binding.js.map +1 -0
  109. package/dist/src/daemon/evaluation-submission.js +27 -0
  110. package/dist/src/daemon/evaluation-submission.js.map +1 -0
  111. package/dist/src/daemon/index.js +1 -0
  112. package/dist/src/daemon/index.js.map +1 -1
  113. package/dist/src/daemon/json-stream.js +98 -0
  114. package/dist/src/daemon/json-stream.js.map +1 -0
  115. package/dist/src/daemon/scheduler.js +1 -4
  116. package/dist/src/daemon/scheduler.js.map +1 -1
  117. package/dist/src/daemon/server.js +14 -54
  118. package/dist/src/daemon/server.js.map +1 -1
  119. package/dist/src/domain/endpoints.js +2 -0
  120. package/dist/src/domain/endpoints.js.map +1 -0
  121. package/dist/src/domain/evaluation-binding.js +5 -0
  122. package/dist/src/domain/evaluation-binding.js.map +1 -0
  123. package/dist/src/domain/index.js +2 -0
  124. package/dist/src/domain/index.js.map +1 -1
  125. package/dist/src/domain/runs.js.map +1 -1
  126. package/dist/src/evals/benchmark-adapter-manifest.js +95 -32
  127. package/dist/src/evals/benchmark-adapter-manifest.js.map +1 -1
  128. package/dist/src/evals/benchmark-verification.js +106 -0
  129. package/dist/src/evals/benchmark-verification.js.map +1 -0
  130. package/dist/src/evals/collect-only-rerun.js +3 -2
  131. package/dist/src/evals/collect-only-rerun.js.map +1 -1
  132. package/dist/src/evals/directory.js +9 -1
  133. package/dist/src/evals/directory.js.map +1 -1
  134. package/dist/src/evals/endpoint-attempts.js +112 -0
  135. package/dist/src/evals/endpoint-attempts.js.map +1 -0
  136. package/dist/src/evals/endpoint-usage.js +8 -0
  137. package/dist/src/evals/endpoint-usage.js.map +1 -0
  138. package/dist/src/evals/environment-binding.js +9 -0
  139. package/dist/src/evals/environment-binding.js.map +1 -0
  140. package/dist/src/evals/eval-artifact-planning.js +10 -1
  141. package/dist/src/evals/eval-artifact-planning.js.map +1 -1
  142. package/dist/src/evals/eval-finalization.js +2 -3
  143. package/dist/src/evals/eval-finalization.js.map +1 -1
  144. package/dist/src/evals/eval-logical-plan.js +2 -0
  145. package/dist/src/evals/eval-logical-plan.js.map +1 -1
  146. package/dist/src/evals/eval-result-builder.js +4 -0
  147. package/dist/src/evals/eval-result-builder.js.map +1 -1
  148. package/dist/src/evals/eval-state.js +22 -0
  149. package/dist/src/evals/eval-state.js.map +1 -0
  150. package/dist/src/evals/execution-plan.js +6 -2
  151. package/dist/src/evals/execution-plan.js.map +1 -1
  152. package/dist/src/evals/index.js +5 -1
  153. package/dist/src/evals/index.js.map +1 -1
  154. package/dist/src/evals/infrastructure-retry.js +2 -0
  155. package/dist/src/evals/infrastructure-retry.js.map +1 -1
  156. package/dist/src/evals/model-capture-runtime.js +9 -13
  157. package/dist/src/evals/model-capture-runtime.js.map +1 -1
  158. package/dist/src/evals/native-phase-evidence.js +8 -2
  159. package/dist/src/evals/native-phase-evidence.js.map +1 -1
  160. package/dist/src/evals/planned-execution.js +7 -2
  161. package/dist/src/evals/planned-execution.js.map +1 -1
  162. package/dist/src/evals/planned-progress-publisher.js +18 -5
  163. package/dist/src/evals/planned-progress-publisher.js.map +1 -1
  164. package/dist/src/evals/planned-retry-execution.js +1 -0
  165. package/dist/src/evals/planned-retry-execution.js.map +1 -1
  166. package/dist/src/evals/preparation-rerun.js +0 -1
  167. package/dist/src/evals/preparation-rerun.js.map +1 -1
  168. package/dist/src/evals/progress.js +92 -7
  169. package/dist/src/evals/progress.js.map +1 -1
  170. package/dist/src/evals/records.js +12 -2
  171. package/dist/src/evals/records.js.map +1 -1
  172. package/dist/src/evals/recovery.js +2 -0
  173. package/dist/src/evals/recovery.js.map +1 -1
  174. package/dist/src/evals/remote-rerun-execution.js +1 -3
  175. package/dist/src/evals/remote-rerun-execution.js.map +1 -1
  176. package/dist/src/evals/remote-verifier-rerun.js +1 -1
  177. package/dist/src/evals/remote-verifier-rerun.js.map +1 -1
  178. package/dist/src/evals/request.js +14 -45
  179. package/dist/src/evals/request.js.map +1 -1
  180. package/dist/src/evals/rerun-observation.js +31 -0
  181. package/dist/src/evals/rerun-observation.js.map +1 -0
  182. package/dist/src/evals/rerun.js +23 -28
  183. package/dist/src/evals/rerun.js.map +1 -1
  184. package/dist/src/evals/service.js +45 -42
  185. package/dist/src/evals/service.js.map +1 -1
  186. package/dist/src/evals/shared-runtime.js +125 -0
  187. package/dist/src/evals/shared-runtime.js.map +1 -0
  188. package/dist/src/evals/trial-import.js +10 -2
  189. package/dist/src/evals/trial-import.js.map +1 -1
  190. package/dist/src/evals/trial-publication-recovery.js +1 -1
  191. package/dist/src/evals/trial-publication-recovery.js.map +1 -1
  192. package/dist/src/evals/verifier-artifacts.js +1 -0
  193. package/dist/src/evals/verifier-artifacts.js.map +1 -1
  194. package/dist/src/evals/verifier-only-rerun.js +1 -1
  195. package/dist/src/evals/verifier-only-rerun.js.map +1 -1
  196. package/dist/src/evals/verifier-rerun-result.js +3 -2
  197. package/dist/src/evals/verifier-rerun-result.js.map +1 -1
  198. package/dist/src/evals/verifier-score-artifacts.js +9 -1
  199. package/dist/src/evals/verifier-score-artifacts.js.map +1 -1
  200. package/dist/src/foundation/config.js +0 -5
  201. package/dist/src/foundation/config.js.map +1 -1
  202. package/dist/src/inference/index.js +3 -22
  203. package/dist/src/inference/index.js.map +1 -1
  204. package/dist/src/inference/lock.js +44 -130
  205. package/dist/src/inference/lock.js.map +1 -1
  206. package/dist/src/model-access/endpoint-contract.js +127 -0
  207. package/dist/src/model-access/endpoint-contract.js.map +1 -0
  208. package/dist/src/model-access/endpoint-credentials.js +54 -0
  209. package/dist/src/model-access/endpoint-credentials.js.map +1 -0
  210. package/dist/src/model-access/endpoint-probe-stream.js +66 -0
  211. package/dist/src/model-access/endpoint-probe-stream.js.map +1 -0
  212. package/dist/src/model-access/endpoint-verification.js +76 -0
  213. package/dist/src/model-access/endpoint-verification.js.map +1 -0
  214. package/dist/src/model-access/endpoints.js +105 -0
  215. package/dist/src/model-access/endpoints.js.map +1 -0
  216. package/dist/src/model-access/index.js +5 -1
  217. package/dist/src/model-access/index.js.map +1 -1
  218. package/dist/src/model-access/proxy.js +57 -14
  219. package/dist/src/model-access/proxy.js.map +1 -1
  220. package/dist/src/model-access/remote-model.js +21 -29
  221. package/dist/src/model-access/remote-model.js.map +1 -1
  222. package/dist/src/model-access/usage.js +30 -0
  223. package/dist/src/model-access/usage.js.map +1 -0
  224. package/dist/src/runs/endpoint-runtime.js +40 -0
  225. package/dist/src/runs/endpoint-runtime.js.map +1 -0
  226. package/dist/src/runs/executor.js +28 -42
  227. package/dist/src/runs/executor.js.map +1 -1
  228. package/dist/src/runs/local-inference-environment.js +5 -53
  229. package/dist/src/runs/local-inference-environment.js.map +1 -1
  230. package/dist/src/runs/manifest.js +1 -0
  231. package/dist/src/runs/manifest.js.map +1 -1
  232. package/dist/src/runs/outcome.js +3 -10
  233. package/dist/src/runs/outcome.js.map +1 -1
  234. package/dist/src/runs/queued.js +3 -2
  235. package/dist/src/runs/queued.js.map +1 -1
  236. package/dist/src/runs/records.js +3 -0
  237. package/dist/src/runs/records.js.map +1 -1
  238. package/dist/src/runs/request.js +10 -38
  239. package/dist/src/runs/request.js.map +1 -1
  240. package/dist/src/workers/remote-harbor-work-spec.js +8 -10
  241. package/dist/src/workers/remote-harbor-work-spec.js.map +1 -1
  242. package/dist/src/workers/remote-harbor-worker.js +3 -0
  243. package/dist/src/workers/remote-harbor-worker.js.map +1 -1
  244. package/docs/evidence/eval-preparation-2026-10-09.json +393 -0
  245. package/docs/evidence/eval-preparation-2026-10-09.md +178 -0
  246. package/docs/local-model-inference-spec.zh-CN.md +4 -663
  247. package/docs/resource-storage.zh-CN.md +116 -0
  248. package/docs/schemas/endpoint-evaluation-attempt.schema.json +29 -0
  249. package/docs/schemas/eval-artifact-pin.schema.json +14 -0
  250. package/docs/schemas/eval-execution-plan.schema.json +486 -105
  251. package/docs/schemas/eval-progress.schema.json +1 -1
  252. package/docs/schemas/eval-request.schema.json +149 -18
  253. package/docs/schemas/eval-rerun-submission.schema.json +8 -1
  254. package/docs/schemas/eval-result.schema.json +310 -56
  255. package/docs/schemas/evaluation-binding.schema.json +15 -0
  256. package/docs/schemas/external-endpoint-binding.schema.json +153 -0
  257. package/docs/schemas/external-endpoint-config.schema.json +93 -0
  258. package/docs/schemas/inference-execution-evidence.schema.json +253 -3
  259. package/docs/schemas/inference-lock-v3.schema.json +6 -0
  260. package/docs/schemas/inference-lock.schema.json +842 -341
  261. package/docs/schemas/ordered-eval-control.schema.json +7 -1
  262. package/docs/schemas/ready-endpoint-binding.schema.json +201 -0
  263. package/docs/schemas/run-manifest.schema.json +6 -0
  264. package/docs/schemas/run-request.schema.json +122 -20
  265. package/examples/external-inference/.env.example +16 -0
  266. package/examples/external-inference/README.md +203 -0
  267. package/examples/external-inference/accept.mjs +297 -0
  268. package/examples/external-inference/compose.gateway.yaml +119 -0
  269. package/examples/external-inference/compose.single.yaml +64 -0
  270. package/examples/external-inference/compose.tp2.yaml +15 -0
  271. package/examples/external-inference/deployment.example.json +58 -0
  272. package/examples/external-inference/endpoint.chat-completions.example.json +13 -0
  273. package/examples/external-inference/endpoint.responses.example.json +13 -0
  274. package/integrations/harbor/hitch_build_inputs.py +213 -0
  275. package/integrations/harbor/hitch_build_process.py +126 -0
  276. package/integrations/harbor/hitch_compose_preparation.py +274 -0
  277. package/integrations/harbor/hitch_harbor_agent.py +25 -39
  278. package/integrations/harbor/hitch_harbor_environment.py +96 -3
  279. package/integrations/harbor/hitch_image_cache.py +357 -0
  280. package/integrations/harbor/hitch_python_runtime.py +303 -0
  281. package/integrations/harbor/hitch_shared_runtime.py +123 -0
  282. package/integrations/model-call/cli.js +11 -10
  283. package/integrations/training-tool/cli.js +5 -3
  284. package/node_modules/smol-toml/LICENSE +24 -0
  285. package/node_modules/smol-toml/README.md +418 -0
  286. package/node_modules/smol-toml/dist/date.d.ts +41 -0
  287. package/node_modules/smol-toml/dist/date.js +127 -0
  288. package/node_modules/smol-toml/dist/error.d.ts +38 -0
  289. package/node_modules/smol-toml/dist/error.js +63 -0
  290. package/node_modules/smol-toml/dist/extract.js +69 -0
  291. package/node_modules/smol-toml/dist/index.cjs +734 -0
  292. package/node_modules/smol-toml/dist/index.d.ts +43 -0
  293. package/node_modules/smol-toml/dist/index.js +33 -0
  294. package/node_modules/smol-toml/dist/parse.d.ts +36 -0
  295. package/node_modules/smol-toml/dist/parse.js +149 -0
  296. package/node_modules/smol-toml/dist/primitive.js +238 -0
  297. package/node_modules/smol-toml/dist/stringify.d.ts +31 -0
  298. package/node_modules/smol-toml/dist/stringify.js +181 -0
  299. package/node_modules/smol-toml/dist/struct.js +179 -0
  300. package/node_modules/smol-toml/dist/util.d.ts +38 -0
  301. package/node_modules/smol-toml/dist/util.js +89 -0
  302. package/node_modules/smol-toml/package.json +68 -0
  303. package/package.json +15 -4
  304. package/dist/src/cli/commands/local.js +0 -130
  305. package/dist/src/cli/commands/local.js.map +0 -1
  306. package/dist/src/cli/commands/model-node.js +0 -26
  307. package/dist/src/cli/commands/model-node.js.map +0 -1
  308. package/dist/src/control-plane/inference-manager.js +0 -357
  309. package/dist/src/control-plane/inference-manager.js.map +0 -1
  310. package/dist/src/control-plane/managed-gateway-receipt.js +0 -26
  311. package/dist/src/control-plane/managed-gateway-receipt.js.map +0 -1
  312. package/dist/src/control-plane/managed-service-recovery.js +0 -158
  313. package/dist/src/control-plane/managed-service-recovery.js.map +0 -1
  314. package/dist/src/daemon/inference-prepare.js +0 -47
  315. package/dist/src/daemon/inference-prepare.js.map +0 -1
  316. package/dist/src/inference/daemon-capacity.js +0 -41
  317. package/dist/src/inference/daemon-capacity.js.map +0 -1
  318. package/dist/src/inference/device-reservation.js +0 -58
  319. package/dist/src/inference/device-reservation.js.map +0 -1
  320. package/dist/src/inference/doctor.js +0 -95
  321. package/dist/src/inference/doctor.js.map +0 -1
  322. package/dist/src/inference/generation-recovery.js +0 -83
  323. package/dist/src/inference/generation-recovery.js.map +0 -1
  324. package/dist/src/inference/managed-launcher.js +0 -35
  325. package/dist/src/inference/managed-launcher.js.map +0 -1
  326. package/dist/src/inference/materialize.js +0 -66
  327. package/dist/src/inference/materialize.js.map +0 -1
  328. package/dist/src/inference/model-location.js +0 -34
  329. package/dist/src/inference/model-location.js.map +0 -1
  330. package/dist/src/inference/node-client.js +0 -167
  331. package/dist/src/inference/node-client.js.map +0 -1
  332. package/dist/src/inference/node-registry.js +0 -79
  333. package/dist/src/inference/node-registry.js.map +0 -1
  334. package/dist/src/inference/observation.js +0 -79
  335. package/dist/src/inference/observation.js.map +0 -1
  336. package/dist/src/inference/preflight.js +0 -132
  337. package/dist/src/inference/preflight.js.map +0 -1
  338. package/dist/src/inference/process-sglang.js +0 -169
  339. package/dist/src/inference/process-sglang.js.map +0 -1
  340. package/dist/src/inference/protocol-probe.js +0 -29
  341. package/dist/src/inference/protocol-probe.js.map +0 -1
  342. package/dist/src/inference/remote-model-store.js +0 -24
  343. package/dist/src/inference/remote-model-store.js.map +0 -1
  344. package/dist/src/inference/runtime-catalog.js +0 -41
  345. package/dist/src/inference/runtime-catalog.js.map +0 -1
  346. package/dist/src/inference/runtime-store.js +0 -93
  347. package/dist/src/inference/runtime-store.js.map +0 -1
  348. package/dist/src/inference/service-attachment.js +0 -46
  349. package/dist/src/inference/service-attachment.js.map +0 -1
  350. package/dist/src/inference/service-inspection.js +0 -38
  351. package/dist/src/inference/service-inspection.js.map +0 -1
  352. package/dist/src/inference/sglang.js +0 -279
  353. package/dist/src/inference/sglang.js.map +0 -1
  354. package/dist/src/inference/supervisor.js +0 -460
  355. package/dist/src/inference/supervisor.js.map +0 -1
  356. package/dist/src/model-access/local-gateway-request.js +0 -139
  357. package/dist/src/model-access/local-gateway-request.js.map +0 -1
  358. package/dist/src/model-access/local-gateway.js +0 -323
  359. package/dist/src/model-access/local-gateway.js.map +0 -1
  360. package/dist/src/runs/local-inference-run.js +0 -53
  361. package/dist/src/runs/local-inference-run.js.map +0 -1
@@ -1,300 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://agent-hitch.local/schemas/inference-lock.schema.json",
4
- "title": "Hitch inference lock v1/v2",
5
- "type": "object",
6
- "additionalProperties": false,
7
- "required": [
8
- "schema_version",
9
- "engine",
10
- "model_id",
11
- "runtime_id",
12
- "inference_id",
13
- "profile",
14
- "execution",
15
- "generation",
16
- "protocol",
17
- "resources"
18
- ],
19
- "properties": {
20
- "schema_version": {
21
- "enum": [
22
- "1",
23
- "2"
24
- ]
25
- },
26
- "engine": {
27
- "const": "sglang"
28
- },
29
- "model_id": {
30
- "$ref": "#/$defs/sha256"
31
- },
32
- "runtime_id": {
33
- "$ref": "#/$defs/sha256"
34
- },
35
- "inference_id": {
36
- "$ref": "#/$defs/sha256"
37
- },
38
- "profile": {
39
- "enum": [
40
- "baseline",
41
- "throughput"
42
- ]
43
- },
44
- "execution": {
45
- "type": "object",
46
- "additionalProperties": false,
47
- "required": [
48
- "platform",
49
- "load_format",
50
- "dtype",
51
- "quantization",
52
- "tensor_parallel_size",
53
- "data_parallel_size",
54
- "pipeline_parallel_size",
55
- "context_tokens_per_request",
56
- "max_running_requests",
57
- "max_queued_requests",
58
- "max_total_tokens",
59
- "chunked_prefill_size",
60
- "max_prefill_tokens",
61
- "kv_cache_dtype",
62
- "attention_backend",
63
- "sampling_backend",
64
- "deterministic_inference",
65
- "prefix_cache",
66
- "hicache",
67
- "speculative_decoding",
68
- "cpu_offload_gb",
69
- "startup_timeout_ms",
70
- "queue_timeout_ms",
71
- "request_timeout_ms",
72
- "idle_ttl_ms"
73
- ],
74
- "properties": {
75
- "platform": {
76
- "$ref": "#/$defs/platform"
77
- },
78
- "load_format": {
79
- "const": "safetensors"
80
- },
81
- "dtype": {
82
- "type": "string",
83
- "minLength": 1
84
- },
85
- "quantization": {
86
- "type": [
87
- "string",
88
- "null"
89
- ]
90
- },
91
- "tensor_parallel_size": {
92
- "const": 1
93
- },
94
- "data_parallel_size": {
95
- "const": 1
96
- },
97
- "pipeline_parallel_size": {
98
- "const": 1
99
- },
100
- "context_tokens_per_request": {
101
- "type": "integer",
102
- "minimum": 1
103
- },
104
- "max_running_requests": {
105
- "type": "integer",
106
- "minimum": 1
107
- },
108
- "max_queued_requests": {
109
- "type": "integer",
110
- "minimum": 0
111
- },
112
- "max_total_tokens": {
113
- "type": "integer",
114
- "minimum": 1
115
- },
116
- "chunked_prefill_size": {
117
- "type": "integer",
118
- "minimum": -1
119
- },
120
- "max_prefill_tokens": {
121
- "type": "integer",
122
- "minimum": 1
123
- },
124
- "kv_cache_dtype": {
125
- "type": "string",
126
- "minLength": 1
127
- },
128
- "attention_backend": {
129
- "type": "string",
130
- "minLength": 1
131
- },
132
- "sampling_backend": {
133
- "type": "string",
134
- "minLength": 1
135
- },
136
- "deterministic_inference": {
137
- "type": "boolean"
138
- },
139
- "prefix_cache": {
140
- "type": "object",
141
- "additionalProperties": false,
142
- "required": [
143
- "mode",
144
- "scope",
145
- "initial_state"
146
- ],
147
- "properties": {
148
- "mode": {
149
- "enum": [
150
- "disabled",
151
- "radix"
152
- ]
153
- },
154
- "scope": {
155
- "enum": [
156
- "run",
157
- "eval"
158
- ]
159
- },
160
- "initial_state": {
161
- "const": "empty"
162
- }
163
- }
164
- },
165
- "hicache": {
166
- "const": false
167
- },
168
- "speculative_decoding": {
169
- "const": false
170
- },
171
- "cpu_offload_gb": {
172
- "const": 0
173
- },
174
- "startup_timeout_ms": {
175
- "type": "integer",
176
- "minimum": 1
177
- },
178
- "queue_timeout_ms": {
179
- "type": "integer",
180
- "minimum": 1
181
- },
182
- "request_timeout_ms": {
183
- "type": "integer",
184
- "minimum": 1
185
- },
186
- "idle_ttl_ms": {
187
- "type": "integer",
188
- "minimum": 0
189
- }
190
- }
191
- },
192
- "generation": {
193
- "type": "object",
194
- "additionalProperties": false,
195
- "required": [
196
- "temperature",
197
- "top_p",
198
- "top_k",
199
- "min_p",
200
- "repetition_penalty",
201
- "seed",
202
- "max_output_tokens",
203
- "override_policy"
204
- ],
205
- "properties": {
206
- "temperature": {
207
- "type": "number",
208
- "minimum": 0
209
- },
210
- "top_p": {
211
- "type": "number",
212
- "minimum": 0,
213
- "maximum": 1
214
- },
215
- "top_k": {
216
- "type": "integer",
217
- "minimum": 0
218
- },
219
- "min_p": {
220
- "type": "number",
221
- "minimum": 0,
222
- "maximum": 1
223
- },
224
- "repetition_penalty": {
225
- "type": "number",
226
- "exclusiveMinimum": 0
227
- },
228
- "seed": {
229
- "type": "integer"
230
- },
231
- "max_output_tokens": {
232
- "type": "integer",
233
- "minimum": 1
234
- },
235
- "override_policy": {
236
- "const": "reject-conflicts"
237
- }
238
- }
239
- },
240
- "protocol": {
241
- "type": "object",
242
- "additionalProperties": false,
243
- "required": [
244
- "api",
245
- "streaming",
246
- "tool_calls",
247
- "parallel_tool_calls",
248
- "input_modalities",
249
- "tool_call_parser",
250
- "reasoning_parser",
251
- "compatibility_profile_id"
252
- ],
253
- "properties": {
254
- "api": {
255
- "enum": [
256
- "responses",
257
- "chat-completions"
258
- ]
259
- },
260
- "streaming": {
261
- "type": "boolean"
262
- },
263
- "tool_calls": {
264
- "type": "boolean"
265
- },
266
- "parallel_tool_calls": {
267
- "type": "boolean"
268
- },
269
- "input_modalities": {
270
- "const": [
271
- "text"
272
- ]
273
- },
274
- "tool_call_parser": {
275
- "type": [
276
- "string",
277
- "null"
278
- ]
279
- },
280
- "reasoning_parser": {
281
- "type": [
282
- "string",
283
- "null"
284
- ]
285
- },
286
- "compatibility_profile_id": {
287
- "$ref": "#/$defs/sha256"
288
- }
289
- }
290
- },
291
- "resources": {
292
- "$ref": "#/$defs/resources"
293
- },
294
- "model_node": {
295
- "$ref": "#/$defs/modelNodeBinding"
296
- }
297
- },
298
4
  "$defs": {
299
5
  "sha256": {
300
6
  "type": "string",
@@ -427,61 +133,856 @@
427
133
  },
428
134
  "modelNodeBinding": {
429
135
  "$ref": "model-node-binding.schema.json"
430
- }
431
- },
432
- "allOf": [
433
- {
434
- "if": {
435
- "properties": {
436
- "schema_version": {
437
- "const": "2"
438
- }
439
- }
440
- },
441
- "then": {
442
- "required": [
443
- "model_node"
444
- ],
445
- "properties": {
446
- "resources": {
447
- "properties": {
448
- "container_slots": {
449
- "const": 0
450
- }
136
+ },
137
+ "platformV3": {
138
+ "oneOf": [
139
+ {
140
+ "type": "object",
141
+ "additionalProperties": false,
142
+ "required": [
143
+ "backend",
144
+ "cpu_threads",
145
+ "numa_policy",
146
+ "cpu_feature_requirement",
147
+ "overlap_schedule"
148
+ ],
149
+ "properties": {
150
+ "backend": {
151
+ "const": "cpu"
152
+ },
153
+ "cpu_threads": {
154
+ "type": "integer",
155
+ "minimum": 1
156
+ },
157
+ "numa_policy": {
158
+ "const": "single-node"
159
+ },
160
+ "cpu_feature_requirement": {
161
+ "const": "amx"
162
+ },
163
+ "overlap_schedule": {
164
+ "const": false
451
165
  }
452
- },
453
- "execution": {
454
- "properties": {
455
- "platform": {
456
- "required": [
457
- "device_constraint"
458
- ],
459
- "properties": {
460
- "backend": {
461
- "const": "cuda"
462
- }
463
- }
166
+ }
167
+ },
168
+ {
169
+ "type": "object",
170
+ "additionalProperties": false,
171
+ "required": [
172
+ "backend",
173
+ "mem_fraction_static",
174
+ "overlap_schedule",
175
+ "cuda_graph"
176
+ ],
177
+ "properties": {
178
+ "backend": {
179
+ "const": "cuda"
180
+ },
181
+ "device_constraint": {
182
+ "type": "string",
183
+ "minLength": 1
184
+ },
185
+ "mem_fraction_static": {
186
+ "type": "number",
187
+ "exclusiveMinimum": 0,
188
+ "maximum": 1
189
+ },
190
+ "overlap_schedule": {
191
+ "type": "boolean"
192
+ },
193
+ "cuda_graph": {
194
+ "enum": [
195
+ "enabled",
196
+ "disabled"
197
+ ]
198
+ },
199
+ "device_constraints": {
200
+ "type": "array",
201
+ "minItems": 1,
202
+ "uniqueItems": true,
203
+ "items": {
204
+ "type": "string",
205
+ "pattern": "^GPU-[A-Za-z0-9-]+$"
464
206
  }
465
207
  }
466
208
  }
467
- }
468
- },
469
- "else": {
470
- "not": {
471
- "required": [
472
- "model_node"
473
- ]
474
209
  },
475
- "properties": {
476
- "resources": {
477
- "properties": {
478
- "container_slots": {
479
- "minimum": 1
480
- }
210
+ {
211
+ "type": "object",
212
+ "additionalProperties": false,
213
+ "required": [
214
+ "backend",
215
+ "mlx_quantization",
216
+ "overlap_schedule"
217
+ ],
218
+ "properties": {
219
+ "backend": {
220
+ "const": "metal"
221
+ },
222
+ "mlx_quantization": {
223
+ "enum": [
224
+ "none",
225
+ "prequantized"
226
+ ]
227
+ },
228
+ "overlap_schedule": {
229
+ "type": "boolean"
481
230
  }
482
231
  }
483
232
  }
484
- }
233
+ ]
234
+ },
235
+ "poolLockV3": {
236
+ "type": "object",
237
+ "additionalProperties": false,
238
+ "required": [
239
+ "schema_version",
240
+ "engine",
241
+ "model_id",
242
+ "runtime_id",
243
+ "inference_id",
244
+ "profile",
245
+ "execution",
246
+ "generation",
247
+ "protocol",
248
+ "resources",
249
+ "topology",
250
+ "model_node"
251
+ ],
252
+ "properties": {
253
+ "schema_version": {
254
+ "const": "3"
255
+ },
256
+ "engine": {
257
+ "const": "sglang"
258
+ },
259
+ "model_id": {
260
+ "$ref": "#/$defs/sha256"
261
+ },
262
+ "runtime_id": {
263
+ "$ref": "#/$defs/sha256"
264
+ },
265
+ "inference_id": {
266
+ "$ref": "#/$defs/sha256"
267
+ },
268
+ "profile": {
269
+ "enum": [
270
+ "baseline",
271
+ "throughput"
272
+ ]
273
+ },
274
+ "execution": {
275
+ "type": "object",
276
+ "additionalProperties": false,
277
+ "required": [
278
+ "platform",
279
+ "load_format",
280
+ "dtype",
281
+ "quantization",
282
+ "tensor_parallel_size",
283
+ "data_parallel_size",
284
+ "pipeline_parallel_size",
285
+ "context_tokens_per_request",
286
+ "max_running_requests",
287
+ "max_queued_requests",
288
+ "max_total_tokens",
289
+ "chunked_prefill_size",
290
+ "max_prefill_tokens",
291
+ "kv_cache_dtype",
292
+ "attention_backend",
293
+ "sampling_backend",
294
+ "deterministic_inference",
295
+ "prefix_cache",
296
+ "hicache",
297
+ "speculative_decoding",
298
+ "cpu_offload_gb",
299
+ "startup_timeout_ms",
300
+ "queue_timeout_ms",
301
+ "request_timeout_ms",
302
+ "idle_ttl_ms"
303
+ ],
304
+ "properties": {
305
+ "platform": {
306
+ "$ref": "#/$defs/platformV3"
307
+ },
308
+ "load_format": {
309
+ "const": "safetensors"
310
+ },
311
+ "dtype": {
312
+ "type": "string",
313
+ "minLength": 1
314
+ },
315
+ "quantization": {
316
+ "type": [
317
+ "string",
318
+ "null"
319
+ ]
320
+ },
321
+ "tensor_parallel_size": {
322
+ "type": "integer",
323
+ "minimum": 1
324
+ },
325
+ "data_parallel_size": {
326
+ "const": 1
327
+ },
328
+ "pipeline_parallel_size": {
329
+ "const": 1
330
+ },
331
+ "context_tokens_per_request": {
332
+ "type": "integer",
333
+ "minimum": 1
334
+ },
335
+ "max_running_requests": {
336
+ "type": "integer",
337
+ "minimum": 1
338
+ },
339
+ "max_queued_requests": {
340
+ "type": "integer",
341
+ "minimum": 0
342
+ },
343
+ "max_total_tokens": {
344
+ "type": "integer",
345
+ "minimum": 1
346
+ },
347
+ "chunked_prefill_size": {
348
+ "type": "integer",
349
+ "minimum": -1
350
+ },
351
+ "max_prefill_tokens": {
352
+ "type": "integer",
353
+ "minimum": 1
354
+ },
355
+ "kv_cache_dtype": {
356
+ "type": "string",
357
+ "minLength": 1
358
+ },
359
+ "attention_backend": {
360
+ "type": "string",
361
+ "minLength": 1
362
+ },
363
+ "sampling_backend": {
364
+ "type": "string",
365
+ "minLength": 1
366
+ },
367
+ "deterministic_inference": {
368
+ "type": "boolean"
369
+ },
370
+ "prefix_cache": {
371
+ "type": "object",
372
+ "additionalProperties": false,
373
+ "required": [
374
+ "mode",
375
+ "scope",
376
+ "initial_state"
377
+ ],
378
+ "properties": {
379
+ "mode": {
380
+ "enum": [
381
+ "disabled",
382
+ "radix"
383
+ ]
384
+ },
385
+ "scope": {
386
+ "enum": [
387
+ "run",
388
+ "eval"
389
+ ]
390
+ },
391
+ "initial_state": {
392
+ "const": "empty"
393
+ }
394
+ }
395
+ },
396
+ "hicache": {
397
+ "const": false
398
+ },
399
+ "speculative_decoding": {
400
+ "const": false
401
+ },
402
+ "cpu_offload_gb": {
403
+ "const": 0
404
+ },
405
+ "startup_timeout_ms": {
406
+ "type": "integer",
407
+ "minimum": 1
408
+ },
409
+ "queue_timeout_ms": {
410
+ "type": "integer",
411
+ "minimum": 1
412
+ },
413
+ "request_timeout_ms": {
414
+ "type": "integer",
415
+ "minimum": 1
416
+ },
417
+ "idle_ttl_ms": {
418
+ "type": "integer",
419
+ "minimum": 0
420
+ }
421
+ }
422
+ },
423
+ "generation": {
424
+ "type": "object",
425
+ "additionalProperties": false,
426
+ "required": [
427
+ "temperature",
428
+ "top_p",
429
+ "top_k",
430
+ "min_p",
431
+ "repetition_penalty",
432
+ "seed",
433
+ "max_output_tokens",
434
+ "override_policy"
435
+ ],
436
+ "properties": {
437
+ "temperature": {
438
+ "type": "number",
439
+ "minimum": 0
440
+ },
441
+ "top_p": {
442
+ "type": "number",
443
+ "minimum": 0,
444
+ "maximum": 1
445
+ },
446
+ "top_k": {
447
+ "type": "integer",
448
+ "minimum": 0
449
+ },
450
+ "min_p": {
451
+ "type": "number",
452
+ "minimum": 0,
453
+ "maximum": 1
454
+ },
455
+ "repetition_penalty": {
456
+ "type": "number",
457
+ "exclusiveMinimum": 0
458
+ },
459
+ "seed": {
460
+ "type": "integer"
461
+ },
462
+ "max_output_tokens": {
463
+ "type": "integer",
464
+ "minimum": 1
465
+ },
466
+ "override_policy": {
467
+ "const": "reject-conflicts"
468
+ }
469
+ }
470
+ },
471
+ "protocol": {
472
+ "type": "object",
473
+ "additionalProperties": false,
474
+ "required": [
475
+ "api",
476
+ "streaming",
477
+ "tool_calls",
478
+ "parallel_tool_calls",
479
+ "input_modalities",
480
+ "tool_call_parser",
481
+ "reasoning_parser",
482
+ "compatibility_profile_id"
483
+ ],
484
+ "properties": {
485
+ "api": {
486
+ "enum": [
487
+ "responses",
488
+ "chat-completions"
489
+ ]
490
+ },
491
+ "streaming": {
492
+ "type": "boolean"
493
+ },
494
+ "tool_calls": {
495
+ "type": "boolean"
496
+ },
497
+ "parallel_tool_calls": {
498
+ "type": "boolean"
499
+ },
500
+ "input_modalities": {
501
+ "const": [
502
+ "text"
503
+ ]
504
+ },
505
+ "tool_call_parser": {
506
+ "type": [
507
+ "string",
508
+ "null"
509
+ ]
510
+ },
511
+ "reasoning_parser": {
512
+ "type": [
513
+ "string",
514
+ "null"
515
+ ]
516
+ },
517
+ "compatibility_profile_id": {
518
+ "$ref": "#/$defs/sha256"
519
+ }
520
+ }
521
+ },
522
+ "resources": {
523
+ "$ref": "#/$defs/resources"
524
+ },
525
+ "model_node": {
526
+ "$ref": "#/$defs/modelNodeBinding"
527
+ },
528
+ "topology": {
529
+ "type": "object",
530
+ "additionalProperties": false,
531
+ "required": [
532
+ "replicas",
533
+ "routing",
534
+ "max_running_requests",
535
+ "max_queued_requests"
536
+ ],
537
+ "properties": {
538
+ "replicas": {
539
+ "type": "array",
540
+ "minItems": 1,
541
+ "items": {
542
+ "type": "object",
543
+ "additionalProperties": false,
544
+ "required": [
545
+ "devices"
546
+ ],
547
+ "properties": {
548
+ "devices": {
549
+ "type": "array",
550
+ "minItems": 1,
551
+ "uniqueItems": true,
552
+ "items": {
553
+ "type": "string",
554
+ "pattern": "^GPU-[A-Za-z0-9-]+$"
555
+ }
556
+ }
557
+ }
558
+ }
559
+ },
560
+ "routing": {
561
+ "const": "least-active"
562
+ },
563
+ "max_running_requests": {
564
+ "type": "integer",
565
+ "minimum": 1
566
+ },
567
+ "max_queued_requests": {
568
+ "type": "integer",
569
+ "minimum": 0
570
+ }
571
+ }
572
+ }
573
+ },
574
+ "allOf": [
575
+ {
576
+ "if": {
577
+ "properties": {
578
+ "schema_version": {
579
+ "const": "3"
580
+ }
581
+ }
582
+ },
583
+ "then": {
584
+ "required": [
585
+ "model_node"
586
+ ],
587
+ "properties": {
588
+ "resources": {
589
+ "properties": {
590
+ "container_slots": {
591
+ "const": 0
592
+ }
593
+ }
594
+ },
595
+ "execution": {
596
+ "properties": {
597
+ "platform": {
598
+ "required": [
599
+ "device_constraint",
600
+ "device_constraints"
601
+ ],
602
+ "properties": {
603
+ "backend": {
604
+ "const": "cuda"
605
+ }
606
+ }
607
+ }
608
+ }
609
+ }
610
+ }
611
+ },
612
+ "else": {
613
+ "not": {
614
+ "required": [
615
+ "model_node"
616
+ ]
617
+ },
618
+ "properties": {
619
+ "resources": {
620
+ "properties": {
621
+ "container_slots": {
622
+ "minimum": 1
623
+ }
624
+ }
625
+ }
626
+ }
627
+ }
628
+ }
629
+ ]
630
+ }
631
+ },
632
+ "title": "Hitch inference lock v1/v2/v3",
633
+ "oneOf": [
634
+ {
635
+ "type": "object",
636
+ "additionalProperties": false,
637
+ "required": [
638
+ "schema_version",
639
+ "engine",
640
+ "model_id",
641
+ "runtime_id",
642
+ "inference_id",
643
+ "profile",
644
+ "execution",
645
+ "generation",
646
+ "protocol",
647
+ "resources"
648
+ ],
649
+ "properties": {
650
+ "schema_version": {
651
+ "enum": [
652
+ "1",
653
+ "2"
654
+ ]
655
+ },
656
+ "engine": {
657
+ "const": "sglang"
658
+ },
659
+ "model_id": {
660
+ "$ref": "#/$defs/sha256"
661
+ },
662
+ "runtime_id": {
663
+ "$ref": "#/$defs/sha256"
664
+ },
665
+ "inference_id": {
666
+ "$ref": "#/$defs/sha256"
667
+ },
668
+ "profile": {
669
+ "enum": [
670
+ "baseline",
671
+ "throughput"
672
+ ]
673
+ },
674
+ "execution": {
675
+ "type": "object",
676
+ "additionalProperties": false,
677
+ "required": [
678
+ "platform",
679
+ "load_format",
680
+ "dtype",
681
+ "quantization",
682
+ "tensor_parallel_size",
683
+ "data_parallel_size",
684
+ "pipeline_parallel_size",
685
+ "context_tokens_per_request",
686
+ "max_running_requests",
687
+ "max_queued_requests",
688
+ "max_total_tokens",
689
+ "chunked_prefill_size",
690
+ "max_prefill_tokens",
691
+ "kv_cache_dtype",
692
+ "attention_backend",
693
+ "sampling_backend",
694
+ "deterministic_inference",
695
+ "prefix_cache",
696
+ "hicache",
697
+ "speculative_decoding",
698
+ "cpu_offload_gb",
699
+ "startup_timeout_ms",
700
+ "queue_timeout_ms",
701
+ "request_timeout_ms",
702
+ "idle_ttl_ms"
703
+ ],
704
+ "properties": {
705
+ "platform": {
706
+ "$ref": "#/$defs/platform"
707
+ },
708
+ "load_format": {
709
+ "const": "safetensors"
710
+ },
711
+ "dtype": {
712
+ "type": "string",
713
+ "minLength": 1
714
+ },
715
+ "quantization": {
716
+ "type": [
717
+ "string",
718
+ "null"
719
+ ]
720
+ },
721
+ "tensor_parallel_size": {
722
+ "const": 1
723
+ },
724
+ "data_parallel_size": {
725
+ "const": 1
726
+ },
727
+ "pipeline_parallel_size": {
728
+ "const": 1
729
+ },
730
+ "context_tokens_per_request": {
731
+ "type": "integer",
732
+ "minimum": 1
733
+ },
734
+ "max_running_requests": {
735
+ "type": "integer",
736
+ "minimum": 1
737
+ },
738
+ "max_queued_requests": {
739
+ "type": "integer",
740
+ "minimum": 0
741
+ },
742
+ "max_total_tokens": {
743
+ "type": "integer",
744
+ "minimum": 1
745
+ },
746
+ "chunked_prefill_size": {
747
+ "type": "integer",
748
+ "minimum": -1
749
+ },
750
+ "max_prefill_tokens": {
751
+ "type": "integer",
752
+ "minimum": 1
753
+ },
754
+ "kv_cache_dtype": {
755
+ "type": "string",
756
+ "minLength": 1
757
+ },
758
+ "attention_backend": {
759
+ "type": "string",
760
+ "minLength": 1
761
+ },
762
+ "sampling_backend": {
763
+ "type": "string",
764
+ "minLength": 1
765
+ },
766
+ "deterministic_inference": {
767
+ "type": "boolean"
768
+ },
769
+ "prefix_cache": {
770
+ "type": "object",
771
+ "additionalProperties": false,
772
+ "required": [
773
+ "mode",
774
+ "scope",
775
+ "initial_state"
776
+ ],
777
+ "properties": {
778
+ "mode": {
779
+ "enum": [
780
+ "disabled",
781
+ "radix"
782
+ ]
783
+ },
784
+ "scope": {
785
+ "enum": [
786
+ "run",
787
+ "eval"
788
+ ]
789
+ },
790
+ "initial_state": {
791
+ "const": "empty"
792
+ }
793
+ }
794
+ },
795
+ "hicache": {
796
+ "const": false
797
+ },
798
+ "speculative_decoding": {
799
+ "const": false
800
+ },
801
+ "cpu_offload_gb": {
802
+ "const": 0
803
+ },
804
+ "startup_timeout_ms": {
805
+ "type": "integer",
806
+ "minimum": 1
807
+ },
808
+ "queue_timeout_ms": {
809
+ "type": "integer",
810
+ "minimum": 1
811
+ },
812
+ "request_timeout_ms": {
813
+ "type": "integer",
814
+ "minimum": 1
815
+ },
816
+ "idle_ttl_ms": {
817
+ "type": "integer",
818
+ "minimum": 0
819
+ }
820
+ }
821
+ },
822
+ "generation": {
823
+ "type": "object",
824
+ "additionalProperties": false,
825
+ "required": [
826
+ "temperature",
827
+ "top_p",
828
+ "top_k",
829
+ "min_p",
830
+ "repetition_penalty",
831
+ "seed",
832
+ "max_output_tokens",
833
+ "override_policy"
834
+ ],
835
+ "properties": {
836
+ "temperature": {
837
+ "type": "number",
838
+ "minimum": 0
839
+ },
840
+ "top_p": {
841
+ "type": "number",
842
+ "minimum": 0,
843
+ "maximum": 1
844
+ },
845
+ "top_k": {
846
+ "type": "integer",
847
+ "minimum": 0
848
+ },
849
+ "min_p": {
850
+ "type": "number",
851
+ "minimum": 0,
852
+ "maximum": 1
853
+ },
854
+ "repetition_penalty": {
855
+ "type": "number",
856
+ "exclusiveMinimum": 0
857
+ },
858
+ "seed": {
859
+ "type": "integer"
860
+ },
861
+ "max_output_tokens": {
862
+ "type": "integer",
863
+ "minimum": 1
864
+ },
865
+ "override_policy": {
866
+ "const": "reject-conflicts"
867
+ }
868
+ }
869
+ },
870
+ "protocol": {
871
+ "type": "object",
872
+ "additionalProperties": false,
873
+ "required": [
874
+ "api",
875
+ "streaming",
876
+ "tool_calls",
877
+ "parallel_tool_calls",
878
+ "input_modalities",
879
+ "tool_call_parser",
880
+ "reasoning_parser",
881
+ "compatibility_profile_id"
882
+ ],
883
+ "properties": {
884
+ "api": {
885
+ "enum": [
886
+ "responses",
887
+ "chat-completions"
888
+ ]
889
+ },
890
+ "streaming": {
891
+ "type": "boolean"
892
+ },
893
+ "tool_calls": {
894
+ "type": "boolean"
895
+ },
896
+ "parallel_tool_calls": {
897
+ "type": "boolean"
898
+ },
899
+ "input_modalities": {
900
+ "const": [
901
+ "text"
902
+ ]
903
+ },
904
+ "tool_call_parser": {
905
+ "type": [
906
+ "string",
907
+ "null"
908
+ ]
909
+ },
910
+ "reasoning_parser": {
911
+ "type": [
912
+ "string",
913
+ "null"
914
+ ]
915
+ },
916
+ "compatibility_profile_id": {
917
+ "$ref": "#/$defs/sha256"
918
+ }
919
+ }
920
+ },
921
+ "resources": {
922
+ "$ref": "#/$defs/resources"
923
+ },
924
+ "model_node": {
925
+ "$ref": "#/$defs/modelNodeBinding"
926
+ }
927
+ },
928
+ "allOf": [
929
+ {
930
+ "if": {
931
+ "properties": {
932
+ "schema_version": {
933
+ "const": "2"
934
+ }
935
+ }
936
+ },
937
+ "then": {
938
+ "required": [
939
+ "model_node"
940
+ ],
941
+ "properties": {
942
+ "resources": {
943
+ "properties": {
944
+ "container_slots": {
945
+ "const": 0
946
+ }
947
+ }
948
+ },
949
+ "execution": {
950
+ "properties": {
951
+ "platform": {
952
+ "required": [
953
+ "device_constraint"
954
+ ],
955
+ "properties": {
956
+ "backend": {
957
+ "const": "cuda"
958
+ }
959
+ }
960
+ }
961
+ }
962
+ }
963
+ }
964
+ },
965
+ "else": {
966
+ "not": {
967
+ "required": [
968
+ "model_node"
969
+ ]
970
+ },
971
+ "properties": {
972
+ "resources": {
973
+ "properties": {
974
+ "container_slots": {
975
+ "minimum": 1
976
+ }
977
+ }
978
+ }
979
+ }
980
+ }
981
+ }
982
+ ]
983
+ },
984
+ {
985
+ "$ref": "#/$defs/poolLockV3"
485
986
  }
486
987
  ]
487
988
  }