@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.
- package/README.md +67 -9
- package/dist/build-revision.json +1 -1
- package/dist/modules/backend.mjs +34 -34
- package/dist/modules/browser.mjs +55 -49
- package/dist/modules/chunks/{chunk-EWSCJF77.mjs → chunk-2CMCY54A.mjs} +2 -2
- package/dist/modules/chunks/{chunk-M6S5YA6X.mjs → chunk-2RUKPDIE.mjs} +4 -4
- package/dist/modules/chunks/{chunk-M6S5YA6X.mjs.map → chunk-2RUKPDIE.mjs.map} +1 -1
- package/dist/modules/chunks/{chunk-DWT3TA6M.mjs → chunk-3FBX3P3H.mjs} +9 -8
- package/dist/modules/chunks/chunk-3FBX3P3H.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-6KM24NH6.mjs → chunk-3Y5WN22T.mjs} +3 -3
- package/dist/modules/chunks/chunk-3Y5WN22T.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-YFQGSDK3.mjs → chunk-45WL24XN.mjs} +2 -2
- package/dist/modules/chunks/{chunk-FMCHH5R4.mjs → chunk-4FYKRL46.mjs} +3 -3
- package/dist/modules/chunks/{chunk-VW2ZF3P4.mjs → chunk-4MJHVZMB.mjs} +6 -6
- package/dist/modules/chunks/{chunk-XQYF2P6M.mjs → chunk-5HVXQEO3.mjs} +7 -7
- package/dist/modules/chunks/{chunk-XMP4THLF.mjs → chunk-66LM6NO6.mjs} +4 -4
- package/dist/modules/chunks/{chunk-P4UPH74B.mjs → chunk-6C4OCCYB.mjs} +12 -12
- package/dist/modules/chunks/{chunk-P4UPH74B.mjs.map → chunk-6C4OCCYB.mjs.map} +1 -1
- package/dist/modules/chunks/{chunk-ZGOGO7SS.mjs → chunk-6J27SWMY.mjs} +1 -1
- package/dist/modules/chunks/{chunk-JK7K7RG3.mjs → chunk-6VK7HB4X.mjs} +4 -4
- package/dist/modules/chunks/{chunk-HRKW766Y.mjs → chunk-6WZZ7TIC.mjs} +2 -2
- package/dist/modules/chunks/{chunk-FICPCJKR.mjs → chunk-7DFCIN3T.mjs} +3 -3
- package/dist/modules/chunks/{chunk-FICPCJKR.mjs.map → chunk-7DFCIN3T.mjs.map} +1 -1
- package/dist/modules/chunks/{chunk-U64FRQKP.mjs → chunk-7MWZK7HS.mjs} +3 -3
- package/dist/modules/chunks/{chunk-F5RLQAPN.mjs → chunk-A7OGXJAV.mjs} +3 -3
- package/dist/modules/chunks/{chunk-QUFVUMSY.mjs → chunk-AUINYWZP.mjs} +2 -2
- package/dist/modules/chunks/{chunk-PZIAKZJC.mjs → chunk-B24VYGHV.mjs} +3 -3
- package/dist/modules/chunks/{chunk-SRYQLFBV.mjs → chunk-BIUWJROZ.mjs} +3 -3
- package/dist/modules/chunks/{chunk-SRYQLFBV.mjs.map → chunk-BIUWJROZ.mjs.map} +2 -2
- package/dist/modules/chunks/{chunk-X4NNZ5X6.mjs → chunk-C2AMOM7H.mjs} +3 -3
- package/dist/modules/chunks/{chunk-IZAHIOFU.mjs → chunk-C3WVSJZF.mjs} +6 -6
- package/dist/modules/chunks/{chunk-2Z5KEV6L.mjs → chunk-CAXCOZ7Y.mjs} +3 -3
- package/dist/modules/chunks/{chunk-HWZCLROY.mjs → chunk-CN6YN4HP.mjs} +251 -45
- package/dist/modules/chunks/chunk-CN6YN4HP.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-B6QUJ33G.mjs → chunk-CXFQME65.mjs} +3 -3
- package/dist/modules/chunks/{chunk-IJPWKKIU.mjs → chunk-CYOLEAAY.mjs} +14 -13
- package/dist/modules/chunks/chunk-CYOLEAAY.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-U6UMATPV.mjs → chunk-CYU3WWN6.mjs} +3 -3
- package/dist/modules/chunks/{chunk-AGVLPYVE.mjs → chunk-D2LZIQE2.mjs} +2 -2
- package/dist/modules/chunks/{chunk-5YTMN435.mjs → chunk-DC5JP46Y.mjs} +13 -3
- package/dist/modules/chunks/chunk-DC5JP46Y.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-YNHEYXDG.mjs → chunk-DOU4MNMQ.mjs} +3 -3
- package/dist/modules/chunks/{chunk-ZIDEETK4.mjs → chunk-E4G4HDOC.mjs} +3 -3
- package/dist/modules/chunks/{chunk-ZHO2G4JR.mjs → chunk-EZAJ66NW.mjs} +3 -3
- package/dist/modules/chunks/{chunk-APD2EWSZ.mjs → chunk-FIWL6TQS.mjs} +2 -2
- package/dist/modules/chunks/{chunk-U5J7OTEB.mjs → chunk-FSSARTVM.mjs} +3 -3
- package/dist/modules/chunks/{chunk-47RJSHLM.mjs → chunk-FXXPWAXM.mjs} +3 -3
- package/dist/modules/chunks/{chunk-D2RCKG7Q.mjs → chunk-G2QCXN56.mjs} +6 -6
- package/dist/modules/chunks/{chunk-4T3D67CS.mjs → chunk-GRDCA6LD.mjs} +8 -8
- package/dist/modules/chunks/{chunk-4T3D67CS.mjs.map → chunk-GRDCA6LD.mjs.map} +1 -1
- package/dist/modules/chunks/{chunk-WVU3CQ62.mjs → chunk-GUVUL6D2.mjs} +3 -3
- package/dist/modules/chunks/{chunk-YLCJNKIW.mjs → chunk-I32EONBF.mjs} +70 -30
- package/dist/modules/chunks/chunk-I32EONBF.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-E3PJGTLI.mjs → chunk-IGIELQZ2.mjs} +5 -5
- package/dist/modules/chunks/{chunk-5PHAXNFO.mjs → chunk-IMDR26Y3.mjs} +3 -3
- package/dist/modules/chunks/{chunk-55F55BQY.mjs → chunk-JVOHFCI4.mjs} +3 -3
- package/dist/modules/chunks/{chunk-6I7RY73G.mjs → chunk-KCM7ZCQ3.mjs} +5 -5
- package/dist/modules/chunks/chunk-KCM7ZCQ3.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-K2QZRFLE.mjs → chunk-KJTMDFFX.mjs} +4 -4
- package/dist/modules/chunks/{chunk-KX2WU5Z6.mjs → chunk-KPLESRQY.mjs} +3 -3
- package/dist/modules/chunks/{chunk-PW5CE2Y6.mjs → chunk-KUOWDTI6.mjs} +2 -2
- package/dist/modules/chunks/chunk-L6IHUN7X.mjs +13 -0
- package/dist/modules/chunks/chunk-L6IHUN7X.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-INTTYJVW.mjs → chunk-LBQ6DFMP.mjs} +2 -2
- package/dist/modules/chunks/{chunk-OKQ5RBKO.mjs → chunk-LVWHM3UN.mjs} +2 -2
- package/dist/modules/chunks/{chunk-D57DDEV2.mjs → chunk-MDQMARAN.mjs} +6 -6
- package/dist/modules/chunks/{chunk-D57DDEV2.mjs.map → chunk-MDQMARAN.mjs.map} +2 -2
- package/dist/modules/chunks/{chunk-STQPRNEO.mjs → chunk-MLXRIWJA.mjs} +2 -2
- package/dist/modules/chunks/{chunk-D25SR5FS.mjs → chunk-N2SH3JGI.mjs} +3 -3
- package/dist/modules/chunks/{chunk-KI4WGTWL.mjs → chunk-N7NXZ6R3.mjs} +4 -4
- package/dist/modules/chunks/{chunk-KI4WGTWL.mjs.map → chunk-N7NXZ6R3.mjs.map} +2 -2
- package/dist/modules/chunks/{chunk-7IGFAI5H.mjs → chunk-O5QX6H3U.mjs} +5 -5
- package/dist/modules/chunks/{chunk-5W7SC5D4.mjs → chunk-P2Y73QJJ.mjs} +11 -1
- package/dist/modules/chunks/{chunk-5W7SC5D4.mjs.map → chunk-P2Y73QJJ.mjs.map} +2 -2
- package/dist/modules/chunks/{chunk-FNRGLCZW.mjs → chunk-PCQNUFDL.mjs} +39 -13
- package/dist/modules/chunks/chunk-PCQNUFDL.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-46UEGAXY.mjs → chunk-Q7M7VUOZ.mjs} +6 -6
- package/dist/modules/chunks/{chunk-XE6ITXHT.mjs → chunk-QB33CMEU.mjs} +2 -2
- package/dist/modules/chunks/{chunk-E3Z7GLFU.mjs → chunk-QJHQN6OD.mjs} +15 -4
- package/dist/modules/chunks/chunk-QJHQN6OD.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-KAGFU64Y.mjs → chunk-QW2VT3XB.mjs} +2 -2
- package/dist/modules/chunks/{chunk-U5R6MVM4.mjs → chunk-RFTLGEB5.mjs} +2 -2
- package/dist/modules/chunks/{chunk-VKNIYV2W.mjs → chunk-RYYKMDNI.mjs} +202 -35
- package/dist/modules/chunks/chunk-RYYKMDNI.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-P5XMFZY4.mjs → chunk-SFB5BDTB.mjs} +2 -2
- package/dist/modules/chunks/{chunk-4D3Q7K44.mjs → chunk-SNICHQJP.mjs} +2 -2
- package/dist/modules/chunks/{chunk-CX5WREJC.mjs → chunk-SPGFO2TA.mjs} +2 -2
- package/dist/modules/chunks/{chunk-H256DQT6.mjs → chunk-TMPTVIAP.mjs} +2 -2
- package/dist/modules/chunks/{chunk-OQXDADAS.mjs → chunk-UWJYROKS.mjs} +6 -6
- package/dist/modules/chunks/chunk-UWJYROKS.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-TTRUYO7Q.mjs → chunk-UZH2664E.mjs} +3 -3
- package/dist/modules/chunks/{chunk-TTRUYO7Q.mjs.map → chunk-UZH2664E.mjs.map} +2 -2
- package/dist/modules/chunks/{chunk-CKYXAT7H.mjs → chunk-VC4OEPDH.mjs} +2 -2
- package/dist/modules/chunks/{chunk-RJVOH7G2.mjs → chunk-VKWEA6NG.mjs} +27 -27
- package/dist/modules/chunks/{chunk-LZ57Y73Z.mjs → chunk-VSJOW7J4.mjs} +9 -7
- package/dist/modules/chunks/chunk-VSJOW7J4.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-PVP5YBNR.mjs → chunk-WFM434WJ.mjs} +2 -2
- package/dist/modules/chunks/{chunk-TXLD7JI5.mjs → chunk-WJNASQF2.mjs} +2 -2
- package/dist/modules/chunks/{chunk-357UOBAS.mjs → chunk-XUNDH3E7.mjs} +2 -2
- package/dist/modules/chunks/{chunk-PJFFCRRD.mjs → chunk-YDARD4EP.mjs} +2 -2
- package/dist/modules/chunks/{chunk-27XASYEH.mjs → chunk-YU3HRQX7.mjs} +17 -11
- package/dist/modules/chunks/chunk-YU3HRQX7.mjs.map +7 -0
- package/dist/modules/chunks/{chunk-EZSGDSCC.mjs → chunk-ZRE7BDDB.mjs} +30 -5
- 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 +82 -42
- package/dist/modules/embedded.mjs.map +2 -2
- package/dist/modules/extension-bridge.mjs +4 -4
- package/dist/modules/frontend-root.mjs +46 -46
- package/dist/modules/index.mjs +71 -65
- package/dist/modules/index.mjs.map +1 -1
- package/dist/modules/pages/scene.mjs +5 -5
- package/dist/modules/plugin.mjs +35 -35
- 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/api.mjs +1 -1
- package/dist/modules/plugins/display/backend.mjs +4 -4
- 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 +35 -35
- package/dist/modules/shell/frontend.mjs +1 -1
- package/dist/modules/viewer/catalog/backend.mjs +31 -31
- package/dist/modules/viewer/catalog/frontend.mjs +42 -42
- package/dist/modules/viewer/catalog/shared.mjs +20 -20
- package/dist/modules/viewer/catalog.mjs +51 -51
- 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 +7 -7
- package/dist/modules/viewer.mjs +51 -51
- 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 +7 -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 +7 -5
- 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-DXSSFAyM.js → embedded-BKEAtUD6.js} +2 -2
- package/dist/viewer/assets/{embedded-DXSSFAyM.js.map → embedded-BKEAtUD6.js.map} +1 -1
- package/dist/viewer/assets/main-BQrn6wsa.js +22 -0
- package/dist/viewer/assets/main-BQrn6wsa.js.map +1 -0
- package/dist/viewer/assets/{panels-lazy-DqCwhGd9.js → panels-lazy-C_Cs-76A.js} +2 -2
- package/dist/viewer/assets/{panels-lazy-DqCwhGd9.js.map → panels-lazy-C_Cs-76A.js.map} +1 -1
- package/dist/viewer/assets/panels-ui-DEDHJLuE.js +12 -0
- package/dist/viewer/assets/panels-ui-DEDHJLuE.js.map +1 -0
- package/dist/viewer/assets/style-CcYzhsIZ.css +2 -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 +4 -4
- package/dist/viewer/panels.js +1 -1
- package/package.json +2 -2
- package/scripts/verify-runtime-content-engine.mjs +7 -4
- package/skills/forgeax-view-cli/SKILL.md +11 -0
- package/dist/modules/chunks/chunk-27XASYEH.mjs.map +0 -7
- package/dist/modules/chunks/chunk-5YTMN435.mjs.map +0 -7
- package/dist/modules/chunks/chunk-6I7RY73G.mjs.map +0 -7
- package/dist/modules/chunks/chunk-6KM24NH6.mjs.map +0 -7
- package/dist/modules/chunks/chunk-DWT3TA6M.mjs.map +0 -7
- package/dist/modules/chunks/chunk-E3Z7GLFU.mjs.map +0 -7
- package/dist/modules/chunks/chunk-EZSGDSCC.mjs.map +0 -7
- package/dist/modules/chunks/chunk-FNRGLCZW.mjs.map +0 -7
- package/dist/modules/chunks/chunk-HWZCLROY.mjs.map +0 -7
- package/dist/modules/chunks/chunk-IJPWKKIU.mjs.map +0 -7
- package/dist/modules/chunks/chunk-LZ57Y73Z.mjs.map +0 -7
- package/dist/modules/chunks/chunk-OQXDADAS.mjs.map +0 -7
- package/dist/modules/chunks/chunk-QELNKFSI.mjs +0 -10
- package/dist/modules/chunks/chunk-QELNKFSI.mjs.map +0 -7
- package/dist/modules/chunks/chunk-VKNIYV2W.mjs.map +0 -7
- package/dist/modules/chunks/chunk-YLCJNKIW.mjs.map +0 -7
- package/dist/viewer/assets/main-CI6ZQziX.js +0 -22
- package/dist/viewer/assets/main-CI6ZQziX.js.map +0 -1
- package/dist/viewer/assets/panels-ui-CfUtl68h.js +0 -12
- package/dist/viewer/assets/panels-ui-CfUtl68h.js.map +0 -1
- package/dist/viewer/assets/style-gOtSMZif.css +0 -2
- /package/dist/modules/chunks/{chunk-EWSCJF77.mjs.map → chunk-2CMCY54A.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-YFQGSDK3.mjs.map → chunk-45WL24XN.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-FMCHH5R4.mjs.map → chunk-4FYKRL46.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-VW2ZF3P4.mjs.map → chunk-4MJHVZMB.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-XQYF2P6M.mjs.map → chunk-5HVXQEO3.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-XMP4THLF.mjs.map → chunk-66LM6NO6.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-ZGOGO7SS.mjs.map → chunk-6J27SWMY.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-JK7K7RG3.mjs.map → chunk-6VK7HB4X.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-HRKW766Y.mjs.map → chunk-6WZZ7TIC.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-U64FRQKP.mjs.map → chunk-7MWZK7HS.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-F5RLQAPN.mjs.map → chunk-A7OGXJAV.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-QUFVUMSY.mjs.map → chunk-AUINYWZP.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-PZIAKZJC.mjs.map → chunk-B24VYGHV.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-X4NNZ5X6.mjs.map → chunk-C2AMOM7H.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-IZAHIOFU.mjs.map → chunk-C3WVSJZF.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-2Z5KEV6L.mjs.map → chunk-CAXCOZ7Y.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-B6QUJ33G.mjs.map → chunk-CXFQME65.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-U6UMATPV.mjs.map → chunk-CYU3WWN6.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-AGVLPYVE.mjs.map → chunk-D2LZIQE2.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-YNHEYXDG.mjs.map → chunk-DOU4MNMQ.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-ZIDEETK4.mjs.map → chunk-E4G4HDOC.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-ZHO2G4JR.mjs.map → chunk-EZAJ66NW.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-APD2EWSZ.mjs.map → chunk-FIWL6TQS.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-U5J7OTEB.mjs.map → chunk-FSSARTVM.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-47RJSHLM.mjs.map → chunk-FXXPWAXM.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-D2RCKG7Q.mjs.map → chunk-G2QCXN56.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-WVU3CQ62.mjs.map → chunk-GUVUL6D2.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-E3PJGTLI.mjs.map → chunk-IGIELQZ2.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-5PHAXNFO.mjs.map → chunk-IMDR26Y3.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-55F55BQY.mjs.map → chunk-JVOHFCI4.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-K2QZRFLE.mjs.map → chunk-KJTMDFFX.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-KX2WU5Z6.mjs.map → chunk-KPLESRQY.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-PW5CE2Y6.mjs.map → chunk-KUOWDTI6.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-INTTYJVW.mjs.map → chunk-LBQ6DFMP.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-OKQ5RBKO.mjs.map → chunk-LVWHM3UN.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-STQPRNEO.mjs.map → chunk-MLXRIWJA.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-D25SR5FS.mjs.map → chunk-N2SH3JGI.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-7IGFAI5H.mjs.map → chunk-O5QX6H3U.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-46UEGAXY.mjs.map → chunk-Q7M7VUOZ.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-XE6ITXHT.mjs.map → chunk-QB33CMEU.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-KAGFU64Y.mjs.map → chunk-QW2VT3XB.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-U5R6MVM4.mjs.map → chunk-RFTLGEB5.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-P5XMFZY4.mjs.map → chunk-SFB5BDTB.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-4D3Q7K44.mjs.map → chunk-SNICHQJP.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-CX5WREJC.mjs.map → chunk-SPGFO2TA.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-H256DQT6.mjs.map → chunk-TMPTVIAP.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-CKYXAT7H.mjs.map → chunk-VC4OEPDH.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-RJVOH7G2.mjs.map → chunk-VKWEA6NG.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-PVP5YBNR.mjs.map → chunk-WFM434WJ.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-TXLD7JI5.mjs.map → chunk-WJNASQF2.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-357UOBAS.mjs.map → chunk-XUNDH3E7.mjs.map} +0 -0
- /package/dist/modules/chunks/{chunk-PJFFCRRD.mjs.map → chunk-YDARD4EP.mjs.map} +0 -0
package/README.md
CHANGED
|
@@ -276,10 +276,51 @@ loop and retains the World, tools and renderer; explicit hidden capture still
|
|
|
276
276
|
uses that same App. Revealing the page restores layout and rendering. Independent
|
|
277
277
|
game and Play execution keep their own lifetimes and are not paused by View.
|
|
278
278
|
|
|
279
|
-
The Content Browser
|
|
280
|
-
|
|
279
|
+
The Content Browser joins the Engine catalog with Pack's bounded source index.
|
|
280
|
+
`summary.get` is the bounded workspace query for external status readers:
|
|
281
|
+
it exposes project identity, phase, browser generation, revision and at most 16
|
|
282
|
+
target identities, with a `hasMoreTargets` flag. It does not serialize catalog
|
|
283
|
+
assets, resource opens or page selection. The full `tabs.get` snapshot remains
|
|
284
|
+
the View UI state contract.
|
|
285
|
+
`pages.list` separately returns at most 16 connected page IDs with their bounded
|
|
286
|
+
workspace summaries. `pack.reveal` is a public workspace operation: the same
|
|
287
|
+
project/source revision and optional page ID can be submitted through the API,
|
|
288
|
+
`forgeax view workspace call`, or another client adapter. Its result is a
|
|
289
|
+
visible-page receipt or an explicit non-action failure; no adapter owns reveal.
|
|
290
|
+
Zero-output and malformed Pack sources remain file cards with diagnostics, and
|
|
291
|
+
one-output Packs retain their source parent. Activating a Pack only expands it;
|
|
292
|
+
selecting a specific output opens the existing Engine preview route. Assets from
|
|
281
293
|
`.pack.ts` show their Catalog `sourceKey` when present; GUIDs remain their
|
|
282
|
-
operation identity.
|
|
294
|
+
operation identity. A page-scoped Pack reveal checks project/source revision,
|
|
295
|
+
targets one authenticated frontend connection, and accepts `shown` only after
|
|
296
|
+
the Editor, Content Browser Dock panel and Pack card are visible. Workspace
|
|
297
|
+
selection/open requests and Display run binding belong to that frontend
|
|
298
|
+
connection; disconnect retires its projection and pending reveal.
|
|
299
|
+
Reveal temporarily admits only the addressed Pack through the current filters.
|
|
300
|
+
Search and filter preferences stay intact; manual navigation cancels the focus.
|
|
301
|
+
Request cancellation and timeout retire the pending receipt and notify the exact
|
|
302
|
+
frontend to stop remaining asynchronous navigation. A late visible acknowledgment
|
|
303
|
+
cannot complete a cancelled request; an old cancellation cannot cancel a newer reveal.
|
|
304
|
+
The entry URL uses `view-frontend`; after a project opens, the full View shell
|
|
305
|
+
uses the exact `forgeax-workspace:<sessionId>:<targetId>` caller of the current
|
|
306
|
+
headed project target. Both are page sessions, while other Engine target callers
|
|
307
|
+
cannot claim the View page. Each fresh entry document opens its own Engine
|
|
308
|
+
session from the confirmed project intent; it does not copy another document's
|
|
309
|
+
headed target URL. Each target still owns one accepted browser caller. Refresh
|
|
310
|
+
retains that target and replaces only its browser generation. View selection,
|
|
311
|
+
resource opens and Display bindings belong to the exact frontend connection.
|
|
312
|
+
The Pack receipt rechecks the source revision and project at acknowledgment.
|
|
313
|
+
|
|
314
|
+
> [!NOTE]
|
|
315
|
+
> A page-less CLI client can still use page operations such as `tabs.get`,
|
|
316
|
+
> `scene.select`, and `asset.open` when exactly one View frontend is connected;
|
|
317
|
+
> the Broker directs those calls to that page's session. With multiple pages,
|
|
318
|
+
> these operations return `view-page-ambiguous` before changing page or Engine
|
|
319
|
+
> state. `summary.get` and Engine project facts remain shared reads.
|
|
320
|
+
> Use `pages.list` to choose an exact page, then `pack.reveal` to direct a
|
|
321
|
+
> revision-bound Pack navigation. Both operations have CLI entry points.
|
|
322
|
+
|
|
323
|
+
Hierarchy and Inspector use the optional live target tools
|
|
283
324
|
plugin, reporting capability errors when absent. `dev:ui` starts a private
|
|
284
325
|
fixture Host and serves the same Viewer code path as `dev`. Its catalog and
|
|
285
326
|
scene responses arrive through the Host workspace API. Use
|
|
@@ -700,11 +741,14 @@ const api = await connectViewWorkspace({
|
|
|
700
741
|
const tabId = 'forgeax-user-workspace';
|
|
701
742
|
const state = await api.openProject(projectRoot, { tabId });
|
|
702
743
|
const projectId = state.project.id;
|
|
703
|
-
const
|
|
744
|
+
const targetId = state.projectTarget.targetId;
|
|
745
|
+
const targetGeneration = state.projectTarget.generation;
|
|
746
|
+
const target = { projectId, tabId, targetId, targetGeneration };
|
|
747
|
+
const { assets } = await api.listAssets(projectId, target);
|
|
704
748
|
const scene = assets.find((asset) => asset.kind === 'scene');
|
|
705
749
|
if (scene) {
|
|
706
|
-
await api.inspectAsset(scene.guid,
|
|
707
|
-
await api.openAsset(scene.guid,
|
|
750
|
+
await api.inspectAsset(scene.guid, target);
|
|
751
|
+
await api.openAsset(scene.guid, target);
|
|
708
752
|
}
|
|
709
753
|
```
|
|
710
754
|
|
|
@@ -714,8 +758,8 @@ Authored-asset operations are projections of Engine CLI / ScriptablePack / ToolC
|
|
|
714
758
|
|:--|:--|:--|
|
|
715
759
|
| `assets.list` | DevKit `assetList({ root })` / existing `listAssets` → `PackEntry[]` | session catalog snapshot, including optional `sourceKey` |
|
|
716
760
|
| `asset.inspect` | DevKit `assetInspect({ root, subject })` plus ScriptablePack `inspect(sourcePath)` / gateway `inspect-meta` | session inspection of PackEntry + `ScriptablePackMetaJson` |
|
|
717
|
-
| `asset
|
|
718
|
-
| `asset
|
|
761
|
+
| `asset.source.rebuild` | ScriptablePack `rebuild(sourcePath, 'rebuild')` / gateway `rebuild` / ToolClient `asset.source.rebuild` | forwarding + CAS `expectedRevision` |
|
|
762
|
+
| `asset.source.cold-cook` | ScriptablePack `rebuild(sourcePath, 'cold-cook')` / gateway `cold-cook` / ToolClient `asset.source.cold-cook` | forwarding + CAS `expectedRevision` |
|
|
719
763
|
|
|
720
764
|
Codex edits `pack.ts` through the workspace files. The browser shell places the `sourcePath`-grouped Engine catalog and exact viewport on the left, and a **read-only** Engine meta inspector on the right (`packageId`, `importer`, `subAssets`, `cookReceiptUrl`). `Rebuild` / `Cold-cook` only forward Engine cook. Selecting an already-previewed GUID inspects again and does not open a second preview surface. Missing Engine methods fail closed with `view-engine-capability-unavailable`. Engine revision conflicts surface as `pack-source-revision-conflict`.
|
|
721
765
|
|
|
@@ -748,7 +792,7 @@ const workspaceEngine = {
|
|
|
748
792
|
assetInspect: (input) => assetInspectCommand({ root: input.root, subject: input.subject }),
|
|
749
793
|
openPreview,
|
|
750
794
|
pack: scriptablePackAuthoringPort, // inspect / preflight / rebuild
|
|
751
|
-
tools: toolClient, // ToolClient.run('asset
|
|
795
|
+
tools: toolClient, // ToolClient.run('asset.source.rebuild' | 'asset.source.cold-cook')
|
|
752
796
|
};
|
|
753
797
|
const view = await startView({ platform, workspaceEngine });
|
|
754
798
|
```
|
|
@@ -833,3 +877,17 @@ metadata alone is not sufficient build identity.
|
|
|
833
877
|
|
|
834
878
|
The required project dialog is modeless: Scene still requires a confirmed project,
|
|
835
879
|
while artifact pages and workspace navigation remain available before opening one.
|
|
880
|
+
|
|
881
|
+
## Public operation naming
|
|
882
|
+
|
|
883
|
+
Resource segments and actions retain the same order across API, CLI and MCP.
|
|
884
|
+
The View ToolApi ID `view.workspace.pack.reveal` is the CLI path
|
|
885
|
+
`forgeax view workspace pack reveal`; its relative workspace API operation is
|
|
886
|
+
`pack.reveal`. Read workspace facts with `summary.get` /
|
|
887
|
+
`forgeax view workspace summary get`. The authenticated backend CLI accepts
|
|
888
|
+
`--input` containing the ordinary operation arguments and uses the same owner
|
|
889
|
+
authorization. Frontend requests retain the versioned workspace envelope.
|
|
890
|
+
Engine-owned source operations use `asset.source.rebuild` and
|
|
891
|
+
`asset.source.cold-cook`; scene-tree queries use `scene.tree.get`.
|
|
892
|
+
CLI contribution metadata uses the actual operation ID without a second
|
|
893
|
+
`forgeax.` prefix or duplicate inspector namespace.
|
package/dist/build-revision.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"codeRevision":"
|
|
1
|
+
{"codeRevision":"d9f8f160baa8c79a98e292a9cfeb82afd6b984ce9994c42ebf2e4e7ce2c72a91","viewerDigest":"c2a8f0d729c9c6f35f59548d9432fc158b5424e24db7d2be69e2a07b103af02b"}
|
package/dist/modules/backend.mjs
CHANGED
|
@@ -2,45 +2,45 @@ import {
|
|
|
2
2
|
createViewBackend,
|
|
3
3
|
createViewHostBinding,
|
|
4
4
|
createViewPlatformBinding
|
|
5
|
-
} from "./chunks/chunk-
|
|
6
|
-
import "./chunks/chunk-
|
|
7
|
-
import "./chunks/chunk-
|
|
5
|
+
} from "./chunks/chunk-VSJOW7J4.mjs";
|
|
6
|
+
import "./chunks/chunk-5HVXQEO3.mjs";
|
|
7
|
+
import "./chunks/chunk-I32EONBF.mjs";
|
|
8
8
|
import "./chunks/chunk-GQANC3HH.mjs";
|
|
9
9
|
import "./chunks/chunk-YY4G5LVX.mjs";
|
|
10
|
-
import "./chunks/chunk-
|
|
11
|
-
import "./chunks/chunk-
|
|
12
|
-
import "./chunks/chunk-
|
|
13
|
-
import "./chunks/chunk-
|
|
14
|
-
import "./chunks/chunk-
|
|
15
|
-
import "./chunks/chunk-
|
|
16
|
-
import "./chunks/chunk-
|
|
17
|
-
import "./chunks/chunk-
|
|
18
|
-
import "./chunks/chunk-
|
|
19
|
-
import "./chunks/chunk-
|
|
20
|
-
import "./chunks/chunk-
|
|
21
|
-
import "./chunks/chunk-
|
|
22
|
-
import "./chunks/chunk-
|
|
23
|
-
import "./chunks/chunk-
|
|
24
|
-
import "./chunks/chunk-
|
|
25
|
-
import "./chunks/chunk-
|
|
26
|
-
import "./chunks/chunk-
|
|
27
|
-
import "./chunks/chunk-
|
|
28
|
-
import "./chunks/chunk-
|
|
29
|
-
import "./chunks/chunk-
|
|
30
|
-
import "./chunks/chunk-
|
|
10
|
+
import "./chunks/chunk-3Y5WN22T.mjs";
|
|
11
|
+
import "./chunks/chunk-YU3HRQX7.mjs";
|
|
12
|
+
import "./chunks/chunk-CN6YN4HP.mjs";
|
|
13
|
+
import "./chunks/chunk-JVOHFCI4.mjs";
|
|
14
|
+
import "./chunks/chunk-FSSARTVM.mjs";
|
|
15
|
+
import "./chunks/chunk-CYOLEAAY.mjs";
|
|
16
|
+
import "./chunks/chunk-N2SH3JGI.mjs";
|
|
17
|
+
import "./chunks/chunk-D2LZIQE2.mjs";
|
|
18
|
+
import "./chunks/chunk-O5QX6H3U.mjs";
|
|
19
|
+
import "./chunks/chunk-LVWHM3UN.mjs";
|
|
20
|
+
import "./chunks/chunk-ZRE7BDDB.mjs";
|
|
21
|
+
import "./chunks/chunk-2CMCY54A.mjs";
|
|
22
|
+
import "./chunks/chunk-C2AMOM7H.mjs";
|
|
23
|
+
import "./chunks/chunk-4FYKRL46.mjs";
|
|
24
|
+
import "./chunks/chunk-MLXRIWJA.mjs";
|
|
25
|
+
import "./chunks/chunk-B24VYGHV.mjs";
|
|
26
|
+
import "./chunks/chunk-AUINYWZP.mjs";
|
|
27
|
+
import "./chunks/chunk-6WZZ7TIC.mjs";
|
|
28
|
+
import "./chunks/chunk-KPLESRQY.mjs";
|
|
29
|
+
import "./chunks/chunk-CXFQME65.mjs";
|
|
30
|
+
import "./chunks/chunk-YDARD4EP.mjs";
|
|
31
31
|
import "./chunks/chunk-IM3H4F4X.mjs";
|
|
32
|
-
import "./chunks/chunk-
|
|
33
|
-
import "./chunks/chunk-
|
|
32
|
+
import "./chunks/chunk-KJTMDFFX.mjs";
|
|
33
|
+
import "./chunks/chunk-TMPTVIAP.mjs";
|
|
34
34
|
import "./chunks/chunk-QW3ZY2AD.mjs";
|
|
35
|
-
import "./chunks/chunk-
|
|
36
|
-
import "./chunks/chunk-
|
|
37
|
-
import "./chunks/chunk-
|
|
38
|
-
import "./chunks/chunk-
|
|
39
|
-
import "./chunks/chunk-
|
|
35
|
+
import "./chunks/chunk-PCQNUFDL.mjs";
|
|
36
|
+
import "./chunks/chunk-DC5JP46Y.mjs";
|
|
37
|
+
import "./chunks/chunk-E4G4HDOC.mjs";
|
|
38
|
+
import "./chunks/chunk-QW2VT3XB.mjs";
|
|
39
|
+
import "./chunks/chunk-RFTLGEB5.mjs";
|
|
40
40
|
import "./chunks/chunk-J5B4LX5H.mjs";
|
|
41
|
-
import "./chunks/chunk-
|
|
42
|
-
import "./chunks/chunk-
|
|
43
|
-
import "./chunks/chunk-
|
|
41
|
+
import "./chunks/chunk-SFB5BDTB.mjs";
|
|
42
|
+
import "./chunks/chunk-WJNASQF2.mjs";
|
|
43
|
+
import "./chunks/chunk-QJHQN6OD.mjs";
|
|
44
44
|
import "./chunks/chunk-4XEXLHX4.mjs";
|
|
45
45
|
import "./chunks/chunk-QAXALJEY.mjs";
|
|
46
46
|
import "./chunks/chunk-JU5PV2T2.mjs";
|
package/dist/modules/browser.mjs
CHANGED
|
@@ -6,41 +6,41 @@ import {
|
|
|
6
6
|
VIEW_EXTENSION_ID,
|
|
7
7
|
createViewExtensionTransport,
|
|
8
8
|
createViewExtensionWorkspaceClient
|
|
9
|
-
} from "./chunks/chunk-
|
|
9
|
+
} from "./chunks/chunk-2RUKPDIE.mjs";
|
|
10
10
|
import {
|
|
11
11
|
connectViewFrontend,
|
|
12
12
|
mountViewViewer,
|
|
13
13
|
mountViewWorkspace
|
|
14
|
-
} from "./chunks/chunk-
|
|
15
|
-
import "./chunks/chunk-
|
|
16
|
-
import "./chunks/chunk-
|
|
17
|
-
import "./chunks/chunk-
|
|
18
|
-
import "./chunks/chunk-
|
|
19
|
-
import "./chunks/chunk-
|
|
20
|
-
import "./chunks/chunk-
|
|
21
|
-
import "./chunks/chunk-
|
|
22
|
-
import "./chunks/chunk-
|
|
23
|
-
import "./chunks/chunk-
|
|
24
|
-
import "./chunks/chunk-
|
|
25
|
-
import "./chunks/chunk-
|
|
14
|
+
} from "./chunks/chunk-G2QCXN56.mjs";
|
|
15
|
+
import "./chunks/chunk-66LM6NO6.mjs";
|
|
16
|
+
import "./chunks/chunk-VKWEA6NG.mjs";
|
|
17
|
+
import "./chunks/chunk-IGIELQZ2.mjs";
|
|
18
|
+
import "./chunks/chunk-DOU4MNMQ.mjs";
|
|
19
|
+
import "./chunks/chunk-7MWZK7HS.mjs";
|
|
20
|
+
import "./chunks/chunk-CYU3WWN6.mjs";
|
|
21
|
+
import "./chunks/chunk-45WL24XN.mjs";
|
|
22
|
+
import "./chunks/chunk-EZAJ66NW.mjs";
|
|
23
|
+
import "./chunks/chunk-SPGFO2TA.mjs";
|
|
24
|
+
import "./chunks/chunk-UZH2664E.mjs";
|
|
25
|
+
import "./chunks/chunk-A7OGXJAV.mjs";
|
|
26
26
|
import {
|
|
27
27
|
ViewWorkspaceInputController,
|
|
28
28
|
ViewWorkspaceShell,
|
|
29
29
|
createBrowserPagePresentation
|
|
30
|
-
} from "./chunks/chunk-
|
|
31
|
-
import "./chunks/chunk-
|
|
32
|
-
import "./chunks/chunk-
|
|
30
|
+
} from "./chunks/chunk-GRDCA6LD.mjs";
|
|
31
|
+
import "./chunks/chunk-SNICHQJP.mjs";
|
|
32
|
+
import "./chunks/chunk-WFM434WJ.mjs";
|
|
33
33
|
import {
|
|
34
34
|
createViewSlotRegistry
|
|
35
35
|
} from "./chunks/chunk-GQOXQ4AV.mjs";
|
|
36
|
-
import "./chunks/chunk-
|
|
36
|
+
import "./chunks/chunk-LBQ6DFMP.mjs";
|
|
37
37
|
import "./chunks/chunk-Q2NO32WU.mjs";
|
|
38
|
-
import "./chunks/chunk-
|
|
39
|
-
import "./chunks/chunk-
|
|
40
|
-
import "./chunks/chunk-
|
|
38
|
+
import "./chunks/chunk-UWJYROKS.mjs";
|
|
39
|
+
import "./chunks/chunk-CYOLEAAY.mjs";
|
|
40
|
+
import "./chunks/chunk-N2SH3JGI.mjs";
|
|
41
41
|
import {
|
|
42
42
|
DISPLAY_SURFACE_ID
|
|
43
|
-
} from "./chunks/chunk-
|
|
43
|
+
} from "./chunks/chunk-D2LZIQE2.mjs";
|
|
44
44
|
import {
|
|
45
45
|
VIEW_INSPECTOR_API_VERSION,
|
|
46
46
|
VIEW_INSPECTOR_OPERATIONS,
|
|
@@ -50,41 +50,44 @@ import {
|
|
|
50
50
|
ViewInspectorPanel,
|
|
51
51
|
createInspectorRequest,
|
|
52
52
|
createViewInspectorToolContributions
|
|
53
|
-
} from "./chunks/chunk-
|
|
54
|
-
import "./chunks/chunk-
|
|
55
|
-
import "./chunks/chunk-
|
|
56
|
-
import "./chunks/chunk-
|
|
57
|
-
import "./chunks/chunk-
|
|
58
|
-
import "./chunks/chunk-
|
|
59
|
-
import "./chunks/chunk-
|
|
60
|
-
import "./chunks/chunk-
|
|
61
|
-
import "./chunks/chunk-
|
|
62
|
-
import "./chunks/chunk-
|
|
63
|
-
import "./chunks/chunk-
|
|
64
|
-
import "./chunks/chunk-
|
|
65
|
-
import "./chunks/chunk-
|
|
53
|
+
} from "./chunks/chunk-O5QX6H3U.mjs";
|
|
54
|
+
import "./chunks/chunk-LVWHM3UN.mjs";
|
|
55
|
+
import "./chunks/chunk-ZRE7BDDB.mjs";
|
|
56
|
+
import "./chunks/chunk-2CMCY54A.mjs";
|
|
57
|
+
import "./chunks/chunk-C2AMOM7H.mjs";
|
|
58
|
+
import "./chunks/chunk-4FYKRL46.mjs";
|
|
59
|
+
import "./chunks/chunk-MLXRIWJA.mjs";
|
|
60
|
+
import "./chunks/chunk-B24VYGHV.mjs";
|
|
61
|
+
import "./chunks/chunk-AUINYWZP.mjs";
|
|
62
|
+
import "./chunks/chunk-6WZZ7TIC.mjs";
|
|
63
|
+
import "./chunks/chunk-KPLESRQY.mjs";
|
|
64
|
+
import "./chunks/chunk-CXFQME65.mjs";
|
|
65
|
+
import "./chunks/chunk-YDARD4EP.mjs";
|
|
66
66
|
import "./chunks/chunk-IM3H4F4X.mjs";
|
|
67
|
-
import "./chunks/chunk-
|
|
68
|
-
import "./chunks/chunk-
|
|
67
|
+
import "./chunks/chunk-KJTMDFFX.mjs";
|
|
68
|
+
import "./chunks/chunk-TMPTVIAP.mjs";
|
|
69
69
|
import "./chunks/chunk-QW3ZY2AD.mjs";
|
|
70
70
|
import {
|
|
71
71
|
ViewWorkspaceClient,
|
|
72
72
|
createViewWorkspaceClient
|
|
73
|
-
} from "./chunks/chunk-
|
|
74
|
-
import "./chunks/chunk-
|
|
75
|
-
import "./chunks/chunk-
|
|
76
|
-
import "./chunks/chunk-
|
|
77
|
-
import "./chunks/chunk-
|
|
78
|
-
import "./chunks/chunk-
|
|
79
|
-
import "./chunks/chunk-
|
|
73
|
+
} from "./chunks/chunk-PCQNUFDL.mjs";
|
|
74
|
+
import "./chunks/chunk-DC5JP46Y.mjs";
|
|
75
|
+
import "./chunks/chunk-E4G4HDOC.mjs";
|
|
76
|
+
import "./chunks/chunk-QW2VT3XB.mjs";
|
|
77
|
+
import "./chunks/chunk-RFTLGEB5.mjs";
|
|
78
|
+
import "./chunks/chunk-FIWL6TQS.mjs";
|
|
79
|
+
import "./chunks/chunk-XUNDH3E7.mjs";
|
|
80
80
|
import "./chunks/chunk-J5B4LX5H.mjs";
|
|
81
|
-
import "./chunks/chunk-
|
|
82
|
-
import "./chunks/chunk-
|
|
83
|
-
import "./chunks/chunk-
|
|
84
|
-
import "./chunks/chunk-
|
|
81
|
+
import "./chunks/chunk-GUVUL6D2.mjs";
|
|
82
|
+
import "./chunks/chunk-VC4OEPDH.mjs";
|
|
83
|
+
import "./chunks/chunk-SFB5BDTB.mjs";
|
|
84
|
+
import "./chunks/chunk-WJNASQF2.mjs";
|
|
85
85
|
import {
|
|
86
86
|
VIEW_DISPLAY_TAB_ID,
|
|
87
87
|
VIEW_FILE_GET_SERVICE,
|
|
88
|
+
VIEW_PACK_REVEAL_ACK_SERVICE,
|
|
89
|
+
VIEW_PACK_REVEAL_TOPIC,
|
|
90
|
+
VIEW_PACK_SOURCES_SERVICE,
|
|
88
91
|
VIEW_PAGE_TYPES,
|
|
89
92
|
VIEW_WORKSPACE_API_VERSION,
|
|
90
93
|
VIEW_WORKSPACE_COOK_MODES,
|
|
@@ -115,9 +118,9 @@ import {
|
|
|
115
118
|
workspaceError,
|
|
116
119
|
workspaceInspectionFactRows,
|
|
117
120
|
workspaceUiFingerprint
|
|
118
|
-
} from "./chunks/chunk-
|
|
121
|
+
} from "./chunks/chunk-QJHQN6OD.mjs";
|
|
119
122
|
import "./chunks/chunk-4XEXLHX4.mjs";
|
|
120
|
-
import "./chunks/chunk-
|
|
123
|
+
import "./chunks/chunk-6J27SWMY.mjs";
|
|
121
124
|
import "./chunks/chunk-QAXALJEY.mjs";
|
|
122
125
|
import "./chunks/chunk-FLGC65SR.mjs";
|
|
123
126
|
export {
|
|
@@ -131,6 +134,9 @@ export {
|
|
|
131
134
|
VIEW_INSPECTOR_SERVICES,
|
|
132
135
|
VIEW_INSPECTOR_TOPIC,
|
|
133
136
|
VIEW_LAYOUT_HOST_ID,
|
|
137
|
+
VIEW_PACK_REVEAL_ACK_SERVICE,
|
|
138
|
+
VIEW_PACK_REVEAL_TOPIC,
|
|
139
|
+
VIEW_PACK_SOURCES_SERVICE,
|
|
134
140
|
VIEW_PAGE_TYPES,
|
|
135
141
|
VIEW_WORKSPACE_API_VERSION,
|
|
136
142
|
VIEW_WORKSPACE_COOK_MODES,
|
|
@@ -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";
|
|
@@ -44,4 +44,4 @@ export {
|
|
|
44
44
|
TITLE_I18N_KEY,
|
|
45
45
|
identity_exports
|
|
46
46
|
};
|
|
47
|
-
//# sourceMappingURL=chunk-
|
|
47
|
+
//# sourceMappingURL=chunk-2CMCY54A.mjs.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createViewWorkspaceClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PCQNUFDL.mjs";
|
|
4
4
|
import {
|
|
5
5
|
VIEW_FILE_GET_SERVICE,
|
|
6
6
|
VIEW_WORKSPACE_DOMAIN_OPERATIONS,
|
|
7
7
|
VIEW_WORKSPACE_SERVICES,
|
|
8
8
|
requireWorkspaceString,
|
|
9
9
|
workspaceError
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-QJHQN6OD.mjs";
|
|
11
11
|
|
|
12
12
|
// packages/view-workspace-core/src/extension-bridge.ts
|
|
13
13
|
var VIEW_EXTENSION_ID = "@forgeax-extension/view";
|
|
@@ -16,7 +16,7 @@ var VIEW_EXTENSION_CAPABILITIES = Object.freeze({
|
|
|
16
16
|
author: "view.workspace.author",
|
|
17
17
|
inspect: "view.plugins.read"
|
|
18
18
|
});
|
|
19
|
-
var AUTHORING_OPERATIONS = /* @__PURE__ */ new Set(["asset
|
|
19
|
+
var AUTHORING_OPERATIONS = /* @__PURE__ */ new Set(["asset.source.rebuild", "asset.source.cold-cook"]);
|
|
20
20
|
var WORKSPACE_OPERATIONS = new Set(VIEW_WORKSPACE_DOMAIN_OPERATIONS);
|
|
21
21
|
function requiredCapability(service, request) {
|
|
22
22
|
const operation = request && typeof request === "object" && "operation" in request ? request.operation : void 0;
|
|
@@ -90,4 +90,4 @@ export {
|
|
|
90
90
|
createViewExtensionTransport,
|
|
91
91
|
createViewExtensionWorkspaceClient
|
|
92
92
|
};
|
|
93
|
-
//# sourceMappingURL=chunk-
|
|
93
|
+
//# sourceMappingURL=chunk-2RUKPDIE.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/view-workspace-core/src/extension-bridge.ts"],
|
|
4
|
-
"sourcesContent": ["import type { HostRequestOptions } from '@forgeax/engine-host/transport';\nimport type { WorkspaceRequest } from './contract.ts';\nexport type ViewExtensionInvoke = (input: { extensionId: string; capability: string; service: string; request: unknown; signal?: AbortSignal; generation?: number }) => unknown | Promise<unknown>;\nexport type ViewExtensionOptions = { invoke: ViewExtensionInvoke; extensionId?: string; capabilities?: readonly string[] };\nimport { VIEW_FILE_GET_SERVICE, VIEW_WORKSPACE_SERVICES, VIEW_WORKSPACE_DOMAIN_OPERATIONS, workspaceError, requireWorkspaceString } from './contract.ts';\nimport { createViewWorkspaceClient } from './client.ts';\n\nexport const VIEW_EXTENSION_ID = '@forgeax-extension/view';\nexport const VIEW_EXTENSION_CAPABILITIES = Object.freeze({\n read: 'view.workspace.read',\n author: 'view.workspace.author',\n inspect: 'view.plugins.read',\n});\n\nconst AUTHORING_OPERATIONS = new Set(['asset
|
|
4
|
+
"sourcesContent": ["import type { HostRequestOptions } from '@forgeax/engine-host/transport';\nimport type { WorkspaceRequest } from './contract.ts';\nexport type ViewExtensionInvoke = (input: { extensionId: string; capability: string; service: string; request: unknown; signal?: AbortSignal; generation?: number }) => unknown | Promise<unknown>;\nexport type ViewExtensionOptions = { invoke: ViewExtensionInvoke; extensionId?: string; capabilities?: readonly string[] };\nimport { VIEW_FILE_GET_SERVICE, VIEW_WORKSPACE_SERVICES, VIEW_WORKSPACE_DOMAIN_OPERATIONS, workspaceError, requireWorkspaceString } from './contract.ts';\nimport { createViewWorkspaceClient } from './client.ts';\n\nexport const VIEW_EXTENSION_ID = '@forgeax-extension/view';\nexport const VIEW_EXTENSION_CAPABILITIES = Object.freeze({\n read: 'view.workspace.read',\n author: 'view.workspace.author',\n inspect: 'view.plugins.read',\n});\n\nconst AUTHORING_OPERATIONS = new Set(['asset.source.rebuild', 'asset.source.cold-cook']);\nconst WORKSPACE_OPERATIONS = new Set(VIEW_WORKSPACE_DOMAIN_OPERATIONS);\n\nfunction requiredCapability(service: string, request: unknown) {\n const operation = request && typeof request === 'object' && 'operation' in request ? request.operation : undefined;\n if (service === VIEW_WORKSPACE_SERVICES.call) {\n if (typeof operation !== 'string' || !WORKSPACE_OPERATIONS.has(operation)) {\n throw workspaceError(\n 'view-extension-operation-unknown',\n 'operation to be declared by the View workspace contract',\n 'Refresh the View extension capability descriptor.',\n { operation },\n );\n }\n return AUTHORING_OPERATIONS.has(operation)\n ? VIEW_EXTENSION_CAPABILITIES.author\n : VIEW_EXTENSION_CAPABILITIES.read;\n }\n if (service === VIEW_WORKSPACE_SERVICES.capabilities) return VIEW_EXTENSION_CAPABILITIES.read;\n if (service === VIEW_FILE_GET_SERVICE) return VIEW_EXTENSION_CAPABILITIES.read;\n throw workspaceError(\n 'view-extension-service-unknown',\n 'service to be declared by the View extension contract',\n 'Use the typed View workspace client rather than a raw Host service name.',\n { service },\n );\n}\n\n/**\n * Browser-side adapter for an Editor-issued, session-bound View capability.\n * The host authenticates the iframe; this transport never receives or forwards\n * the resident Host endpoint or its bearer token.\n */\nexport function createViewExtensionTransport({\n invoke,\n extensionId = VIEW_EXTENSION_ID,\n capabilities = [],\n}: Partial<ViewExtensionOptions> = {}) {\n if (typeof invoke !== 'function') {\n throw new TypeError('View extension transport requires a host capability invoke function');\n }\n if (extensionId !== VIEW_EXTENSION_ID) {\n throw new TypeError(`View extension transport only admits ${VIEW_EXTENSION_ID}`);\n }\n const granted = new Set(capabilities);\n return Object.freeze({\n request<TPayload, TResult>(service: string, request: TPayload, options: HostRequestOptions = {}): Promise<TResult> {\n const capability = requiredCapability(service, request);\n if (!granted.has(capability)) {\n return Promise.reject(workspaceError(\n 'view-extension-capability-denied',\n `the ${capability} capability to be granted`,\n 'Install or re-authorize the View extension with the required permission.',\n { extensionId, capability, service, operation: (request as Partial<WorkspaceRequest> | undefined)?.operation },\n ));\n }\n const { signal, generation } = options;\n return Promise.resolve(invoke({\n extensionId,\n capability,\n service,\n request,\n ...(signal === undefined ? {} : { signal }),\n ...(generation === undefined ? {} : { generation }),\n })) as Promise<TResult>;\n },\n close() {},\n });\n}\n\nexport function createViewExtensionWorkspaceClient({ invoke, capabilities, clientId }: Partial<ViewExtensionOptions> & { clientId?: string } = {}) {\n return createViewWorkspaceClient({\n transport: createViewExtensionTransport({ invoke, capabilities }),\n clientId: requireWorkspaceString(clientId, 'clientId'),\n });\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;AAOO,IAAM,oBAAoB;AAC1B,IAAM,8BAA8B,OAAO,OAAO;AAAA,EACvD,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AACX,CAAC;AAED,IAAM,uBAAuB,oBAAI,IAAI,CAAC,wBAAwB,wBAAwB,CAAC;AACvF,IAAM,uBAAuB,IAAI,IAAI,gCAAgC;AAErE,SAAS,mBAAmB,SAAiB,SAAkB;AAC7D,QAAM,YAAY,WAAW,OAAO,YAAY,YAAY,eAAe,UAAU,QAAQ,YAAY;AACzG,MAAI,YAAY,wBAAwB,MAAM;AAC5C,QAAI,OAAO,cAAc,YAAY,CAAC,qBAAqB,IAAI,SAAS,GAAG;AACzE,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA,EAAE,UAAU;AAAA,MACd;AAAA,IACF;AACA,WAAO,qBAAqB,IAAI,SAAS,IACrC,4BAA4B,SAC5B,4BAA4B;AAAA,EAClC;AACA,MAAI,YAAY,wBAAwB,aAAc,QAAO,4BAA4B;AACzF,MAAI,YAAY,sBAAuB,QAAO,4BAA4B;AAC1E,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,EAAE,QAAQ;AAAA,EACZ;AACF;AAOO,SAAS,6BAA6B;AAAA,EAC3C;AAAA,EACA,cAAc;AAAA,EACd,eAAe,CAAC;AAClB,IAAmC,CAAC,GAAG;AACrC,MAAI,OAAO,WAAW,YAAY;AAChC,UAAM,IAAI,UAAU,qEAAqE;AAAA,EAC3F;AACA,MAAI,gBAAgB,mBAAmB;AACrC,UAAM,IAAI,UAAU,wCAAwC,iBAAiB,EAAE;AAAA,EACjF;AACA,QAAM,UAAU,IAAI,IAAI,YAAY;AACpC,SAAO,OAAO,OAAO;AAAA,IACnB,QAA2B,SAAiB,SAAmB,UAA8B,CAAC,GAAqB;AACjH,YAAM,aAAa,mBAAmB,SAAS,OAAO;AACtD,UAAI,CAAC,QAAQ,IAAI,UAAU,GAAG;AAC5B,eAAO,QAAQ,OAAO;AAAA,UACpB;AAAA,UACA,OAAO,UAAU;AAAA,UACjB;AAAA,UACA,EAAE,aAAa,YAAY,SAAS,WAAY,SAAmD,UAAU;AAAA,QAC/G,CAAC;AAAA,MACH;AACA,YAAM,EAAE,QAAQ,WAAW,IAAI;AAC/B,aAAO,QAAQ,QAAQ,OAAO;AAAA,QAC5B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAI,WAAW,SAAY,CAAC,IAAI,EAAE,OAAO;AAAA,QACzC,GAAI,eAAe,SAAY,CAAC,IAAI,EAAE,WAAW;AAAA,MACnD,CAAC,CAAC;AAAA,IACJ;AAAA,IACA,QAAQ;AAAA,IAAC;AAAA,EACX,CAAC;AACH;AAEO,SAAS,mCAAmC,EAAE,QAAQ,cAAc,SAAS,IAA2D,CAAC,GAAG;AACjJ,SAAO,0BAA0B;AAAA,IAC/B,WAAW,6BAA6B,EAAE,QAAQ,aAAa,CAAC;AAAA,IAChE,UAAU,uBAAuB,UAAU,UAAU;AAAA,EACvD,CAAC;AACH;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
openViewProject,
|
|
6
6
|
viewProjectOpenError
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-QB33CMEU.mjs";
|
|
8
8
|
import {
|
|
9
9
|
VIEW_PRODUCT_BACKEND_CATALOG
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-5HVXQEO3.mjs";
|
|
11
11
|
import {
|
|
12
12
|
startViewHostServer
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-FSSARTVM.mjs";
|
|
14
14
|
import {
|
|
15
15
|
resolveProjectIntent,
|
|
16
16
|
withProjectIntent
|
|
@@ -19,10 +19,10 @@ import {
|
|
|
19
19
|
VIEW_FRONTEND_MODULE,
|
|
20
20
|
createViewProductPlan,
|
|
21
21
|
viewFrontendRoot
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-CYOLEAAY.mjs";
|
|
23
23
|
import {
|
|
24
24
|
workspaceDiagnosticRecord
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-RFTLGEB5.mjs";
|
|
26
26
|
|
|
27
27
|
// src/plugins/product.ts
|
|
28
28
|
import { randomUUID } from "node:crypto";
|
|
@@ -32,6 +32,7 @@ import { existsSync } from "node:fs";
|
|
|
32
32
|
import { createHostAssembly } from "@forgeax/engine/host/protocol";
|
|
33
33
|
import { defineTool, toolJsonSchema } from "@forgeax/engine/tool-runtime";
|
|
34
34
|
import { registerTools, startNativePlugin } from "@forgeax/engine/plugin";
|
|
35
|
+
import { listPackSources } from "@forgeax/engine/pack/build";
|
|
35
36
|
var ownerArgs = toolJsonSchema({ type: "object", properties: { root: { type: "string" } }, additionalProperties: false });
|
|
36
37
|
var startArgs = toolJsonSchema({ type: "object", properties: {
|
|
37
38
|
root: { type: "string" },
|
|
@@ -148,7 +149,7 @@ var product_default = {
|
|
|
148
149
|
};
|
|
149
150
|
const plan = createViewProductPlan({
|
|
150
151
|
disabledPages: config.disabledPages,
|
|
151
|
-
backendConfig: { workspaceAccessToken: token },
|
|
152
|
+
backendConfig: { workspaceAccessToken: token, packSources: listPackSources },
|
|
152
153
|
frontendConfig
|
|
153
154
|
});
|
|
154
155
|
const installation = {
|
|
@@ -174,7 +175,7 @@ var product_default = {
|
|
|
174
175
|
staticRoot: config.staticRoot ?? builtRoot,
|
|
175
176
|
frontendConfig,
|
|
176
177
|
...core === void 0 ? {} : {
|
|
177
|
-
onClientConnect: () => core.
|
|
178
|
+
onClientConnect: (caller) => core.attachPageSession(caller, host.transport),
|
|
178
179
|
onClientDisconnect: (caller) => core.revokeConnection(caller.connectionId)
|
|
179
180
|
}
|
|
180
181
|
});
|
|
@@ -283,4 +284,4 @@ var product_default = {
|
|
|
283
284
|
export {
|
|
284
285
|
product_default
|
|
285
286
|
};
|
|
286
|
-
//# sourceMappingURL=chunk-
|
|
287
|
+
//# sourceMappingURL=chunk-3FBX3P3H.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/plugins/product.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Context, Fiber } from '@forgeax/engine-plugin';\nimport type {} from '@forgeax/engine/devkit';\nimport type { HostRootDescriptor } from '@forgeax/engine-host/protocol';\nimport type { ToolJsonSchema, ToolSchema } from '@forgeax/engine-tool-runtime';\nimport type { ViewWorkspaceBroker } from '@forgeax/view-workspace-core/broker';\nimport type { ViewFrontendConfig } from '@forgeax/view-viewer/config';\nimport { workspaceDiagnosticRecord } from '@forgeax/view-workspace-core/command-error';\nexport type ViewProductConfig = { disabledPages?: readonly string[]; staticRoot?: string; frontendConfig?: Pick<ViewFrontendConfig, 'layout'>; frontend?: { root?: Partial<HostRootDescriptor>; module?: string } };\ntype LifecycleArgs = { root?: string; project?: string; frontendConfig?: Pick<ViewFrontendConfig, 'layout'> };\nimport { randomUUID } from 'node:crypto';\nimport { createRequire } from 'node:module';\nimport { dirname, join, resolve } from 'node:path';\nimport { existsSync } from 'node:fs';\nimport { createHostAssembly } from '@forgeax/engine-host/protocol';\nimport { defineTool, toolJsonSchema } from '@forgeax/engine-tool-runtime';\nimport { registerTools, startNativePlugin } from '@forgeax/engine-plugin';\nimport { createViewProductPlan, viewFrontendRoot, VIEW_FRONTEND_MODULE } from '@forgeax/view-viewer/catalog/shared';\nimport { listPackSources } from '@forgeax/engine-pack/build';\nimport { VIEW_PRODUCT_BACKEND_CATALOG } from '@forgeax/view-viewer/catalog/backend';\nimport { startViewHostServer } from '@forgeax/view-workspace-core/resident';\n\nimport { openViewProject, viewProjectOpenError } from '../view-project-open.ts';\nimport { resolveProjectIntent, withProjectIntent } from '../view-start.ts';\nimport { viewStartFrontendConfigSchema } from '../commands.ts';\n\nconst ownerArgs = toolJsonSchema({ type: 'object', properties: { root: { type: 'string' } }, additionalProperties: false });\nconst startArgs = toolJsonSchema({ type: 'object', properties: {\n root: { type: 'string' }, project: { type: 'string' },\n frontendConfig: viewStartFrontendConfigSchema,\n}, additionalProperties: false });\nconst projectOpenSchema = {\n type: 'object',\n properties: { root: { type: 'string' }, project: { type: 'string' } },\n required: ['project'],\n additionalProperties: false,\n} satisfies ToolJsonSchema;\n\nfunction readWorkspaceCore(owner?: Context) {\n if (!owner || typeof owner.get !== 'function') return undefined;\n try {\n const value = owner.get('viewWorkspaceCore', false);\n return value && typeof value.openProject === 'function' && typeof value.snapshot === 'function' ? value : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction installedViewStaticRoot(projectRoot: string) {\n try {\n const pluginEntry = createRequire(join(projectRoot, 'forge.json')).resolve('@forgeax/view/plugin');\n const staticRoot = resolve(dirname(pluginEntry), '../viewer');\n return existsSync(join(staticRoot, 'index.html')) ? staticRoot : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction projectFailure(error: unknown) {\n const record = workspaceDiagnosticRecord(error);\n const hint = typeof record.hint === 'string' ? record.hint : typeof record.message === 'string' ? record.message : String(error);\n return {\n ok: false,\n error: {\n code: typeof record.code === 'string' ? record.code : 'view-project-open-failed',\n expected: typeof record.expected === 'string' ? record.expected : hint,\n hint,\n ...(record.detail === undefined ? {} : { detail: record.detail }),\n },\n };\n}\n\nfunction projectSuccess(body: Awaited<ReturnType<typeof openViewProject>>) {\n return {\n ok: true,\n value: {\n ok: true,\n alreadyOpen: body.alreadyOpen === true,\n ...(body.viewerUrl === undefined ? {} : { viewerUrl: body.viewerUrl }),\n project: body.project,\n projectTarget: body.projectTarget,\n },\n };\n}\n\n/** Installed on Engine's resident Host. View owns only its plugin Fibers and sockets. */\nexport default {\n name: 'forgeax.view',\n inject: ['devkitBackend', 'engineWorkspace', 'toolApi'],\n async apply(ctx: Context, config: ViewProductConfig = {}) {\n const { host } = ctx.devkitBackend;\n let fiber: Fiber | undefined;\n let server: Awaited<ReturnType<typeof startViewHostServer>> | undefined;\n let serverEffect: ReturnType<Context['effect']> | undefined;\n let failure: ReturnType<typeof failed> | undefined;\n const failed = (error: unknown) => {\n const record = workspaceDiagnosticRecord(error);\n return ({\n code: typeof record.code === 'string' ? record.code : 'view-cleanup-failed',\n expected: typeof record.expected === 'string' ? record.expected : 'View-owned contributions to finish cleanup',\n hint: typeof record.hint === 'string' ? record.hint : typeof record.message === 'string' ? record.message : String(error),\n cleanup: workspaceDiagnosticRecord(record.detail).cleanup ?? 'failed',\n }); };\n let workspaceCore: ViewWorkspaceBroker | undefined;\n let openAbort: AbortController | undefined;\n let sessionEpoch = 0;\n let queue: Promise<unknown> = Promise.resolve();\n const enqueue = <T>(execute: () => T | Promise<T>) => {\n const result = queue.then(execute);\n queue = result.catch(() => {});\n return result;\n };\n const status = () => failure ? { phase: 'failed', error: failure } : ({ phase: server ? 'ready' : 'stopped', ...(server ? { url: server.viewerUrl } : {}) });\n const stop = async () => {\n if (failure) throw new Error(`${failure.code}: ${failure.hint}`);\n sessionEpoch += 1;\n openAbort?.abort();\n openAbort = undefined;\n workspaceCore = undefined;\n try { await serverEffect?.(); await server?.close(); await fiber?.dispose(); }\n catch (error) { failure = failed(error); throw error; }\n fiber = undefined;\n server = undefined;\n return status();\n };\n const start = async (args: LifecycleArgs = {}) => {\n if (failure) throw new Error(`${failure.code}: ${failure.hint}`);\n const project = resolveProjectIntent(args.project === undefined ? [] : ['--project', args.project], ctx.devkitBackend.root);\n if (fiber) return withProjectIntent(status(), project);\n const token = randomUUID();\n const workspaceClient = { clientId: 'view-frontend', token, resourceBrowser: true };\n const layout = args.frontendConfig?.layout ?? config.frontendConfig?.layout;\n const frontendConfig: ViewFrontendConfig = {\n embedded: true,\n workspace: workspaceClient,\n ...(layout === undefined ? {} : { layout }),\n };\n const plan = createViewProductPlan({\n disabledPages: config.disabledPages,\n backendConfig: { workspaceAccessToken: token, packSources: listPackSources },\n frontendConfig,\n });\n const installation = {\n name: 'forgeax.view.product',\n provide: ['devkitWorkspaceFrontend'],\n async apply(owner: Context) {\n for (const component of plan.backend) {\n const record = VIEW_PRODUCT_BACKEND_CATALOG.get(component.module);\n if (!record) throw new Error(`View backend program is missing: ${component.module}`);\n const module = await record.load();\n await (await owner.plugin(module.default, component.config)).await();\n }\n const builtRoot = config.staticRoot ? undefined : installedViewStaticRoot(\n ctx.devkitBackend.hostPackageRoot ?? ctx.devkitBackend.root,\n );\n if (!config.staticRoot && !builtRoot) throw new Error('View UI is not built. Build or install the View package before starting it.');\n // The launcher is the parent fiber. Cordis get walks ancestors, so the\n // broker provided by this installation is read here and kept for the tool.\n workspaceCore = readWorkspaceCore(owner);\n const core = workspaceCore;\n serverEffect = owner.effect(async () => {\n const ownedServer = await startViewHostServer({\n backendHost: host,\n accessToken: token,\n staticRoot: config.staticRoot ?? builtRoot,\n frontendConfig,\n ...(core === undefined ? {} : {\n onClientConnect: (caller) => core.attachPageSession(caller, host.transport),\n onClientDisconnect: (caller) => core.revokeConnection(caller.connectionId),\n }),\n });\n server = ownedServer;\n return () => ownedServer.close();\n });\n await serverEffect;\n Object.assign(workspaceClient, { endpoint: server!.frontendEndpoint, frontendTicket: server!.frontendTicket });\n const frontendRoot = viewFrontendRoot(frontendConfig, plan.disabledPages);\n const assembly = createHostAssembly({ root: config.frontend ? { ...frontendRoot, ...config.frontend.root, config: frontendRoot.config } : frontendRoot });\n owner.provide('devkitWorkspaceFrontend', { assembly, module: config.frontend?.module ?? VIEW_FRONTEND_MODULE });\n const removeAdmission = host.transport.onClientConnect(caller => {\n if (caller.kind === 'frontend' && caller.sourceId === 'view-frontend') {\n host.bindProjection(caller, { assembly });\n }\n });\n owner.effect(() => removeAdmission);\n },\n };\n const started = await startNativePlugin(ctx, installation);\n if (!started.ok) {\n workspaceCore = undefined;\n if (workspaceDiagnosticRecord(started.error.detail).cleanup !== 'completed') failure = failed(started.error);\n else server = undefined;\n throw Object.assign(new Error(`${started.error.code}: ${started.error.hint}`), started.error);\n }\n fiber = started.value;\n return withProjectIntent(status(), project);\n };\n\n const openProject = async (args: LifecycleArgs = {}, epoch = sessionEpoch) => {\n const stopped = () => projectFailure(viewProjectOpenError(\n 'view-not-started',\n 'View has stopped. Run forgeax view start again when needed.',\n ));\n if (epoch !== sessionEpoch || !server || !workspaceCore) {\n return projectFailure(viewProjectOpenError(\n 'view-not-started',\n epoch !== sessionEpoch\n ? 'View has stopped. Run forgeax view start again when needed.'\n : 'Run forgeax backend start, then forgeax view start.',\n ));\n }\n const project = typeof args.project === 'string' ? args.project : '';\n const controller = new AbortController();\n openAbort = controller;\n try {\n if (epoch !== sessionEpoch || controller.signal.aborted) return stopped();\n const body = await openViewProject(workspaceCore, project, {\n signal: controller.signal,\n viewerUrl: server.viewerUrl,\n });\n if (epoch !== sessionEpoch || controller.signal.aborted) return stopped();\n return projectSuccess(body);\n } catch (error) {\n if (epoch !== sessionEpoch || controller.signal.aborted) return stopped();\n return projectFailure(error);\n } finally {\n if (openAbort === controller) openAbort = undefined;\n }\n };\n const lifecycleTool = (operation: string, execute: (args: LifecycleArgs) => unknown, { before, argsSchema = ownerArgs }: { before?: () => void; argsSchema?: ToolSchema<unknown> } = {}) => defineTool<unknown, unknown>({\n id: `view.${operation}`, path: ['view', operation], title: `View ${operation}`,\n summary: `${operation} the optional View interface on the existing Engine backend.`, realm: 'host',\n argsSchema, resultSchema: toolJsonSchema({ type: 'object' }), inputSchema: { type: 'object' }, outputSchema: { type: 'object' }, evidence: [],\n }, (args) => {\n before?.();\n return enqueue(() => execute(args as LifecycleArgs));\n });\n const tools = [\n lifecycleTool('start', start, { argsSchema: startArgs }),\n lifecycleTool('status', status),\n lifecycleTool('stop', stop, { before: () => { sessionEpoch += 1; openAbort?.abort(); } }),\n defineTool<unknown, unknown>({\n id: 'view.project.open',\n path: ['view', 'project', 'open'],\n title: 'Open View project',\n summary: 'Open an editor project on the running View and return its headed document URL.',\n realm: 'host',\n argsSchema: toolJsonSchema(projectOpenSchema),\n resultSchema: toolJsonSchema({ type: 'object' }),\n inputSchema: projectOpenSchema,\n outputSchema: { type: 'object' },\n evidence: [],\n }, (args) => {\n const epoch = sessionEpoch;\n return enqueue(() => openProject(args as LifecycleArgs, epoch));\n }),\n ];\n const revoke = registerTools(ctx, tools, { sourceId: 'view-launcher', module: '@forgeax/view/plugin', realm: 'host' });\n ctx.effect(() => async () => { await revoke(); await queue; await stop(); });\n },\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -44,7 +44,7 @@ function createViewStatusToolContributions(broker, description) {
|
|
|
44
44
|
outputSchema: { type: "object" },
|
|
45
45
|
evidence: []
|
|
46
46
|
},
|
|
47
|
-
async () => broker.handshake()
|
|
47
|
+
async (_args, context) => broker.handshake(context.caller)
|
|
48
48
|
)
|
|
49
49
|
];
|
|
50
50
|
}
|
|
@@ -85,7 +85,7 @@ function createDisplayApiTools(broker) {
|
|
|
85
85
|
inputSchema: bindingInput,
|
|
86
86
|
outputSchema: { type: "object" },
|
|
87
87
|
evidence: []
|
|
88
|
-
}, (args) => broker.bind(args))] : []
|
|
88
|
+
}, (args, context) => broker.bind(args, context.caller))] : []
|
|
89
89
|
];
|
|
90
90
|
}
|
|
91
91
|
|
|
@@ -94,4 +94,4 @@ export {
|
|
|
94
94
|
DISPLAY_STATUS_OPERATION_DESCRIPTION,
|
|
95
95
|
createDisplayApiTools
|
|
96
96
|
};
|
|
97
|
-
//# sourceMappingURL=chunk-
|
|
97
|
+
//# sourceMappingURL=chunk-3Y5WN22T.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../packages/view-plugin-display/src/tool-runtime.ts", "../../../packages/view-plugin-display/src/api.ts"],
|
|
4
|
+
"sourcesContent": ["import type { ToolApi, ToolCallerIdentity, ToolRuntimeError, ToolSchema, ToolDescriptor } from '@forgeax/engine-tool-runtime';\nimport { defineTool } from '@forgeax/engine-tool-runtime';\n\nexport const VIEW_STATUS_OPERATION = 'view.display.status';\n\nfunction toolFailureError(failure: ToolRuntimeError) {\n const diagnostic =\n (typeof failure?.hint === 'string' && failure.hint.trim() !== '' ? failure.hint : undefined)\n ?? (typeof failure?.expected === 'string' && failure.expected.trim() !== '' ? failure.expected : undefined);\n const detail = failure.detail && typeof failure.detail === 'object' && !Array.isArray(failure.detail) ? failure.detail as Record<string, unknown> : {};\n return Object.assign(new Error(diagnostic ?? String(failure ?? 'view-status-provider-failed')), { name: 'ViewToolError', code: detail.code ?? detail.remoteCode ?? failure.code, expected: failure.expected, hint: failure.hint ?? diagnostic, detail: failure.detail ?? { failure } });\n}\n\nexport async function runViewToolApi(\n api: ToolApi,\n { operation, args = {}, caller, signal, providerId, generation }: { operation: string; args?: unknown; caller?: ToolCallerIdentity; signal?: AbortSignal; providerId?: string; generation?: number },\n) {\n const run = api.run(operation, args, {\n sourceId: 'view-backend',\n providerId,\n generation,\n caller,\n signal,\n });\n const terminal = await run.terminal;\n if (terminal.outcome === 'failed') throw toolFailureError(terminal.failure);\n return terminal.result;\n}\n\nexport function createViewStatusToolContributions(broker: { handshake: (caller?: ToolCallerIdentity) => object | Promise<object> }, description: Pick<ToolDescriptor, \"id\" | \"path\" | \"title\" | \"summary\">) {\n const argsSchema: ToolSchema<object> = {\n parse(value) {\n return value === undefined || (value !== null && typeof value === 'object' && !Array.isArray(value))\n ? { ok: true, value: value ?? {} }\n : { ok: false, error: 'View status arguments must be an object' };\n },\n describe: 'JSON object accepted by the read-only View status operation.',\n };\n const resultSchema: ToolSchema<object> = {\n parse(value) {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n ? { ok: true, value }\n : { ok: false, error: 'View status result must be an object' };\n },\n describe: 'JSON object returned by the View status operation.',\n };\n return [\n defineTool<unknown, object>(\n {\n id: description.id,\n path: description.path,\n title: description.title,\n summary: description.summary,\n realm: 'host',\n argsSchema,\n resultSchema,\n inputSchema: { type: 'object' },\n outputSchema: { type: 'object' },\n evidence: [],\n },\n async (_args, context) => broker.handshake(context.caller),\n ),\n ];\n}\n", "import type { ToolCallerIdentity, ToolSchema } from '@forgeax/engine-tool-runtime';\nimport type { DisplayStatusInput } from './status.ts';\nexport type DisplayBindArgs = { root: null; runId?: string } | { root: string; runId: string };\nexport type DisplayService = { handshake: (caller?: ToolCallerIdentity) => object | Promise<object>; bind?: (input: DisplayBindArgs, caller?: ToolCallerIdentity) => DisplayStatusInput };\nimport { createViewStatusToolContributions } from './tool-runtime.ts';\nimport { defineTool, toolJsonSchema } from '@forgeax/engine-tool-runtime';\nexport const DISPLAY_STATUS_OPERATION_DESCRIPTION = Object.freeze({\n id: 'view.display.status',\n path: ['view', 'display', 'status'],\n title: 'View status',\n summary: 'Read the current View display and workspace status.',\n});\n\nconst bindingInput = {\n type: 'object',\n properties: { root: { type: ['string', 'null'] }, runId: { type: 'string', minLength: 1 } },\n required: ['root'], additionalProperties: false,\n};\nconst bindingArgs: ToolSchema<DisplayBindArgs> = {\n describe: JSON.stringify(bindingInput),\n parse(value: unknown) {\n const input = value as Partial<DisplayBindArgs> | null;\n const valid = value && typeof value === 'object' && !Array.isArray(value)\n && Object.keys(value).every(key => key === 'root' || key === 'runId')\n && (input?.root === null || (typeof input?.root === 'string' && input?.root.trim()\n && typeof input?.runId === 'string' && input?.runId.trim()));\n return valid ? { ok: true, value: value as DisplayBindArgs } : { ok: false, error: 'Provide root and exact runId, or null root to disconnect.' };\n },\n};\n\n/** API (Tool) contributions for the display product plugin. */\nexport function createDisplayApiTools(broker: DisplayService) {\n return [\n ...createViewStatusToolContributions(broker, DISPLAY_STATUS_OPERATION_DESCRIPTION),\n ...(broker.bind ? [defineTool<unknown, unknown>({\n id: 'view.display.bind', path: ['view', 'display', 'bind'], title: 'Bind observed run',\n summary: 'Observe one explicit Engine run independently of the Editor project; null root disconnects.',\n realm: 'host',\n argsSchema: bindingArgs,\n resultSchema: toolJsonSchema({ type: 'object' }), inputSchema: bindingInput, outputSchema: { type: 'object' }, evidence: [],\n }, (args, context) => broker.bind!(args as DisplayBindArgs, context.caller))] : []),\n ];\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["defineTool"]
|
|
7
|
+
}
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
PANEL_LAYOUT,
|
|
6
6
|
SLOT,
|
|
7
7
|
TITLE_I18N_KEY
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-MLXRIWJA.mjs";
|
|
9
9
|
|
|
10
10
|
// packages/view-plugin-scene-tree/src/frontend.ts
|
|
11
11
|
var VIEW_SCENE_TREE_FRONTEND_PLUGIN_ID = FRONTEND_PLUGIN_ID;
|
|
@@ -39,4 +39,4 @@ export {
|
|
|
39
39
|
viewSceneTreeFrontendPlugin,
|
|
40
40
|
frontend_default
|
|
41
41
|
};
|
|
42
|
-
//# sourceMappingURL=chunk-
|
|
42
|
+
//# sourceMappingURL=chunk-45WL24XN.mjs.map
|
|
@@ -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-4FYKRL46.mjs.map
|