@holoscript/core 8.0.5 → 8.0.7

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 (248) hide show
  1. package/README.md +34 -34
  2. package/bin/holoscript.cjs +1 -1
  3. package/dist/GLTFPipeline-3EJLL3TS.cjs +38 -0
  4. package/dist/GLTFPipeline-3OWJV2VK.js +17 -0
  5. package/dist/{HoloScriptPlusParser-A2W7OCN2.cjs → HoloScriptPlusParser-ADWRY5OS.cjs} +15 -15
  6. package/dist/{HoloScriptPlusParser-7FBIFUFC.js → HoloScriptPlusParser-JLJDXHSC.js} +4 -4
  7. package/dist/HoloScriptPlusParser-QCGFPWIL.cjs +27 -0
  8. package/dist/{HoloScriptPlusParser-F2Z56FJR.js → HoloScriptPlusParser-WENAFEFV.js} +5 -5
  9. package/dist/HoloScriptRuntime-GGRVEU4T.cjs +19 -0
  10. package/dist/HoloScriptRuntime-GJK6VJPH.js +10 -0
  11. package/dist/{USDZExporter-3FWJ25JI.cjs → USDZExporter-AUHZODOF.cjs} +15 -4
  12. package/dist/{USDZExporter-D2HQLQYK.js → USDZExporter-GXB4AUSG.js} +15 -4
  13. package/dist/{chunk-V6MKC2FZ.js → chunk-22Q5A6RV.js} +3 -3
  14. package/dist/{chunk-IUDGEUDO.cjs → chunk-2BZHWUSR.cjs} +27 -15
  15. package/dist/{chunk-XJAN7CZG.cjs → chunk-2GCNOI2U.cjs} +2 -2
  16. package/dist/{chunk-CCATWPXM.js → chunk-2OWDB4FB.js} +13 -25
  17. package/dist/{chunk-N75IH2HY.js → chunk-2Y3V22SG.js} +5 -14
  18. package/dist/{chunk-MXFUTKCO.js → chunk-33YHE7HX.js} +3 -7
  19. package/dist/{chunk-GYZE55MO.js → chunk-3GWWJT7L.js} +4 -4
  20. package/dist/{chunk-CMT5NMMS.js → chunk-3NGDZZR4.js} +4 -4
  21. package/dist/{chunk-WRLUBRKS.cjs → chunk-3SKLAUDD.cjs} +2 -2
  22. package/dist/{chunk-KKFZ3B6J.cjs → chunk-3VBO3IYQ.cjs} +2 -2
  23. package/dist/{chunk-YF2I3MV3.js → chunk-47RUFYKR.js} +2 -2
  24. package/dist/{chunk-LHAXPADA.js → chunk-4JGRWHZJ.js} +7 -5
  25. package/dist/{chunk-ROHLEP2W.cjs → chunk-4W5G5QVL.cjs} +26 -26
  26. package/dist/{chunk-GQHQOPXZ.cjs → chunk-4YNYPHH3.cjs} +186 -17
  27. package/dist/{chunk-ZMCVKFXI.cjs → chunk-56VOWURB.cjs} +154 -47
  28. package/dist/{chunk-FXKAW7ZO.cjs → chunk-5A4TCHOC.cjs} +3 -3
  29. package/dist/{chunk-M56JSP4A.js → chunk-5EDVCNRT.js} +2 -2
  30. package/dist/{chunk-UJXISJBN.js → chunk-5ET6L4NS.js} +3 -3
  31. package/dist/{chunk-5NWINHR5.cjs → chunk-63ZGNR2T.cjs} +43 -39
  32. package/dist/{chunk-NG77ATEW.cjs → chunk-6PRZIHGL.cjs} +6 -6
  33. package/dist/{chunk-3WZEJHUQ.cjs → chunk-7DMMMBCY.cjs} +7 -7
  34. package/dist/{chunk-FHP6LXJS.js → chunk-7E7GCQCK.js} +2 -2
  35. package/dist/{chunk-YN2YWTXW.js → chunk-7VMGP2FW.js} +44 -28
  36. package/dist/{chunk-OJXHYNXN.js → chunk-7X5PNIQJ.js} +3 -3
  37. package/dist/{chunk-FYSPZT4V.cjs → chunk-7ZHYEITD.cjs} +11 -11
  38. package/dist/{chunk-KPJL34Y7.cjs → chunk-ACVWFGBI.cjs} +2 -2
  39. package/dist/{chunk-UWXE23BT.cjs → chunk-AWB7QYY6.cjs} +6 -6
  40. package/dist/{chunk-UO4WPSGQ.js → chunk-B4EKV6HQ.js} +154 -48
  41. package/dist/{chunk-2X7NGX3M.js → chunk-BRNUPDHJ.js} +5 -5
  42. package/dist/{chunk-D3STJ56J.js → chunk-BTKZGHAV.js} +23 -11
  43. package/dist/{chunk-I5CDNPPE.cjs → chunk-C4GSLCHE.cjs} +331 -125
  44. package/dist/{chunk-QPSKHBJP.js → chunk-C7ZBSV2Q.js} +13 -7
  45. package/dist/{chunk-YN6V7R3L.cjs → chunk-CCPSNT6B.cjs} +12 -7
  46. package/dist/{chunk-NW5G5FBQ.js → chunk-DD2JQ7TS.js} +4 -3
  47. package/dist/{chunk-JD7CIZ33.js → chunk-DUCB6LGL.js} +8 -10
  48. package/dist/{chunk-ANXZFVY2.js → chunk-DY72BMU5.js} +3 -3
  49. package/dist/{chunk-AIA52I7T.cjs → chunk-EBS32AJI.cjs} +6 -4
  50. package/dist/{chunk-6DO5IZ5N.cjs → chunk-EDPYCLRC.cjs} +85 -65
  51. package/dist/{chunk-WQKJSGVS.js → chunk-F2G6CWFT.js} +271 -66
  52. package/dist/{chunk-AVJHHUC5.cjs → chunk-F5LKJ6F5.cjs} +43 -31
  53. package/dist/{chunk-ZU7NIRT6.js → chunk-FGMDMJM7.js} +10 -5
  54. package/dist/{chunk-YVD3CSO3.js → chunk-FHQFPYV4.js} +4 -4
  55. package/dist/{chunk-YIMN575O.js → chunk-FNHJRI32.js} +8 -5
  56. package/dist/{chunk-EXUP2BUM.cjs → chunk-FT6TDR2O.cjs} +27 -27
  57. package/dist/{chunk-BRQJKJGT.cjs → chunk-FWVYAMNW.cjs} +4 -4
  58. package/dist/{chunk-PGANYCAG.cjs → chunk-G25QVBA5.cjs} +4 -3
  59. package/dist/{chunk-XB274MW5.cjs → chunk-G6PNEASF.cjs} +13 -13
  60. package/dist/{chunk-2BSMSUCE.js → chunk-GASCWJK5.js} +2 -2
  61. package/dist/{chunk-HKEXJUWS.cjs → chunk-GH6C2QGW.cjs} +12 -21
  62. package/dist/{chunk-WRKUDAZJ.js → chunk-GSOUNWEL.js} +35 -27
  63. package/dist/{chunk-QPOQ7VPI.js → chunk-GTA4Q3A3.js} +2 -2
  64. package/dist/{chunk-JIYN45TV.cjs → chunk-GVFJ6T4S.cjs} +3 -7
  65. package/dist/{chunk-IVY74O6C.js → chunk-GVOKJNUN.js} +50 -11
  66. package/dist/{chunk-GZG4KA4E.js → chunk-GW3LKD5C.js} +6 -4
  67. package/dist/{chunk-NCWCUZNS.cjs → chunk-HFSVMKM3.cjs} +14 -14
  68. package/dist/{chunk-IUTY5WQ2.cjs → chunk-HLFDZ35S.cjs} +5 -5
  69. package/dist/{chunk-IWC5DM2M.cjs → chunk-I76GIKN7.cjs} +20 -16
  70. package/dist/{chunk-ON5QSY35.cjs → chunk-KAIVDEIG.cjs} +175 -59
  71. package/dist/{chunk-R24NNAEG.js → chunk-KCPHASCO.js} +18 -6
  72. package/dist/{chunk-T5J7ZKP3.cjs → chunk-KOUAQL2B.cjs} +16 -13
  73. package/dist/{chunk-GMP623FG.cjs → chunk-KQU64CIX.cjs} +2 -2
  74. package/dist/{chunk-MVPBWHAC.js → chunk-L5U4W6JC.js} +4 -4
  75. package/dist/{chunk-2IWC4FP7.cjs → chunk-LMJ5EBV7.cjs} +10 -10
  76. package/dist/{chunk-KKP7JKN4.cjs → chunk-LODTHGST.cjs} +18 -12
  77. package/dist/{chunk-4V2E7U7Q.cjs → chunk-LPS5AMQD.cjs} +8 -8
  78. package/dist/{chunk-PY37LNDP.js → chunk-LWUOUCYL.js} +9 -5
  79. package/dist/{chunk-6CTRH7HT.cjs → chunk-LYJJI7ZK.cjs} +12 -14
  80. package/dist/{chunk-GTU2Z2WW.cjs → chunk-M7K4LE66.cjs} +5 -14
  81. package/dist/{chunk-URG2SJLK.js → chunk-MDR235RZ.js} +3 -7
  82. package/dist/{chunk-E4M5OAYO.js → chunk-MSYSQ2AJ.js} +132 -16
  83. package/dist/{chunk-TWUXUCEW.cjs → chunk-NGBXXZLL.cjs} +50 -62
  84. package/dist/{chunk-FFAOS5HQ.js → chunk-NHJLP37F.js} +6 -6
  85. package/dist/{chunk-S3MDHNKB.cjs → chunk-NHYRRAGI.cjs} +5 -5
  86. package/dist/{chunk-U44IKGG7.cjs → chunk-O3MGZDCT.cjs} +89 -52
  87. package/dist/{chunk-GIOYPNTH.js → chunk-OABEO6HH.js} +185 -16
  88. package/dist/{chunk-KQCN6AKJ.cjs → chunk-OS533P33.cjs} +37 -29
  89. package/dist/{chunk-DAJXW4KX.js → chunk-PABONWKI.js} +24 -11
  90. package/dist/{chunk-QACVP4PM.js → chunk-PXNZ6TME.js} +77 -59
  91. package/dist/{chunk-OMXII44L.js → chunk-Q2Q34NF3.js} +63 -26
  92. package/dist/{chunk-OH2FAIVU.js → chunk-QBWNJXNR.js} +10 -6
  93. package/dist/{chunk-XKTPFXGA.js → chunk-QFU53KRH.js} +4 -4
  94. package/dist/{chunk-CR4FMIWL.cjs → chunk-QGMUTVVH.cjs} +17 -17
  95. package/dist/{chunk-MYY4PMWX.cjs → chunk-RUVBFAF7.cjs} +50 -11
  96. package/dist/{chunk-QD32ADK6.js → chunk-S762UEV5.js} +5 -5
  97. package/dist/{chunk-HNDK4IQU.cjs → chunk-SH5PPVK7.cjs} +61 -45
  98. package/dist/{chunk-JC5YBPSF.cjs → chunk-SKZPC5AG.cjs} +5 -5
  99. package/dist/{chunk-TJHVSBP2.js → chunk-SLHLXUMO.js} +10 -4
  100. package/dist/{chunk-5KVXXUD4.js → chunk-SSSN7VAM.js} +3 -3
  101. package/dist/{chunk-KMC6CQH3.js → chunk-SXOSDZD6.js} +6 -6
  102. package/dist/{chunk-J32ZJZJH.js → chunk-SYTRBGDS.js} +2 -2
  103. package/dist/{chunk-CIWWXYHZ.cjs → chunk-T6W3Z3SH.cjs} +2 -2
  104. package/dist/{chunk-QXH7QDSZ.js → chunk-TEVX443G.js} +44 -51
  105. package/dist/{chunk-UFZZ7TSN.cjs → chunk-TQ377OLB.cjs} +23 -21
  106. package/dist/{chunk-PJGFU5DN.cjs → chunk-TRCGG42I.cjs} +195 -152
  107. package/dist/{chunk-H652NHX5.js → chunk-TVANHNJ7.js} +30 -23
  108. package/dist/{chunk-EKBKLK7P.js → chunk-UDE4OZMR.js} +3 -3
  109. package/dist/{chunk-LKWQNUE6.cjs → chunk-UGXHYIWT.cjs} +5 -5
  110. package/dist/{chunk-JBNDTXXV.cjs → chunk-ULMSSHCJ.cjs} +21 -21
  111. package/dist/{chunk-YWOBW2PV.cjs → chunk-UOL6Y5TD.cjs} +18 -18
  112. package/dist/{chunk-5S7RKFGR.cjs → chunk-UVFI7XIR.cjs} +10 -4
  113. package/dist/{chunk-7M3PNU2M.cjs → chunk-V7AKE5VT.cjs} +10 -10
  114. package/dist/{chunk-J7XZV333.js → chunk-VEPGBETF.js} +6 -6
  115. package/dist/{chunk-UWJHCOH2.js → chunk-VF257YKO.js} +4 -4
  116. package/dist/{chunk-4N4SXXWF.js → chunk-VSACG2AR.js} +3 -3
  117. package/dist/{chunk-ZDSYWBIE.cjs → chunk-VW5CRJBE.cjs} +3 -7
  118. package/dist/{chunk-YT5L3B57.cjs → chunk-WFKVS2K4.cjs} +65 -27
  119. package/dist/{chunk-J6M4FPK5.js → chunk-WXQ57LAO.js} +3 -3
  120. package/dist/{chunk-5H2G27PK.cjs → chunk-X27QRG4C.cjs} +38 -38
  121. package/dist/{chunk-TVHSPJ4N.cjs → chunk-X2AVEAZM.cjs} +30 -23
  122. package/dist/{chunk-DHO2YRIM.js → chunk-XQ5MWMP2.js} +4 -4
  123. package/dist/{chunk-XIVIE43A.cjs → chunk-XW6IXEQH.cjs} +26 -13
  124. package/dist/{chunk-YIVFJNYV.js → chunk-Y3ZFVUUU.js} +2 -2
  125. package/dist/{chunk-7H33U5SM.cjs → chunk-Y57W2CT5.cjs} +2 -2
  126. package/dist/{chunk-OBIYPYYS.cjs → chunk-YCM6QQRT.cjs} +46 -53
  127. package/dist/{chunk-MBOOR7X4.js → chunk-YFVQWSNJ.js} +3 -3
  128. package/dist/{chunk-ADADVMXY.js → chunk-YFWRJW4B.js} +2 -2
  129. package/dist/{chunk-ONDAWTW4.js → chunk-YN6IETRZ.js} +179 -136
  130. package/dist/{chunk-4SDKXQ4C.js → chunk-YRRAUB35.js} +4 -4
  131. package/dist/{chunk-OBP5REIV.js → chunk-Z6PMDS4G.js} +62 -24
  132. package/dist/{chunk-BOVPWH4H.js → chunk-ZA34AN3R.js} +8 -17
  133. package/dist/{chunk-EKYL4PE3.cjs → chunk-ZLF4YF3U.cjs} +2 -2
  134. package/dist/{chunk-6FH72EB2.cjs → chunk-ZPZAVHXL.cjs} +20 -20
  135. package/dist/cli/holoscript-runner.cjs +39 -22
  136. package/dist/cli/holoscript-runner.js +32 -15
  137. package/dist/compiler/GasOptimizationAnalyzer.d.ts +73 -0
  138. package/dist/compiler/NFTMarketplaceCompiler.d.ts +23 -0
  139. package/dist/compiler/agent-inference.cjs +7 -7
  140. package/dist/compiler/agent-inference.js +3 -3
  141. package/dist/compiler/android-xr.cjs +8 -8
  142. package/dist/compiler/android-xr.js +6 -6
  143. package/dist/compiler/android.cjs +6 -6
  144. package/dist/compiler/android.js +4 -4
  145. package/dist/compiler/ar.cjs +6 -6
  146. package/dist/compiler/ar.js +4 -4
  147. package/dist/compiler/babylon.cjs +8 -8
  148. package/dist/compiler/babylon.js +7 -7
  149. package/dist/compiler/business-quest.cjs +9 -9
  150. package/dist/compiler/business-quest.js +1 -1
  151. package/dist/compiler/context.cjs +6 -6
  152. package/dist/compiler/context.js +3 -3
  153. package/dist/compiler/domain-block-utils.cjs +153 -153
  154. package/dist/compiler/domain-block-utils.js +4 -4
  155. package/dist/compiler/dtdl.cjs +7 -7
  156. package/dist/compiler/dtdl.js +4 -4
  157. package/dist/compiler/gltf-pipeline.cjs +8 -8
  158. package/dist/compiler/gltf-pipeline.js +1 -1
  159. package/dist/compiler/godot.cjs +6 -6
  160. package/dist/compiler/godot.js +5 -5
  161. package/dist/compiler/incremental.cjs +8 -8
  162. package/dist/compiler/incremental.js +3 -3
  163. package/dist/compiler/index.cjs +530 -355
  164. package/dist/compiler/index.d.ts +20 -0
  165. package/dist/compiler/index.js +374 -210
  166. package/dist/compiler/ios.cjs +6 -6
  167. package/dist/compiler/ios.js +4 -4
  168. package/dist/compiler/llm-provider-capabilities.cjs +6 -6
  169. package/dist/compiler/llm-provider-capabilities.js +3 -3
  170. package/dist/compiler/multi-layer.cjs +10 -10
  171. package/dist/compiler/multi-layer.js +9 -9
  172. package/dist/compiler/openxr.cjs +7 -7
  173. package/dist/compiler/openxr.js +6 -6
  174. package/dist/compiler/playcanvas.cjs +6 -6
  175. package/dist/compiler/playcanvas.js +5 -5
  176. package/dist/compiler/r3f.cjs +13 -13
  177. package/dist/compiler/r3f.js +8 -8
  178. package/dist/compiler/sdf.cjs +7 -7
  179. package/dist/compiler/sdf.js +5 -5
  180. package/dist/compiler/state.cjs +6 -6
  181. package/dist/compiler/state.js +4 -4
  182. package/dist/compiler/trait-composition.cjs +8 -8
  183. package/dist/compiler/trait-composition.js +4 -4
  184. package/dist/compiler/unity.cjs +7 -7
  185. package/dist/compiler/unity.js +6 -6
  186. package/dist/compiler/unreal.cjs +8 -8
  187. package/dist/compiler/unreal.js +6 -6
  188. package/dist/compiler/urdf.cjs +14 -14
  189. package/dist/compiler/urdf.js +5 -5
  190. package/dist/compiler/usd-physics.cjs +7 -7
  191. package/dist/compiler/usd-physics.js +4 -4
  192. package/dist/compiler/visionos.cjs +7 -7
  193. package/dist/compiler/visionos.js +6 -6
  194. package/dist/compiler/vrchat.cjs +7 -7
  195. package/dist/compiler/vrchat.js +5 -5
  196. package/dist/compiler/vrr.cjs +7 -7
  197. package/dist/compiler/vrr.js +5 -5
  198. package/dist/compiler/wasm.cjs +10 -10
  199. package/dist/compiler/wasm.js +5 -5
  200. package/dist/compiler/webgpu.cjs +6 -6
  201. package/dist/compiler/webgpu.js +5 -5
  202. package/dist/coordinators/index.cjs +27 -10
  203. package/dist/coordinators/index.js +27 -10
  204. package/dist/debugger.cjs +6 -6
  205. package/dist/debugger.js +4 -4
  206. package/dist/entries/scripting.cjs +6 -6
  207. package/dist/entries/scripting.js +2 -2
  208. package/dist/hololand/index.cjs +36 -36
  209. package/dist/hololand/index.js +2 -2
  210. package/dist/index.cjs +1080 -2190
  211. package/dist/index.js +467 -1577
  212. package/dist/math/tropical-spmv.cjs +10 -10
  213. package/dist/math/tropical-spmv.js +1 -1
  214. package/dist/math/vec3.cjs +13 -13
  215. package/dist/math/vec3.js +1 -1
  216. package/dist/parser/NFTMarketplaceTypes.d.ts +191 -0
  217. package/dist/parser.cjs +16 -16
  218. package/dist/parser.js +5 -5
  219. package/dist/reconstruction/index.cjs +37 -37
  220. package/dist/reconstruction/index.js +4 -4
  221. package/dist/runtime.cjs +280 -74
  222. package/dist/runtime.d.ts +10 -1
  223. package/dist/runtime.js +268 -70
  224. package/dist/self-improvement/index.cjs +12 -4
  225. package/dist/self-improvement/index.js +12 -4
  226. package/dist/{src-HCCCSYP7.js → src-J6CM4AUR.js} +91 -33
  227. package/dist/{src-4ROC227P.cjs → src-PT2FERDV.cjs} +93 -35
  228. package/dist/testing.cjs +5 -5
  229. package/dist/testing.js +1 -1
  230. package/dist/traits/botanical-lotus.cjs +52 -48
  231. package/dist/traits/botanical-lotus.js +2 -2
  232. package/dist/traits/engines/index.cjs +39 -39
  233. package/dist/traits/engines/index.d.ts +279 -0
  234. package/dist/traits/engines/index.js +4 -4
  235. package/dist/traits/index.cjs +889 -773
  236. package/dist/traits/index.js +371 -259
  237. package/dist/world/index.cjs +21 -18
  238. package/dist/world/index.js +21 -18
  239. package/dist/world-model/index.cjs +11 -5
  240. package/dist/world-model/index.d.ts +8 -0
  241. package/dist/world-model/index.js +11 -5
  242. package/package.json +75 -69
  243. package/LICENSE +0 -21
  244. package/dist/GLTFPipeline-37FPRVPH.js +0 -17
  245. package/dist/GLTFPipeline-EK3LFJKW.cjs +0 -38
  246. package/dist/HoloScriptPlusParser-WKHRIH6T.cjs +0 -27
  247. package/dist/HoloScriptRuntime-ACDFKVVH.js +0 -10
  248. package/dist/HoloScriptRuntime-ON2OQVEF.cjs +0 -19
@@ -1,5 +1,5 @@
1
1
  import { init_traitDocs, getTraitDoc, formatTraitDocCompact } from './chunk-THCK6ECW.js';
2
- import { init_AgentRiskRegistry, getAgentRiskRegistry, TIER_COMPOSITION_RISK_CAP, isDangerousOperation } from './chunk-N75IH2HY.js';
2
+ import { init_AgentRiskRegistry, getAgentRiskRegistry, TIER_COMPOSITION_RISK_CAP, isDangerousOperation } from './chunk-2Y3V22SG.js';
3
3
  import { init_safeJsonParse, safeJsonParse, readJson } from './chunk-VVKVQZI6.js';
4
4
  import { __esm } from './chunk-OL46QLBJ.js';
5
5
  import * as crypto3 from 'crypto';
@@ -3958,7 +3958,9 @@ var init_ANSNamespace = __esm({
3958
3958
  STATE: "/compile/meta/state",
3959
3959
  TRAIT_COMPOSITION: "/compile/meta/trait-composition",
3960
3960
  // ── mixin ────────────────────────────────────────────────────────────
3961
- DOMAIN_BLOCK: "/compile/mixin/domain-block"
3961
+ DOMAIN_BLOCK: "/compile/mixin/domain-block",
3962
+ // ── studio ───────────────────────────────────────────────────────────
3963
+ CODE_EDITOR: "/compile/studio/code-editor"
3962
3964
  };
3963
3965
  COMPILER_DOMAIN_MAP = {
3964
3966
  // gamedev
@@ -4016,7 +4018,9 @@ var init_ANSNamespace = __esm({
4016
4018
  state: ANSDomain.META,
4017
4019
  "trait-composition": ANSDomain.META,
4018
4020
  // mixin
4019
- "domain-block": ANSDomain.MIXIN
4021
+ "domain-block": ANSDomain.MIXIN,
4022
+ // studio
4023
+ "code-editor": ANSDomain.META
4020
4024
  };
4021
4025
  COMPILER_ANS_MAP = {
4022
4026
  unity: ANSCapabilityPath.UNITY,
@@ -4059,7 +4063,8 @@ var init_ANSNamespace = __esm({
4059
4063
  incremental: ANSCapabilityPath.INCREMENTAL,
4060
4064
  state: ANSCapabilityPath.STATE,
4061
4065
  "trait-composition": ANSCapabilityPath.TRAIT_COMPOSITION,
4062
- "domain-block": ANSCapabilityPath.DOMAIN_BLOCK
4066
+ "domain-block": ANSCapabilityPath.DOMAIN_BLOCK,
4067
+ "code-editor": ANSCapabilityPath.CODE_EDITOR
4063
4068
  };
4064
4069
  ALL_COMPILER_NAMES = Object.keys(
4065
4070
  COMPILER_DOMAIN_MAP
@@ -5505,7 +5510,8 @@ var init_CompilerBase = __esm({
5505
5510
  NodeServiceCompiler: "node-service",
5506
5511
  NextJSAPICompiler: "nextjs-api",
5507
5512
  MCPConfigCompiler: "domain-block",
5508
- AgentInferenceCompiler: "agent-inference"
5513
+ AgentInferenceCompiler: "agent-inference",
5514
+ CodeEditorCompiler: "code-editor"
5509
5515
  };
5510
5516
  UnauthorizedCompilerAccessError = class extends Error {
5511
5517
  constructor(decision, operation, compilerName) {
@@ -5959,5 +5965,5 @@ Required Permission: ${decision.requiredPermission || "unknown"}`
5959
5965
  });
5960
5966
 
5961
5967
  export { ANSCapabilityPath, BUILTIN_NORMS, BUILTIN_NORM_PROVENANCE, CompilerBase, CompilerDocumentationGenerator, UNKNOWN_NORM_PROVENANCE, UnauthorizedCompilerAccessError, createTestCompilerToken, criticalMassForChange, deserializeNormProvenance, escapeStringValue, getBuiltinNorm, getRBAC, init_ANSNamespace, init_AgentRBAC, init_CompilerBase, init_CompilerDocumentationGenerator, init_CultureTraits, isCapabilityTokenCredential, normalizeNormProvenance, normsByCategory, serializeNormProvenance };
5962
- //# sourceMappingURL=chunk-QPSKHBJP.js.map
5963
- //# sourceMappingURL=chunk-QPSKHBJP.js.map
5968
+ //# sourceMappingURL=chunk-C7ZBSV2Q.js.map
5969
+ //# sourceMappingURL=chunk-C7ZBSV2Q.js.map
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunkKKP7JKN4_cjs = require('./chunk-KKP7JKN4.cjs');
3
+ var chunkLODTHGST_cjs = require('./chunk-LODTHGST.cjs');
4
4
 
5
5
  // src/compiler/QuantumCircuitCompiler.ts
6
- chunkKKP7JKN4_cjs.init_CompilerBase();
6
+ chunkLODTHGST_cjs.init_CompilerBase();
7
7
  function qubitsForMolecule(atoms) {
8
8
  const orbitalCount = atoms.reduce((sum, a) => {
9
9
  if (a.symbol === "H") return sum + 1;
@@ -88,7 +88,9 @@ function generateVQECircuit(atoms, moleculeName, ansatzLayers, initialParams) {
88
88
  }
89
89
  let paramIdx = 0;
90
90
  for (let layer = 0; layer < ansatzLayers; layer++) {
91
- lines.push(`// Layer ${layer}: Ry rotations ( - [${paramIdx}..${paramIdx + n - 1}] optimised by VQE)`);
91
+ lines.push(
92
+ `// Layer ${layer}: Ry rotations ( - [${paramIdx}..${paramIdx + n - 1}] optimised by VQE)`
93
+ );
92
94
  for (let i = 0; i < n; i++) {
93
95
  lines.push(`ry(theta_${paramIdx}) q[${i}];`);
94
96
  paramIdx++;
@@ -185,7 +187,7 @@ function generateStubCircuit() {
185
187
  ]
186
188
  };
187
189
  }
188
- var QuantumCircuitCompiler = class extends chunkKKP7JKN4_cjs.CompilerBase {
190
+ var QuantumCircuitCompiler = class extends chunkLODTHGST_cjs.CompilerBase {
189
191
  constructor() {
190
192
  super(...arguments);
191
193
  this.compilerName = "QuantumCircuitCompiler";
@@ -277,7 +279,10 @@ var QuantumCircuitCompiler = class extends chunkKKP7JKN4_cjs.CompilerBase {
277
279
  /** Build a {@link QASMOutput} for a VQE circuit. */
278
280
  buildVQEOutput(atoms, cfg) {
279
281
  const moleculeName = (extractNumber(cfg, "moleculeName") !== void 0 ? void 0 : cfg["moleculeName"]?.value) ?? atoms.map((a) => a.symbol).join("") ?? "molecule";
280
- const ansatzLayers = Math.max(1, Math.round(extractNumber(cfg, "ansatzLayers") ?? extractNumber(cfg, "ansatz_layers") ?? 2));
282
+ const ansatzLayers = Math.max(
283
+ 1,
284
+ Math.round(extractNumber(cfg, "ansatzLayers") ?? extractNumber(cfg, "ansatz_layers") ?? 2)
285
+ );
281
286
  const initialParams = cfg["initialParams"]?.value ?? cfg["initial_params"]?.value ?? void 0;
282
287
  const { qasm, numQubits, estimatedDepth, warnings, paramNames } = generateVQECircuit(
283
288
  atoms,
@@ -323,5 +328,5 @@ var QuantumCircuitCompiler = class extends chunkKKP7JKN4_cjs.CompilerBase {
323
328
  };
324
329
 
325
330
  exports.QuantumCircuitCompiler = QuantumCircuitCompiler;
326
- //# sourceMappingURL=chunk-YN6V7R3L.cjs.map
327
- //# sourceMappingURL=chunk-YN6V7R3L.cjs.map
331
+ //# sourceMappingURL=chunk-CCPSNT6B.cjs.map
332
+ //# sourceMappingURL=chunk-CCPSNT6B.cjs.map
@@ -201,7 +201,8 @@ function describeEnvironment(env) {
201
201
  if (env.browser?.browser) parts.push(env.browser.browser);
202
202
  if (env.browser?.os) parts.push(env.browser.os);
203
203
  if (env.node) parts.push(`node ${env.node.version} ${env.node.platform}/${env.node.arch}`);
204
- if (env.gpu?.vendor) parts.push(`gpu:${env.gpu.vendor}${env.gpu.architecture ? "/" + env.gpu.architecture : ""}`);
204
+ if (env.gpu?.vendor)
205
+ parts.push(`gpu:${env.gpu.vendor}${env.gpu.architecture ? "/" + env.gpu.architecture : ""}`);
205
206
  if (env.annotations) {
206
207
  for (const [k, v] of Object.entries(env.annotations)) {
207
208
  parts.push(`${k}=${v}`);
@@ -211,5 +212,5 @@ function describeEnvironment(env) {
211
212
  }
212
213
 
213
214
  export { DeterminismHarness, captureEnvironment, describeEnvironment, hashBytes };
214
- //# sourceMappingURL=chunk-NW5G5FBQ.js.map
215
- //# sourceMappingURL=chunk-NW5G5FBQ.js.map
215
+ //# sourceMappingURL=chunk-DD2JQ7TS.js.map
216
+ //# sourceMappingURL=chunk-DD2JQ7TS.js.map
@@ -1,4 +1,4 @@
1
- import { init_AgentRiskRegistry, getAgentRiskRegistry } from './chunk-N75IH2HY.js';
1
+ import { init_AgentRiskRegistry, getAgentRiskRegistry } from './chunk-2Y3V22SG.js';
2
2
  import { __export } from './chunk-OL46QLBJ.js';
3
3
 
4
4
  // src/hololand/index.ts
@@ -620,7 +620,9 @@ var _HololandClient = class _HololandClient {
620
620
  signal: controller.signal
621
621
  });
622
622
  if (!response.ok) {
623
- throw new Error(`Failed to fetch world "${worldId}": ${response.status} ${response.statusText}`);
623
+ throw new Error(
624
+ `Failed to fetch world "${worldId}": ${response.status} ${response.statusText}`
625
+ );
624
626
  }
625
627
  return await response.json();
626
628
  } finally {
@@ -964,14 +966,10 @@ var CrossValidationRegistry = class {
964
966
  );
965
967
  }
966
968
  if (this.agreementSeverityThreshold < 0 || this.agreementSeverityThreshold > 100) {
967
- throw new Error(
968
- "CrossValidationRegistry: agreementSeverityThreshold must be in [0,100]"
969
- );
969
+ throw new Error("CrossValidationRegistry: agreementSeverityThreshold must be in [0,100]");
970
970
  }
971
971
  if (this.tolerance.defaultNumericTolerance <= 0) {
972
- throw new Error(
973
- "CrossValidationRegistry: defaultNumericTolerance must be > 0"
974
- );
972
+ throw new Error("CrossValidationRegistry: defaultNumericTolerance must be > 0");
975
973
  }
976
974
  if (this.maxRounds < 1) {
977
975
  throw new Error("CrossValidationRegistry: maxRounds must be >= 1");
@@ -1945,5 +1943,5 @@ function createMessage(type, payload, options = {}) {
1945
1943
  }
1946
1944
 
1947
1945
  export { CrossValidationRegistry, DEFAULT_ENVELOPES, DEFAULT_ITEM_AUTONOMOUS_AGENDA, DEFAULT_ITEM_REPUTATION_LEDGER, DEFAULT_ITEM_VERBAL_FINGERPRINT, DEFAULT_ITEM_VOCABULARY_REGISTER, HEARTBEAT_INTERVAL, HololandClient, ITEM_DEFAULT_TICK_INTERVAL_MS, MAX_CHUNK_SIZE, MAX_MESSAGE_SIZE, PROTOCOL_VERSION, PhysicsBoundsRegistry, StreamProtocol, TIMEOUT_INTERVAL, computeConsensus, connectToHololand, createHoloLandItem, createMessage, createWorldConfig, createWorldDefinition, createWorldEnvironment, createWorldMetadata, disconnectFromHololand, getCrossValidationRegistry, getHololandClient, getItemChain, getPhysicsBoundsRegistry, getStreamProtocol, hololand_exports, linkItems, resetCrossValidationRegistry, resetPhysicsBoundsRegistry, suggestedQuorum, wrapPhysicsService };
1948
- //# sourceMappingURL=chunk-JD7CIZ33.js.map
1949
- //# sourceMappingURL=chunk-JD7CIZ33.js.map
1946
+ //# sourceMappingURL=chunk-DUCB6LGL.js.map
1947
+ //# sourceMappingURL=chunk-DUCB6LGL.js.map
@@ -1,4 +1,4 @@
1
- import { init_AgentRBAC, init_CompilerBase, getRBAC, UnauthorizedCompilerAccessError } from './chunk-QPSKHBJP.js';
1
+ import { init_AgentRBAC, init_CompilerBase, getRBAC, UnauthorizedCompilerAccessError } from './chunk-C7ZBSV2Q.js';
2
2
  import { __export, __esm } from './chunk-OL46QLBJ.js';
3
3
 
4
4
  // src/compiler/StateCompiler.ts
@@ -109,5 +109,5 @@ var init_StateCompiler = __esm({
109
109
  });
110
110
 
111
111
  export { StateCompiler, StateCompiler_exports, UnauthorizedStateCompilerAccessError, init_StateCompiler };
112
- //# sourceMappingURL=chunk-ANXZFVY2.js.map
113
- //# sourceMappingURL=chunk-ANXZFVY2.js.map
112
+ //# sourceMappingURL=chunk-DY72BMU5.js.map
113
+ //# sourceMappingURL=chunk-DY72BMU5.js.map
@@ -428,7 +428,8 @@ function validatePlatformConstraints(composition) {
428
428
  }
429
429
  };
430
430
  for (const obj of composition.objects || []) checkObject(obj);
431
- for (const tmpl of composition.templates || []) check(tmpl.platformConstraint, `template "${tmpl.name}"`);
431
+ for (const tmpl of composition.templates || [])
432
+ check(tmpl.platformConstraint, `template "${tmpl.name}"`);
432
433
  for (const tmpl of composition.templates || []) {
433
434
  for (const trait of tmpl.traits || []) {
434
435
  check(trait.platformConstraint, `trait "@${trait.name}" on template "${tmpl.name}"`);
@@ -436,7 +437,8 @@ function validatePlatformConstraints(composition) {
436
437
  }
437
438
  for (const norm of composition.norms || []) check(norm.platformConstraint, `norm "${norm.name}"`);
438
439
  for (const grp of composition.spatialGroups || []) checkGroup(grp);
439
- for (const light of composition.lights || []) check(light.platformConstraint, `light "${light.name}"`);
440
+ for (const light of composition.lights || [])
441
+ check(light.platformConstraint, `light "${light.name}"`);
440
442
  return errors;
441
443
  }
442
444
  function filterCompositionForPlatform(composition, platform) {
@@ -539,5 +541,5 @@ exports.normalizePlatformName = normalizePlatformName;
539
541
  exports.platformCategory = platformCategory;
540
542
  exports.resolvePlatforms = resolvePlatforms;
541
543
  exports.selectBlock = selectBlock;
542
- //# sourceMappingURL=chunk-AIA52I7T.cjs.map
543
- //# sourceMappingURL=chunk-AIA52I7T.cjs.map
544
+ //# sourceMappingURL=chunk-EBS32AJI.cjs.map
545
+ //# sourceMappingURL=chunk-EBS32AJI.cjs.map
@@ -2,11 +2,10 @@
2
2
 
3
3
  var chunkGJNCFRJU_cjs = require('./chunk-GJNCFRJU.cjs');
4
4
  var chunkYDPEHCCI_cjs = require('./chunk-YDPEHCCI.cjs');
5
- var chunkJIYN45TV_cjs = require('./chunk-JIYN45TV.cjs');
6
- var chunkTVHSPJ4N_cjs = require('./chunk-TVHSPJ4N.cjs');
5
+ var chunkGVFJ6T4S_cjs = require('./chunk-GVFJ6T4S.cjs');
6
+ var chunkX2AVEAZM_cjs = require('./chunk-X2AVEAZM.cjs');
7
7
  var chunkILRBGFVD_cjs = require('./chunk-ILRBGFVD.cjs');
8
8
  var chunkE7JP3BS3_cjs = require('./chunk-E7JP3BS3.cjs');
9
- var ws = require('ws');
10
9
 
11
10
  // src/HoloScriptRuntime.ts
12
11
  chunkE7JP3BS3_cjs.init_safeJsonParse();
@@ -28,13 +27,7 @@ function calculateArc(start, end, speed) {
28
27
  }
29
28
 
30
29
  // src/runtime/condition-evaluator.ts
31
- var SUSPICIOUS_KEYWORDS = [
32
- "eval",
33
- "process",
34
- "require",
35
- "__proto__",
36
- "constructor"
37
- ];
30
+ var SUSPICIOUS_KEYWORDS = ["eval", "process", "require", "__proto__", "constructor"];
38
31
  function evaluateCondition(condition, evaluate) {
39
32
  if (!condition) return false;
40
33
  const condStr = String(condition);
@@ -230,7 +223,10 @@ async function applyTransformation(data, transform, ctx) {
230
223
  return ctx.evaluateExpression(mapper);
231
224
  });
232
225
  }
233
- return data.map((item) => ({ value: item, processed: true }));
226
+ return data.map((item) => ({
227
+ value: item,
228
+ processed: true
229
+ }));
234
230
  }
235
231
  case "reduce": {
236
232
  if (!Array.isArray(data)) return data;
@@ -324,11 +320,14 @@ function updateAnimations(animations, setVariable, now) {
324
320
  }
325
321
  }
326
322
  }
323
+
324
+ // src/runtime/visualizer-server.ts
325
+ var WebSocket = chunkYDPEHCCI_cjs.lazyPeerSymbol("ws", "WebSocket");
327
326
  function broadcast(wss, type, payload) {
328
327
  if (!wss) return;
329
328
  const message = JSON.stringify({ type, payload });
330
329
  wss.clients.forEach((client) => {
331
- if (client.readyState === ws.WebSocket.OPEN) {
330
+ if (client.readyState === WebSocket.OPEN) {
332
331
  client.send(message);
333
332
  }
334
333
  });
@@ -585,11 +584,7 @@ var CREATION_PUFF_COUNT = 20;
585
584
  function normalizePosition(position) {
586
585
  if (!position) return [0, 0, 0];
587
586
  if (Array.isArray(position)) {
588
- return [
589
- Number(position[0]) || 0,
590
- Number(position[1]) || 0,
591
- Number(position[2]) || 0
592
- ];
587
+ return [Number(position[0]) || 0, Number(position[1]) || 0, Number(position[2]) || 0];
593
588
  }
594
589
  const p = position;
595
590
  return [Number(p[0]) || 0, Number(p[1]) || 0, Number(p[2]) || 0];
@@ -695,7 +690,12 @@ async function executeOrb(node, ctx) {
695
690
  ctx.applyDirectives(orbData);
696
691
  }
697
692
  if (!isUpdate) {
698
- ctx.createParticleEffect(`${node.name}_creation`, adjustedPos, CREATION_PUFF_COLOR, CREATION_PUFF_COUNT);
693
+ ctx.createParticleEffect(
694
+ `${node.name}_creation`,
695
+ adjustedPos,
696
+ CREATION_PUFF_COLOR,
697
+ CREATION_PUFF_COUNT
698
+ );
699
699
  }
700
700
  if (ctx.isAgent(node)) {
701
701
  if (!isUpdate || !ctx.getAgentRuntime(node.name)) {
@@ -1191,10 +1191,7 @@ var NODE_TYPE_HANDLERS = {
1191
1191
  building: (node) => executeStructure(node),
1192
1192
  // Capitalization-sensitive branches (composition vs Composition, template vs Template)
1193
1193
  composition: (node, r) => executeComposition(node, r.buildSimpleExecutorContext()),
1194
- Composition: (node, r) => executeHoloComposition(
1195
- node,
1196
- r.buildHoloCompositionContext()
1197
- ),
1194
+ Composition: (node, r) => executeHoloComposition(node, r.buildHoloCompositionContext()),
1198
1195
  template: (node, r) => r.executeTemplate(node),
1199
1196
  Template: (node, r) => executeHoloTemplate(
1200
1197
  node,
@@ -1239,9 +1236,7 @@ var NODE_TYPE_HANDLERS = {
1239
1236
  forEach: (node, r) => r.executeForEachLoop(
1240
1237
  node
1241
1238
  ),
1242
- while: (node, r) => r.executeWhileLoop(
1243
- node
1244
- ),
1239
+ while: (node, r) => r.executeWhileLoop(node),
1245
1240
  if: (node, r) => r.executeIfStatement(
1246
1241
  node
1247
1242
  ),
@@ -1404,9 +1399,7 @@ async function executeHoloObject(node, ctx) {
1404
1399
  })),
1405
1400
  ...template?.directives || []
1406
1401
  ],
1407
- traits: new Map(
1408
- (node.traits || []).map((t) => [t.name, t.config])
1409
- ),
1402
+ traits: new Map((node.traits || []).map((t) => [t.name, t.config])),
1410
1403
  children: node.children || []
1411
1404
  };
1412
1405
  if (template) {
@@ -1454,7 +1447,14 @@ function applyDirectives(node, ctx) {
1454
1447
  if (handler) {
1455
1448
  handler.onAttach?.(node, d.config || {}, {
1456
1449
  emit: (event, payload) => ctx.emit(event, payload),
1457
- getScaleMultiplier: () => ctx.getCurrentScale() || 1
1450
+ getScaleMultiplier: () => ctx.getCurrentScale() || 1,
1451
+ // premortem 2026-06-07 (task_1780881034070_wnlv): the attach context
1452
+ // previously lacked state access, so a handler's `setState` no-op'd on
1453
+ // attach and solver results never reached durable runtime state (only
1454
+ // the fire-and-forget emit). Mirror updateTraits' context so attach-time
1455
+ // results are persisted for receipt / SimulationContract readers (D.057).
1456
+ getState: () => ctx.state.getSnapshot(),
1457
+ setState: (updates) => ctx.state.update(updates)
1458
1458
  });
1459
1459
  }
1460
1460
  if (d.name === "chat") {
@@ -2250,7 +2250,11 @@ async function executeMatch(node, ctx) {
2250
2250
  return lastResult;
2251
2251
  } else {
2252
2252
  const result = ctx.evaluateExpression(String(matchCase.body));
2253
- return { success: true, output: result, executionTime: Date.now() - startTime };
2253
+ return {
2254
+ success: true,
2255
+ output: result,
2256
+ executionTime: Date.now() - startTime
2257
+ };
2254
2258
  }
2255
2259
  }
2256
2260
  }
@@ -2311,9 +2315,7 @@ async function evaluateHoloExpression(expr, scopeOverride, ctx) {
2311
2315
  }
2312
2316
  const callee = await evaluateHoloExpression(expr.callee, scopeOverride, ctx);
2313
2317
  const args = await Promise.all(
2314
- expr.arguments.map(
2315
- (a) => evaluateHoloExpression(a, scopeOverride, ctx)
2316
- )
2318
+ expr.arguments.map((a) => evaluateHoloExpression(a, scopeOverride, ctx))
2317
2319
  );
2318
2320
  if (typeof callee === "function") {
2319
2321
  return callee(...args);
@@ -2455,7 +2457,7 @@ var HoloScriptAgentRuntime = class _HoloScriptAgentRuntime {
2455
2457
  // JEPA action-planning loop (Phase 8)
2456
2458
  // Default latentDim=64, condDim=16 (action conditioning). Caller can swap
2457
2459
  // weights externally via this.jepaPredictor.setWeights() after training.
2458
- this.jepaPredictor = new chunkTVHSPJ4N_cjs.JEPAPredictor({ latentDim: 64, condDim: 16 });
2460
+ this.jepaPredictor = new chunkX2AVEAZM_cjs.JEPAPredictor({ latentDim: 64, condDim: 16 });
2459
2461
  this.jepaObjectiveNode = {};
2460
2462
  this.jepaObjectiveAttached = false;
2461
2463
  if (!agentNode || !parentRuntime) {
@@ -2599,16 +2601,12 @@ var HoloScriptAgentRuntime = class _HoloScriptAgentRuntime {
2599
2601
  ensureJepaObjectiveAttached() {
2600
2602
  if (!this.jepaObjectiveAttached) {
2601
2603
  const config = this.getJepaObjectiveConfig();
2602
- chunkTVHSPJ4N_cjs.jepObjectiveHandler.onAttach?.(
2603
- this.jepaObjectiveNode,
2604
- config,
2605
- this.buildJepaTraitContext()
2606
- );
2604
+ chunkX2AVEAZM_cjs.jepObjectiveHandler.onAttach?.(this.jepaObjectiveNode, config, this.buildJepaTraitContext());
2607
2605
  this.jepaObjectiveAttached = true;
2608
2606
  }
2609
2607
  }
2610
2608
  getJepaObjectiveConfig() {
2611
- const config = chunkTVHSPJ4N_cjs.jepObjectiveHandler.defaultConfig;
2609
+ const config = chunkX2AVEAZM_cjs.jepObjectiveHandler.defaultConfig;
2612
2610
  if (!config) {
2613
2611
  throw new Error("JEPAObjective handler defaultConfig is required for offline training");
2614
2612
  }
@@ -2658,17 +2656,12 @@ var HoloScriptAgentRuntime = class _HoloScriptAgentRuntime {
2658
2656
  const latentDim = config.latentDim;
2659
2657
  const outcomeStr = outcome.success ? `success:${String(outcome.output ?? "")}` : `failure:${String(outcome.error ?? "")}`;
2660
2658
  const targetVec = textToEmbeddingFloat32(outcomeStr, latentDim);
2661
- chunkTVHSPJ4N_cjs.jepObjectiveHandler.onEvent?.(
2662
- this.jepaObjectiveNode,
2663
- config,
2664
- this.buildJepaTraitContext(),
2665
- {
2666
- type: "jepa:encode_pair",
2667
- context: contextStr,
2668
- targetVec,
2669
- conditioning: void 0
2670
- }
2671
- );
2659
+ chunkX2AVEAZM_cjs.jepObjectiveHandler.onEvent?.(this.jepaObjectiveNode, config, this.buildJepaTraitContext(), {
2660
+ type: "jepa:encode_pair",
2661
+ context: contextStr,
2662
+ targetVec,
2663
+ conditioning: void 0
2664
+ });
2672
2665
  }
2673
2666
  /**
2674
2667
  * Lightweight fork-detection heuristic for runtime adapters.
@@ -2744,7 +2737,9 @@ var HoloScriptAgentRuntime = class _HoloScriptAgentRuntime {
2744
2737
  if (this.isDestroyed) return { success: false, error: "Agent destroyed" };
2745
2738
  const forkCheck = this.checkForkSandbox();
2746
2739
  if (!forkCheck.allowed) {
2747
- chunkILRBGFVD_cjs.logger.warn(`[Agent:${this.agentNode.name}] ForkSandboxGate blocked action "${actionName}": ${forkCheck.reason}`);
2740
+ chunkILRBGFVD_cjs.logger.warn(
2741
+ `[Agent:${this.agentNode.name}] ForkSandboxGate blocked action "${actionName}": ${forkCheck.reason}`
2742
+ );
2748
2743
  return { success: false, error: `ForkSandboxGate: ${forkCheck.reason}` };
2749
2744
  }
2750
2745
  const directives = this.agentNode.directives;
@@ -2802,9 +2797,7 @@ var HoloScriptAgentRuntime = class _HoloScriptAgentRuntime {
2802
2797
  try {
2803
2798
  this.trainJepaOffline(stateBefore, actionName, executionResult);
2804
2799
  } catch (trainErr) {
2805
- chunkILRBGFVD_cjs.logger.warn(
2806
- `[JEPA:${this.agentNode.name}] trainJepaOffline error: ${String(trainErr)}`
2807
- );
2800
+ chunkILRBGFVD_cjs.logger.warn(`[JEPA:${this.agentNode.name}] trainJepaOffline error: ${String(trainErr)}`);
2808
2801
  }
2809
2802
  return executionResult;
2810
2803
  }
@@ -2945,6 +2938,15 @@ var HoloScriptAgentRuntime = class _HoloScriptAgentRuntime {
2945
2938
  }
2946
2939
  };
2947
2940
 
2941
+ // src/runtime/plugin-trait-registrar.ts
2942
+ var TRAIT_OWNER_KEY = "__pluginOwner";
2943
+ function registerPluginTraits(target, pluginId, handlers) {
2944
+ for (const handler of handlers) {
2945
+ handler[TRAIT_OWNER_KEY] = pluginId;
2946
+ target.registerTrait(handler.name, handler);
2947
+ }
2948
+ }
2949
+
2948
2950
  // src/extensions/ExtensionRegistry.ts
2949
2951
  var ExtensionRegistry = class {
2950
2952
  constructor(runtime) {
@@ -3022,9 +3024,11 @@ var StateSynchronizer = chunkYDPEHCCI_cjs.lazyPeerSymbol(
3022
3024
  "@holoscript/mesh",
3023
3025
  "StateSynchronizer"
3024
3026
  );
3025
- var engineRuntime = chunkYDPEHCCI_cjs.definePeerNamespace(
3026
- "@holoscript/engine/runtime"
3027
+ var WebSocketServer = chunkYDPEHCCI_cjs.lazyPeerSymbol(
3028
+ "ws",
3029
+ "WebSocketServer"
3027
3030
  );
3031
+ var engineRuntime = chunkYDPEHCCI_cjs.definePeerNamespace("@holoscript/engine/runtime");
3028
3032
  var RUNTIME_SECURITY_LIMITS = {
3029
3033
  maxExecutionDepth: 50,
3030
3034
  maxTotalNodes: 1e3,
@@ -3063,7 +3067,10 @@ var HoloScriptRuntime = class {
3063
3067
  for (const [name, fn] of this.builtinFunctions) {
3064
3068
  this.context.functions.set(name, ((...spreadArgs) => fn(spreadArgs)));
3065
3069
  }
3066
- attachStateInvalidationConsumer(this.buildEventSystemContext(), defaultStateInvalidationRegistry);
3070
+ attachStateInvalidationConsumer(
3071
+ this.buildEventSystemContext(),
3072
+ defaultStateInvalidationRegistry
3073
+ );
3067
3074
  this.registerFunction("get_attended_entities", (args) => {
3068
3075
  const topK = typeof args[0] === "number" ? args[0] : 10;
3069
3076
  const selfRaw = this.context.variables.get("self");
@@ -3088,11 +3095,13 @@ var HoloScriptRuntime = class {
3088
3095
  topK
3089
3096
  );
3090
3097
  });
3091
- this.traitHandlers.set("mitosis", chunkTVHSPJ4N_cjs.mitosisHandler);
3092
- this.traitHandlers.set("orbital", chunkTVHSPJ4N_cjs.orbitalHandler);
3098
+ this.traitHandlers.set("mitosis", chunkX2AVEAZM_cjs.mitosisHandler);
3099
+ this.traitHandlers.set("orbital", chunkX2AVEAZM_cjs.orbitalHandler);
3093
3100
  this.extensionRegistry = new ExtensionRegistry(this);
3094
3101
  engineRuntime.stateMachineInterpreter.setHookExecutor((code) => this.evaluateExpression(code));
3095
- engineRuntime.stateMachineInterpreter.setGuardEvaluator((expr) => this.evaluateExpression(expr));
3102
+ engineRuntime.stateMachineInterpreter.setGuardEvaluator(
3103
+ (expr) => this.evaluateExpression(expr)
3104
+ );
3096
3105
  }
3097
3106
  /**
3098
3107
  * Initialize built-in functions
@@ -3136,6 +3145,15 @@ var HoloScriptRuntime = class {
3136
3145
  */
3137
3146
  registerTrait(name, handler) {
3138
3147
  const vrName = name;
3148
+ const existingHandler = this.traitHandlers.get(vrName);
3149
+ if (existingHandler) {
3150
+ const priorOwner = existingHandler[TRAIT_OWNER_KEY] ?? "unknown";
3151
+ const incomingOwner = handler[TRAIT_OWNER_KEY] ?? "unknown";
3152
+ chunkILRBGFVD_cjs.logger.warn(
3153
+ `Trait '${name}' is already registered by '${String(priorOwner)}'; ignoring the duplicate from '${String(incomingOwner)}' (keep-first). Trait names must be unique across plugins.`
3154
+ );
3155
+ return;
3156
+ }
3139
3157
  this.traitHandlers.set(vrName, handler);
3140
3158
  chunkILRBGFVD_cjs.logger.info(`Registered trait: ${name}`);
3141
3159
  }
@@ -3708,7 +3726,7 @@ var HoloScriptRuntime = class {
3708
3726
  // ============================================================================
3709
3727
  startVisualizationServer(port = 8080) {
3710
3728
  try {
3711
- this.wss = new ws.WebSocketServer({ port });
3729
+ this.wss = new WebSocketServer({ port });
3712
3730
  chunkILRBGFVD_cjs.logger.info(`[Visualizer] WebSocket server started on port ${port}`);
3713
3731
  this.timeManager = new TimeManager(/* @__PURE__ */ new Date());
3714
3732
  this.timeManager.onUpdate((julianDate, date) => {
@@ -4081,7 +4099,7 @@ var HoloScriptRuntime = class {
4081
4099
  parent: previousScope
4082
4100
  };
4083
4101
  try {
4084
- const parser = new chunkJIYN45TV_cjs.HoloScriptCodeParser();
4102
+ const parser = new chunkGVFJ6T4S_cjs.HoloScriptCodeParser();
4085
4103
  const result = parser.parse(migration.body);
4086
4104
  if (result.errors.length > 0) {
4087
4105
  chunkILRBGFVD_cjs.logger.error(`Migration parse errors for ${orb.name}:`, {
@@ -4303,5 +4321,7 @@ var HoloScriptRuntime = class {
4303
4321
 
4304
4322
  exports.HoloScriptAgentRuntime = HoloScriptAgentRuntime;
4305
4323
  exports.HoloScriptRuntime = HoloScriptRuntime;
4306
- //# sourceMappingURL=chunk-6DO5IZ5N.cjs.map
4307
- //# sourceMappingURL=chunk-6DO5IZ5N.cjs.map
4324
+ exports.TRAIT_OWNER_KEY = TRAIT_OWNER_KEY;
4325
+ exports.registerPluginTraits = registerPluginTraits;
4326
+ //# sourceMappingURL=chunk-EDPYCLRC.cjs.map
4327
+ //# sourceMappingURL=chunk-EDPYCLRC.cjs.map