@holoscript/core 8.0.12 → 8.0.14

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 (166) hide show
  1. package/README.md +14 -0
  2. package/bin/holo-decision.mjs +133 -0
  3. package/dist/{GLTFPipeline-L76YTXKA.js → GLTFPipeline-6LS3UDYX.js} +6 -6
  4. package/dist/{GLTFPipeline-ZWJN7GI6.cjs → GLTFPipeline-VTI6PRRQ.cjs} +10 -10
  5. package/dist/{HoloCompositionParser-FLBZKFD3.js → HoloCompositionParser-GILABNN3.js} +5 -5
  6. package/dist/{HoloCompositionParser-3XEC7IJC.cjs → HoloCompositionParser-ZVRYVEA5.cjs} +12 -12
  7. package/dist/{HoloScriptPlusParser-RNUCHOAJ.cjs → HoloScriptPlusParser-WTPRPRPR.cjs} +8 -8
  8. package/dist/{HoloScriptPlusParser-55AY4MUF.js → HoloScriptPlusParser-ZP53ECSL.js} +5 -5
  9. package/dist/{SceneIRCompiler-KWUFHZ4O.cjs → SceneIRCompiler-7KQ5NKAU.cjs} +11 -11
  10. package/dist/{SceneIRCompiler-63KA3M2F.js → SceneIRCompiler-VX75RB6H.js} +6 -6
  11. package/dist/{chunk-EM2OGPYE.js → chunk-2GKF7JQ6.js} +3 -3
  12. package/dist/{chunk-HVX7QQYK.js → chunk-3KHRZTNW.js} +3 -3
  13. package/dist/{chunk-UTUD6GJI.js → chunk-42Z3SVHQ.js} +3 -3
  14. package/dist/{chunk-Z4IUBW46.js → chunk-47XZ62KM.js} +112 -55
  15. package/dist/{chunk-GGR7QUKK.cjs → chunk-4CRMVEON.cjs} +37 -37
  16. package/dist/{chunk-QBY7LRN2.js → chunk-4NEPHK2K.js} +3 -3
  17. package/dist/{chunk-65S62L4D.cjs → chunk-5B2AJKA5.cjs} +20 -20
  18. package/dist/{chunk-PJFTTSKE.js → chunk-5T6BWIB7.js} +4 -4
  19. package/dist/{chunk-KFVNCW4Q.js → chunk-62OYZT6Q.js} +3 -3
  20. package/dist/{chunk-3KMANSQJ.cjs → chunk-645EWDZW.cjs} +4 -4
  21. package/dist/{chunk-BP4KTMLY.js → chunk-6FCNMTL5.js} +4 -4
  22. package/dist/{chunk-77QI552M.js → chunk-73EDVY5D.js} +3 -3
  23. package/dist/{chunk-7IDJDMPU.cjs → chunk-7FYSSI3C.cjs} +27 -2
  24. package/dist/{chunk-WNYXT4TE.cjs → chunk-7ITJP33Q.cjs} +3 -3
  25. package/dist/chunk-7ZKQ32XK.js +1571 -0
  26. package/dist/{chunk-P7JEKJTZ.cjs → chunk-B6JHTTMR.cjs} +25 -14
  27. package/dist/{chunk-FG6PYGIZ.js → chunk-BLCWQ225.js} +4 -4
  28. package/dist/{chunk-7NPZZZD7.js → chunk-C73GVAYC.js} +16 -9
  29. package/dist/{chunk-RMOEL2GD.cjs → chunk-CESMPUEZ.cjs} +3794 -1137
  30. package/dist/{chunk-SQXAZHDG.js → chunk-CHIZSMWD.js} +3 -3
  31. package/dist/{chunk-G35CAQ7I.cjs → chunk-D44CEFY4.cjs} +5 -5
  32. package/dist/chunk-ERYKKPHW.cjs +1884 -0
  33. package/dist/{chunk-TYNRXRHF.js → chunk-EYHPTJ3F.js} +3695 -1045
  34. package/dist/{chunk-J3UHV5T4.cjs → chunk-FGXJPJ3W.cjs} +4 -4
  35. package/dist/{chunk-IJU6AS67.cjs → chunk-FHR2AVMA.cjs} +23 -23
  36. package/dist/{chunk-LMB555QB.cjs → chunk-FOM36K5I.cjs} +18 -18
  37. package/dist/{chunk-JBYBMBMW.js → chunk-FWKEY4LD.js} +3 -2
  38. package/dist/{chunk-ZRPALBQB.cjs → chunk-GGH3ZYDB.cjs} +5 -5
  39. package/dist/{chunk-2BYAUHBO.js → chunk-GI5YYZH6.js} +3 -3
  40. package/dist/{chunk-VTEXJOSD.cjs → chunk-GYJLP4BO.cjs} +30 -30
  41. package/dist/{chunk-OC6GV5QH.cjs → chunk-HCONR4J6.cjs} +38 -38
  42. package/dist/{chunk-B3CWTCK2.js → chunk-IA7FCSRY.js} +27 -2
  43. package/dist/{chunk-5FYMCVBY.js → chunk-IXFNA5TT.js} +4 -4
  44. package/dist/{chunk-G6KACNMO.js → chunk-JCVSCKUH.js} +4 -4
  45. package/dist/{chunk-FHVPN7BN.js → chunk-JQCXLKAU.js} +3 -3
  46. package/dist/{chunk-F3YT6GUF.cjs → chunk-KLM6QD6D.cjs} +14 -14
  47. package/dist/{chunk-UGQ3QNV6.js → chunk-KOGPVAP6.js} +24 -8
  48. package/dist/{chunk-CKV5NYAE.js → chunk-KYJD2UMV.js} +4 -4
  49. package/dist/{chunk-LB3ZZMKT.cjs → chunk-L4DBUX3N.cjs} +10 -10
  50. package/dist/{chunk-RXQNRZ5F.js → chunk-LGRKBTPM.js} +3 -3
  51. package/dist/{chunk-OMNHTCS4.cjs → chunk-LHUDAJQT.cjs} +3 -2
  52. package/dist/{chunk-PDXX5UI4.cjs → chunk-LQNL3IYV.cjs} +38 -38
  53. package/dist/{chunk-WWNCM473.js → chunk-M7XR3F53.js} +4 -4
  54. package/dist/{chunk-IFW5IW4L.cjs → chunk-ML4V5PVU.cjs} +670 -627
  55. package/dist/{chunk-656IAS7B.cjs → chunk-N7IYRAFG.cjs} +21 -14
  56. package/dist/chunk-N7MIIDLI.cjs +1605 -0
  57. package/dist/{chunk-USOUXQYD.js → chunk-NWKARJM2.js} +130 -22
  58. package/dist/{chunk-VVAAZITA.cjs → chunk-OOP4S3GU.cjs} +5 -5
  59. package/dist/{chunk-TX6ZBIF4.js → chunk-ORBVCOTC.js} +3 -3
  60. package/dist/{chunk-RRQIAJLQ.cjs → chunk-OSKGCXAQ.cjs} +5 -5
  61. package/dist/{chunk-QEDMOGF3.cjs → chunk-P65OIMJT.cjs} +7 -7
  62. package/dist/{chunk-QM7FJB5W.js → chunk-PSWCJQS4.js} +4 -4
  63. package/dist/{chunk-7N63JHUN.cjs → chunk-PZ46WRHX.cjs} +8 -8
  64. package/dist/{chunk-AATYYLYK.js → chunk-Q4J2K7FI.js} +16 -5
  65. package/dist/chunk-QLPRI3QW.js +1875 -0
  66. package/dist/{chunk-WTH23ISI.js → chunk-R5VKLUMR.js} +4 -4
  67. package/dist/{chunk-NQN5LFN4.cjs → chunk-REN3LHO6.cjs} +19 -19
  68. package/dist/{chunk-JEJ7TT54.js → chunk-RVN7OPCP.js} +4 -4
  69. package/dist/{chunk-ZK7KX5CD.cjs → chunk-SE2Y5BSL.cjs} +6 -6
  70. package/dist/{chunk-2X3IPCBK.cjs → chunk-SKVBUGMC.cjs} +7 -7
  71. package/dist/{chunk-GZPUA2TL.cjs → chunk-SNMQUWIO.cjs} +10 -10
  72. package/dist/{chunk-OIBRWLPY.cjs → chunk-TKDDIE3T.cjs} +54 -3
  73. package/dist/{chunk-5H5GFBMG.cjs → chunk-TMNAKNV2.cjs} +112 -55
  74. package/dist/{chunk-5LVFTGKH.js → chunk-TZQKJOPC.js} +3 -3
  75. package/dist/{chunk-TSTFYGGX.js → chunk-UKEK2NZJ.js} +3 -3
  76. package/dist/{chunk-3IUHTGDD.cjs → chunk-VA7THINF.cjs} +38 -38
  77. package/dist/{chunk-Z557DVYN.js → chunk-VMCR5QVI.js} +4 -4
  78. package/dist/{chunk-IS7NTKY5.cjs → chunk-VTFLKSJL.cjs} +14 -14
  79. package/dist/{chunk-VO52AJD5.js → chunk-VXHB6ZHY.js} +4 -4
  80. package/dist/{chunk-S4O7CFHQ.cjs → chunk-VZI7S7P6.cjs} +7 -7
  81. package/dist/{chunk-BQJ3YBF3.js → chunk-W4AJMMQR.js} +667 -628
  82. package/dist/{chunk-2KKOYZYI.cjs → chunk-XZC75AJ4.cjs} +5 -5
  83. package/dist/{chunk-FWCHPCD4.js → chunk-Y2OCKXVD.js} +4 -4
  84. package/dist/{chunk-EI5G5JLY.cjs → chunk-YBM34FUJ.cjs} +134 -22
  85. package/dist/{chunk-DUG3OQAS.js → chunk-YDSNDCV3.js} +3 -3
  86. package/dist/{chunk-566ZB4LZ.cjs → chunk-YM7UUYR5.cjs} +5 -5
  87. package/dist/{chunk-BCP4E7MD.cjs → chunk-YMI3ED3B.cjs} +26 -10
  88. package/dist/{chunk-CP7V3ATL.js → chunk-Z7NUL73U.js} +51 -4
  89. package/dist/cli/holoscript-runner.cjs +11 -11
  90. package/dist/cli/holoscript-runner.js +4 -4
  91. package/dist/compiler/agent-inference.cjs +8 -8
  92. package/dist/compiler/agent-inference.js +4 -4
  93. package/dist/compiler/android-xr.cjs +7 -7
  94. package/dist/compiler/android-xr.js +5 -5
  95. package/dist/compiler/android.cjs +6 -6
  96. package/dist/compiler/android.js +4 -4
  97. package/dist/compiler/context.cjs +6 -6
  98. package/dist/compiler/context.js +3 -3
  99. package/dist/compiler/daimon-seed.cjs +9 -9
  100. package/dist/compiler/daimon-seed.js +4 -4
  101. package/dist/compiler/domain-block-utils.cjs +165 -165
  102. package/dist/compiler/domain-block-utils.js +4 -4
  103. package/dist/compiler/dtdl.cjs +7 -7
  104. package/dist/compiler/dtdl.js +4 -4
  105. package/dist/compiler/gltf-pipeline.cjs +8 -8
  106. package/dist/compiler/gltf-pipeline.js +1 -1
  107. package/dist/compiler/godot.cjs +6 -6
  108. package/dist/compiler/godot.js +5 -5
  109. package/dist/compiler/incremental.cjs +8 -8
  110. package/dist/compiler/incremental.js +3 -3
  111. package/dist/compiler/index.cjs +871 -207
  112. package/dist/compiler/index.d.ts +21 -1
  113. package/dist/compiler/index.js +696 -60
  114. package/dist/compiler/ios.cjs +6 -6
  115. package/dist/compiler/ios.js +4 -4
  116. package/dist/compiler/llm-provider-capabilities.cjs +6 -6
  117. package/dist/compiler/llm-provider-capabilities.js +3 -3
  118. package/dist/compiler/openxr.cjs +6 -6
  119. package/dist/compiler/openxr.js +5 -5
  120. package/dist/compiler/sdf.cjs +7 -7
  121. package/dist/compiler/sdf.js +5 -5
  122. package/dist/compiler/state.cjs +6 -6
  123. package/dist/compiler/state.js +4 -4
  124. package/dist/compiler/trait-composition.cjs +7 -7
  125. package/dist/compiler/trait-composition.js +3 -3
  126. package/dist/compiler/unity.cjs +6 -6
  127. package/dist/compiler/unity.js +5 -5
  128. package/dist/compiler/unreal.cjs +7 -7
  129. package/dist/compiler/unreal.js +5 -5
  130. package/dist/compiler/urdf.cjs +14 -14
  131. package/dist/compiler/urdf.js +5 -5
  132. package/dist/compiler/usd-physics.cjs +7 -7
  133. package/dist/compiler/usd-physics.js +4 -4
  134. package/dist/compiler/visionos.cjs +6 -6
  135. package/dist/compiler/visionos.js +5 -5
  136. package/dist/compiler/vrchat.cjs +7 -7
  137. package/dist/compiler/vrchat.js +5 -5
  138. package/dist/compiler/wasm.cjs +10 -10
  139. package/dist/compiler/wasm.js +5 -5
  140. package/dist/compiler/webgpu.cjs +6 -6
  141. package/dist/compiler/webgpu.js +5 -5
  142. package/dist/constants.cjs +3 -3
  143. package/dist/constants.js +1 -1
  144. package/dist/entries/scripting.cjs +6 -6
  145. package/dist/entries/scripting.js +2 -2
  146. package/dist/evolution/index.cjs +21 -17
  147. package/dist/evolution/index.d.ts +9 -0
  148. package/dist/evolution/index.js +6 -6
  149. package/dist/index.cjs +930 -703
  150. package/dist/index.d.ts +70 -5
  151. package/dist/index.js +192 -109
  152. package/dist/parser.cjs +19 -19
  153. package/dist/parser.js +5 -5
  154. package/dist/reconstruction/index.cjs +127 -38
  155. package/dist/reconstruction/index.d.ts +159 -0
  156. package/dist/reconstruction/index.js +11 -2
  157. package/dist/runtime.d.ts +1 -0
  158. package/dist/traitDocs/traitDocs.cjs +8 -8
  159. package/dist/traitDocs/traitDocs.js +2 -2
  160. package/dist/traits/index.cjs +566 -471
  161. package/dist/traits/index.js +93 -11
  162. package/package.json +25 -41
  163. package/dist/chunk-G3BM3CT4.cjs +0 -639
  164. package/dist/chunk-KEYG7HGY.js +0 -1062
  165. package/dist/chunk-QX34ELJ7.js +0 -625
  166. package/dist/chunk-W2GA3EQB.cjs +0 -1065
@@ -2,9 +2,9 @@ import { computeHoloMapReplayFingerprint } from './chunk-WNNE3PO3.js';
2
2
  import { isWebGpuEnvironmentPresent, HOLOMAP_SIMULATION_CONTRACT_KIND } from './chunk-K56UVEXV.js';
3
3
 
4
4
  // src/version.ts
5
- var HOLOSCRIPT_VERSION = "8.0.12" ;
6
- var GIT_COMMIT_SHA = "530989456" ;
7
- var BUILD_TIMESTAMP = "2026-07-05T23:05:02.393Z" ;
5
+ var HOLOSCRIPT_VERSION = "8.0.14" ;
6
+ var GIT_COMMIT_SHA = "cac71253a" ;
7
+ var BUILD_TIMESTAMP = "2026-07-12T00:05:58.992Z" ;
8
8
  function getVersionString() {
9
9
  const sha = `+${GIT_COMMIT_SHA}` ;
10
10
  return `${HOLOSCRIPT_VERSION}${sha}`;
@@ -1811,9 +1811,12 @@ function createPagedKVCache(config) {
1811
1811
  const freePhysicalPages = Array.from({ length: config.maxResidentPages }, (_, i) => i).reverse();
1812
1812
  const appendKernel = config.device ? createPagedKVAppendKernel(config.device) : null;
1813
1813
  const lookupKernel = config.device ? createPagedKVLookupKernel(config.device) : null;
1814
+ const residentPageStates = /* @__PURE__ */ new Set();
1814
1815
  let disposed = false;
1815
1816
  let nextPageId = 0;
1816
1817
  let accessClock = 0;
1818
+ let devicePageCount = 0;
1819
+ let hostPageCount = 0;
1817
1820
  function assertLive() {
1818
1821
  if (disposed) throw new Error("PagedKVCache has been disposed.");
1819
1822
  }
@@ -1848,9 +1851,7 @@ function createPagedKVCache(config) {
1848
1851
  valuePages.fill(0, offset, end);
1849
1852
  }
1850
1853
  function residentPages() {
1851
- return layers.flatMap(
1852
- (layer) => Array.from(layer.pages.values()).filter((page) => page.residency === "device")
1853
- );
1854
+ return Array.from(residentPageStates);
1854
1855
  }
1855
1856
  function evictPage(page) {
1856
1857
  if (page.physicalPage === null) return pageSnapshot(page);
@@ -1863,6 +1864,9 @@ function createPagedKVCache(config) {
1863
1864
  page.hostKeys = hostKeys;
1864
1865
  page.hostValues = hostValues;
1865
1866
  page.residency = "host";
1867
+ residentPageStates.delete(page);
1868
+ devicePageCount -= 1;
1869
+ hostPageCount += 1;
1866
1870
  return pageSnapshot(page);
1867
1871
  }
1868
1872
  function evictOldestInternal(count, protectedPage) {
@@ -1888,7 +1892,10 @@ function createPagedKVCache(config) {
1888
1892
  }
1889
1893
  const physicalPage = allocatePhysicalPage(page);
1890
1894
  page.physicalPage = physicalPage;
1895
+ if (page.residency === "host") hostPageCount -= 1;
1891
1896
  page.residency = "device";
1897
+ residentPageStates.add(page);
1898
+ devicePageCount += 1;
1892
1899
  page.lastAccess = ++accessClock;
1893
1900
  if (page.hostKeys) {
1894
1901
  keyPages.set(page.hostKeys, pageOffset(physicalPage));
@@ -1918,6 +1925,8 @@ function createPagedKVCache(config) {
1918
1925
  lastAccess: ++accessClock
1919
1926
  };
1920
1927
  layerState.pages.set(logicalPage, page);
1928
+ residentPageStates.add(page);
1929
+ devicePageCount += 1;
1921
1930
  return page;
1922
1931
  }
1923
1932
  function buildPageTable(layer, logicalPages) {
@@ -1935,27 +1944,32 @@ function createPagedKVCache(config) {
1935
1944
  }
1936
1945
  return pageTable;
1937
1946
  }
1938
- function appendCpu(pages, pageTable, slotMap, vectors) {
1939
- const out = new Float32Array(pages);
1947
+ function appendCpuInPlace(pages, touchedPages, vectors, startToken) {
1940
1948
  const numVecs = vectors.length / config.hiddenDim;
1941
1949
  for (let v = 0; v < numVecs; v += 1) {
1942
- const logicalPage = slotMap[v] >>> 16;
1943
- const inPage = slotMap[v] & 65535;
1944
- const physicalPage = pageTable[logicalPage];
1950
+ const token = startToken + v;
1951
+ const logicalPage = Math.floor(token / config.pageSize);
1952
+ const inPage = token % config.pageSize;
1953
+ const physicalPage = touchedPages.get(logicalPage)?.physicalPage;
1954
+ if (physicalPage === void 0 || physicalPage === null) {
1955
+ throw new Error(`PagedKVCache append misses resident logical page ${logicalPage}.`);
1956
+ }
1945
1957
  const base = physicalPage * config.pageSize * config.hiddenDim;
1946
1958
  for (let d = 0; d < config.hiddenDim; d += 1) {
1947
- out[base + inPage * config.hiddenDim + d] = vectors[v * config.hiddenDim + d];
1959
+ pages[base + inPage * config.hiddenDim + d] = vectors[v * config.hiddenDim + d];
1948
1960
  }
1949
1961
  }
1950
- return out;
1951
1962
  }
1952
- function lookupCpu(pages, pageTable, tokenCount, startToken) {
1963
+ function lookupCpuDirect(pages, layerState, tokenCount, startToken) {
1953
1964
  const out = new Float32Array(tokenCount * config.hiddenDim);
1954
1965
  for (let v = 0; v < tokenCount; v += 1) {
1955
1966
  const logicalSlot = startToken + v;
1956
1967
  const logicalPage = Math.floor(logicalSlot / config.pageSize);
1957
1968
  const inPage = logicalSlot % config.pageSize;
1958
- const physicalPage = pageTable[logicalPage];
1969
+ const physicalPage = layerState.pages.get(logicalPage)?.physicalPage;
1970
+ if (physicalPage === void 0 || physicalPage === null) {
1971
+ throw new Error(`PagedKVCache lookup misses resident logical page ${logicalPage}.`);
1972
+ }
1959
1973
  const base = physicalPage * config.pageSize * config.hiddenDim;
1960
1974
  for (let d = 0; d < config.hiddenDim; d += 1) {
1961
1975
  out[v * config.hiddenDim + d] = pages[base + inPage * config.hiddenDim + d];
@@ -1977,7 +1991,7 @@ function createPagedKVCache(config) {
1977
1991
  residentPagesForLayer(layer) {
1978
1992
  assertLive();
1979
1993
  validateLayer(layer);
1980
- return Array.from(layers[layer].pages.values()).filter((page) => page.residency === "device").sort((a, b) => a.firstToken - b.firstToken).map((page) => pageSnapshot(page));
1994
+ return Array.from(residentPageStates).filter((page) => page.layer === layer).sort((a, b) => a.firstToken - b.firstToken).map((page) => pageSnapshot(page));
1981
1995
  },
1982
1996
  evictOldest(count) {
1983
1997
  assertLive();
@@ -1988,23 +2002,18 @@ function createPagedKVCache(config) {
1988
2002
  },
1989
2003
  memoryUsage() {
1990
2004
  assertLive();
1991
- let devicePages = 0;
1992
- let hostPages = 0;
1993
- for (const layer of layers) {
1994
- for (const page of layer.pages.values()) {
1995
- if (page.residency === "device") devicePages += 1;
1996
- if (page.residency === "host") hostPages += 1;
1997
- }
1998
- }
1999
2005
  return {
2000
- device: devicePages * pageBytes * 2,
2001
- host: hostPages * pageBytes * 2
2006
+ device: devicePageCount * pageBytes * 2,
2007
+ host: hostPageCount * pageBytes * 2
2002
2008
  };
2003
2009
  },
2004
2010
  async dispose() {
2005
2011
  disposed = true;
2006
2012
  for (const layer of layers) layer.pages.clear();
2013
+ residentPageStates.clear();
2007
2014
  freePhysicalPages.length = 0;
2015
+ devicePageCount = 0;
2016
+ hostPageCount = 0;
2008
2017
  },
2009
2018
  async append(layer, keyVectors, valueVectors = keyVectors, firstToken) {
2010
2019
  assertLive();
@@ -2024,14 +2033,11 @@ function createPagedKVCache(config) {
2024
2033
  throw new Error(`PagedKVCache append firstToken must be non-negative, got ${startToken}`);
2025
2034
  }
2026
2035
  const touchedPages = /* @__PURE__ */ new Map();
2027
- const slotMap = new Uint32Array(tokenCount);
2028
2036
  const requiredPages = /* @__PURE__ */ new Set();
2029
2037
  for (let i = 0; i < tokenCount; i += 1) {
2030
2038
  const token = startToken + i;
2031
2039
  const logicalPage = Math.floor(token / config.pageSize);
2032
- const slot = token % config.pageSize;
2033
2040
  requiredPages.add(logicalPage);
2034
- slotMap[i] = logicalPage << 16 | slot;
2035
2041
  }
2036
2042
  if (requiredPages.size > config.maxResidentPages) {
2037
2043
  throw new Error(
@@ -2042,8 +2048,15 @@ function createPagedKVCache(config) {
2042
2048
  const page = allocatePageInternal(layer, logicalPage);
2043
2049
  touchedPages.set(logicalPage, page);
2044
2050
  }
2045
- const pageTable = buildPageTable(layer, touchedPages.keys());
2046
2051
  if (appendKernel) {
2052
+ const slotMap = new Uint32Array(tokenCount);
2053
+ for (let i = 0; i < tokenCount; i += 1) {
2054
+ const token = startToken + i;
2055
+ const logicalPage = Math.floor(token / config.pageSize);
2056
+ const slot = token % config.pageSize;
2057
+ slotMap[i] = logicalPage << 16 | slot;
2058
+ }
2059
+ const pageTable = buildPageTable(layer, touchedPages.keys());
2047
2060
  keyPages.set(
2048
2061
  await appendKernel.run(
2049
2062
  keyPages,
@@ -2065,8 +2078,8 @@ function createPagedKVCache(config) {
2065
2078
  )
2066
2079
  );
2067
2080
  } else {
2068
- keyPages.set(appendCpu(keyPages, pageTable, slotMap, keyVectors));
2069
- valuePages.set(appendCpu(valuePages, pageTable, slotMap, valueVectors));
2081
+ appendCpuInPlace(keyPages, touchedPages, keyVectors, startToken);
2082
+ appendCpuInPlace(valuePages, touchedPages, valueVectors, startToken);
2070
2083
  }
2071
2084
  for (const page of touchedPages.values()) page.lastAccess = ++accessClock;
2072
2085
  layers[layer].nextToken = Math.max(layers[layer].nextToken, startToken + tokenCount);
@@ -2103,8 +2116,8 @@ function createPagedKVCache(config) {
2103
2116
  for (const logicalPage of requiredPages) {
2104
2117
  ensurePageResident(layers[layer].pages.get(logicalPage));
2105
2118
  }
2106
- const pageTable = buildPageTable(layer, requiredPages);
2107
2119
  if (lookupKernel) {
2120
+ const pageTable = buildPageTable(layer, requiredPages);
2108
2121
  return {
2109
2122
  keys: await lookupKernel.run(
2110
2123
  keyPages,
@@ -2125,8 +2138,8 @@ function createPagedKVCache(config) {
2125
2138
  };
2126
2139
  }
2127
2140
  return {
2128
- keys: lookupCpu(keyPages, pageTable, tokenCount, startToken),
2129
- values: lookupCpu(valuePages, pageTable, tokenCount, startToken)
2141
+ keys: lookupCpuDirect(keyPages, layers[layer], tokenCount, startToken),
2142
+ values: lookupCpuDirect(valuePages, layers[layer], tokenCount, startToken)
2130
2143
  };
2131
2144
  }
2132
2145
  };
@@ -2204,6 +2217,9 @@ var _HoloMapRuntimeImpl = class _HoloMapRuntimeImpl {
2204
2217
  */
2205
2218
  this.globalPosSum = [0, 0, 0];
2206
2219
  this.globalConfSum = 0;
2220
+ this.globalPrincipalMomentXX = 0;
2221
+ this.globalPrincipalMomentZZ = 0;
2222
+ this.globalPrincipalMomentXZ = 0;
2207
2223
  /** Previous frame camera pose (centroid of that frame's points). */
2208
2224
  this.prevPose = null;
2209
2225
  /** Previous full camera pose, including scan-derived principal-axis rotation. */
@@ -2455,6 +2471,15 @@ var _HoloMapRuntimeImpl = class _HoloMapRuntimeImpl {
2455
2471
  const yaw = 0.5 * Math.atan2(2 * xz, xx - zz);
2456
2472
  return _HoloMapRuntimeImpl.yawToQuaternion(yaw);
2457
2473
  }
2474
+ static estimatePrincipalAxisRotationFromMoments(momentXX, momentZZ, momentXZ, pointCount, centroid) {
2475
+ if (pointCount < 2) return [0, 0, 0, 1];
2476
+ const xx = momentXX - pointCount * centroid[0] * centroid[0];
2477
+ const zz = momentZZ - pointCount * centroid[2] * centroid[2];
2478
+ const xz = momentXZ - pointCount * centroid[0] * centroid[2];
2479
+ if (xx + zz < 1e-12) return [0, 0, 0, 1];
2480
+ const yaw = 0.5 * Math.atan2(2 * xz, xx - zz);
2481
+ return _HoloMapRuntimeImpl.yawToQuaternion(yaw);
2482
+ }
2458
2483
  static yawToQuaternion(yaw) {
2459
2484
  const half = yaw / 2;
2460
2485
  return [0, Math.sin(half), 0, Math.cos(half)];
@@ -2490,17 +2515,23 @@ var _HoloMapRuntimeImpl = class _HoloMapRuntimeImpl {
2490
2515
  anchorDescriptor[3] ?? 0
2491
2516
  ]);
2492
2517
  }
2493
- static cloneTrajectoryKeyframes(keyframes) {
2494
- return keyframes.map((keyframe) => ({
2495
- frameIndex: keyframe.frameIndex,
2496
- timestampMs: keyframe.timestampMs,
2497
- pose: {
2498
- position: [...keyframe.pose.position],
2499
- rotation: [...keyframe.pose.rotation],
2500
- confidence: keyframe.pose.confidence
2501
- },
2502
- embedding: new Float32Array(keyframe.embedding)
2503
- }));
2518
+ static cloneTrajectoryKeyframes(keyframes, maxCount = keyframes.length) {
2519
+ const start = Math.max(0, keyframes.length - Math.max(0, maxCount));
2520
+ const out = [];
2521
+ for (let i = start; i < keyframes.length; i += 1) {
2522
+ const keyframe = keyframes[i];
2523
+ out.push({
2524
+ frameIndex: keyframe.frameIndex,
2525
+ timestampMs: keyframe.timestampMs,
2526
+ pose: {
2527
+ position: [...keyframe.pose.position],
2528
+ rotation: [...keyframe.pose.rotation],
2529
+ confidence: keyframe.pose.confidence
2530
+ },
2531
+ embedding: new Float32Array(keyframe.embedding)
2532
+ });
2533
+ }
2534
+ return out;
2504
2535
  }
2505
2536
  pushTrajectoryKeyframe(keyframe) {
2506
2537
  this.trajectoryKeyframes.push(keyframe);
@@ -2543,6 +2574,9 @@ var _HoloMapRuntimeImpl = class _HoloMapRuntimeImpl {
2543
2574
  this.trajectoryKeyframes.length = 0;
2544
2575
  this.globalPosSum = [0, 0, 0];
2545
2576
  this.globalConfSum = 0;
2577
+ this.globalPrincipalMomentXX = 0;
2578
+ this.globalPrincipalMomentZZ = 0;
2579
+ this.globalPrincipalMomentXZ = 0;
2546
2580
  this.lastAcceptedFrameTimestampMs = null;
2547
2581
  this.sessionStartMs = performance.now();
2548
2582
  this.perfMetrics = {
@@ -2811,9 +2845,15 @@ var _HoloMapRuntimeImpl = class _HoloMapRuntimeImpl {
2811
2845
  this.totalPointCount -= evictedPoints;
2812
2846
  const ep = evicted.points.positions;
2813
2847
  for (let i = 0; i < ep.length; i += 3) {
2814
- this.globalPosSum[0] -= ep[i];
2815
- this.globalPosSum[1] -= ep[i + 1];
2816
- this.globalPosSum[2] -= ep[i + 2];
2848
+ const x = ep[i];
2849
+ const y = ep[i + 1];
2850
+ const z = ep[i + 2];
2851
+ this.globalPosSum[0] -= x;
2852
+ this.globalPosSum[1] -= y;
2853
+ this.globalPosSum[2] -= z;
2854
+ this.globalPrincipalMomentXX -= x * x;
2855
+ this.globalPrincipalMomentZZ -= z * z;
2856
+ this.globalPrincipalMomentXZ -= x * z;
2817
2857
  }
2818
2858
  const ec = evicted.points.confidence;
2819
2859
  for (let i = 0; i < ec.length; i += 1) this.globalConfSum -= ec[i];
@@ -2898,6 +2938,9 @@ var _HoloMapRuntimeImpl = class _HoloMapRuntimeImpl {
2898
2938
  let centroidY = 0;
2899
2939
  let centroidZ = 0;
2900
2940
  let confidenceSum = 0;
2941
+ let framePrincipalMomentXX = 0;
2942
+ let framePrincipalMomentZZ = 0;
2943
+ let framePrincipalMomentXZ = 0;
2901
2944
  for (let t = 0; t < numPoints; t += 1) {
2902
2945
  const { meanColor, centerUv, texture, latent, rawDepthSignal } = encodedTiles[t];
2903
2946
  const [latentX, latentY, latentZ] = latent;
@@ -2956,6 +2999,9 @@ var _HoloMapRuntimeImpl = class _HoloMapRuntimeImpl {
2956
2999
  centroidX += px;
2957
3000
  centroidY += py;
2958
3001
  centroidZ += pz;
3002
+ framePrincipalMomentXX += px * px;
3003
+ framePrincipalMomentZZ += pz * pz;
3004
+ framePrincipalMomentXZ += px * pz;
2959
3005
  }
2960
3006
  const inv = 1 / Math.max(1, numPoints);
2961
3007
  const poseX = centroidX * inv;
@@ -3037,6 +3083,9 @@ var _HoloMapRuntimeImpl = class _HoloMapRuntimeImpl {
3037
3083
  this.globalPosSum[1] += centroidY;
3038
3084
  this.globalPosSum[2] += centroidZ;
3039
3085
  this.globalConfSum += confidenceSum;
3086
+ this.globalPrincipalMomentXX += framePrincipalMomentXX;
3087
+ this.globalPrincipalMomentZZ += framePrincipalMomentZZ;
3088
+ this.globalPrincipalMomentXZ += framePrincipalMomentXZ;
3040
3089
  const totalPoints = this.totalPointCount + numPoints;
3041
3090
  const ginv = 1 / Math.max(1, totalPoints);
3042
3091
  const anchorCenter = [
@@ -3049,8 +3098,11 @@ var _HoloMapRuntimeImpl = class _HoloMapRuntimeImpl {
3049
3098
  const extentX = b.max[0] - b.min[0];
3050
3099
  const extentY = b.max[1] - b.min[1];
3051
3100
  const extentZ = b.max[2] - b.min[2];
3052
- const anchorRotation = _HoloMapRuntimeImpl.estimatePrincipalAxisRotation(
3053
- _HoloMapRuntimeImpl.retainedPositionChunks(this.steps, positions),
3101
+ const anchorRotation = _HoloMapRuntimeImpl.estimatePrincipalAxisRotationFromMoments(
3102
+ this.globalPrincipalMomentXX,
3103
+ this.globalPrincipalMomentZZ,
3104
+ this.globalPrincipalMomentXZ,
3105
+ totalPoints,
3054
3106
  anchorCenter
3055
3107
  );
3056
3108
  const anchorDescriptor = new Float32Array([extentX, extentY, extentZ, globalMeanConfidence]);
@@ -3066,7 +3118,8 @@ var _HoloMapRuntimeImpl = class _HoloMapRuntimeImpl {
3066
3118
  )
3067
3119
  });
3068
3120
  const trajectoryKeyframes = _HoloMapRuntimeImpl.cloneTrajectoryKeyframes(
3069
- this.trajectoryKeyframes
3121
+ this.trajectoryKeyframes,
3122
+ _HoloMapRuntimeImpl.TRAJECTORY_STEP_SNAPSHOT_CAP
3070
3123
  );
3071
3124
  const step = {
3072
3125
  frame,
@@ -3084,7 +3137,7 @@ var _HoloMapRuntimeImpl = class _HoloMapRuntimeImpl {
3084
3137
  revision: frame.index + 1
3085
3138
  },
3086
3139
  anchor: {
3087
- anchorFrameIndex: trajectoryKeyframes[0]?.frameIndex ?? frame.index,
3140
+ anchorFrameIndex: this.trajectoryKeyframes[0]?.frameIndex ?? frame.index,
3088
3141
  anchorPose: {
3089
3142
  position: anchorCenter,
3090
3143
  rotation: anchorRotation,
@@ -3206,6 +3259,9 @@ var _HoloMapRuntimeImpl = class _HoloMapRuntimeImpl {
3206
3259
  this.trajectoryKeyframes.length = 0;
3207
3260
  this.globalPosSum = [0, 0, 0];
3208
3261
  this.globalConfSum = 0;
3262
+ this.globalPrincipalMomentXX = 0;
3263
+ this.globalPrincipalMomentZZ = 0;
3264
+ this.globalPrincipalMomentXZ = 0;
3209
3265
  this.boundsValid = false;
3210
3266
  this.lastAcceptedFrameTimestampMs = null;
3211
3267
  this.perfMetrics = {
@@ -3221,6 +3277,7 @@ _HoloMapRuntimeImpl.LOOP_CLOSURE_MIN_GAP = 3;
3221
3277
  _HoloMapRuntimeImpl.LOOP_CLOSURE_RADIUS = 0.05;
3222
3278
  _HoloMapRuntimeImpl.POSE_HISTORY_CAP = 512;
3223
3279
  _HoloMapRuntimeImpl.TRAJECTORY_KEYFRAME_CAP = 512;
3280
+ _HoloMapRuntimeImpl.TRAJECTORY_STEP_SNAPSHOT_CAP = 64;
3224
3281
  /** Maps normalized measured depth [0=near,1=far] to a point Z range matching
3225
3282
  * the monocular estimate's spread (±~0.17), so sensor and estimate paths
3226
3283
  * produce geometry in the same coordinate scale. */
@@ -3247,5 +3304,5 @@ function createHoloMapRuntime(_config) {
3247
3304
  }
3248
3305
 
3249
3306
  export { BUILD_TIMESTAMP, GIT_COMMIT_SHA, HOLOMAP_DEFAULTS, HOLOMAP_DENSE_PROOF_DEFAULTS, HOLOSCRIPT_VERSION, anchorReconstructionManifest, assertWeightCid, computeReconstructionManifestDigest, createHoloMapMicroEncoder, createHoloMapRunId, createHoloMapRuntime, createPagedKVCache, deserializeMicroWeights, frameToMicroImage, getCachedWeightBlob, getVersionInfo, getVersionString, loadHoloMapWeightBlob, logHoloMapEvent, mergeAnchoredProvenance, normalizeWeightCidDigest, putCachedWeightBlob, resetHoloMapTelemetryForTests, runHoloMapMicroEncoderCpu, selfAttestReconstructionManifest, serializeMicroWeights, stripAnchoredProvenance, tryCreateHoloMapEncoderDevice };
3250
- //# sourceMappingURL=chunk-Z4IUBW46.js.map
3251
- //# sourceMappingURL=chunk-Z4IUBW46.js.map
3307
+ //# sourceMappingURL=chunk-47XZ62KM.js.map
3308
+ //# sourceMappingURL=chunk-47XZ62KM.js.map
@@ -6,9 +6,9 @@ var chunkQQFB4RT2_cjs = require('./chunk-QQFB4RT2.cjs');
6
6
  var chunkENZCIQZC_cjs = require('./chunk-ENZCIQZC.cjs');
7
7
  var chunkV6GXFSK7_cjs = require('./chunk-V6GXFSK7.cjs');
8
8
  var chunkTZCFKZ6Z_cjs = require('./chunk-TZCFKZ6Z.cjs');
9
- var chunkQEDMOGF3_cjs = require('./chunk-QEDMOGF3.cjs');
9
+ var chunkP65OIMJT_cjs = require('./chunk-P65OIMJT.cjs');
10
10
  var chunkVHORVGCG_cjs = require('./chunk-VHORVGCG.cjs');
11
- var chunkZK7KX5CD_cjs = require('./chunk-ZK7KX5CD.cjs');
11
+ var chunkSE2Y5BSL_cjs = require('./chunk-SE2Y5BSL.cjs');
12
12
  var chunkHCX4SMFK_cjs = require('./chunk-HCX4SMFK.cjs');
13
13
 
14
14
  // src/compiler/SceneIRCompiler.ts
@@ -589,10 +589,10 @@ function registerAllPresets() {
589
589
  registerAllPresets();
590
590
 
591
591
  // src/compiler/SceneIRCompiler.ts
592
- chunkQEDMOGF3_cjs.init_DomainBlockCompilerMixin();
592
+ chunkP65OIMJT_cjs.init_DomainBlockCompilerMixin();
593
593
  chunkTZCFKZ6Z_cjs.init_PlatformConditionalCompilerMixin();
594
- chunkZK7KX5CD_cjs.init_AgentRBAC();
595
- chunkZK7KX5CD_cjs.init_CompilerBase();
594
+ chunkSE2Y5BSL_cjs.init_AgentRBAC();
595
+ chunkSE2Y5BSL_cjs.init_CompilerBase();
596
596
 
597
597
  // src/animation/stagger.ts
598
598
  function staggerOffsets(count, step, from = 0) {
@@ -2442,7 +2442,7 @@ var QUALITY_TIER_SCALES = {
2442
2442
  var SceneIRCompiler = class {
2443
2443
  constructor(options = {}) {
2444
2444
  // ─── RBAC Enforcement ─────────────────────────────────────────────────
2445
- this.rbac = chunkZK7KX5CD_cjs.getRBAC();
2445
+ this.rbac = chunkSE2Y5BSL_cjs.getRBAC();
2446
2446
  this.compilerName = options.compilerName ?? "SceneIRCompiler";
2447
2447
  this.qualityTier = options.qualityTier ?? "high";
2448
2448
  this.tierScales = QUALITY_TIER_SCALES[this.qualityTier];
@@ -2474,7 +2474,7 @@ var SceneIRCompiler = class {
2474
2474
  expectedWorkflowStep: "generate_assembly" /* GENERATE_ASSEMBLY */
2475
2475
  });
2476
2476
  if (!astDecision.allowed) {
2477
- throw new chunkZK7KX5CD_cjs.UnauthorizedCompilerAccessError(astDecision, "AST access", this.compilerName);
2477
+ throw new chunkSE2Y5BSL_cjs.UnauthorizedCompilerAccessError(astDecision, "AST access", this.compilerName);
2478
2478
  }
2479
2479
  const codeDecision = this.rbac.checkAccess({
2480
2480
  token: agentToken,
@@ -2483,7 +2483,7 @@ var SceneIRCompiler = class {
2483
2483
  expectedWorkflowStep: "generate_assembly" /* GENERATE_ASSEMBLY */
2484
2484
  });
2485
2485
  if (!codeDecision.allowed) {
2486
- throw new chunkZK7KX5CD_cjs.UnauthorizedCompilerAccessError(codeDecision, "code generation", this.compilerName);
2486
+ throw new chunkSE2Y5BSL_cjs.UnauthorizedCompilerAccessError(codeDecision, "code generation", this.compilerName);
2487
2487
  }
2488
2488
  if (outputPath) {
2489
2489
  const outputDecision = this.rbac.checkAccess({
@@ -2494,7 +2494,7 @@ var SceneIRCompiler = class {
2494
2494
  expectedWorkflowStep: "serialize" /* SERIALIZE */
2495
2495
  });
2496
2496
  if (!outputDecision.allowed) {
2497
- throw new chunkZK7KX5CD_cjs.UnauthorizedCompilerAccessError(
2497
+ throw new chunkSE2Y5BSL_cjs.UnauthorizedCompilerAccessError(
2498
2498
  outputDecision,
2499
2499
  `output write to '${outputPath}'`,
2500
2500
  this.compilerName
@@ -2644,15 +2644,15 @@ var SceneIRCompiler = class {
2644
2644
  this.injectDefaultLighting(root);
2645
2645
  const domainBlocks = ast.domainBlocks ?? [];
2646
2646
  if (domainBlocks.length > 0) {
2647
- const compiled = chunkQEDMOGF3_cjs.compileDomainBlocks(
2647
+ const compiled = chunkP65OIMJT_cjs.compileDomainBlocks(
2648
2648
  domainBlocks,
2649
2649
  {
2650
2650
  material: (block) => {
2651
- const mat = chunkQEDMOGF3_cjs.compileMaterialBlock(block);
2651
+ const mat = chunkP65OIMJT_cjs.compileMaterialBlock(block);
2652
2652
  return {
2653
2653
  type: "DomainBlockOutput",
2654
2654
  props: {
2655
- __raw: chunkQEDMOGF3_cjs.materialToR3F(mat, this.tierScales),
2655
+ __raw: chunkP65OIMJT_cjs.materialToR3F(mat, this.tierScales),
2656
2656
  __domain: "material",
2657
2657
  __name: mat.name
2658
2658
  },
@@ -2660,11 +2660,11 @@ var SceneIRCompiler = class {
2660
2660
  };
2661
2661
  },
2662
2662
  physics: (block) => {
2663
- const phys = chunkQEDMOGF3_cjs.compilePhysicsBlock(block);
2663
+ const phys = chunkP65OIMJT_cjs.compilePhysicsBlock(block);
2664
2664
  return {
2665
2665
  type: "DomainBlockOutput",
2666
2666
  props: {
2667
- __raw: chunkQEDMOGF3_cjs.physicsToR3F(phys),
2667
+ __raw: chunkP65OIMJT_cjs.physicsToR3F(phys),
2668
2668
  __domain: "physics",
2669
2669
  __name: phys.name || phys.keyword
2670
2670
  },
@@ -2672,11 +2672,11 @@ var SceneIRCompiler = class {
2672
2672
  };
2673
2673
  },
2674
2674
  vfx: (block) => {
2675
- const ps = chunkQEDMOGF3_cjs.compileParticleBlock(block);
2675
+ const ps = chunkP65OIMJT_cjs.compileParticleBlock(block);
2676
2676
  return {
2677
2677
  type: "DomainBlockOutput",
2678
2678
  props: {
2679
- __raw: chunkQEDMOGF3_cjs.particlesToR3F(ps, this.tierScales),
2679
+ __raw: chunkP65OIMJT_cjs.particlesToR3F(ps, this.tierScales),
2680
2680
  __domain: "vfx",
2681
2681
  __name: ps.name
2682
2682
  },
@@ -2684,11 +2684,11 @@ var SceneIRCompiler = class {
2684
2684
  };
2685
2685
  },
2686
2686
  postfx: (block) => {
2687
- const pp = chunkQEDMOGF3_cjs.compilePostProcessingBlock(block);
2687
+ const pp = chunkP65OIMJT_cjs.compilePostProcessingBlock(block);
2688
2688
  return {
2689
2689
  type: "DomainBlockOutput",
2690
2690
  props: {
2691
- __raw: chunkQEDMOGF3_cjs.postProcessingToR3F(pp),
2691
+ __raw: chunkP65OIMJT_cjs.postProcessingToR3F(pp),
2692
2692
  __domain: "postfx",
2693
2693
  __name: pp.name || "PostProcessing"
2694
2694
  },
@@ -2696,19 +2696,19 @@ var SceneIRCompiler = class {
2696
2696
  };
2697
2697
  },
2698
2698
  audio: (block) => {
2699
- const audio = chunkQEDMOGF3_cjs.compileAudioSourceBlock(block);
2699
+ const audio = chunkP65OIMJT_cjs.compileAudioSourceBlock(block);
2700
2700
  return {
2701
2701
  type: "DomainBlockOutput",
2702
- props: { __raw: chunkQEDMOGF3_cjs.audioSourceToR3F(audio), __domain: "audio", __name: audio.name },
2702
+ props: { __raw: chunkP65OIMJT_cjs.audioSourceToR3F(audio), __domain: "audio", __name: audio.name },
2703
2703
  children: []
2704
2704
  };
2705
2705
  },
2706
2706
  weather: (block) => {
2707
- const weather = chunkQEDMOGF3_cjs.compileWeatherBlock(block);
2707
+ const weather = chunkP65OIMJT_cjs.compileWeatherBlock(block);
2708
2708
  return {
2709
2709
  type: "DomainBlockOutput",
2710
2710
  props: {
2711
- __raw: chunkQEDMOGF3_cjs.weatherToR3F(weather),
2711
+ __raw: chunkP65OIMJT_cjs.weatherToR3F(weather),
2712
2712
  __domain: "weather",
2713
2713
  __name: weather.name || "Weather"
2714
2714
  },
@@ -2716,11 +2716,11 @@ var SceneIRCompiler = class {
2716
2716
  };
2717
2717
  },
2718
2718
  simulation: (block) => {
2719
- const sim = chunkQEDMOGF3_cjs.compileSimulationBlock(block);
2719
+ const sim = chunkP65OIMJT_cjs.compileSimulationBlock(block);
2720
2720
  return {
2721
2721
  type: "DomainBlockOutput",
2722
2722
  props: {
2723
- __raw: chunkQEDMOGF3_cjs.simulationToR3F(sim),
2723
+ __raw: chunkP65OIMJT_cjs.simulationToR3F(sim),
2724
2724
  __domain: "simulation",
2725
2725
  __name: sim.name || "Simulation"
2726
2726
  },
@@ -2792,7 +2792,7 @@ var SceneIRCompiler = class {
2792
2792
  const group = this.createNode(
2793
2793
  "group",
2794
2794
  {},
2795
- world.name ? chunkZK7KX5CD_cjs.escapeStringValue(world.name, "JSX") : void 0
2795
+ world.name ? chunkSE2Y5BSL_cjs.escapeStringValue(world.name, "JSX") : void 0
2796
2796
  );
2797
2797
  group.children = [...nodes, ...childNodes];
2798
2798
  return [group];
@@ -2831,7 +2831,7 @@ var SceneIRCompiler = class {
2831
2831
  * - Placement is flat (y=0); slope/terrain-conforming placement is out of scope.
2832
2832
  */
2833
2833
  compileProceduralScatterNode(block) {
2834
- const proc = chunkQEDMOGF3_cjs.compileProceduralBlock(block);
2834
+ const proc = chunkP65OIMJT_cjs.compileProceduralBlock(block);
2835
2835
  const props = block.properties ?? {};
2836
2836
  let scatterNode;
2837
2837
  if (Array.isArray(props.nodes)) {
@@ -3061,7 +3061,7 @@ var SceneIRCompiler = class {
3061
3061
  const r3fNode = sceneIRNodePool.acquire();
3062
3062
  r3fNode.type = type;
3063
3063
  const rawId = node.id || node.name;
3064
- r3fNode.id = rawId ? chunkZK7KX5CD_cjs.escapeStringValue(rawId, "JSX") : void 0;
3064
+ r3fNode.id = rawId ? chunkSE2Y5BSL_cjs.escapeStringValue(rawId, "JSX") : void 0;
3065
3065
  r3fNode.props = this.compileProperties(node, rawProps);
3066
3066
  r3fNode.children = [];
3067
3067
  r3fNode.traits = /* @__PURE__ */ new Map();
@@ -3100,7 +3100,7 @@ var SceneIRCompiler = class {
3100
3100
  }
3101
3101
  const root = sceneIRNodePool.acquire();
3102
3102
  root.type = "group";
3103
- root.id = composition.name ? chunkZK7KX5CD_cjs.escapeStringValue(composition.name, "JSX") : void 0;
3103
+ root.id = composition.name ? chunkSE2Y5BSL_cjs.escapeStringValue(composition.name, "JSX") : void 0;
3104
3104
  root.props = {};
3105
3105
  root.children = [];
3106
3106
  root.traits = /* @__PURE__ */ new Map();
@@ -3265,7 +3265,7 @@ var SceneIRCompiler = class {
3265
3265
  }
3266
3266
  const r3fNode = sceneIRNodePool.acquire();
3267
3267
  r3fNode.type = type;
3268
- r3fNode.id = light.name ? chunkZK7KX5CD_cjs.escapeStringValue(light.name, "JSX") : void 0;
3268
+ r3fNode.id = light.name ? chunkSE2Y5BSL_cjs.escapeStringValue(light.name, "JSX") : void 0;
3269
3269
  r3fNode.props = props;
3270
3270
  r3fNode.children = [];
3271
3271
  r3fNode.traits = /* @__PURE__ */ new Map();
@@ -4174,7 +4174,7 @@ var SceneIRCompiler = class {
4174
4174
  entries.push(this.createNode("TimelineEntry", entryProps));
4175
4175
  }
4176
4176
  }
4177
- const safeName = timeline.name ? chunkZK7KX5CD_cjs.escapeStringValue(timeline.name, "JSX") : void 0;
4177
+ const safeName = timeline.name ? chunkSE2Y5BSL_cjs.escapeStringValue(timeline.name, "JSX") : void 0;
4178
4178
  const timelineNode = this.createNode(
4179
4179
  "Timeline",
4180
4180
  { autoplay: timeline.autoplay, loop: timeline.loop },
@@ -4212,7 +4212,7 @@ var SceneIRCompiler = class {
4212
4212
  }
4213
4213
  }
4214
4214
  const props = node.properties || {};
4215
- const safeName = node.name ? chunkZK7KX5CD_cjs.escapeStringValue(node.name, "JSX") : void 0;
4215
+ const safeName = node.name ? chunkSE2Y5BSL_cjs.escapeStringValue(node.name, "JSX") : void 0;
4216
4216
  const timelineNode = this.createNode(
4217
4217
  "Timeline",
4218
4218
  { autoplay: props.autoplay, loop: props.loop },
@@ -4245,7 +4245,7 @@ var SceneIRCompiler = class {
4245
4245
  }
4246
4246
  }
4247
4247
  }
4248
- const safeName = audio.name ? chunkZK7KX5CD_cjs.escapeStringValue(audio.name, "JSX") : void 0;
4248
+ const safeName = audio.name ? chunkSE2Y5BSL_cjs.escapeStringValue(audio.name, "JSX") : void 0;
4249
4249
  return this.createNode("Audio", props, safeName);
4250
4250
  }
4251
4251
  compileZoneBlock(zone) {
@@ -4264,7 +4264,7 @@ var SceneIRCompiler = class {
4264
4264
  })
4265
4265
  );
4266
4266
  }
4267
- const safeName = zone.name ? chunkZK7KX5CD_cjs.escapeStringValue(zone.name, "JSX") : void 0;
4267
+ const safeName = zone.name ? chunkSE2Y5BSL_cjs.escapeStringValue(zone.name, "JSX") : void 0;
4268
4268
  return this.createNode("Zone", props, safeName);
4269
4269
  }
4270
4270
  compileUIBlock(ui) {
@@ -4281,7 +4281,7 @@ var SceneIRCompiler = class {
4281
4281
  }
4282
4282
  }
4283
4283
  }
4284
- const safeElName = el.name ? chunkZK7KX5CD_cjs.escapeStringValue(el.name, "JSX") : void 0;
4284
+ const safeElName = el.name ? chunkSE2Y5BSL_cjs.escapeStringValue(el.name, "JSX") : void 0;
4285
4285
  children.push(this.createNode("UIElement", elProps, safeElName));
4286
4286
  }
4287
4287
  }
@@ -4296,7 +4296,7 @@ var SceneIRCompiler = class {
4296
4296
  props[prop.key] = prop.value;
4297
4297
  }
4298
4298
  }
4299
- const safeName = transition.name ? chunkZK7KX5CD_cjs.escapeStringValue(transition.name, "JSX") : void 0;
4299
+ const safeName = transition.name ? chunkSE2Y5BSL_cjs.escapeStringValue(transition.name, "JSX") : void 0;
4300
4300
  return this.createNode("Transition", props, safeName);
4301
4301
  }
4302
4302
  compileConditionalBlock(cond, templateMap) {
@@ -4720,5 +4720,5 @@ exports.QUALITY_TIER_SCALES = QUALITY_TIER_SCALES;
4720
4720
  exports.SceneIRCompiler = SceneIRCompiler;
4721
4721
  exports.UI_COMPONENT_PRESETS = UI_COMPONENT_PRESETS;
4722
4722
  exports.registerAllPresets = registerAllPresets;
4723
- //# sourceMappingURL=chunk-GGR7QUKK.cjs.map
4724
- //# sourceMappingURL=chunk-GGR7QUKK.cjs.map
4723
+ //# sourceMappingURL=chunk-4CRMVEON.cjs.map
4724
+ //# sourceMappingURL=chunk-4CRMVEON.cjs.map
@@ -1,5 +1,5 @@
1
1
  import { init_jsonLogic, matchesRule, evaluateJsonLogic } from './chunk-JBQXZIWB.js';
2
- import { init_CompilerBase, CompilerBase } from './chunk-DUG3OQAS.js';
2
+ import { init_CompilerBase, CompilerBase } from './chunk-YDSNDCV3.js';
3
3
  import { __export, __esm } from './chunk-W4GABFCR.js';
4
4
  import { createHash } from 'crypto';
5
5
  import { ANSCapabilityPath } from '@holoscript/core-types/ans';
@@ -277,5 +277,5 @@ var init_DaimonSeedCompiler = __esm({
277
277
  });
278
278
 
279
279
  export { DaimonSeedCompiler, DaimonSeedCompiler_default, DaimonSeedCompiler_exports, computeExportFidelity, createDaimonSeedCompiler, init_DaimonSeedCompiler, runHysteresisExp2 };
280
- //# sourceMappingURL=chunk-QBY7LRN2.js.map
281
- //# sourceMappingURL=chunk-QBY7LRN2.js.map
280
+ //# sourceMappingURL=chunk-4NEPHK2K.js.map
281
+ //# sourceMappingURL=chunk-4NEPHK2K.js.map