agent-hitch 0.2.5 → 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 (395) 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 +55 -104
  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/harbor/verifier-config.js +11 -0
  55. package/dist/src/backends/harbor/verifier-config.js.map +1 -0
  56. package/dist/src/backends/index.js +4 -1
  57. package/dist/src/backends/index.js.map +1 -1
  58. package/dist/src/cli/arguments.js +14 -0
  59. package/dist/src/cli/arguments.js.map +1 -1
  60. package/dist/src/cli/commands/daemon.js +135 -8
  61. package/dist/src/cli/commands/daemon.js.map +1 -1
  62. package/dist/src/cli/commands/eval.js +214 -4
  63. package/dist/src/cli/commands/eval.js.map +1 -1
  64. package/dist/src/cli/commands/images.js +40 -0
  65. package/dist/src/cli/commands/images.js.map +1 -0
  66. package/dist/src/cli/commands/run.js +6 -3
  67. package/dist/src/cli/commands/run.js.map +1 -1
  68. package/dist/src/cli/commands/runs.js +25 -3
  69. package/dist/src/cli/commands/runs.js.map +1 -1
  70. package/dist/src/cli/commands/worker.js +79 -0
  71. package/dist/src/cli/commands/worker.js.map +1 -0
  72. package/dist/src/cli/main.js +4 -0
  73. package/dist/src/cli/main.js.map +1 -1
  74. package/dist/src/cli/output.js +72 -3
  75. package/dist/src/cli/output.js.map +1 -1
  76. package/dist/src/control-plane/build-admission.js +69 -0
  77. package/dist/src/control-plane/build-admission.js.map +1 -0
  78. package/dist/src/control-plane/build-records.js +6 -0
  79. package/dist/src/control-plane/build-records.js.map +1 -0
  80. package/dist/src/control-plane/collisions.js +40 -0
  81. package/dist/src/control-plane/collisions.js.map +1 -0
  82. package/dist/src/control-plane/eval-control-state.js +22 -0
  83. package/dist/src/control-plane/eval-control-state.js.map +1 -0
  84. package/dist/src/control-plane/eval-control-work.js +39 -0
  85. package/dist/src/control-plane/eval-control-work.js.map +1 -0
  86. package/dist/src/control-plane/eval-image-resolution.js +52 -0
  87. package/dist/src/control-plane/eval-image-resolution.js.map +1 -0
  88. package/dist/src/control-plane/eval-image-services.js +30 -0
  89. package/dist/src/control-plane/eval-image-services.js.map +1 -0
  90. package/dist/src/control-plane/eval-records.js +252 -0
  91. package/dist/src/control-plane/eval-records.js.map +1 -0
  92. package/dist/src/control-plane/eval-recovery.js +181 -0
  93. package/dist/src/control-plane/eval-recovery.js.map +1 -0
  94. package/dist/src/control-plane/eval-scheduler.js +447 -0
  95. package/dist/src/control-plane/eval-scheduler.js.map +1 -0
  96. package/dist/src/control-plane/index.js +20 -0
  97. package/dist/src/control-plane/index.js.map +1 -0
  98. package/dist/src/control-plane/local-worker.js +49 -0
  99. package/dist/src/control-plane/local-worker.js.map +1 -0
  100. package/dist/src/control-plane/model-capture-planning.js +12 -0
  101. package/dist/src/control-plane/model-capture-planning.js.map +1 -0
  102. package/dist/src/control-plane/remote-result-transport.js +172 -0
  103. package/dist/src/control-plane/remote-result-transport.js.map +1 -0
  104. package/dist/src/control-plane/remote-work-coordinator.js +332 -0
  105. package/dist/src/control-plane/remote-work-coordinator.js.map +1 -0
  106. package/dist/src/control-plane/remote-work-inputs.js +266 -0
  107. package/dist/src/control-plane/remote-work-inputs.js.map +1 -0
  108. package/dist/src/control-plane/remote-work-recovery.js +181 -0
  109. package/dist/src/control-plane/remote-work-recovery.js.map +1 -0
  110. package/dist/src/control-plane/remote-worker-artifacts.js +135 -0
  111. package/dist/src/control-plane/remote-worker-artifacts.js.map +1 -0
  112. package/dist/src/control-plane/remote-worker-client.js +202 -0
  113. package/dist/src/control-plane/remote-worker-client.js.map +1 -0
  114. package/dist/src/control-plane/remote-worker-configuration.js +34 -0
  115. package/dist/src/control-plane/remote-worker-configuration.js.map +1 -0
  116. package/dist/src/control-plane/remote-worker-credentials.js +58 -0
  117. package/dist/src/control-plane/remote-worker-credentials.js.map +1 -0
  118. package/dist/src/control-plane/remote-worker-protocol.js +510 -0
  119. package/dist/src/control-plane/remote-worker-protocol.js.map +1 -0
  120. package/dist/src/control-plane/remote-worker-runner.js +214 -0
  121. package/dist/src/control-plane/remote-worker-runner.js.map +1 -0
  122. package/dist/src/control-plane/remote-workers.js +377 -0
  123. package/dist/src/control-plane/remote-workers.js.map +1 -0
  124. package/dist/src/control-plane/rerun-scheduler.js +411 -0
  125. package/dist/src/control-plane/rerun-scheduler.js.map +1 -0
  126. package/dist/src/control-plane/rerun-submission.js +56 -0
  127. package/dist/src/control-plane/rerun-submission.js.map +1 -0
  128. package/dist/src/control-plane/resources.js +182 -0
  129. package/dist/src/control-plane/resources.js.map +1 -0
  130. package/dist/src/control-plane/scheduler-eval-entry.js +32 -0
  131. package/dist/src/control-plane/scheduler-eval-entry.js.map +1 -0
  132. package/dist/src/control-plane/synthetic-result.js +21 -0
  133. package/dist/src/control-plane/synthetic-result.js.map +1 -0
  134. package/dist/src/control-plane/work-admission.js +21 -0
  135. package/dist/src/control-plane/work-admission.js.map +1 -0
  136. package/dist/src/control-plane/work-dispatcher.js +229 -0
  137. package/dist/src/control-plane/work-dispatcher.js.map +1 -0
  138. package/dist/src/controller-runtime/hash.js +12 -1
  139. package/dist/src/controller-runtime/hash.js.map +1 -1
  140. package/dist/src/controller-runtime/index.js +1 -1
  141. package/dist/src/controller-runtime/index.js.map +1 -1
  142. package/dist/src/controller-runtime/store.js +15 -6
  143. package/dist/src/controller-runtime/store.js.map +1 -1
  144. package/dist/src/daemon/client.js.map +1 -1
  145. package/dist/src/daemon/event-stream.js +46 -0
  146. package/dist/src/daemon/event-stream.js.map +1 -0
  147. package/dist/src/daemon/health.js +66 -0
  148. package/dist/src/daemon/health.js.map +1 -0
  149. package/dist/src/daemon/launcher.js +28 -1
  150. package/dist/src/daemon/launcher.js.map +1 -1
  151. package/dist/src/daemon/logging.js +23 -0
  152. package/dist/src/daemon/logging.js.map +1 -0
  153. package/dist/src/daemon/scheduler.js +26 -5
  154. package/dist/src/daemon/scheduler.js.map +1 -1
  155. package/dist/src/daemon/server.js +255 -98
  156. package/dist/src/daemon/server.js.map +1 -1
  157. package/dist/src/daemon/telemetry.js +163 -0
  158. package/dist/src/daemon/telemetry.js.map +1 -0
  159. package/dist/src/daemon/worker-routes.js +219 -0
  160. package/dist/src/daemon/worker-routes.js.map +1 -0
  161. package/dist/src/domain/bundles.js +2 -0
  162. package/dist/src/domain/bundles.js.map +1 -0
  163. package/dist/src/domain/control-plane.js +2 -0
  164. package/dist/src/domain/control-plane.js.map +1 -0
  165. package/dist/src/domain/execution-evidence.js +2 -0
  166. package/dist/src/domain/execution-evidence.js.map +1 -0
  167. package/dist/src/domain/execution-plan.js +2 -0
  168. package/dist/src/domain/execution-plan.js.map +1 -0
  169. package/dist/src/domain/images.js +2 -0
  170. package/dist/src/domain/images.js.map +1 -0
  171. package/dist/src/domain/index.js +9 -0
  172. package/dist/src/domain/index.js.map +1 -1
  173. package/dist/src/domain/interactions.js +2 -0
  174. package/dist/src/domain/interactions.js.map +1 -0
  175. package/dist/src/domain/providers.js +2 -0
  176. package/dist/src/domain/providers.js.map +1 -0
  177. package/dist/src/domain/resources.js +2 -0
  178. package/dist/src/domain/resources.js.map +1 -0
  179. package/dist/src/domain/workers.js +2 -0
  180. package/dist/src/domain/workers.js.map +1 -0
  181. package/dist/src/evals/collect-only-rerun.js +182 -0
  182. package/dist/src/evals/collect-only-rerun.js.map +1 -0
  183. package/dist/src/evals/directory.js +30 -0
  184. package/dist/src/evals/directory.js.map +1 -0
  185. package/dist/src/evals/docker-engine-stats.js +89 -0
  186. package/dist/src/evals/docker-engine-stats.js.map +1 -0
  187. package/dist/src/evals/docker-ownership.js +51 -0
  188. package/dist/src/evals/docker-ownership.js.map +1 -0
  189. package/dist/src/evals/docker-reaper.js +144 -0
  190. package/dist/src/evals/docker-reaper.js.map +1 -0
  191. package/dist/src/evals/docker-resource-observer.js +207 -0
  192. package/dist/src/evals/docker-resource-observer.js.map +1 -0
  193. package/dist/src/evals/environment-image-planning.js +164 -0
  194. package/dist/src/evals/environment-image-planning.js.map +1 -0
  195. package/dist/src/evals/eval-artifact-planning.js +56 -0
  196. package/dist/src/evals/eval-artifact-planning.js.map +1 -0
  197. package/dist/src/evals/eval-finalization.js +10 -0
  198. package/dist/src/evals/eval-finalization.js.map +1 -0
  199. package/dist/src/evals/eval-lifecycle-events.js +16 -0
  200. package/dist/src/evals/eval-lifecycle-events.js.map +1 -0
  201. package/dist/src/evals/events.js +53 -5
  202. package/dist/src/evals/events.js.map +1 -1
  203. package/dist/src/evals/execution-evidence.js +116 -0
  204. package/dist/src/evals/execution-evidence.js.map +1 -0
  205. package/dist/src/evals/execution-leases.js +342 -0
  206. package/dist/src/evals/execution-leases.js.map +1 -0
  207. package/dist/src/evals/execution-plan-artifacts.js +72 -0
  208. package/dist/src/evals/execution-plan-artifacts.js.map +1 -0
  209. package/dist/src/evals/execution-plan-images.js +69 -0
  210. package/dist/src/evals/execution-plan-images.js.map +1 -0
  211. package/dist/src/evals/execution-plan-resources.js +174 -0
  212. package/dist/src/evals/execution-plan-resources.js.map +1 -0
  213. package/dist/src/evals/execution-plan.js +415 -0
  214. package/dist/src/evals/execution-plan.js.map +1 -0
  215. package/dist/src/evals/harbor-artifact-builder-image.js +99 -0
  216. package/dist/src/evals/harbor-artifact-builder-image.js.map +1 -0
  217. package/dist/src/evals/harbor-artifact-builder.js +354 -0
  218. package/dist/src/evals/harbor-artifact-builder.js.map +1 -0
  219. package/dist/src/evals/harbor-bridge-error.js +39 -3
  220. package/dist/src/evals/harbor-bridge-error.js.map +1 -1
  221. package/dist/src/evals/harbor-phase-timings.js +60 -0
  222. package/dist/src/evals/harbor-phase-timings.js.map +1 -0
  223. package/dist/src/evals/index.js +26 -3
  224. package/dist/src/evals/index.js.map +1 -1
  225. package/dist/src/evals/infrastructure-retry.js +218 -0
  226. package/dist/src/evals/infrastructure-retry.js.map +1 -0
  227. package/dist/src/evals/interaction-capture-import.js +49 -0
  228. package/dist/src/evals/interaction-capture-import.js.map +1 -0
  229. package/dist/src/evals/local-docker-provider.js +372 -0
  230. package/dist/src/evals/local-docker-provider.js.map +1 -0
  231. package/dist/src/evals/local-eval-planning.js +80 -0
  232. package/dist/src/evals/local-eval-planning.js.map +1 -0
  233. package/dist/src/evals/model-capture-plan.js +22 -0
  234. package/dist/src/evals/model-capture-plan.js.map +1 -0
  235. package/dist/src/evals/model-capture-runtime.js +114 -0
  236. package/dist/src/evals/model-capture-runtime.js.map +1 -0
  237. package/dist/src/evals/model-proxy-runtime-state.js +53 -0
  238. package/dist/src/evals/model-proxy-runtime-state.js.map +1 -0
  239. package/dist/src/evals/planned-execution-support.js +54 -0
  240. package/dist/src/evals/planned-execution-support.js.map +1 -0
  241. package/dist/src/evals/planned-execution.js +461 -0
  242. package/dist/src/evals/planned-execution.js.map +1 -0
  243. package/dist/src/evals/planned-remote-execution.js +40 -0
  244. package/dist/src/evals/planned-remote-execution.js.map +1 -0
  245. package/dist/src/evals/planned-retry-lifecycle.js +186 -0
  246. package/dist/src/evals/planned-retry-lifecycle.js.map +1 -0
  247. package/dist/src/evals/prepared-harness.js +76 -0
  248. package/dist/src/evals/prepared-harness.js.map +1 -0
  249. package/dist/src/evals/progress.js +4 -4
  250. package/dist/src/evals/progress.js.map +1 -1
  251. package/dist/src/evals/records.js +20 -3
  252. package/dist/src/evals/records.js.map +1 -1
  253. package/dist/src/evals/recovery.js +192 -0
  254. package/dist/src/evals/recovery.js.map +1 -0
  255. package/dist/src/evals/remote-infrastructure-retry.js +99 -0
  256. package/dist/src/evals/remote-infrastructure-retry.js.map +1 -0
  257. package/dist/src/evals/request.js +14 -1
  258. package/dist/src/evals/request.js.map +1 -1
  259. package/dist/src/evals/rerun-inputs.js +89 -0
  260. package/dist/src/evals/rerun-inputs.js.map +1 -0
  261. package/dist/src/evals/rerun-slots.js +12 -3
  262. package/dist/src/evals/rerun-slots.js.map +1 -1
  263. package/dist/src/evals/rerun-types.js +49 -0
  264. package/dist/src/evals/rerun-types.js.map +1 -0
  265. package/dist/src/evals/rerun.js +113 -75
  266. package/dist/src/evals/rerun.js.map +1 -1
  267. package/dist/src/evals/result-helpers.js +65 -0
  268. package/dist/src/evals/result-helpers.js.map +1 -0
  269. package/dist/src/evals/resume-state.js +36 -0
  270. package/dist/src/evals/resume-state.js.map +1 -0
  271. package/dist/src/evals/service-types.js +2 -0
  272. package/dist/src/evals/service-types.js.map +1 -0
  273. package/dist/src/evals/service.js +327 -237
  274. package/dist/src/evals/service.js.map +1 -1
  275. package/dist/src/evals/task-resources.js +209 -0
  276. package/dist/src/evals/task-resources.js.map +1 -0
  277. package/dist/src/evals/trial-environment-evidence.js +87 -0
  278. package/dist/src/evals/trial-environment-evidence.js.map +1 -0
  279. package/dist/src/evals/trial-execution-evidence.js +13 -0
  280. package/dist/src/evals/trial-execution-evidence.js.map +1 -0
  281. package/dist/src/evals/trial-import-identity.js +31 -0
  282. package/dist/src/evals/trial-import-identity.js.map +1 -0
  283. package/dist/src/evals/trial-import.js +166 -168
  284. package/dist/src/evals/trial-import.js.map +1 -1
  285. package/dist/src/evals/trial-publication-recovery.js +104 -0
  286. package/dist/src/evals/trial-publication-recovery.js.map +1 -0
  287. package/dist/src/evals/trial-publication.js +25 -0
  288. package/dist/src/evals/trial-publication.js.map +1 -0
  289. package/dist/src/evals/verifier-diagnostics.js +235 -0
  290. package/dist/src/evals/verifier-diagnostics.js.map +1 -0
  291. package/dist/src/evals/work-item-artifacts.js +23 -0
  292. package/dist/src/evals/work-item-artifacts.js.map +1 -0
  293. package/dist/src/foundation/config.js +17 -0
  294. package/dist/src/foundation/config.js.map +1 -1
  295. package/dist/src/foundation/credential-redaction.js +137 -0
  296. package/dist/src/foundation/credential-redaction.js.map +1 -0
  297. package/dist/src/foundation/environment-image-references.js +59 -0
  298. package/dist/src/foundation/environment-image-references.js.map +1 -0
  299. package/dist/src/foundation/executable.js +45 -5
  300. package/dist/src/foundation/executable.js.map +1 -1
  301. package/dist/src/foundation/index.js +5 -2
  302. package/dist/src/foundation/index.js.map +1 -1
  303. package/dist/src/foundation/process-identity.js +69 -0
  304. package/dist/src/foundation/process-identity.js.map +1 -0
  305. package/dist/src/images/context.js +47 -0
  306. package/dist/src/images/context.js.map +1 -0
  307. package/dist/src/images/docker-buildkit.js +137 -0
  308. package/dist/src/images/docker-buildkit.js.map +1 -0
  309. package/dist/src/images/dockerfile.js +67 -0
  310. package/dist/src/images/dockerfile.js.map +1 -0
  311. package/dist/src/images/gc.js +261 -0
  312. package/dist/src/images/gc.js.map +1 -0
  313. package/dist/src/images/index.js +10 -0
  314. package/dist/src/images/index.js.map +1 -0
  315. package/dist/src/images/manifest.js +109 -0
  316. package/dist/src/images/manifest.js.map +1 -0
  317. package/dist/src/images/ownership.js +5 -0
  318. package/dist/src/images/ownership.js.map +1 -0
  319. package/dist/src/images/records.js +32 -0
  320. package/dist/src/images/records.js.map +1 -0
  321. package/dist/src/images/registry.js +154 -0
  322. package/dist/src/images/registry.js.map +1 -0
  323. package/dist/src/images/service.js +224 -0
  324. package/dist/src/images/service.js.map +1 -0
  325. package/dist/src/model-access/capture.js +255 -0
  326. package/dist/src/model-access/capture.js.map +1 -0
  327. package/dist/src/model-access/index.js +5 -0
  328. package/dist/src/model-access/index.js.map +1 -0
  329. package/dist/src/model-access/policy.js +49 -0
  330. package/dist/src/model-access/policy.js.map +1 -0
  331. package/dist/src/model-access/proxy.js +336 -0
  332. package/dist/src/model-access/proxy.js.map +1 -0
  333. package/dist/src/model-access/records.js +167 -0
  334. package/dist/src/model-access/records.js.map +1 -0
  335. package/dist/src/runs/bundle.js +450 -0
  336. package/dist/src/runs/bundle.js.map +1 -0
  337. package/dist/src/runs/events.js +12 -1
  338. package/dist/src/runs/events.js.map +1 -1
  339. package/dist/src/runs/executor.js +24 -17
  340. package/dist/src/runs/executor.js.map +1 -1
  341. package/dist/src/runs/index.js +3 -1
  342. package/dist/src/runs/index.js.map +1 -1
  343. package/dist/src/runs/manifest.js +5 -5
  344. package/dist/src/runs/manifest.js.map +1 -1
  345. package/dist/src/runs/request.js +6 -1
  346. package/dist/src/runs/request.js.map +1 -1
  347. package/dist/src/runs/training-candidate.js +161 -0
  348. package/dist/src/runs/training-candidate.js.map +1 -0
  349. package/dist/src/trajectories/provider-capture.js +15 -24
  350. package/dist/src/trajectories/provider-capture.js.map +1 -1
  351. package/dist/src/trajectories/providers/deepseek.js +3 -3
  352. package/dist/src/trajectories/providers/deepseek.js.map +1 -1
  353. package/dist/src/workers/index.js +3 -0
  354. package/dist/src/workers/index.js.map +1 -0
  355. package/dist/src/workers/remote-harbor-work-spec.js +97 -0
  356. package/dist/src/workers/remote-harbor-work-spec.js.map +1 -0
  357. package/dist/src/workers/remote-harbor-worker.js +220 -0
  358. package/dist/src/workers/remote-harbor-worker.js.map +1 -0
  359. package/docs/schemas/environment-build-index.schema.json +13 -0
  360. package/docs/schemas/environment-build-record.schema.json +25 -0
  361. package/docs/schemas/environment-image-manifest.schema.json +62 -0
  362. package/docs/schemas/eval-control.schema.json +36 -0
  363. package/docs/schemas/eval-execution-plan.schema.json +216 -0
  364. package/docs/schemas/eval-request.schema.json +2 -0
  365. package/docs/schemas/eval-rerun-result.schema.json +53 -0
  366. package/docs/schemas/eval-rerun-state.schema.json +61 -0
  367. package/docs/schemas/eval-rerun-submission.schema.json +58 -0
  368. package/docs/schemas/eval-result.schema.json +34 -1
  369. package/docs/schemas/eval-submission-input.schema.json +14 -0
  370. package/docs/schemas/eval-submission.schema.json +68 -0
  371. package/docs/schemas/eval-trial-publication.schema.json +39 -0
  372. package/docs/schemas/execution-evidence.schema.json +96 -0
  373. package/docs/schemas/execution-lease.schema.json +50 -0
  374. package/docs/schemas/execution-provider-status.schema.json +65 -0
  375. package/docs/schemas/execution-worker.schema.json +53 -0
  376. package/docs/schemas/harbor-process-exit.schema.json +14 -0
  377. package/docs/schemas/interaction-capture-ref.schema.json +45 -0
  378. package/docs/schemas/local-provider-execution.schema.json +33 -0
  379. package/docs/schemas/model-interaction.schema.json +41 -0
  380. package/docs/schemas/remote-result-envelope.schema.json +32 -0
  381. package/docs/schemas/remote-tree-envelope.schema.json +25 -0
  382. package/docs/schemas/remote-work-offer.schema.json +58 -0
  383. package/docs/schemas/remote-work-receipt.schema.json +50 -0
  384. package/docs/schemas/remote-worker-artifact.schema.json +17 -0
  385. package/docs/schemas/remote-worker-event.schema.json +18 -0
  386. package/docs/schemas/remote-worker-heartbeat.schema.json +37 -0
  387. package/docs/schemas/remote-worker-registration.schema.json +52 -0
  388. package/docs/schemas/result-bundle-index.schema.json +133 -0
  389. package/docs/schemas/run-environment-images.schema.json +39 -0
  390. package/docs/schemas/training-data-candidate.schema.json +46 -0
  391. package/integrations/harbor/hitch_harbor_agent.py +300 -547
  392. package/integrations/harbor/hitch_harbor_environment.py +331 -0
  393. package/integrations/harbor/hitch_harbor_task_resources.py +275 -0
  394. package/integrations/harbor/hitch_harbor_verifier.py +337 -0
  395. package/package.json +16 -2
@@ -0,0 +1,365 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { execFile } from "node:child_process";
3
+ import { chmod, mkdir, mkdtemp, readdir, rm, writeFile } from "node:fs/promises";
4
+ import { tmpdir } from "node:os";
5
+ import path from "node:path";
6
+ import { pathToFileURL } from "node:url";
7
+ import { promisify } from "node:util";
8
+ import { locateHarbor } from "../src/backends/index.js";
9
+ import { EvalScheduler, ResourceLedger } from "../src/control-plane/index.js";
10
+ import { parseEvalExecutionPlan, reapOwnedDockerResources } from "../src/evals/index.js";
11
+ import { defaultRoot, delay, hitchRootId, readJSON, runCommand, statePaths } from "../src/foundation/index.js";
12
+ import { verifyResultBundleIndex } from "../src/runs/index.js";
13
+ const exec = promisify(execFile);
14
+ const GIB = 1024 ** 3;
15
+ const MIB = 1024 ** 2;
16
+ const docker = process.env.HITCH_DOCKER_PATH || "docker";
17
+ const base = process.env.HITCH_HARBOR_LOAD_CANARY_BASE || "mirror.gcr.io/library/node:22.23.0-bookworm-slim";
18
+ const supportBase = process.env.HITCH_HARBOR_LOAD_CANARY_SUPPORT_BASE || "alexgshaw/git-multibranch:20251031";
19
+ const expectedCpus = integerEnv("HITCH_LOAD_CANARY_EXPECT_CPUS", 10);
20
+ const expectedMemoryMib = integerEnv("HITCH_LOAD_CANARY_EXPECT_MEMORY_MIB", 8 * 1024);
21
+ const trials = integerEnv("HITCH_LOAD_CANARY_TRIALS", 20);
22
+ const timeoutMs = integerEnv("HITCH_HARBOR_LOAD_CANARY_TIMEOUT_MS", 15 * 60_000);
23
+ const keepState = process.env.HITCH_HARBOR_LOAD_CANARY_KEEP_STATE === "1";
24
+ const capacity = { cpu_millis: 10_000, memory_bytes: 8 * GIB, container_slots: 8, build_slots: 1 };
25
+ const reservation = { cpu_millis: 2_000, memory_bytes: 4 * GIB, container_slots: 1, build_slots: 0 };
26
+ const root = await mkdtemp(path.join(tmpdir(), "hitch-harbor-load-canary-"));
27
+ const dataset = path.join(root, "dataset");
28
+ const harnessSource = path.join(root, "pi-source");
29
+ const ledger = new ResourceLedger(capacity);
30
+ const activeWork = new Set();
31
+ const builtReferences = new Set();
32
+ let maximumAdmittedTrials = 0;
33
+ let maximumRunningContainers = 0;
34
+ let dockerPollIssue;
35
+ let scheduler;
36
+ let stopDockerMonitor = false;
37
+ const startedAt = Date.now();
38
+ try {
39
+ if (trials < 3)
40
+ throw new Error("Harbor load canary requires at least three trials for success, zero-reward, and invalid cases");
41
+ const info = (await dockerCommand(["info", "--format", "{{.NCPU}} {{.MemTotal}} {{.ServerVersion}}"])).stdout.trim().split(/\s+/);
42
+ const hostCpus = Number(info[0]);
43
+ const hostMemory = Number(info[1]);
44
+ const serverVersion = info[2] || "unknown";
45
+ if (hostCpus !== expectedCpus)
46
+ throw new Error(`Harbor load canary requires ${expectedCpus} Docker CPUs, observed ${hostCpus}`);
47
+ const expectedBytes = expectedMemoryMib * MIB;
48
+ if (!Number.isSafeInteger(hostMemory) || hostMemory < expectedBytes - 512 * MIB || hostMemory > expectedBytes + 128 * MIB) {
49
+ throw new Error(`Harbor load canary requires a nominal ${expectedMemoryMib} MiB Docker VM, observed ${Math.round(hostMemory / MIB)} MiB`);
50
+ }
51
+ const pinnedBase = await pinnedLocalImage(base);
52
+ const pinnedSupportBase = await pinnedLocalImage(supportBase);
53
+ const configuredHarbor = process.env.HITCH_HARBOR_LOAD_CANARY_PATH || process.env.HITCH_HARBOR_PATH;
54
+ const harbor = await locateHarbor({ root: defaultRoot(), ...(configuredHarbor ? { explicit: configuredHarbor } : {}), env: process.env });
55
+ if (!harbor.executable)
56
+ throw new Error(`Harbor executable is unavailable: ${harbor.requested}`);
57
+ const harnessRef = await writeLocalHarness(harnessSource);
58
+ await writeDataset(dataset, pinnedBase, pinnedSupportBase, trials);
59
+ scheduler = new EvalScheduler({
60
+ root,
61
+ resources: ledger,
62
+ trialResources: reservation,
63
+ executor: (options) => import("../src/evals/index.js").then(({ runEval }) => runEval({
64
+ ...options,
65
+ harborExecutable: harbor.executable,
66
+ env: { ...process.env, HITCH_DOCKER_PATH: docker, npm_config_offline: "true" },
67
+ trialBundleGraceMs: 5_000,
68
+ })),
69
+ onEvent: (event) => {
70
+ const workId = typeof event.work_id === "string" ? event.work_id : undefined;
71
+ if (event.type === "eval.work-item.admitted" && workId) {
72
+ activeWork.add(workId);
73
+ maximumAdmittedTrials = Math.max(maximumAdmittedTrials, activeWork.size);
74
+ }
75
+ if ((event.type === "eval.work-item.completed" || event.type === "eval.work-item.lease-released") && workId)
76
+ activeWork.delete(workId);
77
+ },
78
+ });
79
+ await scheduler.initialize();
80
+ const evalId = await scheduler.submit({
81
+ schema_version: "1",
82
+ request: {
83
+ dataset,
84
+ harness_ref: harnessRef,
85
+ attempts: 1,
86
+ max_concurrent: 8,
87
+ infrastructure_retries: 0,
88
+ timeout_ms: 120_000,
89
+ setup_timeout_ms: 120_000,
90
+ },
91
+ execution: {
92
+ provider: "local-docker",
93
+ max_parallelism: 8,
94
+ resources: { default_trial: reservation },
95
+ build: { mode: "prebuild-required" },
96
+ model_capture: { mode: "native", required: false },
97
+ },
98
+ });
99
+ const dockerMonitor = monitorDockerConcurrency(evalId);
100
+ const status = await waitForTerminal(scheduler, evalId, timeoutMs);
101
+ stopDockerMonitor = true;
102
+ await dockerMonitor;
103
+ if (dockerPollIssue)
104
+ throw new Error(`Docker concurrency monitor failed: ${dockerPollIssue}`);
105
+ if (!status.result)
106
+ throw new Error("terminal Harbor eval has no result");
107
+ const result = status.result;
108
+ const trialResults = Array.isArray(result.trials) ? result.trials : [];
109
+ const valid = trialResults.filter((trial) => trial.observation_status === "valid");
110
+ const invalid = trialResults.filter((trial) => trial.observation_status !== "valid");
111
+ const zeroRewards = valid.filter((trial) => trial.reward === 0);
112
+ const expectedValid = trials - 1;
113
+ const expectedRewardSum = trials - 2;
114
+ const rewardSum = valid.reduce((sum, trial) => sum + Number(trial.reward), 0);
115
+ if (result.status !== "failed" || trialResults.length !== trials || valid.length !== expectedValid || invalid.length !== 1) {
116
+ throw new Error(`unexpected Harbor result shape: ${JSON.stringify({ status: result.status, error: result.error, trials: trialResults.length, valid: valid.length, invalid: invalid.length })}`);
117
+ }
118
+ if (invalid[0]?.reward !== undefined || zeroRewards.length !== 1 || rewardSum !== expectedRewardSum) {
119
+ throw new Error(`invalid/zero reward semantics changed: ${JSON.stringify({ invalid: invalid[0], zero_rewards: zeroRewards.length, reward_sum: rewardSum })}`);
120
+ }
121
+ const expectedMean = expectedRewardSum / expectedValid;
122
+ if (result.summary?.n_trials !== trials || result.summary.n_completed !== expectedValid || result.summary.n_invalid !== 1
123
+ || result.summary.rewards?.reward?.count !== expectedValid
124
+ || typeof result.summary.primary_reward !== "number" || Math.abs(result.summary.primary_reward - expectedMean) > Number.EPSILON) {
125
+ throw new Error(`invalid trial was aggregated as a zero reward: ${JSON.stringify(result.summary)}`);
126
+ }
127
+ if (maximumAdmittedTrials !== 2)
128
+ throw new Error(`scheduler admitted ${maximumAdmittedTrials} trials concurrently instead of exactly 2`);
129
+ if (maximumRunningContainers !== 2)
130
+ throw new Error(`Docker ran ${maximumRunningContainers} trial containers concurrently instead of exactly 2`);
131
+ if (Object.values(ledger.snapshot().allocated).some((value) => value !== 0))
132
+ throw new Error("Harbor load canary leaked a resource reservation");
133
+ const evalDirectory = path.join(statePaths(root).evals, evalId);
134
+ const plan = parseEvalExecutionPlan(await readJSON(path.join(evalDirectory, "execution-plan.json")));
135
+ const imageUses = plan.work_items.flatMap((item) => item.image_refs ?? []);
136
+ const imageIds = new Set(imageUses.map((use) => use.image_id));
137
+ const misses = imageUses.filter((use) => use.cache_hit === false).length;
138
+ const hits = imageUses.filter((use) => use.cache_hit === true).length;
139
+ if (imageUses.length !== trials || imageIds.size !== 1 || misses !== 1 || hits !== trials - 1) {
140
+ throw new Error(`environment build was not shared across all tasks: ${JSON.stringify({ uses: imageUses.length, image_ids: imageIds.size, misses, hits })}`);
141
+ }
142
+ const buildRecordDirectories = await directories(statePaths(root).buildRecords);
143
+ if (buildRecordDirectories.length !== 1)
144
+ throw new Error(`expected one environment build record, found ${buildRecordDirectories.length}`);
145
+ const buildRecord = await readJSON(path.join(statePaths(root).buildRecords, buildRecordDirectories[0], "record.json"));
146
+ if (buildRecord.state !== "succeeded")
147
+ throw new Error(`environment build did not succeed: ${JSON.stringify(buildRecord)}`);
148
+ for (const imageId of imageIds) {
149
+ const manifest = await readJSON(path.join(statePaths(root).environmentImages, imageId.slice("sha256:".length), "manifest.json"));
150
+ if (manifest.output?.reference)
151
+ builtReferences.add(manifest.output.reference);
152
+ }
153
+ let oomKilled = 0;
154
+ for (const trial of trialResults) {
155
+ if (trial.observation_status === "valid")
156
+ await verifyResultBundleIndex(path.join(statePaths(root).runs, trial.run_id));
157
+ const execution = await readJSON(path.join(statePaths(root).runs, trial.run_id, "execution.json"));
158
+ oomKilled += execution.observed?.containers?.filter((container) => container.oom_killed === true).length ?? 0;
159
+ if (JSON.stringify(execution.enforced?.main_limits) !== JSON.stringify(reservation)) {
160
+ throw new Error(`trial ${trial.run_id} did not retain the requested Docker hard limits`);
161
+ }
162
+ }
163
+ if (oomKilled !== 0)
164
+ throw new Error(`${oomKilled} Harbor trial containers were OOM-killed`);
165
+ await assertNoOwnedResources(evalId);
166
+ const cleanupLatencyMs = Date.now() - Date.parse(status.control.updated_at);
167
+ if (!Number.isFinite(cleanupLatencyMs) || cleanupLatencyMs > 60_000)
168
+ throw new Error("Harbor owned-resource cleanup exceeded 60 seconds from terminal state");
169
+ process.stdout.write(`${JSON.stringify({
170
+ ok: true,
171
+ harbor: harbor.version,
172
+ docker: serverVersion,
173
+ docker_cpus: hostCpus,
174
+ docker_memory_bytes: hostMemory,
175
+ requested_max_concurrent: 8,
176
+ trial_reservation: reservation,
177
+ trials,
178
+ valid_trials: valid.length,
179
+ invalid_trials: invalid.length,
180
+ valid_zero_rewards: zeroRewards.length,
181
+ aggregated_reward_count: result.summary?.rewards?.reward?.count,
182
+ primary_reward: result.summary?.primary_reward,
183
+ maximum_admitted_trials: maximumAdmittedTrials,
184
+ maximum_running_containers: maximumRunningContainers,
185
+ environment_builds: buildRecordDirectories.length,
186
+ environment_cache_misses: misses,
187
+ environment_cache_hits: hits,
188
+ verified_valid_bundles: valid.length,
189
+ oom_killed: oomKilled,
190
+ cleanup_latency_ms: cleanupLatencyMs,
191
+ cleanup_within_60_seconds: true,
192
+ duration_ms: Date.now() - startedAt,
193
+ }, null, 2)}\n`);
194
+ }
195
+ finally {
196
+ stopDockerMonitor = true;
197
+ await scheduler?.shutdown().catch(() => { });
198
+ await reapOwnedDockerResources({ root, env: { ...process.env, HITCH_DOCKER_PATH: docker } }).catch(() => { });
199
+ if (keepState)
200
+ process.stderr.write(`Harbor load canary state retained at ${root}\n`);
201
+ else {
202
+ for (const reference of builtReferences)
203
+ await dockerCommand(["image", "rm", "--force", reference]).catch(() => { });
204
+ await removeOwnedImages().catch(() => { });
205
+ await forceRemove(root);
206
+ }
207
+ }
208
+ async function writeDataset(directory, pinnedBase, pinnedSupportBase, count) {
209
+ const nonce = randomBytes(8).toString("hex");
210
+ for (let index = 0; index < count; index += 1) {
211
+ const task = path.join(directory, `task-${String(index).padStart(2, "0")}`);
212
+ await mkdir(path.join(task, "environment"), { recursive: true });
213
+ await mkdir(path.join(task, "tests"), { recursive: true });
214
+ await writeFile(path.join(task, "task.toml"), [
215
+ 'schema_version = "1.4"', "", "[metadata]", "", "[verifier]", "timeout_sec = 30.0", "", "[agent]", "timeout_sec = 120.0", "", "[environment]", "build_timeout_sec = 120.0", "",
216
+ ].join("\n"));
217
+ await writeFile(path.join(task, "instruction.md"), `Return a short acknowledgement for Harbor load canary ${nonce}.\n`);
218
+ await writeFile(path.join(task, "environment", "Dockerfile"), [
219
+ `FROM ${pinnedBase} AS node-runtime`,
220
+ `FROM ${pinnedSupportBase}`,
221
+ "COPY --from=node-runtime /usr/local/ /usr/local/",
222
+ "WORKDIR /app",
223
+ "RUN node --version > /hitch-node-version.txt && git --version > /hitch-git-version.txt",
224
+ "",
225
+ ].join("\n"));
226
+ const verifier = index === count - 1
227
+ ? "#!/bin/sh\nset -eu\nsleep 0.5\necho 'intentional missing reward' > /logs/verifier/canary.txt\n"
228
+ : `#!/bin/sh\nset -eu\nsleep 0.5\necho ${index === count - 2 ? 0 : 1} > /logs/verifier/reward.txt\n`;
229
+ await writeFile(path.join(task, "tests", "test.sh"), verifier, { mode: 0o755 });
230
+ await chmod(path.join(task, "tests", "test.sh"), 0o755);
231
+ }
232
+ }
233
+ async function writeLocalHarness(directory) {
234
+ await mkdir(directory, { recursive: true });
235
+ await writeFile(path.join(directory, "package.json"), `${JSON.stringify({
236
+ name: "hitch-harbor-load-fake-pi", version: "1.0.0", private: true, scripts: { build: "node build.js" },
237
+ }, null, 2)}\n`);
238
+ await writeFile(path.join(directory, "package-lock.json"), `${JSON.stringify({
239
+ name: "hitch-harbor-load-fake-pi", version: "1.0.0", lockfileVersion: 3, requires: true,
240
+ packages: { "": { name: "hitch-harbor-load-fake-pi", version: "1.0.0" } },
241
+ }, null, 2)}\n`);
242
+ await writeFile(path.join(directory, "build.js"), `
243
+ const fs = require("node:fs");
244
+ const path = require("node:path");
245
+ const output = path.join(process.cwd(), "packages", "coding-agent", "dist", "cli.js");
246
+ fs.mkdirSync(path.dirname(output), { recursive: true });
247
+ fs.writeFileSync(output, ${JSON.stringify(fakePiSource())}, { mode: 0o755 });
248
+ `);
249
+ await exec("git", ["init", directory]);
250
+ await exec("git", ["-C", directory, "config", "user.email", "hitch-canary@example.test"]);
251
+ await exec("git", ["-C", directory, "config", "user.name", "Hitch Canary"]);
252
+ await exec("git", ["-C", directory, "add", "."]);
253
+ await exec("git", ["-C", directory, "commit", "-m", "fake pi harness"]);
254
+ const { stdout } = await exec("git", ["-C", directory, "rev-parse", "HEAD"]);
255
+ return `pi@git+${pathToFileURL(directory).href}#${stdout.trim()}`;
256
+ }
257
+ function fakePiSource() {
258
+ return `#!/usr/bin/env node
259
+ if (process.argv.includes("--version")) { process.stdout.write("pi 1.0.0\\n"); process.exit(0); }
260
+ let prompt = "";
261
+ process.stdin.setEncoding("utf8");
262
+ process.stdin.on("data", (chunk) => { prompt += chunk; });
263
+ process.stdin.on("end", () => {
264
+ const usage = {input:1,output:2,cacheRead:0,cacheWrite:0,totalTokens:3,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}};
265
+ process.stdout.write(JSON.stringify({type:"session",version:3,id:"pi_canary_session",cwd:process.cwd()}) + "\\n");
266
+ process.stdout.write(JSON.stringify({type:"message_update",assistantMessageEvent:{type:"text_delta",contentIndex:0,delta:"ack"}}) + "\\n");
267
+ process.stdout.write(JSON.stringify({type:"message_end",message:{role:"assistant",content:[{type:"text",text:"ack:" + prompt}],usage,stopReason:"stop"}}) + "\\n");
268
+ });
269
+ `;
270
+ }
271
+ async function waitForTerminal(current, evalId, maximumMs) {
272
+ const deadline = Date.now() + maximumMs;
273
+ for (;;) {
274
+ const status = await current.status(evalId);
275
+ if (status && new Set(["succeeded", "failed", "cancelled"]).has(status.control.state))
276
+ return status;
277
+ if (Date.now() >= deadline)
278
+ throw new Error(`Harbor load canary timed out after ${maximumMs} ms`);
279
+ await delay(250);
280
+ }
281
+ }
282
+ async function monitorDockerConcurrency(evalId) {
283
+ while (!stopDockerMonitor) {
284
+ try {
285
+ const running = (await dockerCommand(["container", "ls", "--filter", `label=io.hitch.eval-id=${evalId}`, "--format", "{{.ID}}"], 5_000))
286
+ .stdout.split(/\r?\n/).filter(Boolean).length;
287
+ maximumRunningContainers = Math.max(maximumRunningContainers, running);
288
+ }
289
+ catch (error) {
290
+ dockerPollIssue ??= error?.message || String(error);
291
+ }
292
+ await delay(100);
293
+ }
294
+ }
295
+ async function pinnedLocalImage(reference) {
296
+ const value = JSON.parse((await dockerCommand(["image", "inspect", "--format", "{{json .}}", reference])).stdout);
297
+ if (value.Os !== "linux" || value.Architecture !== "amd64" || !Array.isArray(value.RepoDigests)) {
298
+ throw new Error(`Harbor load canary base must be a local linux/amd64 image with a repo digest: ${reference}`);
299
+ }
300
+ const repository = imageRepository(reference);
301
+ const digest = value.RepoDigests.find((entry) => typeof entry === "string" && entry.startsWith(`${repository}@sha256:`));
302
+ if (!digest)
303
+ throw new Error(`Harbor load canary base has no local digest for ${repository}`);
304
+ return digest;
305
+ }
306
+ function imageRepository(reference) {
307
+ const withoutDigest = reference.split("@")[0];
308
+ const slash = withoutDigest.lastIndexOf("/");
309
+ const colon = withoutDigest.lastIndexOf(":");
310
+ return colon > slash ? withoutDigest.slice(0, colon) : withoutDigest;
311
+ }
312
+ async function assertNoOwnedResources(evalId) {
313
+ const [containers, networks] = await Promise.all([
314
+ dockerCommand(["container", "ls", "--all", "--filter", `label=io.hitch.eval-id=${evalId}`, "--format", "{{.ID}}"]),
315
+ dockerCommand(["network", "ls", "--filter", `label=io.hitch.eval-id=${evalId}`, "--format", "{{.ID}}"]),
316
+ ]);
317
+ if (containers.stdout.trim() || networks.stdout.trim())
318
+ throw new Error("Harbor load canary left owned containers or networks behind");
319
+ }
320
+ async function directories(directory) {
321
+ try {
322
+ return (await readdir(directory, { withFileTypes: true })).filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort();
323
+ }
324
+ catch (error) {
325
+ if (error.code === "ENOENT")
326
+ return [];
327
+ throw error;
328
+ }
329
+ }
330
+ async function removeOwnedImages() {
331
+ const rootId = hitchRootId(root);
332
+ const listed = await dockerCommand(["image", "ls", "--filter", `label=io.hitch.environment-image-root-id=${rootId}`, "--format", "{{.Repository}}:{{.Tag}}"]);
333
+ for (const reference of listed.stdout.split(/\r?\n/).filter((entry) => entry && !entry.endsWith(":<none>"))) {
334
+ await dockerCommand(["image", "rm", "--force", reference]).catch(() => { });
335
+ }
336
+ }
337
+ async function dockerCommand(args, commandTimeoutMs = 30_000) {
338
+ return runCommand(docker, args, { env: process.env, timeoutMs: commandTimeoutMs, failureCode: "harbor_load_canary_failed" });
339
+ }
340
+ async function forceRemove(directory) {
341
+ await chmodWritable(directory);
342
+ await rm(directory, { recursive: true, force: true });
343
+ }
344
+ async function chmodWritable(directory) {
345
+ let entries;
346
+ try {
347
+ entries = await readdir(directory, { withFileTypes: true });
348
+ }
349
+ catch {
350
+ return;
351
+ }
352
+ for (const entry of entries) {
353
+ const target = path.join(directory, entry.name);
354
+ if (entry.isDirectory())
355
+ await chmodWritable(target);
356
+ await chmod(target, entry.isDirectory() ? 0o700 : 0o600).catch(() => { });
357
+ }
358
+ }
359
+ function integerEnv(name, fallback) {
360
+ const value = Number(process.env[name] ?? fallback);
361
+ if (!Number.isSafeInteger(value) || value < 1)
362
+ throw new TypeError(`${name} must be a positive safe integer`);
363
+ return value;
364
+ }
365
+ //# sourceMappingURL=canary-harbor-load.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canary-harbor-load.js","sourceRoot":"","sources":["../../scripts/canary-harbor-load.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import { chmod, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
2
+ import { tmpdir } from "node:os";
3
+ import path from "node:path";
4
+ import { loadPreparedArtifact, prepareHarness, preparedArtifactDirectory, resolveHarness } from "../src/artifacts/index.js";
5
+ const root = await mkdtemp(path.join(tmpdir(), "hitch-packaged-harness-canary-"));
6
+ try {
7
+ const fakeNpm = await writePortableFakeNpm(root);
8
+ const env = { ...process.env, HITCH_NPM_PATH: fakeNpm };
9
+ const resolved = await resolveHarness("codex@version:1.2.3", { root, env });
10
+ const prepared = await prepareHarness(resolved, { root, env });
11
+ const cached = await prepareHarness(resolved, { root, env });
12
+ const loaded = await loadPreparedArtifact(preparedArtifactDirectory(root, prepared.artifact_id), {
13
+ artifact_id: prepared.artifact_id,
14
+ artifact_integrity: prepared.artifact_integrity,
15
+ entrypoint_integrity: prepared.entrypoint_integrity,
16
+ harness_id: prepared.harness_id,
17
+ revision_identity: prepared.revision_identity,
18
+ platform: prepared.platform,
19
+ });
20
+ const entrypoint = loaded.entrypoint_args[0] ?? loaded.executable;
21
+ const source = await readFile(entrypoint, "utf8");
22
+ if (prepared.cache_hit || !cached.cache_hit || loaded.artifact_id !== prepared.artifact_id
23
+ || prepared.platform !== `${process.platform}-${process.arch}` || !source.includes("canary-ready")) {
24
+ throw new Error("packaged harness preparation evidence is inconsistent");
25
+ }
26
+ process.stdout.write(`${JSON.stringify({
27
+ schema_version: "1",
28
+ status: "passed",
29
+ platform: prepared.platform,
30
+ node: process.version,
31
+ harness_id: prepared.harness_id,
32
+ revision_identity: prepared.revision_identity,
33
+ artifact_id: prepared.artifact_id,
34
+ artifact_integrity: prepared.artifact_integrity,
35
+ entrypoint_integrity: prepared.entrypoint_integrity,
36
+ first_cache_hit: prepared.cache_hit,
37
+ second_cache_hit: cached.cache_hit,
38
+ }, null, 2)}\n`);
39
+ }
40
+ finally {
41
+ await rm(root, { recursive: true, force: true });
42
+ }
43
+ async function writePortableFakeNpm(directory) {
44
+ const implementation = path.join(directory, "fake-npm.cjs");
45
+ await writeFile(implementation, `
46
+ const fs = require("node:fs");
47
+ const path = require("node:path");
48
+ const args = process.argv.slice(2);
49
+ if (args[0] === "--version") { process.stdout.write("10.9.0\\n"); process.exit(0); }
50
+ if (args[0] === "view") {
51
+ process.stdout.write(JSON.stringify({version:"1.2.3",dist:{integrity:"sha512-canary-integrity",tarball:"https://registry.invalid/codex-1.2.3.tgz"}}));
52
+ process.exit(0);
53
+ }
54
+ if (args[0] === "install") {
55
+ const packageRoot = path.join(process.cwd(), "node_modules", "@openai", "codex");
56
+ fs.mkdirSync(path.join(packageRoot, "dist"), {recursive:true});
57
+ fs.writeFileSync(path.join(packageRoot, "package.json"), JSON.stringify({name:"@openai/codex",version:"1.2.3",bin:{codex:"dist/cli.js"}}));
58
+ fs.writeFileSync(path.join(packageRoot, "dist", "cli.js"), "#!/usr/bin/env node\\nif (process.argv.includes('--version')) process.stdout.write('codex 1.2.3\\\\n');\\nelse process.stdout.write('canary-ready\\\\n');\\n", {mode:0o755});
59
+ fs.writeFileSync(path.join(process.cwd(), "package-lock.json"), JSON.stringify({lockfileVersion:3,packages:{"node_modules/@openai/codex":{version:"1.2.3",integrity:"sha512-canary-integrity"}}}));
60
+ process.exit(0);
61
+ }
62
+ process.stderr.write("unsupported fake npm invocation: " + args.join(" ") + "\\n");
63
+ process.exit(2);
64
+ `.trimStart());
65
+ if (process.platform === "win32") {
66
+ const wrapper = path.join(directory, "fake-npm.cmd");
67
+ await writeFile(wrapper, `@echo off\r\nnode "%~dp0fake-npm.cjs" %*\r\n`);
68
+ return wrapper;
69
+ }
70
+ const wrapper = path.join(directory, "fake-npm");
71
+ await writeFile(wrapper, `#!/bin/sh\nexec node "$(dirname "$0")/fake-npm.cjs" "$@"\n`);
72
+ await chmod(wrapper, 0o755);
73
+ return wrapper;
74
+ }
75
+ //# sourceMappingURL=canary-packaged-harness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canary-packaged-harness.js","sourceRoot":"","sources":["../../scripts/canary-packaged-harness.ts"],"names":[],"mappings":"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"}