agentworkshop 0.7.34 → 0.7.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (944) hide show
  1. package/.output/.AgentWorkShop/aml-python/aml_eval.py +171 -0
  2. package/.output/.AgentWorkShop/aml-python/amlkit.py +120 -0
  3. package/.output/.AgentWorkShop/aml-python/requirements.txt +7 -0
  4. package/.output/.AgentWorkShop/aml-python/train-example.py +92 -0
  5. package/.output/.AgentWorkShop/schema.json +2 -1
  6. package/.output/nitro.json +1 -1
  7. package/.output/public/_nuxt/{DLljr7g0.js → 45zuyAso.js} +1 -1
  8. package/.output/public/_nuxt/4sIEbgcl.js +42 -0
  9. package/.output/public/_nuxt/8NMOXZOV.js +1 -0
  10. package/.output/public/_nuxt/BCGafdXT.js +2 -0
  11. package/.output/public/_nuxt/BDNMzG2s2.js +1 -0
  12. package/.output/public/_nuxt/{C-mDhyEd.js → BDmh31hl.js} +1 -1
  13. package/.output/public/_nuxt/BFkgkW8u.js +4 -0
  14. package/.output/public/_nuxt/BG8sCcwx.js +14 -0
  15. package/.output/public/_nuxt/{D8CqF0yy.js → BHA40aHa.js} +1 -1
  16. package/.output/public/_nuxt/BJHKLJJU.js +1 -0
  17. package/.output/public/_nuxt/{DoTdlVVe2.js → BN6iuJEg2.js} +1 -1
  18. package/.output/public/_nuxt/BNT8gYU92.js +4 -0
  19. package/.output/public/_nuxt/BU83-NnX.js +106 -0
  20. package/.output/public/_nuxt/BYhEUx8t.js +17 -0
  21. package/.output/public/_nuxt/BzHEilTt.js +1 -0
  22. package/.output/public/_nuxt/{Ct-WOVr4.js → C3J6FYKa.js} +1 -1
  23. package/.output/public/_nuxt/C3gwHTz0.js +1 -0
  24. package/.output/public/_nuxt/C4DWUZ6d2.js +1 -0
  25. package/.output/public/_nuxt/C5gUkRwn.js +1 -0
  26. package/.output/public/_nuxt/CClOy-Hz2.js +1 -0
  27. package/.output/public/_nuxt/{CUXCQXjG.js → CM12FuB42.js} +1 -1
  28. package/.output/public/_nuxt/{BSCpFtzG.js → CSkxz2NX.js} +1 -1
  29. package/.output/public/_nuxt/CWoJjWmZ.js +1 -0
  30. package/.output/public/_nuxt/CY9LbPCI.js +1 -0
  31. package/.output/public/_nuxt/CYWVXZTS.js +7 -0
  32. package/.output/public/_nuxt/CZiw7sEV.js +1 -0
  33. package/.output/public/_nuxt/C_OLzD09.js +1 -0
  34. package/.output/public/_nuxt/C__m4EhR.js +1 -0
  35. package/.output/public/_nuxt/Cbq-mryP.js +1 -0
  36. package/.output/public/_nuxt/{C4OAdbVK2.js → Cc_9VzD42.js} +1 -1
  37. package/.output/public/_nuxt/{BASN8nZ0.js → CdPzkOMV.js} +1 -1
  38. package/.output/public/_nuxt/Cec0Ua3F.js +1 -0
  39. package/.output/public/_nuxt/{DYKVPzN-.js → CoNpEq5X.js} +1 -1
  40. package/.output/public/_nuxt/CojCTLKD.js +1 -0
  41. package/.output/public/_nuxt/{B7wL3pDk.js → Crod5z2f.js} +1 -1
  42. package/.output/public/_nuxt/CzlMDL5H.js +13 -0
  43. package/.output/public/_nuxt/{G0qIw7Gq2.js → D0ZBQrN_2.js} +1 -1
  44. package/.output/public/_nuxt/{Lp7Ll94I.js → D1YDxZpZ.js} +1 -1
  45. package/.output/public/_nuxt/{Bc0AmjfT.js → D20Yamr4.js} +1 -1
  46. package/.output/public/_nuxt/D6uzXueg.js +2 -0
  47. package/.output/public/_nuxt/D9Oidm5I.js +1 -0
  48. package/.output/public/_nuxt/DAe0h2MB.js +1 -0
  49. package/.output/public/_nuxt/DBHNsT1Y.js +23 -0
  50. package/.output/public/_nuxt/DDShH71m.js +1 -0
  51. package/.output/public/_nuxt/DDgJcSET.js +19 -0
  52. package/.output/public/_nuxt/DHFrCUxA2.js +13 -0
  53. package/.output/public/_nuxt/{BcrN7QEl2.js → DIaZ2PTo2.js} +1 -1
  54. package/.output/public/_nuxt/DPnwL14Y.js +1 -0
  55. package/.output/public/_nuxt/DR12_WCA.js +3 -0
  56. package/.output/public/_nuxt/{B9nXmjSB.js → DUrecWPx.js} +4 -4
  57. package/.output/public/_nuxt/DVsjtsvZ2.js +1 -0
  58. package/.output/public/_nuxt/DYr1VMiQ.js +6 -0
  59. package/.output/public/_nuxt/DZtm4l-P2.js +1 -0
  60. package/.output/public/_nuxt/DdD9mCHM.js +1 -0
  61. package/.output/public/_nuxt/DeJykBFf.js +9 -0
  62. package/.output/public/_nuxt/{DoMxCWN52.js → DeyBFhKH2.js} +1 -1
  63. package/.output/public/_nuxt/DkGQ7lnb2.js +1 -0
  64. package/.output/public/_nuxt/DmqknNvV.js +18 -0
  65. package/.output/public/_nuxt/DnUuIR83.js +1 -0
  66. package/.output/public/_nuxt/DrYV5i68.js +1 -0
  67. package/.output/public/_nuxt/{B5S_UyaC.js → DtYHUi5Z.js} +1 -1
  68. package/.output/public/_nuxt/Dz_Q3Lpw2.js +1 -0
  69. package/.output/public/_nuxt/DzbFpZRk.js +3 -0
  70. package/.output/public/_nuxt/HBLJ-wei.js +1 -0
  71. package/.output/public/_nuxt/JCoYF4IJ.js +31 -0
  72. package/.output/public/_nuxt/JTLM-kqr2.js +1 -0
  73. package/.output/public/_nuxt/{BeIfu4N3.js → KZQX7xoM.js} +2 -2
  74. package/.output/public/_nuxt/S_fVQwJK.js +1 -0
  75. package/.output/public/_nuxt/TownView.0oLiQgTC.css +1 -0
  76. package/.output/public/_nuxt/YnQxK3eG.js +1 -0
  77. package/.output/public/_nuxt/_id_.D-SYuyZb.css +1 -0
  78. package/.output/public/_nuxt/_id_.hma_BU6T.css +1 -0
  79. package/.output/public/_nuxt/_wsId_.B12v3PhY.css +1 -0
  80. package/.output/public/_nuxt/aLLjF2K-2.js +1 -0
  81. package/.output/public/_nuxt/aWWIh8YL.js +24 -0
  82. package/.output/public/_nuxt/ahgEJu2R.js +1 -0
  83. package/.output/public/_nuxt/aml.COEKNNqK.css +1 -0
  84. package/.output/public/_nuxt/builds/latest.json +1 -1
  85. package/.output/public/_nuxt/builds/meta/a66fdef7-dcfd-453b-b1f6-543c7dfd98d5.json +1 -0
  86. package/.output/public/_nuxt/daq.B3265ZDn.css +1 -0
  87. package/.output/public/_nuxt/dcw.DLYZqEhT.css +1 -0
  88. package/.output/public/_nuxt/default.DE_vT238.css +1 -0
  89. package/.output/public/_nuxt/entry.BB-Eeh-J.css +1 -0
  90. package/.output/public/_nuxt/jZsY8yYz.js +1 -0
  91. package/.output/public/_nuxt/logs.CqFyMrJw.css +1 -0
  92. package/.output/public/_nuxt/pages.ooEzrMm9.css +1 -0
  93. package/.output/public/_nuxt/pdk8jLGT.js +1 -0
  94. package/.output/public/_nuxt/plugins.5e5chZ67.css +1 -0
  95. package/.output/public/_nuxt/pz2JDAM7.js +2 -0
  96. package/.output/public/_nuxt/settings.Dm3M0RLy.css +1 -0
  97. package/.output/public/_nuxt/town.DKIAhKnx.css +1 -0
  98. package/.output/public/_nuxt/users.CXnP2E08.css +1 -0
  99. package/.output/public/_nuxt/vRTjoWqd.js +1 -0
  100. package/.output/public/_nuxt/workshop.Jk5HxWPE.css +1 -0
  101. package/.output/public/_nuxt/zIGh7R49.js +75 -0
  102. package/.output/public/_nuxt/zq5t1vyX.js +1 -0
  103. package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
  104. package/.output/server/chunks/_/entity.mjs +174 -0
  105. package/.output/server/chunks/_/entity.mjs.map +1 -0
  106. package/.output/server/chunks/_/env-manager.mjs +162 -0
  107. package/.output/server/chunks/_/env-manager.mjs.map +1 -0
  108. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  109. package/.output/server/chunks/_/nitro.mjs +1523 -1027
  110. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  111. package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
  112. package/.output/server/chunks/build/{TownView-BdHnAilw.mjs → TownView-jVazYOjN.mjs} +141 -141
  113. package/.output/server/chunks/build/{TownView-BdHnAilw.mjs.map → TownView-jVazYOjN.mjs.map} +1 -1
  114. package/.output/server/chunks/build/{_id_-Cb845FHR.mjs → _id_-CfVosNg3.mjs} +136 -136
  115. package/.output/server/chunks/build/{_id_-Cb845FHR.mjs.map → _id_-CfVosNg3.mjs.map} +1 -1
  116. package/.output/server/chunks/build/{_id_-fadFPl2i.mjs → _id_-Hwr4rZpr.mjs} +32 -32
  117. package/.output/server/chunks/build/{_id_-fadFPl2i.mjs.map → _id_-Hwr4rZpr.mjs.map} +1 -1
  118. package/.output/server/chunks/build/{_wsId_-CTZswnm5.mjs → _wsId_-BVg3bB77.mjs} +175 -165
  119. package/.output/server/chunks/build/{_wsId_-CTZswnm5.mjs.map → _wsId_-BVg3bB77.mjs.map} +1 -1
  120. package/.output/server/chunks/build/aml-BCSJCdX7.mjs +588 -0
  121. package/.output/server/chunks/build/aml-BCSJCdX7.mjs.map +1 -0
  122. package/.output/server/chunks/build/{daq-BvihjQyW.mjs → daq-C03Uu5UE.mjs} +108 -106
  123. package/.output/server/chunks/build/daq-C03Uu5UE.mjs.map +1 -0
  124. package/.output/server/chunks/build/{dcw-Ks2vJ4PF.mjs → dcw-6vEYVeje.mjs} +44 -44
  125. package/.output/server/chunks/build/{dcw-Ks2vJ4PF.mjs.map → dcw-6vEYVeje.mjs.map} +1 -1
  126. package/.output/server/chunks/build/{default-GgHt4O2R.mjs → default-hseyOqBT.mjs} +30 -27
  127. package/.output/server/chunks/build/{default-GgHt4O2R.mjs.map → default-hseyOqBT.mjs.map} +1 -1
  128. package/.output/server/chunks/build/{logs-CYBhkQwh.mjs → logs-B-xhuqln.mjs} +35 -35
  129. package/.output/server/chunks/build/{logs-CYBhkQwh.mjs.map → logs-B-xhuqln.mjs.map} +1 -1
  130. package/.output/server/chunks/build/{pages-C-6BRtv8.mjs → pages-BO7yZsXA.mjs} +18 -27
  131. package/.output/server/chunks/build/pages-BO7yZsXA.mjs.map +1 -0
  132. package/.output/server/chunks/build/{plugins-dZRegC7m.mjs → plugins-CUWmMdyt.mjs} +17 -17
  133. package/.output/server/chunks/build/{plugins-dZRegC7m.mjs.map → plugins-CUWmMdyt.mjs.map} +1 -1
  134. package/.output/server/chunks/build/{settings-CgDLkP3s.mjs → settings-DoQ2Oq3P.mjs} +43 -43
  135. package/.output/server/chunks/build/{settings-CgDLkP3s.mjs.map → settings-DoQ2Oq3P.mjs.map} +1 -1
  136. package/.output/server/chunks/build/{town-DJ-V5G9U.mjs → town-BOl6hs9B.mjs} +7 -7
  137. package/.output/server/chunks/build/{town-DJ-V5G9U.mjs.map → town-BOl6hs9B.mjs.map} +1 -1
  138. package/.output/server/chunks/build/useDaqStream-CIBaiGAl.mjs +1 -1
  139. package/.output/server/chunks/build/useDcwStream-CBbiYnWe.mjs +1 -1
  140. package/.output/server/chunks/build/{useWorkshopWs-CprkZEdq.mjs → useWorkshopWs-C_I7q9As.mjs} +110 -32
  141. package/.output/server/chunks/build/{useWorkshopWs-CprkZEdq.mjs.map → useWorkshopWs-C_I7q9As.mjs.map} +1 -1
  142. package/.output/server/chunks/build/{users-4nzxTjFT.mjs → users-fohSmF-J.mjs} +6 -6
  143. package/.output/server/chunks/build/{users-4nzxTjFT.mjs.map → users-fohSmF-J.mjs.map} +1 -1
  144. package/.output/server/chunks/build/{workshop-81xhz368.mjs → workshop-DX5-ldc4.mjs} +15 -15
  145. package/.output/server/chunks/build/{workshop-81xhz368.mjs.map → workshop-DX5-ldc4.mjs.map} +1 -1
  146. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +21 -8
  147. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
  148. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs +1 -1
  149. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs +58 -0
  150. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs.map +1 -0
  151. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +27 -6
  152. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs.map +1 -1
  153. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs +49 -0
  154. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs.map +1 -0
  155. package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs +45 -0
  156. package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs.map +1 -0
  157. package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs +30 -0
  158. package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs.map +1 -0
  159. package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs +40 -0
  160. package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs.map +1 -0
  161. package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs +42 -0
  162. package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs.map +1 -0
  163. package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs +1 -1
  164. package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs +1 -1
  165. package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs +4 -22
  166. package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs.map +1 -1
  167. package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs +1 -1
  168. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs +4 -16
  169. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs.map +1 -1
  170. package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs +19 -34
  171. package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs.map +1 -1
  172. package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs +41 -0
  173. package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs.map +1 -0
  174. package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs +62 -0
  175. package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs.map +1 -0
  176. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs +1 -1
  177. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs +1 -1
  178. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs +1 -1
  179. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs +63 -0
  180. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs.map +1 -0
  181. package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs +1 -1
  182. package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs +1 -1
  183. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs +54 -0
  184. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs.map +1 -0
  185. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs +46 -0
  186. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs.map +1 -0
  187. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +1 -1
  188. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +1 -1
  189. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +2 -2
  190. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +1 -1
  191. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +1 -1
  192. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +1 -1
  193. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +1 -1
  194. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +1 -1
  195. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +1 -1
  196. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +4 -4
  197. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +1 -1
  198. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +1 -1
  199. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +1 -1
  200. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +1 -1
  201. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +1 -1
  202. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +1 -1
  203. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +1 -1
  204. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +1 -1
  205. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +1 -1
  206. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +1 -1
  207. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +1 -1
  208. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +1 -1
  209. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +1 -1
  210. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +1 -1
  211. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +1 -1
  212. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +1 -1
  213. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +1 -1
  214. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +1 -1
  215. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +1 -1
  216. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +1 -1
  217. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +1 -1
  218. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +1 -1
  219. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +1 -1
  220. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -1
  221. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +1 -1
  222. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +1 -1
  223. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +1 -1
  224. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +1 -1
  225. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +1 -1
  226. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +1 -1
  227. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +1 -1
  228. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +1 -1
  229. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +1 -1
  230. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +1 -1
  231. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -1
  232. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +1 -1
  233. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +1 -1
  234. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +1 -1
  235. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +1 -1
  236. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +1 -1
  237. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +1 -1
  238. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +1 -1
  239. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +1 -1
  240. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +1 -1
  241. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +1 -1
  242. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +1 -1
  243. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +1 -1
  244. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +1 -1
  245. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +1 -1
  246. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
  247. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
  248. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +1 -1
  249. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +1 -1
  250. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +1 -1
  251. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
  252. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
  253. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
  254. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
  255. package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
  256. package/.output/server/chunks/routes/api/workshop/index2.get.mjs +12 -1
  257. package/.output/server/chunks/routes/api/workshop/index2.get.mjs.map +1 -1
  258. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +1 -1
  259. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +1 -1
  260. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +1 -1
  261. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +1 -1
  262. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +1 -1
  263. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +1 -1
  264. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
  265. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
  266. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
  267. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
  268. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +1 -1
  269. package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs +1 -1
  270. package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs +1 -1
  271. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +2 -2
  272. package/.output/server/chunks/routes/renderer.mjs +2 -2
  273. package/.output/server/chunks/virtual/entry.mjs +103 -17
  274. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  275. package/.output/server/package.json +1 -1
  276. package/README-zh.md +578 -507
  277. package/README.md +125 -51
  278. package/app/assets/css/main.css +329 -22
  279. package/app/components/AppHeader.vue +5 -4
  280. package/app/components/AppSidebar.vue +5 -4
  281. package/app/components/AwChart.vue +17 -0
  282. package/app/components/workshop/AgentLanesView.vue +2 -2
  283. package/app/components/workshop/ChannelSessionList.vue +3 -3
  284. package/app/components/workshop/CommandPalette.vue +1 -2
  285. package/app/components/workshop/Composer.vue +4 -4
  286. package/app/components/workshop/DaqNodeRow.vue +20 -1
  287. package/app/components/workshop/EventBlock.vue +3 -3
  288. package/app/components/workshop/MentionHoverCard.vue +1 -1
  289. package/app/components/workshop/MultiChannelView.vue +1 -1
  290. package/app/components/workshop/TaskBoardView.vue +5 -5
  291. package/app/components/workshop/TranscriptTimeline.vue +3 -3
  292. package/app/components/workshop/blocks/ClusterRoute.vue +3 -3
  293. package/app/components/workshop/blocks/ClusterStream.vue +1 -1
  294. package/app/components/workshop/blocks/ClusterTool.vue +1 -1
  295. package/app/components/workshop/lanes/LaneBlocks.vue +5 -2
  296. package/app/components/workshop/town/TownView.vue +0 -7
  297. package/app/composables/workshop/useClusteredBlocks.ts +22 -3
  298. package/app/composables/workshop/useEscClose.ts +44 -0
  299. package/app/config/index.ts +2 -1
  300. package/app/layouts/default.vue +25 -8
  301. package/app/pages/aml/index.vue +626 -4
  302. package/app/pages/daq/[id].vue +1 -1
  303. package/app/pages/daq/index.vue +10 -12
  304. package/app/pages/dcw/[id].vue +2 -2
  305. package/app/pages/dcw/index.vue +7 -11
  306. package/app/pages/index.vue +24 -6
  307. package/app/pages/logs/index.vue +2 -6
  308. package/app/pages/plugins/index.vue +1 -1
  309. package/app/pages/settings.vue +2 -2
  310. package/app/pages/town.vue +0 -2
  311. package/app/pages/users.vue +1 -1
  312. package/app/pages/workshop/index.vue +2 -2
  313. package/app/plugins/esc-close.client.ts +31 -0
  314. package/app/stores/workshop/events.ts +186 -36
  315. package/bin/aw.mjs +7 -2
  316. package/cli/aw.mjs +19 -34
  317. package/cli/commands/build.mjs +18 -1
  318. package/cli/commands/config.mjs +2 -0
  319. package/cli/commands/plugin.mjs +45 -18
  320. package/cli/commands/register.mjs +6 -2
  321. package/cli/commands/status.mjs +2 -1
  322. package/cli/commands/update.mjs +1 -1
  323. package/cli/commands/version.mjs +1 -1
  324. package/cli/core/args.mjs +76 -4
  325. package/cli/core/help.mjs +3 -1
  326. package/cli/core/meta.mjs +38 -0
  327. package/cli/core/post-build.mjs +96 -0
  328. package/cli/core/registry.mjs +6 -3
  329. package/config.yml +28 -26
  330. package/docs/aml.md +99 -0
  331. package/docs/cli.en.md +445 -0
  332. package/docs/cli.md +410 -220
  333. package/docs/full-test-plan.md +174 -0
  334. package/docs/multi-harness-architecture.md +248 -0
  335. package/docs/plugins.en.md +534 -0
  336. package/docs/plugins.md +531 -179
  337. package/docs/sdk.en.md +922 -0
  338. package/docs/sdk.md +725 -129
  339. package/i18n/dicts/aml.json +43 -1
  340. package/i18n/locales/en.ts +1928 -1885
  341. package/i18n/locales/zh-CN.ts +1928 -1885
  342. package/nuxt.config.ts +27 -2
  343. package/package.json +164 -153
  344. package/scripts/.mimosa/hook-status/sess_aeaecb58-8833-4b83-b93c-050467d21e03-d944d71bb3.json +14 -0
  345. package/scripts/_audit/aml-layout-diag.mjs +83 -0
  346. package/scripts/_audit/bump-version.mjs +51 -0
  347. package/scripts/_audit/channel-inspect.mjs +49 -0
  348. package/scripts/_audit/cleanup-apply.mjs +89 -0
  349. package/scripts/_audit/cleanup-plan.mjs +82 -0
  350. package/scripts/_audit/contrast-check.mjs +43 -0
  351. package/scripts/_audit/dcw-unrecorded-write.ts +1 -1
  352. package/scripts/_audit/design-shots.mjs +145 -0
  353. package/scripts/_audit/docs-font-probe.mjs +68 -0
  354. package/scripts/_audit/docs-probe.mjs +107 -0
  355. package/scripts/_audit/docs-shots.mjs +171 -0
  356. package/scripts/_audit/docs-v3-verify.mjs +255 -0
  357. package/scripts/_audit/docs-vue-lint.mjs +81 -0
  358. package/scripts/_audit/docs-vue-lint2.mjs +91 -0
  359. package/scripts/_audit/exp-cost-scaling.mjs +4 -1
  360. package/scripts/_audit/exp-envelope-and-png.mjs +2 -1
  361. package/scripts/_audit/exp-sweep-fairness.mjs +4 -2
  362. package/scripts/_audit/fix-settings-count.mjs +57 -0
  363. package/scripts/_audit/glass-verify.mjs +155 -0
  364. package/scripts/_audit/hydration-diff.mjs +104 -0
  365. package/scripts/_audit/hydration-head.mjs +36 -0
  366. package/scripts/_audit/hydration-probe.mjs +59 -0
  367. package/scripts/_audit/lead-matrix-test.mjs +172 -0
  368. package/scripts/_audit/plc-agent-task.mjs +74 -0
  369. package/scripts/_audit/plc-clean-scenario.mjs +434 -0
  370. package/scripts/_audit/plc-clean-shots.mjs +161 -0
  371. package/scripts/_audit/plc-fc10-probe.mjs +30 -0
  372. package/scripts/_audit/probe-binding.mjs +114 -103
  373. package/scripts/_audit/review-fix-verify.mjs +158 -0
  374. package/scripts/_audit/seed-demo.mjs +165 -0
  375. package/scripts/_audit/town-focus-shot.mjs +129 -0
  376. package/scripts/_audit/town-reposition.mjs +85 -0
  377. package/scripts/_audit/ts-resolve-hook.mjs +57 -22
  378. package/scripts/_audit/verify-cleanup.mjs +67 -0
  379. package/scripts/_audit/verify-release-pack.mjs +82 -0
  380. package/scripts/_audit/watchdog-recovery-test.mjs +127 -0
  381. package/scripts/_dbg-audit-all-pages.mjs +43 -43
  382. package/scripts/_dbg-configroot-audit.mjs +84 -84
  383. package/scripts/_dbg-daq-intervals-func.mjs +94 -94
  384. package/scripts/_dbg-daq-rowstyle-verify.mjs +112 -112
  385. package/scripts/_dbg-groups-ui-verify.mjs +122 -122
  386. package/scripts/_dbg-harness-e2e.mjs +92 -92
  387. package/scripts/_dbg-harness-ui-e2e.py +97 -97
  388. package/scripts/_dbg-hitl-timeout-e2e.mjs +93 -93
  389. package/scripts/_dbg-multiharness-live-e2e.mjs +254 -254
  390. package/scripts/_dbg-opslog-agent-e2e.mjs +194 -194
  391. package/scripts/_dbg-opt-team-e2e.mjs +133 -133
  392. package/scripts/_dbg-recipe-e2e.mjs +176 -176
  393. package/scripts/_dbg-recipe-stale-e2e.mjs +135 -135
  394. package/scripts/_dbg-render-perf.mjs +142 -142
  395. package/scripts/_dbg-render-regression.mjs +130 -130
  396. package/scripts/_dbg-town-smoke.mjs +54 -54
  397. package/scripts/aw-start-smoke.mjs +27 -8
  398. package/scripts/check-docs-sync.mjs +367 -0
  399. package/scripts/e2e-full-closedloop.mjs +36 -18
  400. package/scripts/production-closed-loop-e2e.mjs +300 -303
  401. package/scripts/test-cli-exit.mjs +129 -21
  402. package/scripts/test-daq-frame-race.mjs +144 -96
  403. package/scripts/test-events-index.mjs +176 -0
  404. package/scripts/test-lru.mjs +34 -11
  405. package/scripts/test-memory-month-query.mjs +11 -3
  406. package/scripts/test-plugin-hardening.mjs +7 -2
  407. package/scripts/test-plugin-lifecycle.mjs +173 -0
  408. package/scripts/test-rollback-index.mjs +76 -18
  409. package/scripts/test-sdk-surface.mjs +6 -3
  410. package/sdk/client.mjs +16 -7
  411. package/sdk/context.mjs +21 -9
  412. package/sdk/examples/line-sentinel/client.mjs +13 -6
  413. package/sdk/examples/line-sentinel/index.mjs +5 -2
  414. package/sdk/examples/ops-notifier/client.mjs +3 -1
  415. package/sdk/examples/sample-insight/client.mjs +4 -2
  416. package/sdk/index.d.mts +133 -16
  417. package/sdk/index.mjs +3 -2
  418. package/sdk/lifecycle.mjs +8 -3
  419. package/server/api/workshop/agent-tools/bindings/index.post.ts +22 -7
  420. package/server/api/workshop/aml/datasets/[id].delete.ts +39 -0
  421. package/server/api/workshop/aml/datasets/[id].get.ts +31 -9
  422. package/server/api/workshop/aml/datasets/[id].patch.ts +30 -0
  423. package/server/api/workshop/aml/entities/index.get.ts +13 -0
  424. package/server/api/workshop/aml/entities/prune.post.ts +28 -0
  425. package/server/api/workshop/aml/env/index.get.ts +13 -0
  426. package/server/api/workshop/aml/env/recheck.post.ts +14 -0
  427. package/server/api/workshop/aml/env/uv.post.ts +21 -0
  428. package/server/api/workshop/aml/env/venv.post.ts +24 -0
  429. package/server/api/workshop/aml/index.get.ts +14 -1
  430. package/server/api/workshop/aml/jobs/[id].delete.ts +44 -0
  431. package/server/api/workshop/aml/models/[id].delete.ts +35 -0
  432. package/server/api/workshop/aml/models/[id].patch.ts +30 -0
  433. package/server/services/workshop/agents/agent-interface.ts +3 -0
  434. package/server/services/workshop/agents/codex-agent.ts +4 -7
  435. package/server/services/workshop/agents/dsh-agent.ts +4 -7
  436. package/server/services/workshop/agents/opencode-agent.ts +5 -7
  437. package/server/services/workshop/aml/aml.repo.ts +18 -0
  438. package/server/services/workshop/aml/dataset-builder.ts +4 -0
  439. package/server/services/workshop/aml/entity.ts +365 -0
  440. package/server/services/workshop/aml/env-manager.ts +242 -0
  441. package/server/services/workshop/aml/job-orchestrator.ts +4 -15
  442. package/server/services/workshop/aml/model-registry.ts +6 -0
  443. package/server/services/workshop/aml/python-runtime.ts +396 -62
  444. package/server/services/workshop/aml/runtime.ts +95 -4
  445. package/server/services/workshop/daq/bus/mqtt.adapter.ts +3 -1
  446. package/server/services/workshop/daq/daq-controller.ts +95 -47
  447. package/server/services/workshop/daq/daq-node.repo.ts +0 -10
  448. package/server/services/workshop/daq/daq-runtime.ts +0 -5
  449. package/server/services/workshop/json-store.mjs +35 -2
  450. package/server/services/workshop/plugins/host.mjs +14 -5
  451. package/server/services/workshop/runtime/manager.ts +28 -1
  452. package/server/services/workshop/runtime/scheduler-loop.ts +10 -1
  453. package/server/services/workshop/settings.ts +2 -0
  454. package/shared/config/home.mjs +58 -0
  455. package/shared/config/schema.json +2 -1
  456. package/shared/lru.mjs +4 -1
  457. package/.output/public/_nuxt/-6OnbLFb.js +0 -1
  458. package/.output/public/_nuxt/-nb2uqVg.js +0 -1
  459. package/.output/public/_nuxt/4bHdIqEg.js +0 -18
  460. package/.output/public/_nuxt/6PZPfFcO.js +0 -17
  461. package/.output/public/_nuxt/BBBtwOpo.js +0 -9
  462. package/.output/public/_nuxt/BBwMH_hG.js +0 -7
  463. package/.output/public/_nuxt/BDUjyaF4.js +0 -42
  464. package/.output/public/_nuxt/BNXfwXpE.js +0 -1
  465. package/.output/public/_nuxt/BN_PdN3J.js +0 -24
  466. package/.output/public/_nuxt/BSSUlJnx2.js +0 -1
  467. package/.output/public/_nuxt/BWSE6hR6.js +0 -1
  468. package/.output/public/_nuxt/BZGNTgTQ2.js +0 -1
  469. package/.output/public/_nuxt/BZv4RFYN.js +0 -1
  470. package/.output/public/_nuxt/BcmbLh2z2.js +0 -1
  471. package/.output/public/_nuxt/BfGc7TJp.js +0 -1
  472. package/.output/public/_nuxt/BgTB6h_q.js +0 -2
  473. package/.output/public/_nuxt/BkLJA9J5.js +0 -1
  474. package/.output/public/_nuxt/Bp5luxkg2.js +0 -1
  475. package/.output/public/_nuxt/BuCHayqN.js +0 -1
  476. package/.output/public/_nuxt/BuvcLKh1.js +0 -19
  477. package/.output/public/_nuxt/C3tCneTM.js +0 -1
  478. package/.output/public/_nuxt/C77oC8yC2.js +0 -7
  479. package/.output/public/_nuxt/C9f8QMp12.js +0 -1
  480. package/.output/public/_nuxt/CKfhtOt7.js +0 -13
  481. package/.output/public/_nuxt/CQvmN-Mi.js +0 -1
  482. package/.output/public/_nuxt/CUDrOuW7.js +0 -1
  483. package/.output/public/_nuxt/CZcC-gpk.js +0 -1
  484. package/.output/public/_nuxt/CbzsPO5H.js +0 -1
  485. package/.output/public/_nuxt/CdSOrh2c.js +0 -1
  486. package/.output/public/_nuxt/Cgx818r-.js +0 -1
  487. package/.output/public/_nuxt/Cjm7VogC.js +0 -1
  488. package/.output/public/_nuxt/Cm5mDxzH.js +0 -1
  489. package/.output/public/_nuxt/CmHzfVc5.js +0 -3
  490. package/.output/public/_nuxt/Cn3J3NXR.js +0 -23
  491. package/.output/public/_nuxt/Cno6kYiO2.js +0 -1
  492. package/.output/public/_nuxt/Cp6z0RN7.js +0 -1
  493. package/.output/public/_nuxt/CwqIxJGj.js +0 -2
  494. package/.output/public/_nuxt/D-Ca4BGY.js +0 -70
  495. package/.output/public/_nuxt/D0fhp-Ga.js +0 -75
  496. package/.output/public/_nuxt/D1z7i2UP.js +0 -31
  497. package/.output/public/_nuxt/DIaTPH1M.js +0 -1
  498. package/.output/public/_nuxt/DTYBfjRY.js +0 -1
  499. package/.output/public/_nuxt/DXRZPxGs.js +0 -1
  500. package/.output/public/_nuxt/DZzGarBE2.js +0 -13
  501. package/.output/public/_nuxt/DaMCzQhv.js +0 -1
  502. package/.output/public/_nuxt/DoLasgPj2.js +0 -1
  503. package/.output/public/_nuxt/DpojD719.js +0 -1
  504. package/.output/public/_nuxt/DsVcWfyR.js +0 -1
  505. package/.output/public/_nuxt/DtBu71ev.js +0 -32
  506. package/.output/public/_nuxt/Dy-mxvXY2.js +0 -1
  507. package/.output/public/_nuxt/DzuC31-i.js +0 -2
  508. package/.output/public/_nuxt/FQri3dV3.js +0 -1
  509. package/.output/public/_nuxt/ORt9oDIy2.js +0 -1
  510. package/.output/public/_nuxt/TownView.CtskuMXS.css +0 -1
  511. package/.output/public/_nuxt/VLI2Zy4t.js +0 -5
  512. package/.output/public/_nuxt/_id_.MbzdFygI.css +0 -1
  513. package/.output/public/_nuxt/_id_.hRYo-EAB.css +0 -1
  514. package/.output/public/_nuxt/_wsId_.gXMEOYgX.css +0 -1
  515. package/.output/public/_nuxt/aml.WU_bh87J.css +0 -1
  516. package/.output/public/_nuxt/arUY5dyq2.js +0 -4
  517. package/.output/public/_nuxt/builds/meta/adc365b6-f636-4a2b-9527-79819c1e874b.json +0 -1
  518. package/.output/public/_nuxt/daq.Bb6l44-O.css +0 -1
  519. package/.output/public/_nuxt/dcw.rXH2fc2Z.css +0 -1
  520. package/.output/public/_nuxt/default.jNT73_hq.css +0 -1
  521. package/.output/public/_nuxt/ekuGmQ7R.js +0 -1
  522. package/.output/public/_nuxt/entry.jFrFAWuA.css +0 -1
  523. package/.output/public/_nuxt/logs.DMOM-iHe.css +0 -1
  524. package/.output/public/_nuxt/niDwBOZW.js +0 -3
  525. package/.output/public/_nuxt/pMoIO6rr.js +0 -14
  526. package/.output/public/_nuxt/pages.Cc8GX9T1.css +0 -1
  527. package/.output/public/_nuxt/plugins.wIPyfPn-.css +0 -1
  528. package/.output/public/_nuxt/rqZ-1SoP.js +0 -2
  529. package/.output/public/_nuxt/settings.BCm4NZIc.css +0 -1
  530. package/.output/public/_nuxt/town.C_DsNW0J.css +0 -1
  531. package/.output/public/_nuxt/users.DuAt_Zwf.css +0 -1
  532. package/.output/public/_nuxt/vJ4FPb-_.js +0 -1
  533. package/.output/public/_nuxt/workshop.BJg84pOK.css +0 -1
  534. package/.output/server/chunks/build/aml-uBNIppIf.mjs +0 -508
  535. package/.output/server/chunks/build/aml-uBNIppIf.mjs.map +0 -1
  536. package/.output/server/chunks/build/daq-BvihjQyW.mjs.map +0 -1
  537. package/.output/server/chunks/build/pages-C-6BRtv8.mjs.map +0 -1
  538. package/scripts/_audit/.tmp/audit-data/dcws.json +0 -28
  539. package/scripts/_audit/.tmp/dcw-writes.json +0 -15650
  540. package/scripts/_audit/.tmp/dcws.json +0 -9033
  541. package/scripts/_audit/.tmp/pollution-backup/dcw-rollback.polluted.json +0 -470006
  542. package/scripts/_audit/.tmp/pollution-backup/dcws.polluted.json +0 -9085
  543. package/scripts/_audit/.tmp/probe-cwd.txt +0 -1
  544. package/scripts/_audit/awhome/commands/README.md +0 -3
  545. package/scripts/_audit/awhome/commands/hello.mjs +0 -12
  546. package/scripts/_audit/diag-cwd.ts +0 -20
  547. package/scripts/_audit/diag-cwd2.ts +0 -19
  548. package/scripts/_audit/hello.mjs +0 -12
  549. package/scripts/_audit/ndjson-partial-line-repro.mjs +0 -77
  550. package/scripts/_audit/opencode-await-ternary-repro.mjs +0 -20
  551. package/scripts/_audit/part-frag.txt +0 -84
  552. package/scripts/_audit/part-head.txt +0 -45
  553. package/scripts/_audit/probe-child.mjs +0 -17
  554. package/scripts/_audit/probe-envelope.mjs +0 -49
  555. package/scripts/_audit/probe-packlist.mjs +0 -67
  556. package/scripts/_audit/probe-routes.mjs +0 -47
  557. package/scripts/_audit/probe-routes2.mjs +0 -38
  558. package/scripts/_audit/probe.ts +0 -9
  559. package/scripts/_audit/probe2.ts +0 -6
  560. package/scripts/_audit/probe3.ts +0 -3
  561. package/scripts/_audit/probe4.ts +0 -3
  562. package/scripts/_audit/proj/.AgentWorkShop/commands/echoargs.mjs +0 -13
  563. package/scripts/_audit/proj/config.yml +0 -1
  564. package/scripts/_audit/run.mjs +0 -30
  565. package/scripts/_audit/tsconfig.probe.json +0 -24
  566. package/scripts/_audit/typecheck-out.txt +0 -466
  567. package/scripts/_daq-realtime-probe.mjs +0 -68
  568. package/scripts/_daq-warn-probe.mjs +0 -50
  569. package/scripts/_dbg-acc-1-setup.mjs +0 -57
  570. package/scripts/_dbg-acc-2-diag.mjs +0 -14
  571. package/scripts/_dbg-acc-2-intervals.mjs +0 -81
  572. package/scripts/_dbg-acc-3-daq.mjs +0 -48
  573. package/scripts/_dbg-acc-4-team.mjs +0 -92
  574. package/scripts/_dbg-acc-5-visual.mjs +0 -63
  575. package/scripts/_dbg-acc-5b-ws-town.mjs +0 -18
  576. package/scripts/_dbg-acc-5c-town.mjs +0 -12
  577. package/scripts/_dbg-acc-6-i18n.mjs +0 -19
  578. package/scripts/_dbg-agent-tools-audit.mjs +0 -154
  579. package/scripts/_dbg-agent-workflow-audit.mjs +0 -177
  580. package/scripts/_dbg-agents-dropdown-shot.py +0 -33
  581. package/scripts/_dbg-anim-verify.mjs +0 -81
  582. package/scripts/_dbg-app-shot.mjs +0 -48
  583. package/scripts/_dbg-autoframe.mjs +0 -103
  584. package/scripts/_dbg-availability-probe.ts +0 -11
  585. package/scripts/_dbg-beacon-final.mjs +0 -181
  586. package/scripts/_dbg-bind-bidi-e2e.mjs +0 -239
  587. package/scripts/_dbg-callout-near.mjs +0 -108
  588. package/scripts/_dbg-catalog-smoke.ts +0 -20
  589. package/scripts/_dbg-cf-line-shot.mjs +0 -18
  590. package/scripts/_dbg-chan-focus.mjs +0 -49
  591. package/scripts/_dbg-channel-plugin-ui.mjs +0 -94
  592. package/scripts/_dbg-cleanup.mjs +0 -31
  593. package/scripts/_dbg-closedloop-ui-shot.mjs +0 -61
  594. package/scripts/_dbg-codex-handshake.ts +0 -30
  595. package/scripts/_dbg-codex-probe.mjs +0 -58
  596. package/scripts/_dbg-codex-sandbox.ts +0 -58
  597. package/scripts/_dbg-codex-turn.ts +0 -65
  598. package/scripts/_dbg-collab-scenario-e2e.mjs +0 -185
  599. package/scripts/_dbg-config-smoke.ts +0 -28
  600. package/scripts/_dbg-console-audit.mjs +0 -61
  601. package/scripts/_dbg-console-probe.mjs +0 -23
  602. package/scripts/_dbg-context-inject-audit.mjs +0 -231
  603. package/scripts/_dbg-cpu-profile.mjs +0 -53
  604. package/scripts/_dbg-crash-recovery.mjs +0 -143
  605. package/scripts/_dbg-crop-shot.mjs +0 -16
  606. package/scripts/_dbg-cross-channel-e2e.mjs +0 -157
  607. package/scripts/_dbg-cross-team-visibility-e2e.mjs +0 -129
  608. package/scripts/_dbg-crush-probe.sh +0 -21
  609. package/scripts/_dbg-crush-spawn-probe.ts +0 -22
  610. package/scripts/_dbg-daq-acc-probe.mjs +0 -24
  611. package/scripts/_dbg-daq-attrib.mjs +0 -34
  612. package/scripts/_dbg-daq-bind-audit.mjs +0 -119
  613. package/scripts/_dbg-daq-cadence.mjs +0 -104
  614. package/scripts/_dbg-daq-debug.mjs +0 -22
  615. package/scripts/_dbg-daq-diag.mjs +0 -33
  616. package/scripts/_dbg-daq-e2e.mjs +0 -171
  617. package/scripts/_dbg-daq-film.mjs +0 -136
  618. package/scripts/_dbg-daq-filter-e2e.mjs +0 -109
  619. package/scripts/_dbg-daq-filter-e2e2.mjs +0 -62
  620. package/scripts/_dbg-daq-final-regression.mjs +0 -78
  621. package/scripts/_dbg-daq-frame-alarm.mjs +0 -49
  622. package/scripts/_dbg-daq-frame-ui.mjs +0 -62
  623. package/scripts/_dbg-daq-frame-ws.mjs +0 -72
  624. package/scripts/_dbg-daq-full-check.mjs +0 -179
  625. package/scripts/_dbg-daq-line-note-verify.mjs +0 -61
  626. package/scripts/_dbg-daq-linebanner-audit.mjs +0 -107
  627. package/scripts/_dbg-daq-pages-shot.mjs +0 -37
  628. package/scripts/_dbg-daq-perf.mjs +0 -61
  629. package/scripts/_dbg-daq-probe.mjs +0 -27
  630. package/scripts/_dbg-daq-recipe-e2e.mjs +0 -30
  631. package/scripts/_dbg-daq-redesign-shot.mjs +0 -88
  632. package/scripts/_dbg-daq-rows-probe.mjs +0 -26
  633. package/scripts/_dbg-daq-rowstate-e2e.mjs +0 -152
  634. package/scripts/_dbg-daq-rowstate-shot.mjs +0 -45
  635. package/scripts/_dbg-daq-rowstate-shot2.mjs +0 -38
  636. package/scripts/_dbg-daq-tpl.mjs +0 -144
  637. package/scripts/_dbg-dash-console-check.mjs +0 -49
  638. package/scripts/_dbg-dash-deep-probe.mjs +0 -61
  639. package/scripts/_dbg-dash-hitpoint.mjs +0 -44
  640. package/scripts/_dbg-dash-live-shot.mjs +0 -36
  641. package/scripts/_dbg-dash-shot.mjs +0 -21
  642. package/scripts/_dbg-dashboard-shot.mjs +0 -35
  643. package/scripts/_dbg-dcw-audit.mjs +0 -126
  644. package/scripts/_dbg-dcw-card-e2e.mjs +0 -108
  645. package/scripts/_dbg-dcw-channel-ui.mjs +0 -144
  646. package/scripts/_dbg-dcw-examples.mjs +0 -81
  647. package/scripts/_dbg-dcw-light-shot.mjs +0 -19
  648. package/scripts/_dbg-dcw-line-audit.mjs +0 -107
  649. package/scripts/_dbg-dcw-pause-tpl-audit.mjs +0 -161
  650. package/scripts/_dbg-dcw-pause-ui.mjs +0 -175
  651. package/scripts/_dbg-dcw-read-toolface.ts +0 -13
  652. package/scripts/_dbg-dcw-read-ui.mjs +0 -74
  653. package/scripts/_dbg-dcw-scene.mjs +0 -72
  654. package/scripts/_dbg-dcw-shot2.mjs +0 -14
  655. package/scripts/_dbg-dcw-twin-e2e.mjs +0 -192
  656. package/scripts/_dbg-diag-mock-loop.mjs +0 -89
  657. package/scripts/_dbg-diag-watch.mjs +0 -95
  658. package/scripts/_dbg-docs-site-shot.mjs +0 -32
  659. package/scripts/_dbg-dsh-probe.mjs +0 -31
  660. package/scripts/_dbg-dt-interact.mjs +0 -193
  661. package/scripts/_dbg-error-probe.mjs +0 -54
  662. package/scripts/_dbg-filter-light-verify.mjs +0 -54
  663. package/scripts/_dbg-final-acceptance-2.mjs +0 -72
  664. package/scripts/_dbg-final-acceptance.mjs +0 -192
  665. package/scripts/_dbg-final-agent-e2e.mjs +0 -151
  666. package/scripts/_dbg-final-features.mjs +0 -155
  667. package/scripts/_dbg-final-fixups.mjs +0 -62
  668. package/scripts/_dbg-final-full-e2e.mjs +0 -218
  669. package/scripts/_dbg-final-line-e2e.mjs +0 -173
  670. package/scripts/_dbg-final-shots.mjs +0 -32
  671. package/scripts/_dbg-final-t6-hitl.mjs +0 -38
  672. package/scripts/_dbg-final-visual.mjs +0 -29
  673. package/scripts/_dbg-fix-unused-imports.py +0 -41
  674. package/scripts/_dbg-focus-range.mjs +0 -115
  675. package/scripts/_dbg-fresh-scene-e2e.mjs +0 -125
  676. package/scripts/_dbg-fullchain-e2e.mjs +0 -178
  677. package/scripts/_dbg-gate-debug.mjs +0 -37
  678. package/scripts/_dbg-gif-encode.mjs +0 -111
  679. package/scripts/_dbg-gizmo.mjs +0 -95
  680. package/scripts/_dbg-glass-probe.mjs +0 -57
  681. package/scripts/_dbg-glass-shot.mjs +0 -50
  682. package/scripts/_dbg-glass-sweep.mjs +0 -25
  683. package/scripts/_dbg-glb-probe.mjs +0 -43
  684. package/scripts/_dbg-goose-probe.mjs +0 -33
  685. package/scripts/_dbg-goose-probe.sh +0 -10
  686. package/scripts/_dbg-hardening-probe.mjs +0 -90
  687. package/scripts/_dbg-harness-cancel-repro.mjs +0 -81
  688. package/scripts/_dbg-harness-ui-dbg.py +0 -49
  689. package/scripts/_dbg-harness-ui-shot.py +0 -109
  690. package/scripts/_dbg-hero-btn-probe.mjs +0 -21
  691. package/scripts/_dbg-hidden-check.mjs +0 -21
  692. package/scripts/_dbg-hmi-audit.mjs +0 -164
  693. package/scripts/_dbg-home-repro.mjs +0 -24
  694. package/scripts/_dbg-home-stack.mjs +0 -13
  695. package/scripts/_dbg-host.mjs +0 -16
  696. package/scripts/_dbg-huashu-survey.mjs +0 -31
  697. package/scripts/_dbg-huashu-survey2.mjs +0 -35
  698. package/scripts/_dbg-huashu-verify.mjs +0 -25
  699. package/scripts/_dbg-huashu-verify2.mjs +0 -26
  700. package/scripts/_dbg-hydration-detail.mjs +0 -18
  701. package/scripts/_dbg-i18n-debug.mjs +0 -27
  702. package/scripts/_dbg-i18n-debug2.mjs +0 -26
  703. package/scripts/_dbg-i18n-final.mjs +0 -42
  704. package/scripts/_dbg-i18n-scan.mjs +0 -38
  705. package/scripts/_dbg-infra-lifecycle.mjs +0 -44
  706. package/scripts/_dbg-interval-config.mjs +0 -156
  707. package/scripts/_dbg-interval-scenario.mjs +0 -126
  708. package/scripts/_dbg-kicker-check.mjs +0 -11
  709. package/scripts/_dbg-line-aura-shots.mjs +0 -54
  710. package/scripts/_dbg-line-control-e2e.mjs +0 -120
  711. package/scripts/_dbg-line-gate-audit.mjs +0 -108
  712. package/scripts/_dbg-line-live-e2e.mjs +0 -144
  713. package/scripts/_dbg-line-repo-test.ts +0 -10
  714. package/scripts/_dbg-line-scenario-e2e.mjs +0 -256
  715. package/scripts/_dbg-line-spawn.ts +0 -31
  716. package/scripts/_dbg-live-engine-probe.mjs +0 -80
  717. package/scripts/_dbg-login-debug.py +0 -23
  718. package/scripts/_dbg-login-e2e.mjs +0 -26
  719. package/scripts/_dbg-logs-ui-e2e.py +0 -126
  720. package/scripts/_dbg-mcp-bridge-probe.mjs +0 -147
  721. package/scripts/_dbg-modbus-latency.mjs +0 -22
  722. package/scripts/_dbg-mqtt-chain-e2e.mjs +0 -90
  723. package/scripts/_dbg-mqtt-publisher.mjs +0 -17
  724. package/scripts/_dbg-nav-rpg.mjs +0 -84
  725. package/scripts/_dbg-nav-shot.mjs +0 -28
  726. package/scripts/_dbg-nav.mjs +0 -27
  727. package/scripts/_dbg-oneshot-impl-probe.ts +0 -67
  728. package/scripts/_dbg-opencode-sse.mjs +0 -101
  729. package/scripts/_dbg-opencode-start.ts +0 -57
  730. package/scripts/_dbg-opslog-e2e.mjs +0 -121
  731. package/scripts/_dbg-opslog-shots.mjs +0 -62
  732. package/scripts/_dbg-optimization-e2e.mjs +0 -94
  733. package/scripts/_dbg-orbit.mjs +0 -58
  734. package/scripts/_dbg-overview-probe.sh +0 -31
  735. package/scripts/_dbg-panesplitter-fix-check.mjs +0 -62
  736. package/scripts/_dbg-perms-visual.mjs +0 -36
  737. package/scripts/_dbg-pg-tcp-probe.cjs +0 -27
  738. package/scripts/_dbg-phase-e3-monitor.mjs +0 -25
  739. package/scripts/_dbg-pi-spawn-probe.ts +0 -33
  740. package/scripts/_dbg-plc-agent-loop.ts +0 -102
  741. package/scripts/_dbg-plc-e2e.mjs +0 -171
  742. package/scripts/_dbg-plugin-agent-read.ts +0 -56
  743. package/scripts/_dbg-plugin-config-ui.mjs +0 -111
  744. package/scripts/_dbg-plugin-matrix.mjs +0 -212
  745. package/scripts/_dbg-plugin-panels-ui.mjs +0 -54
  746. package/scripts/_dbg-plugin-sink-rest.mjs +0 -70
  747. package/scripts/_dbg-plugin-sink-ui.mjs +0 -81
  748. package/scripts/_dbg-plugin-tools-inject.ts +0 -80
  749. package/scripts/_dbg-plugin-ui-wizard.mjs +0 -125
  750. package/scripts/_dbg-plugin-verify-e2e.mjs +0 -123
  751. package/scripts/_dbg-plugins-e2e.mjs +0 -101
  752. package/scripts/_dbg-pop-clamp-verify.mjs +0 -77
  753. package/scripts/_dbg-preset-e2e.mjs +0 -116
  754. package/scripts/_dbg-preview-console.mjs +0 -28
  755. package/scripts/_dbg-preview-minrepro.mjs +0 -156
  756. package/scripts/_dbg-preview-pixels.mjs +0 -93
  757. package/scripts/_dbg-prompts-hotreload-test.ts +0 -76
  758. package/scripts/_dbg-prompts-resolve-test.ts +0 -39
  759. package/scripts/_dbg-quality-pages-e2e.mjs +0 -84
  760. package/scripts/_dbg-query-cancel.ts +0 -12
  761. package/scripts/_dbg-qwen-acp-probe.mjs +0 -30
  762. package/scripts/_dbg-qwen-capture.mjs +0 -21
  763. package/scripts/_dbg-rail-tree-e2e.mjs +0 -183
  764. package/scripts/_dbg-real-driver-e2e.mjs +0 -55
  765. package/scripts/_dbg-redesign-shots.mjs +0 -34
  766. package/scripts/_dbg-registry-smoke.ts +0 -14
  767. package/scripts/_dbg-release-smoke.mjs +0 -104
  768. package/scripts/_dbg-repo-setup-verify.mjs +0 -31
  769. package/scripts/_dbg-resolve-probe.ts +0 -6
  770. package/scripts/_dbg-restart-persist.mjs +0 -41
  771. package/scripts/_dbg-retention-test.ts +0 -25
  772. package/scripts/_dbg-rollback-mgr-audit.mjs +0 -169
  773. package/scripts/_dbg-rpg.mjs +0 -71
  774. package/scripts/_dbg-sc001-dispatch.mjs +0 -63
  775. package/scripts/_dbg-scenario-final-shot.mjs +0 -24
  776. package/scripts/_dbg-scenario-phase-e2.mjs +0 -75
  777. package/scripts/_dbg-scenario-phase-e3.mjs +0 -96
  778. package/scripts/_dbg-scenario-phase1.mjs +0 -90
  779. package/scripts/_dbg-scenario-phase2.mjs +0 -105
  780. package/scripts/_dbg-scenario-phase3-monitor.mjs +0 -48
  781. package/scripts/_dbg-scenario-phase3.mjs +0 -111
  782. package/scripts/_dbg-scene-polish-shot.mjs +0 -118
  783. package/scripts/_dbg-selring-probe.mjs +0 -47
  784. package/scripts/_dbg-settings-draft-probe.mjs +0 -39
  785. package/scripts/_dbg-settings-probe.mjs +0 -33
  786. package/scripts/_dbg-setup-e2e.mjs +0 -88
  787. package/scripts/_dbg-sideinfo.mjs +0 -101
  788. package/scripts/_dbg-sim-keeper.mjs +0 -100
  789. package/scripts/_dbg-splitter.mjs +0 -88
  790. package/scripts/_dbg-swatch-check.mjs +0 -10
  791. package/scripts/_dbg-task-cancel-probe.mjs +0 -66
  792. package/scripts/_dbg-team-drill.mjs +0 -173
  793. package/scripts/_dbg-town-alarm-e2e.mjs +0 -40
  794. package/scripts/_dbg-town-beauty-shots.mjs +0 -54
  795. package/scripts/_dbg-town-daq-shot.mjs +0 -26
  796. package/scripts/_dbg-town-full-e2e.mjs +0 -104
  797. package/scripts/_dbg-town-gate.mjs +0 -44
  798. package/scripts/_dbg-town-ins-probe.mjs +0 -37
  799. package/scripts/_dbg-town-perf.mjs +0 -50
  800. package/scripts/_dbg-town-polish-shots.mjs +0 -82
  801. package/scripts/_dbg-town-realtime.mjs +0 -42
  802. package/scripts/_dbg-town-shot.py +0 -25
  803. package/scripts/_dbg-town-shot3.mjs +0 -17
  804. package/scripts/_dbg-town-truth.mjs +0 -37
  805. package/scripts/_dbg-town-truth2.mjs +0 -27
  806. package/scripts/_dbg-transform-audit.mjs +0 -98
  807. package/scripts/_dbg-trend-expand-test.mjs +0 -38
  808. package/scripts/_dbg-twindaq-focus.mjs +0 -81
  809. package/scripts/_dbg-ui-polish-shot.mjs +0 -43
  810. package/scripts/_dbg-ui-polish-verify1.mjs +0 -92
  811. package/scripts/_dbg-ui-polish-verify2.mjs +0 -50
  812. package/scripts/_dbg-ui-polish-verify3.mjs +0 -51
  813. package/scripts/_dbg-ui-polish-verify4.mjs +0 -50
  814. package/scripts/_dbg-ui-shot.mjs +0 -26
  815. package/scripts/_dbg-ui-shots.mjs +0 -28
  816. package/scripts/_dbg-ui-survey.py +0 -52
  817. package/scripts/_dbg-unify-shot.mjs +0 -43
  818. package/scripts/_dbg-uplink-probe.mjs +0 -36
  819. package/scripts/_dbg-wizard-preview-shot.mjs +0 -58
  820. package/scripts/_dbg-wizard-ui-e2e.mjs +0 -93
  821. package/scripts/_dbg-ws-probe.mjs +0 -86
  822. package/scripts/_dbg-ws-shot2.mjs +0 -23
  823. package/scripts/_dbg-wsdot-sanity.mjs +0 -25
  824. package/scripts/_dev-stack.mjs +0 -46
  825. package/scripts/_http-driver-probe.mjs +0 -30
  826. package/scripts/_mqtt-driver-probe.mjs +0 -30
  827. package/scripts/_newdriver-rest-probe.mjs +0 -100
  828. package/scripts/_node-state-probe.mjs +0 -5
  829. package/scripts/_opcua-driver-probe.mjs +0 -31
  830. package/scripts/_rtu-debug.mjs +0 -41
  831. package/scripts/_rtu-direct.mjs +0 -6
  832. package/scripts/_rtu-driver-probe.mjs +0 -53
  833. package/scripts/_spike-pitui.mjs +0 -116
  834. package/scripts/_tmp-args-probe.mjs +0 -20
  835. package/scripts/_tmp-cyc-entry.mjs +0 -8
  836. package/scripts/_tmp-cyc-main.mjs +0 -5
  837. package/scripts/_tmp-cyc-mod.mjs +0 -2
  838. package/scripts/_tmp-cycle-a.mjs +0 -6
  839. package/scripts/_tmp-cycle-b.mjs +0 -2
  840. package/scripts/_tmp-cycle-probe.mjs +0 -4
  841. package/scripts/_tmp-entry-variant.mjs +0 -2
  842. package/scripts/_tmp-help-probe.mjs +0 -19
  843. package/scripts/_tmp-help-probe2.mjs +0 -2
  844. package/scripts/_tmp-trace-preload.mjs +0 -1
  845. package/scripts/_wizard-shots.mjs +0 -90
  846. package/scripts/acceptance-suite.py +0 -207
  847. package/scripts/aml-agent-bridge.ts +0 -230
  848. package/scripts/aml-industrial-loop.ts +0 -232
  849. package/scripts/build-film-devices.mjs +0 -227
  850. package/scripts/collab-live-test.py +0 -177
  851. package/scripts/debug-mcp-http.ts +0 -64
  852. package/scripts/demo-lead-worker.ts +0 -256
  853. package/scripts/demo-modes.ts +0 -415
  854. package/scripts/demo-omp-channel.ts +0 -135
  855. package/scripts/design-preflight.mjs +0 -223
  856. package/scripts/design-verify-templates.mjs +0 -110
  857. package/scripts/design-verify.mjs +0 -170
  858. package/scripts/dev-window.cmd +0 -6
  859. package/scripts/device-line-restore.mjs +0 -34
  860. package/scripts/diag-lead-status.ts +0 -101
  861. package/scripts/e2e-a2a-steer-live.mjs +0 -193
  862. package/scripts/e2e-dual-drive-comm.ts +0 -259
  863. package/scripts/e2e-full-scenario.ts +0 -321
  864. package/scripts/e2e-harness-consistency.ts +0 -204
  865. package/scripts/e2e-harness-provider-task.mjs +0 -126
  866. package/scripts/e2e-line-live.mjs +0 -144
  867. package/scripts/e2e-memory-persistence.ts +0 -320
  868. package/scripts/e2e-omp-modes.ts +0 -274
  869. package/scripts/e2e-omp-realtime.ts +0 -258
  870. package/scripts/e2e-plc-scenario.mjs +0 -292
  871. package/scripts/e2e-real-scenario.mjs +0 -466
  872. package/scripts/e2e-tab-close.mjs +0 -136
  873. package/scripts/e2e-token-ui.mjs +0 -149
  874. package/scripts/final-soup-run.py +0 -192
  875. package/scripts/final-soup-watch.py +0 -83
  876. package/scripts/i18n-codemod.mjs +0 -173
  877. package/scripts/i18n-fix-en.py +0 -28
  878. package/scripts/i18n-fix-en2.py +0 -31
  879. package/scripts/i18n-merge.mjs +0 -191
  880. package/scripts/migrate-local-time.mjs +0 -123
  881. package/scripts/omp-real-test.py +0 -328
  882. package/scripts/team-plugins-api-smoke.mjs +0 -149
  883. package/scripts/test-a2a-relay.mjs +0 -222
  884. package/scripts/test-aml-integration.ts +0 -159
  885. package/scripts/test-aml-job.ts +0 -174
  886. package/scripts/test-aml-unit.ts +0 -184
  887. package/scripts/test-api-client.ts +0 -108
  888. package/scripts/test-api-suite.mjs +0 -271
  889. package/scripts/test-block-consumption.mjs +0 -194
  890. package/scripts/test-cmd-render.mjs +0 -218
  891. package/scripts/test-collab-omp.mjs +0 -192
  892. package/scripts/test-config-precedence.ts +0 -124
  893. package/scripts/test-context-governor.ts +0 -176
  894. package/scripts/test-daq-frames.ts +0 -180
  895. package/scripts/test-daq-minio.ts +0 -77
  896. package/scripts/test-dedup-logic.ts +0 -132
  897. package/scripts/test-e2e-collaboration.ts +0 -262
  898. package/scripts/test-e2e-monitor.ts +0 -192
  899. package/scripts/test-event-history.ts +0 -112
  900. package/scripts/test-exec-modes.ts +0 -316
  901. package/scripts/test-fifo-realtime.mjs +0 -193
  902. package/scripts/test-final-e2e.mjs +0 -290
  903. package/scripts/test-goal-summary.ts +0 -202
  904. package/scripts/test-harness-liveness.ts +0 -109
  905. package/scripts/test-harness-terminal.ts +0 -164
  906. package/scripts/test-header-trail.mjs +0 -95
  907. package/scripts/test-hitl.ts +0 -360
  908. package/scripts/test-koda-restyle.mjs +0 -105
  909. package/scripts/test-lane-raw.ts +0 -67
  910. package/scripts/test-lanes-history-render.mjs +0 -138
  911. package/scripts/test-loop-omp.mjs +0 -154
  912. package/scripts/test-mdlite.ts +0 -53
  913. package/scripts/test-memory-brief-chronicle.ts +0 -180
  914. package/scripts/test-memory-rrf-mmr.ts +0 -114
  915. package/scripts/test-mock-collab.mjs +0 -226
  916. package/scripts/test-modern-render.mjs +0 -174
  917. package/scripts/test-omp-terminal.mjs +0 -187
  918. package/scripts/test-plugin-ext.ts +0 -173
  919. package/scripts/test-prompts-loader.ts +0 -56
  920. package/scripts/test-real-scenario.mjs +0 -290
  921. package/scripts/test-stream-render.ts +0 -37
  922. package/scripts/test-task-drawer.mjs +0 -204
  923. package/scripts/test-task-invariants.mjs +0 -169
  924. package/scripts/test-town-3d.mjs +0 -121
  925. package/scripts/test-town-layout.mjs +0 -200
  926. package/scripts/test-town-page.mjs +0 -136
  927. package/scripts/test-town-scene-math.ts +0 -169
  928. package/scripts/test-town-twin.mjs +0 -121
  929. package/scripts/test-town-upload.mjs +0 -89
  930. package/scripts/test-town-user-flow.mjs +0 -619
  931. package/scripts/test-town-world.mjs +0 -76
  932. package/scripts/test-town-wuwa.mjs +0 -198
  933. package/scripts/test-user-isolation.mjs +0 -193
  934. package/scripts/test-workshop-entries.ts +0 -370
  935. package/scripts/test-workspace-api.ts +0 -329
  936. package/scripts/test-ws-aep.mjs +0 -187
  937. package/scripts/test-ws-protocol.ts +0 -134
  938. package/scripts/town-demo-seed.mjs +0 -75
  939. package/scripts/town-scene-clear.mjs +0 -56
  940. package/scripts/verify-exec-modes-report.ts +0 -248
  941. package/scripts/verify-lead-mail.ts +0 -188
  942. package/scripts/verify-page-smoke.mjs +0 -87
  943. package/scripts/ws-test.mjs +0 -176
  944. package/scripts/ws-test.py +0 -4
@@ -3,7 +3,7 @@ import http from 'node:http';
3
3
  import https from 'node:https';
4
4
  import { EventEmitter } from 'node:events';
5
5
  import { Buffer as Buffer$1 } from 'node:buffer';
6
- import { promises, existsSync, readFileSync, mkdirSync, writeFileSync, renameSync, readdirSync, statSync, watch as watch$1, copyFileSync, rmSync, cpSync, appendFileSync, accessSync, constants } from 'node:fs';
6
+ import { promises, existsSync, readFileSync, mkdirSync, writeFileSync, renameSync, readdirSync, statSync, watch as watch$1, copyFileSync, rmSync, chmodSync, cpSync, appendFileSync, accessSync, constants } from 'node:fs';
7
7
  import { resolve as resolve$1, dirname as dirname$1, join, relative as relative$1, isAbsolute as isAbsolute$1, sep } from 'node:path';
8
8
  import { pathToFileURL, fileURLToPath } from 'node:url';
9
9
  import { copyFile, mkdir, writeFile as writeFile$1, readFile as readFile$2, rm } from 'node:fs/promises';
@@ -5107,7 +5107,7 @@ function _expandFromEnv(value) {
5107
5107
  const _inlineRuntimeConfig = {
5108
5108
  "app": {
5109
5109
  "baseURL": "/",
5110
- "buildId": "adc365b6-f636-4a2b-9527-79819c1e874b",
5110
+ "buildId": "a66fdef7-dcfd-453b-b1f6-543c7dfd98d5",
5111
5111
  "buildAssetsDir": "/_nuxt/",
5112
5112
  "cdnURL": ""
5113
5113
  },
@@ -5137,7 +5137,7 @@ const _inlineRuntimeConfig = {
5137
5137
  "public": {
5138
5138
  "appName": "AgentWorkShop",
5139
5139
  "appTitle": "AgentWorkShop",
5140
- "version": "0.7.34",
5140
+ "version": "0.7.37",
5141
5141
  "description": "基于 Nuxt 4 的配置驱动运行范式",
5142
5142
  "mode": "dev",
5143
5143
  "apiBase": "/api",
@@ -6363,14 +6363,16 @@ function toQuery(query) {
6363
6363
  // AgentWorkShop SDK — 服务端插件上下文工厂(宿主调用;插件经 setup(ctx) 获得)
6364
6364
  // ------------------------------------------------------------
6365
6365
  // ctx 形态(运行时完整变量面):
6366
- // 身份 ctx.name / ctx.scope('home'|'project') / ctx.dir / ctx.sdkVersion
6367
- // 钩子 ctx.hooks HookBus(生命周期 + event:*) [SDK]
6366
+ // 身份 ctx.name / ctx.scope('builtin'|'project'|'user') / ctx.dir / ctx.sdkVersion
6367
+ // 钩子 ctx.hooks HookBus 门面(生命周期 + event:*) [SDK]
6368
6368
  // 日志 ctx.logger { debug, info, warn, error } 插件名前缀 [SDK]
6369
- // 配置 ctx.config { get(key), all(), onChange(fn) } [SDK]
6369
+ // 配置 ctx.config { get,all,onChange,defineGroup,defineField,
6370
+ // removeGroup,removeField,groups,fields } [SDK]
6370
6371
  // 存储 ctx.kv { get,set,all,bump } 内存态+防抖落盘 [SDK]
6371
6372
  // 定时 ctx.timer { setInterval, setTimeout } 服务关闭自动回收 [SDK]
6372
6373
  // 清理 ctx.onDispose(fn) / ctx.subscriptions [SDK]
6373
- // 路由 ctx.route(method, path, handler) → /api/plugins/<name>… [SDK]
6374
+ // 路由 ctx.route(method, path, handler) → boolean [SDK]
6375
+ // /api/plugins/<name><path>;鉴权由插件入口 auth 字段声明
6374
6376
  // 平台 ctx.api 平台 REST 客户端(lines/daq/dcw/twins/teams…) [SDK]
6375
6377
  // 网络 ctx.http { get, post } 带超时 fetch(仅 http/https) [SDK]
6376
6378
  // 事件 ctx.events { on(type,fn), off } scene 实时事件 [SDK]
@@ -6393,6 +6395,10 @@ function safeUrl(raw, timeoutMs = 8000) {
6393
6395
  */
6394
6396
  function createPluginContext(opts) {
6395
6397
  const { name, scope, dir, hooks, config, paths, emitter } = opts;
6398
+ // 宿主回收登记口(host.mjs perPluginDisposables)。**必须转发**:此前这里漏接
6399
+ // opts.onDispose,导致 ctx.onDispose / ctx.timer.* / ctx.subscriptions.add 登记的
6400
+ // 清理永不执行 —— 定时器泄漏 + 退出前 200ms 的 kv 写入丢失,而文档承诺"自动回收"。
6401
+ const hostOnDispose = typeof opts.onDispose === 'function' ? opts.onDispose : null;
6396
6402
  // 规范化 logger:宿主实现缺级时兜底 no-op(插件可用全套 debug/info/warn/error)
6397
6403
  const logger = {
6398
6404
  debug: () => {},
@@ -6402,6 +6408,8 @@ function createPluginContext(opts) {
6402
6408
  ...(opts.logger ?? {}),
6403
6409
  };
6404
6410
  const onDispose = (fn) => {
6411
+ if (typeof fn !== 'function') return fn
6412
+ if (hostOnDispose) hostOnDispose(fn);
6405
6413
  return fn
6406
6414
  };
6407
6415
 
@@ -6410,11 +6418,13 @@ function createPluginContext(opts) {
6410
6418
  setInterval: (fn, ms, ...rest) => {
6411
6419
  const id = setInterval(fn, ms, ...rest);
6412
6420
  if (typeof id === 'object' && id !== null && 'unref' in id) id.unref?.();
6421
+ onDispose(() => clearInterval(id));
6413
6422
  return id
6414
6423
  },
6415
6424
  setTimeout: (fn, ms, ...rest) => {
6416
6425
  const id = setTimeout(fn, ms, ...rest);
6417
6426
  if (typeof id === 'object' && id !== null && 'unref' in id) id.unref?.();
6427
+ onDispose(() => clearTimeout(id));
6418
6428
  return id
6419
6429
  },
6420
6430
  };
@@ -6448,6 +6458,11 @@ function createPluginContext(opts) {
6448
6458
  clearTimeout(kvFlushTimer);
6449
6459
  kvFlushTimer = setTimeout(flushKvNow, 200);
6450
6460
  };
6461
+ // 关停兜底:取消挂起防抖并同步落盘(否则进程退出前 200ms 内的 kv.set 全部丢失)
6462
+ onDispose(() => {
6463
+ clearTimeout(kvFlushTimer);
6464
+ flushKvNow();
6465
+ });
6451
6466
 
6452
6467
  const ctx = {
6453
6468
  name,
@@ -6503,16 +6518,19 @@ function createPluginContext(opts) {
6503
6518
  * visibleLineIds(user) → Set<lineId>|null(全量)
6504
6519
  * listGrants(userId) → [{lineId,mode,grantedBy,grantedAt}]
6505
6520
  * setGrants(userId, [{lineId,mode}]) → 写授权(需 admin 上下文)
6506
- * 变更事件: hooks.on('permissions:changed', { userId }) */
6521
+ * 变更事件:ctx.events.on('permissions:changed', fn)
6522
+ * ——宿主把平台事件统一加 `event:` 前缀,故订阅要走 ctx.events(它会补前缀),
6523
+ * 直接 ctx.hooks.on('permissions:changed') 永远不触发。 */
6507
6524
  permissions: opts.permissions ?? {
6508
6525
  lineMode: () => 'none',
6509
6526
  visibleLineIds: () => new Set(),
6510
6527
  listGrants: () => [],
6511
6528
  setGrants: () => { throw new Error('[sdk] ctx.permissions 未由宿主注入') },
6512
6529
  },
6513
- /** 订阅式清理对象({ dispose(){} })集中登记 */
6530
+ /** 订阅式清理对象({ dispose(){} })集中登记(与 ctx.onDispose 同一回收队列) */
6514
6531
  subscriptions: {
6515
6532
  add: (d) => {
6533
+ onDispose(typeof d === 'function' ? d : (...a) => d.dispose?.(...a));
6516
6534
  return d
6517
6535
  },
6518
6536
  },
@@ -6733,7 +6751,10 @@ function validatePluginSettings(pluginName, defs, { defaultGroup } = {}) {
6733
6751
  // client?: './client.mjs', routes?: [{method,path,handler}] }
6734
6752
  // —— ctx 由宿主注入,插件运行时零导入依赖(sdk/ 供类型与显式糖)。
6735
6753
  //
6736
- // 启停状态机:配置根 plugins-state.json { version, updatedAt, disabled: string[] }
6754
+ // 启停状态机:<home>/plugins-state.json { version, updatedAt, disabled: string[] }
6755
+ // ⚠️ home = $AW_HOME 或 ~/.AgentWorkShop —— **不是**配置根。源码检出下两者不同:
6756
+ // configRoot=<repo>/.AgentWorkShop(数据/kv 在这里),home=~/.AgentWorkShop(状态在这里)。
6757
+ // 全局安装两者重合,所以旧注释写"配置根"时看不出问题。
6737
6758
  // · 装载时跳过 disabled 插件(manifest 仍可见,enabled:false)
6738
6759
  // · 状态文件变化(fs.watch)→ 热重载:全部 dispose/解绑 → 重新装载
6739
6760
  // · CLI(aw plugin enable/disable) 与 Web 设置页均只写状态文件,服务自感知
@@ -6880,7 +6901,8 @@ async function seedRuntimeServices() {
6880
6901
  servicesExt.register('plugins', async () => pluginManifest());
6881
6902
  }
6882
6903
 
6883
- // ---- 启停状态(单一事实源:<配置根>/plugins-state.json;CLI/Web/宿主三方读写) ----
6904
+ // ---- 启停状态(单一事实源:<home>/plugins-state.json;CLI/Web/宿主三方读写) ----
6905
+ // 入参 homeDir 由 modePaths().homeDir 给出($AW_HOME 优先),**不是配置根**。
6884
6906
  function statePathFor(homeDir) {
6885
6907
  return join(homeDir, 'plugins-state.json')
6886
6908
  }
@@ -6903,7 +6925,10 @@ function writeDisabledSet(homeDir, disabled) {
6903
6925
  renameSync(tmp, p);
6904
6926
  }
6905
6927
 
6906
- /** 发现插件入口,三作用域(builtin 同名被 project 覆盖,project 同名被 user 覆盖) */
6928
+ /** 发现插件入口,三作用域。**同名 builtin 优先**(先扫先占,`seen` 去重),
6929
+ * 即优先级 builtin > project > user —— 与 CLI 指令注册表(cli/core/registry.mjs,
6930
+ * 后扫覆盖 → project > user > builtin)方向相反,勿照搬。
6931
+ * 实现见下方循环顺序 [builtin, project, user] + `if (seen.has(name)) continue`。 */
6907
6932
  function discoverPluginDirs(cwd = process.cwd()) {
6908
6933
  const { builtinDir, projectDir, userDir } = modePaths(cwd);
6909
6934
  const out = [];
@@ -7102,9 +7127,11 @@ async function loadAllPlugins(host, { config, paths }) {
7102
7127
  for (const e of groupsCheck.errors) host.logger.warn(`[${def.name}] 分组声明已跳过: ${e}`);
7103
7128
 
7104
7129
  const emitter = {
7130
+ /** @returns {boolean} 注册结果(SDK 契约 `ctx.route(...) → boolean`,勿丢返回值) */
7105
7131
  registerRoute: (n, m, p, h) => {
7106
- host.routes.register(n, m, p, h);
7107
- rec.routes.push({ method: String(m).toUpperCase(), path: p });
7132
+ const ok = host.routes.register(n, m, p, h);
7133
+ if (ok) rec.routes.push({ method: String(m).toUpperCase(), path: p });
7134
+ return ok
7108
7135
  },
7109
7136
  };
7110
7137
  const perPluginDisposables = [];
@@ -8098,6 +8125,61 @@ function ensureDataDir(cwd = process.cwd(), env = process.env) {
8098
8125
  }
8099
8126
  catch { /* 迁移失败不阻断 */ }
8100
8127
  return dir
8128
+ }
8129
+
8130
+ /**
8131
+ * AML 平台数据根(<amlRoot>):**项目目录下的 ./aml**,与配置根(.AgentWorkShop)分离。
8132
+ *
8133
+ * 为什么单独一个根、而不是挂在 <configRoot>/data/aml 下:
8134
+ * - AML 的产物是「可移植的资产」——数据集数组、训练作业工作区、ONNX 模型工件。
8135
+ * 这些需要能被 git/rsync/打包带走、被外部 Python 工具直接读取、被人在资源管理器里
8136
+ * 打开查看;埋在 .AgentWorkShop/data 里(那是运行时状态目录,常被 GC/清理)不合适。
8137
+ * - uv 虚拟环境固定在 <amlRoot>/.venv,与数据集/模型同级,整个 ./aml 可以整体删除重建。
8138
+ *
8139
+ * 解析优先级:
8140
+ * ① AW_AML_DIR 环境变量(显式覆盖;测试隔离与自定义部署用)
8141
+ * ② repo 模式 → <检出根>/aml (cwd 向上找 config.yml + nuxt.config.ts)
8142
+ * ③ home 模式(全局安装) → <配置根>/aml (~/.AgentWorkShop/aml)
8143
+ * ④ 兜底 → <cwd>/aml
8144
+ *
8145
+ * @returns {{ dir: string, mode: 'env'|'repo'|'home'|'cwd', projectRoot: string|null }}
8146
+ */
8147
+ function resolveAmlRoot({ cwd = process.cwd(), env = process.env } = {}) {
8148
+ if (env.AW_AML_DIR && String(env.AW_AML_DIR).trim()) {
8149
+ return { dir: resolve$1(String(env.AW_AML_DIR).trim()), mode: 'env', projectRoot: null }
8150
+ }
8151
+ if (env.AW_MODE !== 'home') {
8152
+ const repoRoot = findRepoRoot(cwd);
8153
+ if (repoRoot) return { dir: join(repoRoot, 'aml'), mode: 'repo', projectRoot: repoRoot }
8154
+ }
8155
+ const forceHome = env.AW_MODE === 'home';
8156
+ if (forceHome) return { dir: join(awHome(env), 'aml'), mode: 'home', projectRoot: null }
8157
+ // 非检出目录(既无 config.yml+nuxt.config.ts):配置根优先,最后才落 cwd
8158
+ const localRoot = findLocalConfigRoot(cwd);
8159
+ if (localRoot) return { dir: join(localRoot, 'aml'), mode: 'home', projectRoot: null }
8160
+ return { dir: join(resolve$1(cwd), 'aml'), mode: 'cwd', projectRoot: null }
8161
+ }
8162
+
8163
+ /** AML 数据根绝对路径(仅解析,不创建) */
8164
+ function amlDirFor(cwd = process.cwd(), env = process.env) {
8165
+ return resolveAmlRoot({ cwd, env }).dir
8166
+ }
8167
+
8168
+ /**
8169
+ * 确保 AML 数据根存在并落标准子目录骨架:
8170
+ * .venv/ uv 创建的解释器环境
8171
+ * datasets/<id>/ 数据集快照(spec.json/manifest.json/report.json/arrays/)
8172
+ * jobs/<id>/ 训练作业(workspace/run.log/artifacts/)
8173
+ * models/<id>/ 模型工件(model.onnx/io_spec.json)
8174
+ * runtime/ 运行时状态(uv 安装记录/环境探针缓存)
8175
+ * tools/ 项目本地自动安装的 uv 二进制(免管理员、不污染 PATH)
8176
+ */
8177
+ function ensureAmlDir(cwd = process.cwd(), env = process.env) {
8178
+ const dir = amlDirFor(cwd, env);
8179
+ for (const sub of ['datasets', 'jobs', 'models', 'runtime', 'tools']) {
8180
+ mkdirSync(join(dir, sub), { recursive: true });
8181
+ }
8182
+ return dir
8101
8183
  }
8102
8184
 
8103
8185
  // ============================================================
@@ -8598,7 +8680,10 @@ class LruMap {
8598
8680
  has(key) { return this.map.has(key) }
8599
8681
 
8600
8682
  get(key) {
8601
- if (!this.map.has(key)) { this.misses += 1; return undefined }
8683
+ if (!this.map.has(key)) {
8684
+ this.misses += 1;
8685
+ return undefined
8686
+ }
8602
8687
  // 访问即提升:删了重插(值不变),维持「尾部最新」
8603
8688
  const v = this.map.get(key);
8604
8689
  this.map.delete(key);
@@ -11631,16 +11716,49 @@ function loadJsonFile(filePath, fallback) {
11631
11716
  }
11632
11717
  }
11633
11718
 
11719
+ /**
11720
+ * 紧凑 vs 缩进的切换阈值(顶层元素数)。
11721
+ *
11722
+ * 为什么需要:`null, 2` 缩进对**小文件**是净收益(人可读、diff 友好、成本可忽略),
11723
+ * 但对**大库**是纯税:实测 DCW 回退账本 20000 锚 + 2000 记录 — 缩进 8.57 MB / 23.2 ms,
11724
+ * 紧凑 5.82 MB / 13.2 ms(体积 -32%、CPU -43%)。而它每个 1.5s 防抖窗就要整库重写一次,
11725
+ * 与 PLC 写 sweep 跑在同一个事件循环上 —— 缩进在这里换来的是几十毫秒的阻塞。
11726
+ *
11727
+ * 所以按规模自动选择:小库保持缩进(可读性),大库走紧凑(性能)。
11728
+ * 2000 是实测拐点量级:低于此的库序列化都在亚毫秒,缩进白拿。
11729
+ */
11730
+ const PRETTY_MAX_ENTRIES = 2000;
11731
+
11732
+ /** 顶层元素数估算(数组取长度;对象取各数组属性长度之和)——用于选择序列化形态 */
11733
+ function entryCount(data) {
11734
+ if (Array.isArray(data)) return data.length
11735
+ if (data && typeof data === 'object') {
11736
+ let n = 0;
11737
+ for (const v of Object.values(data)) if (Array.isArray(v)) n += v.length;
11738
+ return n
11739
+ }
11740
+ return 0
11741
+ }
11742
+
11743
+ /** 按规模选择缩进(小库可读、大库省 CPU/IO) */
11744
+ function serializeJson(data) {
11745
+ return entryCount(data) > PRETTY_MAX_ENTRIES
11746
+ ? JSON.stringify(data)
11747
+ : JSON.stringify(data, null, 2)
11748
+ }
11749
+
11634
11750
  /**
11635
11751
  * 原子落盘:写临时文件 → rename 替换;失败退回直写。
11752
+ * 序列化形态按库规模自动选择(见 serializeJson)。
11636
11753
  * @param {string} filePath
11637
11754
  * @param {unknown} data
11638
11755
  */
11639
11756
  function saveJsonFileAtomic(filePath, data) {
11640
11757
  mkdirSync(dirname$1(filePath), { recursive: true });
11641
11758
  const tmp = `${filePath}.tmp-${process.pid}`;
11759
+ const payload = serializeJson(data);
11642
11760
  try {
11643
- writeFileSync(tmp, JSON.stringify(data, null, 2), 'utf-8');
11761
+ writeFileSync(tmp, payload, 'utf-8');
11644
11762
  try {
11645
11763
  renameSync(tmp, filePath);
11646
11764
  return
@@ -11652,7 +11770,7 @@ function saveJsonFileAtomic(filePath, data) {
11652
11770
  catch (tmpErr) {
11653
11771
  console.error(`[json-store] 临时文件写入失败(${tmpErr.message}),退回直写`);
11654
11772
  }
11655
- writeFileSync(filePath, JSON.stringify(data, null, 2), 'utf-8');
11773
+ writeFileSync(filePath, payload, 'utf-8');
11656
11774
  }
11657
11775
 
11658
11776
  var __defProp$C = Object.defineProperty;
@@ -12076,10 +12194,6 @@ class DaqNodeRuntime {
12076
12194
  this.lastPublishAt = 0;
12077
12195
  this.lastIngestAt = 0;
12078
12196
  }
12079
- /** 仅重置下发游标(全局下发间隔变更时,让新缺省立刻可观测) */
12080
- republish() {
12081
- this.lastPublishAt = 0;
12082
- }
12083
12197
  /**
12084
12198
  * 是否已到采样时点(网关调度用)。
12085
12199
  * 网关每拍派发额度有限,先判到期再占用额度:未到期的节点零成本跳过,
@@ -12250,16 +12364,6 @@ class DaqNodeRepo {
12250
12364
  log$u.error("[daq] \u5FEB\u7167\u843D\u76D8\u5931\u8D25:", err);
12251
12365
  }
12252
12366
  }
12253
- /** 读数落盘防抖(采样循环每帧调用;5s 合并一次磁盘写) */
12254
- flushDebounced(ms = 5e3) {
12255
- var _a, _b;
12256
- if (this.flushTimer) return;
12257
- this.flushTimer = setTimeout(() => {
12258
- this.flushTimer = null;
12259
- this.flushNow();
12260
- }, ms);
12261
- (_b = (_a = this.flushTimer).unref) == null ? void 0 : _b.call(_a);
12262
- }
12263
12367
  }
12264
12368
  const g$n = globalThis;
12265
12369
  function getDaqNodeRepo() {
@@ -12666,6 +12770,21 @@ class DaqController {
12666
12770
  __publicField$y(this, "siblingsCache", new LruMap(500));
12667
12771
  /** 遥测 WS 推送(1s/设备节流):孪生状态/遥测事件化直推,前端全量轮询降级为断线兜底 */
12668
12772
  __publicField$y(this, "twinPushAt", /* @__PURE__ */ new Map());
12773
+ /**
12774
+ * 帧查询的「内存读穿透」索引 —— 帧先入 frameBuffer 再广播 thumbUrl(contentUrl),
12775
+ * TSDB 为 500ms 防抖异步刷盘,收到 WS 立刻回查会在落库前 404,故查询侧先看 buffer。
12776
+ *
12777
+ * 为什么要有索引:早先 frameContent 直接线性扫 frameBuffer,而 frames() 更糟 ——
12778
+ * 它对每个 pending 行都调一次 framesFromBuffer(),即**在 O(n) 的外层里再套 O(n) 的全扫**
12779
+ * (n = FRAME_BUFFER_CAP = 2000):突发写入后缓冲全满时,单次 REST 查询 ≈ 4×10⁶ 次迭代
12780
+ * + 2000 次多余对象构造,而它和 250ms 采样 sweep 跑在同一个事件循环上。
12781
+ *
12782
+ * 现在:byNode 按节点分桶(范围查询只扫该节点的行),byKey 给出 (nodeId, tsMs) 的 O(1) 命中。
12783
+ * 两个索引与 frameBuffer 严格同生命周期 —— 所有 push/淘汰/flush 都必须经下面的私有方法,
12784
+ * 不允许直接操作 frameBuffer,否则索引会与缓冲漂移(表现为"刚采到的帧查不到")。
12785
+ */
12786
+ __publicField$y(this, "frameByNode", /* @__PURE__ */ new Map());
12787
+ __publicField$y(this, "frameByKey", /* @__PURE__ */ new Map());
12669
12788
  }
12670
12789
  // ---------- 生命周期 ----------
12671
12790
  ensureLoop() {
@@ -12854,7 +12973,7 @@ class DaqController {
12854
12973
  const lineRun = (_b = (_a = getDaqHostPorts()) == null ? void 0 : _a.lineRun.activeRun(node.lineId)) != null ? _b : null;
12855
12974
  if (lineRun) (_c = getDaqHostPorts()) == null ? void 0 : _c.lineRun.bumpTaggedSamples(node.lineId);
12856
12975
  const metrics = (_d = f.metrics) != null ? _d : {};
12857
- this.frameBuffer.push({
12976
+ this.pushFrame({
12858
12977
  nodeId: node.id,
12859
12978
  tsMs,
12860
12979
  kind: f.kind,
@@ -12869,8 +12988,7 @@ class DaqController {
12869
12988
  metrics
12870
12989
  });
12871
12990
  if (this.frameBuffer.length > FRAME_BUFFER_CAP) {
12872
- this.frameBuffer.splice(0, this.frameBuffer.length - FRAME_BUFFER_CAP);
12873
- this.tsdbDropped += 1;
12991
+ if (this.evictFrames(FRAME_BUFFER_CAP) > 0) this.tsdbDropped += 1;
12874
12992
  }
12875
12993
  this.scheduleTsdbFlush();
12876
12994
  this.evaluateMetricAlarms(node, tpl, metrics);
@@ -12960,13 +13078,6 @@ class DaqController {
12960
13078
  }
12961
13079
  this.emitController();
12962
13080
  }
12963
- /** 网关停止:全部节点置 offline */
12964
- markAllOffline() {
12965
- for (const n of this.repo.all()) {
12966
- if (n.enabled) n.state = "offline";
12967
- }
12968
- this.emitController();
12969
- }
12970
13081
  /** 运行时注册表对账(仓库为权威:增删节点/启动即对齐;返回新建的运行时) */
12971
13082
  syncRuntimes() {
12972
13083
  const live = /* @__PURE__ */ new Set();
@@ -13097,8 +13208,9 @@ class DaqController {
13097
13208
  }
13098
13209
  }
13099
13210
  }
13100
- while (this.frameBuffer.length > 0) {
13101
- const batch = this.frameBuffer.splice(0, this.frameBuffer.length);
13211
+ let pendingFrames = this.drainFrames();
13212
+ while (pendingFrames.length > 0) {
13213
+ const batch = pendingFrames;
13102
13214
  let ok = false;
13103
13215
  for (let attempt = 0; attempt < TSDB_WRITE_RETRIES && !ok; attempt++) {
13104
13216
  try {
@@ -13114,6 +13226,7 @@ class DaqController {
13114
13226
  }
13115
13227
  }
13116
13228
  }
13229
+ pendingFrames = this.drainFrames();
13117
13230
  }
13118
13231
  } finally {
13119
13232
  this.tsdbWriting = false;
@@ -13173,10 +13286,6 @@ class DaqController {
13173
13286
  setBroadcast(fn) {
13174
13287
  this.broadcast = fn;
13175
13288
  }
13176
- onlineCount() {
13177
- if (!this.running) return 0;
13178
- return this.repo.all().filter((n) => n.enabled).length;
13179
- }
13180
13289
  controllerState() {
13181
13290
  const queueLost = g_queueLost();
13182
13291
  const nodes = this.repo.all();
@@ -13224,30 +13333,62 @@ class DaqController {
13224
13333
  if (!node) throw Object.assign(new Error(`\u6570\u91C7\u8282\u70B9\u4E0D\u5B58\u5728: ${id}`), { status: 404 });
13225
13334
  return getTsdb().query(id, opts);
13226
13335
  }
13227
- /** 帧查询的「内存读穿透」:帧先入 frameBuffer 再广播 thumbUrl(contentUrl),
13228
- * TSDB 为 500ms 防抖异步刷盘 —— 收到 WS 立刻回查会在落库前 404。
13229
- * 故查询侧按 (nodeId, tsMs) 先看 buffer 命中;与 TSDB 返回形态逐字段对齐
13230
- * (points 从 meta.points 还原,规则同 tsdb adapter 的 pointsFromMeta)。
13231
- * 注:刷盘 splice 与查询同一 JS 线程,不存在「既不在 buffer 又没落库」的空窗。 */
13232
- framesFromBuffer(id, tsMs) {
13336
+ /** 帧索引键((nodeId, tsMs) 唯一:同一节点同一毫秒只会有一帧) */
13337
+ static frameKey(nodeId, tsMs) {
13338
+ return `${nodeId}@${tsMs}`;
13339
+ }
13340
+ /** 入缓冲 + 同步三处索引 */
13341
+ pushFrame(row) {
13342
+ this.frameBuffer.push(row);
13343
+ const key = DaqController.frameKey(row.nodeId, row.tsMs);
13344
+ this.frameByKey.set(key, row);
13345
+ const bucket = this.frameByNode.get(row.nodeId);
13346
+ if (bucket) bucket.push(row);
13347
+ else this.frameByNode.set(row.nodeId, [row]);
13348
+ }
13349
+ /** 淘汰最旧若干行,并同步清理索引(避免索引持有已淘汰行的强引用 → 内存泄漏) */
13350
+ evictFrames(keepLast) {
13351
+ const excess = this.frameBuffer.length - keepLast;
13352
+ if (excess <= 0) return 0;
13353
+ const dropped = this.frameBuffer.splice(0, excess);
13354
+ for (const row of dropped) {
13355
+ const key = DaqController.frameKey(row.nodeId, row.tsMs);
13356
+ if (this.frameByKey.get(key) === row) this.frameByKey.delete(key);
13357
+ const bucket = this.frameByNode.get(row.nodeId);
13358
+ if (!bucket) continue;
13359
+ const idx = bucket.indexOf(row);
13360
+ if (idx >= 0) bucket.splice(idx, 1);
13361
+ if (bucket.length === 0) this.frameByNode.delete(row.nodeId);
13362
+ }
13363
+ return dropped.length;
13364
+ }
13365
+ /** 取走全部帧(刷盘用)并清空索引 */
13366
+ drainFrames() {
13367
+ if (this.frameBuffer.length === 0) return [];
13368
+ const batch = this.frameBuffer.splice(0, this.frameBuffer.length);
13369
+ this.frameByNode.clear();
13370
+ this.frameByKey.clear();
13371
+ return batch;
13372
+ }
13373
+ /** 单行 → 对外记录(纯映射,不做任何扫描) */
13374
+ static toFrameRecord(r) {
13233
13375
  var _a, _b, _c, _d, _e;
13234
- const out = [];
13235
- for (const r of this.frameBuffer) {
13236
- if (r.nodeId !== id || r.tsMs !== tsMs) continue;
13237
- out.push({
13238
- at: r.tsMs,
13239
- kind: r.kind,
13240
- points: r.kind === "vector" ? DaqController.pointsFromMeta(r.meta) : void 0,
13241
- metrics: r.metrics,
13242
- meta: r.meta,
13243
- deviceBindingId: (_a = r.deviceBindingId) != null ? _a : null,
13244
- lineId: (_b = r.lineId) != null ? _b : null,
13245
- productId: (_c = r.productId) != null ? _c : null,
13246
- recipeId: (_d = r.recipeId) != null ? _d : null,
13247
- runId: (_e = r.runId) != null ? _e : null
13248
- });
13249
- }
13250
- return out;
13376
+ return {
13377
+ at: r.tsMs,
13378
+ kind: r.kind,
13379
+ points: r.kind === "vector" ? DaqController.pointsFromMeta(r.meta) : void 0,
13380
+ metrics: r.metrics,
13381
+ meta: r.meta,
13382
+ deviceBindingId: (_a = r.deviceBindingId) != null ? _a : null,
13383
+ lineId: (_b = r.lineId) != null ? _b : null,
13384
+ productId: (_c = r.productId) != null ? _c : null,
13385
+ recipeId: (_d = r.recipeId) != null ? _d : null,
13386
+ runId: (_e = r.runId) != null ? _e : null
13387
+ };
13388
+ }
13389
+ /** (nodeId, tsMs) 精确命中未刷盘帧;O(1) */
13390
+ bufferedFrameAt(id, tsMs) {
13391
+ return this.frameByKey.get(DaqController.frameKey(id, tsMs));
13251
13392
  }
13252
13393
  /** 向量点列从 meta.points 还原(与 TSDB adapter 同规则:非数组/空/越界/非数值 → undefined) */
13253
13394
  static pointsFromMeta(meta) {
@@ -13257,21 +13398,17 @@ class DaqController {
13257
13398
  }
13258
13399
  /** 节点帧历史(v2:向量/图像元数据;像素按需经 frameContent 从对象存储取) */
13259
13400
  async frames(id, opts) {
13260
- var _a;
13401
+ var _a, _b, _c, _d;
13261
13402
  this.ensureLoop();
13262
13403
  await tsdbReady;
13263
13404
  const node = this.repo.byId(id);
13264
13405
  if (!node) throw Object.assign(new Error(`\u6570\u91C7\u8282\u70B9\u4E0D\u5B58\u5728: ${id}`), { status: 404 });
13265
13406
  const rows = await getTsdb().queryFrames(id, opts);
13266
13407
  const seen = new Set(rows.map((r) => r.at));
13267
- const pending = this.frameBuffer.filter((r) => {
13268
- var _a2, _b;
13269
- return r.nodeId === id && (opts.kind == null || r.kind === opts.kind) && r.tsMs >= ((_a2 = opts.fromMs) != null ? _a2 : 0) && r.tsMs <= ((_b = opts.toMs) != null ? _b : Date.now());
13270
- }).filter((r) => !seen.has(r.tsMs)).sort((a, b) => b.tsMs - a.tsMs).map((r) => {
13271
- var _a2;
13272
- return (_a2 = this.framesFromBuffer(id, r.tsMs)[0]) != null ? _a2 : null;
13273
- }).filter((r) => r != null);
13274
- return [...rows, ...pending].slice(0, Math.min(Math.max((_a = opts.limit) != null ? _a : 100, 1), 1e3));
13408
+ const toMs = (_a = opts.toMs) != null ? _a : Date.now();
13409
+ const fromMs = (_b = opts.fromMs) != null ? _b : 0;
13410
+ const pending = ((_c = this.frameByNode.get(id)) != null ? _c : []).filter((r) => (opts.kind == null || r.kind === opts.kind) && r.tsMs >= fromMs && r.tsMs <= toMs && !seen.has(r.tsMs)).sort((a, b) => b.tsMs - a.tsMs).map(DaqController.toFrameRecord);
13411
+ return [...rows, ...pending].slice(0, Math.min(Math.max((_d = opts.limit) != null ? _d : 100, 1), 1e3));
13275
13412
  }
13276
13413
  /** 帧内容(图像主图/缩略图;从对象存储读取后由 REST 流式返回) */
13277
13414
  async frameContent(id, tsMs, thumb) {
@@ -13279,7 +13416,8 @@ class DaqController {
13279
13416
  await tsdbReady;
13280
13417
  const node = this.repo.byId(id);
13281
13418
  if (!node) throw Object.assign(new Error(`\u6570\u91C7\u8282\u70B9\u4E0D\u5B58\u5728: ${id}`), { status: 404 });
13282
- const rows = this.framesFromBuffer(id, tsMs);
13419
+ const buffered = this.bufferedFrameAt(id, tsMs);
13420
+ const rows = buffered ? [DaqController.toFrameRecord(buffered)] : await getTsdb().queryFrames(id, { fromMs: tsMs - 1, toMs: tsMs + 1, limit: 5 });
13283
13421
  if (rows.length === 0) rows.push(...await getTsdb().queryFrames(id, { fromMs: tsMs - 1, toMs: tsMs + 1, limit: 5 }));
13284
13422
  const row = rows.find((r) => r.at === tsMs);
13285
13423
  if (!row || row.kind !== "image") throw Object.assign(new Error(`\u5E27\u4E0D\u5B58\u5728: ${id}@${tsMs}`), { status: 404 });
@@ -22092,6 +22230,10 @@ function createAmlRepo(db) {
22092
22230
  },
22093
22231
  remove(id) {
22094
22232
  db.prepare("DELETE FROM aml_datasets WHERE id = ?").run(id);
22233
+ },
22234
+ /** 元数据局部更新(备注;CRUD 的 U) */
22235
+ updateNote(id, note) {
22236
+ db.prepare("UPDATE aml_datasets SET note = ? WHERE id = ?").run(note, id);
22095
22237
  }
22096
22238
  },
22097
22239
  // ----- jobs -----
@@ -22142,6 +22284,14 @@ function createAmlRepo(db) {
22142
22284
  },
22143
22285
  requeue(id) {
22144
22286
  jobRetryBump.run(id);
22287
+ },
22288
+ remove(id) {
22289
+ db.prepare("DELETE FROM aml_jobs WHERE id = ?").run(id);
22290
+ },
22291
+ /** 删除作业时级联清实验谱系(否则实验行成为悬挂元数据) */
22292
+ removeExperimentsOf(jobId) {
22293
+ const r = db.prepare("DELETE FROM aml_experiments WHERE job_id = ?").run(jobId);
22294
+ return Number(r.changes);
22145
22295
  }
22146
22296
  },
22147
22297
  // ----- experiments -----
@@ -22235,23 +22385,75 @@ function createAmlRepo(db) {
22235
22385
  },
22236
22386
  markPruned(id) {
22237
22387
  modelPrune.run(id);
22388
+ },
22389
+ remove(id) {
22390
+ db.prepare("DELETE FROM aml_models WHERE id = ?").run(id);
22391
+ },
22392
+ updateNote(id, note) {
22393
+ db.prepare("UPDATE aml_models SET note = ? WHERE id = ?").run(note, id);
22238
22394
  }
22239
22395
  }
22240
22396
  };
22241
22397
  }
22242
22398
 
22243
22399
  const g$5 = globalThis;
22244
- function configureAmlRuntime(db, dataDir) {
22400
+ const README = `# AML \u5E73\u53F0\u6570\u636E\u76EE\u5F55
22401
+
22402
+ \u672C\u76EE\u5F55\u662F AgentWorkShop \u81EA\u52A8\u5EFA\u6A21(AML)\u5E73\u53F0\u7684**\u5168\u90E8\u8D44\u4EA7\u6839**,\u7531\u670D\u52A1\u81EA\u52A8\u521B\u5EFA\u4E0E\u7EF4\u62A4\u3002
22403
+
22404
+ ## \u76EE\u5F55\u7EA6\u5B9A
22405
+
22406
+ | \u8DEF\u5F84 | \u5185\u5BB9 | \u53EF\u5426\u624B\u5220 |
22407
+ | --- | --- | --- |
22408
+ | \`.venv/\` | uv \u521B\u5EFA/\u7BA1\u7406\u7684 Python \u73AF\u5883(\u4F9D\u8D56\u9501\u5B9A\u5728\u5E73\u53F0\u7684 requirements.txt) | \u53EF\u5220,\u4E0B\u6B21\u4F9B\u7ED9\u81EA\u52A8\u91CD\u5EFA |
22409
+ | \`datasets/<id>/\` | \u6570\u636E\u96C6\u5B9E\u4F53:\`spec.json\` \u53D6\u6570\u89C4\u683C\u3001\`manifest.json\` \u5217\u5B9A\u4E49\u3001\`report.json\` \u8D28\u91CF\u62A5\u544A\u3001\`arrays/*.f32\` \u5217\u5F0F\u6570\u7EC4 | \u5148\u5220\u5143\u6570\u636E\u884C,\u518D\u5220\u76EE\u5F55 |
22410
+ | \`jobs/<id>/\` | \u8BAD\u7EC3\u4F5C\u4E1A\u5B9E\u4F53:\`job.json\` \u63D0\u4EA4\u5951\u7EA6\u3001\`workspace/\`(train.py + amlkit.py)\u3001\`run.log\`\u3001\`artifacts/\`(\u4EA7\u51FA\u6A21\u578B) | \u540C\u4E0A |
22411
+ | \`models/<id>/\` | \u6A21\u578B\u5B9E\u4F53:\`model.onnx\` + \`io_spec.json\`(\u8F93\u5165\u8F93\u51FA\u5951\u7EA6,\u4E0D\u53EF\u53D8) | \u540C\u4E0A |
22412
+ | \`runtime/\` | \u5E73\u53F0\u8FD0\u884C\u65F6\u72B6\u6001:uv \u5B89\u88C5\u8BB0\u5F55(\`uv.json\`)\u3001\u73AF\u5883\u63A2\u9488\u5FEB\u7167(\`env.json\`) | \u53EF\u5220,\u81EA\u52A8\u91CD\u5EFA |
22413
+ | \`tools/\` | \u5E73\u53F0\u81EA\u52A8\u5B89\u88C5\u7684 uv \u4E8C\u8FDB\u5236(\u514D\u7BA1\u7406\u5458\u3001\u4E0D\u6539\u7CFB\u7EDF PATH) | \u53EF\u5220,\u53EF\u91CD\u65B0\u4E00\u952E\u5B89\u88C5 |
22414
+
22415
+ ## \u5143\u6570\u636E\u4E0E\u5B9E\u4F53\u7684\u5173\u7CFB
22416
+
22417
+ \u5E73\u53F0\u7528 SQLite \u56DB\u8868\u4FDD\u5B58**\u5143\u6570\u636E**(\u6570\u636E\u96C6/\u4F5C\u4E1A/\u5B9E\u9A8C/\u6A21\u578B),\u7528\u672C\u76EE\u5F55\u4FDD\u5B58**\u5B9E\u4F53**\u3002
22418
+ \u4E24\u8005\u4EE5 id \u4E00\u4E00\u5BF9\u5E94;REST \u7684 \`/api/workshop/aml/*\` \u63D0\u4F9B\u5143\u6570\u636E CRUD,
22419
+ \u5220\u9664\u5143\u6570\u636E\u65F6\u540C\u6B65\u6E05\u7406\u5BF9\u5E94\u5B9E\u4F53\u76EE\u5F55(\u6709\u5F15\u7528\u7684\u6570\u636E\u96C6\u4F1A\u88AB\u62D2\u7EDD\u5220\u9664)\u3002
22420
+
22421
+ ## \u8FC1\u79FB\u5230\u522B\u7684\u673A\u5668
22422
+
22423
+ \u6574\u4E2A \`aml/\` \u76EE\u5F55\u53EF\u76F4\u63A5\u62F7\u8D1D(\u542B \`.venv\` \u4E0E\u6A21\u578B\u5DE5\u4EF6);\u76EE\u6807\u673A\u82E5\u65E0\u540C\u7248\u672C Python,
22424
+ \u5220\u6389 \`.venv/\` \u8BA9\u5E73\u53F0\u6309\u672C\u673A\u89E3\u91CA\u5668\u91CD\u5EFA\u5373\u53EF \u2014\u2014 \u6570\u636E\u96C6\u4E0E\u6A21\u578B\u5DE5\u4EF6\u4E0D\u53D7\u5F71\u54CD\u3002
22425
+ `;
22426
+ const GITIGNORE = `# AML \u8FD0\u884C\u65F6\u8D44\u4EA7:\u4F53\u79EF\u5927\u4E14\u4E0E\u673A\u5668\u7ED1\u5B9A,\u4E0D\u5165\u5E93
22427
+ .venv/
22428
+ tools/
22429
+ runtime/
22430
+ datasets/
22431
+ jobs/
22432
+ models/
22433
+ `;
22434
+ function configureAmlRuntime(db, _dataDir) {
22245
22435
  if (g$5.__amlRuntime) return g$5.__amlRuntime;
22246
- const root = join(dataDir, "aml");
22436
+ const resolved = resolveAmlRoot({});
22437
+ const root = ensureAmlDir();
22247
22438
  const rt = {
22248
22439
  db,
22249
22440
  root,
22441
+ rootMode: resolved.mode,
22442
+ projectRoot: resolved.projectRoot,
22250
22443
  repo: createAmlRepo(db),
22251
22444
  datasetsDir: join(root, "datasets"),
22252
22445
  jobsDir: join(root, "jobs"),
22253
- modelsDir: join(root, "models")
22446
+ modelsDir: join(root, "models"),
22447
+ venvDir: join(root, ".venv"),
22448
+ toolsDir: join(root, "tools"),
22449
+ runtimeDir: join(root, "runtime")
22254
22450
  };
22451
+ mkdirSync(rt.venvDir, { recursive: true });
22452
+ try {
22453
+ if (!existsSync(join(root, "README.md"))) writeFileSync(join(root, "README.md"), README);
22454
+ if (!existsSync(join(root, ".gitignore"))) writeFileSync(join(root, ".gitignore"), GITIGNORE);
22455
+ } catch {
22456
+ }
22255
22457
  g$5.__amlRuntime = rt;
22256
22458
  return rt;
22257
22459
  }
@@ -22261,6 +22463,24 @@ function getAmlRuntime() {
22261
22463
  }
22262
22464
  return g$5.__amlRuntime;
22263
22465
  }
22466
+ function amlRootSourceLabel(mode) {
22467
+ switch (mode) {
22468
+ case "env":
22469
+ return "\u73AF\u5883\u53D8\u91CF AW_AML_DIR \u6307\u5B9A";
22470
+ case "repo":
22471
+ return "\u9879\u76EE\u68C0\u51FA\u6839(./aml)";
22472
+ case "home":
22473
+ return "\u7528\u6237\u914D\u7F6E\u6839(~/.AgentWorkShop/aml)";
22474
+ default:
22475
+ return "\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55(./aml)";
22476
+ }
22477
+ }
22478
+ function isInsideAmlRoot(rt, p) {
22479
+ const norm = (s) => s.replace(/\\/g, "/").replace(/\/+$/, "");
22480
+ const root = norm(rt.root);
22481
+ const target = norm(p);
22482
+ return target === root || target.startsWith(`${root}/`);
22483
+ }
22264
22484
 
22265
22485
  const amlDatasetSpecSchema = z.object({
22266
22486
  lineId: z.string().min(1),
@@ -22799,6 +23019,7 @@ async function buildDataset(spec, by) {
22799
23019
  beatMs: beat
22800
23020
  };
22801
23021
  writeFileSync(join(dir, "manifest.json"), JSON.stringify(manifest, null, 2));
23022
+ writeFileSync(join(dir, "spec.json"), JSON.stringify(spec, null, 2));
22802
23023
  const nodeSummaries = [];
22803
23024
  for (const n of order) {
22804
23025
  bucketsPart.train.flatMap(() => []);
@@ -23056,8 +23277,11 @@ function killHarnessProcess(pid) {
23056
23277
  }
23057
23278
 
23058
23279
  const log$l = createLogger("aml.py");
23280
+ const UV_INSTALL_TIMEOUT_MS = 10 * 6e4;
23281
+ const VENV_CREATE_TIMEOUT_MS = 5 * 6e4;
23282
+ const PIP_INSTALL_TIMEOUT_MS = 20 * 6e4;
23059
23283
  const g$4 = globalThis;
23060
- function runCapture(cmd, args, timeoutMs) {
23284
+ function runCapture(cmd, args, timeoutMs, onData) {
23061
23285
  return new Promise((resolve) => {
23062
23286
  var _a, _b;
23063
23287
  const child = spawnLineProcess(cmd, args);
@@ -23070,10 +23294,14 @@ function runCapture(cmd, args, timeoutMs) {
23070
23294
  [timeout ${timeoutMs}ms]` });
23071
23295
  }, timeoutMs);
23072
23296
  (_a = child.stdout) == null ? void 0 : _a.on("data", (d) => {
23073
- out += String(d);
23297
+ const s = String(d);
23298
+ out += s;
23299
+ onData == null ? void 0 : onData(s);
23074
23300
  });
23075
23301
  (_b = child.stderr) == null ? void 0 : _b.on("data", (d) => {
23076
- err += String(d);
23302
+ const s = String(d);
23303
+ err += s;
23304
+ onData == null ? void 0 : onData(s);
23077
23305
  });
23078
23306
  child.on("error", (e) => {
23079
23307
  clearTimeout(timer);
@@ -23085,21 +23313,152 @@ function runCapture(cmd, args, timeoutMs) {
23085
23313
  });
23086
23314
  });
23087
23315
  }
23316
+ function uvBinName() {
23317
+ return process.platform === "win32" ? "uv.exe" : "uv";
23318
+ }
23319
+ function looksLikePath(name) {
23320
+ return name.includes("/") || name.includes("\\") || /^[A-Za-z]:/.test(name);
23321
+ }
23322
+ function readUvRecord(rt) {
23323
+ try {
23324
+ const p = join(rt.runtimeDir, "uv.json");
23325
+ if (!existsSync(p)) return null;
23326
+ const parsed = JSON.parse(readFileSync(p, "utf8"));
23327
+ return parsed && typeof parsed.uvPath === "string" ? parsed : null;
23328
+ } catch {
23329
+ return null;
23330
+ }
23331
+ }
23332
+ function writeUvRecord(rt, rec) {
23333
+ try {
23334
+ mkdirSync(rt.runtimeDir, { recursive: true });
23335
+ writeFileSync(join(rt.runtimeDir, "uv.json"), JSON.stringify(rec, null, 2));
23336
+ } catch (err) {
23337
+ log$l.warn("[aml-uv] \u5B89\u88C5\u8BB0\u5F55\u843D\u76D8\u5931\u8D25:", err == null ? void 0 : err.message);
23338
+ }
23339
+ }
23340
+ function findUvInDir(dir, depth = 3) {
23341
+ if (depth < 0 || !existsSync(dir)) return null;
23342
+ let entries;
23343
+ try {
23344
+ entries = readdirSync(dir);
23345
+ } catch {
23346
+ return null;
23347
+ }
23348
+ const want = uvBinName();
23349
+ for (const e of entries) {
23350
+ if (e === want) {
23351
+ const p = join(dir, e);
23352
+ try {
23353
+ if (statSync(p).isFile()) return p;
23354
+ } catch {
23355
+ }
23356
+ }
23357
+ }
23358
+ for (const e of entries) {
23359
+ if (e === "bin" || e === "Scripts" || e === "tools") {
23360
+ const p = join(dir, e, want);
23361
+ try {
23362
+ if (existsSync(p) && statSync(p).isFile()) return p;
23363
+ } catch {
23364
+ }
23365
+ }
23366
+ }
23367
+ for (const e of entries) {
23368
+ const p = join(dir, e);
23369
+ try {
23370
+ if (!statSync(p).isDirectory()) continue;
23371
+ } catch {
23372
+ continue;
23373
+ }
23374
+ const hit = findUvInDir(p, depth - 1);
23375
+ if (hit) return hit;
23376
+ }
23377
+ return null;
23378
+ }
23379
+ function platformPythonDir() {
23380
+ var _a, _b, _c;
23381
+ const rel = join("server", "services", "workshop", "aml", "python");
23382
+ const fallback = join(process.cwd(), rel);
23383
+ const candidates = [
23384
+ (_a = process.env.AML_PYHOME) != null ? _a : "",
23385
+ fallback,
23386
+ join(process.cwd(), ".output", ".AgentWorkShop", "aml-python"),
23387
+ join((_b = process.env.AW_PACKAGE_ROOT) != null ? _b : process.cwd(), rel),
23388
+ join((_c = process.env.AW_PACKAGE_ROOT) != null ? _c : process.cwd(), ".output", ".AgentWorkShop", "aml-python")
23389
+ ];
23390
+ for (const c of candidates) {
23391
+ if (c && existsSync(join(c, "amlkit.py"))) return c;
23392
+ }
23393
+ return fallback;
23394
+ }
23395
+ function venvDir(rt) {
23396
+ return rt.venvDir || join(rt.root, ".venv");
23397
+ }
23398
+ function venvPythonPath(rt) {
23399
+ return process.platform === "win32" ? join(venvDir(rt), "Scripts", "python.exe") : join(venvDir(rt), "bin", "python");
23400
+ }
23401
+ function resetProbeCache() {
23402
+ g$4.__amlPyProbe = void 0;
23403
+ g$4.__amlUvProbe = void 0;
23404
+ g$4.__amlVenvPromise = void 0;
23405
+ }
23406
+ async function probeUvBinary(candidate, source) {
23407
+ var _a;
23408
+ const resolved = (_a = resolveOnPath(candidate)) != null ? _a : looksLikePath(candidate) || existsSync(candidate) ? candidate : void 0;
23409
+ if (!resolved) return null;
23410
+ if (!existsSync(resolved)) return null;
23411
+ const r = await runCapture(resolved, ["--version"], 15e3);
23412
+ if (r.code !== 0) return null;
23413
+ return { ok: true, path: resolved, version: (r.out || r.err).trim().split("\n")[0], source };
23414
+ }
23415
+ async function probeUv(rt) {
23416
+ if (g$4.__amlUvProbe) return g$4.__amlUvProbe;
23417
+ const s = amlSettings();
23418
+ const attempts = [];
23419
+ if (s.python.uvBin) attempts.push([s.python.uvBin, "config"]);
23420
+ const record = rt ? readUvRecord(rt) : null;
23421
+ if (rt) {
23422
+ const projectHit = findUvInDir(rt.toolsDir);
23423
+ if (projectHit) attempts.push([projectHit, "project"]);
23424
+ }
23425
+ if (record == null ? void 0 : record.uvPath) attempts.push([record.uvPath, "state"]);
23426
+ if (!s.python.uvBin) attempts.push(["uv", "path"]);
23427
+ for (const [candidate, source] of attempts) {
23428
+ const hit = await probeUvBinary(candidate, source);
23429
+ if (hit) {
23430
+ g$4.__amlUvProbe = hit;
23431
+ log$l.info(`[aml-uv] \u63A2\u6D4B\u5230 uv ${hit.version} @ ${hit.path} (\u6765\u6E90=${source})`);
23432
+ return hit;
23433
+ }
23434
+ }
23435
+ if (process.platform !== "win32" && !s.python.uvBin) {
23436
+ const r = await runCapture("which", ["uv"], 5e3);
23437
+ const p = r.out.trim().split("\n")[0];
23438
+ if (r.code === 0 && p) {
23439
+ const hit = await probeUvBinary(p, "path");
23440
+ if (hit) {
23441
+ g$4.__amlUvProbe = hit;
23442
+ return hit;
23443
+ }
23444
+ }
23445
+ }
23446
+ const miss = {
23447
+ ok: false,
23448
+ reason: "\u672A\u68C0\u6D4B\u5230 uv\u3002\u53EF\u70B9\u51FB\u300C\u4E00\u952E\u5B89\u88C5 uv\u300D\u7531\u5E73\u53F0\u81EA\u52A8\u5B89\u88C5\u5230 ./aml/tools(\u514D\u7BA1\u7406\u5458\u3001\u4E0D\u6539\u7CFB\u7EDF PATH),\u6216\u5728\u8BBE\u7F6E\u4E2D\u6307\u5B9A aml.python.uvBin\u3002"
23449
+ };
23450
+ g$4.__amlUvProbe = miss;
23451
+ return miss;
23452
+ }
23088
23453
  async function probePython() {
23089
23454
  var _a;
23090
23455
  if (g$4.__amlPyProbe) return g$4.__amlPyProbe;
23091
23456
  const s = amlSettings();
23457
+ const rt = safeRuntime();
23458
+ const uv = rt ? await probeUv(rt) : void 0;
23092
23459
  const candidates = s.python.pythonBin ? [s.python.pythonBin] : process.platform === "win32" ? ["python", "py"] : ["python3", "python"];
23093
- let uvPath;
23094
- const uvName = s.python.uvBin || "uv";
23095
- const uvResolved = resolveOnPath(uvName);
23096
- if (uvResolved) uvPath = uvResolved;
23097
- else if (!s.python.uvBin && process.platform !== "win32") {
23098
- const r = await runCapture("which", [uvName], 5e3);
23099
- if (r.code === 0 && r.out.trim()) uvPath = r.out.trim().split("\n")[0];
23100
- }
23101
23460
  for (const name of candidates) {
23102
- const resolved = (_a = resolveOnPath(name)) != null ? _a : name.includes("/") || name.includes("\\") || /^[A-Za-z]:/.test(name) ? name : void 0;
23461
+ const resolved = (_a = resolveOnPath(name)) != null ? _a : looksLikePath(name) ? name : void 0;
23103
23462
  if (!resolved || !existsSync(resolved)) continue;
23104
23463
  const probe = await runCapture(resolved, ["--version"], 1e4);
23105
23464
  if (probe.code === 0) {
@@ -23108,83 +23467,180 @@ async function probePython() {
23108
23467
  ok: true,
23109
23468
  pythonPath: resolved,
23110
23469
  version,
23111
- uvPath
23470
+ uvPath: (uv == null ? void 0 : uv.ok) ? uv.path : void 0
23112
23471
  };
23113
23472
  g$4.__amlPyProbe = result2;
23114
- log$l.info(`[aml-python] \u63A2\u6D4B\u6210\u529F:${version} @ ${resolved}${uvPath ? ` (uv: ${uvPath})` : ""}`);
23473
+ log$l.info(`[aml-python] \u63A2\u6D4B\u6210\u529F:${version} @ ${resolved}${(uv == null ? void 0 : uv.ok) ? ` (uv: ${uv.path})` : " (\u65E0 uv,\u5C06\u7528 python -m venv \u515C\u5E95)"}`);
23115
23474
  return result2;
23116
23475
  }
23117
23476
  }
23118
23477
  const result = {
23119
23478
  ok: false,
23120
- uvPath,
23479
+ uvPath: (uv == null ? void 0 : uv.ok) ? uv.path : void 0,
23121
23480
  reason: "\u672A\u627E\u5230\u53EF\u7528\u7684 Python 3 \u89E3\u91CA\u5668:\u5B89\u88C5 Python 3.10+ \u6216 uv,\u6216\u8BBE\u7F6E aml.python.pythonBin \u6307\u5411\u89E3\u91CA\u5668\u7EDD\u5BF9\u8DEF\u5F84"
23122
23481
  };
23123
23482
  g$4.__amlPyProbe = result;
23124
23483
  return result;
23125
23484
  }
23485
+ function safeRuntime() {
23486
+ var _a;
23487
+ try {
23488
+ return (_a = g$4.__amlRuntime) != null ? _a : null;
23489
+ } catch {
23490
+ return null;
23491
+ }
23492
+ }
23493
+ async function installUv(rt, onLog) {
23494
+ var _a;
23495
+ const lines = [];
23496
+ const emit = (s) => {
23497
+ const t = s.trimEnd();
23498
+ if (t) {
23499
+ lines.push(t);
23500
+ onLog == null ? void 0 : onLog(t);
23501
+ }
23502
+ };
23503
+ const existing = await probeUvBinary((_a = findUvInDir(rt.toolsDir)) != null ? _a : "", "project");
23504
+ if ((existing == null ? void 0 : existing.ok) && existing.path) {
23505
+ emit(`\u5DF2\u5B58\u5728\u53EF\u7528 uv:${existing.version} @ ${existing.path}`);
23506
+ return { ok: true, uvPath: existing.path, version: existing.version, method: "existing", log: lines.join("\n") };
23507
+ }
23508
+ mkdirSync(rt.toolsDir, { recursive: true });
23509
+ const errors = [];
23510
+ emit(`[1/2] \u4F7F\u7528\u5B98\u65B9\u5B89\u88C5\u811A\u672C\u5B89\u88C5 uv \u5230 ${rt.toolsDir} \u2026`);
23511
+ const script = await runOfficialInstaller(rt, emit);
23512
+ if (script.ok) {
23513
+ const hit = findUvInDir(rt.toolsDir);
23514
+ if (hit) {
23515
+ const v = await runCapture(hit, ["--version"], 15e3);
23516
+ const version = (v.out || v.err).trim().split("\n")[0];
23517
+ writeUvRecord(rt, { uvPath: hit, version, installedAt: (/* @__PURE__ */ new Date()).toISOString(), installDir: rt.toolsDir, method: "official-script" });
23518
+ resetProbeCache();
23519
+ emit(`\u5B89\u88C5\u6210\u529F:${version} @ ${hit}`);
23520
+ return { ok: true, uvPath: hit, version, method: "official-script", log: lines.join("\n") };
23521
+ }
23522
+ errors.push("\u5B98\u65B9\u811A\u672C\u6267\u884C\u5B8C\u6210\u4F46\u672A\u5728 tools \u76EE\u5F55\u627E\u5230 uv \u53EF\u6267\u884C\u6587\u4EF6");
23523
+ } else {
23524
+ errors.push(script.err);
23525
+ }
23526
+ emit("[2/2] \u56DE\u9000\u65B9\u6848:python -m pip install --target tools uv");
23527
+ const probe = await probePython();
23528
+ if (probe.ok && probe.pythonPath) {
23529
+ const pipArgs = ["-m", "pip", "install", "--upgrade", "--target", rt.toolsDir, "uv"];
23530
+ const idx = amlSettings().python.indexUrl;
23531
+ if (idx) pipArgs.push("--index-url", idx);
23532
+ const r = await runCapture(probe.pythonPath, pipArgs, UV_INSTALL_TIMEOUT_MS, emit);
23533
+ if (r.code === 0) {
23534
+ const hit = findUvInDir(rt.toolsDir);
23535
+ if (hit) {
23536
+ try {
23537
+ chmodSync(hit, 493);
23538
+ } catch {
23539
+ }
23540
+ const v = await runCapture(hit, ["--version"], 15e3);
23541
+ const version = (v.out || v.err).trim().split("\n")[0];
23542
+ writeUvRecord(rt, { uvPath: hit, version, installedAt: (/* @__PURE__ */ new Date()).toISOString(), installDir: rt.toolsDir, method: "pip-target" });
23543
+ resetProbeCache();
23544
+ emit(`\u5B89\u88C5\u6210\u529F:${version} @ ${hit}`);
23545
+ return { ok: true, uvPath: hit, version, method: "pip-target", log: lines.join("\n") };
23546
+ }
23547
+ errors.push("pip \u5B89\u88C5\u6210\u529F\u4F46\u672A\u627E\u5230 uv \u53EF\u6267\u884C\u6587\u4EF6");
23548
+ } else {
23549
+ errors.push(`pip \u5B89\u88C5\u5931\u8D25:${(r.err || r.out).slice(-400)}`);
23550
+ }
23551
+ } else {
23552
+ errors.push(`\u65E0\u53EF\u7528 Python \u89E3\u91CA\u5668:${probe.reason}`);
23553
+ }
23554
+ emit("\u5B89\u88C5\u5931\u8D25\u3002");
23555
+ return { ok: false, method: "none", log: `${lines.join("\n")}
23556
+
23557
+ --- \u5931\u8D25\u539F\u56E0 ---
23558
+ ${errors.join("\n")}` };
23559
+ }
23560
+ const PS_QUOTE_ESC = "''";
23561
+ async function runOfficialInstaller(rt, emit) {
23562
+ if (process.platform === "win32") {
23563
+ const ps = [
23564
+ `$env:UV_INSTALL_DIR='${rt.toolsDir.replace(/'/g, PS_QUOTE_ESC)}'`,
23565
+ `$env:UV_NO_MODIFY_PATH='1'`,
23566
+ "irm https://astral.sh/uv/install.ps1 | iex"
23567
+ ].join("; ");
23568
+ const r2 = await runCapture("powershell", ["-ExecutionPolicy", "Bypass", "-NoProfile", "-NonInteractive", "-Command", ps], UV_INSTALL_TIMEOUT_MS, emit);
23569
+ return { ok: r2.code === 0, err: `\u5B98\u65B9\u811A\u672C\u5931\u8D25(exit=${r2.code}):${(r2.err || r2.out).slice(-400)}` };
23570
+ }
23571
+ const sh = `curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR='${rt.toolsDir.replace(/'/g, `'\\''`)}' UV_NO_MODIFY_PATH=1 sh`;
23572
+ const r = await runCapture("sh", ["-c", sh], UV_INSTALL_TIMEOUT_MS, emit);
23573
+ return { ok: r.code === 0, err: `\u5B98\u65B9\u811A\u672C\u5931\u8D25(exit=${r.code}):${(r.err || r.out).slice(-400)}` };
23574
+ }
23126
23575
  function requirementsHash() {
23127
23576
  const reqPath = join(platformPythonDir(), "requirements.txt");
23128
23577
  const content = existsSync(reqPath) ? readFileSync(reqPath, "utf8") : "";
23129
23578
  const idx = amlSettings().python.indexUrl;
23130
23579
  return createHash("sha256").update(content).update(idx).digest("hex").slice(0, 12);
23131
23580
  }
23132
- function platformPythonDir() {
23133
- var _a, _b;
23134
- const fallback = join(process.cwd(), "server", "services", "workshop", "aml", "python");
23135
- const candidates = [
23136
- (_a = process.env.AML_PYHOME) != null ? _a : "",
23137
- fallback,
23138
- join((_b = process.env.AW_PACKAGE_ROOT) != null ? _b : process.cwd(), "server", "services", "workshop", "aml", "python")
23139
- ];
23140
- for (const c of candidates) {
23141
- if (c && existsSync(join(c, "amlkit.py"))) return c;
23142
- }
23143
- return fallback;
23144
- }
23145
- function venvDir(rt) {
23146
- return join(rt.root, "runtime", "venv");
23581
+ function venvMarkerPath(rt) {
23582
+ return join(venvDir(rt), `.aml-ok-${requirementsHash()}`);
23147
23583
  }
23148
- function venvPythonPath(rt) {
23149
- return process.platform === "win32" ? join(venvDir(rt), "Scripts", "python.exe") : join(venvDir(rt), "bin", "python");
23584
+ function isVenvReady(rt) {
23585
+ return existsSync(venvMarkerPath(rt)) && existsSync(venvPythonPath(rt));
23150
23586
  }
23151
- async function ensureVenv(rt) {
23152
- if (g$4.__amlVenvPromise) return g$4.__amlVenvPromise;
23153
- g$4.__amlVenvPromise = (async () => {
23587
+ async function ensureVenv(rt, opts = {}) {
23588
+ if (opts.force) {
23589
+ try {
23590
+ rmSync(venvDir(rt), { recursive: true, force: true });
23591
+ emitLog(opts.onLog, `\u5DF2\u6E05\u7406\u65E7\u73AF\u5883:${venvDir(rt)}`);
23592
+ } catch (err) {
23593
+ throw new AppError(500, "AML_VENV_FAILED", `\u6E05\u7406\u65E7\u73AF\u5883\u5931\u8D25(\u53EF\u80FD\u4ECD\u88AB\u8FDB\u7A0B\u5360\u7528):${err.message}`);
23594
+ }
23595
+ g$4.__amlVenvPromise = void 0;
23596
+ }
23597
+ if (g$4.__amlVenvPromise && !opts.force) return g$4.__amlVenvPromise;
23598
+ const task = (async () => {
23599
+ const vdir = venvDir(rt);
23600
+ const vpy = venvPythonPath(rt);
23601
+ if (isVenvReady(rt)) {
23602
+ emitLog(opts.onLog, `\u73AF\u5883\u5DF2\u5C31\u7EEA(\u6807\u8BB0 ${requirementsHash()}):${vdir}`);
23603
+ return vpy;
23604
+ }
23154
23605
  const probe = await probePython();
23155
23606
  if (!probe.ok || !probe.pythonPath) {
23156
23607
  throw new AppError(503, "AML_PYTHON_MISSING", `\u8BAD\u7EC3\u8FD0\u884C\u65F6\u4E0D\u53EF\u7528:${probe.reason}`);
23157
23608
  }
23158
- const vdir = venvDir(rt);
23159
- const vpy = venvPythonPath(rt);
23160
- const marker = join(vdir, `.aml-ok-${requirementsHash()}`);
23161
- if (existsSync(marker) && existsSync(vpy)) return vpy;
23162
23609
  const s = amlSettings();
23163
23610
  const idxArgs = s.python.indexUrl ? ["--index-url", s.python.indexUrl] : [];
23164
23611
  const reqPath = join(platformPythonDir(), "requirements.txt");
23165
- log$l.info("[aml-python] \u5F00\u59CB venv \u4F9B\u7ED9(\u9996\u6B21\u53EF\u80FD\u9700\u6570\u5206\u949F\u4E0B\u8F7D\u4F9D\u8D56)\u2026");
23612
+ mkdirSync(rt.root, { recursive: true });
23613
+ emitLog(opts.onLog, `\u5F00\u59CB\u4F9B\u7ED9 Python \u73AF\u5883(\u9996\u6B21\u53EF\u80FD\u9700\u6570\u5206\u949F\u4E0B\u8F7D\u4F9D\u8D56)\u2026`);
23166
23614
  if (probe.uvPath) {
23167
- const mk = await runCapture(probe.uvPath, ["venv", vdir, "--python", probe.pythonPath], 12e4);
23615
+ emitLog(opts.onLog, `uv venv ${vdir} --python ${probe.pythonPath}`);
23616
+ const mk = await runCapture(probe.uvPath, ["venv", vdir, "--python", probe.pythonPath], VENV_CREATE_TIMEOUT_MS, opts.onLog);
23168
23617
  if (mk.code !== 0) throw new AppError(500, "AML_VENV_FAILED", `uv venv \u5931\u8D25:${mk.err.slice(-400)}`);
23169
- const inst = await runCapture(probe.uvPath, ["pip", "install", "--python", vpy, "-r", reqPath, ...idxArgs], 20 * 6e4);
23618
+ emitLog(opts.onLog, `uv pip install -r requirements.txt`);
23619
+ const inst = await runCapture(probe.uvPath, ["pip", "install", "--python", vpy, "-r", reqPath, ...idxArgs], PIP_INSTALL_TIMEOUT_MS, opts.onLog);
23170
23620
  if (inst.code !== 0) throw new AppError(500, "AML_VENV_FAILED", `\u4F9D\u8D56\u5B89\u88C5\u5931\u8D25:${(inst.err || inst.out).slice(-400)}`);
23171
23621
  } else {
23172
- const mk = await runCapture(probe.pythonPath, ["-m", "venv", vdir], 12e4);
23622
+ emitLog(opts.onLog, `\u672A\u68C0\u6D4B\u5230 uv,\u56DE\u9000 python -m venv(\u8F83\u6162)`);
23623
+ const mk = await runCapture(probe.pythonPath, ["-m", "venv", vdir], VENV_CREATE_TIMEOUT_MS, opts.onLog);
23173
23624
  if (mk.code !== 0) throw new AppError(500, "AML_VENV_FAILED", `python -m venv \u5931\u8D25:${mk.err.slice(-400)}`);
23174
- const inst = await runCapture(vpy, ["-m", "pip", "install", "-r", reqPath, ...idxArgs], 20 * 6e4);
23625
+ const inst = await runCapture(vpy, ["-m", "pip", "install", "-r", reqPath, ...idxArgs], PIP_INSTALL_TIMEOUT_MS, opts.onLog);
23175
23626
  if (inst.code !== 0) throw new AppError(500, "AML_VENV_FAILED", `pip install \u5931\u8D25:${(inst.err || inst.out).slice(-400)}`);
23176
23627
  }
23177
- writeFileSync(marker, (/* @__PURE__ */ new Date()).toISOString());
23628
+ writeFileSync(venvMarkerPath(rt), (/* @__PURE__ */ new Date()).toISOString());
23629
+ emitLog(opts.onLog, "\u73AF\u5883\u4F9B\u7ED9\u5B8C\u6210\u3002");
23178
23630
  log$l.info("[aml-python] venv \u4F9B\u7ED9\u5B8C\u6210");
23179
23631
  return vpy;
23180
23632
  })();
23633
+ g$4.__amlVenvPromise = task;
23181
23634
  try {
23182
- return await g$4.__amlVenvPromise;
23635
+ return await task;
23183
23636
  } catch (err) {
23184
23637
  g$4.__amlVenvPromise = void 0;
23185
23638
  throw err;
23186
23639
  }
23187
23640
  }
23641
+ function emitLog(onLog, line) {
23642
+ onLog == null ? void 0 : onLog(line);
23643
+ }
23188
23644
  function jobEnv(rt, jobDir) {
23189
23645
  const platformPyDir = platformPythonDir();
23190
23646
  const pick = (k) => process.env[k] ? `${k}=${process.env[k]}` : "";
@@ -23196,6 +23652,8 @@ function jobEnv(rt, jobDir) {
23196
23652
  return {
23197
23653
  ...sysEnv,
23198
23654
  AML_JOB_DIR: jobDir,
23655
+ // 资产根暴露给训练脚本:模型/数据集实体都在 ./aml 下,脚本按相对路径读取
23656
+ AML_ROOT: rt.root,
23199
23657
  PYTHONPATH: platformPyDir,
23200
23658
  PYTHONUNBUFFERED: "1",
23201
23659
  PYTHONDONTWRITEBYTECODE: "1",
@@ -23317,6 +23775,10 @@ function registerModelFromJob(jobId, gates, metricsJson) {
23317
23775
  writeFileSync(join(modelDir, "REGISTERED"), now);
23318
23776
  }
23319
23777
  const ioSpec = buildIoSpec(dataset.path, job.purpose);
23778
+ try {
23779
+ writeFileSync(join(modelDir, "io_spec.json"), JSON.stringify(ioSpec, null, 2));
23780
+ } catch {
23781
+ }
23320
23782
  rt.repo.model.insert({
23321
23783
  id: modelId,
23322
23784
  experimentId: expId,
@@ -23939,21 +24401,12 @@ async function runtimeStatus() {
23939
24401
  const st = state$1();
23940
24402
  return {
23941
24403
  python: { ok: probe.ok, version: probe.version, reason: probe.reason },
23942
- venvReady: probe.ok ? existsSync(join(venvDirOf(rt), `.aml-ok-${requirementsHashOf()}`)) : false,
24404
+ venvReady: probe.ok ? isVenvReady(rt) : false,
24405
+ amlRoot: rt.root,
23943
24406
  queued: st.queue.length + rt.repo.job.list({ status: "queued" }).length,
23944
24407
  running: st.running.size
23945
24408
  };
23946
24409
  }
23947
- function venvDirOf(rt) {
23948
- return join(rt.root, "runtime", "venv");
23949
- }
23950
- function requirementsHashOf() {
23951
- try {
23952
- return requirementsHash();
23953
- } catch {
23954
- return "";
23955
- }
23956
- }
23957
24410
 
23958
24411
  const log$j = createLogger("aml.predict");
23959
24412
  const g$2 = globalThis;
@@ -28866,12 +29319,11 @@ class OpenCodeAgentImpl extends BaseAgentImpl {
28866
29319
  });
28867
29320
  __publicField$c(this, "config");
28868
29321
  __publicField$c(this, "agentInfo", null);
28869
- __publicField$c(this, "bridgeCtx", {
28870
- identity: { agentId: "", channelId: "", role: "worker", name: "agent" },
28871
- state: this.toolState,
28872
- getWorkspace: () => this.workspace
28873
- });
28874
- __publicField$c(this, "agentRole", "worker");
29322
+ // 注意:不要在本类重新声明 bridgeCtx / agentRole —— 它们由 BaseAgentImpl 持有。
29323
+ // 子类字段初始化器在 super() **之后**执行,会用一个空的 identity 覆盖基类已装配好的
29324
+ // bridgeCtx(class field 遮蔽),导致 host tool 桥拿到的 agentId 恒为 '' ——
29325
+ // 所有按 agentId 的鉴权(节点绑定/工业工具)都会误判为"未绑定"。
29326
+ // 同理 agentRole 被重置为 'worker',lead 身份传不到桥里。
28875
29327
  // 服务进程与 API 面
28876
29328
  __publicField$c(this, "child", null);
28877
29329
  __publicField$c(this, "baseUrl", "");
@@ -29889,12 +30341,10 @@ class CodexAgentImpl extends BaseAgentImpl {
29889
30341
  });
29890
30342
  __publicField$a(this, "config");
29891
30343
  __publicField$a(this, "agentInfo", null);
29892
- __publicField$a(this, "bridgeCtx", {
29893
- identity: { agentId: "", channelId: "", role: "worker", name: "agent" },
29894
- state: this.toolState,
29895
- getWorkspace: () => this.workspace
29896
- });
29897
- __publicField$a(this, "agentRole", "worker");
30344
+ // 不要重新声明 bridgeCtx / agentRole(由 BaseAgentImpl 持有)。
30345
+ // 子类字段初始化器在 super() 之后执行,会用空 identity 遮蔽基类已装配好的 bridgeCtx,
30346
+ // 使 host tool 桥的 agentId 恒为 '' → 按 agentId 的鉴权全部误判(节点绑定/工业工具)。
30347
+ // 同理 agentRole 会被重置为 'worker',lead 身份丢失。
29898
30348
  __publicField$a(this, "client", null);
29899
30349
  __publicField$a(this, "clientStarting", null);
29900
30350
  __publicField$a(this, "threadId", null);
@@ -30502,12 +30952,10 @@ class DshAgentImpl extends BaseAgentImpl {
30502
30952
  });
30503
30953
  __publicField$9(this, "config");
30504
30954
  __publicField$9(this, "agentInfo", null);
30505
- __publicField$9(this, "bridgeCtx", {
30506
- identity: { agentId: "", channelId: "", role: "worker", name: "agent" },
30507
- state: this.toolState,
30508
- getWorkspace: () => this.workspace
30509
- });
30510
- __publicField$9(this, "agentRole", "worker");
30955
+ // 不要重新声明 bridgeCtx / agentRole(由 BaseAgentImpl 持有)。
30956
+ // 子类字段初始化器在 super() 之后执行,会用空 identity 遮蔽基类已装配好的 bridgeCtx,
30957
+ // 使 host tool 桥的 agentId 恒为 '' → 按 agentId 的鉴权全部误判(节点绑定/工业工具)。
30958
+ // 同理 agentRole 会被重置为 'worker',lead 身份丢失。
30511
30959
  __publicField$9(this, "client", null);
30512
30960
  __publicField$9(this, "clientStarting", null);
30513
30961
  __publicField$9(this, "sessionId", null);
@@ -33965,7 +34413,7 @@ class SchedulerLoop {
33965
34413
  }
33966
34414
  /** 内置规则引擎兜底(harness 无关) */
33967
34415
  ruleEngine(snapshot) {
33968
- var _a, _b;
34416
+ var _a, _b, _c;
33969
34417
  const decisions = [];
33970
34418
  const { tasks, members, now } = snapshot;
33971
34419
  this.refreshIdle(members, now);
@@ -34058,7 +34506,11 @@ class SchedulerLoop {
34058
34506
  } else {
34059
34507
  this.notified.delete(task.id);
34060
34508
  this.lastProgress.delete(task.id);
34061
- decisions.push({ kind: "cancel", taskId: task.id });
34509
+ const didWork = task.progress > 0 || ((_c = task.artifacts) != null ? _c : []).some((a) => {
34510
+ var _a2;
34511
+ return a.name !== "input" && ((_a2 = a.parts) != null ? _a2 : []).length > 0;
34512
+ });
34513
+ decisions.push(didWork ? { kind: "complete", taskId: task.id } : { kind: "cancel", taskId: task.id });
34062
34514
  }
34063
34515
  }
34064
34516
  for (const task of tasks) {
@@ -35395,6 +35847,7 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
35395
35847
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
35396
35848
  const log$1 = createLogger("workshop.manager");
35397
35849
  function instanceToAgentInfo(m) {
35850
+ var _a;
35398
35851
  return {
35399
35852
  id: m.id,
35400
35853
  channelId: m.channelId,
@@ -35403,7 +35856,11 @@ function instanceToAgentInfo(m) {
35403
35856
  role: m.role,
35404
35857
  config: parseJson(m.configJson, {}),
35405
35858
  token: m.token,
35406
- enabled: m.enabled
35859
+ enabled: m.enabled,
35860
+ /** 来源 Agent 模板 id(手工成员为 null)。
35861
+ * 外部调用方需要它把「模板 → 已部署实例」对上 —— Agent↔节点绑定必须落到实例 id,
35862
+ * 而绑定接口只回一个实例 id;不暴露这个字段时调用方只能靠名字猜(实测踩过)。 */
35863
+ templateId: (_a = m.templateId) != null ? _a : null
35407
35864
  };
35408
35865
  }
35409
35866
  function rowToTask(row) {
@@ -35814,6 +36271,10 @@ class AgentChannelManager {
35814
36271
  const lead = this.ensureAgentRuntime(channelId, channel.leadAgentId);
35815
36272
  if (!lead) return;
35816
36273
  const loop = new SchedulerLoop(cr, lead, {
36274
+ // 停滞窗口默认取 workshop.stall_ms(默认 5 分钟,可经设置调整):
36275
+ // 它决定"多久算停滞"以及"多久之后收口",是运维最需要按现场调的一个值;
36276
+ // 以前写死在 SchedulerLoop 构造默认值里,mock/规则引擎路径上最长要 10 分钟才可见。
36277
+ ...Number.isFinite(workshopSettings().stall_ms) ? { stallMs: workshopSettings().stall_ms } : {},
35817
36278
  ...options,
35818
36279
  // 停滞看门狗活性源:agent 最近一次工具 invoke 时刻(工具调用即健康推进)
35819
36280
  toolActivityOf: (agentId) => {
@@ -37330,6 +37791,26 @@ class AgentChannelManager {
37330
37791
  }
37331
37792
  return message;
37332
37793
  }
37794
+ /**
37795
+ * 按主键查 Channel 成员实例(跨频道)。
37796
+ * 用途:校验「Agent ↔ 工业节点绑定」的主体 —— 运行时持绑定做鉴权的是**成员实例**,
37797
+ * 不是 Agent 模板;绑到模板 id 上会得到一条永远不生效的静默绑定(实测踩过)。
37798
+ */
37799
+ findChannelAgentById(channelAgentId) {
37800
+ const row = this.deps.repos.channelAgents.findById(channelAgentId);
37801
+ return row ? { id: row.id, channelId: row.channelId, templateId: row.templateId } : void 0;
37802
+ }
37803
+ /** 某 Agent 模板已部署到哪些频道(用于把"绑错主体"的报错变成可执行提示) */
37804
+ listChannelAgentInstances(templateId) {
37805
+ return this.deps.repos.channelAgents.listByTemplate(templateId).map((r) => {
37806
+ var _a, _b;
37807
+ return {
37808
+ id: r.id,
37809
+ channelId: r.channelId,
37810
+ name: (_b = (_a = this.deps.repos.channels.findById(r.channelId)) == null ? void 0 : _a.name) != null ? _b : r.channelId
37811
+ };
37812
+ });
37813
+ }
37333
37814
  /**
37334
37815
  * 实时消息(外部/系统注入):priority=immediate → busy 时 steer 注入运行中的 omp 会话。
37335
37816
  * 触发器 requireReply=true → 接收方须回执(执行结果+所需内容,in_reply_to 关联)。
@@ -37851,7 +38332,7 @@ function workshopPlugin(nitroApp) {
37851
38332
  approvalRequests: createApprovalRequestRepo(db)
37852
38333
  });
37853
38334
  const deps = { repos, implFactory: createAgentImpl, db };
37854
- configureAmlRuntime(db, dataDir);
38335
+ configureAmlRuntime(db);
37855
38336
  recoverInterruptedJobs();
37856
38337
  startAmlRetentionTimer();
37857
38338
  const manager = createAgentChannelManager(deps);
@@ -37903,1321 +38384,1307 @@ workshopPlugin
37903
38384
  ];
37904
38385
 
37905
38386
  const assets = {
37906
- "/favicon.svg": {
37907
- "type": "image/svg+xml",
37908
- "etag": "\"333-aFlSVm0gS1OwJAKmnnSly7X0FJ0\"",
37909
- "mtime": "2026-08-30T11:59:05.964Z",
37910
- "size": 819,
37911
- "path": "../public/favicon.svg"
37912
- },
37913
- "/_nuxt/-6OnbLFb.js": {
37914
- "type": "text/javascript; charset=utf-8",
37915
- "etag": "\"1343-vdAf4w0aJYo+a7mW3u5aS6nVAXY\"",
37916
- "mtime": "2026-09-11T13:02:27.870Z",
37917
- "size": 4931,
37918
- "path": "../public/_nuxt/-6OnbLFb.js"
37919
- },
37920
38387
  "/_nuxt/36oeS8_R2.js": {
37921
38388
  "type": "text/javascript; charset=utf-8",
37922
38389
  "etag": "\"d6-9W7EHt23WjRGOYCN8bz9Yy0aMhg\"",
37923
- "mtime": "2026-09-11T13:02:27.870Z",
38390
+ "mtime": "2026-09-12T03:59:43.216Z",
37924
38391
  "size": 214,
37925
38392
  "path": "../public/_nuxt/36oeS8_R2.js"
37926
38393
  },
37927
- "/_nuxt/-nb2uqVg.js": {
37928
- "type": "text/javascript; charset=utf-8",
37929
- "etag": "\"1d2b-jLwuC0KKuwuubw09IH7Tm1lfqoE\"",
37930
- "mtime": "2026-09-11T13:02:27.870Z",
37931
- "size": 7467,
37932
- "path": "../public/_nuxt/-nb2uqVg.js"
38394
+ "/favicon.svg": {
38395
+ "type": "image/svg+xml",
38396
+ "etag": "\"333-aFlSVm0gS1OwJAKmnnSly7X0FJ0\"",
38397
+ "mtime": "2026-08-30T11:59:05.964Z",
38398
+ "size": 819,
38399
+ "path": "../public/favicon.svg"
37933
38400
  },
37934
- "/_nuxt/6PZPfFcO.js": {
38401
+ "/_nuxt/45zuyAso.js": {
37935
38402
  "type": "text/javascript; charset=utf-8",
37936
- "etag": "\"469c-Fu/GyOZbOvzzzrId7NUg9WJshE8\"",
37937
- "mtime": "2026-09-11T13:02:27.870Z",
37938
- "size": 18076,
37939
- "path": "../public/_nuxt/6PZPfFcO.js"
38403
+ "etag": "\"e475-il2QNg4Ih8pW97JlDDn074j4h40\"",
38404
+ "mtime": "2026-09-12T03:59:43.216Z",
38405
+ "size": 58485,
38406
+ "path": "../public/_nuxt/45zuyAso.js"
37940
38407
  },
37941
- "/_nuxt/arUY5dyq2.js": {
38408
+ "/_nuxt/4sIEbgcl.js": {
37942
38409
  "type": "text/javascript; charset=utf-8",
37943
- "etag": "\"59f6-d7NzfWgWT2fTR2MXV0/3pKn7pms\"",
37944
- "mtime": "2026-09-11T13:02:27.897Z",
37945
- "size": 23030,
37946
- "path": "../public/_nuxt/arUY5dyq2.js"
38410
+ "etag": "\"12211-x+AgGtu1FHNowDE8TFro0dX68yU\"",
38411
+ "mtime": "2026-09-12T03:59:43.216Z",
38412
+ "size": 74257,
38413
+ "path": "../public/_nuxt/4sIEbgcl.js"
37947
38414
  },
37948
- "/_nuxt/4bHdIqEg.js": {
38415
+ "/_nuxt/ahgEJu2R.js": {
37949
38416
  "type": "text/javascript; charset=utf-8",
37950
- "etag": "\"26b8e-SPbSRGs9UJ2OPJmLu810GYYm8+s\"",
37951
- "mtime": "2026-09-11T13:02:27.870Z",
37952
- "size": 158606,
37953
- "path": "../public/_nuxt/4bHdIqEg.js"
37954
- },
37955
- "/_nuxt/aml.WU_bh87J.css": {
37956
- "type": "text/css; charset=utf-8",
37957
- "etag": "\"2ba6-KFAbaZ9MCLBfgaOBN48bAVLUIkI\"",
37958
- "mtime": "2026-09-11T13:02:27.899Z",
37959
- "size": 11174,
37960
- "path": "../public/_nuxt/aml.WU_bh87J.css"
37961
- },
37962
- "/_nuxt/B7wL3pDk.js": {
37963
- "type": "text/javascript; charset=utf-8",
37964
- "etag": "\"3d5-itnLaBVfNThToG43nVPq3jMDhq0\"",
37965
- "mtime": "2026-09-11T13:02:27.880Z",
37966
- "size": 981,
37967
- "path": "../public/_nuxt/B7wL3pDk.js"
38417
+ "etag": "\"680-U+6Xyxt5ZpTg6vsMybB7bBYMY/M\"",
38418
+ "mtime": "2026-09-12T03:59:43.238Z",
38419
+ "size": 1664,
38420
+ "path": "../public/_nuxt/ahgEJu2R.js"
37968
38421
  },
37969
38422
  "/_nuxt/agents.BV70ioCv.css": {
37970
38423
  "type": "text/css; charset=utf-8",
37971
38424
  "etag": "\"864-vWJ7ST00xR5cH47IGfSMfZZYzFk\"",
37972
- "mtime": "2026-09-11T13:02:27.899Z",
38425
+ "mtime": "2026-09-12T03:59:43.242Z",
37973
38426
  "size": 2148,
37974
38427
  "path": "../public/_nuxt/agents.BV70ioCv.css"
37975
38428
  },
37976
- "/_nuxt/B5S_UyaC.js": {
37977
- "type": "text/javascript; charset=utf-8",
37978
- "etag": "\"2435-cVXb4Ze0vEZbXwWSHOgo7NJ59ME\"",
37979
- "mtime": "2026-09-11T13:02:27.880Z",
37980
- "size": 9269,
37981
- "path": "../public/_nuxt/B5S_UyaC.js"
37982
- },
37983
- "/_nuxt/BBBtwOpo.js": {
38429
+ "/_nuxt/aLLjF2K-2.js": {
37984
38430
  "type": "text/javascript; charset=utf-8",
37985
- "etag": "\"3348-eQ058KWqHVmCOxYVHS5yTvcfcSA\"",
37986
- "mtime": "2026-09-11T13:02:27.881Z",
37987
- "size": 13128,
37988
- "path": "../public/_nuxt/BBBtwOpo.js"
38431
+ "etag": "\"53-W7A73tjZk8gL0O4HA2ZRkaTaF64\"",
38432
+ "mtime": "2026-09-12T03:59:43.237Z",
38433
+ "size": 83,
38434
+ "path": "../public/_nuxt/aLLjF2K-2.js"
37989
38435
  },
37990
- "/_nuxt/BASN8nZ0.js": {
38436
+ "/_nuxt/8NMOXZOV.js": {
37991
38437
  "type": "text/javascript; charset=utf-8",
37992
- "etag": "\"623-b/qA8sA7MNxRVKvVBaEUH75JU5M\"",
37993
- "mtime": "2026-09-11T13:02:27.881Z",
37994
- "size": 1571,
37995
- "path": "../public/_nuxt/BASN8nZ0.js"
38438
+ "etag": "\"c0a1-nxEv13/TZOSwXE1Uh5g6ynV5Bao\"",
38439
+ "mtime": "2026-09-12T03:59:43.216Z",
38440
+ "size": 49313,
38441
+ "path": "../public/_nuxt/8NMOXZOV.js"
37996
38442
  },
37997
38443
  "/_nuxt/BBrRELH32.js": {
37998
38444
  "type": "text/javascript; charset=utf-8",
37999
38445
  "etag": "\"5bc-jGs6+2LpPidhbmCHZyKfmEWQxCI\"",
38000
- "mtime": "2026-09-11T13:02:27.881Z",
38446
+ "mtime": "2026-09-12T03:59:43.217Z",
38001
38447
  "size": 1468,
38002
38448
  "path": "../public/_nuxt/BBrRELH32.js"
38003
38449
  },
38450
+ "/_nuxt/aml.COEKNNqK.css": {
38451
+ "type": "text/css; charset=utf-8",
38452
+ "etag": "\"370f-qgRKdQJo512yCFP+pajQDl5GKi0\"",
38453
+ "mtime": "2026-09-12T03:59:43.242Z",
38454
+ "size": 14095,
38455
+ "path": "../public/_nuxt/aml.COEKNNqK.css"
38456
+ },
38457
+ "/_nuxt/aWWIh8YL.js": {
38458
+ "type": "text/javascript; charset=utf-8",
38459
+ "etag": "\"10b83-nv1ZsQJBS5EehASgX2SOiI/mBpw\"",
38460
+ "mtime": "2026-09-12T03:59:43.238Z",
38461
+ "size": 68483,
38462
+ "path": "../public/_nuxt/aWWIh8YL.js"
38463
+ },
38464
+ "/_nuxt/BDmh31hl.js": {
38465
+ "type": "text/javascript; charset=utf-8",
38466
+ "etag": "\"5d4-nK1q0f/en9CHIE67KnsUTLT2CQI\"",
38467
+ "mtime": "2026-09-12T03:59:43.218Z",
38468
+ "size": 1492,
38469
+ "path": "../public/_nuxt/BDmh31hl.js"
38470
+ },
38471
+ "/_nuxt/BCGafdXT.js": {
38472
+ "type": "text/javascript; charset=utf-8",
38473
+ "etag": "\"3ff0-kMClwjRpzrLcxzcqbcd8Q/cCnJg\"",
38474
+ "mtime": "2026-09-12T03:59:43.217Z",
38475
+ "size": 16368,
38476
+ "path": "../public/_nuxt/BCGafdXT.js"
38477
+ },
38004
38478
  "/_nuxt/B7gZokg82.js": {
38005
38479
  "type": "text/javascript; charset=utf-8",
38006
38480
  "etag": "\"1d5d9-7v10FhVDuY8RpWcfSCPKziAj8s8\"",
38007
- "mtime": "2026-09-11T13:02:27.880Z",
38481
+ "mtime": "2026-09-12T03:59:43.217Z",
38008
38482
  "size": 120281,
38009
38483
  "path": "../public/_nuxt/B7gZokg82.js"
38010
38484
  },
38011
- "/_nuxt/Bc0AmjfT.js": {
38485
+ "/_nuxt/BDNMzG2s2.js": {
38012
38486
  "type": "text/javascript; charset=utf-8",
38013
- "etag": "\"34e0-7APKITyvdbxSvgbdPKa6ySfVAuI\"",
38014
- "mtime": "2026-09-11T13:02:27.885Z",
38015
- "size": 13536,
38016
- "path": "../public/_nuxt/Bc0AmjfT.js"
38487
+ "etag": "\"54-MasMfSk/A98C3Gn9uIOxtFxkWNw\"",
38488
+ "mtime": "2026-09-12T03:59:43.217Z",
38489
+ "size": 84,
38490
+ "path": "../public/_nuxt/BDNMzG2s2.js"
38017
38491
  },
38018
- "/_nuxt/BBwMH_hG.js": {
38492
+ "/_nuxt/BHA40aHa.js": {
38019
38493
  "type": "text/javascript; charset=utf-8",
38020
- "etag": "\"587d-zV1IOugR08gc0LlOGMSClQfdApQ\"",
38021
- "mtime": "2026-09-11T13:02:27.882Z",
38022
- "size": 22653,
38023
- "path": "../public/_nuxt/BBwMH_hG.js"
38494
+ "etag": "\"1dae-TNCHUupkSTNB3L7XCdP+v3qPTYQ\"",
38495
+ "mtime": "2026-09-12T03:59:43.220Z",
38496
+ "size": 7598,
38497
+ "path": "../public/_nuxt/BHA40aHa.js"
38024
38498
  },
38025
- "/_nuxt/BcrN7QEl2.js": {
38499
+ "/_nuxt/BFkgkW8u.js": {
38026
38500
  "type": "text/javascript; charset=utf-8",
38027
- "etag": "\"b14-CLdyddO7m6guAKfIeyReGHA6Jwg\"",
38028
- "mtime": "2026-09-11T13:02:27.885Z",
38029
- "size": 2836,
38030
- "path": "../public/_nuxt/BcrN7QEl2.js"
38501
+ "etag": "\"a0d1-NSV9xOdq2+TkNG3z1okARkbt/Ew\"",
38502
+ "mtime": "2026-09-12T03:59:43.219Z",
38503
+ "size": 41169,
38504
+ "path": "../public/_nuxt/BFkgkW8u.js"
38031
38505
  },
38032
- "/_nuxt/BcmbLh2z2.js": {
38506
+ "/_nuxt/BJHKLJJU.js": {
38033
38507
  "type": "text/javascript; charset=utf-8",
38034
- "etag": "\"5ae1-zOifodCJHWNEI9qfUw2kxn+QT9k\"",
38035
- "mtime": "2026-09-11T13:02:27.885Z",
38036
- "size": 23265,
38037
- "path": "../public/_nuxt/BcmbLh2z2.js"
38508
+ "etag": "\"1339-QAcPV/AbfgGywBnf88Wg49sAL0M\"",
38509
+ "mtime": "2026-09-12T03:59:43.220Z",
38510
+ "size": 4921,
38511
+ "path": "../public/_nuxt/BJHKLJJU.js"
38038
38512
  },
38039
- "/_nuxt/BDUjyaF4.js": {
38513
+ "/_nuxt/BG8sCcwx.js": {
38040
38514
  "type": "text/javascript; charset=utf-8",
38041
- "etag": "\"12149-hpS4uBcTVyjMF/ahBrfPvWSV6dM\"",
38042
- "mtime": "2026-09-11T13:02:27.882Z",
38043
- "size": 74057,
38044
- "path": "../public/_nuxt/BDUjyaF4.js"
38515
+ "etag": "\"4190d-RfweN32GXq6RZeMfyyTy4wIr35U\"",
38516
+ "mtime": "2026-09-12T03:59:43.215Z",
38517
+ "size": 268557,
38518
+ "path": "../public/_nuxt/BG8sCcwx.js"
38045
38519
  },
38046
- "/_nuxt/BfGc7TJp.js": {
38520
+ "/_nuxt/BNT8gYU92.js": {
38047
38521
  "type": "text/javascript; charset=utf-8",
38048
- "etag": "\"f5-ynAHqm+XhchZ1co7YynIGiIextg\"",
38049
- "mtime": "2026-09-11T13:02:27.885Z",
38050
- "size": 245,
38051
- "path": "../public/_nuxt/BfGc7TJp.js"
38522
+ "etag": "\"5d7c-uoVe6NWOOg3c8AvXRdXBJ9QJC2k\"",
38523
+ "mtime": "2026-09-12T03:59:43.221Z",
38524
+ "size": 23932,
38525
+ "path": "../public/_nuxt/BNT8gYU92.js"
38052
38526
  },
38053
- "/_nuxt/BeIfu4N3.js": {
38527
+ "/_nuxt/BN6iuJEg2.js": {
38054
38528
  "type": "text/javascript; charset=utf-8",
38055
- "etag": "\"bc89-neyoILuYLlrhO8n1ehz7UmvocMs\"",
38056
- "mtime": "2026-09-11T13:02:27.885Z",
38057
- "size": 48265,
38058
- "path": "../public/_nuxt/BeIfu4N3.js"
38529
+ "etag": "\"d01-vLMADOVcZ1D0Movw5mYesca16fQ\"",
38530
+ "mtime": "2026-09-12T03:59:43.220Z",
38531
+ "size": 3329,
38532
+ "path": "../public/_nuxt/BN6iuJEg2.js"
38059
38533
  },
38060
- "/_nuxt/B9nXmjSB.js": {
38534
+ "/_nuxt/BU83-NnX.js": {
38061
38535
  "type": "text/javascript; charset=utf-8",
38062
- "etag": "\"9084e-vFP7MXmHyEXKhn5m7L9MCHswQPg\"",
38063
- "mtime": "2026-09-11T13:02:27.881Z",
38064
- "size": 591950,
38065
- "path": "../public/_nuxt/B9nXmjSB.js"
38536
+ "etag": "\"1bca7-QTUYnyzS2tyJukMLZN6kXIjjcw8\"",
38537
+ "mtime": "2026-09-12T03:59:43.221Z",
38538
+ "size": 113831,
38539
+ "path": "../public/_nuxt/BU83-NnX.js"
38540
+ },
38541
+ "/_nuxt/BrIJiJSN.js": {
38542
+ "type": "text/javascript; charset=utf-8",
38543
+ "etag": "\"50eba-EQGueVrdlEzHO7oTVt2LPxnHgRo\"",
38544
+ "mtime": "2026-09-12T03:59:43.221Z",
38545
+ "size": 331450,
38546
+ "path": "../public/_nuxt/BrIJiJSN.js"
38066
38547
  },
38067
38548
  "/_nuxt/BFjGV-RV2.js": {
38068
38549
  "type": "text/javascript; charset=utf-8",
38069
38550
  "etag": "\"a0340-NzvTqyczSJgnuw9pjPQnLX42sAE\"",
38070
- "mtime": "2026-09-11T13:02:27.882Z",
38551
+ "mtime": "2026-09-12T03:59:43.219Z",
38071
38552
  "size": 656192,
38072
38553
  "path": "../public/_nuxt/BFjGV-RV2.js"
38073
38554
  },
38074
38555
  "/_nuxt/BGkumHZ32.js": {
38075
38556
  "type": "text/javascript; charset=utf-8",
38076
38557
  "etag": "\"14a0a8-FkCiOKvl5+p8em/4UNCrmbDN4qY\"",
38077
- "mtime": "2026-09-11T13:02:27.883Z",
38558
+ "mtime": "2026-09-12T03:59:43.219Z",
38078
38559
  "size": 1351848,
38079
38560
  "path": "../public/_nuxt/BGkumHZ32.js"
38080
38561
  },
38081
- "/_nuxt/BkLJA9J5.js": {
38082
- "type": "text/javascript; charset=utf-8",
38083
- "etag": "\"28d3-MQaEd967hxGnatCbff3bUnWV5K8\"",
38084
- "mtime": "2026-09-11T13:02:27.886Z",
38085
- "size": 10451,
38086
- "path": "../public/_nuxt/BkLJA9J5.js"
38087
- },
38088
- "/_nuxt/BNXfwXpE.js": {
38562
+ "/_nuxt/BYhEUx8t.js": {
38089
38563
  "type": "text/javascript; charset=utf-8",
38090
- "etag": "\"30a-SKr3Bmmq+lyC2EG7XQ/M7P1jWog\"",
38091
- "mtime": "2026-09-11T13:02:27.883Z",
38092
- "size": 778,
38093
- "path": "../public/_nuxt/BNXfwXpE.js"
38564
+ "etag": "\"4683-VUVLNcxEYcNaMSm1Cbz/wmeM604\"",
38565
+ "mtime": "2026-09-12T03:59:43.221Z",
38566
+ "size": 18051,
38567
+ "path": "../public/_nuxt/BYhEUx8t.js"
38094
38568
  },
38095
- "/_nuxt/BgTB6h_q.js": {
38569
+ "/_nuxt/C3gwHTz0.js": {
38096
38570
  "type": "text/javascript; charset=utf-8",
38097
- "etag": "\"1caca-lfjDD3kJRleNsch+Mu9vFBCUum0\"",
38098
- "mtime": "2026-09-11T13:02:27.886Z",
38099
- "size": 117450,
38100
- "path": "../public/_nuxt/BgTB6h_q.js"
38571
+ "etag": "\"c83-Qsb8eOw0ptJIE9g9mNDkYaOA4VM\"",
38572
+ "mtime": "2026-09-12T03:59:43.222Z",
38573
+ "size": 3203,
38574
+ "path": "../public/_nuxt/C3gwHTz0.js"
38101
38575
  },
38102
- "/_nuxt/Bp5luxkg2.js": {
38576
+ "/_nuxt/C3J6FYKa.js": {
38103
38577
  "type": "text/javascript; charset=utf-8",
38104
- "etag": "\"3a06-wE6nRVKQRjsGzClNYT0f+LE6/Lg\"",
38105
- "mtime": "2026-09-11T13:02:27.886Z",
38106
- "size": 14854,
38107
- "path": "../public/_nuxt/Bp5luxkg2.js"
38578
+ "etag": "\"626-QRtMC3g1WIOYAvpDGdpR8kmZ7ps\"",
38579
+ "mtime": "2026-09-12T03:59:43.222Z",
38580
+ "size": 1574,
38581
+ "path": "../public/_nuxt/C3J6FYKa.js"
38108
38582
  },
38109
- "/_nuxt/BN_PdN3J.js": {
38583
+ "/_nuxt/C4DWUZ6d2.js": {
38110
38584
  "type": "text/javascript; charset=utf-8",
38111
- "etag": "\"10b9b-D693oquQMdJ9uX8C5GEOl79xXOE\"",
38112
- "mtime": "2026-09-11T13:02:27.883Z",
38113
- "size": 68507,
38114
- "path": "../public/_nuxt/BN_PdN3J.js"
38585
+ "etag": "\"92-SI4m48ydIbJ1X/2oxc8lcVNlouc\"",
38586
+ "mtime": "2026-09-12T03:59:43.222Z",
38587
+ "size": 146,
38588
+ "path": "../public/_nuxt/C4DWUZ6d2.js"
38115
38589
  },
38116
- "/_nuxt/BSCpFtzG.js": {
38590
+ "/_nuxt/BzHEilTt.js": {
38117
38591
  "type": "text/javascript; charset=utf-8",
38118
- "etag": "\"13398-3vxX1fQrPyVWKnXsEX5bmCpF/Eg\"",
38119
- "mtime": "2026-09-11T13:02:27.884Z",
38120
- "size": 78744,
38121
- "path": "../public/_nuxt/BSCpFtzG.js"
38592
+ "etag": "\"4fa9-va7l3h5q8x+aE2yvqoL1csBP9KI\"",
38593
+ "mtime": "2026-09-12T03:59:43.222Z",
38594
+ "size": 20393,
38595
+ "path": "../public/_nuxt/BzHEilTt.js"
38122
38596
  },
38123
- "/_nuxt/BuCHayqN.js": {
38597
+ "/_nuxt/C5gUkRwn.js": {
38124
38598
  "type": "text/javascript; charset=utf-8",
38125
- "etag": "\"1993-fimQ9A15eP2RbuUsEPv6CdPni84\"",
38126
- "mtime": "2026-09-11T13:02:27.887Z",
38127
- "size": 6547,
38128
- "path": "../public/_nuxt/BuCHayqN.js"
38599
+ "etag": "\"4d54-4zd4iq14kAxdjxf8PVzJ8SMRDlU\"",
38600
+ "mtime": "2026-09-12T03:59:43.222Z",
38601
+ "size": 19796,
38602
+ "path": "../public/_nuxt/C5gUkRwn.js"
38129
38603
  },
38130
- "/_nuxt/BSSUlJnx2.js": {
38604
+ "/_nuxt/CClOy-Hz2.js": {
38131
38605
  "type": "text/javascript; charset=utf-8",
38132
- "etag": "\"5f5-t0OMayeEXY7fEaFUOlppJZZQvtM\"",
38133
- "mtime": "2026-09-11T13:02:27.884Z",
38134
- "size": 1525,
38135
- "path": "../public/_nuxt/BSSUlJnx2.js"
38606
+ "etag": "\"20d4-RN9mqBdS6ZEpvrVM2lHCRuY3nZY\"",
38607
+ "mtime": "2026-09-12T03:59:43.222Z",
38608
+ "size": 8404,
38609
+ "path": "../public/_nuxt/CClOy-Hz2.js"
38136
38610
  },
38137
- "/_nuxt/BrIJiJSN.js": {
38611
+ "/_nuxt/Cc_9VzD42.js": {
38138
38612
  "type": "text/javascript; charset=utf-8",
38139
- "etag": "\"50eba-EQGueVrdlEzHO7oTVt2LPxnHgRo\"",
38140
- "mtime": "2026-09-11T13:02:27.886Z",
38141
- "size": 331450,
38142
- "path": "../public/_nuxt/BrIJiJSN.js"
38613
+ "etag": "\"89e-avARWlfoAeMZaTQr0sXFqaRVGk4\"",
38614
+ "mtime": "2026-09-12T03:59:43.225Z",
38615
+ "size": 2206,
38616
+ "path": "../public/_nuxt/Cc_9VzD42.js"
38143
38617
  },
38144
- "/_nuxt/BZGNTgTQ2.js": {
38618
+ "/_nuxt/Cbq-mryP.js": {
38145
38619
  "type": "text/javascript; charset=utf-8",
38146
- "etag": "\"53-pfqlZiZJEbPiLoDxP0PLfz2Ucmw\"",
38147
- "mtime": "2026-09-11T13:02:27.884Z",
38148
- "size": 83,
38149
- "path": "../public/_nuxt/BZGNTgTQ2.js"
38620
+ "etag": "\"28a9-MWirBiv3ouIxepoJqTpjvo0d20Q\"",
38621
+ "mtime": "2026-09-12T03:59:43.225Z",
38622
+ "size": 10409,
38623
+ "path": "../public/_nuxt/Cbq-mryP.js"
38150
38624
  },
38151
- "/_nuxt/BuvcLKh1.js": {
38625
+ "/_nuxt/CdPzkOMV.js": {
38152
38626
  "type": "text/javascript; charset=utf-8",
38153
- "etag": "\"10d39-bh25fEPU4z899iPX6fFfY8ACYFU\"",
38154
- "mtime": "2026-09-11T13:02:27.887Z",
38155
- "size": 68921,
38156
- "path": "../public/_nuxt/BuvcLKh1.js"
38627
+ "etag": "\"623-/ooRHZ1cBLnY/mPYTYuLzxenEjw\"",
38628
+ "mtime": "2026-09-12T03:59:43.225Z",
38629
+ "size": 1571,
38630
+ "path": "../public/_nuxt/CdPzkOMV.js"
38157
38631
  },
38158
- "/_nuxt/BZv4RFYN.js": {
38632
+ "/_nuxt/Cec0Ua3F.js": {
38159
38633
  "type": "text/javascript; charset=utf-8",
38160
- "etag": "\"11c1-qeANOKi92R4/pBn9CknPlaxrFXA\"",
38161
- "mtime": "2026-09-11T13:02:27.884Z",
38162
- "size": 4545,
38163
- "path": "../public/_nuxt/BZv4RFYN.js"
38634
+ "etag": "\"1993-GdUyzzzMcfvjHxm7UFrX9akkoI0\"",
38635
+ "mtime": "2026-09-12T03:59:43.226Z",
38636
+ "size": 6547,
38637
+ "path": "../public/_nuxt/Cec0Ua3F.js"
38164
38638
  },
38165
- "/_nuxt/BWSE6hR6.js": {
38166
- "type": "text/javascript; charset=utf-8",
38167
- "etag": "\"c087-g1yKsIayBt0P5WN6ZxAy5qs1RiY\"",
38168
- "mtime": "2026-09-11T13:02:27.884Z",
38169
- "size": 49287,
38170
- "path": "../public/_nuxt/BWSE6hR6.js"
38639
+ "/_nuxt/channel-templates.C-M5nKcC.css": {
38640
+ "type": "text/css; charset=utf-8",
38641
+ "etag": "\"846-tzs5DYP5eAKLaZTF1ToNjvfm6T8\"",
38642
+ "mtime": "2026-09-12T03:59:43.242Z",
38643
+ "size": 2118,
38644
+ "path": "../public/_nuxt/channel-templates.C-M5nKcC.css"
38171
38645
  },
38172
- "/_nuxt/C-mDhyEd.js": {
38646
+ "/_nuxt/CNs_Ozdc2.js": {
38173
38647
  "type": "text/javascript; charset=utf-8",
38174
- "etag": "\"5d4-njKM5SbFu3E502L7rwfpNRMYw0c\"",
38175
- "mtime": "2026-09-11T13:02:27.887Z",
38176
- "size": 1492,
38177
- "path": "../public/_nuxt/C-mDhyEd.js"
38648
+ "etag": "\"1b-1MHUJYdBtOvbvPMaiQxDXp3lHyw\"",
38649
+ "mtime": "2026-09-12T03:59:43.223Z",
38650
+ "size": 27,
38651
+ "path": "../public/_nuxt/CNs_Ozdc2.js"
38178
38652
  },
38179
- "/_nuxt/C3tCneTM.js": {
38653
+ "/_nuxt/CM12FuB42.js": {
38180
38654
  "type": "text/javascript; charset=utf-8",
38181
- "etag": "\"56ab-/6Cr6erEwmZtrhutqEU3O5P+s0A\"",
38182
- "mtime": "2026-09-11T13:02:27.887Z",
38183
- "size": 22187,
38184
- "path": "../public/_nuxt/C3tCneTM.js"
38655
+ "etag": "\"18b-zv5adDS5UoLhJMpSccvf5MniJLA\"",
38656
+ "mtime": "2026-09-12T03:59:43.223Z",
38657
+ "size": 395,
38658
+ "path": "../public/_nuxt/CM12FuB42.js"
38185
38659
  },
38186
- "/_nuxt/C4OAdbVK2.js": {
38660
+ "/_nuxt/CojCTLKD.js": {
38187
38661
  "type": "text/javascript; charset=utf-8",
38188
- "etag": "\"89e-AQFf/aV6YnDPM3edZWc1ASPluno\"",
38189
- "mtime": "2026-09-11T13:02:27.888Z",
38190
- "size": 2206,
38191
- "path": "../public/_nuxt/C4OAdbVK2.js"
38662
+ "etag": "\"11c5-6b4j7sZqh+T5P+aLRZ6XhkyJGyo\"",
38663
+ "mtime": "2026-09-12T03:59:43.227Z",
38664
+ "size": 4549,
38665
+ "path": "../public/_nuxt/CojCTLKD.js"
38192
38666
  },
38193
- "/_nuxt/C9f8QMp12.js": {
38667
+ "/_nuxt/CoNpEq5X.js": {
38194
38668
  "type": "text/javascript; charset=utf-8",
38195
- "etag": "\"1896-VcRRXhZEm21djPt3FTvlq+iUccI\"",
38196
- "mtime": "2026-09-11T13:02:27.888Z",
38197
- "size": 6294,
38198
- "path": "../public/_nuxt/C9f8QMp12.js"
38669
+ "etag": "\"2f1-FZU8z3/vTyhXK2ZmBtITplcBXmY\"",
38670
+ "mtime": "2026-09-12T03:59:43.226Z",
38671
+ "size": 753,
38672
+ "path": "../public/_nuxt/CoNpEq5X.js"
38199
38673
  },
38200
- "/_nuxt/CbzsPO5H.js": {
38674
+ "/_nuxt/Crod5z2f.js": {
38201
38675
  "type": "text/javascript; charset=utf-8",
38202
- "etag": "\"4faa-iHCfQHTkIFacZfkKJ7cK5xg2CH4\"",
38203
- "mtime": "2026-09-11T13:02:27.890Z",
38204
- "size": 20394,
38205
- "path": "../public/_nuxt/CbzsPO5H.js"
38676
+ "etag": "\"3d5-mS8/hK4dwayfb1YZWtzMVEWPF6g\"",
38677
+ "mtime": "2026-09-12T03:59:43.227Z",
38678
+ "size": 981,
38679
+ "path": "../public/_nuxt/Crod5z2f.js"
38206
38680
  },
38207
- "/_nuxt/C77oC8yC2.js": {
38681
+ "/_nuxt/CSkxz2NX.js": {
38208
38682
  "type": "text/javascript; charset=utf-8",
38209
- "etag": "\"1fe0-jrc/2TM/ugXrG5/wGhO+1RqpL/c\"",
38210
- "mtime": "2026-09-11T13:02:27.888Z",
38211
- "size": 8160,
38212
- "path": "../public/_nuxt/C77oC8yC2.js"
38683
+ "etag": "\"1334d-Ivbd7+iw6XuJ8M1ljfz5AEuDZrs\"",
38684
+ "mtime": "2026-09-12T03:59:43.223Z",
38685
+ "size": 78669,
38686
+ "path": "../public/_nuxt/CSkxz2NX.js"
38213
38687
  },
38214
- "/_nuxt/CdSOrh2c.js": {
38688
+ "/_nuxt/CWKEp1wx2.js": {
38215
38689
  "type": "text/javascript; charset=utf-8",
38216
- "etag": "\"4d23-IVQZm+9xTR9dCzd0Jzm7drmlleQ\"",
38217
- "mtime": "2026-09-11T13:02:27.890Z",
38218
- "size": 19747,
38219
- "path": "../public/_nuxt/CdSOrh2c.js"
38690
+ "etag": "\"555-ED/tuOi0Qdk4aSGksbI58QY+vQ8\"",
38691
+ "mtime": "2026-09-12T03:59:43.223Z",
38692
+ "size": 1365,
38693
+ "path": "../public/_nuxt/CWKEp1wx2.js"
38220
38694
  },
38221
- "/_nuxt/Cgx818r-.js": {
38695
+ "/_nuxt/CWoJjWmZ.js": {
38222
38696
  "type": "text/javascript; charset=utf-8",
38223
- "etag": "\"3d8b-XQZ5oPQBXIXwiWAKaw52HXTCnfM\"",
38224
- "mtime": "2026-09-11T13:02:27.890Z",
38225
- "size": 15755,
38226
- "path": "../public/_nuxt/Cgx818r-.js"
38227
- },
38228
- "/_nuxt/channel-templates.C-M5nKcC.css": {
38229
- "type": "text/css; charset=utf-8",
38230
- "etag": "\"846-tzs5DYP5eAKLaZTF1ToNjvfm6T8\"",
38231
- "mtime": "2026-09-11T13:02:27.899Z",
38232
- "size": 2118,
38233
- "path": "../public/_nuxt/channel-templates.C-M5nKcC.css"
38697
+ "etag": "\"42-7Ccac6Eptzx/VGBNDzFAvw0P6lU\"",
38698
+ "mtime": "2026-09-12T03:59:43.223Z",
38699
+ "size": 66,
38700
+ "path": "../public/_nuxt/CWoJjWmZ.js"
38234
38701
  },
38235
- "/_nuxt/Cjm7VogC.js": {
38702
+ "/_nuxt/CZiw7sEV.js": {
38236
38703
  "type": "text/javascript; charset=utf-8",
38237
- "etag": "\"2136-k43Vk0bwBsy88uOpb0ftVj0pdhI\"",
38238
- "mtime": "2026-09-11T13:02:27.890Z",
38239
- "size": 8502,
38240
- "path": "../public/_nuxt/Cjm7VogC.js"
38704
+ "etag": "\"2d3b-ltYRPZ6fvOybrmOvkmkMnVB1IhA\"",
38705
+ "mtime": "2026-09-12T03:59:43.224Z",
38706
+ "size": 11579,
38707
+ "path": "../public/_nuxt/CZiw7sEV.js"
38241
38708
  },
38242
- "/_nuxt/CKfhtOt7.js": {
38709
+ "/_nuxt/CY9LbPCI.js": {
38243
38710
  "type": "text/javascript; charset=utf-8",
38244
- "etag": "\"9141-NLArDp1lZISfBmTeNNW/SqVqPrc\"",
38245
- "mtime": "2026-09-11T13:02:27.888Z",
38246
- "size": 37185,
38247
- "path": "../public/_nuxt/CKfhtOt7.js"
38711
+ "etag": "\"3dab-L0ihOqle9YGGkDIZ1n27qT21mAo\"",
38712
+ "mtime": "2026-09-12T03:59:43.224Z",
38713
+ "size": 15787,
38714
+ "path": "../public/_nuxt/CY9LbPCI.js"
38248
38715
  },
38249
- "/_nuxt/Cm5mDxzH.js": {
38716
+ "/_nuxt/CYWVXZTS.js": {
38250
38717
  "type": "text/javascript; charset=utf-8",
38251
- "etag": "\"13a0-pJimmU3QmHusvl3UTWPQL7TTnJY\"",
38252
- "mtime": "2026-09-11T13:02:27.891Z",
38253
- "size": 5024,
38254
- "path": "../public/_nuxt/Cm5mDxzH.js"
38718
+ "etag": "\"1fdf-2SN2fQIRzi888CZqLLWMShlF9mc\"",
38719
+ "mtime": "2026-09-12T03:59:43.224Z",
38720
+ "size": 8159,
38721
+ "path": "../public/_nuxt/CYWVXZTS.js"
38255
38722
  },
38256
- "/_nuxt/Cno6kYiO2.js": {
38723
+ "/_nuxt/CzlMDL5H.js": {
38257
38724
  "type": "text/javascript; charset=utf-8",
38258
- "etag": "\"f2-SIBAvqBfq2ENmoMT2zz03X9uJTg\"",
38259
- "mtime": "2026-09-11T13:02:27.891Z",
38260
- "size": 242,
38261
- "path": "../public/_nuxt/Cno6kYiO2.js"
38725
+ "etag": "\"9125-dP1WUSElrGrzZB2/J46sGS1t4MM\"",
38726
+ "mtime": "2026-09-12T03:59:43.227Z",
38727
+ "size": 37157,
38728
+ "path": "../public/_nuxt/CzlMDL5H.js"
38262
38729
  },
38263
- "/_nuxt/CmHzfVc5.js": {
38730
+ "/_nuxt/C_OLzD09.js": {
38264
38731
  "type": "text/javascript; charset=utf-8",
38265
- "etag": "\"7ec3-tUpCnS/mT7jwFKjKxxLd9XTbgFU\"",
38266
- "mtime": "2026-09-11T13:02:27.891Z",
38267
- "size": 32451,
38268
- "path": "../public/_nuxt/CmHzfVc5.js"
38732
+ "etag": "\"210b-10X0chnaT8E+32rHtx6ZB643xnQ\"",
38733
+ "mtime": "2026-09-12T03:59:43.225Z",
38734
+ "size": 8459,
38735
+ "path": "../public/_nuxt/C_OLzD09.js"
38269
38736
  },
38270
- "/_nuxt/Cn3J3NXR.js": {
38737
+ "/_nuxt/D0ZBQrN_2.js": {
38271
38738
  "type": "text/javascript; charset=utf-8",
38272
- "etag": "\"a6ef-rxc5AWy7cZY4nez30ZVJeXrMlc4\"",
38273
- "mtime": "2026-09-11T13:02:27.891Z",
38274
- "size": 42735,
38275
- "path": "../public/_nuxt/Cn3J3NXR.js"
38739
+ "etag": "\"462-0ouITDqojxoQrlHfAjgz9yuwtnk\"",
38740
+ "mtime": "2026-09-12T03:59:43.227Z",
38741
+ "size": 1122,
38742
+ "path": "../public/_nuxt/D0ZBQrN_2.js"
38276
38743
  },
38277
- "/_nuxt/CNs_Ozdc2.js": {
38744
+ "/_nuxt/C__m4EhR.js": {
38278
38745
  "type": "text/javascript; charset=utf-8",
38279
- "etag": "\"1b-1MHUJYdBtOvbvPMaiQxDXp3lHyw\"",
38280
- "mtime": "2026-09-11T13:02:27.888Z",
38281
- "size": 27,
38282
- "path": "../public/_nuxt/CNs_Ozdc2.js"
38746
+ "etag": "\"496d-b/ZPXL6opL07ctddnDSvbWv3crU\"",
38747
+ "mtime": "2026-09-12T03:59:43.225Z",
38748
+ "size": 18797,
38749
+ "path": "../public/_nuxt/C__m4EhR.js"
38283
38750
  },
38284
- "/_nuxt/Cp6z0RN7.js": {
38751
+ "/_nuxt/D6uzXueg.js": {
38285
38752
  "type": "text/javascript; charset=utf-8",
38286
- "etag": "\"2d59-Ffu3oT6YF362zP5H8NMBdVE8ywE\"",
38287
- "mtime": "2026-09-11T13:02:27.892Z",
38288
- "size": 11609,
38289
- "path": "../public/_nuxt/Cp6z0RN7.js"
38753
+ "etag": "\"3f2d-Qvezt1XBT/ai/Ii96P6PEqxX730\"",
38754
+ "mtime": "2026-09-12T03:59:43.228Z",
38755
+ "size": 16173,
38756
+ "path": "../public/_nuxt/D6uzXueg.js"
38290
38757
  },
38291
- "/_nuxt/CQvmN-Mi.js": {
38758
+ "/_nuxt/D9Oidm5I.js": {
38292
38759
  "type": "text/javascript; charset=utf-8",
38293
- "etag": "\"25a7-4TY1NAMk4ozmnusisb7TYpoAnz0\"",
38294
- "mtime": "2026-09-11T13:02:27.889Z",
38295
- "size": 9639,
38296
- "path": "../public/_nuxt/CQvmN-Mi.js"
38760
+ "etag": "\"29d-vUjiOrV6RvvMjy8bqbIIKVpv2qg\"",
38761
+ "mtime": "2026-09-12T03:59:43.228Z",
38762
+ "size": 669,
38763
+ "path": "../public/_nuxt/D9Oidm5I.js"
38297
38764
  },
38298
- "/_nuxt/Ct-WOVr4.js": {
38765
+ "/_nuxt/D1YDxZpZ.js": {
38299
38766
  "type": "text/javascript; charset=utf-8",
38300
- "etag": "\"626-K2orno3teepJe9id2hVir0LyA/U\"",
38301
- "mtime": "2026-09-11T13:02:27.892Z",
38302
- "size": 1574,
38303
- "path": "../public/_nuxt/Ct-WOVr4.js"
38767
+ "etag": "\"373d-vQBJMgqXZqjiLL5JDkPtggsr7/A\"",
38768
+ "mtime": "2026-09-12T03:59:43.227Z",
38769
+ "size": 14141,
38770
+ "path": "../public/_nuxt/D1YDxZpZ.js"
38304
38771
  },
38305
- "/_nuxt/CUDrOuW7.js": {
38772
+ "/_nuxt/DAe0h2MB.js": {
38306
38773
  "type": "text/javascript; charset=utf-8",
38307
- "etag": "\"24a7-HgYZ2dzhJGptonSe5tyATIi16h8\"",
38308
- "mtime": "2026-09-11T13:02:27.889Z",
38309
- "size": 9383,
38310
- "path": "../public/_nuxt/CUDrOuW7.js"
38774
+ "etag": "\"472d-sNSO3lgXFkiAXskOa0EXqG2y91Y\"",
38775
+ "mtime": "2026-09-12T03:59:43.229Z",
38776
+ "size": 18221,
38777
+ "path": "../public/_nuxt/DAe0h2MB.js"
38311
38778
  },
38312
- "/_nuxt/CUXCQXjG.js": {
38779
+ "/_nuxt/D20Yamr4.js": {
38313
38780
  "type": "text/javascript; charset=utf-8",
38314
- "etag": "\"18b-4es6+sDUaYZ89sbvxGRBaXHox64\"",
38315
- "mtime": "2026-09-11T13:02:27.889Z",
38316
- "size": 395,
38317
- "path": "../public/_nuxt/CUXCQXjG.js"
38781
+ "etag": "\"34e0-kHxgtavu/TqtFkh5WIroNe+fqeA\"",
38782
+ "mtime": "2026-09-12T03:59:43.228Z",
38783
+ "size": 13536,
38784
+ "path": "../public/_nuxt/D20Yamr4.js"
38318
38785
  },
38319
- "/_nuxt/CWKEp1wx2.js": {
38320
- "type": "text/javascript; charset=utf-8",
38321
- "etag": "\"555-ED/tuOi0Qdk4aSGksbI58QY+vQ8\"",
38322
- "mtime": "2026-09-11T13:02:27.889Z",
38323
- "size": 1365,
38324
- "path": "../public/_nuxt/CWKEp1wx2.js"
38786
+ "/_nuxt/dcw.DLYZqEhT.css": {
38787
+ "type": "text/css; charset=utf-8",
38788
+ "etag": "\"226e-H/BNammWITMmwjVcDe3temawvWY\"",
38789
+ "mtime": "2026-09-12T03:59:43.242Z",
38790
+ "size": 8814,
38791
+ "path": "../public/_nuxt/dcw.DLYZqEhT.css"
38325
38792
  },
38326
- "/_nuxt/CZcC-gpk.js": {
38327
- "type": "text/javascript; charset=utf-8",
38328
- "etag": "\"665-LBR4N1TO8YjwC5eGVloYG3Mi+6s\"",
38329
- "mtime": "2026-09-11T13:02:27.889Z",
38330
- "size": 1637,
38331
- "path": "../public/_nuxt/CZcC-gpk.js"
38793
+ "/_nuxt/daq.B3265ZDn.css": {
38794
+ "type": "text/css; charset=utf-8",
38795
+ "etag": "\"5716-d66zshbHGr48GGRyBvY2sfoJdQ0\"",
38796
+ "mtime": "2026-09-12T03:59:43.242Z",
38797
+ "size": 22294,
38798
+ "path": "../public/_nuxt/daq.B3265ZDn.css"
38332
38799
  },
38333
- "/_nuxt/CwqIxJGj.js": {
38800
+ "/_nuxt/DBHNsT1Y.js": {
38334
38801
  "type": "text/javascript; charset=utf-8",
38335
- "etag": "\"7945-E3BzeXrQwh3/2vvo6cNmHiKdCR0\"",
38336
- "mtime": "2026-09-11T13:02:27.892Z",
38337
- "size": 31045,
38338
- "path": "../public/_nuxt/CwqIxJGj.js"
38802
+ "etag": "\"a6ea-PNGgN6dJ9yAlkTn986443/cv5Bg\"",
38803
+ "mtime": "2026-09-12T03:59:43.229Z",
38804
+ "size": 42730,
38805
+ "path": "../public/_nuxt/DBHNsT1Y.js"
38339
38806
  },
38340
- "/_nuxt/D-Ca4BGY.js": {
38807
+ "/_nuxt/DdD9mCHM.js": {
38341
38808
  "type": "text/javascript; charset=utf-8",
38342
- "etag": "\"d322-Ji+xNrf2m+xWgNVNTGDuV7nAR7w\"",
38343
- "mtime": "2026-09-11T13:02:27.892Z",
38344
- "size": 54050,
38345
- "path": "../public/_nuxt/D-Ca4BGY.js"
38809
+ "etag": "\"367e-omWo6yki7BAYCZUeWqjXVB4D12g\"",
38810
+ "mtime": "2026-09-12T03:59:43.232Z",
38811
+ "size": 13950,
38812
+ "path": "../public/_nuxt/DdD9mCHM.js"
38346
38813
  },
38347
- "/_nuxt/D1z7i2UP.js": {
38814
+ "/_nuxt/DDgJcSET.js": {
38348
38815
  "type": "text/javascript; charset=utf-8",
38349
- "etag": "\"3488-96j3CtrX45ueUXO7o7l3+3rcKWk\"",
38350
- "mtime": "2026-09-11T13:02:27.892Z",
38351
- "size": 13448,
38352
- "path": "../public/_nuxt/D1z7i2UP.js"
38816
+ "etag": "\"10d2d-J5i2Bh5KGpWiMbirWVsqUXnECEM\"",
38817
+ "mtime": "2026-09-12T03:59:43.230Z",
38818
+ "size": 68909,
38819
+ "path": "../public/_nuxt/DDgJcSET.js"
38353
38820
  },
38354
- "/_nuxt/DaMCzQhv.js": {
38821
+ "/_nuxt/DDShH71m.js": {
38355
38822
  "type": "text/javascript; charset=utf-8",
38356
- "etag": "\"20a6-HojFmGuhMgGaSuNKpUe6ww1mc2c\"",
38357
- "mtime": "2026-09-11T13:02:27.894Z",
38358
- "size": 8358,
38359
- "path": "../public/_nuxt/DaMCzQhv.js"
38823
+ "etag": "\"208b-0HsRaWwHxTBF3c2qeOvAD47ZMqc\"",
38824
+ "mtime": "2026-09-12T03:59:43.229Z",
38825
+ "size": 8331,
38826
+ "path": "../public/_nuxt/DDShH71m.js"
38360
38827
  },
38361
- "/_nuxt/D0fhp-Ga.js": {
38828
+ "/_nuxt/DeyBFhKH2.js": {
38362
38829
  "type": "text/javascript; charset=utf-8",
38363
- "etag": "\"28a2e-fOJar5XXcm6BPJ0B5LUbSoZ5f7I\"",
38364
- "mtime": "2026-09-11T13:02:27.892Z",
38365
- "size": 166446,
38366
- "path": "../public/_nuxt/D0fhp-Ga.js"
38830
+ "etag": "\"de0-Yj9kKk3gjPDsLBddu+/SWVIcWAs\"",
38831
+ "mtime": "2026-09-12T03:59:43.233Z",
38832
+ "size": 3552,
38833
+ "path": "../public/_nuxt/DeyBFhKH2.js"
38367
38834
  },
38368
- "/_nuxt/D8CqF0yy.js": {
38835
+ "/_nuxt/DeJykBFf.js": {
38369
38836
  "type": "text/javascript; charset=utf-8",
38370
- "etag": "\"1dae-DlKVVV+fkbaFtolHiRzBO1Gjw4s\"",
38371
- "mtime": "2026-09-11T13:02:27.893Z",
38372
- "size": 7598,
38373
- "path": "../public/_nuxt/D8CqF0yy.js"
38374
- },
38375
- "/_nuxt/daq.Bb6l44-O.css": {
38376
- "type": "text/css; charset=utf-8",
38377
- "etag": "\"566b-xIfGRXMPjOr3Vjd3F9p2MkDmMgE\"",
38378
- "mtime": "2026-09-11T13:02:27.899Z",
38379
- "size": 22123,
38380
- "path": "../public/_nuxt/daq.Bb6l44-O.css"
38381
- },
38382
- "/_nuxt/dcw.rXH2fc2Z.css": {
38383
- "type": "text/css; charset=utf-8",
38384
- "etag": "\"21ff-eCEj1LjsZGqaWA3e7HmSw6eii6c\"",
38385
- "mtime": "2026-09-11T13:02:27.900Z",
38386
- "size": 8703,
38387
- "path": "../public/_nuxt/dcw.rXH2fc2Z.css"
38837
+ "etag": "\"334a-u9bmdQK8w/dApegtnDfx3UMudy0\"",
38838
+ "mtime": "2026-09-12T03:59:43.232Z",
38839
+ "size": 13130,
38840
+ "path": "../public/_nuxt/DeJykBFf.js"
38388
38841
  },
38389
38842
  "/_nuxt/DeYsUzhr.js": {
38390
38843
  "type": "text/javascript; charset=utf-8",
38391
38844
  "etag": "\"287-ALaKQkZWM37K7ru31bg511e8ikI\"",
38392
- "mtime": "2026-09-11T13:02:27.894Z",
38845
+ "mtime": "2026-09-12T03:59:43.233Z",
38393
38846
  "size": 647,
38394
38847
  "path": "../public/_nuxt/DeYsUzhr.js"
38395
38848
  },
38396
- "/_nuxt/default.jNT73_hq.css": {
38849
+ "/_nuxt/default.DE_vT238.css": {
38397
38850
  "type": "text/css; charset=utf-8",
38398
- "etag": "\"331a-6TD0bVL9oBl7zJbTtH5EEbyOPMc\"",
38399
- "mtime": "2026-09-11T13:02:27.900Z",
38400
- "size": 13082,
38401
- "path": "../public/_nuxt/default.jNT73_hq.css"
38851
+ "etag": "\"3383-KOL7cduQcGPwgDzvdpujb8cbadk\"",
38852
+ "mtime": "2026-09-12T03:59:43.243Z",
38853
+ "size": 13187,
38854
+ "path": "../public/_nuxt/default.DE_vT238.css"
38402
38855
  },
38403
- "/_nuxt/DIaTPH1M.js": {
38856
+ "/_nuxt/DIaZ2PTo2.js": {
38404
38857
  "type": "text/javascript; charset=utf-8",
38405
- "etag": "\"4714-V+kh9wViUtPwdxd+aFTZmN0tkYg\"",
38406
- "mtime": "2026-09-11T13:02:27.893Z",
38407
- "size": 18196,
38408
- "path": "../public/_nuxt/DIaTPH1M.js"
38409
- },
38410
- "/_nuxt/DLljr7g0.js": {
38411
- "type": "text/javascript; charset=utf-8",
38412
- "etag": "\"e476-VQA4IJLzQzu/XZWihB2Sdw3aL+M\"",
38413
- "mtime": "2026-09-11T13:02:27.893Z",
38414
- "size": 58486,
38415
- "path": "../public/_nuxt/DLljr7g0.js"
38858
+ "etag": "\"b14-0G25NjaOjPL8pUTCqFfHo9IuyOU\"",
38859
+ "mtime": "2026-09-12T03:59:43.230Z",
38860
+ "size": 2836,
38861
+ "path": "../public/_nuxt/DIaZ2PTo2.js"
38416
38862
  },
38417
38863
  "/_nuxt/DIOBYJe3.js": {
38418
38864
  "type": "text/javascript; charset=utf-8",
38419
38865
  "etag": "\"4b5-DdWaiyBS+/JejqhLG4Q7/JprP2Q\"",
38420
- "mtime": "2026-09-11T13:02:27.893Z",
38866
+ "mtime": "2026-09-12T03:59:43.230Z",
38421
38867
  "size": 1205,
38422
38868
  "path": "../public/_nuxt/DIOBYJe3.js"
38423
38869
  },
38424
- "/_nuxt/DoLasgPj2.js": {
38870
+ "/_nuxt/DkGQ7lnb2.js": {
38425
38871
  "type": "text/javascript; charset=utf-8",
38426
- "etag": "\"20cf-AD2OXvXYmQR29f4gV1ADJLRnCEA\"",
38427
- "mtime": "2026-09-11T13:02:27.894Z",
38428
- "size": 8399,
38429
- "path": "../public/_nuxt/DoLasgPj2.js"
38872
+ "etag": "\"10e-BEf1fw3Luoou0jWXn/VjweK3eFg\"",
38873
+ "mtime": "2026-09-12T03:59:43.234Z",
38874
+ "size": 270,
38875
+ "path": "../public/_nuxt/DkGQ7lnb2.js"
38430
38876
  },
38431
- "/_nuxt/DpojD719.js": {
38877
+ "/_nuxt/DHFrCUxA2.js": {
38432
38878
  "type": "text/javascript; charset=utf-8",
38433
- "etag": "\"29d-Fu+XH+dfF6wIVeD5drBDJvCFiPE\"",
38434
- "mtime": "2026-09-11T13:02:27.895Z",
38435
- "size": 669,
38436
- "path": "../public/_nuxt/DpojD719.js"
38879
+ "etag": "\"6a25-yH+Kt/gXrDj++gPlxRCMxjita4o\"",
38880
+ "mtime": "2026-09-12T03:59:43.230Z",
38881
+ "size": 27173,
38882
+ "path": "../public/_nuxt/DHFrCUxA2.js"
38437
38883
  },
38438
- "/_nuxt/DoTdlVVe2.js": {
38884
+ "/_nuxt/DnUuIR83.js": {
38439
38885
  "type": "text/javascript; charset=utf-8",
38440
- "etag": "\"d01-26/uhfF7fV7RMTXxvtsI8byutLw\"",
38441
- "mtime": "2026-09-11T13:02:27.894Z",
38442
- "size": 3329,
38443
- "path": "../public/_nuxt/DoTdlVVe2.js"
38886
+ "etag": "\"25e9-8nbC9HSsBhQz/JBDCkuVLAvVelM\"",
38887
+ "mtime": "2026-09-12T03:59:43.234Z",
38888
+ "size": 9705,
38889
+ "path": "../public/_nuxt/DnUuIR83.js"
38444
38890
  },
38445
- "/_nuxt/DoMxCWN52.js": {
38891
+ "/_nuxt/DmqknNvV.js": {
38446
38892
  "type": "text/javascript; charset=utf-8",
38447
- "etag": "\"de0-GL8srJkfz017TYpBE3cZJpSs9GM\"",
38448
- "mtime": "2026-09-11T13:02:27.894Z",
38449
- "size": 3552,
38450
- "path": "../public/_nuxt/DoMxCWN52.js"
38893
+ "etag": "\"26be4-2hzvX3cIxgA2eSHJiw0fjKz7dsY\"",
38894
+ "mtime": "2026-09-12T03:59:43.234Z",
38895
+ "size": 158692,
38896
+ "path": "../public/_nuxt/DmqknNvV.js"
38451
38897
  },
38452
- "/_nuxt/DsVcWfyR.js": {
38898
+ "/_nuxt/DPnwL14Y.js": {
38453
38899
  "type": "text/javascript; charset=utf-8",
38454
- "etag": "\"c9e-yZ3JcodwmRc/Ei+FK82PuQ/5agI\"",
38455
- "mtime": "2026-09-11T13:02:27.895Z",
38456
- "size": 3230,
38457
- "path": "../public/_nuxt/DsVcWfyR.js"
38900
+ "etag": "\"1d26-XSq9sA2ArdeEv8EAehmtwVgJuzE\"",
38901
+ "mtime": "2026-09-12T03:59:43.231Z",
38902
+ "size": 7462,
38903
+ "path": "../public/_nuxt/DPnwL14Y.js"
38458
38904
  },
38459
- "/_nuxt/DtBu71ev.js": {
38905
+ "/_nuxt/DR12_WCA.js": {
38460
38906
  "type": "text/javascript; charset=utf-8",
38461
- "etag": "\"156bf-YTCvoAR5ZNk1ZGVhmY/Bceo/GjQ\"",
38462
- "mtime": "2026-09-11T13:02:27.895Z",
38463
- "size": 87743,
38464
- "path": "../public/_nuxt/DtBu71ev.js"
38907
+ "etag": "\"7e8c-cnN52Tex5ueiXHiBbehql11WL2w\"",
38908
+ "mtime": "2026-09-12T03:59:43.231Z",
38909
+ "size": 32396,
38910
+ "path": "../public/_nuxt/DR12_WCA.js"
38465
38911
  },
38466
- "/_nuxt/DTYBfjRY.js": {
38912
+ "/_nuxt/DrYV5i68.js": {
38467
38913
  "type": "text/javascript; charset=utf-8",
38468
- "etag": "\"1a89-9gPrj/bgllCi+f9Gl6ze+k5zkcw\"",
38469
- "mtime": "2026-09-11T13:02:27.893Z",
38470
- "size": 6793,
38471
- "path": "../public/_nuxt/DTYBfjRY.js"
38914
+ "etag": "\"247c-c3SMdj/FgJdc1JQtOVxTE/w+KWc\"",
38915
+ "mtime": "2026-09-12T03:59:43.235Z",
38916
+ "size": 9340,
38917
+ "path": "../public/_nuxt/DrYV5i68.js"
38472
38918
  },
38473
- "/_nuxt/DXRZPxGs.js": {
38919
+ "/_nuxt/DVsjtsvZ2.js": {
38474
38920
  "type": "text/javascript; charset=utf-8",
38475
- "etag": "\"42-LgXLXdo9BGzBlyxqolWDOt/Ezyg\"",
38476
- "mtime": "2026-09-11T13:02:27.893Z",
38477
- "size": 66,
38478
- "path": "../public/_nuxt/DXRZPxGs.js"
38921
+ "etag": "\"5ad7-SJw11mAwm8ecvvMfEtiG2ti53z8\"",
38922
+ "mtime": "2026-09-12T03:59:43.231Z",
38923
+ "size": 23255,
38924
+ "path": "../public/_nuxt/DVsjtsvZ2.js"
38479
38925
  },
38480
- "/_nuxt/Dy-mxvXY2.js": {
38926
+ "/_nuxt/DtYHUi5Z.js": {
38481
38927
  "type": "text/javascript; charset=utf-8",
38482
- "etag": "\"92-oLgwL98kjyuEcvL717na1ap9Tks\"",
38483
- "mtime": "2026-09-11T13:02:27.895Z",
38484
- "size": 146,
38485
- "path": "../public/_nuxt/Dy-mxvXY2.js"
38928
+ "etag": "\"2435-K8RPT3nu03HotXRj2dJy+ny1j2A\"",
38929
+ "mtime": "2026-09-12T03:59:43.235Z",
38930
+ "size": 9269,
38931
+ "path": "../public/_nuxt/DtYHUi5Z.js"
38486
38932
  },
38487
- "/_nuxt/DYKVPzN-.js": {
38933
+ "/_nuxt/DZtm4l-P2.js": {
38488
38934
  "type": "text/javascript; charset=utf-8",
38489
- "etag": "\"2f1-2SqdcwA9pq7Hk89eLtL9kizQDVw\"",
38490
- "mtime": "2026-09-11T13:02:27.894Z",
38491
- "size": 753,
38492
- "path": "../public/_nuxt/DYKVPzN-.js"
38935
+ "etag": "\"1876-xVj/E45RroZBjWvEiBrZZOcvgoI\"",
38936
+ "mtime": "2026-09-12T03:59:43.232Z",
38937
+ "size": 6262,
38938
+ "path": "../public/_nuxt/DZtm4l-P2.js"
38493
38939
  },
38494
- "/_nuxt/DZzGarBE2.js": {
38940
+ "/_nuxt/DzbFpZRk.js": {
38495
38941
  "type": "text/javascript; charset=utf-8",
38496
- "etag": "\"6a1e-ugf89JrIJQnC30eHwV4G/TERkwI\"",
38497
- "mtime": "2026-09-11T13:02:27.894Z",
38498
- "size": 27166,
38499
- "path": "../public/_nuxt/DZzGarBE2.js"
38942
+ "etag": "\"12d7-yzX3bY+yjWI2Ir8cswaDbLtltvQ\"",
38943
+ "mtime": "2026-09-12T03:59:43.235Z",
38944
+ "size": 4823,
38945
+ "path": "../public/_nuxt/DzbFpZRk.js"
38500
38946
  },
38501
- "/_nuxt/DzuC31-i.js": {
38947
+ "/_nuxt/Dz_Q3Lpw2.js": {
38502
38948
  "type": "text/javascript; charset=utf-8",
38503
- "etag": "\"3fee-uHvx7EEJFuaMuP4BvDnqgIafaNw\"",
38504
- "mtime": "2026-09-11T13:02:27.895Z",
38505
- "size": 16366,
38506
- "path": "../public/_nuxt/DzuC31-i.js"
38949
+ "etag": "\"39d2-I7HGf3BtAL6slz4WB2XKvH99HmQ\"",
38950
+ "mtime": "2026-09-12T03:59:43.235Z",
38951
+ "size": 14802,
38952
+ "path": "../public/_nuxt/Dz_Q3Lpw2.js"
38507
38953
  },
38508
38954
  "/_nuxt/eb-garamond-cyrillic-400-italic.BZInx2ys.woff": {
38509
38955
  "type": "font/woff",
38510
38956
  "etag": "\"3f04-1MKyFKXvChwQTK9MnbAM3SwAP/w\"",
38511
- "mtime": "2026-09-11T13:02:27.900Z",
38957
+ "mtime": "2026-09-12T03:59:43.243Z",
38512
38958
  "size": 16132,
38513
38959
  "path": "../public/_nuxt/eb-garamond-cyrillic-400-italic.BZInx2ys.woff"
38514
38960
  },
38515
- "/_nuxt/eb-garamond-cyrillic-400-italic.BGIwiowF.woff2": {
38516
- "type": "font/woff2",
38517
- "etag": "\"3504-t17DeaJZ5CiTr/7PdWXcRgN9/Yc\"",
38518
- "mtime": "2026-09-11T13:02:27.900Z",
38519
- "size": 13572,
38520
- "path": "../public/_nuxt/eb-garamond-cyrillic-400-italic.BGIwiowF.woff2"
38521
- },
38522
38961
  "/_nuxt/eb-garamond-cyrillic-400-normal.C0kVTdou.woff": {
38523
38962
  "type": "font/woff",
38524
38963
  "etag": "\"3c88-Q5XoFKe1rGp1UkdvSR6MtPcFfgQ\"",
38525
- "mtime": "2026-09-11T13:02:27.901Z",
38964
+ "mtime": "2026-09-12T03:59:43.243Z",
38526
38965
  "size": 15496,
38527
38966
  "path": "../public/_nuxt/eb-garamond-cyrillic-400-normal.C0kVTdou.woff"
38528
38967
  },
38968
+ "/_nuxt/eb-garamond-cyrillic-400-italic.BGIwiowF.woff2": {
38969
+ "type": "font/woff2",
38970
+ "etag": "\"3504-t17DeaJZ5CiTr/7PdWXcRgN9/Yc\"",
38971
+ "mtime": "2026-09-12T03:59:43.243Z",
38972
+ "size": 13572,
38973
+ "path": "../public/_nuxt/eb-garamond-cyrillic-400-italic.BGIwiowF.woff2"
38974
+ },
38529
38975
  "/_nuxt/eb-garamond-cyrillic-400-normal.DDLP67lu.woff2": {
38530
38976
  "type": "font/woff2",
38531
38977
  "etag": "\"33d4-lVrdxXudnaWAAL0JfU6b+yZGpK0\"",
38532
- "mtime": "2026-09-11T13:02:27.901Z",
38978
+ "mtime": "2026-09-12T03:59:43.244Z",
38533
38979
  "size": 13268,
38534
38980
  "path": "../public/_nuxt/eb-garamond-cyrillic-400-normal.DDLP67lu.woff2"
38535
38981
  },
38536
- "/_nuxt/eb-garamond-cyrillic-ext-400-italic.CYS3phfl.woff": {
38537
- "type": "font/woff",
38538
- "etag": "\"5698-6bgErOYTElI0Z3Untp+h0Xi0FGs\"",
38539
- "mtime": "2026-09-11T13:02:27.901Z",
38540
- "size": 22168,
38541
- "path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-italic.CYS3phfl.woff"
38542
- },
38543
38982
  "/_nuxt/eb-garamond-cyrillic-ext-400-italic.Bz1w3xqM.woff2": {
38544
38983
  "type": "font/woff2",
38545
38984
  "etag": "\"4620-AEmSjSDDFDLAiok0BdjqqFs2mx4\"",
38546
- "mtime": "2026-09-11T13:02:27.901Z",
38985
+ "mtime": "2026-09-12T03:59:43.244Z",
38547
38986
  "size": 17952,
38548
38987
  "path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-italic.Bz1w3xqM.woff2"
38549
38988
  },
38989
+ "/_nuxt/eb-garamond-cyrillic-ext-400-italic.CYS3phfl.woff": {
38990
+ "type": "font/woff",
38991
+ "etag": "\"5698-6bgErOYTElI0Z3Untp+h0Xi0FGs\"",
38992
+ "mtime": "2026-09-12T03:59:43.244Z",
38993
+ "size": 22168,
38994
+ "path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-italic.CYS3phfl.woff"
38995
+ },
38550
38996
  "/_nuxt/eb-garamond-cyrillic-ext-400-normal.DG8lny6_.woff": {
38551
38997
  "type": "font/woff",
38552
38998
  "etag": "\"4fcc-Wt58DNvJEH8PhhsEwR/fAuZLZf0\"",
38553
- "mtime": "2026-09-11T13:02:27.901Z",
38999
+ "mtime": "2026-09-12T03:59:43.245Z",
38554
39000
  "size": 20428,
38555
39001
  "path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-normal.DG8lny6_.woff"
38556
39002
  },
38557
39003
  "/_nuxt/eb-garamond-cyrillic-ext-400-normal.o8fRvAFQ.woff2": {
38558
39004
  "type": "font/woff2",
38559
39005
  "etag": "\"419c-BgVrkDzxBAskhVuAe8ZPKrVJ2vk\"",
38560
- "mtime": "2026-09-11T13:02:27.901Z",
39006
+ "mtime": "2026-09-12T03:59:43.245Z",
38561
39007
  "size": 16796,
38562
39008
  "path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-normal.o8fRvAFQ.woff2"
38563
39009
  },
38564
39010
  "/_nuxt/eb-garamond-greek-400-italic.BamGE6QP.woff": {
38565
39011
  "type": "font/woff",
38566
39012
  "etag": "\"307c-Fmorq8T0Tyl1FByuAGfnIMJMsU0\"",
38567
- "mtime": "2026-09-11T13:02:27.902Z",
39013
+ "mtime": "2026-09-12T03:59:43.245Z",
38568
39014
  "size": 12412,
38569
39015
  "path": "../public/_nuxt/eb-garamond-greek-400-italic.BamGE6QP.woff"
38570
39016
  },
38571
39017
  "/_nuxt/eb-garamond-greek-400-italic.Dqr5KC66.woff2": {
38572
39018
  "type": "font/woff2",
38573
39019
  "etag": "\"2904-BXAeLh8O+jrT8ujKrV7WtU2zP1c\"",
38574
- "mtime": "2026-09-11T13:02:27.902Z",
39020
+ "mtime": "2026-09-12T03:59:43.245Z",
38575
39021
  "size": 10500,
38576
39022
  "path": "../public/_nuxt/eb-garamond-greek-400-italic.Dqr5KC66.woff2"
38577
39023
  },
38578
- "/_nuxt/eb-garamond-greek-400-normal.CVAbzS9p.woff2": {
38579
- "type": "font/woff2",
38580
- "etag": "\"2a00-ZNzj8SIiN3t2N23u++WhC6jE8gk\"",
38581
- "mtime": "2026-09-11T13:02:27.902Z",
38582
- "size": 10752,
38583
- "path": "../public/_nuxt/eb-garamond-greek-400-normal.CVAbzS9p.woff2"
38584
- },
38585
39024
  "/_nuxt/eb-garamond-greek-400-normal.d4JlP2QH.woff": {
38586
39025
  "type": "font/woff",
38587
39026
  "etag": "\"3108-ggShwQ6kE+MAR7EEQafdmWunxHg\"",
38588
- "mtime": "2026-09-11T13:02:27.902Z",
39027
+ "mtime": "2026-09-12T03:59:43.246Z",
38589
39028
  "size": 12552,
38590
39029
  "path": "../public/_nuxt/eb-garamond-greek-400-normal.d4JlP2QH.woff"
38591
39030
  },
39031
+ "/_nuxt/eb-garamond-greek-400-normal.CVAbzS9p.woff2": {
39032
+ "type": "font/woff2",
39033
+ "etag": "\"2a00-ZNzj8SIiN3t2N23u++WhC6jE8gk\"",
39034
+ "mtime": "2026-09-12T03:59:43.245Z",
39035
+ "size": 10752,
39036
+ "path": "../public/_nuxt/eb-garamond-greek-400-normal.CVAbzS9p.woff2"
39037
+ },
38592
39038
  "/_nuxt/eb-garamond-greek-ext-400-italic.BL1XYHtS.woff": {
38593
39039
  "type": "font/woff",
38594
39040
  "etag": "\"2304-q8ppn7qePqLys53UrEKMrGT8e6E\"",
38595
- "mtime": "2026-09-11T13:02:27.902Z",
39041
+ "mtime": "2026-09-12T03:59:43.246Z",
38596
39042
  "size": 8964,
38597
39043
  "path": "../public/_nuxt/eb-garamond-greek-ext-400-italic.BL1XYHtS.woff"
38598
39044
  },
39045
+ "/_nuxt/eb-garamond-greek-ext-400-normal.BaZl8BIK.woff": {
39046
+ "type": "font/woff",
39047
+ "etag": "\"20b0-FNV/ZgjupejIrGOsz4+8EYVUXHo\"",
39048
+ "mtime": "2026-09-12T03:59:43.247Z",
39049
+ "size": 8368,
39050
+ "path": "../public/_nuxt/eb-garamond-greek-ext-400-normal.BaZl8BIK.woff"
39051
+ },
39052
+ "/_nuxt/DYr1VMiQ.js": {
39053
+ "type": "text/javascript; charset=utf-8",
39054
+ "etag": "\"14128-u+iLJm1OCFSZy6SZdZC9SpDNZKM\"",
39055
+ "mtime": "2026-09-12T03:59:43.232Z",
39056
+ "size": 82216,
39057
+ "path": "../public/_nuxt/DYr1VMiQ.js"
39058
+ },
38599
39059
  "/_nuxt/eb-garamond-greek-ext-400-italic.CHZOQEtG.woff2": {
38600
39060
  "type": "font/woff2",
38601
39061
  "etag": "\"19d0-ppOK6AfNTXYuDEeeEMQQhOypGW8\"",
38602
- "mtime": "2026-09-11T13:02:27.903Z",
39062
+ "mtime": "2026-09-12T03:59:43.246Z",
38603
39063
  "size": 6608,
38604
39064
  "path": "../public/_nuxt/eb-garamond-greek-ext-400-italic.CHZOQEtG.woff2"
38605
39065
  },
38606
- "/_nuxt/eb-garamond-greek-ext-400-normal.BaZl8BIK.woff": {
38607
- "type": "font/woff",
38608
- "etag": "\"20b0-FNV/ZgjupejIrGOsz4+8EYVUXHo\"",
38609
- "mtime": "2026-09-11T13:02:27.903Z",
38610
- "size": 8368,
38611
- "path": "../public/_nuxt/eb-garamond-greek-ext-400-normal.BaZl8BIK.woff"
39066
+ "/_nuxt/DUrecWPx.js": {
39067
+ "type": "text/javascript; charset=utf-8",
39068
+ "etag": "\"9095e-l1Y5uaqwCSwzDmMZvMC0IgZ+OHM\"",
39069
+ "mtime": "2026-09-12T03:59:43.231Z",
39070
+ "size": 592222,
39071
+ "path": "../public/_nuxt/DUrecWPx.js"
38612
39072
  },
38613
39073
  "/_nuxt/eb-garamond-greek-ext-400-normal.K8pwR3tn.woff2": {
38614
39074
  "type": "font/woff2",
38615
39075
  "etag": "\"1940-Y3hsqG2RXMGI9hHTiI+Nv2Q4msM\"",
38616
- "mtime": "2026-09-11T13:02:27.903Z",
39076
+ "mtime": "2026-09-12T03:59:43.247Z",
38617
39077
  "size": 6464,
38618
39078
  "path": "../public/_nuxt/eb-garamond-greek-ext-400-normal.K8pwR3tn.woff2"
38619
39079
  },
38620
39080
  "/_nuxt/eb-garamond-latin-400-italic.CDFyLPXJ.woff": {
38621
39081
  "type": "font/woff",
38622
39082
  "etag": "\"7890-VX8YYh09367bg28IWSUybEXrsDQ\"",
38623
- "mtime": "2026-09-11T13:02:27.903Z",
39083
+ "mtime": "2026-09-12T03:59:43.247Z",
38624
39084
  "size": 30864,
38625
39085
  "path": "../public/_nuxt/eb-garamond-latin-400-italic.CDFyLPXJ.woff"
38626
39086
  },
38627
- "/_nuxt/eb-garamond-latin-400-normal.maQnHeKB.woff": {
38628
- "type": "font/woff",
38629
- "etag": "\"6fc0-tKFcVMt7ocp7dmWyG6/kxtP5mKY\"",
38630
- "mtime": "2026-09-11T13:02:27.904Z",
38631
- "size": 28608,
38632
- "path": "../public/_nuxt/eb-garamond-latin-400-normal.maQnHeKB.woff"
38633
- },
38634
39087
  "/_nuxt/eb-garamond-latin-400-italic.DSEbMgZu.woff2": {
38635
39088
  "type": "font/woff2",
38636
39089
  "etag": "\"632c-iB8RNlBCm9D0APLcMJ/hIPATx+0\"",
38637
- "mtime": "2026-09-11T13:02:27.903Z",
39090
+ "mtime": "2026-09-12T03:59:43.247Z",
38638
39091
  "size": 25388,
38639
39092
  "path": "../public/_nuxt/eb-garamond-latin-400-italic.DSEbMgZu.woff2"
38640
39093
  },
38641
39094
  "/_nuxt/eb-garamond-latin-400-normal.BCNrxLz_.woff2": {
38642
39095
  "type": "font/woff2",
38643
39096
  "etag": "\"5d0c-w7FmIa34l5RBoJYmvp9lwadEvW4\"",
38644
- "mtime": "2026-09-11T13:02:27.903Z",
39097
+ "mtime": "2026-09-12T03:59:43.247Z",
38645
39098
  "size": 23820,
38646
39099
  "path": "../public/_nuxt/eb-garamond-latin-400-normal.BCNrxLz_.woff2"
38647
39100
  },
39101
+ "/_nuxt/eb-garamond-latin-400-normal.maQnHeKB.woff": {
39102
+ "type": "font/woff",
39103
+ "etag": "\"6fc0-tKFcVMt7ocp7dmWyG6/kxtP5mKY\"",
39104
+ "mtime": "2026-09-12T03:59:43.248Z",
39105
+ "size": 28608,
39106
+ "path": "../public/_nuxt/eb-garamond-latin-400-normal.maQnHeKB.woff"
39107
+ },
38648
39108
  "/_nuxt/eb-garamond-latin-ext-400-italic.DUSsnRSD.woff": {
38649
39109
  "type": "font/woff",
38650
39110
  "etag": "\"f5b8-o98RIl4uKzIPJHZZpEI+mI17K3c\"",
38651
- "mtime": "2026-09-11T13:02:27.904Z",
39111
+ "mtime": "2026-09-12T03:59:43.248Z",
38652
39112
  "size": 62904,
38653
39113
  "path": "../public/_nuxt/eb-garamond-latin-ext-400-italic.DUSsnRSD.woff"
38654
39114
  },
38655
39115
  "/_nuxt/eb-garamond-latin-ext-400-italic.V7s3nWfX.woff2": {
38656
39116
  "type": "font/woff2",
38657
39117
  "etag": "\"b19c-7qms9anmdJJsBixQTHSocgV31Qk\"",
38658
- "mtime": "2026-09-11T13:02:27.904Z",
39118
+ "mtime": "2026-09-12T03:59:43.248Z",
38659
39119
  "size": 45468,
38660
39120
  "path": "../public/_nuxt/eb-garamond-latin-ext-400-italic.V7s3nWfX.woff2"
38661
39121
  },
38662
39122
  "/_nuxt/eb-garamond-latin-ext-400-normal.B4EmgUmt.woff": {
38663
39123
  "type": "font/woff",
38664
39124
  "etag": "\"12b44-jg/K3aZca4XOngCAf1Jh47/0cj8\"",
38665
- "mtime": "2026-09-11T13:02:27.904Z",
39125
+ "mtime": "2026-09-12T03:59:43.248Z",
38666
39126
  "size": 76612,
38667
39127
  "path": "../public/_nuxt/eb-garamond-latin-ext-400-normal.B4EmgUmt.woff"
38668
39128
  },
38669
39129
  "/_nuxt/eb-garamond-vietnamese-400-italic.DQ8HKnks.woff2": {
38670
39130
  "type": "font/woff2",
38671
39131
  "etag": "\"187c-Wj36AOh9OjwDZT5W3eeao1D/NT4\"",
38672
- "mtime": "2026-09-11T13:02:27.904Z",
39132
+ "mtime": "2026-09-12T03:59:43.249Z",
38673
39133
  "size": 6268,
38674
39134
  "path": "../public/_nuxt/eb-garamond-vietnamese-400-italic.DQ8HKnks.woff2"
38675
39135
  },
38676
39136
  "/_nuxt/eb-garamond-latin-ext-400-normal.o4A__6QZ.woff2": {
38677
39137
  "type": "font/woff2",
38678
39138
  "etag": "\"de84-qKZ/sgxlZLRv1TmEnWR30Cc4wfw\"",
38679
- "mtime": "2026-09-11T13:02:27.904Z",
39139
+ "mtime": "2026-09-12T03:59:43.249Z",
38680
39140
  "size": 56964,
38681
39141
  "path": "../public/_nuxt/eb-garamond-latin-ext-400-normal.o4A__6QZ.woff2"
38682
39142
  },
38683
39143
  "/_nuxt/eb-garamond-vietnamese-400-italic.ORtyMVfw.woff": {
38684
39144
  "type": "font/woff",
38685
39145
  "etag": "\"1edc-XUugZ4qMSSF4m+TQLER2LLza1t0\"",
38686
- "mtime": "2026-09-11T13:02:27.904Z",
39146
+ "mtime": "2026-09-12T03:59:43.250Z",
38687
39147
  "size": 7900,
38688
39148
  "path": "../public/_nuxt/eb-garamond-vietnamese-400-italic.ORtyMVfw.woff"
38689
39149
  },
38690
39150
  "/_nuxt/eb-garamond-vietnamese-400-normal.CLvJdMEL.woff2": {
38691
39151
  "type": "font/woff2",
38692
39152
  "etag": "\"183c-arAHcc3MmJQ6+OtYVThlERUqDQQ\"",
38693
- "mtime": "2026-09-11T13:02:27.904Z",
39153
+ "mtime": "2026-09-12T03:59:43.250Z",
38694
39154
  "size": 6204,
38695
39155
  "path": "../public/_nuxt/eb-garamond-vietnamese-400-normal.CLvJdMEL.woff2"
38696
39156
  },
39157
+ "/_nuxt/entry.BB-Eeh-J.css": {
39158
+ "type": "text/css; charset=utf-8",
39159
+ "etag": "\"22c96-XxnjyI/eCOm4bHchDmRm07nGUdw\"",
39160
+ "mtime": "2026-09-12T03:59:43.250Z",
39161
+ "size": 142486,
39162
+ "path": "../public/_nuxt/entry.BB-Eeh-J.css"
39163
+ },
38697
39164
  "/_nuxt/eb-garamond-vietnamese-400-normal.ifvNSiWx.woff": {
38698
39165
  "type": "font/woff",
38699
39166
  "etag": "\"1e50-PGVIQbsmhTvI1h5aIhavpIQl8z4\"",
38700
- "mtime": "2026-09-11T13:02:27.904Z",
39167
+ "mtime": "2026-09-12T03:59:43.250Z",
38701
39168
  "size": 7760,
38702
39169
  "path": "../public/_nuxt/eb-garamond-vietnamese-400-normal.ifvNSiWx.woff"
38703
39170
  },
38704
- "/_nuxt/ekuGmQ7R.js": {
38705
- "type": "text/javascript; charset=utf-8",
38706
- "etag": "\"5f2-QOjCRpxYZho41W5eoXY4CpvV16I\"",
38707
- "mtime": "2026-09-11T13:02:27.897Z",
38708
- "size": 1522,
38709
- "path": "../public/_nuxt/ekuGmQ7R.js"
38710
- },
38711
- "/_nuxt/FQri3dV3.js": {
38712
- "type": "text/javascript; charset=utf-8",
38713
- "etag": "\"9d28-A1mhFeEq6JXP9WiU/lzgX6qqGnM\"",
38714
- "mtime": "2026-09-11T13:02:27.895Z",
38715
- "size": 40232,
38716
- "path": "../public/_nuxt/FQri3dV3.js"
38717
- },
38718
39171
  "/_nuxt/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2": {
38719
39172
  "type": "font/woff2",
38720
39173
  "etag": "\"1cfc-yYSDXNlt/tTRaj6rJo8ZMqvY7pQ\"",
38721
- "mtime": "2026-09-11T13:02:27.906Z",
39174
+ "mtime": "2026-09-12T03:59:43.250Z",
38722
39175
  "size": 7420,
38723
39176
  "path": "../public/_nuxt/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2"
38724
39177
  },
38725
- "/_nuxt/G0qIw7Gq2.js": {
38726
- "type": "text/javascript; charset=utf-8",
38727
- "etag": "\"462-s/N+VoJiDplj3GORHgaIwAR+Uqk\"",
38728
- "mtime": "2026-09-11T13:02:27.896Z",
38729
- "size": 1122,
38730
- "path": "../public/_nuxt/G0qIw7Gq2.js"
38731
- },
38732
- "/_nuxt/entry.jFrFAWuA.css": {
38733
- "type": "text/css; charset=utf-8",
38734
- "etag": "\"2149f-XybaaWT8IIh+ycY/8Br++oA4uGU\"",
38735
- "mtime": "2026-09-11T13:02:27.905Z",
38736
- "size": 136351,
38737
- "path": "../public/_nuxt/entry.jFrFAWuA.css"
38738
- },
38739
39178
  "/_nuxt/geist-cyrillic-wght-normal.BEAKL7Jp.woff2": {
38740
39179
  "type": "font/woff2",
38741
39180
  "etag": "\"3aec-5kpQSZEtAzzU5kdiuro3Zr2YR54\"",
38742
- "mtime": "2026-09-11T13:02:27.906Z",
39181
+ "mtime": "2026-09-12T03:59:43.251Z",
38743
39182
  "size": 15084,
38744
39183
  "path": "../public/_nuxt/geist-cyrillic-wght-normal.BEAKL7Jp.woff2"
38745
39184
  },
38746
39185
  "/_nuxt/geist-latin-ext-wght-normal.DC-KSUi6.woff2": {
38747
39186
  "type": "font/woff2",
38748
39187
  "etag": "\"4080-mZu3Z7sOWqglha+kefNbUA9Pp+Q\"",
38749
- "mtime": "2026-09-11T13:02:27.906Z",
39188
+ "mtime": "2026-09-12T03:59:43.251Z",
38750
39189
  "size": 16512,
38751
39190
  "path": "../public/_nuxt/geist-latin-ext-wght-normal.DC-KSUi6.woff2"
38752
39191
  },
39192
+ "/_nuxt/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2": {
39193
+ "type": "font/woff2",
39194
+ "etag": "\"1820-nQACIwCsmkduQK2CSMidMhmLR9U\"",
39195
+ "mtime": "2026-09-12T03:59:43.251Z",
39196
+ "size": 6176,
39197
+ "path": "../public/_nuxt/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2"
39198
+ },
38753
39199
  "/_nuxt/geist-latin-wght-normal.BgDaEnEv.woff2": {
38754
39200
  "type": "font/woff2",
38755
39201
  "etag": "\"72d8-9J+D7/6th5UzRxIgoFX9awJv47A\"",
38756
- "mtime": "2026-09-11T13:02:27.907Z",
39202
+ "mtime": "2026-09-12T03:59:43.251Z",
38757
39203
  "size": 29400,
38758
39204
  "path": "../public/_nuxt/geist-latin-wght-normal.BgDaEnEv.woff2"
38759
39205
  },
38760
39206
  "/_nuxt/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2": {
38761
39207
  "type": "font/woff2",
38762
39208
  "etag": "\"328c-3kQUs7xjzfvJdLvI58iU6DHlynA\"",
38763
- "mtime": "2026-09-11T13:02:27.907Z",
39209
+ "mtime": "2026-09-12T03:59:43.252Z",
38764
39210
  "size": 12940,
38765
39211
  "path": "../public/_nuxt/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2"
38766
39212
  },
38767
- "/_nuxt/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2": {
38768
- "type": "font/woff2",
38769
- "etag": "\"1820-nQACIwCsmkduQK2CSMidMhmLR9U\"",
38770
- "mtime": "2026-09-11T13:02:27.907Z",
38771
- "size": 6176,
38772
- "path": "../public/_nuxt/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2"
38773
- },
38774
39213
  "/_nuxt/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2": {
38775
39214
  "type": "font/woff2",
38776
39215
  "etag": "\"3968-BV9ZbqWHVAcipAKX5y8la3JkUQs\"",
38777
- "mtime": "2026-09-11T13:02:27.907Z",
39216
+ "mtime": "2026-09-12T03:59:43.252Z",
38778
39217
  "size": 14696,
38779
39218
  "path": "../public/_nuxt/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2"
38780
39219
  },
38781
39220
  "/_nuxt/geist-mono-latin-wght-normal.XN7g48iV.woff2": {
38782
39221
  "type": "font/woff2",
38783
39222
  "etag": "\"5a58-jDy+14PX7OhwqFZsiKzuRax9xZ8\"",
38784
- "mtime": "2026-09-11T13:02:27.908Z",
39223
+ "mtime": "2026-09-12T03:59:43.252Z",
38785
39224
  "size": 23128,
38786
39225
  "path": "../public/_nuxt/geist-mono-latin-wght-normal.XN7g48iV.woff2"
38787
39226
  },
38788
39227
  "/_nuxt/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2": {
38789
39228
  "type": "font/woff2",
38790
39229
  "etag": "\"16b4-aZoLOGWoEYW7gmwZamfz5kTfFco\"",
38791
- "mtime": "2026-09-11T13:02:27.908Z",
39230
+ "mtime": "2026-09-12T03:59:43.252Z",
38792
39231
  "size": 5812,
38793
39232
  "path": "../public/_nuxt/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2"
38794
39233
  },
38795
39234
  "/_nuxt/geist-mono-vietnamese-wght-normal.DadHysG0.woff2": {
38796
39235
  "type": "font/woff2",
38797
39236
  "etag": "\"1e10-mpU2OlFk4DakDO4paRfgJ2LHDsM\"",
38798
- "mtime": "2026-09-11T13:02:27.908Z",
39237
+ "mtime": "2026-09-12T03:59:43.253Z",
38799
39238
  "size": 7696,
38800
39239
  "path": "../public/_nuxt/geist-mono-vietnamese-wght-normal.DadHysG0.woff2"
38801
39240
  },
38802
39241
  "/_nuxt/geist-vietnamese-wght-normal.6IgcOCM7.woff2": {
38803
39242
  "type": "font/woff2",
38804
39243
  "etag": "\"1f44-6MZ7/PEEOeDVF0eHI650KpwKQV8\"",
38805
- "mtime": "2026-09-11T13:02:27.908Z",
39244
+ "mtime": "2026-09-12T03:59:43.253Z",
38806
39245
  "size": 8004,
38807
39246
  "path": "../public/_nuxt/geist-vietnamese-wght-normal.6IgcOCM7.woff2"
38808
39247
  },
39248
+ "/_nuxt/HBLJ-wei.js": {
39249
+ "type": "text/javascript; charset=utf-8",
39250
+ "etag": "\"13a1-fzEUxRt3em5vbto3D3QQ5+jkREo\"",
39251
+ "mtime": "2026-09-12T03:59:43.235Z",
39252
+ "size": 5025,
39253
+ "path": "../public/_nuxt/HBLJ-wei.js"
39254
+ },
38809
39255
  "/_nuxt/HclGiUj8.js": {
38810
39256
  "type": "text/javascript; charset=utf-8",
38811
39257
  "etag": "\"4bb-OjUbx7m0dPDFUkNfZ4BuUs+1sHI\"",
38812
- "mtime": "2026-09-11T13:02:27.896Z",
39258
+ "mtime": "2026-09-12T03:59:43.236Z",
38813
39259
  "size": 1211,
38814
39260
  "path": "../public/_nuxt/HclGiUj8.js"
38815
39261
  },
39262
+ "/_nuxt/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2": {
39263
+ "type": "font/woff2",
39264
+ "etag": "\"20a4-mDbzFbXDuciYuRDdYbcJkcocaWU\"",
39265
+ "mtime": "2026-09-12T03:59:43.253Z",
39266
+ "size": 8356,
39267
+ "path": "../public/_nuxt/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2"
39268
+ },
38816
39269
  "/_nuxt/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff": {
38817
39270
  "type": "font/woff",
38818
39271
  "etag": "\"1c24-wpeoT2YBcqJ4hbipsoiB1m58w98\"",
38819
- "mtime": "2026-09-11T13:02:27.909Z",
39272
+ "mtime": "2026-09-12T03:59:43.253Z",
38820
39273
  "size": 7204,
38821
39274
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff"
38822
39275
  },
38823
39276
  "/_nuxt/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff": {
38824
39277
  "type": "font/woff",
38825
39278
  "etag": "\"1c28-50yap58S0sLYRB2B8AEk2dq82kg\"",
38826
- "mtime": "2026-09-11T13:02:27.909Z",
39279
+ "mtime": "2026-09-12T03:59:43.253Z",
38827
39280
  "size": 7208,
38828
39281
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff"
38829
39282
  },
38830
- "/_nuxt/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2": {
38831
- "type": "font/woff2",
38832
- "etag": "\"20a4-mDbzFbXDuciYuRDdYbcJkcocaWU\"",
38833
- "mtime": "2026-09-11T13:02:27.909Z",
38834
- "size": 8356,
38835
- "path": "../public/_nuxt/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2"
38836
- },
38837
39283
  "/_nuxt/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2": {
38838
39284
  "type": "font/woff2",
38839
39285
  "etag": "\"210c-yqAnW+098RkHUvQzwj27Jo9sIUc\"",
38840
- "mtime": "2026-09-11T13:02:27.909Z",
39286
+ "mtime": "2026-09-12T03:59:43.254Z",
38841
39287
  "size": 8460,
38842
39288
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2"
38843
39289
  },
38844
- "/_nuxt/ibm-plex-mono-cyrillic-600-normal.fLZuRloM.woff": {
38845
- "type": "font/woff",
38846
- "etag": "\"1c64-t3eBraFEv1B6D+DIfK23+8/F2mA\"",
38847
- "mtime": "2026-09-11T13:02:27.909Z",
38848
- "size": 7268,
38849
- "path": "../public/_nuxt/ibm-plex-mono-cyrillic-600-normal.fLZuRloM.woff"
38850
- },
38851
39290
  "/_nuxt/ibm-plex-mono-cyrillic-600-normal.CTOM6hUh.woff2": {
38852
39291
  "type": "font/woff2",
38853
39292
  "etag": "\"2488-WHfw+ZaOHy8HhYaV0AzfKZ8dozA\"",
38854
- "mtime": "2026-09-11T13:02:27.909Z",
39293
+ "mtime": "2026-09-12T03:59:43.254Z",
38855
39294
  "size": 9352,
38856
39295
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-600-normal.CTOM6hUh.woff2"
38857
39296
  },
38858
- "/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff": {
39297
+ "/_nuxt/ibm-plex-mono-cyrillic-600-normal.fLZuRloM.woff": {
38859
39298
  "type": "font/woff",
38860
- "etag": "\"16bc-GBHBT1lClOFRLkxzjkkoZV1QN+Y\"",
38861
- "mtime": "2026-09-11T13:02:27.909Z",
38862
- "size": 5820,
38863
- "path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff"
39299
+ "etag": "\"1c64-t3eBraFEv1B6D+DIfK23+8/F2mA\"",
39300
+ "mtime": "2026-09-12T03:59:43.254Z",
39301
+ "size": 7268,
39302
+ "path": "../public/_nuxt/ibm-plex-mono-cyrillic-600-normal.fLZuRloM.woff"
38864
39303
  },
38865
39304
  "/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2": {
38866
39305
  "type": "font/woff2",
38867
39306
  "etag": "\"1b00-w57wcK5m30ZZ4sBwsaWzlcI3F7c\"",
38868
- "mtime": "2026-09-11T13:02:27.910Z",
39307
+ "mtime": "2026-09-12T03:59:43.255Z",
38869
39308
  "size": 6912,
38870
39309
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2"
38871
39310
  },
38872
- "/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff": {
39311
+ "/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff": {
38873
39312
  "type": "font/woff",
38874
- "etag": "\"168c-gvDCX7ATl9g9LbPEKlQjJSXhRPw\"",
38875
- "mtime": "2026-09-11T13:02:27.910Z",
38876
- "size": 5772,
38877
- "path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff"
39313
+ "etag": "\"16bc-GBHBT1lClOFRLkxzjkkoZV1QN+Y\"",
39314
+ "mtime": "2026-09-12T03:59:43.254Z",
39315
+ "size": 5820,
39316
+ "path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff"
38878
39317
  },
38879
39318
  "/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2": {
38880
39319
  "type": "font/woff2",
38881
39320
  "etag": "\"1b3c-pFin0Xk9XlGLhqdo1+npFJkyQ5Y\"",
38882
- "mtime": "2026-09-11T13:02:27.910Z",
39321
+ "mtime": "2026-09-12T03:59:43.255Z",
38883
39322
  "size": 6972,
38884
39323
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2"
38885
39324
  },
38886
39325
  "/_nuxt/ibm-plex-mono-cyrillic-ext-600-normal.9HEixskS.woff": {
38887
39326
  "type": "font/woff",
38888
39327
  "etag": "\"16a0-8RgtlGopOkBt2P4jKMMd7hk+D74\"",
38889
- "mtime": "2026-09-11T13:02:27.910Z",
39328
+ "mtime": "2026-09-12T03:59:43.255Z",
38890
39329
  "size": 5792,
38891
39330
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-600-normal.9HEixskS.woff"
38892
39331
  },
39332
+ "/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff": {
39333
+ "type": "font/woff",
39334
+ "etag": "\"168c-gvDCX7ATl9g9LbPEKlQjJSXhRPw\"",
39335
+ "mtime": "2026-09-12T03:59:43.255Z",
39336
+ "size": 5772,
39337
+ "path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff"
39338
+ },
38893
39339
  "/_nuxt/ibm-plex-mono-cyrillic-ext-600-normal.V-xxqcpd.woff2": {
38894
39340
  "type": "font/woff2",
38895
39341
  "etag": "\"1e0c-R9/TBUX2qLWGlHeC55LoggyLdII\"",
38896
- "mtime": "2026-09-11T13:02:27.910Z",
39342
+ "mtime": "2026-09-12T03:59:43.256Z",
38897
39343
  "size": 7692,
38898
39344
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-600-normal.V-xxqcpd.woff2"
38899
39345
  },
38900
39346
  "/_nuxt/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff": {
38901
39347
  "type": "font/woff",
38902
39348
  "etag": "\"3358-rWMSbc9cch7FBErQpfnWcshAYFM\"",
38903
- "mtime": "2026-09-11T13:02:27.911Z",
39349
+ "mtime": "2026-09-12T03:59:43.256Z",
38904
39350
  "size": 13144,
38905
39351
  "path": "../public/_nuxt/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff"
38906
39352
  },
38907
39353
  "/_nuxt/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2": {
38908
39354
  "type": "font/woff2",
38909
39355
  "etag": "\"3974-u4dQDjIEo6fGXWYzx5xchAw76NM\"",
38910
- "mtime": "2026-09-11T13:02:27.911Z",
39356
+ "mtime": "2026-09-12T03:59:43.256Z",
38911
39357
  "size": 14708,
38912
39358
  "path": "../public/_nuxt/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2"
38913
39359
  },
38914
39360
  "/_nuxt/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff": {
38915
39361
  "type": "font/woff",
38916
39362
  "etag": "\"3364-S8wip5no4QO46BFh3FPzQKpIOec\"",
38917
- "mtime": "2026-09-11T13:02:27.911Z",
39363
+ "mtime": "2026-09-12T03:59:43.257Z",
38918
39364
  "size": 13156,
38919
39365
  "path": "../public/_nuxt/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff"
38920
39366
  },
38921
39367
  "/_nuxt/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2": {
38922
39368
  "type": "font/woff2",
38923
39369
  "etag": "\"3a28-0y8OBwGsYgQ4QBMagAznF6huTuI\"",
38924
- "mtime": "2026-09-11T13:02:27.911Z",
39370
+ "mtime": "2026-09-12T03:59:43.257Z",
38925
39371
  "size": 14888,
38926
39372
  "path": "../public/_nuxt/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2"
38927
39373
  },
38928
39374
  "/_nuxt/ibm-plex-mono-latin-600-normal.BgSNZQsw.woff2": {
38929
39375
  "type": "font/woff2",
38930
39376
  "etag": "\"3d04-zppco6h02pIBwmMMXLe/qpaIwFI\"",
38931
- "mtime": "2026-09-11T13:02:27.911Z",
39377
+ "mtime": "2026-09-12T03:59:43.257Z",
38932
39378
  "size": 15620,
38933
39379
  "path": "../public/_nuxt/ibm-plex-mono-latin-600-normal.BgSNZQsw.woff2"
38934
39380
  },
38935
39381
  "/_nuxt/ibm-plex-mono-latin-600-normal.DWFSQ4vo.woff": {
38936
39382
  "type": "font/woff",
38937
39383
  "etag": "\"3398-D/GHpHo4zls8HLHH2boKeigB6S4\"",
38938
- "mtime": "2026-09-11T13:02:27.911Z",
39384
+ "mtime": "2026-09-12T03:59:43.257Z",
38939
39385
  "size": 13208,
38940
39386
  "path": "../public/_nuxt/ibm-plex-mono-latin-600-normal.DWFSQ4vo.woff"
38941
39387
  },
38942
39388
  "/_nuxt/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2": {
38943
39389
  "type": "font/woff2",
38944
39390
  "etag": "\"3424-SvjO9SK9iRLLL61B4GuQJWQP62I\"",
38945
- "mtime": "2026-09-11T13:02:27.911Z",
39391
+ "mtime": "2026-09-12T03:59:43.258Z",
38946
39392
  "size": 13348,
38947
39393
  "path": "../public/_nuxt/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2"
38948
39394
  },
38949
39395
  "/_nuxt/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff": {
38950
39396
  "type": "font/woff",
38951
39397
  "etag": "\"2df8-dfJwTWMZxHyGnUuJDGfpU4w2dLs\"",
38952
- "mtime": "2026-09-11T13:02:27.912Z",
39398
+ "mtime": "2026-09-12T03:59:43.258Z",
38953
39399
  "size": 11768,
38954
39400
  "path": "../public/_nuxt/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff"
38955
39401
  },
38956
39402
  "/_nuxt/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2": {
38957
39403
  "type": "font/woff2",
38958
39404
  "etag": "\"3478-PpQvQo59iHxPLcEUBhJfmFmCPuA\"",
38959
- "mtime": "2026-09-11T13:02:27.912Z",
39405
+ "mtime": "2026-09-12T03:59:43.258Z",
38960
39406
  "size": 13432,
38961
39407
  "path": "../public/_nuxt/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2"
38962
39408
  },
38963
39409
  "/_nuxt/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff": {
38964
39410
  "type": "font/woff",
38965
39411
  "etag": "\"2df8-73sb1BUyjMsq70ppsdZBHEqWrtE\"",
38966
- "mtime": "2026-09-11T13:02:27.912Z",
39412
+ "mtime": "2026-09-12T03:59:43.258Z",
38967
39413
  "size": 11768,
38968
39414
  "path": "../public/_nuxt/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff"
38969
39415
  },
38970
- "/_nuxt/ibm-plex-mono-latin-ext-600-normal.DmB0ttJJ.woff": {
38971
- "type": "font/woff",
38972
- "etag": "\"2e38-fOmVENNzEJaYqxODn6K5NAbrEJk\"",
38973
- "mtime": "2026-09-11T13:02:27.912Z",
38974
- "size": 11832,
38975
- "path": "../public/_nuxt/ibm-plex-mono-latin-ext-600-normal.DmB0ttJJ.woff"
38976
- },
38977
39416
  "/_nuxt/ibm-plex-mono-latin-ext-600-normal.D38SheWl.woff2": {
38978
39417
  "type": "font/woff2",
38979
39418
  "etag": "\"37f8-5XYRqKuMO2rN5QZqfj4VW8r2jSQ\"",
38980
- "mtime": "2026-09-11T13:02:27.912Z",
39419
+ "mtime": "2026-09-12T03:59:43.259Z",
38981
39420
  "size": 14328,
38982
39421
  "path": "../public/_nuxt/ibm-plex-mono-latin-ext-600-normal.D38SheWl.woff2"
38983
39422
  },
38984
- "/_nuxt/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff": {
39423
+ "/_nuxt/ibm-plex-mono-latin-ext-600-normal.DmB0ttJJ.woff": {
38985
39424
  "type": "font/woff",
38986
- "etag": "\"15f0-mGuZIt/ndQFiw5uxmCOkhhWSxi4\"",
38987
- "mtime": "2026-09-11T13:02:27.913Z",
38988
- "size": 5616,
38989
- "path": "../public/_nuxt/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff"
39425
+ "etag": "\"2e38-fOmVENNzEJaYqxODn6K5NAbrEJk\"",
39426
+ "mtime": "2026-09-12T03:59:43.259Z",
39427
+ "size": 11832,
39428
+ "path": "../public/_nuxt/ibm-plex-mono-latin-ext-600-normal.DmB0ttJJ.woff"
38990
39429
  },
38991
39430
  "/_nuxt/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2": {
38992
39431
  "type": "font/woff2",
38993
39432
  "etag": "\"16ec-bIkS18/YaTiWdOzfzp4pFXvLmqQ\"",
38994
- "mtime": "2026-09-11T13:02:27.913Z",
39433
+ "mtime": "2026-09-12T03:59:43.259Z",
38995
39434
  "size": 5868,
38996
39435
  "path": "../public/_nuxt/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2"
38997
39436
  },
38998
39437
  "/_nuxt/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff": {
38999
39438
  "type": "font/woff",
39000
39439
  "etag": "\"15f4-LdRX2sBB3T5WDAsZLCwBlsMYXPw\"",
39001
- "mtime": "2026-09-11T13:02:27.913Z",
39440
+ "mtime": "2026-09-12T03:59:43.259Z",
39002
39441
  "size": 5620,
39003
39442
  "path": "../public/_nuxt/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff"
39004
39443
  },
39444
+ "/_nuxt/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff": {
39445
+ "type": "font/woff",
39446
+ "etag": "\"15f0-mGuZIt/ndQFiw5uxmCOkhhWSxi4\"",
39447
+ "mtime": "2026-09-12T03:59:43.260Z",
39448
+ "size": 5616,
39449
+ "path": "../public/_nuxt/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff"
39450
+ },
39005
39451
  "/_nuxt/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2": {
39006
39452
  "type": "font/woff2",
39007
39453
  "etag": "\"1798-7VDjg0E2ggd9c0kJDHNRh+Fu5E0\"",
39008
- "mtime": "2026-09-11T13:02:27.913Z",
39454
+ "mtime": "2026-09-12T03:59:43.260Z",
39009
39455
  "size": 6040,
39010
39456
  "path": "../public/_nuxt/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2"
39011
39457
  },
39012
39458
  "/_nuxt/ibm-plex-mono-vietnamese-600-normal.D2EvbN8M.woff2": {
39013
39459
  "type": "font/woff2",
39014
39460
  "etag": "\"1b14-ylPjcMKGVc4RbTi2G25N0MSlVNo\"",
39015
- "mtime": "2026-09-11T13:02:27.913Z",
39461
+ "mtime": "2026-09-12T03:59:43.260Z",
39016
39462
  "size": 6932,
39017
39463
  "path": "../public/_nuxt/ibm-plex-mono-vietnamese-600-normal.D2EvbN8M.woff2"
39018
39464
  },
39019
39465
  "/_nuxt/ibm-plex-mono-vietnamese-600-normal.iLQfcSjf.woff": {
39020
39466
  "type": "font/woff",
39021
39467
  "etag": "\"1650-9Pko0qRZ+EoISmnDaTRQ8KRGy/s\"",
39022
- "mtime": "2026-09-11T13:02:27.914Z",
39468
+ "mtime": "2026-09-12T03:59:43.261Z",
39023
39469
  "size": 5712,
39024
39470
  "path": "../public/_nuxt/ibm-plex-mono-vietnamese-600-normal.iLQfcSjf.woff"
39025
39471
  },
39472
+ "/_nuxt/JCoYF4IJ.js": {
39473
+ "type": "text/javascript; charset=utf-8",
39474
+ "etag": "\"3455-37tXgWnbnb3znRa47oi8vjuTdqc\"",
39475
+ "mtime": "2026-09-12T03:59:43.236Z",
39476
+ "size": 13397,
39477
+ "path": "../public/_nuxt/JCoYF4IJ.js"
39478
+ },
39479
+ "/_nuxt/JTLM-kqr2.js": {
39480
+ "type": "text/javascript; charset=utf-8",
39481
+ "etag": "\"5f5-SCePszT8yZWllH2E7nvCS+dPYsk\"",
39482
+ "mtime": "2026-09-12T03:59:43.236Z",
39483
+ "size": 1525,
39484
+ "path": "../public/_nuxt/JTLM-kqr2.js"
39485
+ },
39026
39486
  "/_nuxt/kZl6yT-12.js": {
39027
39487
  "type": "text/javascript; charset=utf-8",
39028
39488
  "etag": "\"e9-t0VKevMurw+ruGbCV/EgmcM2dww\"",
39029
- "mtime": "2026-09-11T13:02:27.897Z",
39489
+ "mtime": "2026-09-12T03:59:43.238Z",
39030
39490
  "size": 233,
39031
39491
  "path": "../public/_nuxt/kZl6yT-12.js"
39032
39492
  },
39033
- "/_nuxt/logs.DMOM-iHe.css": {
39034
- "type": "text/css; charset=utf-8",
39035
- "etag": "\"1410-UAOJXMAmlE9Bn2Xj1iFk0CXWguY\"",
39036
- "mtime": "2026-09-11T13:02:27.914Z",
39037
- "size": 5136,
39038
- "path": "../public/_nuxt/logs.DMOM-iHe.css"
39039
- },
39040
39493
  "/_nuxt/lO5tpDZ5.js": {
39041
39494
  "type": "text/javascript; charset=utf-8",
39042
39495
  "etag": "\"3b-z4jypkmUW9c9v+AALQ28pDyJ80A\"",
39043
- "mtime": "2026-09-11T13:02:27.897Z",
39496
+ "mtime": "2026-09-12T03:59:43.238Z",
39044
39497
  "size": 59,
39045
39498
  "path": "../public/_nuxt/lO5tpDZ5.js"
39046
39499
  },
39047
- "/_nuxt/Lp7Ll94I.js": {
39500
+ "/_nuxt/jZsY8yYz.js": {
39048
39501
  "type": "text/javascript; charset=utf-8",
39049
- "etag": "\"373d-P1v4qPVNCWsXAF8ecwFvPmdvFmE\"",
39050
- "mtime": "2026-09-11T13:02:27.896Z",
39051
- "size": 14141,
39052
- "path": "../public/_nuxt/Lp7Ll94I.js"
39502
+ "etag": "\"7c7-PL0IO2vGe5m8kLiMxnsrBNzHDKA\"",
39503
+ "mtime": "2026-09-12T03:59:43.238Z",
39504
+ "size": 1991,
39505
+ "path": "../public/_nuxt/jZsY8yYz.js"
39506
+ },
39507
+ "/_nuxt/logs.CqFyMrJw.css": {
39508
+ "type": "text/css; charset=utf-8",
39509
+ "etag": "\"14c3-80Yys++VF02i9m0dmRGSlXNvsdM\"",
39510
+ "mtime": "2026-09-12T03:59:43.261Z",
39511
+ "size": 5315,
39512
+ "path": "../public/_nuxt/logs.CqFyMrJw.css"
39513
+ },
39514
+ "/_nuxt/KZQX7xoM.js": {
39515
+ "type": "text/javascript; charset=utf-8",
39516
+ "etag": "\"bc8d-NE8BmFk1U6Qr8oLUgb9logVLDHA\"",
39517
+ "mtime": "2026-09-12T03:59:43.237Z",
39518
+ "size": 48269,
39519
+ "path": "../public/_nuxt/KZQX7xoM.js"
39053
39520
  },
39054
39521
  "/_nuxt/monitor.B--1dPzs.css": {
39055
39522
  "type": "text/css; charset=utf-8",
39056
39523
  "etag": "\"578-FjYyH+T9goSVwJOLXNhMi2Hm95Y\"",
39057
- "mtime": "2026-09-11T13:02:27.914Z",
39524
+ "mtime": "2026-09-12T03:59:43.261Z",
39058
39525
  "size": 1400,
39059
39526
  "path": "../public/_nuxt/monitor.B--1dPzs.css"
39060
39527
  },
39061
- "/_nuxt/niDwBOZW.js": {
39062
- "type": "text/javascript; charset=utf-8",
39063
- "etag": "\"12f1-JlgzqHJQENBszEGLuO9fMyRYm/E\"",
39064
- "mtime": "2026-09-11T13:02:27.897Z",
39065
- "size": 4849,
39066
- "path": "../public/_nuxt/niDwBOZW.js"
39067
- },
39068
39528
  "/_nuxt/OmpTerminalPanel.B_Pl5Ynm.css": {
39069
39529
  "type": "text/css; charset=utf-8",
39070
39530
  "etag": "\"10d0-uLyus3YRLFfRIoYhlKCERpGIwVE\"",
39071
- "mtime": "2026-09-11T13:02:27.898Z",
39531
+ "mtime": "2026-09-12T03:59:43.240Z",
39072
39532
  "size": 4304,
39073
39533
  "path": "../public/_nuxt/OmpTerminalPanel.B_Pl5Ynm.css"
39074
39534
  },
39075
- "/_nuxt/ORt9oDIy2.js": {
39076
- "type": "text/javascript; charset=utf-8",
39077
- "etag": "\"c42-g+2xQOk5SmNd8dk4LSqx7FrSVE0\"",
39078
- "mtime": "2026-09-11T13:02:27.896Z",
39079
- "size": 3138,
39080
- "path": "../public/_nuxt/ORt9oDIy2.js"
39081
- },
39082
- "/_nuxt/pages.Cc8GX9T1.css": {
39535
+ "/_nuxt/pages.ooEzrMm9.css": {
39083
39536
  "type": "text/css; charset=utf-8",
39084
- "etag": "\"1f93-vaNeomRLLvT7nDlnsXdpp4S2TFo\"",
39085
- "mtime": "2026-09-11T13:02:27.914Z",
39086
- "size": 8083,
39087
- "path": "../public/_nuxt/pages.Cc8GX9T1.css"
39537
+ "etag": "\"1f8f-b9J2EkJ46q6pDMK7XHEZEMw/z3s\"",
39538
+ "mtime": "2026-09-12T03:59:43.261Z",
39539
+ "size": 8079,
39540
+ "path": "../public/_nuxt/pages.ooEzrMm9.css"
39088
39541
  },
39089
39542
  "/_nuxt/permissions.B1pjGChZ.css": {
39090
39543
  "type": "text/css; charset=utf-8",
39091
39544
  "etag": "\"439-4fFWPs3Fv7K/AFrSalCd0HFO3pI\"",
39092
- "mtime": "2026-09-11T13:02:27.914Z",
39545
+ "mtime": "2026-09-12T03:59:43.261Z",
39093
39546
  "size": 1081,
39094
39547
  "path": "../public/_nuxt/permissions.B1pjGChZ.css"
39095
39548
  },
39096
- "/_nuxt/plugins.wIPyfPn-.css": {
39549
+ "/_nuxt/plugins.5e5chZ67.css": {
39097
39550
  "type": "text/css; charset=utf-8",
39098
- "etag": "\"ab4-v3do8OYxniGhizT0UMHsXehCvL0\"",
39099
- "mtime": "2026-09-11T13:02:27.914Z",
39100
- "size": 2740,
39101
- "path": "../public/_nuxt/plugins.wIPyfPn-.css"
39551
+ "etag": "\"ab2-6+VhPmyRC3rpgUGjFUB63S7ymbc\"",
39552
+ "mtime": "2026-09-12T03:59:43.262Z",
39553
+ "size": 2738,
39554
+ "path": "../public/_nuxt/plugins.5e5chZ67.css"
39555
+ },
39556
+ "/_nuxt/pdk8jLGT.js": {
39557
+ "type": "text/javascript; charset=utf-8",
39558
+ "etag": "\"1a39-SiPMzso8YXbn1yBHlZHYwIyR4Cw\"",
39559
+ "mtime": "2026-09-12T03:59:43.239Z",
39560
+ "size": 6713,
39561
+ "path": "../public/_nuxt/pdk8jLGT.js"
39102
39562
  },
39103
39563
  "/_nuxt/PluginSlot.DmjNbrcX.css": {
39104
39564
  "type": "text/css; charset=utf-8",
39105
39565
  "etag": "\"1b1-ASM0+zql/trZXZZxT6JL/MDdPtY\"",
39106
- "mtime": "2026-09-11T13:02:27.898Z",
39566
+ "mtime": "2026-09-12T03:59:43.240Z",
39107
39567
  "size": 433,
39108
39568
  "path": "../public/_nuxt/PluginSlot.DmjNbrcX.css"
39109
39569
  },
39110
- "/_nuxt/pMoIO6rr.js": {
39570
+ "/_nuxt/pz2JDAM7.js": {
39111
39571
  "type": "text/javascript; charset=utf-8",
39112
- "etag": "\"40a01-FsPk7CX8Frlia6p0EwogkGlLllI\"",
39113
- "mtime": "2026-09-11T13:02:27.869Z",
39114
- "size": 264705,
39115
- "path": "../public/_nuxt/pMoIO6rr.js"
39116
- },
39117
- "/_nuxt/rqZ-1SoP.js": {
39118
- "type": "text/javascript; charset=utf-8",
39119
- "etag": "\"761d-n3nYYQYIxdnAu9GaImKE7k1Xy7Y\"",
39120
- "mtime": "2026-09-11T13:02:27.897Z",
39121
- "size": 30237,
39122
- "path": "../public/_nuxt/rqZ-1SoP.js"
39572
+ "etag": "\"1caea-Rsju6Xu8UELInbAAC8iS80XsDQo\"",
39573
+ "mtime": "2026-09-12T03:59:43.239Z",
39574
+ "size": 117482,
39575
+ "path": "../public/_nuxt/pz2JDAM7.js"
39123
39576
  },
39124
39577
  "/_nuxt/RYFtK4qZ2.js": {
39125
39578
  "type": "text/javascript; charset=utf-8",
39126
39579
  "etag": "\"594c-ZHrAodAyz6fWAruZCqluWn052zA\"",
39127
- "mtime": "2026-09-11T13:02:27.896Z",
39580
+ "mtime": "2026-09-12T03:59:43.237Z",
39128
39581
  "size": 22860,
39129
39582
  "path": "../public/_nuxt/RYFtK4qZ2.js"
39130
39583
  },
39131
- "/_nuxt/settings.BCm4NZIc.css": {
39584
+ "/_nuxt/settings.Dm3M0RLy.css": {
39132
39585
  "type": "text/css; charset=utf-8",
39133
- "etag": "\"2179-FOkixrOAI+eUOlSN6Gyy1BpNt8Q\"",
39134
- "mtime": "2026-09-11T13:02:27.915Z",
39135
- "size": 8569,
39136
- "path": "../public/_nuxt/settings.BCm4NZIc.css"
39586
+ "etag": "\"2175-Bfu2f0XoqMS7xPh3BapUEUv/fps\"",
39587
+ "mtime": "2026-09-12T03:59:43.262Z",
39588
+ "size": 8565,
39589
+ "path": "../public/_nuxt/settings.Dm3M0RLy.css"
39590
+ },
39591
+ "/_nuxt/S_fVQwJK.js": {
39592
+ "type": "text/javascript; charset=utf-8",
39593
+ "etag": "\"9dc0-3l6Kc/MTmlDr92xcFaiueO5zXl8\"",
39594
+ "mtime": "2026-09-12T03:59:43.237Z",
39595
+ "size": 40384,
39596
+ "path": "../public/_nuxt/S_fVQwJK.js"
39597
+ },
39598
+ "/_nuxt/teams.BC75EGnR.css": {
39599
+ "type": "text/css; charset=utf-8",
39600
+ "etag": "\"a49-L5ibM+Ztp1to2Um0i9mSYODdZw4\"",
39601
+ "mtime": "2026-09-12T03:59:43.262Z",
39602
+ "size": 2633,
39603
+ "path": "../public/_nuxt/teams.BC75EGnR.css"
39137
39604
  },
39138
39605
  "/_nuxt/tokens.xRb1fSPU.css": {
39139
39606
  "type": "text/css; charset=utf-8",
39140
39607
  "etag": "\"991-sd4TNmcKczQa4a+DM+FOOSKkG9A\"",
39141
- "mtime": "2026-09-11T13:02:27.915Z",
39608
+ "mtime": "2026-09-12T03:59:43.262Z",
39142
39609
  "size": 2449,
39143
39610
  "path": "../public/_nuxt/tokens.xRb1fSPU.css"
39144
39611
  },
39145
39612
  "/_nuxt/town.BLrD9-WH.css": {
39146
39613
  "type": "text/css; charset=utf-8",
39147
39614
  "etag": "\"64-INqlNEwsg1I+Dzc8LaEkJCLno5o\"",
39148
- "mtime": "2026-09-11T13:02:27.915Z",
39615
+ "mtime": "2026-09-12T03:59:43.263Z",
39149
39616
  "size": 100,
39150
39617
  "path": "../public/_nuxt/town.BLrD9-WH.css"
39151
39618
  },
39152
- "/_nuxt/teams.BC75EGnR.css": {
39619
+ "/_nuxt/town.DKIAhKnx.css": {
39153
39620
  "type": "text/css; charset=utf-8",
39154
- "etag": "\"a49-L5ibM+Ztp1to2Um0i9mSYODdZw4\"",
39155
- "mtime": "2026-09-11T13:02:27.915Z",
39156
- "size": 2633,
39157
- "path": "../public/_nuxt/teams.BC75EGnR.css"
39621
+ "etag": "\"3f6-2stsCbObPrmCagrbI7L30H9657A\"",
39622
+ "mtime": "2026-09-12T03:59:43.263Z",
39623
+ "size": 1014,
39624
+ "path": "../public/_nuxt/town.DKIAhKnx.css"
39158
39625
  },
39159
- "/_nuxt/town.C_DsNW0J.css": {
39626
+ "/_nuxt/TownView.0oLiQgTC.css": {
39160
39627
  "type": "text/css; charset=utf-8",
39161
- "etag": "\"3b2-lx8uIK7y3f1Nkj2gMcTuak3mB/I\"",
39162
- "mtime": "2026-09-11T13:02:27.915Z",
39163
- "size": 946,
39164
- "path": "../public/_nuxt/town.C_DsNW0J.css"
39628
+ "etag": "\"11be0-jasT+CDSVlHGDB2IL1ee1/4PS20\"",
39629
+ "mtime": "2026-09-12T03:59:43.240Z",
39630
+ "size": 72672,
39631
+ "path": "../public/_nuxt/TownView.0oLiQgTC.css"
39165
39632
  },
39166
- "/_nuxt/TownView.CtskuMXS.css": {
39633
+ "/_nuxt/users.CXnP2E08.css": {
39167
39634
  "type": "text/css; charset=utf-8",
39168
- "etag": "\"11b2a-ZaXpy2M4q0qAxOvVuhL9xs66Xrw\"",
39169
- "mtime": "2026-09-11T13:02:27.898Z",
39170
- "size": 72490,
39171
- "path": "../public/_nuxt/TownView.CtskuMXS.css"
39635
+ "etag": "\"22f-AZpbJXPsElnWYRHZbAWTKPG8Rxw\"",
39636
+ "mtime": "2026-09-12T03:59:43.263Z",
39637
+ "size": 559,
39638
+ "path": "../public/_nuxt/users.CXnP2E08.css"
39639
+ },
39640
+ "/_nuxt/vRTjoWqd.js": {
39641
+ "type": "text/javascript; charset=utf-8",
39642
+ "etag": "\"3ee-AsfUZSgw/F0W9cFRTAEVXcLJZiA\"",
39643
+ "mtime": "2026-09-12T03:59:43.239Z",
39644
+ "size": 1006,
39645
+ "path": "../public/_nuxt/vRTjoWqd.js"
39172
39646
  },
39173
- "/_nuxt/users.DuAt_Zwf.css": {
39647
+ "/_nuxt/workshop.Jk5HxWPE.css": {
39174
39648
  "type": "text/css; charset=utf-8",
39175
- "etag": "\"231-nHKEbLMGMLnneAGueIAZ3cR9UH0\"",
39176
- "mtime": "2026-09-11T13:02:27.915Z",
39177
- "size": 561,
39178
- "path": "../public/_nuxt/users.DuAt_Zwf.css"
39649
+ "etag": "\"1038-1Xveua8xDfO+3AbczDYlptdvcWQ\"",
39650
+ "mtime": "2026-09-12T03:59:43.263Z",
39651
+ "size": 4152,
39652
+ "path": "../public/_nuxt/workshop.Jk5HxWPE.css"
39179
39653
  },
39180
- "/_nuxt/vJ4FPb-_.js": {
39654
+ "/_nuxt/YnQxK3eG.js": {
39181
39655
  "type": "text/javascript; charset=utf-8",
39182
- "etag": "\"496e-HYp1zkNZ5UP5CkmOCjjlTOlpRAA\"",
39183
- "mtime": "2026-09-11T13:02:27.898Z",
39184
- "size": 18798,
39185
- "path": "../public/_nuxt/vJ4FPb-_.js"
39656
+ "etag": "\"56aa-34p36rIty4zhPYsHZGMJ3m4YxOQ\"",
39657
+ "mtime": "2026-09-12T03:59:43.237Z",
39658
+ "size": 22186,
39659
+ "path": "../public/_nuxt/YnQxK3eG.js"
39186
39660
  },
39187
- "/_nuxt/VLI2Zy4t.js": {
39661
+ "/_nuxt/zIGh7R49.js": {
39188
39662
  "type": "text/javascript; charset=utf-8",
39189
- "etag": "\"79db-1zvdkTTeWhTS0A+KbRz0/ud/ntw\"",
39190
- "mtime": "2026-09-11T13:02:27.897Z",
39191
- "size": 31195,
39192
- "path": "../public/_nuxt/VLI2Zy4t.js"
39663
+ "etag": "\"28a11-UMQ9kZ/56LLLr7SzoahyJK4kF+8\"",
39664
+ "mtime": "2026-09-12T03:59:43.240Z",
39665
+ "size": 166417,
39666
+ "path": "../public/_nuxt/zIGh7R49.js"
39193
39667
  },
39194
- "/_nuxt/_id_.hRYo-EAB.css": {
39195
- "type": "text/css; charset=utf-8",
39196
- "etag": "\"1613-tO0SYd89Anr8faV5QNbS0IANCsY\"",
39197
- "mtime": "2026-09-11T13:02:27.898Z",
39198
- "size": 5651,
39199
- "path": "../public/_nuxt/_id_.hRYo-EAB.css"
39200
- },
39201
- "/_nuxt/workshop.BJg84pOK.css": {
39202
- "type": "text/css; charset=utf-8",
39203
- "etag": "\"103c-a5w4eTEpLUvJ9/PHO/G3obwFdMs\"",
39204
- "mtime": "2026-09-11T13:02:27.915Z",
39205
- "size": 4156,
39206
- "path": "../public/_nuxt/workshop.BJg84pOK.css"
39668
+ "/_nuxt/zq5t1vyX.js": {
39669
+ "type": "text/javascript; charset=utf-8",
39670
+ "etag": "\"60d-NnE9dj7Q2Llc8RcygvdWR36sHQs\"",
39671
+ "mtime": "2026-09-12T03:59:43.240Z",
39672
+ "size": 1549,
39673
+ "path": "../public/_nuxt/zq5t1vyX.js"
39207
39674
  },
39208
- "/_nuxt/_id_.MbzdFygI.css": {
39675
+ "/_nuxt/_id_.D-SYuyZb.css": {
39209
39676
  "type": "text/css; charset=utf-8",
39210
- "etag": "\"3cef-ZJad4sf/g5mPJTNPHQLObrXEoEk\"",
39211
- "mtime": "2026-09-11T13:02:27.898Z",
39212
- "size": 15599,
39213
- "path": "../public/_nuxt/_id_.MbzdFygI.css"
39677
+ "etag": "\"3d10-ns70o4Kj3LWHCLTavrVybVSFwYM\"",
39678
+ "mtime": "2026-09-12T03:59:43.241Z",
39679
+ "size": 15632,
39680
+ "path": "../public/_nuxt/_id_.D-SYuyZb.css"
39214
39681
  },
39215
- "/_nuxt/_wsId_.gXMEOYgX.css": {
39682
+ "/_nuxt/_id_.hma_BU6T.css": {
39216
39683
  "type": "text/css; charset=utf-8",
39217
- "etag": "\"11063-Q3Z+6KTHMRvqKnEygj3e1fWXboE\"",
39218
- "mtime": "2026-09-11T13:02:27.899Z",
39219
- "size": 69731,
39220
- "path": "../public/_nuxt/_wsId_.gXMEOYgX.css"
39684
+ "etag": "\"1611-u2wYUO+6Mf0kDeG7LtcojlL7Wbo\"",
39685
+ "mtime": "2026-09-12T03:59:43.241Z",
39686
+ "size": 5649,
39687
+ "path": "../public/_nuxt/_id_.hma_BU6T.css"
39221
39688
  },
39222
39689
  "/assets/game/coin.png": {
39223
39690
  "type": "image/png",
@@ -39226,6 +39693,13 @@ const assets = {
39226
39693
  "size": 6733,
39227
39694
  "path": "../public/assets/game/coin.png"
39228
39695
  },
39696
+ "/_nuxt/_wsId_.B12v3PhY.css": {
39697
+ "type": "text/css; charset=utf-8",
39698
+ "etag": "\"11002-wG5qYFNHpNeZ8Npb7NaYMOlUJQ0\"",
39699
+ "mtime": "2026-09-12T03:59:43.241Z",
39700
+ "size": 69634,
39701
+ "path": "../public/_nuxt/_wsId_.B12v3PhY.css"
39702
+ },
39229
39703
  "/assets/game/tuxemon-town.json": {
39230
39704
  "type": "application/json",
39231
39705
  "etag": "\"fec5-uB5TWkwSxd0G5Tiupl3I0+u94XM\"",
@@ -39240,13 +39714,6 @@ const assets = {
39240
39714
  "size": 10050,
39241
39715
  "path": "../public/assets/game/player-sheet.png"
39242
39716
  },
39243
- "/_nuxt/builds/latest.json": {
39244
- "type": "application/json",
39245
- "etag": "\"47-i2ssFthlpKbFtUaGATFeF6cccto\"",
39246
- "mtime": "2026-09-11T13:02:32.535Z",
39247
- "size": 71,
39248
- "path": "../public/_nuxt/builds/latest.json"
39249
- },
39250
39717
  "/scene/background/cyber-town-background.svg": {
39251
39718
  "type": "image/svg+xml",
39252
39719
  "etag": "\"1656-Q8xWIs77K5i5HJYRdMCDYSQhkvs\"",
@@ -39254,6 +39721,13 @@ const assets = {
39254
39721
  "size": 5718,
39255
39722
  "path": "../public/scene/background/cyber-town-background.svg"
39256
39723
  },
39724
+ "/assets/game/tuxmon-sample-32px-extruded.png": {
39725
+ "type": "image/png",
39726
+ "etag": "\"2ee08-3yTsAqzTx0djGCGVAEgUGQ1/MEg\"",
39727
+ "mtime": "2026-08-25T12:20:54.518Z",
39728
+ "size": 192008,
39729
+ "path": "../public/assets/game/tuxmon-sample-32px-extruded.png"
39730
+ },
39257
39731
  "/assets/game/character/bot.png": {
39258
39732
  "type": "image/png",
39259
39733
  "etag": "\"36fe-Ke8vj83Dinp8fFaRQQBfBsTGI/8\"",
@@ -39261,6 +39735,13 @@ const assets = {
39261
39735
  "size": 14078,
39262
39736
  "path": "../public/assets/game/character/bot.png"
39263
39737
  },
39738
+ "/_nuxt/builds/latest.json": {
39739
+ "type": "application/json",
39740
+ "etag": "\"47-0tOzk3s80CkE6QyDmlCMFBquImg\"",
39741
+ "mtime": "2026-09-12T03:59:50.785Z",
39742
+ "size": 71,
39743
+ "path": "../public/_nuxt/builds/latest.json"
39744
+ },
39264
39745
  "/assets/game/character/device-3d.glb": {
39265
39746
  "type": "model/gltf-binary",
39266
39747
  "etag": "\"4bc8-yAiKZtO+P2bBmqfRvhlxcF0oduE\"",
@@ -39275,13 +39756,6 @@ const assets = {
39275
39756
  "size": 33940,
39276
39757
  "path": "../public/assets/game/character/hero-3d.glb"
39277
39758
  },
39278
- "/assets/game/tuxmon-sample-32px-extruded.png": {
39279
- "type": "image/png",
39280
- "etag": "\"2ee08-3yTsAqzTx0djGCGVAEgUGQ1/MEg\"",
39281
- "mtime": "2026-08-25T12:20:54.518Z",
39282
- "size": 192008,
39283
- "path": "../public/assets/game/tuxmon-sample-32px-extruded.png"
39284
- },
39285
39759
  "/assets/game/character/hero-anime-1.glb": {
39286
39760
  "type": "model/gltf-binary",
39287
39761
  "etag": "\"1044c-AUMAdrW4S6OKEsUeAcR5c50fyKs\"",
@@ -39324,34 +39798,6 @@ const assets = {
39324
39798
  "size": 14386,
39325
39799
  "path": "../public/assets/game/character/mage.png"
39326
39800
  },
39327
- "/assets/game/npc/boltnu-sheet.png": {
39328
- "type": "image/png",
39329
- "etag": "\"a14-8xg90l10OuRoiEEgFXx9PTGJ9rA\"",
39330
- "mtime": "2026-08-25T12:20:54.513Z",
39331
- "size": 2580,
39332
- "path": "../public/assets/game/npc/boltnu-sheet.png"
39333
- },
39334
- "/assets/game/npc/fluttaflap-sheet.png": {
39335
- "type": "image/png",
39336
- "etag": "\"f65-ivBz79RSNtXu3px7cWEzCwMXdkg\"",
39337
- "mtime": "2026-08-25T12:20:54.513Z",
39338
- "size": 3941,
39339
- "path": "../public/assets/game/npc/fluttaflap-sheet.png"
39340
- },
39341
- "/assets/game/npc/tux-sheet.png": {
39342
- "type": "image/png",
39343
- "etag": "\"912-kf4+Q7EukO60VT6vlziy5RrzuUo\"",
39344
- "mtime": "2026-08-25T12:20:54.513Z",
39345
- "size": 2322,
39346
- "path": "../public/assets/game/npc/tux-sheet.png"
39347
- },
39348
- "/assets/game/npc/rockitten-sheet.png": {
39349
- "type": "image/png",
39350
- "etag": "\"786-IY4LCl37+SB6pnPynapoUxsxvOM\"",
39351
- "mtime": "2026-08-25T12:20:54.513Z",
39352
- "size": 1926,
39353
- "path": "../public/assets/game/npc/rockitten-sheet.png"
39354
- },
39355
39801
  "/assets/game/devices/agv.glb": {
39356
39802
  "type": "model/gltf-binary",
39357
39803
  "etag": "\"b0ec-SGRGNfFN89F7v1GROXKGve7pQqs\"",
@@ -39373,13 +39819,6 @@ const assets = {
39373
39819
  "size": 14724,
39374
39820
  "path": "../public/assets/game/devices/device-console.glb"
39375
39821
  },
39376
- "/assets/game/devices/device-scanner.glb": {
39377
- "type": "model/gltf-binary",
39378
- "etag": "\"28e0-uKYZaLiZiCedMMozKBOFU14HUSE\"",
39379
- "mtime": "2026-08-26T05:23:14.560Z",
39380
- "size": 10464,
39381
- "path": "../public/assets/game/devices/device-scanner.glb"
39382
- },
39383
39822
  "/assets/game/devices/device-robot-arm.glb": {
39384
39823
  "type": "model/gltf-binary",
39385
39824
  "etag": "\"37fc-uBxMDklo0SfaA6KXZIylh/S2p+c\"",
@@ -39387,6 +39826,13 @@ const assets = {
39387
39826
  "size": 14332,
39388
39827
  "path": "../public/assets/game/devices/device-robot-arm.glb"
39389
39828
  },
39829
+ "/assets/game/devices/device-scanner.glb": {
39830
+ "type": "model/gltf-binary",
39831
+ "etag": "\"28e0-uKYZaLiZiCedMMozKBOFU14HUSE\"",
39832
+ "mtime": "2026-08-26T05:23:14.560Z",
39833
+ "size": 10464,
39834
+ "path": "../public/assets/game/devices/device-scanner.glb"
39835
+ },
39390
39836
  "/assets/game/devices/power-cabinet.glb": {
39391
39837
  "type": "model/gltf-binary",
39392
39838
  "etag": "\"54f0-KsrAxig9JTAY5SGKK3jbdJXB6fk\"",
@@ -39394,13 +39840,6 @@ const assets = {
39394
39840
  "size": 21744,
39395
39841
  "path": "../public/assets/game/devices/power-cabinet.glb"
39396
39842
  },
39397
- "/assets/game/devices/extruder.glb": {
39398
- "type": "model/gltf-binary",
39399
- "etag": "\"18124-H6X1eQmFDn6eONUMGU6lGdQafZ8\"",
39400
- "mtime": "2026-08-27T07:03:12.506Z",
39401
- "size": 98596,
39402
- "path": "../public/assets/game/devices/extruder.glb"
39403
- },
39404
39843
  "/assets/game/devices/mdo.glb": {
39405
39844
  "type": "model/gltf-binary",
39406
39845
  "etag": "\"132e4-EDslgF5+17dSukguA0eZzN4I0+o\"",
@@ -39408,12 +39847,12 @@ const assets = {
39408
39847
  "size": 78564,
39409
39848
  "path": "../public/assets/game/devices/mdo.glb"
39410
39849
  },
39411
- "/assets/game/devices/tdo.glb": {
39850
+ "/assets/game/devices/extruder.glb": {
39412
39851
  "type": "model/gltf-binary",
39413
- "etag": "\"e10c-GdMX+mG/KrSVBzy4EeAPPjFoTqM\"",
39414
- "mtime": "2026-08-27T07:03:12.523Z",
39415
- "size": 57612,
39416
- "path": "../public/assets/game/devices/tdo.glb"
39852
+ "etag": "\"18124-H6X1eQmFDn6eONUMGU6lGdQafZ8\"",
39853
+ "mtime": "2026-08-27T07:03:12.506Z",
39854
+ "size": 98596,
39855
+ "path": "../public/assets/game/devices/extruder.glb"
39417
39856
  },
39418
39857
  "/assets/game/devices/pump.glb": {
39419
39858
  "type": "model/gltf-binary",
@@ -39429,12 +39868,12 @@ const assets = {
39429
39868
  "size": 13440,
39430
39869
  "path": "../public/assets/game/devices/thickness-scanner.glb"
39431
39870
  },
39432
- "/assets/game/player/misa-back-walk.000.png": {
39433
- "type": "image/png",
39434
- "etag": "\"157-/Sm0qrBJSHEFTGYwuSqnzRaX3Jk\"",
39435
- "mtime": "2026-08-25T12:20:54.514Z",
39436
- "size": 343,
39437
- "path": "../public/assets/game/player/misa-back-walk.000.png"
39871
+ "/assets/game/devices/tdo.glb": {
39872
+ "type": "model/gltf-binary",
39873
+ "etag": "\"e10c-GdMX+mG/KrSVBzy4EeAPPjFoTqM\"",
39874
+ "mtime": "2026-08-27T07:03:12.523Z",
39875
+ "size": 57612,
39876
+ "path": "../public/assets/game/devices/tdo.glb"
39438
39877
  },
39439
39878
  "/assets/game/devices/winder.glb": {
39440
39879
  "type": "model/gltf-binary",
@@ -39443,6 +39882,118 @@ const assets = {
39443
39882
  "size": 36996,
39444
39883
  "path": "../public/assets/game/devices/winder.glb"
39445
39884
  },
39885
+ "/assets/game/wuwa/world-middle.png": {
39886
+ "type": "image/png",
39887
+ "etag": "\"16164-Dxu+NdXPnqoPFfWHwQi1oefgNvU\"",
39888
+ "mtime": "2026-08-25T12:20:54.523Z",
39889
+ "size": 90468,
39890
+ "path": "../public/assets/game/wuwa/world-middle.png"
39891
+ },
39892
+ "/assets/game/wuwa/scene-map.png": {
39893
+ "type": "image/png",
39894
+ "etag": "\"682db-bU8mh8SeHPotvuaCc6PZzrWoT+A\"",
39895
+ "mtime": "2026-08-25T12:20:54.521Z",
39896
+ "size": 426715,
39897
+ "path": "../public/assets/game/wuwa/scene-map.png"
39898
+ },
39899
+ "/assets/game/wuwa/wu-aura.png": {
39900
+ "type": "image/png",
39901
+ "etag": "\"2055-NKWgEbJfTq5l56FGWi9WDWgBAbU\"",
39902
+ "mtime": "2026-08-25T12:20:54.527Z",
39903
+ "size": 8277,
39904
+ "path": "../public/assets/game/wuwa/wu-aura.png"
39905
+ },
39906
+ "/assets/game/wuwa/wu-lead.png": {
39907
+ "type": "image/png",
39908
+ "etag": "\"3b04-agK45Y3g7QDPns/kmkhTGYSTPDM\"",
39909
+ "mtime": "2026-08-25T12:20:54.527Z",
39910
+ "size": 15108,
39911
+ "path": "../public/assets/game/wuwa/wu-lead.png"
39912
+ },
39913
+ "/assets/game/wuwa/wu-ring.png": {
39914
+ "type": "image/png",
39915
+ "etag": "\"65ac-/iIjlPgFNpD98zDsyCJYA8021E4\"",
39916
+ "mtime": "2026-08-25T12:20:54.527Z",
39917
+ "size": 26028,
39918
+ "path": "../public/assets/game/wuwa/wu-ring.png"
39919
+ },
39920
+ "/assets/game/wuwa/world-far.png": {
39921
+ "type": "image/png",
39922
+ "etag": "\"6b391-DRcUWDyPUwUxDpAWplDh9StwdO0\"",
39923
+ "mtime": "2026-08-25T12:20:54.522Z",
39924
+ "size": 439185,
39925
+ "path": "../public/assets/game/wuwa/world-far.png"
39926
+ },
39927
+ "/assets/game/wuwa/wu-slash.png": {
39928
+ "type": "image/png",
39929
+ "etag": "\"185-fVjcllSJOBMFcBWLIgBzTrzWGaY\"",
39930
+ "mtime": "2026-08-25T12:20:54.527Z",
39931
+ "size": 389,
39932
+ "path": "../public/assets/game/wuwa/wu-slash.png"
39933
+ },
39934
+ "/assets/game/wuwa/wu-worker-0.png": {
39935
+ "type": "image/png",
39936
+ "etag": "\"3c59-fILvgyTv9TKRgrI9GQlRhaSR96U\"",
39937
+ "mtime": "2026-08-25T12:20:54.528Z",
39938
+ "size": 15449,
39939
+ "path": "../public/assets/game/wuwa/wu-worker-0.png"
39940
+ },
39941
+ "/assets/game/wuwa/world-near.png": {
39942
+ "type": "image/png",
39943
+ "etag": "\"bbcd8-BrybeZP/ZGdD0v5NVC8T/Y4AXyM\"",
39944
+ "mtime": "2026-08-25T12:20:54.527Z",
39945
+ "size": 769240,
39946
+ "path": "../public/assets/game/wuwa/world-near.png"
39947
+ },
39948
+ "/assets/game/wuwa/wu-worker-1.png": {
39949
+ "type": "image/png",
39950
+ "etag": "\"3cc8-0XoRr5qFC7X+vEEX+XrX4cRX+D0\"",
39951
+ "mtime": "2026-08-25T12:20:54.529Z",
39952
+ "size": 15560,
39953
+ "path": "../public/assets/game/wuwa/wu-worker-1.png"
39954
+ },
39955
+ "/assets/game/wuwa/wu-worker-2.png": {
39956
+ "type": "image/png",
39957
+ "etag": "\"3c81-6qd4LQS0v2L4rTa0XAmekluER7c\"",
39958
+ "mtime": "2026-08-25T12:20:54.529Z",
39959
+ "size": 15489,
39960
+ "path": "../public/assets/game/wuwa/wu-worker-2.png"
39961
+ },
39962
+ "/assets/game/npc/boltnu-sheet.png": {
39963
+ "type": "image/png",
39964
+ "etag": "\"a14-8xg90l10OuRoiEEgFXx9PTGJ9rA\"",
39965
+ "mtime": "2026-08-25T12:20:54.513Z",
39966
+ "size": 2580,
39967
+ "path": "../public/assets/game/npc/boltnu-sheet.png"
39968
+ },
39969
+ "/assets/game/npc/fluttaflap-sheet.png": {
39970
+ "type": "image/png",
39971
+ "etag": "\"f65-ivBz79RSNtXu3px7cWEzCwMXdkg\"",
39972
+ "mtime": "2026-08-25T12:20:54.513Z",
39973
+ "size": 3941,
39974
+ "path": "../public/assets/game/npc/fluttaflap-sheet.png"
39975
+ },
39976
+ "/assets/game/npc/rockitten-sheet.png": {
39977
+ "type": "image/png",
39978
+ "etag": "\"786-IY4LCl37+SB6pnPynapoUxsxvOM\"",
39979
+ "mtime": "2026-08-25T12:20:54.513Z",
39980
+ "size": 1926,
39981
+ "path": "../public/assets/game/npc/rockitten-sheet.png"
39982
+ },
39983
+ "/assets/game/npc/tux-sheet.png": {
39984
+ "type": "image/png",
39985
+ "etag": "\"912-kf4+Q7EukO60VT6vlziy5RrzuUo\"",
39986
+ "mtime": "2026-08-25T12:20:54.513Z",
39987
+ "size": 2322,
39988
+ "path": "../public/assets/game/npc/tux-sheet.png"
39989
+ },
39990
+ "/assets/game/player/misa-back-walk.000.png": {
39991
+ "type": "image/png",
39992
+ "etag": "\"157-/Sm0qrBJSHEFTGYwuSqnzRaX3Jk\"",
39993
+ "mtime": "2026-08-25T12:20:54.514Z",
39994
+ "size": 343,
39995
+ "path": "../public/assets/game/player/misa-back-walk.000.png"
39996
+ },
39446
39997
  "/assets/game/player/misa-back-walk.001.png": {
39447
39998
  "type": "image/png",
39448
39999
  "etag": "\"15c-PoeNPtRrfApGTf0GzJcdNP59kts\"",
@@ -39478,19 +40029,19 @@ const assets = {
39478
40029
  "size": 338,
39479
40030
  "path": "../public/assets/game/player/misa-front-walk.000.png"
39480
40031
  },
39481
- "/assets/game/player/misa-front-walk.002.png": {
40032
+ "/assets/game/player/misa-front-walk.001.png": {
39482
40033
  "type": "image/png",
39483
- "etag": "\"155-UzIsnRRYoGpmHf5w9T7CLy/0ubw\"",
40034
+ "etag": "\"155-r/wKRG+amQ/2TvYolFC2UPXHdC4\"",
39484
40035
  "mtime": "2026-08-25T12:20:54.515Z",
39485
40036
  "size": 341,
39486
- "path": "../public/assets/game/player/misa-front-walk.002.png"
40037
+ "path": "../public/assets/game/player/misa-front-walk.001.png"
39487
40038
  },
39488
- "/assets/game/player/misa-front-walk.001.png": {
40039
+ "/assets/game/player/misa-front-walk.002.png": {
39489
40040
  "type": "image/png",
39490
- "etag": "\"155-r/wKRG+amQ/2TvYolFC2UPXHdC4\"",
40041
+ "etag": "\"155-UzIsnRRYoGpmHf5w9T7CLy/0ubw\"",
39491
40042
  "mtime": "2026-08-25T12:20:54.515Z",
39492
40043
  "size": 341,
39493
- "path": "../public/assets/game/player/misa-front-walk.001.png"
40044
+ "path": "../public/assets/game/player/misa-front-walk.002.png"
39494
40045
  },
39495
40046
  "/assets/game/player/misa-front-walk.003.png": {
39496
40047
  "type": "image/png",
@@ -39506,6 +40057,13 @@ const assets = {
39506
40057
  "size": 341,
39507
40058
  "path": "../public/assets/game/player/misa-front.png"
39508
40059
  },
40060
+ "/assets/game/player/misa-left-walk.002.png": {
40061
+ "type": "image/png",
40062
+ "etag": "\"13e-ZO/OghsjeAi+tGQq5r7slwZn0zg\"",
40063
+ "mtime": "2026-08-25T12:20:54.516Z",
40064
+ "size": 318,
40065
+ "path": "../public/assets/game/player/misa-left-walk.002.png"
40066
+ },
39509
40067
  "/assets/game/player/misa-left-walk.000.png": {
39510
40068
  "type": "image/png",
39511
40069
  "etag": "\"13f-Hlll+U+bluQUD8w3klFf7vww08M\"",
@@ -39520,13 +40078,6 @@ const assets = {
39520
40078
  "size": 319,
39521
40079
  "path": "../public/assets/game/player/misa-left-walk.001.png"
39522
40080
  },
39523
- "/assets/game/player/misa-left-walk.002.png": {
39524
- "type": "image/png",
39525
- "etag": "\"13e-ZO/OghsjeAi+tGQq5r7slwZn0zg\"",
39526
- "mtime": "2026-08-25T12:20:54.516Z",
39527
- "size": 318,
39528
- "path": "../public/assets/game/player/misa-left-walk.002.png"
39529
- },
39530
40081
  "/assets/game/player/misa-left-walk.003.png": {
39531
40082
  "type": "image/png",
39532
40083
  "etag": "\"13f-1/+5Oh6upY4V8FkyK62tdXeFc7o\"",
@@ -39576,89 +40127,12 @@ const assets = {
39576
40127
  "size": 302,
39577
40128
  "path": "../public/assets/game/player/misa-right.png"
39578
40129
  },
39579
- "/assets/game/wuwa/world-middle.png": {
39580
- "type": "image/png",
39581
- "etag": "\"16164-Dxu+NdXPnqoPFfWHwQi1oefgNvU\"",
39582
- "mtime": "2026-08-25T12:20:54.523Z",
39583
- "size": 90468,
39584
- "path": "../public/assets/game/wuwa/world-middle.png"
39585
- },
39586
- "/assets/game/wuwa/wu-aura.png": {
39587
- "type": "image/png",
39588
- "etag": "\"2055-NKWgEbJfTq5l56FGWi9WDWgBAbU\"",
39589
- "mtime": "2026-08-25T12:20:54.527Z",
39590
- "size": 8277,
39591
- "path": "../public/assets/game/wuwa/wu-aura.png"
39592
- },
39593
- "/assets/game/wuwa/wu-lead.png": {
39594
- "type": "image/png",
39595
- "etag": "\"3b04-agK45Y3g7QDPns/kmkhTGYSTPDM\"",
39596
- "mtime": "2026-08-25T12:20:54.527Z",
39597
- "size": 15108,
39598
- "path": "../public/assets/game/wuwa/wu-lead.png"
39599
- },
39600
- "/assets/game/wuwa/scene-map.png": {
39601
- "type": "image/png",
39602
- "etag": "\"682db-bU8mh8SeHPotvuaCc6PZzrWoT+A\"",
39603
- "mtime": "2026-08-25T12:20:54.521Z",
39604
- "size": 426715,
39605
- "path": "../public/assets/game/wuwa/scene-map.png"
39606
- },
39607
- "/assets/game/wuwa/world-far.png": {
39608
- "type": "image/png",
39609
- "etag": "\"6b391-DRcUWDyPUwUxDpAWplDh9StwdO0\"",
39610
- "mtime": "2026-08-25T12:20:54.522Z",
39611
- "size": 439185,
39612
- "path": "../public/assets/game/wuwa/world-far.png"
39613
- },
39614
- "/assets/game/wuwa/world-near.png": {
39615
- "type": "image/png",
39616
- "etag": "\"bbcd8-BrybeZP/ZGdD0v5NVC8T/Y4AXyM\"",
39617
- "mtime": "2026-08-25T12:20:54.527Z",
39618
- "size": 769240,
39619
- "path": "../public/assets/game/wuwa/world-near.png"
39620
- },
39621
- "/assets/game/wuwa/wu-slash.png": {
39622
- "type": "image/png",
39623
- "etag": "\"185-fVjcllSJOBMFcBWLIgBzTrzWGaY\"",
39624
- "mtime": "2026-08-25T12:20:54.527Z",
39625
- "size": 389,
39626
- "path": "../public/assets/game/wuwa/wu-slash.png"
39627
- },
39628
- "/assets/game/wuwa/wu-ring.png": {
39629
- "type": "image/png",
39630
- "etag": "\"65ac-/iIjlPgFNpD98zDsyCJYA8021E4\"",
39631
- "mtime": "2026-08-25T12:20:54.527Z",
39632
- "size": 26028,
39633
- "path": "../public/assets/game/wuwa/wu-ring.png"
39634
- },
39635
- "/assets/game/wuwa/wu-worker-0.png": {
39636
- "type": "image/png",
39637
- "etag": "\"3c59-fILvgyTv9TKRgrI9GQlRhaSR96U\"",
39638
- "mtime": "2026-08-25T12:20:54.528Z",
39639
- "size": 15449,
39640
- "path": "../public/assets/game/wuwa/wu-worker-0.png"
39641
- },
39642
- "/assets/game/wuwa/wu-worker-1.png": {
39643
- "type": "image/png",
39644
- "etag": "\"3cc8-0XoRr5qFC7X+vEEX+XrX4cRX+D0\"",
39645
- "mtime": "2026-08-25T12:20:54.529Z",
39646
- "size": 15560,
39647
- "path": "../public/assets/game/wuwa/wu-worker-1.png"
39648
- },
39649
- "/assets/game/wuwa/wu-worker-2.png": {
39650
- "type": "image/png",
39651
- "etag": "\"3c81-6qd4LQS0v2L4rTa0XAmekluER7c\"",
39652
- "mtime": "2026-08-25T12:20:54.529Z",
39653
- "size": 15489,
39654
- "path": "../public/assets/game/wuwa/wu-worker-2.png"
39655
- },
39656
- "/_nuxt/builds/meta/adc365b6-f636-4a2b-9527-79819c1e874b.json": {
40130
+ "/_nuxt/builds/meta/a66fdef7-dcfd-453b-b1f6-543c7dfd98d5.json": {
39657
40131
  "type": "application/json",
39658
- "etag": "\"58-cvbyKB3Xqgg0binYeKeJx/9SmAw\"",
39659
- "mtime": "2026-09-11T13:02:32.536Z",
40132
+ "etag": "\"58-QuM6hqsTD8xmSILeeMXx6uTHY5A\"",
40133
+ "mtime": "2026-09-12T03:59:50.786Z",
39660
40134
  "size": 88,
39661
- "path": "../public/_nuxt/builds/meta/adc365b6-f636-4a2b-9527-79819c1e874b.json"
40135
+ "path": "../public/_nuxt/builds/meta/a66fdef7-dcfd-453b-b1f6-543c7dfd98d5.json"
39662
40136
  },
39663
40137
  "/assets/game/character/yangyang-walk.glb": {
39664
40138
  "type": "model/gltf-binary",
@@ -39955,21 +40429,32 @@ const _lazy_OK7iTh = () => import('../routes/api/workshop/agents/_id_.patch.mjs'
39955
40429
  const _lazy_Ib89Gv = () => import('../routes/api/workshop/index.get.mjs');
39956
40430
  const _lazy_jGcf0C = () => import('../routes/api/workshop/index.post.mjs');
39957
40431
  const _lazy_fESV0_ = () => import('../routes/api/workshop/agents/subscribe.post.mjs');
40432
+ const _lazy_nO_s5_ = () => import('../routes/api/workshop/aml/datasets/_id_.delete.mjs');
39958
40433
  const _lazy_tV0TAv = () => import('../routes/api/workshop/aml/datasets/_id_.get.mjs');
40434
+ const _lazy_L8VYQ_ = () => import('../routes/api/workshop/aml/datasets/_id_.patch.mjs');
39959
40435
  const _lazy_X7krQs = () => import('../routes/api/workshop/aml/datasets/_id/preview.get.mjs');
39960
40436
  const _lazy_3J0Xcs = () => import('../routes/api/workshop/aml/index.get.mjs');
39961
40437
  const _lazy_fxhSeB = () => import('../routes/api/workshop/aml/index.post.mjs');
39962
- const _lazy_OhQ1TJ = () => import('../routes/api/workshop/aml/index2.get.mjs');
40438
+ const _lazy_KqY6Ut = () => import('../routes/api/workshop/aml/index2.get.mjs');
40439
+ const _lazy_DuVwH7 = () => import('../routes/api/workshop/aml/entities/prune.post.mjs');
40440
+ const _lazy_sTjAeo = () => import('../routes/api/workshop/aml/index3.get.mjs');
40441
+ const _lazy_qhdgDb = () => import('../routes/api/workshop/aml/env/recheck.post.mjs');
40442
+ const _lazy_p9v5He = () => import('../routes/api/workshop/aml/env/uv.post.mjs');
40443
+ const _lazy_pPdn3t = () => import('../routes/api/workshop/aml/env/venv.post.mjs');
40444
+ const _lazy_OhQ1TJ = () => import('../routes/api/workshop/aml/index4.get.mjs');
39963
40445
  const _lazy_fEDefo = () => import('../routes/api/workshop/index2.get.mjs');
40446
+ const _lazy_w4VKE0 = () => import('../routes/api/workshop/aml/jobs/_id_.delete.mjs');
39964
40447
  const _lazy_wnp00i = () => import('../routes/api/workshop/aml/jobs/_id_.get.mjs');
39965
40448
  const _lazy_i_nokq = () => import('../routes/api/workshop/aml/jobs/_id/cancel.post.mjs');
39966
40449
  const _lazy_sKQYLY = () => import('../routes/api/workshop/aml/jobs/_id/logs.get.mjs');
39967
40450
  const _lazy_dJdojE = () => import('../routes/api/workshop/aml/jobs/_id/retry.post.mjs');
39968
- const _lazy_giSCA5 = () => import('../routes/api/workshop/aml/index3.get.mjs');
40451
+ const _lazy_giSCA5 = () => import('../routes/api/workshop/aml/index5.get.mjs');
39969
40452
  const _lazy_FDpvz_ = () => import('../routes/api/workshop/aml/index2.post.mjs');
40453
+ const _lazy_MCHjBO = () => import('../routes/api/workshop/aml/models/_id_.delete.mjs');
40454
+ const _lazy_FFXs4U = () => import('../routes/api/workshop/aml/models/_id_.patch.mjs');
39970
40455
  const _lazy_gykCLA = () => import('../routes/api/workshop/aml/models/_id/predict.post.mjs');
39971
40456
  const _lazy_iC7aQp = () => import('../routes/api/workshop/aml/models/_id/promote.post.mjs');
39972
- const _lazy_rROxR2 = () => import('../routes/api/workshop/aml/index4.get.mjs');
40457
+ const _lazy_rROxR2 = () => import('../routes/api/workshop/aml/index6.get.mjs');
39973
40458
  const _lazy_oKzzOL = () => import('../routes/api/workshop/approvals/_id/decide.post.mjs');
39974
40459
  const _lazy_N57pWC = () => import('../routes/api/workshop/index3.get.mjs');
39975
40460
  const _lazy_N7zTgE = () => import('../routes/api/workshop/assets/character/_id_.delete.mjs');
@@ -40191,18 +40676,29 @@ const handlers = [
40191
40676
  { route: '/api/workshop/agents', handler: _lazy_Ib89Gv, lazy: true, middleware: false, method: "get" },
40192
40677
  { route: '/api/workshop/agents', handler: _lazy_jGcf0C, lazy: true, middleware: false, method: "post" },
40193
40678
  { route: '/api/workshop/agents/subscribe', handler: _lazy_fESV0_, lazy: true, middleware: false, method: "post" },
40679
+ { route: '/api/workshop/aml/datasets/:id', handler: _lazy_nO_s5_, lazy: true, middleware: false, method: "delete" },
40194
40680
  { route: '/api/workshop/aml/datasets/:id', handler: _lazy_tV0TAv, lazy: true, middleware: false, method: "get" },
40681
+ { route: '/api/workshop/aml/datasets/:id', handler: _lazy_L8VYQ_, lazy: true, middleware: false, method: "patch" },
40195
40682
  { route: '/api/workshop/aml/datasets/:id/preview', handler: _lazy_X7krQs, lazy: true, middleware: false, method: "get" },
40196
40683
  { route: '/api/workshop/aml/datasets', handler: _lazy_3J0Xcs, lazy: true, middleware: false, method: "get" },
40197
40684
  { route: '/api/workshop/aml/datasets', handler: _lazy_fxhSeB, lazy: true, middleware: false, method: "post" },
40685
+ { route: '/api/workshop/aml/entities', handler: _lazy_KqY6Ut, lazy: true, middleware: false, method: "get" },
40686
+ { route: '/api/workshop/aml/entities/prune', handler: _lazy_DuVwH7, lazy: true, middleware: false, method: "post" },
40687
+ { route: '/api/workshop/aml/env', handler: _lazy_sTjAeo, lazy: true, middleware: false, method: "get" },
40688
+ { route: '/api/workshop/aml/env/recheck', handler: _lazy_qhdgDb, lazy: true, middleware: false, method: "post" },
40689
+ { route: '/api/workshop/aml/env/uv', handler: _lazy_p9v5He, lazy: true, middleware: false, method: "post" },
40690
+ { route: '/api/workshop/aml/env/venv', handler: _lazy_pPdn3t, lazy: true, middleware: false, method: "post" },
40198
40691
  { route: '/api/workshop/aml/experiments', handler: _lazy_OhQ1TJ, lazy: true, middleware: false, method: "get" },
40199
40692
  { route: '/api/workshop/aml', handler: _lazy_fEDefo, lazy: true, middleware: false, method: "get" },
40693
+ { route: '/api/workshop/aml/jobs/:id', handler: _lazy_w4VKE0, lazy: true, middleware: false, method: "delete" },
40200
40694
  { route: '/api/workshop/aml/jobs/:id', handler: _lazy_wnp00i, lazy: true, middleware: false, method: "get" },
40201
40695
  { route: '/api/workshop/aml/jobs/:id/cancel', handler: _lazy_i_nokq, lazy: true, middleware: false, method: "post" },
40202
40696
  { route: '/api/workshop/aml/jobs/:id/logs', handler: _lazy_sKQYLY, lazy: true, middleware: false, method: "get" },
40203
40697
  { route: '/api/workshop/aml/jobs/:id/retry', handler: _lazy_dJdojE, lazy: true, middleware: false, method: "post" },
40204
40698
  { route: '/api/workshop/aml/jobs', handler: _lazy_giSCA5, lazy: true, middleware: false, method: "get" },
40205
40699
  { route: '/api/workshop/aml/jobs', handler: _lazy_FDpvz_, lazy: true, middleware: false, method: "post" },
40700
+ { route: '/api/workshop/aml/models/:id', handler: _lazy_MCHjBO, lazy: true, middleware: false, method: "delete" },
40701
+ { route: '/api/workshop/aml/models/:id', handler: _lazy_FFXs4U, lazy: true, middleware: false, method: "patch" },
40206
40702
  { route: '/api/workshop/aml/models/:id/predict', handler: _lazy_gykCLA, lazy: true, middleware: false, method: "post" },
40207
40703
  { route: '/api/workshop/aml/models/:id/promote', handler: _lazy_iC7aQp, lazy: true, middleware: false, method: "post" },
40208
40704
  { route: '/api/workshop/aml/models', handler: _lazy_rROxR2, lazy: true, middleware: false, method: "get" },
@@ -40764,5 +41260,5 @@ function setupGracefulShutdown(listener, nitroApp) {
40764
41260
  });
40765
41261
  }
40766
41262
 
40767
- export { getDcwController as $, getSystemConfigService as A, defineWebSocketHandler as B, respondTerminalUi as C, abortTerminal as D, sendTerminalInput as E, resolveUserByToken as F, findLiveTerminalPidByAgent as G, terminalSessionSnapshot as H, subscribeTerminal as I, listHarnessProcesses as J, AppError as K, createEventStream as L, userService as M, readValidatedBody as N, zValidator as O, getValidatedQuery as P, extractBearerToken as Q, userRepository as R, getRequestHeader as S, setResponseStatus as T, parseJson as U, getToolApprovals as V, audit as W, getAgentNodeBindingRepo as X, ErrorCodes as Y, lineMode as Z, getDaqController as _, trapUnhandledNodeErrors as a, relative as a$, visibleLineIds as a0, getHeader as a1, getAmlRuntime as a2, requireLineMode as a3, loadManifest as a4, filterByLine as a5, parseDatasetSpec as a6, buildDataset as a7, recordOps as a8, runtimeStatus as a9, getDaqQueue as aA, listDaqTemplates as aB, daqInfraStatus as aC, daqInfraConfig as aD, getDaqTemplateRegistry as aE, normalizeDriverKind as aF, bindDcwBroadcast as aG, gateDangerous as aH, getRecipeRollBackManager as aI, isPrivilegedRole as aJ, listDcwTemplates as aK, emitLineLifecycle as aL, getDcwTemplateRegistry as aM, checkAllHarnessAvailability as aN, harnessMetas as aO, StdioJsonRpcClient as aP, spawnLineProcess as aQ, getHitlRegistry as aR, notifyGrantsChanged as aS, setPluginEnabled as aT, reloadPluginHost as aU, publishSceneLayoutEvent as aV, encodePath as aW, buildAssetsURL as aX, publicAssetsURL as aY, defineRenderHandler as aZ, getRouteRules as a_, cancelJob as aa, jobLogsTail as ab, retryJob as ac, submitJob as ad, predictWithModel as ae, verifyModelArtifact as af, transitionModel as ag, loadJsonFile as ah, saveJsonFileAtomic as ai, ensureDataDir as aj, readMultipartFormData as ak, ensureLeadSchedulerLoop as al, getChannelPluginsRepo as am, notifyToolChange as an, listTerminalSessions as ao, broadcastSceneEvent as ap, bindDaqHostPorts as aq, bindDaqBroadcast as ar, bumpTaggedSamples as as, getDcwLineRepo as at, getDcwRecipeRepo as au, getAllActiveLineRuns as av, getActiveLineRun as aw, deviceScenePayload as ax, daqRuntimeSettings as ay, tsdbReady as az, useNitroApp as b, joinURL as b0, getResponseStatusText as b1, getResponseStatus as b2, createHooks as b3, sanitizeStatusCode as b4, klona as b5, isEqual as b6, setCookie as b7, getCookie as b8, deleteCookie as b9, $fetch as ba, baseURL as bb, defu as bc, getRequestProtocol as bd, appendResponseHeader as be, DAQ_TEMPLATES as bf, DCW_TEMPLATES as bg, daqKeyFromRef as bh, DAQ_DRIVERS as bi, DCW_DRIVERS as bj, DAQ_TEMPLATE_ICONS as bk, DCW_LINE_COLORS as bl, host as bm, ws$1 as bn, channelPlugins_repo as bo, 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, pluginI18nBundle as x, pluginManifest as y, getQuery as z };
41263
+ export { getDcwController as $, getSystemConfigService as A, defineWebSocketHandler as B, respondTerminalUi as C, abortTerminal as D, sendTerminalInput as E, resolveUserByToken as F, findLiveTerminalPidByAgent as G, terminalSessionSnapshot as H, subscribeTerminal as I, listHarnessProcesses as J, AppError as K, createEventStream as L, userService as M, readValidatedBody as N, zValidator as O, getValidatedQuery as P, extractBearerToken as Q, userRepository as R, getRequestHeader as S, setResponseStatus as T, parseJson as U, getToolApprovals as V, audit as W, getAgentNodeBindingRepo as X, ErrorCodes as Y, lineMode as Z, getDaqController as _, trapUnhandledNodeErrors as a, harnessMetas as a$, visibleLineIds as a0, getHeader as a1, getAmlRuntime as a2, requireLineMode as a3, recordOps as a4, isInsideAmlRoot as a5, createLogger as a6, loadManifest as a7, filterByLine as a8, parseDatasetSpec as a9, notifyToolChange as aA, listTerminalSessions as aB, broadcastSceneEvent as aC, bindDaqHostPorts as aD, bindDaqBroadcast as aE, bumpTaggedSamples as aF, getDcwLineRepo as aG, getDcwRecipeRepo as aH, getAllActiveLineRuns as aI, getActiveLineRun as aJ, deviceScenePayload as aK, daqRuntimeSettings as aL, tsdbReady as aM, getDaqQueue as aN, listDaqTemplates as aO, daqInfraStatus as aP, daqInfraConfig as aQ, getDaqTemplateRegistry as aR, normalizeDriverKind as aS, bindDcwBroadcast as aT, gateDangerous as aU, getRecipeRollBackManager as aV, isPrivilegedRole as aW, listDcwTemplates as aX, emitLineLifecycle as aY, getDcwTemplateRegistry as aZ, checkAllHarnessAvailability as a_, buildDataset as aa, probeUv as ab, probePython as ac, isVenvReady as ad, venvDir as ae, requirementsHash as af, venvPythonPath as ag, amlRootSourceLabel as ah, resetProbeCache as ai, installUv as aj, ensureVenv as ak, amlSettings as al, runtimeStatus as am, cancelJob as an, jobLogsTail as ao, retryJob as ap, submitJob as aq, predictWithModel as ar, verifyModelArtifact as as, transitionModel as at, loadJsonFile as au, saveJsonFileAtomic as av, ensureDataDir as aw, readMultipartFormData as ax, ensureLeadSchedulerLoop as ay, getChannelPluginsRepo as az, useNitroApp as b, StdioJsonRpcClient as b0, spawnLineProcess as b1, getHitlRegistry as b2, notifyGrantsChanged as b3, setPluginEnabled as b4, reloadPluginHost as b5, publishSceneLayoutEvent as b6, encodePath as b7, buildAssetsURL as b8, publicAssetsURL as b9, ws$1 as bA, channelPlugins_repo as bB, defineRenderHandler as ba, getRouteRules as bb, relative as bc, joinURL as bd, getResponseStatusText as be, getResponseStatus as bf, createHooks as bg, sanitizeStatusCode as bh, klona as bi, isEqual as bj, setCookie as bk, getCookie as bl, deleteCookie as bm, $fetch as bn, baseURL as bo, defu as bp, getRequestProtocol as bq, appendResponseHeader as br, DAQ_TEMPLATES as bs, DCW_TEMPLATES as bt, daqKeyFromRef as bu, DAQ_DRIVERS as bv, DCW_DRIVERS as bw, DAQ_TEMPLATE_ICONS as bx, DCW_LINE_COLORS as by, host as bz, 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, pluginI18nBundle as x, pluginManifest as y, getQuery as z };
40768
41264
  //# sourceMappingURL=nitro.mjs.map