@holoscript/core 7.0.0 → 8.0.0

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 (345) hide show
  1. package/README.md +2 -2
  2. package/bin/holoscript.cjs +3 -0
  3. package/dist/GLTFPipeline-276GE64O.js +16 -0
  4. package/dist/GLTFPipeline-M7WSSJED.cjs +37 -0
  5. package/dist/HoloScriptPlusParser-7FBIFUFC.js +693 -0
  6. package/dist/HoloScriptPlusParser-A2W7OCN2.cjs +698 -0
  7. package/dist/HoloScriptPlusParser-F2Z56FJR.js +10 -0
  8. package/dist/HoloScriptPlusParser-WKHRIH6T.cjs +27 -0
  9. package/dist/HoloScriptRuntime-3URVTKPJ.js +10 -0
  10. package/dist/HoloScriptRuntime-SXEAEU2N.cjs +19 -0
  11. package/dist/USDZExporter-3FWJ25JI.cjs +1037 -0
  12. package/dist/USDZExporter-D2HQLQYK.js +1035 -0
  13. package/dist/agents/index.cjs +19 -0
  14. package/dist/agents/index.d.ts +100 -0
  15. package/dist/agents/index.js +17 -0
  16. package/dist/chunk-23J755AR.js +1046 -0
  17. package/dist/chunk-253GBQZY.cjs +627 -0
  18. package/dist/chunk-25IQCHTO.cjs +781 -0
  19. package/dist/chunk-2BSMSUCE.js +1941 -0
  20. package/dist/chunk-2M2DPHKB.js +762 -0
  21. package/dist/chunk-2YSNA2F2.cjs +1274 -0
  22. package/dist/chunk-3AO425MZ.cjs +886 -0
  23. package/dist/chunk-3FOKASKO.cjs +348 -0
  24. package/dist/chunk-3HYYMEXI.cjs +56578 -0
  25. package/dist/chunk-3NFFOWGG.js +4287 -0
  26. package/dist/chunk-3WZEJHUQ.cjs +116 -0
  27. package/dist/chunk-4C57PR42.js +468 -0
  28. package/dist/chunk-4N4SXXWF.js +769 -0
  29. package/dist/chunk-4PDEPEQW.cjs +41 -0
  30. package/dist/chunk-4R6SBXDB.js +45 -0
  31. package/dist/chunk-4V2E7U7Q.cjs +2015 -0
  32. package/dist/chunk-5FSKKMR7.cjs +2092 -0
  33. package/dist/chunk-5GLCTO44.js +161 -0
  34. package/dist/chunk-5JEU52DW.js +382 -0
  35. package/dist/chunk-5S7RKFGR.cjs +446 -0
  36. package/dist/chunk-5WUNN6ZN.cjs +428 -0
  37. package/dist/chunk-62FBK3B7.js +70 -0
  38. package/dist/chunk-6CTRH7HT.cjs +1985 -0
  39. package/dist/chunk-6DPSFNJB.cjs +847 -0
  40. package/dist/chunk-6EX3I5P4.cjs +130 -0
  41. package/dist/chunk-73FELZVJ.cjs +611 -0
  42. package/dist/chunk-7CUEMLDZ.cjs +6445 -0
  43. package/dist/chunk-7HIASF7S.cjs +814 -0
  44. package/dist/chunk-A6KINLZJ.js +236 -0
  45. package/dist/chunk-AIA52I7T.cjs +543 -0
  46. package/dist/chunk-ANXZFVY2.js +113 -0
  47. package/dist/chunk-AYBXB26F.js +2176 -0
  48. package/dist/chunk-B4TFTDG4.js +449 -0
  49. package/dist/chunk-BE4UJCQT.js +623 -0
  50. package/dist/chunk-BRQJKJGT.cjs +20 -0
  51. package/dist/chunk-C2A5DUMF.cjs +689 -0
  52. package/dist/chunk-C37BHB7N.cjs +636 -0
  53. package/dist/chunk-CBJY23VL.js +126 -0
  54. package/dist/chunk-CIWWXYHZ.cjs +50 -0
  55. package/dist/chunk-CXFDRBQU.cjs +672 -0
  56. package/dist/chunk-D54CNIAJ.cjs +413 -0
  57. package/dist/chunk-DAJXW4KX.js +725 -0
  58. package/dist/chunk-DTGBOSEM.cjs +319 -0
  59. package/dist/chunk-E7JP3BS3.cjs +61 -0
  60. package/dist/chunk-EKBKLK7P.js +1169 -0
  61. package/dist/chunk-EKYL4PE3.cjs +404 -0
  62. package/dist/chunk-EUDQTK7N.cjs +4310 -0
  63. package/dist/chunk-EXKSFGSX.cjs +274 -0
  64. package/dist/chunk-EXUP2BUM.cjs +1173 -0
  65. package/dist/chunk-F43YAA34.js +623 -0
  66. package/dist/chunk-FDSGHPAK.js +130 -0
  67. package/dist/chunk-FEWUHQNM.cjs +144 -0
  68. package/dist/chunk-FGGJQRLZ.js +270 -0
  69. package/dist/chunk-FHP6LXJS.js +415 -0
  70. package/dist/chunk-FJPADH77.cjs +666 -0
  71. package/dist/chunk-FYSPZT4V.cjs +169 -0
  72. package/dist/chunk-GIOYPNTH.js +5575 -0
  73. package/dist/chunk-GJNCFRJU.cjs +125 -0
  74. package/dist/chunk-GMP623FG.cjs +1508 -0
  75. package/dist/chunk-GQHQOPXZ.cjs +5580 -0
  76. package/dist/chunk-GQT4TYKY.cjs +4381 -0
  77. package/dist/chunk-GTU2Z2WW.cjs +262 -0
  78. package/dist/chunk-GYZE55MO.js +2007 -0
  79. package/dist/chunk-GZG4KA4E.js +529 -0
  80. package/dist/chunk-H652NHX5.js +600 -0
  81. package/dist/chunk-HCCQLAA4.cjs +74 -0
  82. package/dist/chunk-HINXWAOD.cjs +1049 -0
  83. package/dist/chunk-HYNTS5CP.js +422 -0
  84. package/dist/chunk-HZSPDCXV.cjs +457 -0
  85. package/dist/chunk-HZTDET3N.js +1399 -0
  86. package/dist/chunk-I6XZ5DZF.cjs +488 -0
  87. package/dist/chunk-ILRBGFVD.cjs +72 -0
  88. package/dist/chunk-IPWSXCCN.js +1183 -0
  89. package/dist/chunk-IUTY5WQ2.cjs +424 -0
  90. package/dist/chunk-IVSZDECV.js +882 -0
  91. package/dist/chunk-IVY74O6C.js +247 -0
  92. package/dist/chunk-IZM5VQZD.js +714 -0
  93. package/dist/chunk-J32ZJZJH.js +554 -0
  94. package/dist/chunk-J6M4FPK5.js +421 -0
  95. package/dist/chunk-JC5YBPSF.cjs +984 -0
  96. package/dist/chunk-JCLBKPMX.js +3813 -0
  97. package/dist/chunk-JD7CIZ33.js +1949 -0
  98. package/dist/chunk-JIYN45TV.cjs +2525 -0
  99. package/dist/chunk-JJBE3TIH.cjs +1189 -0
  100. package/dist/chunk-JX7YL6ZE.js +2252 -0
  101. package/dist/chunk-K4VVR7CN.cjs +2433 -0
  102. package/dist/chunk-KEFNV2WM.cjs +2257 -0
  103. package/dist/chunk-KH4CNH66.cjs +424 -0
  104. package/dist/chunk-KJLB4OPV.js +5731 -0
  105. package/dist/chunk-KKFZ3B6J.cjs +557 -0
  106. package/dist/chunk-KKP7JKN4.cjs +6002 -0
  107. package/dist/chunk-KPJL34Y7.cjs +186 -0
  108. package/dist/chunk-KQCN6AKJ.cjs +3042 -0
  109. package/dist/chunk-KVRSTFNH.cjs +72 -0
  110. package/dist/chunk-LICPB5HZ.cjs +1409 -0
  111. package/dist/chunk-LM2VU56C.cjs +37 -0
  112. package/dist/chunk-M56JSP4A.js +400 -0
  113. package/dist/chunk-MBOOR7X4.js +18 -0
  114. package/dist/chunk-MGE5Z4GS.js +608 -0
  115. package/dist/chunk-MXFUTKCO.js +56 -0
  116. package/dist/chunk-MYY4PMWX.cjs +264 -0
  117. package/dist/chunk-N75IH2HY.js +258 -0
  118. package/dist/chunk-NBMHU6SW.js +669 -0
  119. package/dist/chunk-NG77ATEW.cjs +778 -0
  120. package/dist/chunk-NGKREZ36.js +6384 -0
  121. package/dist/chunk-NHWSN2SD.cjs +718 -0
  122. package/dist/chunk-NV4VMVXU.js +421 -0
  123. package/dist/chunk-NW5G5FBQ.js +215 -0
  124. package/dist/chunk-NXZFOPVD.cjs +5737 -0
  125. package/dist/chunk-OBIYPYYS.cjs +1993 -0
  126. package/dist/chunk-OIQYIIO3.cjs +473 -0
  127. package/dist/chunk-OL46QLBJ.js +61 -0
  128. package/dist/chunk-OMXII44L.js +5386 -0
  129. package/dist/chunk-OR4Q2BGL.cjs +759 -0
  130. package/dist/chunk-OSYNRVOV.cjs +243 -0
  131. package/dist/chunk-PGANYCAG.cjs +220 -0
  132. package/dist/chunk-PHENW4MQ.js +65 -0
  133. package/dist/chunk-PHVRG4I2.js +844 -0
  134. package/dist/chunk-Q56TT7IL.js +483 -0
  135. package/dist/chunk-QPOQ7VPI.js +1491 -0
  136. package/dist/chunk-QPSKHBJP.js +5963 -0
  137. package/dist/chunk-QXH7QDSZ.js +1989 -0
  138. package/dist/chunk-R75BSDH7.cjs +50 -0
  139. package/dist/chunk-RARB3MBR.js +207 -0
  140. package/dist/chunk-RVBHAXFG.js +56160 -0
  141. package/dist/chunk-S3MDHNKB.cjs +490 -0
  142. package/dist/chunk-S4W6Z2MN.js +2426 -0
  143. package/dist/chunk-S6YWHCKV.cjs +410 -0
  144. package/dist/chunk-SIEXCILW.js +229 -0
  145. package/dist/chunk-SJBGLS25.cjs +2196 -0
  146. package/dist/chunk-SLU6UPJI.cjs +410 -0
  147. package/dist/chunk-SMIWS6DE.cjs +212 -0
  148. package/dist/chunk-T2QCTZMO.js +811 -0
  149. package/dist/chunk-T5J7ZKP3.cjs +4885 -0
  150. package/dist/chunk-TDCNJHWO.js +341 -0
  151. package/dist/chunk-TG7O4WBC.js +406 -0
  152. package/dist/chunk-THCK6ECW.js +2085 -0
  153. package/dist/chunk-TJHVSBP2.js +439 -0
  154. package/dist/chunk-TVHSPJ4N.cjs +606 -0
  155. package/dist/chunk-U44IKGG7.cjs +5390 -0
  156. package/dist/chunk-UJXISJBN.js +487 -0
  157. package/dist/chunk-UM6C3CGK.js +4375 -0
  158. package/dist/chunk-UMABK6SI.js +686 -0
  159. package/dist/chunk-UOIGFQXC.cjs +9750 -0
  160. package/dist/chunk-URG2SJLK.js +2521 -0
  161. package/dist/chunk-V6MKC2FZ.js +979 -0
  162. package/dist/chunk-VECQYRXL.js +474 -0
  163. package/dist/chunk-VJ3L7CHT.cjs +169 -0
  164. package/dist/chunk-VMLKSV26.js +1216 -0
  165. package/dist/chunk-VVKVQZI6.js +55 -0
  166. package/dist/chunk-W6RW64BB.cjs +1219 -0
  167. package/dist/chunk-W7VDOASB.cjs +639 -0
  168. package/dist/chunk-WDT3JTGM.cjs +483 -0
  169. package/dist/chunk-WJIHFLMJ.js +404 -0
  170. package/dist/chunk-WKX5AMOY.js +309 -0
  171. package/dist/chunk-WNNE3PO3.js +34 -0
  172. package/dist/chunk-WRKUDAZJ.js +3038 -0
  173. package/dist/chunk-WRLUBRKS.cjs +1943 -0
  174. package/dist/chunk-WRNEH5MO.js +3169 -0
  175. package/dist/chunk-WRWEX5ZF.js +658 -0
  176. package/dist/chunk-X3GJPRVK.cjs +3246 -0
  177. package/dist/chunk-XHIV6326.cjs +793 -0
  178. package/dist/chunk-XIVIE43A.cjs +729 -0
  179. package/dist/chunk-XJAN7CZG.cjs +432 -0
  180. package/dist/chunk-XKTPFXGA.js +164 -0
  181. package/dist/chunk-XL6INWKT.js +121 -0
  182. package/dist/chunk-XSFNHP2E.js +632 -0
  183. package/dist/chunk-XT6JY5W5.js +9684 -0
  184. package/dist/chunk-XUILI4KB.cjs +430 -0
  185. package/dist/chunk-XUUVDHIF.cjs +3962 -0
  186. package/dist/chunk-YF2I3MV3.js +46 -0
  187. package/dist/chunk-YIMN575O.js +4847 -0
  188. package/dist/chunk-YIVFJNYV.js +176 -0
  189. package/dist/chunk-YKGPCZEE.cjs +237 -0
  190. package/dist/chunk-YN6V7R3L.cjs +327 -0
  191. package/dist/chunk-YQELFNJV.js +39 -0
  192. package/dist/chunk-YYXH45E2.js +426 -0
  193. package/dist/chunk-ZBQXLH2L.js +756 -0
  194. package/dist/chunk-ZDSYWBIE.cjs +69 -0
  195. package/dist/chunk-ZU7NIRT6.js +325 -0
  196. package/dist/chunk-ZZ7RO2UQ.js +1243 -0
  197. package/dist/chunk-ZZEI7MV4.js +778 -0
  198. package/dist/cli/holoscript-runner.cjs +2255 -0
  199. package/dist/cli/holoscript-runner.js +2230 -0
  200. package/dist/codebase/index.cjs +336 -0
  201. package/dist/codebase/index.js +331 -0
  202. package/dist/compiler/agent-inference.cjs +31 -0
  203. package/dist/compiler/agent-inference.js +8 -0
  204. package/dist/compiler/android-xr.cjs +24 -0
  205. package/dist/compiler/android-xr.js +14 -0
  206. package/dist/compiler/android.cjs +24 -0
  207. package/dist/compiler/android.js +14 -0
  208. package/dist/compiler/ar.cjs +23 -0
  209. package/dist/compiler/ar.js +11 -0
  210. package/dist/compiler/babylon.cjs +21 -0
  211. package/dist/compiler/babylon.js +15 -0
  212. package/dist/compiler/business-quest.cjs +43 -0
  213. package/dist/compiler/business-quest.js +4 -0
  214. package/dist/compiler/coco.cjs +27 -0
  215. package/dist/compiler/coco.js +4 -0
  216. package/dist/compiler/context.cjs +25 -0
  217. package/dist/compiler/context.d.ts +28 -0
  218. package/dist/compiler/context.js +8 -0
  219. package/dist/compiler/domain-block-utils.cjs +605 -0
  220. package/dist/compiler/domain-block-utils.js +11 -0
  221. package/dist/compiler/dtdl.cjs +27 -0
  222. package/dist/compiler/dtdl.js +11 -0
  223. package/dist/compiler/gltf-pipeline.cjs +39 -0
  224. package/dist/compiler/gltf-pipeline.js +4 -0
  225. package/dist/compiler/godot.cjs +18 -0
  226. package/dist/compiler/godot.js +12 -0
  227. package/dist/compiler/incremental.cjs +34 -0
  228. package/dist/compiler/incremental.js +9 -0
  229. package/dist/compiler/index.cjs +5860 -0
  230. package/dist/compiler/index.d.ts +322 -21
  231. package/dist/compiler/index.js +5525 -0
  232. package/dist/compiler/ios.cjs +23 -0
  233. package/dist/compiler/ios.js +13 -0
  234. package/dist/compiler/llm-provider-capabilities.cjs +25 -0
  235. package/dist/compiler/llm-provider-capabilities.d.ts +43 -0
  236. package/dist/compiler/llm-provider-capabilities.js +8 -0
  237. package/dist/compiler/multi-layer.cjs +24 -0
  238. package/dist/compiler/multi-layer.js +15 -0
  239. package/dist/compiler/nodetoy.cjs +23 -0
  240. package/dist/compiler/nodetoy.js +4 -0
  241. package/dist/compiler/openxr.cjs +19 -0
  242. package/dist/compiler/openxr.js +13 -0
  243. package/dist/compiler/playcanvas.cjs +19 -0
  244. package/dist/compiler/playcanvas.js +13 -0
  245. package/dist/compiler/r3f.cjs +38 -0
  246. package/dist/compiler/r3f.d.ts +22 -0
  247. package/dist/compiler/r3f.js +16 -0
  248. package/dist/compiler/remotion.cjs +23 -0
  249. package/dist/compiler/remotion.js +4 -0
  250. package/dist/compiler/reproducibility.cjs +39 -0
  251. package/dist/compiler/reproducibility.js +4 -0
  252. package/dist/compiler/sdf.cjs +24 -0
  253. package/dist/compiler/sdf.js +12 -0
  254. package/dist/compiler/semantic-scene.cjs +31 -0
  255. package/dist/compiler/semantic-scene.js +4 -0
  256. package/dist/compiler/state.cjs +21 -0
  257. package/dist/compiler/state.js +11 -0
  258. package/dist/compiler/trait-composition.cjs +30 -0
  259. package/dist/compiler/trait-composition.js +9 -0
  260. package/dist/compiler/unity.cjs +19 -0
  261. package/dist/compiler/unity.js +13 -0
  262. package/dist/compiler/unreal.cjs +23 -0
  263. package/dist/compiler/unreal.js +13 -0
  264. package/dist/compiler/urdf.cjs +52 -0
  265. package/dist/compiler/urdf.js +12 -0
  266. package/dist/compiler/usd-physics.cjs +26 -0
  267. package/dist/compiler/usd-physics.js +9 -0
  268. package/dist/compiler/visionos.cjs +19 -0
  269. package/dist/compiler/visionos.js +13 -0
  270. package/dist/compiler/vrchat.cjs +22 -0
  271. package/dist/compiler/vrchat.js +12 -0
  272. package/dist/compiler/vrr.cjs +24 -0
  273. package/dist/compiler/vrr.js +12 -0
  274. package/dist/compiler/wasm.cjs +36 -0
  275. package/dist/compiler/wasm.js +12 -0
  276. package/dist/compiler/webgpu.cjs +18 -0
  277. package/dist/compiler/webgpu.js +12 -0
  278. package/dist/coordinators/index.cjs +1266 -0
  279. package/dist/coordinators/index.d.ts +72 -1
  280. package/dist/coordinators/index.js +1259 -0
  281. package/dist/debugger.cjs +24 -0
  282. package/dist/debugger.js +11 -0
  283. package/dist/entries/interop.cjs +64 -0
  284. package/dist/entries/interop.js +7 -0
  285. package/dist/entries/scripting.cjs +55 -0
  286. package/dist/entries/scripting.js +10 -0
  287. package/dist/hololand/index.cjs +146 -0
  288. package/dist/hololand/index.d.ts +70 -0
  289. package/dist/hololand/index.js +5 -0
  290. package/dist/index.cjs +43233 -0
  291. package/dist/index.d.ts +976 -21
  292. package/dist/index.js +39995 -0
  293. package/dist/math/tropical-spmv.cjs +45 -0
  294. package/dist/math/tropical-spmv.js +4 -0
  295. package/dist/math/vec3.cjs +57 -0
  296. package/dist/math/vec3.js +4 -0
  297. package/dist/ml-dsa-FSKBTE3W.cjs +1265 -0
  298. package/dist/ml-dsa-Z7JDKW4L.js +1265 -0
  299. package/dist/paper-0c-spike/index.cjs +150 -0
  300. package/dist/paper-0c-spike/index.js +141 -0
  301. package/dist/parser.cjs +61 -0
  302. package/dist/parser.d.ts +11 -0
  303. package/dist/parser.js +12 -0
  304. package/dist/playwright-3AT3AKTV.cjs +98673 -0
  305. package/dist/playwright-VZPDVUEQ.js +98660 -0
  306. package/dist/reconstruction/index.cjs +153 -0
  307. package/dist/reconstruction/index.d.ts +29 -2
  308. package/dist/reconstruction/index.js +8 -0
  309. package/dist/runtime.cjs +316 -0
  310. package/dist/runtime.d.ts +61 -0
  311. package/dist/runtime.js +31 -0
  312. package/dist/self-improvement/index.cjs +563 -0
  313. package/dist/self-improvement/index.js +545 -0
  314. package/dist/storage/index.cjs +38 -0
  315. package/dist/storage/index.js +5 -0
  316. package/dist/testing.cjs +25 -0
  317. package/dist/testing.d.ts +70 -0
  318. package/dist/testing.js +4 -0
  319. package/dist/traitDocs/traitDocs.cjs +33 -0
  320. package/dist/traitDocs/traitDocs.js +7 -0
  321. package/dist/traits/botanical-lotus.cjs +41 -0
  322. package/dist/traits/botanical-lotus.d.ts +172 -0
  323. package/dist/traits/botanical-lotus.js +4 -0
  324. package/dist/traits/engines/index.cjs +520 -0
  325. package/dist/traits/engines/index.js +380 -0
  326. package/dist/traits/index.cjs +24409 -0
  327. package/dist/traits/index.d.ts +171 -35
  328. package/dist/traits/index.js +21634 -0
  329. package/dist/traits/simulation-solver-factory.cjs +13 -0
  330. package/dist/traits/simulation-solver-factory.d.ts +23 -0
  331. package/dist/traits/simulation-solver-factory.js +4 -0
  332. package/dist/traits/webcam-gaze.cjs +35 -0
  333. package/dist/traits/webcam-gaze.d.ts +17 -0
  334. package/dist/traits/webcam-gaze.js +4 -0
  335. package/dist/type-checker.cjs +19 -0
  336. package/dist/type-checker.js +6 -0
  337. package/dist/world/index.cjs +947 -0
  338. package/dist/world/index.d.ts +147 -0
  339. package/dist/world/index.js +939 -0
  340. package/dist/world-model/index.cjs +1446 -0
  341. package/dist/world-model/index.d.ts +119 -0
  342. package/dist/world-model/index.js +1414 -0
  343. package/dist/wot/index.cjs +29 -0
  344. package/dist/wot/index.js +4 -0
  345. package/package.json +93 -49
@@ -0,0 +1,545 @@
1
+ import '../chunk-OL46QLBJ.js';
2
+ import { createHash } from 'crypto';
3
+
4
+ // src/self-improvement/SelfImproveHarvester.ts
5
+ var SelfImproveHarvester = class {
6
+ constructor(config = {}) {
7
+ this.entries = [];
8
+ this.outputFile = config.outputFile ?? config.outputDir ?? "memory://self-improvement-harvest.jsonl";
9
+ this.minQualityScore = config.minQualityScore ?? 0;
10
+ }
11
+ harvestFromCycle(instruction, output, testResult, qualityScore, metadata) {
12
+ if (qualityScore < this.minQualityScore) {
13
+ return;
14
+ }
15
+ this.entries.push({
16
+ instruction,
17
+ output,
18
+ testResult,
19
+ qualityScore,
20
+ ...metadata ? { metadata } : {},
21
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
22
+ });
23
+ }
24
+ getStats() {
25
+ return {
26
+ entryCount: this.entries.length,
27
+ currentFile: this.outputFile
28
+ };
29
+ }
30
+ };
31
+ var OUTCOME_SCHEMA_VERSION = "1.0.0";
32
+ function artifactHash(artifact) {
33
+ return {
34
+ path: artifact.path,
35
+ kind: artifact.kind,
36
+ algorithm: "sha256",
37
+ hash: createHash("sha256").update(artifact.content).digest("hex")
38
+ };
39
+ }
40
+ function artifactHashes(artifacts) {
41
+ return artifacts.map(artifactHash);
42
+ }
43
+ function validateOutcomeSpec(spec) {
44
+ const errors = [];
45
+ if (!spec.id) errors.push("OutcomeSpec.id is required.");
46
+ if (!Array.isArray(spec.rubric) || spec.rubric.length === 0) {
47
+ errors.push("OutcomeSpec.rubric must include at least one criterion.");
48
+ }
49
+ if (!Number.isFinite(spec.threshold) || spec.threshold <= 0 || spec.threshold > 1) {
50
+ errors.push("OutcomeSpec.threshold must be in (0, 1].");
51
+ }
52
+ if (!Number.isInteger(spec.maxIterations) || spec.maxIterations < 1) {
53
+ errors.push("OutcomeSpec.maxIterations must be a positive integer.");
54
+ }
55
+ if (!Array.isArray(spec.artifacts) || spec.artifacts.length === 0) {
56
+ errors.push("OutcomeSpec.artifacts must include at least one artifact.");
57
+ }
58
+ if (!spec.grader?.id) errors.push("OutcomeSpec.grader.id is required.");
59
+ if (!Array.isArray(spec.validationCommands)) {
60
+ errors.push("OutcomeSpec.validationCommands must be an array.");
61
+ }
62
+ return errors;
63
+ }
64
+ function cloneArtifacts(artifacts) {
65
+ return artifacts.map((artifact) => ({ ...artifact }));
66
+ }
67
+ function cloneSpec(spec) {
68
+ return {
69
+ ...spec,
70
+ rubric: spec.rubric.map((criterion) => ({ ...criterion })),
71
+ artifacts: cloneArtifacts(spec.artifacts),
72
+ validationCommands: spec.validationCommands.map((command) => ({ ...command })),
73
+ grader: { ...spec.grader },
74
+ circuitBreaker: spec.circuitBreaker ? { ...spec.circuitBreaker } : void 0,
75
+ metadata: spec.metadata ? { ...spec.metadata } : void 0
76
+ };
77
+ }
78
+ function clampScore(score) {
79
+ if (!Number.isFinite(score)) return 0;
80
+ return Math.max(0, Math.min(1, score));
81
+ }
82
+ function scoreFromCriteria(spec, criteria) {
83
+ if (criteria.length === 0) return 0;
84
+ const weights = new Map(spec.rubric.map((criterion) => [criterion.id, criterion.weight ?? 1]));
85
+ const totalWeight = criteria.reduce((sum, criterion) => sum + Math.max(0, weights.get(criterion.criterionId) ?? 1), 0);
86
+ if (totalWeight === 0) return 0;
87
+ const weighted = criteria.reduce((sum, criterion) => {
88
+ const weight = Math.max(0, weights.get(criterion.criterionId) ?? 1);
89
+ return sum + clampScore(criterion.score) * weight;
90
+ }, 0);
91
+ return Math.round(weighted / totalWeight * 1e4) / 1e4;
92
+ }
93
+ function normalizeGrade(spec, grade) {
94
+ const returned = new Map(
95
+ grade.criteria.map((criterion) => [
96
+ criterion.criterionId,
97
+ {
98
+ ...criterion,
99
+ score: clampScore(criterion.score)
100
+ }
101
+ ])
102
+ );
103
+ const criteria = spec.rubric.map((rubricCriterion) => {
104
+ const criterion = returned.get(rubricCriterion.id);
105
+ if (criterion) return criterion;
106
+ return {
107
+ criterionId: rubricCriterion.id,
108
+ score: 0,
109
+ passed: false,
110
+ gap: "No grade returned for this rubric criterion."
111
+ };
112
+ });
113
+ return {
114
+ ...grade,
115
+ criteria,
116
+ score: clampScore(grade.score ?? scoreFromCriteria(spec, criteria))
117
+ };
118
+ }
119
+ function makeContext(specId, role, iteration) {
120
+ return {
121
+ role,
122
+ iteration,
123
+ contextId: `${specId}:${role}:${iteration}`
124
+ };
125
+ }
126
+ function validationFallback(command) {
127
+ return {
128
+ ...command,
129
+ passed: true,
130
+ exitCode: 0
131
+ };
132
+ }
133
+ function requiredValidationFailed(results) {
134
+ return results.some((result) => result.required !== false && !result.passed);
135
+ }
136
+ function circuitBreakerTripped(spec, receipts, consecutiveFailures) {
137
+ const config = spec.circuitBreaker;
138
+ if (!config) return null;
139
+ if (config.maxConsecutiveFailures !== void 0 && consecutiveFailures >= config.maxConsecutiveFailures) {
140
+ return `Circuit breaker tripped after ${consecutiveFailures} consecutive failed iteration(s).`;
141
+ }
142
+ if (config.minScoreProgress !== void 0 && receipts.length >= 2) {
143
+ const latest = receipts[receipts.length - 1];
144
+ const previous = receipts[receipts.length - 2];
145
+ if (latest.score - previous.score < config.minScoreProgress) {
146
+ return `Circuit breaker tripped because score progress ${latest.score - previous.score} was below ${config.minScoreProgress}.`;
147
+ }
148
+ }
149
+ return null;
150
+ }
151
+ var OutcomeLoop = class {
152
+ constructor(options) {
153
+ this.options = options;
154
+ }
155
+ async run(specInput) {
156
+ const errors = validateOutcomeSpec(specInput);
157
+ if (errors.length) {
158
+ throw new Error(`Invalid OutcomeSpec:
159
+ ${errors.join("\n")}`);
160
+ }
161
+ const spec = cloneSpec(specInput);
162
+ const receipts = [];
163
+ let artifacts = cloneArtifacts(spec.artifacts);
164
+ let previousGaps = [];
165
+ let consecutiveFailures = 0;
166
+ for (let iteration = 1; iteration <= spec.maxIterations; iteration += 1) {
167
+ const implementerContext = makeContext(spec.id, "implementer", iteration);
168
+ const implementation = await this.options.implementer({
169
+ spec: cloneSpec(spec),
170
+ artifacts: cloneArtifacts(artifacts),
171
+ previousGaps: previousGaps.map((gap) => ({ ...gap })),
172
+ context: implementerContext
173
+ });
174
+ artifacts = cloneArtifacts(implementation.artifacts);
175
+ const hashes = artifactHashes(artifacts);
176
+ const validationResults = await Promise.all(
177
+ spec.validationCommands.map((command) => {
178
+ const validationContext = makeContext(spec.id, "validator", iteration);
179
+ return this.options.validationRunner ? this.options.validationRunner({ ...command }, validationContext) : validationFallback(command);
180
+ })
181
+ );
182
+ const graderContext = makeContext(spec.id, "grader", iteration);
183
+ const grade = normalizeGrade(
184
+ spec,
185
+ await this.options.grader({
186
+ spec: cloneSpec(spec),
187
+ artifacts: cloneArtifacts(artifacts),
188
+ artifactHashes: hashes.map((hash) => ({ ...hash })),
189
+ validationResults: validationResults.map((result) => ({ ...result })),
190
+ context: graderContext
191
+ })
192
+ );
193
+ const gaps = grade.criteria.filter((criterion) => !criterion.passed);
194
+ const passed = grade.score >= spec.threshold && !requiredValidationFailed(validationResults);
195
+ consecutiveFailures = passed ? 0 : consecutiveFailures + 1;
196
+ const iterationReceipt = {
197
+ iteration,
198
+ score: grade.score,
199
+ passed,
200
+ criteria: grade.criteria,
201
+ gaps,
202
+ artifactHashes: hashes,
203
+ validationResults,
204
+ implementerContextId: implementerContext.contextId,
205
+ graderContextId: graderContext.contextId,
206
+ notes: implementation.notes,
207
+ summary: grade.summary
208
+ };
209
+ receipts.push(iterationReceipt);
210
+ if (passed) {
211
+ return this.buildReceipt(spec, receipts, "pass", "Outcome threshold passed.");
212
+ }
213
+ const breakerReason = circuitBreakerTripped(spec, receipts, consecutiveFailures);
214
+ if (breakerReason) {
215
+ return this.buildReceipt(spec, receipts, "circuit_breaker_failure", breakerReason);
216
+ }
217
+ previousGaps = gaps.map((gap) => ({ ...gap }));
218
+ }
219
+ return this.buildReceipt(
220
+ spec,
221
+ receipts,
222
+ "iteration_cap",
223
+ `Outcome loop stopped at iteration cap ${spec.maxIterations}.`
224
+ );
225
+ }
226
+ buildReceipt(spec, receipts, status, stoppedReason) {
227
+ const latest = receipts[receipts.length - 1];
228
+ return {
229
+ schemaVersion: OUTCOME_SCHEMA_VERSION,
230
+ specId: spec.id,
231
+ status,
232
+ passed: status === "pass",
233
+ score: latest?.score ?? 0,
234
+ threshold: spec.threshold,
235
+ iterations: receipts.length,
236
+ iterationCap: spec.maxIterations,
237
+ artifactHashes: latest?.artifactHashes ?? artifactHashes(spec.artifacts),
238
+ graderIdentity: { ...spec.grader },
239
+ validationCommands: spec.validationCommands.map((command) => ({ ...command })),
240
+ criteria: latest?.criteria ?? [],
241
+ iterationReceipts: receipts,
242
+ stoppedReason,
243
+ timestamp: (this.options.now?.() ?? /* @__PURE__ */ new Date()).toISOString()
244
+ };
245
+ }
246
+ };
247
+ function runOutcomeLoop(spec, options) {
248
+ return new OutcomeLoop(options).run(spec);
249
+ }
250
+ var EXTERNAL_AGENT_RECEIPT_SCHEMA_VERSION = "1.0.0";
251
+ var CLAUDE_MANAGED_AGENTS_PROVIDER_ID = "anthropic.claude-managed-agents";
252
+ var CLAUDE_MANAGED_AGENTS_BETA_HEADER = "managed-agents-2026-04-01";
253
+ function hashText(content) {
254
+ return createHash("sha256").update(content).digest("hex");
255
+ }
256
+ function hashStableJson(value) {
257
+ return hashText(JSON.stringify(stabilizeForHash(value)));
258
+ }
259
+ function createClaudeManagedAgentsSdkClient(sdk) {
260
+ return {
261
+ async createSession(input) {
262
+ return toManagedAgentSession(
263
+ await sdk.beta.sessions.create({
264
+ agent: input.agent,
265
+ environment_id: input.environmentId,
266
+ ...input.vaultIds ? { vault_ids: input.vaultIds.slice() } : {},
267
+ ...input.metadata ? { metadata: { ...input.metadata } } : {}
268
+ })
269
+ );
270
+ },
271
+ async sendUserEvent(sessionId, event) {
272
+ await sdk.beta.sessions.events.send(sessionId, { events: [event] });
273
+ },
274
+ async retrieveSession(sessionId) {
275
+ return toManagedAgentSession(await sdk.beta.sessions.retrieve(sessionId));
276
+ },
277
+ async listEvents(sessionId) {
278
+ return toEventList(await sdk.beta.sessions.events.list(sessionId));
279
+ }
280
+ };
281
+ }
282
+ function createExternalAgentReceipt(input) {
283
+ const events = (input.events ?? []).map(toEventReceipt);
284
+ const artifacts = (input.artifacts ?? []).map(toArtifactReceipt);
285
+ const outcomes = (input.outcomes ?? []).map(toOutcomeReceipt);
286
+ const inputArtifactHashes = (input.inputArtifacts ?? []).map(toArtifactReceipt);
287
+ const validation = (input.validation ?? []).map((result) => ({ ...result }));
288
+ const request = {
289
+ ...input.prompt ? { promptHash: hashText(input.prompt) } : {},
290
+ inputArtifactHashes,
291
+ ...input.metadata ? { metadataHash: hashStableJson(input.metadata) } : {}
292
+ };
293
+ const captureMaterial = {
294
+ provider: input.provider,
295
+ agent: input.agent,
296
+ session: input.session,
297
+ request,
298
+ events,
299
+ outcomes,
300
+ artifacts
301
+ };
302
+ const captureHash = hashStableJson(captureMaterial);
303
+ return {
304
+ schemaVersion: EXTERNAL_AGENT_RECEIPT_SCHEMA_VERSION,
305
+ receiptId: `ext_${captureHash.slice(0, 16)}`,
306
+ provider: input.provider,
307
+ ...input.taskId ? { taskId: input.taskId } : {},
308
+ createdAt: (input.now?.() ?? /* @__PURE__ */ new Date()).toISOString(),
309
+ captureHash,
310
+ agent: { ...input.agent },
311
+ session: { ...input.session },
312
+ request,
313
+ events,
314
+ outcomes,
315
+ artifacts,
316
+ validation,
317
+ quarantine: {
318
+ state: "quarantined",
319
+ reason: "External agent output requires local validation before any memory promotion.",
320
+ localValidationRequired: input.localValidationRequired ?? true
321
+ },
322
+ persistentMemoryWriteAllowed: false,
323
+ ...input.metadata ? { metadata: { ...input.metadata } } : {}
324
+ };
325
+ }
326
+ function applyExternalAgentValidation(receipt, validation) {
327
+ const copiedValidation = validation.map((result) => ({ ...result }));
328
+ if (copiedValidation.length === 0) {
329
+ return {
330
+ ...receipt,
331
+ validation: [],
332
+ quarantine: {
333
+ state: "quarantined",
334
+ reason: "No local validation evidence attached.",
335
+ localValidationRequired: true
336
+ },
337
+ persistentMemoryWriteAllowed: false
338
+ };
339
+ }
340
+ const requiredFailure = copiedValidation.find((result) => result.required !== false && !result.passed);
341
+ return {
342
+ ...receipt,
343
+ validation: copiedValidation,
344
+ quarantine: {
345
+ state: requiredFailure ? "rejected" : "validated",
346
+ reason: requiredFailure ? `Required validation failed: ${requiredFailure.id ?? requiredFailure.command}.` : "Local validation passed; receipt remains memory-isolated until MemoryReceipt promotion.",
347
+ localValidationRequired: false
348
+ },
349
+ persistentMemoryWriteAllowed: false
350
+ };
351
+ }
352
+ function promoteExternalAgentReceipt(receipt, memoryReceipt) {
353
+ if (receipt.quarantine.state !== "validated") {
354
+ throw new Error("ExternalAgentReceipt must be locally validated before MemoryReceipt promotion.");
355
+ }
356
+ if (memoryReceipt.sourceReceiptHash !== receipt.captureHash) {
357
+ throw new Error("MemoryReceipt source hash must match the external agent capture hash.");
358
+ }
359
+ return {
360
+ ...receipt,
361
+ quarantine: {
362
+ state: "promoted",
363
+ reason: "Promoted by MemoryReceipt reference; adapter still has no direct memory-write capability.",
364
+ localValidationRequired: false,
365
+ memoryPromotion: { ...memoryReceipt }
366
+ },
367
+ persistentMemoryWriteAllowed: false
368
+ };
369
+ }
370
+ var ClaudeManagedAgentAdapter = class {
371
+ constructor(config) {
372
+ this.backendId = "claude-managed-agent-quarantined";
373
+ this.config = config;
374
+ }
375
+ async launchAndRead(request) {
376
+ if (!request.prompt.trim()) {
377
+ throw new Error("ClaudeManagedAgentAdapter.launchAndRead requires a non-empty prompt.");
378
+ }
379
+ const session = await this.config.client.createSession({
380
+ agent: request.agent ?? this.config.agentId,
381
+ environmentId: request.environmentId ?? this.config.environmentId,
382
+ vaultIds: request.vaultIds?.slice(),
383
+ metadata: request.metadata ? { ...request.metadata } : void 0
384
+ });
385
+ await this.config.client.sendUserEvent(session.id, {
386
+ type: "user.message",
387
+ content: [{ type: "text", text: request.prompt }]
388
+ });
389
+ return this.readSession({
390
+ sessionId: session.id,
391
+ taskId: request.taskId,
392
+ prompt: request.prompt,
393
+ inputArtifacts: request.inputArtifacts,
394
+ validation: request.validation,
395
+ metadata: request.metadata
396
+ });
397
+ }
398
+ async readSession(request) {
399
+ const [session, events, artifacts, outcomes] = await Promise.all([
400
+ this.config.client.retrieveSession(request.sessionId),
401
+ this.config.client.listEvents(request.sessionId),
402
+ this.config.client.listArtifacts?.(request.sessionId) ?? Promise.resolve([]),
403
+ this.config.client.listOutcomes?.(request.sessionId) ?? Promise.resolve([])
404
+ ]);
405
+ const receipt = createExternalAgentReceipt({
406
+ provider: this.config.provider ?? CLAUDE_MANAGED_AGENTS_PROVIDER_ID,
407
+ agent: {
408
+ id: session.agentId ?? this.config.agentId,
409
+ vendor: "anthropic",
410
+ label: "Claude Managed Agent",
411
+ model: this.config.model,
412
+ betaHeader: CLAUDE_MANAGED_AGENTS_BETA_HEADER
413
+ },
414
+ session: {
415
+ id: session.id,
416
+ status: session.status,
417
+ agentId: session.agentId ?? this.config.agentId,
418
+ environmentId: session.environmentId ?? this.config.environmentId,
419
+ url: session.url
420
+ },
421
+ taskId: request.taskId,
422
+ prompt: request.prompt,
423
+ inputArtifacts: request.inputArtifacts,
424
+ events,
425
+ artifacts,
426
+ outcomes,
427
+ validation: request.validation,
428
+ metadata: request.metadata,
429
+ now: this.config.now
430
+ });
431
+ return request.validation ? applyExternalAgentValidation(receipt, request.validation) : receipt;
432
+ }
433
+ async runBenchmarkCase(input) {
434
+ const receipt = await this.launchAndRead(input);
435
+ const firstOutcomeScore = receipt.outcomes.find((outcome) => typeof outcome.score === "number")?.score ?? 0;
436
+ const score = input.scorer ? input.scorer(receipt) : firstOutcomeScore;
437
+ return {
438
+ backendId: this.backendId,
439
+ receipt,
440
+ score,
441
+ passed: receipt.quarantine.state === "validated" || receipt.quarantine.state === "promoted"
442
+ };
443
+ }
444
+ };
445
+ function toEventReceipt(event) {
446
+ return {
447
+ ...event.id ? { id: event.id } : {},
448
+ type: event.type,
449
+ ...event.processedAt ? { processedAt: event.processedAt } : {},
450
+ ...event.sessionThreadId ? { sessionThreadId: event.sessionThreadId } : {},
451
+ ...event.summary ? { summary: event.summary } : {},
452
+ rawHash: hashStableJson(event)
453
+ };
454
+ }
455
+ function toArtifactReceipt(artifact) {
456
+ const hasContentHash = Boolean(artifact.contentHash);
457
+ const hasContent = artifact.content !== void 0;
458
+ const hash = artifact.contentHash ?? (hasContent ? hashText(artifact.content ?? "") : hashStableJson({
459
+ id: artifact.id,
460
+ path: artifact.path,
461
+ uri: artifact.uri,
462
+ type: artifact.type,
463
+ producer: artifact.producer
464
+ }));
465
+ return {
466
+ ...artifact.id ? { id: artifact.id } : {},
467
+ ...artifact.path ? { path: artifact.path } : {},
468
+ ...artifact.uri ? { uri: artifact.uri } : {},
469
+ type: artifact.type,
470
+ producer: artifact.producer,
471
+ ...artifact.validator ? { validator: artifact.validator } : {},
472
+ hash,
473
+ hashKind: hasContentHash || hasContent ? "sha256-content" : "sha256-descriptor"
474
+ };
475
+ }
476
+ function toOutcomeReceipt(outcome) {
477
+ return {
478
+ id: outcome.id,
479
+ ...typeof outcome.score === "number" ? { score: clamp01(outcome.score) } : {},
480
+ ...typeof outcome.passed === "boolean" ? { passed: outcome.passed } : {},
481
+ ...outcome.rubricHash ? { rubricHash: outcome.rubricHash } : {},
482
+ ...outcome.summary ? { summary: outcome.summary } : {},
483
+ ...outcome.criteria ? { criteriaHash: hashStableJson(outcome.criteria) } : {}
484
+ };
485
+ }
486
+ function toManagedAgentSession(value) {
487
+ const record = asRecord(value);
488
+ const id = stringField(record, ["id"]);
489
+ if (!id) {
490
+ throw new Error("Claude Managed Agents SDK response did not include a session id.");
491
+ }
492
+ return {
493
+ id,
494
+ ...stringField(record, ["status"]) ? { status: stringField(record, ["status"]) } : {},
495
+ ...stringField(record, ["agentId", "agent_id"]) ? { agentId: stringField(record, ["agentId", "agent_id"]) } : {},
496
+ ...stringField(record, ["environmentId", "environment_id"]) ? { environmentId: stringField(record, ["environmentId", "environment_id"]) } : {},
497
+ ...stringField(record, ["url"]) ? { url: stringField(record, ["url"]) } : {}
498
+ };
499
+ }
500
+ function toEventList(value) {
501
+ const list = Array.isArray(value) ? value : Array.isArray(asRecord(value).data) ? asRecord(value).data : [];
502
+ return list.map((event) => {
503
+ const record = asRecord(event);
504
+ return {
505
+ id: stringField(record, ["id"]),
506
+ type: stringField(record, ["type"]) ?? "unknown.event",
507
+ processedAt: stringField(record, ["processedAt", "processed_at"]),
508
+ sessionThreadId: stringField(record, ["sessionThreadId", "session_thread_id"]),
509
+ summary: stringField(record, ["summary"]),
510
+ payload: event
511
+ };
512
+ });
513
+ }
514
+ function asRecord(value) {
515
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
516
+ }
517
+ function stringField(record, keys) {
518
+ for (const key of keys) {
519
+ const value = record[key];
520
+ if (typeof value === "string" && value.length > 0) return value;
521
+ }
522
+ return void 0;
523
+ }
524
+ function clamp01(value) {
525
+ if (!Number.isFinite(value)) return 0;
526
+ return Math.max(0, Math.min(1, value));
527
+ }
528
+ function stabilizeForHash(value) {
529
+ if (value === null) return null;
530
+ if (Array.isArray(value)) return value.map((item) => item === void 0 ? null : stabilizeForHash(item));
531
+ if (value instanceof Date) return value.toISOString();
532
+ if (typeof value !== "object") return value;
533
+ const record = value;
534
+ const normalized = {};
535
+ for (const key of Object.keys(record).sort()) {
536
+ const item = record[key];
537
+ if (item === void 0 || typeof item === "function") continue;
538
+ normalized[key] = stabilizeForHash(item);
539
+ }
540
+ return normalized;
541
+ }
542
+
543
+ export { CLAUDE_MANAGED_AGENTS_BETA_HEADER, CLAUDE_MANAGED_AGENTS_PROVIDER_ID, ClaudeManagedAgentAdapter, EXTERNAL_AGENT_RECEIPT_SCHEMA_VERSION, OUTCOME_SCHEMA_VERSION, OutcomeLoop, SelfImproveHarvester, applyExternalAgentValidation, artifactHash, artifactHashes, createClaudeManagedAgentsSdkClient, createExternalAgentReceipt, hashStableJson, hashText, promoteExternalAgentReceipt, runOutcomeLoop, validateOutcomeSpec };
544
+ //# sourceMappingURL=index.js.map
545
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ var chunkFJPADH77_cjs = require('../chunk-FJPADH77.cjs');
4
+ require('../chunk-E7JP3BS3.cjs');
5
+ require('../chunk-HCCQLAA4.cjs');
6
+
7
+
8
+
9
+ Object.defineProperty(exports, "FileSizeExceededError", {
10
+ enumerable: true,
11
+ get: function () { return chunkFJPADH77_cjs.FileSizeExceededError; }
12
+ });
13
+ Object.defineProperty(exports, "IPFSPinError", {
14
+ enumerable: true,
15
+ get: function () { return chunkFJPADH77_cjs.IPFSPinError; }
16
+ });
17
+ Object.defineProperty(exports, "IPFSService", {
18
+ enumerable: true,
19
+ get: function () { return chunkFJPADH77_cjs.IPFSService; }
20
+ });
21
+ Object.defineProperty(exports, "IPFSUploadError", {
22
+ enumerable: true,
23
+ get: function () { return chunkFJPADH77_cjs.IPFSUploadError; }
24
+ });
25
+ Object.defineProperty(exports, "InfuraProvider", {
26
+ enumerable: true,
27
+ get: function () { return chunkFJPADH77_cjs.InfuraProvider; }
28
+ });
29
+ Object.defineProperty(exports, "NFTStorageProvider", {
30
+ enumerable: true,
31
+ get: function () { return chunkFJPADH77_cjs.NFTStorageProvider; }
32
+ });
33
+ Object.defineProperty(exports, "PinataProvider", {
34
+ enumerable: true,
35
+ get: function () { return chunkFJPADH77_cjs.PinataProvider; }
36
+ });
37
+ //# sourceMappingURL=index.cjs.map
38
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,5 @@
1
+ export { FileSizeExceededError, IPFSPinError, IPFSService, IPFSUploadError, InfuraProvider, NFTStorageProvider, PinataProvider } from '../chunk-WRWEX5ZF.js';
2
+ import '../chunk-VVKVQZI6.js';
3
+ import '../chunk-OL46QLBJ.js';
4
+ //# sourceMappingURL=index.js.map
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ var chunkPGANYCAG_cjs = require('./chunk-PGANYCAG.cjs');
4
+ require('./chunk-HCCQLAA4.cjs');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "DeterminismHarness", {
9
+ enumerable: true,
10
+ get: function () { return chunkPGANYCAG_cjs.DeterminismHarness; }
11
+ });
12
+ Object.defineProperty(exports, "captureEnvironment", {
13
+ enumerable: true,
14
+ get: function () { return chunkPGANYCAG_cjs.captureEnvironment; }
15
+ });
16
+ Object.defineProperty(exports, "describeEnvironment", {
17
+ enumerable: true,
18
+ get: function () { return chunkPGANYCAG_cjs.describeEnvironment; }
19
+ });
20
+ Object.defineProperty(exports, "hashBytes", {
21
+ enumerable: true,
22
+ get: function () { return chunkPGANYCAG_cjs.hashBytes; }
23
+ });
24
+ //# sourceMappingURL=testing.cjs.map
25
+ //# sourceMappingURL=testing.cjs.map
@@ -0,0 +1,70 @@
1
+ /** @holoscript/core/testing — narrow empirical test utilities */
2
+ export interface GpuInfo {
3
+ vendor?: string;
4
+ architecture?: string;
5
+ device?: string;
6
+ description?: string;
7
+ backend?: string;
8
+ }
9
+ export interface NodeInfo {
10
+ version: string;
11
+ arch: string;
12
+ platform: string;
13
+ }
14
+ export interface BrowserInfo {
15
+ userAgent?: string;
16
+ browser?: string;
17
+ os?: string;
18
+ }
19
+ export interface EnvironmentInfo {
20
+ runtime: 'browser' | 'node' | 'unknown';
21
+ gpu?: GpuInfo;
22
+ node?: NodeInfo;
23
+ browser?: BrowserInfo;
24
+ annotations?: Record<string, string>;
25
+ }
26
+ export interface ProbeResult<T = Uint8Array | string> {
27
+ name: string;
28
+ timestamp: number;
29
+ environment: EnvironmentInfo;
30
+ durationMs: number;
31
+ outputHash: string;
32
+ outputSize: number;
33
+ output?: T;
34
+ error?: string;
35
+ }
36
+ export interface DivergenceGroup {
37
+ hash: string;
38
+ results: ProbeResult[];
39
+ environments: string[];
40
+ }
41
+ export interface DivergenceReport {
42
+ probeName: string;
43
+ totalResults: number;
44
+ uniqueHashes: number;
45
+ divergent: boolean;
46
+ groups: DivergenceGroup[];
47
+ summary: string;
48
+ }
49
+ export interface HarnessOptions {
50
+ captureOutput?: boolean;
51
+ hashAlgorithm?: 'sha256' | 'fnv1a';
52
+ annotations?: Record<string, string>;
53
+ }
54
+ export declare function captureEnvironment(
55
+ annotations?: Record<string, string>
56
+ ): Promise<EnvironmentInfo>;
57
+ export declare function hashBytes(
58
+ input: Uint8Array | string,
59
+ algo?: 'sha256' | 'fnv1a'
60
+ ): Promise<string>;
61
+ export declare class DeterminismHarness {
62
+ constructor(options?: HarnessOptions);
63
+ probe<T extends Uint8Array | string>(
64
+ name: string,
65
+ fn: () => Promise<T> | T,
66
+ annotations?: Record<string, string>
67
+ ): Promise<ProbeResult<T>>;
68
+ static compareResults(results: ProbeResult[]): DivergenceReport;
69
+ }
70
+ export declare function describeEnvironment(env: EnvironmentInfo): string;
@@ -0,0 +1,4 @@
1
+ export { DeterminismHarness, captureEnvironment, describeEnvironment, hashBytes } from './chunk-NW5G5FBQ.js';
2
+ import './chunk-OL46QLBJ.js';
3
+ //# sourceMappingURL=testing.js.map
4
+ //# sourceMappingURL=testing.js.map