@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-plugin-plugins/src/runtime.mjs"],
4
+ "sourcesContent": ["import { createWorkspaceId } from '@forgeax/view-workspace-core/id';\nimport { reportWorkspaceCommandError } from '@forgeax/view-workspace-core/command-error';\nimport {\n VIEW_WORKSPACE_API_VERSION,\n VIEW_WORKSPACE_DOMAIN_OPERATIONS,\n ViewWorkspaceError,\n cloneWorkspaceValue,\n jsonUnchanged,\n requireWorkspaceObject,\n requireWorkspaceString,\n workspaceError,\n} from '@forgeax/view-workspace-core/contract';\nimport { PLUGINS_OPERATION_DESCRIPTIONS } from './api.mjs';\nimport { BACKEND_MODULE, BACKEND_PLUGIN_ID } from './identity.mjs';\nimport { defineTool } from '@forgeax/engine-tool-runtime';\nimport { inspectPluginFiber, registerTools } from '@forgeax/engine-plugin';\n\nexport const VIEW_INSPECTOR_API_VERSION = 'forgeax.view.inspector/1';\nexport const VIEW_INSPECTOR_SERVICES = Object.freeze({\n sources: 'forgeax.view.inspector.sources',\n inspect: 'forgeax.view.inspector.inspect',\n watch: 'forgeax.view.inspector.watch',\n unwatch: 'forgeax.view.inspector.unwatch',\n report: 'forgeax.view.inspector.report',\n});\nexport const VIEW_INSPECTOR_TOPIC = 'forgeax.view.inspector.changed';\nexport const VIEW_STATUS_OPERATION = 'view.status';\nexport const VIEW_INSPECTOR_OPERATIONS = Object.freeze(\n PLUGINS_OPERATION_DESCRIPTIONS.map((description) => description.id),\n);\nconst VIEW_INSPECTOR_INTERNAL_OPERATIONS = Object.freeze(['plugins.report', 'plugins.unwatch']);\n\nconst INSPECTOR_OPERATION_SET = new Set([\n ...VIEW_INSPECTOR_OPERATIONS,\n ...VIEW_INSPECTOR_INTERNAL_OPERATIONS,\n]);\nconst WORKSPACE_OPERATION_SET = new Set(VIEW_WORKSPACE_DOMAIN_OPERATIONS);\nconst MAX_TEXT = 512;\nconst SAFE_ERROR_FIELDS = new Set([\n 'actual',\n 'actualGeneration',\n 'expectedGeneration',\n 'fiberState',\n 'generation',\n 'module',\n 'operation',\n 'phase',\n 'providerId',\n 'reason',\n 'remoteCode',\n 'runId',\n 'service',\n 'sourceId',\n 'watchId',\n]);\n\nfunction redactCredentials(value) {\n return value\n .replace(/([a-z][a-z\\d+.-]*:\\/\\/)([^\\s/?#]+)@/gi, '$1[redacted]@')\n .replace(\n /\\b(authorization|proxy-authorization)\\b\\s*([:=])\\s*(?:(?:bearer|basic)\\s+)?[^\\s,;)}\\]]+/gi,\n (_match, key, separator) => `${key}${separator}[redacted]`,\n )\n .replace(/\\b(bearer|basic)\\s+[a-z\\d._~+\\/-]+=*/gi, '$1 [redacted]')\n .replace(\n /([?&](?:token|password|passwd|secret|authorization|api[-_]?key|access[-_]?token)=)[^&#\\s,;)}\\]]+/gi,\n '$1[redacted]',\n )\n .replace(\n /\\b(token|password|passwd|secret|authorization|api[-_]?key|access[-_]?token)\\b\\s*([:=])\\s*(\"[^\"]*\"|'[^']*'|\\[[^\\]]*\\]|[^\\s,;)}\\]]+)/gi,\n (_match, key, separator) => `${key}${separator}[redacted]`,\n )\n .replace(/\\b(secret|password|passwd|token)(?:[-_][a-z\\d][a-z\\d_.-]*)?\\b/gi, '[redacted]')\n .replace(/\\b(secret|password|passwd|token|api[-_]?key|access[-_]?token)[-_][a-z\\d][a-z\\d_.-]*\\b/gi, '[redacted]');\n}\n\nfunction safeText(value, fallback = 'unknown') {\n const text = typeof value === 'string' ? value : value === undefined ? fallback : String(value);\n const redacted = redactCredentials(text);\n return redacted.length > MAX_TEXT ? `${redacted.slice(0, MAX_TEXT)}...` : redacted;\n}\n\nfunction safeStringArray(value) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter((entry) => typeof entry === 'string')\n .slice(0, 64)\n .map((entry) => safeText(entry));\n}\n\nfunction safeClone(value) {\n try {\n return cloneWorkspaceValue(value);\n } catch {\n return null;\n }\n}\n\nexport function safeDetail(value) {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return undefined;\n const result = {};\n for (const [key, entry] of Object.entries(value)) {\n if (!SAFE_ERROR_FIELDS.has(key)) continue;\n if (\n typeof entry === 'string' ||\n typeof entry === 'number' ||\n typeof entry === 'boolean' ||\n entry === null\n ) {\n result[key] = typeof entry === 'string' ? safeText(entry) : entry;\n } else if (Array.isArray(entry) && entry.every((item) => typeof item === 'string')) {\n result[key] = entry.map((item) => safeText(item));\n }\n }\n return Object.keys(result).length === 0 ? undefined : result;\n}\n\nexport function safeError(error) {\n if (error === undefined || error === null) return undefined;\n const detail = error?.detail;\n const safe = safeDetail(detail);\n return {\n code: safeText(error?.code, 'unknown-error'),\n expected: safeText(error?.expected),\n hint: safeText(error?.hint),\n ...(safe === undefined ? {} : { detail: safe }),\n };\n}\n\nfunction safeSchema(value) {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return undefined;\n const allowed = new Set([\n 'additionalProperties',\n 'const',\n 'description',\n 'enum',\n 'items',\n 'maximum',\n 'minimum',\n 'properties',\n 'required',\n 'type',\n ]);\n const project = (schema) => {\n if (!schema || typeof schema !== 'object' || Array.isArray(schema)) return undefined;\n const result = {};\n for (const [key, entry] of Object.entries(schema)) {\n if (!allowed.has(key)) continue;\n if (key === 'properties' && entry && typeof entry === 'object' && !Array.isArray(entry)) {\n result.properties = Object.fromEntries(\n Object.entries(entry)\n .map(([name, child]) => [name, project(child)])\n .filter(([, child]) => child !== undefined),\n );\n continue;\n }\n if (key === 'items') {\n const child = project(entry);\n if (child !== undefined) result.items = child;\n continue;\n }\n if (key === 'description') result.description = safeText(entry, '');\n else if (Array.isArray(entry)) result[key] = entry.filter((item) => typeof item === 'string').map(safeText);\n else if (typeof entry === 'string' || typeof entry === 'number' || typeof entry === 'boolean') result[key] = entry;\n }\n return result;\n };\n return project(value);\n}\n\nfunction safeOwner(owner) {\n if (!owner || typeof owner !== 'object') return null;\n return {\n providerId: safeText(owner.providerId),\n sourceId: safeText(owner.sourceId),\n generation: Number.isSafeInteger(owner.generation) ? owner.generation : null,\n realm: safeText(owner.realm),\n ...(owner.fiberId === undefined ? {} : { fiberId: safeText(owner.fiberId) }),\n ...(owner.module === undefined ? {} : { module: safeText(owner.module) }),\n };\n}\n\nfunction safeToolDescriptor(descriptor) {\n if (!descriptor || typeof descriptor !== 'object') return null;\n return {\n id: safeText(descriptor.id),\n path: Array.isArray(descriptor.path)\n ? descriptor.path.filter((value) => typeof value === 'string').map((value) => safeText(value))\n : safeText(descriptor.id).split('.'),\n title: safeText(descriptor.title),\n summary: safeText(descriptor.summary),\n realm: safeText(descriptor.realm),\n evidence: Array.isArray(descriptor.evidence)\n ? descriptor.evidence.filter((value) => typeof value === 'string').map((value) => safeText(value))\n : [],\n ...(descriptor.inputSchema === undefined ? {} : { inputSchema: safeSchema(descriptor.inputSchema) }),\n ...(descriptor.outputSchema === undefined ? {} : { outputSchema: safeSchema(descriptor.outputSchema) }),\n ...(Array.isArray(descriptor.capabilities)\n ? { capabilities: descriptor.capabilities.map((value) => safeText(value)) }\n : {}),\n ...(Array.isArray(descriptor.errors)\n ? { errors: descriptor.errors.map((value) => safeText(value)) }\n : {}),\n };\n}\n\nfunction safePluginEntry(entry) {\n if (!entry || typeof entry !== 'object') return null;\n const desiredState =\n entry.desiredState === 'disabled' || entry.disabled === true ? 'disabled' : 'enabled';\n const state =\n typeof (entry.fiberState ?? entry.state) === 'string' &&\n ['pending', 'loading', 'active', 'failed', 'disposed', 'disabled', 'unloading', 'unknown'].includes(\n entry.fiberState ?? entry.state,\n )\n ? entry.fiberState ?? entry.state\n : undefined;\n const origin = entry.origin && typeof entry.origin === 'object' ? entry.origin : undefined;\n return {\n entryId: safeText(entry.entryId ?? entry.id ?? (entry.uid == null ? undefined : `fiber:${entry.uid}`)),\n module: safeText(entry.module ?? entry.name),\n realm: safeText(entry.realm),\n desiredState,\n ...((origin?.guid ?? entry.assetGuid) === undefined ? {} : { assetGuid: safeText(origin?.guid ?? entry.assetGuid) }),\n ...((origin?.program ?? entry.program) === undefined ? {} : { program: safeText(origin?.program ?? entry.program) }),\n ...(entry.fiberId === undefined ? {} : { fiberId: safeText(entry.fiberId) }),\n ...(entry.parent === undefined ? {} : { parent: safeText(entry.parent) }),\n ...(safeStringArray(entry.requiredServices) === undefined\n ? {}\n : { requiredServices: safeStringArray(entry.requiredServices) }),\n ...(safeStringArray(entry.providedServices) === undefined\n ? {}\n : { providedServices: safeStringArray(entry.providedServices) }),\n ...(safeStringArray(entry.missingServices) === undefined\n ? {}\n : { missingServices: safeStringArray(entry.missingServices) }),\n ...(entry.configDigest === undefined ? {} : { configDigest: safeText(entry.configDigest) }),\n ...(state === undefined ? {} : { fiberState: state }),\n ...(entry.failure === undefined ? {} : { failure: safeError(entry.failure) }),\n };\n}\n\nfunction safeToolSnapshot(snapshot) {\n if (!snapshot || typeof snapshot !== 'object') {\n return { providers: [], operations: [], state: 'unavailable' };\n }\n return {\n providers: Array.isArray(snapshot.providers)\n ? snapshot.providers.map((provider) => ({\n owner: safeOwner(provider.owner),\n state: safeText(provider.state),\n callable: provider.callable === true,\n ...(provider.fiberState === undefined ? {} : { fiberState: safeText(provider.fiberState) }),\n operationIds: Array.isArray(provider.operationIds)\n ? provider.operationIds.map((value) => safeText(value))\n : [],\n }))\n : [],\n operations: Array.isArray(snapshot.operations)\n ? snapshot.operations.map((operation) => ({\n descriptor: safeToolDescriptor(operation.descriptor),\n owner: safeOwner(operation.owner),\n providerState: safeText(operation.providerState),\n declared: operation.declared === true,\n callable: operation.callable === true,\n ...(operation.fiberState === undefined ? {} : { fiberState: safeText(operation.fiberState) }),\n }))\n : [],\n };\n}\n\nfunction safeProviderPlugins(snapshot) {\n if (!snapshot || !Array.isArray(snapshot.providers)) return [];\n return snapshot.providers\n .map((provider) => {\n const owner = provider?.owner;\n if (!owner || typeof owner !== 'object') return null;\n return safePluginEntry({\n entryId: `provider:${owner.sourceId ?? 'unknown'}:${owner.providerId ?? 'unknown'}`,\n module: owner.module ?? 'tool-provider',\n realm: owner.realm,\n fiberState: provider.fiberState ?? provider.state,\n });\n })\n .filter((entry) => entry !== null);\n}\n\nfunction actualPluginEntries(status, snapshot, supplied = []) {\n const entries = Array.isArray(status?.entries)\n ? status.entries.map(safePluginEntry).filter((entry) => entry !== null)\n : [];\n const byId = new Map(entries.map((entry) => [entry.entryId, entry]));\n for (const entry of safeProviderPlugins(snapshot)) byId.set(entry.entryId, entry);\n for (const entry of supplied) {\n const safe = safePluginEntry(entry);\n if (safe !== null) byId.set(safe.entryId, safe);\n }\n return [...byId.values()];\n}\n\nfunction fiberStateName(state) {\n return ['pending', 'loading', 'active', 'failed', 'disposed', 'unloading'][state] ?? 'unknown';\n}\n\nfunction safeAssembly(value) {\n const assembly = value?.current ?? value;\n if (!assembly || typeof assembly !== 'object') return null;\n return {\n revision: safeText(assembly.revision),\n schemaVersion: safeText(assembly.schemaVersion),\n sessionGeneration: assembly.sessionGeneration,\n root: assembly.root ? {\n program: safeText(assembly.root.program),\n codeRevision: safeText(assembly.root.codeRevision),\n ...(assembly.root.source === undefined ? {} : { assetGuid: safeText(assembly.root.source) }),\n } : null,\n };\n}\n\nfunction safeActivationStatus(status) {\n if (!status || typeof status !== 'object') return { state: 'unknown' };\n const entries = Array.isArray(status.entries)\n ? status.entries.map((entry) => {\n const safe = safePluginEntry(entry);\n return {\n entryId: safe?.entryId ?? safeText(entry.entryId ?? entry.id),\n fiberState: safe?.fiberState ?? safeText(entry.fiberState),\n ...(safe?.parent === undefined ? {} : { parent: safe.parent }),\n ...(safe?.requiredServices === undefined\n ? {}\n : { requiredServices: safe.requiredServices }),\n ...(safe?.providedServices === undefined\n ? {}\n : { providedServices: safe.providedServices }),\n ...(safe?.configDigest === undefined ? {} : { configDigest: safe.configDigest }),\n ...(entry.failure === undefined ? {} : { failure: safeError(entry.failure) }),\n };\n })\n : undefined;\n return {\n state: safeText(status.state),\n revision: safeText(status.revision),\n ...(entries === undefined\n ? {}\n : { entries: [...new Map(entries.map((entry) => [entry.entryId, entry])).values()] }),\n ...(status.error === undefined ? {} : { error: safeError(status.error) }),\n };\n}\n\nfunction sourceIdFor(caller) {\n return `view-frontend:${safeText(caller?.connectionId, 'unknown-connection')}`;\n}\n\nfunction assertInspectorRequest(value, expectedOperation) {\n const request = requireWorkspaceObject(value, 'request');\n if (request.apiVersion !== VIEW_INSPECTOR_API_VERSION) {\n throw workspaceError(\n 'view-inspector-version-mismatch',\n `API version ${VIEW_INSPECTOR_API_VERSION}`,\n 'Install a matching View inspector client.',\n { actual: request.apiVersion, expected: VIEW_INSPECTOR_API_VERSION },\n );\n }\n if (!INSPECTOR_OPERATION_SET.has(request.operation) || request.operation !== expectedOperation) {\n throw workspaceError(\n 'view-inspector-operation-unknown',\n 'operation to be present in the View inspector API',\n 'Refresh inspector capabilities and use a supported operation.',\n { operation: request.operation },\n );\n }\n requireWorkspaceString(request.clientId, 'clientId');\n requireWorkspaceString(request.requestId, 'requestId');\n requireWorkspaceObject(request.args, 'args');\n return request;\n}\n\nexport function createInspectorRequest(\n operation,\n args = {},\n { clientId, token, requestId } = {},\n) {\n if (!INSPECTOR_OPERATION_SET.has(operation)) {\n throw workspaceError(\n 'view-inspector-operation-unknown',\n 'operation to be present in the View inspector API',\n 'Refresh inspector capabilities and use a supported operation.',\n { operation },\n );\n }\n const request = {\n apiVersion: VIEW_INSPECTOR_API_VERSION,\n operation,\n clientId: requireWorkspaceString(clientId, 'clientId'),\n requestId:\n requestId === undefined\n ? createWorkspaceId('inspector-request')\n : requireWorkspaceString(requestId, 'requestId'),\n args: requireWorkspaceObject(args, 'args'),\n };\n if (token !== undefined) request.token = requireWorkspaceString(token, 'token');\n return Object.freeze(request);\n}\n\nfunction decodeInspectorError(error) {\n if (error instanceof ViewWorkspaceError) return error;\n const remoteCode = typeof error?.detail?.remoteCode === 'string' ? error.detail.remoteCode : undefined;\n const code = [error?.code, remoteCode].find(\n (candidate) => typeof candidate === 'string' && candidate.startsWith('view-inspector-'),\n );\n if (code === undefined) return error;\n const message = typeof error?.message === 'string' && error.message.trim() !== ''\n ? error.message\n : String(error);\n return new ViewWorkspaceError(\n code,\n typeof error?.expected === 'string' ? error.expected : message,\n typeof error?.hint === 'string' ? error.hint : message,\n {\n ...(error?.detail && typeof error.detail === 'object' ? error.detail : {}),\n ...(remoteCode === undefined ? {} : { remoteCode }),\n ...(typeof error?.name === 'string' ? { name: error.name } : {}),\n },\n );\n}\n\nfunction toolFailureError(failure) {\n const detail = failure?.detail;\n const operationCode = [detail?.code, detail?.remoteCode].find(\n (candidate) => typeof candidate === 'string' && candidate.startsWith('view-'),\n );\n const payload = detail?.payload ?? detail?.detail;\n const diagnostic = [failure?.code, detail?.code, detail?.remoteCode]\n .filter((value, index, values) => typeof value === 'string' && values.indexOf(value) === index)\n .join(' -> ');\n const preservedHint =\n (typeof failure?.hint === 'string' && failure.hint.trim() !== '' ? failure.hint : undefined)\n ?? (typeof failure?.expected === 'string' && failure.expected.trim() !== '' ? failure.expected : undefined);\n const hint = `${preservedHint ?? ''}${diagnostic ? `${preservedHint ? ' ' : ''}(provider: ${diagnostic})` : ''}`.trim();\n if (operationCode !== undefined) {\n return workspaceError(\n operationCode,\n typeof detail.expected === 'string' ? detail.expected : failure.expected,\n typeof detail.hint === 'string' ? detail.hint : (hint || preservedHint),\n {\n failure: safeError(failure) ?? { failure },\n ...(payload && typeof payload === 'object' ? { cause: payload } : {}),\n },\n );\n }\n return workspaceError(\n 'view-tool-provider-failed',\n typeof failure?.expected === 'string'\n ? safeText(failure.expected)\n : preservedHint,\n hint || preservedHint,\n { failure: safeError(failure) },\n );\n}\n\n/** Run a workspace operation through the Engine ToolApi provider. */\nexport async function runWorkspaceToolApi(\n api,\n { operation, args, clientId, token, requestId, caller, signal, providerId, generation },\n) {\n const run = api.run(\n operation,\n { args, clientId, token, requestId },\n { sourceId: 'view-backend', providerId, generation, caller, signal },\n );\n const terminal = await run.terminal;\n if (terminal.outcome === 'failed') throw toolFailureError(terminal.failure);\n return terminal.result;\n}\n\n/** Run an inspector envelope through the canonical ToolApi provider. */\nexport async function runInspectorToolApi(\n api,\n { operation, payload, caller, signal, providerId, generation },\n) {\n const run = api.run(operation, payload, {\n sourceId: 'view-backend',\n providerId,\n generation,\n caller,\n signal,\n });\n const terminal = await run.terminal;\n if (terminal.outcome === 'failed') throw toolFailureError(terminal.failure);\n return terminal.result;\n}\n\n/** Run any View-owned operation through the Engine ToolApi provider. */\nexport async function runViewToolApi(\n api,\n { operation, args = {}, caller, signal, providerId, generation },\n) {\n const run = api.run(operation, args, {\n sourceId: 'view-backend',\n providerId,\n generation,\n caller,\n signal,\n });\n const terminal = await run.terminal;\n if (terminal.outcome === 'failed') throw toolFailureError(terminal.failure);\n return terminal.result;\n}\n\n/**\n * Canonical View workspace contributions. The wire operation list remains a\n * validation/help projection; transport execution is admitted by ToolApi.\n */\nexport function createViewWorkspaceToolContributions(workspace) {\n const schema = {\n parse(value) {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n ? { ok: true, value }\n : { ok: false, error: 'workspace API arguments must be an object' };\n },\n describe: 'JSON object accepted by the View workspace operation.',\n };\n return VIEW_WORKSPACE_DOMAIN_OPERATIONS.filter((operation) => WORKSPACE_OPERATION_SET.has(operation)).map(\n (operation) =>\n defineTool(\n {\n id: operation,\n path: operation.split('.'),\n title: operation,\n summary: `View workspace operation ${operation}.`,\n realm: 'host',\n argsSchema: schema,\n resultSchema: schema,\n inputSchema: { type: 'object' },\n outputSchema: { type: 'object' },\n evidence: [],\n },\n async (envelope, context) => {\n try {\n const request = {\n apiVersion: VIEW_WORKSPACE_API_VERSION,\n operation,\n clientId: envelope.clientId,\n requestId: envelope.requestId,\n args: envelope.args,\n ...(envelope.token === undefined ? {} : { token: envelope.token }),\n };\n return safeClone(await workspace.call(request, { signal: context.signal, caller: context.caller }));\n } catch (error) {\n if (error instanceof ViewWorkspaceError) {\n return {\n ok: false,\n error: {\n code: error.code,\n expected: error.expected,\n hint: error.hint,\n detail: safeClone(error.detail),\n },\n };\n }\n throw error;\n }\n },\n ),\n );\n}\n\nfunction inspectorRequestSchema(operation) {\n return {\n parse(value) {\n try {\n return { ok: true, value: assertInspectorRequest(value, operation) };\n } catch (error) {\n return { ok: false, error: error instanceof Error ? error.message : String(error) };\n }\n },\n describe: '{\"type\":\"object\",\"required\":[\"apiVersion\",\"operation\",\"clientId\",\"requestId\",\"args\"]}',\n };\n}\n\nconst inspectorResultSchema = {\n parse(value) {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n ? { ok: true, value }\n : { ok: false, error: 'inspector result must be an object' };\n },\n describe: '{\"type\":\"object\"}',\n};\n\nfunction inspectorFailure(error) {\n if (!(error instanceof ViewWorkspaceError)) throw error;\n return {\n ok: false,\n error: {\n code: error.code,\n expected: error.expected,\n hint: error.hint,\n detail: safeDetail(error.detail),\n },\n };\n}\n\n/** Canonical inspector contributions; the Host transport only adapts to these. */\nexport function createViewInspectorToolContributions(broker) {\n return [...VIEW_INSPECTOR_OPERATIONS, ...VIEW_INSPECTOR_INTERNAL_OPERATIONS].map((operation) =>\n {\n const description = PLUGINS_OPERATION_DESCRIPTIONS.find((entry) => entry.id === operation);\n return defineTool(\n {\n id: operation,\n path: description?.path ?? operation.split('.'),\n title: description?.title ?? `Inspect ${operation}`,\n summary: description?.summary ?? `Internal View inspector operation ${operation}.`,\n realm: 'host',\n argsSchema: inspectorRequestSchema(operation),\n resultSchema: inspectorResultSchema,\n inputSchema: { type: 'object' },\n outputSchema: { type: 'object' },\n evidence: [],\n },\n async (request, context) => {\n try {\n const canonical = { ...request, caller: context.caller };\n if (operation === 'plugins.sources') {\n return broker.sources(canonical);\n }\n if (operation === 'plugins.inspect') return broker.inspect(canonical);\n if (operation === 'plugins.watch') return broker.watch(canonical);\n if (operation === 'plugins.unwatch') return broker.unwatch(canonical);\n return await broker.report(canonical, context.caller);\n } catch (error) {\n return inspectorFailure(error);\n }\n },\n );\n },\n );\n}\n\nexport function createViewStatusToolContributions(broker) {\n const argsSchema = {\n parse(value) {\n return value === undefined || (value !== null && typeof value === 'object' && !Array.isArray(value))\n ? { ok: true, value: value ?? {} }\n : { ok: false, error: 'View status arguments must be an object' };\n },\n describe: 'JSON object accepted by the read-only View status operation.',\n };\n const resultSchema = {\n parse(value) {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n ? { ok: true, value }\n : { ok: false, error: 'View status result must be an object' };\n },\n describe: 'JSON object returned by the View status operation.',\n };\n return [\n defineTool(\n {\n id: VIEW_STATUS_OPERATION,\n path: VIEW_STATUS_OPERATION.split('.'),\n title: 'View status',\n summary: 'Read the current View display and workspace status.',\n realm: 'host',\n argsSchema,\n resultSchema,\n inputSchema: { type: 'object' },\n outputSchema: { type: 'object' },\n evidence: [],\n },\n async () => broker.handshake(),\n ),\n ];\n}\n\nexport class ViewInspectorBroker {\n constructor({ transport, accessToken, hostAssembly, toolApi, context } = {}) {\n if (!transport || typeof transport.register !== 'function') {\n throw new TypeError('View inspector requires an Engine Host transport');\n }\n this.transport = transport;\n this.accessToken = requireWorkspaceString(accessToken, 'accessToken');\n this.hostAssembly = hostAssembly;\n this.toolApi = toolApi;\n this.context = context;\n this.reports = new Map();\n this.watches = new Map();\n this.frontendCapabilities = new Map();\n this.disposers = [];\n this.backendSourceGeneration = 1;\n }\n\n grantFrontendConnection(caller) {\n if (\n !caller ||\n caller.kind !== 'frontend' ||\n caller.sourceId !== 'view-frontend' ||\n typeof caller.capability !== 'string'\n ) {\n throw workspaceError(\n 'view-inspector-unauthorized',\n 'a real FrontendHost connection to receive the inspector capability',\n 'Connect the frontend through the backend Host pairing before reporting activation.',\n );\n }\n this.frontendCapabilities.set(caller.connectionId, caller.capability);\n return caller.capability;\n }\n\n assertFrontendCaller(caller) {\n if (\n !caller ||\n caller.kind !== 'frontend' ||\n caller.sourceId !== 'view-frontend' ||\n this.frontendCapabilities.get(caller.connectionId) !== caller.capability\n ) {\n throw workspaceError(\n 'view-inspector-unauthorized',\n 'a backend-issued inspector capability on a real FrontendHost connection',\n 'Report frontend activation only through the paired FrontendHost transport.',\n { kind: caller?.kind, sourceId: caller?.sourceId },\n );\n }\n }\n\n backendSnapshot() {\n let api;\n let state = 'unknown';\n try {\n api = safeToolSnapshot(this.toolApi?.snapshot?.());\n } catch (error) {\n state = 'unavailable';\n api = { providers: [], operations: [], error: safeError(error) };\n }\n const assembly = safeAssembly(this.hostAssembly);\n const activation = safeActivationStatus(this.hostAssembly?.activation);\n if (activation.state !== 'unknown') state = activation.state;\n const fibers = [];\n for (const runtime of this.context?.registry?.values?.() ?? []) {\n for (const fiber of runtime.fibers ?? []) {\n const inspected = inspectPluginFiber(fiber);\n if (inspected.uid !== null) fibers.push({ ...inspected, realm: 'host' });\n }\n }\n const actual = actualPluginEntries(this.hostAssembly?.activation, api, fibers);\n return {\n apiVersion: VIEW_INSPECTOR_API_VERSION,\n sourceId: 'view-backend',\n kind: 'backend',\n generation: this.hostAssembly?.generation ?? this.backendSourceGeneration,\n state,\n observedAt: new Date().toISOString(),\n coverage: {\n assembly: assembly !== null,\n activation: this.hostAssembly?.activation === undefined ? 'unknown' : 'actual',\n api: this.toolApi !== undefined,\n frontend: false,\n },\n assembly,\n actual: activation,\n api,\n plugins: actual,\n };\n }\n\n frontendSnapshot(record) {\n return {\n apiVersion: VIEW_INSPECTOR_API_VERSION,\n sourceId: record.sourceId,\n kind: 'frontend',\n generation: record.generation,\n state: record.state,\n observedAt: record.observedAt,\n connection: record.connection,\n coverage: {\n assembly: record.assembly !== null,\n activation: record.actual?.entries === undefined ? 'unknown' : 'actual',\n api: true,\n frontend: true,\n },\n assembly: record.assembly,\n actual: record.actual,\n api: record.api,\n plugins: record.plugins,\n };\n }\n\n source(sourceId) {\n if (sourceId === 'view-backend') return this.backendSnapshot();\n const report = this.reports.get(sourceId);\n return report === undefined ? undefined : this.frontendSnapshot(report);\n }\n\n requireSource(sourceId, generation) {\n requireWorkspaceString(sourceId, 'sourceId');\n if (!Number.isSafeInteger(generation) || generation <= 0) {\n throw workspaceError(\n 'view-inspector-generation-required',\n 'source generation to be a positive integer',\n 'Call plugins.sources and pass the generation returned for the selected source.',\n { sourceId },\n );\n }\n const current = this.source(sourceId);\n if (current === undefined) {\n throw workspaceError(\n 'view-inspector-source-unavailable',\n `source ${sourceId} to be connected and observed`,\n 'Refresh plugins.sources and select an authenticated source that is still connected.',\n { sourceId },\n );\n }\n if (generation !== current.generation) {\n throw workspaceError(\n 'view-inspector-stale-generation',\n `source ${sourceId} generation ${generation} to match ${current.generation}`,\n 'Refresh plugins.sources before inspecting or watching this source.',\n { sourceId, expectedGeneration: current.generation, actualGeneration: generation },\n );\n }\n return current;\n }\n\n authorize(request) {\n if (request.token !== this.accessToken) {\n throw workspaceError(\n 'view-inspector-unauthorized',\n 'the caller to use the View Host inspector token',\n 'Connect with the token issued by the View Host.',\n { clientId: request.clientId },\n );\n }\n }\n\n sources(request) {\n this.authorize(request);\n const backend = this.backendSnapshot();\n const frontend = [...this.reports.values()].map((record) => this.frontendSnapshot(record));\n return {\n apiVersion: VIEW_INSPECTOR_API_VERSION,\n observedAt: new Date().toISOString(),\n sources: [backend, ...frontend].map((source) => ({\n sourceId: source.sourceId,\n kind: source.kind,\n generation: source.generation,\n state: source.state,\n observedAt: source.observedAt,\n ...(source.connection === undefined ? {} : { connection: source.connection }),\n coverage: source.coverage,\n pluginCount: Array.isArray(source.plugins) ? source.plugins.length : 0,\n operationCount: source.api?.operations?.length ?? 0,\n })),\n caller: { connectionId: request.caller?.connectionId, kind: request.caller?.kind },\n };\n }\n\n inspect(request) {\n this.authorize(request);\n const source = this.requireSource(request.args.sourceId, request.args.generation);\n const entryId = request.args.entryId;\n if (entryId !== undefined) requireWorkspaceString(entryId, 'entryId');\n if (entryId === undefined) return source;\n return {\n ...source,\n plugins: source.plugins.filter((entry) => entry.entryId === entryId),\n api: {\n ...source.api,\n operations: source.api.operations.filter((operation) =>\n operation.owner?.fiberId === entryId || operation.descriptor?.id === entryId,\n ),\n },\n };\n }\n\n watch(request) {\n this.authorize(request);\n const source = this.requireSource(request.args.sourceId, request.args.generation);\n const watchId = createWorkspaceId('inspector-watch');\n this.watches.set(watchId, {\n watchId,\n sourceId: source.sourceId,\n generation: source.generation,\n connectionId: request.caller.connectionId,\n });\n return {\n apiVersion: VIEW_INSPECTOR_API_VERSION,\n watchId,\n topic: VIEW_INSPECTOR_TOPIC,\n source,\n };\n }\n\n unwatch(request) {\n this.authorize(request);\n const watchId = requireWorkspaceString(request.args.watchId, 'watchId');\n const watch = this.watches.get(watchId);\n if (watch !== undefined && watch.connectionId !== request.caller.connectionId) {\n throw workspaceError(\n 'view-inspector-unauthorized',\n 'the watch to be owned by the authenticated caller',\n 'Use the watchId returned by this connection.',\n { watchId },\n );\n }\n this.watches.delete(watchId);\n return { apiVersion: VIEW_INSPECTOR_API_VERSION, watchId, released: true };\n }\n\n async report(request, caller) {\n this.authorize(request);\n this.assertFrontendCaller(caller);\n const sourceId = sourceIdFor(caller);\n const previous = this.reports.get(sourceId);\n const generation = (previous?.generation ?? 0) + 1;\n const report = request.args?.report ?? {};\n if (!report || typeof report !== 'object' || Array.isArray(report)) {\n throw workspaceError(\n 'view-inspector-invalid-report',\n 'frontend report to be a structured object',\n 'Send the activation status and safe API projection produced by FrontendHost.',\n );\n }\n const record = {\n sourceId,\n generation,\n state: safeText(report.actual?.state ?? report.state, 'active'),\n observedAt: new Date().toISOString(),\n connection: { connectionId: caller.connectionId, kind: caller.kind ?? 'unknown' },\n assembly: safeAssembly(report.assembly),\n actual: safeActivationStatus(report.actual ?? report.status),\n api: safeToolSnapshot(report.api),\n plugins: actualPluginEntries(\n report.actual ?? report.status,\n report.api,\n Array.isArray(report.plugins) ? report.plugins : [],\n ),\n };\n this.reports.set(sourceId, record);\n this.publish(sourceId);\n return { apiVersion: VIEW_INSPECTOR_API_VERSION, sourceId, generation };\n }\n\n publish(sourceId) {\n const source = this.source(sourceId);\n if (source === undefined) return;\n for (const [watchId, watch] of this.watches) {\n if (watch.sourceId !== sourceId) continue;\n if (watch.generation !== source.generation) {\n this.transport.publish(\n VIEW_INSPECTOR_TOPIC,\n {\n apiVersion: VIEW_INSPECTOR_API_VERSION,\n watchId,\n sourceId,\n state: 'stale',\n generation: source.generation,\n reason: 'source-generation-changed',\n },\n { connectionId: watch.connectionId },\n );\n this.watches.delete(watchId);\n continue;\n }\n this.transport.publish(\n VIEW_INSPECTOR_TOPIC,\n { apiVersion: VIEW_INSPECTOR_API_VERSION, watchId, source },\n { connectionId: watch.connectionId },\n );\n }\n }\n\n install({ dispatch } = {}) {\n if (typeof dispatch !== 'function') {\n throw new TypeError('View inspector requires an Engine ToolApi dispatch adapter');\n }\n const register = (service, operation) => {\n this.disposers.push(\n this.transport.register(service, ({ payload, signal, caller }) =>\n dispatch({ operation, payload, signal, caller }),\n ),\n );\n };\n register(VIEW_INSPECTOR_SERVICES.sources, 'plugins.sources');\n register(VIEW_INSPECTOR_SERVICES.inspect, 'plugins.inspect');\n register(VIEW_INSPECTOR_SERVICES.watch, 'plugins.watch');\n register(VIEW_INSPECTOR_SERVICES.unwatch, 'plugins.unwatch');\n register(VIEW_INSPECTOR_SERVICES.report, 'plugins.report');\n if (typeof this.toolApi?.subscribe === 'function') {\n this.disposers.push(this.toolApi.subscribe(() => this.publish('view-backend')));\n }\n if (typeof this.transport.onClientConnect === 'function') {\n this.disposers.push(\n this.transport.onClientConnect((caller) => {\n if (caller.kind === 'frontend' && caller.sourceId === 'view-frontend') {\n try {\n this.grantFrontendConnection(caller);\n } catch {\n // A malformed connection identity remains unable to report.\n }\n }\n }),\n );\n }\n if (typeof this.transport.onClientDisconnect === 'function') {\n this.disposers.push(\n this.transport.onClientDisconnect((caller) => {\n const sourceId = sourceIdFor(caller);\n const report = this.reports.get(sourceId);\n if (report !== undefined) {\n for (const [watchId, watch] of this.watches) {\n if (watch.sourceId !== sourceId || watch.connectionId === caller.connectionId) continue;\n this.transport.publish(\n VIEW_INSPECTOR_TOPIC,\n {\n apiVersion: VIEW_INSPECTOR_API_VERSION,\n watchId,\n sourceId,\n state: 'stale',\n generation: report.generation + 1,\n reason: 'source-disconnected',\n },\n { connectionId: watch.connectionId },\n );\n this.watches.delete(watchId);\n }\n }\n this.reports.delete(sourceId);\n this.frontendCapabilities.delete(caller.connectionId);\n for (const [watchId, watch] of this.watches) {\n if (watch.connectionId === caller.connectionId) this.watches.delete(watchId);\n }\n }),\n );\n }\n return () => {\n for (const dispose of this.disposers.splice(0)) dispose?.();\n this.reports.clear();\n this.watches.clear();\n this.frontendCapabilities.clear();\n };\n }\n}\n\nexport const viewInspectorBackendPlugin = {\n name: BACKEND_PLUGIN_ID,\n provide: ['viewInspector'],\n async apply(ctx, config = {}) {\n const transport = ctx.get?.('hostTransport', false);\n if (!transport) return;\n const broker = new ViewInspectorBroker({\n transport,\n accessToken: config.accessToken ?? ctx.get?.('viewWorkspaceAccessToken', false),\n hostAssembly: ctx.get?.('hostAssembly', false),\n toolApi: ctx.get?.('toolApi', false),\n context: ctx,\n });\n ctx.provide('viewInspector', broker);\n const inspectorTools = createViewInspectorToolContributions(broker);\n const inspectorProviderId = `view-inspector:${String(ctx.fiber.uid)}`;\n ctx.effect(() => registerTools(ctx, inspectorTools, {\n providerId: inspectorProviderId,\n sourceId: 'view-backend',\n module: BACKEND_MODULE,\n realm: 'host',\n }));\n const inspectorOwner = ctx\n .get?.('toolApi', false)\n ?.describe('plugins.sources', 'view-backend')\n ?.find((record) => record.owner.providerId === inspectorProviderId)?.owner;\n if (!inspectorOwner) {\n throw new Error('View inspector ToolApi provider did not activate');\n }\n const uninstall = broker.install({\n dispatch: ({ operation, payload, signal, caller }) =>\n runInspectorToolApi(ctx.get?.('toolApi', false), {\n operation,\n payload,\n signal,\n caller,\n providerId: inspectorOwner.providerId,\n generation: inspectorOwner.generation,\n }),\n });\n ctx.effect(() => () => uninstall());\n },\n};\n\nfunction projectLocalAssembly(value) {\n const assembly = value?.current ?? value;\n return safeAssembly(assembly);\n}\n\nexport class ViewInspectorClient {\n constructor({ transport, clientId, token } = {}) {\n if (!transport || typeof transport.request !== 'function') {\n throw new TypeError('View inspector client requires an Engine Host transport');\n }\n this.transport = transport;\n this.clientId = requireWorkspaceString(clientId, 'clientId');\n this.token = token === undefined ? undefined : requireWorkspaceString(token, 'token');\n }\n\n request(service, operation, args = {}, options = {}) {\n const request = createInspectorRequest(operation, args, {\n clientId: this.clientId,\n token: this.token,\n requestId: options.requestId,\n });\n return this.transport\n .request(service, request, { signal: options.signal })\n .catch((error) => {\n const decoded = decodeInspectorError(error);\n reportWorkspaceCommandError(decoded, { operation, signal: options.signal });\n throw decoded;\n });\n }\n\n sources(options = {}) {\n return this.request(VIEW_INSPECTOR_SERVICES.sources, 'plugins.sources', {}, options);\n }\n\n inspect({ sourceId, generation, entryId, ...options } = {}) {\n return this.request(\n VIEW_INSPECTOR_SERVICES.inspect,\n 'plugins.inspect',\n { sourceId, generation, ...(entryId === undefined ? {} : { entryId }) },\n options,\n );\n }\n\n watch({ sourceId, generation, ...options } = {}) {\n return this.request(VIEW_INSPECTOR_SERVICES.watch, 'plugins.watch', { sourceId, generation }, options);\n }\n\n unwatch(watchId, options = {}) {\n return this.request(VIEW_INSPECTOR_SERVICES.unwatch, 'plugins.unwatch', { watchId }, options);\n }\n\n report(report) {\n return this.request(VIEW_INSPECTOR_SERVICES.report, 'plugins.report', { report });\n }\n\n subscribe(listener) {\n return this.transport.subscribe?.(VIEW_INSPECTOR_TOPIC, listener) ?? (() => {});\n }\n\n onDisconnect(listener) {\n return this.transport.onDisconnect?.(listener) ?? (() => {});\n }\n}\n\nexport class ViewInspectorPanel {\n constructor({\n client,\n document = globalThis.document,\n mountId = 'forgeax-view-inspector',\n registry,\n mountSlot,\n } = {}) {\n this.client = client;\n this.document = document;\n this.mountId = mountId;\n this.sourceId = null;\n this.generation = null;\n this.watchId = null;\n this.sources = [];\n this.refreshToken = 0;\n this.search = null;\n this.stateFilter = null;\n this.sourceList = null;\n this.hierarchy = null;\n this.detail = null;\n this.opened = false;\n this.element = null;\n this.button = null;\n this.selector = null;\n this.output = null;\n this.unsubscribe = null;\n this.removeDisconnect = null;\n this.unmountSlot = undefined;\n if (document?.createElement) {\n const slotted = registry && mountSlot;\n if (!slotted) {\n this.button = document.createElement('button');\n this.button.type = 'button';\n this.button.textContent = 'Plugins';\n this.button.dataset.forgeaxView = 'inspector-entry';\n this.button.addEventListener?.('click', () => void this.toggle());\n document.body?.append(this.button);\n }\n this.element = document.getElementById?.(mountId) ?? document.createElement('aside');\n this.element.id ||= mountId;\n this.element.dataset.forgeaxView = 'inspector';\n this.element.hidden = !slotted;\n if (slotted) {\n this.unmountSlot = registry.mount(mountSlot, this.element);\n this.opened = true;\n } else {\n document.body?.append(this.element);\n }\n this.selector = document.createElement('select');\n this.selector.dataset.forgeaxView = 'inspector-source';\n this.selector.addEventListener?.('change', () => {\n void this.selectSource(\n this.selector.value || null,\n Number(this.selector.selectedOptions?.[0]?.dataset?.generation ?? 0) || null,\n );\n });\n this.element.append(this.selector);\n this.search = document.createElement('input');\n this.search.type = 'search';\n this.search.placeholder = 'Filter plugins, modules, entries, or services';\n this.search.dataset.forgeaxView = 'inspector-search';\n this.search.addEventListener?.('input', () => {\n this.renderSources({ sources: this.sources });\n this.renderHierarchy(this.lastValue);\n });\n this.element.append(this.search);\n this.stateFilter = document.createElement('select');\n this.stateFilter.dataset.forgeaxView = 'inspector-state-filter';\n for (const state of ['all', 'active', 'pending', 'failed', 'disposed', 'unknown']) {\n const option = document.createElement('option');\n option.value = state;\n option.textContent = state;\n this.stateFilter.append(option);\n }\n this.stateFilter.addEventListener?.('change', () => {\n this.renderSources({ sources: this.sources });\n this.renderHierarchy(this.lastValue);\n });\n this.element.append(this.stateFilter);\n this.sourceList = document.createElement('ul');\n this.sourceList.dataset.forgeaxView = 'inspector-sources';\n this.element.append(this.sourceList);\n this.hierarchy = document.createElement('ul');\n this.hierarchy.dataset.forgeaxView = 'inspector-hierarchy';\n this.element.append(this.hierarchy);\n this.detail = document.createElement('section');\n this.detail.dataset.forgeaxView = 'inspector-detail';\n this.output = document.createElement('pre');\n this.output.dataset.forgeaxView = 'inspector-output';\n this.detail.append(this.output);\n this.element.append(this.detail);\n this.unsubscribe = client?.subscribe?.((payload) => this.handleChange(payload));\n this.removeDisconnect = client?.onDisconnect?.(() => {\n this.watchId = null;\n this.sourceId = null;\n this.generation = null;\n if (this.opened) void this.refresh();\n });\n }\n }\n\n async toggle() {\n if (this.opened) return this.close();\n return this.open();\n }\n\n async open() {\n this.opened = true;\n if (this.element) this.element.hidden = false;\n await this.refresh();\n }\n\n async refresh() {\n if (!this.client) {\n if (this.element) this.element.textContent = 'Plugin inspection unavailable';\n return;\n }\n const refreshToken = ++this.refreshToken;\n try {\n const listed = await this.client.sources();\n if (refreshToken !== this.refreshToken) return;\n this.renderSources(listed);\n const own = listed.sources.find((source) => source.sourceId === this.sourceId);\n const selected = own ?? (this.sourceId === null && listed.sources.length === 1 ? listed.sources[0] : undefined);\n if (selected === undefined) {\n this.render(listed);\n return;\n }\n this.sourceId = selected.sourceId;\n this.generation = selected.generation;\n const inspected = await this.client.inspect({ sourceId: this.sourceId, generation: this.generation });\n if (refreshToken !== this.refreshToken) return;\n this.render(inspected);\n if (this.watchId === null) {\n const watch = await this.client.watch({ sourceId: this.sourceId, generation: this.generation });\n if (refreshToken !== this.refreshToken) {\n await this.client.unwatch(watch.watchId).catch(() => {});\n return;\n }\n this.watchId = watch.watchId;\n }\n } catch (error) {\n if (refreshToken !== this.refreshToken) return;\n this.render({ state: 'error', error: safeError(error) ?? { message: safeText(error?.message) } });\n }\n }\n\n handleChange(payload) {\n if (!this.opened || payload?.watchId !== this.watchId) return;\n if (payload.state === 'stale') {\n this.watchId = null;\n this.generation = null;\n void this.refresh();\n return;\n }\n if (payload.source) this.render(payload.source);\n }\n\n render(value) {\n if (jsonUnchanged(this.lastValue, value)) return value;\n this.lastValue = value;\n if (Array.isArray(value?.sources)) this.renderSources(value);\n this.renderHierarchy(value);\n if (this.output) this.output.textContent = JSON.stringify(value, null, 2);\n else if (this.element) this.element.textContent = JSON.stringify(value, null, 2);\n return value;\n }\n\n renderSources(value) {\n const sources = Array.isArray(value?.sources) ? value.sources : [];\n if (Array.isArray(value?.sources)) this.sources = sources;\n const query = String(this.search?.value ?? '').trim().toLowerCase();\n const state = this.stateFilter?.value || 'all';\n const filtered = this.sources.filter((source) => {\n if (state !== 'all' && source.state !== state) return false;\n if (query === '') return true;\n return `${source.sourceId} ${source.kind} ${source.state}`.toLowerCase().includes(query);\n });\n if (!this.selector) return;\n this.selector.replaceChildren?.();\n this.selector.hidden = this.sources.length === 0;\n for (const source of this.sources) {\n const option = this.document.createElement('option');\n option.value = source.sourceId;\n option.textContent = `${source.kind ?? 'source'}: ${source.sourceId} (generation ${source.generation})`;\n option.dataset.generation = String(source.generation ?? '');\n option.selected = source.sourceId === this.sourceId;\n this.selector.append(option);\n }\n if (this.sourceList) {\n this.sourceList.replaceChildren?.();\n for (const source of filtered) {\n const item = this.document.createElement('li');\n item.textContent = `${source.kind ?? 'source'} ${source.sourceId} \u00B7 ${source.state ?? 'unknown'}`;\n item.dataset.sourceId = source.sourceId;\n this.sourceList.append(item);\n }\n }\n }\n\n renderHierarchy(value) {\n if (!this.hierarchy) return;\n this.hierarchy.replaceChildren?.();\n const query = String(this.search?.value ?? '').trim().toLowerCase();\n const stateFilter = this.stateFilter?.value || 'all';\n const plugins = Array.isArray(value?.plugins) ? value.plugins : [];\n const pluginsById = new Map(\n plugins\n .filter((plugin) => typeof plugin?.entryId === 'string')\n .map((plugin) => [plugin.entryId, plugin]),\n );\n const depthById = new Map();\n const depthFor = (plugin, visiting = new Set()) => {\n if (!plugin?.parent || visiting.has(plugin.entryId)) return 0;\n const cached = depthById.get(plugin.entryId);\n if (cached !== undefined) return cached;\n visiting.add(plugin.entryId);\n const parent = pluginsById.get(plugin.parent);\n const depth = parent === undefined ? 0 : Math.min(8, depthFor(parent, visiting) + 1);\n visiting.delete(plugin.entryId);\n depthById.set(plugin.entryId, depth);\n return depth;\n };\n const matches = (state, text) =>\n (stateFilter === 'all' || state === stateFilter) &&\n (query === '' || text.toLowerCase().includes(query));\n for (const plugin of plugins) {\n const state = plugin.fiberState ?? plugin.state ?? 'unknown';\n const services = [\n ...(Array.isArray(plugin.requiredServices) ? plugin.requiredServices : []),\n ...(Array.isArray(plugin.providedServices) ? plugin.providedServices : []),\n ];\n const text = `${plugin.entryId ?? ''} ${plugin.module ?? ''} ${plugin.realm ?? ''} ${state} ${services.join(' ')} ${plugin.parent ?? ''}`;\n if (!matches(state, text)) continue;\n const depth = depthFor(plugin);\n const parentModule = pluginsById.get(plugin.parent)?.module;\n const parent = parentModule && parentModule !== 'unknown' ? ` parent ${parentModule}` : '';\n const item = this.document.createElement('li');\n item.dataset.parent = plugin.parent ?? '';\n item.dataset.state = state;\n if (item.style) {\n item.style.paddingInlineStart = `${depth * 1.25}rem`;\n item.style.paddingLeft = `${depth * 1.25}rem`;\n }\n item.textContent = `${' '.repeat(depth)}${plugin.module ?? 'Unnamed plugin'} \u00B7 ${state}${parent}`;\n item.dataset.entryId = plugin.entryId ?? '';\n this.hierarchy.append(item);\n }\n const operations = Array.isArray(value?.api?.operations) ? value.api.operations : [];\n for (const operation of operations) {\n const descriptor = operation.descriptor ?? {};\n const state = operation.fiberState ?? operation.providerState ?? 'unknown';\n const services = [\n ...(Array.isArray(operation.requiredServices) ? operation.requiredServices : []),\n ...(Array.isArray(operation.providedServices) ? operation.providedServices : []),\n ];\n const text = `${descriptor.id ?? ''} ${descriptor.title ?? ''} ${descriptor.summary ?? ''} ${operation.owner?.module ?? ''} ${operation.owner?.providerId ?? ''} ${services.join(' ')}`;\n if (!matches(state, text)) continue;\n const item = this.document.createElement('li');\n item.dataset.state = state;\n item.textContent = `service ${descriptor.id ?? 'unknown'} \u00B7 ${state}`;\n item.dataset.operationId = descriptor.id ?? '';\n this.hierarchy.append(item);\n }\n }\n\n async selectSource(sourceId, generation) {\n const refreshToken = ++this.refreshToken;\n const previousWatch = this.watchId;\n this.watchId = null;\n if (previousWatch !== null && this.client) {\n await this.client.unwatch(previousWatch).catch(() => {});\n }\n if (refreshToken !== this.refreshToken) return;\n this.sourceId = sourceId;\n this.generation = generation;\n await this.refresh();\n }\n\n async close() {\n this.opened = false;\n this.refreshToken += 1;\n if (this.element) this.element.hidden = true;\n if (this.watchId !== null) {\n if (this.client) await this.client.unwatch(this.watchId).catch(() => {});\n this.watchId = null;\n }\n }\n\n async dispose() {\n await this.close();\n this.unsubscribe?.();\n this.unsubscribe = null;\n this.removeDisconnect?.();\n this.removeDisconnect = null;\n this.unmountSlot?.();\n this.unmountSlot = undefined;\n this.button?.remove?.();\n this.element?.remove?.();\n this.button = null;\n this.element = null;\n this.selector = null;\n this.search = null;\n this.stateFilter = null;\n this.sourceList = null;\n this.hierarchy = null;\n this.detail = null;\n this.output = null;\n }\n}\n\nexport const viewInspectorFrontendPlugin = {\n name: 'forgeax.view.service.plugin-inspection-reporter.frontend',\n provide: ['viewInspectorClient', 'viewInspectorPanel'],\n async apply(ctx, config = {}) {\n const transport = config.transport ?? ctx.get?.('hostTransport', false);\n const workspace = config.workspace ?? {};\n const token = config.token ?? workspace.token;\n const client =\n transport && typeof token === 'string' && typeof workspace.clientId === 'string'\n ? new ViewInspectorClient({ transport, clientId: workspace.clientId, token })\n : undefined;\n const panel = new ViewInspectorPanel({\n client,\n document: config.document ?? globalThis.document,\n mountId: config.mountId ?? 'forgeax-view-inspector',\n registry: config.registry,\n mountSlot: config.mountSlot,\n });\n ctx.provide('viewInspectorClient', client);\n ctx.provide('viewInspectorPanel', panel);\n if (client) {\n const toolApi = ctx.get?.('toolApi', false);\n const hostAssembly = ctx.get?.('hostAssembly', false);\n const inspectorFiberEntry = () => ({\n entryId: `fiber:${String(ctx.fiber.uid ?? 'unknown')}`,\n fiberId: String(ctx.fiber.uid ?? 'unknown'),\n module: 'forgeax.view.service.plugin-inspection-reporter.frontend',\n realm: 'engine',\n fiberState: fiberStateName(ctx.fiber.state),\n });\n const report = () => ({\n // The report is emitted after this plugin's apply completed. The\n // outer FrontendHost may still be in its loading phase while it\n // collects the complete activation receipt.\n status: ctx.get?.('hostAssembly', false)?.status ?? { state: 'unknown' },\n actual: (() => {\n const status = hostAssembly?.status ?? { state: 'unknown' };\n const live = hostAssembly?.inspection;\n return {\n ...status,\n entries: [\n ...(Array.isArray(status.entries) ? status.entries : []),\n ...(Array.isArray(live) ? live : []),\n inspectorFiberEntry(),\n ],\n };\n })(),\n assembly: projectLocalAssembly(ctx.get?.('hostAssembly', false)),\n api: safeToolSnapshot(toolApi?.snapshot?.()),\n plugins: [\n safePluginEntry(inspectorFiberEntry()),\n ...(Array.isArray(ctx.get?.('hostAssembly', false)?.status?.entries)\n ? ctx\n .get('hostAssembly', false)\n .status.entries.map(safePluginEntry)\n .filter((entry) => entry !== null)\n : []),\n ...(Array.isArray(ctx.get?.('hostAssembly', false)?.inspection)\n ? ctx\n .get('hostAssembly', false)\n .inspection.map(safePluginEntry)\n .filter((entry) => entry !== null)\n : []),\n ],\n });\n let reporting = Promise.resolve();\n const publishReport = ({ allowUnready = false } = {}) => {\n const state = hostAssembly?.status?.state;\n if (!allowUnready && hostAssembly !== undefined && (state === 'created' || state === 'loading')) {\n return reporting;\n }\n reporting = reporting\n .then(async () => {\n const registered = await client.report(report());\n panel.sourceId = registered.sourceId;\n panel.generation = registered.generation;\n })\n .catch(() => {});\n return reporting;\n };\n const unsubscribeAssembly = hostAssembly?.subscribe?.(() => {\n void publishReport();\n });\n const unsubscribeToolApi = toolApi?.subscribe?.(() => {\n void publishReport();\n });\n await publishReport({ allowUnready: true });\n ctx.effect(() => async () => {\n unsubscribeAssembly?.();\n unsubscribeToolApi?.();\n await panel.dispose();\n });\n } else {\n ctx.effect(() => async () => panel.dispose());\n }\n },\n};\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,102 @@
1
+ // packages/viewer/src/host/panel-bridge.mjs
2
+ async function loadViewPanels() {
3
+ const pending = globalThis.__forgeaxViewPanelsPromise;
4
+ if (pending) {
5
+ try {
6
+ return await pending;
7
+ } catch (error) {
8
+ throw new Error("View panels development bundle failed to load", { cause: error });
9
+ }
10
+ }
11
+ const href = globalThis.__forgeaxViewPanelsUrl ?? "/panels.js";
12
+ try {
13
+ return await import(
14
+ /* @vite-ignore */
15
+ href
16
+ );
17
+ } catch (error) {
18
+ throw new Error(`View panels bundle failed to load from ${href}`, { cause: error });
19
+ }
20
+ }
21
+ async function waitForViewSlot(registry, slot) {
22
+ if (typeof registry?.resolveWhenReady === "function") {
23
+ return registry.resolveWhenReady(slot);
24
+ }
25
+ await new Promise((resolve) => setTimeout(resolve, 0));
26
+ return registry.resolve(slot);
27
+ }
28
+ async function mountViewReactPanel({
29
+ registry,
30
+ id,
31
+ slot,
32
+ pageType,
33
+ titleKey,
34
+ activity,
35
+ layout,
36
+ panel,
37
+ props
38
+ }) {
39
+ if (!registry) throw new TypeError("mountViewReactPanel requires viewSlotRegistry");
40
+ id ??= slot;
41
+ if (typeof pageType !== "string" || pageType.trim() === "") {
42
+ throw new TypeError("mountViewReactPanel requires pageType");
43
+ }
44
+ const unclaim = registry.claim({ id, pageType, titleKey, activity, layout });
45
+ try {
46
+ const mountElement = await waitForViewSlot(registry, id);
47
+ const panels = await loadViewPanels();
48
+ const mountName = `mount${panel}Panel`;
49
+ if (typeof panels[mountName] !== "function") {
50
+ throw new Error(`View panels bundle is missing ${mountName}`);
51
+ }
52
+ const unmountPanel = await panels[mountName]({
53
+ slot: id,
54
+ ...props,
55
+ mountElement
56
+ });
57
+ return async () => {
58
+ await unmountPanel?.();
59
+ unclaim();
60
+ };
61
+ } catch (error) {
62
+ unclaim();
63
+ throw error;
64
+ }
65
+ }
66
+ async function mountViewReactPanelInto({ element, panel, props }) {
67
+ if (!element) throw new TypeError("mountViewReactPanelInto requires element");
68
+ const panels = await loadViewPanels();
69
+ const mountName = `mount${panel}Panel`;
70
+ if (typeof panels[mountName] !== "function") {
71
+ throw new Error(`View panels bundle is missing ${mountName}`);
72
+ }
73
+ return panels[mountName]({ ...props, mountElement: element });
74
+ }
75
+ function createViewPanelHost({ registry, overlayRoot }) {
76
+ if (!registry) throw new TypeError("createViewPanelHost requires viewSlotRegistry");
77
+ return Object.freeze({
78
+ registry,
79
+ waitForSlot: (slot) => waitForViewSlot(registry, slot),
80
+ mount(slot, node) {
81
+ return registry.mount(slot, node);
82
+ },
83
+ claim(claim) {
84
+ return registry.claim(claim);
85
+ },
86
+ mountPanel(options) {
87
+ return mountViewReactPanel({ registry, ...options, props: { ...options.props, overlayRoot } });
88
+ },
89
+ mountPanelInto(options) {
90
+ return mountViewReactPanelInto({ ...options, props: { ...options.props, overlayRoot } });
91
+ }
92
+ });
93
+ }
94
+
95
+ export {
96
+ loadViewPanels,
97
+ waitForViewSlot,
98
+ mountViewReactPanel,
99
+ mountViewReactPanelInto,
100
+ createViewPanelHost
101
+ };
102
+ //# sourceMappingURL=chunk-KLJZZ23J.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/viewer/src/host/panel-bridge.mjs"],
4
+ "sourcesContent": ["export async function loadViewPanels() {\n const pending = globalThis.__forgeaxViewPanelsPromise;\n if (pending) {\n try {\n return await pending;\n } catch (error) {\n throw new Error('View panels development bundle failed to load', { cause: error });\n }\n }\n const href = globalThis.__forgeaxViewPanelsUrl ?? '/panels.js';\n try {\n return await import(/* @vite-ignore */ href);\n } catch (error) {\n throw new Error(`View panels bundle failed to load from ${href}`, { cause: error });\n }\n}\n\nexport async function waitForViewSlot(registry, slot) {\n if (typeof registry?.resolveWhenReady === 'function') {\n return registry.resolveWhenReady(slot);\n }\n await new Promise((resolve) => setTimeout(resolve, 0));\n return registry.resolve(slot);\n}\n\nexport async function mountViewReactPanel({\n registry,\n id,\n slot,\n pageType,\n titleKey,\n activity,\n layout,\n panel,\n props,\n}) {\n if (!registry) throw new TypeError('mountViewReactPanel requires viewSlotRegistry');\n id ??= slot;\n if (typeof pageType !== 'string' || pageType.trim() === '') {\n throw new TypeError('mountViewReactPanel requires pageType');\n }\n const unclaim = registry.claim({ id, pageType, titleKey, activity, layout });\n try {\n const mountElement = await waitForViewSlot(registry, id);\n const panels = await loadViewPanels();\n const mountName = `mount${panel}Panel`;\n if (typeof panels[mountName] !== 'function') {\n throw new Error(`View panels bundle is missing ${mountName}`);\n }\n const unmountPanel = await panels[mountName]({\n slot: id,\n ...props,\n mountElement,\n });\n return async () => {\n await unmountPanel?.();\n unclaim();\n };\n } catch (error) {\n unclaim();\n throw error;\n }\n}\n\nexport async function mountViewReactPanelInto({ element, panel, props }) {\n if (!element) throw new TypeError('mountViewReactPanelInto requires element');\n const panels = await loadViewPanels();\n const mountName = `mount${panel}Panel`;\n if (typeof panels[mountName] !== 'function') {\n throw new Error(`View panels bundle is missing ${mountName}`);\n }\n return panels[mountName]({ ...props, mountElement: element });\n}\n\nexport function createViewPanelHost({ registry, overlayRoot }) {\n if (!registry) throw new TypeError('createViewPanelHost requires viewSlotRegistry');\n return Object.freeze({\n registry,\n waitForSlot: (slot) => waitForViewSlot(registry, slot),\n mount(slot, node) {\n return registry.mount(slot, node);\n },\n claim(claim) {\n return registry.claim(claim);\n },\n mountPanel(options) {\n return mountViewReactPanel({ registry, ...options, props: { ...options.props, overlayRoot } });\n },\n mountPanelInto(options) {\n return mountViewReactPanelInto({ ...options, props: { ...options.props, overlayRoot } });\n },\n });\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,49 @@
1
+ import {
2
+ VIEW_PAGE_TYPES
3
+ } from "./chunk-32GD5LL6.mjs";
4
+ import {
5
+ __export
6
+ } from "./chunk-FLGC65SR.mjs";
7
+
8
+ // packages/view-plugin-display/src/identity.mjs
9
+ var identity_exports = {};
10
+ __export(identity_exports, {
11
+ BACKEND_MODULE: () => BACKEND_MODULE,
12
+ BACKEND_PLUGIN_ID: () => BACKEND_PLUGIN_ID,
13
+ DISPLAY_SURFACE_ID: () => DISPLAY_SURFACE_ID,
14
+ DISPLAY_TARGET_ROLE: () => DISPLAY_TARGET_ROLE,
15
+ FRONTEND_MODULE: () => FRONTEND_MODULE,
16
+ FRONTEND_PLUGIN_ID: () => FRONTEND_PLUGIN_ID,
17
+ PAGE_TITLE_I18N_KEY: () => PAGE_TITLE_I18N_KEY,
18
+ PAGE_TYPE: () => PAGE_TYPE,
19
+ PLUGIN_ID: () => PLUGIN_ID,
20
+ VIEW_STATUS_SERVICE: () => VIEW_STATUS_SERVICE,
21
+ VIEW_STATUS_TOPIC: () => VIEW_STATUS_TOPIC
22
+ });
23
+ var PLUGIN_ID = "forgeax.view.display";
24
+ var BACKEND_PLUGIN_ID = "forgeax.view.service.display-carrier.backend";
25
+ var FRONTEND_PLUGIN_ID = "forgeax.view.page.ai-display.frontend";
26
+ var BACKEND_MODULE = "@forgeax/view/plugins/display/backend";
27
+ var FRONTEND_MODULE = "@forgeax/view/plugins/display/frontend";
28
+ var PAGE_TYPE = VIEW_PAGE_TYPES.display;
29
+ var PAGE_TITLE_I18N_KEY = "view.pages.display";
30
+ var DISPLAY_SURFACE_ID = "forgeax-view-display-surface";
31
+ var DISPLAY_TARGET_ROLE = "ai-control";
32
+ var VIEW_STATUS_TOPIC = "forgeax.view.status";
33
+ var VIEW_STATUS_SERVICE = "forgeax.view.status.get";
34
+
35
+ export {
36
+ PLUGIN_ID,
37
+ BACKEND_PLUGIN_ID,
38
+ FRONTEND_PLUGIN_ID,
39
+ BACKEND_MODULE,
40
+ FRONTEND_MODULE,
41
+ PAGE_TYPE,
42
+ PAGE_TITLE_I18N_KEY,
43
+ DISPLAY_SURFACE_ID,
44
+ DISPLAY_TARGET_ROLE,
45
+ VIEW_STATUS_TOPIC,
46
+ VIEW_STATUS_SERVICE,
47
+ identity_exports
48
+ };
49
+ //# sourceMappingURL=chunk-KNBAYU5I.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/view-plugin-display/src/identity.mjs"],
4
+ "sourcesContent": ["import { VIEW_PAGE_TYPES } from '@forgeax/view-workspace-core/contract';\n\nexport const PLUGIN_ID = 'forgeax.view.display';\nexport const BACKEND_PLUGIN_ID = 'forgeax.view.service.display-carrier.backend';\nexport const FRONTEND_PLUGIN_ID = 'forgeax.view.page.ai-display.frontend';\nexport const BACKEND_MODULE = '@forgeax/view/plugins/display/backend';\nexport const FRONTEND_MODULE = '@forgeax/view/plugins/display/frontend';\nexport const PAGE_TYPE = VIEW_PAGE_TYPES.display;\nexport const PAGE_TITLE_I18N_KEY = 'view.pages.display';\nexport const DISPLAY_SURFACE_ID = 'forgeax-view-display-surface';\nexport const DISPLAY_TARGET_ROLE = 'ai-control';\nexport const VIEW_STATUS_TOPIC = 'forgeax.view.status';\nexport const VIEW_STATUS_SERVICE = 'forgeax.view.status.get';\n"],
5
+ "mappings": ";;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,YAAY;AAClB,IAAM,oBAAoB;AAC1B,IAAM,qBAAqB;AAC3B,IAAM,iBAAiB;AACvB,IAAM,kBAAkB;AACxB,IAAM,YAAY,gBAAgB;AAClC,IAAM,sBAAsB;AAC5B,IAAM,qBAAqB;AAC3B,IAAM,sBAAsB;AAC5B,IAAM,oBAAoB;AAC1B,IAAM,sBAAsB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,125 @@
1
+ import {
2
+ resolveProjectRoot
3
+ } from "./chunk-AAFVCQPK.mjs";
4
+ import {
5
+ VIEW_WORKSPACE_TAB_ID
6
+ } from "./chunk-32GD5LL6.mjs";
7
+
8
+ // src/view-project-open.mjs
9
+ import { realpath } from "node:fs/promises";
10
+ import { resolve } from "node:path";
11
+ var BROWSER_FLAGS = ["--headless", "--software", "--serve"];
12
+ function viewProjectOpenError(code, hint, detail) {
13
+ const error = new Error(hint);
14
+ error.name = "ViewProjectOpenError";
15
+ error.code = code;
16
+ error.expected = hint;
17
+ error.hint = hint;
18
+ if (detail !== void 0) error.detail = detail;
19
+ return error;
20
+ }
21
+ function parseProjectArgument(argv = []) {
22
+ const index = argv.indexOf("--project");
23
+ const value = argv[index + 1];
24
+ if (index < 0 || typeof value !== "string" || value.trim() === "" || value.startsWith("--")) {
25
+ throw viewProjectOpenError(
26
+ "view-project-required",
27
+ "Pass --project with the editor project directory."
28
+ );
29
+ }
30
+ return resolve(value.trim());
31
+ }
32
+ async function projectIdentity(input) {
33
+ const resolved = resolve(String(input ?? ""));
34
+ try {
35
+ return await realpath(resolved);
36
+ } catch {
37
+ return resolved;
38
+ }
39
+ }
40
+ function publishedProject(snapshot, viewerUrl, alreadyOpen) {
41
+ const project = snapshot?.project;
42
+ const target = snapshot?.projectTarget;
43
+ if (typeof project?.root !== "string" || project.root.trim() === "" || typeof target?.url !== "string" || target.url.trim() === "") {
44
+ throw viewProjectOpenError(
45
+ "view-project-open-incomplete",
46
+ "The opened project did not publish a headed target URL.",
47
+ { project: project ?? null }
48
+ );
49
+ }
50
+ return {
51
+ alreadyOpen,
52
+ ...typeof viewerUrl === "string" && viewerUrl !== "" ? { viewerUrl } : {},
53
+ project: {
54
+ id: project.id,
55
+ root: project.root,
56
+ ...project.name === void 0 ? {} : { name: project.name }
57
+ },
58
+ projectTarget: {
59
+ url: target.url,
60
+ ...target.targetId === void 0 ? {} : { targetId: target.targetId }
61
+ }
62
+ };
63
+ }
64
+ async function openViewProject(workspace, projectPath, { signal, viewerUrl } = {}) {
65
+ if (!workspace || typeof workspace.snapshot !== "function" || typeof workspace.openProject !== "function") {
66
+ throw viewProjectOpenError("view-not-started", "Run forgeax backend start, then forgeax view start.");
67
+ }
68
+ if (signal?.aborted) {
69
+ throw viewProjectOpenError("view-not-started", "View has stopped. Run forgeax view start again when needed.");
70
+ }
71
+ if (typeof projectPath !== "string" || projectPath.trim() === "") {
72
+ throw viewProjectOpenError("view-project-required", "Pass --project with the editor project directory.");
73
+ }
74
+ const requested = await projectIdentity(projectPath);
75
+ if (!requested.trim()) {
76
+ throw viewProjectOpenError("view-project-required", "Pass --project with the editor project directory.");
77
+ }
78
+ const current = workspace.snapshot();
79
+ const currentRoot = current?.project?.root;
80
+ if (typeof currentRoot === "string" && currentRoot.trim() !== "") {
81
+ const openRoot = await projectIdentity(currentRoot);
82
+ if (openRoot !== requested) {
83
+ throw viewProjectOpenError(
84
+ "view-project-already-open",
85
+ "The current project stays open. This command does not switch projects.",
86
+ { root: currentRoot }
87
+ );
88
+ }
89
+ if (current.workspaceTargetLost !== true && typeof current.projectTarget?.url === "string" && current.projectTarget.url !== "") {
90
+ return publishedProject(current, viewerUrl, true);
91
+ }
92
+ }
93
+ let opened;
94
+ try {
95
+ opened = await workspace.openProject(
96
+ { root: requested, tabId: VIEW_WORKSPACE_TAB_ID },
97
+ { signal }
98
+ );
99
+ } catch (error) {
100
+ if (signal?.aborted) {
101
+ throw viewProjectOpenError("view-not-started", "View has stopped. Run forgeax view start again when needed.");
102
+ }
103
+ throw error;
104
+ }
105
+ if (signal?.aborted) {
106
+ throw viewProjectOpenError("view-not-started", "View has stopped. Run forgeax view start again when needed.");
107
+ }
108
+ return publishedProject(opened, viewerUrl, false);
109
+ }
110
+ async function runViewProjectOpen(argv = [], env = process.env) {
111
+ if (argv.some((arg) => BROWSER_FLAGS.includes(arg))) {
112
+ throw new TypeError("View startup does not launch a browser. Open the returned URL in your browser; configure Engine runs separately.");
113
+ }
114
+ const project = parseProjectArgument(argv);
115
+ const { callDevKitBackend } = await import("@forgeax/engine/devkit");
116
+ if (!callDevKitBackend) throw new Error("Install the matching Engine SDK with the independent backend capability.");
117
+ return callDevKitBackend(resolveProjectRoot(argv, env), "view.project.open", { project });
118
+ }
119
+
120
+ export {
121
+ viewProjectOpenError,
122
+ openViewProject,
123
+ runViewProjectOpen
124
+ };
125
+ //# sourceMappingURL=chunk-KSZNCFU4.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/view-project-open.mjs"],
4
+ "sourcesContent": ["import { realpath } from 'node:fs/promises';\nimport { resolve } from 'node:path';\n\nimport { VIEW_WORKSPACE_TAB_ID } from '@forgeax/view-workspace-core/contract';\n\nimport { resolveProjectRoot } from './view-start.mjs';\n\nconst BROWSER_FLAGS = ['--headless', '--software', '--serve'];\n\nexport function viewProjectOpenError(code, hint, detail) {\n const error = new Error(hint);\n error.name = 'ViewProjectOpenError';\n error.code = code;\n error.expected = hint;\n error.hint = hint;\n if (detail !== undefined) error.detail = detail;\n return error;\n}\n\nexport function parseProjectArgument(argv = []) {\n const index = argv.indexOf('--project');\n const value = argv[index + 1];\n if (index < 0 || typeof value !== 'string' || value.trim() === '' || value.startsWith('--')) {\n throw viewProjectOpenError(\n 'view-project-required',\n 'Pass --project with the editor project directory.',\n );\n }\n return resolve(value.trim());\n}\n\n/** Same identity Engine stores from readProjectFacts: realpath when the directory exists. */\nexport async function projectIdentity(input) {\n const resolved = resolve(String(input ?? ''));\n try {\n return await realpath(resolved);\n } catch {\n return resolved;\n }\n}\n\nfunction publishedProject(snapshot, viewerUrl, alreadyOpen) {\n const project = snapshot?.project;\n const target = snapshot?.projectTarget;\n if (typeof project?.root !== 'string' || project.root.trim() === '' || typeof target?.url !== 'string' || target.url.trim() === '') {\n throw viewProjectOpenError(\n 'view-project-open-incomplete',\n 'The opened project did not publish a headed target URL.',\n { project: project ?? null },\n );\n }\n return {\n alreadyOpen,\n ...(typeof viewerUrl === 'string' && viewerUrl !== '' ? { viewerUrl } : {}),\n project: {\n id: project.id,\n root: project.root,\n ...(project.name === undefined ? {} : { name: project.name }),\n },\n projectTarget: {\n url: target.url,\n ...(target.targetId === undefined ? {} : { targetId: target.targetId }),\n },\n };\n}\n\n/**\n * Open the editor project on the broker captured for this View.\n * Does not start View, launch a browser, or switch away from another project.\n */\nexport async function openViewProject(workspace, projectPath, { signal, viewerUrl } = {}) {\n if (!workspace || typeof workspace.snapshot !== 'function' || typeof workspace.openProject !== 'function') {\n throw viewProjectOpenError('view-not-started', 'Run forgeax backend start, then forgeax view start.');\n }\n if (signal?.aborted) {\n throw viewProjectOpenError('view-not-started', 'View has stopped. Run forgeax view start again when needed.');\n }\n if (typeof projectPath !== 'string' || projectPath.trim() === '') {\n throw viewProjectOpenError('view-project-required', 'Pass --project with the editor project directory.');\n }\n const requested = await projectIdentity(projectPath);\n if (!requested.trim()) {\n throw viewProjectOpenError('view-project-required', 'Pass --project with the editor project directory.');\n }\n const current = workspace.snapshot();\n const currentRoot = current?.project?.root;\n if (typeof currentRoot === 'string' && currentRoot.trim() !== '') {\n const openRoot = await projectIdentity(currentRoot);\n if (openRoot !== requested) {\n throw viewProjectOpenError(\n 'view-project-already-open',\n 'The current project stays open. This command does not switch projects.',\n { root: currentRoot },\n );\n }\n if (current.workspaceTargetLost !== true && typeof current.projectTarget?.url === 'string' && current.projectTarget.url !== '') {\n return publishedProject(current, viewerUrl, true);\n }\n }\n let opened;\n try {\n opened = await workspace.openProject(\n { root: requested, tabId: VIEW_WORKSPACE_TAB_ID },\n { signal },\n );\n } catch (error) {\n if (signal?.aborted) {\n throw viewProjectOpenError('view-not-started', 'View has stopped. Run forgeax view start again when needed.');\n }\n throw error;\n }\n if (signal?.aborted) {\n throw viewProjectOpenError('view-not-started', 'View has stopped. Run forgeax view start again when needed.');\n }\n return publishedProject(opened, viewerUrl, false);\n}\n\nexport async function runViewProjectOpen(argv = [], env = process.env) {\n if (argv.some(arg => BROWSER_FLAGS.includes(arg))) {\n throw new TypeError('View startup does not launch a browser. Open the returned URL in your browser; configure Engine runs separately.');\n }\n const project = parseProjectArgument(argv);\n const { callDevKitBackend } = await import('@forgeax/engine/devkit');\n if (!callDevKitBackend) throw new Error('Install the matching Engine SDK with the independent backend capability.');\n return callDevKitBackend(resolveProjectRoot(argv, env), 'view.project.open', { project });\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }