@holoscript/core 8.0.7 → 8.0.9

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 (462) hide show
  1. package/bin/holoscript.cjs +5 -1
  2. package/dist/GLTFPipeline-L76YTXKA.js +15 -0
  3. package/dist/GLTFPipeline-ZWJN7GI6.cjs +36 -0
  4. package/dist/HoloCompositionParser-K76KTEEE.js +12 -0
  5. package/dist/HoloCompositionParser-UZH6Y4HO.cjs +45 -0
  6. package/dist/HoloScriptCodeParser-2D4ERFUZ.js +6 -0
  7. package/dist/HoloScriptCodeParser-UDRLDA7I.cjs +23 -0
  8. package/dist/HoloScriptPlusParser-FTMCGWXD.js +13 -0
  9. package/dist/HoloScriptPlusParser-LQR5GIKF.cjs +30 -0
  10. package/dist/HoloScriptRuntime-UTRLJI5L.js +12 -0
  11. package/dist/HoloScriptRuntime-YBYXJHJN.cjs +21 -0
  12. package/dist/SceneIRCompiler-63KA3M2F.js +17 -0
  13. package/dist/SceneIRCompiler-KWUFHZ4O.cjs +42 -0
  14. package/dist/{USDZExporter-AUHZODOF.cjs → USDZExporter-ML4UMIGC.cjs} +3 -3
  15. package/dist/{USDZExporter-GXB4AUSG.js → USDZExporter-ZFKLQ76G.js} +3 -3
  16. package/dist/agents/index.cjs +1 -1
  17. package/dist/agents/index.js +1 -1
  18. package/dist/audit/AuditLogger.d.ts +106 -0
  19. package/dist/audit/AuditQueryBuilder.d.ts +79 -0
  20. package/dist/audit/ComplianceReporter.d.ts +90 -0
  21. package/dist/audit/index.d.ts +13 -0
  22. package/dist/{chunk-FGMDMJM7.js → chunk-2BYAUHBO.js} +3 -3
  23. package/dist/{chunk-EDPYCLRC.cjs → chunk-2E6PP5UE.cjs} +83 -59
  24. package/dist/{chunk-GASCWJK5.js → chunk-2EGGAZT3.js} +65 -287
  25. package/dist/{chunk-SIEXCILW.js → chunk-2I3XAGMF.js} +3 -3
  26. package/dist/{chunk-OS533P33.cjs → chunk-2KKOYZYI.cjs} +1074 -1655
  27. package/dist/chunk-2MQKNDNH.js +51 -0
  28. package/dist/{chunk-7DMMMBCY.cjs → chunk-2X3IPCBK.cjs} +10 -10
  29. package/dist/chunk-2ZOTBO25.cjs +202 -0
  30. package/dist/chunk-356N4NPM.cjs +152 -0
  31. package/dist/{chunk-X3GJPRVK.cjs → chunk-36NPLOI4.cjs} +92 -81
  32. package/dist/{chunk-SLU6UPJI.cjs → chunk-37HHY7RH.cjs} +5 -5
  33. package/dist/{chunk-YDPEHCCI.cjs → chunk-3CDDRUER.cjs} +3 -118
  34. package/dist/chunk-3F7ZZWIN.js +1651 -0
  35. package/dist/chunk-3ILD7TKP.cjs +187 -0
  36. package/dist/{chunk-X27QRG4C.cjs → chunk-3IUHTGDD.cjs} +153 -41
  37. package/dist/{chunk-PXNZ6TME.js → chunk-4376VHNJ.js} +60 -36
  38. package/dist/{chunk-YKGPCZEE.cjs → chunk-4FIBOJW6.cjs} +10 -10
  39. package/dist/chunk-4Q7RKQQI.cjs +14195 -0
  40. package/dist/{chunk-YCM6QQRT.cjs → chunk-566ZB4LZ.cjs} +180 -8
  41. package/dist/{chunk-2Y3V22SG.js → chunk-5CURIYGT.js} +3 -3
  42. package/dist/{chunk-QBWNJXNR.js → chunk-5FYMCVBY.js} +5 -5
  43. package/dist/{chunk-ZA34AN3R.js → chunk-5LVFTGKH.js} +841 -12
  44. package/dist/chunk-63AUAIL6.js +48 -0
  45. package/dist/chunk-655FATJU.js +110 -0
  46. package/dist/{chunk-TQ377OLB.cjs → chunk-65S62L4D.cjs} +28 -22
  47. package/dist/chunk-6NTAZN5Z.cjs +502 -0
  48. package/dist/chunk-6TRX6AR2.js +9376 -0
  49. package/dist/chunk-6ZCCLKS2.cjs +51 -0
  50. package/dist/{chunk-MDR235RZ.js → chunk-734OB5SK.js} +721 -8
  51. package/dist/{chunk-Q2Q34NF3.js → chunk-77QI552M.js} +6 -6
  52. package/dist/{chunk-WKX5AMOY.js → chunk-7I74JWPW.js} +3 -3
  53. package/dist/{chunk-5FSKKMR7.cjs → chunk-7IDJDMPU.cjs} +232 -4
  54. package/dist/chunk-7VBKRGIZ.cjs +847 -0
  55. package/dist/{chunk-KCPHASCO.js → chunk-AATYYLYK.js} +5 -5
  56. package/dist/{chunk-WFKVS2K4.cjs → chunk-AUZRKIHQ.cjs} +1101 -55
  57. package/dist/{chunk-DTGBOSEM.cjs → chunk-AWXFEAQL.cjs} +12 -12
  58. package/dist/{chunk-THCK6ECW.js → chunk-B3CWTCK2.js} +231 -3
  59. package/dist/chunk-BCP4E7MD.cjs +997 -0
  60. package/dist/chunk-BG7RPYJP.js +91 -0
  61. package/dist/{chunk-VF257YKO.js → chunk-BP4KTMLY.js} +117 -5
  62. package/dist/{chunk-YN6IETRZ.js → chunk-BQJ3YBF3.js} +6424 -987
  63. package/dist/{chunk-KOUAQL2B.cjs → chunk-CANAL6CT.cjs} +1569 -168
  64. package/dist/{chunk-FDSGHPAK.js → chunk-CBSDJF3B.js} +3 -3
  65. package/dist/{chunk-FEWUHQNM.cjs → chunk-CFVK26P4.cjs} +4 -4
  66. package/dist/{chunk-M7K4LE66.cjs → chunk-CI33NINL.cjs} +4 -4
  67. package/dist/{chunk-2OWDB4FB.js → chunk-CKV5NYAE.js} +6 -6
  68. package/dist/{chunk-LPS5AMQD.cjs → chunk-CM4NHXVO.cjs} +24 -24
  69. package/dist/chunk-D3HSRXYB.js +115 -0
  70. package/dist/{chunk-FNHJRI32.js → chunk-DBH3D2MU.js} +1561 -160
  71. package/dist/{chunk-GW3LKD5C.js → chunk-DJNH4HFW.js} +3 -3
  72. package/dist/{chunk-2GCNOI2U.cjs → chunk-DN6F4DHH.cjs} +9 -3
  73. package/dist/chunk-DQRJ5RJG.js +432 -0
  74. package/dist/{chunk-C7ZBSV2Q.js → chunk-DUG3OQAS.js} +106 -43
  75. package/dist/chunk-ECUYJOJ2.cjs +199 -0
  76. package/dist/chunk-EEMTCAK7.js +182 -0
  77. package/dist/{chunk-3SKLAUDD.cjs → chunk-EI3J6LTW.cjs} +359 -581
  78. package/dist/{chunk-SSSN7VAM.js → chunk-EM2OGPYE.js} +4 -4
  79. package/dist/{chunk-56VOWURB.cjs → chunk-ENZCIQZC.cjs} +522 -453
  80. package/dist/chunk-ESBXUYOC.cjs +836 -0
  81. package/dist/{chunk-L5U4W6JC.js → chunk-ESSEF6U2.js} +4 -4
  82. package/dist/chunk-ET3AN4W3.js +824 -0
  83. package/dist/chunk-EXKSFGSX.cjs +14 -14
  84. package/dist/{chunk-I76GIKN7.cjs → chunk-F3YT6GUF.cjs} +17 -17
  85. package/dist/{chunk-WRWEX5ZF.js → chunk-F75DZBBI.js} +3 -3
  86. package/dist/{chunk-4JGRWHZJ.js → chunk-FG6PYGIZ.js} +12 -6
  87. package/dist/chunk-FGGJQRLZ.js +14 -14
  88. package/dist/{chunk-SXOSDZD6.js → chunk-FWCHPCD4.js} +128 -10
  89. package/dist/{chunk-XW6IXEQH.cjs → chunk-G35CAQ7I.cjs} +5 -5
  90. package/dist/{chunk-7VMGP2FW.js → chunk-G6KACNMO.js} +132 -188
  91. package/dist/{chunk-FJPADH77.cjs → chunk-GAWJJAGT.cjs} +6 -6
  92. package/dist/chunk-GGR7QUKK.cjs +4724 -0
  93. package/dist/chunk-GIBF4BHH.js +14098 -0
  94. package/dist/{chunk-AWB7QYY6.cjs → chunk-GILYQ5VH.cjs} +6 -6
  95. package/dist/{chunk-FWVYAMNW.cjs → chunk-GKFCHGCM.cjs} +4 -4
  96. package/dist/{chunk-Y3ZFVUUU.js → chunk-GLEJ2TLS.js} +3 -3
  97. package/dist/{chunk-3GWWJT7L.js → chunk-GP3OKSKT.js} +13 -13
  98. package/dist/chunk-GTIPOEHN.js +196 -0
  99. package/dist/{chunk-LMJ5EBV7.cjs → chunk-GZPUA2TL.cjs} +16 -15
  100. package/dist/{chunk-IELX2OKI.js → chunk-H4LJ4HEA.js} +3 -115
  101. package/dist/{chunk-ACVWFGBI.cjs → chunk-HCX4SMFK.cjs} +3 -3
  102. package/dist/{chunk-HYNTS5CP.js → chunk-HHRZ6STP.js} +24 -2
  103. package/dist/chunk-HIDEIEFG.js +48 -0
  104. package/dist/{chunk-W6RW64BB.cjs → chunk-HSWBIDZM.cjs} +228 -5
  105. package/dist/{chunk-GSOUNWEL.js → chunk-HVX7QQYK.js} +1035 -1616
  106. package/dist/{chunk-TRCGG42I.cjs → chunk-IFW5IW4L.cjs} +6502 -1019
  107. package/dist/{chunk-F5LKJ6F5.cjs → chunk-IJU6AS67.cjs} +32 -28
  108. package/dist/{chunk-TVANHNJ7.js → chunk-IK6Z2HNC.js} +173 -3
  109. package/dist/{chunk-QGMUTVVH.cjs → chunk-IS7NTKY5.cjs} +20 -20
  110. package/dist/{chunk-YFVQWSNJ.js → chunk-IXWGYWH6.js} +3 -3
  111. package/dist/chunk-J2DAS2PL.js +148 -0
  112. package/dist/chunk-JBQXZIWB.js +148 -0
  113. package/dist/chunk-JBYBMBMW.js +261 -0
  114. package/dist/{chunk-LWUOUCYL.js → chunk-JEJ7TT54.js} +5 -5
  115. package/dist/{chunk-DUCB6LGL.js → chunk-JOTCTHN5.js} +211 -5
  116. package/dist/{chunk-47RUFYKR.js → chunk-K56UVEXV.js} +3 -3
  117. package/dist/{chunk-XSFNHP2E.js → chunk-KB26H447.js} +3 -3
  118. package/dist/{chunk-3NGDZZR4.js → chunk-KEYG7HGY.js} +430 -37
  119. package/dist/{chunk-DY72BMU5.js → chunk-KFVNCW4Q.js} +4 -4
  120. package/dist/chunk-KPGC7SK2.js +192 -0
  121. package/dist/chunk-KROXXBK5.cjs +53 -0
  122. package/dist/{chunk-ZPZAVHXL.cjs → chunk-LB3ZZMKT.cjs} +137 -19
  123. package/dist/chunk-LDYZWNJW.cjs +1654 -0
  124. package/dist/{chunk-ULMSSHCJ.cjs → chunk-LMB555QB.cjs} +405 -38
  125. package/dist/{chunk-CBJY23VL.js → chunk-MD4IVS42.js} +3 -3
  126. package/dist/{chunk-VMLKSV26.js → chunk-MDDWEBCX.js} +226 -3
  127. package/dist/chunk-MUWH4QK5.cjs +94 -0
  128. package/dist/{chunk-T6W3Z3SH.cjs → chunk-N2ILK7BF.cjs} +4 -4
  129. package/dist/{chunk-6EX3I5P4.cjs → chunk-N74QRJGP.cjs} +6 -6
  130. package/dist/chunk-NFFHLX37.cjs +132 -0
  131. package/dist/chunk-NJSYWX7H.js +190 -0
  132. package/dist/{chunk-SH5PPVK7.cjs → chunk-NQN5LFN4.cjs} +165 -221
  133. package/dist/chunk-NTQRFOPP.cjs +56 -0
  134. package/dist/{chunk-YFWRJW4B.js → chunk-NWMJPTVL.js} +51 -55
  135. package/dist/{chunk-63ZGNR2T.cjs → chunk-OC6GV5QH.cjs} +42 -42
  136. package/dist/{chunk-7E7GCQCK.js → chunk-OG3MBHM3.js} +9 -3
  137. package/dist/chunk-OMNHTCS4.cjs +264 -0
  138. package/dist/chunk-OQXB6NNC.cjs +117 -0
  139. package/dist/{chunk-Y57W2CT5.cjs → chunk-OV46CCA2.cjs} +51 -55
  140. package/dist/{chunk-6PRZIHGL.cjs → chunk-OV6HHKLE.cjs} +21 -266
  141. package/dist/{chunk-C37BHB7N.cjs → chunk-P26YYPOO.cjs} +5 -5
  142. package/dist/{chunk-2BZHWUSR.cjs → chunk-P7JEKJTZ.cjs} +16 -16
  143. package/dist/{chunk-NGBXXZLL.cjs → chunk-PDXX5UI4.cjs} +45 -45
  144. package/dist/{chunk-FHQFPYV4.js → chunk-PJFTTSKE.js} +8 -7
  145. package/dist/{chunk-GVFJ6T4S.cjs → chunk-PVODJEJ7.cjs} +721 -8
  146. package/dist/{chunk-ZZ7RO2UQ.js → chunk-Q265VZJ4.js} +3 -3
  147. package/dist/{chunk-E7JP3BS3.cjs → chunk-Q47JEE2C.cjs} +4 -4
  148. package/dist/chunk-QBY7LRN2.js +281 -0
  149. package/dist/{chunk-Z6PMDS4G.js → chunk-QDQWKSU3.js} +1090 -53
  150. package/dist/{chunk-GH6C2QGW.cjs → chunk-QEDMOGF3.cjs} +857 -16
  151. package/dist/{chunk-5WUNN6ZN.cjs → chunk-QHSAVOOL.cjs} +24 -2
  152. package/dist/chunk-QJNCDVYM.cjs +137 -0
  153. package/dist/chunk-QM7FJB5W.js +4717 -0
  154. package/dist/chunk-QQFB4RT2.cjs +448 -0
  155. package/dist/chunk-QSYBHQAD.cjs +196 -0
  156. package/dist/{chunk-UGXHYIWT.cjs → chunk-QUJ3ZB55.cjs} +28 -28
  157. package/dist/{chunk-2YSNA2F2.cjs → chunk-QVJMDVYZ.cjs} +5 -5
  158. package/dist/chunk-RAJMAX6D.js +131 -0
  159. package/dist/{chunk-VVKVQZI6.js → chunk-RAN3ECAS.js} +3 -3
  160. package/dist/chunk-RKGUZBOC.js +79 -0
  161. package/dist/{chunk-HLFDZ35S.cjs → chunk-RRQIAJLQ.cjs} +8 -8
  162. package/dist/{chunk-PABONWKI.js → chunk-RXQNRZ5F.js} +3 -3
  163. package/dist/{chunk-7ZHYEITD.cjs → chunk-S4O7CFHQ.cjs} +10 -11
  164. package/dist/chunk-SE7ANBGN.js +128 -0
  165. package/dist/{chunk-X2AVEAZM.cjs → chunk-SJIRCTIS.cjs} +176 -2
  166. package/dist/{chunk-WXQ57LAO.js → chunk-SQXAZHDG.js} +4 -4
  167. package/dist/chunk-SR73L5ZP.cjs +84 -0
  168. package/dist/{chunk-OABEO6HH.js → chunk-SZOLTWWD.js} +2349 -214
  169. package/dist/{chunk-5JEU52DW.js → chunk-TPZ3BN2D.js} +3 -3
  170. package/dist/{chunk-QFU53KRH.js → chunk-TSTFYGGX.js} +4 -5
  171. package/dist/{chunk-EBS32AJI.cjs → chunk-TZCFKZ6Z.cjs} +5 -5
  172. package/dist/chunk-UCVZXQ63.js +724 -0
  173. package/dist/chunk-UGQ3QNV6.js +992 -0
  174. package/dist/chunk-UNMVGZVW.js +142 -0
  175. package/dist/{chunk-TEVX443G.js → chunk-UTUD6GJI.js} +178 -6
  176. package/dist/chunk-UXBYA7DV.cjs +155 -0
  177. package/dist/chunk-V6GXFSK7.cjs +443 -0
  178. package/dist/chunk-VHORVGCG.cjs +761 -0
  179. package/dist/{chunk-B4EKV6HQ.js → chunk-VKCTYLDN.js} +500 -442
  180. package/dist/{chunk-O3MGZDCT.cjs → chunk-VTEXJOSD.cjs} +63 -63
  181. package/dist/chunk-VVAAZITA.cjs +287 -0
  182. package/dist/{chunk-V7AKE5VT.cjs → chunk-W2GA3EQB.cjs} +435 -42
  183. package/dist/chunk-W4GABFCR.js +37 -0
  184. package/dist/chunk-WKEK4NCA.js +490 -0
  185. package/dist/{chunk-5A4TCHOC.cjs → chunk-WNYXT4TE.cjs} +4 -4
  186. package/dist/{chunk-S762UEV5.js → chunk-WTH23ISI.js} +6 -6
  187. package/dist/{chunk-BTKZGHAV.js → chunk-WWNCM473.js} +10 -6
  188. package/dist/{chunk-7X5PNIQJ.js → chunk-X3YFRH6K.js} +27 -25
  189. package/dist/{chunk-4YNYPHH3.cjs → chunk-X75H75UY.cjs} +2351 -213
  190. package/dist/{chunk-LYJJI7ZK.cjs → chunk-XCUDDFKC.cjs} +216 -9
  191. package/dist/chunk-YAO4HPJL.cjs +120 -0
  192. package/dist/chunk-YKY2JBER.cjs +9443 -0
  193. package/dist/chunk-YP5CHEYU.cjs +154 -0
  194. package/dist/{chunk-WRNEH5MO.js → chunk-YW3I2FQL.js} +18 -7
  195. package/dist/{chunk-BRNUPDHJ.js → chunk-Z557DVYN.js} +386 -19
  196. package/dist/{chunk-VSACG2AR.js → chunk-Z6LZUYZF.js} +21 -264
  197. package/dist/chunk-ZHPMP447.cjs +43 -0
  198. package/dist/{chunk-LODTHGST.cjs → chunk-ZK7KX5CD.cjs} +133 -70
  199. package/dist/{chunk-CCPSNT6B.cjs → chunk-ZRPALBQB.cjs} +5 -5
  200. package/dist/chunk-ZVFHPMC5.js +824 -0
  201. package/dist/chunk-ZVQMKUGJ.js +443 -0
  202. package/dist/cli/holoscript-runner.cjs +86 -48
  203. package/dist/cli/holoscript-runner.js +54 -16
  204. package/dist/codebase/index.cjs +1 -1
  205. package/dist/codebase/index.js +1 -1
  206. package/dist/compiler/agent-inference.cjs +11 -11
  207. package/dist/compiler/agent-inference.js +9 -6
  208. package/dist/compiler/android-xr.cjs +13 -12
  209. package/dist/compiler/android-xr.js +11 -10
  210. package/dist/compiler/android.cjs +12 -12
  211. package/dist/compiler/android.js +10 -10
  212. package/dist/compiler/business-quest.cjs +10 -10
  213. package/dist/compiler/business-quest.js +2 -2
  214. package/dist/compiler/coco.cjs +1 -1
  215. package/dist/compiler/coco.js +1 -1
  216. package/dist/compiler/context.cjs +9 -9
  217. package/dist/compiler/context.js +6 -6
  218. package/dist/compiler/daimon-seed.cjs +36 -0
  219. package/dist/compiler/daimon-seed.js +12 -0
  220. package/dist/compiler/domain-block-utils.cjs +205 -156
  221. package/dist/compiler/domain-block-utils.js +8 -7
  222. package/dist/compiler/dtdl.cjs +10 -10
  223. package/dist/compiler/dtdl.js +7 -7
  224. package/dist/compiler/gltf-pipeline.cjs +9 -9
  225. package/dist/compiler/gltf-pipeline.js +2 -2
  226. package/dist/compiler/godot.cjs +10 -9
  227. package/dist/compiler/godot.js +9 -8
  228. package/dist/compiler/incremental.cjs +11 -11
  229. package/dist/compiler/incremental.js +6 -6
  230. package/dist/compiler/index.cjs +2585 -3273
  231. package/dist/compiler/index.d.ts +149 -35
  232. package/dist/compiler/index.js +2197 -3102
  233. package/dist/compiler/ios.cjs +11 -11
  234. package/dist/compiler/ios.js +9 -9
  235. package/dist/compiler/llm-provider-capabilities.cjs +9 -9
  236. package/dist/compiler/llm-provider-capabilities.js +6 -6
  237. package/dist/compiler/nodetoy.cjs +1 -1
  238. package/dist/compiler/nodetoy.js +1 -1
  239. package/dist/compiler/openxr.cjs +11 -10
  240. package/dist/compiler/openxr.js +10 -9
  241. package/dist/compiler/remotion.cjs +1 -1
  242. package/dist/compiler/remotion.js +1 -1
  243. package/dist/compiler/reproducibility.cjs +1 -1
  244. package/dist/compiler/reproducibility.js +1 -1
  245. package/dist/compiler/sdf.cjs +11 -10
  246. package/dist/compiler/sdf.js +9 -8
  247. package/dist/compiler/semantic-scene.cjs +7 -7
  248. package/dist/compiler/semantic-scene.js +2 -2
  249. package/dist/compiler/state.cjs +9 -9
  250. package/dist/compiler/state.js +7 -7
  251. package/dist/compiler/trait-composition.cjs +11 -11
  252. package/dist/compiler/trait-composition.js +7 -7
  253. package/dist/compiler/traits/ProvenanceSemiring.d.ts +167 -0
  254. package/dist/compiler/traits/Semiring.d.ts +26 -0
  255. package/dist/compiler/unity.cjs +11 -10
  256. package/dist/compiler/unity.js +10 -9
  257. package/dist/compiler/unreal.cjs +12 -11
  258. package/dist/compiler/unreal.js +10 -9
  259. package/dist/compiler/urdf.cjs +18 -17
  260. package/dist/compiler/urdf.js +9 -8
  261. package/dist/compiler/usd-physics.cjs +11 -10
  262. package/dist/compiler/usd-physics.js +8 -7
  263. package/dist/compiler/visionos.cjs +11 -10
  264. package/dist/compiler/visionos.js +10 -9
  265. package/dist/compiler/vrchat.cjs +11 -10
  266. package/dist/compiler/vrchat.js +9 -8
  267. package/dist/compiler/wasm.cjs +14 -13
  268. package/dist/compiler/wasm.js +9 -8
  269. package/dist/compiler/webgpu.cjs +10 -9
  270. package/dist/compiler/webgpu.js +9 -8
  271. package/dist/constants.cjs +398 -0
  272. package/dist/constants.js +9 -0
  273. package/dist/coordinators/index.cjs +4 -1
  274. package/dist/coordinators/index.js +4 -1
  275. package/dist/debugger.cjs +11 -9
  276. package/dist/debugger.js +9 -7
  277. package/dist/{dist-ACXG6IH5.cjs → dist-GRMOP2UL.cjs} +341 -65
  278. package/dist/{dist-VD4L6V7Q.js → dist-ZBUKU2JG.js} +333 -63
  279. package/dist/entries/interop.cjs +23 -23
  280. package/dist/entries/interop.js +3 -3
  281. package/dist/entries/scripting.cjs +12 -11
  282. package/dist/entries/scripting.js +8 -7
  283. package/dist/evolution/index.cjs +66 -0
  284. package/dist/evolution/index.d.ts +162 -0
  285. package/dist/evolution/index.js +17 -0
  286. package/dist/hololand/index.cjs +41 -37
  287. package/dist/hololand/index.js +3 -3
  288. package/dist/index.cjs +12394 -3224
  289. package/dist/index.d.ts +260 -18
  290. package/dist/index.js +10755 -2182
  291. package/dist/keyword-registry/PluginKeywordRegistry.d.ts +138 -0
  292. package/dist/keyword-registry/index.cjs +29 -0
  293. package/dist/keyword-registry/index.d.ts +1 -0
  294. package/dist/keyword-registry/index.js +4 -0
  295. package/dist/math/tropical-spmv.cjs +11 -11
  296. package/dist/math/tropical-spmv.d.ts +1 -0
  297. package/dist/math/tropical-spmv.js +2 -2
  298. package/dist/math/tropicalSpmv.d.ts +43 -0
  299. package/dist/math/vec3.cjs +1 -1
  300. package/dist/math/vec3.js +1 -1
  301. package/dist/matter/StagedMatter.d.ts +82 -0
  302. package/dist/matter/index.cjs +17 -0
  303. package/dist/matter/index.d.ts +1 -0
  304. package/dist/matter/index.js +4 -0
  305. package/dist/{ml-dsa-Z7JDKW4L.js → ml-dsa-J6VKVT4K.js} +3 -3
  306. package/dist/{ml-dsa-FSKBTE3W.cjs → ml-dsa-MTIK4ZUQ.cjs} +23 -23
  307. package/dist/paper-0c-spike/index.cjs +1 -1
  308. package/dist/paper-0c-spike/index.js +1 -1
  309. package/dist/parameter-envelope/ParameterEnvelope.d.ts +128 -0
  310. package/dist/parameter-envelope/index.cjs +17 -0
  311. package/dist/parameter-envelope/index.d.ts +2 -0
  312. package/dist/parameter-envelope/index.js +4 -0
  313. package/dist/parser/HoloCompositionTypes.d.ts +2013 -0
  314. package/dist/parser/PipelineParser.d.ts +162 -0
  315. package/dist/parser.cjs +36 -20
  316. package/dist/parser.js +13 -9
  317. package/dist/plugin-manifest/ManifestAutoLoader.d.ts +35 -0
  318. package/dist/plugin-manifest/PluginManifest.d.ts +156 -0
  319. package/dist/plugin-manifest/index.cjs +25 -0
  320. package/dist/plugin-manifest/index.d.ts +2 -0
  321. package/dist/plugin-manifest/index.js +4 -0
  322. package/dist/plugin-solver-contract/PluginSolverContract.d.ts +288 -0
  323. package/dist/plugin-solver-contract/index.cjs +41 -0
  324. package/dist/plugin-solver-contract/index.d.ts +1 -0
  325. package/dist/plugin-solver-contract/index.js +4 -0
  326. package/dist/policy/ContentPolicyGate.d.ts +51 -0
  327. package/dist/policy/PolicyPack.d.ts +120 -0
  328. package/dist/policy/blocklist.d.ts +32 -0
  329. package/dist/policy/defaults.d.ts +44 -0
  330. package/dist/policy/index.cjs +106 -0
  331. package/dist/policy/index.d.ts +17 -0
  332. package/dist/policy/index.js +5 -0
  333. package/dist/policy/jsonLogic.d.ts +31 -0
  334. package/dist/policy/types.d.ts +174 -0
  335. package/dist/proof-composition/ProofCompositionLaw.d.ts +93 -0
  336. package/dist/proof-composition/index.cjs +25 -0
  337. package/dist/proof-composition/index.d.ts +1 -0
  338. package/dist/proof-composition/index.js +4 -0
  339. package/dist/receipts/hash-policy.d.ts +85 -0
  340. package/dist/reconstruction/index.cjs +75 -47
  341. package/dist/reconstruction/index.js +5 -5
  342. package/dist/runtime/plugin-trait-registrar.d.ts +36 -0
  343. package/dist/runtime.cjs +81 -79
  344. package/dist/runtime.js +9 -7
  345. package/dist/scene-presets-EDKYZ5GW.js +4 -0
  346. package/dist/scene-presets-NCW2CFRS.cjs +17 -0
  347. package/dist/self-improvement/index.cjs +1 -1
  348. package/dist/self-improvement/index.js +1 -1
  349. package/dist/{src-PT2FERDV.cjs → src-G3D7ZATQ.cjs} +545 -21
  350. package/dist/{src-J6CM4AUR.js → src-UXYA7HM6.js} +539 -16
  351. package/dist/storage/index.cjs +10 -10
  352. package/dist/storage/index.js +3 -3
  353. package/dist/testing.cjs +1 -1
  354. package/dist/testing.js +1 -1
  355. package/dist/tools/index.cjs +3631 -0
  356. package/dist/tools/index.js +3581 -0
  357. package/dist/traitDocs/traitDocs.cjs +9 -9
  358. package/dist/traitDocs/traitDocs.d.ts +1 -0
  359. package/dist/traitDocs/traitDocs.js +3 -3
  360. package/dist/traits/ControlLoopTrait.d.ts +154 -0
  361. package/dist/traits/KinematicChainTrait.d.ts +116 -0
  362. package/dist/traits/SensorSamplingTrait.d.ts +154 -0
  363. package/dist/traits/TraitTypes.d.ts +270 -0
  364. package/dist/traits/TransactionTrait.d.ts +121 -0
  365. package/dist/traits/botanical-lotus.cjs +54 -50
  366. package/dist/traits/botanical-lotus.js +2 -5
  367. package/dist/traits/control-loop.cjs +21 -0
  368. package/dist/traits/control-loop.d.ts +1 -0
  369. package/dist/traits/control-loop.js +4 -0
  370. package/dist/traits/engines/cloth-verlet.d.ts +65 -0
  371. package/dist/traits/engines/index.cjs +19 -19
  372. package/dist/traits/engines/index.d.ts +15 -275
  373. package/dist/traits/engines/index.js +3 -3
  374. package/dist/traits/engines/motion-data-schema.d.ts +119 -0
  375. package/dist/traits/engines/motion-matching.d.ts +102 -0
  376. package/dist/traits/engines/noise.d.ts +25 -0
  377. package/dist/traits/engines/onnx-adapter.d.ts +173 -0
  378. package/dist/traits/engines/onnx-motion-matching.d.ts +163 -0
  379. package/dist/traits/engines/pfnn-network.d.ts +92 -0
  380. package/dist/traits/engines/synthetic-walk-cycle.d.ts +38 -0
  381. package/dist/traits/engines/tensor-ops.d.ts +15 -0
  382. package/dist/traits/index.cjs +2789 -1259
  383. package/dist/traits/index.d.ts +35 -0
  384. package/dist/traits/index.js +1692 -411
  385. package/dist/traits/kinematic-chain.cjs +25 -0
  386. package/dist/traits/kinematic-chain.d.ts +1 -0
  387. package/dist/traits/kinematic-chain.js +4 -0
  388. package/dist/traits/sensor-sampling.cjs +33 -0
  389. package/dist/traits/sensor-sampling.d.ts +1 -0
  390. package/dist/traits/sensor-sampling.js +4 -0
  391. package/dist/traits/simulation-solver-factory.cjs +1 -1
  392. package/dist/traits/simulation-solver-factory.js +1 -1
  393. package/dist/traits/transaction.cjs +29 -0
  394. package/dist/traits/transaction.d.ts +1 -0
  395. package/dist/traits/transaction.js +4 -0
  396. package/dist/traits/webcam-gaze.cjs +1 -1
  397. package/dist/traits/webcam-gaze.js +1 -1
  398. package/dist/type-checker.cjs +7 -6
  399. package/dist/type-checker.js +5 -4
  400. package/dist/types/AdvancedTypeSystem.d.ts +489 -0
  401. package/dist/types/HoloScriptPlus.d.ts +810 -0
  402. package/dist/types/base.d.ts +248 -0
  403. package/dist/types.d.ts +799 -0
  404. package/dist/world/index.cjs +3 -4
  405. package/dist/world/index.js +3 -4
  406. package/dist/world-model/index.cjs +1 -1
  407. package/dist/world-model/index.js +1 -1
  408. package/dist/wot/index.cjs +1 -1
  409. package/dist/wot/index.js +1 -1
  410. package/package.json +80 -13
  411. package/dist/GLTFPipeline-3EJLL3TS.cjs +0 -38
  412. package/dist/GLTFPipeline-3OWJV2VK.js +0 -17
  413. package/dist/HoloScriptPlusParser-ADWRY5OS.cjs +0 -698
  414. package/dist/HoloScriptPlusParser-JLJDXHSC.js +0 -693
  415. package/dist/HoloScriptPlusParser-QCGFPWIL.cjs +0 -27
  416. package/dist/HoloScriptPlusParser-WENAFEFV.js +0 -10
  417. package/dist/HoloScriptRuntime-GGRVEU4T.cjs +0 -19
  418. package/dist/HoloScriptRuntime-GJK6VJPH.js +0 -10
  419. package/dist/chunk-22Q5A6RV.js +0 -979
  420. package/dist/chunk-4C57PR42.js +0 -468
  421. package/dist/chunk-4W5G5QVL.cjs +0 -847
  422. package/dist/chunk-5ET6L4NS.js +0 -487
  423. package/dist/chunk-C4GSLCHE.cjs +0 -7153
  424. package/dist/chunk-F2G6CWFT.js +0 -7089
  425. package/dist/chunk-G6PNEASF.cjs +0 -814
  426. package/dist/chunk-GTA4Q3A3.js +0 -1491
  427. package/dist/chunk-HCCQLAA4.cjs +0 -74
  428. package/dist/chunk-HFSVMKM3.cjs +0 -72
  429. package/dist/chunk-KAIVDEIG.cjs +0 -4539
  430. package/dist/chunk-KQU64CIX.cjs +0 -1508
  431. package/dist/chunk-MSYSQ2AJ.js +0 -4533
  432. package/dist/chunk-NHJLP37F.js +0 -70
  433. package/dist/chunk-NHYRRAGI.cjs +0 -490
  434. package/dist/chunk-OIQYIIO3.cjs +0 -473
  435. package/dist/chunk-OL46QLBJ.js +0 -61
  436. package/dist/chunk-SKZPC5AG.cjs +0 -984
  437. package/dist/chunk-SLHLXUMO.js +0 -445
  438. package/dist/chunk-UOIGFQXC.cjs +0 -9750
  439. package/dist/chunk-UOL6Y5TD.cjs +0 -759
  440. package/dist/chunk-UVFI7XIR.cjs +0 -452
  441. package/dist/chunk-VEPGBETF.js +0 -844
  442. package/dist/chunk-XQ5MWMP2.js +0 -756
  443. package/dist/chunk-XT6JY5W5.js +0 -9684
  444. package/dist/chunk-YRRAUB35.js +0 -811
  445. package/dist/compiler/GasOptimizationAnalyzer.d.ts +0 -73
  446. package/dist/compiler/NFTMarketplaceCompiler.d.ts +0 -23
  447. package/dist/compiler/ar.cjs +0 -23
  448. package/dist/compiler/ar.js +0 -11
  449. package/dist/compiler/babylon.cjs +0 -21
  450. package/dist/compiler/babylon.js +0 -15
  451. package/dist/compiler/multi-layer.cjs +0 -24
  452. package/dist/compiler/multi-layer.js +0 -15
  453. package/dist/compiler/playcanvas.cjs +0 -19
  454. package/dist/compiler/playcanvas.js +0 -13
  455. package/dist/compiler/r3f.cjs +0 -39
  456. package/dist/compiler/r3f.d.ts +0 -22
  457. package/dist/compiler/r3f.js +0 -17
  458. package/dist/compiler/vrr.cjs +0 -24
  459. package/dist/compiler/vrr.js +0 -12
  460. package/dist/parser/NFTMarketplaceTypes.d.ts +0 -191
  461. package/dist/playwright-3AT3AKTV.cjs +0 -98673
  462. package/dist/playwright-VZPDVUEQ.js +0 -98660
@@ -0,0 +1,824 @@
1
+ import { init_jsonLogic, matchesRule } from './chunk-JBQXZIWB.js';
2
+
3
+ // src/policy/index.ts
4
+ init_jsonLogic();
5
+
6
+ // src/policy/blocklist.ts
7
+ function normalizeText(input) {
8
+ let s = input.normalize("NFKD").toLowerCase();
9
+ s = s.replace(/[̀-ͯ]/g, "");
10
+ const leet = {
11
+ "0": "o",
12
+ "1": "i",
13
+ "3": "e",
14
+ "4": "a",
15
+ "5": "s",
16
+ "7": "t",
17
+ "@": "a",
18
+ $: "s"
19
+ };
20
+ s = s.replace(/[013457@$]/g, (c) => leet[c] ?? c);
21
+ s = s.replace(/[.\-_*|/\\]+/g, "");
22
+ s = s.replace(/\s+/g, " ").trim();
23
+ return s;
24
+ }
25
+ var PATTERN_CACHE = /* @__PURE__ */ new Map();
26
+ var MAX_PATTERN_LENGTH = 512;
27
+ function compile(pattern) {
28
+ if (PATTERN_CACHE.has(pattern)) return PATTERN_CACHE.get(pattern) ?? null;
29
+ let re = null;
30
+ if (pattern.length <= MAX_PATTERN_LENGTH) {
31
+ try {
32
+ re = new RegExp(pattern, "i");
33
+ } catch {
34
+ re = null;
35
+ }
36
+ }
37
+ PATTERN_CACHE.set(pattern, re);
38
+ return re;
39
+ }
40
+ function termHit(normalized, term) {
41
+ const t = normalizeText(term);
42
+ if (!t) return false;
43
+ return normalized === t || normalized.startsWith(t + " ") || normalized.endsWith(" " + t) || normalized.includes(" " + t + " ");
44
+ }
45
+ function matchBlocklist(text, entries) {
46
+ const normalized = normalizeText(text);
47
+ let best = null;
48
+ for (const entry of entries) {
49
+ let matched = false;
50
+ if (entry.terms) {
51
+ for (const term of entry.terms) {
52
+ if (termHit(normalized, term)) {
53
+ matched = true;
54
+ break;
55
+ }
56
+ }
57
+ }
58
+ if (!matched && entry.patterns) {
59
+ for (const pat of entry.patterns) {
60
+ const re = compile(pat);
61
+ if (re && (re.test(text) || re.test(normalized))) {
62
+ matched = true;
63
+ break;
64
+ }
65
+ }
66
+ }
67
+ if (!matched) continue;
68
+ const severity = entry.hardStop ? 1 : entry.severity ?? 0.95;
69
+ if (!best || severity > best.severity) {
70
+ best = {
71
+ category: entry.category,
72
+ severity,
73
+ source: "blocklist",
74
+ rationale: `Tier-0 blocklist match: ${entry.id}`,
75
+ entryId: entry.id,
76
+ hardStop: Boolean(entry.hardStop)
77
+ };
78
+ }
79
+ }
80
+ return best;
81
+ }
82
+
83
+ // src/policy/defaults.ts
84
+ var HARD_STOP_CATEGORIES = ["csam", "sexual_minors", "terrorism"];
85
+ var DEFAULT_BLOCKLIST = [
86
+ // ── Hard-stop categories — detectors supplied by external hash feeds ──────────
87
+ { id: "hs-csam", category: "csam", hardStop: true, patterns: [] },
88
+ { id: "hs-sexual-minors", category: "sexual_minors", hardStop: true, patterns: [] },
89
+ { id: "hs-terrorism", category: "terrorism", hardStop: true, patterns: [] },
90
+ // ── Conservative unambiguous instructional-harm patterns (backstop to Tier-2) ─
91
+ {
92
+ id: "weapons-build-explosive",
93
+ category: "weapons",
94
+ severity: 0.97,
95
+ patterns: ["\\bhow\\s+to\\s+(make|build|construct|assemble)\\s+(a\\s+)?(bomb|explosive|pipe\\s*bomb|ied)\\b"]
96
+ },
97
+ {
98
+ id: "malware-author",
99
+ category: "malware",
100
+ severity: 0.9,
101
+ patterns: ["\\b(write|generate|create)\\s+(me\\s+)?(a\\s+)?(ransomware|keylogger|computer\\s+virus|trojan)\\b"]
102
+ },
103
+ {
104
+ id: "self-harm-method",
105
+ category: "self_harm",
106
+ severity: 0.9,
107
+ patterns: ["\\bhow\\s+(can|do)\\s+i\\s+(kill\\s+myself|end\\s+my\\s+life|commit\\s+suicide)\\b"]
108
+ }
109
+ ];
110
+ function jurisdictionBundle(region) {
111
+ const r = (region || "GLOBAL").toUpperCase();
112
+ switch (r) {
113
+ case "US":
114
+ return { region: "US", aiActTier: "minimal", dsaApplies: false, minAge: 13, disclosureRequired: false };
115
+ case "EU":
116
+ case "DE":
117
+ case "FR":
118
+ case "ES":
119
+ case "IT":
120
+ case "NL":
121
+ case "IE":
122
+ return { region: r, aiActTier: "limited", dsaApplies: true, minAge: 16, disclosureRequired: true };
123
+ case "GB":
124
+ case "UK":
125
+ return { region: "GB", aiActTier: "limited", dsaApplies: false, minAge: 13, disclosureRequired: true };
126
+ // ── Asia-Pacific ──────────────────────────────────────────────────────────
127
+ case "AU":
128
+ return { region: "AU", aiActTier: "minimal", dsaApplies: false, minAge: 13, disclosureRequired: false };
129
+ case "JP":
130
+ return { region: "JP", aiActTier: "minimal", dsaApplies: false, minAge: 13, disclosureRequired: true };
131
+ case "KR":
132
+ return { region: "KR", aiActTier: "limited", dsaApplies: false, minAge: 14, disclosureRequired: true };
133
+ case "SG":
134
+ return { region: "SG", aiActTier: "minimal", dsaApplies: false, minAge: 13, disclosureRequired: true };
135
+ case "IN":
136
+ return { region: "IN", aiActTier: "minimal", dsaApplies: false, minAge: 18, disclosureRequired: false };
137
+ // ── Americas ──────────────────────────────────────────────────────────────
138
+ case "CA":
139
+ return { region: "CA", aiActTier: "limited", dsaApplies: false, minAge: 13, disclosureRequired: true };
140
+ case "BR":
141
+ return { region: "BR", aiActTier: "limited", dsaApplies: true, minAge: 13, disclosureRequired: true };
142
+ case "GLOBAL":
143
+ default:
144
+ return { region: "GLOBAL", aiActTier: "limited", dsaApplies: true, minAge: 16, disclosureRequired: true };
145
+ }
146
+ }
147
+ var HARMFUL_FAMILY_CATEGORIES = [
148
+ "sexual",
149
+ "violence",
150
+ "weapons",
151
+ "illegal_goods",
152
+ "hate",
153
+ "harassment",
154
+ "malware",
155
+ "privacy"
156
+ ];
157
+ var COMMON_RULES = [
158
+ {
159
+ id: "common-self-harm-escalate",
160
+ description: "Self-harm signals route to human/crisis escalation rather than a silent block.",
161
+ when: { "==": [{ var: "category" }, "self_harm"] },
162
+ action: "escalate",
163
+ category: "self_harm",
164
+ legalBasis: "duty-of-care / crisis-routing",
165
+ priority: 10
166
+ },
167
+ {
168
+ id: "common-illegal-high-block",
169
+ description: "Clearly-illegal, high-severity instructional content is blocked on every tier (including dev).",
170
+ when: {
171
+ and: [
172
+ { in: [{ var: "category" }, ["weapons", "illegal_goods"]] },
173
+ { ">=": [{ var: "severity" }, 0.85] }
174
+ ]
175
+ },
176
+ action: "block",
177
+ legalBasis: "illegal-conduct (universal)",
178
+ priority: 20
179
+ }
180
+ ];
181
+ var FAMILY_RULES = [
182
+ {
183
+ id: "family-harmful-category-block",
184
+ description: "Family tier blocks every harmful content category outright, at any severity.",
185
+ when: {
186
+ and: [
187
+ { "==": [{ var: "tier" }, "family"] },
188
+ { in: [{ var: "category" }, HARMFUL_FAMILY_CATEGORIES] }
189
+ ]
190
+ },
191
+ action: "block",
192
+ legalBasis: "HoloLand family-safety policy (D.079)",
193
+ aiActArticle: "transparency/minors-protection",
194
+ priority: 5
195
+ },
196
+ {
197
+ id: "family-misinformation-flag",
198
+ description: "Family tier flags misinformation for review.",
199
+ when: {
200
+ and: [{ "==": [{ var: "tier" }, "family"] }, { "==": [{ var: "category" }, "misinformation"] }]
201
+ },
202
+ action: "flag",
203
+ category: "misinformation",
204
+ priority: 1
205
+ }
206
+ ];
207
+ var TEEN_RULES = [
208
+ {
209
+ id: "teen-serious-block",
210
+ description: "Teen tier blocks serious-harm categories.",
211
+ when: {
212
+ and: [
213
+ { "==": [{ var: "tier" }, "teen"] },
214
+ { in: [{ var: "category" }, ["sexual", "weapons", "illegal_goods", "malware", "hate"]] }
215
+ ]
216
+ },
217
+ action: "block",
218
+ legalBasis: "minor-protection policy",
219
+ priority: 5
220
+ },
221
+ {
222
+ id: "teen-violence-harassment-flag",
223
+ description: "Teen tier flags violence/harassment above low severity.",
224
+ when: {
225
+ and: [
226
+ { "==": [{ var: "tier" }, "teen"] },
227
+ { in: [{ var: "category" }, ["violence", "harassment"]] },
228
+ { ">=": [{ var: "severity" }, 0.4] }
229
+ ]
230
+ },
231
+ action: "flag",
232
+ priority: 1
233
+ }
234
+ ];
235
+ var GENERAL_RULES = [
236
+ {
237
+ id: "general-illegal-block",
238
+ description: "Block clearly illegal categories at moderate+ severity for general/adult tiers.",
239
+ when: {
240
+ and: [
241
+ { in: [{ var: "tier" }, ["general", "adult"]] },
242
+ { in: [{ var: "category" }, ["weapons", "illegal_goods", "malware"]] },
243
+ { ">=": [{ var: "severity" }, 0.5] }
244
+ ]
245
+ },
246
+ action: "block",
247
+ legalBasis: "prohibited-conduct policy",
248
+ priority: 5
249
+ },
250
+ {
251
+ id: "general-hate-violence-flag",
252
+ description: "Flag hate/violence/harassment for general tier above moderate severity.",
253
+ when: {
254
+ and: [
255
+ { "==": [{ var: "tier" }, "general"] },
256
+ { in: [{ var: "category" }, ["hate", "violence", "harassment"]] },
257
+ { ">=": [{ var: "severity" }, 0.5] }
258
+ ]
259
+ },
260
+ action: "flag",
261
+ priority: 1
262
+ },
263
+ {
264
+ id: "general-sexual-flag",
265
+ description: "General tier flags adult sexual content (allowed on the adult tier).",
266
+ when: {
267
+ and: [{ "==": [{ var: "tier" }, "general"] }, { "==": [{ var: "category" }, "sexual"] }]
268
+ },
269
+ action: "flag",
270
+ priority: 1
271
+ }
272
+ ];
273
+ function defaultRulesForTier(tier) {
274
+ switch (tier) {
275
+ case "family":
276
+ return [...COMMON_RULES, ...FAMILY_RULES];
277
+ case "teen":
278
+ return [...COMMON_RULES, ...TEEN_RULES];
279
+ case "general":
280
+ case "adult":
281
+ return [...COMMON_RULES, ...GENERAL_RULES];
282
+ case "dev":
283
+ default:
284
+ return [...COMMON_RULES];
285
+ }
286
+ }
287
+ function buildContentPolicyConfig(opts) {
288
+ const tier = opts.tier;
289
+ const strict = tier === "family" || tier === "teen";
290
+ return {
291
+ tier,
292
+ jurisdiction: jurisdictionBundle(opts.region ?? "GLOBAL"),
293
+ rules: opts.rules ?? defaultRulesForTier(tier),
294
+ blocklist: opts.blocklist ?? DEFAULT_BLOCKLIST,
295
+ hardStopCategories: HARD_STOP_CATEGORIES,
296
+ classifier: opts.classifier,
297
+ llm: opts.llm,
298
+ borderlineThreshold: strict ? 0.2 : 0.4,
299
+ alwaysConsultLlm: strict
300
+ };
301
+ }
302
+
303
+ // src/policy/ContentPolicyGate.ts
304
+ init_jsonLogic();
305
+ var ACTION_RANK = { allow: 0, flag: 1, escalate: 2, block: 3 };
306
+ function buildFacts(input, config) {
307
+ const j = config.jurisdiction;
308
+ return {
309
+ text: input.text,
310
+ textLength: input.text.length,
311
+ normalizedText: normalizeText(input.text),
312
+ category: "none",
313
+ severity: 0,
314
+ tier: config.tier,
315
+ region: j.region,
316
+ aiActTier: j.aiActTier ?? null,
317
+ minAge: j.minAge ?? null,
318
+ dsaApplies: Boolean(j.dsaApplies),
319
+ surface: input.surface,
320
+ direction: input.direction ?? "output",
321
+ ...input.facts ?? {}
322
+ };
323
+ }
324
+ function tierApplies(rule, tier) {
325
+ return !rule.appliesToTiers || rule.appliesToTiers.length === 0 || rule.appliesToTiers.includes(tier);
326
+ }
327
+ function regionApplies(rule, region) {
328
+ if (!rule.appliesToRegions || rule.appliesToRegions.length === 0) return true;
329
+ if (region === "GLOBAL") return true;
330
+ return rule.appliesToRegions.includes(region) || rule.appliesToRegions.includes("GLOBAL");
331
+ }
332
+ function applyRules(rules, facts) {
333
+ let block = null;
334
+ let escalate = null;
335
+ let flag = null;
336
+ let allow = null;
337
+ const higher = (cur, r) => !cur || (r.priority ?? 0) > (cur.priority ?? 0) ? r : cur;
338
+ for (const r of rules) {
339
+ if (!tierApplies(r, facts.tier)) continue;
340
+ if (!regionApplies(r, facts.region)) continue;
341
+ if (!matchesRule(r.when, facts)) continue;
342
+ switch (r.action) {
343
+ case "block":
344
+ block = higher(block, r);
345
+ break;
346
+ case "escalate":
347
+ escalate = higher(escalate, r);
348
+ break;
349
+ case "flag":
350
+ flag = higher(flag, r);
351
+ break;
352
+ case "allow":
353
+ allow = higher(allow, r);
354
+ break;
355
+ }
356
+ }
357
+ if (block) return { action: "block", rule: block };
358
+ if (escalate) return { action: "escalate", rule: escalate };
359
+ if (flag && !allow) return { action: "flag", rule: flag };
360
+ if (allow) return { action: "allow", rule: allow };
361
+ return { action: "allow", rule: null };
362
+ }
363
+ function mergeOutcome(a, b) {
364
+ return ACTION_RANK[b.action] > ACTION_RANK[a.action] ? b : a;
365
+ }
366
+ function statementOfReasons(action, classification, rule, facts) {
367
+ if (action === "allow") return null;
368
+ const parts = [
369
+ `action=${action}`,
370
+ `category=${classification.category}`,
371
+ `severity=${classification.severity.toFixed(2)}`,
372
+ `tier=${facts.tier}`,
373
+ `region=${facts.region}`,
374
+ `surface=${facts.surface}`,
375
+ `direction=${facts.direction}`
376
+ ];
377
+ if (rule) {
378
+ parts.push(`rule=${rule.id}`);
379
+ if (rule.legalBasis) parts.push(`basis="${rule.legalBasis}"`);
380
+ if (rule.aiActArticle) parts.push(`aiActArticle=${rule.aiActArticle}`);
381
+ } else {
382
+ parts.push("rule=hard-stop");
383
+ }
384
+ return parts.join(" ");
385
+ }
386
+ function finalize(action, classification, rule, facts, config, decidedAtTier, timestampMs) {
387
+ const j = config.jurisdiction;
388
+ const disclosureRequired = Boolean(j.disclosureRequired) && facts.direction === "output";
389
+ const allowed = action === "allow" || action === "flag";
390
+ let reason;
391
+ switch (action) {
392
+ case "block":
393
+ reason = rule ? `Blocked by policy rule ${rule.id}: ${rule.description}` : `Blocked: hard-stop category "${classification.category}".`;
394
+ break;
395
+ case "escalate":
396
+ reason = `Held for human review${rule ? ` (rule ${rule.id})` : ""}: category "${classification.category}".`;
397
+ break;
398
+ case "flag":
399
+ reason = `Allowed but flagged${rule ? ` (rule ${rule.id})` : ""}: category "${classification.category}".`;
400
+ break;
401
+ default:
402
+ reason = "Allowed: no policy rule matched.";
403
+ }
404
+ return {
405
+ allowed,
406
+ action,
407
+ tier: config.tier,
408
+ category: classification.category,
409
+ severity: classification.severity,
410
+ matchedRuleId: rule?.id ?? null,
411
+ reason,
412
+ classification,
413
+ jurisdiction: j,
414
+ statementOfReasons: statementOfReasons(action, classification, rule, facts),
415
+ disclosureRequired,
416
+ decidedAtTier,
417
+ timestampMs
418
+ };
419
+ }
420
+ function evaluateContentPolicySync(input, config) {
421
+ const timestampMs = Date.now();
422
+ const facts = buildFacts(input, config);
423
+ const hardStops = config.hardStopCategories ?? HARD_STOP_CATEGORIES;
424
+ let classification = { category: "none", severity: 0, source: "none" };
425
+ if (config.blocklist && config.blocklist.length) {
426
+ const hit = matchBlocklist(input.text, config.blocklist);
427
+ if (hit) {
428
+ classification = { category: hit.category, severity: hit.severity, source: "blocklist", rationale: hit.rationale };
429
+ if (hit.hardStop || hardStops.includes(hit.category)) {
430
+ const f = { ...facts, category: hit.category, severity: hit.severity };
431
+ return finalize("block", classification, null, f, config, 0, timestampMs);
432
+ }
433
+ }
434
+ }
435
+ const facts1 = { ...facts, category: classification.category, severity: classification.severity };
436
+ const outcome = applyRules(config.rules, facts1);
437
+ const tier = outcome.action === "escalate" ? 3 : outcome.action === "allow" ? -1 : 1;
438
+ return finalize(outcome.action, classification, outcome.rule, facts1, config, tier, timestampMs);
439
+ }
440
+ async function evaluateContentPolicy(input, config) {
441
+ const timestampMs = Date.now();
442
+ const facts0 = buildFacts(input, config);
443
+ const hardStops = config.hardStopCategories ?? HARD_STOP_CATEGORIES;
444
+ let classification = { category: "none", severity: 0, source: "none" };
445
+ if (config.blocklist && config.blocklist.length) {
446
+ const hit = matchBlocklist(input.text, config.blocklist);
447
+ if (hit) {
448
+ classification = { category: hit.category, severity: hit.severity, source: "blocklist", rationale: hit.rationale };
449
+ if (hit.hardStop || hardStops.includes(hit.category)) {
450
+ const f = { ...facts0, category: hit.category, severity: hit.severity };
451
+ return finalize("block", classification, null, f, config, 0, timestampMs);
452
+ }
453
+ }
454
+ }
455
+ let facts = { ...facts0, category: classification.category, severity: classification.severity };
456
+ if (config.classifier) {
457
+ const c = await config.classifier(input.text, facts);
458
+ if (c && c.severity >= classification.severity) {
459
+ classification = c;
460
+ facts = { ...facts, category: c.category, severity: c.severity };
461
+ if (hardStops.includes(c.category)) {
462
+ return finalize("block", classification, null, facts, config, 1, timestampMs);
463
+ }
464
+ }
465
+ }
466
+ let outcome = applyRules(config.rules, facts);
467
+ if (outcome.action === "block") {
468
+ return finalize("block", classification, outcome.rule, facts, config, 1, timestampMs);
469
+ }
470
+ const consultLlm = !!config.llm && (config.alwaysConsultLlm === true || classification.category !== "none" || classification.severity >= (config.borderlineThreshold ?? 0.3));
471
+ if (config.llm && consultLlm) {
472
+ const verdict = await config.llm(input.text, facts);
473
+ if (verdict.flagged && verdict.categories.length > 0) {
474
+ const cat = verdict.categories[0];
475
+ if (verdict.severity >= classification.severity) {
476
+ classification = { category: cat, severity: verdict.severity, source: "llm", rationale: verdict.rationale };
477
+ facts = { ...facts, category: cat, severity: verdict.severity };
478
+ }
479
+ if (hardStops.includes(cat)) {
480
+ return finalize("block", classification, null, facts, config, 2, timestampMs);
481
+ }
482
+ const llmOutcome = applyRules(config.rules, facts);
483
+ outcome = mergeOutcome(outcome, llmOutcome);
484
+ if (outcome.action === "block") {
485
+ return finalize("block", classification, outcome.rule, facts, config, 2, timestampMs);
486
+ }
487
+ }
488
+ }
489
+ const decidedAtTier = outcome.action === "allow" ? -1 : outcome.action === "escalate" ? 3 : classification.source === "llm" ? 2 : 1;
490
+ return finalize(outcome.action, classification, outcome.rule, facts, config, decidedAtTier, timestampMs);
491
+ }
492
+ function toAuditEventInput(decision, ctx) {
493
+ const outcome = decision.action === "block" || decision.action === "escalate" ? "denied" : "success";
494
+ return {
495
+ tenantId: ctx.tenantId,
496
+ actorId: ctx.actorId,
497
+ actorType: ctx.actorType ?? "agent",
498
+ action: `content_policy:${decision.action}`,
499
+ resource: "content",
500
+ resourceId: ctx.resourceId,
501
+ outcome,
502
+ clientIp: ctx.clientIp,
503
+ metadata: {
504
+ surface: ctx.surface,
505
+ category: decision.category,
506
+ severity: decision.severity,
507
+ tier: decision.tier,
508
+ region: decision.jurisdiction.region,
509
+ matchedRuleId: decision.matchedRuleId,
510
+ decidedAtTier: decision.decidedAtTier,
511
+ disclosureRequired: decision.disclosureRequired,
512
+ statementOfReasons: decision.statementOfReasons,
513
+ _compliance: "dsa-statement-of-reasons"
514
+ }
515
+ };
516
+ }
517
+
518
+ // src/policy/PolicyPack.ts
519
+ var POLICY_PACK_FRAMEWORK_IDS = [
520
+ "EU_AI_ACT_HIGH_RISK",
521
+ "NIST_AI_RMF",
522
+ "ISO_42001",
523
+ "CFPB_FAIR_LENDING",
524
+ "NYC_LL144",
525
+ "EEOC",
526
+ "COLORADO_SB21_169"
527
+ ];
528
+ var POLICY_PACK_COMPILE_TARGETS = [
529
+ "bias_audit_report",
530
+ "model_card",
531
+ "impact_assessment",
532
+ "declaration_of_conformity"
533
+ ];
534
+ var POLICY_PACK_AUDIT_STORES = ["append_only", "immutable_ledger", "external_archive"];
535
+ var POLICY_PACK_MONITORING_INTERVALS = [
536
+ "per_deploy",
537
+ "daily",
538
+ "weekly",
539
+ "monthly",
540
+ "quarterly",
541
+ "annual"
542
+ ];
543
+ var PolicyPackDeploymentError = class extends Error {
544
+ constructor(evaluation) {
545
+ super(
546
+ `PolicyPack "${evaluation.policyPack}" refused deploy: ` + evaluation.issues.map((issue) => issue.code).join(", ")
547
+ );
548
+ this.evaluation = evaluation;
549
+ this.name = "PolicyPackDeploymentError";
550
+ }
551
+ };
552
+ var PolicyPackDefinitionError = class extends Error {
553
+ constructor(issues) {
554
+ super(`Invalid PolicyPack: ${issues.map((issue) => issue.message).join("; ")}`);
555
+ this.issues = issues;
556
+ this.name = "PolicyPackDefinitionError";
557
+ }
558
+ };
559
+ function isPolicyPackFrameworkId(value) {
560
+ return POLICY_PACK_FRAMEWORK_IDS.includes(value);
561
+ }
562
+ function isPolicyPackCompileTarget(value) {
563
+ return POLICY_PACK_COMPILE_TARGETS.includes(value);
564
+ }
565
+ function isAuditStore(value) {
566
+ return POLICY_PACK_AUDIT_STORES.includes(value);
567
+ }
568
+ function isMonitoringInterval(value) {
569
+ return POLICY_PACK_MONITORING_INTERVALS.includes(value);
570
+ }
571
+ function validatePolicyPack(pack) {
572
+ const issues = [];
573
+ if (!pack.name.trim()) {
574
+ issues.push({ code: "invalid_pack", severity: "error", message: "PolicyPack name is required." });
575
+ }
576
+ if (!pack.version.trim()) {
577
+ issues.push({ code: "invalid_pack", severity: "error", message: "PolicyPack version is required." });
578
+ }
579
+ if (!isPolicyPackFrameworkId(pack.frameworkId)) {
580
+ issues.push({
581
+ code: "invalid_framework",
582
+ severity: "error",
583
+ message: `Unknown frameworkId "${pack.frameworkId}".`
584
+ });
585
+ }
586
+ if (pack.requiredTests.length === 0) {
587
+ issues.push({
588
+ code: "invalid_pack",
589
+ severity: "error",
590
+ message: "PolicyPack requires at least one FairnessSweep test."
591
+ });
592
+ }
593
+ for (const test of pack.requiredTests) {
594
+ if (!test.id.trim() || !test.protectedAttribute.trim()) {
595
+ issues.push({
596
+ code: "invalid_pack",
597
+ severity: "error",
598
+ message: "Every required FairnessSweep needs id and protectedAttribute.",
599
+ testId: test.id
600
+ });
601
+ }
602
+ }
603
+ for (const target of pack.requiredCompileTargets) {
604
+ if (!isPolicyPackCompileTarget(target)) {
605
+ issues.push({
606
+ code: "invalid_compile_target",
607
+ severity: "error",
608
+ message: `Unknown policy-pack compile target "${target}".`,
609
+ compileTarget: target
610
+ });
611
+ }
612
+ }
613
+ if (pack.requiredCompileTargets.length === 0) {
614
+ issues.push({
615
+ code: "invalid_pack",
616
+ severity: "error",
617
+ message: "PolicyPack requires at least one compliance compile target."
618
+ });
619
+ }
620
+ if (!Number.isFinite(pack.auditRetention.minDays) || pack.auditRetention.minDays <= 0) {
621
+ issues.push({
622
+ code: "invalid_pack",
623
+ severity: "error",
624
+ message: "auditRetention.minDays must be a positive number."
625
+ });
626
+ }
627
+ if (!isAuditStore(pack.auditRetention.storage)) {
628
+ issues.push({
629
+ code: "invalid_pack",
630
+ severity: "error",
631
+ message: `Unknown audit retention storage "${pack.auditRetention.storage}".`
632
+ });
633
+ }
634
+ if (!isMonitoringInterval(pack.monitoringCadence.interval)) {
635
+ issues.push({
636
+ code: "invalid_pack",
637
+ severity: "error",
638
+ message: `Unknown monitoring interval "${pack.monitoringCadence.interval}".`
639
+ });
640
+ }
641
+ return issues;
642
+ }
643
+ function definePolicyPack(input) {
644
+ const pack = { ...input, type: "PolicyPack" };
645
+ const issues = validatePolicyPack(pack);
646
+ if (issues.some((issue) => issue.severity === "error")) {
647
+ throw new PolicyPackDefinitionError(issues);
648
+ }
649
+ return pack;
650
+ }
651
+ function asRecord(value) {
652
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
653
+ }
654
+ function field(record, ...names) {
655
+ for (const name of names) {
656
+ if (record[name] !== void 0) return record[name];
657
+ }
658
+ return void 0;
659
+ }
660
+ function stringField(record, fallback, ...names) {
661
+ const value = field(record, ...names);
662
+ return typeof value === "string" ? value : fallback;
663
+ }
664
+ function numberField(record, fallback, ...names) {
665
+ const value = field(record, ...names);
666
+ return typeof value === "number" && Number.isFinite(value) ? value : fallback;
667
+ }
668
+ function booleanField(record, ...names) {
669
+ const value = field(record, ...names);
670
+ return typeof value === "boolean" ? value : void 0;
671
+ }
672
+ function arrayField(value) {
673
+ return Array.isArray(value) ? value : value === void 0 ? [] : [value];
674
+ }
675
+ function normalizeRequiredFairnessSweep(value, index) {
676
+ const record = asRecord(value);
677
+ const out = {
678
+ id: stringField(record, `fairness_sweep_${index + 1}`, "id", "name"),
679
+ protectedAttribute: stringField(record, "group", "protectedAttribute", "protected_attribute")
680
+ };
681
+ const minSampleSize = numberField(record, Number.NaN, "minSampleSize", "min_sample_size");
682
+ if (Number.isFinite(minSampleSize)) out.minSampleSize = minSampleSize;
683
+ const adverseImpactRatioMin = numberField(
684
+ record,
685
+ Number.NaN,
686
+ "adverseImpactRatioMin",
687
+ "adverse_impact_ratio_min"
688
+ );
689
+ if (Number.isFinite(adverseImpactRatioMin)) out.adverseImpactRatioMin = adverseImpactRatioMin;
690
+ const demographicParityDiffMax = numberField(
691
+ record,
692
+ Number.NaN,
693
+ "demographicParityDiffMax",
694
+ "demographic_parity_diff_max"
695
+ );
696
+ if (Number.isFinite(demographicParityDiffMax)) {
697
+ out.demographicParityDiffMax = demographicParityDiffMax;
698
+ }
699
+ const requireRobustnessReceipt = booleanField(
700
+ record,
701
+ "requireRobustnessReceipt",
702
+ "require_robustness_receipt"
703
+ );
704
+ if (requireRobustnessReceipt !== void 0) out.requireRobustnessReceipt = requireRobustnessReceipt;
705
+ out.config = record;
706
+ return out;
707
+ }
708
+ function normalizeAuditRetention(record) {
709
+ return {
710
+ minDays: numberField(record, 0, "minDays", "min_days"),
711
+ storage: stringField(record, "", "storage"),
712
+ legalHold: booleanField(record, "legalHold", "legal_hold")
713
+ };
714
+ }
715
+ function normalizeMonitoringCadence(record) {
716
+ const cadence = {
717
+ interval: stringField(record, "", "interval")
718
+ };
719
+ const driftSweepRequired = booleanField(record, "driftSweepRequired", "drift_sweep_required");
720
+ if (driftSweepRequired !== void 0) cadence.driftSweepRequired = driftSweepRequired;
721
+ const alertThreshold = numberField(record, Number.NaN, "alertThreshold", "alert_threshold");
722
+ if (Number.isFinite(alertThreshold)) cadence.alertThreshold = alertThreshold;
723
+ return cadence;
724
+ }
725
+ function policyPackFromSchemaBlock(block) {
726
+ const properties = block.properties ?? {};
727
+ const frameworkId = block.frameworkId ?? stringField(properties, "", "framework_id", "frameworkId");
728
+ const rawTests = block.requiredTests ?? arrayField(field(properties, "required_tests", "requiredTests"));
729
+ const rawTargets = block.requiredCompileTargets ?? arrayField(field(properties, "required_compile_targets", "requiredCompileTargets"));
730
+ const auditRetention = block.auditRetention ?? asRecord(field(properties, "audit_retention", "auditRetention"));
731
+ const monitoringCadence = block.monitoringCadence ?? asRecord(field(properties, "monitoring", "monitoring_cadence", "monitoringCadence"));
732
+ return definePolicyPack({
733
+ name: block.name,
734
+ version: block.version ?? stringField(properties, "1.0.0", "version"),
735
+ frameworkId,
736
+ requiredTests: rawTests.map(normalizeRequiredFairnessSweep),
737
+ requiredCompileTargets: rawTargets.map((target) => String(target)),
738
+ auditRetention: normalizeAuditRetention(auditRetention),
739
+ monitoringCadence: normalizeMonitoringCadence(monitoringCadence),
740
+ metadata: properties
741
+ });
742
+ }
743
+ function evaluatePolicyPackDeployment(pack, evidence) {
744
+ const issues = validatePolicyPack(pack);
745
+ const testEvidence = new Map(evidence.tests.map((test) => [test.id, test]));
746
+ const artifactTargets = new Set(evidence.compileTargets.map((artifact) => artifact.target));
747
+ const missingTests = [];
748
+ const failedTests = [];
749
+ const missingCompileTargets = [];
750
+ for (const required of pack.requiredTests) {
751
+ const observed = testEvidence.get(required.id);
752
+ if (!observed) {
753
+ missingTests.push(required.id);
754
+ issues.push({
755
+ code: "missing_required_test",
756
+ severity: "error",
757
+ message: `Missing required FairnessSweep evidence "${required.id}".`,
758
+ testId: required.id
759
+ });
760
+ continue;
761
+ }
762
+ const ratioFloor = required.adverseImpactRatioMin ?? 0.8;
763
+ const ratio = observed.adverseImpactRatio;
764
+ const parityDiff = observed.demographicParityDiff;
765
+ const failed = !observed.passed || required.minSampleSize !== void 0 && (observed.sampleSize ?? 0) < required.minSampleSize || ratio !== void 0 && ratio < ratioFloor || required.demographicParityDiffMax !== void 0 && (parityDiff === void 0 || parityDiff > required.demographicParityDiffMax) || required.requireRobustnessReceipt === true && !observed.robustnessReceiptHash;
766
+ if (failed) {
767
+ failedTests.push(required.id);
768
+ issues.push({
769
+ code: "failed_required_test",
770
+ severity: "error",
771
+ message: `Required FairnessSweep "${required.id}" did not satisfy the policy pack.`,
772
+ testId: required.id
773
+ });
774
+ }
775
+ }
776
+ for (const target of pack.requiredCompileTargets) {
777
+ if (!artifactTargets.has(target)) {
778
+ missingCompileTargets.push(target);
779
+ issues.push({
780
+ code: "missing_compile_target",
781
+ severity: "error",
782
+ message: `Missing required compliance artifact "${target}".`,
783
+ compileTarget: target
784
+ });
785
+ }
786
+ }
787
+ if (evidence.auditRetentionAccepted !== true) {
788
+ issues.push({
789
+ code: "audit_retention_not_armed",
790
+ severity: "error",
791
+ message: "Audit retention policy has not been accepted by the deploy gate."
792
+ });
793
+ }
794
+ if (evidence.monitoringScheduled !== true) {
795
+ issues.push({
796
+ code: "monitoring_not_scheduled",
797
+ severity: "error",
798
+ message: "Monitoring cadence has not been scheduled for the deployment."
799
+ });
800
+ }
801
+ return {
802
+ allowed: !issues.some((issue) => issue.severity === "error"),
803
+ policyPack: pack.name,
804
+ frameworkId: pack.frameworkId,
805
+ missingTests,
806
+ failedTests,
807
+ missingCompileTargets,
808
+ issues
809
+ };
810
+ }
811
+ function assertPolicyPackDeploymentReady(pack, evidence) {
812
+ const evaluation = evaluatePolicyPackDeployment(pack, evidence);
813
+ if (!evaluation.allowed) {
814
+ throw new PolicyPackDeploymentError(evaluation);
815
+ }
816
+ return evaluation;
817
+ }
818
+ function defaultPolicyPackCompileTargets() {
819
+ return [...POLICY_PACK_COMPILE_TARGETS];
820
+ }
821
+
822
+ export { DEFAULT_BLOCKLIST, HARD_STOP_CATEGORIES, POLICY_PACK_COMPILE_TARGETS, POLICY_PACK_FRAMEWORK_IDS, PolicyPackDefinitionError, PolicyPackDeploymentError, assertPolicyPackDeploymentReady, buildContentPolicyConfig, defaultPolicyPackCompileTargets, defaultRulesForTier, definePolicyPack, evaluateContentPolicy, evaluateContentPolicySync, evaluatePolicyPackDeployment, isPolicyPackCompileTarget, isPolicyPackFrameworkId, jurisdictionBundle, matchBlocklist, normalizeText, policyPackFromSchemaBlock, toAuditEventInput, validatePolicyPack };
823
+ //# sourceMappingURL=chunk-ET3AN4W3.js.map
824
+ //# sourceMappingURL=chunk-ET3AN4W3.js.map