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,450 @@
1
+ import { createHash } from "node:crypto";
2
+ import { createReadStream } from "node:fs";
3
+ import { lstat, readdir } from "node:fs/promises";
4
+ import path from "node:path";
5
+ import { atomicWriteJSON, readJSON, sha256JSON } from "../foundation/index.js";
6
+ import { loadInteractionCapture } from "../model-access/index.js";
7
+ const BUNDLE_INDEX = "bundle.index.json";
8
+ export async function writeResultBundleIndex(runDirectory) {
9
+ const manifest = await readJSON(path.join(runDirectory, "manifest.json"));
10
+ if (manifest.sealed !== true)
11
+ throw new TypeError("result bundle manifest must be sealed");
12
+ const runId = requiredRunId(manifest.run_id);
13
+ const files = await bundleFiles(runDirectory);
14
+ const contextIdentity = sha256JSON({
15
+ context: manifest.context,
16
+ parent: manifest.parent,
17
+ harness: manifest.harness,
18
+ model: manifest.model,
19
+ protocol: manifest.protocol,
20
+ observation: manifest.observation,
21
+ });
22
+ const provenance = await bundleProvenance(runDirectory, manifest);
23
+ const summaries = await bundleSummaries(runDirectory);
24
+ const identity = {
25
+ schema_version: "1",
26
+ run_id: runId,
27
+ sealed: true,
28
+ context_identity: contextIdentity,
29
+ files,
30
+ ...summaries,
31
+ provenance,
32
+ };
33
+ const index = {
34
+ ...identity,
35
+ bundle_digest: sha256JSON(identity),
36
+ created_at: new Date().toISOString(),
37
+ };
38
+ await atomicWriteJSON(path.join(runDirectory, BUNDLE_INDEX), index);
39
+ return verifyResultBundleIndex(runDirectory);
40
+ }
41
+ export async function verifyResultBundleIndex(runDirectory) {
42
+ const value = await readJSON(path.join(runDirectory, BUNDLE_INDEX));
43
+ const index = parseResultBundleIndex(value);
44
+ const manifest = await readJSON(path.join(runDirectory, "manifest.json"));
45
+ if (manifest.sealed !== true || manifest.run_id !== index.run_id)
46
+ throw new TypeError("result bundle manifest identity is invalid");
47
+ const actualFiles = await bundleFiles(runDirectory);
48
+ if (JSON.stringify(actualFiles) !== JSON.stringify(index.files))
49
+ throw new TypeError("result bundle file set or integrity does not match");
50
+ const contextIdentity = sha256JSON({
51
+ context: manifest.context,
52
+ parent: manifest.parent,
53
+ harness: manifest.harness,
54
+ model: manifest.model,
55
+ protocol: manifest.protocol,
56
+ observation: manifest.observation,
57
+ });
58
+ if (contextIdentity !== index.context_identity)
59
+ throw new TypeError("result bundle context identity does not match");
60
+ const summaries = await bundleSummaries(runDirectory);
61
+ if (index.environment !== undefined && JSON.stringify(index.environment) !== JSON.stringify(summaries.environment)
62
+ || index.resources !== undefined && JSON.stringify(index.resources) !== JSON.stringify(summaries.resources)
63
+ || index.interaction_ref !== undefined && index.interaction_ref !== summaries.interaction_ref
64
+ || index.capture !== undefined && JSON.stringify(index.capture) !== JSON.stringify(summaries.capture)) {
65
+ throw new TypeError("result bundle execution summary does not match");
66
+ }
67
+ const provenance = await bundleProvenance(runDirectory, manifest);
68
+ if (JSON.stringify(index.provenance) !== JSON.stringify(provenance))
69
+ throw new TypeError("result bundle provenance does not match");
70
+ const digest = sha256JSON({
71
+ schema_version: index.schema_version,
72
+ run_id: index.run_id,
73
+ sealed: index.sealed,
74
+ context_identity: index.context_identity,
75
+ files: index.files,
76
+ ...(index.environment ? { environment: index.environment } : {}),
77
+ ...(index.resources ? { resources: index.resources } : {}),
78
+ ...(index.interaction_ref ? { interaction_ref: index.interaction_ref } : {}),
79
+ ...(index.capture ? { capture: index.capture } : {}),
80
+ provenance: index.provenance,
81
+ });
82
+ if (digest !== index.bundle_digest)
83
+ throw new TypeError("result bundle digest does not match");
84
+ return index;
85
+ }
86
+ export function parseResultBundleIndex(value) {
87
+ if (!value || typeof value !== "object" || Array.isArray(value))
88
+ throw new TypeError("result bundle index must be an object");
89
+ const record = value;
90
+ const runId = requiredRunId(record.run_id);
91
+ if (record.schema_version !== "1" || record.sealed !== true || !isSha256(record.context_identity)
92
+ || !isSha256(record.bundle_digest) || typeof record.created_at !== "string" || !Number.isFinite(Date.parse(record.created_at))
93
+ || !Array.isArray(record.files) || !record.provenance || typeof record.provenance !== "object" || Array.isArray(record.provenance)) {
94
+ throw new TypeError("result bundle index is invalid");
95
+ }
96
+ const files = record.files.map((file, index) => parseBundleFile(file, index));
97
+ const sorted = [...files].sort(compareBundleFiles);
98
+ if (JSON.stringify(sorted) !== JSON.stringify(files) || new Set(files.map((file) => file.path)).size !== files.length) {
99
+ throw new TypeError("result bundle files are not uniquely and canonically sorted");
100
+ }
101
+ const provenance = parseProvenance(record.provenance);
102
+ const environment = record.environment === undefined ? undefined : parseBundleEnvironment(record.environment);
103
+ const resources = record.resources === undefined ? undefined : parseBundleResources(record.resources);
104
+ const interactionRef = record.interaction_ref === undefined ? undefined : relativeRef(record.interaction_ref, "result bundle interaction ref");
105
+ const capture = record.capture === undefined ? undefined : parseBundleCapture(record.capture);
106
+ return {
107
+ schema_version: "1",
108
+ run_id: runId,
109
+ sealed: true,
110
+ context_identity: record.context_identity,
111
+ files,
112
+ ...(environment ? { environment } : {}),
113
+ ...(resources ? { resources } : {}),
114
+ ...(interactionRef ? { interaction_ref: interactionRef } : {}),
115
+ ...(capture ? { capture } : {}),
116
+ provenance,
117
+ bundle_digest: record.bundle_digest,
118
+ created_at: record.created_at,
119
+ };
120
+ }
121
+ async function bundleSummaries(root) {
122
+ const execution = await readJSON(path.join(root, "execution.json"), null);
123
+ const imageEvidence = await readJSON(path.join(root, "environment", "image.manifest.json"), null);
124
+ const capture = await captureSummary(root);
125
+ const interactionRef = await readJSON(path.join(root, "interactions", "interaction.ref.json"), null) === null
126
+ ? undefined
127
+ : "interactions/interaction.ref.json";
128
+ const resources = execution ? resourcesFromExecution(execution) : undefined;
129
+ const captureFields = { ...(interactionRef ? { interaction_ref: interactionRef } : {}), capture };
130
+ if (!imageEvidence)
131
+ return { ...(resources ? { resources } : {}), ...captureFields };
132
+ if (!execution)
133
+ return captureFields;
134
+ if (typeof execution.provider !== "string" || !execution.provider)
135
+ throw new TypeError("result bundle environment has no provider evidence");
136
+ if (imageEvidence.schema_version !== "1" || !Array.isArray(imageEvidence.manifests))
137
+ throw new TypeError("result bundle environment image evidence is invalid");
138
+ const images = imageEvidence.manifests.map((value, index) => {
139
+ const manifest = asRecord(value);
140
+ const output = asRecord(manifest.output);
141
+ if (!isSha256(manifest.image_id) || !isSha256(output.manifest_digest) || typeof output.reference !== "string" || !output.reference) {
142
+ throw new TypeError(`result bundle environment image ${index} is invalid`);
143
+ }
144
+ return { image_id: manifest.image_id, image_digest: output.manifest_digest, reference: output.reference };
145
+ }).sort((left, right) => Buffer.from(left.image_id).compare(Buffer.from(right.image_id)));
146
+ if (new Set(images.map((image) => image.image_id)).size !== images.length)
147
+ throw new TypeError("result bundle environment images are duplicated");
148
+ const environment = {
149
+ images,
150
+ provider: execution.provider,
151
+ ...(typeof execution.worker_id === "string" && execution.worker_id ? { worker_id: execution.worker_id } : {}),
152
+ ...(typeof execution.lease_id === "string" && /^lease_[a-f0-9]{32}$/.test(execution.lease_id) ? { lease_id: execution.lease_id } : {}),
153
+ };
154
+ return { environment, ...(resources ? { resources } : {}), ...captureFields };
155
+ }
156
+ async function captureSummary(root) {
157
+ const trajectory = await readJSON(path.join(root, "trajectory.ref.json"), null);
158
+ const interaction = await readJSON(path.join(root, "interactions", "interaction.ref.json"), null);
159
+ const policy = parseCapturePolicy(await readJSON(path.join(root, "interactions", "capture.policy.json"), null));
160
+ const rules = redactionRules(trajectory?.redactions);
161
+ if (!interaction)
162
+ return {
163
+ mode: policy?.effective_mode ?? (trajectory ? "native" : "off"),
164
+ required: policy?.required ?? false,
165
+ completeness: trajectory ? policy?.degraded_reason ? "partial" : "complete" : "none",
166
+ interaction_count: 0,
167
+ redaction: { policy: "hitch-provider-redaction-v1", status: rules.length > 0 ? "applied" : "not-needed", rules },
168
+ };
169
+ const parsed = (await loadInteractionCapture(root)).ref;
170
+ if (policy && (policy.effective_mode !== parsed.mode || policy.required !== parsed.required
171
+ || policy.topology !== parsed.topology || policy.degraded_reason !== undefined)) {
172
+ throw new TypeError("result bundle capture policy does not match interaction evidence");
173
+ }
174
+ return {
175
+ mode: parsed.mode,
176
+ required: parsed.required,
177
+ completeness: parsed.completeness,
178
+ interaction_count: parsed.interaction_count,
179
+ redaction: {
180
+ policy: parsed.redaction.policy,
181
+ status: parsed.redaction.status,
182
+ rules: canonicalRules([...rules, ...parsed.redaction.rules]),
183
+ },
184
+ };
185
+ }
186
+ function parseCapturePolicy(value) {
187
+ if (value === null)
188
+ return undefined;
189
+ const record = asRecord(value);
190
+ const allowed = new Set(["schema_version", "requested_mode", "effective_mode", "required", "topology", "degraded_reason"]);
191
+ const modes = new Set(["off", "native", "proxy", "hybrid"]);
192
+ if (Object.keys(record).some((key) => !allowed.has(key)) || record.schema_version !== "1"
193
+ || !modes.has(String(record.requested_mode)) || !modes.has(String(record.effective_mode))
194
+ || typeof record.required !== "boolean"
195
+ || record.topology !== undefined && record.topology !== "host-side" && record.topology !== "in-sandbox"
196
+ || record.degraded_reason !== undefined && (typeof record.degraded_reason !== "string" || !record.degraded_reason)
197
+ || (record.effective_mode === "proxy" || record.effective_mode === "hybrid") !== (record.topology !== undefined)
198
+ || (record.requested_mode !== record.effective_mode) !== (record.degraded_reason !== undefined)
199
+ || record.required === true && record.degraded_reason !== undefined) {
200
+ throw new TypeError("result bundle capture policy is invalid");
201
+ }
202
+ return {
203
+ requested_mode: record.requested_mode,
204
+ effective_mode: record.effective_mode,
205
+ required: record.required,
206
+ ...(record.topology === undefined ? {} : { topology: record.topology }),
207
+ ...(record.degraded_reason === undefined ? {} : { degraded_reason: record.degraded_reason }),
208
+ };
209
+ }
210
+ function parseBundleCapture(value) {
211
+ const record = asRecord(value);
212
+ if (!new Set(["off", "native", "proxy", "hybrid"]).has(String(record.mode)) || typeof record.required !== "boolean"
213
+ || !new Set(["complete", "partial", "none"]).has(String(record.completeness))
214
+ || !Number.isSafeInteger(record.interaction_count) || record.interaction_count < 0)
215
+ throw new TypeError("result bundle capture summary is invalid");
216
+ const redaction = asRecord(record.redaction);
217
+ if (typeof redaction.policy !== "string" || !redaction.policy || !new Set(["applied", "not-needed", "failed"]).has(String(redaction.status))) {
218
+ throw new TypeError("result bundle redaction summary is invalid");
219
+ }
220
+ return {
221
+ mode: record.mode,
222
+ required: record.required,
223
+ completeness: record.completeness,
224
+ interaction_count: record.interaction_count,
225
+ redaction: {
226
+ policy: redaction.policy,
227
+ status: redaction.status,
228
+ rules: redactionRules(redaction.rules),
229
+ },
230
+ };
231
+ }
232
+ function redactionRules(value) {
233
+ if (value === undefined)
234
+ return [];
235
+ if (!Array.isArray(value))
236
+ throw new TypeError("capture redaction rules are invalid");
237
+ const rules = value.map((entry) => {
238
+ const record = asRecord(entry);
239
+ if (typeof record.rule_id !== "string" || !record.rule_id || !Number.isSafeInteger(record.count) || record.count < 1) {
240
+ throw new TypeError("capture redaction rule is invalid");
241
+ }
242
+ return { rule_id: record.rule_id, count: record.count };
243
+ });
244
+ const canonical = canonicalRules(rules);
245
+ if (JSON.stringify(canonical) !== JSON.stringify(rules))
246
+ throw new TypeError("capture redaction rules are not canonical");
247
+ return rules;
248
+ }
249
+ function canonicalRules(rules) {
250
+ const totals = new Map();
251
+ for (const rule of rules)
252
+ totals.set(rule.rule_id, (totals.get(rule.rule_id) ?? 0) + rule.count);
253
+ return [...totals].sort(([left], [right]) => Buffer.from(left).compare(Buffer.from(right))).map(([rule_id, count]) => ({ rule_id, count }));
254
+ }
255
+ function resourcesFromExecution(execution) {
256
+ const requested = resourceVector(execution.reservation);
257
+ const observedValue = asRecord(execution.observed);
258
+ const containers = Array.isArray(observedValue.containers) ? observedValue.containers.map(asRecord) : [];
259
+ const peaks = containers.map((container) => container.peak_memory_bytes).filter((value) => Number.isSafeInteger(value) && value >= 0);
260
+ const cpuTimes = containers.map((container) => container.cpu_time_ns).filter((value) => Number.isSafeInteger(value) && value >= 0);
261
+ const cpuTime = cpuTimes.reduce((total, value) => total + value, 0);
262
+ const observed = {
263
+ ...(Number.isSafeInteger(observedValue.sample_count) && observedValue.sample_count >= 0 ? { sample_count: observedValue.sample_count } : {}),
264
+ container_count: containers.length,
265
+ ...(peaks.length > 0 ? { peak_memory_bytes: Math.max(...peaks) } : {}),
266
+ ...(cpuTimes.length > 0 && Number.isSafeInteger(cpuTime) ? { cpu_time_ns: cpuTime } : {}),
267
+ oom_killed_containers: containers.filter((container) => container.oom_killed === true).length,
268
+ };
269
+ return { requested, observed };
270
+ }
271
+ function parseBundleEnvironment(value) {
272
+ const record = asRecord(value);
273
+ if (!Array.isArray(record.images) || typeof record.provider !== "string" || !record.provider
274
+ || record.worker_id !== undefined && (typeof record.worker_id !== "string" || !record.worker_id)
275
+ || record.lease_id !== undefined && (typeof record.lease_id !== "string" || !/^lease_[a-f0-9]{32}$/.test(record.lease_id)))
276
+ throw new TypeError("result bundle environment summary is invalid");
277
+ const images = record.images.map((value) => {
278
+ const image = asRecord(value);
279
+ if (!isSha256(image.image_id) || !isSha256(image.image_digest) || typeof image.reference !== "string" || !image.reference)
280
+ throw new TypeError("result bundle environment summary image is invalid");
281
+ return image;
282
+ });
283
+ return { images, provider: record.provider, ...(record.worker_id ? { worker_id: record.worker_id } : {}), ...(record.lease_id ? { lease_id: record.lease_id } : {}) };
284
+ }
285
+ function parseBundleResources(value) {
286
+ const record = asRecord(value);
287
+ const observed = record.observed === undefined ? undefined : asRecord(record.observed);
288
+ if (observed && Object.values(observed).some((entry) => !Number.isSafeInteger(entry) || entry < 0))
289
+ throw new TypeError("result bundle observed resources are invalid");
290
+ return { requested: resourceVector(record.requested), ...(observed ? { observed: observed } : {}) };
291
+ }
292
+ function resourceVector(value) {
293
+ const record = asRecord(value);
294
+ const fields = ["cpu_millis", "memory_bytes", "container_slots", "build_slots"];
295
+ if (Object.keys(record).some((key) => !fields.includes(key) && key !== "gpu_count" && key !== "ephemeral_disk_bytes")
296
+ || fields.some((key) => !Number.isSafeInteger(record[key]) || record[key] < 0)
297
+ || (record.gpu_count !== undefined && (!Number.isSafeInteger(record.gpu_count) || record.gpu_count < 0))
298
+ || (record.ephemeral_disk_bytes !== undefined && (!Number.isSafeInteger(record.ephemeral_disk_bytes) || record.ephemeral_disk_bytes < 0)))
299
+ throw new TypeError("result bundle requested resources are invalid");
300
+ return {
301
+ ...Object.fromEntries(fields.map((key) => [key, record[key]])),
302
+ ...(record.gpu_count === undefined ? {} : { gpu_count: record.gpu_count }),
303
+ ...(record.ephemeral_disk_bytes === undefined ? {} : { ephemeral_disk_bytes: record.ephemeral_disk_bytes }),
304
+ };
305
+ }
306
+ async function bundleFiles(root) {
307
+ const relativeFiles = await listRegularFiles(root);
308
+ const files = await Promise.all(relativeFiles.filter((file) => file !== BUNDLE_INDEX).map(async (relativePath) => {
309
+ const absolute = path.join(root, ...relativePath.split("/"));
310
+ const info = await lstat(absolute);
311
+ if (!info.isFile() || info.nlink !== 1)
312
+ throw new TypeError(`result bundle contains an unsafe file: ${relativePath}`);
313
+ return {
314
+ role: roleForPath(relativePath),
315
+ path: relativePath,
316
+ size: info.size,
317
+ sha256: await sha256File(absolute),
318
+ };
319
+ }));
320
+ return files.sort(compareBundleFiles);
321
+ }
322
+ async function listRegularFiles(root, relative = "") {
323
+ const directory = relative ? path.join(root, ...relative.split("/")) : root;
324
+ const entries = await readdir(directory, { withFileTypes: true });
325
+ const files = [];
326
+ for (const entry of entries.sort((left, right) => Buffer.from(left.name).compare(Buffer.from(right.name)))) {
327
+ const normalized = entry.name.normalize("NFC");
328
+ if (normalized !== entry.name || entry.name.includes("\\") || entry.name === "." || entry.name === "..") {
329
+ throw new TypeError("result bundle path is not canonical");
330
+ }
331
+ const child = relative ? `${relative}/${entry.name}` : entry.name;
332
+ if (entry.isDirectory())
333
+ files.push(...await listRegularFiles(root, child));
334
+ else if (entry.isFile())
335
+ files.push(child);
336
+ else
337
+ throw new TypeError(`result bundle contains a non-regular entry: ${child}`);
338
+ }
339
+ return files;
340
+ }
341
+ function roleForPath(file) {
342
+ if (file === "request.json")
343
+ return "request";
344
+ if (file === "resolution.json")
345
+ return "resolution";
346
+ if (file === "manifest.json")
347
+ return "manifest";
348
+ if (file === "result.json")
349
+ return "result";
350
+ if (file === "runtime.ref.json")
351
+ return "runtime-ref";
352
+ if (file === "execution.json")
353
+ return "execution-evidence";
354
+ if (file === "events.jsonl")
355
+ return "control-events";
356
+ if (file === "workspace.json" || file.startsWith("workspace/"))
357
+ return "workspace-evidence";
358
+ if (file === "environment/image.manifest.json")
359
+ return "environment-manifest";
360
+ if (file.startsWith("interactions/"))
361
+ return "interaction-capture";
362
+ if (file === "eval/publication.json")
363
+ return "eval-publication";
364
+ if (file.startsWith("verifier/"))
365
+ return "verifier-evidence";
366
+ if (file === "trajectory.ref.json" || file.startsWith("trajectory/"))
367
+ return "trajectory";
368
+ if (file.startsWith("provider/") || file.includes("provider-native"))
369
+ return "provider-evidence";
370
+ if (/(?:^|\/)(?:stdout|stderr)\.log$/.test(file) || file.endsWith(".stdout.log") || file.endsWith(".stderr.log"))
371
+ return "process-log";
372
+ return "diagnostic";
373
+ }
374
+ function parseBundleFile(value, index) {
375
+ if (!value || typeof value !== "object" || Array.isArray(value))
376
+ throw new TypeError(`result bundle file ${index} is invalid`);
377
+ const file = value;
378
+ const roles = new Set([
379
+ "request", "resolution", "manifest", "result", "runtime-ref", "environment-manifest", "execution-evidence",
380
+ "control-events", "process-log", "workspace-evidence", "trajectory", "provider-evidence", "verifier-evidence",
381
+ "interaction-capture", "eval-publication", "diagnostic",
382
+ ]);
383
+ if (!roles.has(file.role) || typeof file.path !== "string" || !validRelativePath(file.path)
384
+ || !Number.isSafeInteger(file.size) || file.size < 0 || !isSha256(file.sha256)) {
385
+ throw new TypeError(`result bundle file ${index} is invalid`);
386
+ }
387
+ return { role: file.role, path: file.path, size: file.size, sha256: file.sha256 };
388
+ }
389
+ async function bundleProvenance(root, manifest) {
390
+ const harness = asRecord(manifest.harness);
391
+ const context = asRecord(manifest.context);
392
+ const runtime = await readJSON(path.join(root, "runtime.ref.json"), null);
393
+ return {
394
+ ...(isSha256(harness.revision_identity) || harness.revision_identity === null ? { harness_revision: harness.revision_identity } : {}),
395
+ ...(isSha256(harness.artifact_id) ? { artifact_id: harness.artifact_id } : {}),
396
+ ...(isSha256(runtime?.runtime_id) ? { controller_runtime_id: runtime.runtime_id } : {}),
397
+ ...(typeof context.benchmark_id === "string" ? { benchmark_id: context.benchmark_id } : {}),
398
+ ...(typeof context.benchmark_revision === "string" ? { benchmark_revision: context.benchmark_revision } : {}),
399
+ ...(isSha256(context.verifier_identity) ? { verifier_identity: context.verifier_identity } : {}),
400
+ };
401
+ }
402
+ function parseProvenance(value) {
403
+ const record = asRecord(value);
404
+ if (record.harness_revision !== undefined && record.harness_revision !== null && !isSha256(record.harness_revision))
405
+ throw new TypeError("result bundle harness revision is invalid");
406
+ if (record.artifact_id !== undefined && !isSha256(record.artifact_id))
407
+ throw new TypeError("result bundle artifact id is invalid");
408
+ if (record.controller_runtime_id !== undefined && !isSha256(record.controller_runtime_id))
409
+ throw new TypeError("result bundle controller runtime id is invalid");
410
+ if (record.verifier_identity !== undefined && !isSha256(record.verifier_identity))
411
+ throw new TypeError("result bundle verifier identity is invalid");
412
+ if (record.benchmark_id !== undefined && typeof record.benchmark_id !== "string")
413
+ throw new TypeError("result bundle benchmark id is invalid");
414
+ if (record.benchmark_revision !== undefined && typeof record.benchmark_revision !== "string")
415
+ throw new TypeError("result bundle benchmark revision is invalid");
416
+ return record;
417
+ }
418
+ function relativeRef(value, label) {
419
+ if (typeof value !== "string" || !validRelativePath(value))
420
+ throw new TypeError(`${label} is invalid`);
421
+ return value;
422
+ }
423
+ function requiredRunId(value) {
424
+ if (typeof value !== "string" || !/^run_[a-f0-9]{32}$/.test(value))
425
+ throw new TypeError("result bundle run_id is invalid");
426
+ return value;
427
+ }
428
+ function validRelativePath(value) {
429
+ return value === value.normalize("NFC") && !path.posix.isAbsolute(value) && !value.includes("\\")
430
+ && value.split("/").every((segment) => segment !== "" && segment !== "." && segment !== "..");
431
+ }
432
+ function isSha256(value) {
433
+ return typeof value === "string" && /^sha256:[0-9a-f]{64}$/.test(value);
434
+ }
435
+ function asRecord(value) {
436
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
437
+ }
438
+ function compareBundleFiles(left, right) {
439
+ return Buffer.from(left.path).compare(Buffer.from(right.path));
440
+ }
441
+ function sha256File(file) {
442
+ return new Promise((resolve, reject) => {
443
+ const hash = createHash("sha256");
444
+ const stream = createReadStream(file);
445
+ stream.once("error", reject);
446
+ stream.on("data", (chunk) => { hash.update(chunk); });
447
+ stream.once("end", () => resolve(`sha256:${hash.digest("hex")}`));
448
+ });
449
+ }
450
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../src/runs/bundle.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { createWriteStream } from "node:fs";
2
2
  import path from "node:path";
3
3
  import { ensureDir, SCHEMA_VERSION } from "../foundation/index.js";
4
+ export const MAX_RUN_EVENT_BYTES = 64 * 1024;
4
5
  export class EventSink {
5
6
  runDirectory;
6
7
  runId;
@@ -34,7 +35,17 @@ export class EventSink {
34
35
  ...event,
35
36
  type: event.type || "event",
36
37
  };
37
- const line = `${JSON.stringify(framed)}\n`;
38
+ let line = `${JSON.stringify(framed)}\n`;
39
+ if (Buffer.byteLength(line) > MAX_RUN_EVENT_BYTES) {
40
+ const originalBytes = Buffer.byteLength(line);
41
+ for (const key of Object.keys(framed)) {
42
+ if (!["schema_version", "sequence", "timestamp", "run_id", "eval_id", "type"].includes(key))
43
+ delete framed[key];
44
+ }
45
+ framed.truncated = true;
46
+ framed.original_bytes = originalBytes;
47
+ line = `${JSON.stringify(framed)}\n`;
48
+ }
38
49
  this.pending = this.pending.then(() => writeChunk(this.events, line));
39
50
  try {
40
51
  this.onEvent(framed);
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/runs/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/runs/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AASnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,IAAI,CAAC;AAE7C,MAAM,OAAO,SAAS;IACX,YAAY,CAAS;IACrB,KAAK,CAAQ;IACb,OAAO,CAA8B;IACtC,QAAQ,GAAG,CAAC,CAAC;IACb,OAAO,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3C,MAAM,CAA0B;IAChC,MAAM,CAA0B;IAChC,MAAM,CAA0B;IAChC,WAAW,CAAoB;IAEvC,YAAY,YAAoB,EAAE,KAAY,EAAE,UAAuC,GAAG,EAAE,GAAE,CAAC;QAC7F,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3G,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzG,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzG,KAAK,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7D,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAA8B;QACjC,MAAM,MAAM,GAAe;YACzB,cAAc,EAAE,cAAc;YAC9B,QAAQ,EAAE,EAAE,IAAI,CAAC,QAAQ;YACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,IAAI,CAAC,KAAK;YAClB,GAAG,KAAK;YACR,IAAI,EAAG,KAAK,CAAC,IAAe,IAAI,OAAO;SACxC,CAAC;QACF,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QACzC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,mBAAmB,EAAE,CAAC;YAClD,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC9C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,CAAC,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YAClH,CAAC;YACD,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;YACxB,MAAM,CAAC,cAAc,GAAG,aAAa,CAAC;YACtC,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAqB,EAAE,IAAI,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC;YAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,yDAAyD,CAAC,CAAC;QACjG,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAqB,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAqB,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,OAA0B,CAAC;QAC/B,IAAI,CAAC;YAAC,MAAM,IAAI,CAAC,OAAO,CAAC;QAAC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,OAAO,GAAG,KAAc,CAAC;QAAC,CAAC;QACvE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxH,OAAO,KAAK,IAAI,CAAC,WAAW,CAAC;QAC7B,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,EAAE,MAA2B,CAAC;QAC/F,IAAI,OAAO;YAAE,MAAM,OAAO,CAAC;IAC7B,CAAC;CACF;AAED,SAAS,UAAU,CAAC,MAAmB,EAAE,KAAa;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,MAA+B;IAClD,IAAI,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC"}