openpond-sdk 0.12.2 → 0.12.4

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 (384) hide show
  1. package/dist/actions-local.js +2 -1
  2. package/dist/actions-local.js.map +1 -7
  3. package/dist/actions.js +2 -1
  4. package/dist/actions.js.map +1 -7
  5. package/dist/advanced-refiner-evaluations.js +13 -12
  6. package/dist/advanced-refiner-evaluations.js.map +1 -7
  7. package/dist/candidate-evaluations.js +9 -8
  8. package/dist/candidate-evaluations.js.map +1 -7
  9. package/dist/{chunk-MLFKQ7E7.js → chunk-24N6A6SF.js} +4 -4
  10. package/dist/chunk-24N6A6SF.js.map +1 -0
  11. package/dist/{chunk-YCQVVFE5.js → chunk-3B5KSH3V.js} +2 -2
  12. package/dist/chunk-3B5KSH3V.js.map +1 -0
  13. package/dist/{chunk-2DMYAJLS.js → chunk-3DWPLYFJ.js} +2 -2
  14. package/dist/chunk-3DWPLYFJ.js.map +1 -0
  15. package/dist/{chunk-B7VYE7YQ.js → chunk-53LLNDXF.js} +3 -3
  16. package/dist/chunk-53LLNDXF.js.map +1 -0
  17. package/dist/{chunk-VSRTJDVB.js → chunk-B5XTGEBE.js} +25 -13
  18. package/dist/chunk-B5XTGEBE.js.map +1 -0
  19. package/dist/{chunk-HKWX624G.js → chunk-BVMR5OFW.js} +5 -5
  20. package/dist/chunk-BVMR5OFW.js.map +1 -0
  21. package/dist/{chunk-3KXDH6OB.js → chunk-CL3IOOVL.js} +1 -1
  22. package/dist/chunk-CL3IOOVL.js.map +1 -0
  23. package/dist/chunk-CMWZZZGW.js +255 -0
  24. package/dist/chunk-CMWZZZGW.js.map +1 -0
  25. package/dist/{chunk-VOL3WES2.js → chunk-DF2QXVZ3.js} +14 -169
  26. package/dist/chunk-DF2QXVZ3.js.map +1 -0
  27. package/dist/{chunk-AG5DDL7T.js → chunk-DH6O4JFB.js} +2 -2
  28. package/dist/chunk-DH6O4JFB.js.map +1 -0
  29. package/dist/{chunk-7GYXC2AI.js → chunk-EFUT3XKW.js} +4 -4
  30. package/dist/chunk-EFUT3XKW.js.map +1 -0
  31. package/dist/{chunk-DBRRQASP.js → chunk-ETX25FTB.js} +3 -3
  32. package/dist/chunk-ETX25FTB.js.map +1 -0
  33. package/dist/{chunk-MEKWESBF.js → chunk-FBZTDDRC.js} +2 -2
  34. package/dist/chunk-FBZTDDRC.js.map +1 -0
  35. package/dist/{chunk-7AZDNZP6.js → chunk-GAIDBPFY.js} +353 -90
  36. package/dist/chunk-GAIDBPFY.js.map +1 -0
  37. package/dist/{chunk-YVUIHH6Z.js → chunk-GPQLBVQC.js} +1 -1
  38. package/dist/chunk-GPQLBVQC.js.map +1 -0
  39. package/dist/{chunk-KAE7AMYE.js → chunk-H3367ISL.js} +2 -2
  40. package/dist/chunk-H3367ISL.js.map +1 -0
  41. package/dist/{chunk-COPVBJPL.js → chunk-H3JZ3P5T.js} +2 -1
  42. package/dist/chunk-H3JZ3P5T.js.map +1 -0
  43. package/dist/{chunk-3LP7DNLQ.js → chunk-H4NTJFEE.js} +2 -2
  44. package/dist/chunk-H4NTJFEE.js.map +1 -0
  45. package/dist/{chunk-TCHAWJMB.js → chunk-HGXVOFCL.js} +2 -2
  46. package/dist/chunk-HGXVOFCL.js.map +1 -0
  47. package/dist/{chunk-CEZEVILU.js → chunk-HJ2AIAKX.js} +1 -1
  48. package/dist/chunk-HJ2AIAKX.js.map +1 -0
  49. package/dist/{chunk-ENLQCKY6.js → chunk-I54WQBXL.js} +8 -8
  50. package/dist/chunk-I54WQBXL.js.map +1 -0
  51. package/dist/{chunk-AV5JV26B.js → chunk-K5LWSWV7.js} +4 -4
  52. package/dist/chunk-K5LWSWV7.js.map +1 -0
  53. package/dist/{chunk-IWT6JUZD.js → chunk-L6EJX2VQ.js} +2 -2
  54. package/dist/chunk-L6EJX2VQ.js.map +1 -0
  55. package/dist/{chunk-WVISXXIL.js → chunk-LHX7ENKZ.js} +3 -3
  56. package/dist/chunk-LHX7ENKZ.js.map +1 -0
  57. package/dist/{chunk-WNH4DOEC.js → chunk-LR5CTOC5.js} +30 -299
  58. package/dist/chunk-LR5CTOC5.js.map +1 -0
  59. package/dist/chunk-MO4HAJZG.js +8709 -0
  60. package/dist/chunk-MO4HAJZG.js.map +1 -0
  61. package/dist/{chunk-T4APHDES.js → chunk-O6FKHAWN.js} +1 -1
  62. package/dist/chunk-O6FKHAWN.js.map +1 -0
  63. package/dist/{chunk-O5ARJVT5.js → chunk-OR3TMIJN.js} +5 -5
  64. package/dist/chunk-OR3TMIJN.js.map +1 -0
  65. package/dist/{chunk-P27DQ65Z.js → chunk-OVGDDKO2.js} +1 -1
  66. package/dist/chunk-OVGDDKO2.js.map +1 -0
  67. package/dist/{chunk-O4GE6VTR.js → chunk-PWW5QKZS.js} +2 -2
  68. package/dist/chunk-PWW5QKZS.js.map +1 -0
  69. package/dist/{chunk-DUKW3R7O.js → chunk-Q4TKI2MV.js} +2 -2
  70. package/dist/chunk-Q4TKI2MV.js.map +1 -0
  71. package/dist/{chunk-L5PQPAU6.js → chunk-QRS7Y3EM.js} +7 -3
  72. package/dist/chunk-QRS7Y3EM.js.map +1 -0
  73. package/dist/{chunk-YVFERCUC.js → chunk-RRKRA237.js} +83 -5
  74. package/dist/chunk-RRKRA237.js.map +1 -0
  75. package/dist/{chunk-2U54EOXJ.js → chunk-TK3DXH7A.js} +1 -1
  76. package/dist/chunk-TK3DXH7A.js.map +1 -0
  77. package/dist/{chunk-CK3ONRRC.js → chunk-U7XWIOSB.js} +3 -3
  78. package/dist/chunk-U7XWIOSB.js.map +1 -0
  79. package/dist/{chunk-DG5CRENU.js → chunk-VHGC44HA.js} +5 -5
  80. package/dist/chunk-VHGC44HA.js.map +1 -0
  81. package/dist/{chunk-7WUJBFCH.js → chunk-VN5V2E2S.js} +24 -5
  82. package/dist/chunk-VN5V2E2S.js.map +1 -0
  83. package/dist/{chunk-YSKUXQ2N.js → chunk-WMIKJGXW.js} +3 -3
  84. package/dist/chunk-WMIKJGXW.js.map +1 -0
  85. package/dist/{chunk-ROBAX5TN.js → chunk-WQFU635Q.js} +8 -6
  86. package/dist/chunk-WQFU635Q.js.map +1 -0
  87. package/dist/{chunk-D4WTE6ZA.js → chunk-XON75UFN.js} +3 -3
  88. package/dist/chunk-XON75UFN.js.map +1 -0
  89. package/dist/chunk-YLJ4XMA6.js +35 -0
  90. package/dist/chunk-YLJ4XMA6.js.map +1 -0
  91. package/dist/{chunk-K3JCP4FO.js → chunk-Z252BNAZ.js} +1 -1
  92. package/dist/chunk-Z252BNAZ.js.map +1 -0
  93. package/dist/{chunk-OEPYLZXK.js → chunk-ZHQK3MOM.js} +4 -4
  94. package/dist/chunk-ZHQK3MOM.js.map +1 -0
  95. package/dist/{chunk-6Q4I33CH.js → chunk-ZIFZFP5I.js} +5 -5
  96. package/dist/chunk-ZIFZFP5I.js.map +1 -0
  97. package/dist/connected-evidence.js +22 -21
  98. package/dist/connected-evidence.js.map +1 -7
  99. package/dist/dataset-commerce.js +2 -0
  100. package/dist/dataset-commerce.js.map +1 -7
  101. package/dist/dataset-marketplace.js +2 -0
  102. package/dist/dataset-marketplace.js.map +1 -7
  103. package/dist/dataset-workspaces.js +25 -23
  104. package/dist/dataset-workspaces.js.map +1 -7
  105. package/dist/experiment-evaluation-schedules.js +28 -27
  106. package/dist/experiment-evaluation-schedules.js.map +1 -7
  107. package/dist/experiment-improvements.js +12 -11
  108. package/dist/experiment-improvements.js.map +1 -7
  109. package/dist/experiments.js +31 -26
  110. package/dist/experiments.js.map +1 -7
  111. package/dist/human-review.js +3 -2
  112. package/dist/human-review.js.map +1 -7
  113. package/dist/index.js +98 -50
  114. package/dist/index.js.map +1 -7
  115. package/dist/learning.js +4 -3
  116. package/dist/learning.js.map +1 -7
  117. package/dist/model-batch-review.js +2 -1
  118. package/dist/model-batch-review.js.map +1 -7
  119. package/dist/model-projects.js +3 -2
  120. package/dist/model-projects.js.map +1 -7
  121. package/dist/model-starter-attempts.js +5 -4
  122. package/dist/model-starter-attempts.js.map +1 -7
  123. package/dist/model-starter-catalog.js +15 -14
  124. package/dist/model-starter-catalog.js.map +1 -7
  125. package/dist/model-starters.js +15 -14
  126. package/dist/model-starters.js.map +1 -7
  127. package/dist/model-taskset-authoring.js +2 -1
  128. package/dist/model-taskset-authoring.js.map +1 -7
  129. package/dist/model-taskset-runs.js +6 -5
  130. package/dist/model-taskset-runs.js.map +1 -7
  131. package/dist/post-training.js +9 -8
  132. package/dist/post-training.js.map +1 -7
  133. package/dist/profile-actions.js +3 -2
  134. package/dist/profile-actions.js.map +1 -7
  135. package/dist/project-actions.js +3 -2
  136. package/dist/project-actions.js.map +1 -7
  137. package/dist/refiner.js +3 -2
  138. package/dist/refiner.js.map +1 -7
  139. package/dist/taskset-catalog.js +2 -1
  140. package/dist/taskset-catalog.js.map +1 -7
  141. package/dist/taskset-drafts.js +27 -26
  142. package/dist/taskset-drafts.js.map +1 -7
  143. package/dist/taskset-packages.js +29 -26
  144. package/dist/taskset-packages.js.map +1 -7
  145. package/dist/training-bundle.js +195 -34
  146. package/dist/training-bundle.js.map +1 -7
  147. package/dist/training-projects.js +2 -1
  148. package/dist/training-projects.js.map +1 -7
  149. package/dist/training.js +17 -10
  150. package/dist/training.js.map +1 -7
  151. package/dist/types/packages/cloud/src/api/core.d.ts.map +1 -1
  152. package/dist/types/packages/cloud/src/sandbox/client-handles.d.ts.map +1 -1
  153. package/dist/types/packages/cloud/src/sandbox/client.d.ts.map +1 -1
  154. package/dist/types/packages/cloud/src/sandbox/sandbox-instance-client.d.ts.map +1 -1
  155. package/dist/types/packages/cloud/src/sandbox/types/runtime-profiles.d.ts.map +1 -1
  156. package/dist/types/packages/sdk/src/advanced-refiner-evaluations.d.ts +487 -487
  157. package/dist/types/packages/sdk/src/advanced-refiner-evaluations.d.ts.map +1 -1
  158. package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts +381 -348
  159. package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts.map +1 -1
  160. package/dist/types/packages/sdk/src/candidate-evaluations.d.ts +86 -54
  161. package/dist/types/packages/sdk/src/candidate-evaluations.d.ts.map +1 -1
  162. package/dist/types/packages/sdk/src/connected-collection-status.d.ts +5 -5
  163. package/dist/types/packages/sdk/src/connected-dataset-source.d.ts +10 -10
  164. package/dist/types/packages/sdk/src/connected-evidence-client.d.ts +464 -460
  165. package/dist/types/packages/sdk/src/connected-evidence-client.d.ts.map +1 -1
  166. package/dist/types/packages/sdk/src/connected-evidence-contracts.d.ts +23 -23
  167. package/dist/types/packages/sdk/src/connected-recorded-execution.d.ts +77 -74
  168. package/dist/types/packages/sdk/src/connected-recorded-execution.d.ts.map +1 -1
  169. package/dist/types/packages/sdk/src/connected-sync.d.ts +30 -30
  170. package/dist/types/packages/sdk/src/connected-sync.d.ts.map +1 -1
  171. package/dist/types/packages/sdk/src/dataset-commerce-contracts.d.ts +14 -14
  172. package/dist/types/packages/sdk/src/dataset-commerce-files.d.ts +5 -5
  173. package/dist/types/packages/sdk/src/dataset-commerce-files.d.ts.map +1 -1
  174. package/dist/types/packages/sdk/src/dataset-commerce-responses.d.ts +82 -82
  175. package/dist/types/packages/sdk/src/dataset-commerce.d.ts +58 -58
  176. package/dist/types/packages/sdk/src/dataset-commerce.d.ts.map +1 -1
  177. package/dist/types/packages/sdk/src/dataset-marketplace.d.ts +4 -4
  178. package/dist/types/packages/sdk/src/dataset-marketplace.d.ts.map +1 -1
  179. package/dist/types/packages/sdk/src/dataset-population.d.ts +10 -10
  180. package/dist/types/packages/sdk/src/dataset-population.d.ts.map +1 -1
  181. package/dist/types/packages/sdk/src/dataset-preparation-authoring-contracts.d.ts +172 -172
  182. package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts +47 -47
  183. package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts.map +1 -1
  184. package/dist/types/packages/sdk/src/dataset-preparation-contracts.d.ts +90 -90
  185. package/dist/types/packages/sdk/src/dataset-preparation-qualification-contracts.d.ts +7 -7
  186. package/dist/types/packages/sdk/src/dataset-preparation-research-contracts.d.ts +26 -26
  187. package/dist/types/packages/sdk/src/dataset-preparation-starting-state.d.ts +8 -8
  188. package/dist/types/packages/sdk/src/dataset-preparation-workspace.d.ts +111 -110
  189. package/dist/types/packages/sdk/src/dataset-preparation-workspace.d.ts.map +1 -1
  190. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +896 -889
  191. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
  192. package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts +225 -223
  193. package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts.map +1 -1
  194. package/dist/types/packages/sdk/src/dataset-workspace-operations.d.ts +226 -224
  195. package/dist/types/packages/sdk/src/dataset-workspace-operations.d.ts.map +1 -1
  196. package/dist/types/packages/sdk/src/evaluation-coordination-http.d.ts.map +1 -1
  197. package/dist/types/packages/sdk/src/evaluation-project-context.d.ts +1 -1
  198. package/dist/types/packages/sdk/src/experiment-client.d.ts +2090 -1969
  199. package/dist/types/packages/sdk/src/experiment-client.d.ts.map +1 -1
  200. package/dist/types/packages/sdk/src/experiment-contracts.d.ts +177 -113
  201. package/dist/types/packages/sdk/src/experiment-contracts.d.ts.map +1 -1
  202. package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts +597 -505
  203. package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts.map +1 -1
  204. package/dist/types/packages/sdk/src/experiment-execution-selection.d.ts +5 -5
  205. package/dist/types/packages/sdk/src/experiment-execution-selection.d.ts.map +1 -1
  206. package/dist/types/packages/sdk/src/experiment-field-mappings.d.ts +8 -8
  207. package/dist/types/packages/sdk/src/experiment-grading-contracts.d.ts +16 -16
  208. package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts +2524 -2524
  209. package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts.map +1 -1
  210. package/dist/types/packages/sdk/src/experiment-improvement-contracts.d.ts +1557 -1557
  211. package/dist/types/packages/sdk/src/experiment-improvement-hosted-adoption.d.ts +150 -150
  212. package/dist/types/packages/sdk/src/experiment-inspection.d.ts.map +1 -1
  213. package/dist/types/packages/sdk/src/experiment-run-contracts.d.ts +41 -25
  214. package/dist/types/packages/sdk/src/experiment-run-contracts.d.ts.map +1 -1
  215. package/dist/types/packages/sdk/src/experiment-run-details.d.ts +315 -240
  216. package/dist/types/packages/sdk/src/experiment-run-details.d.ts.map +1 -1
  217. package/dist/types/packages/sdk/src/experiment-scoring-contracts.d.ts +21 -21
  218. package/dist/types/packages/sdk/src/grader-inspection.d.ts +104 -104
  219. package/dist/types/packages/sdk/src/grader-inspection.d.ts.map +1 -1
  220. package/dist/types/packages/sdk/src/harness-experiment-policy.d.ts +50 -20
  221. package/dist/types/packages/sdk/src/harness-experiment-policy.d.ts.map +1 -1
  222. package/dist/types/packages/sdk/src/human-review-client.d.ts +288 -288
  223. package/dist/types/packages/sdk/src/human-review-client.d.ts.map +1 -1
  224. package/dist/types/packages/sdk/src/index.d.ts.map +1 -1
  225. package/dist/types/packages/sdk/src/learning-batch-assets.d.ts +15 -13
  226. package/dist/types/packages/sdk/src/learning-batch-assets.d.ts.map +1 -1
  227. package/dist/types/packages/sdk/src/learning-client.d.ts +5 -5
  228. package/dist/types/packages/sdk/src/learning-client.d.ts.map +1 -1
  229. package/dist/types/packages/sdk/src/learning-credentials.d.ts +4 -4
  230. package/dist/types/packages/sdk/src/learning-credentials.d.ts.map +1 -1
  231. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +71 -69
  232. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts.map +1 -1
  233. package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts +65 -61
  234. package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts.map +1 -1
  235. package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts +74 -72
  236. package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts.map +1 -1
  237. package/dist/types/packages/sdk/src/model-batch-review.d.ts +96 -92
  238. package/dist/types/packages/sdk/src/model-batch-review.d.ts.map +1 -1
  239. package/dist/types/packages/sdk/src/model-learning-intent.d.ts +1 -1
  240. package/dist/types/packages/sdk/src/model-learning-policy.d.ts +247 -247
  241. package/dist/types/packages/sdk/src/model-learning-policy.d.ts.map +1 -1
  242. package/dist/types/packages/sdk/src/model-projects.d.ts +324 -324
  243. package/dist/types/packages/sdk/src/model-projects.d.ts.map +1 -1
  244. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts +187 -187
  245. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts.map +1 -1
  246. package/dist/types/packages/sdk/src/model-starter-catalog.d.ts +181 -179
  247. package/dist/types/packages/sdk/src/model-starter-catalog.d.ts.map +1 -1
  248. package/dist/types/packages/sdk/src/model-starter-execution.d.ts +40 -40
  249. package/dist/types/packages/sdk/src/model-starters.d.ts +291 -287
  250. package/dist/types/packages/sdk/src/model-starters.d.ts.map +1 -1
  251. package/dist/types/packages/sdk/src/model-taskset-authoring-contracts.d.ts +3 -3
  252. package/dist/types/packages/sdk/src/model-taskset-derivation.d.ts +114 -112
  253. package/dist/types/packages/sdk/src/model-taskset-derivation.d.ts.map +1 -1
  254. package/dist/types/packages/sdk/src/model-taskset-resources.d.ts +18 -18
  255. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts +191 -127
  256. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts.map +1 -1
  257. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +868 -824
  258. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts.map +1 -1
  259. package/dist/types/packages/sdk/src/post-training.d.ts +448 -372
  260. package/dist/types/packages/sdk/src/post-training.d.ts.map +1 -1
  261. package/dist/types/packages/sdk/src/profile-actions.d.ts.map +1 -1
  262. package/dist/types/packages/sdk/src/profile-evaluation-discovery.d.ts +150 -150
  263. package/dist/types/packages/sdk/src/profile-evaluation-discovery.d.ts.map +1 -1
  264. package/dist/types/packages/sdk/src/profile-external-dataset-package.d.ts +254 -251
  265. package/dist/types/packages/sdk/src/profile-external-dataset-package.d.ts.map +1 -1
  266. package/dist/types/packages/sdk/src/project-actions.d.ts.map +1 -1
  267. package/dist/types/packages/sdk/src/protocol.d.ts.map +1 -1
  268. package/dist/types/packages/sdk/src/run-diagnostics.d.ts +3 -3
  269. package/dist/types/packages/sdk/src/task-design-contracts.d.ts +50 -50
  270. package/dist/types/packages/sdk/src/task-inventory.d.ts +4 -4
  271. package/dist/types/packages/sdk/src/task-inventory.d.ts.map +1 -1
  272. package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts +190 -189
  273. package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts.map +1 -1
  274. package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +149 -148
  275. package/dist/types/packages/sdk/src/taskset-authored-files.d.ts.map +1 -1
  276. package/dist/types/packages/sdk/src/taskset-authored-portable-release.d.ts +15 -6
  277. package/dist/types/packages/sdk/src/taskset-authored-portable-release.d.ts.map +1 -1
  278. package/dist/types/packages/sdk/src/taskset-calibration-fixtures.d.ts +64 -63
  279. package/dist/types/packages/sdk/src/taskset-calibration-fixtures.d.ts.map +1 -1
  280. package/dist/types/packages/sdk/src/taskset-catalog.d.ts.map +1 -1
  281. package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts +245 -243
  282. package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts.map +1 -1
  283. package/dist/types/packages/sdk/src/taskset-draft-authoring.d.ts.map +1 -1
  284. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +744 -738
  285. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -1
  286. package/dist/types/packages/sdk/src/taskset-draft-core.d.ts +133 -131
  287. package/dist/types/packages/sdk/src/taskset-draft-core.d.ts.map +1 -1
  288. package/dist/types/packages/sdk/src/taskset-draft-dataset-artifacts.d.ts +80 -80
  289. package/dist/types/packages/sdk/src/taskset-draft-dataset-sources.d.ts +34 -34
  290. package/dist/types/packages/sdk/src/taskset-draft-document.d.ts +119 -117
  291. package/dist/types/packages/sdk/src/taskset-draft-document.d.ts.map +1 -1
  292. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts +500 -492
  293. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts.map +1 -1
  294. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +236 -234
  295. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts.map +1 -1
  296. package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts +228 -224
  297. package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts.map +1 -1
  298. package/dist/types/packages/sdk/src/taskset-intake.d.ts +1 -1
  299. package/dist/types/packages/sdk/src/taskset-package-client.d.ts +4589 -4577
  300. package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
  301. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts +2068 -2054
  302. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts.map +1 -1
  303. package/dist/types/packages/sdk/src/taskset-package-files.d.ts +1 -1
  304. package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts +21 -21
  305. package/dist/types/packages/sdk/src/taskset-package-learning.d.ts +88 -86
  306. package/dist/types/packages/sdk/src/taskset-package-learning.d.ts.map +1 -1
  307. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +387 -383
  308. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts.map +1 -1
  309. package/dist/types/packages/sdk/src/training-acceptance.d.ts +26 -26
  310. package/dist/types/packages/sdk/src/training-acceptance.d.ts.map +1 -1
  311. package/dist/types/packages/sdk/src/training-bundle-contracts.d.ts +18 -10
  312. package/dist/types/packages/sdk/src/training-bundle-contracts.d.ts.map +1 -1
  313. package/dist/types/packages/sdk/src/training-bundle.d.ts +6 -0
  314. package/dist/types/packages/sdk/src/training-bundle.d.ts.map +1 -1
  315. package/dist/types/packages/sdk/src/training-candidate-decisions.d.ts +2 -2
  316. package/dist/types/packages/sdk/src/training-candidate-decisions.d.ts.map +1 -1
  317. package/dist/types/packages/sdk/src/training-evaluation-results.d.ts +3 -3
  318. package/dist/types/packages/sdk/src/training-evaluation-source.d.ts +1 -1
  319. package/dist/types/packages/sdk/src/training-evaluation-source.d.ts.map +1 -1
  320. package/dist/types/packages/sdk/src/training-grading-plan.d.ts.map +1 -1
  321. package/dist/types/packages/sdk/src/training-harness-sources.d.ts +14 -14
  322. package/dist/types/packages/sdk/src/training-harness-sources.d.ts.map +1 -1
  323. package/dist/types/packages/sdk/src/training-learning-batch.d.ts +344 -340
  324. package/dist/types/packages/sdk/src/training-learning-batch.d.ts.map +1 -1
  325. package/dist/types/packages/sdk/src/training-preparations.d.ts +700 -700
  326. package/dist/types/packages/sdk/src/training-preparations.d.ts.map +1 -1
  327. package/dist/types/packages/sdk/src/training-project-client.d.ts +272 -272
  328. package/dist/types/packages/sdk/src/training-project-client.d.ts.map +1 -1
  329. package/dist/types/packages/sdk/src/training-project-contracts.d.ts +161 -161
  330. package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts +368 -0
  331. package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts.map +1 -0
  332. package/dist/types/packages/sdk/src/training.d.ts +1574 -1387
  333. package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
  334. package/dist/types/packages/sdk/src/work.d.ts +4 -0
  335. package/dist/types/packages/sdk/src/work.d.ts.map +1 -1
  336. package/dist/types/packages/sdk/src/workflows.d.ts.map +1 -1
  337. package/dist/workflows.js +3 -2
  338. package/dist/workflows.js.map +1 -7
  339. package/package.json +3 -3
  340. package/dist/chunk-2DMYAJLS.js.map +0 -7
  341. package/dist/chunk-2U54EOXJ.js.map +0 -7
  342. package/dist/chunk-3KXDH6OB.js.map +0 -7
  343. package/dist/chunk-3LP7DNLQ.js.map +0 -7
  344. package/dist/chunk-6Q4I33CH.js.map +0 -7
  345. package/dist/chunk-7AZDNZP6.js.map +0 -7
  346. package/dist/chunk-7GYXC2AI.js.map +0 -7
  347. package/dist/chunk-7WUJBFCH.js.map +0 -7
  348. package/dist/chunk-AG5DDL7T.js.map +0 -7
  349. package/dist/chunk-AV5JV26B.js.map +0 -7
  350. package/dist/chunk-B7VYE7YQ.js.map +0 -7
  351. package/dist/chunk-CEZEVILU.js.map +0 -7
  352. package/dist/chunk-CK3ONRRC.js.map +0 -7
  353. package/dist/chunk-COPVBJPL.js.map +0 -7
  354. package/dist/chunk-D4WTE6ZA.js.map +0 -7
  355. package/dist/chunk-DBRRQASP.js.map +0 -7
  356. package/dist/chunk-DG5CRENU.js.map +0 -7
  357. package/dist/chunk-DUKW3R7O.js.map +0 -7
  358. package/dist/chunk-ENLQCKY6.js.map +0 -7
  359. package/dist/chunk-FHCSDXIA.js +0 -1417
  360. package/dist/chunk-FHCSDXIA.js.map +0 -7
  361. package/dist/chunk-HKWX624G.js.map +0 -7
  362. package/dist/chunk-IWT6JUZD.js.map +0 -7
  363. package/dist/chunk-K3JCP4FO.js.map +0 -7
  364. package/dist/chunk-KAE7AMYE.js.map +0 -7
  365. package/dist/chunk-L5PQPAU6.js.map +0 -7
  366. package/dist/chunk-MEKWESBF.js.map +0 -7
  367. package/dist/chunk-MLFKQ7E7.js.map +0 -7
  368. package/dist/chunk-O4GE6VTR.js.map +0 -7
  369. package/dist/chunk-O5ARJVT5.js.map +0 -7
  370. package/dist/chunk-OEPYLZXK.js.map +0 -7
  371. package/dist/chunk-P27DQ65Z.js.map +0 -7
  372. package/dist/chunk-PGBFI5HC.js +0 -98
  373. package/dist/chunk-PGBFI5HC.js.map +0 -7
  374. package/dist/chunk-ROBAX5TN.js.map +0 -7
  375. package/dist/chunk-T4APHDES.js.map +0 -7
  376. package/dist/chunk-TCHAWJMB.js.map +0 -7
  377. package/dist/chunk-VOL3WES2.js.map +0 -7
  378. package/dist/chunk-VSRTJDVB.js.map +0 -7
  379. package/dist/chunk-WNH4DOEC.js.map +0 -7
  380. package/dist/chunk-WVISXXIL.js.map +0 -7
  381. package/dist/chunk-YCQVVFE5.js.map +0 -7
  382. package/dist/chunk-YSKUXQ2N.js.map +0 -7
  383. package/dist/chunk-YVFERCUC.js.map +0 -7
  384. package/dist/chunk-YVUIHH6Z.js.map +0 -7
@@ -3,7 +3,8 @@ import {
3
3
  isProjectActionDefinition,
4
4
  loadProjectActionConfiguration,
5
5
  resolveProjectActionRuntime
6
- } from "./chunk-P27DQ65Z.js";
6
+ } from "./chunk-OVGDDKO2.js";
7
+ import "./chunk-YLJ4XMA6.js";
7
8
 
8
9
  // ../actions/src/local.ts
9
10
  import { randomUUID } from "node:crypto";
@@ -1,7 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../actions/src/local.ts", "../../actions/src/build.ts", "../../actions/src/schema.ts", "../../actions/src/catalog.ts", "../../actions/src/discovery.ts", "../../actions/src/hash.ts", "../../actions/src/setup.ts"],
4
- "sourcesContent": ["import { randomUUID } from \"node:crypto\";\nimport { spawn } from \"node:child_process\";\nimport { promises as fs } from \"node:fs\";\nimport path from \"node:path\";\n\nimport {\n DEFAULT_PROJECT_ACTION_OUTPUT_DIRECTORY,\n buildProjectActions,\n} from \"./build.js\";\nimport {\n loadProjectActionConfiguration,\n resolveProjectActionRuntime,\n} from \"./configuration.js\";\nimport type {\n LocalProjectActionRunner,\n ProjectActionBuildResult,\n ProjectActionRegistry,\n ProjectActionRunRequest,\n ProjectActionRunResult,\n ProjectActionRunnerOptions,\n} from \"./types.js\";\nimport { validateProjectActionRunSetup } from \"./setup.js\";\n\nconst localConcurrency = new Map<string, { active: number; waiting: Array<() => void> }>();\n\nexport function createLocalActionRunner(\n options: ProjectActionRunnerOptions,\n): LocalProjectActionRunner {\n const projectRoot = path.resolve(options.projectRoot);\n const buildPolicy = options.build ?? \"if-missing\";\n let currentBuild: ProjectActionBuildResult | null = null;\n\n const ensureBuild = async (): Promise<ProjectActionBuildResult> => {\n if (buildPolicy === \"always\") return runBuild();\n if (currentBuild) return currentBuild;\n if (buildPolicy === \"never\" || buildPolicy === \"if-missing\") {\n const configuration = await loadProjectActionConfiguration(projectRoot);\n const outputDirectory = path.resolve(\n projectRoot,\n options.outputDirectory ?? configuration.outputDirectory ?? DEFAULT_PROJECT_ACTION_OUTPUT_DIRECTORY,\n );\n const loaded = await loadBuild(projectRoot, outputDirectory);\n if (loaded) return (currentBuild = loaded);\n if (buildPolicy === \"never\") {\n throw new Error(`Project Actions have not been built in ${outputDirectory}.`);\n }\n }\n return runBuild();\n };\n const runBuild = async () => {\n currentBuild = await buildProjectActions({\n projectRoot,\n sourceDirectory: options.sourceDirectory,\n outputDirectory: options.outputDirectory,\n });\n return currentBuild;\n };\n\n return {\n build: runBuild,\n async catalog() {\n return (await ensureBuild()).registry;\n },\n async run<TOutput>(request: ProjectActionRunRequest) {\n const built = await ensureBuild();\n const catalogAction = built.registry.actions.find((action) => action.id === request.actionId);\n if (!catalogAction) throw new Error(`Unknown Project Action: ${request.actionId}`);\n const configuredRuntime = resolveProjectActionRuntime(\n await loadProjectActionConfiguration(projectRoot),\n );\n const resolvedRequest: ProjectActionRunRequest = {\n ...request,\n environment: {\n ...configuredRuntime.environment,\n ...(request.environment ?? {}),\n },\n connections: {\n ...configuredRuntime.connections,\n ...(request.connections ?? {}),\n },\n };\n await validateProjectActionRunSetup(projectRoot, catalogAction.setupRequirements, resolvedRequest);\n const runId = request.runId?.trim() || randomUUID();\n const actionOutputDirectory = path.resolve(\n request.outputDirectory ?? path.join(projectRoot, \".openpond\", \"outputs\", runId),\n );\n assertWithinProject(projectRoot, actionOutputDirectory, \"Project Action output directory\");\n await fs.mkdir(actionOutputDirectory, { recursive: true });\n const release = await acquireLocalActionSlot(\n `${projectRoot}\\0${request.actionId}`,\n catalogAction.implementation.concurrency,\n resolvedRequest.signal,\n );\n const responseFile = path.join(built.outputDirectory, `.run-${randomUUID()}.json`);\n const startedAt = Date.now();\n let childResult: Awaited<ReturnType<typeof executeChild>>;\n let payload: {\n ok: true;\n output: TOutput;\n traces: ProjectActionRunResult[\"traces\"];\n outputs: ProjectActionRunResult[\"outputs\"];\n };\n try {\n childResult = await executeChild({\n runnerPath: built.runnerPath,\n cwd: projectRoot,\n signal: resolvedRequest.signal,\n request: {\n actionId: request.actionId,\n input: resolvedRequest.input ?? {},\n runId,\n idempotencyKey: resolvedRequest.idempotencyKey ?? null,\n timeoutMs: resolvedRequest.timeoutMs,\n projectRoot,\n outputDirectory: actionOutputDirectory,\n responseFile,\n environment: resolvedRequest.environment ?? {},\n connections: resolvedRequest.connections ?? {},\n },\n });\n payload = JSON.parse(await fs.readFile(responseFile, \"utf8\")) as typeof payload;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(redactRuntimeValues(message, resolvedRequest));\n } finally {\n await fs.rm(responseFile, { force: true }).catch(() => undefined);\n release();\n }\n return {\n runId,\n actionId: request.actionId,\n status: \"succeeded\",\n output: payload.output,\n stdout: redactRuntimeValues(childResult.stdout, resolvedRequest),\n stderr: redactRuntimeValues(childResult.stderr, resolvedRequest),\n traces: redactRuntimeValue(payload.traces, resolvedRequest),\n outputs: redactRuntimeValue(payload.outputs, resolvedRequest),\n outputDirectory: actionOutputDirectory,\n durationMs: Date.now() - startedAt,\n } satisfies ProjectActionRunResult<TOutput>;\n },\n };\n}\n\nasync function acquireLocalActionSlot(\n key: string,\n limit: number | null,\n signal?: AbortSignal,\n): Promise<() => void> {\n if (limit === null) return () => undefined;\n const state = localConcurrency.get(key) ?? { active: 0, waiting: [] };\n localConcurrency.set(key, state);\n if (state.active >= limit) {\n await new Promise<void>((resolve, reject) => {\n const resume = () => {\n signal?.removeEventListener(\"abort\", abort);\n resolve();\n };\n const abort = () => {\n const index = state.waiting.indexOf(resume);\n if (index >= 0) state.waiting.splice(index, 1);\n reject(signal?.reason instanceof Error ? signal.reason : new Error(\"Project Action was cancelled.\"));\n };\n if (signal?.aborted) {\n abort();\n return;\n }\n state.waiting.push(resume);\n signal?.addEventListener(\"abort\", abort, { once: true });\n });\n } else {\n state.active += 1;\n }\n let released = false;\n return () => {\n if (released) return;\n released = true;\n const next = state.waiting.shift();\n if (next) {\n next();\n return;\n }\n state.active -= 1;\n if (state.active === 0 && state.waiting.length === 0) localConcurrency.delete(key);\n };\n}\n\nasync function loadBuild(\n projectRoot: string,\n outputDirectory: string,\n): Promise<ProjectActionBuildResult | null> {\n const manifestPath = path.join(outputDirectory, \"build-manifest.json\");\n const registryPath = path.join(outputDirectory, \"action-registry.json\");\n const [manifestText, registryText] = await Promise.all([\n fs.readFile(manifestPath, \"utf8\").catch(() => null),\n fs.readFile(registryPath, \"utf8\").catch(() => null),\n ]);\n if (!manifestText || !registryText) return null;\n const manifest = JSON.parse(manifestText) as ProjectActionBuildResult[\"manifest\"];\n const registry = JSON.parse(registryText) as ProjectActionRegistry;\n return {\n projectRoot,\n outputDirectory,\n bundlePath: path.join(outputDirectory, manifest.bundleFile),\n runnerPath: path.join(outputDirectory, manifest.runnerFile),\n registryPath,\n manifestPath,\n registry,\n manifest,\n };\n}\n\nfunction redactRuntimeValues(value: string, request: ProjectActionRunRequest): string {\n let redacted = value;\n for (const secret of runtimeStringValues(request)) {\n if (secret.length >= 4) redacted = redacted.split(secret).join(\"[REDACTED]\");\n }\n return redacted;\n}\n\nfunction redactRuntimeValue<T>(value: T, request: ProjectActionRunRequest): T {\n const serialized = JSON.stringify(value);\n return JSON.parse(redactRuntimeValues(serialized, request)) as T;\n}\n\nfunction runtimeStringValues(request: ProjectActionRunRequest): string[] {\n const values = new Set<string>(Object.values(request.environment ?? {}));\n const visit = (value: unknown) => {\n if (typeof value === \"string\") values.add(value);\n else if (Array.isArray(value)) value.forEach(visit);\n else if (value && typeof value === \"object\") Object.values(value).forEach(visit);\n };\n visit(request.connections ?? {});\n return [...values].filter(Boolean).sort((left, right) => right.length - left.length);\n}\n\nfunction executeChild(input: {\n runnerPath: string;\n cwd: string;\n signal?: AbortSignal;\n request: Record<string, unknown>;\n}): Promise<{ stdout: string; stderr: string }> {\n return new Promise((resolve, reject) => {\n if (input.signal?.aborted) {\n reject(input.signal.reason instanceof Error ? input.signal.reason : new Error(\"Project Action was cancelled.\"));\n return;\n }\n let requestJson: string;\n try {\n requestJson = JSON.stringify(input.request);\n } catch (error) {\n reject(new Error(`Project Action request is not serializable: ${error instanceof Error ? error.message : String(error)}`));\n return;\n }\n const child = spawn(process.execPath, [input.runnerPath], {\n cwd: input.cwd,\n env: minimalEnvironment(),\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n let stdout = \"\";\n let stderr = \"\";\n child.stdout.setEncoding(\"utf8\");\n child.stderr.setEncoding(\"utf8\");\n child.stdout.on(\"data\", (chunk: string) => { stdout += chunk; });\n child.stderr.on(\"data\", (chunk: string) => { stderr += chunk; });\n const abort = () => child.kill(\"SIGTERM\");\n input.signal?.addEventListener(\"abort\", abort, { once: true });\n child.once(\"error\", reject);\n child.once(\"close\", (code, signal) => {\n input.signal?.removeEventListener(\"abort\", abort);\n if (input.signal?.aborted) {\n reject(input.signal.reason instanceof Error ? input.signal.reason : new Error(\"Project Action was cancelled.\"));\n return;\n }\n if (code !== 0) {\n reject(new Error(`Project Action process failed (${code ?? signal ?? \"unknown\"}): ${stderr.trim() || stdout.trim()}`));\n return;\n }\n resolve({ stdout, stderr });\n });\n child.stdin.end(requestJson);\n });\n}\n\nfunction assertWithinProject(projectRoot: string, target: string, label: string): void {\n const relative = path.relative(projectRoot, target);\n if (relative.startsWith(\"..\") || path.isAbsolute(relative)) {\n throw new Error(`${label} must stay inside the Project root.`);\n }\n}\n\nfunction minimalEnvironment(): NodeJS.ProcessEnv {\n const env: NodeJS.ProcessEnv = {};\n for (const name of [\"PATH\", \"SystemRoot\", \"WINDIR\", \"TMPDIR\", \"TEMP\", \"TMP\"]) {\n if (process.env[name] !== undefined) env[name] = process.env[name];\n }\n return env;\n}\n\nexport { buildProjectActions } from \"./build.js\";\nexport {\n loadProjectActionConfiguration,\n PROJECT_ACTION_CONFIG_PATH,\n resolveProjectActionRuntime,\n} from \"./configuration.js\";\nexport type {\n LocalProjectActionRunner,\n ProjectActionBuildManifest,\n ProjectActionBuildResult,\n ProjectActionCatalogEntry,\n ProjectActionRegistry,\n ProjectActionRunRequest,\n ProjectActionRunResult,\n ProjectActionRunnerOptions,\n} from \"./types.js\";\n", "import { promises as fs } from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\n\nimport { build } from \"esbuild\";\n\nimport { collectProjectActions, createProjectActionRegistry } from \"./catalog.js\";\nimport { loadProjectActionConfiguration } from \"./configuration.js\";\nimport { discoverProjectActionFiles } from \"./discovery.js\";\nimport { canonicalJson, sha256 } from \"./hash.js\";\nimport { validateProjectActionStaticSetup } from \"./setup.js\";\nimport type {\n ProjectActionBuildManifest,\n ProjectActionBuildResult,\n ProjectActionDefinition,\n} from \"./types.js\";\n\nexport const DEFAULT_PROJECT_ACTION_OUTPUT_DIRECTORY = \".openpond/actions\";\n\nexport async function buildProjectActions(input: {\n projectRoot: string;\n sourceDirectory?: string;\n outputDirectory?: string;\n}): Promise<ProjectActionBuildResult> {\n const configuration = await loadProjectActionConfiguration(input.projectRoot);\n const discovered = await discoverProjectActionFiles({\n projectRoot: input.projectRoot,\n sourceDirectory: input.sourceDirectory ?? configuration.sourceDirectory,\n });\n const outputDirectory = path.resolve(\n discovered.projectRoot,\n input.outputDirectory ?? configuration.outputDirectory ?? DEFAULT_PROJECT_ACTION_OUTPUT_DIRECTORY,\n );\n assertWithinProject(discovered.projectRoot, outputDirectory);\n await fs.mkdir(outputDirectory, { recursive: true });\n\n const entryPath = path.join(outputDirectory, \"entry.mjs\");\n const bundlePath = path.join(outputDirectory, \"bundle.mjs\");\n const runnerPath = path.join(outputDirectory, \"runner.mjs\");\n const registryPath = path.join(outputDirectory, \"action-registry.json\");\n const manifestPath = path.join(outputDirectory, \"build-manifest.json\");\n const imports = discovered.files.map((file, index) => {\n const relative = path.relative(outputDirectory, path.join(discovered.projectRoot, file)).split(path.sep).join(\"/\");\n const specifier = relative.startsWith(\".\") ? relative : `./${relative}`;\n return `import * as actionModule${index} from ${JSON.stringify(specifier)};`;\n });\n const modules = discovered.files.map((_file, index) => `actionModule${index}`).join(\", \");\n await fs.writeFile(\n entryPath,\n [\n ...imports,\n `export const projectActionModules = [${modules}];`,\n \"export default projectActionModules;\",\n \"\",\n ].join(\"\\n\"),\n \"utf8\",\n );\n await build({\n entryPoints: [entryPath],\n outfile: bundlePath,\n bundle: true,\n platform: \"node\",\n format: \"esm\",\n target: \"node22.14\",\n sourcemap: false,\n legalComments: \"none\",\n logLevel: \"silent\",\n nodePaths: dependencySearchPaths(discovered.projectRoot),\n });\n const cacheKey = `openpond_action_build=${Date.now()}_${Math.random().toString(16).slice(2)}`;\n const loaded = await import(`${pathToFileURL(bundlePath).href}?${cacheKey}`) as {\n projectActionModules?: unknown[];\n default?: unknown[];\n };\n const actions = collectProjectActions(loaded.projectActionModules ?? loaded.default ?? []);\n for (const action of actions) {\n await validateProjectActionStaticSetup(discovered.projectRoot, action.setup);\n }\n const registry = createProjectActionRegistry(actions);\n await fs.writeFile(registryPath, canonicalJson(registry), \"utf8\");\n await fs.writeFile(runnerPath, runtimeSource(), { encoding: \"utf8\", mode: 0o755 });\n\n const bundleHash = sha256(await fs.readFile(bundlePath));\n const registryHash = sha256(canonicalJson(registry));\n const manifest: ProjectActionBuildManifest = {\n schemaVersion: \"openpond.projectActionBuild.v1\",\n sourceDirectory: path.relative(discovered.projectRoot, discovered.sourceRoot).split(path.sep).join(\"/\"),\n sourceFiles: discovered.files,\n bundleFile: path.basename(bundlePath),\n runnerFile: path.basename(runnerPath),\n registryFile: path.basename(registryPath),\n bundleHash,\n registryHash,\n };\n await fs.writeFile(manifestPath, canonicalJson(manifest), \"utf8\");\n await fs.rm(entryPath, { force: true });\n return {\n projectRoot: discovered.projectRoot,\n outputDirectory,\n bundlePath,\n runnerPath,\n registryPath,\n manifestPath,\n registry,\n manifest,\n };\n}\n\nfunction dependencySearchPaths(projectRoot: string): string[] {\n const candidates: string[] = [];\n let current = projectRoot;\n while (true) {\n candidates.push(path.join(current, \"node_modules\"));\n const parent = path.dirname(current);\n if (parent === current) break;\n current = parent;\n }\n candidates.push(path.resolve(path.dirname(fileURLToPath(import.meta.url)), \"../../../node_modules\"));\n return [...new Set(candidates)];\n}\n\nexport async function loadBuiltProjectActions(\n bundlePath: string,\n): Promise<ProjectActionDefinition[]> {\n const stats = await fs.stat(bundlePath).catch(() => null);\n if (!stats?.isFile()) throw new Error(`Project Action bundle does not exist: ${bundlePath}`);\n const loaded = await import(`${pathToFileURL(bundlePath).href}?openpond_action_load=${Date.now()}`) as {\n projectActionModules?: unknown[];\n default?: unknown[];\n };\n return collectProjectActions(loaded.projectActionModules ?? loaded.default ?? []);\n}\n\nfunction assertWithinProject(projectRoot: string, target: string): void {\n const relative = path.relative(projectRoot, target);\n if (relative.startsWith(\"..\") || path.isAbsolute(relative)) {\n throw new Error(\"Project Action output directory must stay inside the Project root.\");\n }\n}\n\nfunction runtimeSource(): string {\n return `#!/usr/bin/env node\nimport { promises as fs } from \"node:fs\";\nimport { stdin } from \"node:process\";\nimport path from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\n\nlet requestText = \"\";\nstdin.setEncoding(\"utf8\");\nfor await (const chunk of stdin) requestText += chunk;\nconst request = JSON.parse(requestText);\nconst bundlePath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), \"bundle.mjs\");\nconst loaded = await import(pathToFileURL(bundlePath).href);\nconst values = [];\nconst seen = new Set();\nconst visit = (value) => {\n if (seen.has(value)) return;\n if (value && (typeof value === \"object\" || typeof value === \"function\")) seen.add(value);\n if (value?.kind === \"openpond-project-action\" && typeof value.run === \"function\") { values.push(value); return; }\n if (Array.isArray(value)) { value.forEach(visit); return; }\n if (value && typeof value === \"object\") Object.values(value).forEach(visit);\n};\n(loaded.projectActionModules ?? loaded.default ?? []).forEach(visit);\nconst action = values.find((candidate) => candidate.id === request.actionId);\nif (!action) throw new Error(\\`Unknown Project Action: \\${request.actionId}\\`);\nconst controller = new AbortController();\nconst timeoutMs = Math.min(request.timeoutMs ?? action.timeoutMs, action.timeoutMs);\nconst timer = setTimeout(() => controller.abort(new Error(\\`Project Action timed out after \\${timeoutMs}ms.\\`)), timeoutMs);\nconst traces = [];\nconst outputs = [];\nconst env = request.environment ?? {};\nconst connections = request.connections ?? {};\nconst context = {\n runId: request.runId,\n actionId: action.id,\n idempotencyKey: request.idempotencyKey ?? null,\n projectRoot: request.projectRoot,\n outputDirectory: request.outputDirectory,\n signal: controller.signal,\n env(name) { return Object.prototype.hasOwnProperty.call(env, name) ? env[name] : undefined; },\n connection(name) {\n if (!Object.prototype.hasOwnProperty.call(connections, name)) throw new Error(\\`Project Action connection is not configured: \\${name}\\`);\n return connections[name];\n },\n trace(name, payload) { traces.push({ name, ...(payload ? { payload } : {}), timestamp: new Date().toISOString() }); },\n output(value) {\n if (!value || typeof value.path !== \"string\" || !value.path.trim()) throw new Error(\"Project Action output requires a path.\");\n const outputPath = path.resolve(request.outputDirectory, value.path);\n const relative = path.relative(request.outputDirectory, outputPath);\n if (relative.startsWith(\"..\") || path.isAbsolute(relative)) throw new Error(\"Project Action output must stay inside the run output directory.\");\n outputs.push({ ...value, path: relative.split(path.sep).join(\"/\") });\n },\n};\ntry {\n const input = action.inputSchema.parse(request.input ?? {});\n const result = await Promise.race([\n Promise.resolve(action.run(context, input)),\n new Promise((_, reject) => controller.signal.addEventListener(\"abort\", () => reject(controller.signal.reason), { once: true })),\n ]);\n const output = action.outputSchema.parse(result);\n for (const artifact of outputs) {\n const stats = await fs.stat(path.resolve(request.outputDirectory, artifact.path)).catch(() => null);\n if (!stats?.isFile()) throw new Error(\\`Project Action output does not exist: \\${artifact.path}\\`);\n }\n await fs.writeFile(request.responseFile, JSON.stringify({ ok: true, output, traces, outputs }), \"utf8\");\n} finally {\n clearTimeout(timer);\n}\n`;\n}\n", "import { z } from \"zod\";\n\nimport type { ProjectActionSchema } from \"./types.js\";\n\nexport function projectActionJsonSchema(schema: ProjectActionSchema): Record<string, unknown> {\n return z.toJSONSchema(schema, { unrepresentable: \"any\" }) as Record<string, unknown>;\n}\n\nexport function parseProjectActionValue(schema: ProjectActionSchema, value: unknown): unknown {\n return schema.parse(value);\n}\n", "import { isProjectActionDefinition } from \"./define-action.js\";\nimport { projectActionJsonSchema } from \"./schema.js\";\nimport type {\n ProjectActionCatalogEntry,\n ProjectActionDefinition,\n ProjectActionRegistry,\n} from \"./types.js\";\n\nexport function collectProjectActions(modules: unknown[]): ProjectActionDefinition[] {\n const actions: ProjectActionDefinition[] = [];\n const seenObjects = new Set<unknown>();\n const visit = (value: unknown) => {\n if (seenObjects.has(value)) return;\n if (value && (typeof value === \"object\" || typeof value === \"function\")) seenObjects.add(value);\n if (isProjectActionDefinition(value)) {\n actions.push(value);\n return;\n }\n if (Array.isArray(value)) {\n value.forEach(visit);\n return;\n }\n if (value && typeof value === \"object\") Object.values(value).forEach(visit);\n };\n modules.forEach(visit);\n const byId = new Map<string, ProjectActionDefinition>();\n for (const action of actions) {\n if (byId.has(action.id)) throw new Error(`Duplicate Project Action id: ${action.id}`);\n byId.set(action.id, action);\n }\n return [...byId.values()].sort((left, right) => left.id.localeCompare(right.id));\n}\n\nexport function createProjectActionRegistry(\n actions: readonly ProjectActionDefinition[],\n): ProjectActionRegistry {\n return {\n schemaVersion: \"openpond.projectActionRegistry.v1\",\n actions: actions.map(toCatalogEntry),\n };\n}\n\nfunction toCatalogEntry(action: ProjectActionDefinition): ProjectActionCatalogEntry {\n return {\n id: action.id,\n sourceActionId: action.id,\n name: action.id,\n label: action.label,\n description: action.description,\n visibility: \"default\",\n inputSchema: projectActionJsonSchema(action.inputSchema),\n outputSchema: projectActionJsonSchema(action.outputSchema),\n approvalPolicy: {\n ...action.approval,\n required: action.approval.mode === \"always\" || action.approval.mode === \"sensitive\" ||\n (action.approval.mode === \"writes\" && action.behavior === \"write\"),\n risk: action.behavior,\n },\n artifactPolicy: {\n outputArtifacts: [],\n persistRunSummary: true,\n persistTrace: true,\n },\n setupRequirements: [...action.setup],\n mcp: { enabled: false },\n schedulePolicy: { enabled: false, allowAdHoc: true },\n trace: { name: action.id, namespace: \"project-actions\" },\n implementation: {\n type: \"openpond-project-action\",\n actionId: action.id,\n behavior: action.behavior,\n timeoutMs: action.timeoutMs,\n concurrency: action.concurrency,\n },\n invokesModel: action.invokesModel,\n };\n}\n", "import { promises as fs } from \"node:fs\";\nimport path from \"node:path\";\n\nconst ACTION_FILE = /\\.(?:[cm]?[jt]s)$/i;\nconst IGNORED_FILE = /(?:\\.d\\.ts|\\.test\\.[cm]?[jt]s|\\.spec\\.[cm]?[jt]s)$/i;\n\nexport async function discoverProjectActionFiles(input: {\n projectRoot: string;\n sourceDirectory?: string;\n}): Promise<{ projectRoot: string; sourceRoot: string; files: string[] }> {\n const projectRoot = path.resolve(input.projectRoot);\n const sourceRoot = path.resolve(projectRoot, input.sourceDirectory ?? \"openpond/actions\");\n if (!isWithin(projectRoot, sourceRoot)) {\n throw new Error(\"Project Action source directory must stay inside the Project root.\");\n }\n const stats = await fs.stat(sourceRoot).catch(() => null);\n if (!stats?.isDirectory()) {\n throw new Error(`Project Action source directory does not exist: ${sourceRoot}`);\n }\n const files = await walk(sourceRoot);\n const actions = files\n .filter((file) => ACTION_FILE.test(file) && !IGNORED_FILE.test(file))\n .map((file) => path.relative(projectRoot, file).split(path.sep).join(\"/\"))\n .sort();\n if (actions.length === 0) {\n throw new Error(`No Project Action files were found under ${sourceRoot}.`);\n }\n return { projectRoot, sourceRoot, files: actions };\n}\n\nasync function walk(directory: string): Promise<string[]> {\n const entries = await fs.readdir(directory, { withFileTypes: true });\n const files: string[] = [];\n for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {\n if (entry.name.startsWith(\".\") || entry.name === \"node_modules\") continue;\n const target = path.join(directory, entry.name);\n if (entry.isDirectory()) files.push(...(await walk(target)));\n else if (entry.isFile()) files.push(target);\n }\n return files;\n}\n\nfunction isWithin(root: string, target: string): boolean {\n const relative = path.relative(root, target);\n return relative === \"\" || (!relative.startsWith(\"..\") && !path.isAbsolute(relative));\n}\n", "import { createHash } from \"node:crypto\";\n\nexport function sha256(value: string | Uint8Array): string {\n return createHash(\"sha256\").update(value).digest(\"hex\");\n}\n\nexport function canonicalJson(value: unknown): string {\n return `${JSON.stringify(sortValue(value), null, 2)}\\n`;\n}\n\nfunction sortValue(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(sortValue);\n if (!value || typeof value !== \"object\") return value;\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, child]) => [key, sortValue(child)]),\n );\n}\n", "import { promises as fs } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\n\nimport type {\n ProjectActionRunRequest,\n ProjectActionSetupRequirement,\n} from \"./types.js\";\n\nexport async function validateProjectActionStaticSetup(\n projectRoot: string,\n requirements: readonly ProjectActionSetupRequirement[],\n): Promise<void> {\n for (const requirement of requirements) {\n if (requirement.required === false) continue;\n if (requirement.kind === \"package\") {\n try {\n createRequire(path.join(projectRoot, \"package.json\")).resolve(requirement.name);\n } catch {\n throw new Error(`Project Action package is not installed: ${requirement.name}`);\n }\n }\n if (requirement.kind === \"native_tool\" && !(await executableExists(requirement.name))) {\n throw new Error(`Project Action native tool is not installed: ${requirement.name}`);\n }\n }\n}\n\nexport async function validateProjectActionRunSetup(\n projectRoot: string,\n requirements: readonly ProjectActionSetupRequirement[],\n request: ProjectActionRunRequest,\n): Promise<void> {\n await validateProjectActionStaticSetup(projectRoot, requirements);\n for (const requirement of requirements) {\n if (requirement.required === false) continue;\n if (requirement.kind === \"connection\" && !(requirement.name in (request.connections ?? {}))) {\n throw new Error(`Project Action connection is not configured: ${requirement.name}`);\n }\n if (requirement.kind === \"env\" && !(requirement.name in (request.environment ?? {}))) {\n throw new Error(`Project Action environment value is not configured: ${requirement.name}`);\n }\n }\n}\n\nasync function executableExists(name: string): Promise<boolean> {\n if (!name.trim() || name.includes(\"/\") || name.includes(\"\\\\\")) return false;\n for (const directory of (process.env.PATH ?? \"\").split(path.delimiter).filter(Boolean)) {\n const candidates = process.platform === \"win32\"\n ? (process.env.PATHEXT ?? \".EXE;.CMD;.BAT;.COM\").split(\";\").map((extension) => path.join(directory, `${name}${extension}`))\n : [path.join(directory, name)];\n for (const candidate of candidates) {\n if (await fs.access(candidate).then(() => true).catch(() => false)) return true;\n }\n }\n return false;\n}\n"],
5
- "mappings": "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",
6
- "names": ["fs", "path", "fs", "path", "fs", "path", "path", "fs", "path", "path", "assertWithinProject", "fs"]
7
- }
1
+ {"version":3,"sources":["../../actions/src/local.ts","../../actions/src/build.ts","../../actions/src/schema.ts","../../actions/src/catalog.ts","../../actions/src/discovery.ts","../../actions/src/hash.ts","../../actions/src/setup.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { spawn } from \"node:child_process\";\nimport { promises as fs } from \"node:fs\";\nimport path from \"node:path\";\n\nimport {\n DEFAULT_PROJECT_ACTION_OUTPUT_DIRECTORY,\n buildProjectActions,\n} from \"./build.js\";\nimport {\n loadProjectActionConfiguration,\n resolveProjectActionRuntime,\n} from \"./configuration.js\";\nimport type {\n LocalProjectActionRunner,\n ProjectActionBuildResult,\n ProjectActionRegistry,\n ProjectActionRunRequest,\n ProjectActionRunResult,\n ProjectActionRunnerOptions,\n} from \"./types.js\";\nimport { validateProjectActionRunSetup } from \"./setup.js\";\n\nconst localConcurrency = new Map<string, { active: number; waiting: Array<() => void> }>();\n\nexport function createLocalActionRunner(\n options: ProjectActionRunnerOptions,\n): LocalProjectActionRunner {\n const projectRoot = path.resolve(options.projectRoot);\n const buildPolicy = options.build ?? \"if-missing\";\n let currentBuild: ProjectActionBuildResult | null = null;\n\n const ensureBuild = async (): Promise<ProjectActionBuildResult> => {\n if (buildPolicy === \"always\") return runBuild();\n if (currentBuild) return currentBuild;\n if (buildPolicy === \"never\" || buildPolicy === \"if-missing\") {\n const configuration = await loadProjectActionConfiguration(projectRoot);\n const outputDirectory = path.resolve(\n projectRoot,\n options.outputDirectory ?? configuration.outputDirectory ?? DEFAULT_PROJECT_ACTION_OUTPUT_DIRECTORY,\n );\n const loaded = await loadBuild(projectRoot, outputDirectory);\n if (loaded) return (currentBuild = loaded);\n if (buildPolicy === \"never\") {\n throw new Error(`Project Actions have not been built in ${outputDirectory}.`);\n }\n }\n return runBuild();\n };\n const runBuild = async () => {\n currentBuild = await buildProjectActions({\n projectRoot,\n sourceDirectory: options.sourceDirectory,\n outputDirectory: options.outputDirectory,\n });\n return currentBuild;\n };\n\n return {\n build: runBuild,\n async catalog() {\n return (await ensureBuild()).registry;\n },\n async run<TOutput>(request: ProjectActionRunRequest) {\n const built = await ensureBuild();\n const catalogAction = built.registry.actions.find((action) => action.id === request.actionId);\n if (!catalogAction) throw new Error(`Unknown Project Action: ${request.actionId}`);\n const configuredRuntime = resolveProjectActionRuntime(\n await loadProjectActionConfiguration(projectRoot),\n );\n const resolvedRequest: ProjectActionRunRequest = {\n ...request,\n environment: {\n ...configuredRuntime.environment,\n ...(request.environment ?? {}),\n },\n connections: {\n ...configuredRuntime.connections,\n ...(request.connections ?? {}),\n },\n };\n await validateProjectActionRunSetup(projectRoot, catalogAction.setupRequirements, resolvedRequest);\n const runId = request.runId?.trim() || randomUUID();\n const actionOutputDirectory = path.resolve(\n request.outputDirectory ?? path.join(projectRoot, \".openpond\", \"outputs\", runId),\n );\n assertWithinProject(projectRoot, actionOutputDirectory, \"Project Action output directory\");\n await fs.mkdir(actionOutputDirectory, { recursive: true });\n const release = await acquireLocalActionSlot(\n `${projectRoot}\\0${request.actionId}`,\n catalogAction.implementation.concurrency,\n resolvedRequest.signal,\n );\n const responseFile = path.join(built.outputDirectory, `.run-${randomUUID()}.json`);\n const startedAt = Date.now();\n let childResult: Awaited<ReturnType<typeof executeChild>>;\n let payload: {\n ok: true;\n output: TOutput;\n traces: ProjectActionRunResult[\"traces\"];\n outputs: ProjectActionRunResult[\"outputs\"];\n };\n try {\n childResult = await executeChild({\n runnerPath: built.runnerPath,\n cwd: projectRoot,\n signal: resolvedRequest.signal,\n request: {\n actionId: request.actionId,\n input: resolvedRequest.input ?? {},\n runId,\n idempotencyKey: resolvedRequest.idempotencyKey ?? null,\n timeoutMs: resolvedRequest.timeoutMs,\n projectRoot,\n outputDirectory: actionOutputDirectory,\n responseFile,\n environment: resolvedRequest.environment ?? {},\n connections: resolvedRequest.connections ?? {},\n },\n });\n payload = JSON.parse(await fs.readFile(responseFile, \"utf8\")) as typeof payload;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(redactRuntimeValues(message, resolvedRequest));\n } finally {\n await fs.rm(responseFile, { force: true }).catch(() => undefined);\n release();\n }\n return {\n runId,\n actionId: request.actionId,\n status: \"succeeded\",\n output: payload.output,\n stdout: redactRuntimeValues(childResult.stdout, resolvedRequest),\n stderr: redactRuntimeValues(childResult.stderr, resolvedRequest),\n traces: redactRuntimeValue(payload.traces, resolvedRequest),\n outputs: redactRuntimeValue(payload.outputs, resolvedRequest),\n outputDirectory: actionOutputDirectory,\n durationMs: Date.now() - startedAt,\n } satisfies ProjectActionRunResult<TOutput>;\n },\n };\n}\n\nasync function acquireLocalActionSlot(\n key: string,\n limit: number | null,\n signal?: AbortSignal,\n): Promise<() => void> {\n if (limit === null) return () => undefined;\n const state = localConcurrency.get(key) ?? { active: 0, waiting: [] };\n localConcurrency.set(key, state);\n if (state.active >= limit) {\n await new Promise<void>((resolve, reject) => {\n const resume = () => {\n signal?.removeEventListener(\"abort\", abort);\n resolve();\n };\n const abort = () => {\n const index = state.waiting.indexOf(resume);\n if (index >= 0) state.waiting.splice(index, 1);\n reject(signal?.reason instanceof Error ? signal.reason : new Error(\"Project Action was cancelled.\"));\n };\n if (signal?.aborted) {\n abort();\n return;\n }\n state.waiting.push(resume);\n signal?.addEventListener(\"abort\", abort, { once: true });\n });\n } else {\n state.active += 1;\n }\n let released = false;\n return () => {\n if (released) return;\n released = true;\n const next = state.waiting.shift();\n if (next) {\n next();\n return;\n }\n state.active -= 1;\n if (state.active === 0 && state.waiting.length === 0) localConcurrency.delete(key);\n };\n}\n\nasync function loadBuild(\n projectRoot: string,\n outputDirectory: string,\n): Promise<ProjectActionBuildResult | null> {\n const manifestPath = path.join(outputDirectory, \"build-manifest.json\");\n const registryPath = path.join(outputDirectory, \"action-registry.json\");\n const [manifestText, registryText] = await Promise.all([\n fs.readFile(manifestPath, \"utf8\").catch(() => null),\n fs.readFile(registryPath, \"utf8\").catch(() => null),\n ]);\n if (!manifestText || !registryText) return null;\n const manifest = JSON.parse(manifestText) as ProjectActionBuildResult[\"manifest\"];\n const registry = JSON.parse(registryText) as ProjectActionRegistry;\n return {\n projectRoot,\n outputDirectory,\n bundlePath: path.join(outputDirectory, manifest.bundleFile),\n runnerPath: path.join(outputDirectory, manifest.runnerFile),\n registryPath,\n manifestPath,\n registry,\n manifest,\n };\n}\n\nfunction redactRuntimeValues(value: string, request: ProjectActionRunRequest): string {\n let redacted = value;\n for (const secret of runtimeStringValues(request)) {\n if (secret.length >= 4) redacted = redacted.split(secret).join(\"[REDACTED]\");\n }\n return redacted;\n}\n\nfunction redactRuntimeValue<T>(value: T, request: ProjectActionRunRequest): T {\n const serialized = JSON.stringify(value);\n return JSON.parse(redactRuntimeValues(serialized, request)) as T;\n}\n\nfunction runtimeStringValues(request: ProjectActionRunRequest): string[] {\n const values = new Set<string>(Object.values(request.environment ?? {}));\n const visit = (value: unknown) => {\n if (typeof value === \"string\") values.add(value);\n else if (Array.isArray(value)) value.forEach(visit);\n else if (value && typeof value === \"object\") Object.values(value).forEach(visit);\n };\n visit(request.connections ?? {});\n return [...values].filter(Boolean).sort((left, right) => right.length - left.length);\n}\n\nfunction executeChild(input: {\n runnerPath: string;\n cwd: string;\n signal?: AbortSignal;\n request: Record<string, unknown>;\n}): Promise<{ stdout: string; stderr: string }> {\n return new Promise((resolve, reject) => {\n if (input.signal?.aborted) {\n reject(input.signal.reason instanceof Error ? input.signal.reason : new Error(\"Project Action was cancelled.\"));\n return;\n }\n let requestJson: string;\n try {\n requestJson = JSON.stringify(input.request);\n } catch (error) {\n reject(new Error(`Project Action request is not serializable: ${error instanceof Error ? error.message : String(error)}`));\n return;\n }\n const child = spawn(process.execPath, [input.runnerPath], {\n cwd: input.cwd,\n env: minimalEnvironment(),\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n let stdout = \"\";\n let stderr = \"\";\n child.stdout.setEncoding(\"utf8\");\n child.stderr.setEncoding(\"utf8\");\n child.stdout.on(\"data\", (chunk: string) => { stdout += chunk; });\n child.stderr.on(\"data\", (chunk: string) => { stderr += chunk; });\n const abort = () => child.kill(\"SIGTERM\");\n input.signal?.addEventListener(\"abort\", abort, { once: true });\n child.once(\"error\", reject);\n child.once(\"close\", (code, signal) => {\n input.signal?.removeEventListener(\"abort\", abort);\n if (input.signal?.aborted) {\n reject(input.signal.reason instanceof Error ? input.signal.reason : new Error(\"Project Action was cancelled.\"));\n return;\n }\n if (code !== 0) {\n reject(new Error(`Project Action process failed (${code ?? signal ?? \"unknown\"}): ${stderr.trim() || stdout.trim()}`));\n return;\n }\n resolve({ stdout, stderr });\n });\n child.stdin.end(requestJson);\n });\n}\n\nfunction assertWithinProject(projectRoot: string, target: string, label: string): void {\n const relative = path.relative(projectRoot, target);\n if (relative.startsWith(\"..\") || path.isAbsolute(relative)) {\n throw new Error(`${label} must stay inside the Project root.`);\n }\n}\n\nfunction minimalEnvironment(): NodeJS.ProcessEnv {\n const env: NodeJS.ProcessEnv = {};\n for (const name of [\"PATH\", \"SystemRoot\", \"WINDIR\", \"TMPDIR\", \"TEMP\", \"TMP\"]) {\n if (process.env[name] !== undefined) env[name] = process.env[name];\n }\n return env;\n}\n\nexport { buildProjectActions } from \"./build.js\";\nexport {\n loadProjectActionConfiguration,\n PROJECT_ACTION_CONFIG_PATH,\n resolveProjectActionRuntime,\n} from \"./configuration.js\";\nexport type {\n LocalProjectActionRunner,\n ProjectActionBuildManifest,\n ProjectActionBuildResult,\n ProjectActionCatalogEntry,\n ProjectActionRegistry,\n ProjectActionRunRequest,\n ProjectActionRunResult,\n ProjectActionRunnerOptions,\n} from \"./types.js\";\n","import { promises as fs } from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\n\nimport { build } from \"esbuild\";\n\nimport { collectProjectActions, createProjectActionRegistry } from \"./catalog.js\";\nimport { loadProjectActionConfiguration } from \"./configuration.js\";\nimport { discoverProjectActionFiles } from \"./discovery.js\";\nimport { canonicalJson, sha256 } from \"./hash.js\";\nimport { validateProjectActionStaticSetup } from \"./setup.js\";\nimport type {\n ProjectActionBuildManifest,\n ProjectActionBuildResult,\n ProjectActionDefinition,\n} from \"./types.js\";\n\nexport const DEFAULT_PROJECT_ACTION_OUTPUT_DIRECTORY = \".openpond/actions\";\n\nexport async function buildProjectActions(input: {\n projectRoot: string;\n sourceDirectory?: string;\n outputDirectory?: string;\n}): Promise<ProjectActionBuildResult> {\n const configuration = await loadProjectActionConfiguration(input.projectRoot);\n const discovered = await discoverProjectActionFiles({\n projectRoot: input.projectRoot,\n sourceDirectory: input.sourceDirectory ?? configuration.sourceDirectory,\n });\n const outputDirectory = path.resolve(\n discovered.projectRoot,\n input.outputDirectory ?? configuration.outputDirectory ?? DEFAULT_PROJECT_ACTION_OUTPUT_DIRECTORY,\n );\n assertWithinProject(discovered.projectRoot, outputDirectory);\n await fs.mkdir(outputDirectory, { recursive: true });\n\n const entryPath = path.join(outputDirectory, \"entry.mjs\");\n const bundlePath = path.join(outputDirectory, \"bundle.mjs\");\n const runnerPath = path.join(outputDirectory, \"runner.mjs\");\n const registryPath = path.join(outputDirectory, \"action-registry.json\");\n const manifestPath = path.join(outputDirectory, \"build-manifest.json\");\n const imports = discovered.files.map((file, index) => {\n const relative = path.relative(outputDirectory, path.join(discovered.projectRoot, file)).split(path.sep).join(\"/\");\n const specifier = relative.startsWith(\".\") ? relative : `./${relative}`;\n return `import * as actionModule${index} from ${JSON.stringify(specifier)};`;\n });\n const modules = discovered.files.map((_file, index) => `actionModule${index}`).join(\", \");\n await fs.writeFile(\n entryPath,\n [\n ...imports,\n `export const projectActionModules = [${modules}];`,\n \"export default projectActionModules;\",\n \"\",\n ].join(\"\\n\"),\n \"utf8\",\n );\n await build({\n entryPoints: [entryPath],\n outfile: bundlePath,\n bundle: true,\n platform: \"node\",\n format: \"esm\",\n target: \"node22.14\",\n sourcemap: false,\n legalComments: \"none\",\n logLevel: \"silent\",\n nodePaths: dependencySearchPaths(discovered.projectRoot),\n });\n const cacheKey = `openpond_action_build=${Date.now()}_${Math.random().toString(16).slice(2)}`;\n const loaded = await import(`${pathToFileURL(bundlePath).href}?${cacheKey}`) as {\n projectActionModules?: unknown[];\n default?: unknown[];\n };\n const actions = collectProjectActions(loaded.projectActionModules ?? loaded.default ?? []);\n for (const action of actions) {\n await validateProjectActionStaticSetup(discovered.projectRoot, action.setup);\n }\n const registry = createProjectActionRegistry(actions);\n await fs.writeFile(registryPath, canonicalJson(registry), \"utf8\");\n await fs.writeFile(runnerPath, runtimeSource(), { encoding: \"utf8\", mode: 0o755 });\n\n const bundleHash = sha256(await fs.readFile(bundlePath));\n const registryHash = sha256(canonicalJson(registry));\n const manifest: ProjectActionBuildManifest = {\n schemaVersion: \"openpond.projectActionBuild.v1\",\n sourceDirectory: path.relative(discovered.projectRoot, discovered.sourceRoot).split(path.sep).join(\"/\"),\n sourceFiles: discovered.files,\n bundleFile: path.basename(bundlePath),\n runnerFile: path.basename(runnerPath),\n registryFile: path.basename(registryPath),\n bundleHash,\n registryHash,\n };\n await fs.writeFile(manifestPath, canonicalJson(manifest), \"utf8\");\n await fs.rm(entryPath, { force: true });\n return {\n projectRoot: discovered.projectRoot,\n outputDirectory,\n bundlePath,\n runnerPath,\n registryPath,\n manifestPath,\n registry,\n manifest,\n };\n}\n\nfunction dependencySearchPaths(projectRoot: string): string[] {\n const candidates: string[] = [];\n let current = projectRoot;\n while (true) {\n candidates.push(path.join(current, \"node_modules\"));\n const parent = path.dirname(current);\n if (parent === current) break;\n current = parent;\n }\n candidates.push(path.resolve(path.dirname(fileURLToPath(import.meta.url)), \"../../../node_modules\"));\n return [...new Set(candidates)];\n}\n\nexport async function loadBuiltProjectActions(\n bundlePath: string,\n): Promise<ProjectActionDefinition[]> {\n const stats = await fs.stat(bundlePath).catch(() => null);\n if (!stats?.isFile()) throw new Error(`Project Action bundle does not exist: ${bundlePath}`);\n const loaded = await import(`${pathToFileURL(bundlePath).href}?openpond_action_load=${Date.now()}`) as {\n projectActionModules?: unknown[];\n default?: unknown[];\n };\n return collectProjectActions(loaded.projectActionModules ?? loaded.default ?? []);\n}\n\nfunction assertWithinProject(projectRoot: string, target: string): void {\n const relative = path.relative(projectRoot, target);\n if (relative.startsWith(\"..\") || path.isAbsolute(relative)) {\n throw new Error(\"Project Action output directory must stay inside the Project root.\");\n }\n}\n\nfunction runtimeSource(): string {\n return `#!/usr/bin/env node\nimport { promises as fs } from \"node:fs\";\nimport { stdin } from \"node:process\";\nimport path from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\n\nlet requestText = \"\";\nstdin.setEncoding(\"utf8\");\nfor await (const chunk of stdin) requestText += chunk;\nconst request = JSON.parse(requestText);\nconst bundlePath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), \"bundle.mjs\");\nconst loaded = await import(pathToFileURL(bundlePath).href);\nconst values = [];\nconst seen = new Set();\nconst visit = (value) => {\n if (seen.has(value)) return;\n if (value && (typeof value === \"object\" || typeof value === \"function\")) seen.add(value);\n if (value?.kind === \"openpond-project-action\" && typeof value.run === \"function\") { values.push(value); return; }\n if (Array.isArray(value)) { value.forEach(visit); return; }\n if (value && typeof value === \"object\") Object.values(value).forEach(visit);\n};\n(loaded.projectActionModules ?? loaded.default ?? []).forEach(visit);\nconst action = values.find((candidate) => candidate.id === request.actionId);\nif (!action) throw new Error(\\`Unknown Project Action: \\${request.actionId}\\`);\nconst controller = new AbortController();\nconst timeoutMs = Math.min(request.timeoutMs ?? action.timeoutMs, action.timeoutMs);\nconst timer = setTimeout(() => controller.abort(new Error(\\`Project Action timed out after \\${timeoutMs}ms.\\`)), timeoutMs);\nconst traces = [];\nconst outputs = [];\nconst env = request.environment ?? {};\nconst connections = request.connections ?? {};\nconst context = {\n runId: request.runId,\n actionId: action.id,\n idempotencyKey: request.idempotencyKey ?? null,\n projectRoot: request.projectRoot,\n outputDirectory: request.outputDirectory,\n signal: controller.signal,\n env(name) { return Object.prototype.hasOwnProperty.call(env, name) ? env[name] : undefined; },\n connection(name) {\n if (!Object.prototype.hasOwnProperty.call(connections, name)) throw new Error(\\`Project Action connection is not configured: \\${name}\\`);\n return connections[name];\n },\n trace(name, payload) { traces.push({ name, ...(payload ? { payload } : {}), timestamp: new Date().toISOString() }); },\n output(value) {\n if (!value || typeof value.path !== \"string\" || !value.path.trim()) throw new Error(\"Project Action output requires a path.\");\n const outputPath = path.resolve(request.outputDirectory, value.path);\n const relative = path.relative(request.outputDirectory, outputPath);\n if (relative.startsWith(\"..\") || path.isAbsolute(relative)) throw new Error(\"Project Action output must stay inside the run output directory.\");\n outputs.push({ ...value, path: relative.split(path.sep).join(\"/\") });\n },\n};\ntry {\n const input = action.inputSchema.parse(request.input ?? {});\n const result = await Promise.race([\n Promise.resolve(action.run(context, input)),\n new Promise((_, reject) => controller.signal.addEventListener(\"abort\", () => reject(controller.signal.reason), { once: true })),\n ]);\n const output = action.outputSchema.parse(result);\n for (const artifact of outputs) {\n const stats = await fs.stat(path.resolve(request.outputDirectory, artifact.path)).catch(() => null);\n if (!stats?.isFile()) throw new Error(\\`Project Action output does not exist: \\${artifact.path}\\`);\n }\n await fs.writeFile(request.responseFile, JSON.stringify({ ok: true, output, traces, outputs }), \"utf8\");\n} finally {\n clearTimeout(timer);\n}\n`;\n}\n","import { z } from \"zod\";\n\nimport type { ProjectActionSchema } from \"./types.js\";\n\nexport function projectActionJsonSchema(schema: ProjectActionSchema): Record<string, unknown> {\n return z.toJSONSchema(schema, { unrepresentable: \"any\" }) as Record<string, unknown>;\n}\n\nexport function parseProjectActionValue(schema: ProjectActionSchema, value: unknown): unknown {\n return schema.parse(value);\n}\n","import { isProjectActionDefinition } from \"./define-action.js\";\nimport { projectActionJsonSchema } from \"./schema.js\";\nimport type {\n ProjectActionCatalogEntry,\n ProjectActionDefinition,\n ProjectActionRegistry,\n} from \"./types.js\";\n\nexport function collectProjectActions(modules: unknown[]): ProjectActionDefinition[] {\n const actions: ProjectActionDefinition[] = [];\n const seenObjects = new Set<unknown>();\n const visit = (value: unknown) => {\n if (seenObjects.has(value)) return;\n if (value && (typeof value === \"object\" || typeof value === \"function\")) seenObjects.add(value);\n if (isProjectActionDefinition(value)) {\n actions.push(value);\n return;\n }\n if (Array.isArray(value)) {\n value.forEach(visit);\n return;\n }\n if (value && typeof value === \"object\") Object.values(value).forEach(visit);\n };\n modules.forEach(visit);\n const byId = new Map<string, ProjectActionDefinition>();\n for (const action of actions) {\n if (byId.has(action.id)) throw new Error(`Duplicate Project Action id: ${action.id}`);\n byId.set(action.id, action);\n }\n return [...byId.values()].sort((left, right) => left.id.localeCompare(right.id));\n}\n\nexport function createProjectActionRegistry(\n actions: readonly ProjectActionDefinition[],\n): ProjectActionRegistry {\n return {\n schemaVersion: \"openpond.projectActionRegistry.v1\",\n actions: actions.map(toCatalogEntry),\n };\n}\n\nfunction toCatalogEntry(action: ProjectActionDefinition): ProjectActionCatalogEntry {\n return {\n id: action.id,\n sourceActionId: action.id,\n name: action.id,\n label: action.label,\n description: action.description,\n visibility: \"default\",\n inputSchema: projectActionJsonSchema(action.inputSchema),\n outputSchema: projectActionJsonSchema(action.outputSchema),\n approvalPolicy: {\n ...action.approval,\n required: action.approval.mode === \"always\" || action.approval.mode === \"sensitive\" ||\n (action.approval.mode === \"writes\" && action.behavior === \"write\"),\n risk: action.behavior,\n },\n artifactPolicy: {\n outputArtifacts: [],\n persistRunSummary: true,\n persistTrace: true,\n },\n setupRequirements: [...action.setup],\n mcp: { enabled: false },\n schedulePolicy: { enabled: false, allowAdHoc: true },\n trace: { name: action.id, namespace: \"project-actions\" },\n implementation: {\n type: \"openpond-project-action\",\n actionId: action.id,\n behavior: action.behavior,\n timeoutMs: action.timeoutMs,\n concurrency: action.concurrency,\n },\n invokesModel: action.invokesModel,\n };\n}\n","import { promises as fs } from \"node:fs\";\nimport path from \"node:path\";\n\nconst ACTION_FILE = /\\.(?:[cm]?[jt]s)$/i;\nconst IGNORED_FILE = /(?:\\.d\\.ts|\\.test\\.[cm]?[jt]s|\\.spec\\.[cm]?[jt]s)$/i;\n\nexport async function discoverProjectActionFiles(input: {\n projectRoot: string;\n sourceDirectory?: string;\n}): Promise<{ projectRoot: string; sourceRoot: string; files: string[] }> {\n const projectRoot = path.resolve(input.projectRoot);\n const sourceRoot = path.resolve(projectRoot, input.sourceDirectory ?? \"openpond/actions\");\n if (!isWithin(projectRoot, sourceRoot)) {\n throw new Error(\"Project Action source directory must stay inside the Project root.\");\n }\n const stats = await fs.stat(sourceRoot).catch(() => null);\n if (!stats?.isDirectory()) {\n throw new Error(`Project Action source directory does not exist: ${sourceRoot}`);\n }\n const files = await walk(sourceRoot);\n const actions = files\n .filter((file) => ACTION_FILE.test(file) && !IGNORED_FILE.test(file))\n .map((file) => path.relative(projectRoot, file).split(path.sep).join(\"/\"))\n .sort();\n if (actions.length === 0) {\n throw new Error(`No Project Action files were found under ${sourceRoot}.`);\n }\n return { projectRoot, sourceRoot, files: actions };\n}\n\nasync function walk(directory: string): Promise<string[]> {\n const entries = await fs.readdir(directory, { withFileTypes: true });\n const files: string[] = [];\n for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {\n if (entry.name.startsWith(\".\") || entry.name === \"node_modules\") continue;\n const target = path.join(directory, entry.name);\n if (entry.isDirectory()) files.push(...(await walk(target)));\n else if (entry.isFile()) files.push(target);\n }\n return files;\n}\n\nfunction isWithin(root: string, target: string): boolean {\n const relative = path.relative(root, target);\n return relative === \"\" || (!relative.startsWith(\"..\") && !path.isAbsolute(relative));\n}\n","import { createHash } from \"node:crypto\";\n\nexport function sha256(value: string | Uint8Array): string {\n return createHash(\"sha256\").update(value).digest(\"hex\");\n}\n\nexport function canonicalJson(value: unknown): string {\n return `${JSON.stringify(sortValue(value), null, 2)}\\n`;\n}\n\nfunction sortValue(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(sortValue);\n if (!value || typeof value !== \"object\") return value;\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, child]) => [key, sortValue(child)]),\n );\n}\n","import { promises as fs } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\n\nimport type {\n ProjectActionRunRequest,\n ProjectActionSetupRequirement,\n} from \"./types.js\";\n\nexport async function validateProjectActionStaticSetup(\n projectRoot: string,\n requirements: readonly ProjectActionSetupRequirement[],\n): Promise<void> {\n for (const requirement of requirements) {\n if (requirement.required === false) continue;\n if (requirement.kind === \"package\") {\n try {\n createRequire(path.join(projectRoot, \"package.json\")).resolve(requirement.name);\n } catch {\n throw new Error(`Project Action package is not installed: ${requirement.name}`);\n }\n }\n if (requirement.kind === \"native_tool\" && !(await executableExists(requirement.name))) {\n throw new Error(`Project Action native tool is not installed: ${requirement.name}`);\n }\n }\n}\n\nexport async function validateProjectActionRunSetup(\n projectRoot: string,\n requirements: readonly ProjectActionSetupRequirement[],\n request: ProjectActionRunRequest,\n): Promise<void> {\n await validateProjectActionStaticSetup(projectRoot, requirements);\n for (const requirement of requirements) {\n if (requirement.required === false) continue;\n if (requirement.kind === \"connection\" && !(requirement.name in (request.connections ?? {}))) {\n throw new Error(`Project Action connection is not configured: ${requirement.name}`);\n }\n if (requirement.kind === \"env\" && !(requirement.name in (request.environment ?? {}))) {\n throw new Error(`Project Action environment value is not configured: ${requirement.name}`);\n }\n }\n}\n\nasync function executableExists(name: string): Promise<boolean> {\n if (!name.trim() || name.includes(\"/\") || name.includes(\"\\\\\")) return false;\n for (const directory of (process.env.PATH ?? \"\").split(path.delimiter).filter(Boolean)) {\n const candidates = process.platform === \"win32\"\n ? (process.env.PATHEXT ?? \".EXE;.CMD;.BAT;.COM\").split(\";\").map((extension) => path.join(directory, `${name}${extension}`))\n : [path.join(directory, name)];\n for (const candidate of candidates) {\n if (await fs.access(candidate).then(() => true).catch(() => false)) return true;\n }\n }\n return false;\n}\n"],"mappings":"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","names":["fs","path","fs","path","fs","path","path","fs","path","path","assertWithinProject","fs"]}
package/dist/actions.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  defineAction,
3
3
  isProjectActionDefinition
4
- } from "./chunk-P27DQ65Z.js";
4
+ } from "./chunk-OVGDDKO2.js";
5
+ import "./chunk-YLJ4XMA6.js";
5
6
  export {
6
7
  defineAction,
7
8
  isProjectActionDefinition
@@ -1,7 +1 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -12,18 +12,19 @@ import {
12
12
  sealAdvancedRefinerEvaluationPin,
13
13
  sealAdvancedRefinerReviewReceipt,
14
14
  verifyAdvancedRefinerEvaluationPin
15
- } from "./chunk-DG5CRENU.js";
16
- import "./chunk-D4WTE6ZA.js";
17
- import "./chunk-YCQVVFE5.js";
18
- import "./chunk-KAE7AMYE.js";
19
- import "./chunk-B7VYE7YQ.js";
20
- import "./chunk-T4APHDES.js";
21
- import "./chunk-L5PQPAU6.js";
22
- import "./chunk-7WUJBFCH.js";
23
- import "./chunk-CK3ONRRC.js";
24
- import "./chunk-TCHAWJMB.js";
25
- import "./chunk-3KXDH6OB.js";
26
- import "./chunk-COPVBJPL.js";
15
+ } from "./chunk-VHGC44HA.js";
16
+ import "./chunk-XON75UFN.js";
17
+ import "./chunk-3B5KSH3V.js";
18
+ import "./chunk-H3367ISL.js";
19
+ import "./chunk-53LLNDXF.js";
20
+ import "./chunk-O6FKHAWN.js";
21
+ import "./chunk-QRS7Y3EM.js";
22
+ import "./chunk-VN5V2E2S.js";
23
+ import "./chunk-U7XWIOSB.js";
24
+ import "./chunk-HGXVOFCL.js";
25
+ import "./chunk-CL3IOOVL.js";
26
+ import "./chunk-H3JZ3P5T.js";
27
+ import "./chunk-YLJ4XMA6.js";
27
28
  export {
28
29
  AdvancedRefinerEvaluationAccountingSchema,
29
30
  AdvancedRefinerEvaluationCommandSchema,
@@ -1,7 +1 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -5,14 +5,15 @@ import {
5
5
  CandidateEvaluationPreparationSchema,
6
6
  CandidateEvaluationRequestSchema,
7
7
  createCandidateEvaluationClient
8
- } from "./chunk-DBRRQASP.js";
9
- import "./chunk-YSKUXQ2N.js";
10
- import "./chunk-L5PQPAU6.js";
11
- import "./chunk-7WUJBFCH.js";
12
- import "./chunk-CK3ONRRC.js";
13
- import "./chunk-TCHAWJMB.js";
14
- import "./chunk-3KXDH6OB.js";
15
- import "./chunk-COPVBJPL.js";
8
+ } from "./chunk-ETX25FTB.js";
9
+ import "./chunk-WMIKJGXW.js";
10
+ import "./chunk-QRS7Y3EM.js";
11
+ import "./chunk-VN5V2E2S.js";
12
+ import "./chunk-U7XWIOSB.js";
13
+ import "./chunk-HGXVOFCL.js";
14
+ import "./chunk-CL3IOOVL.js";
15
+ import "./chunk-H3JZ3P5T.js";
16
+ import "./chunk-YLJ4XMA6.js";
16
17
  export {
17
18
  CandidateEvaluationControlSchema,
18
19
  CandidateEvaluationOptionSchema,
@@ -1,7 +1 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -8,14 +8,14 @@ import {
8
8
  ConnectedStartingAssetsRequestSchema,
9
9
  DatasetWorkspaceReceiptSchema,
10
10
  verifyConnectedStartingAssetsReceipt
11
- } from "./chunk-7GYXC2AI.js";
11
+ } from "./chunk-EFUT3XKW.js";
12
12
  import {
13
13
  fetchConnectedJson
14
- } from "./chunk-T4APHDES.js";
14
+ } from "./chunk-O6FKHAWN.js";
15
15
  import {
16
16
  ImmutableReleaseRefSchema,
17
17
  contentHash
18
- } from "./chunk-COPVBJPL.js";
18
+ } from "./chunk-H3JZ3P5T.js";
19
19
 
20
20
  // src/connected-recorded-execution.ts
21
21
  import { z } from "zod";
@@ -650,4 +650,4 @@ export {
650
650
  summarizeCollectorCoverage2 as summarizeCollectorCoverage,
651
651
  hashCollectorEligibleBoundaries
652
652
  };
653
- //# sourceMappingURL=chunk-MLFKQ7E7.js.map
653
+ //# sourceMappingURL=chunk-24N6A6SF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/connected-recorded-execution.ts","../src/connected-evidence-client.ts","../src/connected-dataset-publication.ts","../src/connected-collection-status.ts","../src/connected-sync.ts","../src/connected-evidence.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { ImmutableReleaseRefSchema, contentHash } from \"@openpond/harness\";\nimport { ExperimentManifestSchema } from \"@openpond/evals/experiments\";\nimport { TaskRecordSchema } from \"@openpond/evals/tasksets\";\nimport { ConnectedCaseRefSchema } from \"./connected-evidence-contracts.js\";\n\nconst Id = z.string().min(1).max(200), Hash = z.string().regex(/^[a-f0-9]{64}$/);\nexport const ConnectedRecordedExecutionRequestSchema = z.object({ operationId: Id, name: z.string().trim().min(1).max(500),\n projectId: Id, dataset: ImmutableReleaseRefSchema.extend({ revision: z.number().int().positive() }).strict(),\n caseIds: z.array(Id).min(1).max(10_000) }).strict().superRefine((value, ctx) => {\n if (new Set(value.caseIds).size !== value.caseIds.length) ctx.addIssue({ code: \"custom\", message: \"Select each case once.\" });\n});\nexport const ConnectedRecordedSourceSchema = ConnectedCaseRefSchema.extend({ inputHash: Hash, outputHash: Hash.nullable(),\n task: TaskRecordSchema, taskHash: Hash }).strict();\nexport const ConnectedRecordedExecutionSchema = z.object({ schemaVersion: z.literal(\"openpond.connectedRecordedExecution.v1\"),\n id: Id, teamId: Id, ownerUserId: Id, request: ConnectedRecordedExecutionRequestSchema,\n manifest: ExperimentManifestSchema, sources: z.array(ConnectedRecordedSourceSchema).min(1).max(10_000), contentHash: Hash }).strict();\nexport type ConnectedRecordedExecution = z.infer<typeof ConnectedRecordedExecutionSchema>;\nexport function verifyConnectedRecordedExecution(raw: unknown) {\n const value = ConnectedRecordedExecutionSchema.parse(raw), { contentHash: actual, ...body } = value;\n const { contentHash: manifestHash, ...manifest } = value.manifest;\n if (contentHash(body) !== actual || contentHash(manifest) !== manifestHash || value.manifest.teamId !== value.teamId\n || value.manifest.id !== value.id || value.manifest.operationId !== value.request.operationId\n || contentHash(value.manifest.dataset) !== contentHash(value.request.dataset)\n || value.sources.length !== value.request.caseIds.length || value.sources.length !== value.manifest.population.length\n || value.sources.some((source, index) => source.taskHash !== contentHash(source.task) || source.task.id !== value.request.caseIds[index]\n || source.boundaryId !== source.task.id || value.manifest.population[index]?.caseId !== source.boundaryId))\n throw new Error(\"Recorded execution identity or population integrity failed.\");\n return value;\n}\n\nexport const ConnectedRecordedListRequestSchema = z.object({ projectId: Id.optional(), cursor: Id.optional(), limit: z.number().int().min(1).max(50).default(20) }).strict();\nexport const ConnectedRecordedSummarySchema = z.object({ id: Id, teamId: Id, ownerUserId: Id, projectId: Id,\n name: z.string().min(1).max(500), dataset: ConnectedRecordedExecutionRequestSchema.shape.dataset,\n manifestHash: Hash, contentHash: Hash, caseCount: z.number().int().min(1).max(10_000), createdAt: z.string().datetime() }).strict();\nexport const ConnectedRecordedListSchema = z.object({ teamId: Id, items: z.array(ConnectedRecordedSummarySchema).max(50), nextCursor: Id.nullable() }).strict();\n","import { z } from \"zod\";\nimport { contentHash } from \"@openpond/harness\";\nimport { ConnectedBoundarySchema, ConnectedEventSchema, ConnectedUsageSummarySchema } from \"@openpond/evals/connected-evidence\";\nimport { ConnectedCaptureRequestSchema, ConnectedCaseRefSchema, ConnectedSourceSummarySchema,\n AgentImportUploadPartSchema, AgentImportPreviewRequestSchema, AgentImportCommitRequestSchema } from \"./connected-evidence-contracts.js\";\nimport { ConnectedRecordedExecutionRequestSchema, ConnectedRecordedListSchema, ConnectedRecordedListRequestSchema, verifyConnectedRecordedExecution } from \"./connected-recorded-execution.js\";\nimport { ConnectedDatasetPublicationSchema, type ConnectedDatasetPublication } from \"./connected-dataset-publication.js\";\nimport { DatasetWorkspaceReceiptSchema } from \"./dataset-workspace-contracts.js\";\nimport { fetchConnectedJson } from \"./connected-evidence-http.js\";\nimport { ConnectedCollectionStatusSchema } from \"./connected-collection-status.js\";\nimport { ConnectedStartingAssetsRequestSchema, verifyConnectedStartingAssetsReceipt } from \"./connected-starting-assets.js\";\n\nconst Id = z.string().min(1).max(500), Hash = z.string().regex(/^[a-f0-9]{64}$/);\nexport const ConnectedCollectionSchema = z.object({ teamId: Id, projectId: Id.nullable(), status: z.enum([\"active\", \"paused\", \"archived\"]), revision: z.number().int().nonnegative() }).strict();\nexport const ConnectedCaptureReceiptSchema = z.object({ teamId: Id, operationId: Id, projectId: Id.nullable(),\n outcomes: z.array(z.object({ conversationId: Id, state: z.enum([\"captured\", \"unchanged\", \"pending\", \"paused\", \"excluded\", \"failed\"]),\n sourceId: Id.optional(), snapshotHash: Hash.optional(), reason: z.string().optional() }).strict()).max(50), nextCursor: Id.nullable() }).strict();\nexport const ConnectedCaseReadbackSchema = z.object({ teamId: Id, ref: ConnectedCaseRefSchema, origin: ConnectedSourceSummarySchema.shape.source,\n sessionId: Id, projectId: Id, capturedAt: z.string().datetime(), unmappedEvidence: z.object({ count: z.number().int().nonnegative().max(100_000), contentHash: Hash }).strict(),\n evidence: z.object({ input: z.array(ConnectedEventSchema), observed: z.array(ConnectedEventSchema), answer: z.json(), boundary: ConnectedBoundarySchema }).strict() }).strict();\nexport const ConnectedUnmappedEventsSchema = z.object({ teamId: Id, sourceId: Id, snapshotHash: Hash, contentHash: Hash,\n count: z.number().int().nonnegative(), offset: z.number().int().nonnegative(), events: z.array(ConnectedEventSchema).max(50), nextOffset: z.number().int().nonnegative().nullable() }).strict();\nexport const AgentImportPreviewSchema = z.object({ teamId: Id, source: AgentImportPreviewRequestSchema.shape.source, sourceHash: Hash, previewHash: Hash,\n destination: AgentImportPreviewRequestSchema.shape.destination, issues: z.array(z.object({ file: z.string(), message: z.string() }).strict()).max(100),\n sessions: z.array(z.object({ sessionHash: Hash, sessionId: Id, origin: ConnectedSourceSummarySchema.shape.source, exporterVersion: z.string().nullable(),\n eventCount: z.number().int().nonnegative(), boundaries: z.array(z.object({ id: Id, projection: z.enum([\"turn\", \"conversation\"]), answer: z.boolean(),\n process: z.enum([\"retained\", \"partial\", \"absent\"]), terminal: z.enum([\"completed\", \"failed\", \"cancelled\", \"unknown\"]) }).strict()).max(5_001),\n warnings: z.array(z.string()).max(100), sample: z.array(z.object({ role: z.enum([\"user\", \"assistant\", \"system\", \"tool\"]).nullable(), text: z.string().max(4_000) }).strict()).max(3),\n }).strict()).max(1_000) }).strict();\nexport const AgentImportReceiptSchema = z.object({ teamId: Id, operationId: Id, requestHash: Hash, previewHash: Hash, projectId: Id.optional(),\n state: z.enum([\"admitting\", \"publishing\", \"completed\", \"failed\"]), outcomes: z.array(z.object({ sessionHash: Hash, sourceId: Id,\n status: z.enum([\"imported\", \"already_present\"]), datasets: z.array(z.object({ datasetId: Id, revision: z.number().int().positive(), changed: z.boolean() }).strict()).max(2) }).strict()).max(1_000),\n error: z.string().optional() }).strict();\n\nexport class ConnectedEvidenceError extends Error {\n constructor(readonly status: number, readonly code: string, message: string) { super(message); this.name = \"ConnectedEvidenceError\"; }\n}\nexport class ConnectedEvidenceClient {\n private readonly baseUrl: string;\n constructor(private readonly options: { apiKey: string; baseUrl: string; teamId: string; fetch?: typeof fetch }) {\n const url = new URL(options.baseUrl);\n if (![\"http:\", \"https:\"].includes(url.protocol) || url.username || url.password || url.search || url.hash || !options.apiKey.trim() || !options.teamId.trim())\n throw new Error(\"A clean API origin and workspace credentials are required.\");\n this.baseUrl = url.toString().replace(/\\/+$/, \"\");\n }\n async capture(raw: z.input<typeof ConnectedCaptureRequestSchema>, signal?: AbortSignal) {\n const request = ConnectedCaptureRequestSchema.parse(raw), result = ConnectedCaptureReceiptSchema.parse(await this.request(\"/capture\", \"POST\", request, signal));\n this.scope(result.teamId);\n if (result.operationId !== request.operationId || result.outcomes.length > request.limit || request.conversationId && result.outcomes.some(item => item.conversationId !== request.conversationId))\n throw new Error(\"Capture receipt differs from its requested source or operation.\");\n return result;\n }\n async retainStartingAssets(raw: z.input<typeof ConnectedStartingAssetsRequestSchema>, signal?: AbortSignal) {\n const request = ConnectedStartingAssetsRequestSchema.parse(raw);\n const result = verifyConnectedStartingAssetsReceipt(await this.request(\"/starting-assets\", \"POST\", request, signal));\n this.scope(result.teamId);\n if (result.operationId !== request.operationId || result.requestHash !== contentHash(request)\n || contentHash(result.source) !== contentHash(request.source)\n || result.assets.length !== request.proofs.length\n || result.assets.some((asset, index) => asset.path !== request.proofs[index]!.path))\n throw new Error(\"Starting assets differ from the exact source, operation or selected paths.\");\n return result;\n }\n async startingAssets(id: string, signal?: AbortSignal) {\n const result = verifyConnectedStartingAssetsReceipt(await this.request(`/starting-assets/${encodeURIComponent(Id.parse(id))}`, \"GET\", undefined, signal));\n this.scope(result.teamId);\n if (result.id !== id) throw new Error(\"Starting assets identity mismatch.\");\n return result;\n }\n async list(input: { projectId?: string; cursor?: string; limit?: number } = {}, signal?: AbortSignal) {\n const query = z.object({ projectId: Id.optional(), cursor: Id.optional(), limit: z.number().int().min(1).max(50).default(20) }).strict().parse(input);\n const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));\n const page = z.object({ teamId: Id, items: z.array(ConnectedSourceSummarySchema).max(50), nextCursor: Id.nullable() }).strict().parse(await this.request(`?${params}`, \"GET\", undefined, signal));\n this.scope(page.teamId);\n if (page.items.length > query.limit || new Set(page.items.map(item => item.sourceId)).size !== page.items.length || page.nextCursor !== null && page.nextCursor === query.cursor\n || query.projectId && page.items.some(item => item.projectId !== query.projectId)) throw new Error(\"Connected source page differs from its requested scope.\");\n return page;\n }\n async read(raw: z.input<typeof ConnectedCaseRefSchema>, signal?: AbortSignal) {\n const ref = ConnectedCaseRefSchema.parse(raw);\n const result = ConnectedCaseReadbackSchema.parse(await this.request(`/${encodeURIComponent(ref.id)}/cases/${encodeURIComponent(ref.boundaryId)}?snapshotHash=${ref.snapshotHash}&revisionHash=${ref.boundaryRevisionHash}`, \"GET\", undefined, signal));\n this.scope(result.teamId);\n if (contentHash(result.ref) !== contentHash(ref) || result.evidence.boundary.id !== ref.boundaryId || result.evidence.boundary.revisionHash !== ref.boundaryRevisionHash\n || contentHash(result.evidence.input) !== result.evidence.boundary.inputHash || contentHash(result.evidence.observed) !== ref.boundaryRevisionHash\n || result.evidence.boundary.outputHash !== null && contentHash(result.evidence.answer) !== result.evidence.boundary.outputHash)\n throw new Error(\"Connected case readback differs from its exact snapshot or cutoff.\");\n return result;\n }\n async setCollection(paused: boolean, signal?: AbortSignal) {\n const result = ConnectedCollectionSchema.parse(await this.request(\"/collection\", \"PUT\", z.object({ paused: z.boolean() }).strict().parse({ paused }), signal));\n this.scope(result.teamId); return result;\n }\n async collection(signal?: AbortSignal) { const result = ConnectedCollectionSchema.parse(await this.request(\"/collection\", \"GET\", undefined, signal)); this.scope(result.teamId); return result; }\n async collectionStatus(signal?: AbortSignal) {\n const result = ConnectedCollectionStatusSchema.parse(await this.request(\"/collection/status\", \"GET\", undefined, signal));\n this.scope(result.teamId);\n return result;\n }\n async unmappedEvents(input: { id: string; snapshotHash: string; contentHash: string; offset?: number; limit?: number }, signal?: AbortSignal) {\n const request = z.object({ id: Id, snapshotHash: Hash, contentHash: Hash, offset: z.number().int().nonnegative().default(0), limit: z.number().int().min(1).max(50).default(20) }).strict().parse(input);\n const result = ConnectedUnmappedEventsSchema.parse(await this.request(`/${encodeURIComponent(request.id)}/unmapped-events?snapshotHash=${request.snapshotHash}&offset=${request.offset}&limit=${request.limit}`, \"GET\", undefined, signal));\n this.scope(result.teamId);\n if (result.sourceId !== request.id || result.snapshotHash !== request.snapshotHash || result.contentHash !== request.contentHash || result.offset !== request.offset\n || result.events.length > request.limit || result.events.some((event, index) => event.sequence !== request.offset + index)\n || result.nextOffset !== null && result.nextOffset !== request.offset + result.events.length) throw new Error(\"Unmapped source event page differs from its pinned snapshot.\");\n return result;\n }\n async homeSummary(raw: { from: string; to: string; projectId?: string }, signal?: AbortSignal) {\n const querySchema = z.object({ from: z.string().datetime(), to: z.string().datetime(), projectId: Id.optional() }).strict(), query = querySchema.parse(raw);\n const params = new URLSearchParams(Object.entries(query));\n const result = z.object({ teamId: Id, range: querySchema, activity: z.object({ conversations: z.number().int().nonnegative(), turns: z.number().int().nonnegative(),\n chatTurns: z.number().int().nonnegative(), workTurns: z.number().int().nonnegative() }).strict(), accounting: z.object({ contextSnapshots: z.number().int().nonnegative() }).strict(), usage: ConnectedUsageSummarySchema }).strict()\n .parse(await this.request(`/summary?${params}`, \"GET\", undefined, signal));\n this.scope(result.teamId);\n if (contentHash(result.range) !== contentHash(query) || result.activity.chatTurns + result.activity.workTurns !== result.activity.turns) throw new Error(\"Activity summary differs from its requested range.\");\n for (const groups of [result.usage.days, result.usage.modes, result.usage.models]) {\n if (new Set(groups.map(row => row.key)).size !== groups.length) throw new Error(\"Duplicate usage summary group.\");\n for (const key of Object.keys(result.usage.total) as (keyof typeof result.usage.total)[])\n if (groups.reduce((sum, row) => sum + row[key], 0) !== result.usage.total[key]) throw new Error(\"Usage totals differ from their displayed groups.\");\n }\n return result;\n }\n async uploadPart(raw: z.input<typeof AgentImportUploadPartSchema>, signal?: AbortSignal) {\n const body = AgentImportUploadPartSchema.parse(raw), result = z.object({ teamId: Id, hash: Hash, parts: z.number().int(), index: z.number().int() }).strict().parse(await this.request(\"/imports/upload\", \"POST\", body, signal));\n this.scope(result.teamId);\n if (result.hash !== body.hash || result.parts !== body.parts || result.index !== body.index) throw new Error(\"Upload receipt differs from its part identity.\");\n return result;\n }\n async preview(raw: z.input<typeof AgentImportPreviewRequestSchema>, signal?: AbortSignal) {\n const request = AgentImportPreviewRequestSchema.parse(raw), result = AgentImportPreviewSchema.parse(await this.request(\"/imports/preview\", \"POST\", request, signal));\n this.scope(result.teamId);\n if (result.source !== request.source || contentHash(result.destination) !== contentHash(request.destination) || result.sessions.some(session => session.origin !== request.source)\n || new Set(result.sessions.map(session => session.sessionHash)).size !== result.sessions.length) throw new Error(\"Import preview differs from its source or destination.\");\n return result;\n }\n async commit(raw: z.input<typeof AgentImportCommitRequestSchema>, signal?: AbortSignal) {\n const request = AgentImportCommitRequestSchema.parse(raw), result = AgentImportReceiptSchema.parse(await this.request(\"/imports/commit\", \"POST\", request, signal));\n this.scope(result.teamId);\n if (result.operationId !== request.operationId || result.previewHash !== request.previewHash || result.requestHash !== contentHash(request)\n || result.outcomes.some(item => !request.selection.some(selection => selection.sessionHash === item.sessionHash))\n || result.state === \"completed\" && result.outcomes.length !== request.selection.length) throw new Error(\"Import receipt differs from its exact selection or operation.\");\n return result;\n }\n async readImport(operationId: string, signal?: AbortSignal) {\n const id = Id.parse(operationId), result = AgentImportReceiptSchema.parse(await this.request(`/imports/${encodeURIComponent(id)}`, \"GET\", undefined, signal));\n this.scope(result.teamId); if (result.operationId !== id) throw new Error(\"Import identity mismatch.\"); return result;\n }\n async prepareRecorded(raw: z.input<typeof ConnectedRecordedExecutionRequestSchema>, signal?: AbortSignal) {\n const request = ConnectedRecordedExecutionRequestSchema.parse(raw), result = verifyConnectedRecordedExecution(await this.request(\"/recorded-executions\", \"POST\", request, signal));\n this.scope(result.teamId); if (contentHash(result.request) !== contentHash(request)) throw new Error(\"Recorded admission differs from its selected Dataset/cases.\"); return result;\n }\n async listRecordedExecutions(input: z.input<typeof ConnectedRecordedListRequestSchema> = {}, signal?: AbortSignal) {\n const query = ConnectedRecordedListRequestSchema.parse(input);\n const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));\n const page = ConnectedRecordedListSchema.parse(await this.request(`/recorded-executions?${params}`, \"GET\", undefined, signal));\n this.scope(page.teamId);\n if (page.items.length > query.limit || page.items.some((row, index) => row.teamId !== page.teamId || query.projectId && row.projectId !== query.projectId\n || query.cursor && row.id <= query.cursor || index > 0 && row.id <= page.items[index - 1]!.id)\n || page.items.some(row => row.ownerUserId !== page.items[0]?.ownerUserId)\n || page.nextCursor !== null && (query.cursor !== undefined && page.nextCursor <= query.cursor || page.items.length > 0 && page.nextCursor < page.items.at(-1)!.id))\n throw new Error(\"Recorded execution page differs from its requested scope or cursor.\");\n return page;\n }\n async recordedExecution(id: string, signal?: AbortSignal) {\n const result = verifyConnectedRecordedExecution(await this.request(`/recorded-executions/${encodeURIComponent(Id.parse(id))}`, \"GET\", undefined, signal));\n this.scope(result.teamId); if (result.id !== id) throw new Error(\"Recorded execution identity mismatch.\"); return result;\n }\n async publishDataset(input: ConnectedDatasetPublication, signal?: AbortSignal) {\n const request = ConnectedDatasetPublicationSchema.parse(input);\n const result = DatasetWorkspaceReceiptSchema.parse(await this.request(\"/datasets/publish\", \"POST\", request, signal));\n this.scope(result.teamId);\n const frozen = result.workspace.draft.metadata.connectedPublication;\n if (result.datasetId !== request.datasetId || !result.publication || !frozen || typeof frozen !== \"object\" || !(\"requestHash\" in frozen) || frozen.requestHash !== contentHash(request)) throw new Error(\"Published Dataset identity or original selection mismatch.\"); return result;\n }\n async createSelection(input: { operationId: string; projectId: string; name: string; cases: z.input<typeof ConnectedCaseRefSchema>[] }, signal?: AbortSignal) {\n const request = z.object({ operationId: Id.max(240), projectId: Id.max(240), name: z.string().trim().min(1).max(200), cases: z.array(ConnectedCaseRefSchema).min(1).max(500) }).strict().parse(input);\n const result = DatasetWorkspaceReceiptSchema.parse(await this.request(\"/datasets/selection\", \"POST\", request, signal));\n this.scope(result.teamId);\n if (result.originProjectId !== request.projectId || result.workspace.draft.tasks.length !== request.cases.length\n || result.workspace.draft.tasks.some((task, index) => contentHash(task.input && typeof task.input === \"object\" && !Array.isArray(task.input) ? task.input.connectedEvidenceRef : null) !== contentHash(request.cases[index])))\n throw new Error(\"Selected Dataset differs from its exact source population.\");\n return result;\n }\n private scope(teamId: string) { if (teamId !== this.options.teamId) throw new Error(\"Connected evidence workspace mismatch.\"); }\n private async request(path: string, method: string, body?: unknown, signal?: AbortSignal) {\n const { response, value } = await fetchConnectedJson(this.options.fetch ?? fetch, `${this.baseUrl}/v1/connected-evidence${path}`, { method, signal, redirect: \"error\",\n headers: { Authorization: `Bearer ${this.options.apiKey}`, \"X-OpenPond-Team-Id\": this.options.teamId, \"Content-Type\": \"application/json\", Accept: \"application/json\" },\n ...(body === undefined ? {} : { body: JSON.stringify(body) }) }, (status, code, message) => new ConnectedEvidenceError(status, code, message));\n if (!response.ok) { const error = z.object({ code: z.string(), message: z.string() }).safeParse(value);\n throw new ConnectedEvidenceError(response.status, error.success ? error.data.code : \"connected_request_failed\", error.success ? error.data.message : \"Connected evidence request failed.\"); }\n return value;\n }\n}\n","import { z } from \"zod\";\nimport { RewardReleaseRefSchema } from \"@openpond/evals/rewards\";\n\n/** Publication freezes the owner-selected Dataset revision and exact grader\n * releases. Capture never infers a correctness reference from an answer. */\nexport const ConnectedDatasetPublicationSchema = z.object({\n datasetId: z.string().trim().min(1).max(240),\n expectedRevision: z.number().int().positive(),\n operationId: z.string().trim().min(1).max(240),\n graders: z.array(RewardReleaseRefSchema).min(1).max(100).optional(),\n}).strict().superRefine((request, context) => {\n if (request.graders && new Set(request.graders.map(ref => ref.id)).size !== request.graders.length)\n context.addIssue({ code: \"custom\", path: [\"graders\"], message: \"Choose one exact revision of each grader.\" });\n});\nexport type ConnectedDatasetPublication = z.infer<typeof ConnectedDatasetPublicationSchema>;\n","import { z } from \"zod\";\n\nconst Id = z.string().min(1).max(500);\nconst Count = z.number().int().nonnegative();\n\n/** Hosted collection health is server reconciliation, never a local heartbeat. */\nexport const ConnectedCollectionStatusSchema = z.object({\n teamId: Id,\n ownerUserId: Id,\n projectId: Id.nullable(),\n status: z.enum([\"active\", \"paused\", \"archived\"]),\n revision: Count,\n state: z.enum([\"collecting\", \"pending\", \"attention\", \"paused\", \"archived\"]),\n lastReconciledAt: z.string().datetime().nullable(),\n lastCapturedAt: z.string().datetime().nullable(),\n historyDays: z.number().int().positive(),\n sources: Count,\n tasks: Count,\n datasets: z.array(z.object({\n datasetId: Id,\n projection: z.enum([\"turn\", \"conversation\"]),\n revision: Count,\n }).strict()).max(2),\n latestBatch: z.object({\n operationId: Id,\n updatedAt: z.string().datetime(),\n scanned: Count,\n captured: Count,\n unchanged: Count,\n pending: Count,\n failed: Count,\n excluded: Count,\n paused: Count,\n hasMore: z.boolean(),\n }).strict().nullable(),\n}).strict();\n\nexport type ConnectedCollectionStatus = z.infer<typeof ConnectedCollectionStatusSchema>;\n","import { z } from \"zod\";\nimport {\n AgentImportCommitRequestSchema,\n AgentImportPreviewRequestSchema,\n} from \"./connected-evidence-contracts.js\";\nimport { fetchConnectedJson } from \"./connected-evidence-http.js\";\nimport {\n CollectorCoverageManifestSchema,\n CollectorCoverageSummarySchema,\n summarizeCollectorCoverage,\n} from \"@openpond/evals/connected-evidence\";\nconst Id = z.string().trim().min(1).max(240);\nexport const ConnectedSyncCoveragePublishSchema = z\n .object({\n id: Id,\n expectedRevision: z.number().int().positive(),\n manifest: CollectorCoverageManifestSchema,\n })\n .strict()\n .refine(\n (value) =>\n value.id === value.manifest.connectionId &&\n value.expectedRevision === value.manifest.connectionRevision,\n \"Collector coverage scope differs from its connection.\",\n );\nexport const ConnectedSyncCoverageReadSchema = z\n .object({ id: Id, cutoff: z.iso.datetime().optional() })\n .strict();\nexport const ConnectedSyncCoverageReceiptSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.connectedSyncCoverageReceipt.v1\"),\n id: Id,\n teamId: Id,\n ownerUserId: Id,\n connectionId: Id,\n connectionRevision: z.number().int().positive(),\n receivedAt: z.iso.datetime(),\n summary: CollectorCoverageSummarySchema,\n })\n .strict();\nexport const ConnectedSyncRegistrationSchema = z\n .object({\n id: Id,\n source: AgentImportPreviewRequestSchema.shape.source,\n machineId: Id,\n sourceInstanceId: Id,\n sourceLabel: z.string().trim().min(1).max(200),\n sourceRoot: z.string().min(1).max(2000),\n destination: AgentImportPreviewRequestSchema.shape.destination,\n since: z.string().datetime().nullable(),\n keepSyncing: z.boolean(),\n expectedRevision: z.number().int().nonnegative(),\n })\n .strict();\nexport const ConnectedSyncControlSchema = z\n .object({\n id: Id,\n expectedRevision: z.number().int().positive(),\n action: z.enum([\"pause\", \"resume\", \"disconnect\"]),\n })\n .strict();\nexport const ConnectedSyncRequestSchema = z\n .object({\n id: Id,\n operationId: Id,\n expectedRevision: z.number().int().positive(),\n })\n .strict();\nexport const ConnectedSyncHeartbeatSchema = z\n .object({\n id: Id,\n expectedRevision: z.number().int().positive(),\n pendingOperations: z.number().int().min(0).max(10000),\n error: z.string().max(500).nullable(),\n completedSyncRevision: z.number().int().nonnegative().default(0),\n })\n .strict();\nexport const ConnectedSyncConnectionSchema = z\n .object({\n teamId: Id,\n id: Id,\n revision: z.number().int().positive(),\n source: AgentImportPreviewRequestSchema.shape.source,\n sourceLabel: z.string(),\n sourceRoot: z.string(),\n taskDatasetId: Id.nullable(),\n conversationDatasetId: Id.nullable(),\n machineId: Id,\n sourceInstanceId: Id,\n projectId: Id,\n datasetIds: z.array(Id).max(2),\n since: z.string().datetime().nullable(),\n keepSyncing: z.boolean(),\n state: z.enum([\"active\", \"paused\", \"disconnected\"]),\n health: z.enum([\"online\", \"offline\"]),\n lastHeartbeatAt: z.string().datetime().nullable(),\n lastAdmissionAt: z.string().datetime().nullable(),\n pendingOperations: z.number().int().nonnegative(),\n admittedTasks: z.number().int().nonnegative(),\n error: z.string().nullable(),\n requestedSyncRevision: z.number().int().nonnegative().default(0),\n completedSyncRevision: z.number().int().nonnegative().default(0),\n syncRequestedAt: z.string().datetime().nullable().default(null),\n syncCompletedAt: z.string().datetime().nullable().default(null),\n })\n .strict()\n .refine(\n (value) =>\n value.completedSyncRevision <= value.requestedSyncRevision &&\n value.requestedSyncRevision <= value.revision,\n \"Invalid sync acknowledgement generation.\",\n );\nexport const ConnectedSyncCommitSchema = z\n .object({\n connectionId: Id,\n expectedRevision: z.number().int().positive(),\n request: AgentImportCommitRequestSchema,\n })\n .strict();\nexport type ConnectedSyncConnection = z.infer<\n typeof ConnectedSyncConnectionSchema\n>;\nexport class ConnectedSyncClient {\n constructor(\n private readonly options: {\n apiKey: string;\n baseUrl: string;\n teamId: string;\n fetch?: typeof fetch;\n },\n ) {\n const url = new URL(options.baseUrl);\n if (\n ![\"http:\", \"https:\"].includes(url.protocol) ||\n url.username ||\n url.password ||\n url.search ||\n url.hash\n )\n throw new Error(\"Invalid connected-sync API origin.\");\n }\n async list(signal?: AbortSignal) {\n const result = z\n .object({\n teamId: Id,\n items: z.array(ConnectedSyncConnectionSchema).max(100),\n })\n .strict()\n .parse(await this.request(\"\", \"GET\", undefined, signal));\n if (\n result.teamId !== this.options.teamId ||\n result.items.some((item) => item.teamId !== result.teamId)\n )\n throw new Error(\"Sync workspace mismatch.\");\n return result;\n }\n async register(\n raw: z.input<typeof ConnectedSyncRegistrationSchema>,\n signal?: AbortSignal,\n ) {\n return this.connection(\n await this.request(\n \"\",\n \"POST\",\n ConnectedSyncRegistrationSchema.parse(raw),\n signal,\n ),\n raw.id,\n );\n }\n async control(\n raw: z.input<typeof ConnectedSyncControlSchema>,\n signal?: AbortSignal,\n ) {\n return this.connection(\n await this.request(\n \"/control\",\n \"POST\",\n ConnectedSyncControlSchema.parse(raw),\n signal,\n ),\n raw.id,\n );\n }\n async heartbeat(\n raw: z.input<typeof ConnectedSyncHeartbeatSchema>,\n signal?: AbortSignal,\n ) {\n return this.connection(\n await this.request(\n \"/heartbeat\",\n \"POST\",\n ConnectedSyncHeartbeatSchema.parse(raw),\n signal,\n ),\n raw.id,\n );\n }\n async requestSync(\n raw: z.input<typeof ConnectedSyncRequestSchema>,\n signal?: AbortSignal,\n ) {\n return this.connection(\n await this.request(\n \"/sync-now\",\n \"POST\",\n ConnectedSyncRequestSchema.parse(raw),\n signal,\n ),\n raw.id,\n );\n }\n async commit(\n raw: z.input<typeof ConnectedSyncCommitSchema>,\n signal?: AbortSignal,\n ) {\n return this.request(\n \"/commit\",\n \"POST\",\n ConnectedSyncCommitSchema.parse(raw),\n signal,\n );\n }\n async publishCoverage(\n raw: z.input<typeof ConnectedSyncCoveragePublishSchema>,\n signal?: AbortSignal,\n ) {\n const request = ConnectedSyncCoveragePublishSchema.parse(raw);\n const receipt = this.coverageReceipt(\n await this.request(\n \"/coverage\",\n \"POST\",\n { action: \"publish\", ...request },\n signal,\n ),\n request.id,\n );\n if (\n !receipt ||\n receipt.connectionRevision !== request.expectedRevision ||\n receipt.summary.manifestHash !==\n summarizeCollectorCoverage(request.manifest).manifestHash\n )\n throw new Error(\n \"Collector coverage acknowledgement differs from the retained manifest.\",\n );\n return receipt;\n }\n async readCoverage(\n raw: z.input<typeof ConnectedSyncCoverageReadSchema>,\n signal?: AbortSignal,\n ) {\n const request = ConnectedSyncCoverageReadSchema.parse(raw);\n const query = new URLSearchParams(\n request.cutoff ? { cutoff: request.cutoff } : {},\n );\n return this.coverageReceipt(\n await this.request(\n `/${encodeURIComponent(request.id)}/coverage?${query}`,\n \"GET\",\n undefined,\n signal,\n ),\n request.id,\n );\n }\n private coverageReceipt(value: unknown, connectionId: string) {\n if (value === null) return null;\n const receipt = ConnectedSyncCoverageReceiptSchema.parse(value);\n if (\n receipt.teamId !== this.options.teamId ||\n receipt.connectionId !== connectionId\n )\n throw new Error(\"Collector coverage workspace mismatch.\");\n return receipt;\n }\n private connection(raw: unknown, id: string) {\n const result = ConnectedSyncConnectionSchema.parse(raw);\n if (result.teamId !== this.options.teamId || result.id !== id)\n throw new Error(\"Sync connection identity mismatch.\");\n return result;\n }\n private async request(\n path: string,\n method: string,\n body?: unknown,\n signal?: AbortSignal,\n ) {\n const { response, value } = await fetchConnectedJson(\n this.options.fetch ?? fetch,\n `${this.options.baseUrl.replace(/\\/+$/u, \"\")}/v1/connected-evidence/sync/connections${path}`,\n {\n method,\n signal,\n redirect: \"error\",\n headers: {\n Authorization: `Bearer ${this.options.apiKey}`,\n \"X-OpenPond-Team-Id\": this.options.teamId,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n ...(body === undefined ? {} : { body: JSON.stringify(body) }),\n },\n (_status, _code, message) => new Error(message),\n );\n if (!response.ok)\n throw Object.assign(\n new Error(`Sync request failed (${response.status}).`),\n { status: response.status },\n );\n return value;\n }\n}\n","export * from \"./connected-evidence-contracts.js\";\nexport * from \"./connected-dataset-source.js\";\nexport * from \"./connected-recorded-execution.js\";\nexport * from \"./connected-evidence-client.js\";\nexport * from \"./connected-dataset-publication.js\";\nexport * from \"./connected-collection-status.js\";\nexport * from \"./connected-starting-assets.js\";\n\nexport * from \"./connected-sync.js\";\nexport { CollectorCoverageManifestSchema, CollectorCoverageSessionSchema, CollectorCoverageSummarySchema,\n summarizeCollectorCoverage, hashCollectorEligibleBoundaries } from \"@openpond/evals/connected-evidence\";\nexport type { CollectorCoverageManifest, CollectorCoverageSession, CollectorCoverageSummary } from \"@openpond/evals/connected-evidence\";\n"],"mappings":"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","names":["z","z","z","Id","Id","z","Hash","z","Id","z","CollectorCoverageManifestSchema","CollectorCoverageSummarySchema","summarizeCollectorCoverage"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  fetchConnectedJson
3
- } from "./chunk-T4APHDES.js";
3
+ } from "./chunk-O6FKHAWN.js";
4
4
 
5
5
  // src/evaluation-coordination-http.ts
6
6
  import { z } from "zod";
@@ -34,4 +34,4 @@ var EvaluationCoordinationTransport = class {
34
34
  export {
35
35
  EvaluationCoordinationTransport
36
36
  };
37
- //# sourceMappingURL=chunk-YCQVVFE5.js.map
37
+ //# sourceMappingURL=chunk-3B5KSH3V.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/evaluation-coordination-http.ts"],"sourcesContent":["import {z} from \"zod\";\nimport {fetchConnectedJson} from \"./connected-evidence-http.js\";\nexport type EvaluationCoordinationAccess={baseUrl:string;apiKey:string;actorId:string;teamId:string;projectId:string|null;fetch?:typeof fetch};\n/** Bounded authenticated transport for the current evaluation owner. There is\n * no retry or operation allocation here; commands retain their reviewed IDs. */\nexport class EvaluationCoordinationTransport {\n readonly origin:string;\n constructor(readonly access:EvaluationCoordinationAccess){\n const url=new URL(access.baseUrl);\n if(![\"http:\",\"https:\"].includes(url.protocol)||url.username||url.password||url.search||url.hash||!access.apiKey.trim()||!access.actorId.trim()||!access.teamId.trim())throw new Error(\"Select the current evaluation owner and HTTP API origin.\");\n this.origin=url.toString().replace(/\\/+$/,\"\");\n }\n async post(path:\"experiment-evaluation-schedules\"|\"advanced-refiner-evaluations\",request:unknown,signal?:AbortSignal){\n const body=JSON.stringify({teamId:this.access.teamId,projectId:this.access.projectId,request});\n if(new TextEncoder().encode(body).byteLength>1_048_576)throw new Error(\"The reviewed evaluation command exceeds 1 MiB.\");\n const {response,value}=await fetchConnectedJson(this.access.fetch??fetch,`${this.origin}/v1/${path}`,{\n method:\"POST\",redirect:\"error\",headers:{Authorization:`Bearer ${this.access.apiKey}`,\"X-OpenPond-Team-Id\":this.access.teamId,\"Content-Type\":\"application/json\"},body,signal,\n },(status,code,message)=>Object.assign(new Error(message),{status,code}));\n if(!response.ok){const error=z.object({error:z.string().optional(),message:z.string().optional(),code:z.string().optional()}).passthrough().safeParse(value);throw Object.assign(new Error(error.success?error.data.error??error.data.message??\"Evaluation operation failed.\":\"Evaluation operation failed.\"),{status:response.status,code:error.success?error.data.code:undefined});}\n return value;\n }\n}\n"],"mappings":";;;;;AAAA,SAAQ,SAAQ;AAKT,IAAM,kCAAN,MAAsC;AAAA,EAE3C,YAAqB,QAAoC;AAApC;AACnB,UAAM,MAAI,IAAI,IAAI,OAAO,OAAO;AAChC,QAAG,CAAC,CAAC,SAAQ,QAAQ,EAAE,SAAS,IAAI,QAAQ,KAAG,IAAI,YAAU,IAAI,YAAU,IAAI,UAAQ,IAAI,QAAM,CAAC,OAAO,OAAO,KAAK,KAAG,CAAC,OAAO,QAAQ,KAAK,KAAG,CAAC,OAAO,OAAO,KAAK,EAAE,OAAM,IAAI,MAAM,0DAA0D;AAChP,SAAK,SAAO,IAAI,SAAS,EAAE,QAAQ,QAAO,EAAE;AAAA,EAC9C;AAAA,EAJqB;AAAA,EADZ;AAAA,EAMT,MAAM,KAAK,MAAsE,SAAgB,QAAoB;AACnH,UAAM,OAAK,KAAK,UAAU,EAAC,QAAO,KAAK,OAAO,QAAO,WAAU,KAAK,OAAO,WAAU,QAAO,CAAC;AAC7F,QAAG,IAAI,YAAY,EAAE,OAAO,IAAI,EAAE,aAAW,QAAU,OAAM,IAAI,MAAM,gDAAgD;AACvH,UAAM,EAAC,UAAS,MAAK,IAAE,MAAM,mBAAmB,KAAK,OAAO,SAAO,OAAM,GAAG,KAAK,MAAM,OAAO,IAAI,IAAG;AAAA,MACnG,QAAO;AAAA,MAAO,UAAS;AAAA,MAAQ,SAAQ,EAAC,eAAc,UAAU,KAAK,OAAO,MAAM,IAAG,sBAAqB,KAAK,OAAO,QAAO,gBAAe,mBAAkB;AAAA,MAAE;AAAA,MAAK;AAAA,IACvK,GAAE,CAAC,QAAO,MAAK,YAAU,OAAO,OAAO,IAAI,MAAM,OAAO,GAAE,EAAC,QAAO,KAAI,CAAC,CAAC;AACxE,QAAG,CAAC,SAAS,IAAG;AAAC,YAAM,QAAM,EAAE,OAAO,EAAC,OAAM,EAAE,OAAO,EAAE,SAAS,GAAE,SAAQ,EAAE,OAAO,EAAE,SAAS,GAAE,MAAK,EAAE,OAAO,EAAE,SAAS,EAAC,CAAC,EAAE,YAAY,EAAE,UAAU,KAAK;AAAE,YAAM,OAAO,OAAO,IAAI,MAAM,MAAM,UAAQ,MAAM,KAAK,SAAO,MAAM,KAAK,WAAS,iCAA+B,8BAA8B,GAAE,EAAC,QAAO,SAAS,QAAO,MAAK,MAAM,UAAQ,MAAM,KAAK,OAAK,OAAS,CAAC;AAAA,IAAE;AACrX,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  apiFetch,
3
3
  readApiJson
4
- } from "./chunk-CEZEVILU.js";
4
+ } from "./chunk-HJ2AIAKX.js";
5
5
 
6
6
  // src/profile-actions.ts
7
7
  var OpenPondProfileActionsClient = class {
@@ -69,4 +69,4 @@ function requiredValue(value, name) {
69
69
  export {
70
70
  OpenPondProfileActionsClient
71
71
  };
72
- //# sourceMappingURL=chunk-2DMYAJLS.js.map
72
+ //# sourceMappingURL=chunk-3DWPLYFJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/profile-actions.ts"],"sourcesContent":["import { apiFetch, readApiJson } from \"@openpond/cloud/api/core\";\n\nexport type OpenPondProfileActionSetupRequirement = {\n kind: string;\n key: string;\n label: string | null;\n required: boolean;\n status: string;\n warning: string | null;\n};\n\nexport type OpenPondProfileActionCatalogEntry = {\n /** Stable action key. This is the only action selector accepted by follow-up invocation APIs. */\n key: string;\n agentId: string;\n agentName: string;\n agentSlug: string;\n actionId: string;\n actionLabel: string;\n description: string;\n inputSchema: Record<string, unknown>;\n invokesModel: boolean;\n approvalPolicy: {\n required: boolean;\n risk: \"read\" | \"write\" | \"destructive\";\n };\n setupStatus: \"ready\" | \"setup_required\";\n setupRequirements: OpenPondProfileActionSetupRequirement[];\n requiredCapabilities: string[];\n};\n\nexport type OpenPondProfileActionCatalog = {\n profileId: string;\n profileName: string;\n /** Opaque source/action contract version used to reject catalog drift at invocation time. */\n catalogVersion: string;\n sourceCommitSha: string | null;\n actions: OpenPondProfileActionCatalogEntry[];\n};\n\nexport type OpenPondProfileActionInvocation<TOutput = Record<string, unknown>> = {\n run: {\n id: string;\n status: string;\n conversationId: string | null;\n resultJson: TOutput | null;\n };\n};\n\n/** A short-lived capability granted by the calling product for one Profile Action run. */\nexport type OpenPondExternalCapabilityLease = {\n provider: string;\n capabilities: string[];\n proxyUrl: string;\n bearerToken: string;\n expiresAt?: string;\n resourcePolicy?: Record<string, unknown>;\n};\n\ntype ProfileActionsClientInput = {\n apiKey: string;\n apiBaseUrl: string;\n};\n\nexport class OpenPondProfileActionsClient {\n readonly #apiKey: string;\n readonly #apiBaseUrl: string;\n\n constructor(input: ProfileActionsClientInput) {\n this.#apiKey = input.apiKey;\n this.#apiBaseUrl = input.apiBaseUrl.replace(/\\/+$/, \"\");\n }\n\n async catalog(input: {\n teamId: string;\n profileId?: string;\n profileName?: string;\n }): Promise<OpenPondProfileActionCatalog> {\n const teamId = requiredValue(input.teamId, \"teamId\");\n const search = new URLSearchParams({ teamId });\n if (input.profileId?.trim()) search.set(\"profileId\", input.profileId.trim());\n if (input.profileName?.trim()) {\n search.set(\"profileName\", input.profileName.trim());\n }\n const response = await apiFetch(\n this.#apiBaseUrl,\n this.#apiKey,\n `/v1/profile/actions?${search.toString()}`,\n );\n return (\n await readApiJson<{ catalog: OpenPondProfileActionCatalog }>(\n response,\n \"Get Profile Action catalog\",\n )\n ).catalog;\n }\n\n async run<TOutput = Record<string, unknown>>(input: {\n teamId: string;\n actionKey: string;\n profileId?: string;\n profileName?: string;\n value?: Record<string, unknown>;\n conversationId?: string | null;\n createConversation?: boolean;\n conversationTitle?: string | null;\n idempotencyKey: string;\n catalogVersion: string;\n externalCapabilityLeases?: OpenPondExternalCapabilityLease[];\n }): Promise<OpenPondProfileActionInvocation<TOutput>> {\n const teamId = requiredValue(input.teamId, \"teamId\");\n const actionKey = requiredValue(input.actionKey, \"actionKey\");\n const idempotencyKey = requiredValue(input.idempotencyKey, \"idempotencyKey\");\n const catalogVersion = requiredValue(input.catalogVersion, \"catalogVersion\");\n const response = await apiFetch(\n this.#apiBaseUrl,\n this.#apiKey,\n `/v1/profile/actions/run?${new URLSearchParams({ teamId }).toString()}`,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n ...(input.profileId?.trim() ? { profileId: input.profileId.trim() } : {}),\n ...(input.profileName?.trim() ? { profileName: input.profileName.trim() } : {}),\n actionKey,\n value: input.value ?? {},\n conversationId: input.conversationId ?? null,\n createConversation: input.createConversation,\n conversationTitle: input.conversationTitle ?? null,\n idempotencyKey,\n catalogVersion,\n externalCapabilityLeases: input.externalCapabilityLeases,\n }),\n },\n );\n return readApiJson<OpenPondProfileActionInvocation<TOutput>>(\n response,\n \"Run Profile Action\",\n );\n }\n}\n\nfunction requiredValue(value: string, name: string): string {\n const normalized = value.trim();\n if (!normalized) throw new Error(`${name} is required`);\n return normalized;\n}\n"],"mappings":";;;;;;AAgEO,IAAM,+BAAN,MAAmC;AAAA,EAC/B;AAAA,EACA;AAAA,EAET,YAAY,OAAkC;AAC5C,SAAK,UAAU,MAAM;AACrB,SAAK,cAAc,MAAM,WAAW,QAAQ,QAAQ,EAAE;AAAA,EACxD;AAAA,EAEA,MAAM,QAAQ,OAI4B;AACxC,UAAM,SAAS,cAAc,MAAM,QAAQ,QAAQ;AACnD,UAAM,SAAS,IAAI,gBAAgB,EAAE,OAAO,CAAC;AAC7C,QAAI,MAAM,WAAW,KAAK,EAAG,QAAO,IAAI,aAAa,MAAM,UAAU,KAAK,CAAC;AAC3E,QAAI,MAAM,aAAa,KAAK,GAAG;AAC7B,aAAO,IAAI,eAAe,MAAM,YAAY,KAAK,CAAC;AAAA,IACpD;AACA,UAAM,WAAW,MAAM;AAAA,MACrB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,uBAAuB,OAAO,SAAS,CAAC;AAAA,IAC1C;AACA,YACE,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,GACA;AAAA,EACJ;AAAA,EAEA,MAAM,IAAuC,OAYS;AACpD,UAAM,SAAS,cAAc,MAAM,QAAQ,QAAQ;AACnD,UAAM,YAAY,cAAc,MAAM,WAAW,WAAW;AAC5D,UAAM,iBAAiB,cAAc,MAAM,gBAAgB,gBAAgB;AAC3E,UAAM,iBAAiB,cAAc,MAAM,gBAAgB,gBAAgB;AAC3E,UAAM,WAAW,MAAM;AAAA,MACrB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,2BAA2B,IAAI,gBAAgB,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC;AAAA,MACrE;AAAA,QACE,QAAQ;AAAA,QACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,QAC9C,MAAM,KAAK,UAAU;AAAA,UACnB,GAAI,MAAM,WAAW,KAAK,IAAI,EAAE,WAAW,MAAM,UAAU,KAAK,EAAE,IAAI,CAAC;AAAA,UACvE,GAAI,MAAM,aAAa,KAAK,IAAI,EAAE,aAAa,MAAM,YAAY,KAAK,EAAE,IAAI,CAAC;AAAA,UAC7E;AAAA,UACA,OAAO,MAAM,SAAS,CAAC;AAAA,UACvB,gBAAgB,MAAM,kBAAkB;AAAA,UACxC,oBAAoB,MAAM;AAAA,UAC1B,mBAAmB,MAAM,qBAAqB;AAAA,UAC9C;AAAA,UACA;AAAA,UACA,0BAA0B,MAAM;AAAA,QAClC,CAAC;AAAA,MACH;AAAA,IACF;AACA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,cAAc,OAAe,MAAsB;AAC1D,QAAM,aAAa,MAAM,KAAK;AAC9B,MAAI,CAAC,WAAY,OAAM,IAAI,MAAM,GAAG,IAAI,cAAc;AACtD,SAAO;AACT;","names":[]}
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  ExperimentFieldMappingsSchema,
3
3
  ExperimentGraderPinSchema
4
- } from "./chunk-L5PQPAU6.js";
4
+ } from "./chunk-QRS7Y3EM.js";
5
5
  import {
6
6
  ImmutableReleaseRefSchema,
7
7
  contentHash
8
- } from "./chunk-COPVBJPL.js";
8
+ } from "./chunk-H3JZ3P5T.js";
9
9
 
10
10
  // src/experiment-scoring-contracts.ts
11
11
  import { z } from "zod";
@@ -67,4 +67,4 @@ export {
67
67
  ExperimentScoringPassSchema,
68
68
  verifyExperimentScoringPass
69
69
  };
70
- //# sourceMappingURL=chunk-B7VYE7YQ.js.map
70
+ //# sourceMappingURL=chunk-53LLNDXF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/experiment-scoring-contracts.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { contentHash, ImmutableReleaseRefSchema } from \"@openpond/harness\";\nimport { RewardReleaseRefSchema } from \"@openpond/evals/rewards\";\nimport { ExperimentGraderPinSchema } from \"./experiment-contracts.js\";\nimport { ExperimentFieldMappingsSchema } from \"./experiment-field-mappings.js\";\n\nconst Id = z.string().trim().min(1).max(200);\nexport const ExperimentScoringRequestSchema = z.object({\n operationId: Id,\n execution: ImmutableReleaseRefSchema,\n /** Recorded executions retain observed evidence and never invoke a target. */\n executionKind: z.literal(\"recorded_evidence\").optional(),\n graders: z.array(RewardReleaseRefSchema).min(1).max(100),\n maximumCostUsd: z.number().finite().min(0.000001).max(10_000),\n mappings: z.array(z.object({ graderId: Id, fields: ExperimentFieldMappingsSchema }).strict()).max(100).optional(),\n}).strict().superRefine((value, context) => {\n if (new Set(value.graders.map(grader => grader.id)).size !== value.graders.length)\n context.addIssue({ code: \"custom\", path: [\"graders\"], message: \"Select each grader once.\" });\n if (value.mappings && (new Set(value.mappings.map(mapping => mapping.graderId)).size !== value.mappings.length\n || value.mappings.some(mapping => !value.graders.some(grader => grader.id === mapping.graderId))))\n context.addIssue({ code: \"custom\", path: [\"mappings\"], message: \"Map each selected grader at most once.\" });\n});\nexport type ExperimentScoringRequest = z.infer<typeof ExperimentScoringRequestSchema>;\n\nconst ScoringPassContent = z.object({\n schemaVersion: z.literal(\"openpond.experimentScoringPass.v1\"),\n id: Id, teamId: Id, revision: z.number().int().positive(),\n request: ExperimentScoringRequestSchema,\n graders: z.array(ExperimentGraderPinSchema).min(1).max(100),\n status: z.enum([\"queued\", \"running\", \"cancelling\", \"completed\", \"failed\", \"cancelled\"]),\n totalCount: z.number().int().min(1).max(10_000),\n counts: z.object({ pending: z.number().int().nonnegative(), running: z.number().int().nonnegative(),\n scored: z.number().int().nonnegative(), unavailable: z.number().int().nonnegative(),\n failed: z.number().int().nonnegative(), cancelled: z.number().int().nonnegative() }).strict(),\n resultAvailable: z.boolean(), createdAt: z.iso.datetime(), startedAt: z.iso.datetime().nullable(),\n completedAt: z.iso.datetime().nullable(),\n error: z.object({ code: Id, message: z.string().max(2_000) }).strict().nullable(),\n}).strict();\nexport const ExperimentScoringPassSchema = ScoringPassContent.extend({ contentHash: z.string().regex(/^[a-f0-9]{64}$/) });\nexport type ExperimentScoringPass = z.infer<typeof ExperimentScoringPassSchema>;\n\n/** A pass grades owned output and carries no model-execution authority. */\nexport function verifyExperimentScoringPass(value: unknown) {\n const pass = ExperimentScoringPassSchema.parse(value);\n const { contentHash: actual, ...content } = pass;\n if (contentHash(content) !== actual || Object.values(pass.counts).reduce((sum, count) => sum + count, 0) !== pass.totalCount)\n throw new Error(\"Scoring pass integrity or population accounting failed.\");\n const terminal = [\"completed\", \"failed\", \"cancelled\"].includes(pass.status);\n if (terminal && (!pass.completedAt || pass.counts.pending || pass.counts.running)\n || !terminal && (pass.completedAt !== null || pass.resultAvailable)\n || pass.status === \"completed\" && !pass.resultAvailable)\n throw new Error(\"Scoring pass lifecycle differs from its retained result.\");\n if (pass.graders.length !== pass.request.graders.length || new Set(pass.graders.map(grader => grader.feedbackKey)).size !== pass.graders.length\n || pass.graders.some((grader, index) => contentHash(grader.release) !== contentHash(pass.request.graders[index]!)\n || contentHash(grader.mappings ?? []) !== contentHash(pass.request.mappings?.find(mapping => mapping.graderId === grader.release?.id)?.fields ?? [])))\n throw new Error(\"Scoring pass graders differ from their exact admission.\");\n return pass;\n}\n"],"mappings":"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","names":[]}