@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,418 @@
1
+ import {
2
+ Button,
3
+ EmptyState,
4
+ IconButton,
5
+ PanelHeader,
6
+ SearchField,
7
+ Status,
8
+ Surface,
9
+ Text,
10
+ Toolbar
11
+ } from "./chunk-NJH2OJFC.mjs";
12
+ import {
13
+ getLocale,
14
+ subscribeLocale,
15
+ t
16
+ } from "./chunk-4GQWYU2V.mjs";
17
+ import {
18
+ PLUGINS_ACTIONS
19
+ } from "./chunk-QL7V6DK7.mjs";
20
+ import {
21
+ jsonUnchanged
22
+ } from "./chunk-32GD5LL6.mjs";
23
+
24
+ // packages/view-plugin-plugins/src/ui/PluginsPanel.tsx
25
+ import { useCallback as useCallback2, useEffect, useRef, useState } from "react";
26
+ import { Box, Package, RefreshCw, SearchX, ShieldCheck } from "lucide-react";
27
+
28
+ // packages/view-plugin-plugins/src/i18n/useTranslation.ts
29
+ import { useCallback, useSyncExternalStore } from "react";
30
+ function useTranslation() {
31
+ const locale = useSyncExternalStore(subscribeLocale, getLocale, getLocale);
32
+ const t2 = useCallback(
33
+ (key, vars) => t(key, vars),
34
+ [locale]
35
+ );
36
+ return { t: t2, locale };
37
+ }
38
+
39
+ // packages/view-plugin-plugins/src/ui/plugin-entries.mjs
40
+ var PLUGIN_TAGS = Object.freeze(["backend", "frontend", "game", "asset", "api", "cli"]);
41
+ function entriesFor(source) {
42
+ const { sourceId, kind, assembly, actual, plugins = [], api } = source;
43
+ const installed = new Map((actual?.entries ?? []).map((entry) => [entry.entryId ?? entry.id, entry]));
44
+ const records = plugins;
45
+ const declared = /* @__PURE__ */ new Map();
46
+ for (const entry of records) {
47
+ const id = entry.entryId ?? entry.id;
48
+ declared.set(id, { ...declared.get(id), ...entry });
49
+ }
50
+ const entries = /* @__PURE__ */ new Map();
51
+ for (const entry of declared.values()) {
52
+ const entryId = entry.entryId ?? entry.id;
53
+ if (!entryId) continue;
54
+ const module = entry.module ?? entry.name;
55
+ const observed = installed.get(entryId);
56
+ const realm = observed?.realm ?? entry.realm;
57
+ const operations = (api?.operations ?? []).filter(({ owner }) => owner && (entryId === `provider:${owner.sourceId}:${owner.providerId}` || entryId === owner.fiberId || entry.fiberId !== void 0 && String(entry.fiberId) === String(owner.fiberId)));
58
+ const tags = /* @__PURE__ */ new Set();
59
+ if (kind === "backend" || kind === "frontend") tags.add(kind);
60
+ const required = observed?.requiredServices ?? entry.requiredServices ?? [];
61
+ if (kind === "game" || kind === "engine" || realm === "engine" && required.some((service) => service === "world" || service === "gameHost")) tags.add("game");
62
+ if (entry.assetGuid) tags.add("asset");
63
+ if (operations.length) tags.add("api");
64
+ const commands = operations.map(({ descriptor }) => descriptor?.path ?? descriptor?.id?.split(".")).filter((path) => Array.isArray(path) && path.length > 0).map((path) => path.join(" "));
65
+ if (commands.length || entry.commandContract) tags.add("cli");
66
+ entries.set(entryId, {
67
+ sourceId,
68
+ entryId,
69
+ module,
70
+ label: module && module !== "unknown" ? module : entry.program || entry.assetGuid || "",
71
+ kind,
72
+ ...entry.assetGuid ? { assetGuid: entry.assetGuid } : {},
73
+ ...entry.program ? { program: entry.program } : {},
74
+ realm,
75
+ version: entry.program && entry.program === assembly?.root?.program ? assembly.root.codeRevision : "",
76
+ state: observed?.fiberState ?? entry.fiberState ?? (entry.disabled || entry.desiredState === "disabled" ? "disabled" : "unknown"),
77
+ tags: [...tags],
78
+ operations: operations.map((operation) => operation.descriptor.id),
79
+ commands
80
+ });
81
+ }
82
+ return [...entries.values()];
83
+ }
84
+ function pluginInspector(client) {
85
+ const inspect = typeof client?.inspect === "function" ? client.inspect : client?.inspectPlugins;
86
+ if (typeof client?.sources !== "function" || typeof inspect !== "function") return void 0;
87
+ return { sources: client.sources.bind(client), inspect: inspect.bind(client) };
88
+ }
89
+ async function loadPluginSnapshot({ client, hostAssembly, connectionId } = {}) {
90
+ const sources = [];
91
+ const issues = [];
92
+ const local = hostAssembly ? {
93
+ sourceId: connectionId ? `view-frontend:${connectionId}` : "view-frontend",
94
+ kind: "frontend",
95
+ assembly: hostAssembly.current,
96
+ actual: hostAssembly.status,
97
+ plugins: (hostAssembly.inspection ?? []).map((item) => ({
98
+ entryId: `fiber:${item.uid}`,
99
+ module: item.name,
100
+ fiberState: item.state,
101
+ ...item.origin?.guid ? { assetGuid: item.origin.guid } : {},
102
+ ...item.origin?.program ? { program: item.origin.program } : {},
103
+ missingServices: item.missingServices
104
+ })),
105
+ local: true
106
+ } : void 0;
107
+ const inspector = pluginInspector(client);
108
+ if (!inspector) issues.push({ sourceId: "remote-hosts", message: "Remote Host inspection unavailable. Only locally observed entries are shown." });
109
+ else {
110
+ try {
111
+ const listed = await inspector.sources();
112
+ const ownConnection = connectionId ?? listed.caller?.connectionId;
113
+ if (local && ownConnection) local.sourceId = `view-frontend:${ownConnection}`;
114
+ const remote = (listed.sources ?? []).filter((source) => !local || !ownConnection || source.sourceId !== local.sourceId && source.connection?.connectionId !== ownConnection);
115
+ const results = await Promise.allSettled(remote.map((source) => inspector.inspect({
116
+ sourceId: source.sourceId,
117
+ generation: source.generation
118
+ })));
119
+ results.forEach((result, index) => {
120
+ const source = remote[index];
121
+ if (result.status === "fulfilled") sources.push({ ...source, ...result.value });
122
+ else {
123
+ sources.push({ ...source, unavailable: true });
124
+ issues.push({ sourceId: source.sourceId, message: result.reason?.message ?? String(result.reason) });
125
+ }
126
+ });
127
+ } catch (cause) {
128
+ issues.push({ sourceId: "remote-hosts", message: cause?.message ?? String(cause) });
129
+ }
130
+ }
131
+ if (local) sources.push(local);
132
+ sources.sort((a, b) => (a.kind === "backend" ? 0 : 1) - (b.kind === "backend" ? 0 : 1) || a.sourceId.localeCompare(b.sourceId));
133
+ return { sources, entries: sources.flatMap(entriesFor), issues };
134
+ }
135
+ function filterPluginEntries(entries, { query = "", sourceId = "", tags = [] } = {}) {
136
+ const search = query.trim().toLowerCase();
137
+ return entries.filter((entry) => (!sourceId || entry.sourceId === sourceId) && tags.every((tag) => entry.tags.includes(tag)) && [
138
+ entry.entryId,
139
+ entry.module,
140
+ entry.assetGuid,
141
+ entry.program,
142
+ entry.sourceId,
143
+ entry.kind,
144
+ entry.realm,
145
+ entry.state,
146
+ ...entry.tags,
147
+ ...entry.operations,
148
+ ...entry.commands
149
+ ].join(" ").toLowerCase().includes(search));
150
+ }
151
+
152
+ // packages/view-plugin-plugins/src/ui/PluginFilters.tsx
153
+ import { jsx, jsxs } from "react/jsx-runtime";
154
+ function PluginFilters({ sources, sourceId, tags, counts, total, onSource, onTag, onReset }) {
155
+ const { t: t2 } = useTranslation();
156
+ return /* @__PURE__ */ jsxs("div", { className: "fx-plugins-filters", children: [
157
+ /* @__PURE__ */ jsxs("div", { className: "fx-plugins-filter-row", role: "group", "aria-label": t2("plugins.hosts"), children: [
158
+ /* @__PURE__ */ jsx(Text, { variant: "caption", className: "fx-plugins-filter-label", children: t2("plugins.hosts") }),
159
+ /* @__PURE__ */ jsxs(
160
+ Button,
161
+ {
162
+ size: "compact",
163
+ variant: "quiet",
164
+ className: "fx-plugin-filter",
165
+ "aria-pressed": !sourceId,
166
+ "data-plugin-host": "all",
167
+ onClick: () => onSource(""),
168
+ children: [
169
+ t2("plugins.allHosts"),
170
+ " ",
171
+ /* @__PURE__ */ jsx("span", { children: total })
172
+ ]
173
+ }
174
+ ),
175
+ sources.map((source) => /* @__PURE__ */ jsxs(
176
+ Button,
177
+ {
178
+ size: "compact",
179
+ variant: "quiet",
180
+ className: "fx-plugin-filter",
181
+ "aria-pressed": sourceId === source.sourceId,
182
+ title: source.sourceId,
183
+ "data-plugin-host": source.sourceId,
184
+ onClick: () => onSource(source.sourceId),
185
+ children: [
186
+ source.local ? t2("plugins.thisFrontend") : source.sourceId,
187
+ /* @__PURE__ */ jsxs("span", { children: [
188
+ counts[`host:${source.sourceId}`] ?? 0,
189
+ source.unavailable ? " !" : ""
190
+ ] })
191
+ ]
192
+ },
193
+ source.sourceId
194
+ ))
195
+ ] }),
196
+ /* @__PURE__ */ jsxs("div", { className: "fx-plugins-filter-row", role: "group", "aria-label": t2("plugins.tags"), children: [
197
+ /* @__PURE__ */ jsx(Text, { variant: "caption", className: "fx-plugins-filter-label", children: t2("plugins.tags") }),
198
+ PLUGIN_TAGS.map((tag) => /* @__PURE__ */ jsxs(
199
+ Button,
200
+ {
201
+ size: "compact",
202
+ variant: "quiet",
203
+ className: "fx-plugin-filter",
204
+ "aria-pressed": tags.includes(tag),
205
+ title: t2(`plugins.tagHelp.${tag}`),
206
+ "data-plugin-tag": tag,
207
+ onClick: () => onTag(tag),
208
+ children: [
209
+ t2(`plugins.tag.${tag}`),
210
+ " ",
211
+ /* @__PURE__ */ jsx("span", { children: counts[tag] ?? 0 })
212
+ ]
213
+ },
214
+ tag
215
+ )),
216
+ /* @__PURE__ */ jsx(Button, { size: "compact", variant: "quiet", "data-action": "plugins.reset", onClick: onReset, children: t2("plugins.reset") })
217
+ ] }),
218
+ /* @__PURE__ */ jsx(Text, { variant: "caption", className: "fx-plugins-filter-help", children: t2("plugins.filterHelp") })
219
+ ] });
220
+ }
221
+
222
+ // packages/view-plugin-plugins/src/ui/PluginsPanel.tsx
223
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
224
+ function pluginType(entry) {
225
+ return entry.kind ?? "unknown";
226
+ }
227
+ function stateTone(state) {
228
+ if (state === "active") return "success";
229
+ if (state === "failed" || state === "error") return "error";
230
+ if (state === "pending" || state === "loading" || state === "unloading") return "warning";
231
+ return "info";
232
+ }
233
+ function PluginsPanel(props) {
234
+ const { t: t2 } = useTranslation();
235
+ const inspector = props.client ?? props.workspaceClient;
236
+ const [entries, setEntries] = useState([]);
237
+ const [sources, setSources] = useState([]);
238
+ const [issues, setIssues] = useState([]);
239
+ const [sourceId, setSourceId] = useState("");
240
+ const [tags, setTags] = useState([]);
241
+ const [query, setQuery] = useState("");
242
+ const [error, setError] = useState(null);
243
+ const [loading, setLoading] = useState(false);
244
+ const [selectedEntryId, setSelectedEntryId] = useState(null);
245
+ const request = useRef(0);
246
+ const refresh = useCallback2(async () => {
247
+ const revision = ++request.current;
248
+ setLoading(true);
249
+ setError(null);
250
+ try {
251
+ const snapshot = await loadPluginSnapshot({ client: inspector, hostAssembly: props.hostAssembly, connectionId: props.connectionId });
252
+ if (revision !== request.current) return;
253
+ setEntries((current) => jsonUnchanged(current, snapshot.entries) ? current : snapshot.entries);
254
+ setSources((current) => jsonUnchanged(current, snapshot.sources) ? current : snapshot.sources);
255
+ setIssues((current) => jsonUnchanged(current, snapshot.issues) ? current : snapshot.issues);
256
+ } catch (cause) {
257
+ if (revision !== request.current) return;
258
+ setEntries([]);
259
+ setSources([]);
260
+ setIssues([]);
261
+ setError(cause instanceof Error ? cause.message : t2("plugins.loadErrorTitle"));
262
+ } finally {
263
+ if (revision === request.current) setLoading(false);
264
+ }
265
+ }, [inspector, props.hostAssembly, props.connectionId, t2]);
266
+ useEffect(() => {
267
+ void refresh();
268
+ return () => {
269
+ request.current += 1;
270
+ };
271
+ }, [refresh]);
272
+ const filtered = filterPluginEntries(entries, { query, sourceId, tags });
273
+ const candidates = filterPluginEntries(entries, { query, sourceId });
274
+ const counts = Object.fromEntries(PLUGIN_TAGS.map((tag) => [tag, candidates.filter((entry) => entry.tags.includes(tag)).length]));
275
+ for (const source of sources) counts[`host:${source.sourceId}`] = entries.filter((entry) => entry.sourceId === source.sourceId).length;
276
+ const reset = () => {
277
+ setQuery("");
278
+ setSourceId("");
279
+ setTags([]);
280
+ };
281
+ const hostTone = error ? "error" : loading || issues.length ? "warning" : "info";
282
+ const hostLabel = error ? t2("plugins.loadErrorTitle") : loading ? t2("plugins.loading") : issues.length ? t2("plugins.partial") : t2("plugins.observed");
283
+ return /* @__PURE__ */ jsxs2(Surface, { className: "fx-plugins fx-ui", tone: "sidebar", "data-testid": "panel-plugins", children: [
284
+ /* @__PURE__ */ jsx2(
285
+ PanelHeader,
286
+ {
287
+ className: "fx-plugins-header",
288
+ start: /* @__PURE__ */ jsx2(Text, { as: "h2", variant: "heading", children: t2("plugins.title") }),
289
+ center: /* @__PURE__ */ jsx2(Toolbar, { className: "fx-plugins-toolbar", "aria-label": t2("plugins.toolbar"), children: /* @__PURE__ */ jsx2(
290
+ SearchField,
291
+ {
292
+ "data-action": PLUGINS_ACTIONS.search,
293
+ label: t2("plugins.filterLabel"),
294
+ value: query,
295
+ onChange: (event) => setQuery(event.target.value),
296
+ onClear: () => setQuery(""),
297
+ placeholder: t2("plugins.filterPlaceholder")
298
+ }
299
+ ) }),
300
+ end: /* @__PURE__ */ jsx2(
301
+ IconButton,
302
+ {
303
+ "data-action": PLUGINS_ACTIONS.refresh,
304
+ label: t2("plugins.refresh"),
305
+ icon: /* @__PURE__ */ jsx2(RefreshCw, { className: "fx-icon" }),
306
+ variant: "quiet",
307
+ size: "compact",
308
+ disabled: loading,
309
+ onClick: () => void refresh()
310
+ }
311
+ )
312
+ }
313
+ ),
314
+ /* @__PURE__ */ jsx2(
315
+ PluginFilters,
316
+ {
317
+ sources,
318
+ sourceId,
319
+ tags,
320
+ counts,
321
+ total: entries.length,
322
+ onSource: setSourceId,
323
+ onTag: (tag) => setTags((current) => current.includes(tag) ? current.filter((value) => value !== tag) : [...current, tag]),
324
+ onReset: reset
325
+ }
326
+ ),
327
+ /* @__PURE__ */ jsxs2("div", { className: "fx-plugins-summary", children: [
328
+ /* @__PURE__ */ jsxs2(Text, { as: "span", variant: "caption", children: [
329
+ /* @__PURE__ */ jsx2(ShieldCheck, { className: "fx-icon" }),
330
+ " ",
331
+ t2("plugins.resultCount", { count: filtered.length, total: entries.length })
332
+ ] }),
333
+ /* @__PURE__ */ jsx2(Status, { tone: hostTone, children: hostLabel })
334
+ ] }),
335
+ issues.length > 0 ? /* @__PURE__ */ jsx2("div", { className: "fx-plugins-notice", role: "status", "data-testid": "plugins-partial", children: issues.map((issue) => /* @__PURE__ */ jsxs2("p", { children: [
336
+ issue.sourceId,
337
+ ": ",
338
+ issue.message
339
+ ] }, issue.sourceId)) }) : null,
340
+ /* @__PURE__ */ jsxs2("div", { className: "fx-plugins-list", children: [
341
+ !error && sources.filter((source) => filtered.some((entry) => entry.sourceId === source.sourceId)).map((source) => /* @__PURE__ */ jsxs2(
342
+ "section",
343
+ {
344
+ className: "fx-plugin-source",
345
+ "aria-label": source.sourceId,
346
+ children: [
347
+ /* @__PURE__ */ jsxs2("div", { className: "fx-plugin-source-header", children: [
348
+ /* @__PURE__ */ jsx2(Text, { variant: "caption", children: source.sourceId }),
349
+ /* @__PURE__ */ jsx2(Text, { variant: "caption", children: filtered.filter((entry) => entry.sourceId === source.sourceId).length })
350
+ ] }),
351
+ filtered.filter((entry) => entry.sourceId === source.sourceId).map((entry) => {
352
+ const entryId = `${entry.sourceId}:${entry.entryId}`;
353
+ const sourceId2 = entry.sourceId;
354
+ const label = entry.label || t2("plugins.unnamed");
355
+ const version = entry.version || "\u2014";
356
+ const selected = selectedEntryId === entryId;
357
+ const type = pluginType(entry);
358
+ return /* @__PURE__ */ jsxs2(
359
+ "button",
360
+ {
361
+ type: "button",
362
+ "data-action": PLUGINS_ACTIONS.select,
363
+ className: `fx-plugin-row${selected ? " selected" : ""}`,
364
+ "data-plugin-kind": type,
365
+ "data-plugin-tags": entry.tags.join(" "),
366
+ "data-source-id": sourceId2,
367
+ "data-entry-id": entry.entryId,
368
+ "data-asset-guid": entry.assetGuid,
369
+ "aria-pressed": selected,
370
+ onClick: () => setSelectedEntryId(entryId),
371
+ children: [
372
+ /* @__PURE__ */ jsx2("span", { className: "fx-plugin-icon", children: sourceId2.includes("view-plugin") || sourceId2.includes("viewport") ? /* @__PURE__ */ jsx2(Package, { size: 15 }) : /* @__PURE__ */ jsx2(Box, { size: 15 }) }),
373
+ /* @__PURE__ */ jsxs2("span", { className: "fx-plugin-copy", children: [
374
+ /* @__PURE__ */ jsx2("strong", { title: label, children: label }),
375
+ entry.program && entry.program !== label ? /* @__PURE__ */ jsx2("small", { title: entry.program, children: entry.program }) : null,
376
+ entry.assetGuid ? /* @__PURE__ */ jsxs2("small", { title: t2("plugins.sourceAssetGuidHelp"), children: [
377
+ t2("plugins.sourceAssetGuid"),
378
+ ": ",
379
+ entry.assetGuid
380
+ ] }) : null,
381
+ selected && entry.operations.length > 0 ? /* @__PURE__ */ jsx2("small", { className: "fx-plugin-operations", children: entry.commands.join(" \xB7 ") }) : null
382
+ ] }),
383
+ /* @__PURE__ */ jsx2("span", { className: "fx-plugin-tags", children: entry.tags.map((tag) => /* @__PURE__ */ jsx2(Status, { className: "fx-plugin-type", tone: "info", pill: true, icon: null, children: t2(`plugins.tag.${tag}`) }, tag)) }),
384
+ /* @__PURE__ */ jsx2("span", { className: "fx-plugin-version", children: version }),
385
+ /* @__PURE__ */ jsx2(Status, { className: "fx-plugin-state", tone: stateTone(entry.state), pill: true, children: entry.state })
386
+ ]
387
+ },
388
+ entryId
389
+ );
390
+ })
391
+ ]
392
+ },
393
+ source.sourceId
394
+ )),
395
+ !error && !loading && filtered.length === 0 ? /* @__PURE__ */ jsx2(
396
+ EmptyState,
397
+ {
398
+ icon: /* @__PURE__ */ jsx2(SearchX, { className: "fx-plugins-empty-icon" }),
399
+ title: entries.length === 0 ? t2("plugins.empty") : t2("plugins.emptyTitle"),
400
+ description: tags.includes("game") && !entries.some((entry) => entry.tags.includes("game")) ? t2("plugins.gameUnavailable") : entries.length === 0 ? t2("plugins.unavailable") : t2("plugins.emptyDescription")
401
+ }
402
+ ) : null,
403
+ error ? /* @__PURE__ */ jsx2(
404
+ EmptyState,
405
+ {
406
+ title: t2("plugins.loadErrorTitle"),
407
+ description: error,
408
+ action: /* @__PURE__ */ jsx2(IconButton, { label: t2("plugins.retry"), icon: /* @__PURE__ */ jsx2(RefreshCw, { className: "fx-icon" }), onClick: () => void refresh() })
409
+ }
410
+ ) : null
411
+ ] })
412
+ ] });
413
+ }
414
+
415
+ export {
416
+ PluginsPanel
417
+ };
418
+ //# sourceMappingURL=chunk-QLZQGZDC.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/view-plugin-plugins/src/ui/PluginsPanel.tsx", "../../../packages/view-plugin-plugins/src/i18n/useTranslation.ts", "../../../packages/view-plugin-plugins/src/ui/plugin-entries.mjs", "../../../packages/view-plugin-plugins/src/ui/PluginFilters.tsx"],
4
+ "sourcesContent": ["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { jsonUnchanged } from '@forgeax/view-workspace-core/contract';\nimport {\n EmptyState,\n IconButton,\n PanelHeader,\n SearchField,\n Status,\n Surface,\n Text,\n Toolbar,\n type StatusTone,\n} from '@forgeax/view-components';\nimport { Box, Package, RefreshCw, SearchX, ShieldCheck } from 'lucide-react';\nimport { useTranslation } from '../i18n/useTranslation';\nimport { PLUGINS_ACTIONS } from '../schema.mjs';\n\nimport { filterPluginEntries, loadPluginSnapshot, PLUGIN_TAGS } from './plugin-entries.mjs';\nimport { PluginFilters, type PluginSource } from './PluginFilters';\n\ntype PluginEntry = {\n entryId: string;\n module: string;\n sourceId: string;\n label: string;\n version: string;\n state: string;\n kind?: string;\n tags: string[];\n operations: string[];\n commands: string[];\n assetGuid?: string;\n program?: string;\n};\n\ntype PluginsInspectorClient = {\n sources?: (options?: { signal?: AbortSignal }) => Promise<unknown>;\n inspect?: (options: {\n sourceId: string;\n generation: number;\n signal?: AbortSignal;\n }) => Promise<unknown>;\n inspectPlugins?: PluginsInspectorClient['inspect'];\n};\n\nfunction pluginType(entry: PluginEntry) {\n return entry.kind ?? 'unknown';\n}\n\nfunction stateTone(state: string): StatusTone {\n if (state === 'active') return 'success';\n if (state === 'failed' || state === 'error') return 'error';\n if (state === 'pending' || state === 'loading' || state === 'unloading') return 'warning';\n return 'info';\n}\n\nexport function PluginsPanel(props: { client?: PluginsInspectorClient; workspaceClient?: PluginsInspectorClient; hostAssembly?: unknown; connectionId?: string }) {\n const { t } = useTranslation();\n const inspector = props.client ?? props.workspaceClient;\n const [entries, setEntries] = useState<PluginEntry[]>([]);\n const [sources, setSources] = useState<PluginSource[]>([]);\n const [issues, setIssues] = useState<{ sourceId: string; message: string }[]>([]);\n const [sourceId, setSourceId] = useState('');\n const [tags, setTags] = useState<string[]>([]);\n const [query, setQuery] = useState('');\n const [error, setError] = useState<string | null>(null);\n const [loading, setLoading] = useState(false);\n const [selectedEntryId, setSelectedEntryId] = useState<string | null>(null);\n\n const request = useRef(0);\n const refresh = useCallback(async () => {\n const revision = ++request.current;\n setLoading(true);\n setError(null);\n try {\n const snapshot = await loadPluginSnapshot({ client: inspector, hostAssembly: props.hostAssembly, connectionId: props.connectionId });\n if (revision !== request.current) return;\n setEntries((current) => jsonUnchanged(current, snapshot.entries) ? current : snapshot.entries);\n setSources((current) => jsonUnchanged(current, snapshot.sources) ? current : snapshot.sources);\n setIssues((current) => jsonUnchanged(current, snapshot.issues) ? current : snapshot.issues);\n } catch (cause) {\n if (revision !== request.current) return;\n setEntries([]);\n setSources([]);\n setIssues([]);\n setError(cause instanceof Error ? cause.message : t('plugins.loadErrorTitle'));\n } finally {\n if (revision === request.current) setLoading(false);\n }\n }, [inspector, props.hostAssembly, props.connectionId, t]);\n\n useEffect(() => {\n void refresh();\n return () => { request.current += 1; };\n }, [refresh]);\n\n const filtered: PluginEntry[] = filterPluginEntries(entries, { query, sourceId, tags });\n const candidates: PluginEntry[] = filterPluginEntries(entries, { query, sourceId });\n const counts: Record<string, number> = Object.fromEntries(PLUGIN_TAGS.map((tag: string) => [tag, candidates.filter(entry => entry.tags.includes(tag)).length]));\n for (const source of sources) counts[`host:${source.sourceId}`] = entries.filter(entry => entry.sourceId === source.sourceId).length;\n const reset = () => { setQuery(''); setSourceId(''); setTags([]); };\n\n const hostTone: StatusTone = error ? 'error' : loading || issues.length ? 'warning' : 'info';\n const hostLabel = error\n ? t('plugins.loadErrorTitle')\n : loading\n ? t('plugins.loading')\n : issues.length ? t('plugins.partial') : t('plugins.observed');\n\n return (\n <Surface className=\"fx-plugins fx-ui\" tone=\"sidebar\" data-testid=\"panel-plugins\">\n <PanelHeader\n className=\"fx-plugins-header\"\n start={<Text as=\"h2\" variant=\"heading\">{t('plugins.title')}</Text>}\n center={(\n <Toolbar className=\"fx-plugins-toolbar\" aria-label={t('plugins.toolbar')}>\n <SearchField\n data-action={PLUGINS_ACTIONS.search}\n label={t('plugins.filterLabel')}\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n onClear={() => setQuery('')}\n placeholder={t('plugins.filterPlaceholder')}\n />\n </Toolbar>\n )}\n end={(\n <IconButton\n data-action={PLUGINS_ACTIONS.refresh}\n label={t('plugins.refresh')}\n icon={<RefreshCw className=\"fx-icon\" />}\n variant=\"quiet\"\n size=\"compact\"\n disabled={loading}\n onClick={() => void refresh()}\n />\n )}\n />\n <PluginFilters sources={sources} sourceId={sourceId} tags={tags} counts={counts} total={entries.length}\n onSource={setSourceId} onTag={tag => setTags(current => current.includes(tag) ? current.filter(value => value !== tag) : [...current, tag])}\n onReset={reset} />\n <div className=\"fx-plugins-summary\">\n <Text as=\"span\" variant=\"caption\">\n <ShieldCheck className=\"fx-icon\" /> {t('plugins.resultCount', { count: filtered.length, total: entries.length })}\n </Text>\n <Status tone={hostTone}>{hostLabel}</Status>\n </div>\n {issues.length > 0 ? <div className=\"fx-plugins-notice\" role=\"status\" data-testid=\"plugins-partial\">\n {issues.map(issue => <p key={issue.sourceId}>{issue.sourceId}: {issue.message}</p>)}\n </div> : null}\n <div className=\"fx-plugins-list\">\n {!error && sources.filter(source => filtered.some(entry => entry.sourceId === source.sourceId)).map(source => <section\n key={source.sourceId} className=\"fx-plugin-source\" aria-label={source.sourceId}>\n <div className=\"fx-plugin-source-header\"><Text variant=\"caption\">{source.sourceId}</Text>\n <Text variant=\"caption\">{filtered.filter(entry => entry.sourceId === source.sourceId).length}</Text></div>\n {filtered.filter(entry => entry.sourceId === source.sourceId).map((entry) => {\n const entryId = `${entry.sourceId}:${entry.entryId}`;\n const sourceId = entry.sourceId;\n const label = entry.label || t('plugins.unnamed');\n const version = entry.version || '\u2014';\n const selected = selectedEntryId === entryId;\n const type = pluginType(entry);\n return (\n <button\n type=\"button\"\n key={entryId}\n data-action={PLUGINS_ACTIONS.select}\n className={`fx-plugin-row${selected ? ' selected' : ''}`}\n data-plugin-kind={type}\n data-plugin-tags={entry.tags.join(' ')}\n data-source-id={sourceId}\n data-entry-id={entry.entryId}\n data-asset-guid={entry.assetGuid}\n aria-pressed={selected}\n onClick={() => setSelectedEntryId(entryId)}\n >\n <span className=\"fx-plugin-icon\">{sourceId.includes('view-plugin') || sourceId.includes('viewport') ? <Package size={15} /> : <Box size={15} />}</span>\n <span className=\"fx-plugin-copy\">\n <strong title={label}>{label}</strong>\n {entry.program && entry.program !== label ? <small title={entry.program}>{entry.program}</small> : null}\n {entry.assetGuid ? <small title={t('plugins.sourceAssetGuidHelp')}>{t('plugins.sourceAssetGuid')}: {entry.assetGuid}</small> : null}\n {selected && entry.operations.length > 0 ? <small className=\"fx-plugin-operations\">{entry.commands.join(' \u00B7 ')}</small> : null}\n </span>\n <span className=\"fx-plugin-tags\">{entry.tags.map(tag => <Status key={tag} className=\"fx-plugin-type\" tone=\"info\" pill icon={null}>{t(`plugins.tag.${tag}`)}</Status>)}</span>\n <span className=\"fx-plugin-version\">{version}</span>\n <Status className=\"fx-plugin-state\" tone={stateTone(entry.state)} pill>\n {entry.state}\n </Status>\n </button>\n );\n })}</section>)}\n {!error && !loading && filtered.length === 0 ? (\n <EmptyState\n icon={<SearchX className=\"fx-plugins-empty-icon\" />}\n title={entries.length === 0 ? t('plugins.empty') : t('plugins.emptyTitle')}\n description={tags.includes('game') && !entries.some(entry => entry.tags.includes('game'))\n ? t('plugins.gameUnavailable') : entries.length === 0 ? t('plugins.unavailable') : t('plugins.emptyDescription')}\n />\n ) : null}\n {error ? (\n <EmptyState\n title={t('plugins.loadErrorTitle')}\n description={error}\n action={<IconButton label={t('plugins.retry')} icon={<RefreshCw className=\"fx-icon\" />} onClick={() => void refresh()} />}\n />\n ) : null}\n </div>\n </Surface>\n );\n}\n", "import { useCallback, useSyncExternalStore } from 'react';\n\nimport { getLocale, subscribeLocale, t as translate } from './index.mjs';\n\nexport function useTranslation() {\n const locale = useSyncExternalStore(subscribeLocale, getLocale, getLocale);\n const t = useCallback(\n (key: string, vars?: Record<string, string | number>) => translate(key, vars),\n [locale],\n );\n return { t, locale };\n}\n", "export const PLUGIN_TAGS = Object.freeze(['backend', 'frontend', 'game', 'asset', 'api', 'cli']);\n\nfunction entriesFor(source) {\n const { sourceId, kind, assembly, actual, plugins = [], api } = source;\n const installed = new Map((actual?.entries ?? []).map(entry => [entry.entryId ?? entry.id, entry]));\n // Backend assembly.current is the FRONTEND projection, not backend installations.\n const records = plugins;\n const declared = new Map();\n for (const entry of records) {\n const id = entry.entryId ?? entry.id;\n declared.set(id, { ...declared.get(id), ...entry });\n }\n const entries = new Map();\n for (const entry of declared.values()) {\n const entryId = entry.entryId ?? entry.id;\n if (!entryId) continue;\n const module = entry.module ?? entry.name;\n const observed = installed.get(entryId);\n const realm = observed?.realm ?? entry.realm;\n const operations = (api?.operations ?? []).filter(({ owner }) => owner && (\n entryId === `provider:${owner.sourceId}:${owner.providerId}` ||\n entryId === owner.fiberId || (entry.fiberId !== undefined && String(entry.fiberId) === String(owner.fiberId))\n ));\n const tags = new Set();\n if (kind === 'backend' || kind === 'frontend') tags.add(kind);\n // A View frontend may use Engine's engine realm. Realm alone is not gameplay evidence.\n const required = observed?.requiredServices ?? entry.requiredServices ?? [];\n if (kind === 'game' || kind === 'engine' ||\n (realm === 'engine' && required.some(service => service === 'world' || service === 'gameHost'))) tags.add('game');\n if (entry.assetGuid) tags.add('asset');\n if (operations.length) tags.add('api');\n const commands = operations.map(({ descriptor }) => descriptor?.path ?? descriptor?.id?.split('.'))\n .filter(path => Array.isArray(path) && path.length > 0).map(path => path.join(' '));\n if (commands.length || entry.commandContract) tags.add('cli');\n entries.set(entryId, {\n sourceId, entryId, module,\n label: module && module !== 'unknown' ? module : entry.program || entry.assetGuid || '', kind,\n ...(entry.assetGuid ? { assetGuid: entry.assetGuid } : {}),\n ...(entry.program ? { program: entry.program } : {}),\n realm,\n version: entry.program && entry.program === assembly?.root?.program ? assembly.root.codeRevision : '',\n state: observed?.fiberState ?? entry.fiberState ?? (entry.disabled || entry.desiredState === 'disabled' ? 'disabled' : 'unknown'),\n tags: [...tags],\n operations: operations.map(operation => operation.descriptor.id),\n commands,\n });\n }\n return [...entries.values()];\n}\n\n/** Both public clients are supported; methods must keep their transport-bound receiver. */\nexport function pluginInspector(client) {\n const inspect = typeof client?.inspect === 'function' ? client.inspect : client?.inspectPlugins;\n if (typeof client?.sources !== 'function' || typeof inspect !== 'function') return undefined;\n return { sources: client.sources.bind(client), inspect: inspect.bind(client) };\n}\n\n/** One failed or unavailable source must not masquerade as a complete frontend-only inventory. */\nexport async function loadPluginSnapshot({ client, hostAssembly, connectionId } = {}) {\n const sources = [];\n const issues = [];\n const local = hostAssembly ? {\n sourceId: connectionId ? `view-frontend:${connectionId}` : 'view-frontend',\n kind: 'frontend', assembly: hostAssembly.current, actual: hostAssembly.status,\n plugins: (hostAssembly.inspection ?? []).map(item => ({\n entryId: `fiber:${item.uid}`,\n module: item.name,\n fiberState: item.state,\n ...(item.origin?.guid ? { assetGuid: item.origin.guid } : {}),\n ...(item.origin?.program ? { program: item.origin.program } : {}),\n missingServices: item.missingServices,\n })), local: true,\n } : undefined;\n const inspector = pluginInspector(client);\n if (!inspector) issues.push({ sourceId: 'remote-hosts', message: 'Remote Host inspection unavailable. Only locally observed entries are shown.' });\n else {\n try {\n const listed = await inspector.sources();\n const ownConnection = connectionId ?? listed.caller?.connectionId;\n if (local && ownConnection) local.sourceId = `view-frontend:${ownConnection}`;\n const remote = (listed.sources ?? []).filter(source => !local || !ownConnection ||\n (source.sourceId !== local.sourceId && source.connection?.connectionId !== ownConnection));\n const results = await Promise.allSettled(remote.map(source => inspector.inspect({\n sourceId: source.sourceId, generation: source.generation,\n })));\n results.forEach((result, index) => {\n const source = remote[index];\n if (result.status === 'fulfilled') sources.push({ ...source, ...result.value });\n else {\n sources.push({ ...source, unavailable: true });\n issues.push({ sourceId: source.sourceId, message: result.reason?.message ?? String(result.reason) });\n }\n });\n } catch (cause) {\n issues.push({ sourceId: 'remote-hosts', message: cause?.message ?? String(cause) });\n }\n }\n if (local) sources.push(local);\n sources.sort((a, b) => (a.kind === 'backend' ? 0 : 1) - (b.kind === 'backend' ? 0 : 1) || a.sourceId.localeCompare(b.sourceId));\n return { sources, entries: sources.flatMap(entriesFor), issues };\n}\n\n/** Entry-only callers require complete inspection; the UI can display partial snapshots. */\nexport async function loadPluginEntries(options) {\n const snapshot = await loadPluginSnapshot(options);\n if (snapshot.issues.length) throw new Error(snapshot.issues.map(issue => issue.message).join('; '));\n return snapshot.entries;\n}\n\n/** Search and Host selection intersect; selected capability tags use AND semantics.\n * @param {any[]} entries\n * @param {{ query?: string, sourceId?: string, tags?: string[] }} options\n */\nexport function filterPluginEntries(entries, { query = '', sourceId = '', tags = [] } = {}) {\n const search = query.trim().toLowerCase();\n return entries.filter(entry => (!sourceId || entry.sourceId === sourceId) &&\n tags.every(tag => entry.tags.includes(tag)) &&\n [entry.entryId, entry.module, entry.assetGuid, entry.program, entry.sourceId, entry.kind, entry.realm, entry.state,\n ...entry.tags, ...entry.operations, ...entry.commands].join(' ').toLowerCase().includes(search));\n}\n", "import { Button, Text } from '@forgeax/view-components';\nimport { useTranslation } from '../i18n/useTranslation';\nimport { PLUGIN_TAGS } from './plugin-entries.mjs';\n\nexport type PluginSource = { sourceId: string; kind: string; local?: boolean; unavailable?: boolean };\n\nexport function PluginFilters({ sources, sourceId, tags, counts, total, onSource, onTag, onReset }: {\n sources: PluginSource[];\n sourceId: string;\n tags: string[];\n counts: Record<string, number>;\n total: number;\n onSource: (sourceId: string) => void;\n onTag: (tag: string) => void;\n onReset: () => void;\n}) {\n const { t } = useTranslation();\n return <div className=\"fx-plugins-filters\">\n <div className=\"fx-plugins-filter-row\" role=\"group\" aria-label={t('plugins.hosts')}>\n <Text variant=\"caption\" className=\"fx-plugins-filter-label\">{t('plugins.hosts')}</Text>\n <Button size=\"compact\" variant=\"quiet\" className=\"fx-plugin-filter\" aria-pressed={!sourceId}\n data-plugin-host=\"all\" onClick={() => onSource('')}>{t('plugins.allHosts')} <span>{total}</span></Button>\n {sources.map(source => <Button key={source.sourceId} size=\"compact\" variant=\"quiet\"\n className=\"fx-plugin-filter\" aria-pressed={sourceId === source.sourceId} title={source.sourceId}\n data-plugin-host={source.sourceId} onClick={() => onSource(source.sourceId)}>\n {source.local ? t('plugins.thisFrontend') : source.sourceId}\n <span>{counts[`host:${source.sourceId}`] ?? 0}{source.unavailable ? ' !' : ''}</span>\n </Button>)}\n </div>\n <div className=\"fx-plugins-filter-row\" role=\"group\" aria-label={t('plugins.tags')}>\n <Text variant=\"caption\" className=\"fx-plugins-filter-label\">{t('plugins.tags')}</Text>\n {PLUGIN_TAGS.map((tag: string) => <Button key={tag} size=\"compact\" variant=\"quiet\"\n className=\"fx-plugin-filter\" aria-pressed={tags.includes(tag)} title={t(`plugins.tagHelp.${tag}`)}\n data-plugin-tag={tag} onClick={() => onTag(tag)}>{t(`plugins.tag.${tag}`)} <span>{counts[tag] ?? 0}</span></Button>)}\n <Button size=\"compact\" variant=\"quiet\" data-action=\"plugins.reset\" onClick={onReset}>{t('plugins.reset')}</Button>\n </div>\n <Text variant=\"caption\" className=\"fx-plugins-filter-help\">{t('plugins.filterHelp')}</Text>\n </div>;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["useCallback", "t", "t", "jsx", "jsxs", "t", "useCallback", "sourceId"]
7
+ }