@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
@@ -14,20 +14,20 @@ import {
14
14
  } from "./chunk-ZYTHV373.mjs";
15
15
  import {
16
16
  RESOURCE_KINDS
17
- } from "./chunk-FMCHH5R4.mjs";
17
+ } from "./chunk-4FYKRL46.mjs";
18
18
  import {
19
19
  bindWorkspacePreviewSurface
20
- } from "./chunk-B6QUJ33G.mjs";
20
+ } from "./chunk-CXFQME65.mjs";
21
21
  import {
22
22
  selectWorkspaceResourcePreview,
23
23
  selectWorkspaceResourceSubject
24
- } from "./chunk-ZIDEETK4.mjs";
24
+ } from "./chunk-E4G4HDOC.mjs";
25
25
  import {
26
26
  createWorkspaceStateReader
27
- } from "./chunk-TXLD7JI5.mjs";
27
+ } from "./chunk-WJNASQF2.mjs";
28
28
  import {
29
29
  VIEW_WORKSPACE_TAB_ID
30
- } from "./chunk-E3Z7GLFU.mjs";
30
+ } from "./chunk-QJHQN6OD.mjs";
31
31
 
32
32
  // packages/view-plugin-texture/src/ui/mount.tsx
33
33
  import { createRoot } from "react-dom/client";
@@ -232,4 +232,4 @@ export {
232
232
  mountTexturePreviewPanel,
233
233
  mountTexturePropertiesPanel
234
234
  };
235
- //# sourceMappingURL=chunk-VW2ZF3P4.mjs.map
235
+ //# sourceMappingURL=chunk-4MJHVZMB.mjs.map
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  backend_default
3
- } from "./chunk-YLCJNKIW.mjs";
3
+ } from "./chunk-I32EONBF.mjs";
4
4
  import {
5
5
  backend_default as backend_default3
6
- } from "./chunk-27XASYEH.mjs";
6
+ } from "./chunk-YU3HRQX7.mjs";
7
7
  import {
8
8
  backend_default as backend_default2
9
- } from "./chunk-55F55BQY.mjs";
9
+ } from "./chunk-JVOHFCI4.mjs";
10
10
  import {
11
11
  VIEW_PLUGIN_VERSION,
12
12
  VIEW_PRODUCT_PLUGINS,
13
13
  VIEW_WORKSPACE_CORE
14
- } from "./chunk-IJPWKKIU.mjs";
14
+ } from "./chunk-CYOLEAAY.mjs";
15
15
  import {
16
16
  BACKEND_MODULE
17
- } from "./chunk-AGVLPYVE.mjs";
17
+ } from "./chunk-D2LZIQE2.mjs";
18
18
  import {
19
19
  BACKEND_MODULE as BACKEND_MODULE2
20
- } from "./chunk-EWSCJF77.mjs";
20
+ } from "./chunk-2CMCY54A.mjs";
21
21
 
22
22
  // packages/viewer/src/backend-catalog.ts
23
23
  var implementations = /* @__PURE__ */ new Map([
@@ -43,4 +43,4 @@ var VIEW_PRODUCT_BACKEND_CATALOG = new Map(
43
43
  export {
44
44
  VIEW_PRODUCT_BACKEND_CATALOG
45
45
  };
46
- //# sourceMappingURL=chunk-XQYF2P6M.mjs.map
46
+ //# sourceMappingURL=chunk-5HVXQEO3.mjs.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  VIEW_PRODUCT_FRONTEND_CATALOG
3
- } from "./chunk-RJVOH7G2.mjs";
3
+ } from "./chunk-VKWEA6NG.mjs";
4
4
  import {
5
5
  VIEW_FRONTEND_ROOT_PROGRAM,
6
6
  createViewProductPlan
7
- } from "./chunk-IJPWKKIU.mjs";
7
+ } from "./chunk-CYOLEAAY.mjs";
8
8
  import {
9
9
  viewInspectorFrontendPlugin
10
- } from "./chunk-7IGFAI5H.mjs";
10
+ } from "./chunk-O5QX6H3U.mjs";
11
11
 
12
12
  // packages/viewer/src/frontend-root.ts
13
13
  import { Inject } from "@forgeax/engine/plugin";
@@ -150,4 +150,4 @@ export {
150
150
  createViewFrontendRoot,
151
151
  frontend_root_default
152
152
  };
153
- //# sourceMappingURL=chunk-XMP4THLF.mjs.map
153
+ //# sourceMappingURL=chunk-66LM6NO6.mjs.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  workspaceDiagnosticRecord
3
- } from "./chunk-U5R6MVM4.mjs";
3
+ } from "./chunk-RFTLGEB5.mjs";
4
4
  import {
5
5
  ViewWorkspaceError
6
- } from "./chunk-E3Z7GLFU.mjs";
6
+ } from "./chunk-QJHQN6OD.mjs";
7
7
 
8
8
  // packages/view-workspace-core/src/engine-adapter.ts
9
9
  var VIEW_ENGINE_WORKSPACE_ADAPTER = Object.freeze({
@@ -23,11 +23,11 @@ var VIEW_ENGINE_WORKSPACE_ADAPTER = Object.freeze({
23
23
  packInspect: "ScriptablePackAuthoringPort.inspect(sourcePath)",
24
24
  packRebuild: "ScriptablePackAuthoringPort.rebuild(sourcePath, 'rebuild' | 'cold-cook')",
25
25
  packGateway: "gateway.execute({ kind: 'inspect-meta' | 'rebuild' | 'cold-cook', sourcePath, requestId, expectedRevision })",
26
- packTools: "ToolClient.run('asset-source.rebuild' | 'asset-source.cold-cook', args)"
26
+ packTools: "ToolClient.run('asset.source.rebuild' | 'asset.source.cold-cook', args)"
27
27
  });
28
28
  var VIEW_ENGINE_ASSET_SOURCE_TOOLS = Object.freeze({
29
- rebuild: "asset-source.rebuild",
30
- "cold-cook": "asset-source.cold-cook"
29
+ rebuild: "asset.source.rebuild",
30
+ "cold-cook": "asset.source.cold-cook"
31
31
  });
32
32
  function missing(name) {
33
33
  throw new ViewWorkspaceError(
@@ -150,11 +150,11 @@ function createEngineWorkspaceAdapter(engine) {
150
150
  const packInspect = method(
151
151
  pack ?? {},
152
152
  ["inspect", "inspectMeta"],
153
- "asset-source.inspect-meta",
153
+ "asset.source.inspect-meta",
154
154
  { optional: true }
155
155
  );
156
156
  const packPreflight = method(pack ?? {}, ["preflight"], "asset.preflight", { optional: true });
157
- const packRebuild = method(pack ?? {}, ["rebuild"], "asset-source.rebuild", { optional: true });
157
+ const packRebuild = method(pack ?? {}, ["rebuild"], "asset.source.rebuild", { optional: true });
158
158
  async function runTool(id, args, capability) {
159
159
  if (!tools) missing(capability);
160
160
  return unwrapEngineResult(await tools.run(id, args), capability);
@@ -163,8 +163,8 @@ function createEngineWorkspaceAdapter(engine) {
163
163
  if (typeof sourcePath !== "string" || sourcePath.length === 0) return void 0;
164
164
  if (packInspect) {
165
165
  return asObject(
166
- unwrapEngineResult(await packInspect(sourcePath), "asset-source.inspect-meta"),
167
- "asset-source.inspect-meta"
166
+ unwrapEngineResult(await packInspect(sourcePath), "asset.source.inspect-meta"),
167
+ "asset.source.inspect-meta"
168
168
  );
169
169
  }
170
170
  if (gateway) {
@@ -175,9 +175,9 @@ function createEngineWorkspaceAdapter(engine) {
175
175
  sourcePath,
176
176
  requestId: requestId ?? "view-inspect-meta"
177
177
  }),
178
- "asset-source.inspect-meta"
178
+ "asset.source.inspect-meta"
179
179
  ),
180
- "asset-source.inspect-meta"
180
+ "asset.source.inspect-meta"
181
181
  );
182
182
  }
183
183
  return void 0;
@@ -395,4 +395,4 @@ export {
395
395
  createEngineWorkspaceAdapter,
396
396
  isEngineWorkspaceAdapter
397
397
  };
398
- //# sourceMappingURL=chunk-P4UPH74B.mjs.map
398
+ //# sourceMappingURL=chunk-6C4OCCYB.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/view-workspace-core/src/engine-adapter.ts"],
4
- "sourcesContent": ["import type { EngineWorkspaceProvider, EngineWorkspaceCameraInput, EngineWorkspacePreview } from '@forgeax/engine/app';\nimport type { WorkspaceAsset, WorkspaceProject } from './contract.ts';\nimport { workspaceDiagnosticRecord } from './command-error.ts';\ntype EngineAssetEntry = Partial<WorkspaceAsset> & { lifecycle?: string; state?: string; receiptUrl?: string };\ntype AssetAdapterInput = { project?: WorkspaceProject; root?: string; asset?: EngineAssetEntry; subject?: unknown; requestId?: string; sourcePath?: string; expectedRevision?: string; mode?: 'rebuild' | 'cold-cook' };\ntype CapabilityMethod = (...args: unknown[]) => unknown;\nimport { ViewWorkspaceError } from './contract.ts';\n\n/**\n * View binds the Engine public workspace / DevKit / ScriptablePack surfaces.\n * It does not invent inspectAsset, applyParams, cookAsset, or inspectDdc.\n *\n * Engine owners:\n * - catalog: `assetList` / `asset.list` / existing `listAssets` \u2192 PackEntry[]\n * - inspect: DevKit `assetInspect({ root, subject })` plus optional\n * ScriptablePack `inspect(sourcePath)` / gateway `inspect-meta`\n * - cook: ScriptablePack `rebuild(sourcePath, mode)` / gateway\n * `rebuild`|`cold-cook` / ToolClient `asset-source.rebuild`|`asset-source.cold-cook`\n */\nexport const VIEW_ENGINE_WORKSPACE_ADAPTER = Object.freeze({\n openProject: 'openProject({ root })',\n closeProject: 'closeProject({ project })',\n listAssets: 'assetList({ root }) | listAssets({ project })',\n openPreview: 'openPreview({ project, asset, width, height })',\n closePreview: 'preview.close()',\n resizePreview: 'preview.resize({ width, height })',\n getCamera: 'preview.getCamera()',\n beginCamera: 'preview.beginCameraInteraction({ interactionId, baseVersion, clientId })',\n updateCamera: 'preview.updateCameraDraft({ interactionId, input | camera })',\n commitCamera: 'preview.commitCamera({ interactionId, operationId, expectedVersion, camera })',\n abortCamera: 'preview.abortCamera({ interactionId, reason })',\n capture: 'preview.capture(options)',\n assetInspect: 'assetInspect({ root, subject })',\n packInspect: 'ScriptablePackAuthoringPort.inspect(sourcePath)',\n packRebuild: \"ScriptablePackAuthoringPort.rebuild(sourcePath, 'rebuild' | 'cold-cook')\",\n packGateway: \"gateway.execute({ kind: 'inspect-meta' | 'rebuild' | 'cold-cook', sourcePath, requestId, expectedRevision })\",\n packTools: \"ToolClient.run('asset-source.rebuild' | 'asset-source.cold-cook', args)\",\n});\n\nexport const VIEW_ENGINE_ASSET_SOURCE_TOOLS = Object.freeze({\n rebuild: 'asset-source.rebuild',\n 'cold-cook': 'asset-source.cold-cook',\n});\n\nfunction missing(name: string): never {\n throw new ViewWorkspaceError(\n 'view-engine-capability-unavailable',\n `Engine workspace capability ${name} to be installed`,\n 'Build and install the matching Engine workspace plugin before opening a project.',\n { capability: name },\n );\n}\n\nfunction method(source: unknown, names: readonly string[], name: string): CapabilityMethod;\nfunction method(source: unknown, names: readonly string[], name: string, options: { optional: true }): CapabilityMethod | undefined;\nfunction method(source: unknown, names: readonly string[], name: string, { optional = false }: { optional?: boolean } = {}) {\n const methods = workspaceDiagnosticRecord(source);\n for (const candidate of names) {\n if (typeof methods[candidate] === 'function') return (methods[candidate] as CapabilityMethod).bind(source);\n }\n return optional ? undefined : () => missing(name);\n}\n\nfunction asObject<T extends object = Record<string, unknown>>(value: unknown, name: string): T {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n throw new ViewWorkspaceError(\n 'view-engine-invalid-result',\n `Engine ${name} to return an object`,\n 'Inspect the Engine workspace plugin result contract.',\n { capability: name },\n );\n }\n return value as T;\n}\n\nfunction previewMethod(preview: unknown, names: readonly string[], name: string) {\n // Engine's public shape puts operations on the outer preview. `handle` is\n // an opaque resource bundle and must never become a second operation\n // surface, otherwise a client can accidentally bypass the Engine contract.\n const methods = workspaceDiagnosticRecord(preview);\n for (const candidate of names) {\n if (typeof methods[candidate] === 'function') return (methods[candidate] as CapabilityMethod).bind(preview);\n }\n return () => missing(name);\n}\n\nfunction engineFailure(error: unknown, capability: string): never {\n if (error instanceof ViewWorkspaceError) throw error;\n const payload = error !== null && typeof error === 'object' ? workspaceDiagnosticRecord(error) : { message: String(error) };\n const message =\n typeof payload.message === 'string' && payload.message.trim() !== ''\n ? payload.message\n : String(error);\n const code =\n typeof payload.code === 'string' && payload.code.length > 0\n ? payload.code\n : 'view-engine-invalid-result';\n throw new ViewWorkspaceError(\n code,\n typeof payload.expected === 'string' ? payload.expected : message,\n typeof payload.hint === 'string' ? payload.hint : message,\n {\n capability,\n message,\n ...(typeof payload.name === 'string' ? { name: payload.name } : {}),\n ...(typeof payload.stack === 'string' ? { stack: payload.stack } : {}),\n ...(payload.detail !== null && typeof payload.detail === 'object' && !Array.isArray(payload.detail)\n ? payload.detail\n : payload.detail === undefined\n ? {}\n : { engineDetail: payload.detail }),\n ...(typeof payload.actual === 'string' ? { actual: payload.actual } : {}),\n },\n );\n}\n\nfunction unwrapEngineResult(result: unknown, capability: string): unknown {\n if (Array.isArray(result)) return result;\n if (result === undefined) return result;\n if (result !== null && typeof result === 'object') {\n const record = workspaceDiagnosticRecord(result);\n if ('ok' in result) {\n if (record.ok === true) return record.value;\n engineFailure(record.error ?? result, capability);\n }\n if (record.outcome === 'succeeded') return record.result;\n if (record.outcome === 'failed') engineFailure(record.failure ?? result, capability);\n }\n return result;\n}\n\nfunction projectCatalogDdc(entry: EngineAssetEntry | null | undefined) {\n if (!entry || typeof entry !== 'object') return undefined;\n if (entry.ddc !== null && typeof entry.ddc === 'object' && !Array.isArray(entry.ddc)) {\n return entry.ddc;\n }\n const receiptUrl =\n typeof entry.cookReceiptUrl === 'string'\n ? entry.cookReceiptUrl\n : typeof entry.receiptUrl === 'string'\n ? entry.receiptUrl\n : undefined;\n const packageUrl = typeof entry.packageUrl === 'string' ? entry.packageUrl : undefined;\n const state =\n typeof entry.lifecycle === 'string'\n ? entry.lifecycle\n : typeof entry.state === 'string'\n ? entry.state\n : undefined;\n if (receiptUrl === undefined && packageUrl === undefined && state === undefined) return undefined;\n return {\n ...(entry.guid === undefined ? {} : { guid: String(entry.guid) }),\n ...(state === undefined ? {} : { state }),\n ...(receiptUrl === undefined ? {} : { receiptUrl }),\n ...(packageUrl === undefined ? {} : { hint: packageUrl }),\n };\n}\n\nfunction packNamespace(source: Record<string, unknown>) {\n return workspaceDiagnosticRecord(source?.pack ?? source?.scriptablePack ?? source?.authoring ?? source?.assetSource);\n}\n\nfunction gatewayOf(source: Record<string, unknown>, pack: Record<string, unknown>) {\n const candidate = workspaceDiagnosticRecord(source?.gateway ?? pack?.gateway ?? source?.scriptablePackGateway ?? pack);\n return typeof candidate?.execute === 'function' ? candidate as { execute: (input: Record<string, unknown>) => unknown } : null;\n}\n\nfunction toolClientOf(source: Record<string, unknown>) {\n const candidate = workspaceDiagnosticRecord(source?.tools ?? source?.toolClient ?? source);\n return typeof candidate?.run === 'function' ? candidate as { run: (id: string, args: Record<string, unknown>) => unknown } : null;\n}\n\nfunction isPackTs(sourcePath: unknown): sourcePath is string {\n return typeof sourcePath === 'string' && sourcePath.endsWith('.pack.ts');\n}\n\n/**\n * Normalize the Engine public workspace capability into one call surface.\n * This function only adapts naming; all project, asset, target, scene and\n * camera behavior remains in the supplied Engine implementation.\n */\nexport function createEngineWorkspaceAdapter(engine: unknown) {\n const source = workspaceDiagnosticRecord(workspaceDiagnosticRecord(engine).workspace ?? engine);\n const projectSource = source?.project ?? source;\n const assetSource = source?.assets ?? source;\n const previewSource = source?.preview ?? source;\n const pack = packNamespace(source);\n const gateway = gatewayOf(source, pack);\n const tools = toolClientOf(source);\n\n const openProject = method(projectSource, ['openProject', 'open'], 'project.open');\n const closeProject = method(projectSource, ['closeProject', 'close'], 'project.close');\n const listAssets = method(\n assetSource,\n ['listAssets', 'list', 'assetList', 'asset.list'],\n 'assets.list',\n );\n const openPreview = method(previewSource, ['openPreview', 'openAsset', 'openScene', 'open'], 'asset.open');\n const assetInspect = method(\n assetSource,\n ['assetInspect', 'asset.inspect'],\n 'asset.inspect',\n { optional: true },\n );\n const packInspect = method(\n pack ?? {},\n ['inspect', 'inspectMeta'],\n 'asset-source.inspect-meta',\n { optional: true },\n );\n const packPreflight = method(pack ?? {}, ['preflight'], 'asset.preflight', { optional: true });\n const packRebuild = method(pack ?? {}, ['rebuild'], 'asset-source.rebuild', { optional: true });\n\n async function runTool(id: string, args: Record<string, unknown>, capability: string) {\n if (!tools) missing(capability);\n return unwrapEngineResult(await tools.run(id, args), capability);\n }\n\n async function inspectPackMeta(sourcePath: string | undefined, requestId?: string) {\n if (typeof sourcePath !== 'string' || sourcePath.length === 0) return undefined;\n if (packInspect) {\n return asObject(\n unwrapEngineResult(await packInspect(sourcePath), 'asset-source.inspect-meta'),\n 'asset-source.inspect-meta',\n );\n }\n if (gateway) {\n return asObject(\n unwrapEngineResult(\n await gateway.execute({\n kind: 'inspect-meta',\n sourcePath,\n requestId: requestId ?? 'view-inspect-meta',\n }),\n 'asset-source.inspect-meta',\n ),\n 'asset-source.inspect-meta',\n );\n }\n return undefined;\n }\n\n return Object.freeze({\n async openProject(input: Parameters<EngineWorkspaceProvider['openProject']>[0]) {\n return asObject(await openProject(input), 'project.open');\n },\n async closeProject(input: Parameters<EngineWorkspaceProvider['closeProject']>[0]) {\n return closeProject(input);\n },\n async listAssets(input: Parameters<EngineWorkspaceProvider['listAssets']>[0] & { root?: string }) {\n const result = unwrapEngineResult(\n await listAssets({\n ...input,\n root: input?.project?.root ?? input?.root,\n }),\n 'assets.list',\n );\n const entries = Array.isArray(result)\n ? result\n : Array.isArray(workspaceDiagnosticRecord(result).entries)\n ? workspaceDiagnosticRecord(result).entries\n : undefined;\n if (!Array.isArray(entries)) {\n throw new ViewWorkspaceError(\n 'view-engine-invalid-result',\n 'Engine assets.list to return an array',\n 'Inspect the Engine asset catalog plugin result.',\n { capability: 'assets.list' },\n );\n }\n return entries;\n },\n async openPreview(input: Parameters<EngineWorkspaceProvider['openPreview']>[0]) {\n let rawResult;\n try {\n rawResult = await openPreview(input);\n } catch (error) {\n const failure = workspaceDiagnosticRecord(error);\n const detail = workspaceDiagnosticRecord(failure.detail);\n if (\n failure.code === 'engine-workspace-preview-capability-unavailable' ||\n detail.code === 'engine-workspace-preview-capability-unavailable' ||\n /workspace preview (?:does not support asset kind|only supports SceneAsset)/i.test(typeof failure.message === 'string' ? failure.message : '')\n ) {\n const kind =\n typeof detail.kind === 'string' ? detail.kind : input.asset?.kind;\n throw new ViewWorkspaceError(\n 'view-workspace-asset-unsupported',\n `Engine asset.open to support asset kind ${kind}`,\n 'Use an Engine type-preview capability for this asset kind.',\n { kind },\n );\n }\n throw error;\n }\n const result = asObject(rawResult, 'asset.open');\n const target = asObject(result.target, 'asset.open target');\n if (typeof target.targetId !== 'string' && typeof target.targetId !== 'number') {\n throw new ViewWorkspaceError(\n 'view-engine-invalid-result',\n 'Engine asset.open to return a stable target.targetId',\n 'The Engine preview target must expose its identity for API routing.',\n { capability: 'asset.open' },\n );\n }\n const handle = result.handle ?? result.preview ?? result;\n return Object.freeze({\n ...result,\n target: Object.freeze({ ...target, targetId: String(target.targetId) }),\n handle,\n });\n },\n async closePreview(preview: EngineWorkspacePreview, input: EngineWorkspaceCameraInput & { reason?: string; width?: number; height?: number }) {\n const close = previewMethod(preview, ['close', 'dispose'], 'preview.close');\n return close(input);\n },\n async getCamera(preview: EngineWorkspacePreview, input: EngineWorkspaceCameraInput & { reason?: string; width?: number; height?: number }) {\n const get = previewMethod(preview, ['getCamera', 'cameraGet'], 'camera.get');\n return get(input);\n },\n async beginCamera(preview: EngineWorkspacePreview, input: EngineWorkspaceCameraInput & { reason?: string; width?: number; height?: number }) {\n const begin = previewMethod(preview, ['beginCameraInteraction', 'beginCamera'], 'camera.begin');\n return begin(input);\n },\n async updateCamera(preview: EngineWorkspacePreview, input: EngineWorkspaceCameraInput & { reason?: string; width?: number; height?: number }) {\n const update = previewMethod(preview, ['updateCameraDraft', 'updateCamera'], 'camera.update');\n return update(input);\n },\n async commitCamera(preview: EngineWorkspacePreview, input: EngineWorkspaceCameraInput & { reason?: string; width?: number; height?: number }) {\n const commit = previewMethod(preview, ['commitCamera', 'setCamera'], 'camera.commit');\n return commit(input);\n },\n async abortCamera(preview: EngineWorkspacePreview, input: EngineWorkspaceCameraInput & { reason?: string; width?: number; height?: number }) {\n const abort = previewMethod(preview, ['abortCameraInteraction', 'abortCamera'], 'camera.abort');\n return abort(input);\n },\n async capture(preview: EngineWorkspacePreview, input: EngineWorkspaceCameraInput & { reason?: string; width?: number; height?: number }) {\n const capture = previewMethod(preview, ['capture'], 'preview.capture');\n return capture(input);\n },\n async resizePreview(preview: EngineWorkspacePreview, input: EngineWorkspaceCameraInput & { reason?: string; width?: number; height?: number }) {\n const resize = previewMethod(preview, ['resize', 'resizePreview', 'setRenderSize'], 'preview.resize');\n return resize(input);\n },\n async inspectAsset(input: AssetAdapterInput) {\n const asset = input?.asset ?? {};\n const root = input?.project?.root ?? input?.root;\n const subject = input?.subject ?? asset.guid;\n let entry = asset;\n if (assetInspect) {\n const inspected = unwrapEngineResult(\n await assetInspect({\n ...input,\n root,\n subject,\n }),\n 'asset.inspect',\n );\n entry = asObject<EngineAssetEntry>(inspected, 'asset.inspect');\n } else if (tools) {\n try {\n entry = asObject<EngineAssetEntry>(\n unwrapEngineResult(\n await tools.run('asset.inspect', { root, subject }),\n 'asset.inspect',\n ),\n 'asset.inspect',\n );\n } catch (error) {\n if (workspaceDiagnosticRecord(error).code === 'view-engine-capability-unavailable') throw error;\n if (!asset?.guid) throw error;\n }\n }\n const sourcePath = entry.sourcePath ?? asset.sourcePath;\n const packMeta = isPackTs(sourcePath) ? await inspectPackMeta(sourcePath, input?.requestId) : undefined;\n if (!entry?.guid && !asset?.guid) missing('asset.inspect');\n const revision = packMeta?.revision ?? entry.revision ?? asset.revision;\n return {\n guid: entry.guid ?? asset.guid,\n asset: { ...asset, ...entry },\n ...(sourcePath === undefined\n ? {}\n : {\n source: {\n path: sourcePath,\n ...(isPackTs(sourcePath) ? { kind: 'pack.ts' } : {}),\n ...(revision === undefined ? {} : { revision: String(revision) }),\n },\n }),\n ...(packMeta?.meta === undefined ? {} : { meta: packMeta.meta }),\n ...(revision === undefined ? {} : { revision: String(revision) }),\n ...(projectCatalogDdc({ ...asset, ...entry }) === undefined\n ? {}\n : { ddc: projectCatalogDdc({ ...asset, ...entry }) }),\n };\n },\n async rebuild(input: AssetAdapterInput) {\n const mode = input?.mode === 'cold-cook' ? 'cold-cook' : 'rebuild';\n const capability = VIEW_ENGINE_ASSET_SOURCE_TOOLS[mode];\n const sourcePath = input?.sourcePath ?? input?.asset?.sourcePath;\n const expectedRevision = input?.expectedRevision;\n const requestId = input?.requestId;\n const args = {\n ...(sourcePath === undefined ? {} : { sourcePath }),\n ...(input?.asset?.guid === undefined ? {} : { guid: input.asset.guid, ownerGuid: input.asset.guid }),\n ...(requestId === undefined ? {} : { requestId }),\n ...(expectedRevision === undefined ? {} : { expectedRevision }),\n };\n\n if (gateway && sourcePath) {\n return asObject(\n unwrapEngineResult(\n await gateway.execute({\n kind: mode,\n sourcePath,\n requestId: requestId ?? `view-${mode}`,\n ...(expectedRevision === undefined ? {} : { expectedRevision }),\n }),\n capability,\n ),\n capability,\n );\n }\n\n if (packRebuild && sourcePath) {\n if (packPreflight && expectedRevision !== undefined) {\n const preflight = asObject(\n unwrapEngineResult(await packPreflight(sourcePath), 'asset.preflight'),\n 'asset.preflight',\n );\n if (String(preflight.revision) !== String(expectedRevision)) {\n engineFailure(\n {\n code: 'pack-source-revision-conflict',\n expected: expectedRevision,\n actual: preflight.revision,\n hint: 'inspect the current source revision, then retry the build with a new requestId',\n detail: { sourcePath, requestId },\n },\n capability,\n );\n }\n }\n return asObject(\n unwrapEngineResult(await packRebuild(sourcePath, mode), capability),\n capability,\n );\n }\n\n if (tools) {\n return asObject(await runTool(capability, args, capability), capability);\n }\n missing(capability);\n },\n });\n}\n\nexport function isEngineWorkspaceAdapter(input: unknown) {\n const value = workspaceDiagnosticRecord(input);\n const assets = workspaceDiagnosticRecord(value?.assets ?? value);\n const preview = workspaceDiagnosticRecord(value?.preview ?? value);\n return Boolean(\n value &&\n typeof (value.openProject ?? value.open) === 'function' &&\n typeof (value.closeProject ?? value.close) === 'function' &&\n typeof (\n assets.listAssets ??\n assets.list ??\n assets.assetList ??\n assets['asset.list']\n ) === 'function' &&\n typeof (\n preview.openPreview ??\n preview.openAsset ??\n preview.openScene ??\n preview.open\n ) === 'function',\n );\n}\n"],
4
+ "sourcesContent": ["import type { EngineWorkspaceProvider, EngineWorkspaceCameraInput, EngineWorkspacePreview } from '@forgeax/engine/app';\nimport type { WorkspaceAsset, WorkspaceProject } from './contract.ts';\nimport { workspaceDiagnosticRecord } from './command-error.ts';\ntype EngineAssetEntry = Partial<WorkspaceAsset> & { lifecycle?: string; state?: string; receiptUrl?: string };\ntype AssetAdapterInput = { project?: WorkspaceProject; root?: string; asset?: EngineAssetEntry; subject?: unknown; requestId?: string; sourcePath?: string; expectedRevision?: string; mode?: 'rebuild' | 'cold-cook' };\ntype CapabilityMethod = (...args: unknown[]) => unknown;\nimport { ViewWorkspaceError } from './contract.ts';\n\n/**\n * View binds the Engine public workspace / DevKit / ScriptablePack surfaces.\n * It does not invent inspectAsset, applyParams, cookAsset, or inspectDdc.\n *\n * Engine owners:\n * - catalog: `assetList` / `asset.list` / existing `listAssets` \u2192 PackEntry[]\n * - inspect: DevKit `assetInspect({ root, subject })` plus optional\n * ScriptablePack `inspect(sourcePath)` / gateway `inspect-meta`\n * - cook: ScriptablePack `rebuild(sourcePath, mode)` / gateway\n * `rebuild`|`cold-cook` / ToolClient `asset.source.rebuild`|`asset.source.cold-cook`\n */\nexport const VIEW_ENGINE_WORKSPACE_ADAPTER = Object.freeze({\n openProject: 'openProject({ root })',\n closeProject: 'closeProject({ project })',\n listAssets: 'assetList({ root }) | listAssets({ project })',\n openPreview: 'openPreview({ project, asset, width, height })',\n closePreview: 'preview.close()',\n resizePreview: 'preview.resize({ width, height })',\n getCamera: 'preview.getCamera()',\n beginCamera: 'preview.beginCameraInteraction({ interactionId, baseVersion, clientId })',\n updateCamera: 'preview.updateCameraDraft({ interactionId, input | camera })',\n commitCamera: 'preview.commitCamera({ interactionId, operationId, expectedVersion, camera })',\n abortCamera: 'preview.abortCamera({ interactionId, reason })',\n capture: 'preview.capture(options)',\n assetInspect: 'assetInspect({ root, subject })',\n packInspect: 'ScriptablePackAuthoringPort.inspect(sourcePath)',\n packRebuild: \"ScriptablePackAuthoringPort.rebuild(sourcePath, 'rebuild' | 'cold-cook')\",\n packGateway: \"gateway.execute({ kind: 'inspect-meta' | 'rebuild' | 'cold-cook', sourcePath, requestId, expectedRevision })\",\n packTools: \"ToolClient.run('asset.source.rebuild' | 'asset.source.cold-cook', args)\",\n});\n\nexport const VIEW_ENGINE_ASSET_SOURCE_TOOLS = Object.freeze({\n rebuild: 'asset.source.rebuild',\n 'cold-cook': 'asset.source.cold-cook',\n});\n\nfunction missing(name: string): never {\n throw new ViewWorkspaceError(\n 'view-engine-capability-unavailable',\n `Engine workspace capability ${name} to be installed`,\n 'Build and install the matching Engine workspace plugin before opening a project.',\n { capability: name },\n );\n}\n\nfunction method(source: unknown, names: readonly string[], name: string): CapabilityMethod;\nfunction method(source: unknown, names: readonly string[], name: string, options: { optional: true }): CapabilityMethod | undefined;\nfunction method(source: unknown, names: readonly string[], name: string, { optional = false }: { optional?: boolean } = {}) {\n const methods = workspaceDiagnosticRecord(source);\n for (const candidate of names) {\n if (typeof methods[candidate] === 'function') return (methods[candidate] as CapabilityMethod).bind(source);\n }\n return optional ? undefined : () => missing(name);\n}\n\nfunction asObject<T extends object = Record<string, unknown>>(value: unknown, name: string): T {\n if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n throw new ViewWorkspaceError(\n 'view-engine-invalid-result',\n `Engine ${name} to return an object`,\n 'Inspect the Engine workspace plugin result contract.',\n { capability: name },\n );\n }\n return value as T;\n}\n\nfunction previewMethod(preview: unknown, names: readonly string[], name: string) {\n // Engine's public shape puts operations on the outer preview. `handle` is\n // an opaque resource bundle and must never become a second operation\n // surface, otherwise a client can accidentally bypass the Engine contract.\n const methods = workspaceDiagnosticRecord(preview);\n for (const candidate of names) {\n if (typeof methods[candidate] === 'function') return (methods[candidate] as CapabilityMethod).bind(preview);\n }\n return () => missing(name);\n}\n\nfunction engineFailure(error: unknown, capability: string): never {\n if (error instanceof ViewWorkspaceError) throw error;\n const payload = error !== null && typeof error === 'object' ? workspaceDiagnosticRecord(error) : { message: String(error) };\n const message =\n typeof payload.message === 'string' && payload.message.trim() !== ''\n ? payload.message\n : String(error);\n const code =\n typeof payload.code === 'string' && payload.code.length > 0\n ? payload.code\n : 'view-engine-invalid-result';\n throw new ViewWorkspaceError(\n code,\n typeof payload.expected === 'string' ? payload.expected : message,\n typeof payload.hint === 'string' ? payload.hint : message,\n {\n capability,\n message,\n ...(typeof payload.name === 'string' ? { name: payload.name } : {}),\n ...(typeof payload.stack === 'string' ? { stack: payload.stack } : {}),\n ...(payload.detail !== null && typeof payload.detail === 'object' && !Array.isArray(payload.detail)\n ? payload.detail\n : payload.detail === undefined\n ? {}\n : { engineDetail: payload.detail }),\n ...(typeof payload.actual === 'string' ? { actual: payload.actual } : {}),\n },\n );\n}\n\nfunction unwrapEngineResult(result: unknown, capability: string): unknown {\n if (Array.isArray(result)) return result;\n if (result === undefined) return result;\n if (result !== null && typeof result === 'object') {\n const record = workspaceDiagnosticRecord(result);\n if ('ok' in result) {\n if (record.ok === true) return record.value;\n engineFailure(record.error ?? result, capability);\n }\n if (record.outcome === 'succeeded') return record.result;\n if (record.outcome === 'failed') engineFailure(record.failure ?? result, capability);\n }\n return result;\n}\n\nfunction projectCatalogDdc(entry: EngineAssetEntry | null | undefined) {\n if (!entry || typeof entry !== 'object') return undefined;\n if (entry.ddc !== null && typeof entry.ddc === 'object' && !Array.isArray(entry.ddc)) {\n return entry.ddc;\n }\n const receiptUrl =\n typeof entry.cookReceiptUrl === 'string'\n ? entry.cookReceiptUrl\n : typeof entry.receiptUrl === 'string'\n ? entry.receiptUrl\n : undefined;\n const packageUrl = typeof entry.packageUrl === 'string' ? entry.packageUrl : undefined;\n const state =\n typeof entry.lifecycle === 'string'\n ? entry.lifecycle\n : typeof entry.state === 'string'\n ? entry.state\n : undefined;\n if (receiptUrl === undefined && packageUrl === undefined && state === undefined) return undefined;\n return {\n ...(entry.guid === undefined ? {} : { guid: String(entry.guid) }),\n ...(state === undefined ? {} : { state }),\n ...(receiptUrl === undefined ? {} : { receiptUrl }),\n ...(packageUrl === undefined ? {} : { hint: packageUrl }),\n };\n}\n\nfunction packNamespace(source: Record<string, unknown>) {\n return workspaceDiagnosticRecord(source?.pack ?? source?.scriptablePack ?? source?.authoring ?? source?.assetSource);\n}\n\nfunction gatewayOf(source: Record<string, unknown>, pack: Record<string, unknown>) {\n const candidate = workspaceDiagnosticRecord(source?.gateway ?? pack?.gateway ?? source?.scriptablePackGateway ?? pack);\n return typeof candidate?.execute === 'function' ? candidate as { execute: (input: Record<string, unknown>) => unknown } : null;\n}\n\nfunction toolClientOf(source: Record<string, unknown>) {\n const candidate = workspaceDiagnosticRecord(source?.tools ?? source?.toolClient ?? source);\n return typeof candidate?.run === 'function' ? candidate as { run: (id: string, args: Record<string, unknown>) => unknown } : null;\n}\n\nfunction isPackTs(sourcePath: unknown): sourcePath is string {\n return typeof sourcePath === 'string' && sourcePath.endsWith('.pack.ts');\n}\n\n/**\n * Normalize the Engine public workspace capability into one call surface.\n * This function only adapts naming; all project, asset, target, scene and\n * camera behavior remains in the supplied Engine implementation.\n */\nexport function createEngineWorkspaceAdapter(engine: unknown) {\n const source = workspaceDiagnosticRecord(workspaceDiagnosticRecord(engine).workspace ?? engine);\n const projectSource = source?.project ?? source;\n const assetSource = source?.assets ?? source;\n const previewSource = source?.preview ?? source;\n const pack = packNamespace(source);\n const gateway = gatewayOf(source, pack);\n const tools = toolClientOf(source);\n\n const openProject = method(projectSource, ['openProject', 'open'], 'project.open');\n const closeProject = method(projectSource, ['closeProject', 'close'], 'project.close');\n const listAssets = method(\n assetSource,\n ['listAssets', 'list', 'assetList', 'asset.list'],\n 'assets.list',\n );\n const openPreview = method(previewSource, ['openPreview', 'openAsset', 'openScene', 'open'], 'asset.open');\n const assetInspect = method(\n assetSource,\n ['assetInspect', 'asset.inspect'],\n 'asset.inspect',\n { optional: true },\n );\n const packInspect = method(\n pack ?? {},\n ['inspect', 'inspectMeta'],\n 'asset.source.inspect-meta',\n { optional: true },\n );\n const packPreflight = method(pack ?? {}, ['preflight'], 'asset.preflight', { optional: true });\n const packRebuild = method(pack ?? {}, ['rebuild'], 'asset.source.rebuild', { optional: true });\n\n async function runTool(id: string, args: Record<string, unknown>, capability: string) {\n if (!tools) missing(capability);\n return unwrapEngineResult(await tools.run(id, args), capability);\n }\n\n async function inspectPackMeta(sourcePath: string | undefined, requestId?: string) {\n if (typeof sourcePath !== 'string' || sourcePath.length === 0) return undefined;\n if (packInspect) {\n return asObject(\n unwrapEngineResult(await packInspect(sourcePath), 'asset.source.inspect-meta'),\n 'asset.source.inspect-meta',\n );\n }\n if (gateway) {\n return asObject(\n unwrapEngineResult(\n await gateway.execute({\n kind: 'inspect-meta',\n sourcePath,\n requestId: requestId ?? 'view-inspect-meta',\n }),\n 'asset.source.inspect-meta',\n ),\n 'asset.source.inspect-meta',\n );\n }\n return undefined;\n }\n\n return Object.freeze({\n async openProject(input: Parameters<EngineWorkspaceProvider['openProject']>[0]) {\n return asObject(await openProject(input), 'project.open');\n },\n async closeProject(input: Parameters<EngineWorkspaceProvider['closeProject']>[0]) {\n return closeProject(input);\n },\n async listAssets(input: Parameters<EngineWorkspaceProvider['listAssets']>[0] & { root?: string }) {\n const result = unwrapEngineResult(\n await listAssets({\n ...input,\n root: input?.project?.root ?? input?.root,\n }),\n 'assets.list',\n );\n const entries = Array.isArray(result)\n ? result\n : Array.isArray(workspaceDiagnosticRecord(result).entries)\n ? workspaceDiagnosticRecord(result).entries\n : undefined;\n if (!Array.isArray(entries)) {\n throw new ViewWorkspaceError(\n 'view-engine-invalid-result',\n 'Engine assets.list to return an array',\n 'Inspect the Engine asset catalog plugin result.',\n { capability: 'assets.list' },\n );\n }\n return entries;\n },\n async openPreview(input: Parameters<EngineWorkspaceProvider['openPreview']>[0]) {\n let rawResult;\n try {\n rawResult = await openPreview(input);\n } catch (error) {\n const failure = workspaceDiagnosticRecord(error);\n const detail = workspaceDiagnosticRecord(failure.detail);\n if (\n failure.code === 'engine-workspace-preview-capability-unavailable' ||\n detail.code === 'engine-workspace-preview-capability-unavailable' ||\n /workspace preview (?:does not support asset kind|only supports SceneAsset)/i.test(typeof failure.message === 'string' ? failure.message : '')\n ) {\n const kind =\n typeof detail.kind === 'string' ? detail.kind : input.asset?.kind;\n throw new ViewWorkspaceError(\n 'view-workspace-asset-unsupported',\n `Engine asset.open to support asset kind ${kind}`,\n 'Use an Engine type-preview capability for this asset kind.',\n { kind },\n );\n }\n throw error;\n }\n const result = asObject(rawResult, 'asset.open');\n const target = asObject(result.target, 'asset.open target');\n if (typeof target.targetId !== 'string' && typeof target.targetId !== 'number') {\n throw new ViewWorkspaceError(\n 'view-engine-invalid-result',\n 'Engine asset.open to return a stable target.targetId',\n 'The Engine preview target must expose its identity for API routing.',\n { capability: 'asset.open' },\n );\n }\n const handle = result.handle ?? result.preview ?? result;\n return Object.freeze({\n ...result,\n target: Object.freeze({ ...target, targetId: String(target.targetId) }),\n handle,\n });\n },\n async closePreview(preview: EngineWorkspacePreview, input: EngineWorkspaceCameraInput & { reason?: string; width?: number; height?: number }) {\n const close = previewMethod(preview, ['close', 'dispose'], 'preview.close');\n return close(input);\n },\n async getCamera(preview: EngineWorkspacePreview, input: EngineWorkspaceCameraInput & { reason?: string; width?: number; height?: number }) {\n const get = previewMethod(preview, ['getCamera', 'cameraGet'], 'camera.get');\n return get(input);\n },\n async beginCamera(preview: EngineWorkspacePreview, input: EngineWorkspaceCameraInput & { reason?: string; width?: number; height?: number }) {\n const begin = previewMethod(preview, ['beginCameraInteraction', 'beginCamera'], 'camera.begin');\n return begin(input);\n },\n async updateCamera(preview: EngineWorkspacePreview, input: EngineWorkspaceCameraInput & { reason?: string; width?: number; height?: number }) {\n const update = previewMethod(preview, ['updateCameraDraft', 'updateCamera'], 'camera.update');\n return update(input);\n },\n async commitCamera(preview: EngineWorkspacePreview, input: EngineWorkspaceCameraInput & { reason?: string; width?: number; height?: number }) {\n const commit = previewMethod(preview, ['commitCamera', 'setCamera'], 'camera.commit');\n return commit(input);\n },\n async abortCamera(preview: EngineWorkspacePreview, input: EngineWorkspaceCameraInput & { reason?: string; width?: number; height?: number }) {\n const abort = previewMethod(preview, ['abortCameraInteraction', 'abortCamera'], 'camera.abort');\n return abort(input);\n },\n async capture(preview: EngineWorkspacePreview, input: EngineWorkspaceCameraInput & { reason?: string; width?: number; height?: number }) {\n const capture = previewMethod(preview, ['capture'], 'preview.capture');\n return capture(input);\n },\n async resizePreview(preview: EngineWorkspacePreview, input: EngineWorkspaceCameraInput & { reason?: string; width?: number; height?: number }) {\n const resize = previewMethod(preview, ['resize', 'resizePreview', 'setRenderSize'], 'preview.resize');\n return resize(input);\n },\n async inspectAsset(input: AssetAdapterInput) {\n const asset = input?.asset ?? {};\n const root = input?.project?.root ?? input?.root;\n const subject = input?.subject ?? asset.guid;\n let entry = asset;\n if (assetInspect) {\n const inspected = unwrapEngineResult(\n await assetInspect({\n ...input,\n root,\n subject,\n }),\n 'asset.inspect',\n );\n entry = asObject<EngineAssetEntry>(inspected, 'asset.inspect');\n } else if (tools) {\n try {\n entry = asObject<EngineAssetEntry>(\n unwrapEngineResult(\n await tools.run('asset.inspect', { root, subject }),\n 'asset.inspect',\n ),\n 'asset.inspect',\n );\n } catch (error) {\n if (workspaceDiagnosticRecord(error).code === 'view-engine-capability-unavailable') throw error;\n if (!asset?.guid) throw error;\n }\n }\n const sourcePath = entry.sourcePath ?? asset.sourcePath;\n const packMeta = isPackTs(sourcePath) ? await inspectPackMeta(sourcePath, input?.requestId) : undefined;\n if (!entry?.guid && !asset?.guid) missing('asset.inspect');\n const revision = packMeta?.revision ?? entry.revision ?? asset.revision;\n return {\n guid: entry.guid ?? asset.guid,\n asset: { ...asset, ...entry },\n ...(sourcePath === undefined\n ? {}\n : {\n source: {\n path: sourcePath,\n ...(isPackTs(sourcePath) ? { kind: 'pack.ts' } : {}),\n ...(revision === undefined ? {} : { revision: String(revision) }),\n },\n }),\n ...(packMeta?.meta === undefined ? {} : { meta: packMeta.meta }),\n ...(revision === undefined ? {} : { revision: String(revision) }),\n ...(projectCatalogDdc({ ...asset, ...entry }) === undefined\n ? {}\n : { ddc: projectCatalogDdc({ ...asset, ...entry }) }),\n };\n },\n async rebuild(input: AssetAdapterInput) {\n const mode = input?.mode === 'cold-cook' ? 'cold-cook' : 'rebuild';\n const capability = VIEW_ENGINE_ASSET_SOURCE_TOOLS[mode];\n const sourcePath = input?.sourcePath ?? input?.asset?.sourcePath;\n const expectedRevision = input?.expectedRevision;\n const requestId = input?.requestId;\n const args = {\n ...(sourcePath === undefined ? {} : { sourcePath }),\n ...(input?.asset?.guid === undefined ? {} : { guid: input.asset.guid, ownerGuid: input.asset.guid }),\n ...(requestId === undefined ? {} : { requestId }),\n ...(expectedRevision === undefined ? {} : { expectedRevision }),\n };\n\n if (gateway && sourcePath) {\n return asObject(\n unwrapEngineResult(\n await gateway.execute({\n kind: mode,\n sourcePath,\n requestId: requestId ?? `view-${mode}`,\n ...(expectedRevision === undefined ? {} : { expectedRevision }),\n }),\n capability,\n ),\n capability,\n );\n }\n\n if (packRebuild && sourcePath) {\n if (packPreflight && expectedRevision !== undefined) {\n const preflight = asObject(\n unwrapEngineResult(await packPreflight(sourcePath), 'asset.preflight'),\n 'asset.preflight',\n );\n if (String(preflight.revision) !== String(expectedRevision)) {\n engineFailure(\n {\n code: 'pack-source-revision-conflict',\n expected: expectedRevision,\n actual: preflight.revision,\n hint: 'inspect the current source revision, then retry the build with a new requestId',\n detail: { sourcePath, requestId },\n },\n capability,\n );\n }\n }\n return asObject(\n unwrapEngineResult(await packRebuild(sourcePath, mode), capability),\n capability,\n );\n }\n\n if (tools) {\n return asObject(await runTool(capability, args, capability), capability);\n }\n missing(capability);\n },\n });\n}\n\nexport function isEngineWorkspaceAdapter(input: unknown) {\n const value = workspaceDiagnosticRecord(input);\n const assets = workspaceDiagnosticRecord(value?.assets ?? value);\n const preview = workspaceDiagnosticRecord(value?.preview ?? value);\n return Boolean(\n value &&\n typeof (value.openProject ?? value.open) === 'function' &&\n typeof (value.closeProject ?? value.close) === 'function' &&\n typeof (\n assets.listAssets ??\n assets.list ??\n assets.assetList ??\n assets['asset.list']\n ) === 'function' &&\n typeof (\n preview.openPreview ??\n preview.openAsset ??\n preview.openScene ??\n preview.open\n ) === 'function',\n );\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -17,4 +17,4 @@ var shell_default = {
17
17
  export {
18
18
  shell_default
19
19
  };
20
- //# sourceMappingURL=chunk-ZGOGO7SS.mjs.map
20
+ //# sourceMappingURL=chunk-6J27SWMY.mjs.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  connectViewWorkspace
3
- } from "./chunk-U5J7OTEB.mjs";
3
+ } from "./chunk-FSSARTVM.mjs";
4
4
  import {
5
5
  workspaceDiagnosticRecord
6
- } from "./chunk-U5R6MVM4.mjs";
6
+ } from "./chunk-RFTLGEB5.mjs";
7
7
  import {
8
8
  VIEW_WORKSPACE_OPERATIONS
9
- } from "./chunk-E3Z7GLFU.mjs";
9
+ } from "./chunk-QJHQN6OD.mjs";
10
10
 
11
11
  // src/cli.ts
12
12
  import { randomUUID } from "node:crypto";
@@ -227,4 +227,4 @@ if (isDirectInvocation()) {
227
227
  export {
228
228
  runViewWorkspaceCli
229
229
  };
230
- //# sourceMappingURL=chunk-JK7K7RG3.mjs.map
230
+ //# sourceMappingURL=chunk-6VK7HB4X.mjs.map
@@ -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-HRKW766Y.mjs.map
42
+ //# sourceMappingURL=chunk-6WZZ7TIC.mjs.map
@@ -21,11 +21,11 @@ import {
21
21
  import {
22
22
  createWorkspaceObservation,
23
23
  createWorkspaceStateReader
24
- } from "./chunk-TXLD7JI5.mjs";
24
+ } from "./chunk-WJNASQF2.mjs";
25
25
  import {
26
26
  VIEW_WORKSPACE_TAB_ID,
27
27
  jsonUnchanged
28
- } from "./chunk-E3Z7GLFU.mjs";
28
+ } from "./chunk-QJHQN6OD.mjs";
29
29
 
30
30
  // packages/view-plugin-scene-tree/src/ui/mount.tsx
31
31
  import { createRoot } from "react-dom/client";
@@ -919,4 +919,4 @@ async function mountSceneTreePanel(props) {
919
919
  export {
920
920
  mountSceneTreePanel
921
921
  };
922
- //# sourceMappingURL=chunk-FICPCJKR.mjs.map
922
+ //# sourceMappingURL=chunk-7DFCIN3T.mjs.map