agent-hitch 0.2.6 → 0.2.7

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 (386) hide show
  1. package/README.md +14 -1
  2. package/dist/scripts/canary-buildkit-secrets.js +166 -0
  3. package/dist/scripts/canary-buildkit-secrets.js.map +1 -0
  4. package/dist/scripts/canary-collision-domains.js +77 -0
  5. package/dist/scripts/canary-collision-domains.js.map +1 -0
  6. package/dist/scripts/canary-docker-image-observation.js +181 -0
  7. package/dist/scripts/canary-docker-image-observation.js.map +1 -0
  8. package/dist/scripts/canary-gpu-hardware.js +95 -0
  9. package/dist/scripts/canary-gpu-hardware.js.map +1 -0
  10. package/dist/scripts/canary-harbor-load.js +365 -0
  11. package/dist/scripts/canary-harbor-load.js.map +1 -0
  12. package/dist/scripts/canary-packaged-harness.js +75 -0
  13. package/dist/scripts/canary-packaged-harness.js.map +1 -0
  14. package/dist/scripts/canary-resource-load.js +188 -0
  15. package/dist/scripts/canary-resource-load.js.map +1 -0
  16. package/dist/scripts/check-architecture.js +8 -4
  17. package/dist/scripts/check-architecture.js.map +1 -1
  18. package/dist/scripts/docker-reaper-crash-child.js +21 -0
  19. package/dist/scripts/docker-reaper-crash-child.js.map +1 -0
  20. package/dist/src/adapters/catalog.js +1 -0
  21. package/dist/src/adapters/catalog.js.map +1 -1
  22. package/dist/src/adapters/discovery.js +1 -1
  23. package/dist/src/adapters/discovery.js.map +1 -1
  24. package/dist/src/adapters/providers/claude.js +6 -0
  25. package/dist/src/adapters/providers/claude.js.map +1 -1
  26. package/dist/src/adapters/providers/codex.js +6 -0
  27. package/dist/src/adapters/providers/codex.js.map +1 -1
  28. package/dist/src/adapters/providers/deepseek.js +6 -0
  29. package/dist/src/adapters/providers/deepseek.js.map +1 -1
  30. package/dist/src/adapters/providers/opencode.js +6 -0
  31. package/dist/src/adapters/providers/opencode.js.map +1 -1
  32. package/dist/src/adapters/providers/pi.js +6 -0
  33. package/dist/src/adapters/providers/pi.js.map +1 -1
  34. package/dist/src/artifacts/index.js +1 -0
  35. package/dist/src/artifacts/index.js.map +1 -1
  36. package/dist/src/backends/harbor/backend.js +53 -103
  37. package/dist/src/backends/harbor/backend.js.map +1 -1
  38. package/dist/src/backends/harbor/environment-config.js +92 -0
  39. package/dist/src/backends/harbor/environment-config.js.map +1 -0
  40. package/dist/src/backends/harbor/index.js +5 -1
  41. package/dist/src/backends/harbor/index.js.map +1 -1
  42. package/dist/src/backends/harbor/model-proxy-config.js +23 -0
  43. package/dist/src/backends/harbor/model-proxy-config.js.map +1 -0
  44. package/dist/src/backends/harbor/process.js +177 -0
  45. package/dist/src/backends/harbor/process.js.map +1 -0
  46. package/dist/src/backends/harbor/runtime-toolchain.js +30 -0
  47. package/dist/src/backends/harbor/runtime-toolchain.js.map +1 -0
  48. package/dist/src/backends/harbor/supervisor.js +74 -0
  49. package/dist/src/backends/harbor/supervisor.js.map +1 -0
  50. package/dist/src/backends/harbor/task-resources.js +206 -0
  51. package/dist/src/backends/harbor/task-resources.js.map +1 -0
  52. package/dist/src/backends/harbor/tools.js +6 -29
  53. package/dist/src/backends/harbor/tools.js.map +1 -1
  54. package/dist/src/backends/index.js +4 -1
  55. package/dist/src/backends/index.js.map +1 -1
  56. package/dist/src/cli/commands/daemon.js +135 -8
  57. package/dist/src/cli/commands/daemon.js.map +1 -1
  58. package/dist/src/cli/commands/eval.js +214 -4
  59. package/dist/src/cli/commands/eval.js.map +1 -1
  60. package/dist/src/cli/commands/images.js +40 -0
  61. package/dist/src/cli/commands/images.js.map +1 -0
  62. package/dist/src/cli/commands/run.js +6 -3
  63. package/dist/src/cli/commands/run.js.map +1 -1
  64. package/dist/src/cli/commands/runs.js +25 -3
  65. package/dist/src/cli/commands/runs.js.map +1 -1
  66. package/dist/src/cli/commands/worker.js +79 -0
  67. package/dist/src/cli/commands/worker.js.map +1 -0
  68. package/dist/src/cli/main.js +4 -0
  69. package/dist/src/cli/main.js.map +1 -1
  70. package/dist/src/cli/output.js +71 -3
  71. package/dist/src/cli/output.js.map +1 -1
  72. package/dist/src/control-plane/build-admission.js +69 -0
  73. package/dist/src/control-plane/build-admission.js.map +1 -0
  74. package/dist/src/control-plane/build-records.js +6 -0
  75. package/dist/src/control-plane/build-records.js.map +1 -0
  76. package/dist/src/control-plane/collisions.js +40 -0
  77. package/dist/src/control-plane/collisions.js.map +1 -0
  78. package/dist/src/control-plane/eval-control-state.js +22 -0
  79. package/dist/src/control-plane/eval-control-state.js.map +1 -0
  80. package/dist/src/control-plane/eval-control-work.js +39 -0
  81. package/dist/src/control-plane/eval-control-work.js.map +1 -0
  82. package/dist/src/control-plane/eval-image-resolution.js +52 -0
  83. package/dist/src/control-plane/eval-image-resolution.js.map +1 -0
  84. package/dist/src/control-plane/eval-image-services.js +30 -0
  85. package/dist/src/control-plane/eval-image-services.js.map +1 -0
  86. package/dist/src/control-plane/eval-records.js +252 -0
  87. package/dist/src/control-plane/eval-records.js.map +1 -0
  88. package/dist/src/control-plane/eval-recovery.js +181 -0
  89. package/dist/src/control-plane/eval-recovery.js.map +1 -0
  90. package/dist/src/control-plane/eval-scheduler.js +447 -0
  91. package/dist/src/control-plane/eval-scheduler.js.map +1 -0
  92. package/dist/src/control-plane/index.js +20 -0
  93. package/dist/src/control-plane/index.js.map +1 -0
  94. package/dist/src/control-plane/local-worker.js +49 -0
  95. package/dist/src/control-plane/local-worker.js.map +1 -0
  96. package/dist/src/control-plane/model-capture-planning.js +12 -0
  97. package/dist/src/control-plane/model-capture-planning.js.map +1 -0
  98. package/dist/src/control-plane/remote-result-transport.js +172 -0
  99. package/dist/src/control-plane/remote-result-transport.js.map +1 -0
  100. package/dist/src/control-plane/remote-work-coordinator.js +332 -0
  101. package/dist/src/control-plane/remote-work-coordinator.js.map +1 -0
  102. package/dist/src/control-plane/remote-work-inputs.js +266 -0
  103. package/dist/src/control-plane/remote-work-inputs.js.map +1 -0
  104. package/dist/src/control-plane/remote-work-recovery.js +181 -0
  105. package/dist/src/control-plane/remote-work-recovery.js.map +1 -0
  106. package/dist/src/control-plane/remote-worker-artifacts.js +135 -0
  107. package/dist/src/control-plane/remote-worker-artifacts.js.map +1 -0
  108. package/dist/src/control-plane/remote-worker-client.js +202 -0
  109. package/dist/src/control-plane/remote-worker-client.js.map +1 -0
  110. package/dist/src/control-plane/remote-worker-configuration.js +34 -0
  111. package/dist/src/control-plane/remote-worker-configuration.js.map +1 -0
  112. package/dist/src/control-plane/remote-worker-credentials.js +58 -0
  113. package/dist/src/control-plane/remote-worker-credentials.js.map +1 -0
  114. package/dist/src/control-plane/remote-worker-protocol.js +510 -0
  115. package/dist/src/control-plane/remote-worker-protocol.js.map +1 -0
  116. package/dist/src/control-plane/remote-worker-runner.js +214 -0
  117. package/dist/src/control-plane/remote-worker-runner.js.map +1 -0
  118. package/dist/src/control-plane/remote-workers.js +377 -0
  119. package/dist/src/control-plane/remote-workers.js.map +1 -0
  120. package/dist/src/control-plane/rerun-scheduler.js +411 -0
  121. package/dist/src/control-plane/rerun-scheduler.js.map +1 -0
  122. package/dist/src/control-plane/rerun-submission.js +56 -0
  123. package/dist/src/control-plane/rerun-submission.js.map +1 -0
  124. package/dist/src/control-plane/resources.js +182 -0
  125. package/dist/src/control-plane/resources.js.map +1 -0
  126. package/dist/src/control-plane/scheduler-eval-entry.js +32 -0
  127. package/dist/src/control-plane/scheduler-eval-entry.js.map +1 -0
  128. package/dist/src/control-plane/synthetic-result.js +21 -0
  129. package/dist/src/control-plane/synthetic-result.js.map +1 -0
  130. package/dist/src/control-plane/work-admission.js +21 -0
  131. package/dist/src/control-plane/work-admission.js.map +1 -0
  132. package/dist/src/control-plane/work-dispatcher.js +229 -0
  133. package/dist/src/control-plane/work-dispatcher.js.map +1 -0
  134. package/dist/src/controller-runtime/hash.js +12 -1
  135. package/dist/src/controller-runtime/hash.js.map +1 -1
  136. package/dist/src/controller-runtime/index.js +1 -1
  137. package/dist/src/controller-runtime/index.js.map +1 -1
  138. package/dist/src/controller-runtime/store.js +15 -6
  139. package/dist/src/controller-runtime/store.js.map +1 -1
  140. package/dist/src/daemon/client.js.map +1 -1
  141. package/dist/src/daemon/event-stream.js +46 -0
  142. package/dist/src/daemon/event-stream.js.map +1 -0
  143. package/dist/src/daemon/health.js +66 -0
  144. package/dist/src/daemon/health.js.map +1 -0
  145. package/dist/src/daemon/launcher.js +28 -1
  146. package/dist/src/daemon/launcher.js.map +1 -1
  147. package/dist/src/daemon/logging.js +23 -0
  148. package/dist/src/daemon/logging.js.map +1 -0
  149. package/dist/src/daemon/scheduler.js +26 -5
  150. package/dist/src/daemon/scheduler.js.map +1 -1
  151. package/dist/src/daemon/server.js +255 -98
  152. package/dist/src/daemon/server.js.map +1 -1
  153. package/dist/src/daemon/telemetry.js +163 -0
  154. package/dist/src/daemon/telemetry.js.map +1 -0
  155. package/dist/src/daemon/worker-routes.js +219 -0
  156. package/dist/src/daemon/worker-routes.js.map +1 -0
  157. package/dist/src/domain/bundles.js +2 -0
  158. package/dist/src/domain/bundles.js.map +1 -0
  159. package/dist/src/domain/control-plane.js +2 -0
  160. package/dist/src/domain/control-plane.js.map +1 -0
  161. package/dist/src/domain/execution-evidence.js +2 -0
  162. package/dist/src/domain/execution-evidence.js.map +1 -0
  163. package/dist/src/domain/execution-plan.js +2 -0
  164. package/dist/src/domain/execution-plan.js.map +1 -0
  165. package/dist/src/domain/images.js +2 -0
  166. package/dist/src/domain/images.js.map +1 -0
  167. package/dist/src/domain/index.js +9 -0
  168. package/dist/src/domain/index.js.map +1 -1
  169. package/dist/src/domain/interactions.js +2 -0
  170. package/dist/src/domain/interactions.js.map +1 -0
  171. package/dist/src/domain/providers.js +2 -0
  172. package/dist/src/domain/providers.js.map +1 -0
  173. package/dist/src/domain/resources.js +2 -0
  174. package/dist/src/domain/resources.js.map +1 -0
  175. package/dist/src/domain/workers.js +2 -0
  176. package/dist/src/domain/workers.js.map +1 -0
  177. package/dist/src/evals/collect-only-rerun.js +182 -0
  178. package/dist/src/evals/collect-only-rerun.js.map +1 -0
  179. package/dist/src/evals/directory.js +30 -0
  180. package/dist/src/evals/directory.js.map +1 -0
  181. package/dist/src/evals/docker-engine-stats.js +89 -0
  182. package/dist/src/evals/docker-engine-stats.js.map +1 -0
  183. package/dist/src/evals/docker-ownership.js +51 -0
  184. package/dist/src/evals/docker-ownership.js.map +1 -0
  185. package/dist/src/evals/docker-reaper.js +144 -0
  186. package/dist/src/evals/docker-reaper.js.map +1 -0
  187. package/dist/src/evals/docker-resource-observer.js +207 -0
  188. package/dist/src/evals/docker-resource-observer.js.map +1 -0
  189. package/dist/src/evals/environment-image-planning.js +164 -0
  190. package/dist/src/evals/environment-image-planning.js.map +1 -0
  191. package/dist/src/evals/eval-artifact-planning.js +56 -0
  192. package/dist/src/evals/eval-artifact-planning.js.map +1 -0
  193. package/dist/src/evals/eval-finalization.js +10 -0
  194. package/dist/src/evals/eval-finalization.js.map +1 -0
  195. package/dist/src/evals/eval-lifecycle-events.js +16 -0
  196. package/dist/src/evals/eval-lifecycle-events.js.map +1 -0
  197. package/dist/src/evals/events.js +53 -5
  198. package/dist/src/evals/events.js.map +1 -1
  199. package/dist/src/evals/execution-evidence.js +116 -0
  200. package/dist/src/evals/execution-evidence.js.map +1 -0
  201. package/dist/src/evals/execution-leases.js +342 -0
  202. package/dist/src/evals/execution-leases.js.map +1 -0
  203. package/dist/src/evals/execution-plan-artifacts.js +72 -0
  204. package/dist/src/evals/execution-plan-artifacts.js.map +1 -0
  205. package/dist/src/evals/execution-plan-images.js +69 -0
  206. package/dist/src/evals/execution-plan-images.js.map +1 -0
  207. package/dist/src/evals/execution-plan-resources.js +174 -0
  208. package/dist/src/evals/execution-plan-resources.js.map +1 -0
  209. package/dist/src/evals/execution-plan.js +415 -0
  210. package/dist/src/evals/execution-plan.js.map +1 -0
  211. package/dist/src/evals/harbor-artifact-builder-image.js +99 -0
  212. package/dist/src/evals/harbor-artifact-builder-image.js.map +1 -0
  213. package/dist/src/evals/harbor-artifact-builder.js +354 -0
  214. package/dist/src/evals/harbor-artifact-builder.js.map +1 -0
  215. package/dist/src/evals/harbor-bridge-error.js +18 -3
  216. package/dist/src/evals/harbor-bridge-error.js.map +1 -1
  217. package/dist/src/evals/harbor-phase-timings.js +60 -0
  218. package/dist/src/evals/harbor-phase-timings.js.map +1 -0
  219. package/dist/src/evals/index.js +25 -2
  220. package/dist/src/evals/index.js.map +1 -1
  221. package/dist/src/evals/infrastructure-retry.js +100 -63
  222. package/dist/src/evals/infrastructure-retry.js.map +1 -1
  223. package/dist/src/evals/interaction-capture-import.js +49 -0
  224. package/dist/src/evals/interaction-capture-import.js.map +1 -0
  225. package/dist/src/evals/local-docker-provider.js +372 -0
  226. package/dist/src/evals/local-docker-provider.js.map +1 -0
  227. package/dist/src/evals/local-eval-planning.js +80 -0
  228. package/dist/src/evals/local-eval-planning.js.map +1 -0
  229. package/dist/src/evals/model-capture-plan.js +22 -0
  230. package/dist/src/evals/model-capture-plan.js.map +1 -0
  231. package/dist/src/evals/model-capture-runtime.js +114 -0
  232. package/dist/src/evals/model-capture-runtime.js.map +1 -0
  233. package/dist/src/evals/model-proxy-runtime-state.js +53 -0
  234. package/dist/src/evals/model-proxy-runtime-state.js.map +1 -0
  235. package/dist/src/evals/planned-execution-support.js +54 -0
  236. package/dist/src/evals/planned-execution-support.js.map +1 -0
  237. package/dist/src/evals/planned-execution.js +461 -0
  238. package/dist/src/evals/planned-execution.js.map +1 -0
  239. package/dist/src/evals/planned-remote-execution.js +40 -0
  240. package/dist/src/evals/planned-remote-execution.js.map +1 -0
  241. package/dist/src/evals/planned-retry-lifecycle.js +186 -0
  242. package/dist/src/evals/planned-retry-lifecycle.js.map +1 -0
  243. package/dist/src/evals/prepared-harness.js +76 -0
  244. package/dist/src/evals/prepared-harness.js.map +1 -0
  245. package/dist/src/evals/progress.js +4 -4
  246. package/dist/src/evals/progress.js.map +1 -1
  247. package/dist/src/evals/records.js +20 -3
  248. package/dist/src/evals/records.js.map +1 -1
  249. package/dist/src/evals/recovery.js +192 -0
  250. package/dist/src/evals/recovery.js.map +1 -0
  251. package/dist/src/evals/remote-infrastructure-retry.js +99 -0
  252. package/dist/src/evals/remote-infrastructure-retry.js.map +1 -0
  253. package/dist/src/evals/rerun-inputs.js +89 -0
  254. package/dist/src/evals/rerun-inputs.js.map +1 -0
  255. package/dist/src/evals/rerun-slots.js +4 -3
  256. package/dist/src/evals/rerun-slots.js.map +1 -1
  257. package/dist/src/evals/rerun-types.js +49 -0
  258. package/dist/src/evals/rerun-types.js.map +1 -0
  259. package/dist/src/evals/rerun.js +113 -75
  260. package/dist/src/evals/rerun.js.map +1 -1
  261. package/dist/src/evals/result-helpers.js +65 -0
  262. package/dist/src/evals/result-helpers.js.map +1 -0
  263. package/dist/src/evals/resume-state.js +36 -0
  264. package/dist/src/evals/resume-state.js.map +1 -0
  265. package/dist/src/evals/service-types.js +2 -0
  266. package/dist/src/evals/service-types.js.map +1 -0
  267. package/dist/src/evals/service.js +292 -257
  268. package/dist/src/evals/service.js.map +1 -1
  269. package/dist/src/evals/task-resources.js +209 -0
  270. package/dist/src/evals/task-resources.js.map +1 -0
  271. package/dist/src/evals/trial-environment-evidence.js +87 -0
  272. package/dist/src/evals/trial-environment-evidence.js.map +1 -0
  273. package/dist/src/evals/trial-execution-evidence.js +13 -0
  274. package/dist/src/evals/trial-execution-evidence.js.map +1 -0
  275. package/dist/src/evals/trial-import-identity.js +31 -0
  276. package/dist/src/evals/trial-import-identity.js.map +1 -0
  277. package/dist/src/evals/trial-import.js +143 -145
  278. package/dist/src/evals/trial-import.js.map +1 -1
  279. package/dist/src/evals/trial-publication-recovery.js +104 -0
  280. package/dist/src/evals/trial-publication-recovery.js.map +1 -0
  281. package/dist/src/evals/trial-publication.js +25 -0
  282. package/dist/src/evals/trial-publication.js.map +1 -0
  283. package/dist/src/evals/work-item-artifacts.js +23 -0
  284. package/dist/src/evals/work-item-artifacts.js.map +1 -0
  285. package/dist/src/foundation/config.js +17 -0
  286. package/dist/src/foundation/config.js.map +1 -1
  287. package/dist/src/foundation/credential-redaction.js +137 -0
  288. package/dist/src/foundation/credential-redaction.js.map +1 -0
  289. package/dist/src/foundation/environment-image-references.js +59 -0
  290. package/dist/src/foundation/environment-image-references.js.map +1 -0
  291. package/dist/src/foundation/executable.js +45 -5
  292. package/dist/src/foundation/executable.js.map +1 -1
  293. package/dist/src/foundation/index.js +5 -2
  294. package/dist/src/foundation/index.js.map +1 -1
  295. package/dist/src/foundation/process-identity.js +69 -0
  296. package/dist/src/foundation/process-identity.js.map +1 -0
  297. package/dist/src/images/context.js +47 -0
  298. package/dist/src/images/context.js.map +1 -0
  299. package/dist/src/images/docker-buildkit.js +137 -0
  300. package/dist/src/images/docker-buildkit.js.map +1 -0
  301. package/dist/src/images/dockerfile.js +67 -0
  302. package/dist/src/images/dockerfile.js.map +1 -0
  303. package/dist/src/images/gc.js +261 -0
  304. package/dist/src/images/gc.js.map +1 -0
  305. package/dist/src/images/index.js +10 -0
  306. package/dist/src/images/index.js.map +1 -0
  307. package/dist/src/images/manifest.js +109 -0
  308. package/dist/src/images/manifest.js.map +1 -0
  309. package/dist/src/images/ownership.js +5 -0
  310. package/dist/src/images/ownership.js.map +1 -0
  311. package/dist/src/images/records.js +32 -0
  312. package/dist/src/images/records.js.map +1 -0
  313. package/dist/src/images/registry.js +154 -0
  314. package/dist/src/images/registry.js.map +1 -0
  315. package/dist/src/images/service.js +224 -0
  316. package/dist/src/images/service.js.map +1 -0
  317. package/dist/src/model-access/capture.js +255 -0
  318. package/dist/src/model-access/capture.js.map +1 -0
  319. package/dist/src/model-access/index.js +5 -0
  320. package/dist/src/model-access/index.js.map +1 -0
  321. package/dist/src/model-access/policy.js +49 -0
  322. package/dist/src/model-access/policy.js.map +1 -0
  323. package/dist/src/model-access/proxy.js +336 -0
  324. package/dist/src/model-access/proxy.js.map +1 -0
  325. package/dist/src/model-access/records.js +167 -0
  326. package/dist/src/model-access/records.js.map +1 -0
  327. package/dist/src/runs/bundle.js +450 -0
  328. package/dist/src/runs/bundle.js.map +1 -0
  329. package/dist/src/runs/events.js +12 -1
  330. package/dist/src/runs/events.js.map +1 -1
  331. package/dist/src/runs/executor.js +24 -17
  332. package/dist/src/runs/executor.js.map +1 -1
  333. package/dist/src/runs/index.js +3 -1
  334. package/dist/src/runs/index.js.map +1 -1
  335. package/dist/src/runs/manifest.js +5 -5
  336. package/dist/src/runs/manifest.js.map +1 -1
  337. package/dist/src/runs/request.js +6 -1
  338. package/dist/src/runs/request.js.map +1 -1
  339. package/dist/src/runs/training-candidate.js +161 -0
  340. package/dist/src/runs/training-candidate.js.map +1 -0
  341. package/dist/src/trajectories/provider-capture.js +15 -24
  342. package/dist/src/trajectories/provider-capture.js.map +1 -1
  343. package/dist/src/trajectories/providers/deepseek.js +3 -3
  344. package/dist/src/trajectories/providers/deepseek.js.map +1 -1
  345. package/dist/src/workers/index.js +3 -0
  346. package/dist/src/workers/index.js.map +1 -0
  347. package/dist/src/workers/remote-harbor-work-spec.js +97 -0
  348. package/dist/src/workers/remote-harbor-work-spec.js.map +1 -0
  349. package/dist/src/workers/remote-harbor-worker.js +220 -0
  350. package/dist/src/workers/remote-harbor-worker.js.map +1 -0
  351. package/docs/schemas/environment-build-index.schema.json +13 -0
  352. package/docs/schemas/environment-build-record.schema.json +25 -0
  353. package/docs/schemas/environment-image-manifest.schema.json +62 -0
  354. package/docs/schemas/eval-control.schema.json +36 -0
  355. package/docs/schemas/eval-execution-plan.schema.json +216 -0
  356. package/docs/schemas/eval-rerun-result.schema.json +53 -0
  357. package/docs/schemas/eval-rerun-state.schema.json +61 -0
  358. package/docs/schemas/eval-rerun-submission.schema.json +58 -0
  359. package/docs/schemas/eval-result.schema.json +34 -1
  360. package/docs/schemas/eval-submission-input.schema.json +14 -0
  361. package/docs/schemas/eval-submission.schema.json +68 -0
  362. package/docs/schemas/eval-trial-publication.schema.json +39 -0
  363. package/docs/schemas/execution-evidence.schema.json +96 -0
  364. package/docs/schemas/execution-lease.schema.json +50 -0
  365. package/docs/schemas/execution-provider-status.schema.json +65 -0
  366. package/docs/schemas/execution-worker.schema.json +53 -0
  367. package/docs/schemas/harbor-process-exit.schema.json +14 -0
  368. package/docs/schemas/interaction-capture-ref.schema.json +45 -0
  369. package/docs/schemas/local-provider-execution.schema.json +33 -0
  370. package/docs/schemas/model-interaction.schema.json +41 -0
  371. package/docs/schemas/remote-result-envelope.schema.json +32 -0
  372. package/docs/schemas/remote-tree-envelope.schema.json +25 -0
  373. package/docs/schemas/remote-work-offer.schema.json +58 -0
  374. package/docs/schemas/remote-work-receipt.schema.json +50 -0
  375. package/docs/schemas/remote-worker-artifact.schema.json +17 -0
  376. package/docs/schemas/remote-worker-event.schema.json +18 -0
  377. package/docs/schemas/remote-worker-heartbeat.schema.json +37 -0
  378. package/docs/schemas/remote-worker-registration.schema.json +52 -0
  379. package/docs/schemas/result-bundle-index.schema.json +133 -0
  380. package/docs/schemas/run-environment-images.schema.json +39 -0
  381. package/docs/schemas/training-data-candidate.schema.json +46 -0
  382. package/integrations/harbor/hitch_harbor_agent.py +171 -539
  383. package/integrations/harbor/hitch_harbor_environment.py +331 -0
  384. package/integrations/harbor/hitch_harbor_task_resources.py +275 -0
  385. package/integrations/harbor/hitch_harbor_verifier.py +23 -0
  386. package/package.json +14 -1
@@ -1,19 +1,20 @@
1
- import { spawn } from "node:child_process";
2
- import { createWriteStream } from "node:fs";
3
1
  import { readdir } from "node:fs/promises";
4
2
  import path from "node:path";
5
- import { HitchError, atomicWriteJSON, consumeLines, detectVersion, ensureDir, fingerprintExecutable, invalidInput, packageRoot, readJSON, sha256JSON, statePaths, terminateProcess } from "../../foundation/index.js";
3
+ import { HitchError, atomicWriteJSON, detectVersion, ensureDir, fingerprintExecutable, invalidInput, readJSON, sha256JSON } from "../../foundation/index.js";
6
4
  import { harborDatasetConfig } from "./dataset-config.js";
7
5
  import { HARBOR_CREDENTIAL_ENV, locateHarbor } from "./tools.js";
8
6
  import { harborVerifierConfig } from "./verifier-config.js";
9
- const BRIDGE_DIRECTORY = path.join(packageRoot(), "integrations", "harbor");
7
+ import { invokeHarbor } from "./process.js";
8
+ import { harborEnvironmentConfig } from "./environment-config.js";
9
+ import { parseHarborModelProxyRoute } from "./model-proxy-config.js";
10
+ import { HARBOR_NODE_VERSION_WITH_PREFIX } from "./runtime-toolchain.js";
11
+ const BRIDGE_PAYLOAD_DIRECTORY = path.join("integrations", "harbor");
10
12
  export const DEFAULT_HARBOR_TRIAL_BUNDLE_GRACE_MS = 2_000;
11
- export async function runHarborBackend({ evalId, evalDirectory, backendDirectory: requestedBackendDirectory, taskNames, logicalAttempt, request, root, resolvedRevision, runtimeDirectory, runtimeId, preparedArtifact, localTransport, env = process.env, harborExecutable, signal, emit = () => { }, onTrialSettled, trialBundleGraceMs = DEFAULT_HARBOR_TRIAL_BUNDLE_GRACE_MS, }) {
13
+ export async function runHarborBackend({ evalId, evalDirectory, backendDirectory: requestedBackendDirectory, taskNames, logicalAttempt, request, root, resolvedRevision, runtimeDirectory, runtimeId, preparedArtifact, env = process.env, harborExecutable, signal, emit = () => { }, onTrialSettled, trialBundleGraceMs = DEFAULT_HARBOR_TRIAL_BUNDLE_GRACE_MS, onProcessStarted, onProcessExited, recoverableProcess = false, executionResources, dockerOwnership, dockerServiceLimits, resolvedImages, prebuiltTaskImage, modelProxy, }) {
12
14
  const backendDirectory = await ensureDir(requestedBackendDirectory ?? path.join(evalDirectory, "harbor"));
13
15
  if (logicalAttempt !== undefined && (!Number.isSafeInteger(logicalAttempt) || logicalAttempt < 1)) {
14
16
  throw invalidInput("Harbor logical attempt must be a positive safe integer");
15
17
  }
16
- const harnessArtifactCacheDirectory = await ensureDir(path.join(statePaths(root).store, "harbor-artifacts"));
17
18
  const executable = await discoverHarbor(harborExecutable, root, env);
18
19
  const version = await detectVersion(executable, ["--version"]);
19
20
  const identity = await fingerprintExecutable(executable);
@@ -28,15 +29,20 @@ export async function runHarborBackend({ evalId, evalDirectory, backendDirectory
28
29
  runtimeDirectory,
29
30
  runtimeId,
30
31
  preparedArtifact,
31
- harnessArtifactCacheDirectory,
32
- localTransport,
33
32
  backendDirectory,
34
33
  ...(taskNames === undefined ? {} : { taskNames }),
35
34
  ...(logicalAttempt === undefined ? {} : { logicalAttempt }),
36
35
  jobName,
37
36
  env,
37
+ ...(executionResources ? { executionResources } : {}),
38
+ ...(dockerOwnership ? { dockerOwnership } : {}),
39
+ ...(dockerServiceLimits ? { dockerServiceLimits } : {}),
40
+ ...(resolvedImages ? { resolvedImages } : {}),
41
+ ...(prebuiltTaskImage ? { prebuiltTaskImage } : {}),
42
+ ...(modelProxy ? { modelProxy } : {}),
38
43
  });
39
44
  await atomicWriteJSON(configPath, config);
45
+ const credentialNames = credentialEnvironmentNames(request.pass_env, env);
40
46
  emit({
41
47
  type: "eval.backend.started",
42
48
  backend: "harbor",
@@ -53,18 +59,22 @@ export async function runHarborBackend({ evalId, evalDirectory, backendDirectory
53
59
  try {
54
60
  invocation = await invokeHarbor(executable, ["run", "--config", configPath, "--yes"], {
55
61
  cwd: evalDirectory,
56
- env: withBridgePythonPath(env),
62
+ env: withBridgePythonPath(env, runtimeDirectory),
57
63
  stdoutPath: path.join(backendDirectory, "stdout.log"),
58
64
  stderrPath: path.join(backendDirectory, "stderr.log"),
59
65
  ...(signal ? { signal } : {}),
66
+ ...(onProcessStarted ? { onStarted: onProcessStarted } : {}),
67
+ ...(onProcessExited ? { onExited: onProcessExited } : {}),
68
+ ...(recoverableProcess ? { persistAcrossParentExit: true } : {}),
69
+ ...(recoverableProcess ? { exitStatusPath: path.join(backendDirectory, "process-exit.json") } : {}),
60
70
  emit,
71
+ redactEnvNames: credentialNames,
61
72
  });
62
73
  }
63
74
  finally {
64
75
  await monitor?.stop();
65
76
  }
66
- const jobResult = await readJSON(resultPath, null);
67
- const rawResult = jobResult ? await attachTrialResults(jobDirectory, jobResult) : null;
77
+ const rawResult = await readHarborRawResult(jobDirectory);
68
78
  emit({
69
79
  type: "eval.backend.completed",
70
80
  backend: "harbor",
@@ -91,6 +101,10 @@ export async function runHarborBackend({ evalId, evalDirectory, backendDirectory
91
101
  summary: rawResult ? normalizeHarborResult(rawResult) : null,
92
102
  };
93
103
  }
104
+ export async function readHarborRawResult(jobDirectory) {
105
+ const jobResult = await readJSON(path.join(jobDirectory, "result.json"), null);
106
+ return jobResult ? attachTrialResults(jobDirectory, jobResult) : null;
107
+ }
94
108
  function monitorHarborTrials(jobDirectory, onTrialSettled, trialBundleGraceMs, signal) {
95
109
  let stopped = false;
96
110
  let failure;
@@ -170,12 +184,13 @@ async function attachTrialResults(jobDirectory, jobResult) {
170
184
  }
171
185
  return { ...jobResult, trial_results: trialResults };
172
186
  }
173
- export async function buildHarborJobConfig({ evalId, request, resolvedRevision, runtimeDirectory, runtimeId, preparedArtifact, harnessArtifactCacheDirectory, localTransport, backendDirectory, taskNames, logicalAttempt, jobName = "job", env = process.env, }) {
187
+ export async function buildHarborJobConfig({ evalId, request, resolvedRevision, runtimeDirectory, runtimeId, preparedArtifact, backendDirectory, taskNames, logicalAttempt, jobName = "job", env = process.env, executionResources, dockerOwnership, dockerServiceLimits, resolvedImages, prebuiltTaskImage, modelProxy, }) {
174
188
  if (logicalAttempt !== undefined && (!Number.isSafeInteger(logicalAttempt) || logicalAttempt < 1)) {
175
189
  throw invalidInput("Harbor logical attempt must be a positive safe integer");
176
190
  }
177
191
  const timeoutSeconds = request.timeout_ms > 0 ? Math.ceil(request.timeout_ms / 1_000) : null;
178
192
  const setupTimeoutSeconds = request.setup_timeout_ms > 0 ? Math.ceil(request.setup_timeout_ms / 1_000) : null;
193
+ const credentialNames = credentialEnvironmentNames(request.pass_env, env);
179
194
  const agent = {
180
195
  import_path: "hitch_harbor_agent:HitchHarborAgent",
181
196
  model_name: request.model || null,
@@ -200,42 +215,26 @@ export async function buildHarborJobConfig({ evalId, request, resolvedRevision,
200
215
  // (spec §4.2); `runtime_id` records the exact execution payload.
201
216
  hitch_runtime_dir: runtimeDirectory,
202
217
  ...(runtimeId ? { controller_runtime_id: runtimeId } : {}),
203
- ...(harnessArtifactCacheDirectory ? { harness_artifact_cache_dir: harnessArtifactCacheDirectory } : {}),
204
- ...(preparedArtifact ? {
205
- harness_artifact: {
206
- directory: preparedArtifact.directory,
207
- artifact_id: preparedArtifact.artifact_id,
208
- artifact_integrity: preparedArtifact.artifact_integrity,
209
- entrypoint_integrity: preparedArtifact.entrypoint_integrity,
210
- harness_id: preparedArtifact.harness_id,
211
- revision_identity: preparedArtifact.revision_identity,
212
- adapter_version: preparedArtifact.adapter_version,
213
- recipe_version: preparedArtifact.recipe_version,
214
- platform: preparedArtifact.platform,
215
- node_version: preparedArtifact.node_version,
216
- source_type: preparedArtifact.source_type,
217
- },
218
- } : {}),
219
- ...(localTransport ? {
220
- local_source_transport: {
221
- kind: localTransport.manifest.kind,
222
- manifest_path: localTransport.manifestPath,
223
- payload_path: localTransport.payloadPath,
224
- locked_resolution_path: localTransport.resolutionPath,
225
- harness_id: localTransport.manifest.harness_id,
226
- resolution_identity: localTransport.manifest.resolution_identity,
227
- commit: localTransport.manifest.commit,
228
- tree: localTransport.manifest.tree,
229
- payload_sha256: localTransport.manifest.payload_sha256,
230
- payload_bytes: localTransport.manifest.payload_bytes,
231
- object_count: localTransport.manifest.object_count,
232
- file_count: localTransport.manifest.file_count,
233
- },
234
- } : {}),
218
+ node_version: HARBOR_NODE_VERSION_WITH_PREFIX,
219
+ harness_artifact: {
220
+ directory: preparedArtifact.directory,
221
+ artifact_id: preparedArtifact.artifact_id,
222
+ artifact_integrity: preparedArtifact.artifact_integrity,
223
+ entrypoint_integrity: preparedArtifact.entrypoint_integrity,
224
+ harness_id: preparedArtifact.harness_id,
225
+ revision_identity: preparedArtifact.revision_identity,
226
+ adapter_version: preparedArtifact.adapter_version,
227
+ recipe_version: preparedArtifact.recipe_version,
228
+ platform: preparedArtifact.platform,
229
+ node_version: preparedArtifact.node_version,
230
+ source_type: preparedArtifact.source_type,
231
+ },
235
232
  hitch_timeout_ms: request.timeout_ms,
236
233
  agent_args: request.agent_args,
234
+ credential_names: credentialNames,
235
+ ...(modelProxy ? { model_capture: parseHarborModelProxyRoute(modelProxy) } : {}),
237
236
  },
238
- env: credentialEnvironment(request.pass_env, env),
237
+ env: credentialEnvironment(credentialNames),
239
238
  include_logs: ["hitch-*"],
240
239
  };
241
240
  if (timeoutSeconds !== null)
@@ -247,7 +246,7 @@ export async function buildHarborJobConfig({ evalId, request, resolvedRevision,
247
246
  jobs_dir: backendDirectory,
248
247
  n_attempts: logicalAttempt === undefined ? request.attempts : 1,
249
248
  n_concurrent_trials: request.max_concurrent,
250
- environment: { type: "docker", delete: true },
249
+ environment: harborEnvironmentConfig(executionResources, dockerOwnership, dockerServiceLimits, resolvedImages, prebuiltTaskImage, Boolean(modelProxy && process.platform === "linux")),
251
250
  verifier: harborVerifierConfig(request),
252
251
  agents: [agent],
253
252
  datasets: [await harborDatasetConfig(request.dataset, taskNames)],
@@ -313,7 +312,7 @@ async function discoverHarbor(explicit, root, env) {
313
312
  }
314
313
  return located.executable;
315
314
  }
316
- function credentialEnvironment(explicitNames, env) {
315
+ function credentialEnvironmentNames(explicitNames, env) {
317
316
  const names = new Set(HARBOR_CREDENTIAL_ENV.filter((name) => env[name] !== undefined));
318
317
  for (const name of explicitNames || []) {
319
318
  if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(name))
@@ -322,67 +321,18 @@ function credentialEnvironment(explicitNames, env) {
322
321
  throw invalidInput(`environment variable is not set: ${name}`);
323
322
  names.add(name);
324
323
  }
325
- return Object.fromEntries([...names].sort().map((name) => [name, `\${${name}}`]));
324
+ return [...names].sort();
325
+ }
326
+ function credentialEnvironment(names) {
327
+ return Object.fromEntries(names.map((name) => [name, `\${${name}}`]));
326
328
  }
327
- function withBridgePythonPath(env) {
329
+ function withBridgePythonPath(env, runtimeDirectory) {
330
+ const bridgeDirectory = path.join(runtimeDirectory, "payload", BRIDGE_PAYLOAD_DIRECTORY);
328
331
  return {
329
332
  ...env,
330
- PYTHONPATH: [BRIDGE_DIRECTORY, env.PYTHONPATH].filter(Boolean).join(path.delimiter),
333
+ PYTHONPATH: [bridgeDirectory, env.PYTHONPATH].filter(Boolean).join(path.delimiter),
331
334
  };
332
335
  }
333
- function invokeHarbor(executable, args, { cwd, env, stdoutPath, stderrPath, signal, emit }) {
334
- return new Promise((resolve, reject) => {
335
- const stdout = createWriteStream(stdoutPath, { flags: "w", mode: 0o600 });
336
- const stderr = createWriteStream(stderrPath, { flags: "w", mode: 0o600 });
337
- const child = spawn(executable, args, {
338
- cwd,
339
- env,
340
- stdio: ["ignore", "pipe", "pipe"],
341
- detached: process.platform !== "win32",
342
- windowsHide: true,
343
- });
344
- child.stdout.pipe(stdout);
345
- child.stderr.pipe(stderr);
346
- consumeLines(child.stdout, (line) => emit({ type: "eval.backend.output", stream: "stdout", text: line }));
347
- consumeLines(child.stderr, (line) => emit({ type: "eval.backend.output", stream: "stderr", text: line }));
348
- let settled = false;
349
- const abort = () => terminateProcess(child).catch(() => { });
350
- signal?.addEventListener("abort", abort, { once: true });
351
- child.once("error", (error) => {
352
- if (settled)
353
- return;
354
- settled = true;
355
- signal?.removeEventListener("abort", abort);
356
- stdout.destroy();
357
- stderr.destroy();
358
- reject(new HitchError(`failed to launch Harbor: ${error.message}`, {
359
- code: "harbor_launch_failed",
360
- exitCode: 6,
361
- cause: error,
362
- }));
363
- });
364
- child.once("close", (code, processSignal) => {
365
- if (settled)
366
- return;
367
- settled = true;
368
- signal?.removeEventListener("abort", abort);
369
- Promise.all([closeWriteStream(stdout), closeWriteStream(stderr)])
370
- .then(() => resolve({ code, signal: processSignal }))
371
- .catch(reject);
372
- });
373
- if (signal?.aborted)
374
- abort();
375
- });
376
- }
377
- function closeWriteStream(stream) {
378
- return new Promise((resolve, reject) => {
379
- if (stream.closed)
380
- return resolve();
381
- stream.once("error", reject);
382
- stream.once("close", resolve);
383
- stream.end();
384
- });
385
- }
386
336
  function compact(value) {
387
337
  return Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== undefined && entry !== null));
388
338
  }
@@ -1 +1 @@
1
- {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../../../src/backends/harbor/backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../../../src/backends/harbor/backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import { HitchError, invalidInput } from "../../foundation/index.js";
2
+ const HITCH_DOCKER_ENVIRONMENT = "hitch_harbor_environment:HitchHarborDockerEnvironment";
3
+ export function harborEnvironmentConfig(resources, ownership, serviceLimits, resolvedImages, prebuiltTaskImage, modelProxyHostGateway = false) {
4
+ const environment = { type: "docker", delete: true };
5
+ let gpuCount = 0;
6
+ if (resources) {
7
+ if (Object.values(resources).some((value) => !Number.isSafeInteger(value) || value < 0))
8
+ throw invalidInput("Harbor execution resources are invalid");
9
+ const mib = 1024 * 1024;
10
+ if (resources.cpu_millis % 1_000 !== 0 || resources.memory_bytes % mib !== 0) {
11
+ throw new HitchError("Harbor cannot represent the requested CPU or memory limit", { code: "resource_limit_unrepresentable", exitCode: 10 });
12
+ }
13
+ const cpus = resources.cpu_millis / 1_000;
14
+ const memoryMb = resources.memory_bytes / mib;
15
+ gpuCount = resources.gpu_count ?? 0;
16
+ if (cpus > 0)
17
+ Object.assign(environment, { cpu_enforcement_policy: "limit", override_cpus: cpus });
18
+ if (memoryMb > 0)
19
+ Object.assign(environment, { memory_enforcement_policy: "limit", override_memory_mb: memoryMb });
20
+ }
21
+ if (serviceLimits && !ownership)
22
+ throw invalidInput("Harbor sidecar limits require Docker ownership");
23
+ const images = resolvedImages ? parseResolvedImages(resolvedImages) : {};
24
+ if (prebuiltTaskImage !== undefined && !/^sha256:[a-f0-9]{64}$/.test(prebuiltTaskImage))
25
+ throw invalidInput("Harbor prebuilt task image is invalid");
26
+ if (ownership || Object.keys(images).length > 0 || prebuiltTaskImage || modelProxyHostGateway || gpuCount > 0)
27
+ Object.assign(environment, {
28
+ import_path: HITCH_DOCKER_ENVIRONMENT,
29
+ kwargs: {
30
+ ...(ownership ? { hitch_ownership_labels: harborOwnershipLabels(ownership) } : {}),
31
+ ...(serviceLimits && Object.keys(serviceLimits).length > 0 ? { hitch_service_resource_limits: parseServiceLimits(serviceLimits) } : {}),
32
+ ...(Object.keys(images).length > 0 ? { hitch_resolved_images: images } : {}),
33
+ ...(prebuiltTaskImage ? { hitch_prebuilt_task_image: prebuiltTaskImage } : {}),
34
+ ...(modelProxyHostGateway ? { hitch_model_proxy_host_gateway: true } : {}),
35
+ ...(gpuCount > 0 ? { hitch_main_gpu_count: gpuCount } : {}),
36
+ },
37
+ });
38
+ if (ownership)
39
+ environment.delete = false;
40
+ return environment;
41
+ }
42
+ function parseResolvedImages(value) {
43
+ const result = {};
44
+ for (const [requested, resolved] of Object.entries(value).sort(([left], [right]) => left.localeCompare(right))) {
45
+ if (!validImageReference(requested) || !validImageReference(resolved)
46
+ || !/@sha256:[a-f0-9]{64}$/.test(resolved) || repositoryOf(requested) !== repositoryOf(resolved)) {
47
+ throw invalidInput("Harbor resolved image mapping is invalid");
48
+ }
49
+ result[requested] = resolved;
50
+ }
51
+ return result;
52
+ }
53
+ function validImageReference(value) {
54
+ return Boolean(value) && value.length <= 1_024 && !/[\s\0]/.test(value) && !value.includes("://") && !value.includes("$");
55
+ }
56
+ function repositoryOf(reference) {
57
+ const withoutDigest = reference.split("@")[0];
58
+ const slash = withoutDigest.lastIndexOf("/");
59
+ const colon = withoutDigest.lastIndexOf(":");
60
+ return colon > slash ? withoutDigest.slice(0, colon) : withoutDigest;
61
+ }
62
+ function parseServiceLimits(value) {
63
+ const result = {};
64
+ for (const [name, resources] of Object.entries(value).sort(([left], [right]) => left.localeCompare(right))) {
65
+ if (!name || name === "main" || name.length > 255 || /[\0\r\n]/.test(name)
66
+ || !resources || Object.keys(resources).some((field) => field !== "cpu_millis" && field !== "memory_bytes" && field !== "gpu_count")
67
+ || !Number.isSafeInteger(resources.cpu_millis) || resources.cpu_millis < 1
68
+ || !Number.isSafeInteger(resources.memory_bytes) || resources.memory_bytes < 1
69
+ || (resources.gpu_count !== undefined && (!Number.isSafeInteger(resources.gpu_count) || resources.gpu_count < 1)))
70
+ throw invalidInput("Harbor sidecar resource limits are invalid");
71
+ result[name] = { cpu_millis: resources.cpu_millis, memory_bytes: resources.memory_bytes, ...(resources.gpu_count === undefined ? {} : { gpu_count: resources.gpu_count }) };
72
+ }
73
+ return result;
74
+ }
75
+ function harborOwnershipLabels(value) {
76
+ if (!/^[a-f0-9]{24}$/.test(value.root_id) || !value.provider || value.provider.length > 128 || !/^[a-z0-9][a-z0-9._-]*$/.test(value.provider)
77
+ || !/^eval_[a-f0-9]{32}$/.test(value.eval_id) || !/^work_[a-f0-9]{32}$/.test(value.work_id)
78
+ || !/^lease_[a-f0-9]{32}$/.test(value.lease_id) || !Number.isSafeInteger(value.lease_epoch) || value.lease_epoch < 1
79
+ || (value.task_id !== undefined && (!value.task_id || value.task_id.length > 4_096 || /[\0\r\n]/.test(value.task_id)))) {
80
+ throw invalidInput("Harbor Docker ownership is invalid");
81
+ }
82
+ return {
83
+ "io.hitch.root-id": value.root_id,
84
+ "io.hitch.provider": value.provider,
85
+ "io.hitch.eval-id": value.eval_id,
86
+ "io.hitch.work-id": value.work_id,
87
+ "io.hitch.lease-id": value.lease_id,
88
+ "io.hitch.lease-epoch": String(value.lease_epoch),
89
+ ...(value.task_id === undefined ? {} : { "io.hitch.task-id": value.task_id }),
90
+ };
91
+ }
92
+ //# sourceMappingURL=environment-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-config.js","sourceRoot":"","sources":["../../../../src/backends/harbor/environment-config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,8 @@
1
- export { buildHarborJobConfig, lockedHarnessRef, normalizeHarborResult, runHarborBackend } from "./backend.js";
1
+ export { buildHarborJobConfig, lockedHarnessRef, normalizeHarborResult, readHarborRawResult, runHarborBackend } from "./backend.js";
2
+ export { DEFAULT_HARBOR_TRIAL_DOCKER_PLATFORM, HARBOR_NODE_VERSION, HARBOR_NODE_VERSION_WITH_PREFIX, HARBOR_PNPM_VERSION, harborTrialRuntimeContract } from "./runtime-toolchain.js";
3
+ export { harborEnvironmentConfig } from "./environment-config.js";
4
+ export { readHarborProcessExitStatus } from "./process.js";
2
5
  export { DEFAULT_LOCAL_GIT_TRANSPORT_LIMITS, LOCAL_GIT_TRANSPORT_MANIFEST, LOCAL_GIT_TRANSPORT_PAYLOAD, LOCAL_GIT_TRANSPORT_SCHEMA_VERSION, buildLocalGitTransport, localGitTransportLimitsFromEnv, validateLocalGitTransportManifest, verifyLocalGitTransport, verifyMaterializedLocalGitSource } from "./local-git-transport.js";
6
+ export { inspectHarborTaskResources, parseHarborTaskResourceDeclaration } from "./task-resources.js";
3
7
  export { DEFAULT_HARBOR_VERSION, HARBOR_CREDENTIAL_ENV, doctorHarbor, locateHarbor, managedHarborExecutable, setupHarbor } from "./tools.js";
4
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/backends/harbor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE/G,OAAO,EAAE,kCAAkC,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,kCAAkC,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,iCAAiC,EAAE,uBAAuB,EAAE,gCAAgC,EAAE,MAAM,0BAA0B,CAAC;AAGnU,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/backends/harbor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACpI,OAAO,EAAE,oCAAoC,EAAE,mBAAmB,EAAE,+BAA+B,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAGrL,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,kCAAkC,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,kCAAkC,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,iCAAiC,EAAE,uBAAuB,EAAE,gCAAgC,EAAE,MAAM,0BAA0B,CAAC;AAGnU,OAAO,EAAE,0BAA0B,EAAE,kCAAkC,EAAE,MAAM,qBAAqB,CAAC;AAErG,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { invalidInput } from "../../foundation/index.js";
2
+ export function parseHarborModelProxyRoute(value) {
3
+ if (value.schema_version !== "1" || !new Set(["proxy", "hybrid"]).has(value.mode)
4
+ || typeof value.required !== "boolean" || !new Set(["host-side", "in-sandbox"]).has(value.topology)
5
+ || !proxyTemplate(value.base_url_template, true) || !proxyTemplate(value.health_url_template, false)) {
6
+ throw invalidInput("Harbor model proxy route is invalid");
7
+ }
8
+ return { ...value };
9
+ }
10
+ function proxyTemplate(value, provider) {
11
+ if (typeof value !== "string" || value.length > 2_048 || /[\0\r\n]/.test(value))
12
+ return false;
13
+ if ((value.match(/\{run_id\}/g) ?? []).length !== 1 || (value.match(/\{provider\}/g) ?? []).length !== (provider ? 1 : 0))
14
+ return false;
15
+ try {
16
+ const parsed = new URL(value.replace("{run_id}", `run_${"a".repeat(32)}`).replace("{provider}", "openai"));
17
+ return parsed.protocol === "http:" || parsed.protocol === "https:";
18
+ }
19
+ catch {
20
+ return false;
21
+ }
22
+ }
23
+ //# sourceMappingURL=model-proxy-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-proxy-config.js","sourceRoot":"","sources":["../../../../src/backends/harbor/model-proxy-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,MAAM,UAAU,0BAA0B,CAAC,KAAwB;IACjE,IAAI,KAAK,CAAC,cAAc,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;WAC5E,OAAO,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;WAChG,CAAC,aAAa,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;QACvG,MAAM,YAAY,CAAC,qCAAqC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,QAAiB;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9F,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACxI,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC3G,OAAO,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;AAC3B,CAAC"}