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
@@ -1,7 +1,7 @@
1
1
  import { _ as _plugin_vue_export_helper_default, u as useI18n, at as useHttp, b as useUserStore } from '../virtual/entry.mjs';
2
2
  import { u as useWorkspacesStore } from './workspaces-BuydxM-3.mjs';
3
3
  import { a as apiErrorMessage } from './api-error-dul30BYQ.mjs';
4
- import { u as useEntitiesStore, a as useWorkshopWs } from './useWorkshopWs-CprkZEdq.mjs';
4
+ import { u as useEntitiesStore, a as useWorkshopWs } from './useWorkshopWs-C_I7q9As.mjs';
5
5
  import { s as setInterval, n as nowLocalIso } from './useLocalTime-9a4B-aHv.mjs';
6
6
  import { u as useTownBus } from './useTownBus-D9SoIsAN.mjs';
7
7
  import { u as useDcwStream } from './useDcwStream-CBbiYnWe.mjs';
@@ -9,7 +9,7 @@ import { u as useDaqStream } from './useDaqStream-CIBaiGAl.mjs';
9
9
  import { u as useDeviceTwins } from './useDeviceTwins-Yko6nNPF.mjs';
10
10
  import { shallowRef, ref, computed, toValue, watch, nextTick, defineComponent, reactive, mergeProps, unref, readonly, getCurrentScope, onScopeDispose, getCurrentInstance, toRef, customRef, useSSRContext } from 'vue';
11
11
  import { ssrRenderAttrs, ssrInterpolate, ssrRenderAttr, ssrRenderClass, ssrIncludeBooleanAttr, ssrRenderComponent, ssrRenderList, ssrRenderStyle, ssrLooseContain, ssrLooseEqual } from 'vue/server-renderer';
12
- import { bf as DAQ_TEMPLATES } from '../_/nitro.mjs';
12
+ import { bs as DAQ_TEMPLATES } from '../_/nitro.mjs';
13
13
  import * as THREE from 'three';
14
14
  import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
15
15
  import { RoomEnvironment } from 'three/examples/jsm/environments/RoomEnvironment.js';
@@ -2323,82 +2323,82 @@ var TownView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
2323
2323
  return (_ctx, _push, _parent, _attrs) => {
2324
2324
  const _component_WorkshopAssetLibrary = AssetLibrary_default;
2325
2325
  const _component_WorkshopDeviceTwinPanel = DeviceTwinPanel_default;
2326
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "town-view" }, _attrs))} data-v-1444af6d><header class="topnav" data-v-1444af6d><div class="brand" data-v-1444af6d><svg class="brand-glyph" viewBox="0 0 32 32" fill="none" aria-hidden="true" data-v-1444af6d><path d="M16 2.5 27.5 9v14L16 29.5 4.5 23V9L16 2.5Z" stroke="#35e0a0" stroke-width="1.6" data-v-1444af6d></path><path d="M16 8.2 22.5 12v8L16 23.8 9.5 20v-8L16 8.2Z" stroke="#41c8f4" stroke-width="1.3" opacity=".85" data-v-1444af6d></path><circle cx="16" cy="16" r="2.4" fill="#35e0a0" data-v-1444af6d></circle><circle cx="25.5" cy="7.5" r="1.6" fill="#41c8f4" data-v-1444af6d></circle></svg><div data-v-1444af6d><div class="brand-name" data-v-1444af6d> DIGITAL <em data-v-1444af6d>TWIN</em></div><div class="brand-sub" data-v-1444af6d> AGENTWORKSHOP · ${ssrInterpolate(_ctx.$t("townView.klyi8yg127"))}</div></div></div><nav class="nav-tabs"${ssrRenderAttr("aria-label", _ctx.$t("townView.k1c9jyta001"))} data-v-1444af6d><div class="seg" data-v-1444af6d><button class="${ssrRenderClass({ on: unref(mode) === "browse" })}" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k48dwh027"))}</button><button class="${ssrRenderClass({ on: unref(mode) === "edit" })}" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k45eb0028"))}</button></div><button class="nav-action"${ssrIncludeBooleanAttr(unref(mode) !== "edit") ? " disabled" : ""}${ssrRenderAttr("title", unref(mode) === "edit" ? "把全部设备的位置/朝向/缩放写入数据库" : "运行模式只读")} data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1b3bk8t029"))}</button>`);
2327
- if (unref(saveState) && unref(saveState).state !== "idle") _push(`<span class="${ssrRenderClass([`s-${unref(saveState).state}`, "save-chip"])}" data-v-1444af6d>${ssrInterpolate(unref(saveStateLabel))}</span>`);
2326
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "town-view" }, _attrs))} data-v-5660e131><header class="topnav" data-v-5660e131><div class="brand" data-v-5660e131><svg class="brand-glyph" viewBox="0 0 32 32" fill="none" aria-hidden="true" data-v-5660e131><path d="M16 2.5 27.5 9v14L16 29.5 4.5 23V9L16 2.5Z" stroke="#35e0a0" stroke-width="1.6" data-v-5660e131></path><path d="M16 8.2 22.5 12v8L16 23.8 9.5 20v-8L16 8.2Z" stroke="#41c8f4" stroke-width="1.3" opacity=".85" data-v-5660e131></path><circle cx="16" cy="16" r="2.4" fill="#35e0a0" data-v-5660e131></circle><circle cx="25.5" cy="7.5" r="1.6" fill="#41c8f4" data-v-5660e131></circle></svg><div data-v-5660e131><div class="brand-name" data-v-5660e131> DIGITAL <em data-v-5660e131>TWIN</em></div><div class="brand-sub" data-v-5660e131> AGENTWORKSHOP · ${ssrInterpolate(_ctx.$t("townView.klyi8yg127"))}</div></div></div><nav class="nav-tabs"${ssrRenderAttr("aria-label", _ctx.$t("townView.k1c9jyta001"))} data-v-5660e131><div class="seg" data-v-5660e131><button class="${ssrRenderClass({ on: unref(mode) === "browse" })}" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k48dwh027"))}</button><button class="${ssrRenderClass({ on: unref(mode) === "edit" })}" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k45eb0028"))}</button></div><button class="nav-action"${ssrIncludeBooleanAttr(unref(mode) !== "edit") ? " disabled" : ""}${ssrRenderAttr("title", unref(mode) === "edit" ? "把全部设备的位置/朝向/缩放写入数据库" : "运行模式只读")} data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1b3bk8t029"))}</button>`);
2327
+ if (unref(saveState) && unref(saveState).state !== "idle") _push(`<span class="${ssrRenderClass([`s-${unref(saveState).state}`, "save-chip"])}" data-v-5660e131>${ssrInterpolate(unref(saveStateLabel))}</span>`);
2328
2328
  else _push(`<!---->`);
2329
- _push(`</nav><div class="nav-right" data-v-1444af6d><span class="${ssrRenderClass([{ "nav-bell-warn": unref(activeAlarmCount) > 0 }, "nav-chip mono"])}"${ssrRenderAttr("title", _ctx.$t("townView.k1fsi3ir002"))} data-v-1444af6d>◉ ${ssrInterpolate(unref(activeAlarmCount))}</span><span class="nav-chip mono" data-v-1444af6d>${ssrInterpolate(unref(fps))} FPS</span><div class="avatar-chip"${ssrRenderAttr("title", _ctx.$t("townView.k1demf38003"))} data-v-1444af6d><div class="avatar-fallback" data-v-1444af6d>${ssrInterpolate((unref(userStore).user?.name ?? "OP").slice(0, 2).toUpperCase())}</div><span data-v-1444af6d>${ssrInterpolate(unref(userStore).user?.name || _ctx.$t("townView.k1pub99m139"))}</span></div></div></header><div class="app" data-v-1444af6d><aside class="rail rail-left" data-v-1444af6d><section class="panel" data-v-1444af6d><div class="panel-hd" data-v-1444af6d><h3 data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1k75lzy030"))}</h3><span class="panel-tag" data-v-1444af6d>${ssrInterpolate(unref(deviceModels).length)}</span></div>`);
2329
+ _push(`</nav><div class="nav-right" data-v-5660e131><span class="${ssrRenderClass([{ "nav-bell-warn": unref(activeAlarmCount) > 0 }, "nav-chip mono"])}"${ssrRenderAttr("title", _ctx.$t("townView.k1fsi3ir002"))} data-v-5660e131>◉ ${ssrInterpolate(unref(activeAlarmCount))}</span><span class="nav-chip mono" data-v-5660e131>${ssrInterpolate(unref(fps))} FPS</span><div class="avatar-chip"${ssrRenderAttr("title", _ctx.$t("townView.k1demf38003"))} data-v-5660e131><div class="avatar-fallback" data-v-5660e131>${ssrInterpolate((unref(userStore).user?.name ?? "OP").slice(0, 2).toUpperCase())}</div><span data-v-5660e131>${ssrInterpolate(unref(userStore).user?.name || _ctx.$t("townView.k1pub99m139"))}</span></div></div></header><div class="app" data-v-5660e131><aside class="rail rail-left" data-v-5660e131><section class="panel" data-v-5660e131><div class="panel-hd" data-v-5660e131><h3 data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1k75lzy030"))}</h3><span class="panel-tag" data-v-5660e131>${ssrInterpolate(unref(deviceModels).length)}</span></div>`);
2330
2330
  _push(ssrRenderComponent(_component_WorkshopAssetLibrary, { class: "lib-embed" }, null, _parent));
2331
- _push(`</section><section class="panel" data-v-1444af6d><div class="panel-hd" data-v-1444af6d><h3 data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k2gwyas031"))}</h3><span class="panel-tag" data-v-1444af6d>${ssrInterpolate(unref(daqTwins).length)}</span></div><div class="daq-ctrl" data-v-1444af6d><button class="${ssrRenderClass([{ on: unref(daq).controller.running }, "daq-ctl-btn"])}"${ssrRenderAttr("title", unref(daq).controller.running ? "暂停全部采集:停止所有启用节点的采样(节点级启停独立)" : "恢复全部采集:仅启用节点恢复采集(手动停用的保持停用)")} data-v-1444af6d>${ssrInterpolate(unref(daq).controller.running ? _ctx.$t("townView.k3w3j8f140") : _ctx.$t("townView.k3n93ed175"))}</button><label class="daq-ctl-cycle mono"${ssrRenderAttr("title", _ctx.$t("townView.khzlyf5004"))} data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k3xg3w032"))} <input type="number" min="200" max="60000" step="100"${ssrRenderAttr("value", unref(daq).controller.defaultIntervalMs)} data-v-1444af6d>ms </label></div><div class="daq-list" data-v-1444af6d><!--[-->`);
2331
+ _push(`</section><section class="panel" data-v-5660e131><div class="panel-hd" data-v-5660e131><h3 data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k2gwyas031"))}</h3><span class="panel-tag" data-v-5660e131>${ssrInterpolate(unref(daqTwins).length)}</span></div><div class="daq-ctrl" data-v-5660e131><button class="${ssrRenderClass([{ on: unref(daq).controller.running }, "daq-ctl-btn"])}"${ssrRenderAttr("title", unref(daq).controller.running ? "暂停全部采集:停止所有启用节点的采样(节点级启停独立)" : "恢复全部采集:仅启用节点恢复采集(手动停用的保持停用)")} data-v-5660e131>${ssrInterpolate(unref(daq).controller.running ? _ctx.$t("townView.k3w3j8f140") : _ctx.$t("townView.k3n93ed175"))}</button><label class="daq-ctl-cycle mono"${ssrRenderAttr("title", _ctx.$t("townView.khzlyf5004"))} data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k3xg3w032"))} <input type="number" min="200" max="60000" step="100"${ssrRenderAttr("value", unref(daq).controller.defaultIntervalMs)} data-v-5660e131>ms </label></div><div class="daq-list" data-v-5660e131><!--[-->`);
2332
2332
  ssrRenderList(unref(daqTemplates), (tpl) => {
2333
- _push(`<div class="daq-group" data-v-1444af6d><div class="${ssrRenderClass([{ open: !!unref(treeOpen)[`daq:${tpl.id}`] }, "daq-card tpl"])}" role="button" tabindex="0"${ssrRenderAttr("title", _ctx.$t("townView.k2tplxp0001", {
2333
+ _push(`<div class="daq-group" data-v-5660e131><div class="${ssrRenderClass([{ open: !!unref(treeOpen)[`daq:${tpl.id}`] }, "daq-card tpl"])}" role="button" tabindex="0"${ssrRenderAttr("title", _ctx.$t("townView.k2tplxp0001", {
2334
2334
  p0: tpl.name,
2335
2335
  p1: tpl.ch,
2336
2336
  p2: tpl.min,
2337
2337
  p3: tpl.max,
2338
2338
  p4: tpl.unit
2339
- }))} data-v-1444af6d><span class="daq-caret" data-v-1444af6d>▶</span><span class="daq-ico" data-v-1444af6d><svg class="daq-svg" viewBox="0 0 24 24" data-v-1444af6d>${daqIcon(tpl.icon) ?? ""}</svg></span><div class="daq-meta" data-v-1444af6d><span class="daq-name" data-v-1444af6d>${ssrInterpolate(tpl.name)}</span><span class="daq-code" data-v-1444af6d>${ssrInterpolate(tpl.code)}</span></div>`);
2340
- if (unref(mode) === "edit") _push(`<button class="daq-add"${ssrRenderAttr("title", _ctx.$t("townView.k2tplxp0002", { p0: tpl.name }))} data-v-1444af6d> + </button>`);
2339
+ }))} data-v-5660e131><span class="daq-caret" data-v-5660e131>▶</span><span class="daq-ico" data-v-5660e131><svg class="daq-svg" viewBox="0 0 24 24" data-v-5660e131>${daqIcon(tpl.icon) ?? ""}</svg></span><div class="daq-meta" data-v-5660e131><span class="daq-name" data-v-5660e131>${ssrInterpolate(tpl.name)}</span><span class="daq-code" data-v-5660e131>${ssrInterpolate(tpl.code)}</span></div>`);
2340
+ if (unref(mode) === "edit") _push(`<button class="daq-add"${ssrRenderAttr("title", _ctx.$t("townView.k2tplxp0002", { p0: tpl.name }))} data-v-5660e131> + </button>`);
2341
2341
  else _push(`<!---->`);
2342
- _push(`<span class="daq-count" data-v-1444af6d>×${ssrInterpolate(unref(daqNodesByTpl).get(tpl.id)?.length ?? 0)}</span></div>`);
2342
+ _push(`<span class="daq-count" data-v-5660e131>×${ssrInterpolate(unref(daqNodesByTpl).get(tpl.id)?.length ?? 0)}</span></div>`);
2343
2343
  if (unref(treeOpen)[`daq:${tpl.id}`]) {
2344
- _push(`<div class="daq-children" data-v-1444af6d><!--[-->`);
2344
+ _push(`<div class="daq-children" data-v-5660e131><!--[-->`);
2345
2345
  ssrRenderList(unref(daqNodesByTpl).get(tpl.id) ?? [], (n) => {
2346
- _push(`<div class="${ssrRenderClass([{ placed: typeof n.posX === "number" }, "daq-node"])}"${ssrRenderAttr("draggable", unref(mode) === "edit")}${ssrRenderAttr("title", typeof n.posX === "number" ? _ctx.$t("townView.k2tplxp0005") : _ctx.$t("townView.k2tplxp0006"))} data-v-1444af6d><span class="${ssrRenderClass([daqLeafState(n), "node-dot"])}" data-v-1444af6d></span><div class="daq-meta" data-v-1444af6d><span class="daq-name" data-v-1444af6d>${ssrInterpolate(n.name)}</span><span class="daq-node-sub" data-v-1444af6d><span class="node-val mono" data-v-1444af6d>${ssrInterpolate(n.value != null ? `${n.value.toFixed(tpl.decimals)} ${tpl.unit}` : "--")}</span><span class="node-dev" data-v-1444af6d>${ssrInterpolate(n.deviceBindingId ? unref(deviceTwins).byId(n.deviceBindingId)?.name ?? _ctx.$t("townView.k3own4q148") : _ctx.$t("townView.k3own4q148"))}</span></span></div>`);
2347
- if (typeof n.posX === "number") _push(`<span class="scene-cur" data-v-1444af6d>✓</span>`);
2346
+ _push(`<div class="${ssrRenderClass([{ placed: typeof n.posX === "number" }, "daq-node"])}"${ssrRenderAttr("draggable", unref(mode) === "edit")}${ssrRenderAttr("title", typeof n.posX === "number" ? _ctx.$t("townView.k2tplxp0005") : _ctx.$t("townView.k2tplxp0006"))} data-v-5660e131><span class="${ssrRenderClass([daqLeafState(n), "node-dot"])}" data-v-5660e131></span><div class="daq-meta" data-v-5660e131><span class="daq-name" data-v-5660e131>${ssrInterpolate(n.name)}</span><span class="daq-node-sub" data-v-5660e131><span class="node-val mono" data-v-5660e131>${ssrInterpolate(n.value != null ? `${n.value.toFixed(tpl.decimals)} ${tpl.unit}` : "--")}</span><span class="node-dev" data-v-5660e131>${ssrInterpolate(n.deviceBindingId ? unref(deviceTwins).byId(n.deviceBindingId)?.name ?? _ctx.$t("townView.k3own4q148") : _ctx.$t("townView.k3own4q148"))}</span></span></div>`);
2347
+ if (typeof n.posX === "number") _push(`<span class="scene-cur" data-v-5660e131>✓</span>`);
2348
2348
  else _push(`<!---->`);
2349
2349
  _push(`</div>`);
2350
2350
  });
2351
2351
  _push(`<!--]-->`);
2352
- if (!unref(daqNodesByTpl).get(tpl.id)?.length) _push(`<div class="daq-empty-hint" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k2tplxp0003"))}</div>`);
2352
+ if (!unref(daqNodesByTpl).get(tpl.id)?.length) _push(`<div class="daq-empty-hint" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k2tplxp0003"))}</div>`);
2353
2353
  else _push(`<!---->`);
2354
2354
  _push(`</div>`);
2355
2355
  } else _push(`<!---->`);
2356
2356
  _push(`</div>`);
2357
2357
  });
2358
- _push(`<!--]--></div></section><section class="panel" data-v-1444af6d><div class="panel-hd" data-v-1444af6d><h3 data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.km7ayhi033"))}</h3><span class="panel-tag" data-v-1444af6d>${ssrInterpolate(unref(dcw).nodes.length)}</span></div><div class="daq-list" data-v-1444af6d><!--[-->`);
2358
+ _push(`<!--]--></div></section><section class="panel" data-v-5660e131><div class="panel-hd" data-v-5660e131><h3 data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.km7ayhi033"))}</h3><span class="panel-tag" data-v-5660e131>${ssrInterpolate(unref(dcw).nodes.length)}</span></div><div class="daq-list" data-v-5660e131><!--[-->`);
2359
2359
  ssrRenderList(unref(dcwTemplates), (tpl) => {
2360
- _push(`<div class="daq-group" data-v-1444af6d><div class="${ssrRenderClass([{ open: !!unref(treeOpen)[`dcw:${tpl.id}`] }, "daq-card tpl"])}" role="button" tabindex="0"${ssrRenderAttr("title", _ctx.$t("townView.k2tplxp0001", {
2360
+ _push(`<div class="daq-group" data-v-5660e131><div class="${ssrRenderClass([{ open: !!unref(treeOpen)[`dcw:${tpl.id}`] }, "daq-card tpl"])}" role="button" tabindex="0"${ssrRenderAttr("title", _ctx.$t("townView.k2tplxp0001", {
2361
2361
  p0: tpl.name,
2362
2362
  p1: tpl.ch,
2363
2363
  p2: tpl.min,
2364
2364
  p3: tpl.max,
2365
2365
  p4: tpl.unit
2366
- }))} data-v-1444af6d><span class="daq-caret" data-v-1444af6d>▶</span><span class="daq-ico" data-v-1444af6d><svg class="daq-svg" viewBox="0 0 24 24" data-v-1444af6d>${daqIcon(tpl.icon) ?? ""}</svg></span><div class="daq-meta" data-v-1444af6d><span class="daq-name" data-v-1444af6d>${ssrInterpolate(tpl.name)}</span><span class="daq-code" data-v-1444af6d>${ssrInterpolate(tpl.code)}</span></div>`);
2367
- if (unref(mode) === "edit") _push(`<button class="daq-add"${ssrRenderAttr("title", _ctx.$t("townView.k2tplxp0002", { p0: tpl.name }))} data-v-1444af6d> + </button>`);
2366
+ }))} data-v-5660e131><span class="daq-caret" data-v-5660e131>▶</span><span class="daq-ico" data-v-5660e131><svg class="daq-svg" viewBox="0 0 24 24" data-v-5660e131>${daqIcon(tpl.icon) ?? ""}</svg></span><div class="daq-meta" data-v-5660e131><span class="daq-name" data-v-5660e131>${ssrInterpolate(tpl.name)}</span><span class="daq-code" data-v-5660e131>${ssrInterpolate(tpl.code)}</span></div>`);
2367
+ if (unref(mode) === "edit") _push(`<button class="daq-add"${ssrRenderAttr("title", _ctx.$t("townView.k2tplxp0002", { p0: tpl.name }))} data-v-5660e131> + </button>`);
2368
2368
  else _push(`<!---->`);
2369
- _push(`<span class="daq-count" data-v-1444af6d>×${ssrInterpolate(unref(dcwNodesByTpl).get(tpl.id)?.length ?? 0)}</span></div>`);
2369
+ _push(`<span class="daq-count" data-v-5660e131>×${ssrInterpolate(unref(dcwNodesByTpl).get(tpl.id)?.length ?? 0)}</span></div>`);
2370
2370
  if (unref(treeOpen)[`dcw:${tpl.id}`]) {
2371
- _push(`<div class="daq-children" data-v-1444af6d><!--[-->`);
2371
+ _push(`<div class="daq-children" data-v-5660e131><!--[-->`);
2372
2372
  ssrRenderList(unref(dcwNodesByTpl).get(tpl.id) ?? [], (n) => {
2373
- _push(`<div class="${ssrRenderClass([{ placed: typeof n.posX === "number" }, "daq-node"])}"${ssrRenderAttr("draggable", unref(mode) === "edit")}${ssrRenderAttr("title", typeof n.posX === "number" ? _ctx.$t("townView.k2tplxp0005") : _ctx.$t("townView.k2tplxp0006"))} data-v-1444af6d><span class="${ssrRenderClass([dcwLeafState(n), "node-dot"])}" data-v-1444af6d></span><div class="daq-meta" data-v-1444af6d><span class="daq-name" data-v-1444af6d>${ssrInterpolate(n.name)}</span><span class="daq-node-sub" data-v-1444af6d><span class="node-val mono" data-v-1444af6d>${ssrInterpolate(n.value != null ? `${n.value.toFixed(tpl.decimals)} ${tpl.unit}` : "--")}</span><span class="node-dev" data-v-1444af6d>${ssrInterpolate(n.deviceBindingId ? unref(deviceTwins).byId(n.deviceBindingId)?.name ?? _ctx.$t("townView.k3own4q148") : _ctx.$t("townView.k3own4q148"))}</span></span></div>`);
2374
- if (typeof n.posX === "number") _push(`<span class="scene-cur" data-v-1444af6d>✓</span>`);
2373
+ _push(`<div class="${ssrRenderClass([{ placed: typeof n.posX === "number" }, "daq-node"])}"${ssrRenderAttr("draggable", unref(mode) === "edit")}${ssrRenderAttr("title", typeof n.posX === "number" ? _ctx.$t("townView.k2tplxp0005") : _ctx.$t("townView.k2tplxp0006"))} data-v-5660e131><span class="${ssrRenderClass([dcwLeafState(n), "node-dot"])}" data-v-5660e131></span><div class="daq-meta" data-v-5660e131><span class="daq-name" data-v-5660e131>${ssrInterpolate(n.name)}</span><span class="daq-node-sub" data-v-5660e131><span class="node-val mono" data-v-5660e131>${ssrInterpolate(n.value != null ? `${n.value.toFixed(tpl.decimals)} ${tpl.unit}` : "--")}</span><span class="node-dev" data-v-5660e131>${ssrInterpolate(n.deviceBindingId ? unref(deviceTwins).byId(n.deviceBindingId)?.name ?? _ctx.$t("townView.k3own4q148") : _ctx.$t("townView.k3own4q148"))}</span></span></div>`);
2374
+ if (typeof n.posX === "number") _push(`<span class="scene-cur" data-v-5660e131>✓</span>`);
2375
2375
  else _push(`<!---->`);
2376
2376
  _push(`</div>`);
2377
2377
  });
2378
2378
  _push(`<!--]-->`);
2379
- if (!unref(dcwNodesByTpl).get(tpl.id)?.length) _push(`<div class="daq-empty-hint" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k2tplxp0003"))}</div>`);
2379
+ if (!unref(dcwNodesByTpl).get(tpl.id)?.length) _push(`<div class="daq-empty-hint" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k2tplxp0003"))}</div>`);
2380
2380
  else _push(`<!---->`);
2381
2381
  _push(`</div>`);
2382
2382
  } else _push(`<!---->`);
2383
2383
  _push(`</div>`);
2384
2384
  });
2385
- _push(`<!--]--></div></section><section class="panel" data-v-1444af6d><div class="panel-hd" data-v-1444af6d><h3 data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1c9n911034"))}</h3><span class="panel-tag" data-v-1444af6d>${ssrInterpolate(unref(dockChannels).length)}</span></div><div class="scene-list" data-v-1444af6d><!--[-->`);
2385
+ _push(`<!--]--></div></section><section class="panel" data-v-5660e131><div class="panel-hd" data-v-5660e131><h3 data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1c9n911034"))}</h3><span class="panel-tag" data-v-5660e131>${ssrInterpolate(unref(dockChannels).length)}</span></div><div class="scene-list" data-v-5660e131><!--[-->`);
2386
2386
  ssrRenderList(unref(dockChannels), (ch) => {
2387
- _push(`<div class="${ssrRenderClass([{ active: ch.placed }, "scene-row"])}"${ssrRenderAttr("draggable", !ch.placed && unref(mode) === "edit")}${ssrRenderAttr("data-channel-id", ch.channelId)}${ssrRenderAttr("title", ch.placed ? "已在场景中,点击定位" : "拖拽到场景放置")} data-v-1444af6d><span class="scene-ico" style="${ssrRenderStyle({ "--ch": ch.color })}" data-v-1444af6d></span><div class="scene-meta-wrap" data-v-1444af6d><span class="scene-name" data-v-1444af6d>${ssrInterpolate(ch.name)}</span><span class="scene-meta" data-v-1444af6d>${ssrInterpolate(ch.agentCount)} ${ssrInterpolate(_ctx.$t("townView.k1brss7t128"))} ${ssrInterpolate(ch.placed ? _ctx.$t("townView.k3n94g3141") : _ctx.$t("townView.k3os7i3176"))}</span></div>`);
2388
- if (ch.placed) _push(`<span class="scene-cur" data-v-1444af6d>✓</span>`);
2389
- else _push(`<span class="scene-add" data-v-1444af6d>+</span>`);
2387
+ _push(`<div class="${ssrRenderClass([{ active: ch.placed }, "scene-row"])}"${ssrRenderAttr("draggable", !ch.placed && unref(mode) === "edit")}${ssrRenderAttr("data-channel-id", ch.channelId)}${ssrRenderAttr("title", ch.placed ? "已在场景中,点击定位" : "拖拽到场景放置")} data-v-5660e131><span class="scene-ico" style="${ssrRenderStyle({ "--ch": ch.color })}" data-v-5660e131></span><div class="scene-meta-wrap" data-v-5660e131><span class="scene-name" data-v-5660e131>${ssrInterpolate(ch.name)}</span><span class="scene-meta" data-v-5660e131>${ssrInterpolate(ch.agentCount)} ${ssrInterpolate(_ctx.$t("townView.k1brss7t128"))} ${ssrInterpolate(ch.placed ? _ctx.$t("townView.k3n94g3141") : _ctx.$t("townView.k3os7i3176"))}</span></div>`);
2388
+ if (ch.placed) _push(`<span class="scene-cur" data-v-5660e131>✓</span>`);
2389
+ else _push(`<span class="scene-add" data-v-5660e131>+</span>`);
2390
2390
  _push(`</div>`);
2391
2391
  });
2392
2392
  _push(`<!--]-->`);
2393
- if (unref(dockHint)) _push(`<div class="scene-hint" data-v-1444af6d>${ssrInterpolate(unref(dockHint))}</div>`);
2393
+ if (unref(dockHint)) _push(`<div class="scene-hint" data-v-5660e131>${ssrInterpolate(unref(dockHint))}</div>`);
2394
2394
  else _push(`<!---->`);
2395
- _push(`</div></section></aside><main class="stage-col" data-v-1444af6d><div class="stage" data-v-1444af6d><div id="town-host" class="town-host" data-v-1444af6d></div><div class="stage-vignette" data-v-1444af6d></div><div class="stage-top" data-v-1444af6d><div class="vp-title" data-v-1444af6d><h2 data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1b0z4vr035"))}</h2><span class="vp-id" data-v-1444af6d>CH · ${ssrInterpolate(unref(activeChannelName) || _ctx.$t("townView.k3lkuz3142"))}</span></div><div class="vp-tools" data-v-1444af6d><button class="vp-tool"${ssrRenderAttr("title", _ctx.$t("townView.k18d6wnb005"))} data-v-1444af6d><svg class="vp-svg" viewBox="0 0 24 24" data-v-1444af6d><circle cx="12" cy="12" r="7" data-v-1444af6d></circle><path d="M12 2v4M12 18v4M2 12h4M18 12h4" data-v-1444af6d></path></svg></button><button class="${ssrRenderClass([{ on: unref(orbitOn) }, "vp-tool"])}"${ssrRenderAttr("title", _ctx.$t("townView.k1io51dn006"))} data-v-1444af6d><svg class="vp-svg" viewBox="0 0 24 24" data-v-1444af6d><circle cx="12" cy="12" r="3.2" data-v-1444af6d></circle><path d="M20.5 9a10 10 0 0 1 .3 4.5M3.5 15a10 10 0 0 1-.3-4.5" data-v-1444af6d></path></svg></button><button class="${ssrRenderClass([{ on: unref(showCallouts) }, "vp-tool"])}"${ssrRenderAttr("title", _ctx.$t("townView.k1sgjlq8007"))} data-v-1444af6d><svg class="vp-svg" viewBox="0 0 24 24" data-v-1444af6d><path d="M4 8h12l4 4-4 4H4z" data-v-1444af6d></path><circle cx="8.5" cy="12" r="1.4" data-v-1444af6d></circle></svg></button><button class="vp-tool"${ssrRenderAttr("title", _ctx.$t("townView.k3wuf0008"))} data-v-1444af6d><svg class="vp-svg" viewBox="0 0 24 24" data-v-1444af6d><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5" data-v-1444af6d></path></svg></button></div></div><div class="angle-chip" data-v-1444af6d><select${ssrRenderAttr("value", unref(viewPreset))}${ssrRenderAttr("aria-label", _ctx.$t("townView.k1k4j5i7009"))} data-v-1444af6d><option value="std" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.kv72860036"))}</option><option value="top" data-v-1444af6d> 俯视 · TOP </option><option value="front" data-v-1444af6d> 前视 · FRONT </option><option value="side" data-v-1444af6d> 侧视 · SIDE </option></select></div>`);
2395
+ _push(`</div></section></aside><main class="stage-col" data-v-5660e131><div class="stage" data-v-5660e131><div id="town-host" class="town-host" data-v-5660e131></div><div class="stage-vignette" data-v-5660e131></div><div class="stage-top" data-v-5660e131><div class="vp-title" data-v-5660e131><h2 data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1b0z4vr035"))}</h2><span class="vp-id" data-v-5660e131>CH · ${ssrInterpolate(unref(activeChannelName) || _ctx.$t("townView.k3lkuz3142"))}</span></div><div class="vp-tools" data-v-5660e131><button class="vp-tool"${ssrRenderAttr("title", _ctx.$t("townView.k18d6wnb005"))} data-v-5660e131><svg class="vp-svg" viewBox="0 0 24 24" data-v-5660e131><circle cx="12" cy="12" r="7" data-v-5660e131></circle><path d="M12 2v4M12 18v4M2 12h4M18 12h4" data-v-5660e131></path></svg></button><button class="${ssrRenderClass([{ on: unref(orbitOn) }, "vp-tool"])}"${ssrRenderAttr("title", _ctx.$t("townView.k1io51dn006"))} data-v-5660e131><svg class="vp-svg" viewBox="0 0 24 24" data-v-5660e131><circle cx="12" cy="12" r="3.2" data-v-5660e131></circle><path d="M20.5 9a10 10 0 0 1 .3 4.5M3.5 15a10 10 0 0 1-.3-4.5" data-v-5660e131></path></svg></button><button class="${ssrRenderClass([{ on: unref(showCallouts) }, "vp-tool"])}"${ssrRenderAttr("title", _ctx.$t("townView.k1sgjlq8007"))} data-v-5660e131><svg class="vp-svg" viewBox="0 0 24 24" data-v-5660e131><path d="M4 8h12l4 4-4 4H4z" data-v-5660e131></path><circle cx="8.5" cy="12" r="1.4" data-v-5660e131></circle></svg></button><button class="vp-tool"${ssrRenderAttr("title", _ctx.$t("townView.k3wuf0008"))} data-v-5660e131><svg class="vp-svg" viewBox="0 0 24 24" data-v-5660e131><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5" data-v-5660e131></path></svg></button></div></div><div class="angle-chip" data-v-5660e131><select${ssrRenderAttr("value", unref(viewPreset))}${ssrRenderAttr("aria-label", _ctx.$t("townView.k1k4j5i7009"))} data-v-5660e131><option value="std" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.kv72860036"))}</option><option value="top" data-v-5660e131> 俯视 · TOP </option><option value="front" data-v-5660e131> 前视 · FRONT </option><option value="side" data-v-5660e131> 侧视 · SIDE </option></select></div>`);
2396
2396
  if (unref(showCallouts)) {
2397
- _push(`<!--[--><svg class="leaders" data-v-1444af6d><!--[-->`);
2397
+ _push(`<!--[--><svg class="leaders" data-v-5660e131><!--[-->`);
2398
2398
  ssrRenderList(unref(callouts), (c) => {
2399
- _push(`<g class="${ssrRenderClass({ near: c.near })}" style="${ssrRenderStyle(c.leader ? null : { display: "none" })}" data-v-1444af6d><path${ssrRenderAttr("d", `M ${c.x} ${c.y - 8} L ${c.x} ${c.y - 2}`)}${ssrRenderAttr("stroke", c.warn ? "rgba(246,196,83,.8)" : "rgba(65,200,244,.55)")} stroke-width="1.3" fill="none" data-v-1444af6d></path><circle${ssrRenderAttr("cx", c.x)}${ssrRenderAttr("cy", c.y)} r="2.6"${ssrRenderAttr("fill", c.warn ? "#f6c453" : "#41c8f4")} data-v-1444af6d></circle></g>`);
2399
+ _push(`<g class="${ssrRenderClass({ near: c.near })}" style="${ssrRenderStyle(c.leader ? null : { display: "none" })}" data-v-5660e131><path${ssrRenderAttr("d", `M ${c.x} ${c.y - 8} L ${c.x} ${c.y - 2}`)}${ssrRenderAttr("stroke", c.warn ? "rgba(246,196,83,.8)" : "rgba(65,200,244,.55)")} stroke-width="1.3" fill="none" data-v-5660e131></path><circle${ssrRenderAttr("cx", c.x)}${ssrRenderAttr("cy", c.y)} r="2.6"${ssrRenderAttr("fill", c.warn ? "#f6c453" : "#41c8f4")} data-v-5660e131></circle></g>`);
2400
2400
  });
2401
- _push(`<!--]--></svg><div class="callout-layer" data-v-1444af6d><!--[-->`);
2401
+ _push(`<!--]--></svg><div class="callout-layer" data-v-5660e131><!--[-->`);
2402
2402
  ssrRenderList(unref(callouts), (c) => {
2403
2403
  _push(`<div class="${ssrRenderClass([{
2404
2404
  warn: c.warn,
@@ -2406,12 +2406,12 @@ var TownView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
2406
2406
  }, "callout"])}" style="${ssrRenderStyle({
2407
2407
  left: c.x + "px",
2408
2408
  top: c.y + "px"
2409
- })}"${ssrRenderAttr("title", _ctx.$t("townView.k1ejxiwp010"))} data-v-1444af6d><div class="co-label" data-v-1444af6d><span class="co-dot" data-v-1444af6d></span>${ssrInterpolate(c.label)}</div><div class="co-val" data-v-1444af6d>${ssrInterpolate(c.value)}<small data-v-1444af6d>${ssrInterpolate(c.unit)}</small></div><div class="co-range" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1faqmjb073"))} ${ssrInterpolate(c.lo.toFixed(Math.min(2, (String(c.lo).split(".")[1] ?? "").length + 1)))} – ${ssrInterpolate(c.hi.toFixed(Math.min(2, (String(c.hi).split(".")[1] ?? "").length + 1)))}</div></div>`);
2409
+ })}"${ssrRenderAttr("title", _ctx.$t("townView.k1ejxiwp010"))} data-v-5660e131><div class="co-label" data-v-5660e131><span class="co-dot" data-v-5660e131></span>${ssrInterpolate(c.label)}</div><div class="co-val" data-v-5660e131>${ssrInterpolate(c.value)}<small data-v-5660e131>${ssrInterpolate(c.unit)}</small></div><div class="co-range" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1faqmjb073"))} ${ssrInterpolate(c.lo.toFixed(Math.min(2, (String(c.lo).split(".")[1] ?? "").length + 1)))} – ${ssrInterpolate(c.hi.toFixed(Math.min(2, (String(c.hi).split(".")[1] ?? "").length + 1)))}</div></div>`);
2410
2410
  });
2411
2411
  _push(`<!--]--></div><!--]-->`);
2412
2412
  } else _push(`<!---->`);
2413
- _push(`<div class="kpi-strip" data-v-1444af6d><div class="kpi" data-v-1444af6d><span class="kpi-ico c1" data-v-1444af6d><svg class="kpi-svg" viewBox="0 0 24 24" data-v-1444af6d><path d="M4 8.5 12 4l8 4.5v7L12 20l-8-4.5v-7Z" data-v-1444af6d></path><path d="M4 8.5l8 4.5 8-4.5M12 13v7" data-v-1444af6d></path></svg></span><div class="kpi-meta" data-v-1444af6d><div class="kpi-label" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1k6xemt037"))}</div><div class="kpi-val" data-v-1444af6d>${ssrInterpolate(unref(deviceCount))}<small data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k49lh038"))}</small></div></div></div><div class="kpi" data-v-1444af6d><span class="kpi-ico c2" data-v-1444af6d><svg class="kpi-svg" viewBox="0 0 24 24" data-v-1444af6d><path d="m5 12.5 4.5 4.5L19 7.5" data-v-1444af6d></path></svg></span><div class="kpi-meta" data-v-1444af6d><div class="kpi-label" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1l1a9t2039"))}</div><div class="kpi-val" data-v-1444af6d>${ssrInterpolate(unref(runningCount))}<small data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k49lh038"))}</small></div></div></div><div class="kpi" data-v-1444af6d><span class="kpi-ico c3" data-v-1444af6d><svg class="kpi-svg" viewBox="0 0 24 24" data-v-1444af6d><path d="M12 3 22 20H2L12 3Z" data-v-1444af6d></path><path d="M12 10v4M12 17v.2" data-v-1444af6d></path></svg></span><div class="kpi-meta" data-v-1444af6d><div class="kpi-label" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1fsi3ir002"))}</div><div class="kpi-val" data-v-1444af6d>${ssrInterpolate(unref(activeAlarmCount))}<small data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k4dfq040"))}</small></div></div></div><div class="kpi" data-v-1444af6d><span class="kpi-ico c4" data-v-1444af6d><svg class="kpi-svg" viewBox="0 0 24 24" data-v-1444af6d><path d="M9.5 14.5 14.5 9.5" data-v-1444af6d></path><path d="M11 6.5 12.8 4.7a4 4 0 0 1 5.6 5.6L16.5 12" data-v-1444af6d></path><path d="m13 17.5-1.8 1.8a4 4 0 0 1-5.6-5.6L7.5 12" data-v-1444af6d></path></svg></span><div class="kpi-meta" data-v-1444af6d><div class="kpi-label" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1emsai1041"))}</div><div class="kpi-val" data-v-1444af6d>${ssrInterpolate(unref(daqTwins).length)}<small data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k4l1w042"))}</small></div></div></div><div class="kpi" data-v-1444af6d><span class="kpi-ico c5" data-v-1444af6d><svg class="kpi-svg" viewBox="0 0 24 24" data-v-1444af6d><path d="M5 19a9 9 0 1 1 14 0" data-v-1444af6d></path><path d="M12 13l3.5-3.5" data-v-1444af6d></path><circle cx="12" cy="13" r="1.4" data-v-1444af6d></circle></svg></span><div class="kpi-meta" data-v-1444af6d><div class="kpi-label" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.kbrxdq1043"))}</div><div class="kpi-val" data-v-1444af6d>${ssrInterpolate(unref(healthPct))}<small data-v-1444af6d>%</small></div></div></div></div>`);
2414
- if (unref(sceneEmpty)) _push(`<div class="empty-hint" data-v-1444af6d><b data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k3rwxjc044"))}</b><span data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1sa1eaj045"))}</span></div>`);
2413
+ _push(`<div class="kpi-strip" data-v-5660e131><div class="kpi" data-v-5660e131><span class="kpi-ico c1" data-v-5660e131><svg class="kpi-svg" viewBox="0 0 24 24" data-v-5660e131><path d="M4 8.5 12 4l8 4.5v7L12 20l-8-4.5v-7Z" data-v-5660e131></path><path d="M4 8.5l8 4.5 8-4.5M12 13v7" data-v-5660e131></path></svg></span><div class="kpi-meta" data-v-5660e131><div class="kpi-label" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1k6xemt037"))}</div><div class="kpi-val" data-v-5660e131>${ssrInterpolate(unref(deviceCount))}<small data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k49lh038"))}</small></div></div></div><div class="kpi" data-v-5660e131><span class="kpi-ico c2" data-v-5660e131><svg class="kpi-svg" viewBox="0 0 24 24" data-v-5660e131><path d="m5 12.5 4.5 4.5L19 7.5" data-v-5660e131></path></svg></span><div class="kpi-meta" data-v-5660e131><div class="kpi-label" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1l1a9t2039"))}</div><div class="kpi-val" data-v-5660e131>${ssrInterpolate(unref(runningCount))}<small data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k49lh038"))}</small></div></div></div><div class="kpi" data-v-5660e131><span class="kpi-ico c3" data-v-5660e131><svg class="kpi-svg" viewBox="0 0 24 24" data-v-5660e131><path d="M12 3 22 20H2L12 3Z" data-v-5660e131></path><path d="M12 10v4M12 17v.2" data-v-5660e131></path></svg></span><div class="kpi-meta" data-v-5660e131><div class="kpi-label" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1fsi3ir002"))}</div><div class="kpi-val" data-v-5660e131>${ssrInterpolate(unref(activeAlarmCount))}<small data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k4dfq040"))}</small></div></div></div><div class="kpi" data-v-5660e131><span class="kpi-ico c4" data-v-5660e131><svg class="kpi-svg" viewBox="0 0 24 24" data-v-5660e131><path d="M9.5 14.5 14.5 9.5" data-v-5660e131></path><path d="M11 6.5 12.8 4.7a4 4 0 0 1 5.6 5.6L16.5 12" data-v-5660e131></path><path d="m13 17.5-1.8 1.8a4 4 0 0 1-5.6-5.6L7.5 12" data-v-5660e131></path></svg></span><div class="kpi-meta" data-v-5660e131><div class="kpi-label" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1emsai1041"))}</div><div class="kpi-val" data-v-5660e131>${ssrInterpolate(unref(daqTwins).length)}<small data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k4l1w042"))}</small></div></div></div><div class="kpi" data-v-5660e131><span class="kpi-ico c5" data-v-5660e131><svg class="kpi-svg" viewBox="0 0 24 24" data-v-5660e131><path d="M5 19a9 9 0 1 1 14 0" data-v-5660e131></path><path d="M12 13l3.5-3.5" data-v-5660e131></path><circle cx="12" cy="13" r="1.4" data-v-5660e131></circle></svg></span><div class="kpi-meta" data-v-5660e131><div class="kpi-label" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.kbrxdq1043"))}</div><div class="kpi-val" data-v-5660e131>${ssrInterpolate(unref(healthPct))}<small data-v-5660e131>%</small></div></div></div></div>`);
2414
+ if (unref(sceneEmpty)) _push(`<div class="empty-hint" data-v-5660e131><b data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k3rwxjc044"))}</b><span data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1sa1eaj045"))}</span></div>`);
2415
2415
  else _push(`<!---->`);
2416
2416
  if (unref(selectedChannel) && unref(boundaryDraft)) {
2417
2417
  _push(`<div class="boundary-panel drag-panel" style="${ssrRenderStyle(unref(panelPos).boundary ? {
@@ -2419,111 +2419,111 @@ var TownView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
2419
2419
  top: unref(panelPos).boundary.y + "px",
2420
2420
  bottom: "auto",
2421
2421
  transform: "none"
2422
- } : void 0)}" data-v-1444af6d><div class="bp-title drag-grip"${ssrRenderAttr("title", _ctx.$t("townView.k1d0rl5z011"))} data-v-1444af6d><span class="bp-name" data-v-1444af6d>${ssrInterpolate(unref(entities).channels[unref(selectedChannel)]?.name ?? unref(selectedChannel).slice(0, 8))}</span><span class="bp-sub" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1mehlxs046"))}</span><div class="bp-tabs" data-v-1444af6d><button class="${ssrRenderClass([{ on: unref(channelPanelTab) === "boundary" }, "bp-tab"])}" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k489ka047"))}</button><button class="${ssrRenderClass([{ on: unref(channelPanelTab) === "members" }, "bp-tab"])}" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k3ztf1129"))} ${ssrInterpolate(unref(channelMembers).length)}</button></div></div>`);
2423
- if (unref(channelPanelTab) === "boundary") _push(`<!--[--><div class="bp-row" data-v-1444af6d><span class="bp-label" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k3zhy5048"))}</span><div class="bp-seg" data-v-1444af6d><button class="${ssrRenderClass([{ on: unref(boundaryDraft).shape === "ellipse" }, "seg-btn"])}" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k414bc049"))}</button><button class="${ssrRenderClass([{ on: unref(boundaryDraft).shape === "rect" }, "seg-btn"])}" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k43u0g050"))}</button></div></div><div class="bp-row" data-v-1444af6d><span class="bp-label" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1fbz4s1051"))}</span><input${ssrRenderAttr("value", unref(boundaryDraft).radiusX)} class="bp-range" type="range" min="80" max="4000" step="8" style="${ssrRenderStyle({ "--fill": sliderPct(unref(boundaryDraft).radiusX, 80, 4e3) })}" data-v-1444af6d><span class="bp-val" data-v-1444af6d>${ssrInterpolate(Math.round(unref(boundaryDraft).radiusX))}</span></div><div class="bp-row" data-v-1444af6d><span class="bp-label" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1ighwgs052"))}</span><input${ssrRenderAttr("value", unref(boundaryDraft).radiusZ)} class="bp-range" type="range" min="60" max="4000" step="8" style="${ssrRenderStyle({ "--fill": sliderPct(unref(boundaryDraft).radiusZ, 60, 4e3) })}" data-v-1444af6d><span class="bp-val" data-v-1444af6d>${ssrInterpolate(Math.round(unref(boundaryDraft).radiusZ))}</span></div><div class="bp-row" data-v-1444af6d><span class="bp-label" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k40qab053"))}</span><input${ssrRenderAttr("value", unref(boundaryDraft).rotationY)} class="bp-range" type="range" min="0" max="360" step="5" style="${ssrRenderStyle({ "--fill": sliderPct(unref(boundaryDraft).rotationY ?? 0, 0, 360) })}" data-v-1444af6d><span class="bp-val" data-v-1444af6d>${ssrInterpolate(Math.round(unref(boundaryDraft).rotationY ?? 0))}°</span></div><!--]-->`);
2422
+ } : void 0)}" data-v-5660e131><div class="bp-title drag-grip"${ssrRenderAttr("title", _ctx.$t("townView.k1d0rl5z011"))} data-v-5660e131><span class="bp-name" data-v-5660e131>${ssrInterpolate(unref(entities).channels[unref(selectedChannel)]?.name ?? unref(selectedChannel).slice(0, 8))}</span><span class="bp-sub" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1mehlxs046"))}</span><div class="bp-tabs" data-v-5660e131><button class="${ssrRenderClass([{ on: unref(channelPanelTab) === "boundary" }, "bp-tab"])}" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k489ka047"))}</button><button class="${ssrRenderClass([{ on: unref(channelPanelTab) === "members" }, "bp-tab"])}" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k3ztf1129"))} ${ssrInterpolate(unref(channelMembers).length)}</button></div></div>`);
2423
+ if (unref(channelPanelTab) === "boundary") _push(`<!--[--><div class="bp-row" data-v-5660e131><span class="bp-label" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k3zhy5048"))}</span><div class="bp-seg" data-v-5660e131><button class="${ssrRenderClass([{ on: unref(boundaryDraft).shape === "ellipse" }, "seg-btn"])}" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k414bc049"))}</button><button class="${ssrRenderClass([{ on: unref(boundaryDraft).shape === "rect" }, "seg-btn"])}" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k43u0g050"))}</button></div></div><div class="bp-row" data-v-5660e131><span class="bp-label" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1fbz4s1051"))}</span><input${ssrRenderAttr("value", unref(boundaryDraft).radiusX)} class="bp-range" type="range" min="80" max="4000" step="8" style="${ssrRenderStyle({ "--fill": sliderPct(unref(boundaryDraft).radiusX, 80, 4e3) })}" data-v-5660e131><span class="bp-val" data-v-5660e131>${ssrInterpolate(Math.round(unref(boundaryDraft).radiusX))}</span></div><div class="bp-row" data-v-5660e131><span class="bp-label" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1ighwgs052"))}</span><input${ssrRenderAttr("value", unref(boundaryDraft).radiusZ)} class="bp-range" type="range" min="60" max="4000" step="8" style="${ssrRenderStyle({ "--fill": sliderPct(unref(boundaryDraft).radiusZ, 60, 4e3) })}" data-v-5660e131><span class="bp-val" data-v-5660e131>${ssrInterpolate(Math.round(unref(boundaryDraft).radiusZ))}</span></div><div class="bp-row" data-v-5660e131><span class="bp-label" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k40qab053"))}</span><input${ssrRenderAttr("value", unref(boundaryDraft).rotationY)} class="bp-range" type="range" min="0" max="360" step="5" style="${ssrRenderStyle({ "--fill": sliderPct(unref(boundaryDraft).rotationY ?? 0, 0, 360) })}" data-v-5660e131><span class="bp-val" data-v-5660e131>${ssrInterpolate(Math.round(unref(boundaryDraft).rotationY ?? 0))}°</span></div><!--]-->`);
2424
2424
  else {
2425
- _push(`<!--[--><div class="bp-hint" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.kimxls2054"))}</div><div class="member-list" data-v-1444af6d><!--[-->`);
2425
+ _push(`<!--[--><div class="bp-hint" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.kimxls2054"))}</div><div class="member-list" data-v-5660e131><!--[-->`);
2426
2426
  ssrRenderList(unref(channelMembers), (m) => {
2427
- _push(`<div class="member-row" data-v-1444af6d><span class="member-ava" style="${ssrRenderStyle({ color: hashColor(unref(selectedChannel)) })}" data-v-1444af6d>${ssrInterpolate(m.name.charAt(0).toUpperCase())}</span><div class="member-info" data-v-1444af6d><span class="member-name" data-v-1444af6d>${ssrInterpolate(m.name)}</span><span class="${ssrRenderClass([m.role === "lead" ? "r-lead" : "r-worker", "member-role"])}" data-v-1444af6d>${ssrInterpolate(m.role === "lead" ? "Leader" : "Worker")}</span></div><select class="member-select"${ssrRenderAttr("value", (m.modelRef ?? "") || "hero-3d")} data-v-1444af6d><!--[-->`);
2427
+ _push(`<div class="member-row" data-v-5660e131><span class="member-ava" style="${ssrRenderStyle({ color: hashColor(unref(selectedChannel)) })}" data-v-5660e131>${ssrInterpolate(m.name.charAt(0).toUpperCase())}</span><div class="member-info" data-v-5660e131><span class="member-name" data-v-5660e131>${ssrInterpolate(m.name)}</span><span class="${ssrRenderClass([m.role === "lead" ? "r-lead" : "r-worker", "member-role"])}" data-v-5660e131>${ssrInterpolate(m.role === "lead" ? "Leader" : "Worker")}</span></div><select class="member-select"${ssrRenderAttr("value", (m.modelRef ?? "") || "hero-3d")} data-v-5660e131><!--[-->`);
2428
2428
  ssrRenderList(unref(agentModels), (model) => {
2429
- _push(`<option${ssrRenderAttr("value", model.id)} data-v-1444af6d>${ssrInterpolate(model.name)}</option>`);
2429
+ _push(`<option${ssrRenderAttr("value", model.id)} data-v-5660e131>${ssrInterpolate(model.name)}</option>`);
2430
2430
  });
2431
2431
  _push(`<!--]--></select></div>`);
2432
2432
  });
2433
2433
  _push(`<!--]-->`);
2434
- if (unref(channelMembers).length === 0) _push(`<div class="bp-hint" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k419rbs055"))}</div>`);
2434
+ if (unref(channelMembers).length === 0) _push(`<div class="bp-hint" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k419rbs055"))}</div>`);
2435
2435
  else _push(`<!---->`);
2436
2436
  _push(`</div><!--]-->`);
2437
2437
  }
2438
- _push(`<div class="bp-actions" data-v-1444af6d>`);
2439
- if (unref(channelPanelTab) === "boundary") _push(`<button class="bp-btn save" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1b3kp8f056"))}</button>`);
2438
+ _push(`<div class="bp-actions" data-v-5660e131>`);
2439
+ if (unref(channelPanelTab) === "boundary") _push(`<button class="bp-btn save" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1b3kp8f056"))}</button>`);
2440
2440
  else _push(`<!---->`);
2441
- _push(`<button class="bp-btn danger" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1hs45qg057"))}</button><button class="bp-btn" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k3x62t058"))}</button></div></div>`);
2441
+ _push(`<button class="bp-btn danger" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1hs45qg057"))}</button><button class="bp-btn" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k3x62t058"))}</button></div></div>`);
2442
2442
  } else _push(`<!---->`);
2443
- if (unref(lastDropText)) _push(`<div class="drop-chip" data-v-1444af6d>${ssrInterpolate(unref(lastDropText))}</div>`);
2443
+ if (unref(lastDropText)) _push(`<div class="drop-chip" data-v-5660e131>${ssrInterpolate(unref(lastDropText))}</div>`);
2444
2444
  else _push(`<!---->`);
2445
- if (unref(errorText)) _push(`<div class="error-chip" data-v-1444af6d>${ssrInterpolate(unref(errorText))}</div>`);
2445
+ if (unref(errorText)) _push(`<div class="error-chip" data-v-5660e131>${ssrInterpolate(unref(errorText))}</div>`);
2446
2446
  else _push(`<!---->`);
2447
- if (!unref(ready)) _push(`<div data-hud="town-loading" class="loading-mask" data-v-1444af6d><div class="loading-spinner" data-v-1444af6d></div><span class="loading-text" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.kvjdqfg059"))}</span></div>`);
2447
+ if (!unref(ready)) _push(`<div data-hud="town-loading" class="loading-mask" data-v-5660e131><div class="loading-spinner" data-v-5660e131></div><span class="loading-text" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.kvjdqfg059"))}</span></div>`);
2448
2448
  else _push(`<!---->`);
2449
- _push(`</div><div class="dock" data-v-1444af6d><section class="dock-card" data-v-1444af6d><div class="dock-hd" data-v-1444af6d><h3 data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1c9iq23060"))}</h3><span class="dock-mode" data-v-1444af6d>${ssrInterpolate(unref(mode) === "edit" ? _ctx.$t("townView.k1iipfcs143") : _ctx.$t("townView.k1l147w1177"))}</span></div><p class="ctl-sec" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.secRender"))}</p><div class="ctl-row" data-v-1444af6d><span class="ctl-name"${ssrRenderAttr("title", _ctx.$t("townView.qualityTip"))} data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.qualityLabel"))}</span><div class="fps-seg" data-v-1444af6d><!--[-->`);
2449
+ _push(`</div><div class="dock" data-v-5660e131><section class="dock-card" data-v-5660e131><div class="dock-hd" data-v-5660e131><h3 data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1c9iq23060"))}</h3><span class="dock-mode" data-v-5660e131>${ssrInterpolate(unref(mode) === "edit" ? _ctx.$t("townView.k1iipfcs143") : _ctx.$t("townView.k1l147w1177"))}</span></div><p class="ctl-sec" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.secRender"))}</p><div class="ctl-row" data-v-5660e131><span class="ctl-name"${ssrRenderAttr("title", _ctx.$t("townView.qualityTip"))} data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.qualityLabel"))}</span><div class="fps-seg" data-v-5660e131><!--[-->`);
2450
2450
  ssrRenderList(QUALITY_OPTIONS, (o) => {
2451
- _push(`<button class="${ssrRenderClass({ on: unref(qualityMode) === o.v })}" data-v-1444af6d>${ssrInterpolate(_ctx.$t(o.label))}</button>`);
2451
+ _push(`<button class="${ssrRenderClass({ on: unref(qualityMode) === o.v })}" data-v-5660e131>${ssrInterpolate(_ctx.$t(o.label))}</button>`);
2452
2452
  });
2453
- _push(`<!--]--></div><span class="ctl-val" data-v-1444af6d></span></div><div class="ctl-row" data-v-1444af6d><span class="ctl-name"${ssrRenderAttr("title", _ctx.$t("townView.fpsCapTip"))} data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.fpsCapLabel"))}</span><div class="fps-seg" data-v-1444af6d><!--[-->`);
2453
+ _push(`<!--]--></div><span class="ctl-val" data-v-5660e131></span></div><div class="ctl-row" data-v-5660e131><span class="ctl-name"${ssrRenderAttr("title", _ctx.$t("townView.fpsCapTip"))} data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.fpsCapLabel"))}</span><div class="fps-seg" data-v-5660e131><!--[-->`);
2454
2454
  ssrRenderList(FPS_OPTIONS, (o) => {
2455
- _push(`<button class="${ssrRenderClass({ on: unref(fpsCap) === o.v })}" data-v-1444af6d>${ssrInterpolate(o.label)}</button>`);
2455
+ _push(`<button class="${ssrRenderClass({ on: unref(fpsCap) === o.v })}" data-v-5660e131>${ssrInterpolate(o.label)}</button>`);
2456
2456
  });
2457
- _push(`<!--]--></div><span class="ctl-val" data-v-1444af6d></span></div><p class="ctl-sec" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.secEnv"))}</p><div class="ctl-row" data-v-1444af6d><span class="ctl-name" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1gizopz061"))}</span><input class="ctl-range" type="range" min="30" max="220"${ssrRenderAttr("value", Math.round(unref(exposure) * 100))} style="${ssrRenderStyle({ "--fill": sliderPct(Math.round(unref(exposure) * 100), 30, 220) })}" data-v-1444af6d><span class="ctl-val" data-v-1444af6d>${ssrInterpolate(Math.round(unref(exposure) * 100))}%</span></div><div class="ctl-row" data-v-1444af6d><span class="ctl-name" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1bcpqto062"))}</span><input class="ctl-range" type="range" min="10" max="100"${ssrRenderAttr("value", Math.round(unref(tintOpacity) * 100))} style="${ssrRenderStyle({ "--fill": sliderPct(Math.round(unref(tintOpacity) * 100), 10, 100) })}" data-v-1444af6d><span class="ctl-val" data-v-1444af6d>${ssrInterpolate(Math.round(unref(tintOpacity) * 100))}%</span></div><div class="ctl-row" data-v-1444af6d><span class="ctl-name" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1bztha1063"))}</span><input class="ctl-range" type="range" min="60" max="120"${ssrRenderAttr("value", unref(threshPct))} style="${ssrRenderStyle({ "--fill": sliderPct(unref(threshPct), 60, 120) })}" data-v-1444af6d><span class="ctl-val" data-v-1444af6d>${ssrInterpolate(unref(threshPct))}%</span></div><div class="ctl-row" data-v-1444af6d><span class="ctl-name"${ssrRenderAttr("title", _ctx.$t("townView.kz71l1f012"))} data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.ka4i1s9064"))}</span><input class="ctl-range" type="range" min="0" max="3000" step="50"${ssrRenderAttr("value", unref(calloutNearDist))} style="${ssrRenderStyle({ "--fill": sliderPct(unref(calloutNearDist), 0, 3e3) })}" data-v-1444af6d><span class="ctl-val" data-v-1444af6d>${ssrInterpolate(unref(calloutNearDist) === 0 ? _ctx.$t("townView.k493s144") : `${unref(calloutNearDist)}`)}</span></div><p class="ctl-sec" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.secOps"))}</p><div class="ctl-row" data-v-1444af6d><span class="ctl-name" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1idc6pa065"))}</span><button class="${ssrRenderClass([{ on: unref(snap) }, "snap-toggle"])}" data-v-1444af6d>${ssrInterpolate(unref(snap) ? _ctx.$t("townView.k4bs5145") : _ctx.$t("townView.k493s144"))}</button><span class="ctl-val" data-v-1444af6d></span></div><div class="ctl-btns" data-v-1444af6d><button class="btn btn-primary" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1lap9bs024"))}</button><button class="btn btn-ghost"${ssrIncludeBooleanAttr(unref(mode) !== "edit") ? " disabled" : ""}${ssrRenderAttr("title", unref(mode) === "edit" ? _ctx.$t("townView.ksavetip181") : _ctx.$t("townView.krotip182"))} data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1b3bk8t029"))}</button><button class="${ssrRenderClass([{ armed: unref(estop) }, "btn btn-danger"])}" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1i046wf066"))}</button></div></section><section class="dock-card" data-v-1444af6d><div class="dock-hd" data-v-1444af6d><h3 data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1kfoef9067"))}</h3><span class="dock-count mono" data-v-1444af6d>${ssrInterpolate(unref(daqTwins).length)}</span><div class="${ssrRenderClass([{ expanded: unref(trendExpanded) }, "trend-legend"])}" data-v-1444af6d><!--[-->`);
2457
+ _push(`<!--]--></div><span class="ctl-val" data-v-5660e131></span></div><p class="ctl-sec" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.secEnv"))}</p><div class="ctl-row" data-v-5660e131><span class="ctl-name" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1gizopz061"))}</span><input class="ctl-range" type="range" min="30" max="220"${ssrRenderAttr("value", Math.round(unref(exposure) * 100))} style="${ssrRenderStyle({ "--fill": sliderPct(Math.round(unref(exposure) * 100), 30, 220) })}" data-v-5660e131><span class="ctl-val" data-v-5660e131>${ssrInterpolate(Math.round(unref(exposure) * 100))}%</span></div><div class="ctl-row" data-v-5660e131><span class="ctl-name" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1bcpqto062"))}</span><input class="ctl-range" type="range" min="10" max="100"${ssrRenderAttr("value", Math.round(unref(tintOpacity) * 100))} style="${ssrRenderStyle({ "--fill": sliderPct(Math.round(unref(tintOpacity) * 100), 10, 100) })}" data-v-5660e131><span class="ctl-val" data-v-5660e131>${ssrInterpolate(Math.round(unref(tintOpacity) * 100))}%</span></div><div class="ctl-row" data-v-5660e131><span class="ctl-name" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1bztha1063"))}</span><input class="ctl-range" type="range" min="60" max="120"${ssrRenderAttr("value", unref(threshPct))} style="${ssrRenderStyle({ "--fill": sliderPct(unref(threshPct), 60, 120) })}" data-v-5660e131><span class="ctl-val" data-v-5660e131>${ssrInterpolate(unref(threshPct))}%</span></div><div class="ctl-row" data-v-5660e131><span class="ctl-name"${ssrRenderAttr("title", _ctx.$t("townView.kz71l1f012"))} data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.ka4i1s9064"))}</span><input class="ctl-range" type="range" min="0" max="3000" step="50"${ssrRenderAttr("value", unref(calloutNearDist))} style="${ssrRenderStyle({ "--fill": sliderPct(unref(calloutNearDist), 0, 3e3) })}" data-v-5660e131><span class="ctl-val" data-v-5660e131>${ssrInterpolate(unref(calloutNearDist) === 0 ? _ctx.$t("townView.k493s144") : `${unref(calloutNearDist)}`)}</span></div><p class="ctl-sec" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.secOps"))}</p><div class="ctl-row" data-v-5660e131><span class="ctl-name" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1idc6pa065"))}</span><button class="${ssrRenderClass([{ on: unref(snap) }, "snap-toggle"])}" data-v-5660e131>${ssrInterpolate(unref(snap) ? _ctx.$t("townView.k4bs5145") : _ctx.$t("townView.k493s144"))}</button><span class="ctl-val" data-v-5660e131></span></div><div class="ctl-btns" data-v-5660e131><button class="btn btn-primary" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1lap9bs024"))}</button><button class="btn btn-ghost"${ssrIncludeBooleanAttr(unref(mode) !== "edit") ? " disabled" : ""}${ssrRenderAttr("title", unref(mode) === "edit" ? _ctx.$t("townView.ksavetip181") : _ctx.$t("townView.krotip182"))} data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1b3bk8t029"))}</button><button class="${ssrRenderClass([{ armed: unref(estop) }, "btn btn-danger"])}" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1i046wf066"))}</button></div></section><section class="dock-card" data-v-5660e131><div class="dock-hd" data-v-5660e131><h3 data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1kfoef9067"))}</h3><span class="dock-count mono" data-v-5660e131>${ssrInterpolate(unref(daqTwins).length)}</span><div class="${ssrRenderClass([{ expanded: unref(trendExpanded) }, "trend-legend"])}" data-v-5660e131><!--[-->`);
2458
2458
  ssrRenderList(unref(trendChips), (t) => {
2459
- _push(`<button class="${ssrRenderClass([{ off: !trendOn(t.id) }, "lg-chip"])}" data-v-1444af6d><span class="lg-dot" style="${ssrRenderStyle({ background: trendColor(t.id) })}" data-v-1444af6d></span>${ssrInterpolate(t.name)}</button>`);
2459
+ _push(`<button class="${ssrRenderClass([{ off: !trendOn(t.id) }, "lg-chip"])}" data-v-5660e131><span class="lg-dot" style="${ssrRenderStyle({ background: trendColor(t.id) })}" data-v-5660e131></span>${ssrInterpolate(t.name)}</button>`);
2460
2460
  });
2461
2461
  _push(`<!--]-->`);
2462
- if (unref(trendOverflow) > 0) _push(`<button class="lg-chip lg-more mono"${ssrRenderAttr("title", unref(trendExpanded) ? _ctx.$t("townView.trendCollapse") : _ctx.$t("townView.trendExpandAll", { p0: unref(daqTwins).length }))} data-v-1444af6d>${ssrInterpolate(unref(trendExpanded) ? _ctx.$t("townView.trendCollapse") : `+${unref(trendOverflow)}`)}</button>`);
2462
+ if (unref(trendOverflow) > 0) _push(`<button class="lg-chip lg-more mono"${ssrRenderAttr("title", unref(trendExpanded) ? _ctx.$t("townView.trendCollapse") : _ctx.$t("townView.trendExpandAll", { p0: unref(daqTwins).length }))} data-v-5660e131>${ssrInterpolate(unref(trendExpanded) ? _ctx.$t("townView.trendCollapse") : `+${unref(trendOverflow)}`)}</button>`);
2463
2463
  else _push(`<!---->`);
2464
- _push(`</div></div><div class="trend-wrap" data-v-1444af6d><canvas class="trend-cv" data-v-1444af6d></canvas>`);
2465
- if (!unref(daqTwins).length) _push(`<span class="trend-empty" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1uht2uv068"))}</span>`);
2464
+ _push(`</div></div><div class="trend-wrap" data-v-5660e131><canvas class="trend-cv" data-v-5660e131></canvas>`);
2465
+ if (!unref(daqTwins).length) _push(`<span class="trend-empty" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1uht2uv068"))}</span>`);
2466
2466
  else _push(`<!---->`);
2467
- _push(`</div></section></div></main><aside class="rail rail-right" data-v-1444af6d>`);
2467
+ _push(`</div></section></div></main><aside class="rail rail-right" data-v-5660e131>`);
2468
2468
  if (unref(selected)) {
2469
- _push(`<section class="panel inspector" data-v-1444af6d><div class="panel-hd" data-v-1444af6d><h3 data-v-1444af6d>${ssrInterpolate(unref(selected).kind === "device" ? unref(selectedIsDcw) ? _ctx.$t("townView.k1ekqxlt146") : unref(selectedIsDaq) ? _ctx.$t("townView.k1empnnb178") : _ctx.$t("townView.k1k6wg8j185") : unref(selectedAgentRoleLabel))}</h3><button class="mini-btn"${ssrRenderAttr("title", _ctx.$t("townView.k1bsckft013"))} data-v-1444af6d> ✕ </button></div><div class="ins-chip-row" data-v-1444af6d><span class="ins-chip mono" data-v-1444af6d>${ssrInterpolate(unref(selected).id.slice(0, 8))}</span>`);
2470
- if (unref(selected).kind === "device" && unref(selectedIsDaq)) _push(`<span class="ins-chip accent" data-v-1444af6d>DAQ</span>`);
2471
- else if (unref(selected).kind === "device" && unref(selectedIsDcw)) _push(`<span class="ins-chip accent" data-v-1444af6d>DCW</span>`);
2469
+ _push(`<section class="panel inspector" data-v-5660e131><div class="panel-hd" data-v-5660e131><h3 data-v-5660e131>${ssrInterpolate(unref(selected).kind === "device" ? unref(selectedIsDcw) ? _ctx.$t("townView.k1ekqxlt146") : unref(selectedIsDaq) ? _ctx.$t("townView.k1empnnb178") : _ctx.$t("townView.k1k6wg8j185") : unref(selectedAgentRoleLabel))}</h3><button class="mini-btn"${ssrRenderAttr("title", _ctx.$t("townView.k1bsckft013"))} data-v-5660e131> ✕ </button></div><div class="ins-chip-row" data-v-5660e131><span class="ins-chip mono" data-v-5660e131>${ssrInterpolate(unref(selected).id.slice(0, 8))}</span>`);
2470
+ if (unref(selected).kind === "device" && unref(selectedIsDaq)) _push(`<span class="ins-chip accent" data-v-5660e131>DAQ</span>`);
2471
+ else if (unref(selected).kind === "device" && unref(selectedIsDcw)) _push(`<span class="ins-chip accent" data-v-5660e131>DCW</span>`);
2472
2472
  else _push(`<!---->`);
2473
2473
  _push(`</div>`);
2474
2474
  if (unref(selected).kind === "device") {
2475
2475
  _push(`<!--[-->`);
2476
2476
  if (unref(selectedIsDcw)) {
2477
- _push(`<div class="daq-info" data-v-1444af6d><div class="daq-info-row" data-v-1444af6d><span data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1deqh0d069"))}</span><b class="cy" data-v-1444af6d>${ssrInterpolate(unref(selectedDcwNode)?.value != null ? unref(selectedDcwNode).value.toFixed(unref(selectedDcwNode).decimals) : "--")} ${ssrInterpolate(unref(selectedDcwNode)?.unit)}</b></div><div class="daq-info-row" data-v-1444af6d><span data-v-1444af6d>${ssrInterpolate(unref(selectedDcwWindow)?.src === "recipe" ? _ctx.$t("townView.kq2jssk147") : _ctx.$t("townView.k1iwj796179"))}</span><b class="${ssrRenderClass({ amber: unref(selectedDcwWindow)?.src === "recipe" })}" data-v-1444af6d>${ssrInterpolate(dcwWinLabel(unref(selectedDcwNode)))}</b></div><div class="daq-info-row" data-v-1444af6d><span data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1i8rtqt070"))}</span><b data-v-1444af6d>${ssrInterpolate(unref(selectedDcwDeviceName) || _ctx.$t("townView.k3own4q148"))}</b></div><div class="daq-bind-bar" data-v-1444af6d><input${ssrRenderAttr("value", unref(dcwWriteDrafts)[unref(selected).id])} type="number" class="bind-select"${ssrRenderAttr("step", 10 ** -(unref(selectedDcwNode)?.decimals ?? 2))}${ssrRenderAttr("placeholder", dcwWinInputPh(unref(selectedDcwNode)))} data-v-1444af6d><button class="bind-add-btn"${ssrIncludeBooleanAttr(unref(dcwWriteDrafts)[unref(selected).id] == null || unref(dcwWriteDrafts)[unref(selected).id] === "") ? " disabled" : ""} data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.kwrbtn180"))}</button></div>`);
2478
- if (unref(dcwWriteErrs)[unref(selected).id]) _push(`<p class="dcw-err" data-v-1444af6d>${ssrInterpolate(unref(dcwWriteErrs)[unref(selected).id])}</p>`);
2477
+ _push(`<div class="daq-info" data-v-5660e131><div class="daq-info-row" data-v-5660e131><span data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1deqh0d069"))}</span><b class="cy" data-v-5660e131>${ssrInterpolate(unref(selectedDcwNode)?.value != null ? unref(selectedDcwNode).value.toFixed(unref(selectedDcwNode).decimals) : "--")} ${ssrInterpolate(unref(selectedDcwNode)?.unit)}</b></div><div class="daq-info-row" data-v-5660e131><span data-v-5660e131>${ssrInterpolate(unref(selectedDcwWindow)?.src === "recipe" ? _ctx.$t("townView.kq2jssk147") : _ctx.$t("townView.k1iwj796179"))}</span><b class="${ssrRenderClass({ amber: unref(selectedDcwWindow)?.src === "recipe" })}" data-v-5660e131>${ssrInterpolate(dcwWinLabel(unref(selectedDcwNode)))}</b></div><div class="daq-info-row" data-v-5660e131><span data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1i8rtqt070"))}</span><b data-v-5660e131>${ssrInterpolate(unref(selectedDcwDeviceName) || _ctx.$t("townView.k3own4q148"))}</b></div><div class="daq-bind-bar" data-v-5660e131><input${ssrRenderAttr("value", unref(dcwWriteDrafts)[unref(selected).id])} type="number" class="bind-select"${ssrRenderAttr("step", 10 ** -(unref(selectedDcwNode)?.decimals ?? 2))}${ssrRenderAttr("placeholder", dcwWinInputPh(unref(selectedDcwNode)))} data-v-5660e131><button class="bind-add-btn"${ssrIncludeBooleanAttr(unref(dcwWriteDrafts)[unref(selected).id] == null || unref(dcwWriteDrafts)[unref(selected).id] === "") ? " disabled" : ""} data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.kwrbtn180"))}</button></div>`);
2478
+ if (unref(dcwWriteErrs)[unref(selected).id]) _push(`<p class="dcw-err" data-v-5660e131>${ssrInterpolate(unref(dcwWriteErrs)[unref(selected).id])}</p>`);
2479
2479
  else _push(`<!---->`);
2480
2480
  if (unref(mode) === "edit") {
2481
- _push(`<div class="daq-bind-bar" data-v-1444af6d><select class="bind-select" data-v-1444af6d><option value="" data-v-1444af6d${ssrIncludeBooleanAttr(Array.isArray(unref(dcwBindPick)) ? ssrLooseContain(unref(dcwBindPick), "") : ssrLooseEqual(unref(dcwBindPick), "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.kjo6ekr071"))}</option><!--[-->`);
2481
+ _push(`<div class="daq-bind-bar" data-v-5660e131><select class="bind-select" data-v-5660e131><option value="" data-v-5660e131${ssrIncludeBooleanAttr(Array.isArray(unref(dcwBindPick)) ? ssrLooseContain(unref(dcwBindPick), "") : ssrLooseEqual(unref(dcwBindPick), "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.kjo6ekr071"))}</option><!--[-->`);
2482
2482
  ssrRenderList(unref(deviceTwins).twins.filter((x) => !isLegacyDaqTwin(x) && x.id !== (unref(selected)?.id ?? "")), (dv) => {
2483
- _push(`<option${ssrRenderAttr("value", dv.id)} data-v-1444af6d${ssrIncludeBooleanAttr(Array.isArray(unref(dcwBindPick)) ? ssrLooseContain(unref(dcwBindPick), dv.id) : ssrLooseEqual(unref(dcwBindPick), dv.id)) ? " selected" : ""}>${ssrInterpolate(dv.name)}</option>`);
2483
+ _push(`<option${ssrRenderAttr("value", dv.id)} data-v-5660e131${ssrIncludeBooleanAttr(Array.isArray(unref(dcwBindPick)) ? ssrLooseContain(unref(dcwBindPick), dv.id) : ssrLooseEqual(unref(dcwBindPick), dv.id)) ? " selected" : ""}>${ssrInterpolate(dv.name)}</option>`);
2484
2484
  });
2485
- _push(`<!--]--></select><button class="bind-add-btn"${ssrIncludeBooleanAttr(!unref(selectedDcwDeviceName) && !unref(dcwBindPick)) ? " disabled" : ""} data-v-1444af6d>${ssrInterpolate(unref(selectedDcwDeviceName) ? _ctx.$t("townView.k479eh149") : _ctx.$t("townView.k452a8102"))}</button></div>`);
2485
+ _push(`<!--]--></select><button class="bind-add-btn"${ssrIncludeBooleanAttr(!unref(selectedDcwDeviceName) && !unref(dcwBindPick)) ? " disabled" : ""} data-v-5660e131>${ssrInterpolate(unref(selectedDcwDeviceName) ? _ctx.$t("townView.k479eh149") : _ctx.$t("townView.k452a8102"))}</button></div>`);
2486
2486
  } else _push(`<!---->`);
2487
2487
  _push(`</div>`);
2488
2488
  } else if (unref(selectedIsDaq)) {
2489
- _push(`<div class="daq-info" data-v-1444af6d><div class="daq-info-row" data-v-1444af6d><span data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k3mv305072"))}</span><b class="cy" data-v-1444af6d>${ssrInterpolate(unref(selectedDaqSim) ? fmtDaq(unref(selectedDaqSim)) : "--")} ${ssrInterpolate(unref(selectedDaqSim)?.tpl.unit)}</b></div><div class="daq-info-row" data-v-1444af6d><span data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1faqmjb073"))}</span><b data-v-1444af6d>${ssrInterpolate(unref(selectedDaqSim)?.tpl.min)} ~ ${ssrInterpolate(unref(selectedDaqSim)?.tpl.max)}</b></div><div class="daq-info-row" data-v-1444af6d><span data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1i8rtqt070"))}</span><b data-v-1444af6d>${ssrInterpolate(unref(daqBoundDeviceName) || _ctx.$t("townView.k3own4q148"))}</b></div>`);
2489
+ _push(`<div class="daq-info" data-v-5660e131><div class="daq-info-row" data-v-5660e131><span data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k3mv305072"))}</span><b class="cy" data-v-5660e131>${ssrInterpolate(unref(selectedDaqSim) ? fmtDaq(unref(selectedDaqSim)) : "--")} ${ssrInterpolate(unref(selectedDaqSim)?.tpl.unit)}</b></div><div class="daq-info-row" data-v-5660e131><span data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1faqmjb073"))}</span><b data-v-5660e131>${ssrInterpolate(unref(selectedDaqSim)?.tpl.min)} ~ ${ssrInterpolate(unref(selectedDaqSim)?.tpl.max)}</b></div><div class="daq-info-row" data-v-5660e131><span data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1i8rtqt070"))}</span><b data-v-5660e131>${ssrInterpolate(unref(daqBoundDeviceName) || _ctx.$t("townView.k3own4q148"))}</b></div>`);
2490
2490
  if (unref(mode) === "edit") {
2491
- _push(`<div class="daq-bind-bar" data-v-1444af6d><select class="bind-select" data-v-1444af6d><option value="" data-v-1444af6d${ssrIncludeBooleanAttr(Array.isArray(unref(bindPick)) ? ssrLooseContain(unref(bindPick), "") : ssrLooseEqual(unref(bindPick), "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.kjo6ekr071"))}</option><!--[-->`);
2491
+ _push(`<div class="daq-bind-bar" data-v-5660e131><select class="bind-select" data-v-5660e131><option value="" data-v-5660e131${ssrIncludeBooleanAttr(Array.isArray(unref(bindPick)) ? ssrLooseContain(unref(bindPick), "") : ssrLooseEqual(unref(bindPick), "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.kjo6ekr071"))}</option><!--[-->`);
2492
2492
  ssrRenderList(unref(deviceTwins).twins.filter((x) => !isLegacyDaqTwin(x) && x.id !== (unref(selected)?.id ?? "")), (dv) => {
2493
- _push(`<option${ssrRenderAttr("value", dv.id)} data-v-1444af6d${ssrIncludeBooleanAttr(Array.isArray(unref(bindPick)) ? ssrLooseContain(unref(bindPick), dv.id) : ssrLooseEqual(unref(bindPick), dv.id)) ? " selected" : ""}>${ssrInterpolate(dv.name)}</option>`);
2493
+ _push(`<option${ssrRenderAttr("value", dv.id)} data-v-5660e131${ssrIncludeBooleanAttr(Array.isArray(unref(bindPick)) ? ssrLooseContain(unref(bindPick), dv.id) : ssrLooseEqual(unref(bindPick), dv.id)) ? " selected" : ""}>${ssrInterpolate(dv.name)}</option>`);
2494
2494
  });
2495
- _push(`<!--]--></select><button class="bind-add-btn"${ssrIncludeBooleanAttr(!unref(daqBoundDeviceName) && !unref(bindPick)) ? " disabled" : ""} data-v-1444af6d>${ssrInterpolate(unref(daqBoundDeviceName) ? _ctx.$t("townView.k479eh149") : _ctx.$t("townView.k452a8102"))}</button></div>`);
2495
+ _push(`<!--]--></select><button class="bind-add-btn"${ssrIncludeBooleanAttr(!unref(daqBoundDeviceName) && !unref(bindPick)) ? " disabled" : ""} data-v-5660e131>${ssrInterpolate(unref(daqBoundDeviceName) ? _ctx.$t("townView.k479eh149") : _ctx.$t("townView.k452a8102"))}</button></div>`);
2496
2496
  } else _push(`<!---->`);
2497
- if (unref(mode) === "edit" && unref(selectedDaqNode)) _push(`<div class="daq-node-ctl" data-v-1444af6d><div class="daq-info-row" data-v-1444af6d><span data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1l6g2ga074"))}</span><span class="daq-th-inputs" data-v-1444af6d><input${ssrRenderAttr("value", unref(daqIntervalDraft))} type="number" min="200" max="60000" step="100" class="daq-num" data-v-1444af6d><small data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1or92b075"))}</small></span></div><div class="daq-info-row" data-v-1444af6d><span data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k3x5tpx076"))}</span><span class="daq-th-inputs" data-v-1444af6d><input${ssrRenderAttr("value", unref(selectedDaqNode).warnLow)} type="number" step="any" class="daq-num" data-v-1444af6d> ~ <input${ssrRenderAttr("value", unref(selectedDaqNode).warnHigh)} type="number" step="any" class="daq-num" data-v-1444af6d></span></div><div class="daq-info-row" data-v-1444af6d><span data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1hjj0jf077"))}</span><span class="daq-th-inputs" data-v-1444af6d><input${ssrRenderAttr("value", unref(selectedDaqNode).min)} type="number" step="any" class="daq-num" data-v-1444af6d> ~ <input${ssrRenderAttr("value", unref(selectedDaqNode).max)} type="number" step="any" class="daq-num" data-v-1444af6d></span></div><div class="daq-info-row" data-v-1444af6d><span data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k48tki078"))}</span><button class="${ssrRenderClass([{ warn: unref(selectedDaqNode).enabled }, "bind-add-btn"])}" data-v-1444af6d>${ssrInterpolate(unref(selectedDaqNode).enabled ? _ctx.$t("townView.k1wv0nyo150") : _ctx.$t("townView.kh1586b180"))}</button></div><div class="daq-info-row" data-v-1444af6d><span data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k3xakp079"))}</span><button class="bind-add-btn danger"${ssrRenderAttr("title", _ctx.$t("townView.kpwutri014"))} data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1bpp30k080"))}</button></div></div>`);
2498
- else _push(`<div class="ins-empty" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.kzk5dfx081"))}</div>`);
2497
+ if (unref(mode) === "edit" && unref(selectedDaqNode)) _push(`<div class="daq-node-ctl" data-v-5660e131><div class="daq-info-row" data-v-5660e131><span data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1l6g2ga074"))}</span><span class="daq-th-inputs" data-v-5660e131><input${ssrRenderAttr("value", unref(daqIntervalDraft))} type="number" min="200" max="60000" step="100" class="daq-num" data-v-5660e131><small data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1or92b075"))}</small></span></div><div class="daq-info-row" data-v-5660e131><span data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k3x5tpx076"))}</span><span class="daq-th-inputs" data-v-5660e131><input${ssrRenderAttr("value", unref(selectedDaqNode).warnLow)} type="number" step="any" class="daq-num" data-v-5660e131> ~ <input${ssrRenderAttr("value", unref(selectedDaqNode).warnHigh)} type="number" step="any" class="daq-num" data-v-5660e131></span></div><div class="daq-info-row" data-v-5660e131><span data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1hjj0jf077"))}</span><span class="daq-th-inputs" data-v-5660e131><input${ssrRenderAttr("value", unref(selectedDaqNode).min)} type="number" step="any" class="daq-num" data-v-5660e131> ~ <input${ssrRenderAttr("value", unref(selectedDaqNode).max)} type="number" step="any" class="daq-num" data-v-5660e131></span></div><div class="daq-info-row" data-v-5660e131><span data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k48tki078"))}</span><button class="${ssrRenderClass([{ warn: unref(selectedDaqNode).enabled }, "bind-add-btn"])}" data-v-5660e131>${ssrInterpolate(unref(selectedDaqNode).enabled ? _ctx.$t("townView.k1wv0nyo150") : _ctx.$t("townView.kh1586b180"))}</button></div><div class="daq-info-row" data-v-5660e131><span data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k3xakp079"))}</span><button class="bind-add-btn danger"${ssrRenderAttr("title", _ctx.$t("townView.kpwutri014"))} data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1bpp30k080"))}</button></div></div>`);
2498
+ else _push(`<div class="ins-empty" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.kzk5dfx081"))}</div>`);
2499
2499
  _push(`</div>`);
2500
2500
  } else {
2501
- _push(`<!--[--><div class="obj-row" data-v-1444af6d><span class="obj-label" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k3xhia082"))}</span><input${ssrRenderAttr("value", unref(objNameDraft))} class="obj-input"${ssrRenderAttr("placeholder", _ctx.$t("townView.k1k6vbaf015"))}${ssrIncludeBooleanAttr(unref(mode) !== "edit") ? " disabled" : ""}${ssrRenderAttr("title", unref(mode) === "edit" ? "设备名称" : "运行模式只读")} data-v-1444af6d></div><div class="obj-row" data-v-1444af6d><span class="obj-label" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k41amp083"))}</span><select class="obj-select"${ssrRenderAttr("value", unref(scene3dRef)?.getDeviceModelRef?.(unref(selected).id) ?? "")}${ssrIncludeBooleanAttr(unref(mode) !== "edit") ? " disabled" : ""} data-v-1444af6d><!--[-->`);
2501
+ _push(`<!--[--><div class="obj-row" data-v-5660e131><span class="obj-label" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k3xhia082"))}</span><input${ssrRenderAttr("value", unref(objNameDraft))} class="obj-input"${ssrRenderAttr("placeholder", _ctx.$t("townView.k1k6vbaf015"))}${ssrIncludeBooleanAttr(unref(mode) !== "edit") ? " disabled" : ""}${ssrRenderAttr("title", unref(mode) === "edit" ? "设备名称" : "运行模式只读")} data-v-5660e131></div><div class="obj-row" data-v-5660e131><span class="obj-label" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k41amp083"))}</span><select class="obj-select"${ssrRenderAttr("value", unref(scene3dRef)?.getDeviceModelRef?.(unref(selected).id) ?? "")}${ssrIncludeBooleanAttr(unref(mode) !== "edit") ? " disabled" : ""} data-v-5660e131><!--[-->`);
2502
2502
  ssrRenderList(unref(deviceModels), (m) => {
2503
- _push(`<option${ssrRenderAttr("value", m.id)} data-v-1444af6d>${ssrInterpolate(m.name)}</option>`);
2503
+ _push(`<option${ssrRenderAttr("value", m.id)} data-v-5660e131>${ssrInterpolate(m.name)}</option>`);
2504
2504
  });
2505
- _push(`<!--]--></select></div><div class="sect-hd" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1vtyk05130"))} ${ssrInterpolate(unref(boundDaqRows).length)} ${ssrInterpolate(_ctx.$t("townView.k3vfpz5138"))}</div><!--[-->`);
2505
+ _push(`<!--]--></select></div><div class="sect-hd" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1vtyk05130"))} ${ssrInterpolate(unref(boundDaqRows).length)} ${ssrInterpolate(_ctx.$t("townView.k3vfpz5138"))}</div><!--[-->`);
2506
2506
  ssrRenderList(unref(boundDaqRows), (r) => {
2507
- _push(`<div class="bind-row" data-v-1444af6d><span class="bind-ico" data-v-1444af6d><svg class="bind-svg" viewBox="0 0 24 24" data-v-1444af6d>${daqIcon(r.icon) ?? ""}</svg></span><span class="bind-meta" data-v-1444af6d><span class="bind-label" data-v-1444af6d>${ssrInterpolate(r.ch)}</span><span class="bind-val" data-v-1444af6d><b data-v-1444af6d>${ssrInterpolate(r.value)}</b> ${ssrInterpolate(r.unit)} · ${ssrInterpolate(r.name)}</span></span><canvas class="bind-spark" width="56" height="20" data-v-1444af6d></canvas>`);
2508
- if (unref(mode) === "edit") _push(`<button class="bind-x"${ssrRenderAttr("title", _ctx.$t("townView.k1k73omv016"))} data-v-1444af6d> ✕ </button>`);
2507
+ _push(`<div class="bind-row" data-v-5660e131><span class="bind-ico" data-v-5660e131><svg class="bind-svg" viewBox="0 0 24 24" data-v-5660e131>${daqIcon(r.icon) ?? ""}</svg></span><span class="bind-meta" data-v-5660e131><span class="bind-label" data-v-5660e131>${ssrInterpolate(r.ch)}</span><span class="bind-val" data-v-5660e131><b data-v-5660e131>${ssrInterpolate(r.value)}</b> ${ssrInterpolate(r.unit)} · ${ssrInterpolate(r.name)}</span></span><canvas class="bind-spark" width="56" height="20" data-v-5660e131></canvas>`);
2508
+ if (unref(mode) === "edit") _push(`<button class="bind-x"${ssrRenderAttr("title", _ctx.$t("townView.k1k73omv016"))} data-v-5660e131> ✕ </button>`);
2509
2509
  else _push(`<!---->`);
2510
2510
  _push(`</div>`);
2511
2511
  });
2512
2512
  _push(`<!--]-->`);
2513
- if (!unref(boundDaqRows).length) _push(`<div class="ins-empty" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.kgpuqhb084"))}</div>`);
2513
+ if (!unref(boundDaqRows).length) _push(`<div class="ins-empty" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.kgpuqhb084"))}</div>`);
2514
2514
  else _push(`<!---->`);
2515
2515
  if (unref(mode) === "edit") {
2516
- _push(`<div class="bind-add-wrap" data-v-1444af6d><button class="bind-add" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.kvm0lin085"))}</button>`);
2516
+ _push(`<div class="bind-add-wrap" data-v-5660e131><button class="bind-add" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.kvm0lin085"))}</button>`);
2517
2517
  if (unref(bindPopOpen)) {
2518
- _push(`<div class="bind-pop" style="${ssrRenderStyle({ maxHeight: `${unref(bindPopMaxH)}px` })}" data-v-1444af6d><!--[-->`);
2518
+ _push(`<div class="bind-pop" style="${ssrRenderStyle({ maxHeight: `${unref(bindPopMaxH)}px` })}" data-v-5660e131><!--[-->`);
2519
2519
  ssrRenderList(unref(daqTemplates), (tpl) => {
2520
2520
  _push(`<!--[-->`);
2521
2521
  if (unref(daqBindChoices)[tpl.id]?.length) {
2522
- _push(`<div class="bp-group" data-v-1444af6d><span class="bp-tpl" data-v-1444af6d>${ssrInterpolate(tpl.name)} · ${ssrInterpolate(tpl.ch)}</span><!--[-->`);
2522
+ _push(`<div class="bp-group" data-v-5660e131><span class="bp-tpl" data-v-5660e131>${ssrInterpolate(tpl.name)} · ${ssrInterpolate(tpl.ch)}</span><!--[-->`);
2523
2523
  ssrRenderList(unref(daqBindChoices)[tpl.id], (c) => {
2524
- _push(`<button${ssrRenderAttr("data-node-id", c.id)}${ssrRenderAttr("title", c.devName ? _ctx.$t("townView.k2bindr0007", { p0: c.devName }) : _ctx.$t("townView.k2bindr0008"))} data-v-1444af6d><svg class="bind-svg" viewBox="0 0 24 24" data-v-1444af6d>${daqIcon(c.tpl.icon) ?? ""}</svg><span data-v-1444af6d>${ssrInterpolate(c.name)}`);
2525
- if (c.devName) _push(`<i class="bp-cur" data-v-1444af6d>→ ${ssrInterpolate(c.devName)}</i>`);
2526
- else if (!c.placed) _push(`<i class="bp-cur" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k2bindr0009"))}</i>`);
2524
+ _push(`<button${ssrRenderAttr("data-node-id", c.id)}${ssrRenderAttr("title", c.devName ? _ctx.$t("townView.k2bindr0007", { p0: c.devName }) : _ctx.$t("townView.k2bindr0008"))} data-v-5660e131><svg class="bind-svg" viewBox="0 0 24 24" data-v-5660e131>${daqIcon(c.tpl.icon) ?? ""}</svg><span data-v-5660e131>${ssrInterpolate(c.name)}`);
2525
+ if (c.devName) _push(`<i class="bp-cur" data-v-5660e131>→ ${ssrInterpolate(c.devName)}</i>`);
2526
+ else if (!c.placed) _push(`<i class="bp-cur" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k2bindr0009"))}</i>`);
2527
2527
  else _push(`<!---->`);
2528
2528
  _push(`</span></button>`);
2529
2529
  });
@@ -2532,40 +2532,40 @@ var TownView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
2532
2532
  _push(`<!--]-->`);
2533
2533
  });
2534
2534
  _push(`<!--]-->`);
2535
- if (!unref(daqBindChoiceCount)) _push(`<div class="bp-empty" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k2bindr0010"))}</div>`);
2535
+ if (!unref(daqBindChoiceCount)) _push(`<div class="bp-empty" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k2bindr0010"))}</div>`);
2536
2536
  else _push(`<!---->`);
2537
2537
  _push(`</div>`);
2538
2538
  } else _push(`<!---->`);
2539
2539
  _push(`</div>`);
2540
2540
  } else _push(`<!---->`);
2541
- _push(`<div class="sect-hd" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.ktzir2t131"))} ${ssrInterpolate(unref(boundDcwRows).length)} ${ssrInterpolate(_ctx.$t("townView.k4l1w042"))}</div><!--[-->`);
2541
+ _push(`<div class="sect-hd" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.ktzir2t131"))} ${ssrInterpolate(unref(boundDcwRows).length)} ${ssrInterpolate(_ctx.$t("townView.k4l1w042"))}</div><!--[-->`);
2542
2542
  ssrRenderList(unref(boundDcwRows), (r) => {
2543
- _push(`<div class="dcw-row" data-v-1444af6d><div class="dcw-top" data-v-1444af6d><span class="bind-ico" data-v-1444af6d><svg class="bind-svg" viewBox="0 0 24 24" data-v-1444af6d>${daqIcon(r.icon) ?? ""}</svg></span><span class="dcw-id" data-v-1444af6d><span class="bind-label" data-v-1444af6d>${ssrInterpolate(r.ch)}`);
2544
- if (r.rMin != null || r.rMax != null) _push(`<i class="dcw-tag" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k48grv086"))}</i>`);
2543
+ _push(`<div class="dcw-row" data-v-5660e131><div class="dcw-top" data-v-5660e131><span class="bind-ico" data-v-5660e131><svg class="bind-svg" viewBox="0 0 24 24" data-v-5660e131>${daqIcon(r.icon) ?? ""}</svg></span><span class="dcw-id" data-v-5660e131><span class="bind-label" data-v-5660e131>${ssrInterpolate(r.ch)}`);
2544
+ if (r.rMin != null || r.rMax != null) _push(`<i class="dcw-tag" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k48grv086"))}</i>`);
2545
2545
  else _push(`<!---->`);
2546
- _push(`</span><span class="dcw-name" data-v-1444af6d>${ssrInterpolate(r.name)}</span></span><span class="dcw-cur" data-v-1444af6d><b data-v-1444af6d>${ssrInterpolate(r.value != null ? r.value.toFixed(r.decimals) : "--")}</b><i data-v-1444af6d>${ssrInterpolate(r.unit)}</i></span>`);
2547
- if (unref(mode) === "edit") _push(`<button class="bind-x"${ssrRenderAttr("title", _ctx.$t("townView.k1k73omv016"))} data-v-1444af6d> ✕ </button>`);
2546
+ _push(`</span><span class="dcw-name" data-v-5660e131>${ssrInterpolate(r.name)}</span></span><span class="dcw-cur" data-v-5660e131><b data-v-5660e131>${ssrInterpolate(r.value != null ? r.value.toFixed(r.decimals) : "--")}</b><i data-v-5660e131>${ssrInterpolate(r.unit)}</i></span>`);
2547
+ if (unref(mode) === "edit") _push(`<button class="bind-x"${ssrRenderAttr("title", _ctx.$t("townView.k1k73omv016"))} data-v-5660e131> ✕ </button>`);
2548
2548
  else _push(`<!---->`);
2549
- _push(`</div><div class="${ssrRenderClass([{ recipe: r.rMin != null || r.rMax != null }, "dcw-win"])}" data-v-1444af6d><em data-v-1444af6d>${ssrInterpolate(r.rMin != null || r.rMax != null ? _ctx.$t("townView.k1l3m0hx151") : _ctx.$t("townView.k1bc6rqf181"))}</em><span class="dcw-win-num" data-v-1444af6d>${ssrInterpolate(r.rMin ?? "-∞")}</span><span class="dcw-win-track" data-v-1444af6d><i style="${ssrRenderStyle({ left: `${dcwMarkPct(r)}%` })}" data-v-1444af6d></i></span><span class="dcw-win-num" data-v-1444af6d>${ssrInterpolate(r.rMax ?? "+∞")}</span></div><div class="dcw-write" data-v-1444af6d><input${ssrRenderAttr("value", unref(dcwWriteDrafts)[r.dcwId])} type="number"${ssrRenderAttr("step", 10 ** -r.decimals)}${ssrRenderAttr("placeholder", `${r.rMin ?? r.gMin} ~ ${r.rMax ?? r.gMax}`)} data-v-1444af6d><button class="dcw-send"${ssrIncludeBooleanAttr(unref(dcwWriteDrafts)[r.dcwId] == null || unref(dcwWriteDrafts)[r.dcwId] === "") ? " disabled" : ""}${ssrRenderAttr("title", _ctx.$t("townView.k15t7izc017"))} data-v-1444af6d> write </button></div>`);
2550
- if (unref(dcwWriteErrs)[r.dcwId]) _push(`<small class="dcw-err" data-v-1444af6d>${ssrInterpolate(unref(dcwWriteErrs)[r.dcwId])}</small>`);
2549
+ _push(`</div><div class="${ssrRenderClass([{ recipe: r.rMin != null || r.rMax != null }, "dcw-win"])}" data-v-5660e131><em data-v-5660e131>${ssrInterpolate(r.rMin != null || r.rMax != null ? _ctx.$t("townView.k1l3m0hx151") : _ctx.$t("townView.k1bc6rqf181"))}</em><span class="dcw-win-num" data-v-5660e131>${ssrInterpolate(r.rMin ?? "-∞")}</span><span class="dcw-win-track" data-v-5660e131><i style="${ssrRenderStyle({ left: `${dcwMarkPct(r)}%` })}" data-v-5660e131></i></span><span class="dcw-win-num" data-v-5660e131>${ssrInterpolate(r.rMax ?? "+∞")}</span></div><div class="dcw-write" data-v-5660e131><input${ssrRenderAttr("value", unref(dcwWriteDrafts)[r.dcwId])} type="number"${ssrRenderAttr("step", 10 ** -r.decimals)}${ssrRenderAttr("placeholder", `${r.rMin ?? r.gMin} ~ ${r.rMax ?? r.gMax}`)} data-v-5660e131><button class="dcw-send"${ssrIncludeBooleanAttr(unref(dcwWriteDrafts)[r.dcwId] == null || unref(dcwWriteDrafts)[r.dcwId] === "") ? " disabled" : ""}${ssrRenderAttr("title", _ctx.$t("townView.k15t7izc017"))} data-v-5660e131> write </button></div>`);
2550
+ if (unref(dcwWriteErrs)[r.dcwId]) _push(`<small class="dcw-err" data-v-5660e131>${ssrInterpolate(unref(dcwWriteErrs)[r.dcwId])}</small>`);
2551
2551
  else _push(`<!---->`);
2552
2552
  _push(`</div>`);
2553
2553
  });
2554
2554
  _push(`<!--]-->`);
2555
- if (!unref(boundDcwRows).length) _push(`<div class="ins-empty" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k10smf24087"))}</div>`);
2555
+ if (!unref(boundDcwRows).length) _push(`<div class="ins-empty" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k10smf24087"))}</div>`);
2556
2556
  else _push(`<!---->`);
2557
2557
  if (unref(mode) === "edit") {
2558
- _push(`<div class="bind-add-wrap" data-v-1444af6d><button class="bind-add" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.kvk1vh5088"))}</button>`);
2558
+ _push(`<div class="bind-add-wrap" data-v-5660e131><button class="bind-add" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.kvk1vh5088"))}</button>`);
2559
2559
  if (unref(dcwBindPopOpen)) {
2560
- _push(`<div class="bind-pop" style="${ssrRenderStyle({ maxHeight: `${unref(bindPopMaxH)}px` })}" data-v-1444af6d><!--[-->`);
2560
+ _push(`<div class="bind-pop" style="${ssrRenderStyle({ maxHeight: `${unref(bindPopMaxH)}px` })}" data-v-5660e131><!--[-->`);
2561
2561
  ssrRenderList(unref(dcwTemplates), (tpl) => {
2562
2562
  _push(`<!--[-->`);
2563
2563
  if (unref(dcwBindChoices)[tpl.id]?.length) {
2564
- _push(`<div class="bp-group" data-v-1444af6d><span class="bp-tpl" data-v-1444af6d>${ssrInterpolate(tpl.name)} · ${ssrInterpolate(tpl.ch)}</span><!--[-->`);
2564
+ _push(`<div class="bp-group" data-v-5660e131><span class="bp-tpl" data-v-5660e131>${ssrInterpolate(tpl.name)} · ${ssrInterpolate(tpl.ch)}</span><!--[-->`);
2565
2565
  ssrRenderList(unref(dcwBindChoices)[tpl.id], (c) => {
2566
- _push(`<button${ssrRenderAttr("data-node-id", c.id)}${ssrRenderAttr("title", c.devName ? _ctx.$t("townView.k2bindr0007", { p0: c.devName }) : _ctx.$t("townView.k2bindr0008"))} data-v-1444af6d><svg class="bind-svg" viewBox="0 0 24 24" data-v-1444af6d>${daqIcon(c.tpl.icon) ?? ""}</svg><span data-v-1444af6d>${ssrInterpolate(c.name)}`);
2567
- if (c.devName) _push(`<i class="bp-cur" data-v-1444af6d>→ ${ssrInterpolate(c.devName)}</i>`);
2568
- else if (!c.placed) _push(`<i class="bp-cur" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k2bindr0009"))}</i>`);
2566
+ _push(`<button${ssrRenderAttr("data-node-id", c.id)}${ssrRenderAttr("title", c.devName ? _ctx.$t("townView.k2bindr0007", { p0: c.devName }) : _ctx.$t("townView.k2bindr0008"))} data-v-5660e131><svg class="bind-svg" viewBox="0 0 24 24" data-v-5660e131>${daqIcon(c.tpl.icon) ?? ""}</svg><span data-v-5660e131>${ssrInterpolate(c.name)}`);
2567
+ if (c.devName) _push(`<i class="bp-cur" data-v-5660e131>→ ${ssrInterpolate(c.devName)}</i>`);
2568
+ else if (!c.placed) _push(`<i class="bp-cur" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k2bindr0009"))}</i>`);
2569
2569
  else _push(`<!---->`);
2570
2570
  _push(`</span></button>`);
2571
2571
  });
@@ -2574,121 +2574,121 @@ var TownView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
2574
2574
  _push(`<!--]-->`);
2575
2575
  });
2576
2576
  _push(`<!--]-->`);
2577
- if (!unref(dcwBindChoiceCount)) _push(`<div class="bp-empty" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k2bindr0010"))}</div>`);
2577
+ if (!unref(dcwBindChoiceCount)) _push(`<div class="bp-empty" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k2bindr0010"))}</div>`);
2578
2578
  else _push(`<!---->`);
2579
2579
  _push(`</div>`);
2580
2580
  } else _push(`<!---->`);
2581
2581
  _push(`</div>`);
2582
2582
  } else _push(`<!---->`);
2583
- if (unref(mode) === "edit") _push(`<!--[--><div class="sect-hd" data-v-1444af6d> 变换 · BLENDER </div><div class="xz-seg" data-v-1444af6d><button class="${ssrRenderClass([{ on: unref(tMode) === "translate" }, "seg-btn"])}" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1hg3167089"))}</button><button class="${ssrRenderClass([{ on: unref(tMode) === "rotate" }, "seg-btn"])}" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1enlg7i090"))}</button><button class="${ssrRenderClass([{ on: unref(tMode) === "scale" }, "seg-btn"])}" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1ibjg3j091"))}</button></div><div class="scale-row" data-v-1444af6d><span class="scale-min" data-v-1444af6d>0.2×</span><input class="scale-range" type="range" min="0.2" max="5" step="0.05"${ssrRenderAttr("value", unref(selected).scale)} data-v-1444af6d><span class="scale-max" data-v-1444af6d>5×</span></div><div class="scale-val" data-v-1444af6d>${ssrInterpolate(Math.round(unref(selected).scale * 100))}% </div><div class="ins-foot" data-v-1444af6d><button class="${ssrRenderClass([{ armed: unref(deviceDeleteArmed) === unref(selected).id }, "btn btn-danger ins-del"])}" data-v-1444af6d>${ssrInterpolate(unref(deviceDeleteArmed) === unref(selected).id ? _ctx.$t("townView.k1w10xa5152") : _ctx.$t("townView.k121kfef182"))}</button></div><!--]-->`);
2584
- else _push(`<div class="ins-empty" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.kt0i3y2092"))}</div>`);
2583
+ if (unref(mode) === "edit") _push(`<!--[--><div class="sect-hd" data-v-5660e131> 变换 · BLENDER </div><div class="xz-seg" data-v-5660e131><button class="${ssrRenderClass([{ on: unref(tMode) === "translate" }, "seg-btn"])}" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1hg3167089"))}</button><button class="${ssrRenderClass([{ on: unref(tMode) === "rotate" }, "seg-btn"])}" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1enlg7i090"))}</button><button class="${ssrRenderClass([{ on: unref(tMode) === "scale" }, "seg-btn"])}" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1ibjg3j091"))}</button></div><div class="scale-row" data-v-5660e131><span class="scale-min" data-v-5660e131>0.2×</span><input class="scale-range" type="range" min="0.2" max="5" step="0.05"${ssrRenderAttr("value", unref(selected).scale)} data-v-5660e131><span class="scale-max" data-v-5660e131>5×</span></div><div class="scale-val" data-v-5660e131>${ssrInterpolate(Math.round(unref(selected).scale * 100))}% </div><div class="ins-foot" data-v-5660e131><button class="${ssrRenderClass([{ armed: unref(deviceDeleteArmed) === unref(selected).id }, "btn btn-danger ins-del"])}" data-v-5660e131>${ssrInterpolate(unref(deviceDeleteArmed) === unref(selected).id ? _ctx.$t("townView.k1w10xa5152") : _ctx.$t("townView.k121kfef182"))}</button></div><!--]-->`);
2584
+ else _push(`<div class="ins-empty" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.kt0i3y2092"))}</div>`);
2585
2585
  _push(`<!--]-->`);
2586
2586
  }
2587
2587
  _push(`<!--]-->`);
2588
2588
  } else if (unref(selected).kind === "agent") {
2589
- _push(`<!--[--><div class="chat-id-row" data-v-1444af6d><span class="chat-badge" style="${ssrRenderStyle({ "--p-acc": unref(agentChatColor) })}" data-v-1444af6d>${ssrInterpolate(unref(agentChatTitle).slice(0, 1).toUpperCase())}</span><div class="chat-nameplate" data-v-1444af6d><span class="chat-name" data-v-1444af6d>${ssrInterpolate(unref(agentChatTitle))}</span><span class="chat-meta" data-v-1444af6d><span class="${ssrRenderClass([unref(selectedAgentMeta)?.role === "lead" ? "r-lead" : "r-worker", "chat-role"])}" data-v-1444af6d>${ssrInterpolate(unref(selectedAgentRoleTag))}</span><span class="${ssrRenderClass([`s-${unref(selectedAgentMeta)?.state ?? "idle"}`, "chat-state"])}" data-v-1444af6d>${ssrInterpolate(unref(agentChatStateLabel))}</span>`);
2590
- if (unref(selectedAgentMeta)?.harness) _push(`<span class="chat-harness" data-v-1444af6d>${ssrInterpolate(unref(selectedAgentMeta).harness.toUpperCase())}</span>`);
2589
+ _push(`<!--[--><div class="chat-id-row" data-v-5660e131><span class="chat-badge" style="${ssrRenderStyle({ "--p-acc": unref(agentChatColor) })}" data-v-5660e131>${ssrInterpolate(unref(agentChatTitle).slice(0, 1).toUpperCase())}</span><div class="chat-nameplate" data-v-5660e131><span class="chat-name" data-v-5660e131>${ssrInterpolate(unref(agentChatTitle))}</span><span class="chat-meta" data-v-5660e131><span class="${ssrRenderClass([unref(selectedAgentMeta)?.role === "lead" ? "r-lead" : "r-worker", "chat-role"])}" data-v-5660e131>${ssrInterpolate(unref(selectedAgentRoleTag))}</span><span class="${ssrRenderClass([`s-${unref(selectedAgentMeta)?.state ?? "idle"}`, "chat-state"])}" data-v-5660e131>${ssrInterpolate(unref(agentChatStateLabel))}</span>`);
2590
+ if (unref(selectedAgentMeta)?.harness) _push(`<span class="chat-harness" data-v-5660e131>${ssrInterpolate(unref(selectedAgentMeta).harness.toUpperCase())}</span>`);
2591
2591
  else _push(`<!---->`);
2592
- _push(`<span class="chat-count" data-v-1444af6d>${ssrInterpolate(unref(agentHistory).length + unref(agentChatRows).length)} ${ssrInterpolate(_ctx.$t("townView.k4dfq040"))}</span></span></div></div><div class="obj-row" data-v-1444af6d><span class="obj-label" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k41amp083"))}</span><select class="obj-select"${ssrRenderAttr("value", (unref(scene3dRef)?.getAgentModel?.(unref(selected).id) ?? "") || "hero-3d")}${ssrIncludeBooleanAttr(unref(mode) !== "edit") ? " disabled" : ""} data-v-1444af6d><!--[-->`);
2592
+ _push(`<span class="chat-count" data-v-5660e131>${ssrInterpolate(unref(agentHistory).length + unref(agentChatRows).length)} ${ssrInterpolate(_ctx.$t("townView.k4dfq040"))}</span></span></div></div><div class="obj-row" data-v-5660e131><span class="obj-label" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k41amp083"))}</span><select class="obj-select"${ssrRenderAttr("value", (unref(scene3dRef)?.getAgentModel?.(unref(selected).id) ?? "") || "hero-3d")}${ssrIncludeBooleanAttr(unref(mode) !== "edit") ? " disabled" : ""} data-v-5660e131><!--[-->`);
2593
2593
  ssrRenderList(unref(agentModels), (m) => {
2594
- _push(`<option${ssrRenderAttr("value", m.id)} data-v-1444af6d>${ssrInterpolate(m.name)}</option>`);
2594
+ _push(`<option${ssrRenderAttr("value", m.id)} data-v-5660e131>${ssrInterpolate(m.name)}</option>`);
2595
2595
  });
2596
- _push(`<!--]--></select></div><div class="obj-sep" data-v-1444af6d></div><div class="obj-row" data-v-1444af6d><span class="obj-label" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1fix3hb093"))}</span><span class="range-status" data-v-1444af6d>${ssrInterpolate(unref(agentRangeStatusText))}</span>`);
2597
- if (unref(mode) === "edit") _push(`<button class="${ssrRenderClass([{ on: unref(agentDrawingRange) }, "obj-mini"])}"${ssrRenderAttr("title", _ctx.$t("townView.k13enoy3018"))} data-v-1444af6d>${ssrInterpolate(unref(agentDrawingRange) ? _ctx.$t("townView.k3slzhc153") : _ctx.$t("townView.k1f1xmci183"))}</button>`);
2596
+ _push(`<!--]--></select></div><div class="obj-sep" data-v-5660e131></div><div class="obj-row" data-v-5660e131><span class="obj-label" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1fix3hb093"))}</span><span class="range-status" data-v-5660e131>${ssrInterpolate(unref(agentRangeStatusText))}</span>`);
2597
+ if (unref(mode) === "edit") _push(`<button class="${ssrRenderClass([{ on: unref(agentDrawingRange) }, "obj-mini"])}"${ssrRenderAttr("title", _ctx.$t("townView.k13enoy3018"))} data-v-5660e131>${ssrInterpolate(unref(agentDrawingRange) ? _ctx.$t("townView.k3slzhc153") : _ctx.$t("townView.k1f1xmci183"))}</button>`);
2598
2598
  else _push(`<!---->`);
2599
- _push(`</div><div class="obj-sep" data-v-1444af6d></div><div class="sect-hd" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1p7nru2094"))}</div><!--[-->`);
2599
+ _push(`</div><div class="obj-sep" data-v-5660e131></div><div class="sect-hd" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1p7nru2094"))}</div><!--[-->`);
2600
2600
  ssrRenderList(unref(agentBindings), (b) => {
2601
- _push(`<div class="bind-row" data-v-1444af6d><span class="${ssrRenderClass([b.kind === "dcw" ? "accent" : "", "ins-chip"])}" style="${ssrRenderStyle({ "flex": "none" })}" data-v-1444af6d>${ssrInterpolate(b.kind === "dcw" ? _ctx.$t("townView.k40ifw097") : _ctx.$t("townView.k40rjw098"))}</span><span class="bind-meta" data-v-1444af6d><span class="bind-label" data-v-1444af6d>${ssrInterpolate(bindingNodeName(b))}</span><select class="bind-select" style="${ssrRenderStyle({ "margin-top": "3px" })}"${ssrRenderAttr("value", b.mode)}${ssrRenderAttr("title", _ctx.$t("townView.khqvwix019"))} data-v-1444af6d><option value="auto" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1io1ylm095"))}</option><option value="manual" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1duyr8q096"))}</option></select></span><button class="bind-x"${ssrRenderAttr("title", _ctx.$t("townView.k1k73omv016"))} data-v-1444af6d> ✕ </button></div>`);
2601
+ _push(`<div class="bind-row" data-v-5660e131><span class="${ssrRenderClass([b.kind === "dcw" ? "accent" : "", "ins-chip"])}" style="${ssrRenderStyle({ "flex": "none" })}" data-v-5660e131>${ssrInterpolate(b.kind === "dcw" ? _ctx.$t("townView.k40ifw097") : _ctx.$t("townView.k40rjw098"))}</span><span class="bind-meta" data-v-5660e131><span class="bind-label" data-v-5660e131>${ssrInterpolate(bindingNodeName(b))}</span><select class="bind-select" style="${ssrRenderStyle({ "margin-top": "3px" })}"${ssrRenderAttr("value", b.mode)}${ssrRenderAttr("title", _ctx.$t("townView.khqvwix019"))} data-v-5660e131><option value="auto" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1io1ylm095"))}</option><option value="manual" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1duyr8q096"))}</option></select></span><button class="bind-x"${ssrRenderAttr("title", _ctx.$t("townView.k1k73omv016"))} data-v-5660e131> ✕ </button></div>`);
2602
2602
  });
2603
2603
  _push(`<!--]-->`);
2604
- if (!unref(agentBindings).length) _push(`<div class="ins-empty" data-v-1444af6d> 未绑定工业节点 —— 绑定后 Agent 可用 dcw_control / daq_query 工具 </div>`);
2604
+ if (!unref(agentBindings).length) _push(`<div class="ins-empty" data-v-5660e131> 未绑定工业节点 —— 绑定后 Agent 可用 dcw_control / daq_query 工具 </div>`);
2605
2605
  else _push(`<!---->`);
2606
2606
  if (unref(mode) === "edit") {
2607
- _push(`<div class="daq-bind-bar" style="${ssrRenderStyle({ "margin-bottom": "8px" })}" data-v-1444af6d><select class="bind-select" style="${ssrRenderStyle({
2607
+ _push(`<div class="daq-bind-bar" style="${ssrRenderStyle({ "margin-bottom": "8px" })}" data-v-5660e131><select class="bind-select" style="${ssrRenderStyle({
2608
2608
  "flex": "none",
2609
2609
  "width": "62px"
2610
- })}" data-v-1444af6d><option value="dcw" data-v-1444af6d${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindKind)) ? ssrLooseContain(unref(agentBindKind), "dcw") : ssrLooseEqual(unref(agentBindKind), "dcw")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.k40ifw097"))}</option><option value="daq" data-v-1444af6d${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindKind)) ? ssrLooseContain(unref(agentBindKind), "daq") : ssrLooseEqual(unref(agentBindKind), "daq")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.k40rjw098"))}</option></select><select class="bind-select" data-v-1444af6d><option value="" data-v-1444af6d${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindNodeId)) ? ssrLooseContain(unref(agentBindNodeId), "") : ssrLooseEqual(unref(agentBindNodeId), "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.kurjldk099"))}</option>`);
2610
+ })}" data-v-5660e131><option value="dcw" data-v-5660e131${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindKind)) ? ssrLooseContain(unref(agentBindKind), "dcw") : ssrLooseEqual(unref(agentBindKind), "dcw")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.k40ifw097"))}</option><option value="daq" data-v-5660e131${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindKind)) ? ssrLooseContain(unref(agentBindKind), "daq") : ssrLooseEqual(unref(agentBindKind), "daq")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.k40rjw098"))}</option></select><select class="bind-select" data-v-5660e131><option value="" data-v-5660e131${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindNodeId)) ? ssrLooseContain(unref(agentBindNodeId), "") : ssrLooseEqual(unref(agentBindNodeId), "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.kurjldk099"))}</option>`);
2611
2611
  if (unref(agentBindKind) === "dcw") {
2612
2612
  _push(`<!--[-->`);
2613
2613
  ssrRenderList(unref(dcw).nodes, (n) => {
2614
- _push(`<option${ssrRenderAttr("value", n.id)} data-v-1444af6d${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindNodeId)) ? ssrLooseContain(unref(agentBindNodeId), n.id) : ssrLooseEqual(unref(agentBindNodeId), n.id)) ? " selected" : ""}>${ssrInterpolate(n.name)}</option>`);
2614
+ _push(`<option${ssrRenderAttr("value", n.id)} data-v-5660e131${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindNodeId)) ? ssrLooseContain(unref(agentBindNodeId), n.id) : ssrLooseEqual(unref(agentBindNodeId), n.id)) ? " selected" : ""}>${ssrInterpolate(n.name)}</option>`);
2615
2615
  });
2616
2616
  _push(`<!--]-->`);
2617
2617
  } else {
2618
2618
  _push(`<!--[-->`);
2619
2619
  ssrRenderList(unref(daq).nodes, (n) => {
2620
- _push(`<option${ssrRenderAttr("value", n.id)} data-v-1444af6d${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindNodeId)) ? ssrLooseContain(unref(agentBindNodeId), n.id) : ssrLooseEqual(unref(agentBindNodeId), n.id)) ? " selected" : ""}>${ssrInterpolate(n.name)}</option>`);
2620
+ _push(`<option${ssrRenderAttr("value", n.id)} data-v-5660e131${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindNodeId)) ? ssrLooseContain(unref(agentBindNodeId), n.id) : ssrLooseEqual(unref(agentBindNodeId), n.id)) ? " selected" : ""}>${ssrInterpolate(n.name)}</option>`);
2621
2621
  });
2622
2622
  _push(`<!--]-->`);
2623
2623
  }
2624
2624
  _push(`</select><select class="bind-select" style="${ssrRenderStyle({
2625
2625
  "flex": "none",
2626
2626
  "width": "76px"
2627
- })}" data-v-1444af6d><option value="auto" data-v-1444af6d${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindMode)) ? ssrLooseContain(unref(agentBindMode), "auto") : ssrLooseEqual(unref(agentBindMode), "auto")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.k45kpj100"))}</option><option value="manual" data-v-1444af6d${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindMode)) ? ssrLooseContain(unref(agentBindMode), "manual") : ssrLooseEqual(unref(agentBindMode), "manual")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.k3zul4101"))}</option></select><button class="bind-add-btn"${ssrIncludeBooleanAttr(!unref(agentBindNodeId)) ? " disabled" : ""} data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k452a8102"))}</button></div>`);
2627
+ })}" data-v-5660e131><option value="auto" data-v-5660e131${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindMode)) ? ssrLooseContain(unref(agentBindMode), "auto") : ssrLooseEqual(unref(agentBindMode), "auto")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.k45kpj100"))}</option><option value="manual" data-v-5660e131${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindMode)) ? ssrLooseContain(unref(agentBindMode), "manual") : ssrLooseEqual(unref(agentBindMode), "manual")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.k3zul4101"))}</option></select><button class="bind-add-btn"${ssrIncludeBooleanAttr(!unref(agentBindNodeId)) ? " disabled" : ""} data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k452a8102"))}</button></div>`);
2628
2628
  } else _push(`<!---->`);
2629
2629
  if (unref(pendingApprovals).length) {
2630
- _push(`<!--[--><div class="sect-hd" style="${ssrRenderStyle({ "color": "var(--hud-amber)" })}" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1gk2jg7132"))} ${ssrInterpolate(unref(pendingApprovals).length)}</div><!--[-->`);
2630
+ _push(`<!--[--><div class="sect-hd" style="${ssrRenderStyle({ "color": "var(--hud-amber)" })}" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1gk2jg7132"))} ${ssrInterpolate(unref(pendingApprovals).length)}</div><!--[-->`);
2631
2631
  ssrRenderList(unref(pendingApprovals), (ap) => {
2632
- _push(`<div class="approval-card" data-v-1444af6d><div class="approval-detail" data-v-1444af6d>${ssrInterpolate(ap.detail)}</div><div class="${ssrRenderClass([{ urgent: approvalRemainingSec(ap) <= 30 }, "approval-ttl"])}" data-v-1444af6d> ⏱ ${ssrInterpolate(approvalRemainingSec(ap))}s ${ssrInterpolate(_ctx.$t("townView.hitlAutoReject"))}</div><input${ssrRenderAttr("value", unref(approvalComments)[ap.id])} class="dcw-write input-inline" style="${ssrRenderStyle({
2632
+ _push(`<div class="approval-card" data-v-5660e131><div class="approval-detail" data-v-5660e131>${ssrInterpolate(ap.detail)}</div><div class="${ssrRenderClass([{ urgent: approvalRemainingSec(ap) <= 30 }, "approval-ttl"])}" data-v-5660e131> ⏱ ${ssrInterpolate(approvalRemainingSec(ap))}s ${ssrInterpolate(_ctx.$t("townView.hitlAutoReject"))}</div><input${ssrRenderAttr("value", unref(approvalComments)[ap.id])} class="dcw-write input-inline" style="${ssrRenderStyle({
2633
2633
  "width": "100%",
2634
2634
  "margin-top": "5px"
2635
- })}"${ssrRenderAttr("placeholder", _ctx.$t("townView.keztqrn020"))} data-v-1444af6d><div class="daq-bind-bar" style="${ssrRenderStyle({ "margin-top": "5px" })}" data-v-1444af6d><button class="bind-add-btn" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.kslcozu103"))}</button><button class="bind-add-btn danger" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k14gu3rd104"))}</button></div></div>`);
2635
+ })}"${ssrRenderAttr("placeholder", _ctx.$t("townView.keztqrn020"))} data-v-5660e131><div class="daq-bind-bar" style="${ssrRenderStyle({ "margin-top": "5px" })}" data-v-5660e131><button class="bind-add-btn" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.kslcozu103"))}</button><button class="bind-add-btn danger" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k14gu3rd104"))}</button></div></div>`);
2636
2636
  });
2637
2637
  _push(`<!--]--><!--]-->`);
2638
2638
  } else _push(`<!---->`);
2639
- if (unref(agentRangeDraft) && unref(mode) === "edit") _push(`<!--[--><div class="obj-row" data-v-1444af6d><span class="obj-label" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k3zhy5048"))}</span><div class="bp-seg" data-v-1444af6d><button class="${ssrRenderClass([{ on: unref(agentRangeDraft).shape === "ellipse" }, "seg-btn"])}" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k414bc049"))}</button><button class="${ssrRenderClass([{ on: unref(agentRangeDraft).shape === "rect" }, "seg-btn"])}" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k43u0g050"))}</button></div></div><div class="obj-row" data-v-1444af6d><span class="obj-label" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k41lwj105"))}</span><input${ssrRenderAttr("value", unref(agentRangeDraft).radiusX)} class="obj-range" type="range" min="40" max="4000" step="8" data-v-1444af6d><span class="bp-val" data-v-1444af6d>${ssrInterpolate(Math.round(unref(agentRangeDraft).radiusX))}</span></div><div class="obj-row" data-v-1444af6d><span class="obj-label" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k45bta106"))}</span><input${ssrRenderAttr("value", unref(agentRangeDraft).radiusZ)} class="obj-range" type="range" min="40" max="4000" step="8" data-v-1444af6d><span class="bp-val" data-v-1444af6d>${ssrInterpolate(Math.round(unref(agentRangeDraft).radiusZ))}</span></div><button class="obj-mini danger" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1w45mzc107"))}</button><!--]-->`);
2640
- else _push(`<div class="ins-empty" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k14s8urm108"))}</div>`);
2641
- _push(`<div class="obj-sep" data-v-1444af6d></div><div class="sect-hd chat-sect" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1ghjbfc133"))} ${ssrInterpolate(unref(agentChatTitle))} <button class="mini-btn chat-refresh"${ssrRenderAttr("title", _ctx.$t("townView.k15avt7g021"))} data-v-1444af6d>${ssrInterpolate(unref(historyLoading) ? "…" : "↻")}</button></div><div class="rpg-lines chat-embed" data-v-1444af6d>`);
2642
- if (unref(historyLoading)) _push(`<div class="rpg-note" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.kkhlx5h109"))}</div>`);
2639
+ if (unref(agentRangeDraft) && unref(mode) === "edit") _push(`<!--[--><div class="obj-row" data-v-5660e131><span class="obj-label" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k3zhy5048"))}</span><div class="bp-seg" data-v-5660e131><button class="${ssrRenderClass([{ on: unref(agentRangeDraft).shape === "ellipse" }, "seg-btn"])}" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k414bc049"))}</button><button class="${ssrRenderClass([{ on: unref(agentRangeDraft).shape === "rect" }, "seg-btn"])}" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k43u0g050"))}</button></div></div><div class="obj-row" data-v-5660e131><span class="obj-label" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k41lwj105"))}</span><input${ssrRenderAttr("value", unref(agentRangeDraft).radiusX)} class="obj-range" type="range" min="40" max="4000" step="8" data-v-5660e131><span class="bp-val" data-v-5660e131>${ssrInterpolate(Math.round(unref(agentRangeDraft).radiusX))}</span></div><div class="obj-row" data-v-5660e131><span class="obj-label" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k45bta106"))}</span><input${ssrRenderAttr("value", unref(agentRangeDraft).radiusZ)} class="obj-range" type="range" min="40" max="4000" step="8" data-v-5660e131><span class="bp-val" data-v-5660e131>${ssrInterpolate(Math.round(unref(agentRangeDraft).radiusZ))}</span></div><button class="obj-mini danger" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1w45mzc107"))}</button><!--]-->`);
2640
+ else _push(`<div class="ins-empty" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k14s8urm108"))}</div>`);
2641
+ _push(`<div class="obj-sep" data-v-5660e131></div><div class="sect-hd chat-sect" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1ghjbfc133"))} ${ssrInterpolate(unref(agentChatTitle))} <button class="mini-btn chat-refresh"${ssrRenderAttr("title", _ctx.$t("townView.k15avt7g021"))} data-v-5660e131>${ssrInterpolate(unref(historyLoading) ? "…" : "↻")}</button></div><div class="rpg-lines chat-embed" data-v-5660e131>`);
2642
+ if (unref(historyLoading)) _push(`<div class="rpg-note" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.kkhlx5h109"))}</div>`);
2643
2643
  else _push(`<!---->`);
2644
2644
  if (unref(agentHistory).length) {
2645
- _push(`<!--[--><div class="rpg-divider" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k768cnt134"))} ${ssrInterpolate(unref(agentHistory).length)}</div><!--[-->`);
2645
+ _push(`<!--[--><div class="rpg-divider" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k768cnt134"))} ${ssrInterpolate(unref(agentHistory).length)}</div><!--[-->`);
2646
2646
  ssrRenderList(unref(agentHistory), (r) => {
2647
- _push(`<div class="rpg-line hist" data-v-1444af6d><span class="rpg-time" data-v-1444af6d>${ssrInterpolate(fmtTime(r.at))}</span><div class="rpg-bubble" data-v-1444af6d>`);
2648
- if (chatKindLabel(r.kind)) _push(`<span class="${ssrRenderClass([`k-${r.kind}`, "rpg-kind"])}" data-v-1444af6d>${ssrInterpolate(chatKindLabel(r.kind))}</span>`);
2647
+ _push(`<div class="rpg-line hist" data-v-5660e131><span class="rpg-time" data-v-5660e131>${ssrInterpolate(fmtTime(r.at))}</span><div class="rpg-bubble" data-v-5660e131>`);
2648
+ if (chatKindLabel(r.kind)) _push(`<span class="${ssrRenderClass([`k-${r.kind}`, "rpg-kind"])}" data-v-5660e131>${ssrInterpolate(chatKindLabel(r.kind))}</span>`);
2649
2649
  else _push(`<!---->`);
2650
- _push(`<span class="rpg-text" data-v-1444af6d>${ssrInterpolate(r.text)}</span></div></div>`);
2650
+ _push(`<span class="rpg-text" data-v-5660e131>${ssrInterpolate(r.text)}</span></div></div>`);
2651
2651
  });
2652
2652
  _push(`<!--]--><!--]-->`);
2653
2653
  } else _push(`<!---->`);
2654
- if (unref(agentChatRows).length) _push(`<div class="rpg-divider live" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1cwz73k135"))} ${ssrInterpolate(unref(agentChatRows).length)}</div>`);
2654
+ if (unref(agentChatRows).length) _push(`<div class="rpg-divider live" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1cwz73k135"))} ${ssrInterpolate(unref(agentChatRows).length)}</div>`);
2655
2655
  else _push(`<!---->`);
2656
2656
  _push(`<!--[-->`);
2657
2657
  ssrRenderList(unref(agentChatRows), (r) => {
2658
- _push(`<div class="rpg-line live" data-v-1444af6d><span class="rpg-time" data-v-1444af6d>${ssrInterpolate(fmtTime(r.at))}</span><div class="rpg-bubble" data-v-1444af6d><span class="rpg-text" data-v-1444af6d>${ssrInterpolate(r.text)}</span></div></div>`);
2658
+ _push(`<div class="rpg-line live" data-v-5660e131><span class="rpg-time" data-v-5660e131>${ssrInterpolate(fmtTime(r.at))}</span><div class="rpg-bubble" data-v-5660e131><span class="rpg-text" data-v-5660e131>${ssrInterpolate(r.text)}</span></div></div>`);
2659
2659
  });
2660
2660
  _push(`<!--]-->`);
2661
- if (unref(selectedAgentMeta)?.state === "busy") _push(`<div class="rpg-typing" data-v-1444af6d><span class="ty-dot" data-v-1444af6d></span><span class="ty-dot" data-v-1444af6d></span><span class="ty-dot" data-v-1444af6d></span><span class="ty-label" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k3o5tz9110"))}</span></div>`);
2661
+ if (unref(selectedAgentMeta)?.state === "busy") _push(`<div class="rpg-typing" data-v-5660e131><span class="ty-dot" data-v-5660e131></span><span class="ty-dot" data-v-5660e131></span><span class="ty-dot" data-v-5660e131></span><span class="ty-label" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k3o5tz9110"))}</span></div>`);
2662
2662
  else _push(`<!---->`);
2663
- if (!unref(historyLoading) && !unref(agentHistory).length && !unref(agentChatRows).length) _push(`<div class="rpg-note" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1qkqld7111"))}</div>`);
2663
+ if (!unref(historyLoading) && !unref(agentHistory).length && !unref(agentChatRows).length) _push(`<div class="rpg-note" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1qkqld7111"))}</div>`);
2664
2664
  else _push(`<!---->`);
2665
2665
  _push(`</div><!--]-->`);
2666
2666
  } else _push(`<!---->`);
2667
2667
  _push(`</section>`);
2668
2668
  } else _push(`<!---->`);
2669
- _push(`<section class="panel" data-v-1444af6d><div class="panel-hd" data-v-1444af6d><h3 data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k17dkhgd112"))}</h3></div><div class="health-body" data-v-1444af6d><div class="donut-wrap" data-v-1444af6d><canvas width="118" height="118" data-v-1444af6d></canvas><div class="donut-center" data-v-1444af6d><b style="${ssrRenderStyle({ color: unref(healthTone) })}" data-v-1444af6d>${ssrInterpolate(unref(healthPct))}%</b><span data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k7h1nxo113"))}</span></div></div><div class="health-legend" data-v-1444af6d><div class="hl-row" data-v-1444af6d><span class="hl-dot" style="${ssrRenderStyle({ background: "var(--hud-accent)" })}" data-v-1444af6d></span> ${ssrInterpolate(_ctx.$t("townView.k3vp67i114"))} <span class="n" data-v-1444af6d>${ssrInterpolate(unref(runningCount))}</span></div><div class="hl-row" data-v-1444af6d><span class="hl-dot" style="${ssrRenderStyle({ background: "var(--hud-amber)" })}" data-v-1444af6d></span> ${ssrInterpolate(_ctx.$t("townView.k3zcvb115"))} <span class="n" data-v-1444af6d>${ssrInterpolate(unref(idleCount))}</span></div><div class="hl-row" data-v-1444af6d><span class="hl-dot" style="${ssrRenderStyle({ background: "var(--hud-danger)" })}" data-v-1444af6d></span> ${ssrInterpolate(_ctx.$t("townView.k3xmid116"))} <span class="n" data-v-1444af6d>${ssrInterpolate(unref(alarmCount))}</span></div><div class="hl-row" data-v-1444af6d><span class="hl-dot" style="${ssrRenderStyle({ background: "#3a4a63" })}" data-v-1444af6d></span> ${ssrInterpolate(_ctx.$t("townView.statesOffline"))} <span class="n" data-v-1444af6d>${ssrInterpolate(unref(offlineCount))}</span></div></div></div></section><section class="panel" data-v-1444af6d><div class="panel-hd" data-v-1444af6d><h3 data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1q247fn117"))}</h3><span class="panel-tag" data-v-1444af6d>${ssrInterpolate(unref(deviceTwins).twins.length)}</span></div>`);
2669
+ _push(`<section class="panel" data-v-5660e131><div class="panel-hd" data-v-5660e131><h3 data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k17dkhgd112"))}</h3></div><div class="health-body" data-v-5660e131><div class="donut-wrap" data-v-5660e131><canvas width="118" height="118" data-v-5660e131></canvas><div class="donut-center" data-v-5660e131><b style="${ssrRenderStyle({ color: unref(healthTone) })}" data-v-5660e131>${ssrInterpolate(unref(healthPct))}%</b><span data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k7h1nxo113"))}</span></div></div><div class="health-legend" data-v-5660e131><div class="hl-row" data-v-5660e131><span class="hl-dot" style="${ssrRenderStyle({ background: "var(--hud-accent)" })}" data-v-5660e131></span> ${ssrInterpolate(_ctx.$t("townView.k3vp67i114"))} <span class="n" data-v-5660e131>${ssrInterpolate(unref(runningCount))}</span></div><div class="hl-row" data-v-5660e131><span class="hl-dot" style="${ssrRenderStyle({ background: "var(--hud-amber)" })}" data-v-5660e131></span> ${ssrInterpolate(_ctx.$t("townView.k3zcvb115"))} <span class="n" data-v-5660e131>${ssrInterpolate(unref(idleCount))}</span></div><div class="hl-row" data-v-5660e131><span class="hl-dot" style="${ssrRenderStyle({ background: "var(--hud-danger)" })}" data-v-5660e131></span> ${ssrInterpolate(_ctx.$t("townView.k3xmid116"))} <span class="n" data-v-5660e131>${ssrInterpolate(unref(alarmCount))}</span></div><div class="hl-row" data-v-5660e131><span class="hl-dot" style="${ssrRenderStyle({ background: "#3a4a63" })}" data-v-5660e131></span> ${ssrInterpolate(_ctx.$t("townView.statesOffline"))} <span class="n" data-v-5660e131>${ssrInterpolate(unref(offlineCount))}</span></div></div></div></section><section class="panel" data-v-5660e131><div class="panel-hd" data-v-5660e131><h3 data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1q247fn117"))}</h3><span class="panel-tag" data-v-5660e131>${ssrInterpolate(unref(deviceTwins).twins.length)}</span></div>`);
2670
2670
  _push(ssrRenderComponent(_component_WorkshopDeviceTwinPanel, {
2671
2671
  class: "kd-embed",
2672
2672
  "daq-live": unref(daqLive),
2673
2673
  "dcw-live": unref(dcwLive),
2674
2674
  onFocusDevice
2675
2675
  }, null, _parent));
2676
- _push(`</section><section class="panel" data-v-1444af6d><div class="panel-hd" data-v-1444af6d><h3 data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1cxf749118"))}</h3><span class="panel-tag" data-v-1444af6d>${ssrInterpolate(unref(activeAlarmCount))} ${ssrInterpolate(_ctx.$t("townView.k4dfq040"))}</span><button class="mini-btn"${ssrRenderAttr("title", _ctx.$t("townView.k1bkswpz022"))} data-v-1444af6d> ✓ </button></div><div class="alarm-list" data-v-1444af6d><!--[-->`);
2676
+ _push(`</section><section class="panel" data-v-5660e131><div class="panel-hd" data-v-5660e131><h3 data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1cxf749118"))}</h3><span class="panel-tag" data-v-5660e131>${ssrInterpolate(unref(activeAlarmCount))} ${ssrInterpolate(_ctx.$t("townView.k4dfq040"))}</span><button class="mini-btn"${ssrRenderAttr("title", _ctx.$t("townView.k1bkswpz022"))} data-v-5660e131> ✓ </button></div><div class="alarm-list" data-v-5660e131><!--[-->`);
2677
2677
  ssrRenderList(unref(alarms).slice(0, 8), (a) => {
2678
- _push(`<div class="al-row" data-v-1444af6d><span class="${ssrRenderClass([a.state === 2 ? "info" : a.state === 1 ? "warn" : "crit", "al-ico"])}" data-v-1444af6d><svg class="al-svg" viewBox="0 0 24 24" data-v-1444af6d><path d="M12 3 22 20H2L12 3Z" data-v-1444af6d></path><path d="M12 10v4M12 17v.2" data-v-1444af6d></path></svg></span><div class="al-body" data-v-1444af6d><div class="al-txt" data-v-1444af6d>${ssrInterpolate(a.txt)}</div><div class="al-src" data-v-1444af6d>${ssrInterpolate(a.src)} · ${ssrInterpolate(a.time)}</div></div><button class="${ssrRenderClass([`s${a.state}`, "al-state"])}" data-v-1444af6d>${ssrInterpolate(ALARM_STATES[a.state])}</button></div>`);
2678
+ _push(`<div class="al-row" data-v-5660e131><span class="${ssrRenderClass([a.state === 2 ? "info" : a.state === 1 ? "warn" : "crit", "al-ico"])}" data-v-5660e131><svg class="al-svg" viewBox="0 0 24 24" data-v-5660e131><path d="M12 3 22 20H2L12 3Z" data-v-5660e131></path><path d="M12 10v4M12 17v.2" data-v-5660e131></path></svg></span><div class="al-body" data-v-5660e131><div class="al-txt" data-v-5660e131>${ssrInterpolate(a.txt)}</div><div class="al-src" data-v-5660e131>${ssrInterpolate(a.src)} · ${ssrInterpolate(a.time)}</div></div><button class="${ssrRenderClass([`s${a.state}`, "al-state"])}" data-v-5660e131>${ssrInterpolate(ALARM_STATES[a.state])}</button></div>`);
2679
2679
  });
2680
2680
  _push(`<!--]-->`);
2681
- if (!unref(alarms).length) _push(`<div class="rail-empty" data-v-1444af6d><svg class="re-ico" viewBox="0 0 24 24" data-v-1444af6d><path d="M12 3l7 3v5c0 4.6-3 8.2-7 10-4-1.8-7-5.4-7-10V6l7-3Z" data-v-1444af6d></path><path d="m9.2 12.2 2 2 3.6-4" data-v-1444af6d></path></svg><span data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.kjz544r119"))}</span></div>`);
2681
+ if (!unref(alarms).length) _push(`<div class="rail-empty" data-v-5660e131><svg class="re-ico" viewBox="0 0 24 24" data-v-5660e131><path d="M12 3l7 3v5c0 4.6-3 8.2-7 10-4-1.8-7-5.4-7-10V6l7-3Z" data-v-5660e131></path><path d="m9.2 12.2 2 2 3.6-4" data-v-5660e131></path></svg><span data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.kjz544r119"))}</span></div>`);
2682
2682
  else _push(`<!---->`);
2683
- _push(`</div></section><section class="panel" data-v-1444af6d><div class="panel-hd" data-v-1444af6d><h3 data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1cxdtq2120"))}</h3><span class="panel-tag" data-v-1444af6d>${ssrInterpolate(unref(ticker).length)}</span></div><div class="event-list" data-v-1444af6d><!--[-->`);
2683
+ _push(`</div></section><section class="panel" data-v-5660e131><div class="panel-hd" data-v-5660e131><h3 data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1cxdtq2120"))}</h3><span class="panel-tag" data-v-5660e131>${ssrInterpolate(unref(ticker).length)}</span></div><div class="event-list" data-v-5660e131><!--[-->`);
2684
2684
  ssrRenderList([...unref(ticker)].reverse(), (t, i) => {
2685
- _push(`<div class="event-row" data-v-1444af6d><span class="ev-time" data-v-1444af6d>${ssrInterpolate(fmtTime(t.at))}</span><span class="ev-name"${ssrRenderAttr("title", t.agentName)} data-v-1444af6d>${ssrInterpolate(t.agentName)}</span><span class="ev-text"${ssrRenderAttr("title", t.text)} data-v-1444af6d>${ssrInterpolate(t.text)}</span></div>`);
2685
+ _push(`<div class="event-row" data-v-5660e131><span class="ev-time" data-v-5660e131>${ssrInterpolate(fmtTime(t.at))}</span><span class="ev-name"${ssrRenderAttr("title", t.agentName)} data-v-5660e131>${ssrInterpolate(t.agentName)}</span><span class="ev-text"${ssrRenderAttr("title", t.text)} data-v-5660e131>${ssrInterpolate(t.text)}</span></div>`);
2686
2686
  });
2687
2687
  _push(`<!--]-->`);
2688
- if (!unref(ticker).length) _push(`<div class="rail-empty" data-v-1444af6d><svg class="re-ico" viewBox="0 0 24 24" data-v-1444af6d><path d="M3 12h3l2.5-6 4 12L15 12h6" data-v-1444af6d></path></svg><span data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k2uk6ua121"))}</span></div>`);
2688
+ if (!unref(ticker).length) _push(`<div class="rail-empty" data-v-5660e131><svg class="re-ico" viewBox="0 0 24 24" data-v-5660e131><path d="M3 12h3l2.5-6 4 12L15 12h6" data-v-5660e131></path></svg><span data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k2uk6ua121"))}</span></div>`);
2689
2689
  else _push(`<!---->`);
2690
- _push(`</div></section><section class="panel" data-v-1444af6d><div class="panel-hd" data-v-1444af6d><h3 data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.kjug2jq122"))}</h3></div><div class="mm-body" data-v-1444af6d><div class="mm-wrap"${ssrRenderAttr("title", _ctx.$t("townView.klfwiqg023"))} data-v-1444af6d><canvas class="nav-cv" data-v-1444af6d></canvas></div><div class="mm-col" data-v-1444af6d><button class="vp-tool"${ssrRenderAttr("title", _ctx.$t("townView.k1lap9bs024"))} data-v-1444af6d><svg class="vp-svg" viewBox="0 0 24 24" data-v-1444af6d><path d="M3 12a9 9 0 1 0 3-6.7M3 4v5h5" data-v-1444af6d></path></svg></button><button class="vp-tool"${ssrRenderAttr("title", _ctx.$t("townView.kav8a8k025"))} data-v-1444af6d><svg class="vp-svg" viewBox="0 0 24 24" data-v-1444af6d><circle cx="11" cy="11" r="6.5" data-v-1444af6d></circle><path d="m16 16 4.5 4.5M8.5 11h5" data-v-1444af6d></path></svg></button><button class="vp-tool"${ssrRenderAttr("title", _ctx.$t("townView.k1u7uce9026"))} data-v-1444af6d><svg class="vp-svg" viewBox="0 0 24 24" data-v-1444af6d><circle cx="11" cy="11" r="6.5" data-v-1444af6d></circle><path d="m16 16 4.5 4.5M8.5 11h5M11 8.5v5" data-v-1444af6d></path></svg></button></div></div><div class="mm-meta mono" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k1gaaodq136"))}${ssrInterpolate(unref(navScale).toFixed(1))} · ${ssrInterpolate(unref(minimap)?.devices?.length ?? 0)} ${ssrInterpolate(_ctx.$t("townView.k47e16126"))}</div></section></aside></div><footer class="statusbar" data-v-1444af6d><span data-v-1444af6d><span class="${ssrRenderClass([{ red: unref(conn).state !== "open" }, "sb-dot"])}" data-v-1444af6d></span>${ssrInterpolate(_ctx.$t("townView.k1i4g246123"))} <b data-v-1444af6d>${ssrInterpolate(unref(conn).state === "open" ? _ctx.$t("townView.k41k5c154") : unref(syncing) ? _ctx.$t("townView.k3lmtk3184") : _ctx.$t("townView.k44c2n186"))}</b></span><span class="sb-stats" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.k4a0jt124"))} <b data-v-1444af6d>${ssrInterpolate(unref(blockCount))}</b><i data-v-1444af6d>·</i>${ssrInterpolate(_ctx.$t("townView.k3xdvm125"))} <b data-v-1444af6d>${ssrInterpolate(unref(agentCount))}</b><i data-v-1444af6d>·</i>${ssrInterpolate(_ctx.$t("townView.k47e16126"))} <b data-v-1444af6d>${ssrInterpolate(unref(deviceCount))}</b></span><span class="sb-lat mono" data-v-1444af6d>${ssrInterpolate(unref(fps))} FPS </span><span class="copy" data-v-1444af6d> © 2026 ABO · DIGITAL TWIN · ${ssrInterpolate(_ctx.$t("townView.k1h5gxpf137"))}</span></footer>`);
2691
- if (!unref(ready)) _push(`<div data-hud="town-loading" class="loading-mask" data-v-1444af6d><div class="loading-spinner" data-v-1444af6d></div><span class="loading-text" data-v-1444af6d>${ssrInterpolate(_ctx.$t("townView.kvjdqfg059"))}</span></div>`);
2690
+ _push(`</div></section><section class="panel" data-v-5660e131><div class="panel-hd" data-v-5660e131><h3 data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.kjug2jq122"))}</h3></div><div class="mm-body" data-v-5660e131><div class="mm-wrap"${ssrRenderAttr("title", _ctx.$t("townView.klfwiqg023"))} data-v-5660e131><canvas class="nav-cv" data-v-5660e131></canvas></div><div class="mm-col" data-v-5660e131><button class="vp-tool"${ssrRenderAttr("title", _ctx.$t("townView.k1lap9bs024"))} data-v-5660e131><svg class="vp-svg" viewBox="0 0 24 24" data-v-5660e131><path d="M3 12a9 9 0 1 0 3-6.7M3 4v5h5" data-v-5660e131></path></svg></button><button class="vp-tool"${ssrRenderAttr("title", _ctx.$t("townView.kav8a8k025"))} data-v-5660e131><svg class="vp-svg" viewBox="0 0 24 24" data-v-5660e131><circle cx="11" cy="11" r="6.5" data-v-5660e131></circle><path d="m16 16 4.5 4.5M8.5 11h5" data-v-5660e131></path></svg></button><button class="vp-tool"${ssrRenderAttr("title", _ctx.$t("townView.k1u7uce9026"))} data-v-5660e131><svg class="vp-svg" viewBox="0 0 24 24" data-v-5660e131><circle cx="11" cy="11" r="6.5" data-v-5660e131></circle><path d="m16 16 4.5 4.5M8.5 11h5M11 8.5v5" data-v-5660e131></path></svg></button></div></div><div class="mm-meta mono" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k1gaaodq136"))}${ssrInterpolate(unref(navScale).toFixed(1))} · ${ssrInterpolate(unref(minimap)?.devices?.length ?? 0)} ${ssrInterpolate(_ctx.$t("townView.k47e16126"))}</div></section></aside></div><footer class="statusbar" data-v-5660e131><span data-v-5660e131><span class="${ssrRenderClass([{ red: unref(conn).state !== "open" }, "sb-dot"])}" data-v-5660e131></span>${ssrInterpolate(_ctx.$t("townView.k1i4g246123"))} <b data-v-5660e131>${ssrInterpolate(unref(conn).state === "open" ? _ctx.$t("townView.k41k5c154") : unref(syncing) ? _ctx.$t("townView.k3lmtk3184") : _ctx.$t("townView.k44c2n186"))}</b></span><span class="sb-stats" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.k4a0jt124"))} <b data-v-5660e131>${ssrInterpolate(unref(blockCount))}</b><i data-v-5660e131>·</i>${ssrInterpolate(_ctx.$t("townView.k3xdvm125"))} <b data-v-5660e131>${ssrInterpolate(unref(agentCount))}</b><i data-v-5660e131>·</i>${ssrInterpolate(_ctx.$t("townView.k47e16126"))} <b data-v-5660e131>${ssrInterpolate(unref(deviceCount))}</b></span><span class="sb-lat mono" data-v-5660e131>${ssrInterpolate(unref(fps))} FPS </span><span class="copy" data-v-5660e131> © 2026 ABO · DIGITAL TWIN · ${ssrInterpolate(_ctx.$t("townView.k1h5gxpf137"))}</span></footer>`);
2691
+ if (!unref(ready)) _push(`<div data-hud="town-loading" class="loading-mask" data-v-5660e131><div class="loading-spinner" data-v-5660e131></div><span class="loading-text" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.kvjdqfg059"))}</span></div>`);
2692
2692
  else _push(`<!---->`);
2693
2693
  _push(`</div>`);
2694
2694
  };
@@ -2702,7 +2702,7 @@ TownView_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
2702
2702
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/town/TownView.vue");
2703
2703
  return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
2704
2704
  };
2705
- var TownView_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(TownView_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-1444af6d"]]), { __name: "WorkshopTownView" });
2705
+ var TownView_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(TownView_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-5660e131"]]), { __name: "WorkshopTownView" });
2706
2706
 
2707
2707
  export { TownView_default as T, useStorage as u };
2708
- //# sourceMappingURL=TownView-BdHnAilw.mjs.map
2708
+ //# sourceMappingURL=TownView-jVazYOjN.mjs.map