agent-hitch 0.2.9 → 0.2.10

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 (410) hide show
  1. package/README.md +206 -137
  2. package/README.zh-CN.md +193 -119
  3. package/dist/scripts/canary-native-training.js +221 -0
  4. package/dist/scripts/canary-native-training.js.map +1 -0
  5. package/dist/scripts/canary-remote-training.js +246 -0
  6. package/dist/scripts/canary-remote-training.js.map +1 -0
  7. package/dist/scripts/canary-remote-verifier.js +124 -0
  8. package/dist/scripts/canary-remote-verifier.js.map +1 -0
  9. package/dist/scripts/canary-worker-host.js +113 -0
  10. package/dist/scripts/canary-worker-host.js.map +1 -0
  11. package/dist/scripts/canary-worker-peer.js +188 -0
  12. package/dist/scripts/canary-worker-peer.js.map +1 -0
  13. package/dist/scripts/check-architecture.js +4 -3
  14. package/dist/scripts/check-architecture.js.map +1 -1
  15. package/dist/src/adapters/catalog.js +2 -1
  16. package/dist/src/adapters/catalog.js.map +1 -1
  17. package/dist/src/adapters/providers/codex.js +65 -2
  18. package/dist/src/adapters/providers/codex.js.map +1 -1
  19. package/dist/src/adapters/providers/model-call.js +17 -1
  20. package/dist/src/adapters/providers/model-call.js.map +1 -1
  21. package/dist/src/adapters/providers/training-tool.js +29 -0
  22. package/dist/src/adapters/providers/training-tool.js.map +1 -0
  23. package/dist/src/artifacts/index.js +1 -1
  24. package/dist/src/artifacts/index.js.map +1 -1
  25. package/dist/src/artifacts/store.js +15 -10
  26. package/dist/src/artifacts/store.js.map +1 -1
  27. package/dist/src/backends/harbor/backend.js +24 -15
  28. package/dist/src/backends/harbor/backend.js.map +1 -1
  29. package/dist/src/backends/harbor/bridge-environment.js +12 -0
  30. package/dist/src/backends/harbor/bridge-environment.js.map +1 -0
  31. package/dist/src/backends/harbor/environment-config.js +2 -2
  32. package/dist/src/backends/harbor/environment-config.js.map +1 -1
  33. package/dist/src/backends/harbor/host-credential-helper.js +81 -0
  34. package/dist/src/backends/harbor/host-credential-helper.js.map +1 -0
  35. package/dist/src/backends/harbor/index.js +3 -0
  36. package/dist/src/backends/harbor/index.js.map +1 -1
  37. package/dist/src/backends/harbor/model-proxy-config.js +18 -1
  38. package/dist/src/backends/harbor/model-proxy-config.js.map +1 -1
  39. package/dist/src/backends/harbor/observation.js +61 -0
  40. package/dist/src/backends/harbor/observation.js.map +1 -0
  41. package/dist/src/backends/harbor/portable-regrade.js +150 -0
  42. package/dist/src/backends/harbor/portable-regrade.js.map +1 -0
  43. package/dist/src/backends/harbor/process.js +26 -5
  44. package/dist/src/backends/harbor/process.js.map +1 -1
  45. package/dist/src/backends/harbor/regrade.js +4 -1
  46. package/dist/src/backends/harbor/regrade.js.map +1 -1
  47. package/dist/src/backends/harbor/supervisor.js +22 -0
  48. package/dist/src/backends/harbor/supervisor.js.map +1 -1
  49. package/dist/src/backends/harbor/tools.js +2 -0
  50. package/dist/src/backends/harbor/tools.js.map +1 -1
  51. package/dist/src/backends/index.js +3 -0
  52. package/dist/src/backends/index.js.map +1 -1
  53. package/dist/src/cli/arguments.js +33 -0
  54. package/dist/src/cli/arguments.js.map +1 -1
  55. package/dist/src/cli/commands/capabilities.js +14 -1
  56. package/dist/src/cli/commands/capabilities.js.map +1 -1
  57. package/dist/src/cli/commands/daemon.js +19 -0
  58. package/dist/src/cli/commands/daemon.js.map +1 -1
  59. package/dist/src/cli/commands/eval.js +38 -10
  60. package/dist/src/cli/commands/eval.js.map +1 -1
  61. package/dist/src/cli/commands/local.js +130 -0
  62. package/dist/src/cli/commands/local.js.map +1 -0
  63. package/dist/src/cli/commands/model-node.js +26 -0
  64. package/dist/src/cli/commands/model-node.js.map +1 -0
  65. package/dist/src/cli/commands/models.js +72 -0
  66. package/dist/src/cli/commands/models.js.map +1 -0
  67. package/dist/src/cli/commands/run.js +36 -1
  68. package/dist/src/cli/commands/run.js.map +1 -1
  69. package/dist/src/cli/commands/training.js +32 -0
  70. package/dist/src/cli/commands/training.js.map +1 -0
  71. package/dist/src/cli/commands/worker.js +30 -2
  72. package/dist/src/cli/commands/worker.js.map +1 -1
  73. package/dist/src/cli/main.js +8 -0
  74. package/dist/src/cli/main.js.map +1 -1
  75. package/dist/src/cli/output.js +24 -2
  76. package/dist/src/cli/output.js.map +1 -1
  77. package/dist/src/control-plane/eval-records.js +2 -0
  78. package/dist/src/control-plane/eval-records.js.map +1 -1
  79. package/dist/src/control-plane/eval-recovery.js +7 -1
  80. package/dist/src/control-plane/eval-recovery.js.map +1 -1
  81. package/dist/src/control-plane/eval-scheduler.js +24 -50
  82. package/dist/src/control-plane/eval-scheduler.js.map +1 -1
  83. package/dist/src/control-plane/eval-submission-persist.js +30 -0
  84. package/dist/src/control-plane/eval-submission-persist.js.map +1 -0
  85. package/dist/src/control-plane/execution-observation-contract.js +60 -0
  86. package/dist/src/control-plane/execution-observation-contract.js.map +1 -0
  87. package/dist/src/control-plane/index.js +10 -0
  88. package/dist/src/control-plane/index.js.map +1 -1
  89. package/dist/src/control-plane/inference-manager.js +357 -0
  90. package/dist/src/control-plane/inference-manager.js.map +1 -0
  91. package/dist/src/control-plane/managed-gateway-receipt.js +26 -0
  92. package/dist/src/control-plane/managed-gateway-receipt.js.map +1 -0
  93. package/dist/src/control-plane/managed-service-recovery.js +158 -0
  94. package/dist/src/control-plane/managed-service-recovery.js.map +1 -0
  95. package/dist/src/control-plane/model-capture-planning.js +15 -1
  96. package/dist/src/control-plane/model-capture-planning.js.map +1 -1
  97. package/dist/src/control-plane/ordered-eval-control.js +221 -0
  98. package/dist/src/control-plane/ordered-eval-control.js.map +1 -0
  99. package/dist/src/control-plane/remote-backend-result.js +18 -0
  100. package/dist/src/control-plane/remote-backend-result.js.map +1 -0
  101. package/dist/src/control-plane/remote-execution-lease.js +15 -0
  102. package/dist/src/control-plane/remote-execution-lease.js.map +1 -0
  103. package/dist/src/control-plane/remote-execution-observation.js +108 -0
  104. package/dist/src/control-plane/remote-execution-observation.js.map +1 -0
  105. package/dist/src/control-plane/remote-model-routes.js +107 -0
  106. package/dist/src/control-plane/remote-model-routes.js.map +1 -0
  107. package/dist/src/control-plane/remote-observation-reporter.js +37 -0
  108. package/dist/src/control-plane/remote-observation-reporter.js.map +1 -0
  109. package/dist/src/control-plane/remote-offer-contract.js +48 -0
  110. package/dist/src/control-plane/remote-offer-contract.js.map +1 -0
  111. package/dist/src/control-plane/remote-rerun-journal.js +61 -0
  112. package/dist/src/control-plane/remote-rerun-journal.js.map +1 -0
  113. package/dist/src/control-plane/remote-result-transport.js +55 -9
  114. package/dist/src/control-plane/remote-result-transport.js.map +1 -1
  115. package/dist/src/control-plane/remote-verifier-import.js +52 -0
  116. package/dist/src/control-plane/remote-verifier-import.js.map +1 -0
  117. package/dist/src/control-plane/remote-verifier-result.js +61 -0
  118. package/dist/src/control-plane/remote-verifier-result.js.map +1 -0
  119. package/dist/src/control-plane/remote-verifier-source-transport.js +68 -0
  120. package/dist/src/control-plane/remote-verifier-source-transport.js.map +1 -0
  121. package/dist/src/control-plane/remote-work-coordinator.js +103 -47
  122. package/dist/src/control-plane/remote-work-coordinator.js.map +1 -1
  123. package/dist/src/control-plane/remote-work-inputs.js +26 -5
  124. package/dist/src/control-plane/remote-work-inputs.js.map +1 -1
  125. package/dist/src/control-plane/remote-work-recovery.js +123 -34
  126. package/dist/src/control-plane/remote-work-recovery.js.map +1 -1
  127. package/dist/src/control-plane/remote-worker-artifacts.js +10 -7
  128. package/dist/src/control-plane/remote-worker-artifacts.js.map +1 -1
  129. package/dist/src/control-plane/remote-worker-cleanup.js +104 -0
  130. package/dist/src/control-plane/remote-worker-cleanup.js.map +1 -0
  131. package/dist/src/control-plane/remote-worker-client.js +156 -14
  132. package/dist/src/control-plane/remote-worker-client.js.map +1 -1
  133. package/dist/src/control-plane/remote-worker-codecs.js +160 -0
  134. package/dist/src/control-plane/remote-worker-codecs.js.map +1 -0
  135. package/dist/src/control-plane/remote-worker-generation-recovery.js +67 -0
  136. package/dist/src/control-plane/remote-worker-generation-recovery.js.map +1 -0
  137. package/dist/src/control-plane/remote-worker-ownership.js +51 -0
  138. package/dist/src/control-plane/remote-worker-ownership.js.map +1 -0
  139. package/dist/src/control-plane/remote-worker-protocol.js +85 -119
  140. package/dist/src/control-plane/remote-worker-protocol.js.map +1 -1
  141. package/dist/src/control-plane/remote-worker-runner.js +95 -18
  142. package/dist/src/control-plane/remote-worker-runner.js.map +1 -1
  143. package/dist/src/control-plane/remote-workers.js +33 -5
  144. package/dist/src/control-plane/remote-workers.js.map +1 -1
  145. package/dist/src/control-plane/rerun-recovery.js +89 -0
  146. package/dist/src/control-plane/rerun-recovery.js.map +1 -0
  147. package/dist/src/control-plane/rerun-scheduler.js +70 -96
  148. package/dist/src/control-plane/rerun-scheduler.js.map +1 -1
  149. package/dist/src/control-plane/rerun-source.js +57 -0
  150. package/dist/src/control-plane/rerun-source.js.map +1 -0
  151. package/dist/src/control-plane/worker-model-relay.js +76 -0
  152. package/dist/src/control-plane/worker-model-relay.js.map +1 -0
  153. package/dist/src/controller-runtime/hash.js +3 -0
  154. package/dist/src/controller-runtime/hash.js.map +1 -1
  155. package/dist/src/controller-runtime/index.js +2 -0
  156. package/dist/src/controller-runtime/index.js.map +1 -1
  157. package/dist/src/controller-runtime/observation.js +29 -0
  158. package/dist/src/controller-runtime/observation.js.map +1 -0
  159. package/dist/src/controller-runtime/resident.js +22 -0
  160. package/dist/src/controller-runtime/resident.js.map +1 -0
  161. package/dist/src/daemon/client.js +34 -1
  162. package/dist/src/daemon/client.js.map +1 -1
  163. package/dist/src/daemon/execution-observation.js +38 -0
  164. package/dist/src/daemon/execution-observation.js.map +1 -0
  165. package/dist/src/daemon/http.js +57 -0
  166. package/dist/src/daemon/http.js.map +1 -0
  167. package/dist/src/daemon/inference-prepare.js +47 -0
  168. package/dist/src/daemon/inference-prepare.js.map +1 -0
  169. package/dist/src/daemon/scheduler.js +4 -1
  170. package/dist/src/daemon/scheduler.js.map +1 -1
  171. package/dist/src/daemon/server.js +80 -82
  172. package/dist/src/daemon/server.js.map +1 -1
  173. package/dist/src/daemon/worker-observation.js +34 -0
  174. package/dist/src/daemon/worker-observation.js.map +1 -0
  175. package/dist/src/daemon/worker-ownership.js +71 -0
  176. package/dist/src/daemon/worker-ownership.js.map +1 -0
  177. package/dist/src/daemon/worker-routes.js +83 -15
  178. package/dist/src/daemon/worker-routes.js.map +1 -1
  179. package/dist/src/domain/execution-observation.js +2 -0
  180. package/dist/src/domain/execution-observation.js.map +1 -0
  181. package/dist/src/domain/index.js +1 -0
  182. package/dist/src/domain/index.js.map +1 -1
  183. package/dist/src/domain/inference.js +2 -0
  184. package/dist/src/domain/inference.js.map +1 -0
  185. package/dist/src/domain/runs.js.map +1 -1
  186. package/dist/src/domain/training.js +2 -0
  187. package/dist/src/domain/training.js.map +1 -0
  188. package/dist/src/domain/validation.js +11 -0
  189. package/dist/src/domain/validation.js.map +1 -1
  190. package/dist/src/domain/verifier-source.js +2 -0
  191. package/dist/src/domain/verifier-source.js.map +1 -0
  192. package/dist/src/domain/worker-recovery.js +2 -0
  193. package/dist/src/domain/worker-recovery.js.map +1 -0
  194. package/dist/src/evals/eval-logical-plan.js +8 -1
  195. package/dist/src/evals/eval-logical-plan.js.map +1 -1
  196. package/dist/src/evals/execution-leases.js +15 -2
  197. package/dist/src/evals/execution-leases.js.map +1 -1
  198. package/dist/src/evals/execution-plan.js +11 -1
  199. package/dist/src/evals/execution-plan.js.map +1 -1
  200. package/dist/src/evals/harbor-bridge-error.js +8 -0
  201. package/dist/src/evals/harbor-bridge-error.js.map +1 -1
  202. package/dist/src/evals/index.js +19 -0
  203. package/dist/src/evals/index.js.map +1 -1
  204. package/dist/src/evals/model-capture-plan.js +12 -0
  205. package/dist/src/evals/model-capture-plan.js.map +1 -1
  206. package/dist/src/evals/model-capture-runtime.js +25 -0
  207. package/dist/src/evals/model-capture-runtime.js.map +1 -1
  208. package/dist/src/evals/physical-work-plan.js +57 -0
  209. package/dist/src/evals/physical-work-plan.js.map +1 -0
  210. package/dist/src/evals/preparation-rerun.js +6 -0
  211. package/dist/src/evals/preparation-rerun.js.map +1 -1
  212. package/dist/src/evals/recovery.js +8 -1
  213. package/dist/src/evals/recovery.js.map +1 -1
  214. package/dist/src/evals/regrade-evidence.js +4 -4
  215. package/dist/src/evals/regrade-evidence.js.map +1 -1
  216. package/dist/src/evals/remote-execution-ownership.js +50 -0
  217. package/dist/src/evals/remote-execution-ownership.js.map +1 -0
  218. package/dist/src/evals/remote-infrastructure-retry.js +2 -0
  219. package/dist/src/evals/remote-infrastructure-retry.js.map +1 -1
  220. package/dist/src/evals/remote-lease-release.js +58 -0
  221. package/dist/src/evals/remote-lease-release.js.map +1 -0
  222. package/dist/src/evals/remote-rerun-execution.js +85 -0
  223. package/dist/src/evals/remote-rerun-execution.js.map +1 -0
  224. package/dist/src/evals/remote-trial.js +6 -0
  225. package/dist/src/evals/remote-trial.js.map +1 -0
  226. package/dist/src/evals/remote-verifier-assessment.js +85 -0
  227. package/dist/src/evals/remote-verifier-assessment.js.map +1 -0
  228. package/dist/src/evals/remote-verifier-contract.js +43 -0
  229. package/dist/src/evals/remote-verifier-contract.js.map +1 -0
  230. package/dist/src/evals/remote-verifier-execution.js +105 -0
  231. package/dist/src/evals/remote-verifier-execution.js.map +1 -0
  232. package/dist/src/evals/remote-verifier-journal.js +21 -0
  233. package/dist/src/evals/remote-verifier-journal.js.map +1 -0
  234. package/dist/src/evals/remote-verifier-outcome.js +51 -0
  235. package/dist/src/evals/remote-verifier-outcome.js.map +1 -0
  236. package/dist/src/evals/remote-verifier-rerun.js +134 -0
  237. package/dist/src/evals/remote-verifier-rerun.js.map +1 -0
  238. package/dist/src/evals/remote-verifier-selection.js +61 -0
  239. package/dist/src/evals/remote-verifier-selection.js.map +1 -0
  240. package/dist/src/evals/remote-verifier-source.js +33 -0
  241. package/dist/src/evals/remote-verifier-source.js.map +1 -0
  242. package/dist/src/evals/remote-worker-cleanup.js +46 -0
  243. package/dist/src/evals/remote-worker-cleanup.js.map +1 -0
  244. package/dist/src/evals/request.js +58 -1
  245. package/dist/src/evals/request.js.map +1 -1
  246. package/dist/src/evals/rerun-completion.js +39 -0
  247. package/dist/src/evals/rerun-completion.js.map +1 -0
  248. package/dist/src/evals/rerun-resume.js +70 -0
  249. package/dist/src/evals/rerun-resume.js.map +1 -0
  250. package/dist/src/evals/rerun-state.js +25 -0
  251. package/dist/src/evals/rerun-state.js.map +1 -0
  252. package/dist/src/evals/rerun-types.js.map +1 -1
  253. package/dist/src/evals/rerun.js +90 -46
  254. package/dist/src/evals/rerun.js.map +1 -1
  255. package/dist/src/evals/service.js +59 -5
  256. package/dist/src/evals/service.js.map +1 -1
  257. package/dist/src/evals/verifier-only-rerun.js +2 -16
  258. package/dist/src/evals/verifier-only-rerun.js.map +1 -1
  259. package/dist/src/evals/verifier-rerun-result.js +24 -0
  260. package/dist/src/evals/verifier-rerun-result.js.map +1 -0
  261. package/dist/src/evals/verifier-source-import.js +48 -0
  262. package/dist/src/evals/verifier-source-import.js.map +1 -0
  263. package/dist/src/evals/verifier-source.js +139 -0
  264. package/dist/src/evals/verifier-source.js.map +1 -0
  265. package/dist/src/foundation/base64.js +19 -0
  266. package/dist/src/foundation/base64.js.map +1 -0
  267. package/dist/src/foundation/config.js +10 -0
  268. package/dist/src/foundation/config.js.map +1 -1
  269. package/dist/src/foundation/credential-redaction.js +22 -9
  270. package/dist/src/foundation/credential-redaction.js.map +1 -1
  271. package/dist/src/foundation/index.js +1 -0
  272. package/dist/src/foundation/index.js.map +1 -1
  273. package/dist/src/foundation/process-identity.js +13 -9
  274. package/dist/src/foundation/process-identity.js.map +1 -1
  275. package/dist/src/inference/daemon-capacity.js +41 -0
  276. package/dist/src/inference/daemon-capacity.js.map +1 -0
  277. package/dist/src/inference/device-reservation.js +58 -0
  278. package/dist/src/inference/device-reservation.js.map +1 -0
  279. package/dist/src/inference/doctor.js +95 -0
  280. package/dist/src/inference/doctor.js.map +1 -0
  281. package/dist/src/inference/generation-recovery.js +83 -0
  282. package/dist/src/inference/generation-recovery.js.map +1 -0
  283. package/dist/src/inference/index.js +24 -0
  284. package/dist/src/inference/index.js.map +1 -0
  285. package/dist/src/inference/lock.js +331 -0
  286. package/dist/src/inference/lock.js.map +1 -0
  287. package/dist/src/inference/managed-launcher.js +35 -0
  288. package/dist/src/inference/managed-launcher.js.map +1 -0
  289. package/dist/src/inference/manifest.js +262 -0
  290. package/dist/src/inference/manifest.js.map +1 -0
  291. package/dist/src/inference/materialize.js +66 -0
  292. package/dist/src/inference/materialize.js.map +1 -0
  293. package/dist/src/inference/model-location.js +34 -0
  294. package/dist/src/inference/model-location.js.map +1 -0
  295. package/dist/src/inference/model-store.js +439 -0
  296. package/dist/src/inference/model-store.js.map +1 -0
  297. package/dist/src/inference/node-client.js +167 -0
  298. package/dist/src/inference/node-client.js.map +1 -0
  299. package/dist/src/inference/node-registry.js +79 -0
  300. package/dist/src/inference/node-registry.js.map +1 -0
  301. package/dist/src/inference/observation.js +79 -0
  302. package/dist/src/inference/observation.js.map +1 -0
  303. package/dist/src/inference/preflight.js +132 -0
  304. package/dist/src/inference/preflight.js.map +1 -0
  305. package/dist/src/inference/process-sglang.js +169 -0
  306. package/dist/src/inference/process-sglang.js.map +1 -0
  307. package/dist/src/inference/protocol-probe.js +29 -0
  308. package/dist/src/inference/protocol-probe.js.map +1 -0
  309. package/dist/src/inference/remote-model-store.js +24 -0
  310. package/dist/src/inference/remote-model-store.js.map +1 -0
  311. package/dist/src/inference/runtime-catalog.js +41 -0
  312. package/dist/src/inference/runtime-catalog.js.map +1 -0
  313. package/dist/src/inference/runtime-store.js +93 -0
  314. package/dist/src/inference/runtime-store.js.map +1 -0
  315. package/dist/src/inference/service-attachment.js +46 -0
  316. package/dist/src/inference/service-attachment.js.map +1 -0
  317. package/dist/src/inference/service-inspection.js +38 -0
  318. package/dist/src/inference/service-inspection.js.map +1 -0
  319. package/dist/src/inference/sglang.js +279 -0
  320. package/dist/src/inference/sglang.js.map +1 -0
  321. package/dist/src/inference/supervisor.js +460 -0
  322. package/dist/src/inference/supervisor.js.map +1 -0
  323. package/dist/src/model-access/environment.js +28 -0
  324. package/dist/src/model-access/environment.js.map +1 -0
  325. package/dist/src/model-access/index.js +4 -0
  326. package/dist/src/model-access/index.js.map +1 -1
  327. package/dist/src/model-access/local-gateway-request.js +139 -0
  328. package/dist/src/model-access/local-gateway-request.js.map +1 -0
  329. package/dist/src/model-access/local-gateway.js +323 -0
  330. package/dist/src/model-access/local-gateway.js.map +1 -0
  331. package/dist/src/model-access/proxy.js +90 -5
  332. package/dist/src/model-access/proxy.js.map +1 -1
  333. package/dist/src/model-access/remote-model.js +58 -0
  334. package/dist/src/model-access/remote-model.js.map +1 -0
  335. package/dist/src/model-access/training.js +115 -0
  336. package/dist/src/model-access/training.js.map +1 -0
  337. package/dist/src/runs/adapter-process.js +2 -2
  338. package/dist/src/runs/adapter-process.js.map +1 -1
  339. package/dist/src/runs/executor-types.js +2 -0
  340. package/dist/src/runs/executor-types.js.map +1 -0
  341. package/dist/src/runs/executor.js +54 -34
  342. package/dist/src/runs/executor.js.map +1 -1
  343. package/dist/src/runs/index.js +1 -0
  344. package/dist/src/runs/index.js.map +1 -1
  345. package/dist/src/runs/local-inference-environment.js +59 -0
  346. package/dist/src/runs/local-inference-environment.js.map +1 -0
  347. package/dist/src/runs/local-inference-run.js +53 -0
  348. package/dist/src/runs/local-inference-run.js.map +1 -0
  349. package/dist/src/runs/outcome.js +22 -0
  350. package/dist/src/runs/outcome.js.map +1 -1
  351. package/dist/src/runs/records.js +9 -0
  352. package/dist/src/runs/records.js.map +1 -1
  353. package/dist/src/runs/request.js +58 -3
  354. package/dist/src/runs/request.js.map +1 -1
  355. package/dist/src/runs/training-evidence.js +22 -0
  356. package/dist/src/runs/training-evidence.js.map +1 -0
  357. package/dist/src/runs/training-runtime.js +20 -0
  358. package/dist/src/runs/training-runtime.js.map +1 -0
  359. package/dist/src/workers/execution-observation.js +32 -0
  360. package/dist/src/workers/execution-observation.js.map +1 -0
  361. package/dist/src/workers/index.js +2 -0
  362. package/dist/src/workers/index.js.map +1 -1
  363. package/dist/src/workers/remote-harbor-ownership.js +266 -0
  364. package/dist/src/workers/remote-harbor-ownership.js.map +1 -0
  365. package/dist/src/workers/remote-harbor-verifier.js +76 -0
  366. package/dist/src/workers/remote-harbor-verifier.js.map +1 -0
  367. package/dist/src/workers/remote-harbor-work-spec.js +66 -10
  368. package/dist/src/workers/remote-harbor-work-spec.js.map +1 -1
  369. package/dist/src/workers/remote-harbor-worker.js +56 -49
  370. package/dist/src/workers/remote-harbor-worker.js.map +1 -1
  371. package/dist/src/workers/remote-worker-host.js +33 -0
  372. package/dist/src/workers/remote-worker-host.js.map +1 -0
  373. package/docs/local-model-inference-spec.zh-CN.md +666 -0
  374. package/docs/schemas/controller-runtime-observation.schema.json +21 -0
  375. package/docs/schemas/eval-execution-plan.schema.json +1 -0
  376. package/docs/schemas/eval-request.schema.json +3 -1
  377. package/docs/schemas/execution-lease.schema.json +95 -1
  378. package/docs/schemas/execution-provider-status.schema.json +162 -28
  379. package/docs/schemas/inference-execution-evidence.schema.json +487 -0
  380. package/docs/schemas/inference-lock.schema.json +487 -0
  381. package/docs/schemas/inference-runtime-manifest.schema.json +156 -0
  382. package/docs/schemas/inference-service-record.schema.json +227 -0
  383. package/docs/schemas/local-inference-selection.schema.json +98 -0
  384. package/docs/schemas/local-model-manifest.schema.json +43 -0
  385. package/docs/schemas/model-node-binding.schema.json +34 -0
  386. package/docs/schemas/model-node-generation-release.schema.json +46 -0
  387. package/docs/schemas/ordered-eval-control.schema.json +39 -0
  388. package/docs/schemas/remote-execution-lease-grant.schema.json +45 -0
  389. package/docs/schemas/remote-harbor-work-spec.schema.json +325 -0
  390. package/docs/schemas/remote-model-binding.schema.json +21 -0
  391. package/docs/schemas/remote-physical-execution.schema.json +108 -0
  392. package/docs/schemas/remote-result-envelope.schema.json +9 -3
  393. package/docs/schemas/remote-tree-envelope.schema.json +17 -3
  394. package/docs/schemas/remote-verifier-result.schema.json +203 -0
  395. package/docs/schemas/remote-verifier-source.schema.json +52 -0
  396. package/docs/schemas/remote-verifier-work.schema.json +125 -0
  397. package/docs/schemas/remote-work-offer.schema.json +170 -34
  398. package/docs/schemas/remote-worker-execution-admission.schema.json +214 -0
  399. package/docs/schemas/remote-worker-generation-cleanup.schema.json +199 -0
  400. package/docs/schemas/remote-worker-registration.schema.json +226 -25
  401. package/docs/schemas/run-manifest.schema.json +211 -44
  402. package/docs/schemas/run-request.schema.json +2 -1
  403. package/docs/schemas/training-external-binding.schema.json +26 -0
  404. package/integrations/harbor/hitch_harbor_agent.py +241 -13
  405. package/integrations/harbor/hitch_harbor_environment.py +22 -1
  406. package/integrations/harbor/hitch_host_credentials.py +354 -0
  407. package/integrations/harbor/hitch_private_exec.py +150 -0
  408. package/integrations/model-call/cli.js +13 -5
  409. package/integrations/training-tool/cli.js +72 -0
  410. package/package.json +8 -2
@@ -1,16 +1,22 @@
1
+ import { prepareInference } from "./inference-prepare.js";
2
+ import { orderedEvalControl, withLegacyEvalMutation } from "../control-plane/index.js";
3
+ import { executionObservation } from "./execution-observation.js";
1
4
  import { randomBytes } from "node:crypto";
2
5
  import { createServer } from "node:http";
3
6
  import { stat } from "node:fs/promises";
4
7
  import path from "node:path";
5
8
  import { Scheduler } from "./scheduler.js";
6
- import { CollisionLockManager, EvalRerunScheduler, EvalScheduler, RemoteWorkerProtocol, RemoteWorkerRegistry, ResourceLedger, inspectBuild, validateResourceVector } from "../control-plane/index.js";
7
- import { SCHEMA_VERSION, atomicWriteJSON, ensureDir, hitchRootId, invalidInput, readJSON, removeIfExists, statePaths } from "../foundation/index.js";
9
+ import { CollisionLockManager, EvalRerunScheduler, EvalScheduler, LocalInferenceManager, ManagedServiceRecovery, RemoteWorkerProtocol, RemoteWorkerRegistry, RemoteExecutionObservationCoordinator, ResourceLedger, inspectBuild, validateResourceVector } from "../control-plane/index.js";
10
+ import { HitchError, SCHEMA_VERSION, atomicWriteJSON, ensureDir, hitchRootId, invalidInput, readJSON, removeIfExists, statePaths } from "../foundation/index.js";
8
11
  import { acquireInstanceLock, authorized, ensureToken, releaseInstanceLock } from "./auth.js";
9
12
  import { handleRemoteWorkRoute, handleWorkerProtocolRoute } from "./worker-routes.js";
13
+ import { handleWorkerOwnershipRoute } from "./worker-ownership.js";
14
+ import { handleWorkerObservationRoute } from "./worker-observation.js";
10
15
  import { DaemonTelemetry } from "./telemetry.js";
11
16
  import { healthParallelism, healthResources, workerHealth } from "./health.js";
12
17
  import { boundedControlEvent, boundedMessage } from "./logging.js";
13
18
  import { completeLineSize, isLineBoundary, streamFileRange } from "./event-stream.js";
19
+ import { defaultLogger, defaultResourceCapacity, errorStatus, json, readBodyJSON } from "./http.js";
14
20
  export class DaemonServer {
15
21
  paths;
16
22
  rootId;
@@ -31,6 +37,7 @@ export class DaemonServer {
31
37
  evalScheduler;
32
38
  evalRerunScheduler;
33
39
  resources;
40
+ inferenceManager;
34
41
  server;
35
42
  remoteWorkers;
36
43
  remoteWorkerProtocol;
@@ -41,7 +48,9 @@ export class DaemonServer {
41
48
  evalRerunExecutor;
42
49
  credentialEnv;
43
50
  telemetry = new DaemonTelemetry();
44
- constructor({ root, port, maxConcurrent, logger = defaultLogger, discoverHarnesses = async () => [], resourceCapacity, runResources, evalTrialResources, evalExecutor, evalRerunExecutor, credentialEnv }) {
51
+ executionObserver;
52
+ remoteObservations;
53
+ constructor({ root, port, maxConcurrent, logger = defaultLogger, discoverHarnesses = async () => [], resourceCapacity, runResources, evalTrialResources, evalExecutor, evalRerunExecutor, credentialEnv, executionObserver }) {
45
54
  this.paths = statePaths(root);
46
55
  this.rootId = hitchRootId(this.paths.root);
47
56
  this.instanceId = randomBytes(16).toString("hex");
@@ -55,7 +64,9 @@ export class DaemonServer {
55
64
  this.evalExecutor = evalExecutor;
56
65
  this.evalRerunExecutor = evalRerunExecutor;
57
66
  this.credentialEnv = credentialEnv ?? process.env;
67
+ this.executionObserver = executionObserver;
58
68
  this.remoteWorkers = new RemoteWorkerRegistry({ root: this.paths.root });
69
+ this.remoteObservations = new RemoteExecutionObservationCoordinator({ registry: this.remoteWorkers, instanceId: this.instanceId });
59
70
  this.remoteWorkerProtocol = new RemoteWorkerProtocol({ root: this.paths.root, registry: this.remoteWorkers, ...(credentialEnv ? { credentialEnv } : {}) });
60
71
  this.startedAt = new Date();
61
72
  this.closedPromise = new Promise((resolve) => { this.resolveClosed = resolve; });
@@ -69,10 +80,22 @@ export class DaemonServer {
69
80
  this.ownsLock = true;
70
81
  try {
71
82
  this.token = await ensureToken(this.paths.token);
83
+ await this.executionObserver?.initialize();
72
84
  await this.remoteWorkers.initialize();
73
85
  await this.remoteWorkerProtocol.initialize();
86
+ this.remoteWorkerProtocol.modelRoutes.deferManagedRecovery();
87
+ // Recovery needs worker heartbeats, terminal receipts and release acknowledgments.
88
+ await this.listen();
74
89
  this.agents = await this.discoverHarnesses();
75
90
  this.resources = new ResourceLedger(this.resourceCapacity);
91
+ this.inferenceManager = new LocalInferenceManager({
92
+ root: this.paths.root,
93
+ resources: this.resources,
94
+ recovery: new ManagedServiceRecovery(this.paths.root, this.remoteWorkers, this.remoteWorkerProtocol),
95
+ onEvent: (event) => this.observeControlEvent(event),
96
+ });
97
+ await this.inferenceManager.initialize();
98
+ this.remoteWorkerProtocol.modelRoutes.finishManagedRecovery();
76
99
  this.scheduler = new Scheduler({
77
100
  runsRoot: this.paths.runs,
78
101
  root: this.paths.root,
@@ -81,6 +104,7 @@ export class DaemonServer {
81
104
  runResources: this.runResources,
82
105
  credentialEnv: this.credentialEnv,
83
106
  onEvent: (event) => this.observeRunEvent(event),
107
+ inferenceCoordinator: this.inferenceManager,
84
108
  });
85
109
  await this.scheduler.initialize();
86
110
  const collisions = new CollisionLockManager();
@@ -92,6 +116,7 @@ export class DaemonServer {
92
116
  remoteWorkers: this.remoteWorkers,
93
117
  remoteWorkerProtocol: this.remoteWorkerProtocol,
94
118
  credentialEnv: this.credentialEnv,
119
+ inferenceCoordinator: this.inferenceManager,
95
120
  ...(this.evalExecutor ? { executor: this.evalExecutor } : {}),
96
121
  onEvent: (event) => this.observeControlEvent(event),
97
122
  });
@@ -101,31 +126,13 @@ export class DaemonServer {
101
126
  resources: this.resources,
102
127
  trialResources: this.evalTrialResources,
103
128
  collisions,
129
+ ...(this.evalScheduler.remoteWork ? { remoteWork: this.evalScheduler.remoteWork } : {}),
104
130
  ...(this.evalRerunExecutor ? { executor: this.evalRerunExecutor } : {}),
105
131
  credentialEnv: this.credentialEnv,
132
+ inferenceCoordinator: this.inferenceManager,
106
133
  onEvent: (event) => this.observeControlEvent(event),
107
134
  });
108
135
  await this.evalRerunScheduler.initialize();
109
- this.server = createServer((request, response) => {
110
- this.handle(request, response).catch((error) => {
111
- this.logger("request_error", { error: boundedMessage(error.message), path: boundedMessage(request.url || "", 2_048) });
112
- const status = errorStatus(error);
113
- json(response, status, {
114
- error: {
115
- code: error.code || "internal_error",
116
- message: boundedMessage(error.message),
117
- exit_code: Number.isInteger(error.exitCode) ? error.exitCode : 12,
118
- },
119
- });
120
- });
121
- });
122
- this.server.requestTimeout = 30_000;
123
- this.server.headersTimeout = 10_000;
124
- await new Promise((resolve, reject) => {
125
- this.server?.once("error", reject);
126
- this.server?.listen(this.port, "127.0.0.1", () => resolve());
127
- });
128
- this.port = (this.server?.address()).port;
129
136
  await atomicWriteJSON(this.paths.daemon, {
130
137
  schema_version: SCHEMA_VERSION,
131
138
  pid: process.pid,
@@ -147,20 +154,41 @@ export class DaemonServer {
147
154
  this.scheduler?.shutdown().catch(() => { }),
148
155
  this.evalScheduler?.shutdown().catch(() => { }),
149
156
  this.evalRerunScheduler?.shutdown().catch(() => { }),
157
+ this.inferenceManager?.close().catch(() => { }),
150
158
  ]);
151
159
  await releaseInstanceLock(this.paths.lock, this.instanceId);
152
160
  this.ownsLock = false;
153
161
  throw error;
154
162
  }
155
163
  }
164
+ async listen() {
165
+ this.server = createServer((request, response) => {
166
+ this.handle(request, response).catch((error) => {
167
+ this.logger("request_error", { error: boundedMessage(error.message), path: boundedMessage(request.url || "", 2_048) });
168
+ json(response, errorStatus(error), { error: {
169
+ code: error.code || "internal_error", message: boundedMessage(error.message),
170
+ exit_code: Number.isInteger(error.exitCode) ? error.exitCode : 12,
171
+ } });
172
+ });
173
+ });
174
+ this.server.requestTimeout = 30_000;
175
+ this.server.headersTimeout = 10_000;
176
+ await new Promise((resolve, reject) => {
177
+ this.server?.once("error", reject);
178
+ this.server?.listen(this.port, "127.0.0.1", () => resolve());
179
+ });
180
+ this.port = this.server.address().port;
181
+ }
156
182
  async close() {
157
183
  if (this.closing)
158
184
  return this.closedPromise;
159
185
  this.closing = true;
186
+ this.remoteObservations.close();
160
187
  this.ready = false;
161
188
  let failure;
162
189
  try {
163
190
  await Promise.all([this.scheduler?.shutdown(), this.evalScheduler?.shutdown(), this.evalRerunScheduler?.shutdown()]);
191
+ await this.inferenceManager?.close();
164
192
  if (this.server)
165
193
  await new Promise((resolve) => this.server?.close(() => resolve()));
166
194
  }
@@ -192,11 +220,17 @@ export class DaemonServer {
192
220
  return json(response, 200, await this.health());
193
221
  }
194
222
  const workerRoute = { request, response, url, registry: this.remoteWorkers, protocol: this.remoteWorkerProtocol, adminToken: this.token || "", onEvent: (event) => this.observeControlEvent(event) };
195
- if (await handleWorkerProtocolRoute(workerRoute) || await handleRemoteWorkRoute(workerRoute))
223
+ if (await handleWorkerObservationRoute({ ...workerRoute, observations: this.remoteObservations })
224
+ || await handleWorkerOwnershipRoute(workerRoute) || await handleWorkerProtocolRoute(workerRoute) || await handleRemoteWorkRoute(workerRoute))
196
225
  return;
197
226
  if (!authorized(request, this.token || "")) {
198
227
  return json(response, 401, { error: { code: "unauthorized", message: "missing or invalid daemon token" } });
199
228
  }
229
+ if (!this.ready && !this.closing)
230
+ return json(response, 503, { error: { code: "daemon_recovering", message: "daemon is reconciling persisted execution; retry after recovery" } });
231
+ if (request.method === "POST" && url.pathname === "/v2/execution-observation") {
232
+ return executionObservation(request, response, { source: this.executionObserver, local: this.evalScheduler?.providerSnapshot(), instanceId: this.instanceId, remote: this.remoteObservations });
233
+ }
200
234
  if (request.method === "GET" && ["/v1/harnesses", "/v1/agents"].includes(url.pathname)) {
201
235
  this.agents = await this.discoverHarnesses();
202
236
  const key = url.pathname === "/v1/agents" ? "agents" : "harnesses";
@@ -214,6 +248,21 @@ export class DaemonServer {
214
248
  }));
215
249
  return json(response, 200, { schema_version: SCHEMA_VERSION, workers: [...(local ? [local] : []), ...remote] });
216
250
  }
251
+ if (request.method === "POST" && url.pathname === "/v1/inference/prepare") {
252
+ if (!this.inferenceManager)
253
+ throw new HitchError("inference manager unavailable", { code: "inference_route_unavailable", exitCode: 12 });
254
+ return prepareInference(request, response, this.inferenceManager);
255
+ }
256
+ if (request.method === "GET" && url.pathname === "/v1/inference/services") {
257
+ return json(response, 200, { schema_version: SCHEMA_VERSION, services: await this.inferenceManager?.list() ?? [] });
258
+ }
259
+ const inferenceStop = url.pathname.match(/^\/v1\/inference\/services\/(inference_[a-f0-9]{32})\/stop$/);
260
+ if (request.method === "POST" && inferenceStop) {
261
+ const body = await readBodyJSON(request);
262
+ const force = body.force === true;
263
+ await this.inferenceManager?.stop(inferenceStop[1], force);
264
+ return json(response, 200, { schema_version: SCHEMA_VERSION, service_id: inferenceStop[1], status: "stopped" });
265
+ }
217
266
  const buildMatch = url.pathname.match(/^\/v1\/builds\/(build_[a-f0-9]{32})$/);
218
267
  if (request.method === "GET" && buildMatch) {
219
268
  const inspected = await inspectBuild(this.paths.root, buildMatch[1]);
@@ -226,6 +275,9 @@ export class DaemonServer {
226
275
  const runId = await this.scheduler?.submit(requestBody);
227
276
  return json(response, 202, { schema_version: SCHEMA_VERSION, run_id: runId, status: "queued" });
228
277
  }
278
+ if (request.method === "POST" && url.pathname === "/v1/eval-controls") {
279
+ return json(response, 200, await orderedEvalControl(this.paths.root, await readBodyJSON(request), this.evalScheduler, this.evalRerunScheduler));
280
+ }
229
281
  if (request.method === "POST" && url.pathname === "/v1/evals") {
230
282
  const requestBody = await readBodyJSON(request);
231
283
  const header = request.headers["idempotency-key"];
@@ -251,7 +303,8 @@ export class DaemonServer {
251
303
  const rerunsCollectionMatch = url.pathname.match(/^\/v1\/evals\/(eval_[a-f0-9]+)\/reruns$/);
252
304
  if (request.method === "POST" && rerunsCollectionMatch) {
253
305
  const evalId = rerunsCollectionMatch[1];
254
- const accepted = await this.evalRerunScheduler?.submit(evalId, await readBodyJSON(request));
306
+ const body = await readBodyJSON(request);
307
+ const accepted = await withLegacyEvalMutation(this.paths.root, evalId, () => this.evalRerunScheduler.submit(evalId, body));
255
308
  return json(response, 202, {
256
309
  schema_version: SCHEMA_VERSION,
257
310
  eval_id: accepted?.evalId,
@@ -269,7 +322,7 @@ export class DaemonServer {
269
322
  if (rerunMatch) {
270
323
  const [, evalId, rerunId, action] = rerunMatch;
271
324
  if (request.method === "POST" && action === "cancel") {
272
- const status = await this.evalRerunScheduler?.cancel(evalId, rerunId);
325
+ const status = await withLegacyEvalMutation(this.paths.root, evalId, () => this.evalRerunScheduler.cancel(evalId, rerunId));
273
326
  return json(response, 200, { schema_version: SCHEMA_VERSION, eval_id: evalId, rerun_id: rerunId, status });
274
327
  }
275
328
  if (request.method === "GET" && !action) {
@@ -295,7 +348,7 @@ export class DaemonServer {
295
348
  return this.streamEvents(response, path.join(this.paths.evals, evalId, "events.jsonl"), url.searchParams.get("offset") || "0");
296
349
  }
297
350
  if (request.method === "POST" && action === "cancel") {
298
- const outcome = await this.evalScheduler?.cancel(evalId);
351
+ const outcome = await withLegacyEvalMutation(this.paths.root, evalId, () => this.evalScheduler.cancel(evalId));
299
352
  if (outcome === "accepted")
300
353
  return json(response, 202, { schema_version: SCHEMA_VERSION, eval_id: evalId, status: "cancelling" });
301
354
  if (outcome === "terminal") {
@@ -415,59 +468,4 @@ export class DaemonServer {
415
468
  }
416
469
  }
417
470
  }
418
- function errorStatus(error) {
419
- if (new Set(["idempotency_conflict", "eval_rerun_source_not_terminal", "eval_rerun_cancelled"]).has(String(error.code)))
420
- return 409;
421
- const exitCode = error.exitCode;
422
- if (exitCode === 2)
423
- return 400;
424
- if (exitCode === 3)
425
- return 404;
426
- if (exitCode === 11)
427
- return 403;
428
- if ([4, 5, 10].includes(exitCode))
429
- return 422;
430
- return 500;
431
- }
432
- function httpErrorCode(status) {
433
- if (status === 400)
434
- return "invalid_input";
435
- if (status === 404)
436
- return "not_found";
437
- return "daemon_request_failed";
438
- }
439
- async function readBodyJSON(request, limit = 1_048_576) {
440
- const chunks = [];
441
- let size = 0;
442
- for await (const chunk of request) {
443
- const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
444
- size += buffer.length;
445
- if (size > limit)
446
- throw invalidInput("request body exceeds 1 MiB");
447
- chunks.push(buffer);
448
- }
449
- try {
450
- return JSON.parse(Buffer.concat(chunks).toString("utf8") || "{}");
451
- }
452
- catch {
453
- throw invalidInput("invalid JSON request body");
454
- }
455
- }
456
- function json(response, status, value) {
457
- if (response.headersSent)
458
- return;
459
- response.writeHead(status, { "content-type": "application/json; charset=utf-8" });
460
- response.end(`${JSON.stringify(value)}\n`);
461
- }
462
- function defaultLogger(type, fields) {
463
- process.stdout.write(`${new Date().toISOString()} ${type} ${JSON.stringify(fields)}\n`);
464
- }
465
- function defaultResourceCapacity(maxConcurrent) {
466
- return {
467
- cpu_millis: maxConcurrent * 1_000,
468
- memory_bytes: maxConcurrent * 1024 * 1024 * 1024,
469
- container_slots: maxConcurrent,
470
- build_slots: 1,
471
- };
472
- }
473
471
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/daemon/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/daemon/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { parseExecutionObservationReceipt } from "../control-plane/index.js";
2
+ import { HitchError, invalidInput } from "../foundation/index.js";
3
+ import { json, readBodyJSON } from "./http.js";
4
+ export async function handleWorkerObservationRoute(input) {
5
+ const { request, response, url, registry, observations } = input;
6
+ const match = url.pathname.match(/^\/v2\/workers\/(worker_[a-z0-9][a-z0-9_-]{0,62})\/execution-observation$/);
7
+ if (!match || !["GET", "POST"].includes(request.method ?? ""))
8
+ return false;
9
+ const workerId = match[1], token = /^Bearer ([a-f0-9]{64})$/.exec(request.headers.authorization ?? "")?.[1];
10
+ response.setHeader("cache-control", "no-store");
11
+ const authorizedGeneration = token ? await registry.authenticatedGeneration(workerId, token) : null;
12
+ if (authorizedGeneration === null) {
13
+ json(response, 401, { error: { code: "unauthorized", message: "missing or invalid worker credential" } });
14
+ return true;
15
+ }
16
+ if (request.method === "GET") {
17
+ const generation = url.searchParams.get("generation");
18
+ if (!generation || !/^[1-9][0-9]*$/.test(generation) || !Number.isSafeInteger(Number(generation)))
19
+ throw invalidInput("observation requires a valid worker generation");
20
+ if (Number(generation) !== authorizedGeneration)
21
+ throw credentialMismatch();
22
+ json(response, 200, { schema_version: "2", challenge: await observations.poll(workerId, Number(generation)) });
23
+ }
24
+ else {
25
+ const receipt = parseExecutionObservationReceipt(await readBodyJSON(request, 64 * 1024));
26
+ if (receipt.challenge.generation !== authorizedGeneration)
27
+ throw credentialMismatch();
28
+ await observations.submit(workerId, receipt);
29
+ json(response, 200, { schema_version: "2", accepted: true });
30
+ }
31
+ return true;
32
+ }
33
+ function credentialMismatch() { return new HitchError("worker observation generation differs from its authenticated credential", { code: "worker_generation_mismatch", exitCode: 12 }); }
34
+ //# sourceMappingURL=worker-observation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-observation.js","sourceRoot":"","sources":["../../../src/daemon/worker-observation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,KAGlD;IACC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IACjE,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;IAC9G,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5E,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAE,EAAE,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7G,QAAQ,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAChD,MAAM,oBAAoB,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpG,IAAI,oBAAoB,KAAK,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,sCAAsC,EAAE,EAAE,CAAC,CAAC;QAC1G,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAAE,MAAM,YAAY,CAAC,gDAAgD,CAAC,CAAC;QACxK,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,oBAAoB;YAAE,MAAM,kBAAkB,EAAE,CAAC;QAC5E,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;IACjH,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,gCAAgC,CAAC,MAAM,YAAY,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QACzF,IAAI,OAAO,CAAC,SAAS,CAAC,UAAU,KAAK,oBAAoB;YAAE,MAAM,kBAAkB,EAAE,CAAC;QACtF,MAAM,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AACD,SAAS,kBAAkB,KAAK,OAAO,IAAI,UAAU,CAAC,yEAAyE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { parseRemoteExecutionOwnership } from "../control-plane/index.js";
2
+ import { HitchError, invalidInput } from "../foundation/index.js";
3
+ /** Independent v2 endpoints; v1 offers and receipt formats are unchanged. */
4
+ export async function handleWorkerOwnershipRoute(input) {
5
+ const { request, response, url, registry, protocol } = input;
6
+ const match = url.pathname.match(/^\/v2\/workers\/(worker_[a-z0-9][a-z0-9_-]{0,62})\/offers\/(offer_[a-f0-9]{32})\/(accept|process|cleanup-challenge|cleanup)$/);
7
+ if (!match || request.method !== "POST")
8
+ return false;
9
+ const workerId = match[1], offerId = match[2], token = /^Bearer ([a-f0-9]{64})$/.exec(request.headers.authorization ?? "")?.[1];
10
+ const authenticated = token ? await registry.authenticatedGeneration(workerId, token) : null;
11
+ response.setHeader("cache-control", "no-store");
12
+ if (authenticated === null) {
13
+ response.setHeader("x-hitch-worker-auth", "rejected");
14
+ json(response, 401, { error: { code: "unauthorized", message: "missing or invalid worker credential" } });
15
+ return true;
16
+ }
17
+ const body = await readBody(request);
18
+ if (body.schema_version !== "2" || body.offer_id !== offerId || body.generation !== authenticated) {
19
+ throw new HitchError("worker execution admission generation differs from its bearer", { code: "worker_generation_mismatch", exitCode: 12 });
20
+ }
21
+ if (match[3] === "accept") {
22
+ exact(body, ["schema_version", "offer_id", "generation", "nonce", "sent_at", "ownership"]);
23
+ const offer = await protocol.acceptOffer(workerId, { schema_version: "1", offer_id: offerId, generation: authenticated,
24
+ nonce: body.nonce, sent_at: body.sent_at, accepted: true }, parseRemoteExecutionOwnership(body.ownership));
25
+ json(response, 200, { schema_version: "2", offer, admission: await protocol.executionAdmission(workerId, offerId) });
26
+ }
27
+ else if (match[3] === "process") {
28
+ exact(body, ["schema_version", "offer_id", "generation", "ownership_digest", "process"]);
29
+ const admission = await protocol.authorizeExecutionProcess(workerId, offerId, authenticated, body.ownership_digest, body.process);
30
+ json(response, 200, { schema_version: "2", admission });
31
+ }
32
+ else if (match[3] === "cleanup-challenge") {
33
+ exact(body, ["schema_version", "offer_id", "generation"]);
34
+ json(response, 200, { schema_version: "2", ...await protocol.generationCleanup.challenge(workerId, offerId, authenticated) });
35
+ }
36
+ else {
37
+ exact(body, ["schema_version", "offer_id", "generation", "receipt"]);
38
+ json(response, 200, { schema_version: "2", receipt: await protocol.generationCleanup.commit(workerId, offerId, authenticated, body.receipt) });
39
+ }
40
+ return true;
41
+ }
42
+ async function readBody(request) {
43
+ const chunks = [];
44
+ let size = 0;
45
+ for await (const chunk of request) {
46
+ const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
47
+ size += bytes.length;
48
+ if (size > 64 * 1024)
49
+ throw invalidInput("worker execution admission body is too large");
50
+ chunks.push(bytes);
51
+ }
52
+ let value;
53
+ try {
54
+ value = JSON.parse(Buffer.concat(chunks).toString("utf8"));
55
+ }
56
+ catch {
57
+ throw invalidInput("invalid worker execution admission JSON");
58
+ }
59
+ if (!value || typeof value !== "object" || Array.isArray(value))
60
+ throw invalidInput("worker execution admission must be an object");
61
+ return value;
62
+ }
63
+ function exact(value, fields) {
64
+ if (Object.keys(value).length !== fields.length || Object.keys(value).some(key => !fields.includes(key)))
65
+ throw invalidInput("unexpected worker execution admission fields");
66
+ }
67
+ function json(response, status, value) {
68
+ response.writeHead(status, { "content-type": "application/json" });
69
+ response.end(JSON.stringify(value));
70
+ }
71
+ //# sourceMappingURL=worker-ownership.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-ownership.js","sourceRoot":"","sources":["../../../src/daemon/worker-ownership.ts"],"names":[],"mappings":"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"}