agentworkshop 0.7.9 → 0.7.11
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/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{BUPj10t4.js → 6vYobj4F.js} +1 -1
- package/.output/public/_nuxt/{BCJFMBQ6.js → B-xskWta.js} +1 -1
- package/.output/public/_nuxt/{BC8s1Guv.js → B3Psw_sL.js} +1 -1
- package/.output/public/_nuxt/B53Mp7lD.js +1 -0
- package/.output/public/_nuxt/B5CYgFAD.js +14 -0
- package/.output/public/_nuxt/{91DZTUMJ.js → B8WV7GzS.js} +1 -1
- package/.output/public/_nuxt/{BDASpD_i.js → BBwMH_hG.js} +1 -1
- package/.output/public/_nuxt/BLzCac9K2.js +1 -0
- package/.output/public/_nuxt/BNXfwXpE.js +1 -0
- package/.output/public/_nuxt/BbZAzXjZ2.js +1 -0
- package/.output/public/_nuxt/{CFn4vHwD.js → Bc3PiGGr.js} +1 -1
- package/.output/public/_nuxt/{B0HpdCKS.js → Bckshc9V.js} +1 -1
- package/.output/public/_nuxt/BcrN7QEl2.js +1 -0
- package/.output/public/_nuxt/BgOhoDTI.js +1 -0
- package/.output/public/_nuxt/Bmpvki7M.js +1 -0
- package/.output/public/_nuxt/BxPPAkGA.js +3 -0
- package/.output/public/_nuxt/{u7KWCGSb.js → BxtpDtzC.js} +1 -1
- package/.output/public/_nuxt/{DxrgFxIr2.js → C4OAdbVK2.js} +1 -1
- package/.output/public/_nuxt/C6m-kenn.js +1 -0
- package/.output/public/_nuxt/{DDdEnkdw.js → CGx-mtWf.js} +1 -1
- package/.output/public/_nuxt/Cj6139IM.js +1 -0
- package/.output/public/_nuxt/{6PZPfFcO.js → Cor9siSf.js} +1 -1
- package/.output/public/_nuxt/{wirVyscc.js → D7jiode2.js} +1 -1
- package/.output/public/_nuxt/{Ct68Z0232.js → DA4lxCWC2.js} +1 -1
- package/.output/public/_nuxt/DEaY_uvR.js +1 -0
- package/.output/public/_nuxt/{MyA0Oeqd.js → DNxVTfhe.js} +1 -1
- package/.output/public/_nuxt/DT-Wg8r1.js +1 -0
- package/.output/public/_nuxt/DTYBfjRY.js +1 -0
- package/.output/public/_nuxt/{DvgKXPgu2.js → DWcEk1ur2.js} +1 -1
- package/.output/public/_nuxt/Dhqra7NB.js +1 -0
- package/.output/public/_nuxt/DlRO_q5L.js +1 -0
- package/.output/public/_nuxt/{D8EfUxO2.js → Ds8JbqGB.js} +1 -1
- package/.output/public/_nuxt/{DN5RuZ8k.js → DyisHHzD.js} +1 -1
- package/.output/public/_nuxt/ORt9oDIy2.js +1 -0
- package/.output/public/_nuxt/{By8BpbKH.js → QoCzfpo2.js} +1 -1
- package/.output/public/_nuxt/RzXYI9FM.js +23 -0
- package/.output/public/_nuxt/{BuktKVqK2.js → arUY5dyq2.js} +2 -2
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/88479a5b-ce6a-400f-9737-1cc9f54b1fe5.json +1 -0
- package/.output/public/_nuxt/{pKv_VWR4.js → d_Sz9KGm.js} +1 -1
- package/.output/public/_nuxt/{default.BR3e5fPY.css → default.BbgdTDCk.css} +1 -1
- package/.output/public/_nuxt/{C9cU_Ujd.js → eHYnGew0.js} +1 -1
- package/.output/public/_nuxt/{DM4CNkXz.js → eUGyJdiT.js} +1 -1
- package/.output/public/_nuxt/{entry.5qf6EqfN.css → entry.B03HBJGC.css} +1 -1
- package/.output/public/_nuxt/{B1g8pJmr.js → kkEthL84.js} +1 -1
- package/.output/public/_nuxt/permissions.CwZo6t1V.css +1 -0
- package/.output/public/_nuxt/settings.BqMF2nfj.css +1 -0
- package/.output/public/_nuxt/{D0Szyn_D.js → tJuVvBSl.js} +1 -1
- package/.output/public/_nuxt/zVkqCZ78.js +1 -0
- package/.output/server/chunks/_/LeftOutlined.mjs +1 -1
- package/.output/server/chunks/_/SearchOutlined.mjs +1 -1
- package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
- package/.output/server/chunks/_/host-bindings.mjs +1 -1
- package/.output/server/chunks/_/nitro.mjs +1636 -1315
- package/.output/server/chunks/_/nitro.mjs.map +1 -1
- package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
- package/.output/server/chunks/build/Col-biaNnEPf.mjs +1 -1
- package/.output/server/chunks/build/{OmpTerminalPanel-COphA1br.mjs → OmpTerminalPanel-Ban3yJZ4.mjs} +4 -5
- package/.output/server/chunks/build/OmpTerminalPanel-Ban3yJZ4.mjs.map +1 -0
- package/.output/server/chunks/build/{TownView-D8DSdO3H.mjs → TownView-CunmEMzS.mjs} +8 -9
- package/.output/server/chunks/build/{TownView-D8DSdO3H.mjs.map → TownView-CunmEMzS.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-BV4FfiYd.mjs → _id_-CVnMdSeG.mjs} +7 -7
- package/.output/server/chunks/build/{_id_-BV4FfiYd.mjs.map → _id_-CVnMdSeG.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-TP9hvnBM.mjs → _id_-D265Wh_k.mjs} +7 -7
- package/.output/server/chunks/build/{_id_-TP9hvnBM.mjs.map → _id_-D265Wh_k.mjs.map} +1 -1
- package/.output/server/chunks/build/{_wsId_-Mm9sQSz2.mjs → _wsId_-eNJmBp05.mjs} +17 -17
- package/.output/server/chunks/build/{_wsId_-Mm9sQSz2.mjs.map → _wsId_-eNJmBp05.mjs.map} +1 -1
- package/.output/server/chunks/build/{agents-To3a5xcZ.mjs → agents-B10wmFri.mjs} +9 -9
- package/.output/server/chunks/build/{agents-To3a5xcZ.mjs.map → agents-B10wmFri.mjs.map} +1 -1
- package/.output/server/chunks/build/alert-qJnjyRcP.mjs +1 -1
- package/.output/server/chunks/build/api-error-dul30BYQ.mjs +1 -1
- package/.output/server/chunks/build/button-DEcZFcqN.mjs +2 -2
- package/.output/server/chunks/build/{card-Dipvaykh.mjs → card-CCPQoKlh.mjs} +4 -4
- package/.output/server/chunks/build/{card-Dipvaykh.mjs.map → card-CCPQoKlh.mjs.map} +1 -1
- package/.output/server/chunks/build/{channel-templates-DRsP-qxl.mjs → channel-templates-CpWxVk5A.mjs} +7 -7
- package/.output/server/chunks/build/{channel-templates-DRsP-qxl.mjs.map → channel-templates-CpWxVk5A.mjs.map} +1 -1
- package/.output/server/chunks/build/{checkbox-dzcpU_Cd.mjs → checkbox-Dv1kjaUZ.mjs} +3 -3
- package/.output/server/chunks/build/{checkbox-dzcpU_Cd.mjs.map → checkbox-Dv1kjaUZ.mjs.map} +1 -1
- package/.output/server/chunks/build/client-only-D5BzSQc6.mjs +1 -1
- package/.output/server/chunks/build/{daq-_hCEaYLd.mjs → daq-DxaXk_8N.mjs} +9 -10
- package/.output/server/chunks/build/daq-DxaXk_8N.mjs.map +1 -0
- package/.output/server/chunks/build/{dcw-C7pJ4Y0p.mjs → dcw-DqjHrl5Z.mjs} +5 -5
- package/.output/server/chunks/build/{dcw-C7pJ4Y0p.mjs.map → dcw-DqjHrl5Z.mjs.map} +1 -1
- package/.output/server/chunks/build/{default-Dnjs36e8.mjs → default-YcUHc1Ev.mjs} +19 -12
- package/.output/server/chunks/build/{default-Dnjs36e8.mjs.map → default-YcUHc1Ev.mjs.map} +1 -1
- package/.output/server/chunks/build/drawer-Cmh90erI.mjs +1 -1
- package/.output/server/chunks/build/dropdown-vhn1NPFs.mjs +2 -2
- package/.output/server/chunks/build/hasIn-vQ9LWt-J.mjs +554 -0
- package/.output/server/chunks/build/hasIn-vQ9LWt-J.mjs.map +1 -0
- package/.output/server/chunks/build/initDefaultProps-DIbWwP4R.mjs +1 -1
- package/.output/server/chunks/build/{input-sf_BT6o6.mjs → input-DxDqeyQW.mjs} +5 -553
- package/.output/server/chunks/build/input-DxDqeyQW.mjs.map +1 -0
- package/.output/server/chunks/build/{input-number-Bd55elNN.mjs → input-number-CZ3ZrCsy.mjs} +3 -3
- package/.output/server/chunks/build/{input-number-Bd55elNN.mjs.map → input-number-CZ3ZrCsy.mjs.map} +1 -1
- package/.output/server/chunks/build/{logs-C039TFW1.mjs → logs-Co854R4y.mjs} +6 -7
- package/.output/server/chunks/build/logs-Co854R4y.mjs.map +1 -0
- package/.output/server/chunks/build/menu-WCrlpYVh.mjs +2 -2
- package/.output/server/chunks/build/modal-yvUquPj5.mjs +2 -2
- package/.output/server/chunks/build/{monitor-MIOvsyLa.mjs → monitor-miqq9xHB.mjs} +11 -11
- package/.output/server/chunks/build/{monitor-MIOvsyLa.mjs.map → monitor-miqq9xHB.mjs.map} +1 -1
- package/.output/server/chunks/build/{pages-C_VSGSGo.mjs → pages-DPC1Vp6w.mjs} +5 -5
- package/.output/server/chunks/build/{pages-C_VSGSGo.mjs.map → pages-DPC1Vp6w.mjs.map} +1 -1
- package/.output/server/chunks/build/permissions-Eu9e6hfZ.mjs +534 -0
- package/.output/server/chunks/build/permissions-Eu9e6hfZ.mjs.map +1 -0
- package/.output/server/chunks/build/{plugins-4FMWkN8d.mjs → plugins-D84mvK9G.mjs} +3 -4
- package/.output/server/chunks/build/plugins-D84mvK9G.mjs.map +1 -0
- package/.output/server/chunks/build/popconfirm-CRaHcz5O.mjs +2 -2
- package/.output/server/chunks/build/responsiveObserve-CS0UB6wQ.mjs +1 -1
- package/.output/server/chunks/build/{segmented-DPe9ZzLO.mjs → segmented-ChmQZwz6.mjs} +5 -4
- package/.output/server/chunks/build/{segmented-DPe9ZzLO.mjs.map → segmented-ChmQZwz6.mjs.map} +1 -1
- package/.output/server/chunks/build/select-D-CeE5vY.mjs +1 -1
- package/.output/server/chunks/build/{settings-DA8IkGLo.mjs → settings-BPBll_7K.mjs} +28 -26
- package/.output/server/chunks/build/settings-BPBll_7K.mjs.map +1 -0
- package/.output/server/chunks/build/space-CCBYAkXt.mjs +2 -2
- package/.output/server/chunks/build/spin-HVY81X_L.mjs +1 -1
- package/.output/server/chunks/build/switch-CelRXpcy.mjs +2 -2
- package/.output/server/chunks/build/{table-Cswq-l2r.mjs → table-BtksyDlQ.mjs} +5 -5
- package/.output/server/chunks/build/{table-Cswq-l2r.mjs.map → table-BtksyDlQ.mjs.map} +1 -1
- package/.output/server/chunks/build/{tabs-BM3tAh_J.mjs → tabs-DQv-_-R6.mjs} +3 -3
- package/.output/server/chunks/build/{tabs-BM3tAh_J.mjs.map → tabs-DQv-_-R6.mjs.map} +1 -1
- package/.output/server/chunks/build/{tag-NO9jEqKy.mjs → tag-A0tZ2Ouq.mjs} +4 -4
- package/.output/server/chunks/build/{tag-NO9jEqKy.mjs.map → tag-A0tZ2Ouq.mjs.map} +1 -1
- package/.output/server/chunks/build/{teams-DA1lkf1n.mjs → teams-CNflUtPh.mjs} +7 -7
- package/.output/server/chunks/build/{teams-DA1lkf1n.mjs.map → teams-CNflUtPh.mjs.map} +1 -1
- package/.output/server/chunks/build/{tokens-DKMvvk3e.mjs → tokens-CZpnEDVf.mjs} +10 -10
- package/.output/server/chunks/build/{tokens-DKMvvk3e.mjs.map → tokens-CZpnEDVf.mjs.map} +1 -1
- package/.output/server/chunks/build/town-BUqRobze.mjs +1 -1
- package/.output/server/chunks/build/{town-D0thZ7PK.mjs → town-BbaR-8io.mjs} +9 -10
- package/.output/server/chunks/build/town-BbaR-8io.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqStream-BVTRw8_H.mjs → useDaqStream-BkmyQT06.mjs} +34 -23
- package/.output/server/chunks/build/useDaqStream-BkmyQT06.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwStream-DNsivqI_.mjs → useDcwStream-DWVoU96J.mjs} +60 -46
- package/.output/server/chunks/build/useDcwStream-DWVoU96J.mjs.map +1 -0
- package/.output/server/chunks/build/{useDeviceTwins-WeIom7A6.mjs → useDeviceTwins-34WGk9aN.mjs} +2 -2
- package/.output/server/chunks/build/{useDeviceTwins-WeIom7A6.mjs.map → useDeviceTwins-34WGk9aN.mjs.map} +1 -1
- package/.output/server/chunks/build/useLocalTime-9a4B-aHv.mjs +1 -1
- package/.output/server/chunks/build/{useOpsLog-DcKnPO43.mjs → useOpsLog-C9zTzYof.mjs} +27 -15
- package/.output/server/chunks/build/useOpsLog-C9zTzYof.mjs.map +1 -0
- package/.output/server/chunks/build/useSiteConfig-DJe_KMVr.mjs +1 -1
- package/.output/server/chunks/build/useWorkshopApi-D2gq06N2.mjs +1 -1
- package/.output/server/chunks/build/{useWorkshopWs-B3j5wIAK.mjs → useWorkshopWs-CprkZEdq.mjs} +2 -3
- package/.output/server/chunks/build/useWorkshopWs-CprkZEdq.mjs.map +1 -0
- package/.output/server/chunks/build/{users-CmVvb1oq.mjs → users-D6RNylrW.mjs} +10 -10
- package/.output/server/chunks/build/{users-CmVvb1oq.mjs.map → users-D6RNylrW.mjs.map} +1 -1
- package/.output/server/chunks/build/{workshop-BhWnJMWs.mjs → workshop-Crsai2Y9.mjs} +9 -9
- package/.output/server/chunks/build/{workshop-BhWnJMWs.mjs.map → workshop-Crsai2Y9.mjs.map} +1 -1
- package/.output/server/chunks/build/{workspaces-IfORCDJE.mjs → workspaces-BuydxM-3.mjs} +2 -3
- package/.output/server/chunks/build/workspaces-BuydxM-3.mjs.map +1 -0
- package/.output/server/chunks/routes/api/health.get.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/mcp/workshop.mjs +1 -1
- package/.output/server/chunks/routes/api/metrics.mjs +1 -1
- package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +1 -1
- package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +1 -1
- package/.output/server/chunks/routes/api/system/config.get.mjs +1 -1
- package/.output/server/chunks/routes/api/system/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/system/index.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +1 -1
- package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +1 -1
- package/.output/server/chunks/routes/api/system/monitor.get.mjs +1 -1
- package/.output/server/chunks/routes/api/system/settings/events.get.mjs +1 -1
- package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/users/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/users/login.post.mjs +1 -1
- package/.output/server/chunks/routes/api/users/logout.post.mjs +1 -1
- package/.output/server/chunks/routes/api/users/me.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/register.post.mjs +1 -1
- package/.output/server/chunks/routes/api/users/setup-status.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/_...path_.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +19 -8
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/audit.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/caller.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +3 -3
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs +3 -3
- package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +7 -6
- package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +5 -4
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +5 -4
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +5 -4
- package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +5 -4
- package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +5 -2
- package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +7 -6
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +5 -4
- package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +4 -3
- package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +4 -4
- package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +8 -4
- package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +4 -4
- package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +4 -4
- package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +7 -3
- package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +5 -3
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index.put.mjs +41 -0
- package/.output/server/chunks/routes/api/workshop/index.put.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/index10.get.mjs +4 -3
- package/.output/server/chunks/routes/api/workshop/index10.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index11.get.mjs +27 -0
- package/.output/server/chunks/routes/api/workshop/index11.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/index2.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index3.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index3.post.mjs +4 -4
- package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.get.mjs +5 -4
- package/.output/server/chunks/routes/api/workshop/index4.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/index5.get.mjs +18 -11
- package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index5.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/index7.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index7.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index8.get.mjs +24 -12
- package/.output/server/chunks/routes/api/workshop/index8.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index8.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs +12 -7
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +3 -3
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +1 -1
- package/.output/server/chunks/routes/renderer.mjs +3 -3
- package/.output/server/chunks/virtual/entry.mjs +271 -31
- package/.output/server/chunks/virtual/entry.mjs.map +1 -1
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/index.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/README-zh.md +15 -0
- package/README.md +20 -0
- package/app/components/AppSidebar.vue +7 -1
- package/app/composables/workshop/apiClient.ts +103 -95
- package/app/composables/workshop/useDaqStream.ts +35 -21
- package/app/composables/workshop/useDcwStream.ts +22 -5
- package/app/composables/workshop/useOpsLog.ts +26 -13
- package/app/composables/workshop/useWorkshopWs.ts +11 -2
- package/app/pages/permissions/index.vue +327 -0
- package/app/pages/settings.vue +4 -2
- package/app/plugins/http.ts +18 -2
- package/app/plugins/session-restore.client.ts +7 -2
- package/app/stores/workshop/user.ts +14 -1
- package/i18n/locales/en.ts +37 -0
- package/i18n/locales/zh-CN.ts +37 -0
- package/package.json +1 -1
- package/scripts/_dbg-acc-1-setup.mjs +57 -0
- package/scripts/_dbg-acc-2-diag.mjs +14 -0
- package/scripts/_dbg-acc-2-intervals.mjs +81 -0
- package/scripts/_dbg-acc-3-daq.mjs +48 -0
- package/scripts/_dbg-acc-4-team.mjs +92 -0
- package/scripts/_dbg-acc-5-visual.mjs +63 -0
- package/scripts/_dbg-acc-5b-ws-town.mjs +18 -0
- package/scripts/_dbg-acc-5c-town.mjs +12 -0
- package/scripts/_dbg-acc-6-i18n.mjs +19 -0
- package/scripts/_dbg-audit-neg-e2e.mjs +64 -0
- package/scripts/_dbg-final-features.mjs +155 -0
- package/scripts/_dbg-final-fixups.mjs +62 -0
- package/scripts/_dbg-final-visual.mjs +29 -0
- package/scripts/_dbg-perms-e2e.mjs +102 -0
- package/scripts/_dbg-perms-visual.mjs +36 -0
- package/scripts/_dbg-protocol-matrix.mjs +16 -0
- package/sdk/api.mjs +117 -101
- package/sdk/context.mjs +240 -219
- package/sdk/hooks.mjs +105 -103
- package/sdk/index.d.mts +142 -135
- package/sdk/lifecycle.mjs +26 -25
- package/server/api/workshop/agent-tools/bindings/index.post.ts +40 -20
- package/server/api/workshop/daq/[id]/bind.post.ts +5 -2
- package/server/api/workshop/daq/[id]/frames/content.get.ts +4 -1
- package/server/api/workshop/daq/[id]/frames.get.ts +4 -1
- package/server/api/workshop/daq/[id]/samples.get.ts +4 -1
- package/server/api/workshop/daq/[id].patch.ts +3 -0
- package/server/api/workshop/daq/alarms/[id]/ack.post.ts +20 -15
- package/server/api/workshop/daq/controller.post.ts +2 -0
- package/server/api/workshop/daq/index.get.ts +5 -3
- package/server/api/workshop/daq/index.post.ts +2 -2
- package/server/api/workshop/dcw/[id]/bind.post.ts +20 -17
- package/server/api/workshop/dcw/[id]/test.post.ts +18 -15
- package/server/api/workshop/dcw/[id]/write.post.ts +3 -0
- package/server/api/workshop/dcw/index.get.ts +22 -9
- package/server/api/workshop/dcw/line/query.get.ts +38 -31
- package/server/api/workshop/dcw/lines/[id]/start.post.ts +3 -0
- package/server/api/workshop/dcw/lines/[id]/stop.post.ts +3 -0
- package/server/api/workshop/dcw/lines/index.get.ts +8 -2
- package/server/api/workshop/dcw/lines/index.post.ts +2 -2
- package/server/api/workshop/dcw/products/index.post.ts +16 -16
- package/server/api/workshop/dcw/runs/[id]/data.get.ts +20 -15
- package/server/api/workshop/dcw/runs/index.get.ts +13 -11
- package/server/api/workshop/permissions/index.get.ts +30 -0
- package/server/api/workshop/permissions/index.put.ts +29 -0
- package/server/api/workshop/ws.ts +18 -6
- package/server/data/daqs.json +48 -48
- package/server/data/dcw-products.json +21 -0
- package/server/data/dcw-recipes.json +84 -0
- package/server/data/dcw-rollback.json +94 -6
- package/server/data/dcw-runs.json +81 -75
- package/server/data/dcw-writes.json +108 -0
- package/server/data/dcws.json +645 -382
- package/server/data/line-runs.json +8 -8
- package/server/plugins/backup.ts +119 -116
- package/server/repositories/user.repository.ts +86 -6
- package/server/services/user.service.ts +5 -3
- package/server/services/workshop/daq/bus/index.ts +5 -3
- package/server/services/workshop/daq/bus/inproc.adapter.ts +12 -3
- package/server/services/workshop/daq/bus/mqtt.adapter.ts +13 -0
- package/server/services/workshop/daq/bus/queue-port.ts +2 -0
- package/server/services/workshop/daq/daq-controller.ts +18 -1
- package/server/services/workshop/db/ops.repo.ts +6 -0
- package/server/services/workshop/dcw/dcw-controller.ts +10 -2
- package/server/services/workshop/permissions.ts +79 -0
- package/server/services/workshop/plugins/host.mjs +38 -1
- package/server/services/workshop/scene-events.ts +25 -1
- package/shared/config/single-instance.mjs +24 -0
- package/shared/daq-protocol.ts +2 -0
- package/.output/public/_nuxt/B1kA8LhC.js +0 -14
- package/.output/public/_nuxt/B9MUiDFl.js +0 -1
- package/.output/public/_nuxt/B9dLFSYI.js +0 -1
- package/.output/public/_nuxt/BaMkWl5i2.js +0 -1
- package/.output/public/_nuxt/BmHvC_OU.js +0 -1
- package/.output/public/_nuxt/CBciOiTQ.js +0 -1
- package/.output/public/_nuxt/CUMdhxg9.js +0 -1
- package/.output/public/_nuxt/CgvGu2IO.js +0 -1
- package/.output/public/_nuxt/CjDQPXfv.js +0 -1
- package/.output/public/_nuxt/CmHzfVc5.js +0 -3
- package/.output/public/_nuxt/Cn3J3NXR.js +0 -23
- package/.output/public/_nuxt/Cst47G4-.js +0 -1
- package/.output/public/_nuxt/D3VJ3lex.js +0 -1
- package/.output/public/_nuxt/D8wyHvcz2.js +0 -1
- package/.output/public/_nuxt/Dqj2h40U.js +0 -1
- package/.output/public/_nuxt/OV6PBW2z.js +0 -1
- package/.output/public/_nuxt/builds/meta/92d6bd39-dbc5-46d5-90d8-8387f36715fa.json +0 -1
- package/.output/public/_nuxt/settings.DeRNNUcP.css +0 -1
- package/.output/server/chunks/build/OmpTerminalPanel-COphA1br.mjs.map +0 -1
- package/.output/server/chunks/build/daq-_hCEaYLd.mjs.map +0 -1
- package/.output/server/chunks/build/input-sf_BT6o6.mjs.map +0 -1
- package/.output/server/chunks/build/logs-C039TFW1.mjs.map +0 -1
- package/.output/server/chunks/build/plugins-4FMWkN8d.mjs.map +0 -1
- package/.output/server/chunks/build/settings-DA8IkGLo.mjs.map +0 -1
- package/.output/server/chunks/build/town-D0thZ7PK.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqStream-BVTRw8_H.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwStream-DNsivqI_.mjs.map +0 -1
- package/.output/server/chunks/build/useOpsLog-DcKnPO43.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkshopWs-B3j5wIAK.mjs.map +0 -1
- package/.output/server/chunks/build/user-Dk-ytEUV.mjs +0 -140
- package/.output/server/chunks/build/user-Dk-ytEUV.mjs.map +0 -1
- package/.output/server/chunks/build/workspaces-IfORCDJE.mjs.map +0 -1
- /package/.output/public/_nuxt/{CNs_Ozdc2.js → CNs_Ozdc.js} +0 -0
- /package/.output/public/_nuxt/{Cno6kYiO2.js → Cno6kYiO.js} +0 -0
|
@@ -6,6 +6,7 @@ import { Buffer as Buffer$1 } from 'node:buffer';
|
|
|
6
6
|
import { promises, existsSync, readFileSync, mkdirSync, writeFileSync, renameSync, readdirSync, watch as watch$1, statSync, copyFileSync, rmSync } from 'node:fs';
|
|
7
7
|
import path, { resolve as resolve$1, dirname as dirname$1, join } from 'node:path';
|
|
8
8
|
import { pathToFileURL, fileURLToPath } from 'node:url';
|
|
9
|
+
import { copyFile, mkdir, writeFile as writeFile$1, readFile as readFile$1, rm } from 'node:fs/promises';
|
|
9
10
|
import { homedir, tmpdir } from 'node:os';
|
|
10
11
|
import YAML from 'js-yaml';
|
|
11
12
|
import { execFile, spawn } from 'node:child_process';
|
|
@@ -13,7 +14,6 @@ import { createConnection, createServer } from 'node:net';
|
|
|
13
14
|
import { promisify } from 'node:util';
|
|
14
15
|
import { DatabaseSync } from 'node:sqlite';
|
|
15
16
|
import { createRequire } from 'node:module';
|
|
16
|
-
import { mkdir, writeFile as writeFile$1, readFile as readFile$1, rm } from 'node:fs/promises';
|
|
17
17
|
import { deflateSync, inflateSync } from 'node:zlib';
|
|
18
18
|
|
|
19
19
|
const subtle = nodeCrypto.webcrypto?.subtle || {};
|
|
@@ -5106,7 +5106,7 @@ function _expandFromEnv(value) {
|
|
|
5106
5106
|
const _inlineRuntimeConfig = {
|
|
5107
5107
|
"app": {
|
|
5108
5108
|
"baseURL": "/",
|
|
5109
|
-
"buildId": "
|
|
5109
|
+
"buildId": "88479a5b-ce6a-400f-9737-1cc9f54b1fe5",
|
|
5110
5110
|
"buildAssetsDir": "/_nuxt/",
|
|
5111
5111
|
"cdnURL": ""
|
|
5112
5112
|
},
|
|
@@ -5136,7 +5136,7 @@ const _inlineRuntimeConfig = {
|
|
|
5136
5136
|
"public": {
|
|
5137
5137
|
"appName": "AgentWorkShop",
|
|
5138
5138
|
"appTitle": "AgentWorkShop",
|
|
5139
|
-
"version": "0.7.
|
|
5139
|
+
"version": "0.7.11",
|
|
5140
5140
|
"description": "基于 Nuxt 4 的配置驱动运行范式",
|
|
5141
5141
|
"mode": "dev",
|
|
5142
5142
|
"apiBase": "/api",
|
|
@@ -6138,394 +6138,428 @@ const ErrorCodes = {
|
|
|
6138
6138
|
INTERNAL: "INTERNAL_ERROR"
|
|
6139
6139
|
};
|
|
6140
6140
|
|
|
6141
|
-
// ============================================================
|
|
6142
|
-
// AgentWorkShop SDK — HookBus(插件生命周期钩子总线)
|
|
6143
|
-
// ------------------------------------------------------------
|
|
6144
|
-
// 设计:
|
|
6145
|
-
// · 异步串行触发(监听器按注册序 await,可返回值形成 waterfall)
|
|
6146
|
-
// · 错误隔离:单监听器抛错不影响其他监听器,错误经 onError 上报
|
|
6147
|
-
// · 支持通配符 '*'(接收 { type, payload })
|
|
6148
|
-
// · 连续失败自动摘除(熔断):同一监听器连续失败超阈值自动停用,
|
|
6149
|
-
// 防止病态插件拖垮事件桥
|
|
6150
|
-
// ============================================================
|
|
6151
|
-
|
|
6152
|
-
const FAILLIMIT = 8;
|
|
6153
|
-
|
|
6154
|
-
class HookBus {
|
|
6155
|
-
constructor({ name = 'hooks', onError } = {}) {
|
|
6156
|
-
this.name = name;
|
|
6157
|
-
this.onError = onError ?? (() => {});
|
|
6158
|
-
/** type → Array<{ fn, fails }> */
|
|
6159
|
-
this.listeners = new Map();
|
|
6160
|
-
this.count = 0;
|
|
6161
|
-
}
|
|
6162
|
-
|
|
6163
|
-
/** 注册监听器;type='*' 接收全部事件({type,payload})。返回解绑函数 */
|
|
6164
|
-
on(type, fn) {
|
|
6165
|
-
if (typeof type !== 'string' || typeof fn !== 'function') return () => {}
|
|
6166
|
-
const list = this.listeners.get(type) ?? [];
|
|
6167
|
-
list.push({ fn, fails: 0 });
|
|
6168
|
-
this.listeners.set(type, list);
|
|
6169
|
-
this.count++;
|
|
6170
|
-
return () => this.off(type, fn)
|
|
6171
|
-
}
|
|
6172
|
-
|
|
6173
|
-
/** 一次性监听(触发后自动解绑) */
|
|
6174
|
-
once(type, fn) {
|
|
6175
|
-
const off = this.on(type, async (arg) => {
|
|
6176
|
-
off();
|
|
6177
|
-
return fn(arg)
|
|
6178
|
-
});
|
|
6179
|
-
return off
|
|
6180
|
-
}
|
|
6181
|
-
|
|
6182
|
-
off(type, fn) {
|
|
6183
|
-
const list = this.listeners.get(type);
|
|
6184
|
-
if (!list) return
|
|
6185
|
-
const idx = list.findIndex(l => l.fn === fn);
|
|
6186
|
-
if (idx >= 0) {
|
|
6187
|
-
list.splice(idx, 1);
|
|
6188
|
-
this.count--;
|
|
6189
|
-
}
|
|
6190
|
-
if (!list.length) this.listeners.delete(type);
|
|
6191
|
-
}
|
|
6192
|
-
|
|
6193
|
-
/**
|
|
6194
|
-
* 触发事件:同名监听器按注册序串行 await;返回最后一个非 undefined 返回值。
|
|
6195
|
-
* emit 永不抛错——监听器错误被隔离并计数,连续超限自动摘除(熔断)。
|
|
6196
|
-
*/
|
|
6197
|
-
async emit(type, payload) {
|
|
6198
|
-
const same = this.listeners.get(type);
|
|
6199
|
-
const wild = this.listeners.get('*');
|
|
6200
|
-
let result;
|
|
6201
|
-
if (same) {
|
|
6202
|
-
for (const l of [...same]) {
|
|
6203
|
-
const r = await this.#invoke(type, l, payload);
|
|
6204
|
-
if (r !== undefined) result = r;
|
|
6205
|
-
}
|
|
6206
|
-
}
|
|
6207
|
-
if (wild) {
|
|
6208
|
-
for (const l of [...wild]) {
|
|
6209
|
-
await this.#invoke('*', l, { type, payload });
|
|
6210
|
-
}
|
|
6211
|
-
}
|
|
6212
|
-
return result
|
|
6213
|
-
}
|
|
6214
|
-
|
|
6215
|
-
async #invoke(type, l, payload) {
|
|
6216
|
-
try {
|
|
6217
|
-
|
|
6218
|
-
|
|
6219
|
-
|
|
6220
|
-
|
|
6221
|
-
|
|
6222
|
-
|
|
6223
|
-
|
|
6224
|
-
|
|
6225
|
-
|
|
6226
|
-
|
|
6227
|
-
|
|
6228
|
-
|
|
6229
|
-
|
|
6230
|
-
|
|
6231
|
-
|
|
6232
|
-
|
|
6233
|
-
|
|
6234
|
-
|
|
6235
|
-
|
|
6236
|
-
|
|
6237
|
-
|
|
6238
|
-
|
|
6239
|
-
|
|
6240
|
-
|
|
6241
|
-
|
|
6242
|
-
|
|
6243
|
-
// ============================================================
|
|
6244
|
-
// AgentWorkShop SDK — 平台 REST 客户端
|
|
6245
|
-
// ------------------------------------------------------------
|
|
6246
|
-
// SDK 作为项目服务的 client:对平台 REST 面(/api/**)的类型化轻封装。
|
|
6247
|
-
// 三个使用形态:
|
|
6248
|
-
// 1) 插件内: ctx.api.lines.list() —— 宿主注入(自环 origin)
|
|
6249
|
-
// 2) 外部脚本: createPlatformClient({ baseUrl, token }).daq.nodes()
|
|
6250
|
-
// 3) 浏览器: createPlatformClient({ baseUrl: '' }) 同源相对路径
|
|
6251
|
-
// 资源方法返回原始 JSON body(data 字段已解包);4xx/5xx 抛错(含 status)。
|
|
6252
|
-
// ============================================================
|
|
6253
|
-
|
|
6254
|
-
function createPlatformClient({ baseUrl = '', token, logger, timeoutMs = 10000 } = {}) {
|
|
6255
|
-
// baseUrl 支持函数(延迟解析):插件宿主的监听端口在 nitro listen 钩子后才确定
|
|
6256
|
-
const resolveBase = () => String(typeof baseUrl === 'function' ? baseUrl() : (baseUrl ?? '')).replace(/\/+$/, '');
|
|
6257
|
-
let authToken = token ?? null;
|
|
6258
|
-
|
|
6259
|
-
async function call(method, path, body, opt = {}) {
|
|
6260
|
-
const base = resolveBase();
|
|
6261
|
-
const headers = { accept: 'application/json', ...(opt.headers ?? {}) };
|
|
6262
|
-
if (authToken) headers.authorization = `Bearer ${authToken}`;
|
|
6263
|
-
if (body !== undefined) headers['content-type'] = 'application/json';
|
|
6264
|
-
const res = await fetch(`${base}${path}`, {
|
|
6265
|
-
method,
|
|
6266
|
-
headers,
|
|
6267
|
-
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
6268
|
-
signal: AbortSignal.timeout(opt.timeoutMs ?? timeoutMs),
|
|
6269
|
-
});
|
|
6270
|
-
const json = await res.json().catch(() => null);
|
|
6271
|
-
if (!res.ok) {
|
|
6272
|
-
const err = new Error(json?.message ?? `HTTP ${res.status} ${path}`);
|
|
6273
|
-
err.status = res.status;
|
|
6274
|
-
err.body = json;
|
|
6275
|
-
if (logger) logger.warn(`API ${method} ${path} → ${res.status}`);
|
|
6276
|
-
throw err
|
|
6277
|
-
}
|
|
6278
|
-
// 平台统一信封 { code, message, data } → 解包 data;非信封原样返回
|
|
6279
|
-
return json && typeof json === 'object' && 'data' in json ? json.data : json
|
|
6280
|
-
}
|
|
6281
|
-
|
|
6282
|
-
const resource = root => ({
|
|
6283
|
-
list: (query = {}) => call('GET', `${root}${toQuery(query)}`),
|
|
6284
|
-
get: id => call('GET', `${root}/${id}`),
|
|
6285
|
-
create: body => call('POST', root, body),
|
|
6286
|
-
update: (id, patch) => call('PATCH', `${root}/${id}`, patch),
|
|
6287
|
-
remove: id => call('DELETE', `${root}/${id}`),
|
|
6288
|
-
});
|
|
6289
|
-
|
|
6290
|
-
const client = {
|
|
6291
|
-
/** 底层调用(任意平台路径;自动带 token 与信封解包) */
|
|
6292
|
-
call,
|
|
6293
|
-
get: (path, query = {}) => call('GET', `${path}${toQuery(query)}`),
|
|
6294
|
-
post: (path, body) => call('POST', path, body),
|
|
6295
|
-
patch: (path, body) => call('PATCH', path, body),
|
|
6296
|
-
delete: path => call('DELETE', path),
|
|
6297
|
-
setToken: (t) => {
|
|
6298
|
-
authToken = t ?? null;
|
|
6299
|
-
return client
|
|
6300
|
-
},
|
|
6301
|
-
/** 平台健康(免鉴权) */
|
|
6302
|
-
ping: () => call('GET', '/api/plugins/manifest'),
|
|
6303
|
-
|
|
6304
|
-
// ---- 业务资源面 ----
|
|
6305
|
-
users: {
|
|
6306
|
-
...resource('/api/users'),
|
|
6307
|
-
login: (email, password) => call('POST', '/api/users/login', { email, password }),
|
|
6308
|
-
me: () => call('GET', '/api/users/me'),
|
|
6309
|
-
},
|
|
6310
|
-
lines: {
|
|
6311
|
-
...resource('/api/workshop/dcw/lines'),
|
|
6312
|
-
start: (id, recipeId = '') => call('POST', `/api/workshop/dcw/lines/${id}/start`, { recipeId }),
|
|
6313
|
-
stop: id => call('POST', `/api/workshop/dcw/lines/${id}/stop`),
|
|
6314
|
-
},
|
|
6315
|
-
products: resource('/api/workshop/dcw/products'),
|
|
6316
|
-
recipes: resource('/api/workshop/dcw/recipes'),
|
|
6317
|
-
dcwNodes: resource('/api/workshop/dcw'),
|
|
6318
|
-
daqNodes: {
|
|
6319
|
-
...resource('/api/workshop/daq'),
|
|
6320
|
-
alarms: () => call('GET', '/api/workshop/daq/alarms'),
|
|
6321
|
-
},
|
|
6322
|
-
templates: {
|
|
6323
|
-
daq: () => call('GET', '/api/workshop/daq').then(d => d?.templates ?? []),
|
|
6324
|
-
dcw: () => call('GET', '/api/workshop/dcw').then(d => d?.templates ?? []),
|
|
6325
|
-
},
|
|
6326
|
-
twins: resource('/api/workshop/device-twins'),
|
|
6327
|
-
teams: resource('/api/workshop/teams'),
|
|
6328
|
-
agents: resource('/api/workshop/agents'),
|
|
6329
|
-
channels: resource('/api/workshop/channels'),
|
|
6330
|
-
plugins: {
|
|
6331
|
-
manifest: () => call('GET', '/api/plugins/manifest'),
|
|
6332
|
-
},
|
|
6333
|
-
};
|
|
6334
|
-
return client
|
|
6335
|
-
}
|
|
6336
|
-
|
|
6337
|
-
function toQuery(query) {
|
|
6338
|
-
const entries = Object.entries(query ?? {}).filter(([, v]) => v !== undefined && v !== null && v !== '');
|
|
6339
|
-
if (!entries.length) return ''
|
|
6340
|
-
return `?${new URLSearchParams(Object.fromEntries(entries.map(([k, v]) => [k, String(v)]))).toString()}`
|
|
6341
|
-
}
|
|
6342
|
-
|
|
6343
|
-
// ============================================================
|
|
6344
|
-
// AgentWorkShop SDK — 服务端插件上下文工厂(宿主调用;插件经 setup(ctx) 获得)
|
|
6345
|
-
// ------------------------------------------------------------
|
|
6346
|
-
// ctx 形态(运行时完整变量面):
|
|
6347
|
-
// 身份 ctx.name / ctx.scope('home'|'project') / ctx.dir / ctx.sdkVersion
|
|
6348
|
-
// 钩子 ctx.hooks HookBus(生命周期 + event:*) [SDK]
|
|
6349
|
-
// 日志 ctx.logger { debug, info, warn, error } 插件名前缀 [SDK]
|
|
6350
|
-
// 配置 ctx.config { get(key), all(), onChange(fn) } [SDK]
|
|
6351
|
-
// 存储 ctx.kv { get,set,all,bump } 内存态+防抖落盘 [SDK]
|
|
6352
|
-
// 定时 ctx.timer { setInterval, setTimeout } 服务关闭自动回收 [SDK]
|
|
6353
|
-
// 清理 ctx.onDispose(fn) / ctx.subscriptions [SDK]
|
|
6354
|
-
// 路由 ctx.route(method, path, handler) → /api/plugins/<name>… [SDK]
|
|
6355
|
-
// 平台 ctx.api 平台 REST 客户端(lines/daq/dcw/twins/teams…) [SDK]
|
|
6356
|
-
// 网络 ctx.http { get, post } 带超时 fetch(仅 http/https) [SDK]
|
|
6357
|
-
// 事件 ctx.events { on(type,fn), off } scene 实时事件 [SDK]
|
|
6358
|
-
// 路径 ctx.paths { home, configRoot, dataDir } [SDK]
|
|
6359
|
-
// ============================================================
|
|
6360
|
-
|
|
6361
|
-
const SDK_VERSION = '0.3.0';
|
|
6362
|
-
|
|
6363
|
-
/** 允许的对外请求协议守卫(拒绝 file:/data: 等;宿主/插件同守此规则) */
|
|
6364
|
-
function safeUrl(raw, timeoutMs = 8000) {
|
|
6365
|
-
const u = new URL(String(raw));
|
|
6366
|
-
if (u.protocol !== 'http:' && u.protocol !== 'https:')
|
|
6367
|
-
throw new Error(`协议不允许: ${u.protocol}(仅 http/https)`)
|
|
6368
|
-
return { signal: AbortSignal.timeout(timeoutMs) }
|
|
6369
|
-
}
|
|
6370
|
-
|
|
6371
|
-
/**
|
|
6372
|
-
* 创建服务端插件上下文。
|
|
6373
|
-
* @param {{ name, scope, dir, hooks, logger, config, paths, emitter, onDispose, selfOrigin }} opts 宿主装配
|
|
6374
|
-
*/
|
|
6375
|
-
function createPluginContext(opts) {
|
|
6376
|
-
const { name, scope, dir, hooks, config, paths, emitter } = opts;
|
|
6377
|
-
// 规范化 logger:宿主实现缺级时兜底 no-op(插件可用全套 debug/info/warn/error)
|
|
6378
|
-
const logger = {
|
|
6379
|
-
debug: () => {},
|
|
6380
|
-
info: () => {},
|
|
6381
|
-
warn: () => {},
|
|
6382
|
-
error: () => {},
|
|
6383
|
-
...(opts.logger ?? {}),
|
|
6384
|
-
};
|
|
6385
|
-
const onDispose = (fn) => {
|
|
6386
|
-
return fn
|
|
6387
|
-
};
|
|
6388
|
-
|
|
6389
|
-
// ---- 定时器:自动登记回收,杜绝插件定时器泄漏 ----
|
|
6390
|
-
const timer = {
|
|
6391
|
-
setInterval: (fn, ms, ...rest) => {
|
|
6392
|
-
const id = setInterval(fn, ms, ...rest);
|
|
6393
|
-
if (typeof id === 'object' && id !== null && 'unref' in id) id.unref?.();
|
|
6394
|
-
return id
|
|
6395
|
-
},
|
|
6396
|
-
setTimeout: (fn, ms, ...rest) => {
|
|
6397
|
-
const id = setTimeout(fn, ms, ...rest);
|
|
6398
|
-
if (typeof id === 'object' && id !== null && 'unref' in id) id.unref?.();
|
|
6399
|
-
return id
|
|
6400
|
-
},
|
|
6401
|
-
};
|
|
6402
|
-
|
|
6403
|
-
// ---- 插件私有持久化:内存态为准 + 200ms 防抖落盘 —— 高频钩子(daq:sample)
|
|
6404
|
-
// 与低频钩子(line:stop)并发时无 read-modify-write 竞态(JS 同步内存操作原子) ----
|
|
6405
|
-
const kvDir = join(paths.dataDir, 'plugins', name);
|
|
6406
|
-
const kvFile = join(kvDir, 'kv.json');
|
|
6407
|
-
const kvState = (() => {
|
|
6408
|
-
try {
|
|
6409
|
-
return JSON.parse(readFileSync(kvFile, 'utf8'))
|
|
6410
|
-
}
|
|
6411
|
-
catch {
|
|
6412
|
-
return {}
|
|
6413
|
-
}
|
|
6414
|
-
})();
|
|
6415
|
-
let kvFlushTimer = null;
|
|
6416
|
-
const kvFlush = () => {
|
|
6417
|
-
clearTimeout(kvFlushTimer);
|
|
6418
|
-
kvFlushTimer = setTimeout(() => {
|
|
6419
|
-
try {
|
|
6420
|
-
mkdirSync(kvDir, { recursive: true });
|
|
6421
|
-
const tmp = `${kvFile}.${process.pid}.tmp`;
|
|
6422
|
-
writeFileSync(tmp, `${JSON.stringify(kvState, null, 2)}\n`, 'utf8');
|
|
6423
|
-
renameSync(tmp, kvFile);
|
|
6424
|
-
}
|
|
6425
|
-
catch { /* 磁盘异常不阻断插件 */ }
|
|
6426
|
-
}, 200);
|
|
6427
|
-
};
|
|
6428
|
-
|
|
6429
|
-
const ctx = {
|
|
6430
|
-
name,
|
|
6431
|
-
scope,
|
|
6432
|
-
dir: resolve$1(dir),
|
|
6433
|
-
sdkVersion: SDK_VERSION,
|
|
6434
|
-
hooks, // 宿主全局总线(与事件桥同源)
|
|
6435
|
-
logger,
|
|
6436
|
-
config: {
|
|
6437
|
-
get: key => config?.effective?.[key],
|
|
6438
|
-
all: () => ({ ...config?.effective }),
|
|
6439
|
-
/** 运行时覆盖变更订阅(runtime-settings.json 变化;宿主 fs.watch 驱动) */
|
|
6440
|
-
onChange: fn => hooks.on('config:changed', fn),
|
|
6441
|
-
},
|
|
6442
|
-
paths: { ...paths },
|
|
6443
|
-
dataDir: kvDir,
|
|
6444
|
-
kv: {
|
|
6445
|
-
get: key => kvState[key],
|
|
6446
|
-
set: (key, value) => {
|
|
6447
|
-
kvState[key] = value;
|
|
6448
|
-
kvFlush();
|
|
6449
|
-
return value
|
|
6450
|
-
},
|
|
6451
|
-
all: () => ({ ...kvState }),
|
|
6452
|
-
bump: (key, by = 1) => {
|
|
6453
|
-
kvState[key] = (Number(kvState[key]) || 0) + by;
|
|
6454
|
-
kvFlush();
|
|
6455
|
-
return kvState[key]
|
|
6456
|
-
},
|
|
6457
|
-
},
|
|
6458
|
-
timer,
|
|
6459
|
-
onDispose,
|
|
6460
|
-
/** 订阅式清理对象({ dispose(){} })集中登记 */
|
|
6461
|
-
subscriptions: {
|
|
6462
|
-
add: (d) => {
|
|
6463
|
-
return d
|
|
6464
|
-
},
|
|
6465
|
-
},
|
|
6466
|
-
route: (method, path, handler) => emitter?.registerRoute(name, method, path, handler),
|
|
6467
|
-
/** 平台 REST 客户端(自环 origin 延迟解析;鉴权端点请 ctx.api.setToken(token)) */
|
|
6468
|
-
api: createPlatformClient({
|
|
6469
|
-
baseUrl: typeof opts.selfOrigin === 'function' ? opts.selfOrigin : () => opts.selfOrigin,
|
|
6470
|
-
logger,
|
|
6471
|
-
}),
|
|
6472
|
-
http: {
|
|
6473
|
-
get: (url, opts2 = {}) => fetch(url, { ...safeUrl(url, opts2.timeoutMs), ...opts2 }),
|
|
6474
|
-
post: (url, body, opts2 = {}) => fetch(url, {
|
|
6475
|
-
method: 'POST',
|
|
6476
|
-
headers: { 'content-type': 'application/json', ...(opts2.headers ?? {}) },
|
|
6477
|
-
body: JSON.stringify(body ?? {}),
|
|
6478
|
-
...safeUrl(url, opts2.timeoutMs),
|
|
6479
|
-
}),
|
|
6480
|
-
},
|
|
6481
|
-
events: {
|
|
6482
|
-
on: (type, fn) => hooks.on(type === '*' ? '*' : `event:${type}`, fn),
|
|
6483
|
-
off: (type, fn) => hooks.off(type === '*' ? '*' : `event:${type}`, fn),
|
|
6484
|
-
},
|
|
6485
|
-
};
|
|
6486
|
-
return ctx
|
|
6141
|
+
// ============================================================
|
|
6142
|
+
// AgentWorkShop SDK — HookBus(插件生命周期钩子总线)
|
|
6143
|
+
// ------------------------------------------------------------
|
|
6144
|
+
// 设计:
|
|
6145
|
+
// · 异步串行触发(监听器按注册序 await,可返回值形成 waterfall)
|
|
6146
|
+
// · 错误隔离:单监听器抛错不影响其他监听器,错误经 onError 上报
|
|
6147
|
+
// · 支持通配符 '*'(接收 { type, payload })
|
|
6148
|
+
// · 连续失败自动摘除(熔断):同一监听器连续失败超阈值自动停用,
|
|
6149
|
+
// 防止病态插件拖垮事件桥
|
|
6150
|
+
// ============================================================
|
|
6151
|
+
|
|
6152
|
+
const FAILLIMIT = 8;
|
|
6153
|
+
|
|
6154
|
+
class HookBus {
|
|
6155
|
+
constructor({ name = 'hooks', onError } = {}) {
|
|
6156
|
+
this.name = name;
|
|
6157
|
+
this.onError = onError ?? (() => {});
|
|
6158
|
+
/** type → Array<{ fn, fails }> */
|
|
6159
|
+
this.listeners = new Map();
|
|
6160
|
+
this.count = 0;
|
|
6161
|
+
}
|
|
6162
|
+
|
|
6163
|
+
/** 注册监听器;type='*' 接收全部事件({type,payload})。返回解绑函数 */
|
|
6164
|
+
on(type, fn) {
|
|
6165
|
+
if (typeof type !== 'string' || typeof fn !== 'function') return () => {}
|
|
6166
|
+
const list = this.listeners.get(type) ?? [];
|
|
6167
|
+
list.push({ fn, fails: 0 });
|
|
6168
|
+
this.listeners.set(type, list);
|
|
6169
|
+
this.count++;
|
|
6170
|
+
return () => this.off(type, fn)
|
|
6171
|
+
}
|
|
6172
|
+
|
|
6173
|
+
/** 一次性监听(触发后自动解绑) */
|
|
6174
|
+
once(type, fn) {
|
|
6175
|
+
const off = this.on(type, async (arg) => {
|
|
6176
|
+
off();
|
|
6177
|
+
return fn(arg)
|
|
6178
|
+
});
|
|
6179
|
+
return off
|
|
6180
|
+
}
|
|
6181
|
+
|
|
6182
|
+
off(type, fn) {
|
|
6183
|
+
const list = this.listeners.get(type);
|
|
6184
|
+
if (!list) return
|
|
6185
|
+
const idx = list.findIndex(l => l.fn === fn);
|
|
6186
|
+
if (idx >= 0) {
|
|
6187
|
+
list.splice(idx, 1);
|
|
6188
|
+
this.count--;
|
|
6189
|
+
}
|
|
6190
|
+
if (!list.length) this.listeners.delete(type);
|
|
6191
|
+
}
|
|
6192
|
+
|
|
6193
|
+
/**
|
|
6194
|
+
* 触发事件:同名监听器按注册序串行 await;返回最后一个非 undefined 返回值。
|
|
6195
|
+
* emit 永不抛错——监听器错误被隔离并计数,连续超限自动摘除(熔断)。
|
|
6196
|
+
*/
|
|
6197
|
+
async emit(type, payload) {
|
|
6198
|
+
const same = this.listeners.get(type);
|
|
6199
|
+
const wild = this.listeners.get('*');
|
|
6200
|
+
let result;
|
|
6201
|
+
if (same) {
|
|
6202
|
+
for (const l of [...same]) {
|
|
6203
|
+
const r = await this.#invoke(type, l, payload);
|
|
6204
|
+
if (r !== undefined) result = r;
|
|
6205
|
+
}
|
|
6206
|
+
}
|
|
6207
|
+
if (wild) {
|
|
6208
|
+
for (const l of [...wild]) {
|
|
6209
|
+
await this.#invoke('*', l, { type, payload });
|
|
6210
|
+
}
|
|
6211
|
+
}
|
|
6212
|
+
return result
|
|
6213
|
+
}
|
|
6214
|
+
|
|
6215
|
+
async #invoke(type, l, payload) {
|
|
6216
|
+
try {
|
|
6217
|
+
const r = await l.fn(payload);
|
|
6218
|
+
l.fails = 0; // 仅"连续失败"触发熔断:成功即清零,偶发失败不累积驱逐
|
|
6219
|
+
return r
|
|
6220
|
+
}
|
|
6221
|
+
catch (err) {
|
|
6222
|
+
l.fails++;
|
|
6223
|
+
try {
|
|
6224
|
+
this.onError(err, { bus: this.name, type, fails: l.fails });
|
|
6225
|
+
}
|
|
6226
|
+
catch { /* 上报器自身错误忽略 */ }
|
|
6227
|
+
if (l.fails >= FAILLIMIT) {
|
|
6228
|
+
const list = this.listeners.get(type);
|
|
6229
|
+
const idx = list?.indexOf(l) ?? -1;
|
|
6230
|
+
if (idx >= 0) {
|
|
6231
|
+
list.splice(idx, 1);
|
|
6232
|
+
this.count--;
|
|
6233
|
+
}
|
|
6234
|
+
}
|
|
6235
|
+
return undefined
|
|
6236
|
+
}
|
|
6237
|
+
}
|
|
6238
|
+
|
|
6239
|
+
/** 已注册监听器总数(诊断用) */
|
|
6240
|
+
get size() {
|
|
6241
|
+
return this.count
|
|
6242
|
+
}
|
|
6487
6243
|
}
|
|
6488
6244
|
|
|
6489
|
-
|
|
6490
|
-
|
|
6491
|
-
|
|
6492
|
-
|
|
6493
|
-
|
|
6494
|
-
|
|
6495
|
-
|
|
6496
|
-
|
|
6497
|
-
|
|
6498
|
-
|
|
6499
|
-
|
|
6500
|
-
|
|
6501
|
-
|
|
6502
|
-
|
|
6503
|
-
|
|
6504
|
-
|
|
6505
|
-
|
|
6506
|
-
|
|
6507
|
-
|
|
6508
|
-
|
|
6509
|
-
|
|
6510
|
-
|
|
6511
|
-
|
|
6512
|
-
|
|
6513
|
-
|
|
6245
|
+
// ============================================================
|
|
6246
|
+
// AgentWorkShop SDK — 平台 REST 客户端
|
|
6247
|
+
// ------------------------------------------------------------
|
|
6248
|
+
// SDK 作为项目服务的 client:对平台 REST 面(/api/**)的类型化轻封装。
|
|
6249
|
+
// 三个使用形态:
|
|
6250
|
+
// 1) 插件内: ctx.api.lines.list() —— 宿主注入(自环 origin)
|
|
6251
|
+
// 2) 外部脚本: createPlatformClient({ baseUrl, token }).daq.nodes()
|
|
6252
|
+
// 3) 浏览器: createPlatformClient({ baseUrl: '' }) 同源相对路径
|
|
6253
|
+
// 资源方法返回原始 JSON body(data 字段已解包);4xx/5xx 抛错(含 status)。
|
|
6254
|
+
// ============================================================
|
|
6255
|
+
|
|
6256
|
+
function createPlatformClient({ baseUrl = '', token, logger, timeoutMs = 10000 } = {}) {
|
|
6257
|
+
// baseUrl 支持函数(延迟解析):插件宿主的监听端口在 nitro listen 钩子后才确定
|
|
6258
|
+
const resolveBase = () => String(typeof baseUrl === 'function' ? baseUrl() : (baseUrl ?? '')).replace(/\/+$/, '');
|
|
6259
|
+
let authToken = token ?? null;
|
|
6260
|
+
|
|
6261
|
+
async function call(method, path, body, opt = {}) {
|
|
6262
|
+
const base = resolveBase();
|
|
6263
|
+
const headers = { accept: 'application/json', ...(opt.headers ?? {}) };
|
|
6264
|
+
if (authToken) headers.authorization = `Bearer ${authToken}`;
|
|
6265
|
+
if (body !== undefined) headers['content-type'] = 'application/json';
|
|
6266
|
+
const res = await fetch(`${base}${path}`, {
|
|
6267
|
+
method,
|
|
6268
|
+
headers,
|
|
6269
|
+
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
6270
|
+
signal: AbortSignal.timeout(opt.timeoutMs ?? timeoutMs),
|
|
6271
|
+
});
|
|
6272
|
+
const json = await res.json().catch(() => null);
|
|
6273
|
+
if (!res.ok) {
|
|
6274
|
+
const err = new Error(json?.message ?? `HTTP ${res.status} ${path}`);
|
|
6275
|
+
err.status = res.status;
|
|
6276
|
+
err.body = json;
|
|
6277
|
+
if (logger) logger.warn(`API ${method} ${path} → ${res.status}`);
|
|
6278
|
+
throw err
|
|
6279
|
+
}
|
|
6280
|
+
// 平台统一信封 { code, message, data }:HTTP 200 但业务 code 非 0 也是错误
|
|
6281
|
+
// (不做此检查插件会把 error 信封解包成 null 当成功用)
|
|
6282
|
+
if (json && typeof json === 'object' && 'code' in json && json.code !== 0) {
|
|
6283
|
+
const err = new Error(json.message ?? `业务错误 ${json.code} ${path}`);
|
|
6284
|
+
err.status = res.status;
|
|
6285
|
+
err.code = json.code;
|
|
6286
|
+
err.body = json;
|
|
6287
|
+
if (logger) logger.warn(`API ${method} ${path} → code ${json.code}`);
|
|
6288
|
+
throw err
|
|
6289
|
+
}
|
|
6290
|
+
// 非信封原样返回
|
|
6291
|
+
return json && typeof json === 'object' && 'data' in json && 'code' in json ? json.data : json
|
|
6292
|
+
}
|
|
6293
|
+
|
|
6294
|
+
const resource = root => ({
|
|
6295
|
+
list: (query = {}) => call('GET', `${root}${toQuery(query)}`),
|
|
6296
|
+
get: id => call('GET', `${root}/${id}`),
|
|
6297
|
+
create: body => call('POST', root, body),
|
|
6298
|
+
update: (id, patch) => call('PATCH', `${root}/${id}`, patch),
|
|
6299
|
+
remove: id => call('DELETE', `${root}/${id}`),
|
|
6300
|
+
});
|
|
6301
|
+
|
|
6302
|
+
const client = {
|
|
6303
|
+
/** 底层调用(任意平台路径;自动带 token 与信封解包) */
|
|
6304
|
+
call,
|
|
6305
|
+
get: (path, query = {}) => call('GET', `${path}${toQuery(query)}`),
|
|
6306
|
+
post: (path, body) => call('POST', path, body),
|
|
6307
|
+
patch: (path, body) => call('PATCH', path, body),
|
|
6308
|
+
delete: path => call('DELETE', path),
|
|
6309
|
+
setToken: (t) => {
|
|
6310
|
+
authToken = t ?? null;
|
|
6311
|
+
return client
|
|
6312
|
+
},
|
|
6313
|
+
/** 平台健康(免鉴权) */
|
|
6314
|
+
ping: () => call('GET', '/api/plugins/manifest'),
|
|
6315
|
+
|
|
6316
|
+
// ---- 业务资源面 ----
|
|
6317
|
+
users: {
|
|
6318
|
+
...resource('/api/users'),
|
|
6319
|
+
login: (email, password) => call('POST', '/api/users/login', { email, password }),
|
|
6320
|
+
me: () => call('GET', '/api/users/me'),
|
|
6321
|
+
},
|
|
6322
|
+
lines: {
|
|
6323
|
+
...resource('/api/workshop/dcw/lines'),
|
|
6324
|
+
start: (id, recipeId = '') => call('POST', `/api/workshop/dcw/lines/${id}/start`, { recipeId }),
|
|
6325
|
+
stop: id => call('POST', `/api/workshop/dcw/lines/${id}/stop`),
|
|
6326
|
+
},
|
|
6327
|
+
products: resource('/api/workshop/dcw/products'),
|
|
6328
|
+
recipes: resource('/api/workshop/dcw/recipes'),
|
|
6329
|
+
dcwNodes: resource('/api/workshop/dcw'),
|
|
6330
|
+
daqNodes: {
|
|
6331
|
+
...resource('/api/workshop/daq'),
|
|
6332
|
+
alarms: () => call('GET', '/api/workshop/daq/alarms'),
|
|
6333
|
+
},
|
|
6334
|
+
templates: {
|
|
6335
|
+
daq: () => call('GET', '/api/workshop/daq').then(d => d?.templates ?? []),
|
|
6336
|
+
dcw: () => call('GET', '/api/workshop/dcw').then(d => d?.templates ?? []),
|
|
6337
|
+
},
|
|
6338
|
+
twins: resource('/api/workshop/device-twins'),
|
|
6339
|
+
teams: resource('/api/workshop/teams'),
|
|
6340
|
+
agents: resource('/api/workshop/agents'),
|
|
6341
|
+
channels: resource('/api/workshop/channels'),
|
|
6342
|
+
permissions: {
|
|
6343
|
+
/** admin:全量产线 + 用户(含 channels/grants)总览 */
|
|
6344
|
+
overview: () => call('GET', '/api/workshop/permissions'),
|
|
6345
|
+
/** admin:批量设置用户产线授权 { userId, grants: [{ lineId, mode: 'readonly'|'operate'|null }] } */
|
|
6346
|
+
set: payload => call('PUT', '/api/workshop/permissions', payload),
|
|
6347
|
+
},
|
|
6348
|
+
plugins: {
|
|
6349
|
+
manifest: () => call('GET', '/api/plugins/manifest'),
|
|
6350
|
+
},
|
|
6351
|
+
};
|
|
6352
|
+
return client
|
|
6353
|
+
}
|
|
6354
|
+
|
|
6355
|
+
function toQuery(query) {
|
|
6356
|
+
const entries = Object.entries(query ?? {}).filter(([, v]) => v !== undefined && v !== null && v !== '');
|
|
6357
|
+
if (!entries.length) return ''
|
|
6358
|
+
return `?${new URLSearchParams(Object.fromEntries(entries.map(([k, v]) => [k, String(v)]))).toString()}`
|
|
6514
6359
|
}
|
|
6515
6360
|
|
|
6516
|
-
|
|
6517
|
-
|
|
6518
|
-
|
|
6519
|
-
|
|
6520
|
-
|
|
6521
|
-
|
|
6522
|
-
|
|
6523
|
-
|
|
6524
|
-
|
|
6525
|
-
|
|
6526
|
-
|
|
6527
|
-
|
|
6528
|
-
|
|
6361
|
+
// ============================================================
|
|
6362
|
+
// AgentWorkShop SDK — 服务端插件上下文工厂(宿主调用;插件经 setup(ctx) 获得)
|
|
6363
|
+
// ------------------------------------------------------------
|
|
6364
|
+
// ctx 形态(运行时完整变量面):
|
|
6365
|
+
// 身份 ctx.name / ctx.scope('home'|'project') / ctx.dir / ctx.sdkVersion
|
|
6366
|
+
// 钩子 ctx.hooks HookBus(生命周期 + event:*) [SDK]
|
|
6367
|
+
// 日志 ctx.logger { debug, info, warn, error } 插件名前缀 [SDK]
|
|
6368
|
+
// 配置 ctx.config { get(key), all(), onChange(fn) } [SDK]
|
|
6369
|
+
// 存储 ctx.kv { get,set,all,bump } 内存态+防抖落盘 [SDK]
|
|
6370
|
+
// 定时 ctx.timer { setInterval, setTimeout } 服务关闭自动回收 [SDK]
|
|
6371
|
+
// 清理 ctx.onDispose(fn) / ctx.subscriptions [SDK]
|
|
6372
|
+
// 路由 ctx.route(method, path, handler) → /api/plugins/<name>… [SDK]
|
|
6373
|
+
// 平台 ctx.api 平台 REST 客户端(lines/daq/dcw/twins/teams…) [SDK]
|
|
6374
|
+
// 网络 ctx.http { get, post } 带超时 fetch(仅 http/https) [SDK]
|
|
6375
|
+
// 事件 ctx.events { on(type,fn), off } scene 实时事件 [SDK]
|
|
6376
|
+
// 路径 ctx.paths { home, configRoot, dataDir } [SDK]
|
|
6377
|
+
// ============================================================
|
|
6378
|
+
|
|
6379
|
+
const SDK_VERSION = '0.3.0';
|
|
6380
|
+
|
|
6381
|
+
/** 允许的对外请求协议守卫(拒绝 file:/data: 等;宿主/插件同守此规则) */
|
|
6382
|
+
function safeUrl(raw, timeoutMs = 8000) {
|
|
6383
|
+
const u = new URL(String(raw));
|
|
6384
|
+
if (u.protocol !== 'http:' && u.protocol !== 'https:')
|
|
6385
|
+
throw new Error(`协议不允许: ${u.protocol}(仅 http/https)`)
|
|
6386
|
+
return { signal: AbortSignal.timeout(timeoutMs) }
|
|
6387
|
+
}
|
|
6388
|
+
|
|
6389
|
+
/**
|
|
6390
|
+
* 创建服务端插件上下文。
|
|
6391
|
+
* @param {{ name, scope, dir, hooks, logger, config, paths, emitter, onDispose, selfOrigin }} opts 宿主装配
|
|
6392
|
+
*/
|
|
6393
|
+
function createPluginContext(opts) {
|
|
6394
|
+
const { name, scope, dir, hooks, config, paths, emitter } = opts;
|
|
6395
|
+
// 规范化 logger:宿主实现缺级时兜底 no-op(插件可用全套 debug/info/warn/error)
|
|
6396
|
+
const logger = {
|
|
6397
|
+
debug: () => {},
|
|
6398
|
+
info: () => {},
|
|
6399
|
+
warn: () => {},
|
|
6400
|
+
error: () => {},
|
|
6401
|
+
...(opts.logger ?? {}),
|
|
6402
|
+
};
|
|
6403
|
+
const onDispose = (fn) => {
|
|
6404
|
+
return fn
|
|
6405
|
+
};
|
|
6406
|
+
|
|
6407
|
+
// ---- 定时器:自动登记回收,杜绝插件定时器泄漏 ----
|
|
6408
|
+
const timer = {
|
|
6409
|
+
setInterval: (fn, ms, ...rest) => {
|
|
6410
|
+
const id = setInterval(fn, ms, ...rest);
|
|
6411
|
+
if (typeof id === 'object' && id !== null && 'unref' in id) id.unref?.();
|
|
6412
|
+
return id
|
|
6413
|
+
},
|
|
6414
|
+
setTimeout: (fn, ms, ...rest) => {
|
|
6415
|
+
const id = setTimeout(fn, ms, ...rest);
|
|
6416
|
+
if (typeof id === 'object' && id !== null && 'unref' in id) id.unref?.();
|
|
6417
|
+
return id
|
|
6418
|
+
},
|
|
6419
|
+
};
|
|
6420
|
+
|
|
6421
|
+
// ---- 插件私有持久化:内存态为准 + 200ms 防抖落盘 —— 高频钩子(daq:sample)
|
|
6422
|
+
// 与低频钩子(line:stop)并发时无 read-modify-write 竞态(JS 同步内存操作原子) ----
|
|
6423
|
+
const kvDir = join(paths.dataDir, 'plugins', name);
|
|
6424
|
+
const kvFile = join(kvDir, 'kv.json');
|
|
6425
|
+
const kvState = (() => {
|
|
6426
|
+
try {
|
|
6427
|
+
return JSON.parse(readFileSync(kvFile, 'utf8'))
|
|
6428
|
+
}
|
|
6429
|
+
catch {
|
|
6430
|
+
return {}
|
|
6431
|
+
}
|
|
6432
|
+
})();
|
|
6433
|
+
let kvFlushTimer = null;
|
|
6434
|
+
const flushKvNow = () => {
|
|
6435
|
+
try {
|
|
6436
|
+
mkdirSync(kvDir, { recursive: true });
|
|
6437
|
+
const tmp = `${kvFile}.${process.pid}.tmp`;
|
|
6438
|
+
writeFileSync(tmp, `${JSON.stringify(kvState, null, 2)}\n`, 'utf8');
|
|
6439
|
+
renameSync(tmp, kvFile);
|
|
6440
|
+
}
|
|
6441
|
+
catch (err) {
|
|
6442
|
+
// 磁盘异常不阻断插件,但不再静默:持久化失败至少要可见
|
|
6443
|
+
console.warn('[sdk] kv 落盘失败:', err?.message ?? err);
|
|
6444
|
+
}
|
|
6445
|
+
};
|
|
6446
|
+
const kvFlush = () => {
|
|
6447
|
+
clearTimeout(kvFlushTimer);
|
|
6448
|
+
kvFlushTimer = setTimeout(flushKvNow, 200);
|
|
6449
|
+
};
|
|
6450
|
+
|
|
6451
|
+
const ctx = {
|
|
6452
|
+
name,
|
|
6453
|
+
scope,
|
|
6454
|
+
dir: resolve$1(dir),
|
|
6455
|
+
sdkVersion: SDK_VERSION,
|
|
6456
|
+
hooks, // 宿主全局总线(与事件桥同源)
|
|
6457
|
+
logger,
|
|
6458
|
+
config: {
|
|
6459
|
+
get: key => config?.effective?.[key],
|
|
6460
|
+
all: () => ({ ...config?.effective }),
|
|
6461
|
+
/** 运行时覆盖变更订阅(runtime-settings.json 变化;宿主 fs.watch 驱动) */
|
|
6462
|
+
onChange: fn => hooks.on('config:changed', fn),
|
|
6463
|
+
},
|
|
6464
|
+
paths: { ...paths },
|
|
6465
|
+
dataDir: kvDir,
|
|
6466
|
+
kv: {
|
|
6467
|
+
get: key => kvState[key],
|
|
6468
|
+
set: (key, value) => {
|
|
6469
|
+
kvState[key] = value;
|
|
6470
|
+
kvFlush();
|
|
6471
|
+
return value
|
|
6472
|
+
},
|
|
6473
|
+
all: () => ({ ...kvState }),
|
|
6474
|
+
bump: (key, by = 1) => {
|
|
6475
|
+
kvState[key] = (Number(kvState[key]) || 0) + by;
|
|
6476
|
+
kvFlush();
|
|
6477
|
+
return kvState[key]
|
|
6478
|
+
},
|
|
6479
|
+
},
|
|
6480
|
+
timer,
|
|
6481
|
+
onDispose,
|
|
6482
|
+
/** 产线权限面(宿主注入;未提供时降级为不可用占位):
|
|
6483
|
+
* lineMode(user,lineId) → 'none'|'readonly'|'operate'
|
|
6484
|
+
* visibleLineIds(user) → Set<lineId>|null(全量)
|
|
6485
|
+
* listGrants(userId) → [{lineId,mode,grantedBy,grantedAt}]
|
|
6486
|
+
* setGrants(userId, [{lineId,mode}]) → 写授权(需 admin 上下文)
|
|
6487
|
+
* 变更事件: hooks.on('permissions:changed', { userId }) */
|
|
6488
|
+
permissions: opts.permissions ?? {
|
|
6489
|
+
lineMode: () => 'none',
|
|
6490
|
+
visibleLineIds: () => new Set(),
|
|
6491
|
+
listGrants: () => [],
|
|
6492
|
+
setGrants: () => { throw new Error('[sdk] ctx.permissions 未由宿主注入') },
|
|
6493
|
+
},
|
|
6494
|
+
/** 订阅式清理对象({ dispose(){} })集中登记 */
|
|
6495
|
+
subscriptions: {
|
|
6496
|
+
add: (d) => {
|
|
6497
|
+
return d
|
|
6498
|
+
},
|
|
6499
|
+
},
|
|
6500
|
+
route: (method, path, handler) => emitter?.registerRoute(name, method, path, handler),
|
|
6501
|
+
/** 平台 REST 客户端(自环 origin 延迟解析;鉴权端点请 ctx.api.setToken(token)) */
|
|
6502
|
+
api: createPlatformClient({
|
|
6503
|
+
baseUrl: typeof opts.selfOrigin === 'function' ? opts.selfOrigin : () => opts.selfOrigin,
|
|
6504
|
+
logger,
|
|
6505
|
+
}),
|
|
6506
|
+
http: {
|
|
6507
|
+
get: (url, opts2 = {}) => fetch(url, { ...safeUrl(url, opts2.timeoutMs), ...opts2 }),
|
|
6508
|
+
post: (url, body, opts2 = {}) => fetch(url, {
|
|
6509
|
+
method: 'POST',
|
|
6510
|
+
headers: { 'content-type': 'application/json', ...(opts2.headers ?? {}) },
|
|
6511
|
+
body: JSON.stringify(body ?? {}),
|
|
6512
|
+
...safeUrl(url, opts2.timeoutMs),
|
|
6513
|
+
}),
|
|
6514
|
+
},
|
|
6515
|
+
events: {
|
|
6516
|
+
on: (type, fn) => hooks.on(type === '*' ? '*' : `event:${type}`, fn),
|
|
6517
|
+
off: (type, fn) => hooks.off(type === '*' ? '*' : `event:${type}`, fn),
|
|
6518
|
+
},
|
|
6519
|
+
};
|
|
6520
|
+
return ctx
|
|
6521
|
+
}
|
|
6522
|
+
|
|
6523
|
+
/** 宿主路由表(exact-match;插件 API 挂 /api/plugins/<name><path>) */
|
|
6524
|
+
function createRouteTable() {
|
|
6525
|
+
const table = new Map(); // `${method} ${name} ${path}` → handler
|
|
6526
|
+
return {
|
|
6527
|
+
register(name, method, path, handler) {
|
|
6528
|
+
if (typeof handler !== 'function') return false
|
|
6529
|
+
const key = `${String(method).toUpperCase()} ${name} ${path.startsWith('/') ? path : `/${path}`}`;
|
|
6530
|
+
table.set(key, handler);
|
|
6531
|
+
return true
|
|
6532
|
+
},
|
|
6533
|
+
resolve(name, method, path) {
|
|
6534
|
+
return table.get(`${String(method).toUpperCase()} ${name} ${path.startsWith('/') ? path : `/${path}`}`) ?? null
|
|
6535
|
+
},
|
|
6536
|
+
byPlugin(name) {
|
|
6537
|
+
const out = [];
|
|
6538
|
+
for (const key of table.keys()) {
|
|
6539
|
+
const [m, n, ...rest] = key.split(' ');
|
|
6540
|
+
if (n === name) out.push({ method: m, path: rest.join('/') });
|
|
6541
|
+
}
|
|
6542
|
+
return out
|
|
6543
|
+
},
|
|
6544
|
+
get size() {
|
|
6545
|
+
return table.size
|
|
6546
|
+
},
|
|
6547
|
+
}
|
|
6548
|
+
}
|
|
6549
|
+
|
|
6550
|
+
/** 校验插件入口导出(宿主装载前的形态检查) */
|
|
6551
|
+
function validatePluginModule(mod, source) {
|
|
6552
|
+
const def = mod?.default ?? mod;
|
|
6553
|
+
if (!def || typeof def !== 'object' || typeof def.name !== 'string' || !def.name.trim()) {
|
|
6554
|
+
return { ok: false, error: `插件缺少 name 或不是对象: ${source}` }
|
|
6555
|
+
}
|
|
6556
|
+
if (def.setup && typeof def.setup !== 'function') {
|
|
6557
|
+
return { ok: false, error: `插件 setup 不是函数: ${def.name}` }
|
|
6558
|
+
}
|
|
6559
|
+
if (def.client && typeof def.client !== 'string') {
|
|
6560
|
+
return { ok: false, error: `插件 client 必须是相对路径字符串: ${def.name}` }
|
|
6561
|
+
}
|
|
6562
|
+
return { ok: true, def }
|
|
6529
6563
|
}
|
|
6530
6564
|
|
|
6531
6565
|
// ============================================================
|
|
@@ -6545,6 +6579,23 @@ function validatePluginModule(mod, source) {
|
|
|
6545
6579
|
// 错误隔离:单插件装载/执行失败记入 failures,绝不拖垮主服务。
|
|
6546
6580
|
// ============================================================
|
|
6547
6581
|
|
|
6582
|
+
// 延迟解析的产线权限服务(esbuild/别名下避免 nitro 打包循环导入;失败降级为拒绝一切)
|
|
6583
|
+
let permissions$1 = null;
|
|
6584
|
+
let userRepository$1 = null;
|
|
6585
|
+
async function loadPermissions() {
|
|
6586
|
+
if (permissions$1) return
|
|
6587
|
+
try {
|
|
6588
|
+
permissions$1 = await Promise.resolve().then(function () { return permissions; });
|
|
6589
|
+
userRepository$1 = await Promise.resolve().then(function () { return user_repository; }).then(m => m.userRepository);
|
|
6590
|
+
}
|
|
6591
|
+
catch (err) {
|
|
6592
|
+
hostLoggerFallback()?.warn('权限服务加载失败(插件 ctx.permissions 降级):', err?.message);
|
|
6593
|
+
}
|
|
6594
|
+
}
|
|
6595
|
+
function hostLoggerFallback() {
|
|
6596
|
+
return globalThis.__awPluginHost?.logger ?? console
|
|
6597
|
+
}
|
|
6598
|
+
|
|
6548
6599
|
const g$r = globalThis;
|
|
6549
6600
|
|
|
6550
6601
|
function log$t() {
|
|
@@ -6689,6 +6740,9 @@ async function loadAllPlugins(host, { config, paths }) {
|
|
|
6689
6740
|
const disabled = readDisabledSet(homeDir);
|
|
6690
6741
|
host.disabledSet = disabled;
|
|
6691
6742
|
|
|
6743
|
+
// 产线权限服务(ctx.permissions 注入用;失败降级)
|
|
6744
|
+
await loadPermissions();
|
|
6745
|
+
|
|
6692
6746
|
const entries = discoverPluginDirs(host.cwd);
|
|
6693
6747
|
if (entries.length) host.logger.info(`发现 ${entries.length} 个插件(停用 ${disabled.size}),开始装载 ...`);
|
|
6694
6748
|
|
|
@@ -6775,6 +6829,20 @@ async function loadAllPlugins(host, { config, paths }) {
|
|
|
6775
6829
|
return fn
|
|
6776
6830
|
},
|
|
6777
6831
|
selfOrigin: () => selfOriginRef(host),
|
|
6832
|
+
// 产线权限拓展面(SDK ctx.permissions):插件可查询/管理用户×产线授权
|
|
6833
|
+
permissions: {
|
|
6834
|
+
lineMode: (user, lineId) => permissions$1.lineMode(user, lineId),
|
|
6835
|
+
visibleLineIds: user => permissions$1.visibleLineIds(user),
|
|
6836
|
+
listGrants: userId => userRepository$1.listGrants(userId),
|
|
6837
|
+
setGrants: (userId, entries, grantedBy = 'plugin') => {
|
|
6838
|
+
for (const g of (entries ?? [])) {
|
|
6839
|
+
if (!g?.lineId) continue
|
|
6840
|
+
userRepository$1.setGrant(userId, String(g.lineId), (g.mode ?? null), grantedBy);
|
|
6841
|
+
}
|
|
6842
|
+
permissions$1.notifyGrantsChanged(userId);
|
|
6843
|
+
return userRepository$1.listGrants(userId)
|
|
6844
|
+
},
|
|
6845
|
+
},
|
|
6778
6846
|
});
|
|
6779
6847
|
// DAQ 扩展面(v2 帧管线):插件注册自定义驱动与下沉处理器。
|
|
6780
6848
|
// 桥经 globalThis 排队 —— daq 模块晚于插件宿主装载时,注册项先排队、
|
|
@@ -6919,7 +6987,10 @@ function ensureStateWatcher(host) {
|
|
|
6919
6987
|
mkdirSync(dirname$1(statePath), { recursive: true });
|
|
6920
6988
|
if (!existsSync(statePath)) writeDisabledSet(modePaths(host.cwd).homeDir, new Set());
|
|
6921
6989
|
let debounce = null;
|
|
6922
|
-
watch
|
|
6990
|
+
// watch 目录而非文件:writeDisabledSet 用 rename 原子替换,POSIX 的文件级
|
|
6991
|
+
// watch 挂在旧 inode 上,首次启停后静默失效;目录监听对 rename 稳定
|
|
6992
|
+
watch$1(dirname$1(statePath), (_event, filename) => {
|
|
6993
|
+
if (filename && filename !== 'plugins-state.json') return
|
|
6923
6994
|
clearTimeout(debounce);
|
|
6924
6995
|
debounce = setTimeout(() => {
|
|
6925
6996
|
void reloadPluginHost();
|
|
@@ -7006,12 +7077,44 @@ async function shutdownPluginHost() {
|
|
|
7006
7077
|
host.logger.info('插件清理完成,已发出 server:close');
|
|
7007
7078
|
}
|
|
7008
7079
|
|
|
7080
|
+
const host = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
|
|
7081
|
+
__proto__: null,
|
|
7082
|
+
discoverPluginDirs: discoverPluginDirs,
|
|
7083
|
+
emitDaqFrame: emitDaqFrame,
|
|
7084
|
+
emitDaqSample: emitDaqSample,
|
|
7085
|
+
emitDcwWrite: emitDcwWrite,
|
|
7086
|
+
emitLineLifecycle: emitLineLifecycle,
|
|
7087
|
+
emitPluginEvent: emitPluginEvent,
|
|
7088
|
+
getPluginHost: getPluginHost,
|
|
7089
|
+
initPluginHost: initPluginHost,
|
|
7090
|
+
pluginManifest: pluginManifest,
|
|
7091
|
+
readClientScript: readClientScript,
|
|
7092
|
+
readDisabledSet: readDisabledSet,
|
|
7093
|
+
reloadPluginHost: reloadPluginHost,
|
|
7094
|
+
setPluginEnabled: setPluginEnabled,
|
|
7095
|
+
shutdownPluginHost: shutdownPluginHost,
|
|
7096
|
+
statePathFor: statePathFor,
|
|
7097
|
+
writeDisabledSet: writeDisabledSet
|
|
7098
|
+
}, Symbol.toStringTag, { value: 'Module' }));
|
|
7099
|
+
|
|
7009
7100
|
const AEP_VERSION$1 = 1;
|
|
7010
7101
|
const g$q = globalThis;
|
|
7011
7102
|
function peers() {
|
|
7012
7103
|
var _a;
|
|
7013
7104
|
return (_a = g$q.__sceneEventPeers) != null ? _a : g$q.__sceneEventPeers = /* @__PURE__ */ new Set();
|
|
7014
7105
|
}
|
|
7106
|
+
function setPeerVisibleLines(peer, visible) {
|
|
7107
|
+
peer.__awVisibleLines = visible;
|
|
7108
|
+
}
|
|
7109
|
+
function peerSeesLine(peer, lineId) {
|
|
7110
|
+
const visible = peer.__awVisibleLines;
|
|
7111
|
+
if (visible == null) return true;
|
|
7112
|
+
return visible.has(lineId);
|
|
7113
|
+
}
|
|
7114
|
+
function payloadLineId(payload) {
|
|
7115
|
+
const lid = payload == null ? void 0 : payload.lineId;
|
|
7116
|
+
return typeof lid === "string" && lid !== "" ? lid : void 0;
|
|
7117
|
+
}
|
|
7015
7118
|
function registerScenePeer(peer) {
|
|
7016
7119
|
peers().add(peer);
|
|
7017
7120
|
}
|
|
@@ -7024,8 +7127,10 @@ function sceneEventPeerCount() {
|
|
|
7024
7127
|
function broadcastSceneEvent(type, payload) {
|
|
7025
7128
|
emitPluginEvent(type, payload);
|
|
7026
7129
|
if (peers().size === 0) return;
|
|
7130
|
+
const lineId = payloadLineId(payload);
|
|
7027
7131
|
const frame = JSON.stringify({ v: AEP_VERSION$1, type, seq: 0, at: (/* @__PURE__ */ new Date()).toISOString(), channelId: "", payload });
|
|
7028
7132
|
for (const peer of peers()) {
|
|
7133
|
+
if (lineId !== void 0 && !peerSeesLine(peer, lineId)) continue;
|
|
7029
7134
|
try {
|
|
7030
7135
|
peer.send(frame);
|
|
7031
7136
|
} catch {
|
|
@@ -7051,6 +7156,7 @@ const sceneEvents = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.definePropert
|
|
|
7051
7156
|
broadcastSceneEvent: broadcastSceneEvent,
|
|
7052
7157
|
registerScenePeer: registerScenePeer,
|
|
7053
7158
|
sceneEventPeerCount: sceneEventPeerCount,
|
|
7159
|
+
setPeerVisibleLines: setPeerVisibleLines,
|
|
7054
7160
|
unregisterScenePeer: unregisterScenePeer
|
|
7055
7161
|
}, Symbol.toStringTag, { value: 'Module' }));
|
|
7056
7162
|
|
|
@@ -7836,11 +7942,11 @@ async function backupOne(src, target) {
|
|
|
7836
7942
|
}
|
|
7837
7943
|
}
|
|
7838
7944
|
const tmp = `${target}.tmp`;
|
|
7839
|
-
|
|
7945
|
+
await copyFile(src, tmp);
|
|
7840
7946
|
try {
|
|
7841
7947
|
renameSync(tmp, target);
|
|
7842
7948
|
} catch {
|
|
7843
|
-
|
|
7949
|
+
await copyFile(src, target);
|
|
7844
7950
|
try {
|
|
7845
7951
|
rmSync(tmp);
|
|
7846
7952
|
} catch {
|
|
@@ -8901,6 +9007,14 @@ class InProcQueueAdapter {
|
|
|
8901
9007
|
this.consumers.delete(fn);
|
|
8902
9008
|
};
|
|
8903
9009
|
}
|
|
9010
|
+
/** 释放消费泵(rebuild 换装前调用,防定时器泄漏) */
|
|
9011
|
+
close() {
|
|
9012
|
+
if (this.pump) {
|
|
9013
|
+
clearInterval(this.pump);
|
|
9014
|
+
this.pump = null;
|
|
9015
|
+
}
|
|
9016
|
+
this.consumers.clear();
|
|
9017
|
+
}
|
|
8904
9018
|
drain() {
|
|
8905
9019
|
if (this.queue.length === 0 || this.consumers.size === 0) return;
|
|
8906
9020
|
const batch = this.queue.splice(0, this.queue.length);
|
|
@@ -9001,6 +9115,18 @@ class MqttQueueAdapter {
|
|
|
9001
9115
|
this.consumers.delete(fn);
|
|
9002
9116
|
};
|
|
9003
9117
|
}
|
|
9118
|
+
/** 断开 MQTT 连接并清理订阅(rebuild 换装前调用,防 socket/keepalive 泄漏) */
|
|
9119
|
+
async close() {
|
|
9120
|
+
this.consumers.clear();
|
|
9121
|
+
const c = this.client;
|
|
9122
|
+
this.client = null;
|
|
9123
|
+
if (c) {
|
|
9124
|
+
try {
|
|
9125
|
+
await new Promise((r) => c.end(false, () => r()));
|
|
9126
|
+
} catch {
|
|
9127
|
+
}
|
|
9128
|
+
}
|
|
9129
|
+
}
|
|
9004
9130
|
}
|
|
9005
9131
|
|
|
9006
9132
|
const log$m = createLogger("daq.queue");
|
|
@@ -9014,9 +9140,10 @@ async function getDaqQueue() {
|
|
|
9014
9140
|
return g$j.__daqQueue;
|
|
9015
9141
|
}
|
|
9016
9142
|
async function rebuildDaqQueue(online, url) {
|
|
9017
|
-
var _a;
|
|
9143
|
+
var _a, _b, _c;
|
|
9144
|
+
await ((_b = (_a = g$j.__daqQueue) == null ? void 0 : _a.close) == null ? void 0 : _b.call(_a));
|
|
9018
9145
|
if (!online || !url) {
|
|
9019
|
-
if (((
|
|
9146
|
+
if (((_c = g$j.__daqQueue) == null ? void 0 : _c.backend) !== "inproc") {
|
|
9020
9147
|
g$j.__daqQueue = new InProcQueueAdapter();
|
|
9021
9148
|
await g$j.__daqQueue.init();
|
|
9022
9149
|
log$m.warn("[daq-queue] \u964D\u7EA7\u8FDB\u7A0B\u5185\u961F\u5217");
|
|
@@ -11328,6 +11455,8 @@ class DaqController {
|
|
|
11328
11455
|
/** 绑定设备端到端回写:通道值进入 DeviceTwin.telemetry(键名 = 模板 telemetryKey 数据,缺省 templateKey);
|
|
11329
11456
|
* 状态随行:节点 alarm 派生自用户设置的量程/预警带(数据驱动),透传给孪生而非让孪生按硬编码阈值猜 */
|
|
11330
11457
|
__publicField$u(this, "pendingBackfill", /* @__PURE__ */ new Map());
|
|
11458
|
+
/** 同绑定 siblings 缓存(1s TTL):回写热路径不再逐样本全量 scan,O(N²)→O(N)/周期 */
|
|
11459
|
+
__publicField$u(this, "siblingsCache", /* @__PURE__ */ new Map());
|
|
11331
11460
|
/** 遥测 WS 推送(1s/设备节流):孪生状态/遥测事件化直推,前端全量轮询降级为断线兜底 */
|
|
11332
11461
|
__publicField$u(this, "twinPushAt", /* @__PURE__ */ new Map());
|
|
11333
11462
|
}
|
|
@@ -11441,7 +11570,7 @@ class DaqController {
|
|
|
11441
11570
|
return host.lineRun.recipeWindow(run.recipeId, node.id);
|
|
11442
11571
|
}
|
|
11443
11572
|
ingestNode(node, env, allowPublish) {
|
|
11444
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
11573
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
11445
11574
|
if (env.frame) {
|
|
11446
11575
|
this.ingestFrame(node, env, allowPublish);
|
|
11447
11576
|
return;
|
|
@@ -11452,24 +11581,25 @@ class DaqController {
|
|
|
11452
11581
|
templateRef: node.templateRef,
|
|
11453
11582
|
value: (_a = node.value) != null ? _a : env.value,
|
|
11454
11583
|
state: node.state,
|
|
11455
|
-
at: env.at
|
|
11584
|
+
at: env.at,
|
|
11585
|
+
lineId: (_b = node.lineId) != null ? _b : null
|
|
11456
11586
|
};
|
|
11457
|
-
(
|
|
11587
|
+
(_c = this.broadcast) == null ? void 0 : _c.call(this, "daq.reading", reading);
|
|
11458
11588
|
emitDaqSample(reading);
|
|
11459
11589
|
}
|
|
11460
11590
|
this.writeBackTelemetry(node);
|
|
11461
11591
|
const tsMs = Date.parse(env.at);
|
|
11462
|
-
const lineRun = (
|
|
11463
|
-
if (lineRun) (
|
|
11592
|
+
const lineRun = (_e = (_d = getDaqHostPorts()) == null ? void 0 : _d.lineRun.activeRun(node.lineId)) != null ? _e : null;
|
|
11593
|
+
if (lineRun) (_f = getDaqHostPorts()) == null ? void 0 : _f.lineRun.bumpTaggedSamples(node.lineId);
|
|
11464
11594
|
this.tsdbBuffer.push({
|
|
11465
11595
|
nodeId: node.id,
|
|
11466
11596
|
tsMs,
|
|
11467
11597
|
value: env.value,
|
|
11468
11598
|
state: node.state,
|
|
11469
|
-
lineId: (
|
|
11470
|
-
productId: (
|
|
11471
|
-
recipeId: (
|
|
11472
|
-
runId: (
|
|
11599
|
+
lineId: (_g = lineRun == null ? void 0 : lineRun.lineId) != null ? _g : null,
|
|
11600
|
+
productId: (_h = lineRun == null ? void 0 : lineRun.productId) != null ? _h : null,
|
|
11601
|
+
recipeId: (_i = lineRun == null ? void 0 : lineRun.recipeId) != null ? _i : null,
|
|
11602
|
+
runId: (_j = lineRun == null ? void 0 : lineRun.runId) != null ? _j : null
|
|
11473
11603
|
});
|
|
11474
11604
|
if (this.tsdbBuffer.length > TSDB_BUFFER_CAP) {
|
|
11475
11605
|
this.tsdbBuffer.splice(0, this.tsdbBuffer.length - TSDB_BUFFER_CAP);
|
|
@@ -11495,7 +11625,7 @@ class DaqController {
|
|
|
11495
11625
|
// ---------- 帧管线(v2:向量/图像;打标与告警复用标量链路同源机制)----------
|
|
11496
11626
|
/** 帧消费:元数据攒批落 daq_frames + 指标阈值告警(边沿)+ WS daq.frame(预览/缩略图引用) */
|
|
11497
11627
|
ingestFrame(node, env, allowPublish) {
|
|
11498
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
|
|
11628
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
|
|
11499
11629
|
const f = env.frame;
|
|
11500
11630
|
const tpl = findDaqTemplate(node.templateKey);
|
|
11501
11631
|
const tsMs = Date.parse(env.at);
|
|
@@ -11528,12 +11658,13 @@ class DaqController {
|
|
|
11528
11658
|
templateRef: node.templateRef,
|
|
11529
11659
|
kind: f.kind,
|
|
11530
11660
|
at: env.at,
|
|
11531
|
-
|
|
11661
|
+
lineId: (_l = node.lineId) != null ? _l : null,
|
|
11662
|
+
preview: f.kind === "vector" ? DaqController.previewOf((_m = f.points) != null ? _m : [], FRAME_PREVIEW_POINTS) : void 0,
|
|
11532
11663
|
metrics,
|
|
11533
11664
|
thumbUrl: f.kind === "image" && f.objectKey ? `/api/workshop/daq/${node.id}/frames/content?ts=${tsMs}&thumb=1` : void 0,
|
|
11534
11665
|
state: node.state
|
|
11535
11666
|
};
|
|
11536
|
-
(
|
|
11667
|
+
(_n = this.broadcast) == null ? void 0 : _n.call(this, "daq.frame", payload);
|
|
11537
11668
|
emitDaqFrame(payload);
|
|
11538
11669
|
}
|
|
11539
11670
|
/** 模板 metrics 规则评估:alarm 硬限沿 → handleAlarm/handleAlarmRecover;warn 只置节点态 */
|
|
@@ -11747,15 +11878,24 @@ class DaqController {
|
|
|
11747
11878
|
}
|
|
11748
11879
|
} finally {
|
|
11749
11880
|
this.tsdbWriting = false;
|
|
11881
|
+
if (this.tsdbBuffer.length > 0 || this.frameBuffer.length > 0) this.scheduleTsdbFlush();
|
|
11750
11882
|
}
|
|
11751
11883
|
}
|
|
11884
|
+
siblingsOf(bindingId) {
|
|
11885
|
+
const hit = this.siblingsCache.get(bindingId);
|
|
11886
|
+
if (hit && Date.now() - hit.at < 1e3) return hit.list;
|
|
11887
|
+
const list = this.repo.all().filter((n) => n.deviceBindingId === bindingId);
|
|
11888
|
+
if (this.siblingsCache.size > 500) this.siblingsCache.clear();
|
|
11889
|
+
this.siblingsCache.set(bindingId, { at: Date.now(), list });
|
|
11890
|
+
return list;
|
|
11891
|
+
}
|
|
11752
11892
|
writeBackTelemetry(node) {
|
|
11753
11893
|
var _a, _b, _c;
|
|
11754
11894
|
if (!node.deviceBindingId || node.value == null) return;
|
|
11755
11895
|
const host = getDaqHostPorts();
|
|
11756
11896
|
if (!host) return;
|
|
11757
11897
|
const key = (_b = (_a = findDaqTemplate(node.templateKey)) == null ? void 0 : _a.telemetryKey) != null ? _b : node.templateKey;
|
|
11758
|
-
const siblings = this.
|
|
11898
|
+
const siblings = this.siblingsOf(node.deviceBindingId);
|
|
11759
11899
|
const worst = siblings.some((n) => n.state === "alarm") ? "alarm" : siblings.some((n) => n.state === "warn") ? "warn" : "ok";
|
|
11760
11900
|
const acc = (_c = this.pendingBackfill.get(node.deviceBindingId)) != null ? _c : {};
|
|
11761
11901
|
acc[key] = node.value;
|
|
@@ -14167,6 +14307,11 @@ function createAlarmEventRepo(db) {
|
|
|
14167
14307
|
`SELECT ${ALARM_COLS} FROM alarm_events ORDER BY created_at DESC LIMIT ?`
|
|
14168
14308
|
);
|
|
14169
14309
|
return {
|
|
14310
|
+
/** 按 id 取报警关联节点(产线权限判定用);不存在返回 undefined */
|
|
14311
|
+
nodeIdById(id) {
|
|
14312
|
+
const r = db.prepare("SELECT node_id FROM alarm_events WHERE id = ?").get(id);
|
|
14313
|
+
return r == null ? void 0 : r.node_id;
|
|
14314
|
+
},
|
|
14170
14315
|
/** 报警产生(同 node+metric 未确认报警幂等去重,防止高频越限刷表) */
|
|
14171
14316
|
raise(a) {
|
|
14172
14317
|
const open = db.prepare(
|
|
@@ -14481,12 +14626,22 @@ CREATE TABLE IF NOT EXISTS user_tokens (
|
|
|
14481
14626
|
last_used_at TEXT
|
|
14482
14627
|
);
|
|
14483
14628
|
CREATE INDEX IF NOT EXISTS idx_user_tokens_user ON user_tokens(user_id);
|
|
14629
|
+
CREATE TABLE IF NOT EXISTS user_line_grants (
|
|
14630
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
14631
|
+
line_id TEXT NOT NULL,
|
|
14632
|
+
mode TEXT NOT NULL,
|
|
14633
|
+
granted_by TEXT,
|
|
14634
|
+
granted_at TEXT NOT NULL,
|
|
14635
|
+
PRIMARY KEY (user_id, line_id)
|
|
14636
|
+
);
|
|
14484
14637
|
`;
|
|
14485
14638
|
let db = null;
|
|
14486
14639
|
function getDb() {
|
|
14487
14640
|
if (!db) {
|
|
14488
14641
|
db = new DatabaseSync(DB_PATH$6);
|
|
14489
14642
|
backupRegistry.register(DB_PATH$6, db);
|
|
14643
|
+
db.exec("PRAGMA journal_mode = WAL");
|
|
14644
|
+
db.exec("PRAGMA synchronous = NORMAL");
|
|
14490
14645
|
db.exec("PRAGMA busy_timeout = 5000");
|
|
14491
14646
|
db.exec(SCHEMA_SQL);
|
|
14492
14647
|
migrateSchema(db);
|
|
@@ -14502,6 +14657,7 @@ function migrateSchema(d) {
|
|
|
14502
14657
|
if (!cols.some((c) => c.name === "expires_at")) {
|
|
14503
14658
|
d.exec("ALTER TABLE user_tokens ADD COLUMN expires_at TEXT");
|
|
14504
14659
|
}
|
|
14660
|
+
d.exec("UPDATE user_tokens SET token_plain = NULL WHERE token_plain IS NOT NULL");
|
|
14505
14661
|
d.prepare("UPDATE user_tokens SET expires_at = ? WHERE expires_at IS NULL").run(isoInDays(TOKEN_TTL_DAYS));
|
|
14506
14662
|
}
|
|
14507
14663
|
const TOKEN_TTL_DAYS = 30;
|
|
@@ -14579,13 +14735,16 @@ function issueToken(userId, label) {
|
|
|
14579
14735
|
createdAt: now(),
|
|
14580
14736
|
lastUsedAt: null,
|
|
14581
14737
|
preview: maskPreview(raw),
|
|
14582
|
-
hasPlain:
|
|
14738
|
+
hasPlain: false
|
|
14583
14739
|
};
|
|
14584
14740
|
const d = getDb();
|
|
14585
|
-
d.prepare("INSERT INTO user_tokens (id, user_id, label, token_hash, token_plain, created_at, expires_at) VALUES (?, ?, ?, ?,
|
|
14741
|
+
d.prepare("INSERT INTO user_tokens (id, user_id, label, token_hash, token_plain, created_at, expires_at) VALUES (?, ?, ?, ?, NULL, ?, ?)").run(row.id, userId, label, hash, row.createdAt, isoInDays(TOKEN_TTL_DAYS));
|
|
14586
14742
|
return { raw, row };
|
|
14587
14743
|
}
|
|
14744
|
+
const lastUsedSeen = /* @__PURE__ */ new Map();
|
|
14745
|
+
const LAST_USED_THROTTLE_MS = 6e4;
|
|
14588
14746
|
function findByToken(token) {
|
|
14747
|
+
var _a;
|
|
14589
14748
|
const d = getDb();
|
|
14590
14749
|
const hash = hashToken(token);
|
|
14591
14750
|
const row = d.prepare(
|
|
@@ -14596,7 +14755,11 @@ WHERE t.token_hash = ?`
|
|
|
14596
14755
|
if (!row) return null;
|
|
14597
14756
|
if (row.expiresAt && Date.parse(row.expiresAt) < Date.now()) return null;
|
|
14598
14757
|
if (row.status && row.status !== "active") return null;
|
|
14599
|
-
|
|
14758
|
+
const seenAt = (_a = lastUsedSeen.get(row.tokenId)) != null ? _a : 0;
|
|
14759
|
+
if (Date.now() - seenAt >= LAST_USED_THROTTLE_MS) {
|
|
14760
|
+
lastUsedSeen.set(row.tokenId, Date.now());
|
|
14761
|
+
d.prepare("UPDATE user_tokens SET last_used_at = ? WHERE token_hash = ?").run(now(), hash);
|
|
14762
|
+
}
|
|
14600
14763
|
return row;
|
|
14601
14764
|
}
|
|
14602
14765
|
function toUser(row) {
|
|
@@ -14624,6 +14787,17 @@ const userRepository = {
|
|
|
14624
14787
|
).all(...params, pageSize, (page - 1) * pageSize);
|
|
14625
14788
|
return { items: rows.map(toUser), total, page, pageSize };
|
|
14626
14789
|
},
|
|
14790
|
+
/** 全量用户(不分页;管理面授权矩阵用,避免分页截断) */
|
|
14791
|
+
listAll() {
|
|
14792
|
+
const d = getDb();
|
|
14793
|
+
const rows = d.prepare("SELECT id, name, email, role, status, created_at AS createdAt FROM users ORDER BY created_at DESC").all();
|
|
14794
|
+
return rows.map(toUser);
|
|
14795
|
+
},
|
|
14796
|
+
/** 全部产线授权(单查询;管理面按 userId 分组,替代逐用户 N+1) */
|
|
14797
|
+
allGrants() {
|
|
14798
|
+
const d = getDb();
|
|
14799
|
+
return d.prepare("SELECT user_id AS userId, line_id AS lineId, mode, granted_by AS grantedBy, granted_at AS grantedAt FROM user_line_grants").all();
|
|
14800
|
+
},
|
|
14627
14801
|
findById(id) {
|
|
14628
14802
|
const d = getDb();
|
|
14629
14803
|
const row = d.prepare("SELECT id, name, email, role, status, created_at AS createdAt FROM users WHERE id = ?").get(id);
|
|
@@ -14645,6 +14819,28 @@ const userRepository = {
|
|
|
14645
14819
|
const { n } = d.prepare("SELECT COUNT(*) AS n FROM users WHERE role = 'admin' AND status = 'active'").get();
|
|
14646
14820
|
return n > 0;
|
|
14647
14821
|
},
|
|
14822
|
+
// ===== 产线授权(user_line_grants;admin/editor 不查此表,全量全权)=====
|
|
14823
|
+
/** 某用户全部产线授权 */
|
|
14824
|
+
listGrants(userId) {
|
|
14825
|
+
const d = getDb();
|
|
14826
|
+
return d.prepare("SELECT line_id AS lineId, mode, granted_by AS grantedBy, granted_at AS grantedAt FROM user_line_grants WHERE user_id = ?").all(userId);
|
|
14827
|
+
},
|
|
14828
|
+
/** 单条授权(mode 非 readonly/operate → 撤销);返回是否发生变化 */
|
|
14829
|
+
setGrant(userId, lineId, mode, grantedBy) {
|
|
14830
|
+
const d = getDb();
|
|
14831
|
+
if (mode !== "readonly" && mode !== "operate") {
|
|
14832
|
+
return d.prepare("DELETE FROM user_line_grants WHERE user_id = ? AND line_id = ?").run(userId, lineId).changes > 0;
|
|
14833
|
+
}
|
|
14834
|
+
d.prepare(`INSERT INTO user_line_grants (user_id, line_id, mode, granted_by, granted_at) VALUES (?, ?, ?, ?, ?)
|
|
14835
|
+
ON CONFLICT(user_id, line_id) DO UPDATE SET mode = excluded.mode, granted_by = excluded.granted_by, granted_at = excluded.granted_at`).run(userId, lineId, mode, grantedBy, now());
|
|
14836
|
+
return true;
|
|
14837
|
+
},
|
|
14838
|
+
/** 用户 → 产线访问映射(lineId → 'readonly'|'operate');无记录 = 无权 */
|
|
14839
|
+
lineAccessMap(userId) {
|
|
14840
|
+
const d = getDb();
|
|
14841
|
+
const rows = d.prepare("SELECT line_id AS lineId, mode FROM user_line_grants WHERE user_id = ?").all(userId);
|
|
14842
|
+
return new Map(rows.map((r) => [r.lineId, r.mode]));
|
|
14843
|
+
},
|
|
14648
14844
|
/** 内部:取密码哈希(仅认证路径使用,不参与领域对象外泄) */
|
|
14649
14845
|
getPasswordHash(email) {
|
|
14650
14846
|
const d = getDb();
|
|
@@ -14664,6 +14860,23 @@ const userRepository = {
|
|
|
14664
14860
|
d.prepare("INSERT INTO users (id, name, email, password_hash, role, status, created_at) VALUES (?, ?, ?, ?, ?, ?, ?)").run(user.id, user.name, user.email, hashPassword(input.password), user.role, user.status, user.createdAt);
|
|
14665
14861
|
return user;
|
|
14666
14862
|
},
|
|
14863
|
+
/** 原子注册(IMMEDIATE 事务内判定管理员空缺):并发注册不会产生第二个 bootstrap admin */
|
|
14864
|
+
createWithRoleBootstrap(input) {
|
|
14865
|
+
const d = getDb();
|
|
14866
|
+
d.exec("BEGIN IMMEDIATE");
|
|
14867
|
+
try {
|
|
14868
|
+
const bootstrap = !this.hasActiveAdmin();
|
|
14869
|
+
const user = this.create({ ...input, role: bootstrap ? "admin" : input.role });
|
|
14870
|
+
d.exec("COMMIT");
|
|
14871
|
+
return { user, bootstrap };
|
|
14872
|
+
} catch (err) {
|
|
14873
|
+
try {
|
|
14874
|
+
d.exec("ROLLBACK");
|
|
14875
|
+
} catch {
|
|
14876
|
+
}
|
|
14877
|
+
throw err;
|
|
14878
|
+
}
|
|
14879
|
+
},
|
|
14667
14880
|
update(id, input) {
|
|
14668
14881
|
const d = getDb();
|
|
14669
14882
|
const current = this.findById(id);
|
|
@@ -14825,7 +15038,8 @@ const userService = {
|
|
|
14825
15038
|
},
|
|
14826
15039
|
// ===== 认证(公开端点)=====
|
|
14827
15040
|
/** 注册:创建账号 + 签发首个 token(邮箱/用户名占用 → 409)。
|
|
14828
|
-
*
|
|
15041
|
+
* 首启初始化:原子事务内判定「尚无活跃管理员」→ 首个注册账号授予 admin
|
|
15042
|
+
* (并发注册不会产生第二个 bootstrap admin) */
|
|
14829
15043
|
register(input) {
|
|
14830
15044
|
if (userRepository.findByEmail(input.email)) {
|
|
14831
15045
|
throw new AppError(409, ErrorCodes.CONFLICT, "\u90AE\u7BB1\u5DF2\u88AB\u6CE8\u518C");
|
|
@@ -14833,11 +15047,14 @@ const userService = {
|
|
|
14833
15047
|
if (userRepository.findByName(input.name)) {
|
|
14834
15048
|
throw new AppError(409, "USER_EXISTS", `\u7528\u6237\u540D\u5DF2\u5B58\u5728: ${input.name}`);
|
|
14835
15049
|
}
|
|
14836
|
-
const needsBootstrap =
|
|
15050
|
+
const { user, bootstrap: needsBootstrap } = userRepository.createWithRoleBootstrap({
|
|
15051
|
+
...input,
|
|
15052
|
+
role: "user",
|
|
15053
|
+
status: "active"
|
|
15054
|
+
});
|
|
14837
15055
|
if (needsBootstrap) {
|
|
14838
15056
|
console.log(`[users] \u521D\u59CB\u5316:\u5C1A\u65E0\u7BA1\u7406\u5458\u8D26\u53F7,\u9996\u4E2A\u6CE8\u518C\u8D26\u53F7\u6388\u4E88\u7BA1\u7406\u5458\u89D2\u8272(${input.email})`);
|
|
14839
15057
|
}
|
|
14840
|
-
const user = userRepository.create({ ...input, role: needsBootstrap ? "admin" : "user", status: "active" });
|
|
14841
15058
|
const { raw } = userRepository.createToken(user.id, needsBootstrap ? "bootstrap-admin" : "default");
|
|
14842
15059
|
return { user: this.publicProfile(user), token: raw };
|
|
14843
15060
|
},
|
|
@@ -15033,20 +15250,76 @@ class Mailbox {
|
|
|
15033
15250
|
}
|
|
15034
15251
|
}
|
|
15035
15252
|
|
|
15036
|
-
|
|
15037
|
-
|
|
15038
|
-
|
|
15039
|
-
|
|
15040
|
-
|
|
15041
|
-
|
|
15042
|
-
const
|
|
15043
|
-
|
|
15044
|
-
|
|
15045
|
-
|
|
15046
|
-
|
|
15047
|
-
|
|
15048
|
-
|
|
15049
|
-
|
|
15253
|
+
function isPrivilegedRole(user) {
|
|
15254
|
+
return (user == null ? void 0 : user.role) === "admin" || (user == null ? void 0 : user.role) === "editor";
|
|
15255
|
+
}
|
|
15256
|
+
function lineMode(user, lineId) {
|
|
15257
|
+
if (!lineId) return isPrivilegedRole(user) ? "operate" : "none";
|
|
15258
|
+
if (isPrivilegedRole(user)) return "operate";
|
|
15259
|
+
const grant = userRepository.lineAccessMap(user.id).get(lineId);
|
|
15260
|
+
return grant === "operate" ? "operate" : grant === "readonly" ? "readonly" : "none";
|
|
15261
|
+
}
|
|
15262
|
+
function visibleLineIds(user) {
|
|
15263
|
+
if (isPrivilegedRole(user)) return null;
|
|
15264
|
+
return new Set(userRepository.lineAccessMap(user.id).keys());
|
|
15265
|
+
}
|
|
15266
|
+
function filterByLine(user, items, lineIdOf) {
|
|
15267
|
+
const visible = visibleLineIds(user);
|
|
15268
|
+
if (!visible) return items;
|
|
15269
|
+
return items.filter((it) => {
|
|
15270
|
+
const lid = lineIdOf(it);
|
|
15271
|
+
return lid != null && visible.has(lid);
|
|
15272
|
+
});
|
|
15273
|
+
}
|
|
15274
|
+
function requireLineMode(user, lineId, need) {
|
|
15275
|
+
const mode = lineMode(user, lineId);
|
|
15276
|
+
if (mode === "operate" || need === "readonly" && mode === "readonly") return mode;
|
|
15277
|
+
if (mode === "readonly") {
|
|
15278
|
+
throw new AppError(403, "LINE_READONLY", "\u8BE5\u4EA7\u7EBF\u4E3A\u4EC5\u67E5\u770B\u6743\u9650:\u53EA\u8BFB\u6570\u91C7\u53EF\u89C1,\u5199\u63A7/\u64CD\u4F5C\u9700\u7BA1\u7406\u5458\u6388\u4E88\u300C\u53EF\u64CD\u63A7\u300D");
|
|
15279
|
+
}
|
|
15280
|
+
throw new AppError(403, "LINE_FORBIDDEN", `\u65E0\u8BE5\u4EA7\u7EBF\u6743\u9650:\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u5728\u300C\u6743\u9650\u7BA1\u7406\u300D\u4E2D\u6388\u4E88(\u4EA7\u7EBF ${lineId != null ? lineId : "?"})`);
|
|
15281
|
+
}
|
|
15282
|
+
function notifyGrantsChanged(userId) {
|
|
15283
|
+
try {
|
|
15284
|
+
void Promise.resolve().then(function () { return sceneEvents; }).then((m) => {
|
|
15285
|
+
m.broadcastSceneEvent("permissions.changed", { userId, at: (/* @__PURE__ */ new Date()).toISOString() });
|
|
15286
|
+
}).catch(() => {
|
|
15287
|
+
});
|
|
15288
|
+
} catch {
|
|
15289
|
+
}
|
|
15290
|
+
try {
|
|
15291
|
+
void Promise.resolve().then(function () { return host; }).then((m) => {
|
|
15292
|
+
void m.emitPluginEvent("permissions:changed", { userId });
|
|
15293
|
+
}).catch(() => {
|
|
15294
|
+
});
|
|
15295
|
+
} catch {
|
|
15296
|
+
}
|
|
15297
|
+
}
|
|
15298
|
+
|
|
15299
|
+
const permissions = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
|
|
15300
|
+
__proto__: null,
|
|
15301
|
+
filterByLine: filterByLine,
|
|
15302
|
+
isPrivilegedRole: isPrivilegedRole,
|
|
15303
|
+
lineMode: lineMode,
|
|
15304
|
+
notifyGrantsChanged: notifyGrantsChanged,
|
|
15305
|
+
requireLineMode: requireLineMode,
|
|
15306
|
+
visibleLineIds: visibleLineIds
|
|
15307
|
+
}, Symbol.toStringTag, { value: 'Module' }));
|
|
15308
|
+
|
|
15309
|
+
var _a$1, _b, _c;
|
|
15310
|
+
const log$g = createLogger("workshop.ws");
|
|
15311
|
+
const AEP_VERSION = 1;
|
|
15312
|
+
const RING_CAP = 5e3;
|
|
15313
|
+
const RING_BYTES_CAP = 4 * 1024 * 1024;
|
|
15314
|
+
const DB_BUFFER_CAP = 2e3;
|
|
15315
|
+
const EVENTS_RETENTION_DAYS = () => retentionSettings().events_days;
|
|
15316
|
+
const PEER_SEND_BUDGET_BYTES = 32 * 1024 * 1024;
|
|
15317
|
+
const hubGlobal$1 = globalThis;
|
|
15318
|
+
const hub$1 = (_a$1 = hubGlobal$1.__workshopWsHub) != null ? _a$1 : hubGlobal$1.__workshopWsHub = { streams: /* @__PURE__ */ new Map(), peerChannels: /* @__PURE__ */ new Map(), boundManager: null };
|
|
15319
|
+
const streams = hub$1.streams;
|
|
15320
|
+
const peerChannels = hub$1.peerChannels;
|
|
15321
|
+
function ensureHubBound(manager) {
|
|
15322
|
+
if (hub$1.boundManager === manager) return;
|
|
15050
15323
|
hub$1.boundManager = manager;
|
|
15051
15324
|
for (const stream of [...streams.values()]) {
|
|
15052
15325
|
const channelId = stream.channelId;
|
|
@@ -15097,6 +15370,10 @@ function resolveChannelIdFromUrl(peer) {
|
|
|
15097
15370
|
var _a2;
|
|
15098
15371
|
return (_a2 = resolveQueryParam(peer, "channelId")) != null ? _a2 : resolveQueryParam(peer, "channel_id");
|
|
15099
15372
|
}
|
|
15373
|
+
function attachScenePeer(peer, user) {
|
|
15374
|
+
setPeerVisibleLines(peer, visibleLineIds(user));
|
|
15375
|
+
registerScenePeer(peer);
|
|
15376
|
+
}
|
|
15100
15377
|
function sendControl(peer, obj) {
|
|
15101
15378
|
try {
|
|
15102
15379
|
peer.send(JSON.stringify(obj));
|
|
@@ -15453,7 +15730,7 @@ function subscribePeer(manager, peer, channelId, lastSeq, userToken) {
|
|
|
15453
15730
|
return;
|
|
15454
15731
|
}
|
|
15455
15732
|
stream.peers.add(peer);
|
|
15456
|
-
|
|
15733
|
+
attachScenePeer(peer, user);
|
|
15457
15734
|
let channels = peerChannels.get(peer);
|
|
15458
15735
|
if (!channels) {
|
|
15459
15736
|
channels = /* @__PURE__ */ new Set();
|
|
@@ -15512,7 +15789,11 @@ const ws = defineWebSocketHandler({
|
|
|
15512
15789
|
return;
|
|
15513
15790
|
}
|
|
15514
15791
|
ensureHubBound(manager);
|
|
15515
|
-
|
|
15792
|
+
const qpUser = (() => {
|
|
15793
|
+
const t = resolveQueryParam(peer, "token");
|
|
15794
|
+
return t ? resolveUserByToken(t) : null;
|
|
15795
|
+
})();
|
|
15796
|
+
if (qpUser) attachScenePeer(peer, qpUser);
|
|
15516
15797
|
const channelId = resolveChannelIdFromUrl(peer);
|
|
15517
15798
|
if (!channelId) return;
|
|
15518
15799
|
subscribePeer(manager, peer, channelId, void 0, resolveQueryParam(peer, "token"));
|
|
@@ -19768,7 +20049,7 @@ class DcwController {
|
|
|
19768
20049
|
* → ACK 记账(节点状态/写历史)→ WS 直推。真实/模拟驱动同一路径。
|
|
19769
20050
|
*/
|
|
19770
20051
|
async executeWrite(node, eng, tolerance, recipeRunId) {
|
|
19771
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
20052
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
19772
20053
|
const at = (/* @__PURE__ */ new Date()).toISOString();
|
|
19773
20054
|
const t = node.transform;
|
|
19774
20055
|
const plcValue = inverseTransform(eng, t);
|
|
@@ -19804,10 +20085,11 @@ class DcwController {
|
|
|
19804
20085
|
at
|
|
19805
20086
|
};
|
|
19806
20087
|
repo.appendHistory(entry);
|
|
19807
|
-
(
|
|
20088
|
+
(_i = this.broadcast) == null ? void 0 : _i.call(this, "dcw.written", {
|
|
19808
20089
|
nodeId: node.id,
|
|
19809
20090
|
templateRef: node.templateRef,
|
|
19810
|
-
|
|
20091
|
+
lineId: (_g = node.lineId) != null ? _g : null,
|
|
20092
|
+
value: (_h = node.value) != null ? _h : eng,
|
|
19811
20093
|
raw: outcome.raw,
|
|
19812
20094
|
ok: outcome.ok,
|
|
19813
20095
|
message: outcome.message,
|
|
@@ -19828,7 +20110,7 @@ class DcwController {
|
|
|
19828
20110
|
* 不支持读的驱动(mock 外的 mqtt/http)不产生节点状态噪音,直接返回说明。
|
|
19829
20111
|
*/
|
|
19830
20112
|
async executeRead(node) {
|
|
19831
|
-
var _a;
|
|
20113
|
+
var _a, _b;
|
|
19832
20114
|
const at = (/* @__PURE__ */ new Date()).toISOString();
|
|
19833
20115
|
const driver = resolveDcwDriver(node.driver);
|
|
19834
20116
|
if (!driver.read) {
|
|
@@ -19843,9 +20125,10 @@ class DcwController {
|
|
|
19843
20125
|
const value = r.ok && r.eng != null ? applyTransform(r.eng, node.transform) : null;
|
|
19844
20126
|
node.applyReadResult(value, r.raw, r.ok, r.message, at);
|
|
19845
20127
|
this.repo.flushDebounced();
|
|
19846
|
-
(
|
|
20128
|
+
(_b = this.broadcast) == null ? void 0 : _b.call(this, "dcw.read", {
|
|
19847
20129
|
nodeId: node.id,
|
|
19848
20130
|
templateRef: node.templateRef,
|
|
20131
|
+
lineId: (_a = node.lineId) != null ? _a : null,
|
|
19849
20132
|
value,
|
|
19850
20133
|
raw: r.raw,
|
|
19851
20134
|
ok: r.ok,
|
|
@@ -20419,9 +20702,16 @@ class DcwController {
|
|
|
20419
20702
|
await tsdbReady;
|
|
20420
20703
|
const bucketMs = endMs - startMs > 6e4 ? Math.max(1e3, Math.round((endMs - startMs) / 200)) : void 0;
|
|
20421
20704
|
const daq = [];
|
|
20422
|
-
|
|
20705
|
+
const results = await Promise.all(getDaqNodeRepo().all().map(async (node) => {
|
|
20423
20706
|
try {
|
|
20424
20707
|
const points = await getTsdb().query(node.id, { fromMs: startMs, toMs: endMs, bucketMs, limit: 500 });
|
|
20708
|
+
return { node, points };
|
|
20709
|
+
} catch {
|
|
20710
|
+
return { node, points: [] };
|
|
20711
|
+
}
|
|
20712
|
+
}));
|
|
20713
|
+
for (const { node, points } of results) {
|
|
20714
|
+
{
|
|
20425
20715
|
if (points.length === 0) continue;
|
|
20426
20716
|
const values = points.map((p) => {
|
|
20427
20717
|
var _a2, _b;
|
|
@@ -20441,7 +20731,6 @@ class DcwController {
|
|
|
20441
20731
|
max: Number(Math.max(...values).toFixed(node.decimals)),
|
|
20442
20732
|
cnt: values.length
|
|
20443
20733
|
});
|
|
20444
|
-
} catch {
|
|
20445
20734
|
}
|
|
20446
20735
|
}
|
|
20447
20736
|
return { run, daq, writes };
|
|
@@ -30041,13 +30330,6 @@ workshopPlugin
|
|
|
30041
30330
|
];
|
|
30042
30331
|
|
|
30043
30332
|
const assets = {
|
|
30044
|
-
"/_nuxt/-6OnbLFb.js": {
|
|
30045
|
-
"type": "text/javascript; charset=utf-8",
|
|
30046
|
-
"etag": "\"1343-vdAf4w0aJYo+a7mW3u5aS6nVAXY\"",
|
|
30047
|
-
"mtime": "2026-09-05T18:48:20.525Z",
|
|
30048
|
-
"size": 4931,
|
|
30049
|
-
"path": "../public/_nuxt/-6OnbLFb.js"
|
|
30050
|
-
},
|
|
30051
30333
|
"/favicon.svg": {
|
|
30052
30334
|
"type": "image/svg+xml",
|
|
30053
30335
|
"etag": "\"333-aFlSVm0gS1OwJAKmnnSly7X0FJ0\"",
|
|
@@ -30058,1256 +30340,1277 @@ const assets = {
|
|
|
30058
30340
|
"/_nuxt/-nb2uqVg.js": {
|
|
30059
30341
|
"type": "text/javascript; charset=utf-8",
|
|
30060
30342
|
"etag": "\"1d2b-jLwuC0KKuwuubw09IH7Tm1lfqoE\"",
|
|
30061
|
-
"mtime": "2026-09-
|
|
30343
|
+
"mtime": "2026-09-06T06:27:43.457Z",
|
|
30062
30344
|
"size": 7467,
|
|
30063
30345
|
"path": "../public/_nuxt/-nb2uqVg.js"
|
|
30064
30346
|
},
|
|
30065
30347
|
"/_nuxt/36oeS8_R2.js": {
|
|
30066
30348
|
"type": "text/javascript; charset=utf-8",
|
|
30067
30349
|
"etag": "\"d6-9W7EHt23WjRGOYCN8bz9Yy0aMhg\"",
|
|
30068
|
-
"mtime": "2026-09-
|
|
30350
|
+
"mtime": "2026-09-06T06:27:43.457Z",
|
|
30069
30351
|
"size": 214,
|
|
30070
30352
|
"path": "../public/_nuxt/36oeS8_R2.js"
|
|
30071
30353
|
},
|
|
30072
|
-
"/_nuxt
|
|
30073
|
-
"type": "text/javascript; charset=utf-8",
|
|
30074
|
-
"etag": "\"2165-1sZ0UM2rwvV+tY1H08bvvzhl3vc\"",
|
|
30075
|
-
"mtime": "2026-09-05T18:48:20.527Z",
|
|
30076
|
-
"size": 8549,
|
|
30077
|
-
"path": "../public/_nuxt/B0HpdCKS.js"
|
|
30078
|
-
},
|
|
30079
|
-
"/_nuxt/91DZTUMJ.js": {
|
|
30080
|
-
"type": "text/javascript; charset=utf-8",
|
|
30081
|
-
"etag": "\"2374-n04hK8DQiQi9Hi/mO9GHT1PkGHk\"",
|
|
30082
|
-
"mtime": "2026-09-05T18:48:20.526Z",
|
|
30083
|
-
"size": 9076,
|
|
30084
|
-
"path": "../public/_nuxt/91DZTUMJ.js"
|
|
30085
|
-
},
|
|
30086
|
-
"/_nuxt/6PZPfFcO.js": {
|
|
30354
|
+
"/_nuxt/-6OnbLFb.js": {
|
|
30087
30355
|
"type": "text/javascript; charset=utf-8",
|
|
30088
|
-
"etag": "\"
|
|
30089
|
-
"mtime": "2026-09-
|
|
30090
|
-
"size":
|
|
30091
|
-
"path": "../public/_nuxt
|
|
30356
|
+
"etag": "\"1343-vdAf4w0aJYo+a7mW3u5aS6nVAXY\"",
|
|
30357
|
+
"mtime": "2026-09-06T06:27:43.457Z",
|
|
30358
|
+
"size": 4931,
|
|
30359
|
+
"path": "../public/_nuxt/-6OnbLFb.js"
|
|
30092
30360
|
},
|
|
30093
30361
|
"/_nuxt/agents.CEbox5-D.css": {
|
|
30094
30362
|
"type": "text/css; charset=utf-8",
|
|
30095
30363
|
"etag": "\"43e-sjh3eXQzQvuPq+iaiDAqlB5A/o8\"",
|
|
30096
|
-
"mtime": "2026-09-
|
|
30364
|
+
"mtime": "2026-09-06T06:27:43.478Z",
|
|
30097
30365
|
"size": 1086,
|
|
30098
30366
|
"path": "../public/_nuxt/agents.CEbox5-D.css"
|
|
30099
30367
|
},
|
|
30368
|
+
"/_nuxt/6vYobj4F.js": {
|
|
30369
|
+
"type": "text/javascript; charset=utf-8",
|
|
30370
|
+
"etag": "\"626-XI9KdnbsNv0FxC1h6cVurcJhbQI\"",
|
|
30371
|
+
"mtime": "2026-09-06T06:27:43.458Z",
|
|
30372
|
+
"size": 1574,
|
|
30373
|
+
"path": "../public/_nuxt/6vYobj4F.js"
|
|
30374
|
+
},
|
|
30375
|
+
"/_nuxt/arUY5dyq2.js": {
|
|
30376
|
+
"type": "text/javascript; charset=utf-8",
|
|
30377
|
+
"etag": "\"59f6-d7NzfWgWT2fTR2MXV0/3pKn7pms\"",
|
|
30378
|
+
"mtime": "2026-09-06T06:27:43.474Z",
|
|
30379
|
+
"size": 23030,
|
|
30380
|
+
"path": "../public/_nuxt/arUY5dyq2.js"
|
|
30381
|
+
},
|
|
30382
|
+
"/_nuxt/B-xskWta.js": {
|
|
30383
|
+
"type": "text/javascript; charset=utf-8",
|
|
30384
|
+
"etag": "\"4842-u3DYd8BlLUn7q26s3PJm3Fvo+j4\"",
|
|
30385
|
+
"mtime": "2026-09-06T06:27:43.458Z",
|
|
30386
|
+
"size": 18498,
|
|
30387
|
+
"path": "../public/_nuxt/B-xskWta.js"
|
|
30388
|
+
},
|
|
30389
|
+
"/_nuxt/B53Mp7lD.js": {
|
|
30390
|
+
"type": "text/javascript; charset=utf-8",
|
|
30391
|
+
"etag": "\"4256-Pirq2khpmJQqhRxinPVbluoGfGI\"",
|
|
30392
|
+
"mtime": "2026-09-06T06:27:43.458Z",
|
|
30393
|
+
"size": 16982,
|
|
30394
|
+
"path": "../public/_nuxt/B53Mp7lD.js"
|
|
30395
|
+
},
|
|
30396
|
+
"/_nuxt/B3Psw_sL.js": {
|
|
30397
|
+
"type": "text/javascript; charset=utf-8",
|
|
30398
|
+
"etag": "\"35bb-+DrI8MnN/s50k/0E1BAPSxI6dg8\"",
|
|
30399
|
+
"mtime": "2026-09-06T06:27:43.458Z",
|
|
30400
|
+
"size": 13755,
|
|
30401
|
+
"path": "../public/_nuxt/B3Psw_sL.js"
|
|
30402
|
+
},
|
|
30100
30403
|
"/_nuxt/B5S_UyaC.js": {
|
|
30101
30404
|
"type": "text/javascript; charset=utf-8",
|
|
30102
30405
|
"etag": "\"2435-cVXb4Ze0vEZbXwWSHOgo7NJ59ME\"",
|
|
30103
|
-
"mtime": "2026-09-
|
|
30406
|
+
"mtime": "2026-09-06T06:27:43.458Z",
|
|
30104
30407
|
"size": 9269,
|
|
30105
30408
|
"path": "../public/_nuxt/B5S_UyaC.js"
|
|
30106
30409
|
},
|
|
30107
|
-
"/_nuxt/
|
|
30108
|
-
"type": "text/javascript; charset=utf-8",
|
|
30109
|
-
"etag": "\"24d7-b5vV8KRjZ+pkTmbebWEy1jMfTLc\"",
|
|
30110
|
-
"mtime": "2026-09-05T18:48:20.528Z",
|
|
30111
|
-
"size": 9431,
|
|
30112
|
-
"path": "../public/_nuxt/B9dLFSYI.js"
|
|
30113
|
-
},
|
|
30114
|
-
"/_nuxt/B1g8pJmr.js": {
|
|
30410
|
+
"/_nuxt/B8WV7GzS.js": {
|
|
30115
30411
|
"type": "text/javascript; charset=utf-8",
|
|
30116
|
-
"etag": "\"
|
|
30117
|
-
"mtime": "2026-09-
|
|
30118
|
-
"size":
|
|
30119
|
-
"path": "../public/_nuxt/
|
|
30412
|
+
"etag": "\"2374-s03OPEHZ71QYjjoepBgll6X6ETo\"",
|
|
30413
|
+
"mtime": "2026-09-06T06:27:43.459Z",
|
|
30414
|
+
"size": 9076,
|
|
30415
|
+
"path": "../public/_nuxt/B8WV7GzS.js"
|
|
30120
30416
|
},
|
|
30121
30417
|
"/_nuxt/BBrRELH32.js": {
|
|
30122
30418
|
"type": "text/javascript; charset=utf-8",
|
|
30123
30419
|
"etag": "\"5bc-jGs6+2LpPidhbmCHZyKfmEWQxCI\"",
|
|
30124
|
-
"mtime": "2026-09-
|
|
30420
|
+
"mtime": "2026-09-06T06:27:43.459Z",
|
|
30125
30421
|
"size": 1468,
|
|
30126
30422
|
"path": "../public/_nuxt/BBrRELH32.js"
|
|
30127
30423
|
},
|
|
30424
|
+
"/_nuxt/BbZAzXjZ2.js": {
|
|
30425
|
+
"type": "text/javascript; charset=utf-8",
|
|
30426
|
+
"etag": "\"14fe-0KLPumZNGMQ1C2rj5UA7kI1IBvY\"",
|
|
30427
|
+
"mtime": "2026-09-06T06:27:43.462Z",
|
|
30428
|
+
"size": 5374,
|
|
30429
|
+
"path": "../public/_nuxt/BbZAzXjZ2.js"
|
|
30430
|
+
},
|
|
30431
|
+
"/_nuxt/Bckshc9V.js": {
|
|
30432
|
+
"type": "text/javascript; charset=utf-8",
|
|
30433
|
+
"etag": "\"2165-tPFg6YA7zmzzGuXpgJIdOp+neV8\"",
|
|
30434
|
+
"mtime": "2026-09-06T06:27:43.462Z",
|
|
30435
|
+
"size": 8549,
|
|
30436
|
+
"path": "../public/_nuxt/Bckshc9V.js"
|
|
30437
|
+
},
|
|
30128
30438
|
"/_nuxt/B7wL3pDk.js": {
|
|
30129
30439
|
"type": "text/javascript; charset=utf-8",
|
|
30130
30440
|
"etag": "\"3d5-itnLaBVfNThToG43nVPq3jMDhq0\"",
|
|
30131
|
-
"mtime": "2026-09-
|
|
30441
|
+
"mtime": "2026-09-06T06:27:43.458Z",
|
|
30132
30442
|
"size": 981,
|
|
30133
30443
|
"path": "../public/_nuxt/B7wL3pDk.js"
|
|
30134
30444
|
},
|
|
30135
|
-
"/_nuxt/
|
|
30136
|
-
"type": "text/javascript; charset=utf-8",
|
|
30137
|
-
"etag": "\"aa5-hAIxwyr8gdRLFxtHUgEGPFI2JPg\"",
|
|
30138
|
-
"mtime": "2026-09-05T18:48:20.531Z",
|
|
30139
|
-
"size": 2725,
|
|
30140
|
-
"path": "../public/_nuxt/BaMkWl5i2.js"
|
|
30141
|
-
},
|
|
30142
|
-
"/_nuxt/B9MUiDFl.js": {
|
|
30445
|
+
"/_nuxt/Bc3PiGGr.js": {
|
|
30143
30446
|
"type": "text/javascript; charset=utf-8",
|
|
30144
|
-
"etag": "\"
|
|
30145
|
-
"mtime": "2026-09-
|
|
30146
|
-
"size":
|
|
30147
|
-
"path": "../public/_nuxt/
|
|
30447
|
+
"etag": "\"b0a6-an7ekHZpfAEw9EM+R3gB2d6eZHg\"",
|
|
30448
|
+
"mtime": "2026-09-06T06:27:43.462Z",
|
|
30449
|
+
"size": 45222,
|
|
30450
|
+
"path": "../public/_nuxt/Bc3PiGGr.js"
|
|
30148
30451
|
},
|
|
30149
|
-
"/_nuxt/
|
|
30452
|
+
"/_nuxt/BBwMH_hG.js": {
|
|
30150
30453
|
"type": "text/javascript; charset=utf-8",
|
|
30151
|
-
"etag": "\"
|
|
30152
|
-
"mtime": "2026-09-
|
|
30153
|
-
"size":
|
|
30154
|
-
"path": "../public/_nuxt/
|
|
30454
|
+
"etag": "\"587d-zV1IOugR08gc0LlOGMSClQfdApQ\"",
|
|
30455
|
+
"mtime": "2026-09-06T06:27:43.459Z",
|
|
30456
|
+
"size": 22653,
|
|
30457
|
+
"path": "../public/_nuxt/BBwMH_hG.js"
|
|
30155
30458
|
},
|
|
30156
|
-
"/_nuxt/
|
|
30459
|
+
"/_nuxt/BcrN7QEl2.js": {
|
|
30157
30460
|
"type": "text/javascript; charset=utf-8",
|
|
30158
|
-
"etag": "\"
|
|
30159
|
-
"mtime": "2026-09-
|
|
30160
|
-
"size":
|
|
30161
|
-
"path": "../public/_nuxt/
|
|
30461
|
+
"etag": "\"b14-CLdyddO7m6guAKfIeyReGHA6Jwg\"",
|
|
30462
|
+
"mtime": "2026-09-06T06:27:43.462Z",
|
|
30463
|
+
"size": 2836,
|
|
30464
|
+
"path": "../public/_nuxt/BcrN7QEl2.js"
|
|
30162
30465
|
},
|
|
30163
|
-
"/_nuxt/
|
|
30466
|
+
"/_nuxt/BfGc7TJp.js": {
|
|
30164
30467
|
"type": "text/javascript; charset=utf-8",
|
|
30165
|
-
"etag": "\"
|
|
30166
|
-
"mtime": "2026-09-
|
|
30167
|
-
"size":
|
|
30168
|
-
"path": "../public/_nuxt/
|
|
30468
|
+
"etag": "\"f5-ynAHqm+XhchZ1co7YynIGiIextg\"",
|
|
30469
|
+
"mtime": "2026-09-06T06:27:43.463Z",
|
|
30470
|
+
"size": 245,
|
|
30471
|
+
"path": "../public/_nuxt/BfGc7TJp.js"
|
|
30169
30472
|
},
|
|
30170
30473
|
"/_nuxt/BDUjyaF4.js": {
|
|
30171
30474
|
"type": "text/javascript; charset=utf-8",
|
|
30172
30475
|
"etag": "\"12149-hpS4uBcTVyjMF/ahBrfPvWSV6dM\"",
|
|
30173
|
-
"mtime": "2026-09-
|
|
30476
|
+
"mtime": "2026-09-06T06:27:43.459Z",
|
|
30174
30477
|
"size": 74057,
|
|
30175
30478
|
"path": "../public/_nuxt/BDUjyaF4.js"
|
|
30176
30479
|
},
|
|
30177
|
-
"/_nuxt/
|
|
30480
|
+
"/_nuxt/B5CYgFAD.js": {
|
|
30178
30481
|
"type": "text/javascript; charset=utf-8",
|
|
30179
|
-
"etag": "\"
|
|
30180
|
-
"mtime": "2026-09-
|
|
30181
|
-
"size":
|
|
30182
|
-
"path": "../public/_nuxt/
|
|
30482
|
+
"etag": "\"3ce77-+gYD9bGZqVuYG4HfJZyacVYYJq8\"",
|
|
30483
|
+
"mtime": "2026-09-06T06:27:43.457Z",
|
|
30484
|
+
"size": 249463,
|
|
30485
|
+
"path": "../public/_nuxt/B5CYgFAD.js"
|
|
30183
30486
|
},
|
|
30184
30487
|
"/_nuxt/BeIfu4N3.js": {
|
|
30185
30488
|
"type": "text/javascript; charset=utf-8",
|
|
30186
30489
|
"etag": "\"bc89-neyoILuYLlrhO8n1ehz7UmvocMs\"",
|
|
30187
|
-
"mtime": "2026-09-
|
|
30490
|
+
"mtime": "2026-09-06T06:27:43.463Z",
|
|
30188
30491
|
"size": 48265,
|
|
30189
30492
|
"path": "../public/_nuxt/BeIfu4N3.js"
|
|
30190
30493
|
},
|
|
30191
|
-
"/_nuxt/BfGc7TJp.js": {
|
|
30192
|
-
"type": "text/javascript; charset=utf-8",
|
|
30193
|
-
"etag": "\"f5-ynAHqm+XhchZ1co7YynIGiIextg\"",
|
|
30194
|
-
"mtime": "2026-09-05T18:48:20.531Z",
|
|
30195
|
-
"size": 245,
|
|
30196
|
-
"path": "../public/_nuxt/BfGc7TJp.js"
|
|
30197
|
-
},
|
|
30198
|
-
"/_nuxt/BmHvC_OU.js": {
|
|
30199
|
-
"type": "text/javascript; charset=utf-8",
|
|
30200
|
-
"etag": "\"4257-gsEzsEOULks8ILp6jG5RHYKayDg\"",
|
|
30201
|
-
"mtime": "2026-09-05T18:48:20.532Z",
|
|
30202
|
-
"size": 16983,
|
|
30203
|
-
"path": "../public/_nuxt/BmHvC_OU.js"
|
|
30204
|
-
},
|
|
30205
30494
|
"/_nuxt/BFjGV-RV2.js": {
|
|
30206
30495
|
"type": "text/javascript; charset=utf-8",
|
|
30207
30496
|
"etag": "\"a0340-NzvTqyczSJgnuw9pjPQnLX42sAE\"",
|
|
30208
|
-
"mtime": "2026-09-
|
|
30497
|
+
"mtime": "2026-09-06T06:27:43.460Z",
|
|
30209
30498
|
"size": 656192,
|
|
30210
30499
|
"path": "../public/_nuxt/BFjGV-RV2.js"
|
|
30211
30500
|
},
|
|
30212
30501
|
"/_nuxt/BGkumHZ32.js": {
|
|
30213
30502
|
"type": "text/javascript; charset=utf-8",
|
|
30214
30503
|
"etag": "\"14a0a8-FkCiOKvl5+p8em/4UNCrmbDN4qY\"",
|
|
30215
|
-
"mtime": "2026-09-
|
|
30504
|
+
"mtime": "2026-09-06T06:27:43.460Z",
|
|
30216
30505
|
"size": 1351848,
|
|
30217
30506
|
"path": "../public/_nuxt/BGkumHZ32.js"
|
|
30218
30507
|
},
|
|
30219
|
-
"/_nuxt/
|
|
30508
|
+
"/_nuxt/BgOhoDTI.js": {
|
|
30220
30509
|
"type": "text/javascript; charset=utf-8",
|
|
30221
|
-
"etag": "\"
|
|
30222
|
-
"mtime": "2026-09-
|
|
30223
|
-
"size":
|
|
30224
|
-
"path": "../public/_nuxt/
|
|
30510
|
+
"etag": "\"2543-qvpXnC+y5grUwUw+mC7meP0i3EA\"",
|
|
30511
|
+
"mtime": "2026-09-06T06:27:43.463Z",
|
|
30512
|
+
"size": 9539,
|
|
30513
|
+
"path": "../public/_nuxt/BgOhoDTI.js"
|
|
30514
|
+
},
|
|
30515
|
+
"/_nuxt/BLzCac9K2.js": {
|
|
30516
|
+
"type": "text/javascript; charset=utf-8",
|
|
30517
|
+
"etag": "\"5648-y3cHsTmjiTNhI509BiSM1D5wBes\"",
|
|
30518
|
+
"mtime": "2026-09-06T06:27:43.460Z",
|
|
30519
|
+
"size": 22088,
|
|
30520
|
+
"path": "../public/_nuxt/BLzCac9K2.js"
|
|
30521
|
+
},
|
|
30522
|
+
"/_nuxt/BNXfwXpE.js": {
|
|
30523
|
+
"type": "text/javascript; charset=utf-8",
|
|
30524
|
+
"etag": "\"30a-SKr3Bmmq+lyC2EG7XQ/M7P1jWog\"",
|
|
30525
|
+
"mtime": "2026-09-06T06:27:43.461Z",
|
|
30526
|
+
"size": 778,
|
|
30527
|
+
"path": "../public/_nuxt/BNXfwXpE.js"
|
|
30225
30528
|
},
|
|
30226
30529
|
"/_nuxt/Bp5luxkg2.js": {
|
|
30227
30530
|
"type": "text/javascript; charset=utf-8",
|
|
30228
30531
|
"etag": "\"3a06-wE6nRVKQRjsGzClNYT0f+LE6/Lg\"",
|
|
30229
|
-
"mtime": "2026-09-
|
|
30532
|
+
"mtime": "2026-09-06T06:27:43.463Z",
|
|
30230
30533
|
"size": 14854,
|
|
30231
30534
|
"path": "../public/_nuxt/Bp5luxkg2.js"
|
|
30232
30535
|
},
|
|
30233
|
-
"/_nuxt/
|
|
30536
|
+
"/_nuxt/Bmpvki7M.js": {
|
|
30234
30537
|
"type": "text/javascript; charset=utf-8",
|
|
30235
|
-
"etag": "\"
|
|
30236
|
-
"mtime": "2026-09-
|
|
30237
|
-
"size":
|
|
30238
|
-
"path": "../public/_nuxt/
|
|
30538
|
+
"etag": "\"623-ghkdDMae0RDQxJr6vx8je/qPTRs\"",
|
|
30539
|
+
"mtime": "2026-09-06T06:27:43.463Z",
|
|
30540
|
+
"size": 1571,
|
|
30541
|
+
"path": "../public/_nuxt/Bmpvki7M.js"
|
|
30239
30542
|
},
|
|
30240
|
-
"/_nuxt/
|
|
30543
|
+
"/_nuxt/BN_PdN3J.js": {
|
|
30241
30544
|
"type": "text/javascript; charset=utf-8",
|
|
30242
|
-
"etag": "\"
|
|
30243
|
-
"mtime": "2026-09-
|
|
30244
|
-
"size":
|
|
30245
|
-
"path": "../public/_nuxt/
|
|
30545
|
+
"etag": "\"10b9b-D693oquQMdJ9uX8C5GEOl79xXOE\"",
|
|
30546
|
+
"mtime": "2026-09-06T06:27:43.461Z",
|
|
30547
|
+
"size": 68507,
|
|
30548
|
+
"path": "../public/_nuxt/BN_PdN3J.js"
|
|
30246
30549
|
},
|
|
30247
30550
|
"/_nuxt/BSSUlJnx2.js": {
|
|
30248
30551
|
"type": "text/javascript; charset=utf-8",
|
|
30249
30552
|
"etag": "\"5f5-t0OMayeEXY7fEaFUOlppJZZQvtM\"",
|
|
30250
|
-
"mtime": "2026-09-
|
|
30553
|
+
"mtime": "2026-09-06T06:27:43.461Z",
|
|
30251
30554
|
"size": 1525,
|
|
30252
30555
|
"path": "../public/_nuxt/BSSUlJnx2.js"
|
|
30253
30556
|
},
|
|
30254
|
-
"/_nuxt/
|
|
30557
|
+
"/_nuxt/BSCpFtzG.js": {
|
|
30255
30558
|
"type": "text/javascript; charset=utf-8",
|
|
30256
|
-
"etag": "\"
|
|
30257
|
-
"mtime": "2026-09-
|
|
30258
|
-
"size":
|
|
30259
|
-
"path": "../public/_nuxt/
|
|
30559
|
+
"etag": "\"13398-3vxX1fQrPyVWKnXsEX5bmCpF/Eg\"",
|
|
30560
|
+
"mtime": "2026-09-06T06:27:43.461Z",
|
|
30561
|
+
"size": 78744,
|
|
30562
|
+
"path": "../public/_nuxt/BSCpFtzG.js"
|
|
30260
30563
|
},
|
|
30261
30564
|
"/_nuxt/BUcmySDa2.js": {
|
|
30262
30565
|
"type": "text/javascript; charset=utf-8",
|
|
30263
30566
|
"etag": "\"1d27c-MrwgQiovFUP0UVtMJ1LdEF/IrEs\"",
|
|
30264
|
-
"mtime": "2026-09-
|
|
30567
|
+
"mtime": "2026-09-06T06:27:43.461Z",
|
|
30265
30568
|
"size": 119420,
|
|
30266
30569
|
"path": "../public/_nuxt/BUcmySDa2.js"
|
|
30267
30570
|
},
|
|
30571
|
+
"/_nuxt/BxPPAkGA.js": {
|
|
30572
|
+
"type": "text/javascript; charset=utf-8",
|
|
30573
|
+
"etag": "\"7ebd-9b4xLtZRNbmB3J2esDdIp2+t5sk\"",
|
|
30574
|
+
"mtime": "2026-09-06T06:27:43.464Z",
|
|
30575
|
+
"size": 32445,
|
|
30576
|
+
"path": "../public/_nuxt/BxPPAkGA.js"
|
|
30577
|
+
},
|
|
30268
30578
|
"/_nuxt/BytVi9VX2.js": {
|
|
30269
30579
|
"type": "text/javascript; charset=utf-8",
|
|
30270
30580
|
"etag": "\"8b9-SsapD0I/64H+tosN0JmRWjisTd0\"",
|
|
30271
|
-
"mtime": "2026-09-
|
|
30581
|
+
"mtime": "2026-09-06T06:27:43.464Z",
|
|
30272
30582
|
"size": 2233,
|
|
30273
30583
|
"path": "../public/_nuxt/BytVi9VX2.js"
|
|
30274
30584
|
},
|
|
30275
|
-
"/_nuxt/
|
|
30276
|
-
"type": "text/javascript; charset=utf-8",
|
|
30277
|
-
"etag": "\"22a4-V8S+THPIIgXmc/CMCTKAmu006N4\"",
|
|
30278
|
-
"mtime": "2026-09-05T18:48:20.532Z",
|
|
30279
|
-
"size": 8868,
|
|
30280
|
-
"path": "../public/_nuxt/By8BpbKH.js"
|
|
30281
|
-
},
|
|
30282
|
-
"/_nuxt/BrIJiJSN.js": {
|
|
30585
|
+
"/_nuxt/BZGNTgTQ2.js": {
|
|
30283
30586
|
"type": "text/javascript; charset=utf-8",
|
|
30284
|
-
"etag": "\"
|
|
30285
|
-
"mtime": "2026-09-
|
|
30286
|
-
"size":
|
|
30287
|
-
"path": "../public/_nuxt/
|
|
30587
|
+
"etag": "\"53-pfqlZiZJEbPiLoDxP0PLfz2Ucmw\"",
|
|
30588
|
+
"mtime": "2026-09-06T06:27:43.462Z",
|
|
30589
|
+
"size": 83,
|
|
30590
|
+
"path": "../public/_nuxt/BZGNTgTQ2.js"
|
|
30288
30591
|
},
|
|
30289
30592
|
"/_nuxt/C3tCneTM.js": {
|
|
30290
30593
|
"type": "text/javascript; charset=utf-8",
|
|
30291
30594
|
"etag": "\"56ab-/6Cr6erEwmZtrhutqEU3O5P+s0A\"",
|
|
30292
|
-
"mtime": "2026-09-
|
|
30595
|
+
"mtime": "2026-09-06T06:27:43.464Z",
|
|
30293
30596
|
"size": 22187,
|
|
30294
30597
|
"path": "../public/_nuxt/C3tCneTM.js"
|
|
30295
30598
|
},
|
|
30296
|
-
"/_nuxt/
|
|
30297
|
-
"type": "text/javascript; charset=utf-8",
|
|
30298
|
-
"etag": "\"53-pfqlZiZJEbPiLoDxP0PLfz2Ucmw\"",
|
|
30299
|
-
"mtime": "2026-09-05T18:48:20.531Z",
|
|
30300
|
-
"size": 83,
|
|
30301
|
-
"path": "../public/_nuxt/BZGNTgTQ2.js"
|
|
30302
|
-
},
|
|
30303
|
-
"/_nuxt/CBciOiTQ.js": {
|
|
30599
|
+
"/_nuxt/BxtpDtzC.js": {
|
|
30304
30600
|
"type": "text/javascript; charset=utf-8",
|
|
30305
|
-
"etag": "\"
|
|
30306
|
-
"mtime": "2026-09-
|
|
30307
|
-
"size":
|
|
30308
|
-
"path": "../public/_nuxt/
|
|
30601
|
+
"etag": "\"3348-NKn0ndcjz+XrgOw2f4HZ7I2TF34\"",
|
|
30602
|
+
"mtime": "2026-09-06T06:27:43.464Z",
|
|
30603
|
+
"size": 13128,
|
|
30604
|
+
"path": "../public/_nuxt/BxtpDtzC.js"
|
|
30309
30605
|
},
|
|
30310
|
-
"/_nuxt/
|
|
30606
|
+
"/_nuxt/BrIJiJSN.js": {
|
|
30311
30607
|
"type": "text/javascript; charset=utf-8",
|
|
30312
|
-
"etag": "\"
|
|
30313
|
-
"mtime": "2026-09-
|
|
30314
|
-
"size":
|
|
30315
|
-
"path": "../public/_nuxt/
|
|
30608
|
+
"etag": "\"50eba-EQGueVrdlEzHO7oTVt2LPxnHgRo\"",
|
|
30609
|
+
"mtime": "2026-09-06T06:27:43.464Z",
|
|
30610
|
+
"size": 331450,
|
|
30611
|
+
"path": "../public/_nuxt/BrIJiJSN.js"
|
|
30316
30612
|
},
|
|
30317
|
-
"/_nuxt/
|
|
30613
|
+
"/_nuxt/C4OAdbVK2.js": {
|
|
30318
30614
|
"type": "text/javascript; charset=utf-8",
|
|
30319
|
-
"etag": "\"
|
|
30320
|
-
"mtime": "2026-09-
|
|
30321
|
-
"size":
|
|
30322
|
-
"path": "../public/_nuxt/
|
|
30615
|
+
"etag": "\"89e-AQFf/aV6YnDPM3edZWc1ASPluno\"",
|
|
30616
|
+
"mtime": "2026-09-06T06:27:43.465Z",
|
|
30617
|
+
"size": 2206,
|
|
30618
|
+
"path": "../public/_nuxt/C4OAdbVK2.js"
|
|
30323
30619
|
},
|
|
30324
|
-
"/_nuxt/
|
|
30620
|
+
"/_nuxt/C6m-kenn.js": {
|
|
30325
30621
|
"type": "text/javascript; charset=utf-8",
|
|
30326
|
-
"etag": "\"
|
|
30327
|
-
"mtime": "2026-09-
|
|
30328
|
-
"size":
|
|
30329
|
-
"path": "../public/_nuxt/
|
|
30622
|
+
"etag": "\"3914-PeLFbXPWgKtw3N2Fy1E79JcHpLU\"",
|
|
30623
|
+
"mtime": "2026-09-06T06:27:43.465Z",
|
|
30624
|
+
"size": 14612,
|
|
30625
|
+
"path": "../public/_nuxt/C6m-kenn.js"
|
|
30330
30626
|
},
|
|
30331
|
-
"/_nuxt/
|
|
30627
|
+
"/_nuxt/C9f8QMp12.js": {
|
|
30332
30628
|
"type": "text/javascript; charset=utf-8",
|
|
30333
|
-
"etag": "\"
|
|
30334
|
-
"mtime": "2026-09-
|
|
30335
|
-
"size":
|
|
30336
|
-
"path": "../public/_nuxt/
|
|
30629
|
+
"etag": "\"1896-VcRRXhZEm21djPt3FTvlq+iUccI\"",
|
|
30630
|
+
"mtime": "2026-09-06T06:27:43.465Z",
|
|
30631
|
+
"size": 6294,
|
|
30632
|
+
"path": "../public/_nuxt/C9f8QMp12.js"
|
|
30337
30633
|
},
|
|
30338
30634
|
"/_nuxt/CfVAr2nf.js": {
|
|
30339
30635
|
"type": "text/javascript; charset=utf-8",
|
|
30340
30636
|
"etag": "\"4e58-dM+JZz9VCHehIO2I74Q45dMOZ8s\"",
|
|
30341
|
-
"mtime": "2026-09-
|
|
30637
|
+
"mtime": "2026-09-06T06:27:43.466Z",
|
|
30342
30638
|
"size": 20056,
|
|
30343
30639
|
"path": "../public/_nuxt/CfVAr2nf.js"
|
|
30344
30640
|
},
|
|
30345
30641
|
"/_nuxt/channel-templates.De5ZvrGz.css": {
|
|
30346
30642
|
"type": "text/css; charset=utf-8",
|
|
30347
30643
|
"etag": "\"846-hiNcWp465PfIwg3Hui8TGCj9S3o\"",
|
|
30348
|
-
"mtime": "2026-09-
|
|
30644
|
+
"mtime": "2026-09-06T06:27:43.478Z",
|
|
30349
30645
|
"size": 2118,
|
|
30350
30646
|
"path": "../public/_nuxt/channel-templates.De5ZvrGz.css"
|
|
30351
30647
|
},
|
|
30648
|
+
"/_nuxt/Cj6139IM.js": {
|
|
30649
|
+
"type": "text/javascript; charset=utf-8",
|
|
30650
|
+
"etag": "\"664-bB/MABMcuh9JMyKWxZJfgs5cTRI\"",
|
|
30651
|
+
"mtime": "2026-09-06T06:27:43.467Z",
|
|
30652
|
+
"size": 1636,
|
|
30653
|
+
"path": "../public/_nuxt/Cj6139IM.js"
|
|
30654
|
+
},
|
|
30352
30655
|
"/_nuxt/CKfhtOt7.js": {
|
|
30353
30656
|
"type": "text/javascript; charset=utf-8",
|
|
30354
30657
|
"etag": "\"9141-NLArDp1lZISfBmTeNNW/SqVqPrc\"",
|
|
30355
|
-
"mtime": "2026-09-
|
|
30658
|
+
"mtime": "2026-09-06T06:27:43.465Z",
|
|
30356
30659
|
"size": 37185,
|
|
30357
30660
|
"path": "../public/_nuxt/CKfhtOt7.js"
|
|
30358
30661
|
},
|
|
30359
|
-
"/_nuxt/
|
|
30360
|
-
"type": "text/javascript; charset=utf-8",
|
|
30361
|
-
"etag": "\"607-BXADOxvWyodLA6anDkRXIub8+XA\"",
|
|
30362
|
-
"mtime": "2026-09-05T18:48:20.536Z",
|
|
30363
|
-
"size": 1543,
|
|
30364
|
-
"path": "../public/_nuxt/CjDQPXfv.js"
|
|
30365
|
-
},
|
|
30366
|
-
"/_nuxt/CmHzfVc5.js": {
|
|
30367
|
-
"type": "text/javascript; charset=utf-8",
|
|
30368
|
-
"etag": "\"7ec3-tUpCnS/mT7jwFKjKxxLd9XTbgFU\"",
|
|
30369
|
-
"mtime": "2026-09-05T18:48:20.536Z",
|
|
30370
|
-
"size": 32451,
|
|
30371
|
-
"path": "../public/_nuxt/CmHzfVc5.js"
|
|
30372
|
-
},
|
|
30373
|
-
"/_nuxt/Cn3J3NXR.js": {
|
|
30374
|
-
"type": "text/javascript; charset=utf-8",
|
|
30375
|
-
"etag": "\"a6ef-rxc5AWy7cZY4nez30ZVJeXrMlc4\"",
|
|
30376
|
-
"mtime": "2026-09-05T18:48:20.536Z",
|
|
30377
|
-
"size": 42735,
|
|
30378
|
-
"path": "../public/_nuxt/Cn3J3NXR.js"
|
|
30379
|
-
},
|
|
30380
|
-
"/_nuxt/Cno6kYiO2.js": {
|
|
30662
|
+
"/_nuxt/Cno6kYiO.js": {
|
|
30381
30663
|
"type": "text/javascript; charset=utf-8",
|
|
30382
30664
|
"etag": "\"f2-SIBAvqBfq2ENmoMT2zz03X9uJTg\"",
|
|
30383
|
-
"mtime": "2026-09-
|
|
30665
|
+
"mtime": "2026-09-06T06:27:43.467Z",
|
|
30384
30666
|
"size": 242,
|
|
30385
|
-
"path": "../public/_nuxt/
|
|
30386
|
-
},
|
|
30387
|
-
"/_nuxt/CNs_Ozdc2.js": {
|
|
30388
|
-
"type": "text/javascript; charset=utf-8",
|
|
30389
|
-
"etag": "\"1b-1MHUJYdBtOvbvPMaiQxDXp3lHyw\"",
|
|
30390
|
-
"mtime": "2026-09-05T18:48:20.535Z",
|
|
30391
|
-
"size": 27,
|
|
30392
|
-
"path": "../public/_nuxt/CNs_Ozdc2.js"
|
|
30667
|
+
"path": "../public/_nuxt/Cno6kYiO.js"
|
|
30393
30668
|
},
|
|
30394
|
-
"/_nuxt/
|
|
30669
|
+
"/_nuxt/CGx-mtWf.js": {
|
|
30395
30670
|
"type": "text/javascript; charset=utf-8",
|
|
30396
|
-
"etag": "\"
|
|
30397
|
-
"mtime": "2026-09-
|
|
30398
|
-
"size":
|
|
30399
|
-
"path": "../public/_nuxt/
|
|
30671
|
+
"etag": "\"8cc4a-lB19dPmOrOEkweHSDcSPUuQNxOc\"",
|
|
30672
|
+
"mtime": "2026-09-06T06:27:43.465Z",
|
|
30673
|
+
"size": 576586,
|
|
30674
|
+
"path": "../public/_nuxt/CGx-mtWf.js"
|
|
30400
30675
|
},
|
|
30401
|
-
"/_nuxt/
|
|
30676
|
+
"/_nuxt/CNs_Ozdc.js": {
|
|
30402
30677
|
"type": "text/javascript; charset=utf-8",
|
|
30403
|
-
"etag": "\"
|
|
30404
|
-
"mtime": "2026-09-
|
|
30405
|
-
"size":
|
|
30406
|
-
"path": "../public/_nuxt/
|
|
30678
|
+
"etag": "\"1b-1MHUJYdBtOvbvPMaiQxDXp3lHyw\"",
|
|
30679
|
+
"mtime": "2026-09-06T06:27:43.465Z",
|
|
30680
|
+
"size": 27,
|
|
30681
|
+
"path": "../public/_nuxt/CNs_Ozdc.js"
|
|
30407
30682
|
},
|
|
30408
|
-
"/_nuxt/
|
|
30683
|
+
"/_nuxt/Cor9siSf.js": {
|
|
30409
30684
|
"type": "text/javascript; charset=utf-8",
|
|
30410
|
-
"etag": "\"
|
|
30411
|
-
"mtime": "2026-09-
|
|
30412
|
-
"size":
|
|
30413
|
-
"path": "../public/_nuxt/
|
|
30685
|
+
"etag": "\"469c-SAQlRrJexDg1WPypDeSp4i/c4PA\"",
|
|
30686
|
+
"mtime": "2026-09-06T06:27:43.467Z",
|
|
30687
|
+
"size": 18076,
|
|
30688
|
+
"path": "../public/_nuxt/Cor9siSf.js"
|
|
30414
30689
|
},
|
|
30415
30690
|
"/_nuxt/CUXCQXjG.js": {
|
|
30416
30691
|
"type": "text/javascript; charset=utf-8",
|
|
30417
30692
|
"etag": "\"18b-4es6+sDUaYZ89sbvxGRBaXHox64\"",
|
|
30418
|
-
"mtime": "2026-09-
|
|
30693
|
+
"mtime": "2026-09-06T06:27:43.465Z",
|
|
30419
30694
|
"size": 395,
|
|
30420
30695
|
"path": "../public/_nuxt/CUXCQXjG.js"
|
|
30421
30696
|
},
|
|
30422
30697
|
"/_nuxt/CWKEp1wx2.js": {
|
|
30423
30698
|
"type": "text/javascript; charset=utf-8",
|
|
30424
30699
|
"etag": "\"555-ED/tuOi0Qdk4aSGksbI58QY+vQ8\"",
|
|
30425
|
-
"mtime": "2026-09-
|
|
30700
|
+
"mtime": "2026-09-06T06:27:43.466Z",
|
|
30426
30701
|
"size": 1365,
|
|
30427
30702
|
"path": "../public/_nuxt/CWKEp1wx2.js"
|
|
30428
30703
|
},
|
|
30429
|
-
"/_nuxt/D1z7i2UP.js": {
|
|
30430
|
-
"type": "text/javascript; charset=utf-8",
|
|
30431
|
-
"etag": "\"3488-96j3CtrX45ueUXO7o7l3+3rcKWk\"",
|
|
30432
|
-
"mtime": "2026-09-05T18:48:20.537Z",
|
|
30433
|
-
"size": 13448,
|
|
30434
|
-
"path": "../public/_nuxt/D1z7i2UP.js"
|
|
30435
|
-
},
|
|
30436
|
-
"/_nuxt/D3VJ3lex.js": {
|
|
30437
|
-
"type": "text/javascript; charset=utf-8",
|
|
30438
|
-
"etag": "\"f01-r7T4K2XehrEJJJK0PwxWUc/AYBo\"",
|
|
30439
|
-
"mtime": "2026-09-05T18:48:20.537Z",
|
|
30440
|
-
"size": 3841,
|
|
30441
|
-
"path": "../public/_nuxt/D3VJ3lex.js"
|
|
30442
|
-
},
|
|
30443
|
-
"/_nuxt/D0Szyn_D.js": {
|
|
30444
|
-
"type": "text/javascript; charset=utf-8",
|
|
30445
|
-
"etag": "\"3d83-SNx5jbrmEIkXnjG0hx+QAnLAJaU\"",
|
|
30446
|
-
"mtime": "2026-09-05T18:48:20.537Z",
|
|
30447
|
-
"size": 15747,
|
|
30448
|
-
"path": "../public/_nuxt/D0Szyn_D.js"
|
|
30449
|
-
},
|
|
30450
30704
|
"/_nuxt/D-Ca4BGY.js": {
|
|
30451
30705
|
"type": "text/javascript; charset=utf-8",
|
|
30452
30706
|
"etag": "\"d322-Ji+xNrf2m+xWgNVNTGDuV7nAR7w\"",
|
|
30453
|
-
"mtime": "2026-09-
|
|
30707
|
+
"mtime": "2026-09-06T06:27:43.467Z",
|
|
30454
30708
|
"size": 54050,
|
|
30455
30709
|
"path": "../public/_nuxt/D-Ca4BGY.js"
|
|
30456
30710
|
},
|
|
30457
|
-
"/_nuxt/
|
|
30711
|
+
"/_nuxt/D95h62Jn.js": {
|
|
30458
30712
|
"type": "text/javascript; charset=utf-8",
|
|
30459
|
-
"etag": "\"
|
|
30460
|
-
"mtime": "2026-09-
|
|
30461
|
-
"size":
|
|
30462
|
-
"path": "../public/_nuxt/
|
|
30713
|
+
"etag": "\"3f5-sTPqCSaAt8a9YlLXlhRfFlOtmcQ\"",
|
|
30714
|
+
"mtime": "2026-09-06T06:27:43.468Z",
|
|
30715
|
+
"size": 1013,
|
|
30716
|
+
"path": "../public/_nuxt/D95h62Jn.js"
|
|
30463
30717
|
},
|
|
30464
|
-
"/_nuxt/
|
|
30718
|
+
"/_nuxt/D1z7i2UP.js": {
|
|
30465
30719
|
"type": "text/javascript; charset=utf-8",
|
|
30466
|
-
"etag": "\"
|
|
30467
|
-
"mtime": "2026-09-
|
|
30468
|
-
"size":
|
|
30469
|
-
"path": "../public/_nuxt/
|
|
30720
|
+
"etag": "\"3488-96j3CtrX45ueUXO7o7l3+3rcKWk\"",
|
|
30721
|
+
"mtime": "2026-09-06T06:27:43.468Z",
|
|
30722
|
+
"size": 13448,
|
|
30723
|
+
"path": "../public/_nuxt/D1z7i2UP.js"
|
|
30470
30724
|
},
|
|
30471
|
-
"/_nuxt/
|
|
30725
|
+
"/_nuxt/D7jiode2.js": {
|
|
30472
30726
|
"type": "text/javascript; charset=utf-8",
|
|
30473
|
-
"etag": "\"
|
|
30474
|
-
"mtime": "2026-09-
|
|
30475
|
-
"size":
|
|
30476
|
-
"path": "../public/_nuxt/
|
|
30727
|
+
"etag": "\"1285-ggBNcB9xOD6IVb4rBO7KYsqh/ms\"",
|
|
30728
|
+
"mtime": "2026-09-06T06:27:43.468Z",
|
|
30729
|
+
"size": 4741,
|
|
30730
|
+
"path": "../public/_nuxt/D7jiode2.js"
|
|
30477
30731
|
},
|
|
30478
|
-
"/_nuxt/
|
|
30732
|
+
"/_nuxt/D8CqF0yy.js": {
|
|
30479
30733
|
"type": "text/javascript; charset=utf-8",
|
|
30480
|
-
"etag": "\"
|
|
30481
|
-
"mtime": "2026-09-
|
|
30482
|
-
"size":
|
|
30483
|
-
"path": "../public/_nuxt/
|
|
30734
|
+
"etag": "\"1dae-DlKVVV+fkbaFtolHiRzBO1Gjw4s\"",
|
|
30735
|
+
"mtime": "2026-09-06T06:27:43.468Z",
|
|
30736
|
+
"size": 7598,
|
|
30737
|
+
"path": "../public/_nuxt/D8CqF0yy.js"
|
|
30484
30738
|
},
|
|
30485
30739
|
"/_nuxt/daq.6IrhVVfy.css": {
|
|
30486
30740
|
"type": "text/css; charset=utf-8",
|
|
30487
30741
|
"etag": "\"560c-BXFIKD9bnWhTOZ8SzFFpfkMuNHU\"",
|
|
30488
|
-
"mtime": "2026-09-
|
|
30742
|
+
"mtime": "2026-09-06T06:27:43.479Z",
|
|
30489
30743
|
"size": 22028,
|
|
30490
30744
|
"path": "../public/_nuxt/daq.6IrhVVfy.css"
|
|
30491
30745
|
},
|
|
30746
|
+
"/_nuxt/DA4lxCWC2.js": {
|
|
30747
|
+
"type": "text/javascript; charset=utf-8",
|
|
30748
|
+
"etag": "\"1fd9-/rwkIG2tdN0ulOA/H0Hwh783NRw\"",
|
|
30749
|
+
"mtime": "2026-09-06T06:27:43.469Z",
|
|
30750
|
+
"size": 8153,
|
|
30751
|
+
"path": "../public/_nuxt/DA4lxCWC2.js"
|
|
30752
|
+
},
|
|
30753
|
+
"/_nuxt/DEaY_uvR.js": {
|
|
30754
|
+
"type": "text/javascript; charset=utf-8",
|
|
30755
|
+
"etag": "\"18f8-ZbaeDqnpw8A3xuKjUj3HwB1cwW0\"",
|
|
30756
|
+
"mtime": "2026-09-06T06:27:43.469Z",
|
|
30757
|
+
"size": 6392,
|
|
30758
|
+
"path": "../public/_nuxt/DEaY_uvR.js"
|
|
30759
|
+
},
|
|
30760
|
+
"/_nuxt/DeYsUzhr.js": {
|
|
30761
|
+
"type": "text/javascript; charset=utf-8",
|
|
30762
|
+
"etag": "\"287-ALaKQkZWM37K7ru31bg511e8ikI\"",
|
|
30763
|
+
"mtime": "2026-09-06T06:27:43.470Z",
|
|
30764
|
+
"size": 647,
|
|
30765
|
+
"path": "../public/_nuxt/DeYsUzhr.js"
|
|
30766
|
+
},
|
|
30492
30767
|
"/_nuxt/dcw.DcDjwvqv.css": {
|
|
30493
30768
|
"type": "text/css; charset=utf-8",
|
|
30494
30769
|
"etag": "\"2608-sKDmsAosVQN2c6l/NGazwNjDLUI\"",
|
|
30495
|
-
"mtime": "2026-09-
|
|
30770
|
+
"mtime": "2026-09-06T06:27:43.479Z",
|
|
30496
30771
|
"size": 9736,
|
|
30497
30772
|
"path": "../public/_nuxt/dcw.DcDjwvqv.css"
|
|
30498
30773
|
},
|
|
30499
|
-
"/_nuxt/default.
|
|
30774
|
+
"/_nuxt/default.BbgdTDCk.css": {
|
|
30500
30775
|
"type": "text/css; charset=utf-8",
|
|
30501
|
-
"etag": "\"2f9e-
|
|
30502
|
-
"mtime": "2026-09-
|
|
30776
|
+
"etag": "\"2f9e-FQsP/3guV1XWiRqjZyF0yxNKLkc\"",
|
|
30777
|
+
"mtime": "2026-09-06T06:27:43.479Z",
|
|
30503
30778
|
"size": 12190,
|
|
30504
|
-
"path": "../public/_nuxt/default.
|
|
30505
|
-
},
|
|
30506
|
-
"/_nuxt/DeYsUzhr.js": {
|
|
30507
|
-
"type": "text/javascript; charset=utf-8",
|
|
30508
|
-
"etag": "\"287-ALaKQkZWM37K7ru31bg511e8ikI\"",
|
|
30509
|
-
"mtime": "2026-09-05T18:48:20.539Z",
|
|
30510
|
-
"size": 647,
|
|
30511
|
-
"path": "../public/_nuxt/DeYsUzhr.js"
|
|
30779
|
+
"path": "../public/_nuxt/default.BbgdTDCk.css"
|
|
30512
30780
|
},
|
|
30513
30781
|
"/_nuxt/DIOBYJe3.js": {
|
|
30514
30782
|
"type": "text/javascript; charset=utf-8",
|
|
30515
30783
|
"etag": "\"4b5-DdWaiyBS+/JejqhLG4Q7/JprP2Q\"",
|
|
30516
|
-
"mtime": "2026-09-
|
|
30784
|
+
"mtime": "2026-09-06T06:27:43.469Z",
|
|
30517
30785
|
"size": 1205,
|
|
30518
30786
|
"path": "../public/_nuxt/DIOBYJe3.js"
|
|
30519
30787
|
},
|
|
30520
|
-
"/_nuxt/
|
|
30788
|
+
"/_nuxt/Dhqra7NB.js": {
|
|
30521
30789
|
"type": "text/javascript; charset=utf-8",
|
|
30522
|
-
"etag": "\"
|
|
30523
|
-
"mtime": "2026-09-
|
|
30524
|
-
"size":
|
|
30525
|
-
"path": "../public/_nuxt/
|
|
30790
|
+
"etag": "\"c67-DJQzh47TgZoVFNIo5m4hACtSlTg\"",
|
|
30791
|
+
"mtime": "2026-09-06T06:27:43.471Z",
|
|
30792
|
+
"size": 3175,
|
|
30793
|
+
"path": "../public/_nuxt/Dhqra7NB.js"
|
|
30794
|
+
},
|
|
30795
|
+
"/_nuxt/DlRO_q5L.js": {
|
|
30796
|
+
"type": "text/javascript; charset=utf-8",
|
|
30797
|
+
"etag": "\"1195-qIdBUxD1e9n0IIVzYKGquwyc5IM\"",
|
|
30798
|
+
"mtime": "2026-09-06T06:27:43.471Z",
|
|
30799
|
+
"size": 4501,
|
|
30800
|
+
"path": "../public/_nuxt/DlRO_q5L.js"
|
|
30526
30801
|
},
|
|
30527
30802
|
"/_nuxt/DpojD719.js": {
|
|
30528
30803
|
"type": "text/javascript; charset=utf-8",
|
|
30529
30804
|
"etag": "\"29d-Fu+XH+dfF6wIVeD5drBDJvCFiPE\"",
|
|
30530
|
-
"mtime": "2026-09-
|
|
30805
|
+
"mtime": "2026-09-06T06:27:43.471Z",
|
|
30531
30806
|
"size": 669,
|
|
30532
30807
|
"path": "../public/_nuxt/DpojD719.js"
|
|
30533
30808
|
},
|
|
30534
30809
|
"/_nuxt/DoLasgPj2.js": {
|
|
30535
30810
|
"type": "text/javascript; charset=utf-8",
|
|
30536
30811
|
"etag": "\"20cf-AD2OXvXYmQR29f4gV1ADJLRnCEA\"",
|
|
30537
|
-
"mtime": "2026-09-
|
|
30812
|
+
"mtime": "2026-09-06T06:27:43.471Z",
|
|
30538
30813
|
"size": 8399,
|
|
30539
30814
|
"path": "../public/_nuxt/DoLasgPj2.js"
|
|
30540
30815
|
},
|
|
30541
|
-
"/_nuxt/DN5RuZ8k.js": {
|
|
30542
|
-
"type": "text/javascript; charset=utf-8",
|
|
30543
|
-
"etag": "\"26637-Mfy9qOBxF72GHzi+rb3kHe7iBVs\"",
|
|
30544
|
-
"mtime": "2026-09-05T18:48:20.539Z",
|
|
30545
|
-
"size": 157239,
|
|
30546
|
-
"path": "../public/_nuxt/DN5RuZ8k.js"
|
|
30547
|
-
},
|
|
30548
|
-
"/_nuxt/Dqj2h40U.js": {
|
|
30549
|
-
"type": "text/javascript; charset=utf-8",
|
|
30550
|
-
"etag": "\"e582-boZuLO/wWhULGxLqbU4ZyPr4G+4\"",
|
|
30551
|
-
"mtime": "2026-09-05T18:48:20.539Z",
|
|
30552
|
-
"size": 58754,
|
|
30553
|
-
"path": "../public/_nuxt/Dqj2h40U.js"
|
|
30554
|
-
},
|
|
30555
|
-
"/_nuxt/DDdEnkdw.js": {
|
|
30556
|
-
"type": "text/javascript; charset=utf-8",
|
|
30557
|
-
"etag": "\"8cc4a-lwyc2Eg+lft0XI7SWiX5gE688tU\"",
|
|
30558
|
-
"mtime": "2026-09-05T18:48:20.538Z",
|
|
30559
|
-
"size": 576586,
|
|
30560
|
-
"path": "../public/_nuxt/DDdEnkdw.js"
|
|
30561
|
-
},
|
|
30562
30816
|
"/_nuxt/DsUUYP292.js": {
|
|
30563
30817
|
"type": "text/javascript; charset=utf-8",
|
|
30564
30818
|
"etag": "\"144-/n2T55jR70VIdOwiikYjqUe6HLk\"",
|
|
30565
|
-
"mtime": "2026-09-
|
|
30819
|
+
"mtime": "2026-09-06T06:27:43.471Z",
|
|
30566
30820
|
"size": 324,
|
|
30567
30821
|
"path": "../public/_nuxt/DsUUYP292.js"
|
|
30568
30822
|
},
|
|
30569
|
-
"/_nuxt/
|
|
30823
|
+
"/_nuxt/Ds8JbqGB.js": {
|
|
30570
30824
|
"type": "text/javascript; charset=utf-8",
|
|
30571
|
-
"etag": "\"
|
|
30572
|
-
"mtime": "2026-09-
|
|
30573
|
-
"size":
|
|
30574
|
-
"path": "../public/_nuxt/
|
|
30825
|
+
"etag": "\"20a5-5w+JPRF9P/jPDCyWtGvTH9GWMvs\"",
|
|
30826
|
+
"mtime": "2026-09-06T06:27:43.471Z",
|
|
30827
|
+
"size": 8357,
|
|
30828
|
+
"path": "../public/_nuxt/Ds8JbqGB.js"
|
|
30829
|
+
},
|
|
30830
|
+
"/_nuxt/DNxVTfhe.js": {
|
|
30831
|
+
"type": "text/javascript; charset=utf-8",
|
|
30832
|
+
"etag": "\"28a2e-JTPo0V0NdEUiA5ubrG/aTW6Nt3s\"",
|
|
30833
|
+
"mtime": "2026-09-06T06:27:43.469Z",
|
|
30834
|
+
"size": 166446,
|
|
30835
|
+
"path": "../public/_nuxt/DNxVTfhe.js"
|
|
30836
|
+
},
|
|
30837
|
+
"/_nuxt/DT-Wg8r1.js": {
|
|
30838
|
+
"type": "text/javascript; charset=utf-8",
|
|
30839
|
+
"etag": "\"987d-FRY5+vZoHzByvMEFbeh2lKuBssc\"",
|
|
30840
|
+
"mtime": "2026-09-06T06:27:43.470Z",
|
|
30841
|
+
"size": 39037,
|
|
30842
|
+
"path": "../public/_nuxt/DT-Wg8r1.js"
|
|
30575
30843
|
},
|
|
30576
30844
|
"/_nuxt/DtBu71ev.js": {
|
|
30577
30845
|
"type": "text/javascript; charset=utf-8",
|
|
30578
30846
|
"etag": "\"156bf-YTCvoAR5ZNk1ZGVhmY/Bceo/GjQ\"",
|
|
30579
|
-
"mtime": "2026-09-
|
|
30847
|
+
"mtime": "2026-09-06T06:27:43.472Z",
|
|
30580
30848
|
"size": 87743,
|
|
30581
30849
|
"path": "../public/_nuxt/DtBu71ev.js"
|
|
30582
30850
|
},
|
|
30851
|
+
"/_nuxt/DTYBfjRY.js": {
|
|
30852
|
+
"type": "text/javascript; charset=utf-8",
|
|
30853
|
+
"etag": "\"1a89-9gPrj/bgllCi+f9Gl6ze+k5zkcw\"",
|
|
30854
|
+
"mtime": "2026-09-06T06:27:43.470Z",
|
|
30855
|
+
"size": 6793,
|
|
30856
|
+
"path": "../public/_nuxt/DTYBfjRY.js"
|
|
30857
|
+
},
|
|
30583
30858
|
"/_nuxt/DXRZPxGs.js": {
|
|
30584
30859
|
"type": "text/javascript; charset=utf-8",
|
|
30585
30860
|
"etag": "\"42-LgXLXdo9BGzBlyxqolWDOt/Ezyg\"",
|
|
30586
|
-
"mtime": "2026-09-
|
|
30861
|
+
"mtime": "2026-09-06T06:27:43.470Z",
|
|
30587
30862
|
"size": 66,
|
|
30588
30863
|
"path": "../public/_nuxt/DXRZPxGs.js"
|
|
30589
30864
|
},
|
|
30865
|
+
"/_nuxt/DWcEk1ur2.js": {
|
|
30866
|
+
"type": "text/javascript; charset=utf-8",
|
|
30867
|
+
"etag": "\"6a1f-fF/+gkQ3RswZQKIYDBEx7d8rnN8\"",
|
|
30868
|
+
"mtime": "2026-09-06T06:27:43.470Z",
|
|
30869
|
+
"size": 27167,
|
|
30870
|
+
"path": "../public/_nuxt/DWcEk1ur2.js"
|
|
30871
|
+
},
|
|
30590
30872
|
"/_nuxt/Dy-mxvXY2.js": {
|
|
30591
30873
|
"type": "text/javascript; charset=utf-8",
|
|
30592
30874
|
"etag": "\"92-oLgwL98kjyuEcvL717na1ap9Tks\"",
|
|
30593
|
-
"mtime": "2026-09-
|
|
30875
|
+
"mtime": "2026-09-06T06:27:43.472Z",
|
|
30594
30876
|
"size": 146,
|
|
30595
30877
|
"path": "../public/_nuxt/Dy-mxvXY2.js"
|
|
30596
30878
|
},
|
|
30879
|
+
"/_nuxt/d_Sz9KGm.js": {
|
|
30880
|
+
"type": "text/javascript; charset=utf-8",
|
|
30881
|
+
"etag": "\"2405-7ujtrgj9V4jVad6cD//Q7Gvx4Q4\"",
|
|
30882
|
+
"mtime": "2026-09-06T06:27:43.475Z",
|
|
30883
|
+
"size": 9221,
|
|
30884
|
+
"path": "../public/_nuxt/d_Sz9KGm.js"
|
|
30885
|
+
},
|
|
30597
30886
|
"/_nuxt/eb-garamond-cyrillic-400-italic.BGIwiowF.woff2": {
|
|
30598
30887
|
"type": "font/woff2",
|
|
30599
30888
|
"etag": "\"3504-t17DeaJZ5CiTr/7PdWXcRgN9/Yc\"",
|
|
30600
|
-
"mtime": "2026-09-
|
|
30889
|
+
"mtime": "2026-09-06T06:27:43.479Z",
|
|
30601
30890
|
"size": 13572,
|
|
30602
30891
|
"path": "../public/_nuxt/eb-garamond-cyrillic-400-italic.BGIwiowF.woff2"
|
|
30603
30892
|
},
|
|
30893
|
+
"/_nuxt/DyisHHzD.js": {
|
|
30894
|
+
"type": "text/javascript; charset=utf-8",
|
|
30895
|
+
"etag": "\"26637-o15U+yDwUbonOcjvC07KaBGRDho\"",
|
|
30896
|
+
"mtime": "2026-09-06T06:27:43.472Z",
|
|
30897
|
+
"size": 157239,
|
|
30898
|
+
"path": "../public/_nuxt/DyisHHzD.js"
|
|
30899
|
+
},
|
|
30604
30900
|
"/_nuxt/eb-garamond-cyrillic-400-italic.BZInx2ys.woff": {
|
|
30605
30901
|
"type": "font/woff",
|
|
30606
30902
|
"etag": "\"3f04-1MKyFKXvChwQTK9MnbAM3SwAP/w\"",
|
|
30607
|
-
"mtime": "2026-09-
|
|
30903
|
+
"mtime": "2026-09-06T06:27:43.479Z",
|
|
30608
30904
|
"size": 16132,
|
|
30609
30905
|
"path": "../public/_nuxt/eb-garamond-cyrillic-400-italic.BZInx2ys.woff"
|
|
30610
30906
|
},
|
|
30611
|
-
"/_nuxt/DxrgFxIr2.js": {
|
|
30612
|
-
"type": "text/javascript; charset=utf-8",
|
|
30613
|
-
"etag": "\"89e-8NcXOG1REJAIlIAOpWPT7Ks0lvQ\"",
|
|
30614
|
-
"mtime": "2026-09-05T18:48:20.541Z",
|
|
30615
|
-
"size": 2206,
|
|
30616
|
-
"path": "../public/_nuxt/DxrgFxIr2.js"
|
|
30617
|
-
},
|
|
30618
|
-
"/_nuxt/eb-garamond-cyrillic-400-normal.DDLP67lu.woff2": {
|
|
30619
|
-
"type": "font/woff2",
|
|
30620
|
-
"etag": "\"33d4-lVrdxXudnaWAAL0JfU6b+yZGpK0\"",
|
|
30621
|
-
"mtime": "2026-09-05T18:48:20.547Z",
|
|
30622
|
-
"size": 13268,
|
|
30623
|
-
"path": "../public/_nuxt/eb-garamond-cyrillic-400-normal.DDLP67lu.woff2"
|
|
30624
|
-
},
|
|
30625
30907
|
"/_nuxt/eb-garamond-cyrillic-400-normal.C0kVTdou.woff": {
|
|
30626
30908
|
"type": "font/woff",
|
|
30627
30909
|
"etag": "\"3c88-Q5XoFKe1rGp1UkdvSR6MtPcFfgQ\"",
|
|
30628
|
-
"mtime": "2026-09-
|
|
30910
|
+
"mtime": "2026-09-06T06:27:43.479Z",
|
|
30629
30911
|
"size": 15496,
|
|
30630
30912
|
"path": "../public/_nuxt/eb-garamond-cyrillic-400-normal.C0kVTdou.woff"
|
|
30631
30913
|
},
|
|
30632
30914
|
"/_nuxt/eb-garamond-cyrillic-ext-400-italic.Bz1w3xqM.woff2": {
|
|
30633
30915
|
"type": "font/woff2",
|
|
30634
30916
|
"etag": "\"4620-AEmSjSDDFDLAiok0BdjqqFs2mx4\"",
|
|
30635
|
-
"mtime": "2026-09-
|
|
30917
|
+
"mtime": "2026-09-06T06:27:43.480Z",
|
|
30636
30918
|
"size": 17952,
|
|
30637
30919
|
"path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-italic.Bz1w3xqM.woff2"
|
|
30638
30920
|
},
|
|
30639
30921
|
"/_nuxt/eb-garamond-cyrillic-ext-400-italic.CYS3phfl.woff": {
|
|
30640
30922
|
"type": "font/woff",
|
|
30641
30923
|
"etag": "\"5698-6bgErOYTElI0Z3Untp+h0Xi0FGs\"",
|
|
30642
|
-
"mtime": "2026-09-
|
|
30924
|
+
"mtime": "2026-09-06T06:27:43.480Z",
|
|
30643
30925
|
"size": 22168,
|
|
30644
30926
|
"path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-italic.CYS3phfl.woff"
|
|
30645
30927
|
},
|
|
30646
|
-
"/_nuxt/eb-garamond-cyrillic-
|
|
30647
|
-
"type": "font/
|
|
30648
|
-
"etag": "\"
|
|
30649
|
-
"mtime": "2026-09-
|
|
30650
|
-
"size":
|
|
30651
|
-
"path": "../public/_nuxt/eb-garamond-cyrillic-
|
|
30652
|
-
},
|
|
30653
|
-
"/_nuxt/eb-garamond-greek-400-italic.BamGE6QP.woff": {
|
|
30654
|
-
"type": "font/woff",
|
|
30655
|
-
"etag": "\"307c-Fmorq8T0Tyl1FByuAGfnIMJMsU0\"",
|
|
30656
|
-
"mtime": "2026-09-05T18:48:20.548Z",
|
|
30657
|
-
"size": 12412,
|
|
30658
|
-
"path": "../public/_nuxt/eb-garamond-greek-400-italic.BamGE6QP.woff"
|
|
30928
|
+
"/_nuxt/eb-garamond-cyrillic-400-normal.DDLP67lu.woff2": {
|
|
30929
|
+
"type": "font/woff2",
|
|
30930
|
+
"etag": "\"33d4-lVrdxXudnaWAAL0JfU6b+yZGpK0\"",
|
|
30931
|
+
"mtime": "2026-09-06T06:27:43.480Z",
|
|
30932
|
+
"size": 13268,
|
|
30933
|
+
"path": "../public/_nuxt/eb-garamond-cyrillic-400-normal.DDLP67lu.woff2"
|
|
30659
30934
|
},
|
|
30660
30935
|
"/_nuxt/eb-garamond-cyrillic-ext-400-normal.o8fRvAFQ.woff2": {
|
|
30661
30936
|
"type": "font/woff2",
|
|
30662
30937
|
"etag": "\"419c-BgVrkDzxBAskhVuAe8ZPKrVJ2vk\"",
|
|
30663
|
-
"mtime": "2026-09-
|
|
30938
|
+
"mtime": "2026-09-06T06:27:43.480Z",
|
|
30664
30939
|
"size": 16796,
|
|
30665
30940
|
"path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-normal.o8fRvAFQ.woff2"
|
|
30666
30941
|
},
|
|
30942
|
+
"/_nuxt/eb-garamond-cyrillic-ext-400-normal.DG8lny6_.woff": {
|
|
30943
|
+
"type": "font/woff",
|
|
30944
|
+
"etag": "\"4fcc-Wt58DNvJEH8PhhsEwR/fAuZLZf0\"",
|
|
30945
|
+
"mtime": "2026-09-06T06:27:43.480Z",
|
|
30946
|
+
"size": 20428,
|
|
30947
|
+
"path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-normal.DG8lny6_.woff"
|
|
30948
|
+
},
|
|
30667
30949
|
"/_nuxt/eb-garamond-greek-400-italic.Dqr5KC66.woff2": {
|
|
30668
30950
|
"type": "font/woff2",
|
|
30669
30951
|
"etag": "\"2904-BXAeLh8O+jrT8ujKrV7WtU2zP1c\"",
|
|
30670
|
-
"mtime": "2026-09-
|
|
30952
|
+
"mtime": "2026-09-06T06:27:43.481Z",
|
|
30671
30953
|
"size": 10500,
|
|
30672
30954
|
"path": "../public/_nuxt/eb-garamond-greek-400-italic.Dqr5KC66.woff2"
|
|
30673
30955
|
},
|
|
30956
|
+
"/_nuxt/eb-garamond-greek-400-italic.BamGE6QP.woff": {
|
|
30957
|
+
"type": "font/woff",
|
|
30958
|
+
"etag": "\"307c-Fmorq8T0Tyl1FByuAGfnIMJMsU0\"",
|
|
30959
|
+
"mtime": "2026-09-06T06:27:43.480Z",
|
|
30960
|
+
"size": 12412,
|
|
30961
|
+
"path": "../public/_nuxt/eb-garamond-greek-400-italic.BamGE6QP.woff"
|
|
30962
|
+
},
|
|
30674
30963
|
"/_nuxt/eb-garamond-greek-400-normal.CVAbzS9p.woff2": {
|
|
30675
30964
|
"type": "font/woff2",
|
|
30676
30965
|
"etag": "\"2a00-ZNzj8SIiN3t2N23u++WhC6jE8gk\"",
|
|
30677
|
-
"mtime": "2026-09-
|
|
30966
|
+
"mtime": "2026-09-06T06:27:43.481Z",
|
|
30678
30967
|
"size": 10752,
|
|
30679
30968
|
"path": "../public/_nuxt/eb-garamond-greek-400-normal.CVAbzS9p.woff2"
|
|
30680
30969
|
},
|
|
30681
|
-
"/_nuxt/eb-garamond-greek-
|
|
30682
|
-
"type": "font/
|
|
30683
|
-
"etag": "\"
|
|
30684
|
-
"mtime": "2026-09-
|
|
30685
|
-
"size":
|
|
30686
|
-
"path": "../public/_nuxt/eb-garamond-greek-
|
|
30970
|
+
"/_nuxt/eb-garamond-greek-400-normal.d4JlP2QH.woff": {
|
|
30971
|
+
"type": "font/woff",
|
|
30972
|
+
"etag": "\"3108-ggShwQ6kE+MAR7EEQafdmWunxHg\"",
|
|
30973
|
+
"mtime": "2026-09-06T06:27:43.481Z",
|
|
30974
|
+
"size": 12552,
|
|
30975
|
+
"path": "../public/_nuxt/eb-garamond-greek-400-normal.d4JlP2QH.woff"
|
|
30687
30976
|
},
|
|
30688
30977
|
"/_nuxt/eb-garamond-greek-ext-400-italic.BL1XYHtS.woff": {
|
|
30689
30978
|
"type": "font/woff",
|
|
30690
30979
|
"etag": "\"2304-q8ppn7qePqLys53UrEKMrGT8e6E\"",
|
|
30691
|
-
"mtime": "2026-09-
|
|
30980
|
+
"mtime": "2026-09-06T06:27:43.481Z",
|
|
30692
30981
|
"size": 8964,
|
|
30693
30982
|
"path": "../public/_nuxt/eb-garamond-greek-ext-400-italic.BL1XYHtS.woff"
|
|
30694
30983
|
},
|
|
30695
|
-
"/_nuxt/eb-garamond-greek-400-
|
|
30696
|
-
"type": "font/woff",
|
|
30697
|
-
"etag": "\"3108-ggShwQ6kE+MAR7EEQafdmWunxHg\"",
|
|
30698
|
-
"mtime": "2026-09-05T18:48:20.549Z",
|
|
30699
|
-
"size": 12552,
|
|
30700
|
-
"path": "../public/_nuxt/eb-garamond-greek-400-normal.d4JlP2QH.woff"
|
|
30701
|
-
},
|
|
30702
|
-
"/_nuxt/eb-garamond-greek-ext-400-normal.K8pwR3tn.woff2": {
|
|
30984
|
+
"/_nuxt/eb-garamond-greek-ext-400-italic.CHZOQEtG.woff2": {
|
|
30703
30985
|
"type": "font/woff2",
|
|
30704
|
-
"etag": "\"
|
|
30705
|
-
"mtime": "2026-09-
|
|
30706
|
-
"size":
|
|
30707
|
-
"path": "../public/_nuxt/eb-garamond-greek-ext-400-
|
|
30986
|
+
"etag": "\"19d0-ppOK6AfNTXYuDEeeEMQQhOypGW8\"",
|
|
30987
|
+
"mtime": "2026-09-06T06:27:43.482Z",
|
|
30988
|
+
"size": 6608,
|
|
30989
|
+
"path": "../public/_nuxt/eb-garamond-greek-ext-400-italic.CHZOQEtG.woff2"
|
|
30708
30990
|
},
|
|
30709
30991
|
"/_nuxt/eb-garamond-greek-ext-400-normal.BaZl8BIK.woff": {
|
|
30710
30992
|
"type": "font/woff",
|
|
30711
30993
|
"etag": "\"20b0-FNV/ZgjupejIrGOsz4+8EYVUXHo\"",
|
|
30712
|
-
"mtime": "2026-09-
|
|
30994
|
+
"mtime": "2026-09-06T06:27:43.482Z",
|
|
30713
30995
|
"size": 8368,
|
|
30714
30996
|
"path": "../public/_nuxt/eb-garamond-greek-ext-400-normal.BaZl8BIK.woff"
|
|
30715
30997
|
},
|
|
30998
|
+
"/_nuxt/eb-garamond-greek-ext-400-normal.K8pwR3tn.woff2": {
|
|
30999
|
+
"type": "font/woff2",
|
|
31000
|
+
"etag": "\"1940-Y3hsqG2RXMGI9hHTiI+Nv2Q4msM\"",
|
|
31001
|
+
"mtime": "2026-09-06T06:27:43.482Z",
|
|
31002
|
+
"size": 6464,
|
|
31003
|
+
"path": "../public/_nuxt/eb-garamond-greek-ext-400-normal.K8pwR3tn.woff2"
|
|
31004
|
+
},
|
|
30716
31005
|
"/_nuxt/eb-garamond-latin-400-italic.CDFyLPXJ.woff": {
|
|
30717
31006
|
"type": "font/woff",
|
|
30718
31007
|
"etag": "\"7890-VX8YYh09367bg28IWSUybEXrsDQ\"",
|
|
30719
|
-
"mtime": "2026-09-
|
|
31008
|
+
"mtime": "2026-09-06T06:27:43.482Z",
|
|
30720
31009
|
"size": 30864,
|
|
30721
31010
|
"path": "../public/_nuxt/eb-garamond-latin-400-italic.CDFyLPXJ.woff"
|
|
30722
31011
|
},
|
|
30723
31012
|
"/_nuxt/eb-garamond-latin-400-italic.DSEbMgZu.woff2": {
|
|
30724
31013
|
"type": "font/woff2",
|
|
30725
31014
|
"etag": "\"632c-iB8RNlBCm9D0APLcMJ/hIPATx+0\"",
|
|
30726
|
-
"mtime": "2026-09-
|
|
31015
|
+
"mtime": "2026-09-06T06:27:43.483Z",
|
|
30727
31016
|
"size": 25388,
|
|
30728
31017
|
"path": "../public/_nuxt/eb-garamond-latin-400-italic.DSEbMgZu.woff2"
|
|
30729
31018
|
},
|
|
30730
31019
|
"/_nuxt/eb-garamond-latin-400-normal.BCNrxLz_.woff2": {
|
|
30731
31020
|
"type": "font/woff2",
|
|
30732
31021
|
"etag": "\"5d0c-w7FmIa34l5RBoJYmvp9lwadEvW4\"",
|
|
30733
|
-
"mtime": "2026-09-
|
|
31022
|
+
"mtime": "2026-09-06T06:27:43.483Z",
|
|
30734
31023
|
"size": 23820,
|
|
30735
31024
|
"path": "../public/_nuxt/eb-garamond-latin-400-normal.BCNrxLz_.woff2"
|
|
30736
31025
|
},
|
|
30737
31026
|
"/_nuxt/eb-garamond-latin-400-normal.maQnHeKB.woff": {
|
|
30738
31027
|
"type": "font/woff",
|
|
30739
31028
|
"etag": "\"6fc0-tKFcVMt7ocp7dmWyG6/kxtP5mKY\"",
|
|
30740
|
-
"mtime": "2026-09-
|
|
31029
|
+
"mtime": "2026-09-06T06:27:43.483Z",
|
|
30741
31030
|
"size": 28608,
|
|
30742
31031
|
"path": "../public/_nuxt/eb-garamond-latin-400-normal.maQnHeKB.woff"
|
|
30743
31032
|
},
|
|
30744
|
-
"/_nuxt/eb-garamond-latin-ext-400-italic.DUSsnRSD.woff": {
|
|
30745
|
-
"type": "font/woff",
|
|
30746
|
-
"etag": "\"f5b8-o98RIl4uKzIPJHZZpEI+mI17K3c\"",
|
|
30747
|
-
"mtime": "2026-09-05T18:48:20.550Z",
|
|
30748
|
-
"size": 62904,
|
|
30749
|
-
"path": "../public/_nuxt/eb-garamond-latin-ext-400-italic.DUSsnRSD.woff"
|
|
30750
|
-
},
|
|
30751
31033
|
"/_nuxt/eb-garamond-latin-ext-400-italic.V7s3nWfX.woff2": {
|
|
30752
31034
|
"type": "font/woff2",
|
|
30753
31035
|
"etag": "\"b19c-7qms9anmdJJsBixQTHSocgV31Qk\"",
|
|
30754
|
-
"mtime": "2026-09-
|
|
31036
|
+
"mtime": "2026-09-06T06:27:43.483Z",
|
|
30755
31037
|
"size": 45468,
|
|
30756
31038
|
"path": "../public/_nuxt/eb-garamond-latin-ext-400-italic.V7s3nWfX.woff2"
|
|
30757
31039
|
},
|
|
30758
|
-
"/_nuxt/eb-garamond-
|
|
31040
|
+
"/_nuxt/eb-garamond-latin-ext-400-italic.DUSsnRSD.woff": {
|
|
30759
31041
|
"type": "font/woff",
|
|
30760
|
-
"etag": "\"
|
|
30761
|
-
"mtime": "2026-09-
|
|
30762
|
-
"size":
|
|
30763
|
-
"path": "../public/_nuxt/eb-garamond-
|
|
31042
|
+
"etag": "\"f5b8-o98RIl4uKzIPJHZZpEI+mI17K3c\"",
|
|
31043
|
+
"mtime": "2026-09-06T06:27:43.483Z",
|
|
31044
|
+
"size": 62904,
|
|
31045
|
+
"path": "../public/_nuxt/eb-garamond-latin-ext-400-italic.DUSsnRSD.woff"
|
|
30764
31046
|
},
|
|
30765
31047
|
"/_nuxt/eb-garamond-latin-ext-400-normal.B4EmgUmt.woff": {
|
|
30766
31048
|
"type": "font/woff",
|
|
30767
31049
|
"etag": "\"12b44-jg/K3aZca4XOngCAf1Jh47/0cj8\"",
|
|
30768
|
-
"mtime": "2026-09-
|
|
31050
|
+
"mtime": "2026-09-06T06:27:43.484Z",
|
|
30769
31051
|
"size": 76612,
|
|
30770
31052
|
"path": "../public/_nuxt/eb-garamond-latin-ext-400-normal.B4EmgUmt.woff"
|
|
30771
31053
|
},
|
|
30772
31054
|
"/_nuxt/eb-garamond-latin-ext-400-normal.o4A__6QZ.woff2": {
|
|
30773
31055
|
"type": "font/woff2",
|
|
30774
31056
|
"etag": "\"de84-qKZ/sgxlZLRv1TmEnWR30Cc4wfw\"",
|
|
30775
|
-
"mtime": "2026-09-
|
|
31057
|
+
"mtime": "2026-09-06T06:27:43.484Z",
|
|
30776
31058
|
"size": 56964,
|
|
30777
31059
|
"path": "../public/_nuxt/eb-garamond-latin-ext-400-normal.o4A__6QZ.woff2"
|
|
30778
31060
|
},
|
|
30779
31061
|
"/_nuxt/eb-garamond-vietnamese-400-normal.CLvJdMEL.woff2": {
|
|
30780
31062
|
"type": "font/woff2",
|
|
30781
31063
|
"etag": "\"183c-arAHcc3MmJQ6+OtYVThlERUqDQQ\"",
|
|
30782
|
-
"mtime": "2026-09-
|
|
31064
|
+
"mtime": "2026-09-06T06:27:43.485Z",
|
|
30783
31065
|
"size": 6204,
|
|
30784
31066
|
"path": "../public/_nuxt/eb-garamond-vietnamese-400-normal.CLvJdMEL.woff2"
|
|
30785
31067
|
},
|
|
30786
31068
|
"/_nuxt/eb-garamond-vietnamese-400-italic.DQ8HKnks.woff2": {
|
|
30787
31069
|
"type": "font/woff2",
|
|
30788
31070
|
"etag": "\"187c-Wj36AOh9OjwDZT5W3eeao1D/NT4\"",
|
|
30789
|
-
"mtime": "2026-09-
|
|
31071
|
+
"mtime": "2026-09-06T06:27:43.484Z",
|
|
30790
31072
|
"size": 6268,
|
|
30791
31073
|
"path": "../public/_nuxt/eb-garamond-vietnamese-400-italic.DQ8HKnks.woff2"
|
|
30792
31074
|
},
|
|
31075
|
+
"/_nuxt/eb-garamond-vietnamese-400-italic.ORtyMVfw.woff": {
|
|
31076
|
+
"type": "font/woff",
|
|
31077
|
+
"etag": "\"1edc-XUugZ4qMSSF4m+TQLER2LLza1t0\"",
|
|
31078
|
+
"mtime": "2026-09-06T06:27:43.484Z",
|
|
31079
|
+
"size": 7900,
|
|
31080
|
+
"path": "../public/_nuxt/eb-garamond-vietnamese-400-italic.ORtyMVfw.woff"
|
|
31081
|
+
},
|
|
30793
31082
|
"/_nuxt/eb-garamond-vietnamese-400-normal.ifvNSiWx.woff": {
|
|
30794
31083
|
"type": "font/woff",
|
|
30795
31084
|
"etag": "\"1e50-PGVIQbsmhTvI1h5aIhavpIQl8z4\"",
|
|
30796
|
-
"mtime": "2026-09-
|
|
31085
|
+
"mtime": "2026-09-06T06:27:43.485Z",
|
|
30797
31086
|
"size": 7760,
|
|
30798
31087
|
"path": "../public/_nuxt/eb-garamond-vietnamese-400-normal.ifvNSiWx.woff"
|
|
30799
31088
|
},
|
|
31089
|
+
"/_nuxt/eHYnGew0.js": {
|
|
31090
|
+
"type": "text/javascript; charset=utf-8",
|
|
31091
|
+
"etag": "\"f919-Mna7yicjedSnPxQ5bWRqIqFwv4Y\"",
|
|
31092
|
+
"mtime": "2026-09-06T06:27:43.475Z",
|
|
31093
|
+
"size": 63769,
|
|
31094
|
+
"path": "../public/_nuxt/eHYnGew0.js"
|
|
31095
|
+
},
|
|
31096
|
+
"/_nuxt/eUGyJdiT.js": {
|
|
31097
|
+
"type": "text/javascript; charset=utf-8",
|
|
31098
|
+
"etag": "\"20aa-Rif3v+aNt91q54e4MLGobwnuKbg\"",
|
|
31099
|
+
"mtime": "2026-09-06T06:27:43.475Z",
|
|
31100
|
+
"size": 8362,
|
|
31101
|
+
"path": "../public/_nuxt/eUGyJdiT.js"
|
|
31102
|
+
},
|
|
31103
|
+
"/_nuxt/entry.B03HBJGC.css": {
|
|
31104
|
+
"type": "text/css; charset=utf-8",
|
|
31105
|
+
"etag": "\"1c055-65ofZQx2xN6gZDfaEowRXq+oi4c\"",
|
|
31106
|
+
"mtime": "2026-09-06T06:27:43.485Z",
|
|
31107
|
+
"size": 114773,
|
|
31108
|
+
"path": "../public/_nuxt/entry.B03HBJGC.css"
|
|
31109
|
+
},
|
|
30800
31110
|
"/_nuxt/G0qIw7Gq2.js": {
|
|
30801
31111
|
"type": "text/javascript; charset=utf-8",
|
|
30802
31112
|
"etag": "\"462-s/N+VoJiDplj3GORHgaIwAR+Uqk\"",
|
|
30803
|
-
"mtime": "2026-09-
|
|
31113
|
+
"mtime": "2026-09-06T06:27:43.472Z",
|
|
30804
31114
|
"size": 1122,
|
|
30805
31115
|
"path": "../public/_nuxt/G0qIw7Gq2.js"
|
|
30806
31116
|
},
|
|
30807
31117
|
"/_nuxt/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2": {
|
|
30808
31118
|
"type": "font/woff2",
|
|
30809
31119
|
"etag": "\"1cfc-yYSDXNlt/tTRaj6rJo8ZMqvY7pQ\"",
|
|
30810
|
-
"mtime": "2026-09-
|
|
31120
|
+
"mtime": "2026-09-06T06:27:43.485Z",
|
|
30811
31121
|
"size": 7420,
|
|
30812
31122
|
"path": "../public/_nuxt/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2"
|
|
30813
31123
|
},
|
|
30814
31124
|
"/_nuxt/geist-cyrillic-wght-normal.BEAKL7Jp.woff2": {
|
|
30815
31125
|
"type": "font/woff2",
|
|
30816
31126
|
"etag": "\"3aec-5kpQSZEtAzzU5kdiuro3Zr2YR54\"",
|
|
30817
|
-
"mtime": "2026-09-
|
|
31127
|
+
"mtime": "2026-09-06T06:27:43.485Z",
|
|
30818
31128
|
"size": 15084,
|
|
30819
31129
|
"path": "../public/_nuxt/geist-cyrillic-wght-normal.BEAKL7Jp.woff2"
|
|
30820
31130
|
},
|
|
30821
31131
|
"/_nuxt/geist-latin-ext-wght-normal.DC-KSUi6.woff2": {
|
|
30822
31132
|
"type": "font/woff2",
|
|
30823
31133
|
"etag": "\"4080-mZu3Z7sOWqglha+kefNbUA9Pp+Q\"",
|
|
30824
|
-
"mtime": "2026-09-
|
|
31134
|
+
"mtime": "2026-09-06T06:27:43.485Z",
|
|
30825
31135
|
"size": 16512,
|
|
30826
31136
|
"path": "../public/_nuxt/geist-latin-ext-wght-normal.DC-KSUi6.woff2"
|
|
30827
31137
|
},
|
|
30828
|
-
"/_nuxt/entry.5qf6EqfN.css": {
|
|
30829
|
-
"type": "text/css; charset=utf-8",
|
|
30830
|
-
"etag": "\"1bd29-YrzLBKwAnzQB0oErHEF/vGIWjcY\"",
|
|
30831
|
-
"mtime": "2026-09-05T18:48:20.552Z",
|
|
30832
|
-
"size": 113961,
|
|
30833
|
-
"path": "../public/_nuxt/entry.5qf6EqfN.css"
|
|
30834
|
-
},
|
|
30835
31138
|
"/_nuxt/geist-latin-wght-normal.BgDaEnEv.woff2": {
|
|
30836
31139
|
"type": "font/woff2",
|
|
30837
31140
|
"etag": "\"72d8-9J+D7/6th5UzRxIgoFX9awJv47A\"",
|
|
30838
|
-
"mtime": "2026-09-
|
|
31141
|
+
"mtime": "2026-09-06T06:27:43.485Z",
|
|
30839
31142
|
"size": 29400,
|
|
30840
31143
|
"path": "../public/_nuxt/geist-latin-wght-normal.BgDaEnEv.woff2"
|
|
30841
31144
|
},
|
|
30842
|
-
"/_nuxt/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2": {
|
|
30843
|
-
"type": "font/woff2",
|
|
30844
|
-
"etag": "\"328c-3kQUs7xjzfvJdLvI58iU6DHlynA\"",
|
|
30845
|
-
"mtime": "2026-09-05T18:48:20.552Z",
|
|
30846
|
-
"size": 12940,
|
|
30847
|
-
"path": "../public/_nuxt/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2"
|
|
30848
|
-
},
|
|
30849
31145
|
"/_nuxt/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2": {
|
|
30850
31146
|
"type": "font/woff2",
|
|
30851
31147
|
"etag": "\"1820-nQACIwCsmkduQK2CSMidMhmLR9U\"",
|
|
30852
|
-
"mtime": "2026-09-
|
|
31148
|
+
"mtime": "2026-09-06T06:27:43.485Z",
|
|
30853
31149
|
"size": 6176,
|
|
30854
31150
|
"path": "../public/_nuxt/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2"
|
|
30855
31151
|
},
|
|
30856
|
-
"/_nuxt/geist-mono-
|
|
31152
|
+
"/_nuxt/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2": {
|
|
30857
31153
|
"type": "font/woff2",
|
|
30858
|
-
"etag": "\"
|
|
30859
|
-
"mtime": "2026-09-
|
|
30860
|
-
"size":
|
|
30861
|
-
"path": "../public/_nuxt/geist-mono-
|
|
31154
|
+
"etag": "\"328c-3kQUs7xjzfvJdLvI58iU6DHlynA\"",
|
|
31155
|
+
"mtime": "2026-09-06T06:27:43.486Z",
|
|
31156
|
+
"size": 12940,
|
|
31157
|
+
"path": "../public/_nuxt/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2"
|
|
31158
|
+
},
|
|
31159
|
+
"/_nuxt/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2": {
|
|
31160
|
+
"type": "font/woff2",
|
|
31161
|
+
"etag": "\"3968-BV9ZbqWHVAcipAKX5y8la3JkUQs\"",
|
|
31162
|
+
"mtime": "2026-09-06T06:27:43.486Z",
|
|
31163
|
+
"size": 14696,
|
|
31164
|
+
"path": "../public/_nuxt/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2"
|
|
30862
31165
|
},
|
|
30863
31166
|
"/_nuxt/geist-mono-latin-wght-normal.XN7g48iV.woff2": {
|
|
30864
31167
|
"type": "font/woff2",
|
|
30865
31168
|
"etag": "\"5a58-jDy+14PX7OhwqFZsiKzuRax9xZ8\"",
|
|
30866
|
-
"mtime": "2026-09-
|
|
31169
|
+
"mtime": "2026-09-06T06:27:43.486Z",
|
|
30867
31170
|
"size": 23128,
|
|
30868
31171
|
"path": "../public/_nuxt/geist-mono-latin-wght-normal.XN7g48iV.woff2"
|
|
30869
31172
|
},
|
|
30870
|
-
"/_nuxt/geist-mono-
|
|
31173
|
+
"/_nuxt/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2": {
|
|
30871
31174
|
"type": "font/woff2",
|
|
30872
|
-
"etag": "\"
|
|
30873
|
-
"mtime": "2026-09-
|
|
30874
|
-
"size":
|
|
30875
|
-
"path": "../public/_nuxt/geist-mono-
|
|
31175
|
+
"etag": "\"16b4-aZoLOGWoEYW7gmwZamfz5kTfFco\"",
|
|
31176
|
+
"mtime": "2026-09-06T06:27:43.487Z",
|
|
31177
|
+
"size": 5812,
|
|
31178
|
+
"path": "../public/_nuxt/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2"
|
|
30876
31179
|
},
|
|
30877
31180
|
"/_nuxt/geist-mono-vietnamese-wght-normal.DadHysG0.woff2": {
|
|
30878
31181
|
"type": "font/woff2",
|
|
30879
31182
|
"etag": "\"1e10-mpU2OlFk4DakDO4paRfgJ2LHDsM\"",
|
|
30880
|
-
"mtime": "2026-09-
|
|
31183
|
+
"mtime": "2026-09-06T06:27:43.487Z",
|
|
30881
31184
|
"size": 7696,
|
|
30882
31185
|
"path": "../public/_nuxt/geist-mono-vietnamese-wght-normal.DadHysG0.woff2"
|
|
30883
31186
|
},
|
|
30884
31187
|
"/_nuxt/geist-vietnamese-wght-normal.6IgcOCM7.woff2": {
|
|
30885
31188
|
"type": "font/woff2",
|
|
30886
31189
|
"etag": "\"1f44-6MZ7/PEEOeDVF0eHI650KpwKQV8\"",
|
|
30887
|
-
"mtime": "2026-09-
|
|
31190
|
+
"mtime": "2026-09-06T06:27:43.487Z",
|
|
30888
31191
|
"size": 8004,
|
|
30889
31192
|
"path": "../public/_nuxt/geist-vietnamese-wght-normal.6IgcOCM7.woff2"
|
|
30890
31193
|
},
|
|
30891
31194
|
"/_nuxt/HclGiUj8.js": {
|
|
30892
31195
|
"type": "text/javascript; charset=utf-8",
|
|
30893
31196
|
"etag": "\"4bb-OjUbx7m0dPDFUkNfZ4BuUs+1sHI\"",
|
|
30894
|
-
"mtime": "2026-09-
|
|
31197
|
+
"mtime": "2026-09-06T06:27:43.473Z",
|
|
30895
31198
|
"size": 1211,
|
|
30896
31199
|
"path": "../public/_nuxt/HclGiUj8.js"
|
|
30897
31200
|
},
|
|
30898
|
-
"/_nuxt/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff": {
|
|
30899
|
-
"type": "font/woff",
|
|
30900
|
-
"etag": "\"1c24-wpeoT2YBcqJ4hbipsoiB1m58w98\"",
|
|
30901
|
-
"mtime": "2026-09-05T18:48:20.553Z",
|
|
30902
|
-
"size": 7204,
|
|
30903
|
-
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff"
|
|
30904
|
-
},
|
|
30905
31201
|
"/_nuxt/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2": {
|
|
30906
31202
|
"type": "font/woff2",
|
|
30907
31203
|
"etag": "\"20a4-mDbzFbXDuciYuRDdYbcJkcocaWU\"",
|
|
30908
|
-
"mtime": "2026-09-
|
|
31204
|
+
"mtime": "2026-09-06T06:27:43.487Z",
|
|
30909
31205
|
"size": 8356,
|
|
30910
31206
|
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2"
|
|
30911
31207
|
},
|
|
31208
|
+
"/_nuxt/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff": {
|
|
31209
|
+
"type": "font/woff",
|
|
31210
|
+
"etag": "\"1c24-wpeoT2YBcqJ4hbipsoiB1m58w98\"",
|
|
31211
|
+
"mtime": "2026-09-06T06:27:43.487Z",
|
|
31212
|
+
"size": 7204,
|
|
31213
|
+
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff"
|
|
31214
|
+
},
|
|
30912
31215
|
"/_nuxt/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff": {
|
|
30913
31216
|
"type": "font/woff",
|
|
30914
31217
|
"etag": "\"1c28-50yap58S0sLYRB2B8AEk2dq82kg\"",
|
|
30915
|
-
"mtime": "2026-09-
|
|
31218
|
+
"mtime": "2026-09-06T06:27:43.488Z",
|
|
30916
31219
|
"size": 7208,
|
|
30917
31220
|
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff"
|
|
30918
31221
|
},
|
|
31222
|
+
"/_nuxt/ibm-plex-mono-cyrillic-600-normal.CTOM6hUh.woff2": {
|
|
31223
|
+
"type": "font/woff2",
|
|
31224
|
+
"etag": "\"2488-WHfw+ZaOHy8HhYaV0AzfKZ8dozA\"",
|
|
31225
|
+
"mtime": "2026-09-06T06:27:43.488Z",
|
|
31226
|
+
"size": 9352,
|
|
31227
|
+
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-600-normal.CTOM6hUh.woff2"
|
|
31228
|
+
},
|
|
30919
31229
|
"/_nuxt/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2": {
|
|
30920
31230
|
"type": "font/woff2",
|
|
30921
31231
|
"etag": "\"210c-yqAnW+098RkHUvQzwj27Jo9sIUc\"",
|
|
30922
|
-
"mtime": "2026-09-
|
|
31232
|
+
"mtime": "2026-09-06T06:27:43.488Z",
|
|
30923
31233
|
"size": 8460,
|
|
30924
31234
|
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2"
|
|
30925
31235
|
},
|
|
30926
|
-
"/_nuxt/ibm-plex-mono-cyrillic-600-normal.
|
|
30927
|
-
"type": "font/
|
|
30928
|
-
"etag": "\"
|
|
30929
|
-
"mtime": "2026-09-
|
|
30930
|
-
"size":
|
|
30931
|
-
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-600-normal.
|
|
31236
|
+
"/_nuxt/ibm-plex-mono-cyrillic-600-normal.fLZuRloM.woff": {
|
|
31237
|
+
"type": "font/woff",
|
|
31238
|
+
"etag": "\"1c64-t3eBraFEv1B6D+DIfK23+8/F2mA\"",
|
|
31239
|
+
"mtime": "2026-09-06T06:27:43.488Z",
|
|
31240
|
+
"size": 7268,
|
|
31241
|
+
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-600-normal.fLZuRloM.woff"
|
|
30932
31242
|
},
|
|
30933
31243
|
"/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff": {
|
|
30934
31244
|
"type": "font/woff",
|
|
30935
31245
|
"etag": "\"16bc-GBHBT1lClOFRLkxzjkkoZV1QN+Y\"",
|
|
30936
|
-
"mtime": "2026-09-
|
|
31246
|
+
"mtime": "2026-09-06T06:27:43.488Z",
|
|
30937
31247
|
"size": 5820,
|
|
30938
31248
|
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff"
|
|
30939
31249
|
},
|
|
30940
31250
|
"/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2": {
|
|
30941
31251
|
"type": "font/woff2",
|
|
30942
31252
|
"etag": "\"1b00-w57wcK5m30ZZ4sBwsaWzlcI3F7c\"",
|
|
30943
|
-
"mtime": "2026-09-
|
|
31253
|
+
"mtime": "2026-09-06T06:27:43.488Z",
|
|
30944
31254
|
"size": 6912,
|
|
30945
31255
|
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2"
|
|
30946
31256
|
},
|
|
30947
|
-
"/_nuxt/ibm-plex-mono-cyrillic-600-normal.fLZuRloM.woff": {
|
|
30948
|
-
"type": "font/woff",
|
|
30949
|
-
"etag": "\"1c64-t3eBraFEv1B6D+DIfK23+8/F2mA\"",
|
|
30950
|
-
"mtime": "2026-09-05T18:48:20.554Z",
|
|
30951
|
-
"size": 7268,
|
|
30952
|
-
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-600-normal.fLZuRloM.woff"
|
|
30953
|
-
},
|
|
30954
31257
|
"/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff": {
|
|
30955
31258
|
"type": "font/woff",
|
|
30956
31259
|
"etag": "\"168c-gvDCX7ATl9g9LbPEKlQjJSXhRPw\"",
|
|
30957
|
-
"mtime": "2026-09-
|
|
31260
|
+
"mtime": "2026-09-06T06:27:43.488Z",
|
|
30958
31261
|
"size": 5772,
|
|
30959
31262
|
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff"
|
|
30960
31263
|
},
|
|
31264
|
+
"/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2": {
|
|
31265
|
+
"type": "font/woff2",
|
|
31266
|
+
"etag": "\"1b3c-pFin0Xk9XlGLhqdo1+npFJkyQ5Y\"",
|
|
31267
|
+
"mtime": "2026-09-06T06:27:43.489Z",
|
|
31268
|
+
"size": 6972,
|
|
31269
|
+
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2"
|
|
31270
|
+
},
|
|
30961
31271
|
"/_nuxt/ibm-plex-mono-cyrillic-ext-600-normal.9HEixskS.woff": {
|
|
30962
31272
|
"type": "font/woff",
|
|
30963
31273
|
"etag": "\"16a0-8RgtlGopOkBt2P4jKMMd7hk+D74\"",
|
|
30964
|
-
"mtime": "2026-09-
|
|
31274
|
+
"mtime": "2026-09-06T06:27:43.489Z",
|
|
30965
31275
|
"size": 5792,
|
|
30966
31276
|
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-600-normal.9HEixskS.woff"
|
|
30967
31277
|
},
|
|
30968
31278
|
"/_nuxt/ibm-plex-mono-cyrillic-ext-600-normal.V-xxqcpd.woff2": {
|
|
30969
31279
|
"type": "font/woff2",
|
|
30970
31280
|
"etag": "\"1e0c-R9/TBUX2qLWGlHeC55LoggyLdII\"",
|
|
30971
|
-
"mtime": "2026-09-
|
|
31281
|
+
"mtime": "2026-09-06T06:27:43.489Z",
|
|
30972
31282
|
"size": 7692,
|
|
30973
31283
|
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-600-normal.V-xxqcpd.woff2"
|
|
30974
31284
|
},
|
|
30975
|
-
"/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2": {
|
|
30976
|
-
"type": "font/woff2",
|
|
30977
|
-
"etag": "\"1b3c-pFin0Xk9XlGLhqdo1+npFJkyQ5Y\"",
|
|
30978
|
-
"mtime": "2026-09-05T18:48:20.554Z",
|
|
30979
|
-
"size": 6972,
|
|
30980
|
-
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2"
|
|
30981
|
-
},
|
|
30982
|
-
"/_nuxt/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2": {
|
|
30983
|
-
"type": "font/woff2",
|
|
30984
|
-
"etag": "\"3a28-0y8OBwGsYgQ4QBMagAznF6huTuI\"",
|
|
30985
|
-
"mtime": "2026-09-05T18:48:20.555Z",
|
|
30986
|
-
"size": 14888,
|
|
30987
|
-
"path": "../public/_nuxt/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2"
|
|
30988
|
-
},
|
|
30989
31285
|
"/_nuxt/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff": {
|
|
30990
31286
|
"type": "font/woff",
|
|
30991
31287
|
"etag": "\"3358-rWMSbc9cch7FBErQpfnWcshAYFM\"",
|
|
30992
|
-
"mtime": "2026-09-
|
|
31288
|
+
"mtime": "2026-09-06T06:27:43.489Z",
|
|
30993
31289
|
"size": 13144,
|
|
30994
31290
|
"path": "../public/_nuxt/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff"
|
|
30995
31291
|
},
|
|
31292
|
+
"/_nuxt/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff": {
|
|
31293
|
+
"type": "font/woff",
|
|
31294
|
+
"etag": "\"3364-S8wip5no4QO46BFh3FPzQKpIOec\"",
|
|
31295
|
+
"mtime": "2026-09-06T06:27:43.489Z",
|
|
31296
|
+
"size": 13156,
|
|
31297
|
+
"path": "../public/_nuxt/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff"
|
|
31298
|
+
},
|
|
30996
31299
|
"/_nuxt/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2": {
|
|
30997
31300
|
"type": "font/woff2",
|
|
30998
31301
|
"etag": "\"3974-u4dQDjIEo6fGXWYzx5xchAw76NM\"",
|
|
30999
|
-
"mtime": "2026-09-
|
|
31302
|
+
"mtime": "2026-09-06T06:27:43.489Z",
|
|
31000
31303
|
"size": 14708,
|
|
31001
31304
|
"path": "../public/_nuxt/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2"
|
|
31002
31305
|
},
|
|
31306
|
+
"/_nuxt/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2": {
|
|
31307
|
+
"type": "font/woff2",
|
|
31308
|
+
"etag": "\"3a28-0y8OBwGsYgQ4QBMagAznF6huTuI\"",
|
|
31309
|
+
"mtime": "2026-09-06T06:27:43.490Z",
|
|
31310
|
+
"size": 14888,
|
|
31311
|
+
"path": "../public/_nuxt/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2"
|
|
31312
|
+
},
|
|
31003
31313
|
"/_nuxt/ibm-plex-mono-latin-600-normal.BgSNZQsw.woff2": {
|
|
31004
31314
|
"type": "font/woff2",
|
|
31005
31315
|
"etag": "\"3d04-zppco6h02pIBwmMMXLe/qpaIwFI\"",
|
|
31006
|
-
"mtime": "2026-09-
|
|
31316
|
+
"mtime": "2026-09-06T06:27:43.490Z",
|
|
31007
31317
|
"size": 15620,
|
|
31008
31318
|
"path": "../public/_nuxt/ibm-plex-mono-latin-600-normal.BgSNZQsw.woff2"
|
|
31009
31319
|
},
|
|
31010
|
-
"/_nuxt/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff": {
|
|
31011
|
-
"type": "font/woff",
|
|
31012
|
-
"etag": "\"3364-S8wip5no4QO46BFh3FPzQKpIOec\"",
|
|
31013
|
-
"mtime": "2026-09-05T18:48:20.555Z",
|
|
31014
|
-
"size": 13156,
|
|
31015
|
-
"path": "../public/_nuxt/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff"
|
|
31016
|
-
},
|
|
31017
31320
|
"/_nuxt/ibm-plex-mono-latin-600-normal.DWFSQ4vo.woff": {
|
|
31018
31321
|
"type": "font/woff",
|
|
31019
31322
|
"etag": "\"3398-D/GHpHo4zls8HLHH2boKeigB6S4\"",
|
|
31020
|
-
"mtime": "2026-09-
|
|
31323
|
+
"mtime": "2026-09-06T06:27:43.490Z",
|
|
31021
31324
|
"size": 13208,
|
|
31022
31325
|
"path": "../public/_nuxt/ibm-plex-mono-latin-600-normal.DWFSQ4vo.woff"
|
|
31023
31326
|
},
|
|
31024
31327
|
"/_nuxt/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2": {
|
|
31025
31328
|
"type": "font/woff2",
|
|
31026
31329
|
"etag": "\"3424-SvjO9SK9iRLLL61B4GuQJWQP62I\"",
|
|
31027
|
-
"mtime": "2026-09-
|
|
31330
|
+
"mtime": "2026-09-06T06:27:43.491Z",
|
|
31028
31331
|
"size": 13348,
|
|
31029
31332
|
"path": "../public/_nuxt/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2"
|
|
31030
31333
|
},
|
|
31031
|
-
"/_nuxt/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff": {
|
|
31032
|
-
"type": "font/woff",
|
|
31033
|
-
"etag": "\"2df8-dfJwTWMZxHyGnUuJDGfpU4w2dLs\"",
|
|
31034
|
-
"mtime": "2026-09-05T18:48:20.556Z",
|
|
31035
|
-
"size": 11768,
|
|
31036
|
-
"path": "../public/_nuxt/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff"
|
|
31037
|
-
},
|
|
31038
31334
|
"/_nuxt/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2": {
|
|
31039
31335
|
"type": "font/woff2",
|
|
31040
31336
|
"etag": "\"3478-PpQvQo59iHxPLcEUBhJfmFmCPuA\"",
|
|
31041
|
-
"mtime": "2026-09-
|
|
31337
|
+
"mtime": "2026-09-06T06:27:43.491Z",
|
|
31042
31338
|
"size": 13432,
|
|
31043
31339
|
"path": "../public/_nuxt/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2"
|
|
31044
31340
|
},
|
|
31341
|
+
"/_nuxt/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff": {
|
|
31342
|
+
"type": "font/woff",
|
|
31343
|
+
"etag": "\"2df8-dfJwTWMZxHyGnUuJDGfpU4w2dLs\"",
|
|
31344
|
+
"mtime": "2026-09-06T06:27:43.491Z",
|
|
31345
|
+
"size": 11768,
|
|
31346
|
+
"path": "../public/_nuxt/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff"
|
|
31347
|
+
},
|
|
31045
31348
|
"/_nuxt/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff": {
|
|
31046
31349
|
"type": "font/woff",
|
|
31047
31350
|
"etag": "\"2df8-73sb1BUyjMsq70ppsdZBHEqWrtE\"",
|
|
31048
|
-
"mtime": "2026-09-
|
|
31351
|
+
"mtime": "2026-09-06T06:27:43.491Z",
|
|
31049
31352
|
"size": 11768,
|
|
31050
31353
|
"path": "../public/_nuxt/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff"
|
|
31051
31354
|
},
|
|
31052
31355
|
"/_nuxt/ibm-plex-mono-latin-ext-600-normal.D38SheWl.woff2": {
|
|
31053
31356
|
"type": "font/woff2",
|
|
31054
31357
|
"etag": "\"37f8-5XYRqKuMO2rN5QZqfj4VW8r2jSQ\"",
|
|
31055
|
-
"mtime": "2026-09-
|
|
31358
|
+
"mtime": "2026-09-06T06:27:43.491Z",
|
|
31056
31359
|
"size": 14328,
|
|
31057
31360
|
"path": "../public/_nuxt/ibm-plex-mono-latin-ext-600-normal.D38SheWl.woff2"
|
|
31058
31361
|
},
|
|
31059
31362
|
"/_nuxt/ibm-plex-mono-latin-ext-600-normal.DmB0ttJJ.woff": {
|
|
31060
31363
|
"type": "font/woff",
|
|
31061
31364
|
"etag": "\"2e38-fOmVENNzEJaYqxODn6K5NAbrEJk\"",
|
|
31062
|
-
"mtime": "2026-09-
|
|
31365
|
+
"mtime": "2026-09-06T06:27:43.492Z",
|
|
31063
31366
|
"size": 11832,
|
|
31064
31367
|
"path": "../public/_nuxt/ibm-plex-mono-latin-ext-600-normal.DmB0ttJJ.woff"
|
|
31065
31368
|
},
|
|
31066
31369
|
"/_nuxt/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2": {
|
|
31067
31370
|
"type": "font/woff2",
|
|
31068
31371
|
"etag": "\"16ec-bIkS18/YaTiWdOzfzp4pFXvLmqQ\"",
|
|
31069
|
-
"mtime": "2026-09-
|
|
31372
|
+
"mtime": "2026-09-06T06:27:43.492Z",
|
|
31070
31373
|
"size": 5868,
|
|
31071
31374
|
"path": "../public/_nuxt/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2"
|
|
31072
31375
|
},
|
|
31073
|
-
"/_nuxt/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff": {
|
|
31074
|
-
"type": "font/woff",
|
|
31075
|
-
"etag": "\"15f0-mGuZIt/ndQFiw5uxmCOkhhWSxi4\"",
|
|
31076
|
-
"mtime": "2026-09-05T18:48:20.557Z",
|
|
31077
|
-
"size": 5616,
|
|
31078
|
-
"path": "../public/_nuxt/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff"
|
|
31079
|
-
},
|
|
31080
31376
|
"/_nuxt/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff": {
|
|
31081
31377
|
"type": "font/woff",
|
|
31082
31378
|
"etag": "\"15f4-LdRX2sBB3T5WDAsZLCwBlsMYXPw\"",
|
|
31083
|
-
"mtime": "2026-09-
|
|
31379
|
+
"mtime": "2026-09-06T06:27:43.492Z",
|
|
31084
31380
|
"size": 5620,
|
|
31085
31381
|
"path": "../public/_nuxt/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff"
|
|
31086
31382
|
},
|
|
31383
|
+
"/_nuxt/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff": {
|
|
31384
|
+
"type": "font/woff",
|
|
31385
|
+
"etag": "\"15f0-mGuZIt/ndQFiw5uxmCOkhhWSxi4\"",
|
|
31386
|
+
"mtime": "2026-09-06T06:27:43.493Z",
|
|
31387
|
+
"size": 5616,
|
|
31388
|
+
"path": "../public/_nuxt/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff"
|
|
31389
|
+
},
|
|
31087
31390
|
"/_nuxt/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2": {
|
|
31088
31391
|
"type": "font/woff2",
|
|
31089
31392
|
"etag": "\"1798-7VDjg0E2ggd9c0kJDHNRh+Fu5E0\"",
|
|
31090
|
-
"mtime": "2026-09-
|
|
31393
|
+
"mtime": "2026-09-06T06:27:43.493Z",
|
|
31091
31394
|
"size": 6040,
|
|
31092
31395
|
"path": "../public/_nuxt/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2"
|
|
31093
31396
|
},
|
|
31094
31397
|
"/_nuxt/ibm-plex-mono-vietnamese-600-normal.D2EvbN8M.woff2": {
|
|
31095
31398
|
"type": "font/woff2",
|
|
31096
31399
|
"etag": "\"1b14-ylPjcMKGVc4RbTi2G25N0MSlVNo\"",
|
|
31097
|
-
"mtime": "2026-09-
|
|
31400
|
+
"mtime": "2026-09-06T06:27:43.493Z",
|
|
31098
31401
|
"size": 6932,
|
|
31099
31402
|
"path": "../public/_nuxt/ibm-plex-mono-vietnamese-600-normal.D2EvbN8M.woff2"
|
|
31100
31403
|
},
|
|
31101
31404
|
"/_nuxt/ibm-plex-mono-vietnamese-600-normal.iLQfcSjf.woff": {
|
|
31102
31405
|
"type": "font/woff",
|
|
31103
31406
|
"etag": "\"1650-9Pko0qRZ+EoISmnDaTRQ8KRGy/s\"",
|
|
31104
|
-
"mtime": "2026-09-
|
|
31407
|
+
"mtime": "2026-09-06T06:27:43.493Z",
|
|
31105
31408
|
"size": 5712,
|
|
31106
31409
|
"path": "../public/_nuxt/ibm-plex-mono-vietnamese-600-normal.iLQfcSjf.woff"
|
|
31107
31410
|
},
|
|
31108
|
-
"/_nuxt/
|
|
31109
|
-
"type": "text/javascript; charset=utf-8",
|
|
31110
|
-
"etag": "\"e9-t0VKevMurw+ruGbCV/EgmcM2dww\"",
|
|
31111
|
-
"mtime": "2026-09-05T18:48:20.543Z",
|
|
31112
|
-
"size": 233,
|
|
31113
|
-
"path": "../public/_nuxt/kZl6yT-12.js"
|
|
31114
|
-
},
|
|
31115
|
-
"/_nuxt/kZV5TQvh2.js": {
|
|
31411
|
+
"/_nuxt/kkEthL84.js": {
|
|
31116
31412
|
"type": "text/javascript; charset=utf-8",
|
|
31117
|
-
"etag": "\"
|
|
31118
|
-
"mtime": "2026-09-
|
|
31119
|
-
"size":
|
|
31120
|
-
"path": "../public/_nuxt/
|
|
31413
|
+
"etag": "\"1c85b-rndZIGE/0sbN/dsGvCDYNjDmhrs\"",
|
|
31414
|
+
"mtime": "2026-09-06T06:27:43.475Z",
|
|
31415
|
+
"size": 116827,
|
|
31416
|
+
"path": "../public/_nuxt/kkEthL84.js"
|
|
31121
31417
|
},
|
|
31122
31418
|
"/_nuxt/lO5tpDZ5.js": {
|
|
31123
31419
|
"type": "text/javascript; charset=utf-8",
|
|
31124
31420
|
"etag": "\"3b-z4jypkmUW9c9v+AALQ28pDyJ80A\"",
|
|
31125
|
-
"mtime": "2026-09-
|
|
31421
|
+
"mtime": "2026-09-06T06:27:43.475Z",
|
|
31126
31422
|
"size": 59,
|
|
31127
31423
|
"path": "../public/_nuxt/lO5tpDZ5.js"
|
|
31128
31424
|
},
|
|
31425
|
+
"/_nuxt/kZl6yT-12.js": {
|
|
31426
|
+
"type": "text/javascript; charset=utf-8",
|
|
31427
|
+
"etag": "\"e9-t0VKevMurw+ruGbCV/EgmcM2dww\"",
|
|
31428
|
+
"mtime": "2026-09-06T06:27:43.475Z",
|
|
31429
|
+
"size": 233,
|
|
31430
|
+
"path": "../public/_nuxt/kZl6yT-12.js"
|
|
31431
|
+
},
|
|
31129
31432
|
"/_nuxt/logs.BO-BSyjm.css": {
|
|
31130
31433
|
"type": "text/css; charset=utf-8",
|
|
31131
31434
|
"etag": "\"1635-oLZsusF3NVkvz+WVroCfL6psPFE\"",
|
|
31132
|
-
"mtime": "2026-09-
|
|
31435
|
+
"mtime": "2026-09-06T06:27:43.493Z",
|
|
31133
31436
|
"size": 5685,
|
|
31134
31437
|
"path": "../public/_nuxt/logs.BO-BSyjm.css"
|
|
31135
31438
|
},
|
|
31439
|
+
"/_nuxt/kZV5TQvh2.js": {
|
|
31440
|
+
"type": "text/javascript; charset=utf-8",
|
|
31441
|
+
"etag": "\"b36-HJpEm4SThB06CEAVNx2ouDQlwFw\"",
|
|
31442
|
+
"mtime": "2026-09-06T06:27:43.475Z",
|
|
31443
|
+
"size": 2870,
|
|
31444
|
+
"path": "../public/_nuxt/kZV5TQvh2.js"
|
|
31445
|
+
},
|
|
31136
31446
|
"/_nuxt/monitor.CmwpEUCI.css": {
|
|
31137
31447
|
"type": "text/css; charset=utf-8",
|
|
31138
31448
|
"etag": "\"483-Lotbm40sJjjryRjOid43sPWucRw\"",
|
|
31139
|
-
"mtime": "2026-09-
|
|
31449
|
+
"mtime": "2026-09-06T06:27:43.494Z",
|
|
31140
31450
|
"size": 1155,
|
|
31141
31451
|
"path": "../public/_nuxt/monitor.CmwpEUCI.css"
|
|
31142
31452
|
},
|
|
31143
|
-
"/_nuxt/niDwBOZW.js": {
|
|
31144
|
-
"type": "text/javascript; charset=utf-8",
|
|
31145
|
-
"etag": "\"12f1-JlgzqHJQENBszEGLuO9fMyRYm/E\"",
|
|
31146
|
-
"mtime": "2026-09-05T18:48:20.544Z",
|
|
31147
|
-
"size": 4849,
|
|
31148
|
-
"path": "../public/_nuxt/niDwBOZW.js"
|
|
31149
|
-
},
|
|
31150
31453
|
"/_nuxt/OmpTerminalPanel.B_Pl5Ynm.css": {
|
|
31151
31454
|
"type": "text/css; charset=utf-8",
|
|
31152
31455
|
"etag": "\"10d0-uLyus3YRLFfRIoYhlKCERpGIwVE\"",
|
|
31153
|
-
"mtime": "2026-09-
|
|
31456
|
+
"mtime": "2026-09-06T06:27:43.477Z",
|
|
31154
31457
|
"size": 4304,
|
|
31155
31458
|
"path": "../public/_nuxt/OmpTerminalPanel.B_Pl5Ynm.css"
|
|
31156
31459
|
},
|
|
31157
|
-
"/_nuxt/
|
|
31460
|
+
"/_nuxt/niDwBOZW.js": {
|
|
31158
31461
|
"type": "text/javascript; charset=utf-8",
|
|
31159
|
-
"etag": "\"
|
|
31160
|
-
"mtime": "2026-09-
|
|
31161
|
-
"size":
|
|
31162
|
-
"path": "../public/_nuxt/
|
|
31462
|
+
"etag": "\"12f1-JlgzqHJQENBszEGLuO9fMyRYm/E\"",
|
|
31463
|
+
"mtime": "2026-09-06T06:27:43.475Z",
|
|
31464
|
+
"size": 4849,
|
|
31465
|
+
"path": "../public/_nuxt/niDwBOZW.js"
|
|
31163
31466
|
},
|
|
31164
31467
|
"/_nuxt/pages.CytEOfUs.css": {
|
|
31165
31468
|
"type": "text/css; charset=utf-8",
|
|
31166
31469
|
"etag": "\"1f78-Zc87Z5OhCuyS/CdNTE5IMJgqhH0\"",
|
|
31167
|
-
"mtime": "2026-09-
|
|
31470
|
+
"mtime": "2026-09-06T06:27:43.494Z",
|
|
31168
31471
|
"size": 8056,
|
|
31169
31472
|
"path": "../public/_nuxt/pages.CytEOfUs.css"
|
|
31170
31473
|
},
|
|
31171
|
-
"/_nuxt/
|
|
31474
|
+
"/_nuxt/ORt9oDIy2.js": {
|
|
31172
31475
|
"type": "text/javascript; charset=utf-8",
|
|
31173
|
-
"etag": "\"
|
|
31174
|
-
"mtime": "2026-09-
|
|
31175
|
-
"size":
|
|
31176
|
-
"path": "../public/_nuxt/
|
|
31476
|
+
"etag": "\"c42-g+2xQOk5SmNd8dk4LSqx7FrSVE0\"",
|
|
31477
|
+
"mtime": "2026-09-06T06:27:43.473Z",
|
|
31478
|
+
"size": 3138,
|
|
31479
|
+
"path": "../public/_nuxt/ORt9oDIy2.js"
|
|
31480
|
+
},
|
|
31481
|
+
"/_nuxt/permissions.CwZo6t1V.css": {
|
|
31482
|
+
"type": "text/css; charset=utf-8",
|
|
31483
|
+
"etag": "\"4c8-6pfdq+B3vLT8yShpEsjezRwI60k\"",
|
|
31484
|
+
"mtime": "2026-09-06T06:27:43.494Z",
|
|
31485
|
+
"size": 1224,
|
|
31486
|
+
"path": "../public/_nuxt/permissions.CwZo6t1V.css"
|
|
31177
31487
|
},
|
|
31178
|
-
"/_nuxt/
|
|
31488
|
+
"/_nuxt/QoCzfpo2.js": {
|
|
31179
31489
|
"type": "text/javascript; charset=utf-8",
|
|
31180
|
-
"etag": "\"
|
|
31181
|
-
"mtime": "2026-09-
|
|
31182
|
-
"size":
|
|
31183
|
-
"path": "../public/_nuxt/
|
|
31490
|
+
"etag": "\"22a4-SrGVCoHXHudcEctvNqU+aTlWgyg\"",
|
|
31491
|
+
"mtime": "2026-09-06T06:27:43.473Z",
|
|
31492
|
+
"size": 8868,
|
|
31493
|
+
"path": "../public/_nuxt/QoCzfpo2.js"
|
|
31184
31494
|
},
|
|
31185
31495
|
"/_nuxt/plugins.Clsky_kl.css": {
|
|
31186
31496
|
"type": "text/css; charset=utf-8",
|
|
31187
31497
|
"etag": "\"a22-6XqjlTw44n7uzNJ8R9pxD9C1f58\"",
|
|
31188
|
-
"mtime": "2026-09-
|
|
31498
|
+
"mtime": "2026-09-06T06:27:43.494Z",
|
|
31189
31499
|
"size": 2594,
|
|
31190
31500
|
"path": "../public/_nuxt/plugins.Clsky_kl.css"
|
|
31191
31501
|
},
|
|
31192
31502
|
"/_nuxt/rqZ-1SoP.js": {
|
|
31193
31503
|
"type": "text/javascript; charset=utf-8",
|
|
31194
31504
|
"etag": "\"761d-n3nYYQYIxdnAu9GaImKE7k1Xy7Y\"",
|
|
31195
|
-
"mtime": "2026-09-
|
|
31505
|
+
"mtime": "2026-09-06T06:27:43.476Z",
|
|
31196
31506
|
"size": 30237,
|
|
31197
31507
|
"path": "../public/_nuxt/rqZ-1SoP.js"
|
|
31198
31508
|
},
|
|
31199
|
-
"/_nuxt/settings.DeRNNUcP.css": {
|
|
31200
|
-
"type": "text/css; charset=utf-8",
|
|
31201
|
-
"etag": "\"14e1-E7dYiYwz16rJpF2sfkfQq3pGU1c\"",
|
|
31202
|
-
"mtime": "2026-09-05T18:48:20.559Z",
|
|
31203
|
-
"size": 5345,
|
|
31204
|
-
"path": "../public/_nuxt/settings.DeRNNUcP.css"
|
|
31205
|
-
},
|
|
31206
31509
|
"/_nuxt/RYFtK4qZ2.js": {
|
|
31207
31510
|
"type": "text/javascript; charset=utf-8",
|
|
31208
31511
|
"etag": "\"594c-ZHrAodAyz6fWAruZCqluWn052zA\"",
|
|
31209
|
-
"mtime": "2026-09-
|
|
31512
|
+
"mtime": "2026-09-06T06:27:43.473Z",
|
|
31210
31513
|
"size": 22860,
|
|
31211
31514
|
"path": "../public/_nuxt/RYFtK4qZ2.js"
|
|
31212
31515
|
},
|
|
31213
|
-
"/_nuxt/
|
|
31516
|
+
"/_nuxt/RzXYI9FM.js": {
|
|
31517
|
+
"type": "text/javascript; charset=utf-8",
|
|
31518
|
+
"etag": "\"9a6b-hWs9hqxsYAIn7EKAMQfiXbHC5bw\"",
|
|
31519
|
+
"mtime": "2026-09-06T06:27:43.474Z",
|
|
31520
|
+
"size": 39531,
|
|
31521
|
+
"path": "../public/_nuxt/RzXYI9FM.js"
|
|
31522
|
+
},
|
|
31523
|
+
"/_nuxt/settings.BqMF2nfj.css": {
|
|
31214
31524
|
"type": "text/css; charset=utf-8",
|
|
31215
|
-
"etag": "\"
|
|
31216
|
-
"mtime": "2026-09-
|
|
31217
|
-
"size":
|
|
31218
|
-
"path": "../public/_nuxt/
|
|
31525
|
+
"etag": "\"14e1-XjxEHtGImiK+UJc+jkb4oOU898E\"",
|
|
31526
|
+
"mtime": "2026-09-06T06:27:43.494Z",
|
|
31527
|
+
"size": 5345,
|
|
31528
|
+
"path": "../public/_nuxt/settings.BqMF2nfj.css"
|
|
31219
31529
|
},
|
|
31220
31530
|
"/_nuxt/teams.CUMnbQGf.css": {
|
|
31221
31531
|
"type": "text/css; charset=utf-8",
|
|
31222
31532
|
"etag": "\"6b7-g1G8KL1N00xQbucKbHyHr3V6KOg\"",
|
|
31223
|
-
"mtime": "2026-09-
|
|
31533
|
+
"mtime": "2026-09-06T06:27:43.494Z",
|
|
31224
31534
|
"size": 1719,
|
|
31225
31535
|
"path": "../public/_nuxt/teams.CUMnbQGf.css"
|
|
31226
31536
|
},
|
|
31227
|
-
"/_nuxt/
|
|
31228
|
-
"type": "text/
|
|
31229
|
-
"etag": "\"
|
|
31230
|
-
"mtime": "2026-09-
|
|
31231
|
-
"size":
|
|
31232
|
-
"path": "../public/_nuxt/
|
|
31537
|
+
"/_nuxt/tJuVvBSl.js": {
|
|
31538
|
+
"type": "text/javascript; charset=utf-8",
|
|
31539
|
+
"etag": "\"3d83-P6RaJXpMzRBTtW1GmVDRQ+jjvLU\"",
|
|
31540
|
+
"mtime": "2026-09-06T06:27:43.476Z",
|
|
31541
|
+
"size": 15747,
|
|
31542
|
+
"path": "../public/_nuxt/tJuVvBSl.js"
|
|
31233
31543
|
},
|
|
31234
31544
|
"/_nuxt/tokens.BPLe9ioQ.css": {
|
|
31235
31545
|
"type": "text/css; charset=utf-8",
|
|
31236
31546
|
"etag": "\"9cd-147MQyZ2Ox0eBoOzCqzEBTE6A1w\"",
|
|
31237
|
-
"mtime": "2026-09-
|
|
31547
|
+
"mtime": "2026-09-06T06:27:43.495Z",
|
|
31238
31548
|
"size": 2509,
|
|
31239
31549
|
"path": "../public/_nuxt/tokens.BPLe9ioQ.css"
|
|
31240
31550
|
},
|
|
31551
|
+
"/_nuxt/town.BLrD9-WH.css": {
|
|
31552
|
+
"type": "text/css; charset=utf-8",
|
|
31553
|
+
"etag": "\"64-INqlNEwsg1I+Dzc8LaEkJCLno5o\"",
|
|
31554
|
+
"mtime": "2026-09-06T06:27:43.495Z",
|
|
31555
|
+
"size": 100,
|
|
31556
|
+
"path": "../public/_nuxt/town.BLrD9-WH.css"
|
|
31557
|
+
},
|
|
31558
|
+
"/_nuxt/town.C_DsNW0J.css": {
|
|
31559
|
+
"type": "text/css; charset=utf-8",
|
|
31560
|
+
"etag": "\"3b2-lx8uIK7y3f1Nkj2gMcTuak3mB/I\"",
|
|
31561
|
+
"mtime": "2026-09-06T06:27:43.495Z",
|
|
31562
|
+
"size": 946,
|
|
31563
|
+
"path": "../public/_nuxt/town.C_DsNW0J.css"
|
|
31564
|
+
},
|
|
31241
31565
|
"/_nuxt/TownView.BHLKAjEu.css": {
|
|
31242
31566
|
"type": "text/css; charset=utf-8",
|
|
31243
31567
|
"etag": "\"11b2a-iRw/kbvCuxhjwK4gMYcSwCJYIEk\"",
|
|
31244
|
-
"mtime": "2026-09-
|
|
31568
|
+
"mtime": "2026-09-06T06:27:43.477Z",
|
|
31245
31569
|
"size": 72490,
|
|
31246
31570
|
"path": "../public/_nuxt/TownView.BHLKAjEu.css"
|
|
31247
31571
|
},
|
|
31248
31572
|
"/_nuxt/users.D8lcLE62.css": {
|
|
31249
31573
|
"type": "text/css; charset=utf-8",
|
|
31250
31574
|
"etag": "\"2f7-vPqmiQmG+gTnKc25vyRnF3nNTy0\"",
|
|
31251
|
-
"mtime": "2026-09-
|
|
31575
|
+
"mtime": "2026-09-06T06:27:43.495Z",
|
|
31252
31576
|
"size": 759,
|
|
31253
31577
|
"path": "../public/_nuxt/users.D8lcLE62.css"
|
|
31254
31578
|
},
|
|
31255
|
-
"/_nuxt/u7KWCGSb.js": {
|
|
31256
|
-
"type": "text/javascript; charset=utf-8",
|
|
31257
|
-
"etag": "\"3348-dHLPellbGHVZ5EamK1rpRZfN4OQ\"",
|
|
31258
|
-
"mtime": "2026-09-05T18:48:20.544Z",
|
|
31259
|
-
"size": 13128,
|
|
31260
|
-
"path": "../public/_nuxt/u7KWCGSb.js"
|
|
31261
|
-
},
|
|
31262
31579
|
"/_nuxt/vJ4FPb-_.js": {
|
|
31263
31580
|
"type": "text/javascript; charset=utf-8",
|
|
31264
31581
|
"etag": "\"496e-HYp1zkNZ5UP5CkmOCjjlTOlpRAA\"",
|
|
31265
|
-
"mtime": "2026-09-
|
|
31582
|
+
"mtime": "2026-09-06T06:27:43.476Z",
|
|
31266
31583
|
"size": 18798,
|
|
31267
31584
|
"path": "../public/_nuxt/vJ4FPb-_.js"
|
|
31268
31585
|
},
|
|
31586
|
+
"/_nuxt/VLI2Zy4t.js": {
|
|
31587
|
+
"type": "text/javascript; charset=utf-8",
|
|
31588
|
+
"etag": "\"79db-1zvdkTTeWhTS0A+KbRz0/ud/ntw\"",
|
|
31589
|
+
"mtime": "2026-09-06T06:27:43.474Z",
|
|
31590
|
+
"size": 31195,
|
|
31591
|
+
"path": "../public/_nuxt/VLI2Zy4t.js"
|
|
31592
|
+
},
|
|
31269
31593
|
"/_nuxt/workshop.BIdoGfoC.css": {
|
|
31270
31594
|
"type": "text/css; charset=utf-8",
|
|
31271
31595
|
"etag": "\"d1c-u7eiOCnZLnH0C1d+mXWsSkBFJOI\"",
|
|
31272
|
-
"mtime": "2026-09-
|
|
31596
|
+
"mtime": "2026-09-06T06:27:43.495Z",
|
|
31273
31597
|
"size": 3356,
|
|
31274
31598
|
"path": "../public/_nuxt/workshop.BIdoGfoC.css"
|
|
31275
31599
|
},
|
|
31276
|
-
"/_nuxt/
|
|
31600
|
+
"/_nuxt/zVkqCZ78.js": {
|
|
31277
31601
|
"type": "text/javascript; charset=utf-8",
|
|
31278
|
-
"etag": "\"
|
|
31279
|
-
"mtime": "2026-09-
|
|
31280
|
-
"size":
|
|
31281
|
-
"path": "../public/_nuxt/
|
|
31602
|
+
"etag": "\"e583-atAfcqj4nxxk6KUzDMuv2R/bDCg\"",
|
|
31603
|
+
"mtime": "2026-09-06T06:27:43.477Z",
|
|
31604
|
+
"size": 58755,
|
|
31605
|
+
"path": "../public/_nuxt/zVkqCZ78.js"
|
|
31282
31606
|
},
|
|
31283
31607
|
"/_nuxt/_id_.DIxEKj88.css": {
|
|
31284
31608
|
"type": "text/css; charset=utf-8",
|
|
31285
31609
|
"etag": "\"1564-kqE2azzqPk0lKOVi0vRsIBIu7UM\"",
|
|
31286
|
-
"mtime": "2026-09-
|
|
31610
|
+
"mtime": "2026-09-06T06:27:43.477Z",
|
|
31287
31611
|
"size": 5476,
|
|
31288
31612
|
"path": "../public/_nuxt/_id_.DIxEKj88.css"
|
|
31289
31613
|
},
|
|
31290
|
-
"/_nuxt/VLI2Zy4t.js": {
|
|
31291
|
-
"type": "text/javascript; charset=utf-8",
|
|
31292
|
-
"etag": "\"79db-1zvdkTTeWhTS0A+KbRz0/ud/ntw\"",
|
|
31293
|
-
"mtime": "2026-09-05T18:48:20.543Z",
|
|
31294
|
-
"size": 31195,
|
|
31295
|
-
"path": "../public/_nuxt/VLI2Zy4t.js"
|
|
31296
|
-
},
|
|
31297
|
-
"/_nuxt/_id_.DTvjd6VN.css": {
|
|
31298
|
-
"type": "text/css; charset=utf-8",
|
|
31299
|
-
"etag": "\"36e7-Um0hcCUBU5cd8ESeOGJffLOJkG8\"",
|
|
31300
|
-
"mtime": "2026-09-05T18:48:20.545Z",
|
|
31301
|
-
"size": 14055,
|
|
31302
|
-
"path": "../public/_nuxt/_id_.DTvjd6VN.css"
|
|
31303
|
-
},
|
|
31304
|
-
"/_nuxt/_wsId_.BFyCuUwS.css": {
|
|
31305
|
-
"type": "text/css; charset=utf-8",
|
|
31306
|
-
"etag": "\"11059-fUcBwBRjCr5Nger7gVc5ZTCEb1o\"",
|
|
31307
|
-
"mtime": "2026-09-05T18:48:20.546Z",
|
|
31308
|
-
"size": 69721,
|
|
31309
|
-
"path": "../public/_nuxt/_wsId_.BFyCuUwS.css"
|
|
31310
|
-
},
|
|
31311
31614
|
"/assets/game/coin.png": {
|
|
31312
31615
|
"type": "image/png",
|
|
31313
31616
|
"etag": "\"1a4d-c3GA5v0R/IuKz38xkdcao4hHrX4\"",
|
|
@@ -31315,12 +31618,19 @@ const assets = {
|
|
|
31315
31618
|
"size": 6733,
|
|
31316
31619
|
"path": "../public/assets/game/coin.png"
|
|
31317
31620
|
},
|
|
31318
|
-
"/
|
|
31319
|
-
"type": "
|
|
31320
|
-
"etag": "\"
|
|
31321
|
-
"mtime": "2026-
|
|
31322
|
-
"size":
|
|
31323
|
-
"path": "../public/
|
|
31621
|
+
"/_nuxt/_wsId_.BFyCuUwS.css": {
|
|
31622
|
+
"type": "text/css; charset=utf-8",
|
|
31623
|
+
"etag": "\"11059-fUcBwBRjCr5Nger7gVc5ZTCEb1o\"",
|
|
31624
|
+
"mtime": "2026-09-06T06:27:43.477Z",
|
|
31625
|
+
"size": 69721,
|
|
31626
|
+
"path": "../public/_nuxt/_wsId_.BFyCuUwS.css"
|
|
31627
|
+
},
|
|
31628
|
+
"/_nuxt/_id_.DTvjd6VN.css": {
|
|
31629
|
+
"type": "text/css; charset=utf-8",
|
|
31630
|
+
"etag": "\"36e7-Um0hcCUBU5cd8ESeOGJffLOJkG8\"",
|
|
31631
|
+
"mtime": "2026-09-06T06:27:43.477Z",
|
|
31632
|
+
"size": 14055,
|
|
31633
|
+
"path": "../public/_nuxt/_id_.DTvjd6VN.css"
|
|
31324
31634
|
},
|
|
31325
31635
|
"/assets/game/player-sheet.png": {
|
|
31326
31636
|
"type": "image/png",
|
|
@@ -31329,6 +31639,13 @@ const assets = {
|
|
|
31329
31639
|
"size": 10050,
|
|
31330
31640
|
"path": "../public/assets/game/player-sheet.png"
|
|
31331
31641
|
},
|
|
31642
|
+
"/_nuxt/builds/latest.json": {
|
|
31643
|
+
"type": "application/json",
|
|
31644
|
+
"etag": "\"47-swJWvalNkp3TzpX1HXzN9aJlJnM\"",
|
|
31645
|
+
"mtime": "2026-09-06T06:27:48.071Z",
|
|
31646
|
+
"size": 71,
|
|
31647
|
+
"path": "../public/_nuxt/builds/latest.json"
|
|
31648
|
+
},
|
|
31332
31649
|
"/scene/background/cyber-town-background.svg": {
|
|
31333
31650
|
"type": "image/svg+xml",
|
|
31334
31651
|
"etag": "\"1656-Q8xWIs77K5i5HJYRdMCDYSQhkvs\"",
|
|
@@ -31336,12 +31653,12 @@ const assets = {
|
|
|
31336
31653
|
"size": 5718,
|
|
31337
31654
|
"path": "../public/scene/background/cyber-town-background.svg"
|
|
31338
31655
|
},
|
|
31339
|
-
"/
|
|
31656
|
+
"/assets/game/tuxemon-town.json": {
|
|
31340
31657
|
"type": "application/json",
|
|
31341
|
-
"etag": "\"
|
|
31342
|
-
"mtime": "2026-
|
|
31343
|
-
"size":
|
|
31344
|
-
"path": "../public/
|
|
31658
|
+
"etag": "\"fec5-uB5TWkwSxd0G5Tiupl3I0+u94XM\"",
|
|
31659
|
+
"mtime": "2026-08-25T12:20:54.517Z",
|
|
31660
|
+
"size": 65221,
|
|
31661
|
+
"path": "../public/assets/game/tuxemon-town.json"
|
|
31345
31662
|
},
|
|
31346
31663
|
"/assets/game/character/bot.png": {
|
|
31347
31664
|
"type": "image/png",
|
|
@@ -31371,6 +31688,13 @@ const assets = {
|
|
|
31371
31688
|
"size": 33940,
|
|
31372
31689
|
"path": "../public/assets/game/character/hero-3d.glb"
|
|
31373
31690
|
},
|
|
31691
|
+
"/assets/game/character/hero-anime-1.glb": {
|
|
31692
|
+
"type": "model/gltf-binary",
|
|
31693
|
+
"etag": "\"1044c-AUMAdrW4S6OKEsUeAcR5c50fyKs\"",
|
|
31694
|
+
"mtime": "2026-08-26T05:23:14.557Z",
|
|
31695
|
+
"size": 66636,
|
|
31696
|
+
"path": "../public/assets/game/character/hero-anime-1.glb"
|
|
31697
|
+
},
|
|
31374
31698
|
"/assets/game/character/hero-anime-2.glb": {
|
|
31375
31699
|
"type": "model/gltf-binary",
|
|
31376
31700
|
"etag": "\"1058c-J91UapGlsJg/5ODN8k8c7rSNpzw\"",
|
|
@@ -31378,12 +31702,12 @@ const assets = {
|
|
|
31378
31702
|
"size": 66956,
|
|
31379
31703
|
"path": "../public/assets/game/character/hero-anime-2.glb"
|
|
31380
31704
|
},
|
|
31381
|
-
"/assets/game/character/hero-anime-
|
|
31705
|
+
"/assets/game/character/hero-anime-3.glb": {
|
|
31382
31706
|
"type": "model/gltf-binary",
|
|
31383
|
-
"etag": "\"
|
|
31384
|
-
"mtime": "2026-08-26T05:23:14.
|
|
31385
|
-
"size":
|
|
31386
|
-
"path": "../public/assets/game/character/hero-anime-
|
|
31707
|
+
"etag": "\"1057c-jREeKLYoS8AFWzuIOgOSr6CzehU\"",
|
|
31708
|
+
"mtime": "2026-08-26T05:23:14.558Z",
|
|
31709
|
+
"size": 66940,
|
|
31710
|
+
"path": "../public/assets/game/character/hero-anime-3.glb"
|
|
31387
31711
|
},
|
|
31388
31712
|
"/assets/game/character/hero-anime-4.glb": {
|
|
31389
31713
|
"type": "model/gltf-binary",
|
|
@@ -31392,6 +31716,13 @@ const assets = {
|
|
|
31392
31716
|
"size": 66884,
|
|
31393
31717
|
"path": "../public/assets/game/character/hero-anime-4.glb"
|
|
31394
31718
|
},
|
|
31719
|
+
"/assets/game/character/knight.png": {
|
|
31720
|
+
"type": "image/png",
|
|
31721
|
+
"etag": "\"3b37-Wyixufl/LcqKO/AeTLuGvzi4goQ\"",
|
|
31722
|
+
"mtime": "2026-08-25T12:20:54.511Z",
|
|
31723
|
+
"size": 15159,
|
|
31724
|
+
"path": "../public/assets/game/character/knight.png"
|
|
31725
|
+
},
|
|
31395
31726
|
"/assets/game/character/mage.png": {
|
|
31396
31727
|
"type": "image/png",
|
|
31397
31728
|
"etag": "\"3832-juipuJuMJceZrarvR4w7OKgQejA\"",
|
|
@@ -31399,236 +31730,159 @@ const assets = {
|
|
|
31399
31730
|
"size": 14386,
|
|
31400
31731
|
"path": "../public/assets/game/character/mage.png"
|
|
31401
31732
|
},
|
|
31402
|
-
"/assets/game/
|
|
31403
|
-
"type": "
|
|
31404
|
-
"etag": "\"
|
|
31405
|
-
"mtime": "2026-08-
|
|
31406
|
-
"size":
|
|
31407
|
-
"path": "../public/assets/game/
|
|
31733
|
+
"/assets/game/devices/caster.glb": {
|
|
31734
|
+
"type": "model/gltf-binary",
|
|
31735
|
+
"etag": "\"5874-Qd988sa7u1y3lgH8K/zhzRLbRbs\"",
|
|
31736
|
+
"mtime": "2026-08-27T07:03:12.510Z",
|
|
31737
|
+
"size": 22644,
|
|
31738
|
+
"path": "../public/assets/game/devices/caster.glb"
|
|
31408
31739
|
},
|
|
31409
|
-
"/assets/game/
|
|
31410
|
-
"type": "
|
|
31411
|
-
"etag": "\"
|
|
31412
|
-
"mtime": "2026-08-
|
|
31413
|
-
"size":
|
|
31414
|
-
"path": "../public/assets/game/
|
|
31740
|
+
"/assets/game/devices/agv.glb": {
|
|
31741
|
+
"type": "model/gltf-binary",
|
|
31742
|
+
"etag": "\"b0ec-SGRGNfFN89F7v1GROXKGve7pQqs\"",
|
|
31743
|
+
"mtime": "2026-08-27T07:03:12.531Z",
|
|
31744
|
+
"size": 45292,
|
|
31745
|
+
"path": "../public/assets/game/devices/agv.glb"
|
|
31415
31746
|
},
|
|
31416
|
-
"/assets/game/
|
|
31747
|
+
"/assets/game/devices/device-console.glb": {
|
|
31417
31748
|
"type": "model/gltf-binary",
|
|
31418
|
-
"etag": "\"
|
|
31419
|
-
"mtime": "2026-08-26T05:23:14.
|
|
31420
|
-
"size":
|
|
31421
|
-
"path": "../public/assets/game/
|
|
31749
|
+
"etag": "\"3984-GibNFJHAqtYWIxLy79rzU1HZAds\"",
|
|
31750
|
+
"mtime": "2026-08-26T05:23:14.559Z",
|
|
31751
|
+
"size": 14724,
|
|
31752
|
+
"path": "../public/assets/game/devices/device-console.glb"
|
|
31422
31753
|
},
|
|
31423
|
-
"/assets/game/
|
|
31424
|
-
"type": "
|
|
31425
|
-
"etag": "\"
|
|
31426
|
-
"mtime": "2026-08-
|
|
31427
|
-
"size":
|
|
31428
|
-
"path": "../public/assets/game/
|
|
31754
|
+
"/assets/game/devices/device-robot-arm.glb": {
|
|
31755
|
+
"type": "model/gltf-binary",
|
|
31756
|
+
"etag": "\"37fc-uBxMDklo0SfaA6KXZIylh/S2p+c\"",
|
|
31757
|
+
"mtime": "2026-08-26T05:23:14.560Z",
|
|
31758
|
+
"size": 14332,
|
|
31759
|
+
"path": "../public/assets/game/devices/device-robot-arm.glb"
|
|
31429
31760
|
},
|
|
31430
|
-
"/assets/game/
|
|
31431
|
-
"type": "
|
|
31432
|
-
"etag": "\"
|
|
31433
|
-
"mtime": "2026-08-
|
|
31434
|
-
"size":
|
|
31435
|
-
"path": "../public/assets/game/
|
|
31761
|
+
"/assets/game/devices/device-scanner.glb": {
|
|
31762
|
+
"type": "model/gltf-binary",
|
|
31763
|
+
"etag": "\"28e0-uKYZaLiZiCedMMozKBOFU14HUSE\"",
|
|
31764
|
+
"mtime": "2026-08-26T05:23:14.560Z",
|
|
31765
|
+
"size": 10464,
|
|
31766
|
+
"path": "../public/assets/game/devices/device-scanner.glb"
|
|
31436
31767
|
},
|
|
31437
|
-
"/assets/game/
|
|
31438
|
-
"type": "
|
|
31439
|
-
"etag": "\"
|
|
31440
|
-
"mtime": "2026-08-
|
|
31441
|
-
"size":
|
|
31442
|
-
"path": "../public/assets/game/
|
|
31768
|
+
"/assets/game/devices/mdo.glb": {
|
|
31769
|
+
"type": "model/gltf-binary",
|
|
31770
|
+
"etag": "\"132e4-EDslgF5+17dSukguA0eZzN4I0+o\"",
|
|
31771
|
+
"mtime": "2026-08-27T07:03:12.518Z",
|
|
31772
|
+
"size": 78564,
|
|
31773
|
+
"path": "../public/assets/game/devices/mdo.glb"
|
|
31443
31774
|
},
|
|
31444
|
-
"/assets/game/
|
|
31445
|
-
"type": "
|
|
31446
|
-
"etag": "\"
|
|
31447
|
-
"mtime": "2026-08-
|
|
31448
|
-
"size":
|
|
31449
|
-
"path": "../public/assets/game/
|
|
31775
|
+
"/assets/game/devices/extruder.glb": {
|
|
31776
|
+
"type": "model/gltf-binary",
|
|
31777
|
+
"etag": "\"18124-H6X1eQmFDn6eONUMGU6lGdQafZ8\"",
|
|
31778
|
+
"mtime": "2026-08-27T07:03:12.506Z",
|
|
31779
|
+
"size": 98596,
|
|
31780
|
+
"path": "../public/assets/game/devices/extruder.glb"
|
|
31450
31781
|
},
|
|
31451
|
-
"/assets/game/
|
|
31452
|
-
"type": "
|
|
31453
|
-
"etag": "\"
|
|
31454
|
-
"mtime": "2026-08-
|
|
31455
|
-
"size":
|
|
31456
|
-
"path": "../public/assets/game/
|
|
31782
|
+
"/assets/game/devices/power-cabinet.glb": {
|
|
31783
|
+
"type": "model/gltf-binary",
|
|
31784
|
+
"etag": "\"54f0-KsrAxig9JTAY5SGKK3jbdJXB6fk\"",
|
|
31785
|
+
"mtime": "2026-08-27T07:03:12.534Z",
|
|
31786
|
+
"size": 21744,
|
|
31787
|
+
"path": "../public/assets/game/devices/power-cabinet.glb"
|
|
31457
31788
|
},
|
|
31458
|
-
"/assets/game/
|
|
31459
|
-
"type": "
|
|
31460
|
-
"etag": "\"
|
|
31461
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31462
|
-
"size":
|
|
31463
|
-
"path": "../public/assets/game/
|
|
31789
|
+
"/assets/game/devices/pump.glb": {
|
|
31790
|
+
"type": "model/gltf-binary",
|
|
31791
|
+
"etag": "\"4bc8-yAiKZtO+P2bBmqfRvhlxcF0oduE\"",
|
|
31792
|
+
"mtime": "2026-08-25T12:20:54.512Z",
|
|
31793
|
+
"size": 19400,
|
|
31794
|
+
"path": "../public/assets/game/devices/pump.glb"
|
|
31464
31795
|
},
|
|
31465
|
-
"/assets/game/
|
|
31466
|
-
"type": "
|
|
31467
|
-
"etag": "\"
|
|
31468
|
-
"mtime": "2026-08-
|
|
31469
|
-
"size":
|
|
31470
|
-
"path": "../public/assets/game/
|
|
31796
|
+
"/assets/game/devices/tdo.glb": {
|
|
31797
|
+
"type": "model/gltf-binary",
|
|
31798
|
+
"etag": "\"e10c-GdMX+mG/KrSVBzy4EeAPPjFoTqM\"",
|
|
31799
|
+
"mtime": "2026-08-27T07:03:12.523Z",
|
|
31800
|
+
"size": 57612,
|
|
31801
|
+
"path": "../public/assets/game/devices/tdo.glb"
|
|
31471
31802
|
},
|
|
31472
|
-
"/assets/game/
|
|
31473
|
-
"type": "
|
|
31474
|
-
"etag": "\"
|
|
31475
|
-
"mtime": "2026-08-
|
|
31476
|
-
"size":
|
|
31477
|
-
"path": "../public/assets/game/
|
|
31803
|
+
"/assets/game/devices/thickness-scanner.glb": {
|
|
31804
|
+
"type": "model/gltf-binary",
|
|
31805
|
+
"etag": "\"3480-WMTbMzRrl/6AJPzEIPhRW9xPugA\"",
|
|
31806
|
+
"mtime": "2026-08-27T07:03:12.527Z",
|
|
31807
|
+
"size": 13440,
|
|
31808
|
+
"path": "../public/assets/game/devices/thickness-scanner.glb"
|
|
31478
31809
|
},
|
|
31479
|
-
"/assets/game/
|
|
31480
|
-
"type": "
|
|
31481
|
-
"etag": "\"
|
|
31482
|
-
"mtime": "2026-08-
|
|
31483
|
-
"size":
|
|
31484
|
-
"path": "../public/assets/game/
|
|
31810
|
+
"/assets/game/devices/winder.glb": {
|
|
31811
|
+
"type": "model/gltf-binary",
|
|
31812
|
+
"etag": "\"9084-N9S2enupsA8WyhEHtkIgQ+RBDV4\"",
|
|
31813
|
+
"mtime": "2026-08-27T07:03:12.526Z",
|
|
31814
|
+
"size": 36996,
|
|
31815
|
+
"path": "../public/assets/game/devices/winder.glb"
|
|
31485
31816
|
},
|
|
31486
|
-
"/assets/game/
|
|
31817
|
+
"/assets/game/wuwa/wu-lead.png": {
|
|
31487
31818
|
"type": "image/png",
|
|
31488
|
-
"etag": "\"
|
|
31489
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31490
|
-
"size":
|
|
31491
|
-
"path": "../public/assets/game/
|
|
31819
|
+
"etag": "\"3b04-agK45Y3g7QDPns/kmkhTGYSTPDM\"",
|
|
31820
|
+
"mtime": "2026-08-25T12:20:54.527Z",
|
|
31821
|
+
"size": 15108,
|
|
31822
|
+
"path": "../public/assets/game/wuwa/wu-lead.png"
|
|
31492
31823
|
},
|
|
31493
|
-
"/assets/game/
|
|
31824
|
+
"/assets/game/wuwa/world-middle.png": {
|
|
31494
31825
|
"type": "image/png",
|
|
31495
|
-
"etag": "\"
|
|
31496
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31497
|
-
"size":
|
|
31498
|
-
"path": "../public/assets/game/
|
|
31826
|
+
"etag": "\"16164-Dxu+NdXPnqoPFfWHwQi1oefgNvU\"",
|
|
31827
|
+
"mtime": "2026-08-25T12:20:54.523Z",
|
|
31828
|
+
"size": 90468,
|
|
31829
|
+
"path": "../public/assets/game/wuwa/world-middle.png"
|
|
31499
31830
|
},
|
|
31500
|
-
"/assets/game/
|
|
31831
|
+
"/assets/game/wuwa/wu-aura.png": {
|
|
31501
31832
|
"type": "image/png",
|
|
31502
|
-
"etag": "\"
|
|
31503
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31504
|
-
"size":
|
|
31505
|
-
"path": "../public/assets/game/
|
|
31833
|
+
"etag": "\"2055-NKWgEbJfTq5l56FGWi9WDWgBAbU\"",
|
|
31834
|
+
"mtime": "2026-08-25T12:20:54.527Z",
|
|
31835
|
+
"size": 8277,
|
|
31836
|
+
"path": "../public/assets/game/wuwa/wu-aura.png"
|
|
31506
31837
|
},
|
|
31507
|
-
"/assets/game/
|
|
31838
|
+
"/assets/game/wuwa/wu-worker-0.png": {
|
|
31508
31839
|
"type": "image/png",
|
|
31509
|
-
"etag": "\"
|
|
31510
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31511
|
-
"size":
|
|
31512
|
-
"path": "../public/assets/game/
|
|
31840
|
+
"etag": "\"3c59-fILvgyTv9TKRgrI9GQlRhaSR96U\"",
|
|
31841
|
+
"mtime": "2026-08-25T12:20:54.528Z",
|
|
31842
|
+
"size": 15449,
|
|
31843
|
+
"path": "../public/assets/game/wuwa/wu-worker-0.png"
|
|
31513
31844
|
},
|
|
31514
|
-
"/assets/game/
|
|
31845
|
+
"/assets/game/wuwa/scene-map.png": {
|
|
31515
31846
|
"type": "image/png",
|
|
31516
|
-
"etag": "\"
|
|
31517
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31518
|
-
"size":
|
|
31519
|
-
"path": "../public/assets/game/
|
|
31847
|
+
"etag": "\"682db-bU8mh8SeHPotvuaCc6PZzrWoT+A\"",
|
|
31848
|
+
"mtime": "2026-08-25T12:20:54.521Z",
|
|
31849
|
+
"size": 426715,
|
|
31850
|
+
"path": "../public/assets/game/wuwa/scene-map.png"
|
|
31520
31851
|
},
|
|
31521
|
-
"/assets/game/
|
|
31852
|
+
"/assets/game/wuwa/wu-ring.png": {
|
|
31522
31853
|
"type": "image/png",
|
|
31523
|
-
"etag": "\"
|
|
31524
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31525
|
-
"size":
|
|
31526
|
-
"path": "../public/assets/game/
|
|
31854
|
+
"etag": "\"65ac-/iIjlPgFNpD98zDsyCJYA8021E4\"",
|
|
31855
|
+
"mtime": "2026-08-25T12:20:54.527Z",
|
|
31856
|
+
"size": 26028,
|
|
31857
|
+
"path": "../public/assets/game/wuwa/wu-ring.png"
|
|
31527
31858
|
},
|
|
31528
|
-
"/assets/game/
|
|
31859
|
+
"/assets/game/wuwa/wu-slash.png": {
|
|
31529
31860
|
"type": "image/png",
|
|
31530
|
-
"etag": "\"
|
|
31531
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31532
|
-
"size":
|
|
31533
|
-
"path": "../public/assets/game/
|
|
31861
|
+
"etag": "\"185-fVjcllSJOBMFcBWLIgBzTrzWGaY\"",
|
|
31862
|
+
"mtime": "2026-08-25T12:20:54.527Z",
|
|
31863
|
+
"size": 389,
|
|
31864
|
+
"path": "../public/assets/game/wuwa/wu-slash.png"
|
|
31534
31865
|
},
|
|
31535
|
-
"/assets/game/
|
|
31866
|
+
"/assets/game/wuwa/world-far.png": {
|
|
31536
31867
|
"type": "image/png",
|
|
31537
|
-
"etag": "\"
|
|
31538
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31539
|
-
"size":
|
|
31540
|
-
"path": "../public/assets/game/
|
|
31868
|
+
"etag": "\"6b391-DRcUWDyPUwUxDpAWplDh9StwdO0\"",
|
|
31869
|
+
"mtime": "2026-08-25T12:20:54.522Z",
|
|
31870
|
+
"size": 439185,
|
|
31871
|
+
"path": "../public/assets/game/wuwa/world-far.png"
|
|
31541
31872
|
},
|
|
31542
|
-
"/assets/game/
|
|
31873
|
+
"/assets/game/wuwa/wu-worker-1.png": {
|
|
31543
31874
|
"type": "image/png",
|
|
31544
|
-
"etag": "\"
|
|
31545
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31546
|
-
"size":
|
|
31547
|
-
"path": "../public/assets/game/
|
|
31875
|
+
"etag": "\"3cc8-0XoRr5qFC7X+vEEX+XrX4cRX+D0\"",
|
|
31876
|
+
"mtime": "2026-08-25T12:20:54.529Z",
|
|
31877
|
+
"size": 15560,
|
|
31878
|
+
"path": "../public/assets/game/wuwa/wu-worker-1.png"
|
|
31548
31879
|
},
|
|
31549
|
-
"/assets/game/
|
|
31880
|
+
"/assets/game/wuwa/wu-worker-2.png": {
|
|
31550
31881
|
"type": "image/png",
|
|
31551
|
-
"etag": "\"
|
|
31552
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31553
|
-
"size":
|
|
31554
|
-
"path": "../public/assets/game/
|
|
31555
|
-
},
|
|
31556
|
-
"/assets/game/devices/agv.glb": {
|
|
31557
|
-
"type": "model/gltf-binary",
|
|
31558
|
-
"etag": "\"b0ec-SGRGNfFN89F7v1GROXKGve7pQqs\"",
|
|
31559
|
-
"mtime": "2026-08-27T07:03:12.531Z",
|
|
31560
|
-
"size": 45292,
|
|
31561
|
-
"path": "../public/assets/game/devices/agv.glb"
|
|
31562
|
-
},
|
|
31563
|
-
"/assets/game/devices/caster.glb": {
|
|
31564
|
-
"type": "model/gltf-binary",
|
|
31565
|
-
"etag": "\"5874-Qd988sa7u1y3lgH8K/zhzRLbRbs\"",
|
|
31566
|
-
"mtime": "2026-08-27T07:03:12.510Z",
|
|
31567
|
-
"size": 22644,
|
|
31568
|
-
"path": "../public/assets/game/devices/caster.glb"
|
|
31569
|
-
},
|
|
31570
|
-
"/assets/game/devices/device-console.glb": {
|
|
31571
|
-
"type": "model/gltf-binary",
|
|
31572
|
-
"etag": "\"3984-GibNFJHAqtYWIxLy79rzU1HZAds\"",
|
|
31573
|
-
"mtime": "2026-08-26T05:23:14.559Z",
|
|
31574
|
-
"size": 14724,
|
|
31575
|
-
"path": "../public/assets/game/devices/device-console.glb"
|
|
31576
|
-
},
|
|
31577
|
-
"/assets/game/devices/device-scanner.glb": {
|
|
31578
|
-
"type": "model/gltf-binary",
|
|
31579
|
-
"etag": "\"28e0-uKYZaLiZiCedMMozKBOFU14HUSE\"",
|
|
31580
|
-
"mtime": "2026-08-26T05:23:14.560Z",
|
|
31581
|
-
"size": 10464,
|
|
31582
|
-
"path": "../public/assets/game/devices/device-scanner.glb"
|
|
31583
|
-
},
|
|
31584
|
-
"/assets/game/devices/device-robot-arm.glb": {
|
|
31585
|
-
"type": "model/gltf-binary",
|
|
31586
|
-
"etag": "\"37fc-uBxMDklo0SfaA6KXZIylh/S2p+c\"",
|
|
31587
|
-
"mtime": "2026-08-26T05:23:14.560Z",
|
|
31588
|
-
"size": 14332,
|
|
31589
|
-
"path": "../public/assets/game/devices/device-robot-arm.glb"
|
|
31590
|
-
},
|
|
31591
|
-
"/assets/game/devices/extruder.glb": {
|
|
31592
|
-
"type": "model/gltf-binary",
|
|
31593
|
-
"etag": "\"18124-H6X1eQmFDn6eONUMGU6lGdQafZ8\"",
|
|
31594
|
-
"mtime": "2026-08-27T07:03:12.506Z",
|
|
31595
|
-
"size": 98596,
|
|
31596
|
-
"path": "../public/assets/game/devices/extruder.glb"
|
|
31597
|
-
},
|
|
31598
|
-
"/assets/game/devices/power-cabinet.glb": {
|
|
31599
|
-
"type": "model/gltf-binary",
|
|
31600
|
-
"etag": "\"54f0-KsrAxig9JTAY5SGKK3jbdJXB6fk\"",
|
|
31601
|
-
"mtime": "2026-08-27T07:03:12.534Z",
|
|
31602
|
-
"size": 21744,
|
|
31603
|
-
"path": "../public/assets/game/devices/power-cabinet.glb"
|
|
31604
|
-
},
|
|
31605
|
-
"/assets/game/devices/mdo.glb": {
|
|
31606
|
-
"type": "model/gltf-binary",
|
|
31607
|
-
"etag": "\"132e4-EDslgF5+17dSukguA0eZzN4I0+o\"",
|
|
31608
|
-
"mtime": "2026-08-27T07:03:12.518Z",
|
|
31609
|
-
"size": 78564,
|
|
31610
|
-
"path": "../public/assets/game/devices/mdo.glb"
|
|
31611
|
-
},
|
|
31612
|
-
"/assets/game/devices/pump.glb": {
|
|
31613
|
-
"type": "model/gltf-binary",
|
|
31614
|
-
"etag": "\"4bc8-yAiKZtO+P2bBmqfRvhlxcF0oduE\"",
|
|
31615
|
-
"mtime": "2026-08-25T12:20:54.512Z",
|
|
31616
|
-
"size": 19400,
|
|
31617
|
-
"path": "../public/assets/game/devices/pump.glb"
|
|
31618
|
-
},
|
|
31619
|
-
"/assets/game/devices/thickness-scanner.glb": {
|
|
31620
|
-
"type": "model/gltf-binary",
|
|
31621
|
-
"etag": "\"3480-WMTbMzRrl/6AJPzEIPhRW9xPugA\"",
|
|
31622
|
-
"mtime": "2026-08-27T07:03:12.527Z",
|
|
31623
|
-
"size": 13440,
|
|
31624
|
-
"path": "../public/assets/game/devices/thickness-scanner.glb"
|
|
31625
|
-
},
|
|
31626
|
-
"/assets/game/devices/tdo.glb": {
|
|
31627
|
-
"type": "model/gltf-binary",
|
|
31628
|
-
"etag": "\"e10c-GdMX+mG/KrSVBzy4EeAPPjFoTqM\"",
|
|
31629
|
-
"mtime": "2026-08-27T07:03:12.523Z",
|
|
31630
|
-
"size": 57612,
|
|
31631
|
-
"path": "../public/assets/game/devices/tdo.glb"
|
|
31882
|
+
"etag": "\"3c81-6qd4LQS0v2L4rTa0XAmekluER7c\"",
|
|
31883
|
+
"mtime": "2026-08-25T12:20:54.529Z",
|
|
31884
|
+
"size": 15489,
|
|
31885
|
+
"path": "../public/assets/game/wuwa/wu-worker-2.png"
|
|
31632
31886
|
},
|
|
31633
31887
|
"/assets/game/npc/boltnu-sheet.png": {
|
|
31634
31888
|
"type": "image/png",
|
|
@@ -31637,6 +31891,13 @@ const assets = {
|
|
|
31637
31891
|
"size": 2580,
|
|
31638
31892
|
"path": "../public/assets/game/npc/boltnu-sheet.png"
|
|
31639
31893
|
},
|
|
31894
|
+
"/assets/game/wuwa/world-near.png": {
|
|
31895
|
+
"type": "image/png",
|
|
31896
|
+
"etag": "\"bbcd8-BrybeZP/ZGdD0v5NVC8T/Y4AXyM\"",
|
|
31897
|
+
"mtime": "2026-08-25T12:20:54.527Z",
|
|
31898
|
+
"size": 769240,
|
|
31899
|
+
"path": "../public/assets/game/wuwa/world-near.png"
|
|
31900
|
+
},
|
|
31640
31901
|
"/assets/game/npc/fluttaflap-sheet.png": {
|
|
31641
31902
|
"type": "image/png",
|
|
31642
31903
|
"etag": "\"f65-ivBz79RSNtXu3px7cWEzCwMXdkg\"",
|
|
@@ -31644,13 +31905,6 @@ const assets = {
|
|
|
31644
31905
|
"size": 3941,
|
|
31645
31906
|
"path": "../public/assets/game/npc/fluttaflap-sheet.png"
|
|
31646
31907
|
},
|
|
31647
|
-
"/assets/game/devices/winder.glb": {
|
|
31648
|
-
"type": "model/gltf-binary",
|
|
31649
|
-
"etag": "\"9084-N9S2enupsA8WyhEHtkIgQ+RBDV4\"",
|
|
31650
|
-
"mtime": "2026-08-27T07:03:12.526Z",
|
|
31651
|
-
"size": 36996,
|
|
31652
|
-
"path": "../public/assets/game/devices/winder.glb"
|
|
31653
|
-
},
|
|
31654
31908
|
"/assets/game/npc/rockitten-sheet.png": {
|
|
31655
31909
|
"type": "image/png",
|
|
31656
31910
|
"etag": "\"786-IY4LCl37+SB6pnPynapoUxsxvOM\"",
|
|
@@ -31665,89 +31919,152 @@ const assets = {
|
|
|
31665
31919
|
"size": 2322,
|
|
31666
31920
|
"path": "../public/assets/game/npc/tux-sheet.png"
|
|
31667
31921
|
},
|
|
31668
|
-
"/assets/game/
|
|
31922
|
+
"/assets/game/player/misa-back-walk.000.png": {
|
|
31669
31923
|
"type": "image/png",
|
|
31670
|
-
"etag": "\"
|
|
31671
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31672
|
-
"size":
|
|
31673
|
-
"path": "../public/assets/game/
|
|
31924
|
+
"etag": "\"157-/Sm0qrBJSHEFTGYwuSqnzRaX3Jk\"",
|
|
31925
|
+
"mtime": "2026-08-25T12:20:54.514Z",
|
|
31926
|
+
"size": 343,
|
|
31927
|
+
"path": "../public/assets/game/player/misa-back-walk.000.png"
|
|
31674
31928
|
},
|
|
31675
|
-
"/assets/game/
|
|
31929
|
+
"/assets/game/player/misa-back-walk.001.png": {
|
|
31676
31930
|
"type": "image/png",
|
|
31677
|
-
"etag": "\"
|
|
31678
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31679
|
-
"size":
|
|
31680
|
-
"path": "../public/assets/game/
|
|
31931
|
+
"etag": "\"15c-PoeNPtRrfApGTf0GzJcdNP59kts\"",
|
|
31932
|
+
"mtime": "2026-08-25T12:20:54.514Z",
|
|
31933
|
+
"size": 348,
|
|
31934
|
+
"path": "../public/assets/game/player/misa-back-walk.001.png"
|
|
31681
31935
|
},
|
|
31682
|
-
"/assets/game/
|
|
31936
|
+
"/assets/game/player/misa-back-walk.002.png": {
|
|
31683
31937
|
"type": "image/png",
|
|
31684
|
-
"etag": "\"
|
|
31685
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31686
|
-
"size":
|
|
31687
|
-
"path": "../public/assets/game/
|
|
31938
|
+
"etag": "\"157-/PPQEWo58n/RNDDq2aia6nAWOQw\"",
|
|
31939
|
+
"mtime": "2026-08-25T12:20:54.514Z",
|
|
31940
|
+
"size": 343,
|
|
31941
|
+
"path": "../public/assets/game/player/misa-back-walk.002.png"
|
|
31688
31942
|
},
|
|
31689
|
-
"/assets/game/
|
|
31943
|
+
"/assets/game/player/misa-back-walk.003.png": {
|
|
31690
31944
|
"type": "image/png",
|
|
31691
|
-
"etag": "\"
|
|
31692
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31693
|
-
"size":
|
|
31694
|
-
"path": "../public/assets/game/
|
|
31945
|
+
"etag": "\"15c-L+/hkHDyiQ9FJs5w93pxALzvWEg\"",
|
|
31946
|
+
"mtime": "2026-08-25T12:20:54.514Z",
|
|
31947
|
+
"size": 348,
|
|
31948
|
+
"path": "../public/assets/game/player/misa-back-walk.003.png"
|
|
31695
31949
|
},
|
|
31696
|
-
"/assets/game/
|
|
31950
|
+
"/assets/game/player/misa-back.png": {
|
|
31697
31951
|
"type": "image/png",
|
|
31698
|
-
"etag": "\"
|
|
31699
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31700
|
-
"size":
|
|
31701
|
-
"path": "../public/assets/game/
|
|
31952
|
+
"etag": "\"15c-KwI7aIn2tc/RPUJViRtdOGKZre4\"",
|
|
31953
|
+
"mtime": "2026-08-25T12:20:54.515Z",
|
|
31954
|
+
"size": 348,
|
|
31955
|
+
"path": "../public/assets/game/player/misa-back.png"
|
|
31702
31956
|
},
|
|
31703
|
-
"/assets/game/
|
|
31957
|
+
"/assets/game/player/misa-front-walk.000.png": {
|
|
31704
31958
|
"type": "image/png",
|
|
31705
|
-
"etag": "\"
|
|
31706
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31707
|
-
"size":
|
|
31708
|
-
"path": "../public/assets/game/
|
|
31959
|
+
"etag": "\"152-+euueT0jvK7OjNDmtrdehgkQatE\"",
|
|
31960
|
+
"mtime": "2026-08-25T12:20:54.515Z",
|
|
31961
|
+
"size": 338,
|
|
31962
|
+
"path": "../public/assets/game/player/misa-front-walk.000.png"
|
|
31709
31963
|
},
|
|
31710
|
-
"/assets/game/
|
|
31964
|
+
"/assets/game/player/misa-front-walk.001.png": {
|
|
31711
31965
|
"type": "image/png",
|
|
31712
|
-
"etag": "\"
|
|
31713
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31714
|
-
"size":
|
|
31715
|
-
"path": "../public/assets/game/
|
|
31966
|
+
"etag": "\"155-r/wKRG+amQ/2TvYolFC2UPXHdC4\"",
|
|
31967
|
+
"mtime": "2026-08-25T12:20:54.515Z",
|
|
31968
|
+
"size": 341,
|
|
31969
|
+
"path": "../public/assets/game/player/misa-front-walk.001.png"
|
|
31716
31970
|
},
|
|
31717
|
-
"/assets/game/
|
|
31971
|
+
"/assets/game/player/misa-front-walk.002.png": {
|
|
31718
31972
|
"type": "image/png",
|
|
31719
|
-
"etag": "\"
|
|
31720
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31721
|
-
"size":
|
|
31722
|
-
"path": "../public/assets/game/
|
|
31973
|
+
"etag": "\"155-UzIsnRRYoGpmHf5w9T7CLy/0ubw\"",
|
|
31974
|
+
"mtime": "2026-08-25T12:20:54.515Z",
|
|
31975
|
+
"size": 341,
|
|
31976
|
+
"path": "../public/assets/game/player/misa-front-walk.002.png"
|
|
31723
31977
|
},
|
|
31724
|
-
"/assets/game/
|
|
31978
|
+
"/assets/game/player/misa-front-walk.003.png": {
|
|
31725
31979
|
"type": "image/png",
|
|
31726
|
-
"etag": "\"
|
|
31727
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31728
|
-
"size":
|
|
31729
|
-
"path": "../public/assets/game/
|
|
31980
|
+
"etag": "\"155-JVYjyw5Raquze4YHeYII+iXfJx4\"",
|
|
31981
|
+
"mtime": "2026-08-25T12:20:54.515Z",
|
|
31982
|
+
"size": 341,
|
|
31983
|
+
"path": "../public/assets/game/player/misa-front-walk.003.png"
|
|
31730
31984
|
},
|
|
31731
|
-
"/assets/game/
|
|
31985
|
+
"/assets/game/player/misa-front.png": {
|
|
31732
31986
|
"type": "image/png",
|
|
31733
|
-
"etag": "\"
|
|
31734
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31735
|
-
"size":
|
|
31736
|
-
"path": "../public/assets/game/
|
|
31987
|
+
"etag": "\"155-5X/+kju2mVH43N4/093cbqbcr+I\"",
|
|
31988
|
+
"mtime": "2026-08-25T12:20:54.516Z",
|
|
31989
|
+
"size": 341,
|
|
31990
|
+
"path": "../public/assets/game/player/misa-front.png"
|
|
31737
31991
|
},
|
|
31738
|
-
"/
|
|
31739
|
-
"type": "
|
|
31740
|
-
"etag": "\"
|
|
31741
|
-
"mtime": "2026-
|
|
31742
|
-
"size":
|
|
31743
|
-
"path": "../public/
|
|
31992
|
+
"/assets/game/player/misa-left-walk.000.png": {
|
|
31993
|
+
"type": "image/png",
|
|
31994
|
+
"etag": "\"13f-Hlll+U+bluQUD8w3klFf7vww08M\"",
|
|
31995
|
+
"mtime": "2026-08-25T12:20:54.516Z",
|
|
31996
|
+
"size": 319,
|
|
31997
|
+
"path": "../public/assets/game/player/misa-left-walk.000.png"
|
|
31744
31998
|
},
|
|
31745
|
-
"/assets/game/
|
|
31999
|
+
"/assets/game/player/misa-left-walk.001.png": {
|
|
31746
32000
|
"type": "image/png",
|
|
31747
|
-
"etag": "\"
|
|
31748
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31749
|
-
"size":
|
|
31750
|
-
"path": "../public/assets/game/
|
|
32001
|
+
"etag": "\"13f-kvFuR3pXnfcL/C63pYoL58iuFOk\"",
|
|
32002
|
+
"mtime": "2026-08-25T12:20:54.516Z",
|
|
32003
|
+
"size": 319,
|
|
32004
|
+
"path": "../public/assets/game/player/misa-left-walk.001.png"
|
|
32005
|
+
},
|
|
32006
|
+
"/assets/game/player/misa-left-walk.002.png": {
|
|
32007
|
+
"type": "image/png",
|
|
32008
|
+
"etag": "\"13e-ZO/OghsjeAi+tGQq5r7slwZn0zg\"",
|
|
32009
|
+
"mtime": "2026-08-25T12:20:54.516Z",
|
|
32010
|
+
"size": 318,
|
|
32011
|
+
"path": "../public/assets/game/player/misa-left-walk.002.png"
|
|
32012
|
+
},
|
|
32013
|
+
"/assets/game/player/misa-left-walk.003.png": {
|
|
32014
|
+
"type": "image/png",
|
|
32015
|
+
"etag": "\"13f-1/+5Oh6upY4V8FkyK62tdXeFc7o\"",
|
|
32016
|
+
"mtime": "2026-08-25T12:20:54.516Z",
|
|
32017
|
+
"size": 319,
|
|
32018
|
+
"path": "../public/assets/game/player/misa-left-walk.003.png"
|
|
32019
|
+
},
|
|
32020
|
+
"/assets/game/player/misa-right-walk.000.png": {
|
|
32021
|
+
"type": "image/png",
|
|
32022
|
+
"etag": "\"12d-LFv0nkkwwOzytOb66XkVjd6tkHE\"",
|
|
32023
|
+
"mtime": "2026-08-25T12:20:54.516Z",
|
|
32024
|
+
"size": 301,
|
|
32025
|
+
"path": "../public/assets/game/player/misa-right-walk.000.png"
|
|
32026
|
+
},
|
|
32027
|
+
"/assets/game/player/misa-left.png": {
|
|
32028
|
+
"type": "image/png",
|
|
32029
|
+
"etag": "\"13f-U80SqejQLrLmFSm4ifHPjYI/r5Q\"",
|
|
32030
|
+
"mtime": "2026-08-25T12:20:54.516Z",
|
|
32031
|
+
"size": 319,
|
|
32032
|
+
"path": "../public/assets/game/player/misa-left.png"
|
|
32033
|
+
},
|
|
32034
|
+
"/assets/game/player/misa-right-walk.003.png": {
|
|
32035
|
+
"type": "image/png",
|
|
32036
|
+
"etag": "\"12e-1Tf+ktOQnj4YEenOBQ+4j9KNxVQ\"",
|
|
32037
|
+
"mtime": "2026-08-25T12:20:54.517Z",
|
|
32038
|
+
"size": 302,
|
|
32039
|
+
"path": "../public/assets/game/player/misa-right-walk.003.png"
|
|
32040
|
+
},
|
|
32041
|
+
"/assets/game/player/misa-right-walk.001.png": {
|
|
32042
|
+
"type": "image/png",
|
|
32043
|
+
"etag": "\"12e-DPDndNK7hnSQCpyHmbRm1ttAM1s\"",
|
|
32044
|
+
"mtime": "2026-08-25T12:20:54.517Z",
|
|
32045
|
+
"size": 302,
|
|
32046
|
+
"path": "../public/assets/game/player/misa-right-walk.001.png"
|
|
32047
|
+
},
|
|
32048
|
+
"/assets/game/player/misa-right-walk.002.png": {
|
|
32049
|
+
"type": "image/png",
|
|
32050
|
+
"etag": "\"12f-3fV+VP6QPPPljfYuG6yhztcSIXc\"",
|
|
32051
|
+
"mtime": "2026-08-25T12:20:54.517Z",
|
|
32052
|
+
"size": 303,
|
|
32053
|
+
"path": "../public/assets/game/player/misa-right-walk.002.png"
|
|
32054
|
+
},
|
|
32055
|
+
"/assets/game/player/misa-right.png": {
|
|
32056
|
+
"type": "image/png",
|
|
32057
|
+
"etag": "\"12e-u2oP2dt8nlrp15zVNaNSSzpBs0Y\"",
|
|
32058
|
+
"mtime": "2026-08-25T12:20:54.517Z",
|
|
32059
|
+
"size": 302,
|
|
32060
|
+
"path": "../public/assets/game/player/misa-right.png"
|
|
32061
|
+
},
|
|
32062
|
+
"/_nuxt/builds/meta/88479a5b-ce6a-400f-9737-1cc9f54b1fe5.json": {
|
|
32063
|
+
"type": "application/json",
|
|
32064
|
+
"etag": "\"58-hopV0Ugj2gZccRuZXf9BmnOALwo\"",
|
|
32065
|
+
"mtime": "2026-09-06T06:27:48.072Z",
|
|
32066
|
+
"size": 88,
|
|
32067
|
+
"path": "../public/_nuxt/builds/meta/88479a5b-ce6a-400f-9737-1cc9f54b1fe5.json"
|
|
31751
32068
|
}
|
|
31752
32069
|
};
|
|
31753
32070
|
|
|
@@ -32153,10 +32470,12 @@ const _lazy_2iGKST = () => import('../routes/api/workshop/mailbox/all.get.mjs');
|
|
|
32153
32470
|
const _lazy_J6CvCX = () => import('../routes/api/workshop/memories/maintenance.post.mjs');
|
|
32154
32471
|
const _lazy_LRmOHW = () => import('../routes/api/workshop/index7.get.mjs');
|
|
32155
32472
|
const _lazy_cmZtLZ = () => import('../routes/api/workshop/index6.post.mjs');
|
|
32473
|
+
const _lazy_XX9fDc = () => import('../routes/api/workshop/index8.get.mjs');
|
|
32474
|
+
const _lazy_yaEjdd = () => import('../routes/api/workshop/index.put.mjs');
|
|
32156
32475
|
const _lazy__lD5l_ = () => import('../routes/api/workshop/plugins/_name/disable.post.mjs');
|
|
32157
32476
|
const _lazy_HZYjW8 = () => import('../routes/api/workshop/plugins/_name/enable.post.mjs');
|
|
32158
32477
|
const _lazy_yCW7sb = () => import('../routes/api/workshop/plugins/index.get.mjs');
|
|
32159
|
-
const _lazy_WewPGz = () => import('../routes/api/workshop/
|
|
32478
|
+
const _lazy_WewPGz = () => import('../routes/api/workshop/index9.get.mjs');
|
|
32160
32479
|
const _lazy_RWH736 = () => import('../routes/api/workshop/runtime.get.mjs');
|
|
32161
32480
|
const _lazy_3ImWSQ = () => import('../routes/api/workshop/scene/layouts.get.mjs');
|
|
32162
32481
|
const _lazy_u16cXh = () => import('../routes/api/workshop/scene/layouts/_channelId_.delete.mjs');
|
|
@@ -32175,7 +32494,7 @@ const _lazy_qFs78O = () => import('../routes/api/workshop/teams/_id/deploy.post.
|
|
|
32175
32494
|
const _lazy_KpUmMl = () => import('../routes/api/workshop/teams/_id/members/_agentId_.delete.mjs');
|
|
32176
32495
|
const _lazy_QonglT = () => import('../routes/api/workshop/teams/_id/index.get.mjs');
|
|
32177
32496
|
const _lazy_k1sUOm = () => import('../routes/api/workshop/teams/_id/index.post.mjs');
|
|
32178
|
-
const _lazy_s5XbV8 = () => import('../routes/api/workshop/
|
|
32497
|
+
const _lazy_s5XbV8 = () => import('../routes/api/workshop/index10.get.mjs');
|
|
32179
32498
|
const _lazy_1skCLM = () => import('../routes/api/workshop/index7.post.mjs');
|
|
32180
32499
|
const _lazy_dMbmjJ = () => import('../routes/api/workshop/users/me.get.mjs');
|
|
32181
32500
|
const _lazy_bjrVjh = () => import('../routes/api/workshop/users/register.post.mjs');
|
|
@@ -32183,7 +32502,7 @@ const _lazy_aVK7tA = () => import('../routes/api/workshop/workspaces/_id/channel
|
|
|
32183
32502
|
const _lazy_iX4xNa = () => import('../routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs');
|
|
32184
32503
|
const _lazy_4thuTL = () => import('../routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs');
|
|
32185
32504
|
const _lazy_pSf6CV = () => import('../routes/api/workshop/workspaces/index.delete.mjs');
|
|
32186
|
-
const _lazy_HyhUaS = () => import('../routes/api/workshop/
|
|
32505
|
+
const _lazy_HyhUaS = () => import('../routes/api/workshop/index11.get.mjs');
|
|
32187
32506
|
const _lazy_2pjBry = () => import('../routes/api/workshop/index8.post.mjs');
|
|
32188
32507
|
const _lazy_gDD48s = () => Promise.resolve().then(function () { return ws$1; });
|
|
32189
32508
|
const _lazy_YccnuE = () => import('../routes/renderer.mjs').then(function (n) { return n.r; });
|
|
@@ -32359,6 +32678,8 @@ const handlers = [
|
|
|
32359
32678
|
{ route: '/api/workshop/memories/maintenance', handler: _lazy_J6CvCX, lazy: true, middleware: false, method: "post" },
|
|
32360
32679
|
{ route: '/api/workshop/ops-logs', handler: _lazy_LRmOHW, lazy: true, middleware: false, method: "get" },
|
|
32361
32680
|
{ route: '/api/workshop/ops-logs', handler: _lazy_cmZtLZ, lazy: true, middleware: false, method: "post" },
|
|
32681
|
+
{ route: '/api/workshop/permissions', handler: _lazy_XX9fDc, lazy: true, middleware: false, method: "get" },
|
|
32682
|
+
{ route: '/api/workshop/permissions', handler: _lazy_yaEjdd, lazy: true, middleware: false, method: "put" },
|
|
32362
32683
|
{ route: '/api/workshop/plugins/:name/disable', handler: _lazy__lD5l_, lazy: true, middleware: false, method: "post" },
|
|
32363
32684
|
{ route: '/api/workshop/plugins/:name/enable', handler: _lazy_HZYjW8, lazy: true, middleware: false, method: "post" },
|
|
32364
32685
|
{ route: '/api/workshop/plugins/:name', handler: _lazy_yCW7sb, lazy: true, middleware: false, method: "get" },
|
|
@@ -32786,5 +33107,5 @@ function setupGracefulShutdown(listener, nitroApp) {
|
|
|
32786
33107
|
});
|
|
32787
33108
|
}
|
|
32788
33109
|
|
|
32789
|
-
export {
|
|
33110
|
+
export { getHeader as $, abortTerminal as A, sendTerminalInput as B, resolveUserByToken as C, findLiveTerminalPidByAgent as D, terminalSessionSnapshot as E, subscribeTerminal as F, listHarnessProcesses as G, AppError as H, getSystemConfigService as I, createEventStream as J, userService as K, readValidatedBody as L, zValidator as M, getValidatedQuery as N, extractBearerToken as O, userRepository as P, getRequestHeader as Q, setResponseStatus as R, parseJson as S, getToolApprovals as T, audit as U, getQuery as V, getAgentNodeBindingRepo as W, getDaqController as X, getDcwController as Y, ErrorCodes as Z, lineMode as _, trapUnhandledNodeErrors as a, DAQ_TEMPLATES as a$, loadJsonFile as a0, saveJsonFileAtomic as a1, ensureDataDir as a2, readMultipartFormData as a3, ensureLeadSchedulerLoop as a4, listTerminalSessions as a5, broadcastSceneEvent as a6, recordOps as a7, bindDaqHostPorts as a8, bindDaqBroadcast as a9, spawnLineProcess as aA, getHitlRegistry as aB, notifyGrantsChanged as aC, setPluginEnabled as aD, reloadPluginHost as aE, publishSceneLayoutEvent as aF, encodePath as aG, buildAssetsURL as aH, publicAssetsURL as aI, defineRenderHandler as aJ, getRouteRules as aK, relative as aL, joinURL as aM, getResponseStatusText as aN, getResponseStatus as aO, createHooks as aP, sanitizeStatusCode as aQ, klona as aR, isEqual as aS, setCookie as aT, getCookie as aU, deleteCookie as aV, $fetch as aW, baseURL as aX, defu as aY, getRequestProtocol as aZ, appendResponseHeader as a_, bumpTaggedSamples as aa, getDcwLineRepo as ab, getDcwRecipeRepo as ac, getAllActiveLineRuns as ad, getActiveLineRun as ae, deviceScenePayload as af, requireLineMode as ag, daqRuntimeSettings as ah, tsdbReady as ai, getDaqQueue as aj, listDaqTemplates as ak, daqInfraStatus as al, filterByLine as am, daqInfraConfig as an, getDaqTemplateRegistry as ao, normalizeDriverKind as ap, bindDcwBroadcast as aq, gateDangerous as ar, getRecipeRollBackManager as as, visibleLineIds as at, isPrivilegedRole as au, listDcwTemplates as av, emitLineLifecycle as aw, getDcwTemplateRegistry as ax, harnessMetas as ay, StdioJsonRpcClient as az, useNitroApp as b, DCW_TEMPLATES as b0, daqKeyFromRef as b1, DAQ_DRIVERS as b2, DCW_DRIVERS as b3, DAQ_TEMPLATE_ICONS as b4, DCW_LINE_COLORS as b5, ws$1 as b6, defineApiHandler as c, destr as d, useServerConfig as e, getDeviceTwinRepo as f, getWorkshopManager as g, defineEventHandler as h, readRawBody as i, getRequestURL as j, getRequestHeaders as k, getOps as l, setResponseHeader as m, createError$1 as n, readBody as o, getPluginHost as p, getRouterParam as q, randomUUID as r, setupGracefulShutdown as s, toNodeListener as t, useRuntimeConfig as u, readClientScript as v, setHeader as w, pluginManifest as x, defineWebSocketHandler as y, respondTerminalUi as z };
|
|
32790
33111
|
//# sourceMappingURL=nitro.mjs.map
|