openpond-sdk 0.10.0 → 0.11.2

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 (263) hide show
  1. package/dist/advanced-refiner-evaluations.js +42 -0
  2. package/dist/advanced-refiner-evaluations.js.map +7 -0
  3. package/dist/candidate-evaluations.js +25 -0
  4. package/dist/candidate-evaluations.js.map +7 -0
  5. package/dist/{chunk-W5TXWVFS.js → chunk-2JKV5OJO.js} +88 -59
  6. package/dist/chunk-2JKV5OJO.js.map +7 -0
  7. package/dist/{chunk-2ZJRG3KL.js → chunk-2NSNBED7.js} +7 -3
  8. package/dist/chunk-2NSNBED7.js.map +7 -0
  9. package/dist/{chunk-Y4NGWGTA.js → chunk-4NZW4LFB.js} +268 -264
  10. package/dist/chunk-4NZW4LFB.js.map +7 -0
  11. package/dist/{chunk-DSGGM2ME.js → chunk-4SZKRRTO.js} +2 -2
  12. package/dist/chunk-6FQKRY5K.js +445 -0
  13. package/dist/chunk-6FQKRY5K.js.map +7 -0
  14. package/dist/chunk-7Q7I6FAT.js +139 -0
  15. package/dist/chunk-7Q7I6FAT.js.map +7 -0
  16. package/dist/chunk-CPEOFPPF.js +632 -0
  17. package/dist/chunk-CPEOFPPF.js.map +7 -0
  18. package/dist/chunk-G3FWDZMZ.js +267 -0
  19. package/dist/chunk-G3FWDZMZ.js.map +7 -0
  20. package/dist/chunk-GDJRGRHA.js +144 -0
  21. package/dist/chunk-GDJRGRHA.js.map +7 -0
  22. package/dist/chunk-HKAR3VPB.js +65 -0
  23. package/dist/chunk-HKAR3VPB.js.map +7 -0
  24. package/dist/{chunk-32H2EJRA.js → chunk-JEUHIQWF.js} +10 -7
  25. package/dist/chunk-JEUHIQWF.js.map +7 -0
  26. package/dist/chunk-KQWCXW3A.js +294 -0
  27. package/dist/chunk-KQWCXW3A.js.map +7 -0
  28. package/dist/chunk-LFH4EKWH.js +1408 -0
  29. package/dist/chunk-LFH4EKWH.js.map +7 -0
  30. package/dist/{chunk-DT7FRNIZ.js → chunk-MW2N3BX5.js} +4 -3
  31. package/dist/{chunk-DT7FRNIZ.js.map → chunk-MW2N3BX5.js.map} +2 -2
  32. package/dist/{chunk-I3TQTXKB.js → chunk-QVCMFQKA.js} +6 -6
  33. package/dist/{chunk-I3TQTXKB.js.map → chunk-QVCMFQKA.js.map} +1 -1
  34. package/dist/{chunk-I2YM3UY4.js → chunk-RIX56CJL.js} +9 -6
  35. package/dist/chunk-RIX56CJL.js.map +7 -0
  36. package/dist/{chunk-PJ2VLNJF.js → chunk-SGRYMU4C.js} +2 -2
  37. package/dist/chunk-SLS3GFPG.js +125 -0
  38. package/dist/chunk-SLS3GFPG.js.map +7 -0
  39. package/dist/chunk-SVU4RZ4K.js +70 -0
  40. package/dist/chunk-SVU4RZ4K.js.map +7 -0
  41. package/dist/chunk-SXTC2GT6.js +160 -0
  42. package/dist/chunk-SXTC2GT6.js.map +7 -0
  43. package/dist/chunk-T4APHDES.js +74 -0
  44. package/dist/chunk-T4APHDES.js.map +7 -0
  45. package/dist/chunk-UNMOEI2K.js +587 -0
  46. package/dist/chunk-UNMOEI2K.js.map +7 -0
  47. package/dist/chunk-VC5OV5AS.js +174 -0
  48. package/dist/chunk-VC5OV5AS.js.map +7 -0
  49. package/dist/{chunk-7B44TQZD.js → chunk-WX22WN33.js} +13 -7
  50. package/dist/chunk-WX22WN33.js.map +7 -0
  51. package/dist/{chunk-JCPLAIZL.js → chunk-XCH27NHJ.js} +106 -76
  52. package/dist/chunk-XCH27NHJ.js.map +7 -0
  53. package/dist/chunk-XEUOJ5WF.js +31 -0
  54. package/dist/chunk-XEUOJ5WF.js.map +7 -0
  55. package/dist/chunk-YCQVVFE5.js +37 -0
  56. package/dist/chunk-YCQVVFE5.js.map +7 -0
  57. package/dist/chunk-YTGRET2L.js +604 -0
  58. package/dist/chunk-YTGRET2L.js.map +7 -0
  59. package/dist/connected-evidence.js +97 -0
  60. package/dist/connected-evidence.js.map +7 -0
  61. package/dist/dataset-commerce.js +773 -0
  62. package/dist/dataset-commerce.js.map +7 -0
  63. package/dist/dataset-workspaces.js +45 -80
  64. package/dist/dataset-workspaces.js.map +4 -4
  65. package/dist/experiment-evaluation-schedules.js +48 -0
  66. package/dist/experiment-evaluation-schedules.js.map +7 -0
  67. package/dist/experiment-improvements.js +52 -0
  68. package/dist/experiment-improvements.js.map +7 -0
  69. package/dist/experiments.js +48 -90
  70. package/dist/experiments.js.map +3 -3
  71. package/dist/human-review.js +13 -0
  72. package/dist/human-review.js.map +7 -0
  73. package/dist/index.js +221 -14
  74. package/dist/index.js.map +2 -2
  75. package/dist/learning.js +1 -1
  76. package/dist/model-starter-attempts.js +2 -2
  77. package/dist/model-starter-catalog.js +9 -4
  78. package/dist/model-starter-catalog.js.map +1 -1
  79. package/dist/model-starters.js +9 -4
  80. package/dist/model-taskset-runs.js +3 -3
  81. package/dist/post-training.js +47 -0
  82. package/dist/post-training.js.map +7 -0
  83. package/dist/taskset-drafts.js +33 -21
  84. package/dist/taskset-drafts.js.map +2 -2
  85. package/dist/taskset-packages.js +28 -558
  86. package/dist/taskset-packages.js.map +4 -4
  87. package/dist/training-bundle.js +61 -20
  88. package/dist/training-bundle.js.map +2 -2
  89. package/dist/training-projects.js +1 -1
  90. package/dist/training.js +7 -2
  91. package/dist/types/packages/sdk/src/advanced-refiner-evaluations.d.ts +2682 -0
  92. package/dist/types/packages/sdk/src/advanced-refiner-evaluations.d.ts.map +1 -0
  93. package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts +1079 -0
  94. package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts.map +1 -0
  95. package/dist/types/packages/sdk/src/candidate-evaluations.d.ts +845 -0
  96. package/dist/types/packages/sdk/src/candidate-evaluations.d.ts.map +1 -0
  97. package/dist/types/packages/sdk/src/claude-code-runtime.d.ts +51 -0
  98. package/dist/types/packages/sdk/src/claude-code-runtime.d.ts.map +1 -0
  99. package/dist/types/packages/sdk/src/connected-collection-status.d.ts +47 -0
  100. package/dist/types/packages/sdk/src/connected-collection-status.d.ts.map +1 -0
  101. package/dist/types/packages/sdk/src/connected-dataset-publication.d.ts +15 -0
  102. package/dist/types/packages/sdk/src/connected-dataset-publication.d.ts.map +1 -0
  103. package/dist/types/packages/sdk/src/connected-dataset-source.d.ts +52 -0
  104. package/dist/types/packages/sdk/src/connected-dataset-source.d.ts.map +1 -0
  105. package/dist/types/packages/sdk/src/connected-evidence-client.d.ts +2502 -0
  106. package/dist/types/packages/sdk/src/connected-evidence-client.d.ts.map +1 -0
  107. package/dist/types/packages/sdk/src/connected-evidence-contracts.d.ts +235 -0
  108. package/dist/types/packages/sdk/src/connected-evidence-contracts.d.ts.map +1 -0
  109. package/dist/types/packages/sdk/src/connected-evidence-http.d.ts +6 -0
  110. package/dist/types/packages/sdk/src/connected-evidence-http.d.ts.map +1 -0
  111. package/dist/types/packages/sdk/src/connected-evidence.d.ts +8 -0
  112. package/dist/types/packages/sdk/src/connected-evidence.d.ts.map +1 -0
  113. package/dist/types/packages/sdk/src/connected-recorded-execution.d.ts +690 -0
  114. package/dist/types/packages/sdk/src/connected-recorded-execution.d.ts.map +1 -0
  115. package/dist/types/packages/sdk/src/connected-sync.d.ts +282 -0
  116. package/dist/types/packages/sdk/src/connected-sync.d.ts.map +1 -0
  117. package/dist/types/packages/sdk/src/dataset-commerce-contracts.d.ts +230 -0
  118. package/dist/types/packages/sdk/src/dataset-commerce-contracts.d.ts.map +1 -0
  119. package/dist/types/packages/sdk/src/dataset-commerce-files.d.ts +114 -0
  120. package/dist/types/packages/sdk/src/dataset-commerce-files.d.ts.map +1 -0
  121. package/dist/types/packages/sdk/src/dataset-commerce-responses.d.ts +608 -0
  122. package/dist/types/packages/sdk/src/dataset-commerce-responses.d.ts.map +1 -0
  123. package/dist/types/packages/sdk/src/dataset-commerce.d.ts +575 -0
  124. package/dist/types/packages/sdk/src/dataset-commerce.d.ts.map +1 -0
  125. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +772 -120
  126. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
  127. package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts +293 -38
  128. package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts.map +1 -1
  129. package/dist/types/packages/sdk/src/dataset-workspace-operations.d.ts +294 -40
  130. package/dist/types/packages/sdk/src/dataset-workspace-operations.d.ts.map +1 -1
  131. package/dist/types/packages/sdk/src/evaluation-coordination-http.d.ts +17 -0
  132. package/dist/types/packages/sdk/src/evaluation-coordination-http.d.ts.map +1 -0
  133. package/dist/types/packages/sdk/src/experiment-client.d.ts +3513 -52
  134. package/dist/types/packages/sdk/src/experiment-client.d.ts.map +1 -1
  135. package/dist/types/packages/sdk/src/experiment-contracts.d.ts +1017 -1
  136. package/dist/types/packages/sdk/src/experiment-contracts.d.ts.map +1 -1
  137. package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts +2780 -0
  138. package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts.map +1 -0
  139. package/dist/types/packages/sdk/src/experiment-grading-contracts.d.ts +24 -0
  140. package/dist/types/packages/sdk/src/experiment-grading-contracts.d.ts.map +1 -1
  141. package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts +5724 -0
  142. package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts.map +1 -0
  143. package/dist/types/packages/sdk/src/experiment-improvement-contracts.d.ts +13024 -0
  144. package/dist/types/packages/sdk/src/experiment-improvement-contracts.d.ts.map +1 -0
  145. package/dist/types/packages/sdk/src/experiment-improvement-hosted-adoption.d.ts +1361 -0
  146. package/dist/types/packages/sdk/src/experiment-improvement-hosted-adoption.d.ts.map +1 -0
  147. package/dist/types/packages/sdk/src/experiment-improvements.d.ts +4 -0
  148. package/dist/types/packages/sdk/src/experiment-improvements.d.ts.map +1 -0
  149. package/dist/types/packages/sdk/src/experiment-run-contracts.d.ts +262 -0
  150. package/dist/types/packages/sdk/src/experiment-run-contracts.d.ts.map +1 -1
  151. package/dist/types/packages/sdk/src/experiment-run-details.d.ts +1388 -1
  152. package/dist/types/packages/sdk/src/experiment-run-details.d.ts.map +1 -1
  153. package/dist/types/packages/sdk/src/experiment-scoring-contracts.d.ts +5 -2
  154. package/dist/types/packages/sdk/src/experiment-scoring-contracts.d.ts.map +1 -1
  155. package/dist/types/packages/sdk/src/experiments.d.ts +3 -0
  156. package/dist/types/packages/sdk/src/experiments.d.ts.map +1 -1
  157. package/dist/types/packages/sdk/src/grader-inspection.d.ts +307 -5
  158. package/dist/types/packages/sdk/src/grader-inspection.d.ts.map +1 -1
  159. package/dist/types/packages/sdk/src/harness-experiment-policy.d.ts +238 -0
  160. package/dist/types/packages/sdk/src/harness-experiment-policy.d.ts.map +1 -1
  161. package/dist/types/packages/sdk/src/human-review-client.d.ts +1267 -0
  162. package/dist/types/packages/sdk/src/human-review-client.d.ts.map +1 -0
  163. package/dist/types/packages/sdk/src/human-review.d.ts +3 -0
  164. package/dist/types/packages/sdk/src/human-review.d.ts.map +1 -0
  165. package/dist/types/packages/sdk/src/index.d.ts +10 -0
  166. package/dist/types/packages/sdk/src/index.d.ts.map +1 -1
  167. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +181 -0
  168. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts.map +1 -1
  169. package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts +63 -4
  170. package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts.map +1 -1
  171. package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts +90 -5
  172. package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts.map +1 -1
  173. package/dist/types/packages/sdk/src/model-batch-review.d.ts +55 -13
  174. package/dist/types/packages/sdk/src/model-batch-review.d.ts.map +1 -1
  175. package/dist/types/packages/sdk/src/model-learning-policy.d.ts +370 -1
  176. package/dist/types/packages/sdk/src/model-learning-policy.d.ts.map +1 -1
  177. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts +363 -19
  178. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts.map +1 -1
  179. package/dist/types/packages/sdk/src/model-starter-catalog.d.ts +234 -12
  180. package/dist/types/packages/sdk/src/model-starter-catalog.d.ts.map +1 -1
  181. package/dist/types/packages/sdk/src/model-starter-execution.d.ts +78 -1
  182. package/dist/types/packages/sdk/src/model-starter-execution.d.ts.map +1 -1
  183. package/dist/types/packages/sdk/src/model-starters.d.ts +466 -13
  184. package/dist/types/packages/sdk/src/model-starters.d.ts.map +1 -1
  185. package/dist/types/packages/sdk/src/model-taskset-derivation.d.ts +312 -4
  186. package/dist/types/packages/sdk/src/model-taskset-derivation.d.ts.map +1 -1
  187. package/dist/types/packages/sdk/src/model-taskset-resources.d.ts +78 -1
  188. package/dist/types/packages/sdk/src/model-taskset-resources.d.ts.map +1 -1
  189. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts +1282 -4
  190. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts.map +1 -1
  191. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +1285 -5
  192. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts.map +1 -1
  193. package/dist/types/packages/sdk/src/post-training.d.ts +3529 -0
  194. package/dist/types/packages/sdk/src/post-training.d.ts.map +1 -0
  195. package/dist/types/packages/sdk/src/profile-evaluation-discovery.d.ts +1127 -0
  196. package/dist/types/packages/sdk/src/profile-evaluation-discovery.d.ts.map +1 -0
  197. package/dist/types/packages/sdk/src/profile-external-dataset-package.d.ts +1398 -0
  198. package/dist/types/packages/sdk/src/profile-external-dataset-package.d.ts.map +1 -0
  199. package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts +157 -24
  200. package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts.map +1 -1
  201. package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +111 -18
  202. package/dist/types/packages/sdk/src/taskset-authored-files.d.ts.map +1 -1
  203. package/dist/types/packages/sdk/src/taskset-authored-validation.d.ts.map +1 -1
  204. package/dist/types/packages/sdk/src/taskset-calibration-fixtures.d.ts +438 -0
  205. package/dist/types/packages/sdk/src/taskset-calibration-fixtures.d.ts.map +1 -0
  206. package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts +292 -38
  207. package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts.map +1 -1
  208. package/dist/types/packages/sdk/src/taskset-draft-authoring.d.ts.map +1 -1
  209. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +661 -103
  210. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -1
  211. package/dist/types/packages/sdk/src/taskset-draft-core.d.ts +227 -20
  212. package/dist/types/packages/sdk/src/taskset-draft-core.d.ts.map +1 -1
  213. package/dist/types/packages/sdk/src/taskset-draft-dataset-artifacts.d.ts +14 -14
  214. package/dist/types/packages/sdk/src/taskset-draft-dataset-sources.d.ts +17 -17
  215. package/dist/types/packages/sdk/src/taskset-draft-document.d.ts +147 -20
  216. package/dist/types/packages/sdk/src/taskset-draft-document.d.ts.map +1 -1
  217. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts +696 -42
  218. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts.map +1 -1
  219. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +256 -36
  220. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts.map +1 -1
  221. package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts +292 -38
  222. package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts.map +1 -1
  223. package/dist/types/packages/sdk/src/taskset-drafts.d.ts +2 -0
  224. package/dist/types/packages/sdk/src/taskset-drafts.d.ts.map +1 -1
  225. package/dist/types/packages/sdk/src/taskset-package-client.d.ts +1494 -26
  226. package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
  227. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts +746 -12
  228. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts.map +1 -1
  229. package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts +77 -3
  230. package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts.map +1 -1
  231. package/dist/types/packages/sdk/src/taskset-package-learning.d.ts +101 -11
  232. package/dist/types/packages/sdk/src/taskset-package-learning.d.ts.map +1 -1
  233. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +459 -39
  234. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts.map +1 -1
  235. package/dist/types/packages/sdk/src/training-acceptance.d.ts +10 -10
  236. package/dist/types/packages/sdk/src/training-candidate-decisions.d.ts +2 -2
  237. package/dist/types/packages/sdk/src/training-evaluation-results.d.ts +1 -1
  238. package/dist/types/packages/sdk/src/training-learning-batch.d.ts +376 -42
  239. package/dist/types/packages/sdk/src/training-learning-batch.d.ts.map +1 -1
  240. package/dist/types/packages/sdk/src/training-preparations.d.ts +3930 -0
  241. package/dist/types/packages/sdk/src/training-preparations.d.ts.map +1 -1
  242. package/dist/types/packages/sdk/src/training-project-client.d.ts +776 -8
  243. package/dist/types/packages/sdk/src/training-project-client.d.ts.map +1 -1
  244. package/dist/types/packages/sdk/src/training-project-contracts.d.ts +1161 -11
  245. package/dist/types/packages/sdk/src/training-project-contracts.d.ts.map +1 -1
  246. package/dist/types/packages/sdk/src/training.d.ts +2655 -24
  247. package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
  248. package/package.json +35 -3
  249. package/dist/chunk-2ZJRG3KL.js.map +0 -7
  250. package/dist/chunk-32H2EJRA.js.map +0 -7
  251. package/dist/chunk-7B44TQZD.js.map +0 -7
  252. package/dist/chunk-I2YM3UY4.js.map +0 -7
  253. package/dist/chunk-JA3KFK3U.js +0 -580
  254. package/dist/chunk-JA3KFK3U.js.map +0 -7
  255. package/dist/chunk-JCPLAIZL.js.map +0 -7
  256. package/dist/chunk-LGEF4S5I.js +0 -1229
  257. package/dist/chunk-LGEF4S5I.js.map +0 -7
  258. package/dist/chunk-PRRUBH2B.js +0 -314
  259. package/dist/chunk-PRRUBH2B.js.map +0 -7
  260. package/dist/chunk-W5TXWVFS.js.map +0 -7
  261. package/dist/chunk-Y4NGWGTA.js.map +0 -7
  262. /package/dist/{chunk-DSGGM2ME.js.map → chunk-4SZKRRTO.js.map} +0 -0
  263. /package/dist/{chunk-PJ2VLNJF.js.map → chunk-SGRYMU4C.js.map} +0 -0
@@ -0,0 +1,160 @@
1
+ import {
2
+ ExperimentImprovementCommandSchema,
3
+ ExperimentImprovementListSchema,
4
+ ExperimentImprovementOptionsSchema,
5
+ ExperimentImprovementStateSchema,
6
+ ExperimentImprovementTestRecipeSchema,
7
+ verifyExperimentImprovementHumanOptions,
8
+ verifyExperimentImprovementState
9
+ } from "./chunk-GDJRGRHA.js";
10
+ import {
11
+ fetchConnectedJson
12
+ } from "./chunk-T4APHDES.js";
13
+ import {
14
+ HarnessPolicySourcePackageSchema,
15
+ validateHarnessPolicySourcePackage
16
+ } from "./chunk-4NZW4LFB.js";
17
+ import {
18
+ ImmutableReleaseRefSchema,
19
+ contentHash,
20
+ sha256
21
+ } from "./chunk-QUOW6URQ.js";
22
+
23
+ // src/experiment-improvement-client.ts
24
+ import { z as z2 } from "zod";
25
+
26
+ // src/experiment-improvement-hosted-adoption.ts
27
+ import { z } from "zod";
28
+ var Id = z.string().min(1).max(240);
29
+ var Hash = z.string().regex(/^[a-f0-9]{64}$/);
30
+ var Commit = z.string().regex(/^[a-f0-9]{40}$/);
31
+ var HostedProfileCandidateExportSchema = z.object({
32
+ schemaVersion: z.literal("openpond.hostedProfileCandidateExport.v1"),
33
+ actorId: Id,
34
+ teamId: Id,
35
+ candidateId: Id,
36
+ candidateRevision: z.number().int().positive(),
37
+ projectId: Id.nullable(),
38
+ profileRef: z.object({ source: z.literal("openpond_git"), repositoryId: Id, profileId: Id }).strict(),
39
+ expectedCommit: Commit,
40
+ component: ExperimentImprovementStateSchema.shape.component,
41
+ baseRelease: ImmutableReleaseRefSchema,
42
+ frozenHash: Hash,
43
+ executableSourceHash: Hash,
44
+ protectedClosureHash: Hash,
45
+ compiler: z.object({ workspaceId: Id, name: z.string().max(500), repositoryId: Id }).strict(),
46
+ sourceManifest: z.object({ base64: z.string().max(28e5), contentHash: Hash, sizeBytes: z.number().int().positive().max(2e6) }).strict(),
47
+ policySource: HarnessPolicySourcePackageSchema,
48
+ qualification: z.object({
49
+ kind: z.enum(["owner_attested_local", "hosted_execution"]),
50
+ ownerActorId: Id,
51
+ teamId: Id,
52
+ originalEvidence: ImmutableReleaseRefSchema,
53
+ baseline: ImmutableReleaseRefSchema,
54
+ candidate: ImmutableReleaseRefSchema,
55
+ comparisonHash: Hash,
56
+ recipe: ExperimentImprovementTestRecipeSchema
57
+ }).strict(),
58
+ createdAt: z.string().datetime(),
59
+ contentHash: Hash
60
+ }).strict();
61
+ function verifyHostedProfileCandidateExport(raw) {
62
+ const value = HostedProfileCandidateExportSchema.parse(raw), { contentHash: hash, ...body } = value;
63
+ if (contentHash(body) !== hash || value.qualification.ownerActorId !== value.actorId || value.qualification.teamId !== value.teamId || value.qualification.recipe.externalDatasetBinding.profileId !== value.profileRef.profileId || value.qualification.recipe.externalDatasetBinding.protectedProfileClosureHash !== value.protectedClosureHash) throw new Error("Hosted candidate owner attestation identity differs.");
64
+ validateHarnessPolicySourcePackage(value.policySource);
65
+ return value;
66
+ }
67
+ var HostedProfileCandidateReceiptSchema = z.object({
68
+ schemaVersion: z.literal("openpond.hostedProfileCandidateAdoption.v1"),
69
+ id: Id,
70
+ operationId: Id,
71
+ actorId: Id,
72
+ teamId: Id,
73
+ candidateId: Id,
74
+ exportHash: Hash,
75
+ executionOrigin: z.enum(["owner_attested_local", "hosted_execution"]),
76
+ qualification: HostedProfileCandidateExportSchema.shape.qualification,
77
+ testedCandidateRelease: ImmutableReleaseRefSchema,
78
+ activeRelease: ImmutableReleaseRefSchema,
79
+ expectedCommit: Commit,
80
+ committedProfileGit: Commit,
81
+ executableSourceHash: Hash,
82
+ protectedClosureHash: Hash,
83
+ createdAt: z.string().datetime(),
84
+ contentHash: Hash
85
+ }).strict();
86
+ function verifyHostedProfileCandidateReceipt(raw) {
87
+ const value = HostedProfileCandidateReceiptSchema.parse(raw), { contentHash: hash, ...body } = value;
88
+ if (contentHash(body) !== hash || value.executionOrigin !== value.qualification.kind || value.qualification.ownerActorId !== value.actorId || value.qualification.teamId !== value.teamId) throw new Error("Hosted candidate receipt integrity differs.");
89
+ return value;
90
+ }
91
+ var HostedProfileCandidateCommandSchema = z.discriminatedUnion("operation", [
92
+ z.object({ operation: z.literal("adopt"), operationId: Id, export: HostedProfileCandidateExportSchema }).strict(),
93
+ z.object({ operation: z.enum(["read", "rollback"]), operationId: Id, adoptionOperationId: Id, profileRepositoryId: Id }).strict()
94
+ ]);
95
+
96
+ // src/experiment-improvement-client.ts
97
+ var ExperimentImprovementClient = class {
98
+ constructor(options) {
99
+ this.options = options;
100
+ const url = new URL(options.baseUrl);
101
+ if (!["http:", "https:"].includes(url.protocol) || url.username || url.password || url.hash || url.search || !options.apiKey.trim() || !options.teamId.trim() || !options.actorId.trim()) throw new Error("Select the authenticated Improve owner and API origin.");
102
+ this.origin = url.toString().replace(/\/+$/, "");
103
+ }
104
+ options;
105
+ origin;
106
+ async hostedCandidate(raw, signal) {
107
+ const request = HostedProfileCandidateCommandSchema.parse(raw);
108
+ if (request.operation === "adopt" && (request.export.actorId !== this.options.actorId || request.export.teamId !== this.options.teamId)) throw new Error("The hosted candidate export belongs to a different owner.");
109
+ const { response, value } = await fetchConnectedJson(this.options.fetch ?? fetch, `${this.origin}/v1/profile-candidate-adoptions`, { method: "POST", redirect: "error", headers: { Authorization: `Bearer ${this.options.apiKey}`, "Content-Type": "application/json", "X-OpenPond-Team-Id": this.options.teamId }, body: JSON.stringify({ teamId: this.options.teamId, command: request }), signal }, (status, code, message) => Object.assign(new Error(message), { status, code }));
110
+ if (!response.ok) {
111
+ const error = z2.object({ code: z2.string(), message: z2.string().optional(), error: z2.string().optional() }).passthrough().safeParse(value);
112
+ throw Object.assign(new Error(error.success ? error.data.message ?? error.data.error ?? error.data.code : "Hosted candidate operation failed."), { status: response.status, code: error.success ? error.data.code : void 0 });
113
+ }
114
+ const receipt = verifyHostedProfileCandidateReceipt(value);
115
+ if (receipt.actorId !== this.options.actorId || receipt.teamId !== this.options.teamId || receipt.operationId !== request.operationId || request.operation === "adopt" && (receipt.exportHash !== request.export.contentHash || receipt.candidateId !== request.export.candidateId || receipt.testedCandidateRelease.contentHash !== request.export.policySource.harnessRelease.contentHash)) throw new Error("Hosted candidate readback differs from the exact owner request.");
116
+ return receipt;
117
+ }
118
+ async command(raw, signal) {
119
+ const request = ExperimentImprovementCommandSchema.parse(raw), { response, value } = await fetchConnectedJson(this.options.fetch ?? fetch, `${this.origin}/v1/experiment-improvements`, { method: "POST", redirect: "error", headers: { Authorization: `Bearer ${this.options.apiKey}`, "Content-Type": "application/json", "X-OpenPond-Team-Id": this.options.teamId }, body: JSON.stringify({ teamId: this.options.teamId, request }), signal }, (status, code, message) => Object.assign(new Error(message), { status, code }));
120
+ if (!response.ok) {
121
+ const error = z2.object({ error: z2.string(), code: z2.string().optional() }).passthrough().safeParse(value);
122
+ throw Object.assign(new Error(error.success ? error.data.error : "The Improve operation failed."), { status: response.status, code: error.success ? error.data.code : void 0 });
123
+ }
124
+ if (request.operation === "options") {
125
+ const result = ExperimentImprovementOptionsSchema.parse(value);
126
+ if (result.teamId !== this.options.teamId || contentHash(result.evidence) !== contentHash(request.evidence)) throw new Error("The Improve choices changed their exact originating evidence.");
127
+ return result;
128
+ }
129
+ if (request.operation === "humanComparisonOptions") {
130
+ const result = verifyExperimentImprovementHumanOptions(value);
131
+ if (result.candidateId !== request.id || result.actorId !== this.options.actorId || result.teamId !== this.options.teamId) throw new Error("Human discovery belongs to another owner or candidate.");
132
+ return result;
133
+ }
134
+ if (request.operation === "instructions") {
135
+ const result = z2.object({ candidateId: z2.string(), candidateRevision: z2.number().int().positive(), path: z2.string(), text: z2.string().max(25e4), textHash: z2.string().regex(/^[a-f0-9]{64}$/), contentHash: z2.string().regex(/^[a-f0-9]{64}$/) }).strict().parse(value);
136
+ if (result.candidateId !== request.id || sha256(result.text) !== result.textHash) throw new Error("The candidate instructions belong to a different revision.");
137
+ return result;
138
+ }
139
+ const page = request.operation === "list" ? ExperimentImprovementListSchema.parse(value) : null;
140
+ if (request.operation === "list" && page && (page.states.length > request.limit || page.states.some((state, index) => request.cursor && state.id <= request.cursor || index > 0 && state.id <= page.states[index - 1].id) || page.nextCursor && (request.cursor && page.nextCursor <= request.cursor || page.states.some((state) => state.id > page.nextCursor)))) throw new Error("The retained candidate page changed its scan boundary.");
141
+ const states = page ? page.states : [value];
142
+ const parsed = states.map((item) => {
143
+ const state = verifyExperimentImprovementState(item);
144
+ if (state.actorId !== this.options.actorId || state.teamId !== this.options.teamId || "id" in request && state.id !== request.id) throw new Error("The Improve response belongs to a different owner or candidate.");
145
+ if (request.operation === "start" && state.requestHash !== contentHash(request.request)) throw new Error("The Improve request identity changed.");
146
+ return state;
147
+ });
148
+ return page ? { states: parsed, nextCursor: page.nextCursor } : parsed[0];
149
+ }
150
+ };
151
+
152
+ export {
153
+ HostedProfileCandidateExportSchema,
154
+ verifyHostedProfileCandidateExport,
155
+ HostedProfileCandidateReceiptSchema,
156
+ verifyHostedProfileCandidateReceipt,
157
+ HostedProfileCandidateCommandSchema,
158
+ ExperimentImprovementClient
159
+ };
160
+ //# sourceMappingURL=chunk-SXTC2GT6.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/experiment-improvement-client.ts", "../src/experiment-improvement-hosted-adoption.ts"],
4
+ "sourcesContent": ["import {z} from \"zod\";\nimport {contentHash,sha256} from \"@openpond/harness\";\nimport {verifyExperimentImprovementHumanOptions,ExperimentImprovementListSchema,ExperimentImprovementOptionsSchema,ExperimentImprovementCommandSchema,verifyExperimentImprovementState,type ExperimentImprovementCommand} from \"./experiment-improvement-contracts.js\";\nimport {HostedProfileCandidateCommandSchema,verifyHostedProfileCandidateReceipt} from \"./experiment-improvement-hosted-adoption.js\";\nimport {fetchConnectedJson} from \"./connected-evidence-http.js\";\nexport class ExperimentImprovementClient {\n private readonly origin:string;\n constructor(private readonly options:{baseUrl:string;apiKey:string;teamId:string;actorId:string;fetch?:typeof fetch}){const url=new URL(options.baseUrl);if(![\"http:\",\"https:\"].includes(url.protocol)||url.username||url.password||url.hash||url.search||!options.apiKey.trim()||!options.teamId.trim()||!options.actorId.trim())throw new Error(\"Select the authenticated Improve owner and API origin.\");this.origin=url.toString().replace(/\\/+$/,\"\");}\n async hostedCandidate(raw:import(\"zod\").input<typeof HostedProfileCandidateCommandSchema>,signal?:AbortSignal){const request=HostedProfileCandidateCommandSchema.parse(raw);if(request.operation===\"adopt\"&&(request.export.actorId!==this.options.actorId||request.export.teamId!==this.options.teamId))throw new Error(\"The hosted candidate export belongs to a different owner.\");const {response,value}=await fetchConnectedJson(this.options.fetch??fetch,`${this.origin}/v1/profile-candidate-adoptions`,{method:\"POST\",redirect:\"error\",headers:{Authorization:`Bearer ${this.options.apiKey}`,\"Content-Type\":\"application/json\",\"X-OpenPond-Team-Id\":this.options.teamId},body:JSON.stringify({teamId:this.options.teamId,command:request}),signal},(status,code,message)=>Object.assign(new Error(message),{status,code}));if(!response.ok){const error=z.object({code:z.string(),message:z.string().optional(),error:z.string().optional()}).passthrough().safeParse(value);throw Object.assign(new Error(error.success?error.data.message??error.data.error??error.data.code:\"Hosted candidate operation failed.\"),{status:response.status,code:error.success?error.data.code:undefined});}const receipt=verifyHostedProfileCandidateReceipt(value);if(receipt.actorId!==this.options.actorId||receipt.teamId!==this.options.teamId||receipt.operationId!==request.operationId||request.operation===\"adopt\"&&(receipt.exportHash!==request.export.contentHash||receipt.candidateId!==request.export.candidateId||receipt.testedCandidateRelease.contentHash!==request.export.policySource.harnessRelease.contentHash))throw new Error(\"Hosted candidate readback differs from the exact owner request.\");return receipt;}\n async command(raw:ExperimentImprovementCommand,signal?:AbortSignal){const request=ExperimentImprovementCommandSchema.parse(raw),{response,value}=await fetchConnectedJson(this.options.fetch??fetch,`${this.origin}/v1/experiment-improvements`,{method:\"POST\",redirect:\"error\",headers:{Authorization:`Bearer ${this.options.apiKey}`,\"Content-Type\":\"application/json\",\"X-OpenPond-Team-Id\":this.options.teamId},body:JSON.stringify({teamId:this.options.teamId,request}),signal},(status,code,message)=>Object.assign(new Error(message),{status,code}));\n if(!response.ok){const error=z.object({error:z.string(),code:z.string().optional()}).passthrough().safeParse(value);throw Object.assign(new Error(error.success?error.data.error:\"The Improve operation failed.\"),{status:response.status,code:error.success?error.data.code:undefined});}\n if(request.operation===\"options\"){const result=ExperimentImprovementOptionsSchema.parse(value);if(result.teamId!==this.options.teamId||contentHash(result.evidence)!==contentHash(request.evidence))throw new Error(\"The Improve choices changed their exact originating evidence.\");return result;}\n if(request.operation===\"humanComparisonOptions\"){const result=verifyExperimentImprovementHumanOptions(value);if(result.candidateId!==request.id||result.actorId!==this.options.actorId||result.teamId!==this.options.teamId)throw new Error(\"Human discovery belongs to another owner or candidate.\");return result;}\n if(request.operation===\"instructions\"){const result=z.object({candidateId:z.string(),candidateRevision:z.number().int().positive(),path:z.string(),text:z.string().max(250000),textHash:z.string().regex(/^[a-f0-9]{64}$/),contentHash:z.string().regex(/^[a-f0-9]{64}$/)}).strict().parse(value);if(result.candidateId!==request.id||sha256(result.text)!==result.textHash)throw new Error(\"The candidate instructions belong to a different revision.\");return result;}\n const page=request.operation===\"list\"?ExperimentImprovementListSchema.parse(value):null;if(request.operation===\"list\"&&page&&(page.states.length>request.limit||page.states.some((state,index)=>request.cursor&&state.id<=request.cursor||index>0&&state.id<=page.states[index-1]!.id)||page.nextCursor&&(request.cursor&&page.nextCursor<=request.cursor||page.states.some(state=>state.id>page.nextCursor!))))throw new Error(\"The retained candidate page changed its scan boundary.\");\n const states=page? page.states:[value];const parsed=states.map(item=>{const state=verifyExperimentImprovementState(item);if(state.actorId!==this.options.actorId||state.teamId!==this.options.teamId||\"id\" in request&&state.id!==request.id)throw new Error(\"The Improve response belongs to a different owner or candidate.\");if(request.operation===\"start\"&&state.requestHash!==contentHash(request.request))throw new Error(\"The Improve request identity changed.\");return state;});return page?{states:parsed,nextCursor:page.nextCursor}:parsed[0]!;\n }\n}\n", "import {z} from \"zod\";\nimport {contentHash,ImmutableReleaseRefSchema,HarnessPolicySourcePackageSchema,validateHarnessPolicySourcePackage} from \"@openpond/harness\";\nimport {ExperimentImprovementTestRecipeSchema,ExperimentImprovementStateSchema} from \"./experiment-improvement-contracts.js\";\nconst Id=z.string().min(1).max(240),Hash=z.string().regex(/^[a-f0-9]{64}$/),Commit=z.string().regex(/^[a-f0-9]{40}$/);\n/** This export attests native owner execution. It never asserts a hosted run,\n * grants training eligibility, or authorizes automatic candidate adoption. */\nexport const HostedProfileCandidateExportSchema=z.object({schemaVersion:z.literal(\"openpond.hostedProfileCandidateExport.v1\"),\n actorId:Id,teamId:Id,candidateId:Id,candidateRevision:z.number().int().positive(),projectId:Id.nullable(),\n profileRef:z.object({source:z.literal(\"openpond_git\"),repositoryId:Id,profileId:Id}).strict(),expectedCommit:Commit,\n component:ExperimentImprovementStateSchema.shape.component,baseRelease:ImmutableReleaseRefSchema,\n frozenHash:Hash,executableSourceHash:Hash,protectedClosureHash:Hash,\n compiler:z.object({workspaceId:Id,name:z.string().max(500),repositoryId:Id}).strict(),\n sourceManifest:z.object({base64:z.string().max(2_800_000),contentHash:Hash,sizeBytes:z.number().int().positive().max(2_000_000)}).strict(),\n policySource:HarnessPolicySourcePackageSchema,\n qualification:z.object({kind:z.enum([\"owner_attested_local\",\"hosted_execution\"]),ownerActorId:Id,teamId:Id,originalEvidence:ImmutableReleaseRefSchema,\n baseline:ImmutableReleaseRefSchema,candidate:ImmutableReleaseRefSchema,comparisonHash:Hash,recipe:ExperimentImprovementTestRecipeSchema}).strict(),\n createdAt:z.string().datetime(),contentHash:Hash}).strict();\nexport type HostedProfileCandidateExport=z.infer<typeof HostedProfileCandidateExportSchema>;\nexport function verifyHostedProfileCandidateExport(raw:unknown){const value=HostedProfileCandidateExportSchema.parse(raw),{contentHash:hash,...body}=value;\n if(contentHash(body)!==hash||value.qualification.ownerActorId!==value.actorId||value.qualification.teamId!==value.teamId||value.qualification.recipe.externalDatasetBinding.profileId!==value.profileRef.profileId||value.qualification.recipe.externalDatasetBinding.protectedProfileClosureHash!==value.protectedClosureHash)throw new Error(\"Hosted candidate owner attestation identity differs.\");\n validateHarnessPolicySourcePackage(value.policySource);return value;\n}\nexport const HostedProfileCandidateReceiptSchema=z.object({schemaVersion:z.literal(\"openpond.hostedProfileCandidateAdoption.v1\"),id:Id,operationId:Id,actorId:Id,teamId:Id,\n candidateId:Id,exportHash:Hash,executionOrigin:z.enum([\"owner_attested_local\",\"hosted_execution\"]),qualification:HostedProfileCandidateExportSchema.shape.qualification,\n testedCandidateRelease:ImmutableReleaseRefSchema,activeRelease:ImmutableReleaseRefSchema,expectedCommit:Commit,committedProfileGit:Commit,\n executableSourceHash:Hash,protectedClosureHash:Hash,createdAt:z.string().datetime(),contentHash:Hash}).strict();\nexport type HostedProfileCandidateReceipt=z.infer<typeof HostedProfileCandidateReceiptSchema>;\nexport function verifyHostedProfileCandidateReceipt(raw:unknown){const value=HostedProfileCandidateReceiptSchema.parse(raw),{contentHash:hash,...body}=value;if(contentHash(body)!==hash||value.executionOrigin!==value.qualification.kind||value.qualification.ownerActorId!==value.actorId||value.qualification.teamId!==value.teamId)throw new Error(\"Hosted candidate receipt integrity differs.\");return value;}\nexport const HostedProfileCandidateCommandSchema=z.discriminatedUnion(\"operation\",[\n z.object({operation:z.literal(\"adopt\"),operationId:Id,export:HostedProfileCandidateExportSchema}).strict(),\n z.object({operation:z.enum([\"read\",\"rollback\"]),operationId:Id,adoptionOperationId:Id,profileRepositoryId:Id}).strict(),\n]);\n"],
5
+ "mappings": "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",
6
+ "names": ["z", "z"]
7
+ }
@@ -0,0 +1,74 @@
1
+ // src/connected-evidence-http.ts
2
+ var MAX_RESPONSE_BYTES = 8 * 1024 * 1024;
3
+ async function fetchConnectedJson(fetcher, url, init, error) {
4
+ const controller = new AbortController(), external = init.signal;
5
+ const forward = () => controller.abort(external?.reason);
6
+ if (external?.aborted) forward();
7
+ else external?.addEventListener("abort", forward, { once: true });
8
+ const timer = setTimeout(() => controller.abort(new Error("Connected evidence request timed out.")), 6e4);
9
+ let reader;
10
+ const abortReader = () => {
11
+ if (reader) void reader.cancel(controller.signal.reason).catch(() => void 0);
12
+ };
13
+ controller.signal.addEventListener("abort", abortReader, { once: true });
14
+ const abortPromise = new Promise((_, reject) => {
15
+ const abort = () => reject(controller.signal.reason ?? new DOMException("Request aborted", "AbortError"));
16
+ if (controller.signal.aborted) abort();
17
+ else controller.signal.addEventListener("abort", abort, { once: true });
18
+ });
19
+ try {
20
+ const pendingResponse = fetcher(url, { ...init, signal: controller.signal }).then((response2) => {
21
+ if (controller.signal.aborted) {
22
+ void response2.body?.cancel(controller.signal.reason).catch(() => void 0);
23
+ throw controller.signal.reason;
24
+ }
25
+ return response2;
26
+ });
27
+ const response = await Promise.race([pendingResponse, abortPromise]);
28
+ const declared = response.headers.get("content-length");
29
+ reader = response.body?.getReader();
30
+ if (controller.signal.aborted) {
31
+ await reader?.cancel(controller.signal.reason);
32
+ throw controller.signal.reason;
33
+ }
34
+ if (declared && Number(declared) > MAX_RESPONSE_BYTES) {
35
+ await reader?.cancel();
36
+ throw error(502, "connected_response_too_large", "Connected evidence response exceeds 8 MiB.");
37
+ }
38
+ const chunks = [];
39
+ let size = 0;
40
+ if (reader) while (true) {
41
+ const part = await Promise.race([reader.read(), abortPromise]);
42
+ if (part.done) break;
43
+ size += part.value.byteLength;
44
+ if (size > MAX_RESPONSE_BYTES) {
45
+ await reader.cancel();
46
+ throw error(502, "connected_response_too_large", "Connected evidence response exceeds 8 MiB.");
47
+ }
48
+ chunks.push(part.value);
49
+ }
50
+ const bytes = new Uint8Array(size);
51
+ let offset = 0;
52
+ for (const chunk of chunks) {
53
+ bytes.set(chunk, offset);
54
+ offset += chunk.byteLength;
55
+ }
56
+ let value;
57
+ try {
58
+ value = JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(bytes));
59
+ } catch {
60
+ throw error(502, "connected_response_invalid", "Connected evidence response is not valid JSON.");
61
+ }
62
+ return { response, value };
63
+ } finally {
64
+ clearTimeout(timer);
65
+ external?.removeEventListener("abort", forward);
66
+ controller.signal.removeEventListener("abort", abortReader);
67
+ reader?.releaseLock();
68
+ }
69
+ }
70
+
71
+ export {
72
+ fetchConnectedJson
73
+ };
74
+ //# sourceMappingURL=chunk-T4APHDES.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/connected-evidence-http.ts"],
4
+ "sourcesContent": ["const MAX_RESPONSE_BYTES = 8 * 1024 * 1024;\n/** Bounds real streaming responses, including custom fetch adapters that do not honor abort themselves. */\nexport async function fetchConnectedJson(fetcher: typeof fetch, url: string, init: RequestInit, error: (status: number, code: string, message: string) => Error) {\n const controller = new AbortController(), external = init.signal;\n const forward = () => controller.abort(external?.reason);\n if (external?.aborted) forward(); else external?.addEventListener(\"abort\", forward, { once: true });\n const timer = setTimeout(() => controller.abort(new Error(\"Connected evidence request timed out.\")), 60_000);\n let reader: ReadableStreamDefaultReader<Uint8Array> | undefined;\n const abortReader = () => { if (reader) void reader.cancel(controller.signal.reason).catch(() => undefined); };\n controller.signal.addEventListener(\"abort\", abortReader, { once: true });\n const abortPromise = new Promise<never>((_, reject) => {\n const abort = () => reject(controller.signal.reason ?? new DOMException(\"Request aborted\", \"AbortError\"));\n if (controller.signal.aborted) abort(); else controller.signal.addEventListener(\"abort\", abort, { once: true });\n });\n try {\n const pendingResponse = fetcher(url, { ...init, signal: controller.signal }).then(response => {\n if (controller.signal.aborted) { void response.body?.cancel(controller.signal.reason).catch(() => undefined); throw controller.signal.reason; }\n return response;\n });\n const response = await Promise.race([pendingResponse, abortPromise]);\n const declared = response.headers.get(\"content-length\");\n reader = response.body?.getReader();\n if (controller.signal.aborted) { await reader?.cancel(controller.signal.reason); throw controller.signal.reason; }\n if (declared && Number(declared) > MAX_RESPONSE_BYTES) { await reader?.cancel(); throw error(502, \"connected_response_too_large\", \"Connected evidence response exceeds 8 MiB.\"); }\n const chunks: Uint8Array[] = []; let size = 0;\n if (reader) while (true) {\n const part = await Promise.race([reader.read(), abortPromise]);\n if (part.done) break;\n size += part.value.byteLength;\n if (size > MAX_RESPONSE_BYTES) { await reader.cancel(); throw error(502, \"connected_response_too_large\", \"Connected evidence response exceeds 8 MiB.\"); }\n chunks.push(part.value);\n }\n const bytes = new Uint8Array(size); let offset = 0;\n for (const chunk of chunks) { bytes.set(chunk, offset); offset += chunk.byteLength; }\n let value: unknown;\n try { value = JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes)); }\n catch { throw error(502, \"connected_response_invalid\", \"Connected evidence response is not valid JSON.\"); }\n return { response, value };\n } finally { clearTimeout(timer); external?.removeEventListener(\"abort\", forward); controller.signal.removeEventListener(\"abort\", abortReader); reader?.releaseLock(); }\n}\n"],
5
+ "mappings": ";AAAA,IAAM,qBAAqB,IAAI,OAAO;AAEtC,eAAsB,mBAAmB,SAAuB,KAAa,MAAmB,OAAiE;AAC/J,QAAM,aAAa,IAAI,gBAAgB,GAAG,WAAW,KAAK;AAC1D,QAAM,UAAU,MAAM,WAAW,MAAM,UAAU,MAAM;AACvD,MAAI,UAAU,QAAS,SAAQ;AAAA,MAAQ,WAAU,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AAClG,QAAM,QAAQ,WAAW,MAAM,WAAW,MAAM,IAAI,MAAM,uCAAuC,CAAC,GAAG,GAAM;AAC3G,MAAI;AACJ,QAAM,cAAc,MAAM;AAAE,QAAI,OAAQ,MAAK,OAAO,OAAO,WAAW,OAAO,MAAM,EAAE,MAAM,MAAM,MAAS;AAAA,EAAG;AAC7G,aAAW,OAAO,iBAAiB,SAAS,aAAa,EAAE,MAAM,KAAK,CAAC;AACvE,QAAM,eAAe,IAAI,QAAe,CAAC,GAAG,WAAW;AACrD,UAAM,QAAQ,MAAM,OAAO,WAAW,OAAO,UAAU,IAAI,aAAa,mBAAmB,YAAY,CAAC;AACxG,QAAI,WAAW,OAAO,QAAS,OAAM;AAAA,QAAQ,YAAW,OAAO,iBAAiB,SAAS,OAAO,EAAE,MAAM,KAAK,CAAC;AAAA,EAChH,CAAC;AACD,MAAI;AACF,UAAM,kBAAkB,QAAQ,KAAK,EAAE,GAAG,MAAM,QAAQ,WAAW,OAAO,CAAC,EAAE,KAAK,CAAAA,cAAY;AAC5F,UAAI,WAAW,OAAO,SAAS;AAAE,aAAKA,UAAS,MAAM,OAAO,WAAW,OAAO,MAAM,EAAE,MAAM,MAAM,MAAS;AAAG,cAAM,WAAW,OAAO;AAAA,MAAQ;AAC9I,aAAOA;AAAA,IACT,CAAC;AACD,UAAM,WAAW,MAAM,QAAQ,KAAK,CAAC,iBAAiB,YAAY,CAAC;AACnE,UAAM,WAAW,SAAS,QAAQ,IAAI,gBAAgB;AACtD,aAAS,SAAS,MAAM,UAAU;AAClC,QAAI,WAAW,OAAO,SAAS;AAAE,YAAM,QAAQ,OAAO,WAAW,OAAO,MAAM;AAAG,YAAM,WAAW,OAAO;AAAA,IAAQ;AACjH,QAAI,YAAY,OAAO,QAAQ,IAAI,oBAAoB;AAAE,YAAM,QAAQ,OAAO;AAAG,YAAM,MAAM,KAAK,gCAAgC,4CAA4C;AAAA,IAAG;AACjL,UAAM,SAAuB,CAAC;AAAG,QAAI,OAAO;AAC5C,QAAI,OAAQ,QAAO,MAAM;AACvB,YAAM,OAAO,MAAM,QAAQ,KAAK,CAAC,OAAO,KAAK,GAAG,YAAY,CAAC;AAC7D,UAAI,KAAK,KAAM;AACf,cAAQ,KAAK,MAAM;AACnB,UAAI,OAAO,oBAAoB;AAAE,cAAM,OAAO,OAAO;AAAG,cAAM,MAAM,KAAK,gCAAgC,4CAA4C;AAAA,MAAG;AACxJ,aAAO,KAAK,KAAK,KAAK;AAAA,IACxB;AACA,UAAM,QAAQ,IAAI,WAAW,IAAI;AAAG,QAAI,SAAS;AACjD,eAAW,SAAS,QAAQ;AAAE,YAAM,IAAI,OAAO,MAAM;AAAG,gBAAU,MAAM;AAAA,IAAY;AACpF,QAAI;AACJ,QAAI;AAAE,cAAQ,KAAK,MAAM,IAAI,YAAY,SAAS,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;AAAA,IAAG,QAC7E;AAAE,YAAM,MAAM,KAAK,8BAA8B,gDAAgD;AAAA,IAAG;AAC1G,WAAO,EAAE,UAAU,MAAM;AAAA,EAC3B,UAAE;AAAU,iBAAa,KAAK;AAAG,cAAU,oBAAoB,SAAS,OAAO;AAAG,eAAW,OAAO,oBAAoB,SAAS,WAAW;AAAG,YAAQ,YAAY;AAAA,EAAG;AACxK;",
6
+ "names": ["response"]
7
+ }