@forgeax/view 0.2.1-beta-20260924075842

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 (585) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +742 -0
  3. package/dist/modules/backend.mjs +54 -0
  4. package/dist/modules/backend.mjs.map +7 -0
  5. package/dist/modules/browser.mjs +180 -0
  6. package/dist/modules/browser.mjs.map +7 -0
  7. package/dist/modules/carrier-contract.mjs +38 -0
  8. package/dist/modules/carrier-contract.mjs.map +7 -0
  9. package/dist/modules/carrier.mjs +13 -0
  10. package/dist/modules/carrier.mjs.map +7 -0
  11. package/dist/modules/chunks/chunk-2ASWB6IX.mjs +225 -0
  12. package/dist/modules/chunks/chunk-2ASWB6IX.mjs.map +7 -0
  13. package/dist/modules/chunks/chunk-2IJKOG2F.mjs +801 -0
  14. package/dist/modules/chunks/chunk-2IJKOG2F.mjs.map +7 -0
  15. package/dist/modules/chunks/chunk-2K3BBJ5S.mjs +9 -0
  16. package/dist/modules/chunks/chunk-2K3BBJ5S.mjs.map +7 -0
  17. package/dist/modules/chunks/chunk-32GD5LL6.mjs +482 -0
  18. package/dist/modules/chunks/chunk-32GD5LL6.mjs.map +7 -0
  19. package/dist/modules/chunks/chunk-3B4KFAEC.mjs +10 -0
  20. package/dist/modules/chunks/chunk-3B4KFAEC.mjs.map +7 -0
  21. package/dist/modules/chunks/chunk-46O5WX43.mjs +25 -0
  22. package/dist/modules/chunks/chunk-46O5WX43.mjs.map +7 -0
  23. package/dist/modules/chunks/chunk-47J5JXAB.mjs +237 -0
  24. package/dist/modules/chunks/chunk-47J5JXAB.mjs.map +7 -0
  25. package/dist/modules/chunks/chunk-4BXQOUDQ.mjs +17 -0
  26. package/dist/modules/chunks/chunk-4BXQOUDQ.mjs.map +7 -0
  27. package/dist/modules/chunks/chunk-4GQWYU2V.mjs +126 -0
  28. package/dist/modules/chunks/chunk-4GQWYU2V.mjs.map +7 -0
  29. package/dist/modules/chunks/chunk-4N5X2PRQ.mjs +48 -0
  30. package/dist/modules/chunks/chunk-4N5X2PRQ.mjs.map +7 -0
  31. package/dist/modules/chunks/chunk-4WXD2KYX.mjs +56 -0
  32. package/dist/modules/chunks/chunk-4WXD2KYX.mjs.map +7 -0
  33. package/dist/modules/chunks/chunk-6ZWWVAZK.mjs +468 -0
  34. package/dist/modules/chunks/chunk-6ZWWVAZK.mjs.map +7 -0
  35. package/dist/modules/chunks/chunk-73UZNRHN.mjs +296 -0
  36. package/dist/modules/chunks/chunk-73UZNRHN.mjs.map +7 -0
  37. package/dist/modules/chunks/chunk-7ITLCRND.mjs +10 -0
  38. package/dist/modules/chunks/chunk-7ITLCRND.mjs.map +7 -0
  39. package/dist/modules/chunks/chunk-7TGVWKH7.mjs +59 -0
  40. package/dist/modules/chunks/chunk-7TGVWKH7.mjs.map +7 -0
  41. package/dist/modules/chunks/chunk-7URFF53W.mjs +42 -0
  42. package/dist/modules/chunks/chunk-7URFF53W.mjs.map +7 -0
  43. package/dist/modules/chunks/chunk-7YSDRIFN.mjs +14 -0
  44. package/dist/modules/chunks/chunk-7YSDRIFN.mjs.map +7 -0
  45. package/dist/modules/chunks/chunk-AAFVCQPK.mjs +52 -0
  46. package/dist/modules/chunks/chunk-AAFVCQPK.mjs.map +7 -0
  47. package/dist/modules/chunks/chunk-AEK7ZESQ.mjs +18 -0
  48. package/dist/modules/chunks/chunk-AEK7ZESQ.mjs.map +7 -0
  49. package/dist/modules/chunks/chunk-AL6ZWIEU.mjs +42 -0
  50. package/dist/modules/chunks/chunk-AL6ZWIEU.mjs.map +7 -0
  51. package/dist/modules/chunks/chunk-ALT7XVMQ.mjs +73 -0
  52. package/dist/modules/chunks/chunk-ALT7XVMQ.mjs.map +7 -0
  53. package/dist/modules/chunks/chunk-ASI2HBE6.mjs +116 -0
  54. package/dist/modules/chunks/chunk-ASI2HBE6.mjs.map +7 -0
  55. package/dist/modules/chunks/chunk-ATWGCH7I.mjs +174 -0
  56. package/dist/modules/chunks/chunk-ATWGCH7I.mjs.map +7 -0
  57. package/dist/modules/chunks/chunk-C45U6IIY.mjs +692 -0
  58. package/dist/modules/chunks/chunk-C45U6IIY.mjs.map +7 -0
  59. package/dist/modules/chunks/chunk-C7R3YRA7.mjs +98 -0
  60. package/dist/modules/chunks/chunk-C7R3YRA7.mjs.map +7 -0
  61. package/dist/modules/chunks/chunk-CRMICXKN.mjs +87 -0
  62. package/dist/modules/chunks/chunk-CRMICXKN.mjs.map +7 -0
  63. package/dist/modules/chunks/chunk-CUH2G6UF.mjs +81 -0
  64. package/dist/modules/chunks/chunk-CUH2G6UF.mjs.map +7 -0
  65. package/dist/modules/chunks/chunk-D7GWRZLL.mjs +77 -0
  66. package/dist/modules/chunks/chunk-D7GWRZLL.mjs.map +7 -0
  67. package/dist/modules/chunks/chunk-DBWUIBE3.mjs +10 -0
  68. package/dist/modules/chunks/chunk-DBWUIBE3.mjs.map +7 -0
  69. package/dist/modules/chunks/chunk-DQWVWWUU.mjs +77 -0
  70. package/dist/modules/chunks/chunk-DQWVWWUU.mjs.map +7 -0
  71. package/dist/modules/chunks/chunk-DZZ2WFEU.mjs +122 -0
  72. package/dist/modules/chunks/chunk-DZZ2WFEU.mjs.map +7 -0
  73. package/dist/modules/chunks/chunk-E4UIAN26.mjs +58 -0
  74. package/dist/modules/chunks/chunk-E4UIAN26.mjs.map +7 -0
  75. package/dist/modules/chunks/chunk-EJGBVKFE.mjs +77 -0
  76. package/dist/modules/chunks/chunk-EJGBVKFE.mjs.map +7 -0
  77. package/dist/modules/chunks/chunk-EPSTTHWV.mjs +173 -0
  78. package/dist/modules/chunks/chunk-EPSTTHWV.mjs.map +7 -0
  79. package/dist/modules/chunks/chunk-ER7T6QJ3.mjs +64 -0
  80. package/dist/modules/chunks/chunk-ER7T6QJ3.mjs.map +7 -0
  81. package/dist/modules/chunks/chunk-FD4BAJ6K.mjs +389 -0
  82. package/dist/modules/chunks/chunk-FD4BAJ6K.mjs.map +7 -0
  83. package/dist/modules/chunks/chunk-FJM6WWIY.mjs +80 -0
  84. package/dist/modules/chunks/chunk-FJM6WWIY.mjs.map +7 -0
  85. package/dist/modules/chunks/chunk-FKCQYDLX.mjs +162 -0
  86. package/dist/modules/chunks/chunk-FKCQYDLX.mjs.map +7 -0
  87. package/dist/modules/chunks/chunk-FLGC65SR.mjs +10 -0
  88. package/dist/modules/chunks/chunk-FLGC65SR.mjs.map +7 -0
  89. package/dist/modules/chunks/chunk-FMCACPX5.mjs +289 -0
  90. package/dist/modules/chunks/chunk-FMCACPX5.mjs.map +7 -0
  91. package/dist/modules/chunks/chunk-FOBRLUQV.mjs +51 -0
  92. package/dist/modules/chunks/chunk-FOBRLUQV.mjs.map +7 -0
  93. package/dist/modules/chunks/chunk-FV3DSKZB.mjs +33 -0
  94. package/dist/modules/chunks/chunk-FV3DSKZB.mjs.map +7 -0
  95. package/dist/modules/chunks/chunk-G7BAFAGO.mjs +98 -0
  96. package/dist/modules/chunks/chunk-G7BAFAGO.mjs.map +7 -0
  97. package/dist/modules/chunks/chunk-GQBZMCTK.mjs +145 -0
  98. package/dist/modules/chunks/chunk-GQBZMCTK.mjs.map +7 -0
  99. package/dist/modules/chunks/chunk-GYWIY7AL.mjs +131 -0
  100. package/dist/modules/chunks/chunk-GYWIY7AL.mjs.map +7 -0
  101. package/dist/modules/chunks/chunk-H3KNBALD.mjs +256 -0
  102. package/dist/modules/chunks/chunk-H3KNBALD.mjs.map +7 -0
  103. package/dist/modules/chunks/chunk-H3M22JDL.mjs +144 -0
  104. package/dist/modules/chunks/chunk-H3M22JDL.mjs.map +7 -0
  105. package/dist/modules/chunks/chunk-HES3DNTM.mjs +40 -0
  106. package/dist/modules/chunks/chunk-HES3DNTM.mjs.map +7 -0
  107. package/dist/modules/chunks/chunk-I5BFP7SS.mjs +2392 -0
  108. package/dist/modules/chunks/chunk-I5BFP7SS.mjs.map +7 -0
  109. package/dist/modules/chunks/chunk-IGRMZYRD.mjs +15 -0
  110. package/dist/modules/chunks/chunk-IGRMZYRD.mjs.map +7 -0
  111. package/dist/modules/chunks/chunk-IKNGC766.mjs +321 -0
  112. package/dist/modules/chunks/chunk-IKNGC766.mjs.map +7 -0
  113. package/dist/modules/chunks/chunk-IVHNYKZB.mjs +35 -0
  114. package/dist/modules/chunks/chunk-IVHNYKZB.mjs.map +7 -0
  115. package/dist/modules/chunks/chunk-JHOURMYW.mjs +101 -0
  116. package/dist/modules/chunks/chunk-JHOURMYW.mjs.map +7 -0
  117. package/dist/modules/chunks/chunk-JURXMRFA.mjs +282 -0
  118. package/dist/modules/chunks/chunk-JURXMRFA.mjs.map +7 -0
  119. package/dist/modules/chunks/chunk-JWZIREC3.mjs +18 -0
  120. package/dist/modules/chunks/chunk-JWZIREC3.mjs.map +7 -0
  121. package/dist/modules/chunks/chunk-KHRTIZ56.mjs +1400 -0
  122. package/dist/modules/chunks/chunk-KHRTIZ56.mjs.map +7 -0
  123. package/dist/modules/chunks/chunk-KLJZZ23J.mjs +102 -0
  124. package/dist/modules/chunks/chunk-KLJZZ23J.mjs.map +7 -0
  125. package/dist/modules/chunks/chunk-KNBAYU5I.mjs +49 -0
  126. package/dist/modules/chunks/chunk-KNBAYU5I.mjs.map +7 -0
  127. package/dist/modules/chunks/chunk-KSZNCFU4.mjs +125 -0
  128. package/dist/modules/chunks/chunk-KSZNCFU4.mjs.map +7 -0
  129. package/dist/modules/chunks/chunk-L45W6KM6.mjs +158 -0
  130. package/dist/modules/chunks/chunk-L45W6KM6.mjs.map +7 -0
  131. package/dist/modules/chunks/chunk-LERMYZRC.mjs +239 -0
  132. package/dist/modules/chunks/chunk-LERMYZRC.mjs.map +7 -0
  133. package/dist/modules/chunks/chunk-LKJCXYSJ.mjs +91 -0
  134. package/dist/modules/chunks/chunk-LKJCXYSJ.mjs.map +7 -0
  135. package/dist/modules/chunks/chunk-MBS3EICT.mjs +25 -0
  136. package/dist/modules/chunks/chunk-MBS3EICT.mjs.map +7 -0
  137. package/dist/modules/chunks/chunk-MUOQZPVH.mjs +609 -0
  138. package/dist/modules/chunks/chunk-MUOQZPVH.mjs.map +7 -0
  139. package/dist/modules/chunks/chunk-MVEPGFSB.mjs +1 -0
  140. package/dist/modules/chunks/chunk-MVEPGFSB.mjs.map +7 -0
  141. package/dist/modules/chunks/chunk-NBJKLWJ5.mjs +42 -0
  142. package/dist/modules/chunks/chunk-NBJKLWJ5.mjs.map +7 -0
  143. package/dist/modules/chunks/chunk-NBLGKTEM.mjs +86 -0
  144. package/dist/modules/chunks/chunk-NBLGKTEM.mjs.map +7 -0
  145. package/dist/modules/chunks/chunk-NI7CS3I2.mjs +110 -0
  146. package/dist/modules/chunks/chunk-NI7CS3I2.mjs.map +7 -0
  147. package/dist/modules/chunks/chunk-NJH2OJFC.mjs +2113 -0
  148. package/dist/modules/chunks/chunk-NJH2OJFC.mjs.map +7 -0
  149. package/dist/modules/chunks/chunk-OBK4LIJB.mjs +20 -0
  150. package/dist/modules/chunks/chunk-OBK4LIJB.mjs.map +7 -0
  151. package/dist/modules/chunks/chunk-PEUT3FW7.mjs +1 -0
  152. package/dist/modules/chunks/chunk-PEUT3FW7.mjs.map +7 -0
  153. package/dist/modules/chunks/chunk-PRZOWPDN.mjs +66 -0
  154. package/dist/modules/chunks/chunk-PRZOWPDN.mjs.map +7 -0
  155. package/dist/modules/chunks/chunk-Q4RXBGQS.mjs +55 -0
  156. package/dist/modules/chunks/chunk-Q4RXBGQS.mjs.map +7 -0
  157. package/dist/modules/chunks/chunk-QBHBKOIL.mjs +55 -0
  158. package/dist/modules/chunks/chunk-QBHBKOIL.mjs.map +7 -0
  159. package/dist/modules/chunks/chunk-QD6CCRMG.mjs +20 -0
  160. package/dist/modules/chunks/chunk-QD6CCRMG.mjs.map +7 -0
  161. package/dist/modules/chunks/chunk-QF4V23GW.mjs +39 -0
  162. package/dist/modules/chunks/chunk-QF4V23GW.mjs.map +7 -0
  163. package/dist/modules/chunks/chunk-QK6W7MJO.mjs +42 -0
  164. package/dist/modules/chunks/chunk-QK6W7MJO.mjs.map +7 -0
  165. package/dist/modules/chunks/chunk-QL7V6DK7.mjs +34 -0
  166. package/dist/modules/chunks/chunk-QL7V6DK7.mjs.map +7 -0
  167. package/dist/modules/chunks/chunk-QLBQQKRI.mjs +25 -0
  168. package/dist/modules/chunks/chunk-QLBQQKRI.mjs.map +7 -0
  169. package/dist/modules/chunks/chunk-QLZQGZDC.mjs +418 -0
  170. package/dist/modules/chunks/chunk-QLZQGZDC.mjs.map +7 -0
  171. package/dist/modules/chunks/chunk-QSKQZGK7.mjs +1625 -0
  172. package/dist/modules/chunks/chunk-QSKQZGK7.mjs.map +7 -0
  173. package/dist/modules/chunks/chunk-QURKBAG4.mjs +25 -0
  174. package/dist/modules/chunks/chunk-QURKBAG4.mjs.map +7 -0
  175. package/dist/modules/chunks/chunk-R274XBEH.mjs +53 -0
  176. package/dist/modules/chunks/chunk-R274XBEH.mjs.map +7 -0
  177. package/dist/modules/chunks/chunk-R4I4JEY5.mjs +77 -0
  178. package/dist/modules/chunks/chunk-R4I4JEY5.mjs.map +7 -0
  179. package/dist/modules/chunks/chunk-RR6L6VVR.mjs +9 -0
  180. package/dist/modules/chunks/chunk-RR6L6VVR.mjs.map +7 -0
  181. package/dist/modules/chunks/chunk-RXF7SBBZ.mjs +125 -0
  182. package/dist/modules/chunks/chunk-RXF7SBBZ.mjs.map +7 -0
  183. package/dist/modules/chunks/chunk-SR66S6EJ.mjs +138 -0
  184. package/dist/modules/chunks/chunk-SR66S6EJ.mjs.map +7 -0
  185. package/dist/modules/chunks/chunk-SSQMQJ52.mjs +27 -0
  186. package/dist/modules/chunks/chunk-SSQMQJ52.mjs.map +7 -0
  187. package/dist/modules/chunks/chunk-TP26TASL.mjs +20 -0
  188. package/dist/modules/chunks/chunk-TP26TASL.mjs.map +7 -0
  189. package/dist/modules/chunks/chunk-TSAEK5P3.mjs +50 -0
  190. package/dist/modules/chunks/chunk-TSAEK5P3.mjs.map +7 -0
  191. package/dist/modules/chunks/chunk-UAY27HT3.mjs +68 -0
  192. package/dist/modules/chunks/chunk-UAY27HT3.mjs.map +7 -0
  193. package/dist/modules/chunks/chunk-UDLIWGWS.mjs +103 -0
  194. package/dist/modules/chunks/chunk-UDLIWGWS.mjs.map +7 -0
  195. package/dist/modules/chunks/chunk-UDVQHPWV.mjs +89 -0
  196. package/dist/modules/chunks/chunk-UDVQHPWV.mjs.map +7 -0
  197. package/dist/modules/chunks/chunk-UM23W3G7.mjs +237 -0
  198. package/dist/modules/chunks/chunk-UM23W3G7.mjs.map +7 -0
  199. package/dist/modules/chunks/chunk-VDZJWEAA.mjs +214 -0
  200. package/dist/modules/chunks/chunk-VDZJWEAA.mjs.map +7 -0
  201. package/dist/modules/chunks/chunk-VIGOJWSO.mjs +42 -0
  202. package/dist/modules/chunks/chunk-VIGOJWSO.mjs.map +7 -0
  203. package/dist/modules/chunks/chunk-VY3S5BWI.mjs +284 -0
  204. package/dist/modules/chunks/chunk-VY3S5BWI.mjs.map +7 -0
  205. package/dist/modules/chunks/chunk-VZXGRZYU.mjs +47 -0
  206. package/dist/modules/chunks/chunk-VZXGRZYU.mjs.map +7 -0
  207. package/dist/modules/chunks/chunk-W5DMQZB5.mjs +42 -0
  208. package/dist/modules/chunks/chunk-W5DMQZB5.mjs.map +7 -0
  209. package/dist/modules/chunks/chunk-WOMHSTVZ.mjs +918 -0
  210. package/dist/modules/chunks/chunk-WOMHSTVZ.mjs.map +7 -0
  211. package/dist/modules/chunks/chunk-XFQT7XCG.mjs +42 -0
  212. package/dist/modules/chunks/chunk-XFQT7XCG.mjs.map +7 -0
  213. package/dist/modules/chunks/chunk-XJZEVRYX.mjs +98 -0
  214. package/dist/modules/chunks/chunk-XJZEVRYX.mjs.map +7 -0
  215. package/dist/modules/chunks/chunk-XUYFV23R.mjs +317 -0
  216. package/dist/modules/chunks/chunk-XUYFV23R.mjs.map +7 -0
  217. package/dist/modules/chunks/chunk-Y5HXCPPQ.mjs +58 -0
  218. package/dist/modules/chunks/chunk-Y5HXCPPQ.mjs.map +7 -0
  219. package/dist/modules/chunks/chunk-YTHGRKGI.mjs +147 -0
  220. package/dist/modules/chunks/chunk-YTHGRKGI.mjs.map +7 -0
  221. package/dist/modules/chunks/chunk-YVQSDKAO.mjs +341 -0
  222. package/dist/modules/chunks/chunk-YVQSDKAO.mjs.map +7 -0
  223. package/dist/modules/chunks/chunk-YYXQDUVT.mjs +123 -0
  224. package/dist/modules/chunks/chunk-YYXQDUVT.mjs.map +7 -0
  225. package/dist/modules/chunks/chunk-ZFXZ2NUI.mjs +142 -0
  226. package/dist/modules/chunks/chunk-ZFXZ2NUI.mjs.map +7 -0
  227. package/dist/modules/chunks/chunk-ZLNWF4ET.mjs +9 -0
  228. package/dist/modules/chunks/chunk-ZLNWF4ET.mjs.map +7 -0
  229. package/dist/modules/chunks/chunk-ZLU5QW2O.mjs +9 -0
  230. package/dist/modules/chunks/chunk-ZLU5QW2O.mjs.map +7 -0
  231. package/dist/modules/chunks/chunk-ZNZPYE2V.mjs +28 -0
  232. package/dist/modules/chunks/chunk-ZNZPYE2V.mjs.map +7 -0
  233. package/dist/modules/chunks/core-564N45MO.mjs +7480 -0
  234. package/dist/modules/chunks/core-564N45MO.mjs.map +7 -0
  235. package/dist/modules/chunks/css-BKH4SVJG.mjs +8 -0
  236. package/dist/modules/chunks/css-BKH4SVJG.mjs.map +7 -0
  237. package/dist/modules/chunks/engine-javascript-PDVIGNGR.mjs +3241 -0
  238. package/dist/modules/chunks/engine-javascript-PDVIGNGR.mjs.map +7 -0
  239. package/dist/modules/chunks/github-dark-default-6HVTHEWF.mjs +8 -0
  240. package/dist/modules/chunks/github-dark-default-6HVTHEWF.mjs.map +7 -0
  241. package/dist/modules/chunks/github-light-default-LAXRA6XL.mjs +8 -0
  242. package/dist/modules/chunks/github-light-default-LAXRA6XL.mjs.map +7 -0
  243. package/dist/modules/chunks/glsl-UC3YWUD2.mjs +18 -0
  244. package/dist/modules/chunks/glsl-UC3YWUD2.mjs.map +7 -0
  245. package/dist/modules/chunks/html-FRVIUV63.mjs +19 -0
  246. package/dist/modules/chunks/html-FRVIUV63.mjs.map +7 -0
  247. package/dist/modules/chunks/javascript-LN3OC7S2.mjs +8 -0
  248. package/dist/modules/chunks/javascript-LN3OC7S2.mjs.map +7 -0
  249. package/dist/modules/chunks/json-5CUGWTOP.mjs +11 -0
  250. package/dist/modules/chunks/json-5CUGWTOP.mjs.map +7 -0
  251. package/dist/modules/chunks/json5-YZQI5VNO.mjs +11 -0
  252. package/dist/modules/chunks/json5-YZQI5VNO.mjs.map +7 -0
  253. package/dist/modules/chunks/jsonc-SWID6VOZ.mjs +11 -0
  254. package/dist/modules/chunks/jsonc-SWID6VOZ.mjs.map +7 -0
  255. package/dist/modules/chunks/jsx-A7RDCLJO.mjs +11 -0
  256. package/dist/modules/chunks/jsx-A7RDCLJO.mjs.map +7 -0
  257. package/dist/modules/chunks/markdown-QTCU5KP5.mjs +11 -0
  258. package/dist/modules/chunks/markdown-QTCU5KP5.mjs.map +7 -0
  259. package/dist/modules/chunks/python-LAZONBIB.mjs +11 -0
  260. package/dist/modules/chunks/python-LAZONBIB.mjs.map +7 -0
  261. package/dist/modules/chunks/rust-XWTPJFJO.mjs +11 -0
  262. package/dist/modules/chunks/rust-XWTPJFJO.mjs.map +7 -0
  263. package/dist/modules/chunks/scss-CFXRHUUW.mjs +15 -0
  264. package/dist/modules/chunks/scss-CFXRHUUW.mjs.map +7 -0
  265. package/dist/modules/chunks/shellscript-OHO3LCVU.mjs +11 -0
  266. package/dist/modules/chunks/shellscript-OHO3LCVU.mjs.map +7 -0
  267. package/dist/modules/chunks/toml-IOHFZJ5B.mjs +11 -0
  268. package/dist/modules/chunks/toml-IOHFZJ5B.mjs.map +7 -0
  269. package/dist/modules/chunks/tsx-2E6WNX2E.mjs +11 -0
  270. package/dist/modules/chunks/tsx-2E6WNX2E.mjs.map +7 -0
  271. package/dist/modules/chunks/typescript-PBKAS54P.mjs +11 -0
  272. package/dist/modules/chunks/typescript-PBKAS54P.mjs.map +7 -0
  273. package/dist/modules/chunks/wgsl-PS6QPRLZ.mjs +11 -0
  274. package/dist/modules/chunks/wgsl-PS6QPRLZ.mjs.map +7 -0
  275. package/dist/modules/chunks/xml-JECR2ACB.mjs +18 -0
  276. package/dist/modules/chunks/xml-JECR2ACB.mjs.map +7 -0
  277. package/dist/modules/chunks/yaml-P2SV4LOE.mjs +11 -0
  278. package/dist/modules/chunks/yaml-P2SV4LOE.mjs.map +7 -0
  279. package/dist/modules/cli-contributions.mjs +32 -0
  280. package/dist/modules/cli-contributions.mjs.map +7 -0
  281. package/dist/modules/cli.mjs +14 -0
  282. package/dist/modules/cli.mjs.map +7 -0
  283. package/dist/modules/command-executor.mjs +65 -0
  284. package/dist/modules/command-executor.mjs.map +7 -0
  285. package/dist/modules/commands.mjs +10 -0
  286. package/dist/modules/commands.mjs.map +7 -0
  287. package/dist/modules/embedded.mjs +18608 -0
  288. package/dist/modules/embedded.mjs.map +7 -0
  289. package/dist/modules/extension-bridge.mjs +18 -0
  290. package/dist/modules/extension-bridge.mjs.map +7 -0
  291. package/dist/modules/frontend-root.mjs +61 -0
  292. package/dist/modules/frontend-root.mjs.map +7 -0
  293. package/dist/modules/index.mjs +784 -0
  294. package/dist/modules/index.mjs.map +7 -0
  295. package/dist/modules/page.mjs +45 -0
  296. package/dist/modules/page.mjs.map +7 -0
  297. package/dist/modules/pages/scene.mjs +18 -0
  298. package/dist/modules/pages/scene.mjs.map +7 -0
  299. package/dist/modules/plugin.mjs +56 -0
  300. package/dist/modules/plugin.mjs.map +7 -0
  301. package/dist/modules/plugins/asset/frontend.mjs +23 -0
  302. package/dist/modules/plugins/asset/frontend.mjs.map +7 -0
  303. package/dist/modules/plugins/asset/i18n.mjs +15 -0
  304. package/dist/modules/plugins/asset/i18n.mjs.map +7 -0
  305. package/dist/modules/plugins/asset/identity.mjs +42 -0
  306. package/dist/modules/plugins/asset/identity.mjs.map +7 -0
  307. package/dist/modules/plugins/asset/schema.mjs +10 -0
  308. package/dist/modules/plugins/asset/schema.mjs.map +7 -0
  309. package/dist/modules/plugins/asset/ui.mjs +16 -0
  310. package/dist/modules/plugins/asset/ui.mjs.map +7 -0
  311. package/dist/modules/plugins/content-browser/frontend.mjs +17 -0
  312. package/dist/modules/plugins/content-browser/frontend.mjs.map +7 -0
  313. package/dist/modules/plugins/content-browser/i18n.mjs +15 -0
  314. package/dist/modules/plugins/content-browser/i18n.mjs.map +7 -0
  315. package/dist/modules/plugins/content-browser/identity.mjs +22 -0
  316. package/dist/modules/plugins/content-browser/identity.mjs.map +7 -0
  317. package/dist/modules/plugins/content-browser/schema.mjs +12 -0
  318. package/dist/modules/plugins/content-browser/schema.mjs.map +7 -0
  319. package/dist/modules/plugins/content-browser/ui.mjs +15 -0
  320. package/dist/modules/plugins/content-browser/ui.mjs.map +7 -0
  321. package/dist/modules/plugins/display/api.mjs +10 -0
  322. package/dist/modules/plugins/display/api.mjs.map +7 -0
  323. package/dist/modules/plugins/display/backend.mjs +16 -0
  324. package/dist/modules/plugins/display/backend.mjs.map +7 -0
  325. package/dist/modules/plugins/display/carrier-contract.mjs +38 -0
  326. package/dist/modules/plugins/display/carrier-contract.mjs.map +7 -0
  327. package/dist/modules/plugins/display/carrier.mjs +13 -0
  328. package/dist/modules/plugins/display/carrier.mjs.map +7 -0
  329. package/dist/modules/plugins/display/effects.mjs +8 -0
  330. package/dist/modules/plugins/display/effects.mjs.map +7 -0
  331. package/dist/modules/plugins/display/frontend.mjs +14 -0
  332. package/dist/modules/plugins/display/frontend.mjs.map +7 -0
  333. package/dist/modules/plugins/display/i18n.mjs +58 -0
  334. package/dist/modules/plugins/display/i18n.mjs.map +7 -0
  335. package/dist/modules/plugins/display/identity.mjs +30 -0
  336. package/dist/modules/plugins/display/identity.mjs.map +7 -0
  337. package/dist/modules/plugins/display/page-broker.mjs +12 -0
  338. package/dist/modules/plugins/display/page-broker.mjs.map +7 -0
  339. package/dist/modules/plugins/display/schema.mjs +40 -0
  340. package/dist/modules/plugins/display/schema.mjs.map +7 -0
  341. package/dist/modules/plugins/display/ui.mjs +9 -0
  342. package/dist/modules/plugins/display/ui.mjs.map +7 -0
  343. package/dist/modules/plugins/inspector/frontend.mjs +17 -0
  344. package/dist/modules/plugins/inspector/frontend.mjs.map +7 -0
  345. package/dist/modules/plugins/inspector/i18n.mjs +15 -0
  346. package/dist/modules/plugins/inspector/i18n.mjs.map +7 -0
  347. package/dist/modules/plugins/inspector/identity.mjs +22 -0
  348. package/dist/modules/plugins/inspector/identity.mjs.map +7 -0
  349. package/dist/modules/plugins/inspector/schema.mjs +12 -0
  350. package/dist/modules/plugins/inspector/schema.mjs.map +7 -0
  351. package/dist/modules/plugins/inspector/ui.mjs +16 -0
  352. package/dist/modules/plugins/inspector/ui.mjs.map +7 -0
  353. package/dist/modules/plugins/material/frontend.mjs +25 -0
  354. package/dist/modules/plugins/material/frontend.mjs.map +7 -0
  355. package/dist/modules/plugins/material/i18n.mjs +15 -0
  356. package/dist/modules/plugins/material/i18n.mjs.map +7 -0
  357. package/dist/modules/plugins/material/identity.mjs +60 -0
  358. package/dist/modules/plugins/material/identity.mjs.map +7 -0
  359. package/dist/modules/plugins/material/schema.mjs +47 -0
  360. package/dist/modules/plugins/material/schema.mjs.map +7 -0
  361. package/dist/modules/plugins/material/ui.mjs +28 -0
  362. package/dist/modules/plugins/material/ui.mjs.map +7 -0
  363. package/dist/modules/plugins/mesh/frontend.mjs +23 -0
  364. package/dist/modules/plugins/mesh/frontend.mjs.map +7 -0
  365. package/dist/modules/plugins/mesh/i18n.mjs +15 -0
  366. package/dist/modules/plugins/mesh/i18n.mjs.map +7 -0
  367. package/dist/modules/plugins/mesh/identity.mjs +54 -0
  368. package/dist/modules/plugins/mesh/identity.mjs.map +7 -0
  369. package/dist/modules/plugins/mesh/schema.mjs +10 -0
  370. package/dist/modules/plugins/mesh/schema.mjs.map +7 -0
  371. package/dist/modules/plugins/mesh/ui.mjs +26 -0
  372. package/dist/modules/plugins/mesh/ui.mjs.map +7 -0
  373. package/dist/modules/plugins/plugins/api.mjs +11 -0
  374. package/dist/modules/plugins/plugins/api.mjs.map +7 -0
  375. package/dist/modules/plugins/plugins/backend.mjs +21 -0
  376. package/dist/modules/plugins/plugins/backend.mjs.map +7 -0
  377. package/dist/modules/plugins/plugins/cli.mjs +12 -0
  378. package/dist/modules/plugins/plugins/cli.mjs.map +7 -0
  379. package/dist/modules/plugins/plugins/frontend.mjs +17 -0
  380. package/dist/modules/plugins/plugins/frontend.mjs.map +7 -0
  381. package/dist/modules/plugins/plugins/i18n.mjs +15 -0
  382. package/dist/modules/plugins/plugins/i18n.mjs.map +7 -0
  383. package/dist/modules/plugins/plugins/identity.mjs +26 -0
  384. package/dist/modules/plugins/plugins/identity.mjs.map +7 -0
  385. package/dist/modules/plugins/plugins/runtime.mjs +50 -0
  386. package/dist/modules/plugins/plugins/runtime.mjs.map +7 -0
  387. package/dist/modules/plugins/plugins/schema.mjs +12 -0
  388. package/dist/modules/plugins/plugins/schema.mjs.map +7 -0
  389. package/dist/modules/plugins/plugins/ui/panel.mjs +14 -0
  390. package/dist/modules/plugins/plugins/ui/panel.mjs.map +7 -0
  391. package/dist/modules/plugins/plugins/ui.mjs +15 -0
  392. package/dist/modules/plugins/plugins/ui.mjs.map +7 -0
  393. package/dist/modules/plugins/scene/frontend.mjs +18 -0
  394. package/dist/modules/plugins/scene/frontend.mjs.map +7 -0
  395. package/dist/modules/plugins/scene/identity.mjs +14 -0
  396. package/dist/modules/plugins/scene/identity.mjs.map +7 -0
  397. package/dist/modules/plugins/scene-tree/frontend.mjs +17 -0
  398. package/dist/modules/plugins/scene-tree/frontend.mjs.map +7 -0
  399. package/dist/modules/plugins/scene-tree/i18n.mjs +15 -0
  400. package/dist/modules/plugins/scene-tree/i18n.mjs.map +7 -0
  401. package/dist/modules/plugins/scene-tree/identity.mjs +22 -0
  402. package/dist/modules/plugins/scene-tree/identity.mjs.map +7 -0
  403. package/dist/modules/plugins/scene-tree/schema.mjs +12 -0
  404. package/dist/modules/plugins/scene-tree/schema.mjs.map +7 -0
  405. package/dist/modules/plugins/scene-tree/ui.mjs +16 -0
  406. package/dist/modules/plugins/scene-tree/ui.mjs.map +7 -0
  407. package/dist/modules/plugins/texture/frontend.mjs +23 -0
  408. package/dist/modules/plugins/texture/frontend.mjs.map +7 -0
  409. package/dist/modules/plugins/texture/i18n.mjs +15 -0
  410. package/dist/modules/plugins/texture/i18n.mjs.map +7 -0
  411. package/dist/modules/plugins/texture/identity.mjs +54 -0
  412. package/dist/modules/plugins/texture/identity.mjs.map +7 -0
  413. package/dist/modules/plugins/texture/schema.mjs +10 -0
  414. package/dist/modules/plugins/texture/schema.mjs.map +7 -0
  415. package/dist/modules/plugins/texture/ui.mjs +26 -0
  416. package/dist/modules/plugins/texture/ui.mjs.map +7 -0
  417. package/dist/modules/plugins/viewport/frontend.mjs +27 -0
  418. package/dist/modules/plugins/viewport/frontend.mjs.map +7 -0
  419. package/dist/modules/plugins/viewport/identity.mjs +28 -0
  420. package/dist/modules/plugins/viewport/identity.mjs.map +7 -0
  421. package/dist/modules/plugins/viewport/presentation-identity.mjs +10 -0
  422. package/dist/modules/plugins/viewport/presentation-identity.mjs.map +7 -0
  423. package/dist/modules/plugins/viewport/presentation.mjs +18 -0
  424. package/dist/modules/plugins/viewport/presentation.mjs.map +7 -0
  425. package/dist/modules/plugins/viewport/schema.mjs +18 -0
  426. package/dist/modules/plugins/viewport/schema.mjs.map +7 -0
  427. package/dist/modules/plugins/viewport/workspace-shell.mjs +29 -0
  428. package/dist/modules/plugins/viewport/workspace-shell.mjs.map +7 -0
  429. package/dist/modules/shell/contract.mjs +10 -0
  430. package/dist/modules/shell/contract.mjs.map +7 -0
  431. package/dist/modules/shell/frontend.mjs +14 -0
  432. package/dist/modules/shell/frontend.mjs.map +7 -0
  433. package/dist/modules/shell/layout-zones.mjs +20 -0
  434. package/dist/modules/shell/layout-zones.mjs.map +7 -0
  435. package/dist/modules/start-cli.mjs +57 -0
  436. package/dist/modules/start-cli.mjs.map +7 -0
  437. package/dist/modules/start.mjs +18 -0
  438. package/dist/modules/start.mjs.map +7 -0
  439. package/dist/modules/viewer/catalog/backend.mjs +47 -0
  440. package/dist/modules/viewer/catalog/backend.mjs.map +7 -0
  441. package/dist/modules/viewer/catalog/frontend.mjs +55 -0
  442. package/dist/modules/viewer/catalog/frontend.mjs.map +7 -0
  443. package/dist/modules/viewer/catalog/shared.mjs +43 -0
  444. package/dist/modules/viewer/catalog/shared.mjs.map +7 -0
  445. package/dist/modules/viewer/catalog.mjs +85 -0
  446. package/dist/modules/viewer/catalog.mjs.map +7 -0
  447. package/dist/modules/viewer/cli.mjs +23 -0
  448. package/dist/modules/viewer/cli.mjs.map +7 -0
  449. package/dist/modules/viewer-host/frontend.mjs +65 -0
  450. package/dist/modules/viewer-host/frontend.mjs.map +7 -0
  451. package/dist/modules/viewer-host/page-registry.mjs +27 -0
  452. package/dist/modules/viewer-host/page-registry.mjs.map +7 -0
  453. package/dist/modules/viewer-host/slot-registry.mjs +8 -0
  454. package/dist/modules/viewer-host/slot-registry.mjs.map +7 -0
  455. package/dist/modules/viewer-host.mjs +43 -0
  456. package/dist/modules/viewer-host.mjs.map +7 -0
  457. package/dist/modules/viewer.mjs +85 -0
  458. package/dist/modules/viewer.mjs.map +7 -0
  459. package/dist/modules/workspace/adopt-surface.mjs +16 -0
  460. package/dist/modules/workspace/adopt-surface.mjs.map +7 -0
  461. package/dist/modules/workspace/api.mjs +8 -0
  462. package/dist/modules/workspace/api.mjs.map +7 -0
  463. package/dist/modules/workspace/backend.mjs +23 -0
  464. package/dist/modules/workspace/backend.mjs.map +7 -0
  465. package/dist/modules/workspace/broker.mjs +16 -0
  466. package/dist/modules/workspace/broker.mjs.map +7 -0
  467. package/dist/modules/workspace/cli.mjs +9 -0
  468. package/dist/modules/workspace/cli.mjs.map +7 -0
  469. package/dist/modules/workspace/client.mjs +15 -0
  470. package/dist/modules/workspace/client.mjs.map +7 -0
  471. package/dist/modules/workspace/command-error.mjs +16 -0
  472. package/dist/modules/workspace/command-error.mjs.map +7 -0
  473. package/dist/modules/workspace/contract.mjs +71 -0
  474. package/dist/modules/workspace/contract.mjs.map +7 -0
  475. package/dist/modules/workspace/demo-client.mjs +127 -0
  476. package/dist/modules/workspace/demo-client.mjs.map +7 -0
  477. package/dist/modules/workspace/engine-adapter.mjs +16 -0
  478. package/dist/modules/workspace/engine-adapter.mjs.map +7 -0
  479. package/dist/modules/workspace/engine-presentation.mjs +10 -0
  480. package/dist/modules/workspace/engine-presentation.mjs.map +7 -0
  481. package/dist/modules/workspace/extension-bridge.mjs +18 -0
  482. package/dist/modules/workspace/extension-bridge.mjs.map +7 -0
  483. package/dist/modules/workspace/frontend-plugin.mjs +18 -0
  484. package/dist/modules/workspace/frontend-plugin.mjs.map +7 -0
  485. package/dist/modules/workspace/frontend.mjs +29 -0
  486. package/dist/modules/workspace/frontend.mjs.map +7 -0
  487. package/dist/modules/workspace/id.mjs +8 -0
  488. package/dist/modules/workspace/id.mjs.map +7 -0
  489. package/dist/modules/workspace/inspection-presentation.mjs +12 -0
  490. package/dist/modules/workspace/inspection-presentation.mjs.map +7 -0
  491. package/dist/modules/workspace/locale-bridge.mjs +14 -0
  492. package/dist/modules/workspace/locale-bridge.mjs.map +7 -0
  493. package/dist/modules/workspace/page-title.mjs +13 -0
  494. package/dist/modules/workspace/page-title.mjs.map +7 -0
  495. package/dist/modules/workspace/presentation.mjs +18 -0
  496. package/dist/modules/workspace/presentation.mjs.map +7 -0
  497. package/dist/modules/workspace/preview-surface.mjs +17 -0
  498. package/dist/modules/workspace/preview-surface.mjs.map +7 -0
  499. package/dist/modules/workspace/project-session.mjs +18 -0
  500. package/dist/modules/workspace/project-session.mjs.map +7 -0
  501. package/dist/modules/workspace/render-resize-sync.mjs +12 -0
  502. package/dist/modules/workspace/render-resize-sync.mjs.map +7 -0
  503. package/dist/modules/workspace/resident.mjs +16 -0
  504. package/dist/modules/workspace/resident.mjs.map +7 -0
  505. package/dist/modules/workspace/resource-open.mjs +34 -0
  506. package/dist/modules/workspace/resource-open.mjs.map +7 -0
  507. package/dist/modules/workspace/resource-page.mjs +27 -0
  508. package/dist/modules/workspace/resource-page.mjs.map +7 -0
  509. package/dist/modules/workspace/tool-runtime.mjs +14 -0
  510. package/dist/modules/workspace/tool-runtime.mjs.map +7 -0
  511. package/dist/modules/workspace/view-trace.mjs +60 -0
  512. package/dist/modules/workspace/view-trace.mjs.map +7 -0
  513. package/dist/modules/workspace/workspace-client-connection.mjs +22 -0
  514. package/dist/modules/workspace/workspace-client-connection.mjs.map +7 -0
  515. package/dist/modules/workspace/workspace-recovery.mjs +35 -0
  516. package/dist/modules/workspace/workspace-recovery.mjs.map +7 -0
  517. package/dist/modules/workspace/workspace-state.mjs +12 -0
  518. package/dist/modules/workspace/workspace-state.mjs.map +7 -0
  519. package/dist/modules/workspace-frontend.mjs +17 -0
  520. package/dist/modules/workspace-frontend.mjs.map +7 -0
  521. package/dist/viewer/assets/chunk-CilyBKbf.js +1 -0
  522. package/dist/viewer/assets/core-DSQma37-.js +13 -0
  523. package/dist/viewer/assets/core-DSQma37-.js.map +1 -0
  524. package/dist/viewer/assets/css-Bq1BXecw.js +2 -0
  525. package/dist/viewer/assets/css-Bq1BXecw.js.map +1 -0
  526. package/dist/viewer/assets/css-CWQWazmX.js +1 -0
  527. package/dist/viewer/assets/embedded-D4ZDx--W.js +2 -0
  528. package/dist/viewer/assets/embedded-D4ZDx--W.js.map +1 -0
  529. package/dist/viewer/assets/engine-javascript-BvokIV9O.js +142 -0
  530. package/dist/viewer/assets/engine-javascript-BvokIV9O.js.map +1 -0
  531. package/dist/viewer/assets/github-dark-default-DaDlj-WZ.js +2 -0
  532. package/dist/viewer/assets/github-dark-default-DaDlj-WZ.js.map +1 -0
  533. package/dist/viewer/assets/github-light-default-BqhWxAZd.js +2 -0
  534. package/dist/viewer/assets/github-light-default-BqhWxAZd.js.map +1 -0
  535. package/dist/viewer/assets/glsl-BJgVnv11.js +2 -0
  536. package/dist/viewer/assets/glsl-BJgVnv11.js.map +1 -0
  537. package/dist/viewer/assets/html-AaaHGGyt.js +2 -0
  538. package/dist/viewer/assets/html-AaaHGGyt.js.map +1 -0
  539. package/dist/viewer/assets/javascript-BX9W64FE.js +1 -0
  540. package/dist/viewer/assets/javascript-DQODvD07.js +2 -0
  541. package/dist/viewer/assets/javascript-DQODvD07.js.map +1 -0
  542. package/dist/viewer/assets/json-CpcIDpT7.js +2 -0
  543. package/dist/viewer/assets/json-CpcIDpT7.js.map +1 -0
  544. package/dist/viewer/assets/json5-Czq4A7dk.js +2 -0
  545. package/dist/viewer/assets/json5-Czq4A7dk.js.map +1 -0
  546. package/dist/viewer/assets/jsonc-BXDfCMmu.js +2 -0
  547. package/dist/viewer/assets/jsonc-BXDfCMmu.js.map +1 -0
  548. package/dist/viewer/assets/jsx-DAWscEnf.js +2 -0
  549. package/dist/viewer/assets/jsx-DAWscEnf.js.map +1 -0
  550. package/dist/viewer/assets/main-C-2CHTN_.js +15 -0
  551. package/dist/viewer/assets/main-C-2CHTN_.js.map +1 -0
  552. package/dist/viewer/assets/markdown-Cx1FMNw-.js +2 -0
  553. package/dist/viewer/assets/markdown-Cx1FMNw-.js.map +1 -0
  554. package/dist/viewer/assets/panels-entry-Ddhfjgf0.js +46 -0
  555. package/dist/viewer/assets/panels-entry-Ddhfjgf0.js.map +1 -0
  556. package/dist/viewer/assets/python-CYPKjWV9.js +2 -0
  557. package/dist/viewer/assets/python-CYPKjWV9.js.map +1 -0
  558. package/dist/viewer/assets/rust-0e5cNx_V.js +2 -0
  559. package/dist/viewer/assets/rust-0e5cNx_V.js.map +1 -0
  560. package/dist/viewer/assets/scss-B-aKzLbT.js +2 -0
  561. package/dist/viewer/assets/scss-B-aKzLbT.js.map +1 -0
  562. package/dist/viewer/assets/shellscript-CpXD-pSm.js +2 -0
  563. package/dist/viewer/assets/shellscript-CpXD-pSm.js.map +1 -0
  564. package/dist/viewer/assets/style-ClttNKZk.css +2 -0
  565. package/dist/viewer/assets/styles-BXozhwiU.js +11 -0
  566. package/dist/viewer/assets/styles-BXozhwiU.js.map +1 -0
  567. package/dist/viewer/assets/toml-GmchYTXa.js +2 -0
  568. package/dist/viewer/assets/toml-GmchYTXa.js.map +1 -0
  569. package/dist/viewer/assets/tsx-Crj1Bi53.js +2 -0
  570. package/dist/viewer/assets/tsx-Crj1Bi53.js.map +1 -0
  571. package/dist/viewer/assets/typescript-xi0cSHCO.js +2 -0
  572. package/dist/viewer/assets/typescript-xi0cSHCO.js.map +1 -0
  573. package/dist/viewer/assets/wgsl-BoEPRo9U.js +2 -0
  574. package/dist/viewer/assets/wgsl-BoEPRo9U.js.map +1 -0
  575. package/dist/viewer/assets/xml-B8JqQrMD.js +2 -0
  576. package/dist/viewer/assets/xml-B8JqQrMD.js.map +1 -0
  577. package/dist/viewer/assets/yaml-DsIB85X9.js +2 -0
  578. package/dist/viewer/assets/yaml-DsIB85X9.js.map +1 -0
  579. package/dist/viewer/index.html +15 -0
  580. package/dist/viewer/panels.js +1 -0
  581. package/host.pack.json +13 -0
  582. package/package.json +174 -0
  583. package/skills/forgeax-view-cli/SKILL.md +74 -0
  584. package/skills/forgeax-view-start/SKILL.md +202 -0
  585. package/skills/forgeax-view-start/scripts/start-view.mjs +202 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/view-workspace-core/src/view-trace.mjs"],
4
+ "sourcesContent": ["/**\n * View viewport / camera interaction trace.\n *\n * Enable: localStorage.setItem('forgeax.view.trace', '1'); location.reload();\n * Export: copy(__forgeaxViewTrace.dump())\n *\n * Capture phase (canvas click \u2192 ESC / pointer up): see report.captureSessions[]\n */\n\nconst TRACE_KEY = 'forgeax.view.trace';\nconst TRACE_URL_PARAM = 'forgeaxViewTrace';\nconst LOG_PREFIX = '[forgeax.view.trace]';\nconst MAX_EVENTS = 6000;\nconst LATENCY_SAMPLE_CAP = 1024;\nconst MAX_SESSION_EVENTS = 20000;\n\nlet enabled = false;\nlet owned = false;\nlet installedApi;\nlet longTaskObserver;\nlet sessionId = '';\nlet bootAt = 0;\nconst events = [];\nconst counters = new Map();\nconst rpcLatencies = new Map();\nlet rafId = 0;\nlet lastRaf = 0;\nlet longFrameCount = 0;\nlet maxFrameGap = 0;\nlet sessionLongFrameCount = 0;\n\nlet activeCaptureSession = null;\nconst captureSessions = [];\nlet domRoot = null;\nlet domMutationObserver = null;\nlet layoutObserver = null;\nlet paintObserver = null;\n\nfunction now() {\n return typeof performance !== 'undefined' && typeof performance.now === 'function'\n ? performance.now()\n : Date.now();\n}\n\nfunction relT() {\n return Math.round((now() - bootAt) * 100) / 100;\n}\n\nfunction readEnabledFromEnvironment() {\n try {\n if (typeof globalThis.location?.search === 'string') {\n const params = new URLSearchParams(globalThis.location.search);\n if (params.get(TRACE_URL_PARAM) === '1' || params.get(TRACE_URL_PARAM) === 'true') return true;\n }\n } catch {\n // ignore\n }\n try {\n const stored = globalThis.localStorage?.getItem(TRACE_KEY);\n if (stored === '1' || stored === 'true') return true;\n } catch {\n // ignore\n }\n return false;\n}\n\nfunction bump(name, delta = 1) {\n counters.set(name, (counters.get(name) ?? 0) + delta);\n}\n\nfunction sessionBump(name, delta = 1) {\n if (!activeCaptureSession) return;\n const map = activeCaptureSession.counters;\n map.set(name, (map.get(name) ?? 0) + delta);\n}\n\nfunction recordRpcLatency(operation, ms, targetMap = rpcLatencies) {\n let bucket = targetMap.get(operation);\n if (!bucket) {\n bucket = [];\n targetMap.set(operation, bucket);\n }\n if (bucket.length >= LATENCY_SAMPLE_CAP) bucket.shift();\n bucket.push(ms);\n}\n\nfunction percentile(sorted, p) {\n if (sorted.length === 0) return 0;\n const index = Math.min(sorted.length - 1, Math.max(0, Math.floor((p / 100) * sorted.length)));\n return sorted[index];\n}\n\nfunction summarizeLatencies(samples) {\n if (!samples?.length) return null;\n const sorted = [...samples].sort((a, b) => a - b);\n const sum = sorted.reduce((acc, value) => acc + value, 0);\n return {\n n: sorted.length,\n avg: Math.round((sum / sorted.length) * 100) / 100,\n p50: Math.round(percentile(sorted, 50) * 100) / 100,\n p95: Math.round(percentile(sorted, 95) * 100) / 100,\n max: Math.round(sorted[sorted.length - 1] * 100) / 100,\n sum: Math.round(sum * 100) / 100,\n };\n}\n\nfunction summarizeRenderDurations(samples) {\n const stats = summarizeLatencies(samples);\n if (!stats) return null;\n return stats;\n}\n\nfunction pushEvent(entry, { sessionOnly = false } = {}) {\n if (!enabled) return;\n if (activeCaptureSession) {\n activeCaptureSession.events.push(entry);\n if (activeCaptureSession.events.length > MAX_SESSION_EVENTS) {\n activeCaptureSession.events.splice(0, activeCaptureSession.events.length - MAX_SESSION_EVENTS);\n sessionBump('session.events-truncated');\n }\n }\n if (!sessionOnly) {\n events.push(entry);\n if (events.length > MAX_EVENTS) events.splice(0, events.length - MAX_EVENTS);\n }\n}\n\nexport function isViewTraceEnabled() {\n return enabled;\n}\n\nexport function isCaptureSessionActive() {\n return activeCaptureSession !== null;\n}\n\nexport function traceView(phase, event, data = {}) {\n if (!enabled) return;\n const entry = { t: relT(), phase, event, ...data };\n bump(`${phase}.${event}`);\n sessionBump(`${phase}.${event}`);\n pushEvent(entry);\n const verbose = activeCaptureSession || phase === 'session' || phase === 'boot';\n if (verbose && typeof console !== 'undefined' && typeof console.debug === 'function') {\n console.debug(LOG_PREFIX, phase, event, data);\n }\n}\n\nexport function traceViewRpc(operation, durationMs, extra = {}) {\n if (!enabled) return;\n recordRpcLatency(operation, durationMs, rpcLatencies);\n if (activeCaptureSession) {\n recordRpcLatency(operation, durationMs, activeCaptureSession.rpcLatencies);\n if (durationMs > (activeCaptureSession.maxRpcMs ?? 0)) activeCaptureSession.maxRpcMs = durationMs;\n if (extra.inputType === 'pointer-move') {\n sessionBump('input.rpc-pointer-move');\n const q = activeCaptureSession.pendingRpc ?? 0;\n if (q > (activeCaptureSession.maxRpcQueue ?? 0)) activeCaptureSession.maxRpcQueue = q;\n }\n }\n bump(`rpc.${operation}`);\n sessionBump(`rpc.${operation}`);\n if (durationMs > 32) {\n bump(`rpc.slow.${operation}`);\n sessionBump(`rpc.slow.${operation}`);\n }\n pushEvent({\n t: relT(),\n phase: 'rpc',\n event: operation,\n ms: Math.round(durationMs * 100) / 100,\n ...extra,\n });\n}\n\nfunction describeElement(element) {\n if (!element || typeof element !== 'object') return null;\n const tag = element.tagName?.toLowerCase?.() ?? String(element);\n const dataset = element.dataset ? { ...element.dataset } : {};\n return {\n tag,\n id: element.id ?? undefined,\n className: typeof element.className === 'string' ? element.className : undefined,\n dataset,\n tabIndex: element.tabIndex,\n pointerLock: typeof element.requestPointerLock === 'function',\n };\n}\n\nfunction attachDomObservers() {\n if (!activeCaptureSession || !domRoot || domMutationObserver) return;\n if (typeof globalThis.MutationObserver === 'function') {\n domMutationObserver = new MutationObserver((records) => {\n if (!activeCaptureSession) return;\n for (const record of records) {\n sessionBump('dom.mutation');\n activeCaptureSession.mutationRecords += 1;\n if (record.type === 'childList') {\n sessionBump('dom.childList');\n activeCaptureSession.childListMutations += record.addedNodes.length + record.removedNodes.length;\n }\n if (record.type === 'attributes') sessionBump('dom.attributes');\n }\n if (activeCaptureSession.mutationRecords % 50 === 0) {\n pushEvent({\n t: relT(),\n phase: 'dom',\n event: 'mutation-burst',\n records: activeCaptureSession.mutationRecords,\n childListNodes: activeCaptureSession.childListMutations,\n });\n }\n });\n domMutationObserver.observe(domRoot, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: ['style', 'class', 'hidden', 'data-forgeax-view-selected'],\n });\n }\n if (typeof globalThis.PerformanceObserver === 'function') {\n try {\n layoutObserver = new PerformanceObserver((list) => {\n if (!activeCaptureSession) return;\n for (const entry of list.getEntries()) {\n sessionBump('dom.layout');\n const ms = entry.duration;\n activeCaptureSession.layoutDurations.push(ms);\n if (ms > 8) {\n sessionBump('dom.layout-slow');\n pushEvent({\n t: relT(),\n phase: 'dom',\n event: 'layout',\n durationMs: Math.round(ms * 100) / 100,\n name: entry.name,\n });\n }\n }\n });\n layoutObserver.observe({ type: 'layout', buffered: true });\n } catch {\n // layout entry type unsupported\n }\n try {\n paintObserver = new PerformanceObserver((list) => {\n if (!activeCaptureSession) return;\n for (const entry of list.getEntries()) {\n sessionBump('dom.paint');\n if (entry.duration > 8) {\n sessionBump('dom.paint-slow');\n pushEvent({\n t: relT(),\n phase: 'dom',\n event: 'paint',\n durationMs: Math.round(entry.duration * 100) / 100,\n });\n }\n }\n });\n paintObserver.observe({ type: 'paint', buffered: true });\n } catch {\n // paint entry type unsupported\n }\n }\n}\n\nfunction detachDomObservers() {\n domMutationObserver?.disconnect();\n domMutationObserver = null;\n layoutObserver?.disconnect();\n layoutObserver = null;\n paintObserver?.disconnect();\n paintObserver = null;\n}\n\nfunction buildSessionHints(summary) {\n const hints = [];\n const durationSec = (summary.durationMs ?? 0) / 1000;\n if (durationSec <= 0) return hints;\n const move = summary.counters['input.pointer-move'] ?? 0;\n const render = summary.counters['shell.render'] ?? 0;\n const push = summary.counters['shell.state-push'] ?? 0;\n const cameraRpc = summary.counters['rpc.camera.update'] ?? 0;\n const mutations = summary.counters['dom.mutation'] ?? 0;\n\n if (render > 0 && move > 0 && Math.abs(render - push) < render * 0.2 && render / move > 0.5) {\n hints.push('Almost every workspace update triggers shell.render; subscription updates may cause excessive DOM work.');\n }\n if (cameraRpc > 0 && Math.abs(cameraRpc - move) < cameraRpc * 0.15) {\n hints.push('Pointer moves and camera updates are nearly one-to-one; consider coalescing input samples before submission.');\n }\n if (mutations > render * 30 && render > 10) {\n hints.push('Many DOM mutations occur per render; check whole-tree replacement and repeated mounting.');\n }\n const renderStats = summary.render;\n if (renderStats?.p95 > 8 && render > 20) {\n hints.push('Rendering is slow during capture, including child replacement and target surface synchronization.');\n }\n const layoutSlow = summary.counters['dom.layout-slow'] ?? 0;\n if (layoutSlow > 5) {\n hints.push('The browser reports repeated slow layouts during capture; check forced layout and large DOM changes.');\n }\n return hints;\n}\n\nfunction finalizeCaptureSession(reason, extra = {}) {\n if (!activeCaptureSession) return null;\n const session = activeCaptureSession;\n activeCaptureSession = null;\n detachDomObservers();\n\n const durationMs = Math.round((now() - session.startedAtPerf) * 100) / 100;\n const counterObj = Object.fromEntries([...session.counters.entries()].sort(([a], [b]) => a.localeCompare(b)));\n const rpc = {};\n for (const [operation, samples] of session.rpcLatencies.entries()) {\n rpc[operation] = summarizeLatencies(samples);\n }\n const summary = {\n id: session.id,\n reason,\n durationMs,\n startedAtT: session.startedAtT,\n endedAtT: relT(),\n meta: { ...session.meta, ...extra },\n counters: counterObj,\n rpc,\n render: summarizeRenderDurations(session.renderDurations),\n dom: {\n mutationRecords: session.mutationRecords,\n childListNodeChanges: session.childListMutations,\n layoutSamples: session.layoutDurations.length,\n syncTargetSurfaces: session.syncTargetSurfaces,\n targetSurfaceRemovals: session.targetSurfaceRemovals,\n targetSurfaceReorders: session.targetSurfaceReorders,\n },\n input: {\n maxUpdatesInFlight: session.maxInFlight,\n maxRpcMs: Math.round((session.maxRpcMs ?? 0) * 100) / 100,\n },\n subscription: {\n statePush: counterObj['shell.state-push'] ?? 0,\n stateUpdate: counterObj['shell.state-update'] ?? 0,\n },\n hints: [],\n };\n summary.hints = buildSessionHints(summary);\n\n const record = {\n ...summary,\n events: session.events,\n };\n captureSessions.push(record);\n\n traceView('session', 'capture-end', {\n id: session.id,\n reason,\n durationMs,\n counters: counterObj,\n rpc,\n render: summary.render,\n dom: summary.dom,\n subscription: summary.subscription,\n hints: summary.hints,\n });\n\n if (typeof console !== 'undefined' && typeof console.info === 'function') {\n console.info(`${LOG_PREFIX} capture session ended (${reason})`, summary);\n }\n return record;\n}\n\nexport function beginCaptureSession(meta = {}) {\n if (!enabled) return;\n if (activeCaptureSession) finalizeCaptureSession('superseded');\n const id = `cap-${Math.random().toString(36).slice(2, 10)}`;\n activeCaptureSession = {\n id,\n startedAtPerf: now(),\n startedAtT: relT(),\n meta,\n counters: new Map(),\n rpcLatencies: new Map(),\n events: [],\n renderDurations: [],\n layoutDurations: [],\n mutationRecords: 0,\n childListMutations: 0,\n syncTargetSurfaces: 0,\n targetSurfaceRemovals: 0,\n targetSurfaceReorders: 0,\n maxInFlight: 0,\n maxRpcMs: 0,\n maxRpcQueue: 0,\n };\n sessionLongFrameCount = 0;\n attachDomObservers();\n traceView('session', 'capture-begin', { id, ...meta });\n}\n\nexport function endCaptureSession(reason, extra = {}) {\n if (!enabled || !activeCaptureSession) return null;\n return finalizeCaptureSession(reason, extra);\n}\n\nexport function traceShellRegisterDomRoot(rootElement) {\n if (!enabled || !rootElement) return;\n domRoot = rootElement;\n traceView('shell', 'dom-root', { element: describeElement(rootElement) });\n}\n\nexport function traceShellStatePush(state) {\n if (!enabled) return;\n bump('shell.state-push');\n sessionBump('shell.state-push');\n const payload = {\n selectedTabId: state?.selectedTabId,\n cameraVersion: state?.preview?.cameraVersion,\n hasInteraction: Boolean(state?.preview?.interaction),\n };\n pushEvent({ t: relT(), phase: 'shell', event: 'state-push', ...payload });\n}\n\nexport function wrapViewWorkspaceClient(client) {\n if (!client || client.__forgeaxViewTraceWrapped) return client;\n const originalCall = client.call?.bind(client);\n if (typeof originalCall !== 'function') return client;\n client.__forgeaxViewTraceWrapped = true;\n client.call = (operation, args = {}, options = {}) => {\n if (!enabled) return originalCall(operation, args, options);\n if (activeCaptureSession && operation === 'camera.update') {\n activeCaptureSession.pendingRpc = (activeCaptureSession.pendingRpc ?? 0) + 1;\n }\n const started = now();\n const result = originalCall(operation, args, options);\n return Promise.resolve(result)\n .then((value) => {\n if (activeCaptureSession && operation === 'camera.update') {\n activeCaptureSession.pendingRpc = Math.max(0, (activeCaptureSession.pendingRpc ?? 1) - 1);\n }\n traceViewRpc(operation, now() - started, {\n ok: true,\n interactionId: args?.interactionId,\n inputType: args?.input?.type,\n });\n return value;\n })\n .catch((error) => {\n if (activeCaptureSession && operation === 'camera.update') {\n activeCaptureSession.pendingRpc = Math.max(0, (activeCaptureSession.pendingRpc ?? 1) - 1);\n }\n traceViewRpc(operation, now() - started, {\n ok: false,\n message: error?.message ?? String(error),\n interactionId: args?.interactionId,\n inputType: args?.input?.type,\n });\n throw error;\n });\n };\n if (typeof client.subscribe === 'function') {\n const originalSubscribe = client.subscribe.bind(client);\n client.subscribe = (listener) =>\n originalSubscribe((state) => {\n traceShellStatePush(state);\n return listener(state);\n });\n }\n return client;\n}\n\nfunction startRafMonitor() {\n if (rafId || typeof globalThis.requestAnimationFrame !== 'function') return;\n lastRaf = now();\n const tick = () => {\n if (!enabled) {\n rafId = 0;\n return;\n }\n const t = now();\n const gap = t - lastRaf;\n lastRaf = t;\n if (gap > maxFrameGap) maxFrameGap = gap;\n if (gap > 32) {\n longFrameCount += 1;\n if (activeCaptureSession) {\n sessionLongFrameCount += 1;\n sessionBump('perf.long-frame');\n pushEvent({\n t: relT(),\n phase: 'perf',\n event: 'long-frame',\n gapMs: Math.round(gap * 100) / 100,\n capture: true,\n });\n } else if (gap > 50) {\n pushEvent({ t: relT(), phase: 'perf', event: 'long-frame', gapMs: Math.round(gap * 100) / 100 });\n }\n }\n rafId = globalThis.requestAnimationFrame(tick);\n };\n rafId = globalThis.requestAnimationFrame(tick);\n}\n\nfunction startLongTaskObserver() {\n if (typeof globalThis.PerformanceObserver !== 'function') return;\n try {\n const observer = new PerformanceObserver((list) => {\n for (const entry of list.getEntries()) {\n if (entry.duration < 50) continue;\n bump('perf.long-task');\n sessionBump('perf.long-task');\n pushEvent({\n t: relT(),\n phase: 'perf',\n event: 'long-task',\n name: entry.name,\n durationMs: Math.round(entry.duration * 100) / 100,\n capture: Boolean(activeCaptureSession),\n });\n }\n });\n observer.observe({ entryTypes: ['longtask'] });\n longTaskObserver = observer;\n } catch {\n // unsupported\n }\n}\n\nfunction buildSummary(elapsedSec) {\n const counterObj = Object.fromEntries([...counters.entries()].sort(([a], [b]) => a.localeCompare(b)));\n const rpc = {};\n for (const [operation, samples] of rpcLatencies.entries()) {\n rpc[operation] = summarizeLatencies(samples);\n }\n const hints = [];\n const last = captureSessions[captureSessions.length - 1];\n if (last?.hints?.length) {\n hints.push(`Last capture (${last.reason}, ${last.durationMs} ms): ${last.hints.join(' ')}`);\n }\n return {\n sessionId,\n elapsedSec: Math.round(elapsedSec * 100) / 100,\n counters: counterObj,\n rpc,\n perf: {\n longFramesOver32ms: longFrameCount,\n maxFrameGapMs: Math.round(maxFrameGap * 100) / 100,\n },\n captureSessionCount: captureSessions.length,\n hints,\n };\n}\n\nexport function getViewTraceReport() {\n const elapsedSec = bootAt ? (now() - bootAt) / 1000 : 0;\n return {\n kind: 'forgeax.view.trace/report',\n version: 2,\n generatedAt: new Date().toISOString(),\n summary: buildSummary(elapsedSec),\n captureSessions: captureSessions.map(({ events: _e, ...rest }) => rest),\n captureSessionsFull: captureSessions,\n events,\n };\n}\n\nexport function dumpViewTraceText() {\n return JSON.stringify(getViewTraceReport(), null, 2);\n}\n\nexport function installViewTraceGlobal() {\n if (!owned || !enabled) return false;\n if (installedApi) return true;\n sessionId = `vt-${Math.random().toString(36).slice(2, 10)}`;\n bootAt = now();\n traceView('boot', 'enabled', {\n page: globalThis.location ? `${globalThis.location.origin}${globalThis.location.pathname}` : undefined,\n userAgent: globalThis.navigator?.userAgent,\n });\n startRafMonitor();\n startLongTaskObserver();\n const api = {\n enabled: () => enabled,\n enable: enableViewTrace,\n dump: dumpViewTraceText,\n download: downloadViewTraceTxtFile,\n report: getViewTraceReport,\n event: traceView,\n describeElement,\n activeCapture: () => activeCaptureSession?.id ?? null,\n lastCaptureSession: () => captureSessions[captureSessions.length - 1] ?? null,\n captureSessions: () => captureSessions,\n };\n globalThis.__forgeaxViewTrace = api;\n installedApi = api;\n if (typeof console !== 'undefined' && typeof console.info === 'function') {\n console.info(\n `${LOG_PREFIX} active \u2014 click canvas, drag, press ESC, then: copy(__forgeaxViewTrace.dump())`,\n );\n }\n return true;\n}\n\nexport function initViewTraceFromEnvironment() {\n if (typeof globalThis.document !== 'object') return () => {};\n if (owned) throw new Error('The workspace plugin already owns View tracing in this document');\n owned = true;\n enabled = readEnabledFromEnvironment();\n installViewTraceGlobal();\n let disposed = false;\n return () => {\n if (disposed) return;\n disposed = true;\n owned = false;\n enabled = false;\n if (rafId) globalThis.cancelAnimationFrame?.(rafId);\n rafId = 0;\n longTaskObserver?.disconnect();\n longTaskObserver = undefined;\n detachDomObservers();\n domRoot = null;\n activeCaptureSession = null;\n events.length = 0;\n captureSessions.length = 0;\n counters.clear();\n rpcLatencies.clear();\n lastRaf = longFrameCount = maxFrameGap = sessionLongFrameCount = bootAt = 0;\n sessionId = '';\n if (globalThis.__forgeaxViewTrace === installedApi) delete globalThis.__forgeaxViewTrace;\n installedApi = undefined;\n };\n}\n\n/** Turn on in-process tracing without reload (used by the View header export control). */\nexport function enableViewTrace({ persist = false } = {}) {\n if (!owned) return false;\n if (persist) {\n try {\n globalThis.localStorage?.setItem(TRACE_KEY, '1');\n } catch {\n // ignore\n }\n }\n if (enabled && globalThis.__forgeaxViewTrace) return true;\n enabled = true;\n return installViewTraceGlobal();\n}\n\nfunction traceExportFilename() {\n const stamp = new Date().toISOString().replace(/[:.]/g, '-');\n return `forgeax-view-trace-${stamp}.txt`;\n}\n\n/** Returns the report text and downloads it as a plain-text file when `document` exists. */\nexport function downloadViewTraceTxtFile() {\n enableViewTrace();\n const text = dumpViewTraceText();\n traceView('export', 'download', {\n bytes: text.length,\n captureSessions: captureSessions.length,\n });\n const doc = globalThis.document;\n if (doc?.createElement) {\n const blob = new Blob([text], { type: 'text/plain;charset=utf-8' });\n const url = URL.createObjectURL(blob);\n const anchor = doc.createElement('a');\n anchor.href = url;\n anchor.download = traceExportFilename();\n anchor.rel = 'noopener';\n anchor.click();\n URL.revokeObjectURL(url);\n }\n return text;\n}\n\nexport function traceInputAttach(element, { targetId, tabId } = {}) {\n if (!enabled) return;\n traceView('input', 'attach', {\n targetId,\n tabId,\n element: describeElement(element),\n pointerLockElement: describeElement(globalThis.document?.pointerLockElement),\n });\n const canvas =\n element?.tagName?.toLowerCase?.() === 'canvas'\n ? element\n : element?.querySelector?.('canvas');\n if (!canvas || canvas.__forgeaxViewTraceCanvas) return;\n canvas.__forgeaxViewTraceCanvas = true;\n traceView('canvas', 'found', {\n width: canvas.width,\n height: canvas.height,\n clientWidth: canvas.clientWidth,\n clientHeight: canvas.clientHeight,\n });\n if (typeof globalThis.ResizeObserver === 'function') {\n const observer = new ResizeObserver(() => {\n const payload = {\n width: canvas.width,\n height: canvas.height,\n clientWidth: canvas.clientWidth,\n clientHeight: canvas.clientHeight,\n capture: Boolean(activeCaptureSession),\n };\n bump('canvas.resize');\n sessionBump('canvas.resize');\n pushEvent({ t: relT(), phase: 'canvas', event: 'resize', ...payload });\n });\n observer.observe(canvas);\n }\n}\n\nexport function traceInputPointerDown(event, { accepted, element }) {\n if (!enabled) return;\n traceView('input', 'pointerdown', {\n accepted,\n button: event?.button,\n pointerId: event?.pointerId,\n pointerType: event?.pointerType,\n buttons: event?.buttons,\n target: describeElement(event?.target),\n inputSurface: describeElement(element),\n pointerLockBefore: describeElement(globalThis.document?.pointerLockElement),\n });\n if (accepted) {\n beginCaptureSession({\n trigger: 'pointerdown',\n target: describeElement(event?.target),\n inputSurface: describeElement(element),\n });\n }\n}\n\nexport function traceInputPointerUp(event, { element } = {}) {\n if (!enabled) return;\n traceView('input', 'pointerup', {\n pointerId: event?.pointerId,\n inputSurface: describeElement(element),\n });\n endCaptureSession('pointerup');\n}\n\nexport function traceInputPointerLockExit({ locked, element }) {\n if (!enabled) return;\n traceView('input', 'pointerlock-exit', {\n locked,\n element: describeElement(element),\n });\n if (!locked) endCaptureSession('pointerlock-exit');\n}\n\nexport function traceInputCaptureAbort(reason) {\n if (!enabled) return;\n traceView('input', 'abort', { reason });\n if (activeCaptureSession) endCaptureSession('abort', { abortReason: reason });\n}\n\nexport function traceInputEscape() {\n if (!enabled) return;\n traceView('input', 'escape-key');\n endCaptureSession('escape-key');\n}\n\nexport function traceInputPointerMove(event, { queueDepth, inFlight }) {\n if (!enabled) return;\n bump('input.pointer-move');\n sessionBump('input.pointer-move');\n if (inFlight > (activeCaptureSession?.maxInFlight ?? 0)) {\n if (activeCaptureSession) activeCaptureSession.maxInFlight = inFlight;\n }\n const payload = {\n movementX: event?.movementX,\n movementY: event?.movementY,\n queueDepth,\n inFlight,\n };\n if (activeCaptureSession) {\n pushEvent({ t: relT(), phase: 'input', event: 'pointer-move', ...payload });\n } else if ((counters.get('input.pointer-move') ?? 0) % 30 === 1) {\n pushEvent({ t: relT(), phase: 'input', event: 'pointer-move-sample', ...payload });\n }\n}\n\nexport function traceInputEnqueueUpdate(input, { queueDepth, inFlight }) {\n if (!enabled) return;\n sessionBump('input.enqueue-update');\n bump('input.enqueue-update');\n if (activeCaptureSession) {\n pushEvent({\n t: relT(),\n phase: 'input',\n event: 'enqueue-update',\n type: input?.type,\n queueDepth,\n inFlight,\n });\n }\n}\n\nexport function traceShellRender(meta = {}) {\n if (!enabled) return;\n bump('shell.render');\n sessionBump('shell.render');\n if (activeCaptureSession && typeof meta.durationMs === 'number') {\n activeCaptureSession.renderDurations.push(meta.durationMs);\n }\n if (activeCaptureSession) {\n pushEvent({ t: relT(), phase: 'shell', event: 'render', ...meta });\n } else if ((counters.get('shell.render') ?? 0) % 25 === 1) {\n pushEvent({ t: relT(), phase: 'shell', event: 'render-sample', ...meta });\n }\n}\n\nexport function traceShellUpdate(meta = {}) {\n if (!enabled) return;\n bump('shell.state-update');\n sessionBump('shell.state-update');\n if (activeCaptureSession) {\n pushEvent({ t: relT(), phase: 'shell', event: 'state-update', ...meta });\n }\n}\n\nexport function tracePresentationAttach(tabId, targetId, surface) {\n if (!enabled) return;\n sessionBump('shell.presentation-attach');\n bump('shell.presentation-attach');\n traceView('shell', 'presentation-attach', {\n tabId,\n targetId,\n surface: describeElement(surface),\n });\n}\n\nexport function traceSyncTargetSurfaces(stats = {}) {\n if (!enabled) return;\n bump('shell.sync-target-surfaces');\n sessionBump('shell.sync-target-surfaces');\n if (activeCaptureSession) {\n activeCaptureSession.syncTargetSurfaces += 1;\n activeCaptureSession.targetSurfaceRemovals += stats.removed ?? 0;\n activeCaptureSession.targetSurfaceReorders += stats.reordered ?? 0;\n }\n if (activeCaptureSession) {\n pushEvent({ t: relT(), phase: 'shell', event: 'sync-target-surfaces', ...stats });\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,9 @@
1
+ // packages/view-plugin-display/src/ui/display.css
2
+ var css = "/* packages/view-plugin-display/src/ui/display.css */\n.fx-view-run-observer {\n height: 100%;\n overflow: auto;\n padding: var(--fx-ref-space-8);\n}\n.fx-view-run-observer img {\n display: block;\n max-width: 100%;\n height: auto;\n pointer-events: none;\n}\n.fx-view-run-observer img[hidden] {\n display: none;\n}\n.fx-view-run-observer pre {\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n}\n.fx-view-run-observer form {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--fx-ref-space-8);\n max-width: 70rem;\n}\n.fx-view-run-observer form .fx-input {\n flex: 1 1 16rem;\n}\n";
3
+ if (typeof document !== "undefined" && !document.querySelector('style[data-forgeax-css="L2RhdGEvaG9tZS9nYWhvdWxpYW8vYWN0aW9ucy1ydW5uZXIvX3dvcmsvZm9yZ2VheC12aWV3L2ZvcmdlYXgtdmlldy9wYWNrYWdlcy92aWV3LXBsdWdpbi1kaXNwbGF5L3NyYy91aS9kaXNwbGF5LmNzcw"]')) {
4
+ const style = document.createElement("style");
5
+ style.dataset.forgeaxCss = "L2RhdGEvaG9tZS9nYWhvdWxpYW8vYWN0aW9ucy1ydW5uZXIvX3dvcmsvZm9yZ2VheC12aWV3L2ZvcmdlYXgtdmlldy9wYWNrYWdlcy92aWV3LXBsdWdpbi1kaXNwbGF5L3NyYy91aS9kaXNwbGF5LmNzcw";
6
+ style.textContent = css;
7
+ document.head.append(style);
8
+ }
9
+ //# sourceMappingURL=chunk-2K3BBJ5S.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/view-plugin-display/src/ui/display.css"],
4
+ "sourcesContent": ["\n const css = \"/* packages/view-plugin-display/src/ui/display.css */\\n.fx-view-run-observer {\\n height: 100%;\\n overflow: auto;\\n padding: var(--fx-ref-space-8);\\n}\\n.fx-view-run-observer img {\\n display: block;\\n max-width: 100%;\\n height: auto;\\n pointer-events: none;\\n}\\n.fx-view-run-observer img[hidden] {\\n display: none;\\n}\\n.fx-view-run-observer pre {\\n white-space: pre-wrap;\\n overflow-wrap: anywhere;\\n}\\n.fx-view-run-observer form {\\n display: flex;\\n flex-wrap: wrap;\\n align-items: center;\\n gap: var(--fx-ref-space-8);\\n max-width: 70rem;\\n}\\n.fx-view-run-observer form .fx-input {\\n flex: 1 1 16rem;\\n}\\n\";\n if (typeof document !== 'undefined' && !document.querySelector('style[data-forgeax-css=\"L2RhdGEvaG9tZS9nYWhvdWxpYW8vYWN0aW9ucy1ydW5uZXIvX3dvcmsvZm9yZ2VheC12aWV3L2ZvcmdlYXgtdmlldy9wYWNrYWdlcy92aWV3LXBsdWdpbi1kaXNwbGF5L3NyYy91aS9kaXNwbGF5LmNzcw\"]')) {\n const style = document.createElement('style');\n style.dataset.forgeaxCss = \"L2RhdGEvaG9tZS9nYWhvdWxpYW8vYWN0aW9ucy1ydW5uZXIvX3dvcmsvZm9yZ2VheC12aWV3L2ZvcmdlYXgtdmlldy9wYWNrYWdlcy92aWV3LXBsdWdpbi1kaXNwbGF5L3NyYy91aS9kaXNwbGF5LmNzcw\";\n style.textContent = css;\n document.head.append(style);\n }\n export default css;\n "],
5
+ "mappings": ";AACU,IAAM,MAAM;AACZ,IAAI,OAAO,aAAa,eAAe,CAAC,SAAS,cAAc,sLAAsL,GAAG;AACtP,QAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,QAAM,QAAQ,aAAa;AAC3B,QAAM,cAAc;AACpB,WAAS,KAAK,OAAO,KAAK;AAC5B;",
6
+ "names": []
7
+ }
@@ -0,0 +1,482 @@
1
+ import {
2
+ createWorkspaceId
3
+ } from "./chunk-TP26TASL.mjs";
4
+
5
+ // packages/view-workspace-core/src/scene-selection.mjs
6
+ function serializeWorkspaceSceneSelection(sceneSelection) {
7
+ if (!sceneSelection?.primary) return null;
8
+ const entityId = requireWorkspaceString(
9
+ sceneSelection.primary.entityId,
10
+ "sceneSelection.primary.entityId"
11
+ );
12
+ return {
13
+ ...sceneSelection.targetId === void 0 ? {} : { targetId: sceneSelection.targetId, targetGeneration: sceneSelection.targetGeneration },
14
+ primary: {
15
+ entityId,
16
+ ...sceneSelection.primary.label === void 0 ? {} : { label: String(sceneSelection.primary.label) }
17
+ }
18
+ };
19
+ }
20
+ function createEmptySceneSelection() {
21
+ return null;
22
+ }
23
+
24
+ // packages/view-workspace-core/src/contract.mjs
25
+ var VIEW_WORKSPACE_API_VERSION = "forgeax.view.workspace/1";
26
+ var VIEW_WORKSPACE_SERVICES = Object.freeze({
27
+ capabilities: "forgeax.view.workspace.capabilities",
28
+ call: "forgeax.view.workspace.call"
29
+ });
30
+ var VIEW_FILE_GET_SERVICE = "forgeax.view.file.get";
31
+ var VIEW_WORKSPACE_STATE_TOPIC = "forgeax.view.workspace.state";
32
+ var VIEW_PAGE_TYPES = Object.freeze({
33
+ editor: "editor",
34
+ display: "display",
35
+ plugins: "plugins",
36
+ material: "material",
37
+ mesh: "mesh",
38
+ texture: "texture",
39
+ asset: "asset"
40
+ });
41
+ var VIEW_WORKSPACE_COOK_MODES = Object.freeze(["rebuild", "cold-cook"]);
42
+ var VIEW_WORKSPACE_CORE_OPERATIONS = Object.freeze([
43
+ "tabs.get",
44
+ "tabs.select",
45
+ "scene.select",
46
+ "scene.pick",
47
+ "scene.clear",
48
+ "project.open",
49
+ "project.close",
50
+ "project.reopen"
51
+ ]);
52
+ var VIEW_WORKSPACE_DOMAIN_OPERATIONS = Object.freeze([
53
+ ...VIEW_WORKSPACE_CORE_OPERATIONS,
54
+ "display.bind",
55
+ "display.status",
56
+ "assets.list",
57
+ "asset.inspect",
58
+ "asset-source.rebuild",
59
+ "asset-source.cold-cook",
60
+ "asset.open",
61
+ "play.start",
62
+ "play.ready",
63
+ "play.stop",
64
+ "target.control",
65
+ "target.select",
66
+ "target.pick",
67
+ "entity.highlight",
68
+ "preview.close",
69
+ "preview.capture",
70
+ "preview.resize",
71
+ "camera.get",
72
+ "camera.begin",
73
+ "camera.update",
74
+ "camera.commit",
75
+ "camera.abort",
76
+ "scene-tree.get",
77
+ "entity.inspect",
78
+ "entity.focus",
79
+ "run.start",
80
+ "run.status",
81
+ "run.reload",
82
+ "run.stop",
83
+ "run.capture",
84
+ "run.eval",
85
+ "run.find",
86
+ "run.focus",
87
+ "run.camera.get",
88
+ "run.camera.set",
89
+ "run.camera.release"
90
+ ]);
91
+ var VIEW_WORKSPACE_OPERATIONS = Object.freeze([
92
+ ...VIEW_WORKSPACE_DOMAIN_OPERATIONS,
93
+ "plugins.sources",
94
+ "plugins.inspect",
95
+ "plugins.watch"
96
+ ]);
97
+ var VIEW_DISPLAY_TAB_ID = "forgeax-cli-display";
98
+ var VIEW_WORKSPACE_TAB_ID = "forgeax-user-workspace";
99
+ var OPERATION_SET = new Set(VIEW_WORKSPACE_OPERATIONS);
100
+ var OPAQUE_WORKSPACE_DIAGNOSTICS = /* @__PURE__ */ new Set([
101
+ "the contribution executor to return a result",
102
+ "the producer operation to succeed",
103
+ "the workspace command to complete",
104
+ "Inspect the resident View workspace and retry.",
105
+ "Inspect the provider snapshot and retry.",
106
+ "Inspect detail and repair the owning producer before retrying.",
107
+ "Inspect the browser page failure details.",
108
+ "Inspect the Engine command or tool result.",
109
+ "Refresh the inspector source and retry.",
110
+ "the View workspace provider to complete the operation",
111
+ "the View API provider to complete the operation"
112
+ ]);
113
+ function isOpaqueWorkspaceDiagnostic(value) {
114
+ if (typeof value !== "string") return true;
115
+ const text = value.trim();
116
+ if (text === "") return true;
117
+ if (OPAQUE_WORKSPACE_DIAGNOSTICS.has(text)) return true;
118
+ if (/^the browser workspace operation \S+ to complete$/.test(text)) return true;
119
+ if (/^(?:workspace|inspector) operation \S+ to complete$/.test(text)) return true;
120
+ if (/^Engine .+ to succeed$/.test(text)) return true;
121
+ return false;
122
+ }
123
+ function workspaceErrorMessage(code, expected, hint) {
124
+ const parts = [];
125
+ for (const value of [expected, hint]) {
126
+ if (typeof value !== "string") continue;
127
+ const text = value.trim();
128
+ if (!text || parts.includes(text)) continue;
129
+ parts.push(text);
130
+ }
131
+ const real = parts.filter((text) => !isOpaqueWorkspaceDiagnostic(text));
132
+ const chosen = real.length > 0 ? real : parts;
133
+ return chosen.length > 0 ? `${code}: ${chosen.join(" \u2014 ")}` : String(code ?? "view-workspace-error");
134
+ }
135
+ var ViewWorkspaceError = class extends Error {
136
+ constructor(code, expected, hint, detail = {}) {
137
+ super(workspaceErrorMessage(code, expected, hint));
138
+ this.name = "ViewWorkspaceError";
139
+ this.code = code;
140
+ this.expected = expected;
141
+ this.hint = hint;
142
+ this.detail = detail;
143
+ }
144
+ };
145
+ function workspaceError(code, expected, hint, detail = {}) {
146
+ return new ViewWorkspaceError(code, expected, hint, detail);
147
+ }
148
+ function requireWorkspaceString(value, field) {
149
+ if (typeof value !== "string" || value.trim() === "") {
150
+ throw workspaceError(
151
+ "view-workspace-invalid-args",
152
+ `${field} to be a non-empty string`,
153
+ `Provide a non-empty ${field}.`,
154
+ { field }
155
+ );
156
+ }
157
+ return value;
158
+ }
159
+ function requireWorkspaceObject(value, field) {
160
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
161
+ throw workspaceError(
162
+ "view-workspace-invalid-args",
163
+ `${field} to be an object`,
164
+ `Provide an object for ${field}.`,
165
+ { field }
166
+ );
167
+ }
168
+ return value;
169
+ }
170
+ function requireWorkspaceInteger(value, field, { min = 0 } = {}) {
171
+ if (!Number.isSafeInteger(value) || value < min) {
172
+ throw workspaceError(
173
+ "view-workspace-invalid-args",
174
+ `${field} to be an integer >= ${min}`,
175
+ `Provide a valid ${field}.`,
176
+ { field, min }
177
+ );
178
+ }
179
+ return value;
180
+ }
181
+ function cloneWorkspaceValue(value) {
182
+ if (value === void 0) return void 0;
183
+ return JSON.parse(JSON.stringify(value));
184
+ }
185
+ function jsonUnchanged(left, right) {
186
+ if (left === right) return true;
187
+ if (left == null || right == null) return left === right;
188
+ return JSON.stringify(left) === JSON.stringify(right);
189
+ }
190
+ function omitUiTelemetry(value) {
191
+ if (Array.isArray(value)) return value.map(omitUiTelemetry);
192
+ if (!value || typeof value !== "object") return value;
193
+ const next = {};
194
+ for (const [key, nested] of Object.entries(value)) {
195
+ if (key === "frameId" || key === "cameraVersion" || key === "interaction" || key === "inputVersion") continue;
196
+ if (key === "camera" && nested && typeof nested === "object" && !Array.isArray(nested)) {
197
+ if (nested.control !== void 0) next.camera = { control: nested.control };
198
+ continue;
199
+ }
200
+ next[key] = omitUiTelemetry(nested);
201
+ }
202
+ return next;
203
+ }
204
+ function workspaceUiFingerprint(state) {
205
+ if (!state) return "";
206
+ const { revision: _revision, ...rest } = state;
207
+ return JSON.stringify(omitUiTelemetry(rest));
208
+ }
209
+ function createWorkspaceRequest(operation, args = {}, { clientId, token, requestId } = {}) {
210
+ if (!OPERATION_SET.has(operation)) {
211
+ throw workspaceError(
212
+ "view-workspace-operation-unknown",
213
+ "operation to be present in the View workspace API",
214
+ "Refresh the workspace API capabilities and use a supported operation.",
215
+ { operation }
216
+ );
217
+ }
218
+ const request = {
219
+ apiVersion: VIEW_WORKSPACE_API_VERSION,
220
+ operation,
221
+ clientId: requireWorkspaceString(clientId, "clientId"),
222
+ requestId: requestId === void 0 ? createWorkspaceId("request") : requireWorkspaceString(requestId, "requestId"),
223
+ args: requireWorkspaceObject(args, "args")
224
+ };
225
+ if (token !== void 0) request.token = requireWorkspaceString(token, "token");
226
+ return Object.freeze(request);
227
+ }
228
+ function assertWorkspaceRequest(value) {
229
+ const request = requireWorkspaceObject(value, "request");
230
+ if (request.apiVersion !== VIEW_WORKSPACE_API_VERSION) {
231
+ throw workspaceError(
232
+ "view-workspace-version-mismatch",
233
+ `API version ${VIEW_WORKSPACE_API_VERSION}`,
234
+ "Install a matching View workspace client.",
235
+ { actual: request.apiVersion, expected: VIEW_WORKSPACE_API_VERSION }
236
+ );
237
+ }
238
+ if (!OPERATION_SET.has(request.operation)) {
239
+ throw workspaceError(
240
+ "view-workspace-operation-unknown",
241
+ "operation to be present in the View workspace API",
242
+ "Refresh the workspace API capabilities and use a supported operation.",
243
+ { operation: request.operation }
244
+ );
245
+ }
246
+ requireWorkspaceString(request.clientId, "clientId");
247
+ requireWorkspaceString(request.requestId, "requestId");
248
+ requireWorkspaceObject(request.args, "args");
249
+ return request;
250
+ }
251
+ function workspaceCapabilities({
252
+ ready = true,
253
+ headed = ready,
254
+ reason,
255
+ code,
256
+ operations = VIEW_WORKSPACE_OPERATIONS
257
+ } = {}) {
258
+ return {
259
+ apiVersion: VIEW_WORKSPACE_API_VERSION,
260
+ ready: Boolean(ready),
261
+ headed: Boolean(headed),
262
+ operations: [...operations],
263
+ ...reason === void 0 ? {} : { reason: String(reason) },
264
+ ...code === void 0 ? {} : { code: String(code) }
265
+ };
266
+ }
267
+ function serializeWorkspaceTarget(target) {
268
+ if (!target) return null;
269
+ requireWorkspaceString(target.targetId, "target.targetId");
270
+ return {
271
+ targetId: target.targetId,
272
+ ...target.generation === void 0 ? {} : { generation: target.generation },
273
+ ...target.sessionId === void 0 ? {} : { sessionId: String(target.sessionId) },
274
+ ...target.worldId === void 0 ? {} : { worldId: String(target.worldId) },
275
+ headed: target.headed === true,
276
+ ...target.frameId === void 0 ? {} : { frameId: target.frameId },
277
+ ...target.width === void 0 ? {} : { width: target.width },
278
+ ...target.height === void 0 ? {} : { height: target.height },
279
+ ...target.url === void 0 ? {} : { url: String(target.url) },
280
+ ...target.surface === void 0 || typeof target.surface !== "string" ? {} : { surface: target.surface }
281
+ };
282
+ }
283
+ function serializeWorkspaceProject(project) {
284
+ if (!project) return null;
285
+ requireWorkspaceString(project.id, "project.id");
286
+ requireWorkspaceString(project.root, "project.root");
287
+ return {
288
+ id: project.id,
289
+ root: project.root,
290
+ ...project.name === void 0 ? {} : { name: String(project.name) },
291
+ ...project.revision === void 0 ? {} : { revision: String(project.revision) }
292
+ };
293
+ }
294
+ function serializeWorkspaceAsset(asset) {
295
+ requireWorkspaceString(asset.guid, "asset.guid");
296
+ requireWorkspaceString(asset.kind, "asset.kind");
297
+ return {
298
+ guid: asset.guid,
299
+ kind: asset.kind,
300
+ ...asset.name === void 0 ? {} : { name: String(asset.name) },
301
+ ...asset.sourceKey === void 0 ? {} : { sourceKey: String(asset.sourceKey) },
302
+ ...asset.path === void 0 ? {} : { path: String(asset.path) },
303
+ ...asset.sourcePath === void 0 ? {} : { sourcePath: String(asset.sourcePath) },
304
+ ...asset.sourceKind === void 0 ? {} : { sourceKind: String(asset.sourceKind) },
305
+ ...asset.packageId === void 0 ? {} : { packageId: String(asset.packageId) },
306
+ ...asset.packageUrl === void 0 ? {} : { packageUrl: String(asset.packageUrl) },
307
+ ...asset.cookReceiptUrl === void 0 ? {} : { cookReceiptUrl: String(asset.cookReceiptUrl) },
308
+ ...asset.label === void 0 ? {} : { label: String(asset.label) },
309
+ ...asset.revision === void 0 ? {} : { revision: String(asset.revision) },
310
+ ...asset.previewable === void 0 ? {} : { previewable: Boolean(asset.previewable) },
311
+ ...serializeWorkspaceDdc(asset.ddc) === void 0 ? {} : { ddc: serializeWorkspaceDdc(asset.ddc) }
312
+ };
313
+ }
314
+ function serializeWorkspaceDdc(ddc) {
315
+ if (!ddc || typeof ddc !== "object" || Array.isArray(ddc)) return void 0;
316
+ const state = ddc.state === void 0 ? void 0 : String(ddc.state);
317
+ return cloneWorkspaceValue({
318
+ ...state === void 0 ? {} : { state },
319
+ ...ddc.guid === void 0 ? {} : { guid: String(ddc.guid) },
320
+ ...ddc.desiredKey === void 0 ? {} : { desiredKey: String(ddc.desiredKey) },
321
+ ...ddc.receiptUrl === void 0 ? {} : { receiptUrl: String(ddc.receiptUrl) },
322
+ ...ddc.hint === void 0 ? {} : { hint: String(ddc.hint) }
323
+ });
324
+ }
325
+ function serializeWorkspaceOpenRequest(request) {
326
+ if (!request) return null;
327
+ requireWorkspaceString(request.requestId, "openRequest.requestId");
328
+ requireWorkspaceInteger(request.sequence, "openRequest.sequence", { min: 1 });
329
+ const asset = serializeWorkspaceAsset(request.asset);
330
+ const previewTarget = request.preview?.target ?? request.target;
331
+ const previewAsset = request.preview?.asset ?? (previewTarget ? asset : void 0);
332
+ return {
333
+ requestId: request.requestId,
334
+ sequence: request.sequence,
335
+ asset,
336
+ ...previewTarget ? {
337
+ preview: {
338
+ asset: previewAsset ? serializeWorkspaceAsset(previewAsset) : asset,
339
+ target: serializeWorkspaceTarget(previewTarget)
340
+ }
341
+ } : {},
342
+ ...request.inspection ? { inspection: serializeWorkspaceInspection(request.inspection) } : {}
343
+ };
344
+ }
345
+ function serializeWorkspaceResourceOpens(opens) {
346
+ if (!opens || typeof opens !== "object") return void 0;
347
+ const entries = opens instanceof Map ? [...opens.entries()] : Object.entries(opens);
348
+ const serialized = {};
349
+ for (const [kind, entry] of entries) {
350
+ if (typeof kind !== "string" || !entry?.asset) continue;
351
+ const asset = serializeWorkspaceAsset(entry.asset);
352
+ const previewTarget = entry.preview?.target;
353
+ serialized[kind] = {
354
+ asset,
355
+ ...previewTarget ? {
356
+ preview: {
357
+ asset: serializeWorkspaceAsset(entry.preview.asset ?? asset),
358
+ target: serializeWorkspaceTarget(previewTarget)
359
+ }
360
+ } : {}
361
+ };
362
+ }
363
+ return serialized;
364
+ }
365
+ function workspaceInspectionFactRows(inspection) {
366
+ if (!inspection || typeof inspection !== "object" || Array.isArray(inspection)) {
367
+ return Object.freeze([]);
368
+ }
369
+ const asset = inspection.asset && typeof inspection.asset === "object" ? inspection.asset : {};
370
+ const rows = [];
371
+ const add = (label, value) => {
372
+ if (value === void 0 || value === null) return;
373
+ if (typeof value === "string" && value.trim() === "") return;
374
+ rows.push(
375
+ Object.freeze({
376
+ label,
377
+ value: typeof value === "object" ? JSON.stringify(value) : String(value)
378
+ })
379
+ );
380
+ };
381
+ add("GUID", inspection.guid ?? asset.guid);
382
+ add("Kind", asset.kind);
383
+ add("Name", asset.name);
384
+ add("Path", asset.path);
385
+ add("Source", inspection.source?.path ?? asset.sourcePath);
386
+ add("Revision", inspection.revision ?? asset.revision ?? inspection.source?.revision);
387
+ add("Package", asset.packageId ?? asset.packageUrl);
388
+ if (inspection.ddc?.state) add("DDC", inspection.ddc.state);
389
+ const meta = inspection.meta;
390
+ if (meta && typeof meta === "object" && !Array.isArray(meta)) {
391
+ for (const [key, value] of Object.entries(meta)) add(key, value);
392
+ }
393
+ return Object.freeze(rows);
394
+ }
395
+ function serializeWorkspaceInspection(inspection) {
396
+ if (!inspection) return null;
397
+ const guid = requireWorkspaceString(inspection.guid ?? inspection.asset?.guid, "inspection.guid");
398
+ const asset = serializeWorkspaceAsset({
399
+ ...inspection.asset,
400
+ guid,
401
+ kind: inspection.asset?.kind ?? inspection.kind
402
+ });
403
+ const source = inspection.source;
404
+ return {
405
+ guid,
406
+ asset,
407
+ ...source === void 0 || source === null ? {} : {
408
+ source: {
409
+ ...source.path === void 0 ? {} : { path: String(source.path) },
410
+ ...source.kind === void 0 ? {} : { kind: String(source.kind) },
411
+ ...source.revision === void 0 ? {} : { revision: String(source.revision) }
412
+ }
413
+ },
414
+ ...inspection.meta !== null && typeof inspection.meta === "object" && !Array.isArray(inspection.meta) ? { meta: cloneWorkspaceValue(inspection.meta) } : {},
415
+ ...serializeWorkspaceDdc(inspection.ddc) === void 0 ? {} : { ddc: serializeWorkspaceDdc(inspection.ddc) },
416
+ ...inspection.revision === void 0 ? {} : { revision: String(inspection.revision) }
417
+ };
418
+ }
419
+ function serializeWorkspaceState(state) {
420
+ return cloneWorkspaceValue({
421
+ apiVersion: VIEW_WORKSPACE_API_VERSION,
422
+ revision: state.revision,
423
+ selectedTabId: state.selectedTabId,
424
+ tabs: state.tabs,
425
+ project: serializeWorkspaceProject(state.project),
426
+ projectTarget: serializeWorkspaceTarget(state.projectTarget),
427
+ assets: Array.isArray(state.assets) ? state.assets.map((asset) => serializeWorkspaceAsset(asset)) : null,
428
+ preview: state.preview ? {
429
+ asset: state.preview.asset ? serializeWorkspaceAsset(state.preview.asset) : null,
430
+ target: serializeWorkspaceTarget(state.preview.target),
431
+ camera: state.preview.camera,
432
+ cameraVersion: state.preview.cameraVersion,
433
+ interaction: state.preview.interaction ? { interactionId: state.preview.interaction.interactionId } : null
434
+ } : null,
435
+ previews: (state.previews ?? []).map((preview) => ({ target: serializeWorkspaceTarget(preview.target), asset: preview.asset ? serializeWorkspaceAsset(preview.asset) : null })),
436
+ editorPreview: state.editorPreview ? { target: serializeWorkspaceTarget(state.editorPreview.target), asset: state.editorPreview.asset ? serializeWorkspaceAsset(state.editorPreview.asset) : null } : null,
437
+ play: state.play ? { target: serializeWorkspaceTarget(state.play.target), phase: state.play.phase } : null,
438
+ targetBinding: state.targetBinding ?? "editor",
439
+ inspection: serializeWorkspaceInspection(state.inspection),
440
+ openRequest: serializeWorkspaceOpenRequest(state.openRequest),
441
+ resourceOpens: serializeWorkspaceResourceOpens(state.resourceOpens),
442
+ sceneSelection: serializeWorkspaceSceneSelection(state.sceneSelection),
443
+ workspaceTargetLost: state.workspaceTargetLost === true
444
+ });
445
+ }
446
+
447
+ export {
448
+ createEmptySceneSelection,
449
+ VIEW_WORKSPACE_API_VERSION,
450
+ VIEW_WORKSPACE_SERVICES,
451
+ VIEW_FILE_GET_SERVICE,
452
+ VIEW_WORKSPACE_STATE_TOPIC,
453
+ VIEW_PAGE_TYPES,
454
+ VIEW_WORKSPACE_COOK_MODES,
455
+ VIEW_WORKSPACE_CORE_OPERATIONS,
456
+ VIEW_WORKSPACE_DOMAIN_OPERATIONS,
457
+ VIEW_WORKSPACE_OPERATIONS,
458
+ VIEW_DISPLAY_TAB_ID,
459
+ VIEW_WORKSPACE_TAB_ID,
460
+ isOpaqueWorkspaceDiagnostic,
461
+ ViewWorkspaceError,
462
+ workspaceError,
463
+ requireWorkspaceString,
464
+ requireWorkspaceObject,
465
+ requireWorkspaceInteger,
466
+ cloneWorkspaceValue,
467
+ jsonUnchanged,
468
+ workspaceUiFingerprint,
469
+ createWorkspaceRequest,
470
+ assertWorkspaceRequest,
471
+ workspaceCapabilities,
472
+ serializeWorkspaceTarget,
473
+ serializeWorkspaceProject,
474
+ serializeWorkspaceAsset,
475
+ serializeWorkspaceDdc,
476
+ serializeWorkspaceOpenRequest,
477
+ serializeWorkspaceResourceOpens,
478
+ workspaceInspectionFactRows,
479
+ serializeWorkspaceInspection,
480
+ serializeWorkspaceState
481
+ };
482
+ //# sourceMappingURL=chunk-32GD5LL6.mjs.map