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,163 @@
1
+ const MAX_EVENT_TYPES = 128;
2
+ const MAX_TRACKED_OPERATIONS = 4_096;
3
+ export class DaemonTelemetry {
4
+ eventCounts = new Map();
5
+ durations = new Map();
6
+ phaseDurations = new Map();
7
+ queuedAt = new Map();
8
+ workStartedAt = new Map();
9
+ backendStartedAt = new Map();
10
+ rerunsByType = new Map();
11
+ buildHits = 0;
12
+ buildMisses = 0;
13
+ buildWaits = 0;
14
+ leaseRecoveries = 0;
15
+ validTrials = 0;
16
+ invalidTrials = 0;
17
+ physicalRetries = 0;
18
+ candidateReruns = 0;
19
+ sealedBundles = 0;
20
+ captureDegradations = 0;
21
+ cleanupFailures = 0;
22
+ residualResources = 0;
23
+ lastEventAt = null;
24
+ observe(event) {
25
+ const type = typeof event.type === "string" ? event.type.slice(0, 256) : "unknown";
26
+ if (this.eventCounts.has(type) || this.eventCounts.size < MAX_EVENT_TYPES) {
27
+ this.eventCounts.set(type, (this.eventCounts.get(type) ?? 0) + 1);
28
+ }
29
+ const duration = Number(event.duration_ms);
30
+ if (Number.isSafeInteger(duration) && duration >= 0) {
31
+ observeDuration(this.durations, type, duration);
32
+ }
33
+ this.observePhases(type, event, Number.isSafeInteger(duration) && duration >= 0 ? duration : undefined);
34
+ if (type === "build.cache_hit")
35
+ this.buildHits += 1;
36
+ if (type === "build.started")
37
+ this.buildMisses += 1;
38
+ if (type === "build.wait")
39
+ this.buildWaits += 1;
40
+ if (type === "lease.recovered")
41
+ this.leaseRecoveries += 1;
42
+ if (type === "eval.trial.published")
43
+ event.observation_status === "valid" ? this.validTrials += 1 : this.invalidTrials += 1;
44
+ if (type === "eval.physical-retry.started")
45
+ this.physicalRetries += 1;
46
+ if (type === "eval.rerun.started") {
47
+ const rerunType = typeof event.rerun_type === "string" ? event.rerun_type.slice(0, 64) : "unknown";
48
+ this.rerunsByType.set(rerunType, (this.rerunsByType.get(rerunType) ?? 0) + 1);
49
+ if (rerunType === "candidate-restart")
50
+ this.candidateReruns += 1;
51
+ }
52
+ if (type === "result.bundle.sealed")
53
+ this.sealedBundles += 1;
54
+ if (type === "interaction.capture.degraded")
55
+ this.captureDegradations += 1;
56
+ if (type === "sandbox.cleanup.failed")
57
+ this.cleanupFailures += 1;
58
+ if (type === "sandbox.cleanup.completed")
59
+ this.residualResources = safeAdd(this.residualResources, nonNegative(event.residual_resources));
60
+ this.lastEventAt = new Date().toISOString();
61
+ }
62
+ snapshot() {
63
+ return {
64
+ event_counts: Object.fromEntries([...this.eventCounts].sort(([left], [right]) => left.localeCompare(right))),
65
+ durations_ms: Object.fromEntries([...this.durations].sort(([left], [right]) => left.localeCompare(right)).map(([type, value]) => [type, { ...value }])),
66
+ phase_durations_ms: Object.fromEntries([...this.phaseDurations].sort(([left], [right]) => left.localeCompare(right)).map(([type, value]) => [type, { ...value }])),
67
+ phase_resolution: { agent: "harbor-agent-wrapper", verifier: "harbor-verifier-wrapper", fallback_metric: "backend_agent_verifier" },
68
+ build_cache: { hits: this.buildHits, misses: this.buildMisses, waits: this.buildWaits },
69
+ lease_recoveries: this.leaseRecoveries,
70
+ trials: {
71
+ valid: this.validTrials,
72
+ invalid: this.invalidTrials,
73
+ physical_retries: this.physicalRetries,
74
+ candidate_reruns: this.candidateReruns,
75
+ reruns_by_type: Object.fromEntries([...this.rerunsByType].sort(([left], [right]) => left.localeCompare(right))),
76
+ },
77
+ bundles: { sealed: this.sealedBundles },
78
+ capture: { degraded: this.captureDegradations },
79
+ cleanup: { failures: this.cleanupFailures, residual_resources: this.residualResources },
80
+ last_event_at: this.lastEventAt,
81
+ };
82
+ }
83
+ observePhases(type, event, duration) {
84
+ const now = Date.now();
85
+ const evalId = identifier(event.eval_id);
86
+ const runId = identifier(event.run_id);
87
+ const workId = identifier(event.work_id);
88
+ if (type === "eval.queued" && evalId)
89
+ track(this.queuedAt, `eval:${evalId}`, now);
90
+ if (type === "run.queued" && runId)
91
+ track(this.queuedAt, `run:${runId}`, now);
92
+ if (type === "eval.started" && evalId)
93
+ observeElapsed(this.phaseDurations, "queue_wait", this.queuedAt, `eval:${evalId}`, now);
94
+ if (type === "run.started" && runId)
95
+ observeElapsed(this.phaseDurations, "queue_wait", this.queuedAt, `run:${runId}`, now);
96
+ if (type === "eval.dispatch.started" && duration !== undefined) {
97
+ observeDuration(this.phaseDurations, "queue_wait", duration);
98
+ if (evalId)
99
+ this.queuedAt.delete(`eval:${evalId}`);
100
+ }
101
+ if (type === "eval.plan.created" && duration !== undefined)
102
+ observeDuration(this.phaseDurations, "planning", duration);
103
+ if ((type === "build.completed" || type === "build.failed") && duration !== undefined)
104
+ observeDuration(this.phaseDurations, "build", duration);
105
+ if (type === "eval.setup.completed" && duration !== undefined)
106
+ observeDuration(this.phaseDurations, "setup", duration);
107
+ if (type === "eval.agent.completed" && duration !== undefined)
108
+ observeDuration(this.phaseDurations, "agent", duration);
109
+ if (type === "eval.verifier.completed" && duration !== undefined)
110
+ observeDuration(this.phaseDurations, "verifier", duration);
111
+ if (type === "eval.collection.completed" && duration !== undefined)
112
+ observeDuration(this.phaseDurations, "collection", duration);
113
+ if (type === "eval.work.started" && workId)
114
+ track(this.workStartedAt, workId, now);
115
+ if (type === "eval.backend.started" && workId) {
116
+ observeElapsed(this.phaseDurations, "controller_setup", this.workStartedAt, workId, now);
117
+ track(this.backendStartedAt, workId, now);
118
+ }
119
+ if (type === "eval.backend.completed" && workId) {
120
+ observeElapsed(this.phaseDurations, "backend_agent_verifier", this.backendStartedAt, workId, now, false);
121
+ track(this.backendStartedAt, `collection:${workId}`, now);
122
+ }
123
+ if (type === "result.bundle.sealed" && workId)
124
+ observeElapsed(this.phaseDurations, "collection", this.backendStartedAt, `collection:${workId}`, now, false);
125
+ if ((type === "eval.work.completed" || type === "eval.work.lost") && workId) {
126
+ this.workStartedAt.delete(workId);
127
+ this.backendStartedAt.delete(workId);
128
+ this.backendStartedAt.delete(`collection:${workId}`);
129
+ }
130
+ }
131
+ }
132
+ function observeDuration(target, key, duration) {
133
+ const current = target.get(key) ?? { count: 0, total_ms: 0, max_ms: 0, last_ms: 0 };
134
+ current.count += 1;
135
+ current.total_ms = safeAdd(current.total_ms, duration);
136
+ current.max_ms = Math.max(current.max_ms, duration);
137
+ current.last_ms = duration;
138
+ target.set(key, current);
139
+ }
140
+ function observeElapsed(target, key, starts, identity, now, remove = true) {
141
+ const started = starts.get(identity);
142
+ if (started === undefined)
143
+ return;
144
+ observeDuration(target, key, Math.max(0, now - started));
145
+ if (remove)
146
+ starts.delete(identity);
147
+ }
148
+ function track(target, identity, now) {
149
+ if (target.has(identity) || target.size < MAX_TRACKED_OPERATIONS)
150
+ target.set(identity, now);
151
+ }
152
+ function identifier(value) {
153
+ return typeof value === "string" && value.length <= 256 ? value : null;
154
+ }
155
+ function nonNegative(value) {
156
+ const number = Number(value);
157
+ return Number.isSafeInteger(number) && number >= 0 ? number : 0;
158
+ }
159
+ function safeAdd(left, right) {
160
+ const value = left + right;
161
+ return Number.isSafeInteger(value) ? value : Number.MAX_SAFE_INTEGER;
162
+ }
163
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../src/daemon/telemetry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,219 @@
1
+ import { createReadStream } from "node:fs";
2
+ import { pipeline } from "node:stream/promises";
3
+ import { parseRemoteWorkerHeartbeat } from "../control-plane/index.js";
4
+ import { invalidInput } from "../foundation/index.js";
5
+ import { authorized } from "./auth.js";
6
+ export async function handleWorkerProtocolRoute(input) {
7
+ const { request, response, url, registry, protocol } = input;
8
+ if (request.method === "POST" && url.pathname === "/v1/workers/register") {
9
+ if (!authorized(request, input.adminToken))
10
+ unauthorized(response);
11
+ else {
12
+ const registered = await registry.register(await readBodyJSON(request));
13
+ input.onEvent?.({ type: "worker.registered", worker_id: registered.worker.worker.worker_id, generation: registered.worker.generation });
14
+ json(response, 201, {
15
+ schema_version: "1",
16
+ worker: registered.worker,
17
+ credential: { type: "bearer", token: registered.token },
18
+ });
19
+ }
20
+ return true;
21
+ }
22
+ const match = url.pathname.match(/^\/v1\/workers\/(worker_[a-z0-9][a-z0-9_-]{0,62})(?:\/(heartbeat))?$/);
23
+ if (!match)
24
+ return false;
25
+ const workerId = match[1];
26
+ const action = match[2];
27
+ if (request.method === "POST" && action === "heartbeat") {
28
+ const workerToken = bearerToken(request);
29
+ if (!workerToken || !await registry.authenticate(workerId, workerToken))
30
+ unauthorized(response);
31
+ else {
32
+ const heartbeat = parseRemoteWorkerHeartbeat(await readBodyJSON(request));
33
+ await protocol.validateHeartbeatLeases(workerId, heartbeat);
34
+ const worker = await registry.heartbeat(workerId, heartbeat);
35
+ input.onEvent?.({ type: "worker.heartbeat", worker_id: workerId, generation: heartbeat.generation, health: heartbeat.health });
36
+ for (const lease of heartbeat.active_leases)
37
+ input.onEvent?.({ type: "lease.renewed", worker_id: workerId, lease_id: lease.lease_id, lease_epoch: lease.epoch });
38
+ json(response, 200, { schema_version: "1", worker });
39
+ }
40
+ return true;
41
+ }
42
+ if (request.method === "DELETE" && !action) {
43
+ if (!authorized(request, input.adminToken))
44
+ unauthorized(response);
45
+ else
46
+ json(response, 200, { schema_version: "1", worker: await registry.revoke(workerId) });
47
+ return true;
48
+ }
49
+ if (request.method === "GET" && !action) {
50
+ if (!authorized(request, input.adminToken))
51
+ unauthorized(response);
52
+ else {
53
+ const worker = await registry.get(workerId);
54
+ if (worker)
55
+ json(response, 200, { schema_version: "1", worker });
56
+ else
57
+ json(response, 404, { error: { code: "worker_not_found", message: `worker not found: ${workerId}` } });
58
+ }
59
+ return true;
60
+ }
61
+ return false;
62
+ }
63
+ export async function handleRemoteWorkRoute(input) {
64
+ const { request, response, url, registry, protocol } = input;
65
+ const credentialMatch = url.pathname.match(/^\/v1\/workers\/(worker_[a-z0-9][a-z0-9_-]{0,62})\/leases\/(lease_[a-f0-9]{32})\/credentials$/);
66
+ if (credentialMatch && request.method === "GET") {
67
+ const workerId = credentialMatch[1];
68
+ if (!await workerAuthorized(request, registry, workerId))
69
+ unauthorized(response);
70
+ else {
71
+ const envelope = await protocol.issueCredentialEnvelope(workerId, credentialMatch[2], positiveGeneration(url.searchParams.get("generation")), positiveGeneration(url.searchParams.get("epoch")));
72
+ response.setHeader("cache-control", "no-store");
73
+ response.setHeader("pragma", "no-cache");
74
+ json(response, 200, { schema_version: "1", envelope });
75
+ }
76
+ return true;
77
+ }
78
+ const inputMatch = url.pathname.match(/^\/v1\/workers\/(worker_[a-z0-9][a-z0-9_-]{0,62})\/leases\/(lease_[a-f0-9]{32})\/inputs\/(sha256:[a-f0-9]{64})$/);
79
+ if (inputMatch && request.method === "GET") {
80
+ const workerId = inputMatch[1];
81
+ if (!await workerAuthorized(request, registry, workerId))
82
+ unauthorized(response);
83
+ else {
84
+ const resolved = await protocol.resolveInput(workerId, inputMatch[2], positiveGeneration(url.searchParams.get("generation")), inputMatch[3]);
85
+ response.writeHead(200, { "content-type": "application/octet-stream", "content-length": String(resolved.size), "cache-control": "private, immutable" });
86
+ await pipeline(createReadStream(resolved.path), response);
87
+ }
88
+ return true;
89
+ }
90
+ const artifactMatch = url.pathname.match(/^\/v1\/workers\/(worker_[a-z0-9][a-z0-9_-]{0,62})\/leases\/(lease_[a-f0-9]{32})\/artifacts\/(sha256:[a-f0-9]{64})$/);
91
+ if (artifactMatch && request.method === "PUT") {
92
+ const workerId = artifactMatch[1];
93
+ if (!await workerAuthorized(request, registry, workerId))
94
+ unauthorized(response);
95
+ else {
96
+ const generation = positiveGeneration(url.searchParams.get("generation"));
97
+ const epoch = positiveGeneration(url.searchParams.get("epoch"));
98
+ const expectedSize = contentLength(request);
99
+ const artifact = await protocol.uploadArtifact({
100
+ workerId, leaseId: artifactMatch[2], digest: artifactMatch[3],
101
+ generation, epoch, expectedSize, body: request,
102
+ });
103
+ json(response, 201, { schema_version: "1", artifact });
104
+ }
105
+ return true;
106
+ }
107
+ const collection = url.pathname.match(/^\/v1\/workers\/(worker_[a-z0-9][a-z0-9_-]{0,62})\/offers$/);
108
+ if (collection) {
109
+ const workerId = collection[1];
110
+ if (request.method === "POST") {
111
+ if (!authorized(request, input.adminToken))
112
+ unauthorized(response);
113
+ else {
114
+ const body = objectBody(await readBodyJSON(request));
115
+ const offer = await protocol.createOffer(workerId, body.lease, body.work, body.inputs, body.credential_names);
116
+ json(response, 201, { schema_version: "1", offer });
117
+ }
118
+ return true;
119
+ }
120
+ if (request.method === "GET") {
121
+ if (!await workerAuthorized(request, registry, workerId))
122
+ unauthorized(response);
123
+ else {
124
+ const generation = positiveGeneration(url.searchParams.get("generation"));
125
+ json(response, 200, { schema_version: "1", offers: await protocol.listOffers(workerId, generation) });
126
+ }
127
+ return true;
128
+ }
129
+ }
130
+ const offerMatch = url.pathname.match(/^\/v1\/workers\/(worker_[a-z0-9][a-z0-9_-]{0,62})\/offers\/(offer_[a-f0-9]{32})\/(accept|complete|release|release-request|cancel)$/);
131
+ if (offerMatch) {
132
+ const [, workerId, offerId, action] = offerMatch;
133
+ if (request.method !== "POST")
134
+ return false;
135
+ if (action === "cancel" || action === "release-request") {
136
+ if (!authorized(request, input.adminToken))
137
+ unauthorized(response);
138
+ else
139
+ json(response, 200, { schema_version: "1", offer: action === "cancel"
140
+ ? await protocol.requestCancel(workerId, offerId)
141
+ : await protocol.requestRelease(workerId, offerId) });
142
+ return true;
143
+ }
144
+ if (!await workerAuthorized(request, registry, workerId))
145
+ unauthorized(response);
146
+ else {
147
+ const body = { ...objectBody(await readBodyJSON(request)), offer_id: offerId };
148
+ const offer = action === "accept"
149
+ ? await protocol.acceptOffer(workerId, body)
150
+ : action === "complete"
151
+ ? await protocol.completeOffer(workerId, body)
152
+ : await protocol.releaseOffer(workerId, body);
153
+ json(response, 200, { schema_version: "1", offer });
154
+ }
155
+ return true;
156
+ }
157
+ const eventMatch = url.pathname.match(/^\/v1\/workers\/(worker_[a-z0-9][a-z0-9_-]{0,62})\/leases\/(lease_[a-f0-9]{32})\/events$/);
158
+ if (eventMatch && request.method === "POST") {
159
+ const workerId = eventMatch[1];
160
+ if (!await workerAuthorized(request, registry, workerId))
161
+ unauthorized(response);
162
+ else {
163
+ const event = await protocol.recordEvent(workerId, { ...objectBody(await readBodyJSON(request)), lease_id: eventMatch[2] });
164
+ json(response, event.duplicate ? 200 : 201, { schema_version: "1", ...event });
165
+ }
166
+ return true;
167
+ }
168
+ return false;
169
+ }
170
+ function bearerToken(request) {
171
+ const value = request.headers.authorization;
172
+ return typeof value === "string" && value.startsWith("Bearer ") ? value.slice(7) : null;
173
+ }
174
+ async function workerAuthorized(request, registry, workerId) {
175
+ const token = bearerToken(request);
176
+ return token !== null && registry.authenticate(workerId, token);
177
+ }
178
+ function objectBody(value) {
179
+ if (!value || typeof value !== "object" || Array.isArray(value))
180
+ throw invalidInput("worker protocol body must be an object");
181
+ return value;
182
+ }
183
+ function positiveGeneration(value) {
184
+ if (!value || !/^[1-9][0-9]*$/.test(value) || !Number.isSafeInteger(Number(value)))
185
+ throw invalidInput("worker generation is required");
186
+ return Number(value);
187
+ }
188
+ function contentLength(request) {
189
+ const value = request.headers["content-length"];
190
+ if (Array.isArray(value) || typeof value !== "string" || !/^(0|[1-9][0-9]*)$/.test(value) || !Number.isSafeInteger(Number(value))) {
191
+ throw invalidInput("worker artifact content-length is required");
192
+ }
193
+ return Number(value);
194
+ }
195
+ async function readBodyJSON(request, limit = 1_048_576) {
196
+ const chunks = [];
197
+ let size = 0;
198
+ for await (const chunk of request) {
199
+ const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
200
+ size += buffer.length;
201
+ if (size > limit)
202
+ throw invalidInput("request body exceeds 1 MiB");
203
+ chunks.push(buffer);
204
+ }
205
+ try {
206
+ return JSON.parse(Buffer.concat(chunks).toString("utf8") || "{}");
207
+ }
208
+ catch {
209
+ throw invalidInput("invalid JSON request body");
210
+ }
211
+ }
212
+ function unauthorized(response) {
213
+ json(response, 401, { error: { code: "unauthorized", message: "missing or invalid worker credential" } });
214
+ }
215
+ function json(response, status, value) {
216
+ response.writeHead(status, { "content-type": "application/json; charset=utf-8" });
217
+ response.end(`${JSON.stringify(value)}\n`);
218
+ }
219
+ //# sourceMappingURL=worker-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-routes.js","sourceRoot":"","sources":["../../../src/daemon/worker-routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bundles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundles.js","sourceRoot":"","sources":["../../../src/domain/bundles.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=control-plane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control-plane.js","sourceRoot":"","sources":["../../../src/domain/control-plane.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=execution-evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-evidence.js","sourceRoot":"","sources":["../../../src/domain/execution-evidence.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=execution-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-plan.js","sourceRoot":"","sources":["../../../src/domain/execution-plan.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=images.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"images.js","sourceRoot":"","sources":["../../../src/domain/images.ts"],"names":[],"mappings":""}
@@ -7,5 +7,14 @@ export * from "./controller-runtime.js";
7
7
  export * from "./revisions.js";
8
8
  export * from "./artifacts.js";
9
9
  export * from "./workspaces.js";
10
+ export * from "./resources.js";
11
+ export * from "./control-plane.js";
12
+ export * from "./bundles.js";
13
+ export * from "./execution-plan.js";
14
+ export * from "./execution-evidence.js";
15
+ export * from "./workers.js";
16
+ export * from "./providers.js";
17
+ export * from "./images.js";
18
+ export * from "./interactions.js";
10
19
  export * from "./validation.js";
11
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=interactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactions.js","sourceRoot":"","sources":["../../../src/domain/interactions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../src/domain/providers.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/domain/resources.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=workers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workers.js","sourceRoot":"","sources":["../../../src/domain/workers.ts"],"names":[],"mappings":""}