agentworkshop 0.7.9 → 0.7.12
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/{BDASpD_i.js → BBwMH_hG.js} +1 -1
- 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/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/CcwJ2mrD2.js +1 -0
- package/.output/public/_nuxt/Cj6139IM.js +1 -0
- package/.output/public/_nuxt/{6PZPfFcO.js → Cor9siSf.js} +1 -1
- package/.output/public/_nuxt/CvYfzHYz.js +1 -0
- package/.output/public/_nuxt/D2JyEL28.js +14 -0
- package/.output/public/_nuxt/{DDdEnkdw.js → D8xY-Yjc.js} +2 -2
- package/.output/public/_nuxt/{Ct68Z0232.js → DA4lxCWC2.js} +1 -1
- 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/DaE5saZg.js +1 -0
- 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/Dsdy4Ua-.js +1 -0
- package/.output/public/_nuxt/{DN5RuZ8k.js → DyisHHzD.js} +1 -1
- package/.output/public/_nuxt/{91DZTUMJ.js → E88a-JCG.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/bAFueD6a.js +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/54e22640-4fd0-4fee-9077-31d4d4bb7969.json +1 -0
- package/.output/public/_nuxt/dcw.rpqpOYQ8.css +1 -0
- 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.Bv_GCmPP.css} +1 -1
- package/.output/public/_nuxt/hb_ceMJP.js +1 -0
- package/.output/public/_nuxt/{B1g8pJmr.js → kkEthL84.js} +1 -1
- package/.output/public/_nuxt/logs.BS1sb41K.css +1 -0
- package/.output/public/_nuxt/pages.BkE-AfIb.css +1 -0
- package/.output/public/_nuxt/permissions.DTRtZeTw.css +1 -0
- package/.output/public/_nuxt/plugins.BcSEwwGb.css +1 -0
- package/.output/public/_nuxt/settings.BqMF2nfj.css +1 -0
- package/.output/public/_nuxt/tokens.rW1xHxRW.css +1 -0
- package/.output/public/_nuxt/workshop.CbymC2LY.css +1 -0
- 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 +1549 -1228
- 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-B0dtiHFG.mjs} +47 -47
- package/.output/server/chunks/build/dcw-B0dtiHFG.mjs.map +1 -0
- package/.output/server/chunks/build/{default-Dnjs36e8.mjs → default-DdV642BY.mjs} +41 -13
- package/.output/server/chunks/build/{default-Dnjs36e8.mjs.map → default-DdV642BY.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-Crf6f1IC.mjs} +39 -40
- package/.output/server/chunks/build/logs-Crf6f1IC.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-BmRUbGUi.mjs} +32 -22
- package/.output/server/chunks/build/pages-BmRUbGUi.mjs.map +1 -0
- package/.output/server/chunks/build/permissions-CxEgXic0.mjs +534 -0
- package/.output/server/chunks/build/permissions-CxEgXic0.mjs.map +1 -0
- package/.output/server/chunks/build/{plugins-4FMWkN8d.mjs → plugins-wLIKHcIE.mjs} +19 -20
- package/.output/server/chunks/build/{plugins-4FMWkN8d.mjs.map → plugins-wLIKHcIE.mjs.map} +1 -1
- 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-BKLzcdMg.mjs} +53 -84
- package/.output/server/chunks/build/tokens-BKLzcdMg.mjs.map +1 -0
- 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-CTcYDq2i.mjs} +29 -24
- package/.output/server/chunks/build/{workshop-BhWnJMWs.mjs.map → workshop-CTcYDq2i.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 +275 -33
- 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/assets/css/main.css +161 -0
- package/app/components/AppSidebar.vue +7 -1
- package/app/components/AwChart.vue +12 -2
- package/app/composables/useRouteMeta.ts +8 -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/dcw/index.vue +1079 -1079
- package/app/pages/index.vue +7 -2
- package/app/pages/logs/index.vue +621 -621
- package/app/pages/permissions/index.vue +330 -0
- package/app/pages/plugins/index.vue +6 -3
- package/app/pages/settings.vue +4 -2
- package/app/pages/tokens.vue +9 -13
- package/app/pages/workshop/index.vue +3 -1
- 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 +1944 -1906
- package/i18n/locales/zh-CN.ts +1943 -1905
- 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-kicker-check.mjs +11 -0
- package/scripts/_dbg-perms-e2e.mjs +102 -0
- package/scripts/_dbg-perms-visual.mjs +36 -0
- package/scripts/_dbg-plugins-e2e.mjs +1 -1
- package/scripts/_dbg-protocol-matrix.mjs +16 -0
- package/scripts/_dbg-swatch-check.mjs +10 -0
- package/scripts/_dbg-ui-shots.mjs +28 -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 +791 -528
- 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/B0HpdCKS.js +0 -1
- 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/D0Szyn_D.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/dcw.DcDjwvqv.css +0 -1
- package/.output/public/_nuxt/logs.BO-BSyjm.css +0 -1
- package/.output/public/_nuxt/pKv_VWR4.js +0 -1
- package/.output/public/_nuxt/pages.CytEOfUs.css +0 -1
- package/.output/public/_nuxt/plugins.Clsky_kl.css +0 -1
- package/.output/public/_nuxt/settings.DeRNNUcP.css +0 -1
- package/.output/public/_nuxt/tokens.BPLe9ioQ.css +0 -1
- package/.output/public/_nuxt/wirVyscc.js +0 -1
- package/.output/public/_nuxt/workshop.BIdoGfoC.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/dcw-C7pJ4Y0p.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/pages-C_VSGSGo.mjs.map +0 -1
- package/.output/server/chunks/build/settings-DA8IkGLo.mjs.map +0 -1
- package/.output/server/chunks/build/tokens-DKMvvk3e.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": "54e22640-4fd0-4fee-9077-31d4d4bb7969",
|
|
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.12",
|
|
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\"",
|
|
@@ -30055,1258 +30337,1286 @@ const assets = {
|
|
|
30055
30337
|
"size": 819,
|
|
30056
30338
|
"path": "../public/favicon.svg"
|
|
30057
30339
|
},
|
|
30058
|
-
"/_nuxt/-
|
|
30340
|
+
"/_nuxt/-6OnbLFb.js": {
|
|
30059
30341
|
"type": "text/javascript; charset=utf-8",
|
|
30060
|
-
"etag": "\"
|
|
30061
|
-
"mtime": "2026-09-
|
|
30062
|
-
"size":
|
|
30063
|
-
"path": "../public/_nuxt/-
|
|
30342
|
+
"etag": "\"1343-vdAf4w0aJYo+a7mW3u5aS6nVAXY\"",
|
|
30343
|
+
"mtime": "2026-09-06T08:07:40.895Z",
|
|
30344
|
+
"size": 4931,
|
|
30345
|
+
"path": "../public/_nuxt/-6OnbLFb.js"
|
|
30346
|
+
},
|
|
30347
|
+
"/_nuxt/6vYobj4F.js": {
|
|
30348
|
+
"type": "text/javascript; charset=utf-8",
|
|
30349
|
+
"etag": "\"626-XI9KdnbsNv0FxC1h6cVurcJhbQI\"",
|
|
30350
|
+
"mtime": "2026-09-06T08:07:40.895Z",
|
|
30351
|
+
"size": 1574,
|
|
30352
|
+
"path": "../public/_nuxt/6vYobj4F.js"
|
|
30064
30353
|
},
|
|
30065
30354
|
"/_nuxt/36oeS8_R2.js": {
|
|
30066
30355
|
"type": "text/javascript; charset=utf-8",
|
|
30067
30356
|
"etag": "\"d6-9W7EHt23WjRGOYCN8bz9Yy0aMhg\"",
|
|
30068
|
-
"mtime": "2026-09-
|
|
30357
|
+
"mtime": "2026-09-06T08:07:40.895Z",
|
|
30069
30358
|
"size": 214,
|
|
30070
30359
|
"path": "../public/_nuxt/36oeS8_R2.js"
|
|
30071
30360
|
},
|
|
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": {
|
|
30361
|
+
"/_nuxt/-nb2uqVg.js": {
|
|
30080
30362
|
"type": "text/javascript; charset=utf-8",
|
|
30081
|
-
"etag": "\"
|
|
30082
|
-
"mtime": "2026-09-
|
|
30083
|
-
"size":
|
|
30084
|
-
"path": "../public/_nuxt
|
|
30363
|
+
"etag": "\"1d2b-jLwuC0KKuwuubw09IH7Tm1lfqoE\"",
|
|
30364
|
+
"mtime": "2026-09-06T08:07:40.895Z",
|
|
30365
|
+
"size": 7467,
|
|
30366
|
+
"path": "../public/_nuxt/-nb2uqVg.js"
|
|
30085
30367
|
},
|
|
30086
|
-
"/_nuxt/
|
|
30368
|
+
"/_nuxt/B-xskWta.js": {
|
|
30087
30369
|
"type": "text/javascript; charset=utf-8",
|
|
30088
|
-
"etag": "\"
|
|
30089
|
-
"mtime": "2026-09-
|
|
30090
|
-
"size":
|
|
30091
|
-
"path": "../public/_nuxt/
|
|
30370
|
+
"etag": "\"4842-u3DYd8BlLUn7q26s3PJm3Fvo+j4\"",
|
|
30371
|
+
"mtime": "2026-09-06T08:07:40.896Z",
|
|
30372
|
+
"size": 18498,
|
|
30373
|
+
"path": "../public/_nuxt/B-xskWta.js"
|
|
30092
30374
|
},
|
|
30093
30375
|
"/_nuxt/agents.CEbox5-D.css": {
|
|
30094
30376
|
"type": "text/css; charset=utf-8",
|
|
30095
30377
|
"etag": "\"43e-sjh3eXQzQvuPq+iaiDAqlB5A/o8\"",
|
|
30096
|
-
"mtime": "2026-09-
|
|
30378
|
+
"mtime": "2026-09-06T08:07:40.926Z",
|
|
30097
30379
|
"size": 1086,
|
|
30098
30380
|
"path": "../public/_nuxt/agents.CEbox5-D.css"
|
|
30099
30381
|
},
|
|
30100
|
-
"/_nuxt/
|
|
30382
|
+
"/_nuxt/arUY5dyq2.js": {
|
|
30101
30383
|
"type": "text/javascript; charset=utf-8",
|
|
30102
|
-
"etag": "\"
|
|
30103
|
-
"mtime": "2026-09-
|
|
30104
|
-
"size":
|
|
30105
|
-
"path": "../public/_nuxt/
|
|
30384
|
+
"etag": "\"59f6-d7NzfWgWT2fTR2MXV0/3pKn7pms\"",
|
|
30385
|
+
"mtime": "2026-09-06T08:07:40.922Z",
|
|
30386
|
+
"size": 23030,
|
|
30387
|
+
"path": "../public/_nuxt/arUY5dyq2.js"
|
|
30106
30388
|
},
|
|
30107
|
-
"/_nuxt/
|
|
30389
|
+
"/_nuxt/B3Psw_sL.js": {
|
|
30108
30390
|
"type": "text/javascript; charset=utf-8",
|
|
30109
|
-
"etag": "\"
|
|
30110
|
-
"mtime": "2026-09-
|
|
30111
|
-
"size":
|
|
30112
|
-
"path": "../public/_nuxt/
|
|
30391
|
+
"etag": "\"35bb-+DrI8MnN/s50k/0E1BAPSxI6dg8\"",
|
|
30392
|
+
"mtime": "2026-09-06T08:07:40.905Z",
|
|
30393
|
+
"size": 13755,
|
|
30394
|
+
"path": "../public/_nuxt/B3Psw_sL.js"
|
|
30113
30395
|
},
|
|
30114
|
-
"/_nuxt/
|
|
30396
|
+
"/_nuxt/B53Mp7lD.js": {
|
|
30115
30397
|
"type": "text/javascript; charset=utf-8",
|
|
30116
|
-
"etag": "\"
|
|
30117
|
-
"mtime": "2026-09-
|
|
30118
|
-
"size":
|
|
30119
|
-
"path": "../public/_nuxt/
|
|
30398
|
+
"etag": "\"4256-Pirq2khpmJQqhRxinPVbluoGfGI\"",
|
|
30399
|
+
"mtime": "2026-09-06T08:07:40.906Z",
|
|
30400
|
+
"size": 16982,
|
|
30401
|
+
"path": "../public/_nuxt/B53Mp7lD.js"
|
|
30120
30402
|
},
|
|
30121
|
-
"/_nuxt/
|
|
30403
|
+
"/_nuxt/B5S_UyaC.js": {
|
|
30122
30404
|
"type": "text/javascript; charset=utf-8",
|
|
30123
|
-
"etag": "\"
|
|
30124
|
-
"mtime": "2026-09-
|
|
30125
|
-
"size":
|
|
30126
|
-
"path": "../public/_nuxt/
|
|
30405
|
+
"etag": "\"2435-cVXb4Ze0vEZbXwWSHOgo7NJ59ME\"",
|
|
30406
|
+
"mtime": "2026-09-06T08:07:40.906Z",
|
|
30407
|
+
"size": 9269,
|
|
30408
|
+
"path": "../public/_nuxt/B5S_UyaC.js"
|
|
30127
30409
|
},
|
|
30128
30410
|
"/_nuxt/B7wL3pDk.js": {
|
|
30129
30411
|
"type": "text/javascript; charset=utf-8",
|
|
30130
30412
|
"etag": "\"3d5-itnLaBVfNThToG43nVPq3jMDhq0\"",
|
|
30131
|
-
"mtime": "2026-09-
|
|
30413
|
+
"mtime": "2026-09-06T08:07:40.906Z",
|
|
30132
30414
|
"size": 981,
|
|
30133
30415
|
"path": "../public/_nuxt/B7wL3pDk.js"
|
|
30134
30416
|
},
|
|
30135
|
-
"/_nuxt/
|
|
30417
|
+
"/_nuxt/bAFueD6a.js": {
|
|
30136
30418
|
"type": "text/javascript; charset=utf-8",
|
|
30137
|
-
"etag": "\"
|
|
30138
|
-
"mtime": "2026-09-
|
|
30139
|
-
"size":
|
|
30140
|
-
"path": "../public/_nuxt/
|
|
30419
|
+
"etag": "\"193d-ZYfa844YaFXfx11WB4DcqB3k/yo\"",
|
|
30420
|
+
"mtime": "2026-09-06T08:07:40.923Z",
|
|
30421
|
+
"size": 6461,
|
|
30422
|
+
"path": "../public/_nuxt/bAFueD6a.js"
|
|
30141
30423
|
},
|
|
30142
|
-
"/_nuxt/
|
|
30424
|
+
"/_nuxt/BBwMH_hG.js": {
|
|
30143
30425
|
"type": "text/javascript; charset=utf-8",
|
|
30144
|
-
"etag": "\"
|
|
30145
|
-
"mtime": "2026-09-
|
|
30146
|
-
"size":
|
|
30147
|
-
"path": "../public/_nuxt/
|
|
30426
|
+
"etag": "\"587d-zV1IOugR08gc0LlOGMSClQfdApQ\"",
|
|
30427
|
+
"mtime": "2026-09-06T08:07:40.906Z",
|
|
30428
|
+
"size": 22653,
|
|
30429
|
+
"path": "../public/_nuxt/BBwMH_hG.js"
|
|
30148
30430
|
},
|
|
30149
|
-
"/_nuxt/
|
|
30431
|
+
"/_nuxt/BBrRELH32.js": {
|
|
30150
30432
|
"type": "text/javascript; charset=utf-8",
|
|
30151
|
-
"etag": "\"
|
|
30152
|
-
"mtime": "2026-09-
|
|
30153
|
-
"size":
|
|
30154
|
-
"path": "../public/_nuxt/
|
|
30433
|
+
"etag": "\"5bc-jGs6+2LpPidhbmCHZyKfmEWQxCI\"",
|
|
30434
|
+
"mtime": "2026-09-06T08:07:40.906Z",
|
|
30435
|
+
"size": 1468,
|
|
30436
|
+
"path": "../public/_nuxt/BBrRELH32.js"
|
|
30155
30437
|
},
|
|
30156
|
-
"/_nuxt/
|
|
30438
|
+
"/_nuxt/BcrN7QEl2.js": {
|
|
30157
30439
|
"type": "text/javascript; charset=utf-8",
|
|
30158
|
-
"etag": "\"
|
|
30159
|
-
"mtime": "2026-09-
|
|
30160
|
-
"size":
|
|
30161
|
-
"path": "../public/_nuxt/
|
|
30440
|
+
"etag": "\"b14-CLdyddO7m6guAKfIeyReGHA6Jwg\"",
|
|
30441
|
+
"mtime": "2026-09-06T08:07:40.910Z",
|
|
30442
|
+
"size": 2836,
|
|
30443
|
+
"path": "../public/_nuxt/BcrN7QEl2.js"
|
|
30162
30444
|
},
|
|
30163
|
-
"/_nuxt/
|
|
30445
|
+
"/_nuxt/Bc3PiGGr.js": {
|
|
30164
30446
|
"type": "text/javascript; charset=utf-8",
|
|
30165
|
-
"etag": "\"
|
|
30166
|
-
"mtime": "2026-09-
|
|
30167
|
-
"size":
|
|
30168
|
-
"path": "../public/_nuxt/
|
|
30447
|
+
"etag": "\"b0a6-an7ekHZpfAEw9EM+R3gB2d6eZHg\"",
|
|
30448
|
+
"mtime": "2026-09-06T08:07:40.909Z",
|
|
30449
|
+
"size": 45222,
|
|
30450
|
+
"path": "../public/_nuxt/Bc3PiGGr.js"
|
|
30169
30451
|
},
|
|
30170
|
-
"/_nuxt/
|
|
30452
|
+
"/_nuxt/BbZAzXjZ2.js": {
|
|
30171
30453
|
"type": "text/javascript; charset=utf-8",
|
|
30172
|
-
"etag": "\"
|
|
30173
|
-
"mtime": "2026-09-
|
|
30174
|
-
"size":
|
|
30175
|
-
"path": "../public/_nuxt/
|
|
30454
|
+
"etag": "\"14fe-0KLPumZNGMQ1C2rj5UA7kI1IBvY\"",
|
|
30455
|
+
"mtime": "2026-09-06T08:07:40.909Z",
|
|
30456
|
+
"size": 5374,
|
|
30457
|
+
"path": "../public/_nuxt/BbZAzXjZ2.js"
|
|
30176
30458
|
},
|
|
30177
|
-
"/_nuxt/
|
|
30459
|
+
"/_nuxt/BfGc7TJp.js": {
|
|
30178
30460
|
"type": "text/javascript; charset=utf-8",
|
|
30179
|
-
"etag": "\"
|
|
30180
|
-
"mtime": "2026-09-
|
|
30181
|
-
"size":
|
|
30182
|
-
"path": "../public/_nuxt/
|
|
30461
|
+
"etag": "\"f5-ynAHqm+XhchZ1co7YynIGiIextg\"",
|
|
30462
|
+
"mtime": "2026-09-06T08:07:40.910Z",
|
|
30463
|
+
"size": 245,
|
|
30464
|
+
"path": "../public/_nuxt/BfGc7TJp.js"
|
|
30465
|
+
},
|
|
30466
|
+
"/_nuxt/BgOhoDTI.js": {
|
|
30467
|
+
"type": "text/javascript; charset=utf-8",
|
|
30468
|
+
"etag": "\"2543-qvpXnC+y5grUwUw+mC7meP0i3EA\"",
|
|
30469
|
+
"mtime": "2026-09-06T08:07:40.910Z",
|
|
30470
|
+
"size": 9539,
|
|
30471
|
+
"path": "../public/_nuxt/BgOhoDTI.js"
|
|
30183
30472
|
},
|
|
30184
30473
|
"/_nuxt/BeIfu4N3.js": {
|
|
30185
30474
|
"type": "text/javascript; charset=utf-8",
|
|
30186
30475
|
"etag": "\"bc89-neyoILuYLlrhO8n1ehz7UmvocMs\"",
|
|
30187
|
-
"mtime": "2026-09-
|
|
30476
|
+
"mtime": "2026-09-06T08:07:40.910Z",
|
|
30188
30477
|
"size": 48265,
|
|
30189
30478
|
"path": "../public/_nuxt/BeIfu4N3.js"
|
|
30190
30479
|
},
|
|
30191
|
-
"/_nuxt/
|
|
30480
|
+
"/_nuxt/BDUjyaF4.js": {
|
|
30192
30481
|
"type": "text/javascript; charset=utf-8",
|
|
30193
|
-
"etag": "\"
|
|
30194
|
-
"mtime": "2026-09-
|
|
30195
|
-
"size":
|
|
30196
|
-
"path": "../public/_nuxt/
|
|
30482
|
+
"etag": "\"12149-hpS4uBcTVyjMF/ahBrfPvWSV6dM\"",
|
|
30483
|
+
"mtime": "2026-09-06T08:07:40.907Z",
|
|
30484
|
+
"size": 74057,
|
|
30485
|
+
"path": "../public/_nuxt/BDUjyaF4.js"
|
|
30197
30486
|
},
|
|
30198
|
-
"/_nuxt/
|
|
30487
|
+
"/_nuxt/Bmpvki7M.js": {
|
|
30199
30488
|
"type": "text/javascript; charset=utf-8",
|
|
30200
|
-
"etag": "\"
|
|
30201
|
-
"mtime": "2026-09-
|
|
30202
|
-
"size":
|
|
30203
|
-
"path": "../public/_nuxt/
|
|
30489
|
+
"etag": "\"623-ghkdDMae0RDQxJr6vx8je/qPTRs\"",
|
|
30490
|
+
"mtime": "2026-09-06T08:07:40.910Z",
|
|
30491
|
+
"size": 1571,
|
|
30492
|
+
"path": "../public/_nuxt/Bmpvki7M.js"
|
|
30204
30493
|
},
|
|
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-06T08:07:40.907Z",
|
|
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-06T08:07:40.908Z",
|
|
30216
30505
|
"size": 1351848,
|
|
30217
30506
|
"path": "../public/_nuxt/BGkumHZ32.js"
|
|
30218
30507
|
},
|
|
30508
|
+
"/_nuxt/BNXfwXpE.js": {
|
|
30509
|
+
"type": "text/javascript; charset=utf-8",
|
|
30510
|
+
"etag": "\"30a-SKr3Bmmq+lyC2EG7XQ/M7P1jWog\"",
|
|
30511
|
+
"mtime": "2026-09-06T08:07:40.908Z",
|
|
30512
|
+
"size": 778,
|
|
30513
|
+
"path": "../public/_nuxt/BNXfwXpE.js"
|
|
30514
|
+
},
|
|
30219
30515
|
"/_nuxt/BN_PdN3J.js": {
|
|
30220
30516
|
"type": "text/javascript; charset=utf-8",
|
|
30221
30517
|
"etag": "\"10b9b-D693oquQMdJ9uX8C5GEOl79xXOE\"",
|
|
30222
|
-
"mtime": "2026-09-
|
|
30518
|
+
"mtime": "2026-09-06T08:07:40.908Z",
|
|
30223
30519
|
"size": 68507,
|
|
30224
30520
|
"path": "../public/_nuxt/BN_PdN3J.js"
|
|
30225
30521
|
},
|
|
30226
30522
|
"/_nuxt/Bp5luxkg2.js": {
|
|
30227
30523
|
"type": "text/javascript; charset=utf-8",
|
|
30228
30524
|
"etag": "\"3a06-wE6nRVKQRjsGzClNYT0f+LE6/Lg\"",
|
|
30229
|
-
"mtime": "2026-09-
|
|
30525
|
+
"mtime": "2026-09-06T08:07:40.910Z",
|
|
30230
30526
|
"size": 14854,
|
|
30231
30527
|
"path": "../public/_nuxt/Bp5luxkg2.js"
|
|
30232
30528
|
},
|
|
30233
30529
|
"/_nuxt/BSCpFtzG.js": {
|
|
30234
30530
|
"type": "text/javascript; charset=utf-8",
|
|
30235
30531
|
"etag": "\"13398-3vxX1fQrPyVWKnXsEX5bmCpF/Eg\"",
|
|
30236
|
-
"mtime": "2026-09-
|
|
30532
|
+
"mtime": "2026-09-06T08:07:40.908Z",
|
|
30237
30533
|
"size": 78744,
|
|
30238
30534
|
"path": "../public/_nuxt/BSCpFtzG.js"
|
|
30239
30535
|
},
|
|
30240
|
-
"/_nuxt/BuktKVqK2.js": {
|
|
30241
|
-
"type": "text/javascript; charset=utf-8",
|
|
30242
|
-
"etag": "\"59e7-pVub+JlxBt/tL6XnwKEEMDod9W8\"",
|
|
30243
|
-
"mtime": "2026-09-05T18:48:20.532Z",
|
|
30244
|
-
"size": 23015,
|
|
30245
|
-
"path": "../public/_nuxt/BuktKVqK2.js"
|
|
30246
|
-
},
|
|
30247
30536
|
"/_nuxt/BSSUlJnx2.js": {
|
|
30248
30537
|
"type": "text/javascript; charset=utf-8",
|
|
30249
30538
|
"etag": "\"5f5-t0OMayeEXY7fEaFUOlppJZZQvtM\"",
|
|
30250
|
-
"mtime": "2026-09-
|
|
30539
|
+
"mtime": "2026-09-06T08:07:40.909Z",
|
|
30251
30540
|
"size": 1525,
|
|
30252
30541
|
"path": "../public/_nuxt/BSSUlJnx2.js"
|
|
30253
30542
|
},
|
|
30254
|
-
"/_nuxt/
|
|
30255
|
-
"type": "text/javascript; charset=utf-8",
|
|
30256
|
-
"etag": "\"626-fp7JumGv3hrekrhXEH2cFy9kSGg\"",
|
|
30257
|
-
"mtime": "2026-09-05T18:48:20.531Z",
|
|
30258
|
-
"size": 1574,
|
|
30259
|
-
"path": "../public/_nuxt/BUPj10t4.js"
|
|
30260
|
-
},
|
|
30261
|
-
"/_nuxt/BUcmySDa2.js": {
|
|
30543
|
+
"/_nuxt/BxPPAkGA.js": {
|
|
30262
30544
|
"type": "text/javascript; charset=utf-8",
|
|
30263
|
-
"etag": "\"
|
|
30264
|
-
"mtime": "2026-09-
|
|
30265
|
-
"size":
|
|
30266
|
-
"path": "../public/_nuxt/
|
|
30545
|
+
"etag": "\"7ebd-9b4xLtZRNbmB3J2esDdIp2+t5sk\"",
|
|
30546
|
+
"mtime": "2026-09-06T08:07:40.911Z",
|
|
30547
|
+
"size": 32445,
|
|
30548
|
+
"path": "../public/_nuxt/BxPPAkGA.js"
|
|
30267
30549
|
},
|
|
30268
30550
|
"/_nuxt/BytVi9VX2.js": {
|
|
30269
30551
|
"type": "text/javascript; charset=utf-8",
|
|
30270
30552
|
"etag": "\"8b9-SsapD0I/64H+tosN0JmRWjisTd0\"",
|
|
30271
|
-
"mtime": "2026-09-
|
|
30553
|
+
"mtime": "2026-09-06T08:07:40.911Z",
|
|
30272
30554
|
"size": 2233,
|
|
30273
30555
|
"path": "../public/_nuxt/BytVi9VX2.js"
|
|
30274
30556
|
},
|
|
30275
|
-
"/_nuxt/By8BpbKH.js": {
|
|
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": {
|
|
30283
|
-
"type": "text/javascript; charset=utf-8",
|
|
30284
|
-
"etag": "\"50eba-EQGueVrdlEzHO7oTVt2LPxnHgRo\"",
|
|
30285
|
-
"mtime": "2026-09-05T18:48:20.532Z",
|
|
30286
|
-
"size": 331450,
|
|
30287
|
-
"path": "../public/_nuxt/BrIJiJSN.js"
|
|
30288
|
-
},
|
|
30289
|
-
"/_nuxt/C3tCneTM.js": {
|
|
30290
|
-
"type": "text/javascript; charset=utf-8",
|
|
30291
|
-
"etag": "\"56ab-/6Cr6erEwmZtrhutqEU3O5P+s0A\"",
|
|
30292
|
-
"mtime": "2026-09-05T18:48:20.533Z",
|
|
30293
|
-
"size": 22187,
|
|
30294
|
-
"path": "../public/_nuxt/C3tCneTM.js"
|
|
30295
|
-
},
|
|
30296
30557
|
"/_nuxt/BZGNTgTQ2.js": {
|
|
30297
30558
|
"type": "text/javascript; charset=utf-8",
|
|
30298
30559
|
"etag": "\"53-pfqlZiZJEbPiLoDxP0PLfz2Ucmw\"",
|
|
30299
|
-
"mtime": "2026-09-
|
|
30560
|
+
"mtime": "2026-09-06T08:07:40.909Z",
|
|
30300
30561
|
"size": 83,
|
|
30301
30562
|
"path": "../public/_nuxt/BZGNTgTQ2.js"
|
|
30302
30563
|
},
|
|
30303
|
-
"/_nuxt/
|
|
30564
|
+
"/_nuxt/BUcmySDa2.js": {
|
|
30565
|
+
"type": "text/javascript; charset=utf-8",
|
|
30566
|
+
"etag": "\"1d27c-MrwgQiovFUP0UVtMJ1LdEF/IrEs\"",
|
|
30567
|
+
"mtime": "2026-09-06T08:07:40.909Z",
|
|
30568
|
+
"size": 119420,
|
|
30569
|
+
"path": "../public/_nuxt/BUcmySDa2.js"
|
|
30570
|
+
},
|
|
30571
|
+
"/_nuxt/BxtpDtzC.js": {
|
|
30572
|
+
"type": "text/javascript; charset=utf-8",
|
|
30573
|
+
"etag": "\"3348-NKn0ndcjz+XrgOw2f4HZ7I2TF34\"",
|
|
30574
|
+
"mtime": "2026-09-06T08:07:40.911Z",
|
|
30575
|
+
"size": 13128,
|
|
30576
|
+
"path": "../public/_nuxt/BxtpDtzC.js"
|
|
30577
|
+
},
|
|
30578
|
+
"/_nuxt/C4OAdbVK2.js": {
|
|
30304
30579
|
"type": "text/javascript; charset=utf-8",
|
|
30305
|
-
"etag": "\"
|
|
30306
|
-
"mtime": "2026-09-
|
|
30307
|
-
"size":
|
|
30308
|
-
"path": "../public/_nuxt/
|
|
30580
|
+
"etag": "\"89e-AQFf/aV6YnDPM3edZWc1ASPluno\"",
|
|
30581
|
+
"mtime": "2026-09-06T08:07:40.912Z",
|
|
30582
|
+
"size": 2206,
|
|
30583
|
+
"path": "../public/_nuxt/C4OAdbVK2.js"
|
|
30309
30584
|
},
|
|
30310
30585
|
"/_nuxt/C9f8QMp12.js": {
|
|
30311
30586
|
"type": "text/javascript; charset=utf-8",
|
|
30312
30587
|
"etag": "\"1896-VcRRXhZEm21djPt3FTvlq+iUccI\"",
|
|
30313
|
-
"mtime": "2026-09-
|
|
30588
|
+
"mtime": "2026-09-06T08:07:40.912Z",
|
|
30314
30589
|
"size": 6294,
|
|
30315
30590
|
"path": "../public/_nuxt/C9f8QMp12.js"
|
|
30316
30591
|
},
|
|
30317
|
-
"/_nuxt/
|
|
30592
|
+
"/_nuxt/C3tCneTM.js": {
|
|
30318
30593
|
"type": "text/javascript; charset=utf-8",
|
|
30319
|
-
"etag": "\"
|
|
30320
|
-
"mtime": "2026-09-
|
|
30321
|
-
"size":
|
|
30322
|
-
"path": "../public/_nuxt/
|
|
30594
|
+
"etag": "\"56ab-/6Cr6erEwmZtrhutqEU3O5P+s0A\"",
|
|
30595
|
+
"mtime": "2026-09-06T08:07:40.912Z",
|
|
30596
|
+
"size": 22187,
|
|
30597
|
+
"path": "../public/_nuxt/C3tCneTM.js"
|
|
30323
30598
|
},
|
|
30324
|
-
"/_nuxt/
|
|
30599
|
+
"/_nuxt/BrIJiJSN.js": {
|
|
30325
30600
|
"type": "text/javascript; charset=utf-8",
|
|
30326
|
-
"etag": "\"
|
|
30327
|
-
"mtime": "2026-09-
|
|
30328
|
-
"size":
|
|
30329
|
-
"path": "../public/_nuxt/
|
|
30601
|
+
"etag": "\"50eba-EQGueVrdlEzHO7oTVt2LPxnHgRo\"",
|
|
30602
|
+
"mtime": "2026-09-06T08:07:40.911Z",
|
|
30603
|
+
"size": 331450,
|
|
30604
|
+
"path": "../public/_nuxt/BrIJiJSN.js"
|
|
30330
30605
|
},
|
|
30331
|
-
"/_nuxt/
|
|
30606
|
+
"/_nuxt/C6m-kenn.js": {
|
|
30332
30607
|
"type": "text/javascript; charset=utf-8",
|
|
30333
|
-
"etag": "\"
|
|
30334
|
-
"mtime": "2026-09-
|
|
30335
|
-
"size":
|
|
30336
|
-
"path": "../public/_nuxt/
|
|
30608
|
+
"etag": "\"3914-PeLFbXPWgKtw3N2Fy1E79JcHpLU\"",
|
|
30609
|
+
"mtime": "2026-09-06T08:07:40.912Z",
|
|
30610
|
+
"size": 14612,
|
|
30611
|
+
"path": "../public/_nuxt/C6m-kenn.js"
|
|
30337
30612
|
},
|
|
30338
|
-
"/_nuxt/
|
|
30613
|
+
"/_nuxt/CcwJ2mrD2.js": {
|
|
30339
30614
|
"type": "text/javascript; charset=utf-8",
|
|
30340
|
-
"etag": "\"
|
|
30341
|
-
"mtime": "2026-09-
|
|
30342
|
-
"size":
|
|
30343
|
-
"path": "../public/_nuxt/
|
|
30615
|
+
"etag": "\"5792-PEWC62IL0fC62opbFHZ+I++wvbk\"",
|
|
30616
|
+
"mtime": "2026-09-06T08:07:40.913Z",
|
|
30617
|
+
"size": 22418,
|
|
30618
|
+
"path": "../public/_nuxt/CcwJ2mrD2.js"
|
|
30344
30619
|
},
|
|
30345
30620
|
"/_nuxt/channel-templates.De5ZvrGz.css": {
|
|
30346
30621
|
"type": "text/css; charset=utf-8",
|
|
30347
30622
|
"etag": "\"846-hiNcWp465PfIwg3Hui8TGCj9S3o\"",
|
|
30348
|
-
"mtime": "2026-09-
|
|
30623
|
+
"mtime": "2026-09-06T08:07:40.926Z",
|
|
30349
30624
|
"size": 2118,
|
|
30350
30625
|
"path": "../public/_nuxt/channel-templates.De5ZvrGz.css"
|
|
30351
30626
|
},
|
|
30352
|
-
"/_nuxt/
|
|
30353
|
-
"type": "text/javascript; charset=utf-8",
|
|
30354
|
-
"etag": "\"9141-NLArDp1lZISfBmTeNNW/SqVqPrc\"",
|
|
30355
|
-
"mtime": "2026-09-05T18:48:20.534Z",
|
|
30356
|
-
"size": 37185,
|
|
30357
|
-
"path": "../public/_nuxt/CKfhtOt7.js"
|
|
30358
|
-
},
|
|
30359
|
-
"/_nuxt/CjDQPXfv.js": {
|
|
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": {
|
|
30627
|
+
"/_nuxt/Cj6139IM.js": {
|
|
30367
30628
|
"type": "text/javascript; charset=utf-8",
|
|
30368
|
-
"etag": "\"
|
|
30369
|
-
"mtime": "2026-09-
|
|
30370
|
-
"size":
|
|
30371
|
-
"path": "../public/_nuxt/
|
|
30629
|
+
"etag": "\"664-bB/MABMcuh9JMyKWxZJfgs5cTRI\"",
|
|
30630
|
+
"mtime": "2026-09-06T08:07:40.913Z",
|
|
30631
|
+
"size": 1636,
|
|
30632
|
+
"path": "../public/_nuxt/Cj6139IM.js"
|
|
30372
30633
|
},
|
|
30373
|
-
"/_nuxt/
|
|
30634
|
+
"/_nuxt/CfVAr2nf.js": {
|
|
30374
30635
|
"type": "text/javascript; charset=utf-8",
|
|
30375
|
-
"etag": "\"
|
|
30376
|
-
"mtime": "2026-09-
|
|
30377
|
-
"size":
|
|
30378
|
-
"path": "../public/_nuxt/
|
|
30636
|
+
"etag": "\"4e58-dM+JZz9VCHehIO2I74Q45dMOZ8s\"",
|
|
30637
|
+
"mtime": "2026-09-06T08:07:40.913Z",
|
|
30638
|
+
"size": 20056,
|
|
30639
|
+
"path": "../public/_nuxt/CfVAr2nf.js"
|
|
30379
30640
|
},
|
|
30380
|
-
"/_nuxt/
|
|
30641
|
+
"/_nuxt/Cno6kYiO.js": {
|
|
30381
30642
|
"type": "text/javascript; charset=utf-8",
|
|
30382
30643
|
"etag": "\"f2-SIBAvqBfq2ENmoMT2zz03X9uJTg\"",
|
|
30383
|
-
"mtime": "2026-09-
|
|
30644
|
+
"mtime": "2026-09-06T08:07:40.913Z",
|
|
30384
30645
|
"size": 242,
|
|
30385
|
-
"path": "../public/_nuxt/
|
|
30646
|
+
"path": "../public/_nuxt/Cno6kYiO.js"
|
|
30386
30647
|
},
|
|
30387
|
-
"/_nuxt/
|
|
30648
|
+
"/_nuxt/CNs_Ozdc.js": {
|
|
30388
30649
|
"type": "text/javascript; charset=utf-8",
|
|
30389
30650
|
"etag": "\"1b-1MHUJYdBtOvbvPMaiQxDXp3lHyw\"",
|
|
30390
|
-
"mtime": "2026-09-
|
|
30651
|
+
"mtime": "2026-09-06T08:07:40.913Z",
|
|
30391
30652
|
"size": 27,
|
|
30392
|
-
"path": "../public/_nuxt/
|
|
30653
|
+
"path": "../public/_nuxt/CNs_Ozdc.js"
|
|
30393
30654
|
},
|
|
30394
|
-
"/_nuxt/
|
|
30395
|
-
"type": "text/javascript; charset=utf-8",
|
|
30396
|
-
"etag": "\"665-V4F23TKbxq9kj2VOHEzQDbnxcoY\"",
|
|
30397
|
-
"mtime": "2026-09-05T18:48:20.536Z",
|
|
30398
|
-
"size": 1637,
|
|
30399
|
-
"path": "../public/_nuxt/Cst47G4-.js"
|
|
30400
|
-
},
|
|
30401
|
-
"/_nuxt/CUMdhxg9.js": {
|
|
30655
|
+
"/_nuxt/CKfhtOt7.js": {
|
|
30402
30656
|
"type": "text/javascript; charset=utf-8",
|
|
30403
|
-
"etag": "\"
|
|
30404
|
-
"mtime": "2026-09-
|
|
30405
|
-
"size":
|
|
30406
|
-
"path": "../public/_nuxt/
|
|
30657
|
+
"etag": "\"9141-NLArDp1lZISfBmTeNNW/SqVqPrc\"",
|
|
30658
|
+
"mtime": "2026-09-06T08:07:40.913Z",
|
|
30659
|
+
"size": 37185,
|
|
30660
|
+
"path": "../public/_nuxt/CKfhtOt7.js"
|
|
30407
30661
|
},
|
|
30408
|
-
"/_nuxt/
|
|
30662
|
+
"/_nuxt/Cor9siSf.js": {
|
|
30409
30663
|
"type": "text/javascript; charset=utf-8",
|
|
30410
|
-
"etag": "\"
|
|
30411
|
-
"mtime": "2026-09-
|
|
30412
|
-
"size":
|
|
30413
|
-
"path": "../public/_nuxt/
|
|
30664
|
+
"etag": "\"469c-SAQlRrJexDg1WPypDeSp4i/c4PA\"",
|
|
30665
|
+
"mtime": "2026-09-06T08:07:40.914Z",
|
|
30666
|
+
"size": 18076,
|
|
30667
|
+
"path": "../public/_nuxt/Cor9siSf.js"
|
|
30414
30668
|
},
|
|
30415
30669
|
"/_nuxt/CUXCQXjG.js": {
|
|
30416
30670
|
"type": "text/javascript; charset=utf-8",
|
|
30417
30671
|
"etag": "\"18b-4es6+sDUaYZ89sbvxGRBaXHox64\"",
|
|
30418
|
-
"mtime": "2026-09-
|
|
30672
|
+
"mtime": "2026-09-06T08:07:40.913Z",
|
|
30419
30673
|
"size": 395,
|
|
30420
30674
|
"path": "../public/_nuxt/CUXCQXjG.js"
|
|
30421
30675
|
},
|
|
30676
|
+
"/_nuxt/CvYfzHYz.js": {
|
|
30677
|
+
"type": "text/javascript; charset=utf-8",
|
|
30678
|
+
"etag": "\"20dc-gCA9ZNv8r8lAY21fe67KYxIB3DY\"",
|
|
30679
|
+
"mtime": "2026-09-06T08:07:40.914Z",
|
|
30680
|
+
"size": 8412,
|
|
30681
|
+
"path": "../public/_nuxt/CvYfzHYz.js"
|
|
30682
|
+
},
|
|
30422
30683
|
"/_nuxt/CWKEp1wx2.js": {
|
|
30423
30684
|
"type": "text/javascript; charset=utf-8",
|
|
30424
30685
|
"etag": "\"555-ED/tuOi0Qdk4aSGksbI58QY+vQ8\"",
|
|
30425
|
-
"mtime": "2026-09-
|
|
30686
|
+
"mtime": "2026-09-06T08:07:40.913Z",
|
|
30426
30687
|
"size": 1365,
|
|
30427
30688
|
"path": "../public/_nuxt/CWKEp1wx2.js"
|
|
30428
30689
|
},
|
|
30690
|
+
"/_nuxt/D-Ca4BGY.js": {
|
|
30691
|
+
"type": "text/javascript; charset=utf-8",
|
|
30692
|
+
"etag": "\"d322-Ji+xNrf2m+xWgNVNTGDuV7nAR7w\"",
|
|
30693
|
+
"mtime": "2026-09-06T08:07:40.915Z",
|
|
30694
|
+
"size": 54050,
|
|
30695
|
+
"path": "../public/_nuxt/D-Ca4BGY.js"
|
|
30696
|
+
},
|
|
30429
30697
|
"/_nuxt/D1z7i2UP.js": {
|
|
30430
30698
|
"type": "text/javascript; charset=utf-8",
|
|
30431
30699
|
"etag": "\"3488-96j3CtrX45ueUXO7o7l3+3rcKWk\"",
|
|
30432
|
-
"mtime": "2026-09-
|
|
30700
|
+
"mtime": "2026-09-06T08:07:40.915Z",
|
|
30433
30701
|
"size": 13448,
|
|
30434
30702
|
"path": "../public/_nuxt/D1z7i2UP.js"
|
|
30435
30703
|
},
|
|
30436
|
-
"/_nuxt/
|
|
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
|
-
"/_nuxt/D-Ca4BGY.js": {
|
|
30704
|
+
"/_nuxt/D2JyEL28.js": {
|
|
30451
30705
|
"type": "text/javascript; charset=utf-8",
|
|
30452
|
-
"etag": "\"
|
|
30453
|
-
"mtime": "2026-09-
|
|
30454
|
-
"size":
|
|
30455
|
-
"path": "../public/_nuxt/
|
|
30706
|
+
"etag": "\"3cec5-TxP/adCAMJxntNai1sx15z/ieVE\"",
|
|
30707
|
+
"mtime": "2026-09-06T08:07:40.895Z",
|
|
30708
|
+
"size": 249541,
|
|
30709
|
+
"path": "../public/_nuxt/D2JyEL28.js"
|
|
30456
30710
|
},
|
|
30457
30711
|
"/_nuxt/D8CqF0yy.js": {
|
|
30458
30712
|
"type": "text/javascript; charset=utf-8",
|
|
30459
30713
|
"etag": "\"1dae-DlKVVV+fkbaFtolHiRzBO1Gjw4s\"",
|
|
30460
|
-
"mtime": "2026-09-
|
|
30714
|
+
"mtime": "2026-09-06T08:07:40.915Z",
|
|
30461
30715
|
"size": 7598,
|
|
30462
30716
|
"path": "../public/_nuxt/D8CqF0yy.js"
|
|
30463
30717
|
},
|
|
30464
|
-
"/_nuxt/D8wyHvcz2.js": {
|
|
30465
|
-
"type": "text/javascript; charset=utf-8",
|
|
30466
|
-
"etag": "\"55b3-IXOjYFN89j76ODqvRackqZfkzLU\"",
|
|
30467
|
-
"mtime": "2026-09-05T18:48:20.538Z",
|
|
30468
|
-
"size": 21939,
|
|
30469
|
-
"path": "../public/_nuxt/D8wyHvcz2.js"
|
|
30470
|
-
},
|
|
30471
|
-
"/_nuxt/D8EfUxO2.js": {
|
|
30472
|
-
"type": "text/javascript; charset=utf-8",
|
|
30473
|
-
"etag": "\"20a5-Z19piLjMj61QfCggRD0AXtjNA9Q\"",
|
|
30474
|
-
"mtime": "2026-09-05T18:48:20.538Z",
|
|
30475
|
-
"size": 8357,
|
|
30476
|
-
"path": "../public/_nuxt/D8EfUxO2.js"
|
|
30477
|
-
},
|
|
30478
30718
|
"/_nuxt/D95h62Jn.js": {
|
|
30479
30719
|
"type": "text/javascript; charset=utf-8",
|
|
30480
30720
|
"etag": "\"3f5-sTPqCSaAt8a9YlLXlhRfFlOtmcQ\"",
|
|
30481
|
-
"mtime": "2026-09-
|
|
30721
|
+
"mtime": "2026-09-06T08:07:40.916Z",
|
|
30482
30722
|
"size": 1013,
|
|
30483
30723
|
"path": "../public/_nuxt/D95h62Jn.js"
|
|
30484
30724
|
},
|
|
30485
30725
|
"/_nuxt/daq.6IrhVVfy.css": {
|
|
30486
30726
|
"type": "text/css; charset=utf-8",
|
|
30487
30727
|
"etag": "\"560c-BXFIKD9bnWhTOZ8SzFFpfkMuNHU\"",
|
|
30488
|
-
"mtime": "2026-09-
|
|
30728
|
+
"mtime": "2026-09-06T08:07:40.927Z",
|
|
30489
30729
|
"size": 22028,
|
|
30490
30730
|
"path": "../public/_nuxt/daq.6IrhVVfy.css"
|
|
30491
30731
|
},
|
|
30492
|
-
"/_nuxt/
|
|
30732
|
+
"/_nuxt/DA4lxCWC2.js": {
|
|
30733
|
+
"type": "text/javascript; charset=utf-8",
|
|
30734
|
+
"etag": "\"1fd9-/rwkIG2tdN0ulOA/H0Hwh783NRw\"",
|
|
30735
|
+
"mtime": "2026-09-06T08:07:40.916Z",
|
|
30736
|
+
"size": 8153,
|
|
30737
|
+
"path": "../public/_nuxt/DA4lxCWC2.js"
|
|
30738
|
+
},
|
|
30739
|
+
"/_nuxt/dcw.rpqpOYQ8.css": {
|
|
30493
30740
|
"type": "text/css; charset=utf-8",
|
|
30494
|
-
"etag": "\"2608-
|
|
30495
|
-
"mtime": "2026-09-
|
|
30741
|
+
"etag": "\"2608-O6LWPYmCVMPE4w9ov0f4xG4gJg0\"",
|
|
30742
|
+
"mtime": "2026-09-06T08:07:40.927Z",
|
|
30496
30743
|
"size": 9736,
|
|
30497
|
-
"path": "../public/_nuxt/dcw.
|
|
30744
|
+
"path": "../public/_nuxt/dcw.rpqpOYQ8.css"
|
|
30498
30745
|
},
|
|
30499
|
-
"/_nuxt/
|
|
30746
|
+
"/_nuxt/DaE5saZg.js": {
|
|
30747
|
+
"type": "text/javascript; charset=utf-8",
|
|
30748
|
+
"etag": "\"3d8b-v1n7kg5KKx0NfcuzRjI3aHnlvfg\"",
|
|
30749
|
+
"mtime": "2026-09-06T08:07:40.917Z",
|
|
30750
|
+
"size": 15755,
|
|
30751
|
+
"path": "../public/_nuxt/DaE5saZg.js"
|
|
30752
|
+
},
|
|
30753
|
+
"/_nuxt/default.BbgdTDCk.css": {
|
|
30500
30754
|
"type": "text/css; charset=utf-8",
|
|
30501
|
-
"etag": "\"2f9e-
|
|
30502
|
-
"mtime": "2026-09-
|
|
30755
|
+
"etag": "\"2f9e-FQsP/3guV1XWiRqjZyF0yxNKLkc\"",
|
|
30756
|
+
"mtime": "2026-09-06T08:07:40.927Z",
|
|
30503
30757
|
"size": 12190,
|
|
30504
|
-
"path": "../public/_nuxt/default.
|
|
30758
|
+
"path": "../public/_nuxt/default.BbgdTDCk.css"
|
|
30759
|
+
},
|
|
30760
|
+
"/_nuxt/Dhqra7NB.js": {
|
|
30761
|
+
"type": "text/javascript; charset=utf-8",
|
|
30762
|
+
"etag": "\"c67-DJQzh47TgZoVFNIo5m4hACtSlTg\"",
|
|
30763
|
+
"mtime": "2026-09-06T08:07:40.918Z",
|
|
30764
|
+
"size": 3175,
|
|
30765
|
+
"path": "../public/_nuxt/Dhqra7NB.js"
|
|
30505
30766
|
},
|
|
30506
30767
|
"/_nuxt/DeYsUzhr.js": {
|
|
30507
30768
|
"type": "text/javascript; charset=utf-8",
|
|
30508
30769
|
"etag": "\"287-ALaKQkZWM37K7ru31bg511e8ikI\"",
|
|
30509
|
-
"mtime": "2026-09-
|
|
30770
|
+
"mtime": "2026-09-06T08:07:40.917Z",
|
|
30510
30771
|
"size": 647,
|
|
30511
30772
|
"path": "../public/_nuxt/DeYsUzhr.js"
|
|
30512
30773
|
},
|
|
30513
30774
|
"/_nuxt/DIOBYJe3.js": {
|
|
30514
30775
|
"type": "text/javascript; charset=utf-8",
|
|
30515
30776
|
"etag": "\"4b5-DdWaiyBS+/JejqhLG4Q7/JprP2Q\"",
|
|
30516
|
-
"mtime": "2026-09-
|
|
30777
|
+
"mtime": "2026-09-06T08:07:40.916Z",
|
|
30517
30778
|
"size": 1205,
|
|
30518
30779
|
"path": "../public/_nuxt/DIOBYJe3.js"
|
|
30519
30780
|
},
|
|
30520
|
-
"/_nuxt/
|
|
30781
|
+
"/_nuxt/DlRO_q5L.js": {
|
|
30521
30782
|
"type": "text/javascript; charset=utf-8",
|
|
30522
|
-
"etag": "\"
|
|
30523
|
-
"mtime": "2026-09-
|
|
30524
|
-
"size":
|
|
30525
|
-
"path": "../public/_nuxt/
|
|
30526
|
-
},
|
|
30527
|
-
"/_nuxt/DpojD719.js": {
|
|
30528
|
-
"type": "text/javascript; charset=utf-8",
|
|
30529
|
-
"etag": "\"29d-Fu+XH+dfF6wIVeD5drBDJvCFiPE\"",
|
|
30530
|
-
"mtime": "2026-09-05T18:48:20.539Z",
|
|
30531
|
-
"size": 669,
|
|
30532
|
-
"path": "../public/_nuxt/DpojD719.js"
|
|
30783
|
+
"etag": "\"1195-qIdBUxD1e9n0IIVzYKGquwyc5IM\"",
|
|
30784
|
+
"mtime": "2026-09-06T08:07:40.918Z",
|
|
30785
|
+
"size": 4501,
|
|
30786
|
+
"path": "../public/_nuxt/DlRO_q5L.js"
|
|
30533
30787
|
},
|
|
30534
30788
|
"/_nuxt/DoLasgPj2.js": {
|
|
30535
30789
|
"type": "text/javascript; charset=utf-8",
|
|
30536
30790
|
"etag": "\"20cf-AD2OXvXYmQR29f4gV1ADJLRnCEA\"",
|
|
30537
|
-
"mtime": "2026-09-
|
|
30791
|
+
"mtime": "2026-09-06T08:07:40.918Z",
|
|
30538
30792
|
"size": 8399,
|
|
30539
30793
|
"path": "../public/_nuxt/DoLasgPj2.js"
|
|
30540
30794
|
},
|
|
30541
|
-
"/_nuxt/
|
|
30795
|
+
"/_nuxt/DpojD719.js": {
|
|
30796
|
+
"type": "text/javascript; charset=utf-8",
|
|
30797
|
+
"etag": "\"29d-Fu+XH+dfF6wIVeD5drBDJvCFiPE\"",
|
|
30798
|
+
"mtime": "2026-09-06T08:07:40.918Z",
|
|
30799
|
+
"size": 669,
|
|
30800
|
+
"path": "../public/_nuxt/DpojD719.js"
|
|
30801
|
+
},
|
|
30802
|
+
"/_nuxt/Ds8JbqGB.js": {
|
|
30542
30803
|
"type": "text/javascript; charset=utf-8",
|
|
30543
|
-
"etag": "\"
|
|
30544
|
-
"mtime": "2026-09-
|
|
30545
|
-
"size":
|
|
30546
|
-
"path": "../public/_nuxt/
|
|
30804
|
+
"etag": "\"20a5-5w+JPRF9P/jPDCyWtGvTH9GWMvs\"",
|
|
30805
|
+
"mtime": "2026-09-06T08:07:40.918Z",
|
|
30806
|
+
"size": 8357,
|
|
30807
|
+
"path": "../public/_nuxt/Ds8JbqGB.js"
|
|
30547
30808
|
},
|
|
30548
|
-
"/_nuxt/
|
|
30809
|
+
"/_nuxt/DNxVTfhe.js": {
|
|
30549
30810
|
"type": "text/javascript; charset=utf-8",
|
|
30550
|
-
"etag": "\"
|
|
30551
|
-
"mtime": "2026-09-
|
|
30552
|
-
"size":
|
|
30553
|
-
"path": "../public/_nuxt/
|
|
30811
|
+
"etag": "\"28a2e-JTPo0V0NdEUiA5ubrG/aTW6Nt3s\"",
|
|
30812
|
+
"mtime": "2026-09-06T08:07:40.916Z",
|
|
30813
|
+
"size": 166446,
|
|
30814
|
+
"path": "../public/_nuxt/DNxVTfhe.js"
|
|
30554
30815
|
},
|
|
30555
|
-
"/_nuxt/
|
|
30816
|
+
"/_nuxt/Dsdy4Ua-.js": {
|
|
30556
30817
|
"type": "text/javascript; charset=utf-8",
|
|
30557
|
-
"etag": "\"
|
|
30558
|
-
"mtime": "2026-09-
|
|
30559
|
-
"size":
|
|
30560
|
-
"path": "../public/_nuxt/
|
|
30818
|
+
"etag": "\"12dd-PxFx1uaFqb7tUPva/yyN7Y/S75I\"",
|
|
30819
|
+
"mtime": "2026-09-06T08:07:40.919Z",
|
|
30820
|
+
"size": 4829,
|
|
30821
|
+
"path": "../public/_nuxt/Dsdy4Ua-.js"
|
|
30561
30822
|
},
|
|
30562
30823
|
"/_nuxt/DsUUYP292.js": {
|
|
30563
30824
|
"type": "text/javascript; charset=utf-8",
|
|
30564
30825
|
"etag": "\"144-/n2T55jR70VIdOwiikYjqUe6HLk\"",
|
|
30565
|
-
"mtime": "2026-09-
|
|
30826
|
+
"mtime": "2026-09-06T08:07:40.919Z",
|
|
30566
30827
|
"size": 324,
|
|
30567
30828
|
"path": "../public/_nuxt/DsUUYP292.js"
|
|
30568
30829
|
},
|
|
30569
|
-
"/_nuxt/
|
|
30830
|
+
"/_nuxt/DT-Wg8r1.js": {
|
|
30570
30831
|
"type": "text/javascript; charset=utf-8",
|
|
30571
|
-
"etag": "\"
|
|
30572
|
-
"mtime": "2026-09-
|
|
30573
|
-
"size":
|
|
30574
|
-
"path": "../public/_nuxt/
|
|
30832
|
+
"etag": "\"987d-FRY5+vZoHzByvMEFbeh2lKuBssc\"",
|
|
30833
|
+
"mtime": "2026-09-06T08:07:40.916Z",
|
|
30834
|
+
"size": 39037,
|
|
30835
|
+
"path": "../public/_nuxt/DT-Wg8r1.js"
|
|
30836
|
+
},
|
|
30837
|
+
"/_nuxt/D8xY-Yjc.js": {
|
|
30838
|
+
"type": "text/javascript; charset=utf-8",
|
|
30839
|
+
"etag": "\"8cd3c-1gm55NOnlTpCwPO3UZDzscgQ87g\"",
|
|
30840
|
+
"mtime": "2026-09-06T08:07:40.915Z",
|
|
30841
|
+
"size": 576828,
|
|
30842
|
+
"path": "../public/_nuxt/D8xY-Yjc.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-06T08:07:40.920Z",
|
|
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-06T08:07:40.917Z",
|
|
30855
|
+
"size": 6793,
|
|
30856
|
+
"path": "../public/_nuxt/DTYBfjRY.js"
|
|
30857
|
+
},
|
|
30858
|
+
"/_nuxt/DWcEk1ur2.js": {
|
|
30859
|
+
"type": "text/javascript; charset=utf-8",
|
|
30860
|
+
"etag": "\"6a1f-fF/+gkQ3RswZQKIYDBEx7d8rnN8\"",
|
|
30861
|
+
"mtime": "2026-09-06T08:07:40.917Z",
|
|
30862
|
+
"size": 27167,
|
|
30863
|
+
"path": "../public/_nuxt/DWcEk1ur2.js"
|
|
30864
|
+
},
|
|
30583
30865
|
"/_nuxt/DXRZPxGs.js": {
|
|
30584
30866
|
"type": "text/javascript; charset=utf-8",
|
|
30585
30867
|
"etag": "\"42-LgXLXdo9BGzBlyxqolWDOt/Ezyg\"",
|
|
30586
|
-
"mtime": "2026-09-
|
|
30868
|
+
"mtime": "2026-09-06T08:07:40.917Z",
|
|
30587
30869
|
"size": 66,
|
|
30588
30870
|
"path": "../public/_nuxt/DXRZPxGs.js"
|
|
30589
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-06T08:07:40.920Z",
|
|
30594
30876
|
"size": 146,
|
|
30595
30877
|
"path": "../public/_nuxt/Dy-mxvXY2.js"
|
|
30596
30878
|
},
|
|
30597
|
-
"/_nuxt/
|
|
30598
|
-
"type": "
|
|
30599
|
-
"etag": "\"
|
|
30600
|
-
"mtime": "2026-09-
|
|
30601
|
-
"size":
|
|
30602
|
-
"path": "../public/_nuxt/
|
|
30879
|
+
"/_nuxt/E88a-JCG.js": {
|
|
30880
|
+
"type": "text/javascript; charset=utf-8",
|
|
30881
|
+
"etag": "\"2463-SRR9K/48ysJhqMUtjV+hQzbQox8\"",
|
|
30882
|
+
"mtime": "2026-09-06T08:07:40.920Z",
|
|
30883
|
+
"size": 9315,
|
|
30884
|
+
"path": "../public/_nuxt/E88a-JCG.js"
|
|
30603
30885
|
},
|
|
30604
30886
|
"/_nuxt/eb-garamond-cyrillic-400-italic.BZInx2ys.woff": {
|
|
30605
30887
|
"type": "font/woff",
|
|
30606
30888
|
"etag": "\"3f04-1MKyFKXvChwQTK9MnbAM3SwAP/w\"",
|
|
30607
|
-
"mtime": "2026-09-
|
|
30889
|
+
"mtime": "2026-09-06T08:07:40.928Z",
|
|
30608
30890
|
"size": 16132,
|
|
30609
30891
|
"path": "../public/_nuxt/eb-garamond-cyrillic-400-italic.BZInx2ys.woff"
|
|
30610
30892
|
},
|
|
30611
|
-
"/_nuxt/
|
|
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": {
|
|
30893
|
+
"/_nuxt/eb-garamond-cyrillic-400-italic.BGIwiowF.woff2": {
|
|
30619
30894
|
"type": "font/woff2",
|
|
30620
|
-
"etag": "\"
|
|
30621
|
-
"mtime": "2026-09-
|
|
30622
|
-
"size":
|
|
30623
|
-
"path": "../public/_nuxt/eb-garamond-cyrillic-400-
|
|
30895
|
+
"etag": "\"3504-t17DeaJZ5CiTr/7PdWXcRgN9/Yc\"",
|
|
30896
|
+
"mtime": "2026-09-06T08:07:40.927Z",
|
|
30897
|
+
"size": 13572,
|
|
30898
|
+
"path": "../public/_nuxt/eb-garamond-cyrillic-400-italic.BGIwiowF.woff2"
|
|
30624
30899
|
},
|
|
30625
30900
|
"/_nuxt/eb-garamond-cyrillic-400-normal.C0kVTdou.woff": {
|
|
30626
30901
|
"type": "font/woff",
|
|
30627
30902
|
"etag": "\"3c88-Q5XoFKe1rGp1UkdvSR6MtPcFfgQ\"",
|
|
30628
|
-
"mtime": "2026-09-
|
|
30903
|
+
"mtime": "2026-09-06T08:07:40.928Z",
|
|
30629
30904
|
"size": 15496,
|
|
30630
30905
|
"path": "../public/_nuxt/eb-garamond-cyrillic-400-normal.C0kVTdou.woff"
|
|
30631
30906
|
},
|
|
30632
30907
|
"/_nuxt/eb-garamond-cyrillic-ext-400-italic.Bz1w3xqM.woff2": {
|
|
30633
30908
|
"type": "font/woff2",
|
|
30634
30909
|
"etag": "\"4620-AEmSjSDDFDLAiok0BdjqqFs2mx4\"",
|
|
30635
|
-
"mtime": "2026-09-
|
|
30910
|
+
"mtime": "2026-09-06T08:07:40.928Z",
|
|
30636
30911
|
"size": 17952,
|
|
30637
30912
|
"path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-italic.Bz1w3xqM.woff2"
|
|
30638
30913
|
},
|
|
30639
|
-
"/_nuxt/
|
|
30640
|
-
"type": "
|
|
30641
|
-
"etag": "\"
|
|
30642
|
-
"mtime": "2026-09-
|
|
30643
|
-
"size":
|
|
30644
|
-
"path": "../public/_nuxt/
|
|
30914
|
+
"/_nuxt/DyisHHzD.js": {
|
|
30915
|
+
"type": "text/javascript; charset=utf-8",
|
|
30916
|
+
"etag": "\"26637-o15U+yDwUbonOcjvC07KaBGRDho\"",
|
|
30917
|
+
"mtime": "2026-09-06T08:07:40.920Z",
|
|
30918
|
+
"size": 157239,
|
|
30919
|
+
"path": "../public/_nuxt/DyisHHzD.js"
|
|
30920
|
+
},
|
|
30921
|
+
"/_nuxt/eb-garamond-cyrillic-400-normal.DDLP67lu.woff2": {
|
|
30922
|
+
"type": "font/woff2",
|
|
30923
|
+
"etag": "\"33d4-lVrdxXudnaWAAL0JfU6b+yZGpK0\"",
|
|
30924
|
+
"mtime": "2026-09-06T08:07:40.928Z",
|
|
30925
|
+
"size": 13268,
|
|
30926
|
+
"path": "../public/_nuxt/eb-garamond-cyrillic-400-normal.DDLP67lu.woff2"
|
|
30927
|
+
},
|
|
30928
|
+
"/_nuxt/eb-garamond-cyrillic-ext-400-italic.CYS3phfl.woff": {
|
|
30929
|
+
"type": "font/woff",
|
|
30930
|
+
"etag": "\"5698-6bgErOYTElI0Z3Untp+h0Xi0FGs\"",
|
|
30931
|
+
"mtime": "2026-09-06T08:07:40.928Z",
|
|
30932
|
+
"size": 22168,
|
|
30933
|
+
"path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-italic.CYS3phfl.woff"
|
|
30645
30934
|
},
|
|
30646
30935
|
"/_nuxt/eb-garamond-cyrillic-ext-400-normal.DG8lny6_.woff": {
|
|
30647
30936
|
"type": "font/woff",
|
|
30648
30937
|
"etag": "\"4fcc-Wt58DNvJEH8PhhsEwR/fAuZLZf0\"",
|
|
30649
|
-
"mtime": "2026-09-
|
|
30938
|
+
"mtime": "2026-09-06T08:07:40.928Z",
|
|
30650
30939
|
"size": 20428,
|
|
30651
30940
|
"path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-normal.DG8lny6_.woff"
|
|
30652
30941
|
},
|
|
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"
|
|
30659
|
-
},
|
|
30660
30942
|
"/_nuxt/eb-garamond-cyrillic-ext-400-normal.o8fRvAFQ.woff2": {
|
|
30661
30943
|
"type": "font/woff2",
|
|
30662
30944
|
"etag": "\"419c-BgVrkDzxBAskhVuAe8ZPKrVJ2vk\"",
|
|
30663
|
-
"mtime": "2026-09-
|
|
30945
|
+
"mtime": "2026-09-06T08:07:40.929Z",
|
|
30664
30946
|
"size": 16796,
|
|
30665
30947
|
"path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-normal.o8fRvAFQ.woff2"
|
|
30666
30948
|
},
|
|
30949
|
+
"/_nuxt/eb-garamond-greek-400-italic.BamGE6QP.woff": {
|
|
30950
|
+
"type": "font/woff",
|
|
30951
|
+
"etag": "\"307c-Fmorq8T0Tyl1FByuAGfnIMJMsU0\"",
|
|
30952
|
+
"mtime": "2026-09-06T08:07:40.929Z",
|
|
30953
|
+
"size": 12412,
|
|
30954
|
+
"path": "../public/_nuxt/eb-garamond-greek-400-italic.BamGE6QP.woff"
|
|
30955
|
+
},
|
|
30667
30956
|
"/_nuxt/eb-garamond-greek-400-italic.Dqr5KC66.woff2": {
|
|
30668
30957
|
"type": "font/woff2",
|
|
30669
30958
|
"etag": "\"2904-BXAeLh8O+jrT8ujKrV7WtU2zP1c\"",
|
|
30670
|
-
"mtime": "2026-09-
|
|
30959
|
+
"mtime": "2026-09-06T08:07:40.929Z",
|
|
30671
30960
|
"size": 10500,
|
|
30672
30961
|
"path": "../public/_nuxt/eb-garamond-greek-400-italic.Dqr5KC66.woff2"
|
|
30673
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-06T08:07:40.929Z",
|
|
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-06T08:07:40.930Z",
|
|
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-06T08:07:40.930Z",
|
|
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-normal.d4JlP2QH.woff": {
|
|
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
30984
|
"/_nuxt/eb-garamond-greek-ext-400-normal.K8pwR3tn.woff2": {
|
|
30703
30985
|
"type": "font/woff2",
|
|
30704
30986
|
"etag": "\"1940-Y3hsqG2RXMGI9hHTiI+Nv2Q4msM\"",
|
|
30705
|
-
"mtime": "2026-09-
|
|
30987
|
+
"mtime": "2026-09-06T08:07:40.930Z",
|
|
30706
30988
|
"size": 6464,
|
|
30707
30989
|
"path": "../public/_nuxt/eb-garamond-greek-ext-400-normal.K8pwR3tn.woff2"
|
|
30708
30990
|
},
|
|
30991
|
+
"/_nuxt/eb-garamond-greek-ext-400-italic.CHZOQEtG.woff2": {
|
|
30992
|
+
"type": "font/woff2",
|
|
30993
|
+
"etag": "\"19d0-ppOK6AfNTXYuDEeeEMQQhOypGW8\"",
|
|
30994
|
+
"mtime": "2026-09-06T08:07:40.930Z",
|
|
30995
|
+
"size": 6608,
|
|
30996
|
+
"path": "../public/_nuxt/eb-garamond-greek-ext-400-italic.CHZOQEtG.woff2"
|
|
30997
|
+
},
|
|
30709
30998
|
"/_nuxt/eb-garamond-greek-ext-400-normal.BaZl8BIK.woff": {
|
|
30710
30999
|
"type": "font/woff",
|
|
30711
31000
|
"etag": "\"20b0-FNV/ZgjupejIrGOsz4+8EYVUXHo\"",
|
|
30712
|
-
"mtime": "2026-09-
|
|
31001
|
+
"mtime": "2026-09-06T08:07:40.930Z",
|
|
30713
31002
|
"size": 8368,
|
|
30714
31003
|
"path": "../public/_nuxt/eb-garamond-greek-ext-400-normal.BaZl8BIK.woff"
|
|
30715
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-06T08:07:40.930Z",
|
|
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-06T08:07:40.931Z",
|
|
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-06T08:07:40.931Z",
|
|
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-06T08:07:40.931Z",
|
|
30741
31030
|
"size": 28608,
|
|
30742
31031
|
"path": "../public/_nuxt/eb-garamond-latin-400-normal.maQnHeKB.woff"
|
|
30743
31032
|
},
|
|
30744
31033
|
"/_nuxt/eb-garamond-latin-ext-400-italic.DUSsnRSD.woff": {
|
|
30745
31034
|
"type": "font/woff",
|
|
30746
31035
|
"etag": "\"f5b8-o98RIl4uKzIPJHZZpEI+mI17K3c\"",
|
|
30747
|
-
"mtime": "2026-09-
|
|
31036
|
+
"mtime": "2026-09-06T08:07:40.931Z",
|
|
30748
31037
|
"size": 62904,
|
|
30749
31038
|
"path": "../public/_nuxt/eb-garamond-latin-ext-400-italic.DUSsnRSD.woff"
|
|
30750
31039
|
},
|
|
30751
31040
|
"/_nuxt/eb-garamond-latin-ext-400-italic.V7s3nWfX.woff2": {
|
|
30752
31041
|
"type": "font/woff2",
|
|
30753
31042
|
"etag": "\"b19c-7qms9anmdJJsBixQTHSocgV31Qk\"",
|
|
30754
|
-
"mtime": "2026-09-
|
|
31043
|
+
"mtime": "2026-09-06T08:07:40.931Z",
|
|
30755
31044
|
"size": 45468,
|
|
30756
31045
|
"path": "../public/_nuxt/eb-garamond-latin-ext-400-italic.V7s3nWfX.woff2"
|
|
30757
31046
|
},
|
|
30758
|
-
"/_nuxt/eb-garamond-
|
|
30759
|
-
"type": "font/
|
|
30760
|
-
"etag": "\"
|
|
30761
|
-
"mtime": "2026-09-
|
|
30762
|
-
"size":
|
|
30763
|
-
"path": "../public/_nuxt/eb-garamond-
|
|
31047
|
+
"/_nuxt/eb-garamond-latin-ext-400-normal.o4A__6QZ.woff2": {
|
|
31048
|
+
"type": "font/woff2",
|
|
31049
|
+
"etag": "\"de84-qKZ/sgxlZLRv1TmEnWR30Cc4wfw\"",
|
|
31050
|
+
"mtime": "2026-09-06T08:07:40.932Z",
|
|
31051
|
+
"size": 56964,
|
|
31052
|
+
"path": "../public/_nuxt/eb-garamond-latin-ext-400-normal.o4A__6QZ.woff2"
|
|
30764
31053
|
},
|
|
30765
31054
|
"/_nuxt/eb-garamond-latin-ext-400-normal.B4EmgUmt.woff": {
|
|
30766
31055
|
"type": "font/woff",
|
|
30767
31056
|
"etag": "\"12b44-jg/K3aZca4XOngCAf1Jh47/0cj8\"",
|
|
30768
|
-
"mtime": "2026-09-
|
|
31057
|
+
"mtime": "2026-09-06T08:07:40.932Z",
|
|
30769
31058
|
"size": 76612,
|
|
30770
31059
|
"path": "../public/_nuxt/eb-garamond-latin-ext-400-normal.B4EmgUmt.woff"
|
|
30771
31060
|
},
|
|
30772
|
-
"/_nuxt/eb-garamond-
|
|
31061
|
+
"/_nuxt/eb-garamond-vietnamese-400-italic.DQ8HKnks.woff2": {
|
|
30773
31062
|
"type": "font/woff2",
|
|
30774
|
-
"etag": "\"
|
|
30775
|
-
"mtime": "2026-09-
|
|
30776
|
-
"size":
|
|
30777
|
-
"path": "../public/_nuxt/eb-garamond-
|
|
31063
|
+
"etag": "\"187c-Wj36AOh9OjwDZT5W3eeao1D/NT4\"",
|
|
31064
|
+
"mtime": "2026-09-06T08:07:40.932Z",
|
|
31065
|
+
"size": 6268,
|
|
31066
|
+
"path": "../public/_nuxt/eb-garamond-vietnamese-400-italic.DQ8HKnks.woff2"
|
|
31067
|
+
},
|
|
31068
|
+
"/_nuxt/eb-garamond-vietnamese-400-italic.ORtyMVfw.woff": {
|
|
31069
|
+
"type": "font/woff",
|
|
31070
|
+
"etag": "\"1edc-XUugZ4qMSSF4m+TQLER2LLza1t0\"",
|
|
31071
|
+
"mtime": "2026-09-06T08:07:40.932Z",
|
|
31072
|
+
"size": 7900,
|
|
31073
|
+
"path": "../public/_nuxt/eb-garamond-vietnamese-400-italic.ORtyMVfw.woff"
|
|
30778
31074
|
},
|
|
30779
31075
|
"/_nuxt/eb-garamond-vietnamese-400-normal.CLvJdMEL.woff2": {
|
|
30780
31076
|
"type": "font/woff2",
|
|
30781
31077
|
"etag": "\"183c-arAHcc3MmJQ6+OtYVThlERUqDQQ\"",
|
|
30782
|
-
"mtime": "2026-09-
|
|
31078
|
+
"mtime": "2026-09-06T08:07:40.932Z",
|
|
30783
31079
|
"size": 6204,
|
|
30784
31080
|
"path": "../public/_nuxt/eb-garamond-vietnamese-400-normal.CLvJdMEL.woff2"
|
|
30785
31081
|
},
|
|
30786
|
-
"/_nuxt/eb-garamond-vietnamese-400-italic.DQ8HKnks.woff2": {
|
|
30787
|
-
"type": "font/woff2",
|
|
30788
|
-
"etag": "\"187c-Wj36AOh9OjwDZT5W3eeao1D/NT4\"",
|
|
30789
|
-
"mtime": "2026-09-05T18:48:20.551Z",
|
|
30790
|
-
"size": 6268,
|
|
30791
|
-
"path": "../public/_nuxt/eb-garamond-vietnamese-400-italic.DQ8HKnks.woff2"
|
|
30792
|
-
},
|
|
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-06T08:07:40.933Z",
|
|
30797
31086
|
"size": 7760,
|
|
30798
31087
|
"path": "../public/_nuxt/eb-garamond-vietnamese-400-normal.ifvNSiWx.woff"
|
|
30799
31088
|
},
|
|
31089
|
+
"/_nuxt/entry.Bv_GCmPP.css": {
|
|
31090
|
+
"type": "text/css; charset=utf-8",
|
|
31091
|
+
"etag": "\"1c9b6-RizRBl9ggVXgI0fO8IO7Wg1f9NM\"",
|
|
31092
|
+
"mtime": "2026-09-06T08:07:40.933Z",
|
|
31093
|
+
"size": 117174,
|
|
31094
|
+
"path": "../public/_nuxt/entry.Bv_GCmPP.css"
|
|
31095
|
+
},
|
|
31096
|
+
"/_nuxt/eUGyJdiT.js": {
|
|
31097
|
+
"type": "text/javascript; charset=utf-8",
|
|
31098
|
+
"etag": "\"20aa-Rif3v+aNt91q54e4MLGobwnuKbg\"",
|
|
31099
|
+
"mtime": "2026-09-06T08:07:40.923Z",
|
|
31100
|
+
"size": 8362,
|
|
31101
|
+
"path": "../public/_nuxt/eUGyJdiT.js"
|
|
31102
|
+
},
|
|
31103
|
+
"/_nuxt/eHYnGew0.js": {
|
|
31104
|
+
"type": "text/javascript; charset=utf-8",
|
|
31105
|
+
"etag": "\"f919-Mna7yicjedSnPxQ5bWRqIqFwv4Y\"",
|
|
31106
|
+
"mtime": "2026-09-06T08:07:40.923Z",
|
|
31107
|
+
"size": 63769,
|
|
31108
|
+
"path": "../public/_nuxt/eHYnGew0.js"
|
|
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-06T08:07:40.921Z",
|
|
30804
31114
|
"size": 1122,
|
|
30805
31115
|
"path": "../public/_nuxt/G0qIw7Gq2.js"
|
|
30806
31116
|
},
|
|
30807
|
-
"/_nuxt/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2": {
|
|
30808
|
-
"type": "font/woff2",
|
|
30809
|
-
"etag": "\"1cfc-yYSDXNlt/tTRaj6rJo8ZMqvY7pQ\"",
|
|
30810
|
-
"mtime": "2026-09-05T18:48:20.552Z",
|
|
30811
|
-
"size": 7420,
|
|
30812
|
-
"path": "../public/_nuxt/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2"
|
|
30813
|
-
},
|
|
30814
31117
|
"/_nuxt/geist-cyrillic-wght-normal.BEAKL7Jp.woff2": {
|
|
30815
31118
|
"type": "font/woff2",
|
|
30816
31119
|
"etag": "\"3aec-5kpQSZEtAzzU5kdiuro3Zr2YR54\"",
|
|
30817
|
-
"mtime": "2026-09-
|
|
31120
|
+
"mtime": "2026-09-06T08:07:40.933Z",
|
|
30818
31121
|
"size": 15084,
|
|
30819
31122
|
"path": "../public/_nuxt/geist-cyrillic-wght-normal.BEAKL7Jp.woff2"
|
|
30820
31123
|
},
|
|
31124
|
+
"/_nuxt/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2": {
|
|
31125
|
+
"type": "font/woff2",
|
|
31126
|
+
"etag": "\"1cfc-yYSDXNlt/tTRaj6rJo8ZMqvY7pQ\"",
|
|
31127
|
+
"mtime": "2026-09-06T08:07:40.933Z",
|
|
31128
|
+
"size": 7420,
|
|
31129
|
+
"path": "../public/_nuxt/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2"
|
|
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-06T08:07:40.933Z",
|
|
30825
31135
|
"size": 16512,
|
|
30826
31136
|
"path": "../public/_nuxt/geist-latin-ext-wght-normal.DC-KSUi6.woff2"
|
|
30827
31137
|
},
|
|
30828
|
-
"/_nuxt/
|
|
30829
|
-
"type": "
|
|
30830
|
-
"etag": "\"
|
|
30831
|
-
"mtime": "2026-09-
|
|
30832
|
-
"size":
|
|
30833
|
-
"path": "../public/_nuxt/
|
|
31138
|
+
"/_nuxt/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2": {
|
|
31139
|
+
"type": "font/woff2",
|
|
31140
|
+
"etag": "\"1820-nQACIwCsmkduQK2CSMidMhmLR9U\"",
|
|
31141
|
+
"mtime": "2026-09-06T08:07:40.934Z",
|
|
31142
|
+
"size": 6176,
|
|
31143
|
+
"path": "../public/_nuxt/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2"
|
|
30834
31144
|
},
|
|
30835
31145
|
"/_nuxt/geist-latin-wght-normal.BgDaEnEv.woff2": {
|
|
30836
31146
|
"type": "font/woff2",
|
|
30837
31147
|
"etag": "\"72d8-9J+D7/6th5UzRxIgoFX9awJv47A\"",
|
|
30838
|
-
"mtime": "2026-09-
|
|
31148
|
+
"mtime": "2026-09-06T08:07:40.934Z",
|
|
30839
31149
|
"size": 29400,
|
|
30840
31150
|
"path": "../public/_nuxt/geist-latin-wght-normal.BgDaEnEv.woff2"
|
|
30841
31151
|
},
|
|
30842
31152
|
"/_nuxt/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2": {
|
|
30843
31153
|
"type": "font/woff2",
|
|
30844
31154
|
"etag": "\"328c-3kQUs7xjzfvJdLvI58iU6DHlynA\"",
|
|
30845
|
-
"mtime": "2026-09-
|
|
31155
|
+
"mtime": "2026-09-06T08:07:40.934Z",
|
|
30846
31156
|
"size": 12940,
|
|
30847
31157
|
"path": "../public/_nuxt/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2"
|
|
30848
31158
|
},
|
|
30849
|
-
"/_nuxt/geist-mono-
|
|
30850
|
-
"type": "font/woff2",
|
|
30851
|
-
"etag": "\"1820-nQACIwCsmkduQK2CSMidMhmLR9U\"",
|
|
30852
|
-
"mtime": "2026-09-05T18:48:20.552Z",
|
|
30853
|
-
"size": 6176,
|
|
30854
|
-
"path": "../public/_nuxt/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2"
|
|
30855
|
-
},
|
|
30856
|
-
"/_nuxt/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2": {
|
|
31159
|
+
"/_nuxt/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2": {
|
|
30857
31160
|
"type": "font/woff2",
|
|
30858
|
-
"etag": "\"
|
|
30859
|
-
"mtime": "2026-09-
|
|
30860
|
-
"size":
|
|
30861
|
-
"path": "../public/_nuxt/geist-mono-
|
|
31161
|
+
"etag": "\"3968-BV9ZbqWHVAcipAKX5y8la3JkUQs\"",
|
|
31162
|
+
"mtime": "2026-09-06T08:07:40.935Z",
|
|
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-06T08:07:40.935Z",
|
|
30867
31170
|
"size": 23128,
|
|
30868
31171
|
"path": "../public/_nuxt/geist-mono-latin-wght-normal.XN7g48iV.woff2"
|
|
30869
31172
|
},
|
|
30870
|
-
"/_nuxt/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2": {
|
|
30871
|
-
"type": "font/woff2",
|
|
30872
|
-
"etag": "\"3968-BV9ZbqWHVAcipAKX5y8la3JkUQs\"",
|
|
30873
|
-
"mtime": "2026-09-05T18:48:20.553Z",
|
|
30874
|
-
"size": 14696,
|
|
30875
|
-
"path": "../public/_nuxt/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2"
|
|
30876
|
-
},
|
|
30877
31173
|
"/_nuxt/geist-mono-vietnamese-wght-normal.DadHysG0.woff2": {
|
|
30878
31174
|
"type": "font/woff2",
|
|
30879
31175
|
"etag": "\"1e10-mpU2OlFk4DakDO4paRfgJ2LHDsM\"",
|
|
30880
|
-
"mtime": "2026-09-
|
|
31176
|
+
"mtime": "2026-09-06T08:07:40.935Z",
|
|
30881
31177
|
"size": 7696,
|
|
30882
31178
|
"path": "../public/_nuxt/geist-mono-vietnamese-wght-normal.DadHysG0.woff2"
|
|
30883
31179
|
},
|
|
31180
|
+
"/_nuxt/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2": {
|
|
31181
|
+
"type": "font/woff2",
|
|
31182
|
+
"etag": "\"16b4-aZoLOGWoEYW7gmwZamfz5kTfFco\"",
|
|
31183
|
+
"mtime": "2026-09-06T08:07:40.935Z",
|
|
31184
|
+
"size": 5812,
|
|
31185
|
+
"path": "../public/_nuxt/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2"
|
|
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-06T08:07:40.936Z",
|
|
30888
31191
|
"size": 8004,
|
|
30889
31192
|
"path": "../public/_nuxt/geist-vietnamese-wght-normal.6IgcOCM7.woff2"
|
|
30890
31193
|
},
|
|
31194
|
+
"/_nuxt/hb_ceMJP.js": {
|
|
31195
|
+
"type": "text/javascript; charset=utf-8",
|
|
31196
|
+
"etag": "\"2404-kR4WdZ0CWZbFeOQtbFv9FcKLpLA\"",
|
|
31197
|
+
"mtime": "2026-09-06T08:07:40.923Z",
|
|
31198
|
+
"size": 9220,
|
|
31199
|
+
"path": "../public/_nuxt/hb_ceMJP.js"
|
|
31200
|
+
},
|
|
30891
31201
|
"/_nuxt/HclGiUj8.js": {
|
|
30892
31202
|
"type": "text/javascript; charset=utf-8",
|
|
30893
31203
|
"etag": "\"4bb-OjUbx7m0dPDFUkNfZ4BuUs+1sHI\"",
|
|
30894
|
-
"mtime": "2026-09-
|
|
31204
|
+
"mtime": "2026-09-06T08:07:40.921Z",
|
|
30895
31205
|
"size": 1211,
|
|
30896
31206
|
"path": "../public/_nuxt/HclGiUj8.js"
|
|
30897
31207
|
},
|
|
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
31208
|
"/_nuxt/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2": {
|
|
30906
31209
|
"type": "font/woff2",
|
|
30907
31210
|
"etag": "\"20a4-mDbzFbXDuciYuRDdYbcJkcocaWU\"",
|
|
30908
|
-
"mtime": "2026-09-
|
|
31211
|
+
"mtime": "2026-09-06T08:07:40.936Z",
|
|
30909
31212
|
"size": 8356,
|
|
30910
31213
|
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2"
|
|
30911
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-06T08:07:40.936Z",
|
|
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-400-normal.CEL4l2ZJ.woff": {
|
|
31223
|
+
"type": "font/woff",
|
|
31224
|
+
"etag": "\"1c24-wpeoT2YBcqJ4hbipsoiB1m58w98\"",
|
|
31225
|
+
"mtime": "2026-09-06T08:07:40.936Z",
|
|
31226
|
+
"size": 7204,
|
|
31227
|
+
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff"
|
|
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-06T08:07:40.936Z",
|
|
30923
31233
|
"size": 8460,
|
|
30924
31234
|
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2"
|
|
30925
31235
|
},
|
|
30926
31236
|
"/_nuxt/ibm-plex-mono-cyrillic-600-normal.CTOM6hUh.woff2": {
|
|
30927
31237
|
"type": "font/woff2",
|
|
30928
31238
|
"etag": "\"2488-WHfw+ZaOHy8HhYaV0AzfKZ8dozA\"",
|
|
30929
|
-
"mtime": "2026-09-
|
|
31239
|
+
"mtime": "2026-09-06T08:07:40.936Z",
|
|
30930
31240
|
"size": 9352,
|
|
30931
31241
|
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-600-normal.CTOM6hUh.woff2"
|
|
30932
31242
|
},
|
|
30933
|
-
"/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff": {
|
|
30934
|
-
"type": "font/woff",
|
|
30935
|
-
"etag": "\"16bc-GBHBT1lClOFRLkxzjkkoZV1QN+Y\"",
|
|
30936
|
-
"mtime": "2026-09-05T18:48:20.554Z",
|
|
30937
|
-
"size": 5820,
|
|
30938
|
-
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff"
|
|
30939
|
-
},
|
|
30940
31243
|
"/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2": {
|
|
30941
31244
|
"type": "font/woff2",
|
|
30942
31245
|
"etag": "\"1b00-w57wcK5m30ZZ4sBwsaWzlcI3F7c\"",
|
|
30943
|
-
"mtime": "2026-09-
|
|
31246
|
+
"mtime": "2026-09-06T08:07:40.937Z",
|
|
30944
31247
|
"size": 6912,
|
|
30945
31248
|
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2"
|
|
30946
31249
|
},
|
|
31250
|
+
"/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff": {
|
|
31251
|
+
"type": "font/woff",
|
|
31252
|
+
"etag": "\"16bc-GBHBT1lClOFRLkxzjkkoZV1QN+Y\"",
|
|
31253
|
+
"mtime": "2026-09-06T08:07:40.937Z",
|
|
31254
|
+
"size": 5820,
|
|
31255
|
+
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff"
|
|
31256
|
+
},
|
|
30947
31257
|
"/_nuxt/ibm-plex-mono-cyrillic-600-normal.fLZuRloM.woff": {
|
|
30948
31258
|
"type": "font/woff",
|
|
30949
31259
|
"etag": "\"1c64-t3eBraFEv1B6D+DIfK23+8/F2mA\"",
|
|
30950
|
-
"mtime": "2026-09-
|
|
31260
|
+
"mtime": "2026-09-06T08:07:40.937Z",
|
|
30951
31261
|
"size": 7268,
|
|
30952
31262
|
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-600-normal.fLZuRloM.woff"
|
|
30953
31263
|
},
|
|
30954
31264
|
"/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff": {
|
|
30955
31265
|
"type": "font/woff",
|
|
30956
31266
|
"etag": "\"168c-gvDCX7ATl9g9LbPEKlQjJSXhRPw\"",
|
|
30957
|
-
"mtime": "2026-09-
|
|
31267
|
+
"mtime": "2026-09-06T08:07:40.937Z",
|
|
30958
31268
|
"size": 5772,
|
|
30959
31269
|
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff"
|
|
30960
31270
|
},
|
|
31271
|
+
"/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2": {
|
|
31272
|
+
"type": "font/woff2",
|
|
31273
|
+
"etag": "\"1b3c-pFin0Xk9XlGLhqdo1+npFJkyQ5Y\"",
|
|
31274
|
+
"mtime": "2026-09-06T08:07:40.937Z",
|
|
31275
|
+
"size": 6972,
|
|
31276
|
+
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2"
|
|
31277
|
+
},
|
|
30961
31278
|
"/_nuxt/ibm-plex-mono-cyrillic-ext-600-normal.9HEixskS.woff": {
|
|
30962
31279
|
"type": "font/woff",
|
|
30963
31280
|
"etag": "\"16a0-8RgtlGopOkBt2P4jKMMd7hk+D74\"",
|
|
30964
|
-
"mtime": "2026-09-
|
|
31281
|
+
"mtime": "2026-09-06T08:07:40.938Z",
|
|
30965
31282
|
"size": 5792,
|
|
30966
31283
|
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-600-normal.9HEixskS.woff"
|
|
30967
31284
|
},
|
|
30968
31285
|
"/_nuxt/ibm-plex-mono-cyrillic-ext-600-normal.V-xxqcpd.woff2": {
|
|
30969
31286
|
"type": "font/woff2",
|
|
30970
31287
|
"etag": "\"1e0c-R9/TBUX2qLWGlHeC55LoggyLdII\"",
|
|
30971
|
-
"mtime": "2026-09-
|
|
31288
|
+
"mtime": "2026-09-06T08:07:40.938Z",
|
|
30972
31289
|
"size": 7692,
|
|
30973
31290
|
"path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-600-normal.V-xxqcpd.woff2"
|
|
30974
31291
|
},
|
|
30975
|
-
"/_nuxt/ibm-plex-mono-
|
|
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": {
|
|
31292
|
+
"/_nuxt/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2": {
|
|
30983
31293
|
"type": "font/woff2",
|
|
30984
|
-
"etag": "\"
|
|
30985
|
-
"mtime": "2026-09-
|
|
30986
|
-
"size":
|
|
30987
|
-
"path": "../public/_nuxt/ibm-plex-mono-latin-
|
|
31294
|
+
"etag": "\"3974-u4dQDjIEo6fGXWYzx5xchAw76NM\"",
|
|
31295
|
+
"mtime": "2026-09-06T08:07:40.938Z",
|
|
31296
|
+
"size": 14708,
|
|
31297
|
+
"path": "../public/_nuxt/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2"
|
|
30988
31298
|
},
|
|
30989
31299
|
"/_nuxt/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff": {
|
|
30990
31300
|
"type": "font/woff",
|
|
30991
31301
|
"etag": "\"3358-rWMSbc9cch7FBErQpfnWcshAYFM\"",
|
|
30992
|
-
"mtime": "2026-09-
|
|
31302
|
+
"mtime": "2026-09-06T08:07:40.938Z",
|
|
30993
31303
|
"size": 13144,
|
|
30994
31304
|
"path": "../public/_nuxt/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff"
|
|
30995
31305
|
},
|
|
30996
|
-
"/_nuxt/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2": {
|
|
30997
|
-
"type": "font/woff2",
|
|
30998
|
-
"etag": "\"3974-u4dQDjIEo6fGXWYzx5xchAw76NM\"",
|
|
30999
|
-
"mtime": "2026-09-05T18:48:20.555Z",
|
|
31000
|
-
"size": 14708,
|
|
31001
|
-
"path": "../public/_nuxt/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2"
|
|
31002
|
-
},
|
|
31003
31306
|
"/_nuxt/ibm-plex-mono-latin-600-normal.BgSNZQsw.woff2": {
|
|
31004
31307
|
"type": "font/woff2",
|
|
31005
31308
|
"etag": "\"3d04-zppco6h02pIBwmMMXLe/qpaIwFI\"",
|
|
31006
|
-
"mtime": "2026-09-
|
|
31309
|
+
"mtime": "2026-09-06T08:07:40.939Z",
|
|
31007
31310
|
"size": 15620,
|
|
31008
31311
|
"path": "../public/_nuxt/ibm-plex-mono-latin-600-normal.BgSNZQsw.woff2"
|
|
31009
31312
|
},
|
|
31010
31313
|
"/_nuxt/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff": {
|
|
31011
31314
|
"type": "font/woff",
|
|
31012
31315
|
"etag": "\"3364-S8wip5no4QO46BFh3FPzQKpIOec\"",
|
|
31013
|
-
"mtime": "2026-09-
|
|
31316
|
+
"mtime": "2026-09-06T08:07:40.938Z",
|
|
31014
31317
|
"size": 13156,
|
|
31015
31318
|
"path": "../public/_nuxt/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff"
|
|
31016
31319
|
},
|
|
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-06T08:07:40.939Z",
|
|
31021
31324
|
"size": 13208,
|
|
31022
31325
|
"path": "../public/_nuxt/ibm-plex-mono-latin-600-normal.DWFSQ4vo.woff"
|
|
31023
31326
|
},
|
|
31024
|
-
"/_nuxt/ibm-plex-mono-latin-
|
|
31327
|
+
"/_nuxt/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2": {
|
|
31025
31328
|
"type": "font/woff2",
|
|
31026
|
-
"etag": "\"
|
|
31027
|
-
"mtime": "2026-09-
|
|
31028
|
-
"size":
|
|
31029
|
-
"path": "../public/_nuxt/ibm-plex-mono-latin-
|
|
31329
|
+
"etag": "\"3a28-0y8OBwGsYgQ4QBMagAznF6huTuI\"",
|
|
31330
|
+
"mtime": "2026-09-06T08:07:40.939Z",
|
|
31331
|
+
"size": 14888,
|
|
31332
|
+
"path": "../public/_nuxt/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2"
|
|
31030
31333
|
},
|
|
31031
31334
|
"/_nuxt/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff": {
|
|
31032
31335
|
"type": "font/woff",
|
|
31033
31336
|
"etag": "\"2df8-dfJwTWMZxHyGnUuJDGfpU4w2dLs\"",
|
|
31034
|
-
"mtime": "2026-09-
|
|
31337
|
+
"mtime": "2026-09-06T08:07:40.939Z",
|
|
31035
31338
|
"size": 11768,
|
|
31036
31339
|
"path": "../public/_nuxt/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff"
|
|
31037
31340
|
},
|
|
31341
|
+
"/_nuxt/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2": {
|
|
31342
|
+
"type": "font/woff2",
|
|
31343
|
+
"etag": "\"3424-SvjO9SK9iRLLL61B4GuQJWQP62I\"",
|
|
31344
|
+
"mtime": "2026-09-06T08:07:40.939Z",
|
|
31345
|
+
"size": 13348,
|
|
31346
|
+
"path": "../public/_nuxt/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2"
|
|
31347
|
+
},
|
|
31038
31348
|
"/_nuxt/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2": {
|
|
31039
31349
|
"type": "font/woff2",
|
|
31040
31350
|
"etag": "\"3478-PpQvQo59iHxPLcEUBhJfmFmCPuA\"",
|
|
31041
|
-
"mtime": "2026-09-
|
|
31351
|
+
"mtime": "2026-09-06T08:07:40.940Z",
|
|
31042
31352
|
"size": 13432,
|
|
31043
31353
|
"path": "../public/_nuxt/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2"
|
|
31044
31354
|
},
|
|
31045
31355
|
"/_nuxt/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff": {
|
|
31046
31356
|
"type": "font/woff",
|
|
31047
31357
|
"etag": "\"2df8-73sb1BUyjMsq70ppsdZBHEqWrtE\"",
|
|
31048
|
-
"mtime": "2026-09-
|
|
31358
|
+
"mtime": "2026-09-06T08:07:40.940Z",
|
|
31049
31359
|
"size": 11768,
|
|
31050
31360
|
"path": "../public/_nuxt/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff"
|
|
31051
31361
|
},
|
|
31052
|
-
"/_nuxt/ibm-plex-mono-latin-ext-600-normal.D38SheWl.woff2": {
|
|
31053
|
-
"type": "font/woff2",
|
|
31054
|
-
"etag": "\"37f8-5XYRqKuMO2rN5QZqfj4VW8r2jSQ\"",
|
|
31055
|
-
"mtime": "2026-09-05T18:48:20.557Z",
|
|
31056
|
-
"size": 14328,
|
|
31057
|
-
"path": "../public/_nuxt/ibm-plex-mono-latin-ext-600-normal.D38SheWl.woff2"
|
|
31058
|
-
},
|
|
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-06T08:07:40.941Z",
|
|
31063
31366
|
"size": 11832,
|
|
31064
31367
|
"path": "../public/_nuxt/ibm-plex-mono-latin-ext-600-normal.DmB0ttJJ.woff"
|
|
31065
31368
|
},
|
|
31369
|
+
"/_nuxt/ibm-plex-mono-latin-ext-600-normal.D38SheWl.woff2": {
|
|
31370
|
+
"type": "font/woff2",
|
|
31371
|
+
"etag": "\"37f8-5XYRqKuMO2rN5QZqfj4VW8r2jSQ\"",
|
|
31372
|
+
"mtime": "2026-09-06T08:07:40.941Z",
|
|
31373
|
+
"size": 14328,
|
|
31374
|
+
"path": "../public/_nuxt/ibm-plex-mono-latin-ext-600-normal.D38SheWl.woff2"
|
|
31375
|
+
},
|
|
31066
31376
|
"/_nuxt/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2": {
|
|
31067
31377
|
"type": "font/woff2",
|
|
31068
31378
|
"etag": "\"16ec-bIkS18/YaTiWdOzfzp4pFXvLmqQ\"",
|
|
31069
|
-
"mtime": "2026-09-
|
|
31379
|
+
"mtime": "2026-09-06T08:07:40.941Z",
|
|
31070
31380
|
"size": 5868,
|
|
31071
31381
|
"path": "../public/_nuxt/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2"
|
|
31072
31382
|
},
|
|
31073
31383
|
"/_nuxt/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff": {
|
|
31074
31384
|
"type": "font/woff",
|
|
31075
31385
|
"etag": "\"15f0-mGuZIt/ndQFiw5uxmCOkhhWSxi4\"",
|
|
31076
|
-
"mtime": "2026-09-
|
|
31386
|
+
"mtime": "2026-09-06T08:07:40.941Z",
|
|
31077
31387
|
"size": 5616,
|
|
31078
31388
|
"path": "../public/_nuxt/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff"
|
|
31079
31389
|
},
|
|
31080
31390
|
"/_nuxt/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff": {
|
|
31081
31391
|
"type": "font/woff",
|
|
31082
31392
|
"etag": "\"15f4-LdRX2sBB3T5WDAsZLCwBlsMYXPw\"",
|
|
31083
|
-
"mtime": "2026-09-
|
|
31393
|
+
"mtime": "2026-09-06T08:07:40.941Z",
|
|
31084
31394
|
"size": 5620,
|
|
31085
31395
|
"path": "../public/_nuxt/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff"
|
|
31086
31396
|
},
|
|
31087
31397
|
"/_nuxt/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2": {
|
|
31088
31398
|
"type": "font/woff2",
|
|
31089
31399
|
"etag": "\"1798-7VDjg0E2ggd9c0kJDHNRh+Fu5E0\"",
|
|
31090
|
-
"mtime": "2026-09-
|
|
31400
|
+
"mtime": "2026-09-06T08:07:40.941Z",
|
|
31091
31401
|
"size": 6040,
|
|
31092
31402
|
"path": "../public/_nuxt/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2"
|
|
31093
31403
|
},
|
|
31094
31404
|
"/_nuxt/ibm-plex-mono-vietnamese-600-normal.D2EvbN8M.woff2": {
|
|
31095
31405
|
"type": "font/woff2",
|
|
31096
31406
|
"etag": "\"1b14-ylPjcMKGVc4RbTi2G25N0MSlVNo\"",
|
|
31097
|
-
"mtime": "2026-09-
|
|
31407
|
+
"mtime": "2026-09-06T08:07:40.942Z",
|
|
31098
31408
|
"size": 6932,
|
|
31099
31409
|
"path": "../public/_nuxt/ibm-plex-mono-vietnamese-600-normal.D2EvbN8M.woff2"
|
|
31100
31410
|
},
|
|
31101
31411
|
"/_nuxt/ibm-plex-mono-vietnamese-600-normal.iLQfcSjf.woff": {
|
|
31102
31412
|
"type": "font/woff",
|
|
31103
31413
|
"etag": "\"1650-9Pko0qRZ+EoISmnDaTRQ8KRGy/s\"",
|
|
31104
|
-
"mtime": "2026-09-
|
|
31414
|
+
"mtime": "2026-09-06T08:07:40.942Z",
|
|
31105
31415
|
"size": 5712,
|
|
31106
31416
|
"path": "../public/_nuxt/ibm-plex-mono-vietnamese-600-normal.iLQfcSjf.woff"
|
|
31107
31417
|
},
|
|
31108
31418
|
"/_nuxt/kZl6yT-12.js": {
|
|
31109
31419
|
"type": "text/javascript; charset=utf-8",
|
|
31110
31420
|
"etag": "\"e9-t0VKevMurw+ruGbCV/EgmcM2dww\"",
|
|
31111
|
-
"mtime": "2026-09-
|
|
31421
|
+
"mtime": "2026-09-06T08:07:40.924Z",
|
|
31112
31422
|
"size": 233,
|
|
31113
31423
|
"path": "../public/_nuxt/kZl6yT-12.js"
|
|
31114
31424
|
},
|
|
31115
31425
|
"/_nuxt/kZV5TQvh2.js": {
|
|
31116
31426
|
"type": "text/javascript; charset=utf-8",
|
|
31117
31427
|
"etag": "\"b36-HJpEm4SThB06CEAVNx2ouDQlwFw\"",
|
|
31118
|
-
"mtime": "2026-09-
|
|
31428
|
+
"mtime": "2026-09-06T08:07:40.923Z",
|
|
31119
31429
|
"size": 2870,
|
|
31120
31430
|
"path": "../public/_nuxt/kZV5TQvh2.js"
|
|
31121
31431
|
},
|
|
31122
31432
|
"/_nuxt/lO5tpDZ5.js": {
|
|
31123
31433
|
"type": "text/javascript; charset=utf-8",
|
|
31124
31434
|
"etag": "\"3b-z4jypkmUW9c9v+AALQ28pDyJ80A\"",
|
|
31125
|
-
"mtime": "2026-09-
|
|
31435
|
+
"mtime": "2026-09-06T08:07:40.924Z",
|
|
31126
31436
|
"size": 59,
|
|
31127
31437
|
"path": "../public/_nuxt/lO5tpDZ5.js"
|
|
31128
31438
|
},
|
|
31129
|
-
"/_nuxt/
|
|
31439
|
+
"/_nuxt/kkEthL84.js": {
|
|
31440
|
+
"type": "text/javascript; charset=utf-8",
|
|
31441
|
+
"etag": "\"1c85b-rndZIGE/0sbN/dsGvCDYNjDmhrs\"",
|
|
31442
|
+
"mtime": "2026-09-06T08:07:40.924Z",
|
|
31443
|
+
"size": 116827,
|
|
31444
|
+
"path": "../public/_nuxt/kkEthL84.js"
|
|
31445
|
+
},
|
|
31446
|
+
"/_nuxt/logs.BS1sb41K.css": {
|
|
31130
31447
|
"type": "text/css; charset=utf-8",
|
|
31131
|
-
"etag": "\"1635-
|
|
31132
|
-
"mtime": "2026-09-
|
|
31448
|
+
"etag": "\"1635-lMZop5du3sVLv4O11u3L5K8ZoeM\"",
|
|
31449
|
+
"mtime": "2026-09-06T08:07:40.942Z",
|
|
31133
31450
|
"size": 5685,
|
|
31134
|
-
"path": "../public/_nuxt/logs.
|
|
31451
|
+
"path": "../public/_nuxt/logs.BS1sb41K.css"
|
|
31135
31452
|
},
|
|
31136
31453
|
"/_nuxt/monitor.CmwpEUCI.css": {
|
|
31137
31454
|
"type": "text/css; charset=utf-8",
|
|
31138
31455
|
"etag": "\"483-Lotbm40sJjjryRjOid43sPWucRw\"",
|
|
31139
|
-
"mtime": "2026-09-
|
|
31456
|
+
"mtime": "2026-09-06T08:07:40.942Z",
|
|
31140
31457
|
"size": 1155,
|
|
31141
31458
|
"path": "../public/_nuxt/monitor.CmwpEUCI.css"
|
|
31142
31459
|
},
|
|
31143
31460
|
"/_nuxt/niDwBOZW.js": {
|
|
31144
31461
|
"type": "text/javascript; charset=utf-8",
|
|
31145
31462
|
"etag": "\"12f1-JlgzqHJQENBszEGLuO9fMyRYm/E\"",
|
|
31146
|
-
"mtime": "2026-09-
|
|
31463
|
+
"mtime": "2026-09-06T08:07:40.924Z",
|
|
31147
31464
|
"size": 4849,
|
|
31148
31465
|
"path": "../public/_nuxt/niDwBOZW.js"
|
|
31149
31466
|
},
|
|
31150
31467
|
"/_nuxt/OmpTerminalPanel.B_Pl5Ynm.css": {
|
|
31151
31468
|
"type": "text/css; charset=utf-8",
|
|
31152
31469
|
"etag": "\"10d0-uLyus3YRLFfRIoYhlKCERpGIwVE\"",
|
|
31153
|
-
"mtime": "2026-09-
|
|
31470
|
+
"mtime": "2026-09-06T08:07:40.925Z",
|
|
31154
31471
|
"size": 4304,
|
|
31155
31472
|
"path": "../public/_nuxt/OmpTerminalPanel.B_Pl5Ynm.css"
|
|
31156
31473
|
},
|
|
31157
|
-
"/_nuxt/
|
|
31474
|
+
"/_nuxt/ORt9oDIy2.js": {
|
|
31158
31475
|
"type": "text/javascript; charset=utf-8",
|
|
31159
|
-
"etag": "\"
|
|
31160
|
-
"mtime": "2026-09-
|
|
31161
|
-
"size":
|
|
31162
|
-
"path": "../public/_nuxt/
|
|
31476
|
+
"etag": "\"c42-g+2xQOk5SmNd8dk4LSqx7FrSVE0\"",
|
|
31477
|
+
"mtime": "2026-09-06T08:07:40.921Z",
|
|
31478
|
+
"size": 3138,
|
|
31479
|
+
"path": "../public/_nuxt/ORt9oDIy2.js"
|
|
31163
31480
|
},
|
|
31164
|
-
"/_nuxt/pages.
|
|
31481
|
+
"/_nuxt/pages.BkE-AfIb.css": {
|
|
31165
31482
|
"type": "text/css; charset=utf-8",
|
|
31166
|
-
"etag": "\"1f78-
|
|
31167
|
-
"mtime": "2026-09-
|
|
31483
|
+
"etag": "\"1f78-4k4EvKWp5iUvKtA4CjhB7L8WifI\"",
|
|
31484
|
+
"mtime": "2026-09-06T08:07:40.943Z",
|
|
31168
31485
|
"size": 8056,
|
|
31169
|
-
"path": "../public/_nuxt/pages.
|
|
31486
|
+
"path": "../public/_nuxt/pages.BkE-AfIb.css"
|
|
31170
31487
|
},
|
|
31171
|
-
"/_nuxt/
|
|
31172
|
-
"type": "text/
|
|
31173
|
-
"etag": "\"
|
|
31174
|
-
"mtime": "2026-09-
|
|
31175
|
-
"size":
|
|
31176
|
-
"path": "../public/_nuxt/
|
|
31488
|
+
"/_nuxt/permissions.DTRtZeTw.css": {
|
|
31489
|
+
"type": "text/css; charset=utf-8",
|
|
31490
|
+
"etag": "\"4c8-9re0o0yfSvROlGQZhstmHhHfzlE\"",
|
|
31491
|
+
"mtime": "2026-09-06T08:07:40.943Z",
|
|
31492
|
+
"size": 1224,
|
|
31493
|
+
"path": "../public/_nuxt/permissions.DTRtZeTw.css"
|
|
31494
|
+
},
|
|
31495
|
+
"/_nuxt/plugins.BcSEwwGb.css": {
|
|
31496
|
+
"type": "text/css; charset=utf-8",
|
|
31497
|
+
"etag": "\"a50-JjpuKXTJQUZDH3PRepA186REfG4\"",
|
|
31498
|
+
"mtime": "2026-09-06T08:07:40.943Z",
|
|
31499
|
+
"size": 2640,
|
|
31500
|
+
"path": "../public/_nuxt/plugins.BcSEwwGb.css"
|
|
31177
31501
|
},
|
|
31178
|
-
"/_nuxt/
|
|
31502
|
+
"/_nuxt/QoCzfpo2.js": {
|
|
31179
31503
|
"type": "text/javascript; charset=utf-8",
|
|
31180
|
-
"etag": "\"
|
|
31181
|
-
"mtime": "2026-09-
|
|
31182
|
-
"size":
|
|
31183
|
-
"path": "../public/_nuxt/
|
|
31504
|
+
"etag": "\"22a4-SrGVCoHXHudcEctvNqU+aTlWgyg\"",
|
|
31505
|
+
"mtime": "2026-09-06T08:07:40.921Z",
|
|
31506
|
+
"size": 8868,
|
|
31507
|
+
"path": "../public/_nuxt/QoCzfpo2.js"
|
|
31184
31508
|
},
|
|
31185
|
-
"/_nuxt/
|
|
31186
|
-
"type": "text/
|
|
31187
|
-
"etag": "\"
|
|
31188
|
-
"mtime": "2026-09-
|
|
31189
|
-
"size":
|
|
31190
|
-
"path": "../public/_nuxt/
|
|
31509
|
+
"/_nuxt/RYFtK4qZ2.js": {
|
|
31510
|
+
"type": "text/javascript; charset=utf-8",
|
|
31511
|
+
"etag": "\"594c-ZHrAodAyz6fWAruZCqluWn052zA\"",
|
|
31512
|
+
"mtime": "2026-09-06T08:07:40.922Z",
|
|
31513
|
+
"size": 22860,
|
|
31514
|
+
"path": "../public/_nuxt/RYFtK4qZ2.js"
|
|
31191
31515
|
},
|
|
31192
31516
|
"/_nuxt/rqZ-1SoP.js": {
|
|
31193
31517
|
"type": "text/javascript; charset=utf-8",
|
|
31194
31518
|
"etag": "\"761d-n3nYYQYIxdnAu9GaImKE7k1Xy7Y\"",
|
|
31195
|
-
"mtime": "2026-09-
|
|
31519
|
+
"mtime": "2026-09-06T08:07:40.924Z",
|
|
31196
31520
|
"size": 30237,
|
|
31197
31521
|
"path": "../public/_nuxt/rqZ-1SoP.js"
|
|
31198
31522
|
},
|
|
31199
|
-
"/_nuxt/
|
|
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
|
-
"/_nuxt/RYFtK4qZ2.js": {
|
|
31523
|
+
"/_nuxt/RzXYI9FM.js": {
|
|
31207
31524
|
"type": "text/javascript; charset=utf-8",
|
|
31208
|
-
"etag": "\"
|
|
31209
|
-
"mtime": "2026-09-
|
|
31210
|
-
"size":
|
|
31211
|
-
"path": "../public/_nuxt/
|
|
31525
|
+
"etag": "\"9a6b-hWs9hqxsYAIn7EKAMQfiXbHC5bw\"",
|
|
31526
|
+
"mtime": "2026-09-06T08:07:40.922Z",
|
|
31527
|
+
"size": 39531,
|
|
31528
|
+
"path": "../public/_nuxt/RzXYI9FM.js"
|
|
31212
31529
|
},
|
|
31213
|
-
"/_nuxt/
|
|
31530
|
+
"/_nuxt/settings.BqMF2nfj.css": {
|
|
31214
31531
|
"type": "text/css; charset=utf-8",
|
|
31215
|
-
"etag": "\"
|
|
31216
|
-
"mtime": "2026-09-
|
|
31217
|
-
"size":
|
|
31218
|
-
"path": "../public/_nuxt/
|
|
31532
|
+
"etag": "\"14e1-XjxEHtGImiK+UJc+jkb4oOU898E\"",
|
|
31533
|
+
"mtime": "2026-09-06T08:07:40.943Z",
|
|
31534
|
+
"size": 5345,
|
|
31535
|
+
"path": "../public/_nuxt/settings.BqMF2nfj.css"
|
|
31219
31536
|
},
|
|
31220
31537
|
"/_nuxt/teams.CUMnbQGf.css": {
|
|
31221
31538
|
"type": "text/css; charset=utf-8",
|
|
31222
31539
|
"etag": "\"6b7-g1G8KL1N00xQbucKbHyHr3V6KOg\"",
|
|
31223
|
-
"mtime": "2026-09-
|
|
31540
|
+
"mtime": "2026-09-06T08:07:40.943Z",
|
|
31224
31541
|
"size": 1719,
|
|
31225
31542
|
"path": "../public/_nuxt/teams.CUMnbQGf.css"
|
|
31226
31543
|
},
|
|
31227
|
-
"/_nuxt/
|
|
31544
|
+
"/_nuxt/tokens.rW1xHxRW.css": {
|
|
31228
31545
|
"type": "text/css; charset=utf-8",
|
|
31229
|
-
"etag": "\"
|
|
31230
|
-
"mtime": "2026-09-
|
|
31231
|
-
"size":
|
|
31232
|
-
"path": "../public/_nuxt/
|
|
31546
|
+
"etag": "\"9cd-hrb0z9L9Q1QW+qFELSWPTH41I/8\"",
|
|
31547
|
+
"mtime": "2026-09-06T08:07:40.943Z",
|
|
31548
|
+
"size": 2509,
|
|
31549
|
+
"path": "../public/_nuxt/tokens.rW1xHxRW.css"
|
|
31233
31550
|
},
|
|
31234
|
-
"/_nuxt/
|
|
31551
|
+
"/_nuxt/town.BLrD9-WH.css": {
|
|
31235
31552
|
"type": "text/css; charset=utf-8",
|
|
31236
|
-
"etag": "\"
|
|
31237
|
-
"mtime": "2026-09-
|
|
31238
|
-
"size":
|
|
31239
|
-
"path": "../public/_nuxt/
|
|
31553
|
+
"etag": "\"64-INqlNEwsg1I+Dzc8LaEkJCLno5o\"",
|
|
31554
|
+
"mtime": "2026-09-06T08:07:40.944Z",
|
|
31555
|
+
"size": 100,
|
|
31556
|
+
"path": "../public/_nuxt/town.BLrD9-WH.css"
|
|
31240
31557
|
},
|
|
31241
31558
|
"/_nuxt/TownView.BHLKAjEu.css": {
|
|
31242
31559
|
"type": "text/css; charset=utf-8",
|
|
31243
31560
|
"etag": "\"11b2a-iRw/kbvCuxhjwK4gMYcSwCJYIEk\"",
|
|
31244
|
-
"mtime": "2026-09-
|
|
31561
|
+
"mtime": "2026-09-06T08:07:40.925Z",
|
|
31245
31562
|
"size": 72490,
|
|
31246
31563
|
"path": "../public/_nuxt/TownView.BHLKAjEu.css"
|
|
31247
31564
|
},
|
|
31248
|
-
"/_nuxt/users.D8lcLE62.css": {
|
|
31249
|
-
"type": "text/css; charset=utf-8",
|
|
31250
|
-
"etag": "\"2f7-vPqmiQmG+gTnKc25vyRnF3nNTy0\"",
|
|
31251
|
-
"mtime": "2026-09-05T18:48:20.560Z",
|
|
31252
|
-
"size": 759,
|
|
31253
|
-
"path": "../public/_nuxt/users.D8lcLE62.css"
|
|
31254
|
-
},
|
|
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
31565
|
"/_nuxt/vJ4FPb-_.js": {
|
|
31263
31566
|
"type": "text/javascript; charset=utf-8",
|
|
31264
31567
|
"etag": "\"496e-HYp1zkNZ5UP5CkmOCjjlTOlpRAA\"",
|
|
31265
|
-
"mtime": "2026-09-
|
|
31568
|
+
"mtime": "2026-09-06T08:07:40.925Z",
|
|
31266
31569
|
"size": 18798,
|
|
31267
31570
|
"path": "../public/_nuxt/vJ4FPb-_.js"
|
|
31268
31571
|
},
|
|
31269
|
-
"/_nuxt/
|
|
31572
|
+
"/_nuxt/town.C_DsNW0J.css": {
|
|
31270
31573
|
"type": "text/css; charset=utf-8",
|
|
31271
|
-
"etag": "\"
|
|
31272
|
-
"mtime": "2026-09-
|
|
31273
|
-
"size":
|
|
31274
|
-
"path": "../public/_nuxt/
|
|
31574
|
+
"etag": "\"3b2-lx8uIK7y3f1Nkj2gMcTuak3mB/I\"",
|
|
31575
|
+
"mtime": "2026-09-06T08:07:40.944Z",
|
|
31576
|
+
"size": 946,
|
|
31577
|
+
"path": "../public/_nuxt/town.C_DsNW0J.css"
|
|
31275
31578
|
},
|
|
31276
|
-
"/_nuxt/
|
|
31277
|
-
"type": "text/javascript; charset=utf-8",
|
|
31278
|
-
"etag": "\"1285-2DSy7SejsFZSSxlWC2oD7KdPFW4\"",
|
|
31279
|
-
"mtime": "2026-09-05T18:48:20.545Z",
|
|
31280
|
-
"size": 4741,
|
|
31281
|
-
"path": "../public/_nuxt/wirVyscc.js"
|
|
31282
|
-
},
|
|
31283
|
-
"/_nuxt/_id_.DIxEKj88.css": {
|
|
31579
|
+
"/_nuxt/users.D8lcLE62.css": {
|
|
31284
31580
|
"type": "text/css; charset=utf-8",
|
|
31285
|
-
"etag": "\"
|
|
31286
|
-
"mtime": "2026-09-
|
|
31287
|
-
"size":
|
|
31288
|
-
"path": "../public/_nuxt/
|
|
31581
|
+
"etag": "\"2f7-vPqmiQmG+gTnKc25vyRnF3nNTy0\"",
|
|
31582
|
+
"mtime": "2026-09-06T08:07:40.944Z",
|
|
31583
|
+
"size": 759,
|
|
31584
|
+
"path": "../public/_nuxt/users.D8lcLE62.css"
|
|
31289
31585
|
},
|
|
31290
31586
|
"/_nuxt/VLI2Zy4t.js": {
|
|
31291
31587
|
"type": "text/javascript; charset=utf-8",
|
|
31292
31588
|
"etag": "\"79db-1zvdkTTeWhTS0A+KbRz0/ud/ntw\"",
|
|
31293
|
-
"mtime": "2026-09-
|
|
31589
|
+
"mtime": "2026-09-06T08:07:40.922Z",
|
|
31294
31590
|
"size": 31195,
|
|
31295
31591
|
"path": "../public/_nuxt/VLI2Zy4t.js"
|
|
31296
31592
|
},
|
|
31593
|
+
"/_nuxt/workshop.CbymC2LY.css": {
|
|
31594
|
+
"type": "text/css; charset=utf-8",
|
|
31595
|
+
"etag": "\"d1c-YQcbvHheVnY14BKtJSxnL4w6r4Y\"",
|
|
31596
|
+
"mtime": "2026-09-06T08:07:40.944Z",
|
|
31597
|
+
"size": 3356,
|
|
31598
|
+
"path": "../public/_nuxt/workshop.CbymC2LY.css"
|
|
31599
|
+
},
|
|
31600
|
+
"/_nuxt/zVkqCZ78.js": {
|
|
31601
|
+
"type": "text/javascript; charset=utf-8",
|
|
31602
|
+
"etag": "\"e583-atAfcqj4nxxk6KUzDMuv2R/bDCg\"",
|
|
31603
|
+
"mtime": "2026-09-06T08:07:40.925Z",
|
|
31604
|
+
"size": 58755,
|
|
31605
|
+
"path": "../public/_nuxt/zVkqCZ78.js"
|
|
31606
|
+
},
|
|
31297
31607
|
"/_nuxt/_id_.DTvjd6VN.css": {
|
|
31298
31608
|
"type": "text/css; charset=utf-8",
|
|
31299
31609
|
"etag": "\"36e7-Um0hcCUBU5cd8ESeOGJffLOJkG8\"",
|
|
31300
|
-
"mtime": "2026-09-
|
|
31610
|
+
"mtime": "2026-09-06T08:07:40.926Z",
|
|
31301
31611
|
"size": 14055,
|
|
31302
31612
|
"path": "../public/_nuxt/_id_.DTvjd6VN.css"
|
|
31303
31613
|
},
|
|
31304
|
-
"/_nuxt/
|
|
31614
|
+
"/_nuxt/_id_.DIxEKj88.css": {
|
|
31305
31615
|
"type": "text/css; charset=utf-8",
|
|
31306
|
-
"etag": "\"
|
|
31307
|
-
"mtime": "2026-09-
|
|
31308
|
-
"size":
|
|
31309
|
-
"path": "../public/_nuxt/
|
|
31616
|
+
"etag": "\"1564-kqE2azzqPk0lKOVi0vRsIBIu7UM\"",
|
|
31617
|
+
"mtime": "2026-09-06T08:07:40.925Z",
|
|
31618
|
+
"size": 5476,
|
|
31619
|
+
"path": "../public/_nuxt/_id_.DIxEKj88.css"
|
|
31310
31620
|
},
|
|
31311
31621
|
"/assets/game/coin.png": {
|
|
31312
31622
|
"type": "image/png",
|
|
@@ -31315,6 +31625,20 @@ const assets = {
|
|
|
31315
31625
|
"size": 6733,
|
|
31316
31626
|
"path": "../public/assets/game/coin.png"
|
|
31317
31627
|
},
|
|
31628
|
+
"/assets/game/player-sheet.png": {
|
|
31629
|
+
"type": "image/png",
|
|
31630
|
+
"etag": "\"2742-xHFqZq17XtbQVhapFMWJpVb0W5o\"",
|
|
31631
|
+
"mtime": "2026-08-25T12:20:54.514Z",
|
|
31632
|
+
"size": 10050,
|
|
31633
|
+
"path": "../public/assets/game/player-sheet.png"
|
|
31634
|
+
},
|
|
31635
|
+
"/_nuxt/_wsId_.BFyCuUwS.css": {
|
|
31636
|
+
"type": "text/css; charset=utf-8",
|
|
31637
|
+
"etag": "\"11059-fUcBwBRjCr5Nger7gVc5ZTCEb1o\"",
|
|
31638
|
+
"mtime": "2026-09-06T08:07:40.926Z",
|
|
31639
|
+
"size": 69721,
|
|
31640
|
+
"path": "../public/_nuxt/_wsId_.BFyCuUwS.css"
|
|
31641
|
+
},
|
|
31318
31642
|
"/assets/game/tuxemon-town.json": {
|
|
31319
31643
|
"type": "application/json",
|
|
31320
31644
|
"etag": "\"fec5-uB5TWkwSxd0G5Tiupl3I0+u94XM\"",
|
|
@@ -31322,12 +31646,12 @@ const assets = {
|
|
|
31322
31646
|
"size": 65221,
|
|
31323
31647
|
"path": "../public/assets/game/tuxemon-town.json"
|
|
31324
31648
|
},
|
|
31325
|
-
"/
|
|
31326
|
-
"type": "
|
|
31327
|
-
"etag": "\"
|
|
31328
|
-
"mtime": "2026-
|
|
31329
|
-
"size":
|
|
31330
|
-
"path": "../public/
|
|
31649
|
+
"/_nuxt/builds/latest.json": {
|
|
31650
|
+
"type": "application/json",
|
|
31651
|
+
"etag": "\"47-qDccb/InmBCvCI/goUm7hH7Z94U\"",
|
|
31652
|
+
"mtime": "2026-09-06T08:07:46.121Z",
|
|
31653
|
+
"size": 71,
|
|
31654
|
+
"path": "../public/_nuxt/builds/latest.json"
|
|
31331
31655
|
},
|
|
31332
31656
|
"/scene/background/cyber-town-background.svg": {
|
|
31333
31657
|
"type": "image/svg+xml",
|
|
@@ -31336,19 +31660,89 @@ const assets = {
|
|
|
31336
31660
|
"size": 5718,
|
|
31337
31661
|
"path": "../public/scene/background/cyber-town-background.svg"
|
|
31338
31662
|
},
|
|
31339
|
-
"/
|
|
31340
|
-
"type": "application/json",
|
|
31341
|
-
"etag": "\"47-GDqaVI/lOhYE3WbtBwlSHrID4h8\"",
|
|
31342
|
-
"mtime": "2026-09-05T18:48:24.622Z",
|
|
31343
|
-
"size": 71,
|
|
31344
|
-
"path": "../public/_nuxt/builds/latest.json"
|
|
31345
|
-
},
|
|
31346
|
-
"/assets/game/character/bot.png": {
|
|
31663
|
+
"/assets/game/tuxmon-sample-32px-extruded.png": {
|
|
31347
31664
|
"type": "image/png",
|
|
31348
|
-
"etag": "\"
|
|
31349
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31350
|
-
"size":
|
|
31351
|
-
"path": "../public/assets/game/
|
|
31665
|
+
"etag": "\"2ee08-3yTsAqzTx0djGCGVAEgUGQ1/MEg\"",
|
|
31666
|
+
"mtime": "2026-08-25T12:20:54.518Z",
|
|
31667
|
+
"size": 192008,
|
|
31668
|
+
"path": "../public/assets/game/tuxmon-sample-32px-extruded.png"
|
|
31669
|
+
},
|
|
31670
|
+
"/assets/game/devices/caster.glb": {
|
|
31671
|
+
"type": "model/gltf-binary",
|
|
31672
|
+
"etag": "\"5874-Qd988sa7u1y3lgH8K/zhzRLbRbs\"",
|
|
31673
|
+
"mtime": "2026-08-27T07:03:12.510Z",
|
|
31674
|
+
"size": 22644,
|
|
31675
|
+
"path": "../public/assets/game/devices/caster.glb"
|
|
31676
|
+
},
|
|
31677
|
+
"/assets/game/devices/device-console.glb": {
|
|
31678
|
+
"type": "model/gltf-binary",
|
|
31679
|
+
"etag": "\"3984-GibNFJHAqtYWIxLy79rzU1HZAds\"",
|
|
31680
|
+
"mtime": "2026-08-26T05:23:14.559Z",
|
|
31681
|
+
"size": 14724,
|
|
31682
|
+
"path": "../public/assets/game/devices/device-console.glb"
|
|
31683
|
+
},
|
|
31684
|
+
"/assets/game/devices/agv.glb": {
|
|
31685
|
+
"type": "model/gltf-binary",
|
|
31686
|
+
"etag": "\"b0ec-SGRGNfFN89F7v1GROXKGve7pQqs\"",
|
|
31687
|
+
"mtime": "2026-08-27T07:03:12.531Z",
|
|
31688
|
+
"size": 45292,
|
|
31689
|
+
"path": "../public/assets/game/devices/agv.glb"
|
|
31690
|
+
},
|
|
31691
|
+
"/assets/game/devices/device-robot-arm.glb": {
|
|
31692
|
+
"type": "model/gltf-binary",
|
|
31693
|
+
"etag": "\"37fc-uBxMDklo0SfaA6KXZIylh/S2p+c\"",
|
|
31694
|
+
"mtime": "2026-08-26T05:23:14.560Z",
|
|
31695
|
+
"size": 14332,
|
|
31696
|
+
"path": "../public/assets/game/devices/device-robot-arm.glb"
|
|
31697
|
+
},
|
|
31698
|
+
"/assets/game/devices/device-scanner.glb": {
|
|
31699
|
+
"type": "model/gltf-binary",
|
|
31700
|
+
"etag": "\"28e0-uKYZaLiZiCedMMozKBOFU14HUSE\"",
|
|
31701
|
+
"mtime": "2026-08-26T05:23:14.560Z",
|
|
31702
|
+
"size": 10464,
|
|
31703
|
+
"path": "../public/assets/game/devices/device-scanner.glb"
|
|
31704
|
+
},
|
|
31705
|
+
"/assets/game/devices/extruder.glb": {
|
|
31706
|
+
"type": "model/gltf-binary",
|
|
31707
|
+
"etag": "\"18124-H6X1eQmFDn6eONUMGU6lGdQafZ8\"",
|
|
31708
|
+
"mtime": "2026-08-27T07:03:12.506Z",
|
|
31709
|
+
"size": 98596,
|
|
31710
|
+
"path": "../public/assets/game/devices/extruder.glb"
|
|
31711
|
+
},
|
|
31712
|
+
"/assets/game/devices/mdo.glb": {
|
|
31713
|
+
"type": "model/gltf-binary",
|
|
31714
|
+
"etag": "\"132e4-EDslgF5+17dSukguA0eZzN4I0+o\"",
|
|
31715
|
+
"mtime": "2026-08-27T07:03:12.518Z",
|
|
31716
|
+
"size": 78564,
|
|
31717
|
+
"path": "../public/assets/game/devices/mdo.glb"
|
|
31718
|
+
},
|
|
31719
|
+
"/assets/game/devices/power-cabinet.glb": {
|
|
31720
|
+
"type": "model/gltf-binary",
|
|
31721
|
+
"etag": "\"54f0-KsrAxig9JTAY5SGKK3jbdJXB6fk\"",
|
|
31722
|
+
"mtime": "2026-08-27T07:03:12.534Z",
|
|
31723
|
+
"size": 21744,
|
|
31724
|
+
"path": "../public/assets/game/devices/power-cabinet.glb"
|
|
31725
|
+
},
|
|
31726
|
+
"/assets/game/devices/pump.glb": {
|
|
31727
|
+
"type": "model/gltf-binary",
|
|
31728
|
+
"etag": "\"4bc8-yAiKZtO+P2bBmqfRvhlxcF0oduE\"",
|
|
31729
|
+
"mtime": "2026-08-25T12:20:54.512Z",
|
|
31730
|
+
"size": 19400,
|
|
31731
|
+
"path": "../public/assets/game/devices/pump.glb"
|
|
31732
|
+
},
|
|
31733
|
+
"/assets/game/devices/tdo.glb": {
|
|
31734
|
+
"type": "model/gltf-binary",
|
|
31735
|
+
"etag": "\"e10c-GdMX+mG/KrSVBzy4EeAPPjFoTqM\"",
|
|
31736
|
+
"mtime": "2026-08-27T07:03:12.523Z",
|
|
31737
|
+
"size": 57612,
|
|
31738
|
+
"path": "../public/assets/game/devices/tdo.glb"
|
|
31739
|
+
},
|
|
31740
|
+
"/assets/game/devices/winder.glb": {
|
|
31741
|
+
"type": "model/gltf-binary",
|
|
31742
|
+
"etag": "\"9084-N9S2enupsA8WyhEHtkIgQ+RBDV4\"",
|
|
31743
|
+
"mtime": "2026-08-27T07:03:12.526Z",
|
|
31744
|
+
"size": 36996,
|
|
31745
|
+
"path": "../public/assets/game/devices/winder.glb"
|
|
31352
31746
|
},
|
|
31353
31747
|
"/assets/game/character/device-3d.glb": {
|
|
31354
31748
|
"type": "model/gltf-binary",
|
|
@@ -31357,12 +31751,19 @@ const assets = {
|
|
|
31357
31751
|
"size": 19400,
|
|
31358
31752
|
"path": "../public/assets/game/character/device-3d.glb"
|
|
31359
31753
|
},
|
|
31360
|
-
"/assets/game/
|
|
31754
|
+
"/assets/game/devices/thickness-scanner.glb": {
|
|
31755
|
+
"type": "model/gltf-binary",
|
|
31756
|
+
"etag": "\"3480-WMTbMzRrl/6AJPzEIPhRW9xPugA\"",
|
|
31757
|
+
"mtime": "2026-08-27T07:03:12.527Z",
|
|
31758
|
+
"size": 13440,
|
|
31759
|
+
"path": "../public/assets/game/devices/thickness-scanner.glb"
|
|
31760
|
+
},
|
|
31761
|
+
"/assets/game/character/bot.png": {
|
|
31361
31762
|
"type": "image/png",
|
|
31362
|
-
"etag": "\"
|
|
31363
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31364
|
-
"size":
|
|
31365
|
-
"path": "../public/assets/game/
|
|
31763
|
+
"etag": "\"36fe-Ke8vj83Dinp8fFaRQQBfBsTGI/8\"",
|
|
31764
|
+
"mtime": "2026-08-25T12:20:54.510Z",
|
|
31765
|
+
"size": 14078,
|
|
31766
|
+
"path": "../public/assets/game/character/bot.png"
|
|
31366
31767
|
},
|
|
31367
31768
|
"/assets/game/character/hero-3d.glb": {
|
|
31368
31769
|
"type": "model/gltf-binary",
|
|
@@ -31371,6 +31772,13 @@ const assets = {
|
|
|
31371
31772
|
"size": 33940,
|
|
31372
31773
|
"path": "../public/assets/game/character/hero-3d.glb"
|
|
31373
31774
|
},
|
|
31775
|
+
"/assets/game/character/hero-anime-1.glb": {
|
|
31776
|
+
"type": "model/gltf-binary",
|
|
31777
|
+
"etag": "\"1044c-AUMAdrW4S6OKEsUeAcR5c50fyKs\"",
|
|
31778
|
+
"mtime": "2026-08-26T05:23:14.557Z",
|
|
31779
|
+
"size": 66636,
|
|
31780
|
+
"path": "../public/assets/game/character/hero-anime-1.glb"
|
|
31781
|
+
},
|
|
31374
31782
|
"/assets/game/character/hero-anime-2.glb": {
|
|
31375
31783
|
"type": "model/gltf-binary",
|
|
31376
31784
|
"etag": "\"1058c-J91UapGlsJg/5ODN8k8c7rSNpzw\"",
|
|
@@ -31378,12 +31786,12 @@ const assets = {
|
|
|
31378
31786
|
"size": 66956,
|
|
31379
31787
|
"path": "../public/assets/game/character/hero-anime-2.glb"
|
|
31380
31788
|
},
|
|
31381
|
-
"/assets/game/character/hero-anime-
|
|
31789
|
+
"/assets/game/character/hero-anime-3.glb": {
|
|
31382
31790
|
"type": "model/gltf-binary",
|
|
31383
|
-
"etag": "\"
|
|
31384
|
-
"mtime": "2026-08-26T05:23:14.
|
|
31385
|
-
"size":
|
|
31386
|
-
"path": "../public/assets/game/character/hero-anime-
|
|
31791
|
+
"etag": "\"1057c-jREeKLYoS8AFWzuIOgOSr6CzehU\"",
|
|
31792
|
+
"mtime": "2026-08-26T05:23:14.558Z",
|
|
31793
|
+
"size": 66940,
|
|
31794
|
+
"path": "../public/assets/game/character/hero-anime-3.glb"
|
|
31387
31795
|
},
|
|
31388
31796
|
"/assets/game/character/hero-anime-4.glb": {
|
|
31389
31797
|
"type": "model/gltf-binary",
|
|
@@ -31399,13 +31807,6 @@ const assets = {
|
|
|
31399
31807
|
"size": 14386,
|
|
31400
31808
|
"path": "../public/assets/game/character/mage.png"
|
|
31401
31809
|
},
|
|
31402
|
-
"/assets/game/player/misa-back-walk.000.png": {
|
|
31403
|
-
"type": "image/png",
|
|
31404
|
-
"etag": "\"157-/Sm0qrBJSHEFTGYwuSqnzRaX3Jk\"",
|
|
31405
|
-
"mtime": "2026-08-25T12:20:54.514Z",
|
|
31406
|
-
"size": 343,
|
|
31407
|
-
"path": "../public/assets/game/player/misa-back-walk.000.png"
|
|
31408
|
-
},
|
|
31409
31810
|
"/assets/game/character/knight.png": {
|
|
31410
31811
|
"type": "image/png",
|
|
31411
31812
|
"etag": "\"3b37-Wyixufl/LcqKO/AeTLuGvzi4goQ\"",
|
|
@@ -31413,19 +31814,12 @@ const assets = {
|
|
|
31413
31814
|
"size": 15159,
|
|
31414
31815
|
"path": "../public/assets/game/character/knight.png"
|
|
31415
31816
|
},
|
|
31416
|
-
"/assets/game/
|
|
31417
|
-
"type": "model/gltf-binary",
|
|
31418
|
-
"etag": "\"1057c-jREeKLYoS8AFWzuIOgOSr6CzehU\"",
|
|
31419
|
-
"mtime": "2026-08-26T05:23:14.558Z",
|
|
31420
|
-
"size": 66940,
|
|
31421
|
-
"path": "../public/assets/game/character/hero-anime-3.glb"
|
|
31422
|
-
},
|
|
31423
|
-
"/assets/game/player/misa-back-walk.002.png": {
|
|
31817
|
+
"/assets/game/player/misa-back-walk.000.png": {
|
|
31424
31818
|
"type": "image/png",
|
|
31425
|
-
"etag": "\"157-/
|
|
31819
|
+
"etag": "\"157-/Sm0qrBJSHEFTGYwuSqnzRaX3Jk\"",
|
|
31426
31820
|
"mtime": "2026-08-25T12:20:54.514Z",
|
|
31427
31821
|
"size": 343,
|
|
31428
|
-
"path": "../public/assets/game/player/misa-back-walk.
|
|
31822
|
+
"path": "../public/assets/game/player/misa-back-walk.000.png"
|
|
31429
31823
|
},
|
|
31430
31824
|
"/assets/game/player/misa-back-walk.001.png": {
|
|
31431
31825
|
"type": "image/png",
|
|
@@ -31434,6 +31828,13 @@ const assets = {
|
|
|
31434
31828
|
"size": 348,
|
|
31435
31829
|
"path": "../public/assets/game/player/misa-back-walk.001.png"
|
|
31436
31830
|
},
|
|
31831
|
+
"/assets/game/player/misa-back-walk.002.png": {
|
|
31832
|
+
"type": "image/png",
|
|
31833
|
+
"etag": "\"157-/PPQEWo58n/RNDDq2aia6nAWOQw\"",
|
|
31834
|
+
"mtime": "2026-08-25T12:20:54.514Z",
|
|
31835
|
+
"size": 343,
|
|
31836
|
+
"path": "../public/assets/game/player/misa-back-walk.002.png"
|
|
31837
|
+
},
|
|
31437
31838
|
"/assets/game/player/misa-back-walk.003.png": {
|
|
31438
31839
|
"type": "image/png",
|
|
31439
31840
|
"etag": "\"15c-L+/hkHDyiQ9FJs5w93pxALzvWEg\"",
|
|
@@ -31441,13 +31842,6 @@ const assets = {
|
|
|
31441
31842
|
"size": 348,
|
|
31442
31843
|
"path": "../public/assets/game/player/misa-back-walk.003.png"
|
|
31443
31844
|
},
|
|
31444
|
-
"/assets/game/player/misa-front-walk.000.png": {
|
|
31445
|
-
"type": "image/png",
|
|
31446
|
-
"etag": "\"152-+euueT0jvK7OjNDmtrdehgkQatE\"",
|
|
31447
|
-
"mtime": "2026-08-25T12:20:54.515Z",
|
|
31448
|
-
"size": 338,
|
|
31449
|
-
"path": "../public/assets/game/player/misa-front-walk.000.png"
|
|
31450
|
-
},
|
|
31451
31845
|
"/assets/game/player/misa-back.png": {
|
|
31452
31846
|
"type": "image/png",
|
|
31453
31847
|
"etag": "\"15c-KwI7aIn2tc/RPUJViRtdOGKZre4\"",
|
|
@@ -31455,6 +31849,13 @@ const assets = {
|
|
|
31455
31849
|
"size": 348,
|
|
31456
31850
|
"path": "../public/assets/game/player/misa-back.png"
|
|
31457
31851
|
},
|
|
31852
|
+
"/assets/game/player/misa-front-walk.000.png": {
|
|
31853
|
+
"type": "image/png",
|
|
31854
|
+
"etag": "\"152-+euueT0jvK7OjNDmtrdehgkQatE\"",
|
|
31855
|
+
"mtime": "2026-08-25T12:20:54.515Z",
|
|
31856
|
+
"size": 338,
|
|
31857
|
+
"path": "../public/assets/game/player/misa-front-walk.000.png"
|
|
31858
|
+
},
|
|
31458
31859
|
"/assets/game/player/misa-front-walk.001.png": {
|
|
31459
31860
|
"type": "image/png",
|
|
31460
31861
|
"etag": "\"155-r/wKRG+amQ/2TvYolFC2UPXHdC4\"",
|
|
@@ -31469,13 +31870,6 @@ const assets = {
|
|
|
31469
31870
|
"size": 341,
|
|
31470
31871
|
"path": "../public/assets/game/player/misa-front-walk.002.png"
|
|
31471
31872
|
},
|
|
31472
|
-
"/assets/game/player/misa-front.png": {
|
|
31473
|
-
"type": "image/png",
|
|
31474
|
-
"etag": "\"155-5X/+kju2mVH43N4/093cbqbcr+I\"",
|
|
31475
|
-
"mtime": "2026-08-25T12:20:54.516Z",
|
|
31476
|
-
"size": 341,
|
|
31477
|
-
"path": "../public/assets/game/player/misa-front.png"
|
|
31478
|
-
},
|
|
31479
31873
|
"/assets/game/player/misa-front-walk.003.png": {
|
|
31480
31874
|
"type": "image/png",
|
|
31481
31875
|
"etag": "\"155-JVYjyw5Raquze4YHeYII+iXfJx4\"",
|
|
@@ -31483,6 +31877,13 @@ const assets = {
|
|
|
31483
31877
|
"size": 341,
|
|
31484
31878
|
"path": "../public/assets/game/player/misa-front-walk.003.png"
|
|
31485
31879
|
},
|
|
31880
|
+
"/assets/game/player/misa-front.png": {
|
|
31881
|
+
"type": "image/png",
|
|
31882
|
+
"etag": "\"155-5X/+kju2mVH43N4/093cbqbcr+I\"",
|
|
31883
|
+
"mtime": "2026-08-25T12:20:54.516Z",
|
|
31884
|
+
"size": 341,
|
|
31885
|
+
"path": "../public/assets/game/player/misa-front.png"
|
|
31886
|
+
},
|
|
31486
31887
|
"/assets/game/player/misa-left-walk.000.png": {
|
|
31487
31888
|
"type": "image/png",
|
|
31488
31889
|
"etag": "\"13f-Hlll+U+bluQUD8w3klFf7vww08M\"",
|
|
@@ -31490,13 +31891,6 @@ const assets = {
|
|
|
31490
31891
|
"size": 319,
|
|
31491
31892
|
"path": "../public/assets/game/player/misa-left-walk.000.png"
|
|
31492
31893
|
},
|
|
31493
|
-
"/assets/game/player/misa-left-walk.002.png": {
|
|
31494
|
-
"type": "image/png",
|
|
31495
|
-
"etag": "\"13e-ZO/OghsjeAi+tGQq5r7slwZn0zg\"",
|
|
31496
|
-
"mtime": "2026-08-25T12:20:54.516Z",
|
|
31497
|
-
"size": 318,
|
|
31498
|
-
"path": "../public/assets/game/player/misa-left-walk.002.png"
|
|
31499
|
-
},
|
|
31500
31894
|
"/assets/game/player/misa-left-walk.001.png": {
|
|
31501
31895
|
"type": "image/png",
|
|
31502
31896
|
"etag": "\"13f-kvFuR3pXnfcL/C63pYoL58iuFOk\"",
|
|
@@ -31504,12 +31898,12 @@ const assets = {
|
|
|
31504
31898
|
"size": 319,
|
|
31505
31899
|
"path": "../public/assets/game/player/misa-left-walk.001.png"
|
|
31506
31900
|
},
|
|
31507
|
-
"/assets/game/player/misa-left.png": {
|
|
31901
|
+
"/assets/game/player/misa-left-walk.002.png": {
|
|
31508
31902
|
"type": "image/png",
|
|
31509
|
-
"etag": "\"
|
|
31903
|
+
"etag": "\"13e-ZO/OghsjeAi+tGQq5r7slwZn0zg\"",
|
|
31510
31904
|
"mtime": "2026-08-25T12:20:54.516Z",
|
|
31511
|
-
"size":
|
|
31512
|
-
"path": "../public/assets/game/player/misa-left.png"
|
|
31905
|
+
"size": 318,
|
|
31906
|
+
"path": "../public/assets/game/player/misa-left-walk.002.png"
|
|
31513
31907
|
},
|
|
31514
31908
|
"/assets/game/player/misa-left-walk.003.png": {
|
|
31515
31909
|
"type": "image/png",
|
|
@@ -31518,12 +31912,12 @@ const assets = {
|
|
|
31518
31912
|
"size": 319,
|
|
31519
31913
|
"path": "../public/assets/game/player/misa-left-walk.003.png"
|
|
31520
31914
|
},
|
|
31521
|
-
"/assets/game/player/misa-
|
|
31915
|
+
"/assets/game/player/misa-left.png": {
|
|
31522
31916
|
"type": "image/png",
|
|
31523
|
-
"etag": "\"
|
|
31524
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31525
|
-
"size":
|
|
31526
|
-
"path": "../public/assets/game/player/misa-
|
|
31917
|
+
"etag": "\"13f-U80SqejQLrLmFSm4ifHPjYI/r5Q\"",
|
|
31918
|
+
"mtime": "2026-08-25T12:20:54.516Z",
|
|
31919
|
+
"size": 319,
|
|
31920
|
+
"path": "../public/assets/game/player/misa-left.png"
|
|
31527
31921
|
},
|
|
31528
31922
|
"/assets/game/player/misa-right-walk.000.png": {
|
|
31529
31923
|
"type": "image/png",
|
|
@@ -31539,6 +31933,13 @@ const assets = {
|
|
|
31539
31933
|
"size": 303,
|
|
31540
31934
|
"path": "../public/assets/game/player/misa-right-walk.002.png"
|
|
31541
31935
|
},
|
|
31936
|
+
"/assets/game/player/misa-right-walk.001.png": {
|
|
31937
|
+
"type": "image/png",
|
|
31938
|
+
"etag": "\"12e-DPDndNK7hnSQCpyHmbRm1ttAM1s\"",
|
|
31939
|
+
"mtime": "2026-08-25T12:20:54.517Z",
|
|
31940
|
+
"size": 302,
|
|
31941
|
+
"path": "../public/assets/game/player/misa-right-walk.001.png"
|
|
31942
|
+
},
|
|
31542
31943
|
"/assets/game/player/misa-right-walk.003.png": {
|
|
31543
31944
|
"type": "image/png",
|
|
31544
31945
|
"etag": "\"12e-1Tf+ktOQnj4YEenOBQ+4j9KNxVQ\"",
|
|
@@ -31553,83 +31954,6 @@ const assets = {
|
|
|
31553
31954
|
"size": 302,
|
|
31554
31955
|
"path": "../public/assets/game/player/misa-right.png"
|
|
31555
31956
|
},
|
|
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"
|
|
31632
|
-
},
|
|
31633
31957
|
"/assets/game/npc/boltnu-sheet.png": {
|
|
31634
31958
|
"type": "image/png",
|
|
31635
31959
|
"etag": "\"a14-8xg90l10OuRoiEEgFXx9PTGJ9rA\"",
|
|
@@ -31644,13 +31968,6 @@ const assets = {
|
|
|
31644
31968
|
"size": 3941,
|
|
31645
31969
|
"path": "../public/assets/game/npc/fluttaflap-sheet.png"
|
|
31646
31970
|
},
|
|
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
31971
|
"/assets/game/npc/rockitten-sheet.png": {
|
|
31655
31972
|
"type": "image/png",
|
|
31656
31973
|
"etag": "\"786-IY4LCl37+SB6pnPynapoUxsxvOM\"",
|
|
@@ -31665,6 +31982,13 @@ const assets = {
|
|
|
31665
31982
|
"size": 2322,
|
|
31666
31983
|
"path": "../public/assets/game/npc/tux-sheet.png"
|
|
31667
31984
|
},
|
|
31985
|
+
"/assets/game/wuwa/world-middle.png": {
|
|
31986
|
+
"type": "image/png",
|
|
31987
|
+
"etag": "\"16164-Dxu+NdXPnqoPFfWHwQi1oefgNvU\"",
|
|
31988
|
+
"mtime": "2026-08-25T12:20:54.523Z",
|
|
31989
|
+
"size": 90468,
|
|
31990
|
+
"path": "../public/assets/game/wuwa/world-middle.png"
|
|
31991
|
+
},
|
|
31668
31992
|
"/assets/game/wuwa/scene-map.png": {
|
|
31669
31993
|
"type": "image/png",
|
|
31670
31994
|
"etag": "\"682db-bU8mh8SeHPotvuaCc6PZzrWoT+A\"",
|
|
@@ -31672,6 +31996,13 @@ const assets = {
|
|
|
31672
31996
|
"size": 426715,
|
|
31673
31997
|
"path": "../public/assets/game/wuwa/scene-map.png"
|
|
31674
31998
|
},
|
|
31999
|
+
"/assets/game/wuwa/world-far.png": {
|
|
32000
|
+
"type": "image/png",
|
|
32001
|
+
"etag": "\"6b391-DRcUWDyPUwUxDpAWplDh9StwdO0\"",
|
|
32002
|
+
"mtime": "2026-08-25T12:20:54.522Z",
|
|
32003
|
+
"size": 439185,
|
|
32004
|
+
"path": "../public/assets/game/wuwa/world-far.png"
|
|
32005
|
+
},
|
|
31675
32006
|
"/assets/game/wuwa/wu-aura.png": {
|
|
31676
32007
|
"type": "image/png",
|
|
31677
32008
|
"etag": "\"2055-NKWgEbJfTq5l56FGWi9WDWgBAbU\"",
|
|
@@ -31679,12 +32010,12 @@ const assets = {
|
|
|
31679
32010
|
"size": 8277,
|
|
31680
32011
|
"path": "../public/assets/game/wuwa/wu-aura.png"
|
|
31681
32012
|
},
|
|
31682
|
-
"/assets/game/wuwa/
|
|
32013
|
+
"/assets/game/wuwa/wu-ring.png": {
|
|
31683
32014
|
"type": "image/png",
|
|
31684
|
-
"etag": "\"
|
|
31685
|
-
"mtime": "2026-08-25T12:20:54.
|
|
31686
|
-
"size":
|
|
31687
|
-
"path": "../public/assets/game/wuwa/
|
|
32015
|
+
"etag": "\"65ac-/iIjlPgFNpD98zDsyCJYA8021E4\"",
|
|
32016
|
+
"mtime": "2026-08-25T12:20:54.527Z",
|
|
32017
|
+
"size": 26028,
|
|
32018
|
+
"path": "../public/assets/game/wuwa/wu-ring.png"
|
|
31688
32019
|
},
|
|
31689
32020
|
"/assets/game/wuwa/wu-lead.png": {
|
|
31690
32021
|
"type": "image/png",
|
|
@@ -31693,13 +32024,6 @@ const assets = {
|
|
|
31693
32024
|
"size": 15108,
|
|
31694
32025
|
"path": "../public/assets/game/wuwa/wu-lead.png"
|
|
31695
32026
|
},
|
|
31696
|
-
"/assets/game/wuwa/wu-ring.png": {
|
|
31697
|
-
"type": "image/png",
|
|
31698
|
-
"etag": "\"65ac-/iIjlPgFNpD98zDsyCJYA8021E4\"",
|
|
31699
|
-
"mtime": "2026-08-25T12:20:54.527Z",
|
|
31700
|
-
"size": 26028,
|
|
31701
|
-
"path": "../public/assets/game/wuwa/wu-ring.png"
|
|
31702
|
-
},
|
|
31703
32027
|
"/assets/game/wuwa/wu-slash.png": {
|
|
31704
32028
|
"type": "image/png",
|
|
31705
32029
|
"etag": "\"185-fVjcllSJOBMFcBWLIgBzTrzWGaY\"",
|
|
@@ -31707,6 +32031,13 @@ const assets = {
|
|
|
31707
32031
|
"size": 389,
|
|
31708
32032
|
"path": "../public/assets/game/wuwa/wu-slash.png"
|
|
31709
32033
|
},
|
|
32034
|
+
"/assets/game/wuwa/wu-worker-2.png": {
|
|
32035
|
+
"type": "image/png",
|
|
32036
|
+
"etag": "\"3c81-6qd4LQS0v2L4rTa0XAmekluER7c\"",
|
|
32037
|
+
"mtime": "2026-08-25T12:20:54.529Z",
|
|
32038
|
+
"size": 15489,
|
|
32039
|
+
"path": "../public/assets/game/wuwa/wu-worker-2.png"
|
|
32040
|
+
},
|
|
31710
32041
|
"/assets/game/wuwa/wu-worker-0.png": {
|
|
31711
32042
|
"type": "image/png",
|
|
31712
32043
|
"etag": "\"3c59-fILvgyTv9TKRgrI9GQlRhaSR96U\"",
|
|
@@ -31714,13 +32045,6 @@ const assets = {
|
|
|
31714
32045
|
"size": 15449,
|
|
31715
32046
|
"path": "../public/assets/game/wuwa/wu-worker-0.png"
|
|
31716
32047
|
},
|
|
31717
|
-
"/assets/game/wuwa/world-far.png": {
|
|
31718
|
-
"type": "image/png",
|
|
31719
|
-
"etag": "\"6b391-DRcUWDyPUwUxDpAWplDh9StwdO0\"",
|
|
31720
|
-
"mtime": "2026-08-25T12:20:54.522Z",
|
|
31721
|
-
"size": 439185,
|
|
31722
|
-
"path": "../public/assets/game/wuwa/world-far.png"
|
|
31723
|
-
},
|
|
31724
32048
|
"/assets/game/wuwa/wu-worker-1.png": {
|
|
31725
32049
|
"type": "image/png",
|
|
31726
32050
|
"etag": "\"3cc8-0XoRr5qFC7X+vEEX+XrX4cRX+D0\"",
|
|
@@ -31728,19 +32052,12 @@ const assets = {
|
|
|
31728
32052
|
"size": 15560,
|
|
31729
32053
|
"path": "../public/assets/game/wuwa/wu-worker-1.png"
|
|
31730
32054
|
},
|
|
31731
|
-
"/
|
|
31732
|
-
"type": "image/png",
|
|
31733
|
-
"etag": "\"3c81-6qd4LQS0v2L4rTa0XAmekluER7c\"",
|
|
31734
|
-
"mtime": "2026-08-25T12:20:54.529Z",
|
|
31735
|
-
"size": 15489,
|
|
31736
|
-
"path": "../public/assets/game/wuwa/wu-worker-2.png"
|
|
31737
|
-
},
|
|
31738
|
-
"/_nuxt/builds/meta/92d6bd39-dbc5-46d5-90d8-8387f36715fa.json": {
|
|
32055
|
+
"/_nuxt/builds/meta/54e22640-4fd0-4fee-9077-31d4d4bb7969.json": {
|
|
31739
32056
|
"type": "application/json",
|
|
31740
|
-
"etag": "\"58-
|
|
31741
|
-
"mtime": "2026-09-
|
|
32057
|
+
"etag": "\"58-rrmEpLO/wJ0L+jEH3Ydgl10HBf4\"",
|
|
32058
|
+
"mtime": "2026-09-06T08:07:46.121Z",
|
|
31742
32059
|
"size": 88,
|
|
31743
|
-
"path": "../public/_nuxt/builds/meta/
|
|
32060
|
+
"path": "../public/_nuxt/builds/meta/54e22640-4fd0-4fee-9077-31d4d4bb7969.json"
|
|
31744
32061
|
},
|
|
31745
32062
|
"/assets/game/wuwa/world-near.png": {
|
|
31746
32063
|
"type": "image/png",
|
|
@@ -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
|