@holoscript/core 7.0.0 → 8.0.1

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