@forgeax/view 0.5.0-dev.13604.c415409c3b9d → 0.5.0-dev.13713.d28c4863d779

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 (280) hide show
  1. package/README.md +67 -9
  2. package/dist/build-revision.json +1 -1
  3. package/dist/modules/backend.mjs +34 -34
  4. package/dist/modules/browser.mjs +55 -49
  5. package/dist/modules/chunks/{chunk-EWSCJF77.mjs → chunk-2CMCY54A.mjs} +2 -2
  6. package/dist/modules/chunks/{chunk-M6S5YA6X.mjs → chunk-2RUKPDIE.mjs} +4 -4
  7. package/dist/modules/chunks/{chunk-M6S5YA6X.mjs.map → chunk-2RUKPDIE.mjs.map} +1 -1
  8. package/dist/modules/chunks/{chunk-DWT3TA6M.mjs → chunk-3FBX3P3H.mjs} +9 -8
  9. package/dist/modules/chunks/chunk-3FBX3P3H.mjs.map +7 -0
  10. package/dist/modules/chunks/{chunk-6KM24NH6.mjs → chunk-3Y5WN22T.mjs} +3 -3
  11. package/dist/modules/chunks/chunk-3Y5WN22T.mjs.map +7 -0
  12. package/dist/modules/chunks/{chunk-YFQGSDK3.mjs → chunk-45WL24XN.mjs} +2 -2
  13. package/dist/modules/chunks/{chunk-FMCHH5R4.mjs → chunk-4FYKRL46.mjs} +3 -3
  14. package/dist/modules/chunks/{chunk-VW2ZF3P4.mjs → chunk-4MJHVZMB.mjs} +6 -6
  15. package/dist/modules/chunks/{chunk-XQYF2P6M.mjs → chunk-5HVXQEO3.mjs} +7 -7
  16. package/dist/modules/chunks/{chunk-XMP4THLF.mjs → chunk-66LM6NO6.mjs} +4 -4
  17. package/dist/modules/chunks/{chunk-P4UPH74B.mjs → chunk-6C4OCCYB.mjs} +12 -12
  18. package/dist/modules/chunks/{chunk-P4UPH74B.mjs.map → chunk-6C4OCCYB.mjs.map} +1 -1
  19. package/dist/modules/chunks/{chunk-ZGOGO7SS.mjs → chunk-6J27SWMY.mjs} +1 -1
  20. package/dist/modules/chunks/{chunk-JK7K7RG3.mjs → chunk-6VK7HB4X.mjs} +4 -4
  21. package/dist/modules/chunks/{chunk-HRKW766Y.mjs → chunk-6WZZ7TIC.mjs} +2 -2
  22. package/dist/modules/chunks/{chunk-FICPCJKR.mjs → chunk-7DFCIN3T.mjs} +3 -3
  23. package/dist/modules/chunks/{chunk-FICPCJKR.mjs.map → chunk-7DFCIN3T.mjs.map} +1 -1
  24. package/dist/modules/chunks/{chunk-U64FRQKP.mjs → chunk-7MWZK7HS.mjs} +3 -3
  25. package/dist/modules/chunks/{chunk-F5RLQAPN.mjs → chunk-A7OGXJAV.mjs} +3 -3
  26. package/dist/modules/chunks/{chunk-QUFVUMSY.mjs → chunk-AUINYWZP.mjs} +2 -2
  27. package/dist/modules/chunks/{chunk-PZIAKZJC.mjs → chunk-B24VYGHV.mjs} +3 -3
  28. package/dist/modules/chunks/{chunk-SRYQLFBV.mjs → chunk-BIUWJROZ.mjs} +3 -3
  29. package/dist/modules/chunks/{chunk-SRYQLFBV.mjs.map → chunk-BIUWJROZ.mjs.map} +2 -2
  30. package/dist/modules/chunks/{chunk-X4NNZ5X6.mjs → chunk-C2AMOM7H.mjs} +3 -3
  31. package/dist/modules/chunks/{chunk-IZAHIOFU.mjs → chunk-C3WVSJZF.mjs} +6 -6
  32. package/dist/modules/chunks/{chunk-2Z5KEV6L.mjs → chunk-CAXCOZ7Y.mjs} +3 -3
  33. package/dist/modules/chunks/{chunk-HWZCLROY.mjs → chunk-CN6YN4HP.mjs} +251 -45
  34. package/dist/modules/chunks/chunk-CN6YN4HP.mjs.map +7 -0
  35. package/dist/modules/chunks/{chunk-B6QUJ33G.mjs → chunk-CXFQME65.mjs} +3 -3
  36. package/dist/modules/chunks/{chunk-IJPWKKIU.mjs → chunk-CYOLEAAY.mjs} +14 -13
  37. package/dist/modules/chunks/chunk-CYOLEAAY.mjs.map +7 -0
  38. package/dist/modules/chunks/{chunk-U6UMATPV.mjs → chunk-CYU3WWN6.mjs} +3 -3
  39. package/dist/modules/chunks/{chunk-AGVLPYVE.mjs → chunk-D2LZIQE2.mjs} +2 -2
  40. package/dist/modules/chunks/{chunk-5YTMN435.mjs → chunk-DC5JP46Y.mjs} +13 -3
  41. package/dist/modules/chunks/chunk-DC5JP46Y.mjs.map +7 -0
  42. package/dist/modules/chunks/{chunk-YNHEYXDG.mjs → chunk-DOU4MNMQ.mjs} +3 -3
  43. package/dist/modules/chunks/{chunk-ZIDEETK4.mjs → chunk-E4G4HDOC.mjs} +3 -3
  44. package/dist/modules/chunks/{chunk-ZHO2G4JR.mjs → chunk-EZAJ66NW.mjs} +3 -3
  45. package/dist/modules/chunks/{chunk-APD2EWSZ.mjs → chunk-FIWL6TQS.mjs} +2 -2
  46. package/dist/modules/chunks/{chunk-U5J7OTEB.mjs → chunk-FSSARTVM.mjs} +3 -3
  47. package/dist/modules/chunks/{chunk-47RJSHLM.mjs → chunk-FXXPWAXM.mjs} +3 -3
  48. package/dist/modules/chunks/{chunk-D2RCKG7Q.mjs → chunk-G2QCXN56.mjs} +6 -6
  49. package/dist/modules/chunks/{chunk-4T3D67CS.mjs → chunk-GRDCA6LD.mjs} +8 -8
  50. package/dist/modules/chunks/{chunk-4T3D67CS.mjs.map → chunk-GRDCA6LD.mjs.map} +1 -1
  51. package/dist/modules/chunks/{chunk-WVU3CQ62.mjs → chunk-GUVUL6D2.mjs} +3 -3
  52. package/dist/modules/chunks/{chunk-YLCJNKIW.mjs → chunk-I32EONBF.mjs} +70 -30
  53. package/dist/modules/chunks/chunk-I32EONBF.mjs.map +7 -0
  54. package/dist/modules/chunks/{chunk-E3PJGTLI.mjs → chunk-IGIELQZ2.mjs} +5 -5
  55. package/dist/modules/chunks/{chunk-5PHAXNFO.mjs → chunk-IMDR26Y3.mjs} +3 -3
  56. package/dist/modules/chunks/{chunk-55F55BQY.mjs → chunk-JVOHFCI4.mjs} +3 -3
  57. package/dist/modules/chunks/{chunk-6I7RY73G.mjs → chunk-KCM7ZCQ3.mjs} +5 -5
  58. package/dist/modules/chunks/chunk-KCM7ZCQ3.mjs.map +7 -0
  59. package/dist/modules/chunks/{chunk-K2QZRFLE.mjs → chunk-KJTMDFFX.mjs} +4 -4
  60. package/dist/modules/chunks/{chunk-KX2WU5Z6.mjs → chunk-KPLESRQY.mjs} +3 -3
  61. package/dist/modules/chunks/{chunk-PW5CE2Y6.mjs → chunk-KUOWDTI6.mjs} +2 -2
  62. package/dist/modules/chunks/chunk-L6IHUN7X.mjs +13 -0
  63. package/dist/modules/chunks/chunk-L6IHUN7X.mjs.map +7 -0
  64. package/dist/modules/chunks/{chunk-INTTYJVW.mjs → chunk-LBQ6DFMP.mjs} +2 -2
  65. package/dist/modules/chunks/{chunk-OKQ5RBKO.mjs → chunk-LVWHM3UN.mjs} +2 -2
  66. package/dist/modules/chunks/{chunk-D57DDEV2.mjs → chunk-MDQMARAN.mjs} +6 -6
  67. package/dist/modules/chunks/{chunk-D57DDEV2.mjs.map → chunk-MDQMARAN.mjs.map} +2 -2
  68. package/dist/modules/chunks/{chunk-STQPRNEO.mjs → chunk-MLXRIWJA.mjs} +2 -2
  69. package/dist/modules/chunks/{chunk-D25SR5FS.mjs → chunk-N2SH3JGI.mjs} +3 -3
  70. package/dist/modules/chunks/{chunk-KI4WGTWL.mjs → chunk-N7NXZ6R3.mjs} +4 -4
  71. package/dist/modules/chunks/{chunk-KI4WGTWL.mjs.map → chunk-N7NXZ6R3.mjs.map} +2 -2
  72. package/dist/modules/chunks/{chunk-7IGFAI5H.mjs → chunk-O5QX6H3U.mjs} +5 -5
  73. package/dist/modules/chunks/{chunk-5W7SC5D4.mjs → chunk-P2Y73QJJ.mjs} +11 -1
  74. package/dist/modules/chunks/{chunk-5W7SC5D4.mjs.map → chunk-P2Y73QJJ.mjs.map} +2 -2
  75. package/dist/modules/chunks/{chunk-FNRGLCZW.mjs → chunk-PCQNUFDL.mjs} +39 -13
  76. package/dist/modules/chunks/chunk-PCQNUFDL.mjs.map +7 -0
  77. package/dist/modules/chunks/{chunk-46UEGAXY.mjs → chunk-Q7M7VUOZ.mjs} +6 -6
  78. package/dist/modules/chunks/{chunk-XE6ITXHT.mjs → chunk-QB33CMEU.mjs} +2 -2
  79. package/dist/modules/chunks/{chunk-E3Z7GLFU.mjs → chunk-QJHQN6OD.mjs} +15 -4
  80. package/dist/modules/chunks/chunk-QJHQN6OD.mjs.map +7 -0
  81. package/dist/modules/chunks/{chunk-KAGFU64Y.mjs → chunk-QW2VT3XB.mjs} +2 -2
  82. package/dist/modules/chunks/{chunk-U5R6MVM4.mjs → chunk-RFTLGEB5.mjs} +2 -2
  83. package/dist/modules/chunks/{chunk-VKNIYV2W.mjs → chunk-RYYKMDNI.mjs} +202 -35
  84. package/dist/modules/chunks/chunk-RYYKMDNI.mjs.map +7 -0
  85. package/dist/modules/chunks/{chunk-P5XMFZY4.mjs → chunk-SFB5BDTB.mjs} +2 -2
  86. package/dist/modules/chunks/{chunk-4D3Q7K44.mjs → chunk-SNICHQJP.mjs} +2 -2
  87. package/dist/modules/chunks/{chunk-CX5WREJC.mjs → chunk-SPGFO2TA.mjs} +2 -2
  88. package/dist/modules/chunks/{chunk-H256DQT6.mjs → chunk-TMPTVIAP.mjs} +2 -2
  89. package/dist/modules/chunks/{chunk-OQXDADAS.mjs → chunk-UWJYROKS.mjs} +6 -6
  90. package/dist/modules/chunks/chunk-UWJYROKS.mjs.map +7 -0
  91. package/dist/modules/chunks/{chunk-TTRUYO7Q.mjs → chunk-UZH2664E.mjs} +3 -3
  92. package/dist/modules/chunks/{chunk-TTRUYO7Q.mjs.map → chunk-UZH2664E.mjs.map} +2 -2
  93. package/dist/modules/chunks/{chunk-CKYXAT7H.mjs → chunk-VC4OEPDH.mjs} +2 -2
  94. package/dist/modules/chunks/{chunk-RJVOH7G2.mjs → chunk-VKWEA6NG.mjs} +27 -27
  95. package/dist/modules/chunks/{chunk-LZ57Y73Z.mjs → chunk-VSJOW7J4.mjs} +9 -7
  96. package/dist/modules/chunks/chunk-VSJOW7J4.mjs.map +7 -0
  97. package/dist/modules/chunks/{chunk-PVP5YBNR.mjs → chunk-WFM434WJ.mjs} +2 -2
  98. package/dist/modules/chunks/{chunk-TXLD7JI5.mjs → chunk-WJNASQF2.mjs} +2 -2
  99. package/dist/modules/chunks/{chunk-357UOBAS.mjs → chunk-XUNDH3E7.mjs} +2 -2
  100. package/dist/modules/chunks/{chunk-PJFFCRRD.mjs → chunk-YDARD4EP.mjs} +2 -2
  101. package/dist/modules/chunks/{chunk-27XASYEH.mjs → chunk-YU3HRQX7.mjs} +17 -11
  102. package/dist/modules/chunks/chunk-YU3HRQX7.mjs.map +7 -0
  103. package/dist/modules/chunks/{chunk-EZSGDSCC.mjs → chunk-ZRE7BDDB.mjs} +30 -5
  104. package/dist/modules/chunks/chunk-ZRE7BDDB.mjs.map +7 -0
  105. package/dist/modules/cli-contributions.mjs +14 -14
  106. package/dist/modules/cli.mjs +5 -5
  107. package/dist/modules/command-executor.mjs +3 -3
  108. package/dist/modules/embedded.mjs +82 -42
  109. package/dist/modules/embedded.mjs.map +2 -2
  110. package/dist/modules/extension-bridge.mjs +4 -4
  111. package/dist/modules/frontend-root.mjs +46 -46
  112. package/dist/modules/index.mjs +71 -65
  113. package/dist/modules/index.mjs.map +1 -1
  114. package/dist/modules/pages/scene.mjs +5 -5
  115. package/dist/modules/plugin.mjs +35 -35
  116. package/dist/modules/plugins/asset/frontend.mjs +10 -10
  117. package/dist/modules/plugins/asset/identity.mjs +9 -9
  118. package/dist/modules/plugins/asset/ui.mjs +3 -3
  119. package/dist/modules/plugins/content-browser/frontend.mjs +3 -3
  120. package/dist/modules/plugins/content-browser/identity.mjs +2 -2
  121. package/dist/modules/plugins/content-browser/ui.mjs +3 -3
  122. package/dist/modules/plugins/display/api.mjs +1 -1
  123. package/dist/modules/plugins/display/backend.mjs +4 -4
  124. package/dist/modules/plugins/display/frontend.mjs +5 -5
  125. package/dist/modules/plugins/display/identity.mjs +2 -2
  126. package/dist/modules/plugins/display/ui.mjs +3 -3
  127. package/dist/modules/plugins/inspector/frontend.mjs +3 -3
  128. package/dist/modules/plugins/inspector/identity.mjs +2 -2
  129. package/dist/modules/plugins/inspector/ui.mjs +3 -3
  130. package/dist/modules/plugins/material/frontend.mjs +10 -10
  131. package/dist/modules/plugins/material/identity.mjs +9 -9
  132. package/dist/modules/plugins/material/ui.mjs +10 -10
  133. package/dist/modules/plugins/mesh/frontend.mjs +10 -10
  134. package/dist/modules/plugins/mesh/identity.mjs +9 -9
  135. package/dist/modules/plugins/mesh/ui.mjs +10 -10
  136. package/dist/modules/plugins/plugins/api.mjs +4 -4
  137. package/dist/modules/plugins/plugins/backend.mjs +7 -7
  138. package/dist/modules/plugins/plugins/cli.mjs +5 -5
  139. package/dist/modules/plugins/plugins/frontend.mjs +3 -3
  140. package/dist/modules/plugins/plugins/identity.mjs +2 -2
  141. package/dist/modules/plugins/plugins/runtime.mjs +6 -6
  142. package/dist/modules/plugins/plugins/ui/panel.mjs +3 -3
  143. package/dist/modules/plugins/plugins/ui.mjs +4 -4
  144. package/dist/modules/plugins/scene/frontend.mjs +5 -5
  145. package/dist/modules/plugins/scene/identity.mjs +2 -2
  146. package/dist/modules/plugins/scene-tree/frontend.mjs +3 -3
  147. package/dist/modules/plugins/scene-tree/identity.mjs +2 -2
  148. package/dist/modules/plugins/scene-tree/ui.mjs +3 -3
  149. package/dist/modules/plugins/texture/frontend.mjs +10 -10
  150. package/dist/modules/plugins/texture/identity.mjs +9 -9
  151. package/dist/modules/plugins/texture/ui.mjs +10 -10
  152. package/dist/modules/plugins/viewport/frontend.mjs +12 -12
  153. package/dist/modules/plugins/viewport/identity.mjs +2 -2
  154. package/dist/modules/plugins/viewport/presentation.mjs +4 -4
  155. package/dist/modules/plugins/viewport/schema.mjs +2 -2
  156. package/dist/modules/plugins/viewport/workspace-shell.mjs +9 -9
  157. package/dist/modules/product.mjs +35 -35
  158. package/dist/modules/shell/frontend.mjs +1 -1
  159. package/dist/modules/viewer/catalog/backend.mjs +31 -31
  160. package/dist/modules/viewer/catalog/frontend.mjs +42 -42
  161. package/dist/modules/viewer/catalog/shared.mjs +20 -20
  162. package/dist/modules/viewer/catalog.mjs +51 -51
  163. package/dist/modules/viewer/cli.mjs +10 -10
  164. package/dist/modules/viewer-host/frontend.mjs +48 -48
  165. package/dist/modules/viewer-host/page-registry.mjs +6 -6
  166. package/dist/modules/viewer-host.mjs +7 -7
  167. package/dist/modules/viewer.mjs +51 -51
  168. package/dist/modules/workspace/api.mjs +1 -1
  169. package/dist/modules/workspace/backend.mjs +10 -10
  170. package/dist/modules/workspace/broker.mjs +9 -9
  171. package/dist/modules/workspace/cli.mjs +2 -2
  172. package/dist/modules/workspace/client.mjs +3 -3
  173. package/dist/modules/workspace/command-error.mjs +2 -2
  174. package/dist/modules/workspace/contract.mjs +7 -1
  175. package/dist/modules/workspace/engine-adapter.mjs +3 -3
  176. package/dist/modules/workspace/extension-bridge.mjs +4 -4
  177. package/dist/modules/workspace/frontend-plugin.mjs +8 -8
  178. package/dist/modules/workspace/frontend.mjs +9 -9
  179. package/dist/modules/workspace/page-title.mjs +3 -3
  180. package/dist/modules/workspace/presentation.mjs +4 -4
  181. package/dist/modules/workspace/preview-surface.mjs +7 -7
  182. package/dist/modules/workspace/project-session.mjs +2 -2
  183. package/dist/modules/workspace/render-resize-sync.mjs +2 -2
  184. package/dist/modules/workspace/resident.mjs +4 -4
  185. package/dist/modules/workspace/resource-open.mjs +5 -5
  186. package/dist/modules/workspace/resource-page.mjs +8 -8
  187. package/dist/modules/workspace/tool-runtime.mjs +7 -5
  188. package/dist/modules/workspace/view-trace.mjs +3 -3
  189. package/dist/modules/workspace/workspace-recovery.mjs +4 -4
  190. package/dist/modules/workspace/workspace-state.mjs +2 -2
  191. package/dist/modules/workspace-frontend.mjs +8 -8
  192. package/dist/viewer/assets/{embedded-DXSSFAyM.js → embedded-BKEAtUD6.js} +2 -2
  193. package/dist/viewer/assets/{embedded-DXSSFAyM.js.map → embedded-BKEAtUD6.js.map} +1 -1
  194. package/dist/viewer/assets/main-BQrn6wsa.js +22 -0
  195. package/dist/viewer/assets/main-BQrn6wsa.js.map +1 -0
  196. package/dist/viewer/assets/{panels-lazy-DqCwhGd9.js → panels-lazy-C_Cs-76A.js} +2 -2
  197. package/dist/viewer/assets/{panels-lazy-DqCwhGd9.js.map → panels-lazy-C_Cs-76A.js.map} +1 -1
  198. package/dist/viewer/assets/panels-ui-DEDHJLuE.js +12 -0
  199. package/dist/viewer/assets/panels-ui-DEDHJLuE.js.map +1 -0
  200. package/dist/viewer/assets/style-CcYzhsIZ.css +2 -0
  201. package/dist/viewer/assets/{wgpu_wasm--oeqTwVY.js → wgpu_wasm-cNR5izZM.js} +126 -0
  202. package/dist/viewer/assets/{wgpu_wasm_bg-WoZ1YI1I.wasm → wgpu_wasm_bg-Dps0jNcQ.wasm} +0 -0
  203. package/dist/viewer/index.html +4 -4
  204. package/dist/viewer/panels.js +1 -1
  205. package/package.json +2 -2
  206. package/scripts/verify-runtime-content-engine.mjs +7 -4
  207. package/skills/forgeax-view-cli/SKILL.md +11 -0
  208. package/dist/modules/chunks/chunk-27XASYEH.mjs.map +0 -7
  209. package/dist/modules/chunks/chunk-5YTMN435.mjs.map +0 -7
  210. package/dist/modules/chunks/chunk-6I7RY73G.mjs.map +0 -7
  211. package/dist/modules/chunks/chunk-6KM24NH6.mjs.map +0 -7
  212. package/dist/modules/chunks/chunk-DWT3TA6M.mjs.map +0 -7
  213. package/dist/modules/chunks/chunk-E3Z7GLFU.mjs.map +0 -7
  214. package/dist/modules/chunks/chunk-EZSGDSCC.mjs.map +0 -7
  215. package/dist/modules/chunks/chunk-FNRGLCZW.mjs.map +0 -7
  216. package/dist/modules/chunks/chunk-HWZCLROY.mjs.map +0 -7
  217. package/dist/modules/chunks/chunk-IJPWKKIU.mjs.map +0 -7
  218. package/dist/modules/chunks/chunk-LZ57Y73Z.mjs.map +0 -7
  219. package/dist/modules/chunks/chunk-OQXDADAS.mjs.map +0 -7
  220. package/dist/modules/chunks/chunk-QELNKFSI.mjs +0 -10
  221. package/dist/modules/chunks/chunk-QELNKFSI.mjs.map +0 -7
  222. package/dist/modules/chunks/chunk-VKNIYV2W.mjs.map +0 -7
  223. package/dist/modules/chunks/chunk-YLCJNKIW.mjs.map +0 -7
  224. package/dist/viewer/assets/main-CI6ZQziX.js +0 -22
  225. package/dist/viewer/assets/main-CI6ZQziX.js.map +0 -1
  226. package/dist/viewer/assets/panels-ui-CfUtl68h.js +0 -12
  227. package/dist/viewer/assets/panels-ui-CfUtl68h.js.map +0 -1
  228. package/dist/viewer/assets/style-gOtSMZif.css +0 -2
  229. /package/dist/modules/chunks/{chunk-EWSCJF77.mjs.map → chunk-2CMCY54A.mjs.map} +0 -0
  230. /package/dist/modules/chunks/{chunk-YFQGSDK3.mjs.map → chunk-45WL24XN.mjs.map} +0 -0
  231. /package/dist/modules/chunks/{chunk-FMCHH5R4.mjs.map → chunk-4FYKRL46.mjs.map} +0 -0
  232. /package/dist/modules/chunks/{chunk-VW2ZF3P4.mjs.map → chunk-4MJHVZMB.mjs.map} +0 -0
  233. /package/dist/modules/chunks/{chunk-XQYF2P6M.mjs.map → chunk-5HVXQEO3.mjs.map} +0 -0
  234. /package/dist/modules/chunks/{chunk-XMP4THLF.mjs.map → chunk-66LM6NO6.mjs.map} +0 -0
  235. /package/dist/modules/chunks/{chunk-ZGOGO7SS.mjs.map → chunk-6J27SWMY.mjs.map} +0 -0
  236. /package/dist/modules/chunks/{chunk-JK7K7RG3.mjs.map → chunk-6VK7HB4X.mjs.map} +0 -0
  237. /package/dist/modules/chunks/{chunk-HRKW766Y.mjs.map → chunk-6WZZ7TIC.mjs.map} +0 -0
  238. /package/dist/modules/chunks/{chunk-U64FRQKP.mjs.map → chunk-7MWZK7HS.mjs.map} +0 -0
  239. /package/dist/modules/chunks/{chunk-F5RLQAPN.mjs.map → chunk-A7OGXJAV.mjs.map} +0 -0
  240. /package/dist/modules/chunks/{chunk-QUFVUMSY.mjs.map → chunk-AUINYWZP.mjs.map} +0 -0
  241. /package/dist/modules/chunks/{chunk-PZIAKZJC.mjs.map → chunk-B24VYGHV.mjs.map} +0 -0
  242. /package/dist/modules/chunks/{chunk-X4NNZ5X6.mjs.map → chunk-C2AMOM7H.mjs.map} +0 -0
  243. /package/dist/modules/chunks/{chunk-IZAHIOFU.mjs.map → chunk-C3WVSJZF.mjs.map} +0 -0
  244. /package/dist/modules/chunks/{chunk-2Z5KEV6L.mjs.map → chunk-CAXCOZ7Y.mjs.map} +0 -0
  245. /package/dist/modules/chunks/{chunk-B6QUJ33G.mjs.map → chunk-CXFQME65.mjs.map} +0 -0
  246. /package/dist/modules/chunks/{chunk-U6UMATPV.mjs.map → chunk-CYU3WWN6.mjs.map} +0 -0
  247. /package/dist/modules/chunks/{chunk-AGVLPYVE.mjs.map → chunk-D2LZIQE2.mjs.map} +0 -0
  248. /package/dist/modules/chunks/{chunk-YNHEYXDG.mjs.map → chunk-DOU4MNMQ.mjs.map} +0 -0
  249. /package/dist/modules/chunks/{chunk-ZIDEETK4.mjs.map → chunk-E4G4HDOC.mjs.map} +0 -0
  250. /package/dist/modules/chunks/{chunk-ZHO2G4JR.mjs.map → chunk-EZAJ66NW.mjs.map} +0 -0
  251. /package/dist/modules/chunks/{chunk-APD2EWSZ.mjs.map → chunk-FIWL6TQS.mjs.map} +0 -0
  252. /package/dist/modules/chunks/{chunk-U5J7OTEB.mjs.map → chunk-FSSARTVM.mjs.map} +0 -0
  253. /package/dist/modules/chunks/{chunk-47RJSHLM.mjs.map → chunk-FXXPWAXM.mjs.map} +0 -0
  254. /package/dist/modules/chunks/{chunk-D2RCKG7Q.mjs.map → chunk-G2QCXN56.mjs.map} +0 -0
  255. /package/dist/modules/chunks/{chunk-WVU3CQ62.mjs.map → chunk-GUVUL6D2.mjs.map} +0 -0
  256. /package/dist/modules/chunks/{chunk-E3PJGTLI.mjs.map → chunk-IGIELQZ2.mjs.map} +0 -0
  257. /package/dist/modules/chunks/{chunk-5PHAXNFO.mjs.map → chunk-IMDR26Y3.mjs.map} +0 -0
  258. /package/dist/modules/chunks/{chunk-55F55BQY.mjs.map → chunk-JVOHFCI4.mjs.map} +0 -0
  259. /package/dist/modules/chunks/{chunk-K2QZRFLE.mjs.map → chunk-KJTMDFFX.mjs.map} +0 -0
  260. /package/dist/modules/chunks/{chunk-KX2WU5Z6.mjs.map → chunk-KPLESRQY.mjs.map} +0 -0
  261. /package/dist/modules/chunks/{chunk-PW5CE2Y6.mjs.map → chunk-KUOWDTI6.mjs.map} +0 -0
  262. /package/dist/modules/chunks/{chunk-INTTYJVW.mjs.map → chunk-LBQ6DFMP.mjs.map} +0 -0
  263. /package/dist/modules/chunks/{chunk-OKQ5RBKO.mjs.map → chunk-LVWHM3UN.mjs.map} +0 -0
  264. /package/dist/modules/chunks/{chunk-STQPRNEO.mjs.map → chunk-MLXRIWJA.mjs.map} +0 -0
  265. /package/dist/modules/chunks/{chunk-D25SR5FS.mjs.map → chunk-N2SH3JGI.mjs.map} +0 -0
  266. /package/dist/modules/chunks/{chunk-7IGFAI5H.mjs.map → chunk-O5QX6H3U.mjs.map} +0 -0
  267. /package/dist/modules/chunks/{chunk-46UEGAXY.mjs.map → chunk-Q7M7VUOZ.mjs.map} +0 -0
  268. /package/dist/modules/chunks/{chunk-XE6ITXHT.mjs.map → chunk-QB33CMEU.mjs.map} +0 -0
  269. /package/dist/modules/chunks/{chunk-KAGFU64Y.mjs.map → chunk-QW2VT3XB.mjs.map} +0 -0
  270. /package/dist/modules/chunks/{chunk-U5R6MVM4.mjs.map → chunk-RFTLGEB5.mjs.map} +0 -0
  271. /package/dist/modules/chunks/{chunk-P5XMFZY4.mjs.map → chunk-SFB5BDTB.mjs.map} +0 -0
  272. /package/dist/modules/chunks/{chunk-4D3Q7K44.mjs.map → chunk-SNICHQJP.mjs.map} +0 -0
  273. /package/dist/modules/chunks/{chunk-CX5WREJC.mjs.map → chunk-SPGFO2TA.mjs.map} +0 -0
  274. /package/dist/modules/chunks/{chunk-H256DQT6.mjs.map → chunk-TMPTVIAP.mjs.map} +0 -0
  275. /package/dist/modules/chunks/{chunk-CKYXAT7H.mjs.map → chunk-VC4OEPDH.mjs.map} +0 -0
  276. /package/dist/modules/chunks/{chunk-RJVOH7G2.mjs.map → chunk-VKWEA6NG.mjs.map} +0 -0
  277. /package/dist/modules/chunks/{chunk-PVP5YBNR.mjs.map → chunk-WFM434WJ.mjs.map} +0 -0
  278. /package/dist/modules/chunks/{chunk-TXLD7JI5.mjs.map → chunk-WJNASQF2.mjs.map} +0 -0
  279. /package/dist/modules/chunks/{chunk-357UOBAS.mjs.map → chunk-XUNDH3E7.mjs.map} +0 -0
  280. /package/dist/modules/chunks/{chunk-PJFFCRRD.mjs.map → chunk-YDARD4EP.mjs.map} +0 -0
@@ -4,13 +4,13 @@ import {
4
4
  import {
5
5
  createDisplayApiTools,
6
6
  runViewToolApi
7
- } from "./chunk-6KM24NH6.mjs";
7
+ } from "./chunk-3Y5WN22T.mjs";
8
8
  import {
9
9
  BACKEND_MODULE,
10
10
  BACKEND_PLUGIN_ID,
11
11
  VIEW_STATUS_SERVICE,
12
12
  VIEW_STATUS_TOPIC
13
- } from "./chunk-AGVLPYVE.mjs";
13
+ } from "./chunk-D2LZIQE2.mjs";
14
14
  import {
15
15
  createViewCarrierAdapter
16
16
  } from "./chunk-JU5PV2T2.mjs";
@@ -98,14 +98,44 @@ async function installRunObserver(ctx) {
98
98
  if (!transport || !("register" in transport)) throw new Error("Display backend requires a server transport");
99
99
  const api = ctx.get("toolApi");
100
100
  if (!api) throw new Error("Display backend requires ToolApi");
101
- let binding = null;
102
- let snapshot = { status: "idle", binding, observation: null };
101
+ const createSession = () => ({
102
+ binding: null,
103
+ snapshot: { status: "idle", binding: null, observation: null },
104
+ controller: new AbortController()
105
+ });
106
+ const ordinary = createSession();
107
+ const pages = /* @__PURE__ */ new Map();
103
108
  let disposed = false;
104
- let timer;
105
- let controller = new AbortController();
106
- const refresh = async () => {
107
- const selected = binding;
108
- const signal = controller.signal;
109
+ const pageId = (caller) => {
110
+ if (caller?.kind !== "frontend") return void 0;
111
+ if (caller.sourceId === "view-frontend") return caller.connectionId;
112
+ const resolve = ctx.get?.("engineWorkspaceForCaller", false);
113
+ const target = (resolve ? resolve(caller) : ctx.get?.("engineWorkspace", false))?.project?.target;
114
+ return target && caller.sourceId === `forgeax-workspace:${target.sessionId}:${target.targetId}` ? caller.connectionId : void 0;
115
+ };
116
+ const sessionFor = (caller) => {
117
+ const id = pageId(caller);
118
+ if (!id) return ordinary;
119
+ let session = pages.get(id);
120
+ if (!session) {
121
+ session = createSession();
122
+ pages.set(id, session);
123
+ }
124
+ return session;
125
+ };
126
+ const publish = (session, connectionId) => transport.publish(
127
+ VIEW_STATUS_TOPIC,
128
+ session.snapshot,
129
+ connectionId ? { connectionId } : { excludeConnectionIds: [...pages.keys()] }
130
+ );
131
+ const stopSession = (session) => {
132
+ session.controller.abort();
133
+ clearTimeout(session.timer);
134
+ session.timer = void 0;
135
+ };
136
+ const refresh = async (session, connectionId) => {
137
+ const selected = session.binding;
138
+ const signal = session.controller.signal;
109
139
  if (disposed || !selected || signal.aborted) return;
110
140
  try {
111
141
  const owner = api.describe("engine.run.observe", "engine-workspace").find((record) => record.callable)?.owner;
@@ -117,32 +147,40 @@ async function installRunObserver(ctx) {
117
147
  generation: owner.generation,
118
148
  signal
119
149
  }).terminal;
120
- if (disposed || signal.aborted || binding !== selected) return;
150
+ if (disposed || signal.aborted || session.binding !== selected) return;
121
151
  if (terminal.outcome === "failed") throw new Error(terminal.failure.hint);
122
152
  const observation = terminal.result;
123
- snapshot = observation.status?.runId === selected.runId ? { status: observation.status?.phase === "ready" ? "running" : observation.status?.phase ?? "idle", binding, observation } : { status: "unavailable", binding, observation: null, error: "The bound run is no longer active. Bind the new run explicitly." };
153
+ session.snapshot = observation.status?.runId === selected.runId ? { status: observation.status?.phase === "ready" ? "running" : observation.status?.phase ?? "idle", binding: selected, observation } : { status: "unavailable", binding: selected, observation: null, error: "The bound run is no longer active. Bind the new run explicitly." };
124
154
  }
125
155
  } catch (error) {
126
- if (!signal.aborted && binding === selected) snapshot = { status: "unavailable", binding, observation: null, error: String(error) };
156
+ if (!signal.aborted && session.binding === selected) session.snapshot = { status: "unavailable", binding: selected, observation: null, error: String(error) };
127
157
  } finally {
128
- if (!disposed && !signal.aborted && binding === selected) {
129
- transport.publish(VIEW_STATUS_TOPIC, snapshot);
130
- timer = setTimeout(refresh, 1e3);
131
- timer.unref?.();
158
+ if (!disposed && !signal.aborted && session.binding === selected) {
159
+ publish(session, connectionId);
160
+ session.timer = setTimeout(() => void refresh(session, connectionId), 1e3);
161
+ session.timer.unref?.();
132
162
  }
133
163
  }
134
164
  };
135
- const status = () => snapshot;
136
- const unregister = transport.register(VIEW_STATUS_SERVICE, status);
137
- const tools = createDisplayApiTools({ handshake: status, bind({ root, runId }) {
138
- controller.abort();
139
- clearTimeout(timer);
140
- controller = new AbortController();
141
- binding = root === null ? null : { root: root.trim(), runId: runId.trim() };
142
- snapshot = { status: binding ? "connecting" : "idle", binding, observation: null };
143
- transport.publish(VIEW_STATUS_TOPIC, snapshot);
144
- void refresh();
145
- return snapshot;
165
+ const status = (caller) => sessionFor(caller).snapshot;
166
+ const unregister = transport.register(VIEW_STATUS_SERVICE, ({ caller }) => status(caller));
167
+ const removeDisconnect = transport.onClientDisconnect((caller) => {
168
+ const id = caller.connectionId;
169
+ const session = pages.get(id);
170
+ if (!session) return;
171
+ pages.delete(id);
172
+ stopSession(session);
173
+ });
174
+ const tools = createDisplayApiTools({ handshake: status, bind({ root, runId }, caller) {
175
+ const session = sessionFor(caller);
176
+ stopSession(session);
177
+ session.controller = new AbortController();
178
+ session.binding = root === null ? null : { root: root.trim(), runId: runId.trim() };
179
+ session.snapshot = { status: session.binding ? "connecting" : "idle", binding: session.binding, observation: null };
180
+ const id = pageId(caller);
181
+ publish(session, id);
182
+ void refresh(session, id);
183
+ return session.snapshot;
146
184
  } });
147
185
  const provider = api.registerProvider({
148
186
  providerId: `view-observer:${ctx.fiber.uid}`,
@@ -155,8 +193,10 @@ async function installRunObserver(ctx) {
155
193
  ctx.provide("viewCapabilities", { ready: true, supportsPage: false });
156
194
  ctx.effect(() => async () => {
157
195
  disposed = true;
158
- controller.abort();
159
- clearTimeout(timer);
196
+ stopSession(ordinary);
197
+ for (const session of pages.values()) stopSession(session);
198
+ pages.clear();
199
+ removeDisconnect();
160
200
  unregister();
161
201
  await provider.revoke("View observer disposed");
162
202
  });
@@ -165,4 +205,4 @@ async function installRunObserver(ctx) {
165
205
  export {
166
206
  backend_default
167
207
  };
168
- //# sourceMappingURL=chunk-YLCJNKIW.mjs.map
208
+ //# sourceMappingURL=chunk-I32EONBF.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/view-plugin-display/src/backend.ts"],
4
+ "sourcesContent": ["import type { Context } from '@forgeax/engine-plugin';\nimport type { Dispose } from '@forgeax/view-workspace-core/frontend-contract';\nimport type { ViewPlatform, CarrierCapabilities } from './carrier-contract.ts';\nimport type { DisplayStatusInput, RunBinding, RunObservation } from './status.ts';\nimport type { ToolExecutionOwner } from '@forgeax/engine-tool-runtime';\nimport type { ToolCallerIdentity } from '@forgeax/engine-tool-runtime';\nexport type DisplayBackendConfig = { platform?: ViewPlatform; capabilities?: Partial<CarrierCapabilities> };\ndeclare module '@forgeax/engine-plugin' { interface EngineContextServices { viewBroker: ViewResourceBroker; viewCarrier: ReturnType<typeof createViewCarrierAdapter>; viewCapabilities: Partial<CarrierCapabilities>; viewStatus: (caller?: ToolCallerIdentity) => DisplayStatusInput | ReturnType<ViewResourceBroker['handshake']> } }\nimport { registerTools } from '@forgeax/engine-plugin';\nimport { ViewResourceBroker } from './page-broker.ts';\nimport { createViewCarrierAdapter } from './carrier-adapter.ts';\nimport { runViewToolApi } from './tool-runtime.ts';\nimport {\n BACKEND_PLUGIN_ID,\n BACKEND_MODULE,\n VIEW_STATUS_SERVICE,\n VIEW_STATUS_TOPIC,\n} from './identity.ts';\nimport { createDisplayApiTools } from './api.ts';\n\nfunction bindPlatform(platform: ViewPlatform) {\n return {\n createPage: platform.createPage.bind(platform),\n ...(typeof platform.getCapabilities === 'function'\n ? { getCapabilities: platform.getCapabilities.bind(platform) }\n : {}),\n ...(typeof platform.dispose === 'function' ? { dispose: platform.dispose.bind(platform) } : {}),\n };\n}\n\nconst viewDisplayBackendPlugin = {\n name: BACKEND_PLUGIN_ID,\n inject: ['viewWorkspaceCore', 'toolApi'],\n provide: ['viewCapabilities', 'viewStatus'],\n async apply(ctx: Context, config: DisplayBackendConfig = {}) {\n if (!config.platform) return installRunObserver(ctx);\n const broker = new ViewResourceBroker({\n platform: bindPlatform(config.platform),\n capabilities: config.capabilities,\n });\n const carrier = createViewCarrierAdapter({\n broker,\n attachTarget(target) {\n const page = broker.getPage(target);\n return {\n page,\n execution: broker.getExecution(target),\n close: async (reason = 'engine-release') => { await broker.release(target, reason); },\n };\n },\n });\n const status = () => broker.handshake();\n const nativeTransport = ctx.get?.('hostTransport', false);\n const transport = nativeTransport && 'register' in nativeTransport ? nativeTransport : undefined;\n const unsubscribeStatus = broker.subscribe((snapshot) => {\n transport?.publish?.(VIEW_STATUS_TOPIC, snapshot);\n });\n const toolApi = ctx.get?.('toolApi', false);\n const workspace = ctx.get('viewWorkspaceCore');\n const statusTools = toolApi ? createDisplayApiTools(broker) : undefined;\n const statusProviderId = `view-display-status:${String(ctx.fiber.uid)}`;\n let revokeTools: Dispose | undefined;\n let unregisterStatus: (() => void) | undefined;\n let statusOwner: ToolExecutionOwner | undefined;\n ctx.effect(() => async () => {\n unregisterStatus?.();\n unsubscribeStatus();\n await revokeTools?.();\n await broker.dispose();\n });\n if (toolApi && statusTools) {\n revokeTools = registerTools(ctx, statusTools, {\n providerId: statusProviderId,\n sourceId: 'view-backend',\n module: BACKEND_MODULE,\n realm: 'host',\n });\n statusOwner = toolApi.describe(statusTools[0]?.descriptor.id, 'view-backend')[0]?.owner;\n }\n unregisterStatus = transport?.register?.(VIEW_STATUS_SERVICE, ({ payload, signal, caller }) =>\n statusOwner === undefined\n ? broker.handshake()\n : runViewToolApi(toolApi!, {\n operation: statusTools![0].descriptor.id,\n args: payload ?? {},\n signal,\n caller,\n providerId: statusOwner.providerId,\n generation: statusOwner.generation,\n }),\n );\n ctx.provide('viewBroker', broker);\n ctx.provide('viewCarrier', carrier);\n ctx.provide('viewCapabilities', broker.capabilities);\n ctx.provide('viewStatus', status);\n },\n};\n\nexport default viewDisplayBackendPlugin;\n\n/** Observe cached Engine output; this plugin never owns or drives a run. */\nasync function installRunObserver(ctx: Context) {\n const transport = ctx.get('hostTransport');\n if (!transport || !('register' in transport)) throw new Error('Display backend requires a server transport');\n const api = ctx.get('toolApi');\n if (!api) throw new Error('Display backend requires ToolApi');\n type Session = {\n binding: RunBinding | null;\n snapshot: DisplayStatusInput;\n controller: AbortController;\n timer?: ReturnType<typeof setTimeout>;\n };\n const createSession = (): Session => ({\n binding: null, snapshot: { status: 'idle', binding: null, observation: null },\n controller: new AbortController(),\n });\n const ordinary = createSession();\n const pages = new Map<string, Session>();\n let disposed = false;\n const pageId = (caller?: ToolCallerIdentity) => {\n if (caller?.kind !== 'frontend') return undefined;\n if (caller.sourceId === 'view-frontend') return caller.connectionId;\n const resolve = ctx.get?.('engineWorkspaceForCaller', false);\n const target = (resolve ? resolve(caller) : ctx.get?.('engineWorkspace', false))?.project?.target;\n return target && caller.sourceId === `forgeax-workspace:${target.sessionId}:${target.targetId}`\n ? caller.connectionId : undefined;\n };\n const sessionFor = (caller?: ToolCallerIdentity) => {\n const id = pageId(caller);\n if (!id) return ordinary;\n let session = pages.get(id);\n if (!session) { session = createSession(); pages.set(id, session); }\n return session;\n };\n const publish = (session: Session, connectionId?: string) => transport.publish(VIEW_STATUS_TOPIC, session.snapshot,\n connectionId ? { connectionId } : { excludeConnectionIds: [...pages.keys()] });\n const stopSession = (session: Session) => { session.controller.abort(); clearTimeout(session.timer); session.timer = undefined; };\n const refresh = async (session: Session, connectionId?: string) => {\n const selected = session.binding;\n const signal = session.controller.signal;\n if (disposed || !selected || signal.aborted) return;\n try {\n const owner = api.describe('engine.run.observe', 'engine-workspace').find(record => record.callable)?.owner;\n if (!owner) throw new Error('Engine run observation is unavailable.');\n else {\n const terminal = await api.run('engine.run.observe', { root: selected.root }, {\n sourceId: 'engine-workspace', providerId: owner.providerId, generation: owner.generation, signal,\n }).terminal;\n if (disposed || signal.aborted || session.binding !== selected) return;\n if (terminal.outcome === 'failed') throw new Error(terminal.failure.hint);\n const observation = terminal.result as RunObservation;\n session.snapshot = observation.status?.runId === selected.runId\n ? { status: observation.status?.phase === 'ready' ? 'running' : observation.status?.phase ?? 'idle', binding: selected, observation }\n : { status: 'unavailable', binding: selected, observation: null, error: 'The bound run is no longer active. Bind the new run explicitly.' };\n }\n } catch (error) {\n if (!signal.aborted && session.binding === selected) session.snapshot = { status: 'unavailable', binding: selected, observation: null, error: String(error) };\n } finally {\n if (!disposed && !signal.aborted && session.binding === selected) {\n publish(session, connectionId);\n session.timer = setTimeout(() => void refresh(session, connectionId), 1000);\n session.timer.unref?.();\n }\n }\n };\n const status = (caller?: ToolCallerIdentity) => sessionFor(caller).snapshot;\n const unregister = transport.register(VIEW_STATUS_SERVICE, ({ caller }) => status(caller));\n const removeDisconnect = transport.onClientDisconnect((caller) => {\n const id = caller.connectionId;\n const session = pages.get(id);\n if (!session) return;\n pages.delete(id);\n stopSession(session);\n });\n const tools = createDisplayApiTools({ handshake: status, bind({ root, runId }, caller) {\n const session = sessionFor(caller);\n stopSession(session);\n session.controller = new AbortController();\n session.binding = root === null ? null : { root: root.trim(), runId: runId!.trim() };\n session.snapshot = { status: session.binding ? 'connecting' : 'idle', binding: session.binding, observation: null };\n const id = pageId(caller);\n publish(session, id);\n void refresh(session, id);\n return session.snapshot;\n } });\n const provider = api.registerProvider({\n providerId: `view-observer:${ctx.fiber.uid}`, sourceId: 'view-backend', realm: 'host',\n module: BACKEND_MODULE, tools,\n });\n ctx.provide('viewStatus', status);\n ctx.provide('viewCapabilities', { ready: true, supportsPage: false });\n ctx.effect(() => async () => {\n disposed = true;\n stopSession(ordinary);\n for (const session of pages.values()) stopSession(session);\n pages.clear();\n removeDisconnect();\n unregister();\n await provider.revoke('View observer disposed');\n });\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -2,10 +2,10 @@ import {
2
2
  ViewWorkspaceInputController,
3
3
  ViewWorkspaceShell,
4
4
  createBrowserPagePresentation
5
- } from "./chunk-4T3D67CS.mjs";
5
+ } from "./chunk-GRDCA6LD.mjs";
6
6
  import {
7
7
  attachViewportRenderResizeSync
8
- } from "./chunk-PJFFCRRD.mjs";
8
+ } from "./chunk-YDARD4EP.mjs";
9
9
  import {
10
10
  readEnginePresentation
11
11
  } from "./chunk-IM3H4F4X.mjs";
@@ -16,10 +16,10 @@ import {
16
16
  PANEL_LAYOUT,
17
17
  SLOT,
18
18
  TITLE_I18N_KEY
19
- } from "./chunk-H256DQT6.mjs";
19
+ } from "./chunk-TMPTVIAP.mjs";
20
20
  import {
21
21
  createWorkspaceStateReader
22
- } from "./chunk-TXLD7JI5.mjs";
22
+ } from "./chunk-WJNASQF2.mjs";
23
23
 
24
24
  // packages/view-plugin-viewport/src/page-input-gate.ts
25
25
  function attachViewportPageInputGate({ element, input, pageType = PAGE_TYPE, document } = {}) {
@@ -493,4 +493,4 @@ export {
493
493
  viewViewportFrontendPlugin,
494
494
  frontend_default
495
495
  };
496
- //# sourceMappingURL=chunk-E3PJGTLI.mjs.map
496
+ //# sourceMappingURL=chunk-IGIELQZ2.mjs.map
@@ -19,10 +19,10 @@ import {
19
19
  } from "./chunk-KGA5CEJD.mjs";
20
20
  import {
21
21
  workspaceDiagnosticRecord
22
- } from "./chunk-U5R6MVM4.mjs";
22
+ } from "./chunk-RFTLGEB5.mjs";
23
23
  import {
24
24
  jsonUnchanged
25
- } from "./chunk-E3Z7GLFU.mjs";
25
+ } from "./chunk-QJHQN6OD.mjs";
26
26
 
27
27
  // packages/view-plugin-plugins/src/ui/PluginsPanel.tsx
28
28
  import { useCallback as useCallback2, useEffect, useRef, useState } from "react";
@@ -441,4 +441,4 @@ function PluginsPanel(props) {
441
441
  export {
442
442
  PluginsPanel
443
443
  };
444
- //# sourceMappingURL=chunk-5PHAXNFO.mjs.map
444
+ //# sourceMappingURL=chunk-IMDR26Y3.mjs.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  viewInspectorBackendPlugin
3
- } from "./chunk-7IGFAI5H.mjs";
3
+ } from "./chunk-O5QX6H3U.mjs";
4
4
  import {
5
5
  BACKEND_MODULE,
6
6
  BACKEND_PLUGIN_ID
7
- } from "./chunk-EWSCJF77.mjs";
7
+ } from "./chunk-2CMCY54A.mjs";
8
8
 
9
9
  // packages/view-plugin-plugins/src/backend.ts
10
10
  var VIEW_PLUGINS_PLUGIN_ID = BACKEND_PLUGIN_ID;
@@ -32,4 +32,4 @@ export {
32
32
  viewPluginsListBackendPlugin,
33
33
  backend_default
34
34
  };
35
- //# sourceMappingURL=chunk-55F55BQY.mjs.map
35
+ //# sourceMappingURL=chunk-JVOHFCI4.mjs.map
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  workspaceCoreCliContributions
3
- } from "./chunk-SRYQLFBV.mjs";
3
+ } from "./chunk-BIUWJROZ.mjs";
4
4
  import {
5
5
  createViewCliContributions
6
- } from "./chunk-D57DDEV2.mjs";
6
+ } from "./chunk-MDQMARAN.mjs";
7
7
  import {
8
8
  contract
9
9
  } from "./chunk-OVJ3UJJB.mjs";
10
10
  import {
11
11
  runViewProjectOpen
12
- } from "./chunk-XE6ITXHT.mjs";
12
+ } from "./chunk-QB33CMEU.mjs";
13
13
  import {
14
14
  runViewStartInteractive,
15
15
  runViewStatus,
@@ -25,7 +25,7 @@ function createViewHostCliContributions() {
25
25
  projectOpen: runViewProjectOpen
26
26
  };
27
27
  return Object.freeze(contract.commands.map((command) => ({
28
- id: `forgeax.${command.id}`,
28
+ id: command.id,
29
29
  path: command.path,
30
30
  summary: command.summary,
31
31
  ..."exportName" in command ? { run: executors[command.exportName] } : {}
@@ -52,4 +52,4 @@ export {
52
52
  createViewHostCliContributions,
53
53
  createViewCliContributions2 as createViewCliContributions
54
54
  };
55
- //# sourceMappingURL=chunk-6I7RY73G.mjs.map
55
+ //# sourceMappingURL=chunk-KCM7ZCQ3.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/cli-contributions.ts"],
4
+ "sourcesContent": ["import type { ViewCliOptions } from '@forgeax/view-viewer/config';\nimport { contract } from './commands.ts';\nimport {\n createViewCliContributions as createProductCliContributions,\n VIEW_CLI_CONTRIBUTION_ID,\n} from '@forgeax/view-viewer/cli';\n\nimport { runViewProjectOpen } from './view-project-open.ts';\nimport {\n runViewStartInteractive,\n runViewStatus,\n runViewStop,\n} from './view-start.ts';\nimport { workspaceCoreCliContributions } from '@forgeax/view-workspace-core/cli';\n\nexport { VIEW_CLI_CONTRIBUTION_ID };\n\nexport function createViewHostCliContributions() {\n const executors = {\n start: runViewStartInteractive,\n status: runViewStatus,\n stop: runViewStop,\n projectOpen: runViewProjectOpen,\n };\n return Object.freeze(contract.commands.map(command => ({\n id: command.id, path: command.path, summary: command.summary, ...('exportName' in command ? { run: executors[command.exportName] } : {}),\n })));\n}\n\nfunction hasWorkspaceCapabilities(options?: ViewCliOptions) {\n return Array.isArray(options?.capabilities) || (options?.capabilities !== undefined && 'operations' in options.capabilities && Array.isArray(options.capabilities.operations));\n}\n\nfunction filterCapabilities(contributions: typeof workspaceCoreCliContributions, options?: ViewCliOptions) {\n const declared = Array.isArray(options?.capabilities)\n ? options.capabilities\n : options?.capabilities && 'operations' in options.capabilities ? options.capabilities.operations : undefined;\n if (!Array.isArray(declared)) return contributions;\n const operations = new Set(declared);\n return contributions.filter(({ operation }) => operations.has(operation));\n}\n\n/** Compose package lifecycle and explicitly active workspace/product commands. */\nexport function createViewCliContributions(options?: ViewCliOptions) {\n return Object.freeze([\n ...createViewHostCliContributions(),\n ...(hasWorkspaceCapabilities(options)\n ? filterCapabilities(workspaceCoreCliContributions, options)\n : []),\n ...createProductCliContributions(options),\n ]);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAiBO,SAAS,iCAAiC;AAC/C,QAAM,YAAY;AAAA,IAChB,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AACA,SAAO,OAAO,OAAO,SAAS,SAAS,IAAI,cAAY;AAAA,IACrD,IAAI,QAAQ;AAAA,IAAI,MAAM,QAAQ;AAAA,IAAM,SAAS,QAAQ;AAAA,IAAS,GAAI,gBAAgB,UAAU,EAAE,KAAK,UAAU,QAAQ,UAAU,EAAE,IAAI,CAAC;AAAA,EACxI,EAAE,CAAC;AACL;AAEA,SAAS,yBAAyB,SAA0B;AAC1D,SAAO,MAAM,QAAQ,SAAS,YAAY,KAAM,SAAS,iBAAiB,UAAa,gBAAgB,QAAQ,gBAAgB,MAAM,QAAQ,QAAQ,aAAa,UAAU;AAC9K;AAEA,SAAS,mBAAmB,eAAqD,SAA0B;AACzG,QAAM,WAAW,MAAM,QAAQ,SAAS,YAAY,IAChD,QAAQ,eACR,SAAS,gBAAgB,gBAAgB,QAAQ,eAAe,QAAQ,aAAa,aAAa;AACtG,MAAI,CAAC,MAAM,QAAQ,QAAQ,EAAG,QAAO;AACrC,QAAM,aAAa,IAAI,IAAI,QAAQ;AACnC,SAAO,cAAc,OAAO,CAAC,EAAE,UAAU,MAAM,WAAW,IAAI,SAAS,CAAC;AAC1E;AAGO,SAASA,4BAA2B,SAA0B;AACnE,SAAO,OAAO,OAAO;AAAA,IACnB,GAAG,+BAA+B;AAAA,IAClC,GAAI,yBAAyB,OAAO,IAChC,mBAAmB,+BAA+B,OAAO,IACzD,CAAC;AAAA,IACL,GAAG,2BAA8B,OAAO;AAAA,EAC1C,CAAC;AACH;",
6
+ "names": ["createViewCliContributions"]
7
+ }
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  navigateProjectSession
3
- } from "./chunk-5YTMN435.mjs";
3
+ } from "./chunk-DC5JP46Y.mjs";
4
4
  import {
5
5
  workspaceDiagnosticRecord
6
- } from "./chunk-U5R6MVM4.mjs";
6
+ } from "./chunk-RFTLGEB5.mjs";
7
7
  import {
8
8
  VIEW_WORKSPACE_TAB_ID,
9
9
  isOpaqueWorkspaceDiagnostic,
10
10
  workspaceError
11
- } from "./chunk-E3Z7GLFU.mjs";
11
+ } from "./chunk-QJHQN6OD.mjs";
12
12
 
13
13
  // packages/view-workspace-core/src/workspace-recovery.ts
14
14
  var VIEW_WORKSPACE_PAGE_LOST_CODE = "view-workspace-page-lost";
@@ -226,4 +226,4 @@ export {
226
226
  navigateToWorkspaceProjectTarget,
227
227
  reopenWorkspaceProject
228
228
  };
229
- //# sourceMappingURL=chunk-K2QZRFLE.mjs.map
229
+ //# sourceMappingURL=chunk-KJTMDFFX.mjs.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  dedicatedPreviewPresentation
3
- } from "./chunk-B6QUJ33G.mjs";
3
+ } from "./chunk-CXFQME65.mjs";
4
4
  import {
5
5
  liveEnginePresentation
6
6
  } from "./chunk-IM3H4F4X.mjs";
7
7
  import {
8
8
  logResourceOpen
9
- } from "./chunk-ZIDEETK4.mjs";
9
+ } from "./chunk-E4G4HDOC.mjs";
10
10
 
11
11
  // packages/view-workspace-core/src/resource-page.ts
12
12
  var RESOURCE_PREVIEW_LAYOUT = Object.freeze({
@@ -126,4 +126,4 @@ export {
126
126
  createResourcePanelClaims,
127
127
  applyResourcePagePlugin
128
128
  };
129
- //# sourceMappingURL=chunk-KX2WU5Z6.mjs.map
129
+ //# sourceMappingURL=chunk-KPLESRQY.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  PluginsPanel
3
- } from "./chunk-5PHAXNFO.mjs";
3
+ } from "./chunk-IMDR26Y3.mjs";
4
4
  import {
5
5
  OverlayRootProvider
6
6
  } from "./chunk-CXOD7FW6.mjs";
@@ -39,4 +39,4 @@ async function mountPluginsPanel(props) {
39
39
  export {
40
40
  mountPluginsPanel
41
41
  };
42
- //# sourceMappingURL=chunk-PW5CE2Y6.mjs.map
42
+ //# sourceMappingURL=chunk-KUOWDTI6.mjs.map
@@ -0,0 +1,13 @@
1
+ // packages/view-workspace-core/src/api.ts
2
+ var VIEW_WORKSPACE_CORE_OPERATION_DESCRIPTIONS = Object.freeze([
3
+ { id: "summary.get", path: ["summary", "get"], summary: "Read bounded project, phase and target identities." },
4
+ { id: "pages.list", path: ["pages", "list"], summary: "Read bounded identities and target summaries for connected View pages." },
5
+ { id: "pack.reveal", path: ["pack", "reveal"], summary: "Reveal one exact Pack revision in one connected View page and wait for a visible receipt." },
6
+ { id: "tabs.get", path: ["tabs", "get"], summary: "Read View bindings and Engine target identities." },
7
+ { id: "tabs.select", path: ["tabs", "select"], summary: "Select a View page." }
8
+ ]);
9
+
10
+ export {
11
+ VIEW_WORKSPACE_CORE_OPERATION_DESCRIPTIONS
12
+ };
13
+ //# sourceMappingURL=chunk-L6IHUN7X.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/view-workspace-core/src/api.ts"],
4
+ "sourcesContent": ["export const VIEW_WORKSPACE_CORE_OPERATION_DESCRIPTIONS = Object.freeze([\n { id: 'summary.get', path: ['summary', 'get'], summary: 'Read bounded project, phase and target identities.' },\n { id: 'pages.list', path: ['pages', 'list'], summary: 'Read bounded identities and target summaries for connected View pages.' },\n { id: 'pack.reveal', path: ['pack', 'reveal'], summary: 'Reveal one exact Pack revision in one connected View page and wait for a visible receipt.' },\n { id: 'tabs.get', path: ['tabs', 'get'], summary: 'Read View bindings and Engine target identities.' },\n { id: 'tabs.select', path: ['tabs', 'select'], summary: 'Select a View page.' },\n]);\n"],
5
+ "mappings": ";AAAO,IAAM,6CAA6C,OAAO,OAAO;AAAA,EACtE,EAAE,IAAI,eAAe,MAAM,CAAC,WAAW,KAAK,GAAG,SAAS,qDAAqD;AAAA,EAC7G,EAAE,IAAI,cAAc,MAAM,CAAC,SAAS,MAAM,GAAG,SAAS,yEAAyE;AAAA,EAC/H,EAAE,IAAI,eAAe,MAAM,CAAC,QAAQ,QAAQ,GAAG,SAAS,4FAA4F;AAAA,EACpJ,EAAE,IAAI,YAAY,MAAM,CAAC,QAAQ,KAAK,GAAG,SAAS,mDAAmD;AAAA,EACrG,EAAE,IAAI,eAAe,MAAM,CAAC,QAAQ,QAAQ,GAAG,SAAS,sBAAsB;AAChF,CAAC;",
6
+ "names": []
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createWorkspaceStateReader
3
- } from "./chunk-TXLD7JI5.mjs";
3
+ } from "./chunk-WJNASQF2.mjs";
4
4
 
5
5
  // packages/view-plugin-display/src/ui/run-observer.ts
6
6
  function failureText(error) {
@@ -193,4 +193,4 @@ function mountRunObserver({ document, surface, status, client }) {
193
193
  export {
194
194
  mountRunObserver
195
195
  };
196
- //# sourceMappingURL=chunk-INTTYJVW.mjs.map
196
+ //# sourceMappingURL=chunk-LBQ6DFMP.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  defineWorkspaceOperations
3
- } from "./chunk-EZSGDSCC.mjs";
3
+ } from "./chunk-ZRE7BDDB.mjs";
4
4
 
5
5
  // packages/view-plugin-plugins/src/api.ts
6
6
  var PLUGINS_OPERATION_DESCRIPTIONS = defineWorkspaceOperations([
@@ -12,4 +12,4 @@ var PLUGINS_OPERATION_DESCRIPTIONS = defineWorkspaceOperations([
12
12
  export {
13
13
  PLUGINS_OPERATION_DESCRIPTIONS
14
14
  };
15
- //# sourceMappingURL=chunk-OKQ5RBKO.mjs.map
15
+ //# sourceMappingURL=chunk-LVWHM3UN.mjs.map
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  cliContributions
3
- } from "./chunk-KI4WGTWL.mjs";
3
+ } from "./chunk-N7NXZ6R3.mjs";
4
4
  import {
5
5
  backend_default
6
- } from "./chunk-55F55BQY.mjs";
6
+ } from "./chunk-JVOHFCI4.mjs";
7
7
  import {
8
8
  frontend_default
9
- } from "./chunk-4D3Q7K44.mjs";
9
+ } from "./chunk-SNICHQJP.mjs";
10
10
  import {
11
11
  identity_exports
12
- } from "./chunk-EWSCJF77.mjs";
12
+ } from "./chunk-2CMCY54A.mjs";
13
13
 
14
14
  // packages/view-plugin-plugins/src/index.ts
15
15
  var src_default = {
@@ -25,7 +25,7 @@ function createViewCliContributions(options = {}) {
25
25
  const capabilities = options.capabilities;
26
26
  const descriptions = capabilities?.descriptions ?? [];
27
27
  const domain = descriptions.filter((item) => item.id !== "workspace.get").map((description) => ({
28
- id: `forgeax.view.workspace.${description.id}`,
28
+ id: `view.workspace.${description.id}`,
29
29
  path: ["view", "workspace", ...description.id.split(".")],
30
30
  summary: description.summary,
31
31
  operation: description.id
@@ -38,4 +38,4 @@ export {
38
38
  VIEW_CLI_CONTRIBUTION_ID,
39
39
  createViewCliContributions
40
40
  };
41
- //# sourceMappingURL=chunk-D57DDEV2.mjs.map
41
+ //# sourceMappingURL=chunk-MDQMARAN.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/view-plugin-plugins/src/index.ts", "../../../packages/viewer/src/cli/index.ts"],
4
- "sourcesContent": ["export * from './identity.ts';\nexport * from './schema.ts';\nexport { viewPluginsListBackendPlugin as backendPlugin } from './backend.ts';\nexport { viewPluginsListFrontendPlugin as frontendPlugin } from './frontend.ts';\nexport { PLUGINS_OPERATION_DESCRIPTIONS } from './api.ts';\nexport { cliContributions } from './cli.ts';\nexport { t, subscribeLocale, getLocale, setLocale } from './i18n/index.ts';\n\nimport backendPlugin from './backend.ts';\nimport frontendPlugin from './frontend.ts';\nimport { cliContributions } from './cli.ts';\nimport * as identity from './identity.ts';\n\nexport default {\n ...identity,\n backendPlugin,\n frontendPlugin,\n cliContributions,\n};\n", "import type { ViewCliOptions, ViewCliCapabilities } from '../config.ts';\nimport plugins from '@forgeax/view-plugin-plugins';\n\nexport const VIEW_CLI_CONTRIBUTION_ID = 'forgeax.view.cli';\n\n/** Domain descriptions come from the connected Engine capability owner. */\nexport function createViewCliContributions(options: ViewCliOptions = {}) {\n const capabilities = options.capabilities as ViewCliCapabilities | undefined;\n const descriptions = capabilities?.descriptions ?? [];\n const domain = descriptions.filter(item => item.id !== 'workspace.get').map(description => ({\n id: `forgeax.view.workspace.${description.id}`,\n path: ['view', 'workspace', ...description.id.split('.')],\n summary: description.summary, operation: description.id,\n }));\n const operations: readonly string[] = capabilities?.operations ?? (Array.isArray(options.capabilities) ? options.capabilities : []);\n return Object.freeze([...domain, ...plugins.cliContributions.filter(item => operations.includes(item.operation))]);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;AAaA,IAAO,cAAQ;AAAA,EACb,GAAG;AAAA,EACH;AAAA,EACA;AAAA,EACA;AACF;;;ACfO,IAAM,2BAA2B;AAGjC,SAAS,2BAA2B,UAA0B,CAAC,GAAG;AACvE,QAAM,eAAe,QAAQ;AAC7B,QAAM,eAAe,cAAc,gBAAgB,CAAC;AACpD,QAAM,SAAS,aAAa,OAAO,UAAQ,KAAK,OAAO,eAAe,EAAE,IAAI,kBAAgB;AAAA,IAC1F,IAAI,0BAA0B,YAAY,EAAE;AAAA,IAC5C,MAAM,CAAC,QAAQ,aAAa,GAAG,YAAY,GAAG,MAAM,GAAG,CAAC;AAAA,IACxD,SAAS,YAAY;AAAA,IAAS,WAAW,YAAY;AAAA,EACvD,EAAE;AACF,QAAM,aAAgC,cAAc,eAAe,MAAM,QAAQ,QAAQ,YAAY,IAAI,QAAQ,eAAe,CAAC;AACjI,SAAO,OAAO,OAAO,CAAC,GAAG,QAAQ,GAAG,YAAQ,iBAAiB,OAAO,UAAQ,WAAW,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC;AACnH;",
4
+ "sourcesContent": ["export * from './identity.ts';\nexport * from './schema.ts';\nexport { viewPluginsListBackendPlugin as backendPlugin } from './backend.ts';\nexport { viewPluginsListFrontendPlugin as frontendPlugin } from './frontend.ts';\nexport { PLUGINS_OPERATION_DESCRIPTIONS } from './api.ts';\nexport { cliContributions } from './cli.ts';\nexport { t, subscribeLocale, getLocale, setLocale } from './i18n/index.ts';\n\nimport backendPlugin from './backend.ts';\nimport frontendPlugin from './frontend.ts';\nimport { cliContributions } from './cli.ts';\nimport * as identity from './identity.ts';\n\nexport default {\n ...identity,\n backendPlugin,\n frontendPlugin,\n cliContributions,\n};\n", "import type { ViewCliOptions, ViewCliCapabilities } from '../config.ts';\nimport plugins from '@forgeax/view-plugin-plugins';\n\nexport const VIEW_CLI_CONTRIBUTION_ID = 'forgeax.view.cli';\n\n/** Domain descriptions come from the connected Engine capability owner. */\nexport function createViewCliContributions(options: ViewCliOptions = {}) {\n const capabilities = options.capabilities as ViewCliCapabilities | undefined;\n const descriptions = capabilities?.descriptions ?? [];\n const domain = descriptions.filter(item => item.id !== 'workspace.get').map(description => ({\n id: `view.workspace.${description.id}`,\n path: ['view', 'workspace', ...description.id.split('.')],\n summary: description.summary, operation: description.id,\n }));\n const operations: readonly string[] = capabilities?.operations ?? (Array.isArray(options.capabilities) ? options.capabilities : []);\n return Object.freeze([...domain, ...plugins.cliContributions.filter(item => operations.includes(item.operation))]);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;AAaA,IAAO,cAAQ;AAAA,EACb,GAAG;AAAA,EACH;AAAA,EACA;AAAA,EACA;AACF;;;ACfO,IAAM,2BAA2B;AAGjC,SAAS,2BAA2B,UAA0B,CAAC,GAAG;AACvE,QAAM,eAAe,QAAQ;AAC7B,QAAM,eAAe,cAAc,gBAAgB,CAAC;AACpD,QAAM,SAAS,aAAa,OAAO,UAAQ,KAAK,OAAO,eAAe,EAAE,IAAI,kBAAgB;AAAA,IAC1F,IAAI,kBAAkB,YAAY,EAAE;AAAA,IACpC,MAAM,CAAC,QAAQ,aAAa,GAAG,YAAY,GAAG,MAAM,GAAG,CAAC;AAAA,IACxD,SAAS,YAAY;AAAA,IAAS,WAAW,YAAY;AAAA,EACvD,EAAE;AACF,QAAM,aAAgC,cAAc,eAAe,MAAM,QAAQ,QAAQ,YAAY,IAAI,QAAQ,eAAe,CAAC;AACjI,SAAO,OAAO,OAAO,CAAC,GAAG,QAAQ,GAAG,YAAQ,iBAAiB,OAAO,UAAQ,WAAW,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC;AACnH;",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VIEW_PAGE_TYPES
3
- } from "./chunk-E3Z7GLFU.mjs";
3
+ } from "./chunk-QJHQN6OD.mjs";
4
4
  import {
5
5
  __export
6
6
  } from "./chunk-FLGC65SR.mjs";
@@ -39,4 +39,4 @@ export {
39
39
  TITLE_I18N_KEY,
40
40
  identity_exports
41
41
  };
42
- //# sourceMappingURL=chunk-STQPRNEO.mjs.map
42
+ //# sourceMappingURL=chunk-MLXRIWJA.mjs.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  RESOURCE_FALLBACK_LAYOUT
3
- } from "./chunk-KX2WU5Z6.mjs";
3
+ } from "./chunk-KPLESRQY.mjs";
4
4
  import {
5
5
  VIEW_PAGE_TYPES
6
- } from "./chunk-E3Z7GLFU.mjs";
6
+ } from "./chunk-QJHQN6OD.mjs";
7
7
  import {
8
8
  __export
9
9
  } from "./chunk-FLGC65SR.mjs";
@@ -55,4 +55,4 @@ export {
55
55
  PROPERTIES_TITLE_I18N_KEY,
56
56
  identity_exports
57
57
  };
58
- //# sourceMappingURL=chunk-D25SR5FS.mjs.map
58
+ //# sourceMappingURL=chunk-N2SH3JGI.mjs.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  PLUGINS_OPERATION_DESCRIPTIONS
3
- } from "./chunk-OKQ5RBKO.mjs";
3
+ } from "./chunk-LVWHM3UN.mjs";
4
4
 
5
5
  // packages/view-plugin-plugins/src/cli.ts
6
6
  var cliContributions = Object.freeze(
7
7
  PLUGINS_OPERATION_DESCRIPTIONS.map((description) => ({
8
- id: `forgeax.view.plugins.${description.id}`,
9
- path: ["view", "plugins", ...description.path],
8
+ id: description.id,
9
+ path: description.id.split("."),
10
10
  summary: description.summary,
11
11
  operation: description.id
12
12
  }))
@@ -15,4 +15,4 @@ var cliContributions = Object.freeze(
15
15
  export {
16
16
  cliContributions
17
17
  };
18
- //# sourceMappingURL=chunk-KI4WGTWL.mjs.map
18
+ //# sourceMappingURL=chunk-N7NXZ6R3.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/view-plugin-plugins/src/cli.ts"],
4
- "sourcesContent": ["import { PLUGINS_OPERATION_DESCRIPTIONS } from './api.ts';\n\nexport const cliContributions = Object.freeze(\n PLUGINS_OPERATION_DESCRIPTIONS.map((description) => ({\n id: `forgeax.view.plugins.${description.id}`,\n path: ['view', 'plugins', ...description.path],\n summary: description.summary,\n operation: description.id,\n })),\n);\n"],
5
- "mappings": ";;;;;AAEO,IAAM,mBAAmB,OAAO;AAAA,EACrC,+BAA+B,IAAI,CAAC,iBAAiB;AAAA,IACnD,IAAI,wBAAwB,YAAY,EAAE;AAAA,IAC1C,MAAM,CAAC,QAAQ,WAAW,GAAG,YAAY,IAAI;AAAA,IAC7C,SAAS,YAAY;AAAA,IACrB,WAAW,YAAY;AAAA,EACzB,EAAE;AACJ;",
4
+ "sourcesContent": ["import { PLUGINS_OPERATION_DESCRIPTIONS } from './api.ts';\n\nexport const cliContributions = Object.freeze(\n PLUGINS_OPERATION_DESCRIPTIONS.map((description) => ({\n id: description.id,\n path: description.id.split('.'),\n summary: description.summary,\n operation: description.id,\n })),\n);\n"],
5
+ "mappings": ";;;;;AAEO,IAAM,mBAAmB,OAAO;AAAA,EACrC,+BAA+B,IAAI,CAAC,iBAAiB;AAAA,IACnD,IAAI,YAAY;AAAA,IAChB,MAAM,YAAY,GAAG,MAAM,GAAG;AAAA,IAC9B,SAAS,YAAY;AAAA,IACrB,WAAW,YAAY;AAAA,EACzB,EAAE;AACJ;",
6
6
  "names": []
7
7
  }
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  PLUGINS_OPERATION_DESCRIPTIONS
3
- } from "./chunk-OKQ5RBKO.mjs";
3
+ } from "./chunk-LVWHM3UN.mjs";
4
4
  import {
5
5
  BACKEND_MODULE,
6
6
  BACKEND_PLUGIN_ID
7
- } from "./chunk-EWSCJF77.mjs";
7
+ } from "./chunk-2CMCY54A.mjs";
8
8
  import {
9
9
  reportWorkspaceCommandError,
10
10
  workspaceDiagnosticRecord
11
- } from "./chunk-U5R6MVM4.mjs";
11
+ } from "./chunk-RFTLGEB5.mjs";
12
12
  import {
13
13
  VIEW_WORKSPACE_API_VERSION,
14
14
  VIEW_WORKSPACE_DOMAIN_OPERATIONS,
@@ -18,7 +18,7 @@ import {
18
18
  requireWorkspaceObject,
19
19
  requireWorkspaceString,
20
20
  workspaceError
21
- } from "./chunk-E3Z7GLFU.mjs";
21
+ } from "./chunk-QJHQN6OD.mjs";
22
22
  import {
23
23
  createWorkspaceId
24
24
  } from "./chunk-4XEXLHX4.mjs";
@@ -1344,4 +1344,4 @@ export {
1344
1344
  ViewInspectorPanel,
1345
1345
  viewInspectorFrontendPlugin
1346
1346
  };
1347
- //# sourceMappingURL=chunk-7IGFAI5H.mjs.map
1347
+ //# sourceMappingURL=chunk-O5QX6H3U.mjs.map
@@ -64,8 +64,18 @@ async function mountViewReactPanelInto({ element, panel, props }) {
64
64
  }
65
65
  function createViewPanelHost({ registry, overlayRoot }) {
66
66
  if (!registry) throw new TypeError("createViewPanelHost requires viewSlotRegistry");
67
+ let revealer;
67
68
  return Object.freeze({
68
69
  registry,
70
+ setRevealer(next) {
71
+ revealer = next;
72
+ return () => {
73
+ if (revealer === next) revealer = void 0;
74
+ };
75
+ },
76
+ reveal(slot) {
77
+ return revealer?.(slot) ?? Promise.resolve(false);
78
+ },
69
79
  waitForSlot: (slot) => waitForViewSlot(registry, slot),
70
80
  mount(slot, node) {
71
81
  return registry.mount(slot, node);
@@ -89,4 +99,4 @@ export {
89
99
  mountViewReactPanelInto,
90
100
  createViewPanelHost
91
101
  };
92
- //# sourceMappingURL=chunk-5W7SC5D4.mjs.map
102
+ //# sourceMappingURL=chunk-P2Y73QJJ.mjs.map