@forgeax/view 0.5.0-dev.13619.c20ebf66cef4 → 0.5.0-dev.13739.664093158f99
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.
- package/README.md +19 -5
- package/dist/build-revision.json +1 -1
- package/dist/modules/backend.mjs +33 -33
- package/dist/modules/browser.mjs +49 -49
- package/dist/modules/chunks/{chunk-OS7BK3FO.mjs → chunk-2CMCY54A.mjs} +2 -2
- package/dist/modules/chunks/{chunk-NHNPQ3ZS.mjs → chunk-2RUKPDIE.mjs} +4 -4
- package/dist/modules/chunks/{chunk-NHNPQ3ZS.mjs.map → chunk-2RUKPDIE.mjs.map} +1 -1
- package/dist/modules/chunks/{chunk-CYQ7BITZ.mjs → chunk-3FBX3P3H.mjs} +6 -6
- package/dist/modules/chunks/{chunk-VD4QU7KY.mjs → chunk-45WL24XN.mjs} +2 -2
- package/dist/modules/chunks/{chunk-FSSKCXPL.mjs → chunk-4FYKRL46.mjs} +3 -3
- package/dist/modules/chunks/{chunk-Y4SFATAM.mjs → chunk-4MJHVZMB.mjs} +6 -6
- package/dist/modules/chunks/{chunk-D3ISMGT6.mjs → chunk-5HVXQEO3.mjs} +7 -7
- package/dist/modules/chunks/{chunk-J7QRK3FU.mjs → chunk-66LM6NO6.mjs} +4 -4
- package/dist/modules/chunks/{chunk-RGM4S2BE.mjs → chunk-6C4OCCYB.mjs} +12 -12
- package/dist/modules/chunks/{chunk-RGM4S2BE.mjs.map → chunk-6C4OCCYB.mjs.map} +1 -1
- package/dist/modules/chunks/{chunk-QNSUBUZF.mjs → chunk-6J27SWMY.mjs} +1 -1
- package/dist/modules/chunks/{chunk-QNJL265P.mjs → chunk-6VK7HB4X.mjs} +4 -4
- package/dist/modules/chunks/{chunk-AZHCKPUL.mjs → chunk-6WZZ7TIC.mjs} +2 -2
- package/dist/modules/chunks/{chunk-A22PJUZM.mjs → chunk-7DFCIN3T.mjs} +3 -3
- package/dist/modules/chunks/{chunk-A22PJUZM.mjs.map → chunk-7DFCIN3T.mjs.map} +1 -1
- package/dist/modules/chunks/{chunk-CVIF6DYH.mjs → chunk-7MWZK7HS.mjs} +3 -3
- package/dist/modules/chunks/{chunk-7YWMB7HV.mjs → chunk-A7OGXJAV.mjs} +3 -3
- package/dist/modules/chunks/{chunk-KOBAWLZL.mjs → chunk-AUINYWZP.mjs} +2 -2
- package/dist/modules/chunks/{chunk-R6MT6F3T.mjs → chunk-B24VYGHV.mjs} +3 -3
- package/dist/modules/chunks/{chunk-ZKFH7EMU.mjs → chunk-BIUWJROZ.mjs} +3 -3
- package/dist/modules/chunks/{chunk-ZKFH7EMU.mjs.map → chunk-BIUWJROZ.mjs.map} +2 -2
- package/dist/modules/chunks/{chunk-M66NDY35.mjs → chunk-C2AMOM7H.mjs} +3 -3
- package/dist/modules/chunks/{chunk-EOW4JGVV.mjs → chunk-C3WVSJZF.mjs} +6 -6
- package/dist/modules/chunks/{chunk-TFBSEYKW.mjs → chunk-CAXCOZ7Y.mjs} +3 -3
- package/dist/modules/chunks/{chunk-P27F2TZN.mjs → chunk-CN6YN4HP.mjs} +10 -10
- package/dist/modules/chunks/chunk-CN6YN4HP.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-25PFC2DY.mjs → chunk-CXFQME65.mjs} +3 -3
- package/dist/modules/chunks/{chunk-VD3C4DYT.mjs → chunk-CYOLEAAY.mjs} +13 -13
- package/dist/modules/chunks/{chunk-VD3C4DYT.mjs.map → chunk-CYOLEAAY.mjs.map} +1 -1
- package/dist/modules/chunks/{chunk-P3ZW2T37.mjs → chunk-CYU3WWN6.mjs} +3 -3
- package/dist/modules/chunks/{chunk-SKZC6VTV.mjs → chunk-D2LZIQE2.mjs} +2 -2
- package/dist/modules/chunks/{chunk-QNUBIFAY.mjs → chunk-DC5JP46Y.mjs} +2 -2
- package/dist/modules/chunks/{chunk-7MQIGD6Q.mjs → chunk-DOU4MNMQ.mjs} +3 -3
- package/dist/modules/chunks/{chunk-JKDBKS7P.mjs → chunk-E4G4HDOC.mjs} +3 -3
- package/dist/modules/chunks/{chunk-XXJ32F5P.mjs → chunk-EZAJ66NW.mjs} +3 -3
- package/dist/modules/chunks/{chunk-5PZL6W3F.mjs → chunk-FIWL6TQS.mjs} +2 -2
- package/dist/modules/chunks/{chunk-K4C5WOTT.mjs → chunk-FSSARTVM.mjs} +3 -3
- package/dist/modules/chunks/{chunk-5HJ336VM.mjs → chunk-FXXPWAXM.mjs} +3 -3
- package/dist/modules/chunks/{chunk-43L37UYV.mjs → chunk-G2QCXN56.mjs} +6 -6
- package/dist/modules/chunks/{chunk-DJKXBCZH.mjs → chunk-GRDCA6LD.mjs} +8 -8
- package/dist/modules/chunks/{chunk-DJKXBCZH.mjs.map → chunk-GRDCA6LD.mjs.map} +1 -1
- package/dist/modules/chunks/{chunk-4ZI5DFBR.mjs → chunk-GUVUL6D2.mjs} +3 -3
- package/dist/modules/chunks/{chunk-MFEFV3YF.mjs → chunk-I32EONBF.mjs} +2 -2
- package/dist/modules/chunks/{chunk-DX4M6LZH.mjs → chunk-IGIELQZ2.mjs} +5 -5
- package/dist/modules/chunks/{chunk-U5LBMAG3.mjs → chunk-IMDR26Y3.mjs} +3 -3
- package/dist/modules/chunks/{chunk-MUBV2LNK.mjs → chunk-JVOHFCI4.mjs} +3 -3
- package/dist/modules/chunks/{chunk-CEB76QBE.mjs → chunk-KCM7ZCQ3.mjs} +5 -5
- package/dist/modules/chunks/chunk-KCM7ZCQ3.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-TPLT4PBX.mjs → chunk-KJTMDFFX.mjs} +4 -4
- package/dist/modules/chunks/{chunk-WC6NGMGI.mjs → chunk-KPLESRQY.mjs} +3 -3
- package/dist/modules/chunks/{chunk-ZW7LLDOL.mjs → chunk-KUOWDTI6.mjs} +2 -2
- package/dist/modules/chunks/{chunk-BJTFQQQR.mjs → chunk-L6IHUN7X.mjs} +2 -2
- package/dist/modules/chunks/chunk-L6IHUN7X.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-PHCUCHVL.mjs → chunk-LBQ6DFMP.mjs} +2 -2
- package/dist/modules/chunks/{chunk-DC3PU6SO.mjs → chunk-LVWHM3UN.mjs} +2 -2
- package/dist/modules/chunks/{chunk-JE4N575J.mjs → chunk-MDQMARAN.mjs} +6 -6
- package/dist/modules/chunks/{chunk-JE4N575J.mjs.map → chunk-MDQMARAN.mjs.map} +2 -2
- package/dist/modules/chunks/{chunk-NSPN5OQ5.mjs → chunk-MLXRIWJA.mjs} +2 -2
- package/dist/modules/chunks/{chunk-FVSDKOXR.mjs → chunk-N2SH3JGI.mjs} +3 -3
- package/dist/modules/chunks/{chunk-5WVRCLHN.mjs → chunk-N7NXZ6R3.mjs} +4 -4
- package/dist/modules/chunks/{chunk-5WVRCLHN.mjs.map → chunk-N7NXZ6R3.mjs.map} +2 -2
- package/dist/modules/chunks/{chunk-EW7VMNZA.mjs → chunk-O5QX6H3U.mjs} +5 -5
- package/dist/modules/chunks/{chunk-4RTL3LS3.mjs → chunk-PCQNUFDL.mjs} +7 -7
- package/dist/modules/chunks/chunk-PCQNUFDL.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-V4SOFUJI.mjs → chunk-Q7M7VUOZ.mjs} +6 -6
- package/dist/modules/chunks/{chunk-NZ4N7AVG.mjs → chunk-QB33CMEU.mjs} +2 -2
- package/dist/modules/chunks/{chunk-QYJZ3SOV.mjs → chunk-QJHQN6OD.mjs} +5 -5
- package/dist/modules/chunks/chunk-QJHQN6OD.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-OGFZB75B.mjs → chunk-QW2VT3XB.mjs} +2 -2
- package/dist/modules/chunks/{chunk-EQRDY5CQ.mjs → chunk-RFTLGEB5.mjs} +2 -2
- package/dist/modules/chunks/{chunk-CRPXFJ6K.mjs → chunk-RYYKMDNI.mjs} +3 -3
- package/dist/modules/chunks/{chunk-A7HXBQUG.mjs → chunk-SFB5BDTB.mjs} +2 -2
- package/dist/modules/chunks/{chunk-SSVRSFTX.mjs → chunk-SNICHQJP.mjs} +2 -2
- package/dist/modules/chunks/{chunk-KY2AWNDR.mjs → chunk-SPGFO2TA.mjs} +2 -2
- package/dist/modules/chunks/{chunk-XOZ5EMNY.mjs → chunk-TMPTVIAP.mjs} +2 -2
- package/dist/modules/chunks/{chunk-D3GX7HWI.mjs → chunk-UWJYROKS.mjs} +5 -5
- package/dist/modules/chunks/{chunk-AOD6XLJC.mjs → chunk-UZH2664E.mjs} +2 -2
- package/dist/modules/chunks/{chunk-ZRG7LDCA.mjs → chunk-VC4OEPDH.mjs} +2 -2
- package/dist/modules/chunks/{chunk-L24HPIQP.mjs → chunk-VKWEA6NG.mjs} +27 -27
- package/dist/modules/chunks/{chunk-5SHQXSSM.mjs → chunk-VSJOW7J4.mjs} +5 -5
- package/dist/modules/chunks/{chunk-5N5FDO5Y.mjs → chunk-WFM434WJ.mjs} +2 -2
- package/dist/modules/chunks/{chunk-QQP7ZGQD.mjs → chunk-WJNASQF2.mjs} +2 -2
- package/dist/modules/chunks/{chunk-FSYQ3LBQ.mjs → chunk-XUNDH3E7.mjs} +2 -2
- package/dist/modules/chunks/{chunk-LOVO3P2Q.mjs → chunk-YDARD4EP.mjs} +2 -2
- package/dist/modules/chunks/{chunk-LCVL3V5U.mjs → chunk-YU3HRQX7.mjs} +4 -4
- package/dist/modules/chunks/{chunk-M7XSCLYV.mjs → chunk-ZRE7BDDB.mjs} +15 -4
- package/dist/modules/chunks/chunk-ZRE7BDDB.mjs.map +7 -0
- package/dist/modules/cli-contributions.mjs +14 -14
- package/dist/modules/cli.mjs +5 -5
- package/dist/modules/command-executor.mjs +3 -3
- package/dist/modules/embedded.mjs +28 -28
- package/dist/modules/extension-bridge.mjs +4 -4
- package/dist/modules/frontend-root.mjs +46 -46
- package/dist/modules/index.mjs +64 -64
- package/dist/modules/pages/scene.mjs +5 -5
- package/dist/modules/plugin.mjs +34 -34
- package/dist/modules/plugins/asset/frontend.mjs +10 -10
- package/dist/modules/plugins/asset/identity.mjs +9 -9
- package/dist/modules/plugins/asset/ui.mjs +3 -3
- package/dist/modules/plugins/content-browser/frontend.mjs +3 -3
- package/dist/modules/plugins/content-browser/identity.mjs +2 -2
- package/dist/modules/plugins/content-browser/ui.mjs +3 -3
- package/dist/modules/plugins/display/backend.mjs +3 -3
- package/dist/modules/plugins/display/frontend.mjs +5 -5
- package/dist/modules/plugins/display/identity.mjs +2 -2
- package/dist/modules/plugins/display/ui.mjs +3 -3
- package/dist/modules/plugins/inspector/frontend.mjs +3 -3
- package/dist/modules/plugins/inspector/identity.mjs +2 -2
- package/dist/modules/plugins/inspector/ui.mjs +3 -3
- package/dist/modules/plugins/material/frontend.mjs +10 -10
- package/dist/modules/plugins/material/identity.mjs +9 -9
- package/dist/modules/plugins/material/ui.mjs +10 -10
- package/dist/modules/plugins/mesh/frontend.mjs +10 -10
- package/dist/modules/plugins/mesh/identity.mjs +9 -9
- package/dist/modules/plugins/mesh/ui.mjs +10 -10
- package/dist/modules/plugins/plugins/api.mjs +4 -4
- package/dist/modules/plugins/plugins/backend.mjs +7 -7
- package/dist/modules/plugins/plugins/cli.mjs +5 -5
- package/dist/modules/plugins/plugins/frontend.mjs +3 -3
- package/dist/modules/plugins/plugins/identity.mjs +2 -2
- package/dist/modules/plugins/plugins/runtime.mjs +6 -6
- package/dist/modules/plugins/plugins/ui/panel.mjs +3 -3
- package/dist/modules/plugins/plugins/ui.mjs +4 -4
- package/dist/modules/plugins/scene/frontend.mjs +5 -5
- package/dist/modules/plugins/scene/identity.mjs +2 -2
- package/dist/modules/plugins/scene-tree/frontend.mjs +3 -3
- package/dist/modules/plugins/scene-tree/identity.mjs +2 -2
- package/dist/modules/plugins/scene-tree/ui.mjs +3 -3
- package/dist/modules/plugins/texture/frontend.mjs +10 -10
- package/dist/modules/plugins/texture/identity.mjs +9 -9
- package/dist/modules/plugins/texture/ui.mjs +10 -10
- package/dist/modules/plugins/viewport/frontend.mjs +12 -12
- package/dist/modules/plugins/viewport/identity.mjs +2 -2
- package/dist/modules/plugins/viewport/presentation.mjs +4 -4
- package/dist/modules/plugins/viewport/schema.mjs +2 -2
- package/dist/modules/plugins/viewport/workspace-shell.mjs +9 -9
- package/dist/modules/product.mjs +34 -34
- package/dist/modules/shell/frontend.mjs +1 -1
- package/dist/modules/viewer/catalog/backend.mjs +30 -30
- package/dist/modules/viewer/catalog/frontend.mjs +42 -42
- package/dist/modules/viewer/catalog/shared.mjs +20 -20
- package/dist/modules/viewer/catalog.mjs +50 -50
- package/dist/modules/viewer/cli.mjs +10 -10
- package/dist/modules/viewer-host/frontend.mjs +48 -48
- package/dist/modules/viewer-host/page-registry.mjs +6 -6
- package/dist/modules/viewer-host.mjs +6 -6
- package/dist/modules/viewer.mjs +50 -50
- package/dist/modules/workspace/api.mjs +1 -1
- package/dist/modules/workspace/backend.mjs +10 -10
- package/dist/modules/workspace/broker.mjs +9 -9
- package/dist/modules/workspace/cli.mjs +2 -2
- package/dist/modules/workspace/client.mjs +3 -3
- package/dist/modules/workspace/command-error.mjs +2 -2
- package/dist/modules/workspace/contract.mjs +1 -1
- package/dist/modules/workspace/engine-adapter.mjs +3 -3
- package/dist/modules/workspace/extension-bridge.mjs +4 -4
- package/dist/modules/workspace/frontend-plugin.mjs +8 -8
- package/dist/modules/workspace/frontend.mjs +9 -9
- package/dist/modules/workspace/page-title.mjs +3 -3
- package/dist/modules/workspace/presentation.mjs +4 -4
- package/dist/modules/workspace/preview-surface.mjs +7 -7
- package/dist/modules/workspace/project-session.mjs +2 -2
- package/dist/modules/workspace/render-resize-sync.mjs +2 -2
- package/dist/modules/workspace/resident.mjs +4 -4
- package/dist/modules/workspace/resource-open.mjs +5 -5
- package/dist/modules/workspace/resource-page.mjs +8 -8
- package/dist/modules/workspace/tool-runtime.mjs +3 -3
- package/dist/modules/workspace/view-trace.mjs +3 -3
- package/dist/modules/workspace/workspace-recovery.mjs +4 -4
- package/dist/modules/workspace/workspace-state.mjs +2 -2
- package/dist/modules/workspace-frontend.mjs +8 -8
- package/dist/viewer/assets/{embedded-BZSPh0if.js → embedded-DRb0MUIg.js} +2 -2
- package/dist/viewer/assets/{embedded-BZSPh0if.js.map → embedded-DRb0MUIg.js.map} +1 -1
- package/dist/viewer/assets/{main-CmJEE-8D.js → main-CR_6HeJw.js} +5 -5
- package/dist/viewer/assets/main-CR_6HeJw.js.map +1 -0
- package/dist/viewer/assets/{panels-lazy-DqCwhGd9.js → panels-lazy-DdciEvKU.js} +19 -19
- package/dist/viewer/assets/{panels-lazy-DqCwhGd9.js.map → panels-lazy-DdciEvKU.js.map} +1 -1
- package/dist/viewer/assets/{panels-ui-Cm3As_jE.js → panels-ui-C7F0y3k-.js} +5 -5
- package/dist/viewer/assets/panels-ui-C7F0y3k-.js.map +1 -0
- package/dist/viewer/assets/{wgpu_wasm--oeqTwVY.js → wgpu_wasm-cNR5izZM.js} +126 -0
- package/dist/viewer/assets/{wgpu_wasm_bg-WoZ1YI1I.wasm → wgpu_wasm_bg-Dps0jNcQ.wasm} +0 -0
- package/dist/viewer/index.html +3 -3
- package/dist/viewer/panels.js +1 -1
- package/package.json +2 -2
- package/skills/forgeax-view-cli/SKILL.md +7 -0
- package/dist/modules/chunks/chunk-4RTL3LS3.mjs.map +0 -7
- package/dist/modules/chunks/chunk-BJTFQQQR.mjs.map +0 -7
- package/dist/modules/chunks/chunk-CEB76QBE.mjs.map +0 -7
- package/dist/modules/chunks/chunk-M7XSCLYV.mjs.map +0 -7
- package/dist/modules/chunks/chunk-P27F2TZN.mjs.map +0 -7
- package/dist/modules/chunks/chunk-QYJZ3SOV.mjs.map +0 -7
- package/dist/viewer/assets/main-CmJEE-8D.js.map +0 -1
- package/dist/viewer/assets/panels-ui-Cm3As_jE.js.map +0 -1
- /package/dist/modules/chunks/{chunk-OS7BK3FO.mjs.map → chunk-2CMCY54A.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-CYQ7BITZ.mjs.map → chunk-3FBX3P3H.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-VD4QU7KY.mjs.map → chunk-45WL24XN.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-FSSKCXPL.mjs.map → chunk-4FYKRL46.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-Y4SFATAM.mjs.map → chunk-4MJHVZMB.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-D3ISMGT6.mjs.map → chunk-5HVXQEO3.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-J7QRK3FU.mjs.map → chunk-66LM6NO6.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-QNSUBUZF.mjs.map → chunk-6J27SWMY.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-QNJL265P.mjs.map → chunk-6VK7HB4X.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-AZHCKPUL.mjs.map → chunk-6WZZ7TIC.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-CVIF6DYH.mjs.map → chunk-7MWZK7HS.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-7YWMB7HV.mjs.map → chunk-A7OGXJAV.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-KOBAWLZL.mjs.map → chunk-AUINYWZP.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-R6MT6F3T.mjs.map → chunk-B24VYGHV.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-M66NDY35.mjs.map → chunk-C2AMOM7H.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-EOW4JGVV.mjs.map → chunk-C3WVSJZF.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-TFBSEYKW.mjs.map → chunk-CAXCOZ7Y.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-25PFC2DY.mjs.map → chunk-CXFQME65.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-P3ZW2T37.mjs.map → chunk-CYU3WWN6.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-SKZC6VTV.mjs.map → chunk-D2LZIQE2.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-QNUBIFAY.mjs.map → chunk-DC5JP46Y.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-7MQIGD6Q.mjs.map → chunk-DOU4MNMQ.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-JKDBKS7P.mjs.map → chunk-E4G4HDOC.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-XXJ32F5P.mjs.map → chunk-EZAJ66NW.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-5PZL6W3F.mjs.map → chunk-FIWL6TQS.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-K4C5WOTT.mjs.map → chunk-FSSARTVM.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-5HJ336VM.mjs.map → chunk-FXXPWAXM.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-43L37UYV.mjs.map → chunk-G2QCXN56.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-4ZI5DFBR.mjs.map → chunk-GUVUL6D2.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-MFEFV3YF.mjs.map → chunk-I32EONBF.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-DX4M6LZH.mjs.map → chunk-IGIELQZ2.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-U5LBMAG3.mjs.map → chunk-IMDR26Y3.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-MUBV2LNK.mjs.map → chunk-JVOHFCI4.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-TPLT4PBX.mjs.map → chunk-KJTMDFFX.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-WC6NGMGI.mjs.map → chunk-KPLESRQY.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-ZW7LLDOL.mjs.map → chunk-KUOWDTI6.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-PHCUCHVL.mjs.map → chunk-LBQ6DFMP.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-DC3PU6SO.mjs.map → chunk-LVWHM3UN.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-NSPN5OQ5.mjs.map → chunk-MLXRIWJA.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-FVSDKOXR.mjs.map → chunk-N2SH3JGI.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-EW7VMNZA.mjs.map → chunk-O5QX6H3U.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-V4SOFUJI.mjs.map → chunk-Q7M7VUOZ.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-NZ4N7AVG.mjs.map → chunk-QB33CMEU.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-OGFZB75B.mjs.map → chunk-QW2VT3XB.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-EQRDY5CQ.mjs.map → chunk-RFTLGEB5.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-CRPXFJ6K.mjs.map → chunk-RYYKMDNI.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-A7HXBQUG.mjs.map → chunk-SFB5BDTB.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-SSVRSFTX.mjs.map → chunk-SNICHQJP.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-KY2AWNDR.mjs.map → chunk-SPGFO2TA.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-XOZ5EMNY.mjs.map → chunk-TMPTVIAP.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-D3GX7HWI.mjs.map → chunk-UWJYROKS.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-AOD6XLJC.mjs.map → chunk-UZH2664E.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-ZRG7LDCA.mjs.map → chunk-VC4OEPDH.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-L24HPIQP.mjs.map → chunk-VKWEA6NG.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-5SHQXSSM.mjs.map → chunk-VSJOW7J4.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-5N5FDO5Y.mjs.map → chunk-WFM434WJ.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-QQP7ZGQD.mjs.map → chunk-WJNASQF2.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-FSYQ3LBQ.mjs.map → chunk-XUNDH3E7.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-LOVO3P2Q.mjs.map → chunk-YDARD4EP.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-LCVL3V5U.mjs.map → chunk-YU3HRQX7.mjs.map} +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
VIEW_WORKSPACE_CORE_OPERATION_DESCRIPTIONS
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-L6IHUN7X.mjs";
|
|
4
4
|
|
|
5
5
|
// packages/view-workspace-core/src/cli.ts
|
|
6
6
|
var workspaceCoreCliContributions = Object.freeze(
|
|
7
7
|
VIEW_WORKSPACE_CORE_OPERATION_DESCRIPTIONS.map((description) => ({
|
|
8
|
-
id: `
|
|
8
|
+
id: `view.workspace.${description.id}`,
|
|
9
9
|
path: ["view", "workspace", ...description.path],
|
|
10
10
|
summary: description.summary,
|
|
11
11
|
operation: description.id
|
|
@@ -15,4 +15,4 @@ var workspaceCoreCliContributions = Object.freeze(
|
|
|
15
15
|
export {
|
|
16
16
|
workspaceCoreCliContributions
|
|
17
17
|
};
|
|
18
|
-
//# sourceMappingURL=chunk-
|
|
18
|
+
//# sourceMappingURL=chunk-BIUWJROZ.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/view-workspace-core/src/cli.ts"],
|
|
4
|
-
"sourcesContent": ["import { VIEW_WORKSPACE_CORE_OPERATION_DESCRIPTIONS } from './api.ts';\n\nexport const workspaceCoreCliContributions = Object.freeze(\n VIEW_WORKSPACE_CORE_OPERATION_DESCRIPTIONS.map((description) => ({\n id: `
|
|
5
|
-
"mappings": ";;;;;AAEO,IAAM,gCAAgC,OAAO;AAAA,EAClD,2CAA2C,IAAI,CAAC,iBAAiB;AAAA,IAC/D,IAAI,
|
|
4
|
+
"sourcesContent": ["import { VIEW_WORKSPACE_CORE_OPERATION_DESCRIPTIONS } from './api.ts';\n\nexport const workspaceCoreCliContributions = Object.freeze(\n VIEW_WORKSPACE_CORE_OPERATION_DESCRIPTIONS.map((description) => ({\n id: `view.workspace.${description.id}`,\n path: ['view', 'workspace', ...description.path],\n summary: description.summary,\n operation: description.id,\n })),\n);\n"],
|
|
5
|
+
"mappings": ";;;;;AAEO,IAAM,gCAAgC,OAAO;AAAA,EAClD,2CAA2C,IAAI,CAAC,iBAAiB;AAAA,IAC/D,IAAI,kBAAkB,YAAY,EAAE;AAAA,IACpC,MAAM,CAAC,QAAQ,aAAa,GAAG,YAAY,IAAI;AAAA,IAC/C,SAAS,YAAY;AAAA,IACrB,WAAW,YAAY;AAAA,EACzB,EAAE;AACJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
RESOURCE_PREVIEW_LAYOUT,
|
|
3
3
|
RESOURCE_PROPERTIES_LAYOUT
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-KPLESRQY.mjs";
|
|
5
5
|
import {
|
|
6
6
|
VIEW_PAGE_TYPES
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-QJHQN6OD.mjs";
|
|
8
8
|
import {
|
|
9
9
|
__export
|
|
10
10
|
} from "./chunk-FLGC65SR.mjs";
|
|
@@ -74,4 +74,4 @@ export {
|
|
|
74
74
|
PROPERTIES_TITLE_I18N_KEY,
|
|
75
75
|
identity_exports
|
|
76
76
|
};
|
|
77
|
-
//# sourceMappingURL=chunk-
|
|
77
|
+
//# sourceMappingURL=chunk-C2AMOM7H.mjs.map
|
|
@@ -16,20 +16,20 @@ import {
|
|
|
16
16
|
import {
|
|
17
17
|
PAGE_TYPE,
|
|
18
18
|
RESOURCE_KINDS
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-B24VYGHV.mjs";
|
|
20
20
|
import {
|
|
21
21
|
bindWorkspacePreviewSurface
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-CXFQME65.mjs";
|
|
23
23
|
import {
|
|
24
24
|
selectWorkspaceResourcePreview,
|
|
25
25
|
selectWorkspaceResourceSubject
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-E4G4HDOC.mjs";
|
|
27
27
|
import {
|
|
28
28
|
createWorkspaceStateReader
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-WJNASQF2.mjs";
|
|
30
30
|
import {
|
|
31
31
|
VIEW_WORKSPACE_TAB_ID
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-QJHQN6OD.mjs";
|
|
33
33
|
import {
|
|
34
34
|
createWorkspaceId
|
|
35
35
|
} from "./chunk-4XEXLHX4.mjs";
|
|
@@ -410,4 +410,4 @@ export {
|
|
|
410
410
|
mountMaterialPropertiesPanel,
|
|
411
411
|
mountMaterialPreviewPanel
|
|
412
412
|
};
|
|
413
|
-
//# sourceMappingURL=chunk-
|
|
413
|
+
//# sourceMappingURL=chunk-C3WVSJZF.mjs.map
|
|
@@ -14,10 +14,10 @@ import {
|
|
|
14
14
|
} from "./chunk-ZYTHV373.mjs";
|
|
15
15
|
import {
|
|
16
16
|
createWorkspaceStateReader
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-WJNASQF2.mjs";
|
|
18
18
|
import {
|
|
19
19
|
VIEW_WORKSPACE_TAB_ID
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-QJHQN6OD.mjs";
|
|
21
21
|
|
|
22
22
|
// packages/view-plugin-asset/src/ui/mount.tsx
|
|
23
23
|
import { createRoot } from "react-dom/client";
|
|
@@ -118,4 +118,4 @@ async function mountAssetPropertiesPanel(props) {
|
|
|
118
118
|
export {
|
|
119
119
|
mountAssetPropertiesPanel
|
|
120
120
|
};
|
|
121
|
-
//# sourceMappingURL=chunk-
|
|
121
|
+
//# sourceMappingURL=chunk-CAXCOZ7Y.mjs.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runWorkspaceToolApi
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZRE7BDDB.mjs";
|
|
4
4
|
import {
|
|
5
5
|
isWorkspaceTargetRecoveryCode,
|
|
6
6
|
resolveWorkspaceFailure,
|
|
7
7
|
resolveWorkspaceReopenRoot
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-KJTMDFFX.mjs";
|
|
9
9
|
import {
|
|
10
10
|
editorSceneTargetIds,
|
|
11
11
|
isEditorWorkspaceAsset,
|
|
@@ -13,10 +13,10 @@ import {
|
|
|
13
13
|
logResourceOpen,
|
|
14
14
|
selectEditorWorkspacePreview,
|
|
15
15
|
summarizeResourceAsset
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-E4G4HDOC.mjs";
|
|
17
17
|
import {
|
|
18
18
|
workspaceDiagnosticRecord
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-RFTLGEB5.mjs";
|
|
20
20
|
import {
|
|
21
21
|
VIEW_DISPLAY_TAB_ID,
|
|
22
22
|
VIEW_FILE_GET_SERVICE,
|
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
workspaceCapabilities,
|
|
39
39
|
workspaceError,
|
|
40
40
|
workspaceUiFingerprint
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-QJHQN6OD.mjs";
|
|
42
42
|
import {
|
|
43
43
|
createWorkspaceId
|
|
44
44
|
} from "./chunk-4XEXLHX4.mjs";
|
|
@@ -161,7 +161,7 @@ async function readWorkspaceFilePreview(workspace, payload = {}) {
|
|
|
161
161
|
// packages/view-workspace-core/src/broker.ts
|
|
162
162
|
var ENGINE_SOURCE = "engine-workspace";
|
|
163
163
|
var UI_OPERATIONS = Object.freeze({
|
|
164
|
-
"
|
|
164
|
+
"summary.get": (workspace) => workspace.summary(),
|
|
165
165
|
"pages.list": (workspace) => workspace.pages(),
|
|
166
166
|
"pack.reveal": (workspace, args, context) => workspace.revealPack({
|
|
167
167
|
projectId: requireWorkspaceString(args.projectId, "projectId"),
|
|
@@ -493,7 +493,7 @@ var ViewWorkspaceBroker = class _ViewWorkspaceBroker {
|
|
|
493
493
|
this.previewProjection.cameraVersion = result?.version;
|
|
494
494
|
this.previewProjection.interaction = result?.interaction ?? null;
|
|
495
495
|
}
|
|
496
|
-
if (!["scene
|
|
496
|
+
if (!["scene.tree.get", "entity.inspect", "workspace.get", "preview.capture"].includes(operation)) this.changed();
|
|
497
497
|
if (["project.open", "project.close", "project.reopen", "asset.open", "preview.close", "camera.abort", "play.start", "play.ready", "play.stop"].includes(operation)) {
|
|
498
498
|
if (operation === "project.open" || operation === "project.reopen") this.workspaceTargetLost = false;
|
|
499
499
|
return this.snapshot();
|
|
@@ -577,7 +577,7 @@ var ViewWorkspaceBroker = class _ViewWorkspaceBroker {
|
|
|
577
577
|
return this.invoke("asset.inspect", args, context);
|
|
578
578
|
}
|
|
579
579
|
rebuildAssetSource(args, { mode = "rebuild", ...context } = {}) {
|
|
580
|
-
return this.invoke(`asset
|
|
580
|
+
return this.invoke(`asset.source.${mode}`, args, context);
|
|
581
581
|
}
|
|
582
582
|
bindOpenedAsset(result, guid) {
|
|
583
583
|
this.targetBinding = "editor";
|
|
@@ -679,7 +679,7 @@ var ViewWorkspaceBroker = class _ViewWorkspaceBroker {
|
|
|
679
679
|
return this.invoke("camera.abort", args, context);
|
|
680
680
|
}
|
|
681
681
|
getSceneTree(args, context) {
|
|
682
|
-
return this.invoke("scene
|
|
682
|
+
return this.invoke("scene.tree.get", args, context);
|
|
683
683
|
}
|
|
684
684
|
async revokeConnection(connectionId) {
|
|
685
685
|
if (typeof connectionId !== "string") return;
|
|
@@ -928,4 +928,4 @@ var ViewWorkspaceBroker = class _ViewWorkspaceBroker {
|
|
|
928
928
|
export {
|
|
929
929
|
ViewWorkspaceBroker
|
|
930
930
|
};
|
|
931
|
-
//# sourceMappingURL=chunk-
|
|
931
|
+
//# sourceMappingURL=chunk-CN6YN4HP.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../packages/view-workspace-core/src/broker.ts", "../../../packages/view-workspace-core/src/file-preview.ts"],
|
|
4
|
+
"sourcesContent": ["import type { EngineWorkspaceRuntime, EngineWorkspacePreview, EngineWorkspacePlay, EngineWorkspaceProjectHandle, EngineWorkspaceCameraResult } from '@forgeax/engine/app';\nimport type { ToolApi, ToolCallerIdentity } from '@forgeax/engine-tool-runtime';\nimport type { WorkspaceAsset, WorkspaceInspection, WorkspaceOpenRequest, WorkspaceSceneSelection, WorkspaceState, WorkspaceSummary, WorkspacePages, WorkspacePackReveal, WorkspacePreview, WorkspaceRequest, WorkspaceResourceOpen, WorkspaceTab } from './contract.ts';\nimport type { HostCallerIdentity, HostTransportServer } from '@forgeax/engine-host/transport';\nimport { workspaceDiagnosticRecord } from './command-error.ts';\nimport { randomUUID } from 'node:crypto';\nimport { runWorkspaceToolApi } from './tool-runtime.ts';\nimport {\n VIEW_DISPLAY_TAB_ID, VIEW_WORKSPACE_TAB_ID, VIEW_WORKSPACE_API_VERSION,\n VIEW_FILE_GET_SERVICE, VIEW_PACK_SOURCES_SERVICE, VIEW_PACK_REVEAL_TOPIC, VIEW_PACK_REVEAL_ACK_SERVICE, VIEW_WORKSPACE_SERVICES, VIEW_WORKSPACE_STATE_TOPIC, VIEW_WORKSPACE_OPERATIONS,\n assertWorkspaceRequest, cloneWorkspaceValue, requireWorkspaceString,\n serializeWorkspaceState, serializeWorkspaceAsset, serializeWorkspaceInspection,\n serializeWorkspaceOpenRequest, workspaceCapabilities, workspaceError,\n workspaceUiFingerprint,\n} from './contract.ts';\nimport { createWorkspaceId } from './id.ts';\nimport {\n editorSceneTargetIds,\n isEditorWorkspaceAsset,\n isTypePreviewAsset,\n logResourceOpen,\n selectEditorWorkspacePreview,\n summarizeResourceAsset,\n} from './resource-open.ts';\nimport { readWorkspaceFilePreview } from './file-preview.ts';\nimport {\n isWorkspaceTargetRecoveryCode,\n resolveWorkspaceFailure,\n resolveWorkspaceReopenRoot,\n} from './workspace-recovery.ts';\n\nexport type WorkspaceAuthorization = (input: { clientId: string; operation: string; request: Pick<WorkspaceRequest, 'operation' | 'args' | 'clientId'> & Partial<WorkspaceRequest>; caller?: ToolCallerIdentity; signal?: AbortSignal }) => boolean | Promise<boolean>;\nexport type WorkspaceCallContext = { signal?: AbortSignal; caller?: ToolCallerIdentity; clientId?: string; token?: string; requestId?: string };\nexport type PackSourceListing = { sources: readonly { sourcePath: string; revision?: string; packageId?: string; outputs: readonly { guid: string; kind: string; sourceKey?: string }[]; diagnostic?: { code: string; hint: string } }[]; hasMore: boolean };\nexport type BrokerOptions = { engine?: EngineWorkspaceRuntime; projectIntent?: () => string | undefined; engineForCaller?: (caller?: ToolCallerIdentity, targetId?: string) => EngineWorkspaceRuntime | undefined; toolApi?: ToolApi; display?: (caller?: ToolCallerIdentity) => { state?: string; occupancy?: Pick<WorkspaceTab, 'run' | 'target' | 'targetId'> | null } | undefined; accessToken?: string; authorize?: WorkspaceAuthorization; packSources?: (projectRoot: string) => Promise<PackSourceListing> };\ntype Args = Record<string, unknown>;\ntype WorkspaceDomainResult = Partial<EngineWorkspaceCameraResult> & { assets?: WorkspaceAsset[]; inspection?: WorkspaceInspection; preview?: WorkspacePreview; asset?: WorkspaceAsset; target?: WorkspacePreview['target']; entityId?: string | null };\n\nconst ENGINE_SOURCE = 'engine-workspace';\nconst UI_OPERATIONS = Object.freeze<Record<string, (workspace: ViewWorkspaceBroker, args: Args, context: WorkspaceCallContext) => unknown>>({\n 'summary.get': (workspace) => workspace.summary(),\n 'pages.list': (workspace) => workspace.pages(),\n 'pack.reveal': (workspace, args, context) => workspace.revealPack({\n projectId: requireWorkspaceString(args.projectId, 'projectId'),\n sourcePath: requireWorkspaceString(args.sourcePath, 'sourcePath'),\n revision: requireWorkspaceString(args.revision, 'revision'),\n ...(args.packageId === undefined ? {} : { packageId: requireWorkspaceString(args.packageId, 'packageId') }),\n ...(args.connectionId === undefined ? {} : { connectionId: requireWorkspaceString(args.connectionId, 'connectionId') }),\n }, context.signal),\n 'target.select': (workspace, args) => workspace.selectTarget(args),\n 'tabs.get': (workspace) => workspace.snapshot(),\n 'tabs.select': (workspace, args) => workspace.selectTab(args),\n 'scene.select': (workspace, args, context) => workspace.selectSceneEntity(args, context),\n 'scene.pick': (workspace, args, context) => workspace.pickSceneEntity(args, context),\n 'scene.clear': (workspace, args, context) => workspace.clearSceneSelection(args, context),\n});\nconst PAGE_OPERATIONS = new Set([\n 'tabs.get', 'tabs.select', 'target.select', 'scene.select', 'scene.pick', 'scene.clear',\n 'asset.open', 'preview.close', 'play.start', 'play.ready', 'play.stop',\n]);\n\n/** View bindings and display snapshots. Engine owns all project and target resources. */\nexport class ViewWorkspaceBroker {\n declare readonly engine: EngineWorkspaceRuntime | undefined;\n declare readonly engineForCaller: BrokerOptions['engineForCaller'];\n declare readonly projectIntent: BrokerOptions['projectIntent'];\n declare readonly caller: ToolCallerIdentity | undefined;\n declare readonly toolApi: ToolApi | undefined;\n declare readonly display: NonNullable<BrokerOptions['display']>;\n declare readonly accessToken: string;\n declare readonly authorize: WorkspaceAuthorization | undefined;\n declare readonly packSources: BrokerOptions['packSources'];\n declare selectedTabId: string;\n declare targetBinding: 'editor' | 'play';\n declare editorTargetId: string | undefined;\n declare previewTargetId: string | undefined;\n declare playOwner: EngineWorkspacePlay | undefined;\n declare projectOwner: EngineWorkspaceProjectHandle | undefined;\n declare previewOwner: EngineWorkspacePreview | EngineWorkspacePlay | undefined;\n declare revision: number;\n declare listeners: Set<(state: WorkspaceState) => void>;\n declare assets: WorkspaceAsset[] | null;\n declare inspection: WorkspaceInspection | null;\n declare openRequest: WorkspaceOpenRequest | null;\n declare openRequestSequence: number;\n declare resourceOpens: Map<string, WorkspaceResourceOpen>;\n declare sceneSelection: WorkspaceSceneSelection | null;\n declare selectionAbort: AbortController | undefined;\n declare previewProjection: (WorkspacePreview & Pick<EngineWorkspacePreview, 'presentation'>) | null;\n declare workspaceTargetLost: boolean;\n declare catalogEpoch: number;\n declare disposing: boolean;\n declare publishFingerprint: string;\n declare readonly pageSessions: Map<string, { broker: ViewWorkspaceBroker; unsubscribe: () => void }>;\n declare transport?: HostTransportServer;\n declare readonly pendingReveals: Map<string, { connectionId: string; projectId: string; sourcePath: string; revision: string; settle: (value: unknown) => void }>;\n constructor({ engine, engineForCaller, projectIntent, toolApi, display = () => undefined, accessToken = randomUUID(), authorize, packSources }: BrokerOptions = {}, caller?: ToolCallerIdentity) {\n this.engine = engine;\n this.engineForCaller = engineForCaller;\n this.projectIntent = projectIntent;\n this.caller = caller;\n this.toolApi = toolApi;\n this.display = display;\n this.accessToken = accessToken;\n this.authorize = authorize;\n this.packSources = packSources;\n this.selectedTabId = VIEW_WORKSPACE_TAB_ID;\n this.targetBinding = 'editor';\n this.editorTargetId = undefined;\n this.playOwner = undefined;\n this.revision = 0;\n this.listeners = new Set<(state: WorkspaceState) => void>();\n this.assets = null;\n this.inspection = null;\n this.openRequest = null;\n this.openRequestSequence = 0;\n this.resourceOpens = new Map();\n this.sceneSelection = null;\n this.selectionAbort?.abort();\n this.previewProjection = null;\n this.projectOwner = undefined;\n this.previewOwner = undefined;\n this.workspaceTargetLost = false;\n this.catalogEpoch = -1;\n this.disposing = false;\n this.publishFingerprint = '';\n this.pageSessions = new Map();\n this.pendingReveals = new Map();\n }\n\n get project() { return this.engine?.project?.project ?? null; }\n get projectTarget() { return this.engine?.project?.target ?? null; }\n get preview() { this.syncBindings(); return this.previewProjection; }\n\n previews() { return this.engine?.previews ?? (this.engine?.preview ? [this.engine.preview] : []); }\n classifiedPreviews() {\n return this.previews().map((preview) => ({\n target: preview.target,\n asset: this.hydrateAsset(preview.asset),\n }));\n }\n editorPreview() {\n const live = this.previews();\n const selected = selectEditorWorkspacePreview(this.classifiedPreviews(), this.editorTargetId);\n if (!selected) return undefined;\n return live.find((preview) => String(preview.target.targetId) === String(selected.target.targetId));\n }\n boundTarget() {\n if (this.targetBinding === 'play') {\n const play = this.engine?.play;\n return play?.phase === 'running' ? play : undefined;\n }\n return this.previews().find(preview => preview.target.targetId === this.previewTargetId) ?? this.editorPreview();\n }\n hydrateAsset(asset: WorkspaceAsset | null | undefined) {\n if (!asset?.guid) return asset ?? null;\n if (asset.kind) return asset;\n const catalog = Array.isArray(this.assets)\n ? this.assets.find((entry) => entry.guid === asset.guid)\n : undefined;\n if (!catalog?.kind) return asset;\n return { ...asset, kind: catalog.kind, name: asset.name ?? catalog.name };\n }\n selectTarget({ targetId }: Args = {}) {\n if (targetId === this.engine?.play?.target.targetId) this.targetBinding = 'play';\n else {\n const preview = this.previews().find((entry) => entry.target.targetId === targetId);\n if (!preview) throw workspaceError('view-workspace-target-mismatch', 'An existing preview or Play target', 'Refresh tabs.get.');\n this.targetBinding = 'editor';\n this.previewTargetId = targetId as string;\n if (isEditorWorkspaceAsset(this.hydrateAsset(preview.asset))) this.editorTargetId = String(targetId);\n }\n this.changed();\n return this.snapshot();\n }\n syncBindings() {\n if (this.playOwner !== this.engine?.play) {\n this.playOwner = this.engine?.play;\n this.targetBinding = this.playOwner ? 'play' : 'editor';\n if (!this.playOwner) this.previewTargetId = this.editorPreview()?.target.targetId;\n }\n if (this.projectOwner !== this.engine?.project) {\n this.projectOwner = this.engine?.project;\n this.assets = null;\n this.inspection = null;\n this.openRequest = null;\n this.openRequestSequence = 0;\n this.resourceOpens = new Map();\n this.editorTargetId = undefined;\n this.sceneSelection = null;\n this.selectionAbort?.abort();\n }\n if (this.previewOwner !== this.boundTarget()) {\n this.previewOwner = this.boundTarget();\n this.sceneSelection = null;\n this.selectionAbort?.abort();\n this.previewProjection = this.previewOwner ? {\n target: this.previewOwner.target, asset: this.previewOwner.asset,\n presentation: this.previewOwner.presentation,\n assetBinding: this.previewOwner.assetBinding,\n } : null;\n }\n }\n\n summary(): WorkspaceSummary {\n const project = this.project;\n const previews = this.previews();\n const projectTarget = this.projectTarget && this.engine?.preview?.target.targetId === this.projectTarget.targetId\n ? this.engine.preview.target : this.projectTarget;\n const active = [\n ...(projectTarget ? [{ target: projectTarget, role: 'project' as const }] : []),\n ...(this.engine?.play ? [{ target: this.engine.play.target, role: 'play' as const }] : []),\n ];\n const targets = [...active, ...previews.slice(0, Math.max(0, 16 - active.length))\n .map(preview => ({ target: preview.target, role: 'preview' as const }))];\n return {\n revision: this.revision,\n project: project ? { id: project.id, root: project.root, name: project.name } : null,\n projectPhase: this.engine?.project?.phase ?? null,\n browserGeneration: this.engine?.project?.browserGeneration ?? null,\n targets: targets.map(({ target, role }) => ({\n targetId: target.targetId, ...(target.generation === undefined ? {} : { generation: target.generation }), role,\n })),\n hasMoreTargets: active.length + previews.length > 16,\n };\n }\n\n pages(): WorkspacePages {\n const entries = [...this.pageSessions.entries()];\n return { pages: entries.slice(0, 16).map(([connectionId, page]) => ({ connectionId, ...page.broker.summary() })),\n hasMorePages: entries.length > 16 };\n }\n\n snapshot(): WorkspaceState {\n this.syncBindings();\n const display = this.display?.();\n return serializeWorkspaceState({\n revision: this.revision, selectedTabId: this.selectedTabId,\n tabs: [\n { tabId: VIEW_DISPLAY_TAB_ID, kind: 'display', selected: this.selectedTabId === VIEW_DISPLAY_TAB_ID,\n state: display?.state, run: display?.occupancy?.run, target: display?.occupancy?.target,\n targetId: display?.occupancy?.targetId },\n { tabId: VIEW_WORKSPACE_TAB_ID, kind: 'workspace', selected: this.selectedTabId === VIEW_WORKSPACE_TAB_ID,\n state: this.previewProjection ? 'previewing' : this.project ? 'project-open' : 'empty',\n ...(this.previewProjection?.target ?? this.projectTarget ? { target: this.previewProjection?.target ?? this.projectTarget } : {}) },\n ],\n project: this.project, projectTarget: this.projectTarget,\n ...(!this.project && this.projectIntent?.() ? { projectIntent: { root: this.projectIntent()! } } : {}),\n ...(this.engine?.project?.phase === undefined ? {} : { projectPhase: this.engine.project.phase }),\n ...(this.engine?.project?.browserGeneration === undefined ? {} : { browserGeneration: this.engine.project.browserGeneration }),\n assets: this.assets,\n preview: this.previewProjection && { ...this.previewProjection, target: this.boundTarget()!.target, asset: this.hydrateAsset(this.previewProjection.asset), assetBinding: this.boundTarget()!.assetBinding },\n editorPreview: this.editorPreview() ? { target: this.editorPreview()!.target, asset: this.hydrateAsset(this.editorPreview()!.asset), assetBinding: this.editorPreview()!.assetBinding } : null,\n previews: this.previews().map(preview => ({ target: preview.target, asset: this.hydrateAsset(preview.asset), assetBinding: preview.assetBinding })),\n play: this.engine?.play ? { target: this.engine.play.target, phase: this.engine.play.phase } : null,\n targetBinding: this.targetBinding,\n inspection: this.inspection,\n openRequest: this.openRequest,\n resourceOpens: Object.fromEntries(this.resourceOpens),\n sceneSelection: this.sceneSelection,\n workspaceTargetLost: this.workspaceTargetLost,\n });\n }\n\n changed() {\n const current = this.snapshot();\n const fingerprint = workspaceUiFingerprint(current);\n if (fingerprint === this.publishFingerprint) return;\n this.revision += 1;\n const state = this.snapshot();\n this.publishFingerprint = workspaceUiFingerprint(state);\n for (const listener of this.listeners) { try { listener(state); } catch { /* UI observers do not own operations. */ } }\n }\n subscribe(listener: (state: WorkspaceState) => void) {\n this.listeners.add(listener);\n const state = this.snapshot();\n this.publishFingerprint ||= workspaceUiFingerprint(state);\n listener(state);\n return () => this.listeners.delete(listener);\n }\n capabilities() {\n const descriptions = this.toolApi?.list().filter(record => record.callable && (record.owner.sourceId === ENGINE_SOURCE || record.descriptor.id.startsWith('view.display.')))\n .map(record => ({ id: record.descriptor.id.replace(/^(engine|view)\\./, ''), path: record.descriptor.path, title: record.descriptor.title, summary: record.descriptor.summary, inputSchema: record.descriptor.inputSchema, outputSchema: record.descriptor.outputSchema })) ?? [];\n const operations = [...Object.keys(UI_OPERATIONS), ...descriptions.map(item => item.id),\n ...VIEW_WORKSPACE_OPERATIONS.filter(id => id.startsWith('plugins.') && this.toolApi?.describe(id, 'view-backend').some(record => record.callable))]\n .filter(id => VIEW_WORKSPACE_OPERATIONS.includes(id));\n return { ...workspaceCapabilities({ ready: !!this.engine && !this.disposing, headed: this.projectTarget?.headed === true, operations }), descriptions };\n }\n async authorizeRequest(request: WorkspaceRequest, caller?: ToolCallerIdentity) {\n if (this.disposing) throw workspaceError('view-workspace-stopping', 'View bindings to remain available', 'Reconnect to the backend.');\n if (request.token !== this.accessToken || (this.authorize && !await this.authorize({ clientId: request.clientId, operation: request.operation, request, caller }))) {\n throw workspaceError('view-workspace-unauthorized', 'an authorized workspace connection', 'Connect with the issued token.', { clientId: request.clientId });\n }\n }\n async call(rawRequest: unknown, { signal, caller }: WorkspaceCallContext = {}): Promise<unknown> {\n const request = assertWorkspaceRequest(rawRequest);\n if (request.operation === 'pages.list' || request.operation === 'pack.reveal') {\n await this.authorizeRequest(request, caller);\n return UI_OPERATIONS[request.operation](this, request.args, { signal, caller, clientId: request.clientId });\n }\n const page = caller?.connectionId && this.pageSessions.get(caller.connectionId);\n if (page) return page.broker.call(rawRequest, { signal, caller });\n await this.authorizeRequest(request, caller);\n if (PAGE_OPERATIONS.has(request.operation) && this.pageSessions.size > 0) {\n if (this.pageSessions.size !== 1) throw workspaceError('view-page-ambiguous',\n 'one View page for this page operation', 'Select the exact View page before retrying.');\n return this.pageSessions.values().next().value!.broker.call(request, { signal, caller });\n }\n const ui = UI_OPERATIONS[request.operation];\n if (ui) return ui(this, request.args, { signal, caller, clientId: request.clientId });\n if (request.operation === 'project.reopen') {\n return this.reopenProject(request.args, {\n signal,\n caller,\n clientId: request.clientId,\n token: request.token,\n requestId: request.requestId,\n });\n }\n return this.invoke(request.operation, request.args, { signal, caller, clientId: request.clientId, token: request.token, requestId: request.requestId });\n }\n async invoke(operation: string, args: Args = {}, { signal, caller, clientId = 'view-owner', token, requestId }: WorkspaceCallContext = {}) {\n caller ??= this.caller;\n const { tabId, ...input } = args;\n if (tabId !== undefined) this.assertWorkspaceTab(tabId);\n const inspector = operation.startsWith('plugins.');\n const presentation = operation.startsWith('display.');\n const id = inspector ? operation : `${presentation ? 'view' : 'engine'}.${operation}`;\n const sourceId = inspector || presentation ? 'view-backend' : ENGINE_SOURCE;\n if (this.caller && !inspector && !presentation && !operation.startsWith('run.') && input.targetId === undefined && this.projectTarget)\n input.targetId = this.projectTarget.targetId;\n const owner = this.toolApi?.describe(id, sourceId).find(record => record.callable)?.owner;\n if (!owner) throw workspaceError('view-workspace-operation-unavailable', `Engine operation ${operation} to be installed`, 'Enable the Engine capability; UI plugins do not provide domain APIs.', { operation });\n this.syncBindings();\n const play = this.engine?.play;\n if (operation === 'play.stop' && this.targetBinding === 'play' && play &&\n input.targetId === play.target.targetId && input.targetGeneration === play.target.generation) {\n // Revoke Game panel observations before Engine closes their command channel.\n // Keep the presented Play owner and its iframe until the cleanup ACK arrives.\n this.targetBinding = 'editor';\n this.previewTargetId = this.editorPreview()?.target.targetId;\n this.changed();\n }\n const requestedPreview = [...this.previews(), this.engine?.play].find(preview => preview?.target.targetId === input.targetId);\n const terminal = await this.toolApi!.run<WorkspaceDomainResult>(id, inspector ? {\n apiVersion: 'forgeax.view.inspector/1', operation, args: input, ...input, clientId, token, requestId,\n } : presentation ? input : { ...input, clientId }, { sourceId, providerId: owner.providerId, generation: owner.generation, caller, signal }).terminal;\n if (terminal.outcome === 'failed') {\n const resolved = resolveWorkspaceFailure(terminal.failure);\n const addressesWorkspace = input.targetId === undefined ||\n [this.projectTarget, this.editorPreview()?.target].some(target => target &&\n target.targetId === input.targetId &&\n (input.targetGeneration === undefined || target.generation === input.targetGeneration));\n if (isWorkspaceTargetRecoveryCode(resolved.code) && addressesWorkspace) {\n this.workspaceTargetLost = true;\n }\n // Engine can revoke a target before its asynchronous close completes and\n // publishes state. Reconcile the actual binding before returning a late\n // query failure, so observers can revoke their obsolete requests.\n this.changed();\n throw workspaceError(resolved.code, resolved.expected, resolved.hint, resolved.detail);\n }\n const result = terminal.result;\n if (Array.isArray(result?.assets)) this.assets = result.assets.map(asset => serializeWorkspaceAsset({ ...asset, ...(asset.ddc || !asset.cookReceiptUrl ? {} : { ddc: { receiptUrl: asset.cookReceiptUrl } }) }));\n if (result?.inspection) this.inspection = serializeWorkspaceInspection(result.inspection);\n if (operation === 'asset.open') this.bindOpenedAsset(result, input.guid);\n if (operation === 'preview.close' && input.targetId != null && String(input.targetId) === this.editorTargetId) {\n this.editorTargetId = undefined;\n }\n this.syncBindings();\n if (operation === 'asset.open') this.recordOpenRequest({ requestId, result, guid: input.guid });\n if ((operation.startsWith('camera.') || operation === 'target.control') && this.previewProjection && this.boundTarget() === requestedPreview) {\n this.previewProjection.camera = result?.camera;\n this.previewProjection.cameraVersion = result?.version;\n this.previewProjection.interaction = result?.interaction ?? null;\n }\n if (!['scene.tree.get', 'entity.inspect', 'workspace.get', 'preview.capture'].includes(operation)) this.changed();\n if (['project.open', 'project.close', 'project.reopen', 'asset.open', 'preview.close', 'camera.abort', 'play.start', 'play.ready', 'play.stop'].includes(operation)) {\n if (operation === 'project.open' || operation === 'project.reopen') this.workspaceTargetLost = false;\n return this.snapshot();\n }\n if (operation.startsWith('camera.')) return { ...cloneWorkspaceValue(result), apiVersion: VIEW_WORKSPACE_API_VERSION, target: requestedPreview?.target };\n if (operation === 'assets.list') return { ...cloneWorkspaceValue(result), assets: this.assets };\n return cloneWorkspaceValue(result);\n }\n assertWorkspaceTab(tabId: unknown) {\n requireWorkspaceString(tabId, 'tabId');\n if (tabId !== VIEW_WORKSPACE_TAB_ID) throw workspaceError('view-workspace-tab-read-only', 'the Editor binding', 'Address AI execution through the Engine run API.', { tabId });\n }\n selectTab({ tabId }: Args = {}) {\n if (![VIEW_DISPLAY_TAB_ID, VIEW_WORKSPACE_TAB_ID].includes(tabId as string)) throw workspaceError('view-workspace-tab-not-found', 'an existing tab', 'Refresh tabs.get.', { tabId });\n this.selectedTabId = tabId as string; this.changed(); return this.snapshot();\n }\n async selectSceneEntity(args: Args = {}, context?: WorkspaceCallContext) {\n const entityId = requireWorkspaceString(args.entityId, 'entityId');\n return this.changeSceneSelection(args, context, () => ({ entityId, label: args.label }));\n }\n pickSceneEntity(args: Args = {}, context?: WorkspaceCallContext) {\n return this.changeSceneSelection(args, context, async requestContext => {\n const result = await this.invoke('target.pick', args, requestContext) as { entityId?: string | null };\n if (result?.entityId === null) return null;\n const entityId = requireWorkspaceString(result?.entityId, 'pick.entityId');\n return { entityId };\n });\n }\n clearSceneSelection(args: Args = {}, context?: WorkspaceCallContext) {\n return this.changeSceneSelection(args, context, () => null);\n }\n async changeSceneSelection({ tabId, targetId, targetGeneration }: Args = {}, context: WorkspaceCallContext | undefined, resolveSelection: (context: WorkspaceCallContext) => { entityId: string; label?: unknown } | null | Promise<{ entityId: string; label?: unknown } | null>) {\n if (tabId !== undefined) this.assertWorkspaceTab(tabId);\n this.syncBindings();\n const requested = this.boundTarget();\n if (!requested || requested.target.targetId !== targetId || requested.target.generation !== targetGeneration) throw workspaceError('view-workspace-selection-stale', 'The bound target and generation', 'Select the target before changing its selection.');\n this.selectionAbort?.abort();\n const controller = new AbortController();\n this.selectionAbort = controller;\n const signal = context?.signal ? AbortSignal.any([context.signal, controller.signal]) : controller.signal;\n const requestContext = { ...context, signal };\n const assertCurrent = () => {\n signal.throwIfAborted();\n if (this.boundTarget() !== requested) throw workspaceError('view-workspace-selection-stale', 'The same selected target', 'Refresh the hierarchy.');\n };\n const selection = await resolveSelection(requestContext);\n assertCurrent();\n const { entityId, label } = selection ?? {};\n if (selection) {\n const result = await this.invoke('entity.inspect', { entityId, targetId, targetGeneration }, requestContext) as { entityId?: string };\n assertCurrent();\n if (result?.entityId !== entityId) throw workspaceError(\n 'view-workspace-selection-stale', 'The inspected entity on the same target', 'Refresh the hierarchy before selecting.');\n }\n await this.invoke('entity.highlight', { ...(selection ? { entityId } : {}), targetId, targetGeneration }, requestContext);\n assertCurrent();\n this.sceneSelection = selection ? { primary: { entityId: entityId!, ...(label === undefined ? {} : { label: String(label) }) }, targetId: requested.target.targetId, targetGeneration: requested.target.generation } : null;\n this.changed();\n return this.snapshot();\n }\n openProject(args: Args, context?: WorkspaceCallContext) { return this.invoke('project.open', args, context); }\n async reopenProject(args: Args = {}, context?: WorkspaceCallContext) {\n const root = resolveWorkspaceReopenRoot(this.snapshot(), args.root);\n const { tabId, ...rest } = args;\n return this.openProject({ ...rest, root, ...(tabId === undefined ? {} : { tabId }) }, context);\n }\n closeProject(args: Args, context?: WorkspaceCallContext) { return this.invoke('project.close', args, context); }\n listAssets(args: Args, context?: WorkspaceCallContext) { return this.invoke('assets.list', args, context); }\n inspectAsset(args: Args, context?: WorkspaceCallContext) { return this.invoke('asset.inspect', args, context); }\n rebuildAssetSource(args: Args, { mode = 'rebuild', ...context }: WorkspaceCallContext & { mode?: 'rebuild' | 'cold-cook' } = {}) { return this.invoke(`asset.source.${mode}`, args, context); }\n bindOpenedAsset(result: WorkspaceDomainResult, guid: unknown) {\n this.targetBinding = 'editor';\n const kind = this.hydrateAsset(result?.preview?.asset)?.kind\n ?? this.hydrateAsset(result?.asset)?.kind\n ?? this.assets?.find((entry) => entry?.guid === guid)?.kind;\n if (kind && !isTypePreviewAsset({ kind, guid: typeof guid === 'string' ? guid : '' })) {\n const targetId = result?.preview?.target?.targetId\n ?? result?.target?.targetId\n ?? this.previews().find((entry) => this.hydrateAsset(entry.asset)?.guid === guid)?.target?.targetId;\n if (targetId != null) {\n this.editorTargetId = String(targetId);\n this.previewTargetId = this.editorTargetId;\n }\n return;\n }\n const editorId = this.editorPreview()?.target?.targetId;\n if (editorId !== undefined) this.previewTargetId = editorId;\n }\n recordOpenRequest({ requestId, result, guid }: { requestId?: string; result: WorkspaceDomainResult; guid?: unknown }) {\n const requested = typeof guid === 'string' && guid.trim() !== '' ? guid : undefined;\n const editor = this.editorPreview();\n const editorIds = editorSceneTargetIds(\n this.classifiedPreviews(),\n editor ? { target: editor.target, asset: this.hydrateAsset(editor.asset) } : undefined,\n );\n const extras = this.previews().filter((entry) =>\n entry?.target?.targetId && !editorIds.has(String(entry.target.targetId)),\n );\n const preview = [result?.preview, ...extras].find((entry) =>\n entry?.target &&\n !editorIds.has(String(entry.target.targetId)) &&\n (!entry.asset || requested === undefined || entry.asset.guid === requested),\n );\n const catalogAsset = requested && Array.isArray(this.assets)\n ? this.assets.find((entry) => entry?.guid === requested && entry?.kind)\n : undefined;\n const asset = [\n this.hydrateAsset(result?.preview?.asset),\n this.hydrateAsset(result?.asset),\n this.hydrateAsset(preview?.asset),\n catalogAsset,\n ].find((candidate) =>\n candidate?.guid &&\n candidate?.kind &&\n (requested === undefined || candidate.guid === requested),\n );\n if (!asset?.guid || !asset?.kind) {\n logResourceOpen('open-request-skipped', {\n reason: 'asset-kind-unavailable',\n requested: requested ?? null,\n resultPreview: summarizeResourceAsset(result?.preview?.asset),\n resultAsset: summarizeResourceAsset(result?.asset),\n extraPreview: summarizeResourceAsset(preview?.asset),\n extraPreviewCount: extras.length,\n catalog: summarizeResourceAsset(catalogAsset),\n editorTargetId: this.editorTargetId ?? null,\n }, { level: 'warn' });\n return;\n }\n this.openRequestSequence += 1;\n const inspection =\n result?.inspection?.guid === asset.guid\n ? result.inspection\n : (this.inspection?.guid === asset.guid ? this.inspection : undefined);\n const previewMatches = preview?.target && (!preview.asset || preview.asset.guid === asset.guid);\n const recordedPreview = previewMatches ? { asset, target: preview.target } : undefined;\n this.openRequest = serializeWorkspaceOpenRequest({\n requestId: typeof requestId === 'string' && requestId.trim() !== ''\n ? requestId\n : createWorkspaceId('open'),\n sequence: this.openRequestSequence,\n asset,\n preview: recordedPreview,\n ...(inspection === undefined ? {} : { inspection }),\n });\n this.resourceOpens.set(asset.kind, {\n asset,\n preview: recordedPreview,\n });\n logResourceOpen('open-request-recorded', {\n requestId: this.openRequest.requestId,\n sequence: this.openRequest.sequence,\n asset: summarizeResourceAsset(this.openRequest.asset),\n hasPreview: Boolean(this.openRequest.preview?.target),\n previewTargetId: this.openRequest.preview?.target?.targetId ?? null,\n });\n }\n openAsset(args: Args, context?: WorkspaceCallContext) { return this.invoke('asset.open', args, context); }\n closePreview(args: Args, context?: WorkspaceCallContext) { return this.invoke('preview.close', args, context); }\n capture(args: Args, context?: WorkspaceCallContext) { return this.invoke('preview.capture', args, context); }\n resizePreview(args: Args, context?: WorkspaceCallContext) { return this.invoke('preview.resize', args, context); }\n getCamera(args: Args, context?: WorkspaceCallContext) { return this.invoke('camera.get', args, context); }\n beginCamera(args: Args, context?: WorkspaceCallContext) { return this.invoke('camera.begin', { ...args, interactionId: args.interactionId ?? randomUUID() }, context); }\n updateCamera(args: Args, context?: WorkspaceCallContext) { return this.invoke('camera.update', args, context); }\n commitCamera(args: Args, context?: WorkspaceCallContext) { return this.invoke('camera.commit', args, context); }\n abortCamera(args: Args, context?: WorkspaceCallContext) { return this.invoke('camera.abort', args, context); }\n getSceneTree(args: Args, context?: WorkspaceCallContext) { return this.invoke('scene.tree.get', args, context); }\n async revokeConnection(connectionId: unknown) {\n if (typeof connectionId !== 'string') return;\n if (!this.pageSessions.has(connectionId) && ![...this.pendingReveals.values()].some(pending => pending.connectionId === connectionId)) return;\n for (const [requestId, pending] of this.pendingReveals) {\n if (pending.connectionId !== connectionId) continue;\n this.pendingReveals.delete(requestId);\n pending.settle({ ok: false, code: 'view-page-gone', requestId });\n }\n const page = this.pageSessions.get(connectionId);\n if (page) {\n this.pageSessions.delete(connectionId);\n page.unsubscribe();\n await page.broker.dispose();\n }\n for (const preview of [this.engine?.preview, this.engine?.play]) {\n if (!preview) continue;\n // The target may already be gone together with its browser page; revoking\n // its input connection is best-effort cleanup, not a failure.\n try {\n const result = await preview.revokeConnection?.({ targetId: preview.target.targetId, connectionId }) as EngineWorkspaceCameraResult | undefined;\n this.syncBindings();\n if (this.previewOwner === preview && this.previewProjection && result) {\n this.previewProjection.interaction = result.interaction ?? null;\n this.previewProjection.cameraVersion = result.version;\n }\n } catch {\n // A lost target owns its own teardown.\n }\n }\n this.changed();\n }\n /** One accepted View frontend owns one presentation projection and event stream. */\n attachPageSession(caller: HostCallerIdentity, transport: HostTransportServer) {\n const engine = this.engineForCaller ? this.engineForCaller(caller) : this.engine;\n const projectTarget = engine?.project?.target;\n const projectCaller = projectTarget && caller.sourceId === `forgeax-workspace:${projectTarget.sessionId}:${projectTarget.targetId}`;\n if (caller.kind !== 'frontend' || (caller.sourceId !== 'view-frontend' && !projectCaller) || this.pageSessions.has(caller.connectionId)) return;\n const broker = new ViewWorkspaceBroker({\n engine, toolApi: this.toolApi, display: () => this.display(caller),\n ...(this.engineForCaller && caller.sourceId === 'view-frontend'\n ? { projectIntent: () => this.project?.root } : {}),\n accessToken: this.accessToken, authorize: this.authorize, packSources: this.packSources,\n }, caller);\n broker.snapshot();\n if (engine === this.engine) broker.assets = this.assets;\n const unsubscribe = broker.subscribe(state => transport.publish(VIEW_WORKSPACE_STATE_TOPIC, state, { connectionId: caller.connectionId }));\n this.pageSessions.set(caller.connectionId, { broker, unsubscribe });\n }\n publishPageSessions() {\n for (const { broker } of this.pageSessions.values()) {\n broker.snapshot();\n if (broker.engine === this.engine && this.assets !== null) broker.assets = this.assets;\n broker.changed();\n }\n }\n async revealPack(input: WorkspacePackReveal, signal?: AbortSignal) {\n const transport = this.transport;\n if (!transport) return { ok: false, code: 'view-page-unavailable' };\n if (signal?.aborted) return { ok: false, code: 'view-reveal-cancelled' };\n const candidates = [...this.pageSessions.keys()];\n if (!input.connectionId && candidates.length !== 1)\n return { ok: false, code: candidates.length ? 'view-page-ambiguous' : 'view-page-unavailable', candidates };\n const connectionId = input.connectionId ?? candidates[0];\n const page = this.pageSessions.get(connectionId);\n if (!page) return { ok: false, code: 'view-page-gone' };\n const project = page.broker.project;\n if (!project || project.id !== input.projectId) return { ok: false, code: 'view-project-stale' };\n if (!this.packSources) return { ok: false, code: 'view-pack-sources-unavailable' };\n const source = (await this.packSources(project.root)).sources.find(row => row.sourcePath === input.sourcePath);\n if (signal?.aborted) return { ok: false, code: 'view-reveal-cancelled' };\n if (!source || source.revision !== input.revision || (input.packageId && source.packageId !== input.packageId))\n return { ok: false, code: 'view-pack-stale' };\n const requestId = randomUUID();\n const intent = { requestId, connectionId, projectId: input.projectId,\n sourcePath: input.sourcePath, revision: input.revision,\n ...(source.packageId ? { packageId: source.packageId } : {}) };\n return new Promise<unknown>(resolve => {\n const retire = (code: string) => {\n this.pendingReveals.delete(requestId);\n transport.publish(VIEW_PACK_REVEAL_TOPIC, { ...intent, cancelled: true }, { connectionId });\n settle({ ok: false, code, requestId });\n };\n const cancel = () => {\n retire('view-reveal-cancelled');\n };\n const settle = (value: unknown) => {\n clearTimeout(timeout);\n signal?.removeEventListener('abort', cancel);\n resolve(value);\n };\n const timeout = setTimeout(() => {\n retire('view-reveal-timeout');\n }, 12000);\n timeout.unref?.();\n this.pendingReveals.set(requestId, { connectionId, projectId: input.projectId, sourcePath: input.sourcePath,\n revision: input.revision, settle });\n signal?.addEventListener('abort', cancel, { once: true });\n transport.publish(VIEW_PACK_REVEAL_TOPIC, intent, { connectionId });\n });\n }\n registerTransport(transport: HostTransportServer, { routeThroughTools = false } = {}) {\n this.transport = transport;\n const capabilities = transport.register(VIEW_WORKSPACE_SERVICES.capabilities, () => this.capabilities());\n const call = transport.register<WorkspaceRequest, unknown>(VIEW_WORKSPACE_SERVICES.call, async ({ payload, signal, caller }) => {\n try {\n // The top-level View URL connects as view-frontend. Once a project\n // opens, its full View shell lives on the exact Engine target page.\n // That caller may connect before the project handle is published,\n // so admit it on its first workspace request as well as connect.\n this.attachPageSession(caller, transport);\n return routeThroughTools\n ? await runWorkspaceToolApi(this.toolApi!, {\n operation: `view.workspace.${payload.operation}`, args: payload.args,\n clientId: payload.clientId, token: payload.token, requestId: payload.requestId,\n caller, signal, sourceId: 'view-workspace',\n })\n : await this.call(payload, { signal, caller });\n }\n catch (error) {\n const failure = workspaceDiagnosticRecord(error);\n if (typeof failure.code !== 'string' || !failure.code.startsWith('view-')) throw error;\n throw Object.assign(new Error(String(failure.message)), { name: 'HostAssemblyError', code: 'host-transport-failure',\n expected: failure.expected, hint: failure.hint, detail: { ...workspaceDiagnosticRecord(failure.detail), remoteCode: failure.code } });\n }\n });\n const fileGet = transport.register<{ path?: unknown }, unknown>(VIEW_FILE_GET_SERVICE, async ({ payload, caller }) => {\n try { return await readWorkspaceFilePreview(this.pageSessions.get(caller.connectionId)?.broker ?? this, payload); }\n catch (error) {\n const failure = workspaceDiagnosticRecord(error);\n if (typeof failure.code !== 'string' || !failure.code.startsWith('view-')) throw error;\n throw Object.assign(new Error(String(failure.message)), { name: 'HostAssemblyError', code: 'host-transport-failure',\n expected: failure.expected, hint: failure.hint, detail: { ...workspaceDiagnosticRecord(failure.detail), remoteCode: failure.code } });\n }\n });\n const packSources = transport.register<{ projectId?: unknown }, unknown>(VIEW_PACK_SOURCES_SERVICE, async ({ payload, caller }) => {\n const project = (this.pageSessions.get(caller.connectionId)?.broker ?? this).project;\n if (!project || payload?.projectId !== project.id) throw workspaceError('view-project-stale', 'the currently open project', 'Refresh the workspace before listing Pack sources.');\n if (!this.packSources) throw workspaceError('view-pack-sources-unavailable', 'an installed Pack source provider', 'Update the View Host Pack.');\n return this.packSources(project.root);\n });\n const revealAck = transport.register<{ requestId?: unknown; shown?: unknown; projectId?: unknown; sourcePath?: unknown; revision?: unknown; reason?: unknown }, unknown>(VIEW_PACK_REVEAL_ACK_SERVICE, async ({ payload, caller }) => {\n const requestId = typeof payload?.requestId === 'string' ? payload.requestId : '';\n const pending = this.pendingReveals.get(requestId);\n if (!pending || pending.connectionId !== caller.connectionId) return { ok: false, code: 'view-reveal-stale' };\n if (pending.projectId !== payload.projectId || pending.sourcePath !== payload.sourcePath || pending.revision !== payload.revision)\n return { ok: false, code: 'view-reveal-identity-mismatch' };\n const page = this.pageSessions.get(caller.connectionId);\n const project = page?.broker.project;\n const source = project && this.packSources\n ? (await this.packSources(project.root)).sources.find(row => row.sourcePath === pending.sourcePath) : undefined;\n // A visible old card cannot confirm a changed source, project or retired page.\n if (this.pendingReveals.get(requestId) !== pending) return { ok: false, code: 'view-reveal-stale' };\n if (!project || project.id !== pending.projectId || source?.revision !== pending.revision) {\n this.pendingReveals.delete(requestId);\n pending.settle({ ok: false, code: 'view-reveal-stale', requestId });\n return { ok: false, code: 'view-reveal-stale' };\n }\n this.pendingReveals.delete(requestId);\n pending.settle({ ok: payload.shown === true, code: payload.shown === true ? 'shown' : 'view-reveal-not-shown',\n requestId, connectionId: caller.connectionId, projectId: payload.projectId,\n sourcePath: payload.sourcePath, revision: payload.revision,\n ...(typeof payload.reason === 'string' ? { reason: payload.reason.slice(0, 160) } : {}) });\n return { ok: true };\n });\n const subscription = this.subscribe(state => transport.publish(VIEW_WORKSPACE_STATE_TOPIC, state, {\n excludeConnectionIds: [...this.pageSessions.keys()],\n }));\n const removeConnect = transport.onClientConnect(caller => this.attachPageSession(caller, transport));\n const removeDisconnect = transport.onClientDisconnect(caller => { void this.revokeConnection(caller.connectionId); });\n const observer = transport.connect();\n const engineSubscription = observer.subscribe<{ catalogEpoch?: number }>('engine.workspace.state', (snapshot) => {\n const epoch = snapshot && typeof snapshot.catalogEpoch === 'number' ? snapshot.catalogEpoch : undefined;\n if (epoch === undefined || epoch <= this.catalogEpoch) {\n this.changed();\n this.publishPageSessions();\n return;\n }\n this.catalogEpoch = epoch;\n for (const broker of [this, ...[...this.pageSessions.values()].map(page => page.broker)]) {\n broker.catalogEpoch = epoch;\n const project = broker.project;\n if (!project || (broker.engine?.project?.phase !== undefined && broker.engine.project.phase !== 'running')) continue;\n const lost = broker.workspaceTargetLost;\n void broker.invoke('assets.list', { projectId: project.id }).catch(() => {\n broker.workspaceTargetLost = lost;\n }).finally(() => broker.changed());\n }\n this.publishPageSessions();\n });\n return () => { if (this.transport === transport) this.transport = undefined; capabilities(); call(); fileGet(); packSources(); revealAck(); subscription(); removeConnect(); removeDisconnect(); engineSubscription(); observer.close(); };\n }\n async dispose() {\n this.selectionAbort?.abort(); this.disposing = true; this.listeners.clear();\n for (const [requestId, pending] of this.pendingReveals) {\n this.pendingReveals.delete(requestId);\n pending.settle({ ok: false, code: 'view-page-gone', requestId });\n }\n for (const [connectionId, page] of this.pageSessions) {\n this.pageSessions.delete(connectionId);\n page.unsubscribe();\n await page.broker.dispose();\n }\n }\n}\n", "import { readFile, stat } from 'node:fs/promises';\nimport { extname, isAbsolute, relative, resolve } from 'node:path';\n\nimport type { WorkspaceProject } from './contract.ts';\nimport { workspaceError } from './contract.ts';\n\n/**\n * Editor `/api/files` classify() equivalent. Unknown extensions are text so\n * `.pack.json` / `.pack.ts` / `.ts` / `.js` decode as UTF-8. Binary kinds skip\n * decode and leave `content` unset \u2014 the preview then shows the no-text note.\n */\nconst EXT_KIND: Readonly<Record<string, { kind: string; mime: string }>> = Object.freeze({\n '.png': { kind: 'image', mime: 'image/png' },\n '.jpg': { kind: 'image', mime: 'image/jpeg' },\n '.jpeg': { kind: 'image', mime: 'image/jpeg' },\n '.gif': { kind: 'image', mime: 'image/gif' },\n '.webp': { kind: 'image', mime: 'image/webp' },\n '.avif': { kind: 'image', mime: 'image/avif' },\n '.bmp': { kind: 'image', mime: 'image/bmp' },\n '.ico': { kind: 'image', mime: 'image/x-icon' },\n '.svg': { kind: 'image', mime: 'image/svg+xml' },\n '.mp3': { kind: 'audio', mime: 'audio/mpeg' },\n '.wav': { kind: 'audio', mime: 'audio/wav' },\n '.ogg': { kind: 'audio', mime: 'audio/ogg' },\n '.m4a': { kind: 'audio', mime: 'audio/mp4' },\n '.flac': { kind: 'audio', mime: 'audio/flac' },\n '.aac': { kind: 'audio', mime: 'audio/aac' },\n '.mp4': { kind: 'video', mime: 'video/mp4' },\n '.webm': { kind: 'video', mime: 'video/webm' },\n '.mov': { kind: 'video', mime: 'video/quicktime' },\n '.glb': { kind: 'model', mime: 'model/gltf-binary' },\n '.gltf': { kind: 'model', mime: 'model/gltf+json' },\n '.fbx': { kind: 'model', mime: 'application/octet-stream' },\n '.ttf': { kind: 'binary', mime: 'font/ttf' },\n '.otf': { kind: 'binary', mime: 'font/otf' },\n '.woff': { kind: 'binary', mime: 'font/woff' },\n '.woff2': { kind: 'binary', mime: 'font/woff2' },\n});\n\n/** Inline data URLs for browser media preview in the content browser. */\nexport const MAX_BINARY_PREVIEW_BYTES = 10 * 1024 * 1024;\n\nconst BINARY_PREVIEW_KINDS = new Set(['image', 'audio', 'video', 'binary']);\n\nexport function classifyFile(path: string) {\n const ext = extname(path).toLowerCase();\n return EXT_KIND[ext] ?? { kind: 'text', mime: 'text/plain; charset=utf-8' };\n}\n\nexport function resolveProjectFilePath(root: unknown, input: unknown) {\n if (typeof root !== 'string' || root.trim() === '') return null;\n if (typeof input !== 'string' || input.length === 0 || input.includes('\\0')) return null;\n const rootAbs = resolve(root);\n const abs = isAbsolute(input) ? resolve(input) : resolve(rootAbs, input);\n const rel = relative(rootAbs, abs);\n if (rel === '' || rel.startsWith('..') || isAbsolute(rel)) return null;\n const normalized = rel.split(/[/\\\\]/).join('/');\n if (normalized === '.forgeax/ddc' || normalized.startsWith('.forgeax/ddc/')) return null;\n return { abs, rel: normalized };\n}\n\nexport async function readFilePreview(absPath: string, rel: string) {\n let info;\n try {\n info = await stat(absPath);\n } catch {\n throw new Error('not found');\n }\n if (info.isDirectory()) throw new Error('is a directory');\n const ext = extname(rel).toLowerCase();\n const { kind, mime } = classifyFile(rel);\n const base = { path: rel, kind, mime, size: info.size, mtime: info.mtimeMs };\n if (kind === 'text') {\n const content = await readFile(absPath, 'utf8');\n return { ...base, content };\n }\n if (kind === 'image' && ext === '.svg') {\n const content = await readFile(absPath, 'utf8');\n return { ...base, content };\n }\n if (BINARY_PREVIEW_KINDS.has(kind)) {\n if (info.size > MAX_BINARY_PREVIEW_BYTES) return base;\n const buffer = await readFile(absPath);\n return { ...base, dataUrl: `data:${mime};base64,${buffer.toString('base64')}` };\n }\n return base;\n}\n\nexport async function readWorkspaceFilePreview(workspace: { project?: WorkspaceProject | null } | undefined, payload: { path?: unknown } = {}) {\n const root = workspace?.project?.root;\n if (typeof root !== 'string' || root.trim() === '') {\n throw workspaceError(\n 'view-workspace-project-closed',\n 'an open project',\n 'Open a project before previewing source files.',\n );\n }\n const resolved = resolveProjectFilePath(root, payload?.path);\n if (!resolved) {\n throw workspaceError(\n 'view-workspace-invalid-args',\n 'path to be a file inside the open project',\n 'Provide a project-relative or in-project absolute path.',\n { field: 'path' },\n );\n }\n try {\n return await readFilePreview(resolved.abs, resolved.rel);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n if (message.startsWith('is a directory')) {\n throw workspaceError(\n 'view-workspace-invalid-args',\n 'a file path',\n message,\n { path: resolved.rel },\n );\n }\n throw workspaceError(\n 'view-workspace-file-not-found',\n 'the file to exist in the open project',\n 'Refresh the content browser and retry.',\n { path: resolved.rel },\n );\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["resolve"]
|
|
7
|
+
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
attachPreviewRenderResizeSync
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YDARD4EP.mjs";
|
|
4
4
|
import {
|
|
5
5
|
keepSurfaceInContainer,
|
|
6
6
|
watchUntilReady
|
|
7
7
|
} from "./chunk-QW3ZY2AD.mjs";
|
|
8
8
|
import {
|
|
9
9
|
logResourceOpen
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-E4G4HDOC.mjs";
|
|
11
11
|
|
|
12
12
|
// packages/view-workspace-core/src/preview-surface.ts
|
|
13
13
|
var OWNER_PLACEMENT = "owner";
|
|
@@ -240,4 +240,4 @@ export {
|
|
|
240
240
|
dedicatedPreviewPresentation,
|
|
241
241
|
bindWorkspacePreviewSurface
|
|
242
242
|
};
|
|
243
|
-
//# sourceMappingURL=chunk-
|
|
243
|
+
//# sourceMappingURL=chunk-CXFQME65.mjs.map
|
|
@@ -1,37 +1,37 @@
|
|
|
1
1
|
import {
|
|
2
2
|
identity_exports as identity_exports9
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-N2SH3JGI.mjs";
|
|
4
4
|
import {
|
|
5
5
|
BACKEND_MODULE,
|
|
6
6
|
BACKEND_PLUGIN_ID,
|
|
7
7
|
identity_exports
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-D2LZIQE2.mjs";
|
|
9
9
|
import {
|
|
10
10
|
BACKEND_MODULE as BACKEND_MODULE2,
|
|
11
11
|
BACKEND_PLUGIN_ID as BACKEND_PLUGIN_ID2,
|
|
12
12
|
identity_exports as identity_exports2
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-2CMCY54A.mjs";
|
|
14
14
|
import {
|
|
15
15
|
identity_exports as identity_exports7
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-C2AMOM7H.mjs";
|
|
17
17
|
import {
|
|
18
18
|
identity_exports as identity_exports8
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-4FYKRL46.mjs";
|
|
20
20
|
import {
|
|
21
21
|
identity_exports as identity_exports5
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-MLXRIWJA.mjs";
|
|
23
23
|
import {
|
|
24
24
|
identity_exports as identity_exports6
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-B24VYGHV.mjs";
|
|
26
26
|
import {
|
|
27
27
|
identity_exports as identity_exports3
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-AUINYWZP.mjs";
|
|
29
29
|
import {
|
|
30
30
|
identity_exports as identity_exports4
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-6WZZ7TIC.mjs";
|
|
32
32
|
import {
|
|
33
33
|
identity_exports as identity_exports10
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-TMPTVIAP.mjs";
|
|
35
35
|
import {
|
|
36
36
|
PRESENTATION_MODULE,
|
|
37
37
|
PRESENTATION_PLUGIN_ID
|
|
@@ -41,14 +41,14 @@ import {
|
|
|
41
41
|
FRONTEND_PLUGIN_ID,
|
|
42
42
|
PAGE_TYPE,
|
|
43
43
|
identity_exports as identity_exports11
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-SFB5BDTB.mjs";
|
|
45
45
|
import {
|
|
46
46
|
SHELL_MODULE,
|
|
47
47
|
SHELL_PLUGIN_ID
|
|
48
48
|
} from "./chunk-QAXALJEY.mjs";
|
|
49
49
|
|
|
50
50
|
// view-revision:revision
|
|
51
|
-
var revision_default = "
|
|
51
|
+
var revision_default = "d9f8f160baa8c79a98e292a9cfeb82afd6b984ce9994c42ebf2e4e7ce2c72a91";
|
|
52
52
|
|
|
53
53
|
// packages/viewer/src/catalog-shared.ts
|
|
54
54
|
var VIEW_PLUGIN_VERSION = "0.2.0";
|
|
@@ -126,4 +126,4 @@ export {
|
|
|
126
126
|
VIEW_PRODUCT_PLUGINS,
|
|
127
127
|
createViewProductPlan
|
|
128
128
|
};
|
|
129
|
-
//# sourceMappingURL=chunk-
|
|
129
|
+
//# sourceMappingURL=chunk-CYOLEAAY.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["view-revision:revision", "../../../packages/viewer/src/catalog-shared.ts"],
|
|
4
|
-
"sourcesContent": ["export default \"
|
|
4
|
+
"sourcesContent": ["export default \"d9f8f160baa8c79a98e292a9cfeb82afd6b984ce9994c42ebf2e4e7ce2c72a91\"", "import type { ViewFrontendConfig } from './config.ts';\nimport type { EngineWorkspaceProvider } from '@forgeax/engine/app';\nimport type { ViewPlatform, CarrierCapabilities } from '@forgeax/view-plugin-display/carrier-contract';\nimport type { ViewWorkspaceBroker } from '@forgeax/view-workspace-core/broker';\nexport type ViewBackendProductConfig = {\n platform?: ViewPlatform; capabilities?: Partial<CarrierCapabilities>; workspaceEngine?: EngineWorkspaceProvider;\n workspaceAccessToken?: string; workspaceAuthorize?: NonNullable<ConstructorParameters<typeof ViewWorkspaceBroker>[0]>['authorize'];\n packSources?: NonNullable<ConstructorParameters<typeof ViewWorkspaceBroker>[0]>['packSources'];\n};\nimport buildRevision from './build-identity.ts';\nimport * as display from '@forgeax/view-plugin-display/identity';\nimport * as plugins from '@forgeax/view-plugin-plugins/identity';\nimport * as inspector from '@forgeax/view-plugin-inspector/identity';\nimport * as contentBrowser from '@forgeax/view-plugin-content-browser/identity';\nimport * as sceneTree from '@forgeax/view-plugin-scene-tree/identity';\nimport * as material from '@forgeax/view-plugin-material/identity';\nimport * as mesh from '@forgeax/view-plugin-mesh/identity';\nimport * as texture from '@forgeax/view-plugin-texture/identity';\nimport * as asset from '@forgeax/view-plugin-asset/identity';\nimport * as viewport from '@forgeax/view-plugin-viewport/identity';\nimport * as scene from '@forgeax/view-plugin-scene/identity';\n\nimport { SHELL_MODULE, SHELL_PLUGIN_ID } from './plugins/shell-identity.ts';\nimport { PRESENTATION_MODULE, PRESENTATION_PLUGIN_ID } from '@forgeax/view-plugin-viewport/presentation-identity';\n\nexport const VIEW_PLUGIN_VERSION = '0.2.0';\nexport const VIEW_FRONTEND_ROOT_PROGRAM = '@forgeax/view/frontend-root';\nexport const VIEW_FRONTEND_MODULE = Object.freeze({ specifier: VIEW_FRONTEND_ROOT_PROGRAM });\n\nexport function viewFrontendRoot(frontendConfig: ViewFrontendConfig | undefined, disabledPages: readonly string[] = []) {\n return Object.freeze({\n program: VIEW_FRONTEND_ROOT_PROGRAM,\n codeRevision: buildRevision,\n config: { frontendConfig, disabledPages },\n });\n}\n\nexport const VIEW_WORKSPACE_CORE = Object.freeze({\n BACKEND_PLUGIN_ID: 'forgeax.view.service.workspace.backend',\n FRONTEND_PLUGIN_ID: 'forgeax.view.service.workspace-client.frontend',\n BACKEND_MODULE: '@forgeax/view-workspace-core/backend',\n FRONTEND_MODULE: '@forgeax/view/workspace-frontend',\n});\n\nexport const VIEW_PRODUCT_PLUGINS = Object.freeze([\n scene,\n display,\n viewport,\n contentBrowser,\n plugins,\n inspector,\n sceneTree,\n material,\n mesh,\n texture,\n asset,\n]);\n\n/** Static native composition. Pack assets own game plugin identity; View owns only its UI policy. */\nexport function createViewProductPlan({ backendConfig, frontendConfig, disabledPages = [] }: { backendConfig?: ViewBackendProductConfig; frontendConfig?: ViewFrontendConfig; disabledPages?: readonly string[] } = {}) {\n const pages = new Set<string>(VIEW_PRODUCT_PLUGINS.map(plugin => plugin.PAGE_TYPE));\n for (const page of disabledPages) {\n if (!pages.has(page)) throw new TypeError(`Unknown View page: ${page}`);\n }\n const disabled = new Set(disabledPages);\n const displayBackendConfig = {\n platform: backendConfig?.platform,\n capabilities: backendConfig?.capabilities,\n };\n const workspaceBackendConfig = {\n workspaceEngine: backendConfig?.workspaceEngine,\n workspaceAccessToken: backendConfig?.workspaceAccessToken,\n workspaceAuthorize: backendConfig?.workspaceAuthorize,\n packSources: backendConfig?.packSources,\n capabilities: backendConfig?.capabilities,\n };\n const backend = [\n { id: VIEW_WORKSPACE_CORE.BACKEND_PLUGIN_ID, module: VIEW_WORKSPACE_CORE.BACKEND_MODULE, config: workspaceBackendConfig },\n { id: display.BACKEND_PLUGIN_ID, module: display.BACKEND_MODULE, config: displayBackendConfig },\n { id: plugins.BACKEND_PLUGIN_ID, module: plugins.BACKEND_MODULE, config: {} },\n ];\n const frontend = [\n { id: SHELL_PLUGIN_ID, module: SHELL_MODULE },\n { id: VIEW_WORKSPACE_CORE.FRONTEND_PLUGIN_ID, module: VIEW_WORKSPACE_CORE.FRONTEND_MODULE },\n ...(!disabled.has(scene.PAGE_TYPE) ? [{ id: scene.FRONTEND_PLUGIN_ID, module: scene.FRONTEND_MODULE }] : []),\n { id: PRESENTATION_PLUGIN_ID, module: PRESENTATION_MODULE },\n ...VIEW_PRODUCT_PLUGINS.filter(plugin => plugin !== scene && !disabled.has(plugin.PAGE_TYPE))\n .map(plugin => ({ id: plugin.FRONTEND_PLUGIN_ID, module: plugin.FRONTEND_MODULE })),\n ];\n return Object.freeze({\n backend: Object.freeze(backend),\n frontend: Object.freeze(frontend),\n frontendConfig,\n disabledPages: Object.freeze([...disabled]),\n });\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAO,mBAAQ;;;ACyBR,IAAM,sBAAsB;AAC5B,IAAM,6BAA6B;AACnC,IAAM,uBAAuB,OAAO,OAAO,EAAE,WAAW,2BAA2B,CAAC;AAEpF,SAAS,iBAAiB,gBAAgD,gBAAmC,CAAC,GAAG;AACtH,SAAO,OAAO,OAAO;AAAA,IACnB,SAAS;AAAA,IACT,cAAc;AAAA,IACd,QAAQ,EAAE,gBAAgB,cAAc;AAAA,EAC1C,CAAC;AACH;AAEO,IAAM,sBAAsB,OAAO,OAAO;AAAA,EAC/C,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,iBAAiB;AACnB,CAAC;AAEM,IAAM,uBAAuB,OAAO,OAAO;AAAA,EAChDA;AAAA,EACA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AAAA,EACAA;AACF,CAAC;AAGM,SAAS,sBAAsB,EAAE,eAAe,gBAAgB,gBAAgB,CAAC,EAAE,IAA0H,CAAC,GAAG;AACtN,QAAM,QAAQ,IAAI,IAAY,qBAAqB,IAAI,YAAU,OAAO,SAAS,CAAC;AAClF,aAAW,QAAQ,eAAe;AAChC,QAAI,CAAC,MAAM,IAAI,IAAI,EAAG,OAAM,IAAI,UAAU,sBAAsB,IAAI,EAAE;AAAA,EACxE;AACA,QAAM,WAAW,IAAI,IAAI,aAAa;AACtC,QAAM,uBAAuB;AAAA,IAC3B,UAAU,eAAe;AAAA,IACzB,cAAc,eAAe;AAAA,EAC/B;AACA,QAAM,yBAAyB;AAAA,IAC7B,iBAAiB,eAAe;AAAA,IAChC,sBAAsB,eAAe;AAAA,IACrC,oBAAoB,eAAe;AAAA,IACnC,aAAa,eAAe;AAAA,IAC5B,cAAc,eAAe;AAAA,EAC/B;AACA,QAAM,UAAU;AAAA,IACd,EAAE,IAAI,oBAAoB,mBAAmB,QAAQ,oBAAoB,gBAAgB,QAAQ,uBAAuB;AAAA,IACxH,EAAE,IAAY,mBAAmB,QAAgB,gBAAgB,QAAQ,qBAAqB;AAAA,IAC9F,EAAE,IAAYC,oBAAmB,QAAgBC,iBAAgB,QAAQ,CAAC,EAAE;AAAA,EAC9E;AACA,QAAM,WAAW;AAAA,IACf,EAAE,IAAI,iBAAiB,QAAQ,aAAa;AAAA,IAC5C,EAAE,IAAI,oBAAoB,oBAAoB,QAAQ,oBAAoB,gBAAgB;AAAA,IAC1F,GAAI,CAAC,SAAS,IAAU,SAAS,IAAI,CAAC,EAAE,IAAU,oBAAoB,QAAc,gBAAgB,CAAC,IAAI,CAAC;AAAA,IAC1G,EAAE,IAAI,wBAAwB,QAAQ,oBAAoB;AAAA,IAC1D,GAAG,qBAAqB,OAAO,YAAU,WAAWF,sBAAS,CAAC,SAAS,IAAI,OAAO,SAAS,CAAC,EACzF,IAAI,aAAW,EAAE,IAAI,OAAO,oBAAoB,QAAQ,OAAO,gBAAgB,EAAE;AAAA,EACtF;AACA,SAAO,OAAO,OAAO;AAAA,IACnB,SAAS,OAAO,OAAO,OAAO;AAAA,IAC9B,UAAU,OAAO,OAAO,QAAQ;AAAA,IAChC;AAAA,IACA,eAAe,OAAO,OAAO,CAAC,GAAG,QAAQ,CAAC;AAAA,EAC5C,CAAC;AACH;",
|
|
6
6
|
"names": ["identity_exports", "BACKEND_PLUGIN_ID", "BACKEND_MODULE"]
|
|
7
7
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
FRONTEND_PLUGIN_ID,
|
|
3
3
|
identity_exports
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-4FYKRL46.mjs";
|
|
5
5
|
import {
|
|
6
6
|
applyResourcePagePlugin
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-KPLESRQY.mjs";
|
|
8
8
|
|
|
9
9
|
// packages/view-plugin-texture/src/frontend.ts
|
|
10
10
|
var VIEW_TEXTURE_FRONTEND_PLUGIN_ID = FRONTEND_PLUGIN_ID;
|
|
@@ -22,4 +22,4 @@ export {
|
|
|
22
22
|
viewTextureFrontendPlugin,
|
|
23
23
|
frontend_default
|
|
24
24
|
};
|
|
25
|
-
//# sourceMappingURL=chunk-
|
|
25
|
+
//# sourceMappingURL=chunk-CYU3WWN6.mjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
VIEW_PAGE_TYPES
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-QJHQN6OD.mjs";
|
|
4
4
|
import {
|
|
5
5
|
__export
|
|
6
6
|
} from "./chunk-FLGC65SR.mjs";
|
|
@@ -46,4 +46,4 @@ export {
|
|
|
46
46
|
VIEW_STATUS_SERVICE,
|
|
47
47
|
identity_exports
|
|
48
48
|
};
|
|
49
|
-
//# sourceMappingURL=chunk-
|
|
49
|
+
//# sourceMappingURL=chunk-D2LZIQE2.mjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
VIEW_WORKSPACE_TAB_ID
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-QJHQN6OD.mjs";
|
|
4
4
|
|
|
5
5
|
// packages/view-workspace-core/src/project-session.ts
|
|
6
6
|
var KEY = "forgeax.view.project-session/1";
|
|
@@ -332,4 +332,4 @@ export {
|
|
|
332
332
|
navigateProjectSession,
|
|
333
333
|
createProjectSession
|
|
334
334
|
};
|
|
335
|
-
//# sourceMappingURL=chunk-
|
|
335
|
+
//# sourceMappingURL=chunk-DC5JP46Y.mjs.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
FRONTEND_PLUGIN_ID,
|
|
3
3
|
identity_exports
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-N2SH3JGI.mjs";
|
|
5
5
|
import {
|
|
6
6
|
applyResourcePagePlugin
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-KPLESRQY.mjs";
|
|
8
8
|
|
|
9
9
|
// packages/view-plugin-asset/src/frontend.ts
|
|
10
10
|
var VIEW_ASSET_FRONTEND_PLUGIN_ID = FRONTEND_PLUGIN_ID;
|
|
@@ -22,4 +22,4 @@ export {
|
|
|
22
22
|
viewAssetFrontendPlugin,
|
|
23
23
|
frontend_default
|
|
24
24
|
};
|
|
25
|
-
//# sourceMappingURL=chunk-
|
|
25
|
+
//# sourceMappingURL=chunk-DOU4MNMQ.mjs.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
traceView
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-QW2VT3XB.mjs";
|
|
4
4
|
import {
|
|
5
5
|
createWorkspaceStateReader
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-WJNASQF2.mjs";
|
|
7
7
|
|
|
8
8
|
// packages/view-workspace-core/src/resource-open.ts
|
|
9
9
|
var LOG_PREFIX = "[forgeax.view.resource-open]";
|
|
@@ -162,4 +162,4 @@ export {
|
|
|
162
162
|
selectWorkspaceResourcePreview,
|
|
163
163
|
observeWorkspaceOpenRequests
|
|
164
164
|
};
|
|
165
|
-
//# sourceMappingURL=chunk-
|
|
165
|
+
//# sourceMappingURL=chunk-E4G4HDOC.mjs.map
|
|
@@ -2,10 +2,10 @@ import {
|
|
|
2
2
|
FRONTEND_MODULE,
|
|
3
3
|
FRONTEND_PLUGIN_ID,
|
|
4
4
|
identity_exports
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-B24VYGHV.mjs";
|
|
6
6
|
import {
|
|
7
7
|
applyResourcePagePlugin
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-KPLESRQY.mjs";
|
|
9
9
|
|
|
10
10
|
// packages/view-plugin-material/src/frontend.ts
|
|
11
11
|
var VIEW_MATERIAL_FRONTEND_PLUGIN_ID = FRONTEND_PLUGIN_ID;
|
|
@@ -29,4 +29,4 @@ export {
|
|
|
29
29
|
viewMaterialFrontendPlugin,
|
|
30
30
|
frontend_default
|
|
31
31
|
};
|
|
32
|
-
//# sourceMappingURL=chunk-
|
|
32
|
+
//# sourceMappingURL=chunk-EZAJ66NW.mjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
viewPlayPresentationPlugin
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XUNDH3E7.mjs";
|
|
4
4
|
import {
|
|
5
5
|
PRESENTATION_PLUGIN_ID
|
|
6
6
|
} from "./chunk-J5B4LX5H.mjs";
|
|
@@ -14,4 +14,4 @@ var presentation_default = {
|
|
|
14
14
|
export {
|
|
15
15
|
presentation_default
|
|
16
16
|
};
|
|
17
|
-
//# sourceMappingURL=chunk-
|
|
17
|
+
//# sourceMappingURL=chunk-FIWL6TQS.mjs.map
|