@forgeax/view 0.5.0-dev.13619.c20ebf66cef4 → 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 (258) hide show
  1. package/README.md +19 -5
  2. package/dist/build-revision.json +1 -1
  3. package/dist/modules/backend.mjs +33 -33
  4. package/dist/modules/browser.mjs +49 -49
  5. package/dist/modules/chunks/{chunk-OS7BK3FO.mjs → chunk-2CMCY54A.mjs} +2 -2
  6. package/dist/modules/chunks/{chunk-NHNPQ3ZS.mjs → chunk-2RUKPDIE.mjs} +4 -4
  7. package/dist/modules/chunks/{chunk-NHNPQ3ZS.mjs.map → chunk-2RUKPDIE.mjs.map} +1 -1
  8. package/dist/modules/chunks/{chunk-CYQ7BITZ.mjs → chunk-3FBX3P3H.mjs} +6 -6
  9. package/dist/modules/chunks/{chunk-VD4QU7KY.mjs → chunk-45WL24XN.mjs} +2 -2
  10. package/dist/modules/chunks/{chunk-FSSKCXPL.mjs → chunk-4FYKRL46.mjs} +3 -3
  11. package/dist/modules/chunks/{chunk-Y4SFATAM.mjs → chunk-4MJHVZMB.mjs} +6 -6
  12. package/dist/modules/chunks/{chunk-D3ISMGT6.mjs → chunk-5HVXQEO3.mjs} +7 -7
  13. package/dist/modules/chunks/{chunk-J7QRK3FU.mjs → chunk-66LM6NO6.mjs} +4 -4
  14. package/dist/modules/chunks/{chunk-RGM4S2BE.mjs → chunk-6C4OCCYB.mjs} +12 -12
  15. package/dist/modules/chunks/{chunk-RGM4S2BE.mjs.map → chunk-6C4OCCYB.mjs.map} +1 -1
  16. package/dist/modules/chunks/{chunk-QNSUBUZF.mjs → chunk-6J27SWMY.mjs} +1 -1
  17. package/dist/modules/chunks/{chunk-QNJL265P.mjs → chunk-6VK7HB4X.mjs} +4 -4
  18. package/dist/modules/chunks/{chunk-AZHCKPUL.mjs → chunk-6WZZ7TIC.mjs} +2 -2
  19. package/dist/modules/chunks/{chunk-A22PJUZM.mjs → chunk-7DFCIN3T.mjs} +3 -3
  20. package/dist/modules/chunks/{chunk-A22PJUZM.mjs.map → chunk-7DFCIN3T.mjs.map} +1 -1
  21. package/dist/modules/chunks/{chunk-CVIF6DYH.mjs → chunk-7MWZK7HS.mjs} +3 -3
  22. package/dist/modules/chunks/{chunk-7YWMB7HV.mjs → chunk-A7OGXJAV.mjs} +3 -3
  23. package/dist/modules/chunks/{chunk-KOBAWLZL.mjs → chunk-AUINYWZP.mjs} +2 -2
  24. package/dist/modules/chunks/{chunk-R6MT6F3T.mjs → chunk-B24VYGHV.mjs} +3 -3
  25. package/dist/modules/chunks/{chunk-ZKFH7EMU.mjs → chunk-BIUWJROZ.mjs} +3 -3
  26. package/dist/modules/chunks/{chunk-ZKFH7EMU.mjs.map → chunk-BIUWJROZ.mjs.map} +2 -2
  27. package/dist/modules/chunks/{chunk-M66NDY35.mjs → chunk-C2AMOM7H.mjs} +3 -3
  28. package/dist/modules/chunks/{chunk-EOW4JGVV.mjs → chunk-C3WVSJZF.mjs} +6 -6
  29. package/dist/modules/chunks/{chunk-TFBSEYKW.mjs → chunk-CAXCOZ7Y.mjs} +3 -3
  30. package/dist/modules/chunks/{chunk-P27F2TZN.mjs → chunk-CN6YN4HP.mjs} +10 -10
  31. package/dist/modules/chunks/chunk-CN6YN4HP.mjs.map +7 -0
  32. package/dist/modules/chunks/{chunk-25PFC2DY.mjs → chunk-CXFQME65.mjs} +3 -3
  33. package/dist/modules/chunks/{chunk-VD3C4DYT.mjs → chunk-CYOLEAAY.mjs} +13 -13
  34. package/dist/modules/chunks/{chunk-VD3C4DYT.mjs.map → chunk-CYOLEAAY.mjs.map} +1 -1
  35. package/dist/modules/chunks/{chunk-P3ZW2T37.mjs → chunk-CYU3WWN6.mjs} +3 -3
  36. package/dist/modules/chunks/{chunk-SKZC6VTV.mjs → chunk-D2LZIQE2.mjs} +2 -2
  37. package/dist/modules/chunks/{chunk-QNUBIFAY.mjs → chunk-DC5JP46Y.mjs} +2 -2
  38. package/dist/modules/chunks/{chunk-7MQIGD6Q.mjs → chunk-DOU4MNMQ.mjs} +3 -3
  39. package/dist/modules/chunks/{chunk-JKDBKS7P.mjs → chunk-E4G4HDOC.mjs} +3 -3
  40. package/dist/modules/chunks/{chunk-XXJ32F5P.mjs → chunk-EZAJ66NW.mjs} +3 -3
  41. package/dist/modules/chunks/{chunk-5PZL6W3F.mjs → chunk-FIWL6TQS.mjs} +2 -2
  42. package/dist/modules/chunks/{chunk-K4C5WOTT.mjs → chunk-FSSARTVM.mjs} +3 -3
  43. package/dist/modules/chunks/{chunk-5HJ336VM.mjs → chunk-FXXPWAXM.mjs} +3 -3
  44. package/dist/modules/chunks/{chunk-43L37UYV.mjs → chunk-G2QCXN56.mjs} +6 -6
  45. package/dist/modules/chunks/{chunk-DJKXBCZH.mjs → chunk-GRDCA6LD.mjs} +8 -8
  46. package/dist/modules/chunks/{chunk-DJKXBCZH.mjs.map → chunk-GRDCA6LD.mjs.map} +1 -1
  47. package/dist/modules/chunks/{chunk-4ZI5DFBR.mjs → chunk-GUVUL6D2.mjs} +3 -3
  48. package/dist/modules/chunks/{chunk-MFEFV3YF.mjs → chunk-I32EONBF.mjs} +2 -2
  49. package/dist/modules/chunks/{chunk-DX4M6LZH.mjs → chunk-IGIELQZ2.mjs} +5 -5
  50. package/dist/modules/chunks/{chunk-U5LBMAG3.mjs → chunk-IMDR26Y3.mjs} +3 -3
  51. package/dist/modules/chunks/{chunk-MUBV2LNK.mjs → chunk-JVOHFCI4.mjs} +3 -3
  52. package/dist/modules/chunks/{chunk-CEB76QBE.mjs → chunk-KCM7ZCQ3.mjs} +5 -5
  53. package/dist/modules/chunks/chunk-KCM7ZCQ3.mjs.map +7 -0
  54. package/dist/modules/chunks/{chunk-TPLT4PBX.mjs → chunk-KJTMDFFX.mjs} +4 -4
  55. package/dist/modules/chunks/{chunk-WC6NGMGI.mjs → chunk-KPLESRQY.mjs} +3 -3
  56. package/dist/modules/chunks/{chunk-ZW7LLDOL.mjs → chunk-KUOWDTI6.mjs} +2 -2
  57. package/dist/modules/chunks/{chunk-BJTFQQQR.mjs → chunk-L6IHUN7X.mjs} +2 -2
  58. package/dist/modules/chunks/chunk-L6IHUN7X.mjs.map +7 -0
  59. package/dist/modules/chunks/{chunk-PHCUCHVL.mjs → chunk-LBQ6DFMP.mjs} +2 -2
  60. package/dist/modules/chunks/{chunk-DC3PU6SO.mjs → chunk-LVWHM3UN.mjs} +2 -2
  61. package/dist/modules/chunks/{chunk-JE4N575J.mjs → chunk-MDQMARAN.mjs} +6 -6
  62. package/dist/modules/chunks/{chunk-JE4N575J.mjs.map → chunk-MDQMARAN.mjs.map} +2 -2
  63. package/dist/modules/chunks/{chunk-NSPN5OQ5.mjs → chunk-MLXRIWJA.mjs} +2 -2
  64. package/dist/modules/chunks/{chunk-FVSDKOXR.mjs → chunk-N2SH3JGI.mjs} +3 -3
  65. package/dist/modules/chunks/{chunk-5WVRCLHN.mjs → chunk-N7NXZ6R3.mjs} +4 -4
  66. package/dist/modules/chunks/{chunk-5WVRCLHN.mjs.map → chunk-N7NXZ6R3.mjs.map} +2 -2
  67. package/dist/modules/chunks/{chunk-EW7VMNZA.mjs → chunk-O5QX6H3U.mjs} +5 -5
  68. package/dist/modules/chunks/{chunk-4RTL3LS3.mjs → chunk-PCQNUFDL.mjs} +7 -7
  69. package/dist/modules/chunks/chunk-PCQNUFDL.mjs.map +7 -0
  70. package/dist/modules/chunks/{chunk-V4SOFUJI.mjs → chunk-Q7M7VUOZ.mjs} +6 -6
  71. package/dist/modules/chunks/{chunk-NZ4N7AVG.mjs → chunk-QB33CMEU.mjs} +2 -2
  72. package/dist/modules/chunks/{chunk-QYJZ3SOV.mjs → chunk-QJHQN6OD.mjs} +5 -5
  73. package/dist/modules/chunks/chunk-QJHQN6OD.mjs.map +7 -0
  74. package/dist/modules/chunks/{chunk-OGFZB75B.mjs → chunk-QW2VT3XB.mjs} +2 -2
  75. package/dist/modules/chunks/{chunk-EQRDY5CQ.mjs → chunk-RFTLGEB5.mjs} +2 -2
  76. package/dist/modules/chunks/{chunk-CRPXFJ6K.mjs → chunk-RYYKMDNI.mjs} +3 -3
  77. package/dist/modules/chunks/{chunk-A7HXBQUG.mjs → chunk-SFB5BDTB.mjs} +2 -2
  78. package/dist/modules/chunks/{chunk-SSVRSFTX.mjs → chunk-SNICHQJP.mjs} +2 -2
  79. package/dist/modules/chunks/{chunk-KY2AWNDR.mjs → chunk-SPGFO2TA.mjs} +2 -2
  80. package/dist/modules/chunks/{chunk-XOZ5EMNY.mjs → chunk-TMPTVIAP.mjs} +2 -2
  81. package/dist/modules/chunks/{chunk-D3GX7HWI.mjs → chunk-UWJYROKS.mjs} +5 -5
  82. package/dist/modules/chunks/{chunk-AOD6XLJC.mjs → chunk-UZH2664E.mjs} +2 -2
  83. package/dist/modules/chunks/{chunk-ZRG7LDCA.mjs → chunk-VC4OEPDH.mjs} +2 -2
  84. package/dist/modules/chunks/{chunk-L24HPIQP.mjs → chunk-VKWEA6NG.mjs} +27 -27
  85. package/dist/modules/chunks/{chunk-5SHQXSSM.mjs → chunk-VSJOW7J4.mjs} +5 -5
  86. package/dist/modules/chunks/{chunk-5N5FDO5Y.mjs → chunk-WFM434WJ.mjs} +2 -2
  87. package/dist/modules/chunks/{chunk-QQP7ZGQD.mjs → chunk-WJNASQF2.mjs} +2 -2
  88. package/dist/modules/chunks/{chunk-FSYQ3LBQ.mjs → chunk-XUNDH3E7.mjs} +2 -2
  89. package/dist/modules/chunks/{chunk-LOVO3P2Q.mjs → chunk-YDARD4EP.mjs} +2 -2
  90. package/dist/modules/chunks/{chunk-LCVL3V5U.mjs → chunk-YU3HRQX7.mjs} +4 -4
  91. package/dist/modules/chunks/{chunk-M7XSCLYV.mjs → chunk-ZRE7BDDB.mjs} +15 -4
  92. package/dist/modules/chunks/chunk-ZRE7BDDB.mjs.map +7 -0
  93. package/dist/modules/cli-contributions.mjs +14 -14
  94. package/dist/modules/cli.mjs +5 -5
  95. package/dist/modules/command-executor.mjs +3 -3
  96. package/dist/modules/embedded.mjs +28 -28
  97. package/dist/modules/extension-bridge.mjs +4 -4
  98. package/dist/modules/frontend-root.mjs +46 -46
  99. package/dist/modules/index.mjs +64 -64
  100. package/dist/modules/pages/scene.mjs +5 -5
  101. package/dist/modules/plugin.mjs +34 -34
  102. package/dist/modules/plugins/asset/frontend.mjs +10 -10
  103. package/dist/modules/plugins/asset/identity.mjs +9 -9
  104. package/dist/modules/plugins/asset/ui.mjs +3 -3
  105. package/dist/modules/plugins/content-browser/frontend.mjs +3 -3
  106. package/dist/modules/plugins/content-browser/identity.mjs +2 -2
  107. package/dist/modules/plugins/content-browser/ui.mjs +3 -3
  108. package/dist/modules/plugins/display/backend.mjs +3 -3
  109. package/dist/modules/plugins/display/frontend.mjs +5 -5
  110. package/dist/modules/plugins/display/identity.mjs +2 -2
  111. package/dist/modules/plugins/display/ui.mjs +3 -3
  112. package/dist/modules/plugins/inspector/frontend.mjs +3 -3
  113. package/dist/modules/plugins/inspector/identity.mjs +2 -2
  114. package/dist/modules/plugins/inspector/ui.mjs +3 -3
  115. package/dist/modules/plugins/material/frontend.mjs +10 -10
  116. package/dist/modules/plugins/material/identity.mjs +9 -9
  117. package/dist/modules/plugins/material/ui.mjs +10 -10
  118. package/dist/modules/plugins/mesh/frontend.mjs +10 -10
  119. package/dist/modules/plugins/mesh/identity.mjs +9 -9
  120. package/dist/modules/plugins/mesh/ui.mjs +10 -10
  121. package/dist/modules/plugins/plugins/api.mjs +4 -4
  122. package/dist/modules/plugins/plugins/backend.mjs +7 -7
  123. package/dist/modules/plugins/plugins/cli.mjs +5 -5
  124. package/dist/modules/plugins/plugins/frontend.mjs +3 -3
  125. package/dist/modules/plugins/plugins/identity.mjs +2 -2
  126. package/dist/modules/plugins/plugins/runtime.mjs +6 -6
  127. package/dist/modules/plugins/plugins/ui/panel.mjs +3 -3
  128. package/dist/modules/plugins/plugins/ui.mjs +4 -4
  129. package/dist/modules/plugins/scene/frontend.mjs +5 -5
  130. package/dist/modules/plugins/scene/identity.mjs +2 -2
  131. package/dist/modules/plugins/scene-tree/frontend.mjs +3 -3
  132. package/dist/modules/plugins/scene-tree/identity.mjs +2 -2
  133. package/dist/modules/plugins/scene-tree/ui.mjs +3 -3
  134. package/dist/modules/plugins/texture/frontend.mjs +10 -10
  135. package/dist/modules/plugins/texture/identity.mjs +9 -9
  136. package/dist/modules/plugins/texture/ui.mjs +10 -10
  137. package/dist/modules/plugins/viewport/frontend.mjs +12 -12
  138. package/dist/modules/plugins/viewport/identity.mjs +2 -2
  139. package/dist/modules/plugins/viewport/presentation.mjs +4 -4
  140. package/dist/modules/plugins/viewport/schema.mjs +2 -2
  141. package/dist/modules/plugins/viewport/workspace-shell.mjs +9 -9
  142. package/dist/modules/product.mjs +34 -34
  143. package/dist/modules/shell/frontend.mjs +1 -1
  144. package/dist/modules/viewer/catalog/backend.mjs +30 -30
  145. package/dist/modules/viewer/catalog/frontend.mjs +42 -42
  146. package/dist/modules/viewer/catalog/shared.mjs +20 -20
  147. package/dist/modules/viewer/catalog.mjs +50 -50
  148. package/dist/modules/viewer/cli.mjs +10 -10
  149. package/dist/modules/viewer-host/frontend.mjs +48 -48
  150. package/dist/modules/viewer-host/page-registry.mjs +6 -6
  151. package/dist/modules/viewer-host.mjs +6 -6
  152. package/dist/modules/viewer.mjs +50 -50
  153. package/dist/modules/workspace/api.mjs +1 -1
  154. package/dist/modules/workspace/backend.mjs +10 -10
  155. package/dist/modules/workspace/broker.mjs +9 -9
  156. package/dist/modules/workspace/cli.mjs +2 -2
  157. package/dist/modules/workspace/client.mjs +3 -3
  158. package/dist/modules/workspace/command-error.mjs +2 -2
  159. package/dist/modules/workspace/contract.mjs +1 -1
  160. package/dist/modules/workspace/engine-adapter.mjs +3 -3
  161. package/dist/modules/workspace/extension-bridge.mjs +4 -4
  162. package/dist/modules/workspace/frontend-plugin.mjs +8 -8
  163. package/dist/modules/workspace/frontend.mjs +9 -9
  164. package/dist/modules/workspace/page-title.mjs +3 -3
  165. package/dist/modules/workspace/presentation.mjs +4 -4
  166. package/dist/modules/workspace/preview-surface.mjs +7 -7
  167. package/dist/modules/workspace/project-session.mjs +2 -2
  168. package/dist/modules/workspace/render-resize-sync.mjs +2 -2
  169. package/dist/modules/workspace/resident.mjs +4 -4
  170. package/dist/modules/workspace/resource-open.mjs +5 -5
  171. package/dist/modules/workspace/resource-page.mjs +8 -8
  172. package/dist/modules/workspace/tool-runtime.mjs +3 -3
  173. package/dist/modules/workspace/view-trace.mjs +3 -3
  174. package/dist/modules/workspace/workspace-recovery.mjs +4 -4
  175. package/dist/modules/workspace/workspace-state.mjs +2 -2
  176. package/dist/modules/workspace-frontend.mjs +8 -8
  177. package/dist/viewer/assets/{embedded-BZSPh0if.js → embedded-BKEAtUD6.js} +2 -2
  178. package/dist/viewer/assets/{embedded-BZSPh0if.js.map → embedded-BKEAtUD6.js.map} +1 -1
  179. package/dist/viewer/assets/{main-CmJEE-8D.js → main-BQrn6wsa.js} +5 -5
  180. package/dist/viewer/assets/main-BQrn6wsa.js.map +1 -0
  181. package/dist/viewer/assets/{panels-lazy-DqCwhGd9.js → panels-lazy-C_Cs-76A.js} +2 -2
  182. package/dist/viewer/assets/{panels-lazy-DqCwhGd9.js.map → panels-lazy-C_Cs-76A.js.map} +1 -1
  183. package/dist/viewer/assets/{panels-ui-Cm3As_jE.js → panels-ui-DEDHJLuE.js} +5 -5
  184. package/dist/viewer/assets/panels-ui-DEDHJLuE.js.map +1 -0
  185. package/dist/viewer/assets/{wgpu_wasm--oeqTwVY.js → wgpu_wasm-cNR5izZM.js} +126 -0
  186. package/dist/viewer/assets/{wgpu_wasm_bg-WoZ1YI1I.wasm → wgpu_wasm_bg-Dps0jNcQ.wasm} +0 -0
  187. package/dist/viewer/index.html +3 -3
  188. package/dist/viewer/panels.js +1 -1
  189. package/package.json +2 -2
  190. package/skills/forgeax-view-cli/SKILL.md +7 -0
  191. package/dist/modules/chunks/chunk-4RTL3LS3.mjs.map +0 -7
  192. package/dist/modules/chunks/chunk-BJTFQQQR.mjs.map +0 -7
  193. package/dist/modules/chunks/chunk-CEB76QBE.mjs.map +0 -7
  194. package/dist/modules/chunks/chunk-M7XSCLYV.mjs.map +0 -7
  195. package/dist/modules/chunks/chunk-P27F2TZN.mjs.map +0 -7
  196. package/dist/modules/chunks/chunk-QYJZ3SOV.mjs.map +0 -7
  197. package/dist/viewer/assets/main-CmJEE-8D.js.map +0 -1
  198. package/dist/viewer/assets/panels-ui-Cm3As_jE.js.map +0 -1
  199. /package/dist/modules/chunks/{chunk-OS7BK3FO.mjs.map → chunk-2CMCY54A.mjs.map} +0 -0
  200. /package/dist/modules/chunks/{chunk-CYQ7BITZ.mjs.map → chunk-3FBX3P3H.mjs.map} +0 -0
  201. /package/dist/modules/chunks/{chunk-VD4QU7KY.mjs.map → chunk-45WL24XN.mjs.map} +0 -0
  202. /package/dist/modules/chunks/{chunk-FSSKCXPL.mjs.map → chunk-4FYKRL46.mjs.map} +0 -0
  203. /package/dist/modules/chunks/{chunk-Y4SFATAM.mjs.map → chunk-4MJHVZMB.mjs.map} +0 -0
  204. /package/dist/modules/chunks/{chunk-D3ISMGT6.mjs.map → chunk-5HVXQEO3.mjs.map} +0 -0
  205. /package/dist/modules/chunks/{chunk-J7QRK3FU.mjs.map → chunk-66LM6NO6.mjs.map} +0 -0
  206. /package/dist/modules/chunks/{chunk-QNSUBUZF.mjs.map → chunk-6J27SWMY.mjs.map} +0 -0
  207. /package/dist/modules/chunks/{chunk-QNJL265P.mjs.map → chunk-6VK7HB4X.mjs.map} +0 -0
  208. /package/dist/modules/chunks/{chunk-AZHCKPUL.mjs.map → chunk-6WZZ7TIC.mjs.map} +0 -0
  209. /package/dist/modules/chunks/{chunk-CVIF6DYH.mjs.map → chunk-7MWZK7HS.mjs.map} +0 -0
  210. /package/dist/modules/chunks/{chunk-7YWMB7HV.mjs.map → chunk-A7OGXJAV.mjs.map} +0 -0
  211. /package/dist/modules/chunks/{chunk-KOBAWLZL.mjs.map → chunk-AUINYWZP.mjs.map} +0 -0
  212. /package/dist/modules/chunks/{chunk-R6MT6F3T.mjs.map → chunk-B24VYGHV.mjs.map} +0 -0
  213. /package/dist/modules/chunks/{chunk-M66NDY35.mjs.map → chunk-C2AMOM7H.mjs.map} +0 -0
  214. /package/dist/modules/chunks/{chunk-EOW4JGVV.mjs.map → chunk-C3WVSJZF.mjs.map} +0 -0
  215. /package/dist/modules/chunks/{chunk-TFBSEYKW.mjs.map → chunk-CAXCOZ7Y.mjs.map} +0 -0
  216. /package/dist/modules/chunks/{chunk-25PFC2DY.mjs.map → chunk-CXFQME65.mjs.map} +0 -0
  217. /package/dist/modules/chunks/{chunk-P3ZW2T37.mjs.map → chunk-CYU3WWN6.mjs.map} +0 -0
  218. /package/dist/modules/chunks/{chunk-SKZC6VTV.mjs.map → chunk-D2LZIQE2.mjs.map} +0 -0
  219. /package/dist/modules/chunks/{chunk-QNUBIFAY.mjs.map → chunk-DC5JP46Y.mjs.map} +0 -0
  220. /package/dist/modules/chunks/{chunk-7MQIGD6Q.mjs.map → chunk-DOU4MNMQ.mjs.map} +0 -0
  221. /package/dist/modules/chunks/{chunk-JKDBKS7P.mjs.map → chunk-E4G4HDOC.mjs.map} +0 -0
  222. /package/dist/modules/chunks/{chunk-XXJ32F5P.mjs.map → chunk-EZAJ66NW.mjs.map} +0 -0
  223. /package/dist/modules/chunks/{chunk-5PZL6W3F.mjs.map → chunk-FIWL6TQS.mjs.map} +0 -0
  224. /package/dist/modules/chunks/{chunk-K4C5WOTT.mjs.map → chunk-FSSARTVM.mjs.map} +0 -0
  225. /package/dist/modules/chunks/{chunk-5HJ336VM.mjs.map → chunk-FXXPWAXM.mjs.map} +0 -0
  226. /package/dist/modules/chunks/{chunk-43L37UYV.mjs.map → chunk-G2QCXN56.mjs.map} +0 -0
  227. /package/dist/modules/chunks/{chunk-4ZI5DFBR.mjs.map → chunk-GUVUL6D2.mjs.map} +0 -0
  228. /package/dist/modules/chunks/{chunk-MFEFV3YF.mjs.map → chunk-I32EONBF.mjs.map} +0 -0
  229. /package/dist/modules/chunks/{chunk-DX4M6LZH.mjs.map → chunk-IGIELQZ2.mjs.map} +0 -0
  230. /package/dist/modules/chunks/{chunk-U5LBMAG3.mjs.map → chunk-IMDR26Y3.mjs.map} +0 -0
  231. /package/dist/modules/chunks/{chunk-MUBV2LNK.mjs.map → chunk-JVOHFCI4.mjs.map} +0 -0
  232. /package/dist/modules/chunks/{chunk-TPLT4PBX.mjs.map → chunk-KJTMDFFX.mjs.map} +0 -0
  233. /package/dist/modules/chunks/{chunk-WC6NGMGI.mjs.map → chunk-KPLESRQY.mjs.map} +0 -0
  234. /package/dist/modules/chunks/{chunk-ZW7LLDOL.mjs.map → chunk-KUOWDTI6.mjs.map} +0 -0
  235. /package/dist/modules/chunks/{chunk-PHCUCHVL.mjs.map → chunk-LBQ6DFMP.mjs.map} +0 -0
  236. /package/dist/modules/chunks/{chunk-DC3PU6SO.mjs.map → chunk-LVWHM3UN.mjs.map} +0 -0
  237. /package/dist/modules/chunks/{chunk-NSPN5OQ5.mjs.map → chunk-MLXRIWJA.mjs.map} +0 -0
  238. /package/dist/modules/chunks/{chunk-FVSDKOXR.mjs.map → chunk-N2SH3JGI.mjs.map} +0 -0
  239. /package/dist/modules/chunks/{chunk-EW7VMNZA.mjs.map → chunk-O5QX6H3U.mjs.map} +0 -0
  240. /package/dist/modules/chunks/{chunk-V4SOFUJI.mjs.map → chunk-Q7M7VUOZ.mjs.map} +0 -0
  241. /package/dist/modules/chunks/{chunk-NZ4N7AVG.mjs.map → chunk-QB33CMEU.mjs.map} +0 -0
  242. /package/dist/modules/chunks/{chunk-OGFZB75B.mjs.map → chunk-QW2VT3XB.mjs.map} +0 -0
  243. /package/dist/modules/chunks/{chunk-EQRDY5CQ.mjs.map → chunk-RFTLGEB5.mjs.map} +0 -0
  244. /package/dist/modules/chunks/{chunk-CRPXFJ6K.mjs.map → chunk-RYYKMDNI.mjs.map} +0 -0
  245. /package/dist/modules/chunks/{chunk-A7HXBQUG.mjs.map → chunk-SFB5BDTB.mjs.map} +0 -0
  246. /package/dist/modules/chunks/{chunk-SSVRSFTX.mjs.map → chunk-SNICHQJP.mjs.map} +0 -0
  247. /package/dist/modules/chunks/{chunk-KY2AWNDR.mjs.map → chunk-SPGFO2TA.mjs.map} +0 -0
  248. /package/dist/modules/chunks/{chunk-XOZ5EMNY.mjs.map → chunk-TMPTVIAP.mjs.map} +0 -0
  249. /package/dist/modules/chunks/{chunk-D3GX7HWI.mjs.map → chunk-UWJYROKS.mjs.map} +0 -0
  250. /package/dist/modules/chunks/{chunk-AOD6XLJC.mjs.map → chunk-UZH2664E.mjs.map} +0 -0
  251. /package/dist/modules/chunks/{chunk-ZRG7LDCA.mjs.map → chunk-VC4OEPDH.mjs.map} +0 -0
  252. /package/dist/modules/chunks/{chunk-L24HPIQP.mjs.map → chunk-VKWEA6NG.mjs.map} +0 -0
  253. /package/dist/modules/chunks/{chunk-5SHQXSSM.mjs.map → chunk-VSJOW7J4.mjs.map} +0 -0
  254. /package/dist/modules/chunks/{chunk-5N5FDO5Y.mjs.map → chunk-WFM434WJ.mjs.map} +0 -0
  255. /package/dist/modules/chunks/{chunk-QQP7ZGQD.mjs.map → chunk-WJNASQF2.mjs.map} +0 -0
  256. /package/dist/modules/chunks/{chunk-FSYQ3LBQ.mjs.map → chunk-XUNDH3E7.mjs.map} +0 -0
  257. /package/dist/modules/chunks/{chunk-LOVO3P2Q.mjs.map → chunk-YDARD4EP.mjs.map} +0 -0
  258. /package/dist/modules/chunks/{chunk-LCVL3V5U.mjs.map → chunk-YU3HRQX7.mjs.map} +0 -0
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  workspaceCoreCliContributions
3
- } from "./chunk-ZKFH7EMU.mjs";
3
+ } from "./chunk-BIUWJROZ.mjs";
4
4
  import {
5
5
  createViewCliContributions
6
- } from "./chunk-JE4N575J.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-NZ4N7AVG.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-CEB76QBE.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-QNUBIFAY.mjs";
3
+ } from "./chunk-DC5JP46Y.mjs";
4
4
  import {
5
5
  workspaceDiagnosticRecord
6
- } from "./chunk-EQRDY5CQ.mjs";
6
+ } from "./chunk-RFTLGEB5.mjs";
7
7
  import {
8
8
  VIEW_WORKSPACE_TAB_ID,
9
9
  isOpaqueWorkspaceDiagnostic,
10
10
  workspaceError
11
- } from "./chunk-QYJZ3SOV.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-TPLT4PBX.mjs.map
229
+ //# sourceMappingURL=chunk-KJTMDFFX.mjs.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  dedicatedPreviewPresentation
3
- } from "./chunk-25PFC2DY.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-JKDBKS7P.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-WC6NGMGI.mjs.map
129
+ //# sourceMappingURL=chunk-KPLESRQY.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  PluginsPanel
3
- } from "./chunk-U5LBMAG3.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-ZW7LLDOL.mjs.map
42
+ //# sourceMappingURL=chunk-KUOWDTI6.mjs.map
@@ -1,6 +1,6 @@
1
1
  // packages/view-workspace-core/src/api.ts
2
2
  var VIEW_WORKSPACE_CORE_OPERATION_DESCRIPTIONS = Object.freeze([
3
- { id: "workspace.summary", path: ["workspace", "summary"], summary: "Read bounded project, phase and target identities." },
3
+ { id: "summary.get", path: ["summary", "get"], summary: "Read bounded project, phase and target identities." },
4
4
  { id: "pages.list", path: ["pages", "list"], summary: "Read bounded identities and target summaries for connected View pages." },
5
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
6
  { id: "tabs.get", path: ["tabs", "get"], summary: "Read View bindings and Engine target identities." },
@@ -10,4 +10,4 @@ var VIEW_WORKSPACE_CORE_OPERATION_DESCRIPTIONS = Object.freeze([
10
10
  export {
11
11
  VIEW_WORKSPACE_CORE_OPERATION_DESCRIPTIONS
12
12
  };
13
- //# sourceMappingURL=chunk-BJTFQQQR.mjs.map
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-QQP7ZGQD.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-PHCUCHVL.mjs.map
196
+ //# sourceMappingURL=chunk-LBQ6DFMP.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  defineWorkspaceOperations
3
- } from "./chunk-M7XSCLYV.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-DC3PU6SO.mjs.map
15
+ //# sourceMappingURL=chunk-LVWHM3UN.mjs.map
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  cliContributions
3
- } from "./chunk-5WVRCLHN.mjs";
3
+ } from "./chunk-N7NXZ6R3.mjs";
4
4
  import {
5
5
  backend_default
6
- } from "./chunk-MUBV2LNK.mjs";
6
+ } from "./chunk-JVOHFCI4.mjs";
7
7
  import {
8
8
  frontend_default
9
- } from "./chunk-SSVRSFTX.mjs";
9
+ } from "./chunk-SNICHQJP.mjs";
10
10
  import {
11
11
  identity_exports
12
- } from "./chunk-OS7BK3FO.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-JE4N575J.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-QYJZ3SOV.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-NSPN5OQ5.mjs.map
42
+ //# sourceMappingURL=chunk-MLXRIWJA.mjs.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  RESOURCE_FALLBACK_LAYOUT
3
- } from "./chunk-WC6NGMGI.mjs";
3
+ } from "./chunk-KPLESRQY.mjs";
4
4
  import {
5
5
  VIEW_PAGE_TYPES
6
- } from "./chunk-QYJZ3SOV.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-FVSDKOXR.mjs.map
58
+ //# sourceMappingURL=chunk-N2SH3JGI.mjs.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  PLUGINS_OPERATION_DESCRIPTIONS
3
- } from "./chunk-DC3PU6SO.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-5WVRCLHN.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-DC3PU6SO.mjs";
3
+ } from "./chunk-LVWHM3UN.mjs";
4
4
  import {
5
5
  BACKEND_MODULE,
6
6
  BACKEND_PLUGIN_ID
7
- } from "./chunk-OS7BK3FO.mjs";
7
+ } from "./chunk-2CMCY54A.mjs";
8
8
  import {
9
9
  reportWorkspaceCommandError,
10
10
  workspaceDiagnosticRecord
11
- } from "./chunk-EQRDY5CQ.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-QYJZ3SOV.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-EW7VMNZA.mjs.map
1347
+ //# sourceMappingURL=chunk-O5QX6H3U.mjs.map
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  reportWorkspaceCommandError,
3
3
  workspaceDiagnosticRecord
4
- } from "./chunk-EQRDY5CQ.mjs";
4
+ } from "./chunk-RFTLGEB5.mjs";
5
5
  import {
6
6
  VIEW_WORKSPACE_SERVICES,
7
7
  VIEW_WORKSPACE_STATE_TOPIC,
8
8
  ViewWorkspaceError,
9
9
  createWorkspaceRequest,
10
10
  requireWorkspaceString
11
- } from "./chunk-QYJZ3SOV.mjs";
11
+ } from "./chunk-QJHQN6OD.mjs";
12
12
 
13
13
  // packages/view-workspace-core/src/client.ts
14
14
  var VIEW_INSPECTOR_TOPIC = "forgeax.view.inspector.changed";
@@ -84,7 +84,7 @@ var ViewWorkspaceClient = class {
84
84
  return this.call("tabs.get", {}, options);
85
85
  }
86
86
  getSummary(options = {}) {
87
- return this.call("workspace.summary", {}, options);
87
+ return this.call("summary.get", {}, options);
88
88
  }
89
89
  listPages(options = {}) {
90
90
  return this.call("pages.list", {}, options);
@@ -148,7 +148,7 @@ var ViewWorkspaceClient = class {
148
148
  }
149
149
  rebuildAssetSource(guid, { projectId, tabId, targetId, targetGeneration, expectedRevision, requestId, ...options } = {}) {
150
150
  return this.call(
151
- "asset-source.rebuild",
151
+ "asset.source.rebuild",
152
152
  {
153
153
  guid,
154
154
  tabId,
@@ -163,7 +163,7 @@ var ViewWorkspaceClient = class {
163
163
  }
164
164
  coldCookAssetSource(guid, { projectId, tabId, targetId, targetGeneration, expectedRevision, requestId, ...options } = {}) {
165
165
  return this.call(
166
- "asset-source.cold-cook",
166
+ "asset.source.cold-cook",
167
167
  {
168
168
  guid,
169
169
  tabId,
@@ -271,7 +271,7 @@ var ViewWorkspaceClient = class {
271
271
  }
272
272
  getSceneTree({ projectId, targetId, targetGeneration, tabId, offset, limit, revision, ...options } = {}) {
273
273
  return this.call(
274
- "scene-tree.get",
274
+ "scene.tree.get",
275
275
  {
276
276
  tabId,
277
277
  ...projectId === void 0 ? {} : { projectId },
@@ -310,4 +310,4 @@ export {
310
310
  ViewWorkspaceClient,
311
311
  createViewWorkspaceClient
312
312
  };
313
- //# sourceMappingURL=chunk-4RTL3LS3.mjs.map
313
+ //# sourceMappingURL=chunk-PCQNUFDL.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/view-workspace-core/src/client.ts"],
4
+ "sourcesContent": ["import type { HostTransportClient, HostRequestOptions } from '@forgeax/engine-host/transport';\nimport type { EngineWorkspaceCameraInput, EngineWorkspaceCameraResult, EngineWorkspaceTargetTools } from '@forgeax/engine/app';\nimport type { WorkspaceState, WorkspaceSummary, WorkspacePages, WorkspacePackReveal, WorkspacePackRevealResult, WorkspaceInspection, WorkspaceAsset } from './contract.ts';\nimport type { ProjectSession } from './project-session.ts';\nimport { workspaceDiagnosticRecord } from './command-error.ts';\nexport type WorkspaceCallOptions = HostRequestOptions & { requestId?: string; reportError?: boolean };\nexport type WorkspaceTargetOptions = WorkspaceCallOptions & { tabId?: string; targetId?: string; targetGeneration?: number };\nexport type WorkspaceOptions = WorkspaceTargetOptions & Partial<EngineWorkspaceCameraInput> & {\n label?: string; root?: string; projectId?: string; expectedTargetId?: string | null; expectedTargetState?: string;\n expectedRevision?: string; width?: number; height?: number; reason?: string; offset?: number; limit?: number; revision?: string;\n sourceId?: string; sourceGeneration?: number; sinceRevision?: number;\n};\nexport type WorkspaceTransport = Pick<HostTransportClient, 'request'> & Partial<Pick<HostTransportClient, 'subscribe' | 'onDisconnect' | 'close' | 'connected'>>;\nexport type WorkspaceClientOptions = { transport: WorkspaceTransport; clientId: string; token?: string };\nimport {\n VIEW_WORKSPACE_SERVICES,\n VIEW_WORKSPACE_STATE_TOPIC,\n ViewWorkspaceError,\n createWorkspaceRequest,\n requireWorkspaceString,\n} from './contract.ts';\nimport { reportWorkspaceCommandError } from './command-error.ts';\nconst VIEW_INSPECTOR_TOPIC = 'forgeax.view.inspector.changed';\n\nexport function workspaceBrowserEndpoint(endpoint: string, token: string, baseHref?: string, role?: string, frontendTicket?: string) {\n requireWorkspaceString(endpoint, 'endpoint');\n requireWorkspaceString(token, 'token');\n const url = new URL(endpoint, baseHref);\n if (url.protocol !== 'ws:' && url.protocol !== 'wss:') throw new TypeError('View frontend endpoint must use ws: or wss:');\n url.searchParams.set('token', token);\n if (role !== undefined) url.searchParams.set('role', role);\n if (role === 'frontend' && frontendTicket !== undefined) url.searchParams.set('frontendTicket', frontendTicket);\n return url.toString();\n}\n\nfunction decodeWorkspaceTransportError(error: unknown) {\n if (error instanceof ViewWorkspaceError) return error;\n const record = workspaceDiagnosticRecord(error);\n const detail = workspaceDiagnosticRecord(record.detail);\n const transportCode = record.code;\n const remoteCode =\n typeof detail.remoteCode === 'string'\n ? detail.remoteCode\n : undefined;\n const code = [transportCode, remoteCode].find(\n (candidate) => typeof candidate === 'string' && candidate.startsWith('view-'),\n );\n if (typeof code !== 'string') return error;\n const message = typeof record.message === 'string' && record.message.trim() !== ''\n ? record.message\n : String(error);\n return new ViewWorkspaceError(\n code,\n typeof record.expected === 'string' ? record.expected : message,\n typeof record.hint === 'string' ? record.hint : message,\n {\n ...(record.detail && typeof detail === 'object' ? detail : {}),\n transportCode,\n ...(remoteCode === undefined ? {} : { remoteCode }),\n ...(typeof record.name === 'string' ? { name: record.name } : {}),\n },\n );\n}\n\n/**\n * Typed client used by both the View frontend and an independent CLI process.\n * It has no local domain state: every operation goes through the Engine Host\n * workspace service and every returned value is the backend authority's value.\n */\nexport class ViewWorkspaceClient {\n declare readonly transport: WorkspaceTransport;\n declare readonly clientId: string;\n declare readonly token: string | undefined;\n declare projectSession?: ProjectSession;\n constructor({ transport, clientId, token }: Partial<WorkspaceClientOptions> = {}) {\n if (!transport || typeof transport.request !== 'function') {\n throw new TypeError('View workspace 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 call<T = unknown>(operation: string, args: Record<string, unknown> = {}, { signal, generation, requestId, reportError }: WorkspaceCallOptions = {}): Promise<T> {\n const request = createWorkspaceRequest(operation, args, {\n clientId: this.clientId,\n token: this.token,\n requestId,\n });\n return Promise.resolve()\n .then(() => this.transport.request<typeof request, T>(VIEW_WORKSPACE_SERVICES.call, request, { signal, generation }))\n .catch((error) => {\n const decoded = decodeWorkspaceTransportError(error);\n if (reportError !== false) reportWorkspaceCommandError(decoded, { operation, signal });\n throw decoded;\n });\n }\n\n sources<T = unknown>(options: WorkspaceOptions = {}) {\n return this.call<T>('plugins.sources', {}, options);\n }\n\n inspectPlugins<T = unknown>(options: WorkspaceOptions = {}) {\n // generation identifies the inspected source, not the workspace transport service.\n const { signal, requestId, ...args } = options;\n return this.call<T>('plugins.inspect', args, { signal, requestId });\n }\n\n watchPlugins<T = unknown>(options: WorkspaceOptions = {}) {\n const { signal, requestId, ...args } = options;\n return this.call<T>('plugins.watch', args, { signal, requestId });\n }\n\n capabilities(options: WorkspaceOptions = {}) {\n return this.transport.request(VIEW_WORKSPACE_SERVICES.capabilities, undefined, options);\n }\n\n getState(options: WorkspaceCallOptions = {}) {\n return this.call<WorkspaceState>('tabs.get', {}, options);\n }\n\n getSummary(options: WorkspaceCallOptions = {}) {\n return this.call<WorkspaceSummary>('summary.get', {}, options);\n }\n\n listPages(options: WorkspaceCallOptions = {}) {\n return this.call<WorkspacePages>('pages.list', {}, options);\n }\n\n revealPack(input: WorkspacePackReveal, options: WorkspaceCallOptions = {}) {\n return this.call<WorkspacePackRevealResult>('pack.reveal', input, options);\n }\n\n selectTab(tabId: string, options: WorkspaceCallOptions = {}) {\n return this.call<WorkspaceState>('tabs.select', { tabId }, options);\n }\n\n selectSceneEntity(entityId: string, { label, tabId, targetId, targetGeneration, ...options }: WorkspaceOptions = {}) {\n return this.call<WorkspaceState>(\n 'scene.select',\n {\n entityId, targetId, targetGeneration,\n ...(tabId === undefined ? {} : { tabId }),\n ...(label === undefined ? {} : { label }),\n },\n options,\n );\n }\n\n clearSceneSelection({ tabId, targetId, targetGeneration, ...options }: WorkspaceOptions = {}) {\n return this.call<WorkspaceState>('scene.clear', { targetId, targetGeneration, ...(tabId === undefined ? {} : { tabId }) }, options);\n }\n\n openProject(root: string, { tabId, expectedTargetId, ...options }: WorkspaceOptions = {}) {\n return this.call<WorkspaceState>('project.open', { root, tabId, ...(expectedTargetId === undefined ? {} : { expectedTargetId }) }, options);\n }\n\n reopenProject({ root, tabId, expectedTargetId, expectedTargetState, ...options }: WorkspaceOptions = {}) {\n return this.call<WorkspaceState>(\n 'project.reopen',\n {\n ...(root === undefined ? {} : { root }),\n ...(tabId === undefined ? {} : { tabId }),\n ...(expectedTargetId === undefined ? {} : { expectedTargetId }),\n ...(expectedTargetState === undefined ? {} : { expectedTargetState }),\n },\n options,\n );\n }\n\n closeProject(projectId: string | undefined, { tabId, ...options }: WorkspaceOptions = {}) {\n return this.call<WorkspaceState>('project.close', { projectId, tabId }, options);\n }\n\n listAssets(projectId: string, { tabId, targetId, targetGeneration, ...options }: WorkspaceOptions = {}) {\n return this.call<{ assets: WorkspaceAsset[] }>('assets.list', {\n projectId, tabId,\n ...(targetId === undefined ? {} : { targetId }),\n ...(targetGeneration === undefined ? {} : { targetGeneration }),\n }, options);\n }\n\n inspectAsset(guid: string, { projectId, tabId, targetId, targetGeneration, ...options }: WorkspaceOptions = {}) {\n return this.call<{ inspection: WorkspaceInspection }>('asset.inspect', {\n guid, tabId,\n ...(projectId === undefined ? {} : { projectId }),\n ...(targetId === undefined ? {} : { targetId }),\n ...(targetGeneration === undefined ? {} : { targetGeneration }),\n }, options);\n }\n\n rebuildAssetSource(guid: string, { projectId, tabId, targetId, targetGeneration, expectedRevision, requestId, ...options }: WorkspaceOptions = {}) {\n return this.call(\n 'asset.source.rebuild',\n {\n guid,\n tabId,\n ...(projectId === undefined ? {} : { projectId }),\n ...(targetId === undefined ? {} : { targetId }),\n ...(targetGeneration === undefined ? {} : { targetGeneration }),\n ...(expectedRevision === undefined ? {} : { expectedRevision }),\n ...(requestId === undefined ? {} : { requestId }),\n },\n options,\n );\n }\n\n coldCookAssetSource(guid: string, { projectId, tabId, targetId, targetGeneration, expectedRevision, requestId, ...options }: WorkspaceOptions = {}) {\n return this.call(\n 'asset.source.cold-cook',\n {\n guid,\n tabId,\n ...(projectId === undefined ? {} : { projectId }),\n ...(targetId === undefined ? {} : { targetId }),\n ...(targetGeneration === undefined ? {} : { targetGeneration }),\n ...(expectedRevision === undefined ? {} : { expectedRevision }),\n ...(requestId === undefined ? {} : { requestId }),\n },\n options,\n );\n }\n\n openAsset(guid: string, { projectId, width, height, tabId, targetId, targetGeneration, ...options }: WorkspaceOptions = {}) {\n return this.call(\n 'asset.open',\n {\n guid,\n tabId,\n ...(projectId === undefined ? {} : { projectId }),\n ...(targetId === undefined ? {} : { targetId }),\n ...(targetGeneration === undefined ? {} : { targetGeneration }),\n ...(width === undefined ? {} : { width }),\n ...(height === undefined ? {} : { height }),\n },\n options,\n );\n }\n\n closePreview({ targetId, targetGeneration, tabId, ...options }: WorkspaceOptions = {}) {\n return this.call(\n 'preview.close',\n { tabId, targetGeneration, ...(targetId === undefined ? {} : { targetId }) },\n options,\n );\n }\n\n capture(options: WorkspaceOptions = {}) {\n const { signal, generation, requestId, reportError, targetId, targetGeneration, tabId, ...args } = options;\n return this.call(\n 'preview.capture',\n { tabId, targetGeneration, ...(targetId === undefined ? {} : { targetId }), ...args },\n { signal, generation, requestId, ...(reportError === undefined ? {} : { reportError }) },\n );\n }\n\n resizePreview({ targetId, targetGeneration, width, height, tabId, ...options }: WorkspaceOptions = {}) {\n return this.call(\n 'preview.resize',\n {\n tabId,\n targetGeneration,\n ...(targetId === undefined ? {} : { targetId }),\n width,\n height,\n },\n options,\n );\n }\n\n getCamera({ targetId, targetGeneration, tabId, ...options }: WorkspaceOptions = {}) {\n return this.call<EngineWorkspaceCameraResult>('camera.get', { tabId, targetGeneration, ...(targetId === undefined ? {} : { targetId }) }, options);\n }\n\n beginCamera({ targetId, targetGeneration, baseVersion, interactionId, tabId, ...options }: WorkspaceOptions = {}) {\n return this.call<EngineWorkspaceCameraResult>(\n 'camera.begin',\n {\n tabId,\n targetGeneration,\n ...(targetId === undefined ? {} : { targetId }),\n baseVersion,\n ...(interactionId === undefined ? {} : { interactionId }),\n },\n options,\n );\n }\n\n updateCamera({ targetId, targetGeneration, interactionId, camera, input, tabId, ...options }: WorkspaceOptions = {}) {\n return this.call<EngineWorkspaceCameraResult>(\n 'camera.update',\n {\n tabId,\n targetGeneration,\n targetId,\n interactionId,\n ...(camera === undefined ? {} : { camera }),\n ...(input === undefined ? {} : { input }),\n },\n options,\n );\n }\n\n commitCamera({ targetId, targetGeneration, interactionId, operationId, expectedVersion, camera, tabId, ...options }: WorkspaceOptions = {}) {\n return this.call<EngineWorkspaceCameraResult>(\n 'camera.commit',\n { tabId, targetId, targetGeneration, interactionId, operationId, expectedVersion, camera },\n options,\n );\n }\n\n abortCamera({ targetId, targetGeneration, interactionId, reason, tabId, ...options }: WorkspaceOptions = {}) {\n return this.call<EngineWorkspaceCameraResult>(\n 'camera.abort',\n {\n tabId,\n targetGeneration,\n targetId,\n interactionId,\n ...(reason === undefined ? {} : { reason }),\n },\n options,\n );\n }\n\n getSceneTree({ projectId, targetId, targetGeneration, tabId, offset, limit, revision, ...options }: WorkspaceOptions = {}) {\n return this.call<Awaited<ReturnType<EngineWorkspaceTargetTools['tree']>>>(\n 'scene.tree.get',\n {\n tabId,\n ...(projectId === undefined ? {} : { projectId }),\n ...(targetId === undefined ? {} : { targetId }),\n ...(targetGeneration === undefined ? {} : { targetGeneration }),\n ...(offset === undefined ? {} : { offset }),\n ...(limit === undefined ? {} : { limit }),\n ...(revision === undefined ? {} : { revision }),\n },\n options,\n );\n }\n\n subscribe(listener: (state: WorkspaceState) => void) {\n if (typeof this.transport.subscribe !== 'function') return () => {};\n return this.transport.subscribe(VIEW_WORKSPACE_STATE_TOPIC, listener);\n }\n\n subscribeInspector(listener: (value: unknown) => void) {\n return this.transport.subscribe?.(VIEW_INSPECTOR_TOPIC, listener) ?? (() => {});\n }\n\n onDisconnect(listener: Parameters<HostTransportClient['onDisconnect']>[0]) {\n return this.transport.onDisconnect?.(listener) ?? (() => {});\n }\n\n close(reason?: unknown) {\n this.transport.close?.(reason);\n }\n}\n\nexport function createViewWorkspaceClient(options: WorkspaceClientOptions) {\n return new ViewWorkspaceClient(options);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -15,20 +15,20 @@ import {
15
15
  } from "./chunk-ZYTHV373.mjs";
16
16
  import {
17
17
  RESOURCE_KINDS
18
- } from "./chunk-M66NDY35.mjs";
18
+ } from "./chunk-C2AMOM7H.mjs";
19
19
  import {
20
20
  bindWorkspacePreviewSurface
21
- } from "./chunk-25PFC2DY.mjs";
21
+ } from "./chunk-CXFQME65.mjs";
22
22
  import {
23
23
  selectWorkspaceResourcePreview,
24
24
  selectWorkspaceResourceSubject
25
- } from "./chunk-JKDBKS7P.mjs";
25
+ } from "./chunk-E4G4HDOC.mjs";
26
26
  import {
27
27
  createWorkspaceStateReader
28
- } from "./chunk-QQP7ZGQD.mjs";
28
+ } from "./chunk-WJNASQF2.mjs";
29
29
  import {
30
30
  VIEW_WORKSPACE_TAB_ID
31
- } from "./chunk-QYJZ3SOV.mjs";
31
+ } from "./chunk-QJHQN6OD.mjs";
32
32
 
33
33
  // packages/view-plugin-mesh/src/ui/mount.tsx
34
34
  import { createRoot } from "react-dom/client";
@@ -241,4 +241,4 @@ export {
241
241
  mountMeshPreviewPanel,
242
242
  mountMeshPropertiesPanel
243
243
  };
244
- //# sourceMappingURL=chunk-V4SOFUJI.mjs.map
244
+ //# sourceMappingURL=chunk-Q7M7VUOZ.mjs.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-YCMZAYBM.mjs";
4
4
  import {
5
5
  VIEW_WORKSPACE_TAB_ID
6
- } from "./chunk-QYJZ3SOV.mjs";
6
+ } from "./chunk-QJHQN6OD.mjs";
7
7
 
8
8
  // src/view-project-open.ts
9
9
  import { realpath } from "node:fs/promises";
@@ -116,4 +116,4 @@ export {
116
116
  openViewProject,
117
117
  runViewProjectOpen
118
118
  };
119
- //# sourceMappingURL=chunk-NZ4N7AVG.mjs.map
119
+ //# sourceMappingURL=chunk-QB33CMEU.mjs.map
@@ -40,7 +40,7 @@ var VIEW_PAGE_TYPES = Object.freeze({
40
40
  });
41
41
  var VIEW_WORKSPACE_COOK_MODES = Object.freeze(["rebuild", "cold-cook"]);
42
42
  var VIEW_WORKSPACE_CORE_OPERATIONS = Object.freeze([
43
- "workspace.summary",
43
+ "summary.get",
44
44
  "pages.list",
45
45
  "pack.reveal",
46
46
  "tabs.get",
@@ -58,8 +58,8 @@ var VIEW_WORKSPACE_DOMAIN_OPERATIONS = Object.freeze([
58
58
  "display.status",
59
59
  "assets.list",
60
60
  "asset.inspect",
61
- "asset-source.rebuild",
62
- "asset-source.cold-cook",
61
+ "asset.source.rebuild",
62
+ "asset.source.cold-cook",
63
63
  "asset.open",
64
64
  "runtime-pack.inspect",
65
65
  "runtime-pack.admit",
@@ -86,7 +86,7 @@ var VIEW_WORKSPACE_DOMAIN_OPERATIONS = Object.freeze([
86
86
  "camera.update",
87
87
  "camera.commit",
88
88
  "camera.abort",
89
- "scene-tree.get",
89
+ "scene.tree.get",
90
90
  "entity.inspect",
91
91
  "entity.focus",
92
92
  "run.start",
@@ -499,4 +499,4 @@ export {
499
499
  serializeWorkspaceInspection,
500
500
  serializeWorkspaceState
501
501
  };
502
- //# sourceMappingURL=chunk-QYJZ3SOV.mjs.map
502
+ //# sourceMappingURL=chunk-QJHQN6OD.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/view-workspace-core/src/scene-selection.ts", "../../../packages/view-workspace-core/src/contract.ts"],
4
+ "sourcesContent": ["import { type WorkspaceSceneSelection, requireWorkspaceString } from './contract.ts';\n\n/**\n * Workspace-authoritative scene entity selection (Inspector + Hierarchy + Viewport).\n * Orthogonal to asset catalog selection and `inspection` (asset.inspect metadata).\n */\nexport function serializeWorkspaceSceneSelection(sceneSelection: WorkspaceSceneSelection | null | undefined) {\n if (!sceneSelection?.primary) return null;\n const entityId = requireWorkspaceString(\n sceneSelection.primary.entityId,\n 'sceneSelection.primary.entityId',\n );\n return {\n ...(sceneSelection.targetId === undefined ? {} : { targetId: sceneSelection.targetId, targetGeneration: sceneSelection.targetGeneration }),\n primary: {\n entityId,\n ...(sceneSelection.primary.label === undefined\n ? {}\n : { label: String(sceneSelection.primary.label) }),\n },\n };\n}\n\nexport function createEmptySceneSelection() {\n return null;\n}\n", "import type { EngineWorkspaceTarget, EngineWorkspaceProject, EngineWorkspaceAsset, EngineWorkspaceCameraResult, EngineWorkspaceAssetBinding } from '@forgeax/engine/app';\nimport { createWorkspaceId } from './id.ts';\nimport { serializeWorkspaceSceneSelection } from './scene-selection.ts';\n\nexport type WorkspaceTarget = Partial<EngineWorkspaceTarget> & Pick<EngineWorkspaceTarget, 'targetId'>;\nexport type WorkspaceProject = EngineWorkspaceProject;\nexport type WorkspaceDdc = { state?: string; guid?: string; desiredKey?: string; receiptUrl?: string; hint?: string };\nexport type WorkspaceAsset = EngineWorkspaceAsset & {\n sourcePath?: string;\n sourceKind?: string; packageId?: string; packageUrl?: string; cookReceiptUrl?: string; lifecycle?: 'missing' | 'cooking' | 'current' | 'stale' | 'failed';\n label?: string; revision?: string; previewable?: boolean; ddc?: WorkspaceDdc;\n};\nexport type WorkspaceInspection = {\n guid?: string; kind?: string; asset?: WorkspaceAsset; source?: { path?: string; kind?: string; revision?: string };\n meta?: Record<string, unknown>; ddc?: WorkspaceDdc; revision?: string;\n};\nexport type WorkspaceSceneSelection = {\n targetId?: string; targetGeneration?: number; primary: { entityId: string; label?: string };\n};\nexport type WorkspaceResourceOpen = { asset: WorkspaceAsset; preview?: WorkspacePreview };\nexport type WorkspaceTab = { tabId: string; kind: string; selected: boolean; state?: string; width?: number; height?: number; target?: WorkspaceTarget | null; targetId?: string; run?: unknown };\nexport type WorkspaceRequest = { apiVersion: string; operation: string; clientId: string; requestId: string; args: Record<string, unknown>; token?: string };\nexport type WorkspacePreview = {\n target: WorkspaceTarget; asset?: WorkspaceAsset | null; assetBinding?: EngineWorkspaceAssetBinding;\n camera?: EngineWorkspaceCameraResult['camera']; cameraVersion?: number; interaction?: Pick<NonNullable<EngineWorkspaceCameraResult['interaction']>, 'interactionId'> | null;\n};\nexport type WorkspaceOpenRequest = {\n requestId: string; sequence: number; asset: WorkspaceAsset; preview?: WorkspacePreview;\n target?: WorkspaceTarget; inspection?: WorkspaceInspection;\n};\nexport type WorkspaceState = {\n apiVersion?: string; revision?: number; selectedTabId?: string | null; tabs?: readonly WorkspaceTab[];\n projectIntent?: { root: string };\n project?: WorkspaceProject | null; projectTarget?: WorkspaceTarget | null; assets?: readonly WorkspaceAsset[] | null;\n preview?: WorkspacePreview | null; previews?: readonly WorkspacePreview[]; editorPreview?: WorkspacePreview | null;\n play?: { target: WorkspaceTarget; phase?: string } | null; targetBinding?: string;\n inspection?: WorkspaceInspection | null; openRequest?: WorkspaceOpenRequest | null;\n resourceOpens?: Map<string, WorkspaceResourceOpen> | Record<string, WorkspaceResourceOpen>;\n sceneSelection?: WorkspaceSceneSelection | null; workspaceTargetLost?: boolean; projectPhase?: string; browserGeneration?: number;\n};\nexport type WorkspaceSummary = {\n revision: number;\n project: Pick<WorkspaceProject, 'id' | 'root' | 'name'> | null;\n projectPhase: string | null;\n browserGeneration: number | null;\n targets: readonly { targetId: string; generation?: number; role: 'project' | 'play' | 'preview' }[];\n hasMoreTargets: boolean;\n};\nexport type WorkspacePages = { pages: readonly ({ connectionId: string } & WorkspaceSummary)[]; hasMorePages: boolean };\nexport type WorkspacePackReveal = { projectId: string; sourcePath: string; revision: string; packageId?: string; connectionId?: string };\nexport type WorkspacePackRevealResult = {\n ok: boolean; code: string; requestId?: string; connectionId?: string;\n projectId?: string; sourcePath?: string; revision?: string;\n candidates?: readonly string[]; reason?: string;\n};\n\n/**\n * Public wire contract for the user workspace. The contract is deliberately\n * transport agnostic: the CLI and the browser client both send these calls to\n * the same Engine Host service. No command implementation lives in the\n * frontend.\n */\nexport const VIEW_WORKSPACE_API_VERSION = 'forgeax.view.workspace/1';\n\nexport const VIEW_WORKSPACE_SERVICES = Object.freeze({\n capabilities: 'forgeax.view.workspace.capabilities',\n call: 'forgeax.view.workspace.call',\n});\n\n/** Host service for Content Browser source preview. Not a workspace CLI operation. */\nexport const VIEW_FILE_GET_SERVICE = 'forgeax.view.file.get';\nexport const VIEW_PACK_SOURCES_SERVICE = 'forgeax.view.pack.sources';\nexport const VIEW_PACK_REVEAL_TOPIC = 'forgeax.view.pack.reveal';\nexport const VIEW_PACK_REVEAL_ACK_SERVICE = 'forgeax.view.pack.reveal.ack';\n\nexport const VIEW_WORKSPACE_STATE_TOPIC = 'forgeax.view.workspace.state';\n\nexport const VIEW_PAGE_TYPES = Object.freeze({\n editor: 'editor',\n display: 'display',\n plugins: 'plugins',\n material: 'material',\n mesh: 'mesh',\n texture: 'texture',\n asset: 'asset',\n});\n\nexport const VIEW_WORKSPACE_COOK_MODES = Object.freeze(['rebuild', 'cold-cook']);\n\nexport const VIEW_WORKSPACE_CORE_OPERATIONS = Object.freeze([\n 'summary.get',\n 'pages.list',\n 'pack.reveal',\n 'tabs.get',\n 'tabs.select',\n 'scene.select',\n 'scene.pick',\n 'scene.clear',\n 'project.open',\n 'project.close',\n 'project.reopen',\n]);\n\nexport const VIEW_WORKSPACE_DOMAIN_OPERATIONS = Object.freeze([\n ...VIEW_WORKSPACE_CORE_OPERATIONS,\n 'display.bind', 'display.status',\n 'assets.list',\n 'asset.inspect',\n 'asset.source.rebuild',\n 'asset.source.cold-cook',\n 'asset.open',\n 'runtime-pack.inspect', 'runtime-pack.admit', 'runtime-pack.generate',\n 'runtime-pack.snapshot', 'runtime-pack.restore', 'runtime-pack.withdraw',\n 'runtime-pack.plugin-install', 'runtime-pack.plugin-inspect', 'runtime-pack.plugin-dispose',\n 'runtime-pack.prepare',\n 'play.start', 'play.ready', 'play.stop', 'target.control', 'target.select', 'target.pick', 'entity.highlight',\n 'preview.close',\n 'preview.capture',\n 'preview.resize',\n 'camera.get',\n 'camera.begin',\n 'camera.update',\n 'camera.commit',\n 'camera.abort',\n 'scene.tree.get',\n 'entity.inspect',\n 'entity.focus',\n 'run.start', 'run.status', 'run.reload', 'run.stop', 'run.capture', 'run.eval', 'run.find', 'run.focus', 'run.camera.get', 'run.camera.set', 'run.camera.release',\n]);\n\n// The CLI/help surface is derived from both ordinary workspace and inspector\n// plugin contributions. Inspector calls use their own Engine Host services.\nexport const VIEW_WORKSPACE_OPERATIONS = Object.freeze([\n ...VIEW_WORKSPACE_DOMAIN_OPERATIONS,\n 'plugins.sources',\n 'plugins.inspect',\n 'plugins.watch',\n]);\n\nexport const VIEW_DISPLAY_TAB_ID = 'forgeax-cli-display';\nexport const VIEW_WORKSPACE_TAB_ID = 'forgeax-user-workspace';\n\nconst OPERATION_SET = new Set(VIEW_WORKSPACE_OPERATIONS);\n\nconst OPAQUE_WORKSPACE_DIAGNOSTICS = new Set([\n 'the contribution executor to return a result',\n 'the producer operation to succeed',\n 'the workspace command to complete',\n 'Inspect the resident View workspace and retry.',\n 'Inspect the provider snapshot and retry.',\n 'Inspect detail and repair the owning producer before retrying.',\n 'Inspect the browser page failure details.',\n 'Inspect the Engine command or tool result.',\n 'Refresh the inspector source and retry.',\n 'the View workspace provider to complete the operation',\n 'the View API provider to complete the operation',\n]);\n\nexport function isOpaqueWorkspaceDiagnostic(value: unknown) {\n if (typeof value !== 'string') return true;\n const text = value.trim();\n if (text === '') return true;\n if (OPAQUE_WORKSPACE_DIAGNOSTICS.has(text)) return true;\n if (/^the browser workspace operation \\S+ to complete$/.test(text)) return true;\n if (/^(?:workspace|inspector) operation \\S+ to complete$/.test(text)) return true;\n if (/^Engine .+ to succeed$/.test(text)) return true;\n return false;\n}\n\nfunction workspaceErrorMessage(code: string, expected: string | undefined, hint: string | undefined) {\n const parts: string[] = [];\n for (const value of [expected, hint]) {\n if (typeof value !== 'string') continue;\n const text = value.trim();\n if (!text || parts.includes(text)) continue;\n parts.push(text);\n }\n const real = parts.filter((text) => !isOpaqueWorkspaceDiagnostic(text));\n const chosen = real.length > 0 ? real : parts;\n return chosen.length > 0 ? `${code}: ${chosen.join(' \u2014 ')}` : String(code ?? 'view-workspace-error');\n}\n\nexport class ViewWorkspaceError extends Error {\n declare readonly code: string;\n declare readonly expected: string | undefined;\n declare readonly hint: string | undefined;\n declare readonly detail: Record<string, unknown>;\n constructor(code: string, expected: string | undefined, hint: string | undefined, detail: Record<string, unknown> = {}) {\n super(workspaceErrorMessage(code, expected, hint));\n this.name = 'ViewWorkspaceError';\n this.code = code;\n this.expected = expected;\n this.hint = hint;\n this.detail = detail;\n }\n}\n\nexport function workspaceError(code: string, expected: string | undefined, hint: string | undefined, detail: Record<string, unknown> = {}) {\n return new ViewWorkspaceError(code, expected, hint, detail);\n}\n\nexport function requireWorkspaceString(value: unknown, field: string) {\n if (typeof value !== 'string' || value.trim() === '') {\n throw workspaceError(\n 'view-workspace-invalid-args',\n `${field} to be a non-empty string`,\n `Provide a non-empty ${field}.`,\n { field },\n );\n }\n return value;\n}\n\nexport function requireWorkspaceObject(value: unknown, field: string) {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n throw workspaceError(\n 'view-workspace-invalid-args',\n `${field} to be an object`,\n `Provide an object for ${field}.`,\n { field },\n );\n }\n return value as Record<string, unknown>;\n}\n\nexport function requireWorkspaceInteger(value: unknown, field: string, { min = 0 } = {}) {\n if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < min) {\n throw workspaceError(\n 'view-workspace-invalid-args',\n `${field} to be an integer >= ${min}`,\n `Provide a valid ${field}.`,\n { field, min },\n );\n }\n return value;\n}\n\nexport function cloneWorkspaceValue<T>(value: T): T {\n if (value === undefined) return value;\n return JSON.parse(JSON.stringify(value));\n}\n\nexport function jsonUnchanged(left: unknown, right: unknown) {\n if (left === right) return true;\n if (left == null || right == null) return left === right;\n return JSON.stringify(left) === JSON.stringify(right);\n}\n\nfunction omitUiTelemetry(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(omitUiTelemetry);\n if (!value || typeof value !== 'object') return value;\n const next: Record<string, unknown> = {};\n for (const [key, nested] of Object.entries(value)) {\n if (key === 'frameId' || key === 'cameraVersion' || key === 'interaction' || key === 'inputVersion') continue;\n if (key === 'camera' && nested && typeof nested === 'object' && !Array.isArray(nested)) {\n if ('control' in nested && nested.control !== undefined) next.camera = { control: nested.control };\n continue;\n }\n next[key] = omitUiTelemetry(nested);\n }\n return next;\n}\n\n/**\n * Stable UI identity for a workspace snapshot. Omits per-frame telemetry so\n * camera orbit, submitted frame ids, play input versions, and revision bumps\n * do not rebuild panels. Nested `tabs[].target.frameId` is included in the walk.\n */\nexport function workspaceUiFingerprint(state: WorkspaceState | null | undefined) {\n if (!state) return '';\n const { revision: _revision, ...rest } = state;\n return JSON.stringify(omitUiTelemetry(rest));\n}\n\nexport function createWorkspaceRequest(operation: string, args: Record<string, unknown> = {}, { clientId, token, requestId }: { clientId?: string; token?: string; requestId?: string } = {}) {\n if (!OPERATION_SET.has(operation)) {\n throw workspaceError(\n 'view-workspace-operation-unknown',\n 'operation to be present in the View workspace API',\n 'Refresh the workspace API capabilities and use a supported operation.',\n { operation },\n );\n }\n const request: WorkspaceRequest = {\n apiVersion: VIEW_WORKSPACE_API_VERSION,\n operation,\n clientId: requireWorkspaceString(clientId, 'clientId'),\n requestId: requestId === undefined ? createWorkspaceId('request') : 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\nexport function assertWorkspaceRequest(value: unknown) {\n const request = requireWorkspaceObject(value, 'request');\n if (request.apiVersion !== VIEW_WORKSPACE_API_VERSION) {\n throw workspaceError(\n 'view-workspace-version-mismatch',\n `API version ${VIEW_WORKSPACE_API_VERSION}`,\n 'Install a matching View workspace client.',\n { actual: request.apiVersion, expected: VIEW_WORKSPACE_API_VERSION },\n );\n }\n if (typeof request.operation !== 'string' || !OPERATION_SET.has(request.operation)) {\n throw workspaceError(\n 'view-workspace-operation-unknown',\n 'operation to be present in the View workspace API',\n 'Refresh the workspace API 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 as WorkspaceRequest;\n}\n\nexport function workspaceCapabilities({\n ready = true,\n headed = ready,\n reason,\n code,\n operations = VIEW_WORKSPACE_OPERATIONS,\n}: { ready?: boolean; headed?: boolean; reason?: unknown; code?: unknown; operations?: readonly string[] } = {}) {\n return {\n apiVersion: VIEW_WORKSPACE_API_VERSION,\n ready: Boolean(ready),\n headed: Boolean(headed),\n operations: [...operations],\n ...(reason === undefined ? {} : { reason: String(reason) }),\n ...(code === undefined ? {} : { code: String(code) }),\n };\n}\n\nexport function serializeWorkspaceTarget(target: WorkspaceTarget): WorkspaceTarget;\nexport function serializeWorkspaceTarget(target: null | undefined): null;\nexport function serializeWorkspaceTarget(target: WorkspaceTarget | null | undefined): WorkspaceTarget | null;\nexport function serializeWorkspaceTarget(target: WorkspaceTarget | null | undefined): WorkspaceTarget | null {\n if (!target) return null;\n requireWorkspaceString(target.targetId, 'target.targetId');\n return {\n targetId: target.targetId,\n ...(target.generation === undefined ? {} : { generation: target.generation }),\n ...(target.sessionId === undefined ? {} : { sessionId: String(target.sessionId) }),\n ...(target.worldId === undefined ? {} : { worldId: String(target.worldId) }),\n headed: target.headed === true,\n ...(target.frameId === undefined ? {} : { frameId: target.frameId }),\n ...(target.width === undefined ? {} : { width: target.width }),\n ...(target.height === undefined ? {} : { height: target.height }),\n ...(target.url === undefined ? {} : { url: String(target.url) }),\n ...(target.surface === undefined || typeof target.surface !== 'string'\n ? {}\n : { surface: target.surface }),\n };\n}\n\nexport function serializeWorkspaceProject(project: WorkspaceProject | null | undefined) {\n if (!project) return null;\n requireWorkspaceString(project.id, 'project.id');\n requireWorkspaceString(project.root, 'project.root');\n return {\n id: project.id,\n root: project.root,\n ...(project.name === undefined ? {} : { name: String(project.name) }),\n ...(project.revision === undefined ? {} : { revision: String(project.revision) }),\n };\n}\n\nexport function serializeWorkspaceAsset(asset: WorkspaceAsset) {\n requireWorkspaceString(asset.guid, 'asset.guid');\n requireWorkspaceString(asset.kind, 'asset.kind');\n return {\n guid: asset.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: String(asset.name) }),\n ...(asset.sourceKey === undefined ? {} : { sourceKey: String(asset.sourceKey) }),\n ...(asset.path === undefined ? {} : { path: String(asset.path) }),\n ...(asset.sourcePath === undefined ? {} : { sourcePath: String(asset.sourcePath) }),\n ...(asset.sourceKind === undefined ? {} : { sourceKind: String(asset.sourceKind) }),\n ...(asset.packageId === undefined ? {} : { packageId: String(asset.packageId) }),\n ...(asset.lifecycle === undefined ? {} : { lifecycle: asset.lifecycle }),\n ...(asset.packageUrl === undefined ? {} : { packageUrl: String(asset.packageUrl) }),\n ...(asset.cookReceiptUrl === undefined ? {} : { cookReceiptUrl: String(asset.cookReceiptUrl) }),\n ...(asset.label === undefined ? {} : { label: String(asset.label) }),\n ...(asset.revision === undefined ? {} : { revision: String(asset.revision) }),\n ...(asset.previewable === undefined ? {} : { previewable: Boolean(asset.previewable) }),\n ...(serializeWorkspaceDdc(asset.ddc) === undefined ? {} : { ddc: serializeWorkspaceDdc(asset.ddc) }),\n };\n}\n\nexport function serializeWorkspaceDdc(ddc: WorkspaceDdc | null | undefined) {\n if (!ddc || typeof ddc !== 'object' || Array.isArray(ddc)) return undefined;\n const state = ddc.state === undefined ? undefined : String(ddc.state);\n return cloneWorkspaceValue({\n ...(state === undefined ? {} : { state }),\n ...(ddc.guid === undefined ? {} : { guid: String(ddc.guid) }),\n ...(ddc.desiredKey === undefined ? {} : { desiredKey: String(ddc.desiredKey) }),\n ...(ddc.receiptUrl === undefined ? {} : { receiptUrl: String(ddc.receiptUrl) }),\n ...(ddc.hint === undefined ? {} : { hint: String(ddc.hint) }),\n });\n}\n\nexport function serializeWorkspaceOpenRequest(request: WorkspaceOpenRequest): WorkspaceOpenRequest;\nexport function serializeWorkspaceOpenRequest(request: null | undefined): null;\nexport function serializeWorkspaceOpenRequest(request: WorkspaceOpenRequest | null | undefined): WorkspaceOpenRequest | null;\nexport function serializeWorkspaceOpenRequest(request: WorkspaceOpenRequest | null | undefined): WorkspaceOpenRequest | null {\n if (!request) return null;\n requireWorkspaceString(request.requestId, 'openRequest.requestId');\n requireWorkspaceInteger(request.sequence, 'openRequest.sequence', { min: 1 });\n const asset = serializeWorkspaceAsset(request.asset);\n const previewTarget = request.preview?.target ?? request.target;\n const previewAsset = request.preview?.asset ?? (previewTarget ? asset : undefined);\n return {\n requestId: request.requestId,\n sequence: request.sequence,\n asset,\n ...(previewTarget\n ? {\n preview: {\n asset: previewAsset ? serializeWorkspaceAsset(previewAsset) : asset,\n target: serializeWorkspaceTarget(previewTarget),\n },\n }\n : {}),\n ...(request.inspection\n ? { inspection: serializeWorkspaceInspection(request.inspection) }\n : {}),\n };\n}\n\nexport function serializeWorkspaceResourceOpens(opens: WorkspaceState['resourceOpens']) {\n if (!opens || typeof opens !== 'object') return undefined;\n const entries = opens instanceof Map ? [...opens.entries()] : Object.entries(opens);\n const serialized: Record<string, { asset: WorkspaceAsset; preview?: WorkspacePreview }> = {};\n for (const [kind, entry] of entries) {\n if (typeof kind !== 'string' || !entry?.asset) continue;\n const asset = serializeWorkspaceAsset(entry.asset);\n const previewTarget = entry.preview?.target;\n serialized[kind] = {\n asset,\n ...(previewTarget\n ? {\n preview: {\n asset: serializeWorkspaceAsset(entry.preview?.asset ?? asset),\n target: serializeWorkspaceTarget(previewTarget),\n },\n }\n : {}),\n };\n }\n return serialized;\n}\n\nexport function workspaceInspectionFactRows(inspection: WorkspaceInspection | null | undefined) {\n if (!inspection || typeof inspection !== 'object' || Array.isArray(inspection)) {\n return Object.freeze([]);\n }\n const asset: Partial<WorkspaceAsset> = inspection.asset && typeof inspection.asset === 'object' ? inspection.asset : {};\n const rows: { label: string; value: string }[] = [];\n const add = (label: string, value: unknown) => {\n if (value === undefined || value === null) return;\n if (typeof value === 'string' && value.trim() === '') return;\n rows.push(\n Object.freeze({\n label,\n value: typeof value === 'object' ? JSON.stringify(value) : String(value),\n }),\n );\n };\n add('GUID', inspection.guid ?? asset.guid);\n add('Kind', asset.kind);\n add('Name', asset.name);\n add('Path', asset.path);\n add('Source', inspection.source?.path ?? asset.sourcePath);\n add('Revision', inspection.revision ?? asset.revision ?? inspection.source?.revision);\n add('Package', asset.packageId ?? asset.packageUrl);\n if (inspection.ddc?.state) add('DDC', inspection.ddc.state);\n const meta = inspection.meta;\n if (meta && typeof meta === 'object' && !Array.isArray(meta)) {\n for (const [key, value] of Object.entries(meta)) add(key, value);\n }\n return Object.freeze(rows);\n}\n\nexport function serializeWorkspaceInspection(inspection: WorkspaceInspection): WorkspaceInspection;\nexport function serializeWorkspaceInspection(inspection: null | undefined): null;\nexport function serializeWorkspaceInspection(inspection: WorkspaceInspection | null | undefined): WorkspaceInspection | null;\nexport function serializeWorkspaceInspection(inspection: WorkspaceInspection | null | undefined): WorkspaceInspection | null {\n if (!inspection) return null;\n const guid = requireWorkspaceString(inspection.guid ?? inspection.asset?.guid, 'inspection.guid');\n const asset = serializeWorkspaceAsset({\n ...inspection.asset,\n guid,\n kind: requireWorkspaceString(inspection.asset?.kind ?? inspection.kind, 'inspection.kind'),\n });\n const source = inspection.source;\n return {\n guid,\n asset,\n ...(source === undefined || source === null\n ? {}\n : {\n source: {\n ...(source.path === undefined ? {} : { path: String(source.path) }),\n ...(source.kind === undefined ? {} : { kind: String(source.kind) }),\n ...(source.revision === undefined ? {} : { revision: String(source.revision) }),\n },\n }),\n ...(inspection.meta !== null && typeof inspection.meta === 'object' && !Array.isArray(inspection.meta)\n ? { meta: cloneWorkspaceValue(inspection.meta) }\n : {}),\n ...(serializeWorkspaceDdc(inspection.ddc) === undefined\n ? {}\n : { ddc: serializeWorkspaceDdc(inspection.ddc) }),\n ...(inspection.revision === undefined ? {} : { revision: String(inspection.revision) }),\n };\n}\n\nexport function serializeWorkspaceState(state: WorkspaceState): WorkspaceState {\n return cloneWorkspaceValue({\n apiVersion: VIEW_WORKSPACE_API_VERSION,\n revision: state.revision,\n selectedTabId: state.selectedTabId,\n tabs: state.tabs,\n project: serializeWorkspaceProject(state.project),\n ...(typeof state.projectIntent?.root === 'string' ? { projectIntent: { root: state.projectIntent.root } } : {}),\n projectTarget: serializeWorkspaceTarget(state.projectTarget),\n assets: Array.isArray(state.assets) ? state.assets.map((asset) => serializeWorkspaceAsset(asset)) : null,\n preview: state.preview\n ? {\n asset: state.preview.asset ? serializeWorkspaceAsset(state.preview.asset) : null,\n target: serializeWorkspaceTarget(state.preview.target),\n assetBinding: state.preview.assetBinding,\n camera: state.preview.camera,\n cameraVersion: state.preview.cameraVersion,\n interaction: state.preview.interaction\n ? { interactionId: state.preview.interaction.interactionId }\n : null,\n }\n : null,\n previews: (state.previews ?? []).map(preview => ({ target: serializeWorkspaceTarget(preview.target), asset: preview.asset ? serializeWorkspaceAsset(preview.asset) : null, assetBinding: preview.assetBinding })),\n editorPreview: state.editorPreview ? { target: serializeWorkspaceTarget(state.editorPreview.target), asset: state.editorPreview.asset ? serializeWorkspaceAsset(state.editorPreview.asset) : null, assetBinding: state.editorPreview.assetBinding } : null,\n play: state.play ? { target: serializeWorkspaceTarget(state.play.target), phase: state.play.phase } : null,\n targetBinding: state.targetBinding ?? 'editor',\n inspection: serializeWorkspaceInspection(state.inspection),\n openRequest: serializeWorkspaceOpenRequest(state.openRequest),\n resourceOpens: serializeWorkspaceResourceOpens(state.resourceOpens),\n sceneSelection: serializeWorkspaceSceneSelection(state.sceneSelection),\n workspaceTargetLost: state.workspaceTargetLost === true,\n ...(state.projectPhase === undefined ? {} : { projectPhase: state.projectPhase }),\n ...(state.browserGeneration === undefined ? {} : { browserGeneration: state.browserGeneration }),\n });\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }