agentworkshop 0.7.33 → 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 (945) 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 +1568 -1043
  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 -191
  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 -300
  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/base-agent.ts +9 -0
  435. package/server/services/workshop/agents/codex-agent.ts +743 -729
  436. package/server/services/workshop/agents/dsh-agent.ts +4 -7
  437. package/server/services/workshop/agents/opencode-agent.ts +5 -7
  438. package/server/services/workshop/aml/aml.repo.ts +18 -0
  439. package/server/services/workshop/aml/dataset-builder.ts +4 -0
  440. package/server/services/workshop/aml/entity.ts +365 -0
  441. package/server/services/workshop/aml/env-manager.ts +242 -0
  442. package/server/services/workshop/aml/job-orchestrator.ts +4 -15
  443. package/server/services/workshop/aml/model-registry.ts +6 -0
  444. package/server/services/workshop/aml/python-runtime.ts +396 -62
  445. package/server/services/workshop/aml/runtime.ts +95 -4
  446. package/server/services/workshop/daq/bus/mqtt.adapter.ts +3 -1
  447. package/server/services/workshop/daq/daq-controller.ts +95 -47
  448. package/server/services/workshop/daq/daq-node.repo.ts +0 -10
  449. package/server/services/workshop/daq/daq-runtime.ts +0 -5
  450. package/server/services/workshop/json-store.mjs +35 -2
  451. package/server/services/workshop/plugins/host.mjs +18 -12
  452. package/server/services/workshop/runtime/agent-runtime.ts +32 -3
  453. package/server/services/workshop/runtime/manager.ts +28 -1
  454. package/server/services/workshop/runtime/scheduler-loop.ts +10 -1
  455. package/server/services/workshop/settings.ts +2 -0
  456. package/shared/config/home.mjs +58 -0
  457. package/shared/config/schema.json +2 -1
  458. package/shared/lru.mjs +4 -1
  459. package/.output/public/_nuxt/-6OnbLFb.js +0 -1
  460. package/.output/public/_nuxt/-nb2uqVg.js +0 -1
  461. package/.output/public/_nuxt/4bHdIqEg.js +0 -18
  462. package/.output/public/_nuxt/6PZPfFcO.js +0 -17
  463. package/.output/public/_nuxt/BBBtwOpo.js +0 -9
  464. package/.output/public/_nuxt/BBwMH_hG.js +0 -7
  465. package/.output/public/_nuxt/BDUjyaF4.js +0 -42
  466. package/.output/public/_nuxt/BNXfwXpE.js +0 -1
  467. package/.output/public/_nuxt/BN_PdN3J.js +0 -24
  468. package/.output/public/_nuxt/BSSUlJnx2.js +0 -1
  469. package/.output/public/_nuxt/BWSE6hR6.js +0 -1
  470. package/.output/public/_nuxt/BZGNTgTQ2.js +0 -1
  471. package/.output/public/_nuxt/BZv4RFYN.js +0 -1
  472. package/.output/public/_nuxt/BcmbLh2z2.js +0 -1
  473. package/.output/public/_nuxt/BfGc7TJp.js +0 -1
  474. package/.output/public/_nuxt/BgTB6h_q.js +0 -2
  475. package/.output/public/_nuxt/BkLJA9J5.js +0 -1
  476. package/.output/public/_nuxt/Bp5luxkg2.js +0 -1
  477. package/.output/public/_nuxt/BuCHayqN.js +0 -1
  478. package/.output/public/_nuxt/BuvcLKh1.js +0 -19
  479. package/.output/public/_nuxt/C3tCneTM.js +0 -1
  480. package/.output/public/_nuxt/C77oC8yC2.js +0 -7
  481. package/.output/public/_nuxt/C9f8QMp12.js +0 -1
  482. package/.output/public/_nuxt/CKfhtOt7.js +0 -13
  483. package/.output/public/_nuxt/CQvmN-Mi.js +0 -1
  484. package/.output/public/_nuxt/CUDrOuW7.js +0 -1
  485. package/.output/public/_nuxt/CZcC-gpk.js +0 -1
  486. package/.output/public/_nuxt/CbzsPO5H.js +0 -1
  487. package/.output/public/_nuxt/CdSOrh2c.js +0 -1
  488. package/.output/public/_nuxt/Cgx818r-.js +0 -1
  489. package/.output/public/_nuxt/Cjm7VogC.js +0 -1
  490. package/.output/public/_nuxt/Cm5mDxzH.js +0 -1
  491. package/.output/public/_nuxt/CmHzfVc5.js +0 -3
  492. package/.output/public/_nuxt/Cn3J3NXR.js +0 -23
  493. package/.output/public/_nuxt/Cno6kYiO2.js +0 -1
  494. package/.output/public/_nuxt/Cp6z0RN7.js +0 -1
  495. package/.output/public/_nuxt/CwqIxJGj.js +0 -2
  496. package/.output/public/_nuxt/D-Ca4BGY.js +0 -70
  497. package/.output/public/_nuxt/D0fhp-Ga.js +0 -75
  498. package/.output/public/_nuxt/D1z7i2UP.js +0 -31
  499. package/.output/public/_nuxt/DIaTPH1M.js +0 -1
  500. package/.output/public/_nuxt/DTYBfjRY.js +0 -1
  501. package/.output/public/_nuxt/DXRZPxGs.js +0 -1
  502. package/.output/public/_nuxt/DZzGarBE2.js +0 -13
  503. package/.output/public/_nuxt/DaMCzQhv.js +0 -1
  504. package/.output/public/_nuxt/DoLasgPj2.js +0 -1
  505. package/.output/public/_nuxt/DpojD719.js +0 -1
  506. package/.output/public/_nuxt/DsVcWfyR.js +0 -1
  507. package/.output/public/_nuxt/DtBu71ev.js +0 -32
  508. package/.output/public/_nuxt/Dy-mxvXY2.js +0 -1
  509. package/.output/public/_nuxt/DzuC31-i.js +0 -2
  510. package/.output/public/_nuxt/FQri3dV3.js +0 -1
  511. package/.output/public/_nuxt/ORt9oDIy2.js +0 -1
  512. package/.output/public/_nuxt/TownView.CtskuMXS.css +0 -1
  513. package/.output/public/_nuxt/VLI2Zy4t.js +0 -5
  514. package/.output/public/_nuxt/_id_.MbzdFygI.css +0 -1
  515. package/.output/public/_nuxt/_id_.hRYo-EAB.css +0 -1
  516. package/.output/public/_nuxt/_wsId_.gXMEOYgX.css +0 -1
  517. package/.output/public/_nuxt/aml.WU_bh87J.css +0 -1
  518. package/.output/public/_nuxt/arUY5dyq2.js +0 -4
  519. package/.output/public/_nuxt/builds/meta/291ef3e6-fa6a-4dee-8f46-05da1aeab815.json +0 -1
  520. package/.output/public/_nuxt/daq.Bb6l44-O.css +0 -1
  521. package/.output/public/_nuxt/dcw.rXH2fc2Z.css +0 -1
  522. package/.output/public/_nuxt/default.jNT73_hq.css +0 -1
  523. package/.output/public/_nuxt/ekuGmQ7R.js +0 -1
  524. package/.output/public/_nuxt/entry.jFrFAWuA.css +0 -1
  525. package/.output/public/_nuxt/logs.DMOM-iHe.css +0 -1
  526. package/.output/public/_nuxt/niDwBOZW.js +0 -3
  527. package/.output/public/_nuxt/pMoIO6rr.js +0 -14
  528. package/.output/public/_nuxt/pages.Cc8GX9T1.css +0 -1
  529. package/.output/public/_nuxt/plugins.wIPyfPn-.css +0 -1
  530. package/.output/public/_nuxt/rqZ-1SoP.js +0 -2
  531. package/.output/public/_nuxt/settings.BCm4NZIc.css +0 -1
  532. package/.output/public/_nuxt/town.C_DsNW0J.css +0 -1
  533. package/.output/public/_nuxt/users.DuAt_Zwf.css +0 -1
  534. package/.output/public/_nuxt/vJ4FPb-_.js +0 -1
  535. package/.output/public/_nuxt/workshop.BJg84pOK.css +0 -1
  536. package/.output/server/chunks/build/aml-uBNIppIf.mjs +0 -508
  537. package/.output/server/chunks/build/aml-uBNIppIf.mjs.map +0 -1
  538. package/.output/server/chunks/build/daq-BvihjQyW.mjs.map +0 -1
  539. package/.output/server/chunks/build/pages-C-6BRtv8.mjs.map +0 -1
  540. package/scripts/_audit/.tmp/audit-data/dcws.json +0 -28
  541. package/scripts/_audit/.tmp/dcw-writes.json +0 -15650
  542. package/scripts/_audit/.tmp/dcws.json +0 -9033
  543. package/scripts/_audit/.tmp/pollution-backup/dcw-rollback.polluted.json +0 -470006
  544. package/scripts/_audit/.tmp/pollution-backup/dcws.polluted.json +0 -9085
  545. package/scripts/_audit/.tmp/probe-cwd.txt +0 -1
  546. package/scripts/_audit/awhome/commands/README.md +0 -3
  547. package/scripts/_audit/awhome/commands/hello.mjs +0 -12
  548. package/scripts/_audit/diag-cwd.ts +0 -20
  549. package/scripts/_audit/diag-cwd2.ts +0 -19
  550. package/scripts/_audit/hello.mjs +0 -12
  551. package/scripts/_audit/ndjson-partial-line-repro.mjs +0 -77
  552. package/scripts/_audit/opencode-await-ternary-repro.mjs +0 -20
  553. package/scripts/_audit/part-frag.txt +0 -84
  554. package/scripts/_audit/part-head.txt +0 -45
  555. package/scripts/_audit/probe-child.mjs +0 -17
  556. package/scripts/_audit/probe-envelope.mjs +0 -49
  557. package/scripts/_audit/probe-packlist.mjs +0 -67
  558. package/scripts/_audit/probe-routes.mjs +0 -47
  559. package/scripts/_audit/probe-routes2.mjs +0 -38
  560. package/scripts/_audit/probe.ts +0 -9
  561. package/scripts/_audit/probe2.ts +0 -6
  562. package/scripts/_audit/probe3.ts +0 -3
  563. package/scripts/_audit/probe4.ts +0 -3
  564. package/scripts/_audit/proj/.AgentWorkShop/commands/echoargs.mjs +0 -13
  565. package/scripts/_audit/proj/config.yml +0 -1
  566. package/scripts/_audit/run.mjs +0 -30
  567. package/scripts/_audit/tsconfig.probe.json +0 -24
  568. package/scripts/_audit/typecheck-out.txt +0 -466
  569. package/scripts/_daq-realtime-probe.mjs +0 -68
  570. package/scripts/_daq-warn-probe.mjs +0 -50
  571. package/scripts/_dbg-acc-1-setup.mjs +0 -57
  572. package/scripts/_dbg-acc-2-diag.mjs +0 -14
  573. package/scripts/_dbg-acc-2-intervals.mjs +0 -81
  574. package/scripts/_dbg-acc-3-daq.mjs +0 -48
  575. package/scripts/_dbg-acc-4-team.mjs +0 -92
  576. package/scripts/_dbg-acc-5-visual.mjs +0 -63
  577. package/scripts/_dbg-acc-5b-ws-town.mjs +0 -18
  578. package/scripts/_dbg-acc-5c-town.mjs +0 -12
  579. package/scripts/_dbg-acc-6-i18n.mjs +0 -19
  580. package/scripts/_dbg-agent-tools-audit.mjs +0 -154
  581. package/scripts/_dbg-agent-workflow-audit.mjs +0 -177
  582. package/scripts/_dbg-agents-dropdown-shot.py +0 -33
  583. package/scripts/_dbg-anim-verify.mjs +0 -81
  584. package/scripts/_dbg-app-shot.mjs +0 -48
  585. package/scripts/_dbg-autoframe.mjs +0 -103
  586. package/scripts/_dbg-availability-probe.ts +0 -11
  587. package/scripts/_dbg-beacon-final.mjs +0 -181
  588. package/scripts/_dbg-bind-bidi-e2e.mjs +0 -239
  589. package/scripts/_dbg-callout-near.mjs +0 -108
  590. package/scripts/_dbg-catalog-smoke.ts +0 -20
  591. package/scripts/_dbg-cf-line-shot.mjs +0 -18
  592. package/scripts/_dbg-chan-focus.mjs +0 -49
  593. package/scripts/_dbg-channel-plugin-ui.mjs +0 -94
  594. package/scripts/_dbg-cleanup.mjs +0 -31
  595. package/scripts/_dbg-closedloop-ui-shot.mjs +0 -61
  596. package/scripts/_dbg-codex-handshake.ts +0 -30
  597. package/scripts/_dbg-codex-probe.mjs +0 -58
  598. package/scripts/_dbg-codex-sandbox.ts +0 -58
  599. package/scripts/_dbg-codex-turn.ts +0 -65
  600. package/scripts/_dbg-collab-scenario-e2e.mjs +0 -185
  601. package/scripts/_dbg-config-smoke.ts +0 -28
  602. package/scripts/_dbg-console-audit.mjs +0 -61
  603. package/scripts/_dbg-console-probe.mjs +0 -23
  604. package/scripts/_dbg-context-inject-audit.mjs +0 -231
  605. package/scripts/_dbg-cpu-profile.mjs +0 -53
  606. package/scripts/_dbg-crash-recovery.mjs +0 -143
  607. package/scripts/_dbg-crop-shot.mjs +0 -16
  608. package/scripts/_dbg-cross-channel-e2e.mjs +0 -157
  609. package/scripts/_dbg-cross-team-visibility-e2e.mjs +0 -129
  610. package/scripts/_dbg-crush-probe.sh +0 -21
  611. package/scripts/_dbg-crush-spawn-probe.ts +0 -22
  612. package/scripts/_dbg-daq-acc-probe.mjs +0 -24
  613. package/scripts/_dbg-daq-attrib.mjs +0 -34
  614. package/scripts/_dbg-daq-bind-audit.mjs +0 -119
  615. package/scripts/_dbg-daq-cadence.mjs +0 -104
  616. package/scripts/_dbg-daq-debug.mjs +0 -22
  617. package/scripts/_dbg-daq-diag.mjs +0 -33
  618. package/scripts/_dbg-daq-e2e.mjs +0 -171
  619. package/scripts/_dbg-daq-film.mjs +0 -136
  620. package/scripts/_dbg-daq-filter-e2e.mjs +0 -109
  621. package/scripts/_dbg-daq-filter-e2e2.mjs +0 -62
  622. package/scripts/_dbg-daq-final-regression.mjs +0 -78
  623. package/scripts/_dbg-daq-frame-alarm.mjs +0 -49
  624. package/scripts/_dbg-daq-frame-ui.mjs +0 -62
  625. package/scripts/_dbg-daq-frame-ws.mjs +0 -72
  626. package/scripts/_dbg-daq-full-check.mjs +0 -179
  627. package/scripts/_dbg-daq-line-note-verify.mjs +0 -61
  628. package/scripts/_dbg-daq-linebanner-audit.mjs +0 -107
  629. package/scripts/_dbg-daq-pages-shot.mjs +0 -37
  630. package/scripts/_dbg-daq-perf.mjs +0 -61
  631. package/scripts/_dbg-daq-probe.mjs +0 -27
  632. package/scripts/_dbg-daq-recipe-e2e.mjs +0 -30
  633. package/scripts/_dbg-daq-redesign-shot.mjs +0 -88
  634. package/scripts/_dbg-daq-rows-probe.mjs +0 -26
  635. package/scripts/_dbg-daq-rowstate-e2e.mjs +0 -152
  636. package/scripts/_dbg-daq-rowstate-shot.mjs +0 -45
  637. package/scripts/_dbg-daq-rowstate-shot2.mjs +0 -38
  638. package/scripts/_dbg-daq-tpl.mjs +0 -144
  639. package/scripts/_dbg-dash-console-check.mjs +0 -49
  640. package/scripts/_dbg-dash-deep-probe.mjs +0 -61
  641. package/scripts/_dbg-dash-hitpoint.mjs +0 -44
  642. package/scripts/_dbg-dash-live-shot.mjs +0 -36
  643. package/scripts/_dbg-dash-shot.mjs +0 -21
  644. package/scripts/_dbg-dashboard-shot.mjs +0 -35
  645. package/scripts/_dbg-dcw-audit.mjs +0 -126
  646. package/scripts/_dbg-dcw-card-e2e.mjs +0 -108
  647. package/scripts/_dbg-dcw-channel-ui.mjs +0 -144
  648. package/scripts/_dbg-dcw-examples.mjs +0 -81
  649. package/scripts/_dbg-dcw-light-shot.mjs +0 -19
  650. package/scripts/_dbg-dcw-line-audit.mjs +0 -107
  651. package/scripts/_dbg-dcw-pause-tpl-audit.mjs +0 -161
  652. package/scripts/_dbg-dcw-pause-ui.mjs +0 -175
  653. package/scripts/_dbg-dcw-read-toolface.ts +0 -13
  654. package/scripts/_dbg-dcw-read-ui.mjs +0 -74
  655. package/scripts/_dbg-dcw-scene.mjs +0 -72
  656. package/scripts/_dbg-dcw-shot2.mjs +0 -14
  657. package/scripts/_dbg-dcw-twin-e2e.mjs +0 -192
  658. package/scripts/_dbg-diag-mock-loop.mjs +0 -89
  659. package/scripts/_dbg-diag-watch.mjs +0 -95
  660. package/scripts/_dbg-docs-site-shot.mjs +0 -32
  661. package/scripts/_dbg-dsh-probe.mjs +0 -31
  662. package/scripts/_dbg-dt-interact.mjs +0 -193
  663. package/scripts/_dbg-error-probe.mjs +0 -54
  664. package/scripts/_dbg-filter-light-verify.mjs +0 -54
  665. package/scripts/_dbg-final-acceptance-2.mjs +0 -72
  666. package/scripts/_dbg-final-acceptance.mjs +0 -192
  667. package/scripts/_dbg-final-agent-e2e.mjs +0 -151
  668. package/scripts/_dbg-final-features.mjs +0 -155
  669. package/scripts/_dbg-final-fixups.mjs +0 -62
  670. package/scripts/_dbg-final-full-e2e.mjs +0 -218
  671. package/scripts/_dbg-final-line-e2e.mjs +0 -173
  672. package/scripts/_dbg-final-shots.mjs +0 -32
  673. package/scripts/_dbg-final-t6-hitl.mjs +0 -38
  674. package/scripts/_dbg-final-visual.mjs +0 -29
  675. package/scripts/_dbg-fix-unused-imports.py +0 -41
  676. package/scripts/_dbg-focus-range.mjs +0 -115
  677. package/scripts/_dbg-fresh-scene-e2e.mjs +0 -125
  678. package/scripts/_dbg-fullchain-e2e.mjs +0 -178
  679. package/scripts/_dbg-gate-debug.mjs +0 -37
  680. package/scripts/_dbg-gif-encode.mjs +0 -111
  681. package/scripts/_dbg-gizmo.mjs +0 -95
  682. package/scripts/_dbg-glass-probe.mjs +0 -57
  683. package/scripts/_dbg-glass-shot.mjs +0 -50
  684. package/scripts/_dbg-glass-sweep.mjs +0 -25
  685. package/scripts/_dbg-glb-probe.mjs +0 -43
  686. package/scripts/_dbg-goose-probe.mjs +0 -33
  687. package/scripts/_dbg-goose-probe.sh +0 -10
  688. package/scripts/_dbg-hardening-probe.mjs +0 -90
  689. package/scripts/_dbg-harness-ui-dbg.py +0 -49
  690. package/scripts/_dbg-harness-ui-shot.py +0 -109
  691. package/scripts/_dbg-hero-btn-probe.mjs +0 -21
  692. package/scripts/_dbg-hidden-check.mjs +0 -21
  693. package/scripts/_dbg-hmi-audit.mjs +0 -164
  694. package/scripts/_dbg-home-repro.mjs +0 -24
  695. package/scripts/_dbg-home-stack.mjs +0 -13
  696. package/scripts/_dbg-host.mjs +0 -16
  697. package/scripts/_dbg-huashu-survey.mjs +0 -31
  698. package/scripts/_dbg-huashu-survey2.mjs +0 -35
  699. package/scripts/_dbg-huashu-verify.mjs +0 -25
  700. package/scripts/_dbg-huashu-verify2.mjs +0 -26
  701. package/scripts/_dbg-hydration-detail.mjs +0 -18
  702. package/scripts/_dbg-i18n-debug.mjs +0 -27
  703. package/scripts/_dbg-i18n-debug2.mjs +0 -26
  704. package/scripts/_dbg-i18n-final.mjs +0 -42
  705. package/scripts/_dbg-i18n-scan.mjs +0 -38
  706. package/scripts/_dbg-infra-lifecycle.mjs +0 -44
  707. package/scripts/_dbg-interval-config.mjs +0 -156
  708. package/scripts/_dbg-interval-scenario.mjs +0 -126
  709. package/scripts/_dbg-kicker-check.mjs +0 -11
  710. package/scripts/_dbg-line-aura-shots.mjs +0 -54
  711. package/scripts/_dbg-line-control-e2e.mjs +0 -120
  712. package/scripts/_dbg-line-gate-audit.mjs +0 -108
  713. package/scripts/_dbg-line-live-e2e.mjs +0 -144
  714. package/scripts/_dbg-line-repo-test.ts +0 -10
  715. package/scripts/_dbg-line-scenario-e2e.mjs +0 -256
  716. package/scripts/_dbg-line-spawn.ts +0 -31
  717. package/scripts/_dbg-live-engine-probe.mjs +0 -80
  718. package/scripts/_dbg-login-debug.py +0 -23
  719. package/scripts/_dbg-login-e2e.mjs +0 -26
  720. package/scripts/_dbg-logs-ui-e2e.py +0 -126
  721. package/scripts/_dbg-mcp-bridge-probe.mjs +0 -147
  722. package/scripts/_dbg-modbus-latency.mjs +0 -22
  723. package/scripts/_dbg-mqtt-chain-e2e.mjs +0 -90
  724. package/scripts/_dbg-mqtt-publisher.mjs +0 -17
  725. package/scripts/_dbg-nav-rpg.mjs +0 -84
  726. package/scripts/_dbg-nav-shot.mjs +0 -28
  727. package/scripts/_dbg-nav.mjs +0 -27
  728. package/scripts/_dbg-oneshot-impl-probe.ts +0 -67
  729. package/scripts/_dbg-opencode-sse.mjs +0 -101
  730. package/scripts/_dbg-opencode-start.ts +0 -57
  731. package/scripts/_dbg-opslog-e2e.mjs +0 -121
  732. package/scripts/_dbg-opslog-shots.mjs +0 -62
  733. package/scripts/_dbg-optimization-e2e.mjs +0 -94
  734. package/scripts/_dbg-orbit.mjs +0 -58
  735. package/scripts/_dbg-overview-probe.sh +0 -31
  736. package/scripts/_dbg-panesplitter-fix-check.mjs +0 -62
  737. package/scripts/_dbg-perms-visual.mjs +0 -36
  738. package/scripts/_dbg-pg-tcp-probe.cjs +0 -27
  739. package/scripts/_dbg-phase-e3-monitor.mjs +0 -25
  740. package/scripts/_dbg-pi-spawn-probe.ts +0 -33
  741. package/scripts/_dbg-plc-agent-loop.ts +0 -102
  742. package/scripts/_dbg-plc-e2e.mjs +0 -171
  743. package/scripts/_dbg-plugin-agent-read.ts +0 -56
  744. package/scripts/_dbg-plugin-config-ui.mjs +0 -111
  745. package/scripts/_dbg-plugin-matrix.mjs +0 -212
  746. package/scripts/_dbg-plugin-panels-ui.mjs +0 -54
  747. package/scripts/_dbg-plugin-sink-rest.mjs +0 -70
  748. package/scripts/_dbg-plugin-sink-ui.mjs +0 -81
  749. package/scripts/_dbg-plugin-tools-inject.ts +0 -80
  750. package/scripts/_dbg-plugin-ui-wizard.mjs +0 -125
  751. package/scripts/_dbg-plugin-verify-e2e.mjs +0 -123
  752. package/scripts/_dbg-plugins-e2e.mjs +0 -101
  753. package/scripts/_dbg-pop-clamp-verify.mjs +0 -77
  754. package/scripts/_dbg-preset-e2e.mjs +0 -116
  755. package/scripts/_dbg-preview-console.mjs +0 -28
  756. package/scripts/_dbg-preview-minrepro.mjs +0 -156
  757. package/scripts/_dbg-preview-pixels.mjs +0 -93
  758. package/scripts/_dbg-prompts-hotreload-test.ts +0 -76
  759. package/scripts/_dbg-prompts-resolve-test.ts +0 -39
  760. package/scripts/_dbg-quality-pages-e2e.mjs +0 -84
  761. package/scripts/_dbg-query-cancel.ts +0 -12
  762. package/scripts/_dbg-qwen-acp-probe.mjs +0 -30
  763. package/scripts/_dbg-qwen-capture.mjs +0 -21
  764. package/scripts/_dbg-rail-tree-e2e.mjs +0 -183
  765. package/scripts/_dbg-real-driver-e2e.mjs +0 -55
  766. package/scripts/_dbg-redesign-shots.mjs +0 -34
  767. package/scripts/_dbg-registry-smoke.ts +0 -14
  768. package/scripts/_dbg-release-smoke.mjs +0 -104
  769. package/scripts/_dbg-repo-setup-verify.mjs +0 -31
  770. package/scripts/_dbg-resolve-probe.ts +0 -6
  771. package/scripts/_dbg-restart-persist.mjs +0 -41
  772. package/scripts/_dbg-retention-test.ts +0 -25
  773. package/scripts/_dbg-rollback-mgr-audit.mjs +0 -169
  774. package/scripts/_dbg-rpg.mjs +0 -71
  775. package/scripts/_dbg-sc001-dispatch.mjs +0 -63
  776. package/scripts/_dbg-scenario-final-shot.mjs +0 -24
  777. package/scripts/_dbg-scenario-phase-e2.mjs +0 -75
  778. package/scripts/_dbg-scenario-phase-e3.mjs +0 -96
  779. package/scripts/_dbg-scenario-phase1.mjs +0 -90
  780. package/scripts/_dbg-scenario-phase2.mjs +0 -105
  781. package/scripts/_dbg-scenario-phase3-monitor.mjs +0 -48
  782. package/scripts/_dbg-scenario-phase3.mjs +0 -111
  783. package/scripts/_dbg-scene-polish-shot.mjs +0 -118
  784. package/scripts/_dbg-selring-probe.mjs +0 -47
  785. package/scripts/_dbg-settings-draft-probe.mjs +0 -39
  786. package/scripts/_dbg-settings-probe.mjs +0 -33
  787. package/scripts/_dbg-setup-e2e.mjs +0 -88
  788. package/scripts/_dbg-sideinfo.mjs +0 -101
  789. package/scripts/_dbg-sim-keeper.mjs +0 -100
  790. package/scripts/_dbg-splitter.mjs +0 -88
  791. package/scripts/_dbg-swatch-check.mjs +0 -10
  792. package/scripts/_dbg-task-cancel-probe.mjs +0 -66
  793. package/scripts/_dbg-team-drill.mjs +0 -173
  794. package/scripts/_dbg-town-alarm-e2e.mjs +0 -40
  795. package/scripts/_dbg-town-beauty-shots.mjs +0 -54
  796. package/scripts/_dbg-town-daq-shot.mjs +0 -26
  797. package/scripts/_dbg-town-full-e2e.mjs +0 -104
  798. package/scripts/_dbg-town-gate.mjs +0 -44
  799. package/scripts/_dbg-town-ins-probe.mjs +0 -37
  800. package/scripts/_dbg-town-perf.mjs +0 -50
  801. package/scripts/_dbg-town-polish-shots.mjs +0 -82
  802. package/scripts/_dbg-town-realtime.mjs +0 -42
  803. package/scripts/_dbg-town-shot.py +0 -25
  804. package/scripts/_dbg-town-shot3.mjs +0 -17
  805. package/scripts/_dbg-town-truth.mjs +0 -37
  806. package/scripts/_dbg-town-truth2.mjs +0 -27
  807. package/scripts/_dbg-transform-audit.mjs +0 -98
  808. package/scripts/_dbg-trend-expand-test.mjs +0 -38
  809. package/scripts/_dbg-twindaq-focus.mjs +0 -81
  810. package/scripts/_dbg-ui-polish-shot.mjs +0 -43
  811. package/scripts/_dbg-ui-polish-verify1.mjs +0 -92
  812. package/scripts/_dbg-ui-polish-verify2.mjs +0 -50
  813. package/scripts/_dbg-ui-polish-verify3.mjs +0 -51
  814. package/scripts/_dbg-ui-polish-verify4.mjs +0 -50
  815. package/scripts/_dbg-ui-shot.mjs +0 -26
  816. package/scripts/_dbg-ui-shots.mjs +0 -28
  817. package/scripts/_dbg-ui-survey.py +0 -52
  818. package/scripts/_dbg-unify-shot.mjs +0 -43
  819. package/scripts/_dbg-uplink-probe.mjs +0 -36
  820. package/scripts/_dbg-wizard-preview-shot.mjs +0 -58
  821. package/scripts/_dbg-wizard-ui-e2e.mjs +0 -93
  822. package/scripts/_dbg-ws-probe.mjs +0 -86
  823. package/scripts/_dbg-ws-shot2.mjs +0 -23
  824. package/scripts/_dbg-wsdot-sanity.mjs +0 -25
  825. package/scripts/_dev-stack.mjs +0 -46
  826. package/scripts/_http-driver-probe.mjs +0 -30
  827. package/scripts/_mqtt-driver-probe.mjs +0 -30
  828. package/scripts/_newdriver-rest-probe.mjs +0 -100
  829. package/scripts/_node-state-probe.mjs +0 -5
  830. package/scripts/_opcua-driver-probe.mjs +0 -31
  831. package/scripts/_rtu-debug.mjs +0 -41
  832. package/scripts/_rtu-direct.mjs +0 -6
  833. package/scripts/_rtu-driver-probe.mjs +0 -53
  834. package/scripts/_spike-pitui.mjs +0 -116
  835. package/scripts/_tmp-args-probe.mjs +0 -20
  836. package/scripts/_tmp-cyc-entry.mjs +0 -8
  837. package/scripts/_tmp-cyc-main.mjs +0 -5
  838. package/scripts/_tmp-cyc-mod.mjs +0 -2
  839. package/scripts/_tmp-cycle-a.mjs +0 -6
  840. package/scripts/_tmp-cycle-b.mjs +0 -2
  841. package/scripts/_tmp-cycle-probe.mjs +0 -4
  842. package/scripts/_tmp-entry-variant.mjs +0 -2
  843. package/scripts/_tmp-help-probe.mjs +0 -19
  844. package/scripts/_tmp-help-probe2.mjs +0 -2
  845. package/scripts/_tmp-trace-preload.mjs +0 -1
  846. package/scripts/_wizard-shots.mjs +0 -90
  847. package/scripts/acceptance-suite.py +0 -207
  848. package/scripts/aml-agent-bridge.ts +0 -230
  849. package/scripts/aml-industrial-loop.ts +0 -232
  850. package/scripts/build-film-devices.mjs +0 -227
  851. package/scripts/collab-live-test.py +0 -177
  852. package/scripts/debug-mcp-http.ts +0 -64
  853. package/scripts/demo-lead-worker.ts +0 -256
  854. package/scripts/demo-modes.ts +0 -415
  855. package/scripts/demo-omp-channel.ts +0 -135
  856. package/scripts/design-preflight.mjs +0 -223
  857. package/scripts/design-verify-templates.mjs +0 -110
  858. package/scripts/design-verify.mjs +0 -170
  859. package/scripts/dev-window.cmd +0 -6
  860. package/scripts/device-line-restore.mjs +0 -34
  861. package/scripts/diag-lead-status.ts +0 -101
  862. package/scripts/e2e-a2a-steer-live.mjs +0 -193
  863. package/scripts/e2e-dual-drive-comm.ts +0 -259
  864. package/scripts/e2e-full-scenario.ts +0 -321
  865. package/scripts/e2e-harness-consistency.ts +0 -204
  866. package/scripts/e2e-harness-provider-task.mjs +0 -126
  867. package/scripts/e2e-line-live.mjs +0 -144
  868. package/scripts/e2e-memory-persistence.ts +0 -320
  869. package/scripts/e2e-omp-modes.ts +0 -274
  870. package/scripts/e2e-omp-realtime.ts +0 -258
  871. package/scripts/e2e-plc-scenario.mjs +0 -292
  872. package/scripts/e2e-real-scenario.mjs +0 -466
  873. package/scripts/e2e-tab-close.mjs +0 -136
  874. package/scripts/e2e-token-ui.mjs +0 -149
  875. package/scripts/final-soup-run.py +0 -192
  876. package/scripts/final-soup-watch.py +0 -83
  877. package/scripts/i18n-codemod.mjs +0 -173
  878. package/scripts/i18n-fix-en.py +0 -28
  879. package/scripts/i18n-fix-en2.py +0 -31
  880. package/scripts/i18n-merge.mjs +0 -191
  881. package/scripts/migrate-local-time.mjs +0 -123
  882. package/scripts/omp-real-test.py +0 -328
  883. package/scripts/team-plugins-api-smoke.mjs +0 -149
  884. package/scripts/test-a2a-relay.mjs +0 -222
  885. package/scripts/test-aml-integration.ts +0 -159
  886. package/scripts/test-aml-job.ts +0 -174
  887. package/scripts/test-aml-unit.ts +0 -184
  888. package/scripts/test-api-client.ts +0 -108
  889. package/scripts/test-api-suite.mjs +0 -271
  890. package/scripts/test-block-consumption.mjs +0 -194
  891. package/scripts/test-cmd-render.mjs +0 -218
  892. package/scripts/test-collab-omp.mjs +0 -192
  893. package/scripts/test-config-precedence.ts +0 -124
  894. package/scripts/test-context-governor.ts +0 -176
  895. package/scripts/test-daq-frames.ts +0 -180
  896. package/scripts/test-daq-minio.ts +0 -77
  897. package/scripts/test-dedup-logic.ts +0 -132
  898. package/scripts/test-e2e-collaboration.ts +0 -262
  899. package/scripts/test-e2e-monitor.ts +0 -192
  900. package/scripts/test-event-history.ts +0 -112
  901. package/scripts/test-exec-modes.ts +0 -316
  902. package/scripts/test-fifo-realtime.mjs +0 -193
  903. package/scripts/test-final-e2e.mjs +0 -290
  904. package/scripts/test-goal-summary.ts +0 -202
  905. package/scripts/test-harness-liveness.ts +0 -109
  906. package/scripts/test-harness-terminal.ts +0 -164
  907. package/scripts/test-header-trail.mjs +0 -95
  908. package/scripts/test-hitl.ts +0 -360
  909. package/scripts/test-koda-restyle.mjs +0 -105
  910. package/scripts/test-lane-raw.ts +0 -67
  911. package/scripts/test-lanes-history-render.mjs +0 -138
  912. package/scripts/test-loop-omp.mjs +0 -154
  913. package/scripts/test-mdlite.ts +0 -53
  914. package/scripts/test-memory-brief-chronicle.ts +0 -180
  915. package/scripts/test-memory-rrf-mmr.ts +0 -114
  916. package/scripts/test-mock-collab.mjs +0 -226
  917. package/scripts/test-modern-render.mjs +0 -174
  918. package/scripts/test-omp-terminal.mjs +0 -187
  919. package/scripts/test-plugin-ext.ts +0 -173
  920. package/scripts/test-prompts-loader.ts +0 -56
  921. package/scripts/test-real-scenario.mjs +0 -290
  922. package/scripts/test-stream-render.ts +0 -37
  923. package/scripts/test-task-drawer.mjs +0 -204
  924. package/scripts/test-task-invariants.mjs +0 -169
  925. package/scripts/test-town-3d.mjs +0 -121
  926. package/scripts/test-town-layout.mjs +0 -200
  927. package/scripts/test-town-page.mjs +0 -136
  928. package/scripts/test-town-scene-math.ts +0 -169
  929. package/scripts/test-town-twin.mjs +0 -121
  930. package/scripts/test-town-upload.mjs +0 -89
  931. package/scripts/test-town-user-flow.mjs +0 -619
  932. package/scripts/test-town-world.mjs +0 -76
  933. package/scripts/test-town-wuwa.mjs +0 -198
  934. package/scripts/test-user-isolation.mjs +0 -193
  935. package/scripts/test-workshop-entries.ts +0 -370
  936. package/scripts/test-workspace-api.ts +0 -329
  937. package/scripts/test-ws-aep.mjs +0 -187
  938. package/scripts/test-ws-protocol.ts +0 -134
  939. package/scripts/town-demo-seed.mjs +0 -75
  940. package/scripts/town-scene-clear.mjs +0 -56
  941. package/scripts/verify-exec-modes-report.ts +0 -248
  942. package/scripts/verify-lead-mail.ts +0 -188
  943. package/scripts/verify-page-smoke.mjs +0 -87
  944. package/scripts/ws-test.mjs +0 -176
  945. package/scripts/ws-test.py +0 -4
@@ -1 +0,0 @@
1
- import{H as e,U as t,W as n,q as r}from"./rqZ-1SoP.js";import{B as i,C as a,G as o,H as s,Ht as c,St as l,Ut as ee,Wt as u,a as d,b as f,f as p,ft as m,g as h,h as g,mt as _,nt as te,p as v,rt as y,t as b,x as ne}from"./BSCpFtzG.js";import{a as re}from"./vJ4FPb-_.js";import{t as ie}from"./D8CqF0yy.js";import{n as ae}from"./BeIfu4N3.js";import{t as oe}from"./C9f8QMp12.js";import{t as x}from"./G0qIw7Gq2.js";import{t as se}from"./Lp7Ll94I.js";import{n as ce,t as le}from"./Bc0AmjfT.js";import{t as ue}from"./Ct-WOVr4.js";var de={key:0,class:`page`},fe={class:`banner bad`},pe={key:1,class:`page`},me={class:`aw-page-head`},he={class:`aw-kicker`},ge={class:`sub`},_e={class:`badges mono`},ve={class:`badge`},ye={class:`badge`},be={class:`badge`},xe={class:`aw-tile ctrl-card`},Se={class:`ctrl-left`},Ce=[`title`],we={class:`ctrl-right`},Te={class:`ctrl-metrics mono`},Ee=[`title`],De=[`title`],Oe=[`title`],ke={key:1,class:`aw-tile adopt-card`},Ae={class:`adopt-title`},je={class:`adopt-list`},Me=[`onClick`],Ne=[`onClick`],Pe={class:`aw-tile line-card`},Fe={class:`line-status`},Ie={class:`line-info`},Le={key:0,class:`mono dim`},Re={key:1,class:`dim`},ze={class:`line-ctl`},Be={class:`ctl-sel`},Ve={value:``},He=[`value`],Ue={class:`ctl-sel`},We=[`disabled`],Ge={value:``},Ke=[`value`,`disabled`],qe=[`disabled`,`title`],Je=[`disabled`],Ye={key:0,class:`banner bad`,style:{"margin-top":`10px`}},Xe={key:1,class:`banner good`,style:{"margin-top":`10px`}},Ze={class:`modal`},Qe={class:`m-title`},$e={class:`dim mono`},et={class:`dim tpl-hint`},tt={class:`tpl-chips`},nt=[`title`],rt={class:`mono`},it={class:`sec-label`},at={class:`f-grid tpl-form`},ot={class:`f`},st=[`placeholder`],ct={class:`f`},lt=[`placeholder`],ut={class:`f`},dt={class:`f`},ft={class:`f`},pt=[`placeholder`],mt={class:`f`},ht=[`placeholder`],gt={class:`f`},_t={class:`f`},vt=[`value`],yt={class:`f`},bt=[`placeholder`],xt={key:0,class:`banner good`,style:{"margin-top":`10px`}},St={key:1,class:`m-err`},Ct={class:`m-actions`},wt=[`disabled`],Tt={class:`modal`},Et={class:`m-title`},Dt={class:`seg-row`},Ot={class:`f-grid`},kt={class:`f`},At=[`value`],jt={class:`f`},Mt=[`placeholder`],Nt={class:`f`},Pt=[`placeholder`],Ft={class:`f`},It=[`placeholder`],Lt={class:`f-grid cal-form`},Rt={class:`f`},zt={value:`none`},Bt={class:`f`},Vt={style:{display:`flex`,gap:`6px`}},Ht=[`disabled`],Ut=[`disabled`],Wt={class:`f-grid`},Gt={class:`f`},Kt=[`value`],qt={key:0,class:`f-grid driver-form`},Jt={key:0,style:{color:`var(--tone-danger-dot)`,"font-style":`normal`}},Yt=[`onUpdate:modelValue`],Xt=[`value`],Zt=[`onUpdate:modelValue`,`type`,`placeholder`],Qt={key:2,class:`hint`},$t={class:`test-row`},en=[`disabled`],tn={class:`f`},nn=[`placeholder`],rn={key:1,class:`m-err`},an={class:`m-actions`},on=[`disabled`],sn={class:`aw-tile table-card`},cn={class:`nodes-table`},ln={class:`right`},un={class:`mono dim`},dn={class:`mono ch`},fn=[`disabled`,`title`,`onClick`],pn={key:0,class:`st-pill paused`},mn={class:`mono val`},hn={key:0,class:`dim`},gn={class:`mono val`},_n=[`title`],vn={key:0,class:`dim`},yn=[`disabled`,`title`,`onClick`],bn={class:`write-row`},xn=[`onUpdate:modelValue`,`placeholder`,`min`,`max`,`step`,`disabled`,`title`],Sn=[`disabled`,`title`,`onClick`],Cn={class:`mono dim`},wn={class:`mono`},Tn=[`title`],En={class:`right`},Dn=[`onClick`],On={key:0},kn={colspan:`9`},An={class:`pane-empty`,style:{"min-height":`120px`}},jn={class:`pe-sub`},Mn={class:`aw-tile recipe-card`},Nn={class:`recipe-hd`},Pn={class:`panel-tag mono`},Fn={class:`recipe-sub`},In={key:0,class:`product-row`},Ln=[`title`,`onClick`],Rn=[`title`,`onClick`],zn={key:1,class:`dim`,style:{margin:`6px 0 12px`,"font-size":`12px`}},Bn={class:`recipe-grid`},Vn={class:`recipe-name`},Hn=[`title`],Un={class:`dim`},Wn={class:`mono dim`},Gn={key:0,class:`dim desc`},Kn={class:`recipe-params mono`},qn=[`title`],Jn={key:0,class:`chip-stale-tag`},Yn=[`title`],Xn={key:0,class:`chip-stale-tag`},Zn={class:`recipe-actions`},Qn=[`onClick`],$n=[`onClick`],er=[`onClick`],tr={key:0,class:`mono`},nr=[`onClick`],rr={key:0,class:`pane-empty`,style:{"grid-column":`1 / -1`}},ir={key:2,class:`banner good`},ar=[`disabled`],or={key:3,class:`runs`},sr={class:`sec-label`},cr={class:`nodes-table`},lr={class:`right`},ur={class:`mono`},dr={class:`mono dim`},fr={class:`right`},pr=[`disabled`,`onClick`],mr=[`onClick`],hr={class:`modal`},gr={class:`m-title`},_r={class:`sec-label`},vr={class:`nodes-table`},yr={class:`mono dim`},br={class:`mono`},xr={class:`mono`},Sr={class:`mono dim`},Cr={class:`mono dim`},wr={key:0},Tr={colspan:`6`,class:`dim`,style:{"text-align":`center`,padding:`12px`}},Er={class:`sec-label`},Dr={class:`nodes-table`},Or={class:`mono`},kr={class:`mono dim`},Ar={class:`mono dim`},jr={key:0},Mr={colspan:`6`,class:`dim`,style:{"text-align":`center`,padding:`12px`}},Nr={class:`m-actions`},Pr={class:`modal`},Fr={class:`m-title`},Ir={class:`f-grid`},Lr={class:`f`},Rr=[`value`],zr={class:`f`},Br=[`placeholder`],Vr={class:`f`},Hr=[`placeholder`],Ur={class:`sec-label`},Wr={class:`f`},Gr=[`onUpdate:modelValue`],Kr=[`value`],qr={key:0,class:`row-stale`},Jr={class:`f`},Yr=[`onUpdate:modelValue`],Xr={class:`f`},Zr=[`onUpdate:modelValue`,`placeholder`],Qr={class:`f`},$r=[`onUpdate:modelValue`,`placeholder`],ei=[`onClick`],ti={class:`sec-label`},ni={class:`f`},ri=[`onUpdate:modelValue`],ii=[`value`],ai={class:`f`},oi=[`onUpdate:modelValue`],si={class:`f`},ci=[`onUpdate:modelValue`],li=[`onClick`],ui=[`disabled`,`title`],di={key:0,class:`m-note`},fi={key:1,class:`m-err`},pi={class:`m-actions`},mi=[`disabled`],hi={class:`modal`,style:{"max-width":`760px`}},gi={class:`modal-head`},_i={key:0,class:`dim`,style:{"margin-left":`8px`,"font-size":`12px`}},vi={key:0,class:`banner good`,style:{margin:`6px 0`}},yi={key:1,class:`dim`},bi={key:2,class:`pane-empty`},xi={class:`ver-head`},Si={class:`mono ver-v`},Ci={class:`mono dim`},wi={class:`ver-actor`},Ti=[`onClick`],Ei={key:0,class:`ver-desc`},Di={class:`ver-diff mono`},Oi={class:`aw-tile query-card`},ki={class:`sec-label`},Ai={class:`q-grid`},ji={class:`f`},Mi={value:``},Ni=[`value`],Pi={class:`f`},Fi=[`disabled`],Ii={value:``},Li=[`value`],Ri={class:`f`},zi={value:``},Bi=[`value`],Vi={class:`f`},Hi={value:``},Ui=[`value`],Wi={class:`f`},Gi={class:`f`},Ki={class:`f q-actions`},qi=[`disabled`],Ji={key:0,class:`banner bad`,style:{"margin-top":`8px`}},Yi={key:1,class:`q-result`},Xi={class:`nodes-table`},Zi={class:`mono dim`},Qi={class:`mono`},$i={class:`mono`},ea={class:`mono`},ta={class:`mono dim`},na={key:6,class:`aw-tile table-card`},ra={class:`sec-label`},ia={class:`nodes-table`},aa={class:`mono dim`},oa={class:`mono`},sa={class:`mono dim`},ca={class:`dim`},la={class:`modal`},ua={class:`m-title`},da={class:`f-grid`},fa={class:`f`},pa=[`placeholder`],ma={class:`f`},ha=[`placeholder`],ga={key:0,class:`m-err`},_a={class:`m-actions`},va=[`disabled`],ya={key:8,class:`err`},ba={class:`aw-tile ledger-card`},xa={class:`ledger-head`},Sa={value:``},Ca=[`value`],wa={class:`ledger-tri`},Ta={class:`tri-cell`},Ea={class:`mono`},Da={class:`tri-cell`},Oa={class:`mono`},ka={class:`tri-cell`},Aa={class:`mono`},ja={class:`ledger-cols`},Ma={class:`ledger-col`},Na={class:`sec-t`},Pa={class:`ledger-list mono`},Fa={class:`ledger-col`},Ia={class:`sec-t`},La={class:`ledger-list`},Ra={class:`mono`},za=b(a({__name:`[id]`,setup(a){let{t:b}=ae(),za=re(),S=le(),Ba=se(),Va=ue();Ba.load();let C=p(()=>String(za.params.id??``)),w=p(()=>S.lines.find(e=>e.id===C.value)),T=p(()=>S.lineStateOf(C.value));S.load();let Ha=S.ensureWsFeed();i(()=>Ha());let Ua=e=>(e.deviceIds??(e.deviceBindingId?[e.deviceBindingId]:[])).map(e=>Wa(e)).join(` / `)||`—`,Wa=e=>e?Va.twins.find(t=>t.id===e)?.name??e:b(`dcwDetail.k3own4q121`),Ga={idle:b(`dcwDetail.k3zgkk122`),writing:b(`dcwDetail.k3l3h80123`),ok:`已 ACK`,error:b(`dcwDetail.k40reu124`),offline:b(`dcwDetail.k44c2n125`)};function Ka(e){let t=e??``;return S.templates.find(e=>e.key===(t.startsWith(`dcw-`)?t.slice(4):t))?.ch??t}function qa(e){return S.nodeById(e)?.min}function Ja(e){return S.nodeById(e)?.max}let Ya=p(()=>Ba.nodes.filter(e=>e.lineId===C.value)),E=_(``),D=_(null),Xa=_(!1);async function Za(){if(E.value){Xa.value=!0;try{D.value=await S.fetchLedger(E.value)}finally{Xa.value=!1}}}async function Qa(){E.value&&(await S.rollbackNode(E.value),await Za())}function $a(e){return Ba.nodeById(e)?.name??e}let O=p(()=>S.nodes.filter(e=>e.lineId===C.value)),k=p(()=>S.products.filter(e=>e.lineId===C.value)),eo=p(()=>S.recipes.filter(e=>e.lineId===C.value)),to=p(()=>S.runs.filter(e=>e.lineId===C.value)),no=p(()=>{let e=new Set(O.value.map(e=>e.id));return S.history.filter(t=>e.has(t.nodeId))}),ro=p(()=>S.nodes.filter(e=>!e.lineId)),io=p(()=>S.products.filter(e=>!e.lineId));async function ao(e){await S.patchNode(e,{lineId:C.value});let t=S.nodeById(e);t&&(t.lineId=C.value)}async function oo(e){await S.updateProduct(e,{lineId:C.value}),await S.load()}let A=m({}),so=_(``),j=_(``),co=_(``);async function lo(e,t){so.value=e,j.value=``,co.value=``;try{let n=await S.write(e,t);n.ok?(co.value=b(`dcwDetail.k1alcbyu182`,{p0:S.nodeById(e)?.name??e,p1:n.message}),A[e]=``):j.value=b(`dcwDetail.kl1e9x9183`,{p0:S.nodeById(e)?.name??e,p1:n.message})}catch(e){j.value=x(e)}finally{so.value=``}}let uo=_(``);async function fo(e){uo.value=e,j.value=``;try{await S.readNode(e)}catch(e){j.value=x(e)}finally{uo.value=``}}let po=_(``);async function mo(e,t){po.value=e,j.value=``;try{await S.patchNode(e,{enabled:t});let n=S.nodeById(e);n&&(n.enabled=t,t?n.state===`offline`&&(n.state=`idle`):n.state=`offline`)}catch(e){j.value=x(e)}finally{po.value=``}}let ho=_(!1),go=_(`mock`),_o=_(S.templates[0]?.key??``),M=_(`mock`),vo=_(``),yo=_(null),bo=_(null),N=_({}),P=m({kind:`none`,scale:1,offset:0}),xo=_(``),So=_(!1),F=_(null),Co=_(!1),wo=_(``),To=p(()=>ce.find(e=>e.kind===M.value)),Eo=p(()=>To.value?.configFields??[]);function Do(){let e={};for(let t of Eo.value)t.default!==void 0&&(e[t.key]=t.default);N.value=e,F.value=null}Do();async function Oo(){So.value=!0,F.value=null;try{F.value=await S.testDriver(M.value,N.value)}catch(e){F.value={ok:!1,message:x(e)}}finally{So.value=!1}}async function ko(){Co.value=!0,wo.value=``;try{for(let e of Eo.value)if(e.required&&(N.value[e.key]===void 0||N.value[e.key]===``))throw Error(b(`dcwDetail.k8x1un1184`,{p0:e.label}));let e=P.kind===`linear`?{kind:`linear`,scale:Number(P.scale),offset:Number(P.offset)}:void 0;await S.createFromTemplate(`dcw-${_o.value}`,{name:vo.value.trim()||void 0,driver:M.value,driverConfig:{...N.value},transform:e,holdIntervalMs:yo.value,readIntervalMs:bo.value,lineId:C.value,semantics:xo.value.trim()||void 0}),ho.value=!1,vo.value=``,xo.value=``}catch(e){wo.value=x(e)}finally{Co.value=!1}}let Ao=_(!1),jo=_(!1),Mo=_(``),No=_(``);function Po(){Ao.value=!0,Mo.value=``,No.value=``}let I=m({name:``,ch:``,code:``,unit:``,min:``,max:``,decimals:1,icon:`gateway`,semantics:``}),Fo=[{key:`thermo`,label:b(`dcwDetail.k422b8126`)},{key:`pressure`,label:b(`dcwDetail.k3x6ff127`)},{key:`tension`,label:b(`dcwDetail.k3z9xc128`)},{key:`encoder`,label:b(`dcwDetail.kjb3vhs129`)},{key:`camera`,label:b(`dcwDetail.k47atw130`)},{key:`gateway`,label:b(`dcwDetail.k48c07131`)}];async function Io(){jo.value=!0,Mo.value=``,No.value=``;try{if(!I.name.trim())throw Error(b(`dcwDetail.k6ugbw2132`));if(I.unit.trim()===``)throw Error(b(`dcwDetail.kx3pg59133`));if(I.min===``||I.max===``)throw Error(b(`dcwDetail.k13awowo134`));let e=await S.createTemplate({name:I.name.trim(),ch:I.ch.trim()||I.name.trim(),code:I.code.trim()||`CUSTOM`,unit:I.unit.trim(),min:Number(I.min),max:Number(I.max),decimals:Number(I.decimals)||0,icon:I.icon,semantics:I.semantics.trim()||void 0});_o.value=e.key,No.value=b(`dcwDetail.ky4e1tr185`,{p0:e.name}),I.name=``,I.ch=``,I.code=``,I.unit=``,I.min=``,I.max=``,I.semantics=``}catch(e){Mo.value=x(e)}finally{jo.value=!1}}let L=_(``),R=_(``),z=_(!1),B=_(``),V=_(``),Lo=p(()=>eo.value.filter(e=>e.productId===L.value));async function Ro(){z.value=!0,B.value=``,V.value=``;try{if(!R.value)throw Error(b(`dcwDetail.k1b6qe0r135`));await S.startLine(C.value,R.value),B.value=b(`dcwDetail.k17jteb9186`,{p0:T.value.productName,p1:T.value.recipeName,p2:T.value.runId})}catch(e){V.value=x(e)}finally{z.value=!1}}async function zo(){z.value=!0,B.value=``,V.value=``;try{let e=`${T.value.productName??``} · ${T.value.recipeName??``}`;await S.stopLine(C.value),B.value=b(`dcwDetail.kzl49pd187`,{p0:e})}catch(e){V.value=x(e)}finally{z.value=!1}}let Bo=_(!1),Vo=_(!1),Ho=_(``),H=m({name:``,description:``}),U=_(``);async function Uo(){Vo.value=!0,Ho.value=``;try{let e=await S.createProduct({name:H.name.trim(),description:H.description.trim(),lineId:C.value});L.value=e.id,U.value=e.id,Bo.value=!1,H.name=``,H.description=``}catch(e){Ho.value=x(e)}finally{Vo.value=!1}}let Wo=p(()=>U.value?eo.value.filter(e=>e.productId===U.value):eo.value),Go=e=>S.products.find(t=>t.id===e)?.name??e;function W(e,t){let n=S.nodes.find(t=>t.id===e);return n?n.enabled?t&&n.lineId!==t?{code:`unbound`,label:b(`dcwDetail.staleUnbound`)}:null:{code:`disabled`,label:b(`dcwDetail.staleDisabled`)}:{code:`deleted`,label:b(`dcwDetail.staleDeleted`)}}function Ko(e){return S.nodes.find(t=>t.id===e)?.name??e}function qo(e,t){let n=Ba.nodes.find(t=>t.id===e);return n?n.enabled?t&&n.lineId!==t?{code:`unbound`,label:b(`dcwDetail.staleUnbound`)}:null:{code:`disabled`,label:b(`dcwDetail.staleDisabled`)}:{code:`deleted`,label:b(`dcwDetail.staleDeleted`)}}let Jo=_(!1),G=_(null),Yo=_([]),Xo=_(!1),K=_(``);async function Zo(e){G.value=S.recipes.find(t=>t.id===e)??null,Jo.value=!0,K.value=``,Xo.value=!0;try{Yo.value=await S.recipeVersions(e)}catch(e){K.value=x(e)}finally{Xo.value=!1}}let Qo=e=>e===`agent`?`Agent`:b(e===`system`?`dcwDetail.srcSystem`:`dcwDetail.srcUser`);function $o(e,t){if(t===0)return b(`dcwDetail.histInit`);let n=Yo.value[t-1],r=e.params.map(e=>({p:e,old:n.params.find(t=>t.nodeId===e.nodeId)})).filter(({p:e,old:t})=>!t||t.value!==e.value).map(({p:e,old:t})=>`${S.nodes.find(t=>t.id===e.nodeId)?.name??e.nodeId}: ${t?.value??b(`dcwDetail.histAdded`)} → ${e.value}`);return r.length>0?r.join(`;`):b(`dcwDetail.histNoChange`)}async function es(e){if(G.value){K.value=``;try{let t=await S.revertRecipe(G.value.id,{version:e,reason:b(`dcwDetail.revertReasonUi`)});K.value=b(`dcwDetail.revertOk`,{p0:t.version??0}),Yo.value=await S.recipeVersions(G.value.id)}catch(e){K.value=x(e)}}}let q=m({productId:``,recipeId:``,paramKey:``,nodeId:``,lastMin:30,bucketMs:15e3}),ts=_(null),ns=_(!1),rs=_(``);async function is(){ns.value=!0,rs.value=``,ts.value=null;try{ts.value=await S.queryLine({lineId:C.value,productId:q.productId||void 0,recipeId:q.recipeId||void 0,paramKey:q.paramKey||void 0,nodeId:q.nodeId||void 0,fromMs:Date.now()-q.lastMin*6e4,toMs:Date.now(),bucketMs:q.bucketMs>0?q.bucketMs:void 0,limit:2e3}),ts.value.channels.length===0&&(rs.value=b(`dcwDetail.kszv5sq136`))}catch(e){rs.value=x(e)}finally{ns.value=!1}}let as=p(()=>S.templates.map(e=>e.key)),J=_(!1),Y=_(null),os=_(!1),X=_(``),ss=_(``),Z=m({productId:``,name:``,description:``,params:[],daqWindows:[]}),Q=_(null),$=_(null),cs=_(!1);function ls(){Y.value=null,X.value=``,Z.productId=U.value||L.value||k.value[0]?.id||``,Z.name=``,Z.description=``,Z.params=[{nodeId:O.value[0]?.id??``,value:``,min:``,max:``}],Z.daqWindows=[],J.value=!0}function us(e){let t=S.recipes.find(t=>t.id===e);if(!t)return;Y.value=e,X.value=``;let n=t.params.filter(e=>S.nodes.some(t=>t.id===e.nodeId)),r=t.params.length-n.length;ss.value=r>0?b(`dcwDetail.staleDropped`,{p0:r}):``,Z.productId=t.productId,Z.name=t.name,Z.description=t.description,Z.params=n.map(e=>({nodeId:e.nodeId,value:e.value,min:e.min??``,max:e.max??``})),Z.daqWindows=(t.daqWindows??[]).map(e=>({nodeId:e.nodeId,min:e.min??``,max:e.max??``})),J.value=!0}async function ds(){os.value=!0,X.value=``;try{let e={productId:Z.productId,name:Z.name.trim(),description:Z.description.trim(),params:Z.params.filter(e=>e.nodeId&&e.value!==``&&Number.isFinite(Number(e.value))).map(e=>({nodeId:e.nodeId,value:Number(e.value),...e.min!==``&&Number.isFinite(Number(e.min))?{min:Number(e.min)}:{},...e.max!==``&&Number.isFinite(Number(e.max))?{max:Number(e.max)}:{}})),daqWindows:Z.daqWindows.filter(e=>e.nodeId&&(e.min!==``||e.max!==``)).map(e=>({nodeId:e.nodeId,...e.min!==``&&Number.isFinite(Number(e.min))?{min:Number(e.min)}:{},...e.max!==``&&Number.isFinite(Number(e.max))?{max:Number(e.max)}:{}}))};Y.value?await S.updateRecipe(Y.value,e):await S.createRecipe(e),J.value=!1}catch(e){X.value=x(e)}finally{os.value=!1}}async function fs(e){Q.value=null,j.value=``;try{let t=await S.applyRecipe(e),n=t.results.filter(e=>e.ok).length;Q.value={runId:t.id,ok:n,total:t.results.length},n<t.results.length&&(j.value=b(`dcwDetail.ks7szkt188`,{p0:t.results.filter(e=>!e.ok).map(e=>e.message).join(`;`)}))}catch(e){j.value=x(e)}}async function ps(e){cs.value=!0;try{let t=await S.runData(e);$.value={runId:e,data:t}}catch(e){j.value=x(e)}finally{cs.value=!1}}function ms(e){let t=e?.value??e?.avg;return t==null?`--`:String(Math.round(t*1e3)/1e3)}return(i,a)=>{let p=ie,m=oe;return l(S).loaded&&!w.value?(s(),h(`div`,de,[v(`p`,fe,u(i.$t(`dcwDetail.k19337yp018`)),1),ne(p,{class:`pill-btn`,to:`/dcw`},{default:te(()=>[f(u(i.$t(`dcwDetail.kllwu1c019`)),1)]),_:1})])):(s(),h(`div`,pe,[v(`div`,me,[v(`div`,null,[v(`p`,he,[v(`span`,{class:`line-chip`,style:ee({background:w.value?.color??`#3aa0ff`})},null,4),f(`AGENTWORKSHOP / LINE / `+u(w.value?.name??C.value),1)]),v(`h1`,null,u(w.value?.name??i.$t(`dcwDetail.k1b2snna151`))+` · `+u(i.$t(`dcwDetail.k1l0iow1137`)),1),v(`p`,ge,u(w.value?.description||i.$t(`dcwDetail.kzcbfki152`)),1)]),v(`div`,_e,[v(`span`,ve,u(i.$t(`dcwDetail.k45uio082`))+` `+u(O.value.length),1),v(`span`,ye,u(i.$t(`dcwDetail.k3waz1025`))+` `+u(k.value.length),1),v(`span`,be,u(i.$t(`dcwDetail.k48grv027`))+` `+u(eo.value.length),1)])]),v(`section`,xe,[v(`div`,Se,[v(`button`,{class:c([`aw-pill`,{running:l(S).controller.running}]),title:i.$t(`dcwDetail.k1snap154`),onClick:a[0]||=e=>l(S).startStop(l(S).controller.running?`pause`:`resume`)},[v(`span`,{class:c(l(S).controller.running?`i-tabler-player-pause`:`i-tabler-player-play`)},null,2),f(` `+u(l(S).controller.running?i.$t(`dcwDetail.kplrsg153`):i.$t(`dcwDetail.knxgni9169`)),1)],10,Ce)]),v(`div`,we,[v(`span`,Te,[v(`span`,null,u(i.$t(`dcwDetail.k45uio082`))+` `+u(l(S).controller.nodesOnline)+`/`+u(l(S).controller.nodesTotal),1),a[55]||=v(`span`,{class:`sep`},`·`,-1),v(`span`,{title:i.$t(`dcwDetail.kd3ygmn001`)},u(i.$t(`dcwDetail.k3wtib138`))+` `+u(l(S).controller.writesTotal),9,Ee),a[56]||=v(`span`,{class:`sep`},`·`,-1),v(`span`,{class:c({warn:l(S).controller.writesFailed>0}),title:i.$t(`dcwDetail.kd3znl0002`)},u(i.$t(`dcwDetail.k3yit7139`))+` `+u(l(S).controller.writesFailed),11,De)]),v(`button`,{class:`aw-pill outline`,title:i.$t(`dcwDetail.kc4ixly003`),onClick:Po},[a[57]||=v(`span`,{class:`i-tabler-template`},null,-1),f(` `+u(i.$t(`dcwDetail.k1972dx9020`)),1)],8,Oe),v(`button`,{class:`aw-pill add-btn`,onClick:a[1]||=e=>ho.value=!0},[a[58]||=v(`span`,{class:`i-tabler-plus`},null,-1),f(` `+u(i.$t(`dcwDetail.k1976uns021`)),1)])])]),j.value||co.value?(s(),h(`p`,{key:0,class:c([`banner`,j.value?`bad`:`good`])},u(j.value||co.value),3)):g(``,!0),ro.value.length||io.value.length?(s(),h(`section`,ke,[v(`b`,Ae,u(i.$t(`dcwDetail.kaebkky022`)),1),v(`div`,je,[(s(!0),h(d,null,o(ro.value,e=>(s(),h(`span`,{key:e.id,class:`adopt-chip`},[f(u(e.name)+` `,1),v(`button`,{class:`mini-btn`,onClick:t=>ao(e.id)},u(i.$t(`dcwDetail.kyjp9fg023`)),9,Me)]))),128)),(s(!0),h(d,null,o(io.value,e=>(s(),h(`span`,{key:e.id,class:`adopt-chip`},[f(u(e.name)+`(`+u(i.$t(`dcwDetail.k3km252140`)),1),v(`button`,{class:`mini-btn`,onClick:t=>oo(e.id)},u(i.$t(`dcwDetail.kyjp9fg023`)),9,Ne)]))),128))])])):g(``,!0),v(`section`,Pe,[v(`div`,Fe,[v(`span`,{class:c([`line-dot`,{on:T.value.active}])},null,2),v(`div`,Ie,[v(`b`,null,u(T.value.active?i.$t(`dcwDetail.k1pxrhx0154`):i.$t(`dcwDetail.k1b2hxmx170`)),1),T.value.active?(s(),h(`small`,Le,u(T.value.productName)+` · `+u(T.value.recipeName)+` · `+u(i.$t(`dcwDetail.k400lb075`))+` `+u(T.value.runId)+` · `+u(i.$t(`dcwDetail.k3zkt2166`))+` `+u(T.value.startedAt?.slice(11,19))+` `+u(i.$t(`dcwDetail.k69vag8168`))+` `+u(T.value.taggedSamples)+` `+u(i.$t(`dcwDetail.k4118o085`)),1)):(s(),h(`small`,Re,u(i.$t(`dcwDetail.k19pof14024`)),1))])]),v(`div`,ze,[v(`label`,Be,[v(`span`,null,u(i.$t(`dcwDetail.k3waz1025`)),1),y(v(`select`,{"onUpdate:modelValue":a[2]||=e=>L.value=e,class:`inp`,onChange:a[3]||=e=>R.value=``},[v(`option`,Ve,u(i.$t(`dcwDetail.kuisodh026`)),1),(s(!0),h(d,null,o(k.value,e=>(s(),h(`option`,{key:e.id,value:e.id},u(e.name),9,He))),128))],544),[[t,L.value]])]),v(`label`,Ue,[v(`span`,null,u(i.$t(`dcwDetail.k48grv027`)),1),y(v(`select`,{"onUpdate:modelValue":a[4]||=e=>R.value=e,class:`inp`,disabled:!L.value},[v(`option`,Ge,u(i.$t(`dcwDetail.kutxzsz028`)),1),(s(!0),h(d,null,o(Lo.value,e=>(s(),h(`option`,{key:e.id,value:e.id,disabled:e.params.length===0},u(e.name)+u(e.params.length===0?i.$t(`dcwDetail.k1hicmch155`):i.$t(`dcwDetail.k1lzfi4g180`,{p0:e.params.length})),9,Ke))),128))],8,We),[[t,R.value]])]),T.value.active?(s(),h(`button`,{key:1,class:`pill-btn stop`,disabled:z.value,onClick:zo},u(i.$t(`dcwDetail.k1xyhd2y030`)),9,Je)):(s(),h(`button`,{key:0,class:`pill-btn`,disabled:z.value||!R.value,title:R.value?`下发配方参数并开始打标数据采集`:`开跑前必须先设定配方`,onClick:Ro},u(i.$t(`dcwDetail.kfb8vml029`)),9,qe))]),V.value?(s(),h(`p`,Ye,u(V.value),1)):g(``,!0),B.value?(s(),h(`p`,Xe,u(B.value),1)):g(``,!0)]),Ao.value?(s(),h(`div`,{key:2,class:`modal-mask`,onClick:a[15]||=r(e=>Ao.value=!1,[`self`])},[v(`div`,Ze,[v(`h3`,Qe,[f(u(i.$t(`dcwDetail.k1x4vam0031`))+` `,1),v(`small`,$e,u(i.$t(`dcwDetail.k3x23c141`))+` `+u(l(S).templates.filter(e=>e.builtin).length)+` · `+u(i.$t(`dcwDetail.k3t616a142`))+` `+u(l(S).templates.filter(e=>!e.builtin).length),1)]),v(`p`,et,u(i.$t(`dcwDetail.ke1iyud032`)),1),v(`div`,tt,[(s(!0),h(d,null,o(l(S).templates,e=>(s(),h(`span`,{key:e.key,class:`tpl-chip`,title:`${e.code} · ${e.min}~${e.max} ${e.unit}${e.semantics?` · ${e.semantics}`:``}`},[f(u(e.name)+` `,1),v(`small`,rt,u(e.min)+`~`+u(e.max)+u(e.unit),1),v(`em`,{class:c([`tpl-tag`,{builtin:e.builtin}])},u(e.builtin?i.$t(`dcwDetail.k3x23c141`):i.$t(`dcwDetail.k3t616a142`)),3)],8,nt))),128))]),v(`p`,it,u(i.$t(`dcwDetail.k169eb4s033`)),1),v(`div`,at,[v(`label`,ot,[v(`span`,null,[f(u(i.$t(`dcwDetail.k1f55q76034`)),1),a[59]||=v(`em`,null,`*`,-1)]),y(v(`input`,{"onUpdate:modelValue":a[5]||=e=>I.name=e,class:`inp`,placeholder:i.$t(`dcwDetail.k1tooi3o004`)},null,8,st),[[n,I.name]])]),v(`label`,ct,[v(`span`,null,u(i.$t(`dcwDetail.k1bqk219035`)),1),y(v(`input`,{"onUpdate:modelValue":a[6]||=e=>I.ch=e,class:`inp`,placeholder:i.$t(`dcwDetail.k698qz0005`)},null,8,lt),[[n,I.ch]])]),v(`label`,ut,[v(`span`,null,u(i.$t(`dcwDetail.k1ayxrqb036`)),1),y(v(`input`,{"onUpdate:modelValue":a[7]||=e=>I.code=e,class:`inp`,placeholder:`如 MOTOR · I`},null,512),[[n,I.code]])]),v(`label`,dt,[v(`span`,null,[f(u(i.$t(`dcwDetail.k3x4ef037`)),1),a[60]||=v(`em`,null,`*`,-1)]),y(v(`input`,{"onUpdate:modelValue":a[8]||=e=>I.unit=e,class:`inp`,placeholder:`如 A`},null,512),[[n,I.unit]])]),v(`label`,ft,[v(`span`,null,[f(u(i.$t(`dcwDetail.k1l9jv5m038`)),1),a[61]||=v(`em`,null,`*`,-1)]),y(v(`input`,{"onUpdate:modelValue":a[9]||=e=>I.min=e,type:`number`,class:`inp`,placeholder:i.$t(`dcwDetail.kxz9174006`)},null,8,pt),[[n,I.min,void 0,{number:!0}]])]),v(`label`,mt,[v(`span`,null,[f(u(i.$t(`dcwDetail.k1l9jv4p039`)),1),a[62]||=v(`em`,null,`*`,-1)]),y(v(`input`,{"onUpdate:modelValue":a[10]||=e=>I.max=e,type:`number`,class:`inp`,placeholder:i.$t(`dcwDetail.kxz9167007`)},null,8,ht),[[n,I.max,void 0,{number:!0}]])]),v(`label`,gt,[v(`span`,null,u(i.$t(`dcwDetail.k3mxmcx040`)),1),y(v(`input`,{"onUpdate:modelValue":a[11]||=e=>I.decimals=e,type:`number`,min:`0`,max:`4`,class:`inp`},null,512),[[n,I.decimals,void 0,{number:!0}]])]),v(`label`,_t,[v(`span`,null,u(i.$t(`dcwDetail.k3xx56041`)),1),y(v(`select`,{"onUpdate:modelValue":a[12]||=e=>I.icon=e,class:`inp`},[(s(),h(d,null,o(Fo,e=>v(`option`,{key:e.key,value:e.key},u(e.label),9,vt)),64))],512),[[t,I.icon]])])]),v(`label`,yt,[v(`span`,null,u(i.$t(`dcwDetail.knjmyfr042`)),1),y(v(`textarea`,{"onUpdate:modelValue":a[13]||=e=>I.semantics=e,class:`inp`,rows:`2`,placeholder:i.$t(`dcwDetail.k1qdnfzc008`)},null,8,bt),[[n,I.semantics]])]),No.value?(s(),h(`p`,xt,u(No.value),1)):g(``,!0),Mo.value?(s(),h(`p`,St,u(Mo.value),1)):g(``,!0),v(`div`,Ct,[v(`button`,{class:`aw-pill outline`,onClick:a[14]||=e=>Ao.value=!1},u(i.$t(`dcwDetail.k3x62t043`)),1),v(`button`,{class:`pill-btn`,disabled:jo.value||!I.name.trim()||I.unit.trim()===``||I.min===``||I.max===``,onClick:Io},u(jo.value?i.$t(`dcwDetail.k1bg4759156`):i.$t(`dcwDetail.k1bg9nga171`)),9,wt)])])])):g(``,!0),ho.value?(s(),h(`div`,{key:3,class:`modal-mask`,onClick:a[28]||=r(e=>ho.value=!1,[`self`])},[v(`div`,Tt,[v(`h3`,Et,u(i.$t(`dcwDetail.k1976uns021`)),1),v(`div`,Dt,[v(`button`,{class:c([`seg`,{on:go.value===`mock`}]),onClick:a[16]||=e=>go.value=`mock`},` Mock 模拟 PLC `,2),v(`button`,{class:c([`seg`,{on:go.value===`real`}]),onClick:a[17]||=e=>go.value=`real`},u(i.$t(`dcwDetail.kyj8fen044`)),3)]),v(`div`,Ot,[v(`label`,kt,[v(`span`,null,u(i.$t(`dcwDetail.k1ejzwqp045`)),1),y(v(`select`,{"onUpdate:modelValue":a[18]||=e=>_o.value=e,class:`inp`},[(s(!0),h(d,null,o(l(S).templates,e=>(s(),h(`option`,{key:e.key,value:e.key},u(e.name)+` · `+u(e.ch)+`(`+u(e.min)+`~`+u(e.max)+` `+u(e.unit)+`)`+u(e.builtin?``:i.$t(`dcwDetail.kr45rk9157`)),9,At))),128))],512),[[t,_o.value]])]),v(`label`,jt,[v(`span`,null,u(i.$t(`dcwDetail.k1ce2k1y046`)),1),y(v(`input`,{"onUpdate:modelValue":a[19]||=e=>vo.value=e,class:`inp`,placeholder:i.$t(`dcwDetail.kgpxzy3009`)},null,8,Mt),[[n,vo.value]])]),v(`label`,Nt,[v(`span`,null,u(i.$t(`dcwDetail.k1vyb8im047`)),1),y(v(`input`,{"onUpdate:modelValue":a[20]||=e=>yo.value=e,type:`number`,min:`0`,max:`3600000`,step:`500`,class:`inp`,placeholder:i.$t(`dcwDetail.kb1srz0010`)},null,8,Pt),[[n,yo.value,void 0,{number:!0}]])]),v(`label`,Ft,[v(`span`,null,u(i.$t(`dcwDetail.k9r7d4e016`)),1),y(v(`input`,{"onUpdate:modelValue":a[21]||=e=>bo.value=e,type:`number`,min:`0`,max:`3600000`,step:`500`,class:`inp`,placeholder:i.$t(`dcwDetail.k9r7d4e017`)},null,8,It),[[n,bo.value,void 0,{number:!0}]])])]),v(`div`,Lt,[v(`label`,Rt,[v(`span`,null,u(i.$t(`dcwDetail.kiune1f048`)),1),y(v(`select`,{"onUpdate:modelValue":a[22]||=e=>P.kind=e,class:`inp`},[v(`option`,zt,u(i.$t(`dcwDetail.kkzy0k049`)),1),a[63]||=v(`option`,{value:`linear`},` 线性标定:PLC值 = (物理值 - offset) / scale `,-1)],512),[[t,P.kind]])]),v(`label`,Bt,[a[64]||=v(`span`,null,`scale / offset`,-1),v(`div`,Vt,[y(v(`input`,{"onUpdate:modelValue":a[23]||=e=>P.scale=e,type:`number`,step:`0.1`,class:`inp`,disabled:P.kind!==`linear`,title:`decoder 斜率(≠0):物理值 = scale × PLC值 + offset;下发时自动取逆`},null,8,Ht),[[n,P.scale,void 0,{number:!0}]]),y(v(`input`,{"onUpdate:modelValue":a[24]||=e=>P.offset=e,type:`number`,step:`0.1`,class:`inp`,disabled:P.kind!==`linear`,title:`decoder 截距`},null,8,Ut),[[n,P.offset,void 0,{number:!0}]])])])]),go.value===`real`?(s(),h(d,{key:0},[v(`div`,Wt,[v(`label`,Gt,[v(`span`,null,u(i.$t(`dcwDetail.k1kt87rx050`)),1),y(v(`select`,{"onUpdate:modelValue":a[25]||=e=>M.value=e,class:`inp`},[(s(!0),h(d,null,o(l(ce).filter(e=>e.status!==`builtin`),e=>(s(),h(`option`,{key:e.kind,value:e.kind},u(e.label),9,Kt))),128))],512),[[t,M.value]])])]),Eo.value.length?(s(),h(`div`,qt,[(s(!0),h(d,null,o(Eo.value,n=>(s(),h(`label`,{key:n.key,class:`f`},[v(`span`,null,[f(u(n.label),1),n.required?(s(),h(`em`,Jt,`*`)):g(``,!0)]),n.type===`select`?y((s(),h(`select`,{key:0,"onUpdate:modelValue":e=>N.value[n.key]=e,class:`inp`},[(s(!0),h(d,null,o(n.options,e=>(s(),h(`option`,{key:e.value,value:e.value},u(e.label),9,Xt))),128))],8,Yt)),[[t,N.value[n.key]]]):y((s(),h(`input`,{key:1,"onUpdate:modelValue":e=>N.value[n.key]=e,type:n.type===`number`?`number`:`text`,placeholder:n.placeholder,class:`inp`},null,8,Zt)),[[e,N.value[n.key]]]),n.hint?(s(),h(`small`,Qt,u(n.hint),1)):g(``,!0)]))),128))])):g(``,!0),v(`div`,$t,[v(`button`,{class:`pill-btn outline`,disabled:So.value,onClick:Oo},u(So.value?i.$t(`dcwDetail.k1fsh720158`):i.$t(`dcwDetail.k1fstglk172`)),9,en),F.value?(s(),h(`span`,{key:0,class:c([`test-result`,F.value.ok?`good`:`bad`])},u(F.value.ok?`✓`:`✗`)+` `+u(F.value.message),3)):g(``,!0)])],64)):g(``,!0),v(`label`,tn,[v(`span`,null,u(i.$t(`dcwDetail.k1hgizn7051`)),1),y(v(`textarea`,{"onUpdate:modelValue":a[26]||=e=>xo.value=e,class:`inp`,rows:`2`,placeholder:i.$t(`dcwDetail.k12bnyt9011`)},null,8,nn),[[n,xo.value]])]),wo.value?(s(),h(`p`,rn,u(wo.value),1)):g(``,!0),v(`div`,an,[v(`button`,{class:`aw-pill outline`,onClick:a[27]||=e=>ho.value=!1},u(i.$t(`dcwDetail.k3xdnn052`)),1),v(`button`,{class:`aw-pill`,disabled:Co.value,onClick:ko},u(Co.value?i.$t(`dcwDetail.k1bg4759156`):i.$t(`dcwDetail.k1bge46t173`)),9,on)])])])):g(``,!0),ne(m,{spinning:!l(S).loaded&&!l(S).error},{default:te(()=>[v(`section`,sn,[v(`table`,cn,[v(`thead`,null,[v(`tr`,null,[v(`th`,null,u(i.$t(`dcwDetail.k1e2dtkt053`)),1),v(`th`,null,u(i.$t(`dcwDetail.k403cy054`)),1),v(`th`,null,u(i.$t(`dcwDetail.k42w8s055`)),1),v(`th`,null,u(i.$t(`dcwDetail.k1deqh0d056`)),1),v(`th`,null,u(i.$t(`dcwDetail.k9r7d4e018`)),1),v(`th`,null,u(i.$t(`dcwDetail.k1k79ec9057`)),1),v(`th`,null,u(i.$t(`dcwDetail.k1dexou6058`)),1),v(`th`,null,u(i.$t(`dcwDetail.k1b1nnaa059`)),1),v(`th`,null,u(i.$t(`dcwDetail.k1i8rtqt060`)),1),v(`th`,ln,u(i.$t(`dcwDetail.k40aa6061`)),1)])]),v(`tbody`,null,[(s(!0),h(d,null,o(O.value,e=>(s(),h(`tr`,{key:e.id,class:c({"node-paused":!e.enabled})},[v(`td`,null,[v(`span`,un,u(e.id.slice(0,8)),1),v(`b`,null,u(e.name),1),v(`small`,dn,u(Ka(e.templateRef)),1)]),v(`td`,null,[v(`button`,{class:c([`ctrl-toggle`,{on:e.enabled}]),disabled:po.value===e.id,title:e.enabled?`暂停该节点控制:下发将被拒绝`:`开启该节点控制:恢复可下发`,onClick:t=>mo(e.id,!e.enabled)},[a[65]||=v(`span`,{class:`ct-dot`},null,-1),f(` `+u(e.enabled?i.$t(`dcwDetail.k3o3ib3159`):i.$t(`dcwDetail.k3n93ed062`)),1)],10,fn)]),v(`td`,null,[e.enabled?(s(),h(`span`,{key:1,class:c([`st-pill`,e.state])},u(Ga[e.state]??e.state),3)):(s(),h(`span`,pn,u(i.$t(`dcwDetail.k3n93ed062`)),1))]),v(`td`,mn,[f(u(e.value==null?`--`:e.value.toFixed(e.decimals))+` `,1),v(`small`,null,u(e.unit),1),e.lastAckAt?(s(),h(`small`,hn,` · `+u(e.lastAckAt.slice(11,19)),1)):g(``,!0)]),v(`td`,gn,[v(`span`,{title:e.lastReadError??i.$t(`dcwDetail.k9r7d4e019`),class:c({"read-stale":e.lastReadError})},u(e.readValue==null?`--`:e.readValue.toFixed(e.decimals)),11,_n),v(`small`,null,u(e.unit),1),e.lastReadAt?(s(),h(`small`,vn,` · `+u(e.lastReadAt.slice(11,19)),1)):g(``,!0),v(`button`,{class:`mini-btn read-btn`,disabled:uo.value===e.id,title:i.$t(`dcwDetail.k9r7d4e020`),onClick:t=>fo(e.id)},u(uo.value===e.id?`···`:i.$t(`dcwDetail.k9r7d4e021`)),9,yn)]),v(`td`,null,[v(`div`,bn,[y(v(`input`,{"onUpdate:modelValue":t=>A[e.id]=t,type:`number`,class:`inp write-inp mono`,placeholder:`${e.min}~${e.max}`,min:e.min,max:e.max,step:10**-e.decimals,disabled:!e.enabled,title:e.enabled?``:`当前节点暂停:开启控制后方可设定`},null,8,xn),[[n,A[e.id],void 0,{number:!0}]]),v(`button`,{class:`mini-btn write-btn`,disabled:!e.enabled||so.value===e.id||A[e.id]==null||A[e.id]===``,title:e.enabled?`下发设定值`:`当前节点暂停:开启控制后方可设定`,onClick:t=>lo(e.id,Number(A[e.id]))},u(so.value===e.id?i.$t(`dcwDetail.k3l3h80123`):i.$t(`dcwDetail.k3w6td174`)),9,Sn)])]),v(`td`,Cn,u(e.min)+` ~ `+u(e.max)+` `+u(e.unit),1),v(`td`,wn,[f(u(e.holdIntervalMs==null?i.$t(`dcwDetail.k3zul4160`):`${e.holdIntervalMs}ms`)+` `,1),v(`small`,{class:`dim`,title:i.$t(`dcwDetail.k9r7d4e016`)},`· `+u(e.readIntervalMs===0?i.$t(`dcwDetail.k9r7d4e022`):e.readIntervalMs==null?i.$t(`dcwDetail.k9r7d4e023`):`${e.readIntervalMs}ms`),9,Tn)]),v(`td`,null,u(Ua(e)),1),v(`td`,En,[v(`button`,{class:`mini-btn danger`,onClick:t=>l(S).removeNode(e.id)},u(i.$t(`dcwDetail.k3xakp063`)),9,Dn)])],2))),128)),l(S).loaded&&O.value.length===0?(s(),h(`tr`,On,[v(`td`,kn,[v(`div`,An,[v(`p`,jn,u(i.$t(`dcwDetail.k1wtecyw064`)),1)])])])):g(``,!0)])])])]),_:1},8,[`spinning`]),v(`section`,Mn,[v(`div`,Nn,[v(`h3`,null,u(i.$t(`dcwDetail.k1j8w3hd065`)),1),v(`span`,Pn,u(k.value.length)+` `+u(i.$t(`dcwDetail.k1av3wgs143`))+` `+u(Wo.value.length)+` `+u(i.$t(`dcwDetail.k48grv027`)),1),v(`button`,{class:`pill-btn`,style:{"margin-left":`auto`},onClick:ls},u(i.$t(`dcwDetail.k1akm6dc066`)),1),v(`button`,{class:`mini-btn`,onClick:a[29]||=e=>Bo.value=!0},u(i.$t(`dcwDetail.k1aka0ki067`)),1)]),v(`p`,Fn,u(i.$t(`dcwDetail.k6bl2q8068`)),1),k.value.length?(s(),h(`div`,In,[v(`button`,{class:c([`prod-chip`,{on:U.value===``}]),onClick:a[30]||=e=>U.value=``},u(i.$t(`dcwDetail.k3x4t1069`)),3),(s(!0),h(d,null,o(k.value,e=>(s(),h(`button`,{key:e.id,class:c([`prod-chip`,{on:U.value===e.id}]),title:e.description,onClick:t=>U.value=e.id},[f(u(e.name)+` `,1),v(`span`,{class:`prod-del`,title:i.$t(`dcwDetail.k1bpfjgx012`),onClick:r(t=>l(S).removeProduct(e.id),[`stop`])},`×`,8,Rn)],10,Ln))),128))])):(s(),h(`p`,zn,u(i.$t(`dcwDetail.knov3zg070`)),1)),v(`div`,Bn,[(s(!0),h(d,null,o(Wo.value,e=>(s(),h(`div`,{key:e.id,class:`recipe-item`},[v(`div`,Vn,[v(`b`,null,u(e.name),1),e.version?(s(),h(`span`,{key:0,class:`param-chip mono`,title:l(b)(`dcwDetail.histTitle`)},`v`+u(e.version),9,Hn)):g(``,!0),v(`small`,Un,u(Go(e.productId)),1),v(`small`,Wn,u(e.id),1)]),e.description?(s(),h(`p`,Gn,u(e.description),1)):g(``,!0),v(`div`,Kn,[(s(!0),h(d,null,o(e.params,(t,n)=>(s(),h(`span`,{key:n,class:c([`param-chip`,{stale:W(t.nodeId,e.lineId)}]),title:W(t.nodeId,e.lineId)?.label??``},[f(u(Ko(t.nodeId))+` = `+u(t.value),1),W(t.nodeId,e.lineId)?(s(),h(`span`,Jn,u(W(t.nodeId,e.lineId).label),1)):g(``,!0)],10,qn))),128)),(s(!0),h(d,null,o(e.daqWindows,(t,n)=>(s(),h(`span`,{key:`w-${n}`,class:c([`param-chip daqwin`,{stale:qo(t.nodeId,e.lineId)}]),title:qo(t.nodeId,e.lineId)?.label??i.$t(`dcwDetail.k1l11api013`)},[f(` ◎ `+u($a(t.nodeId))+` ∈ [`+u(t.min??`-∞`)+`, `+u(t.max??`+∞`)+`]`,1),qo(t.nodeId,e.lineId)?(s(),h(`span`,Xn,u(qo(t.nodeId,e.lineId).label),1)):g(``,!0)],10,Yn))),128))]),v(`div`,Zn,[v(`button`,{class:`pill-btn`,onClick:t=>fs(e.id)},u(i.$t(`dcwDetail.k1497qvr071`)),9,Qn),v(`button`,{class:`mini-btn`,onClick:t=>us(e.id)},u(i.$t(`dcwDetail.k45eb0072`)),9,$n),v(`button`,{class:`mini-btn`,onClick:t=>Zo(e.id)},[f(u(l(b)(`dcwDetail.histBtn`)),1),e.version?(s(),h(`span`,tr,`·v`+u(e.version),1)):g(``,!0)],8,er),v(`button`,{class:`mini-btn danger`,onClick:t=>l(S).removeRecipe(e.id)},u(i.$t(`dcwDetail.k3xakp063`)),9,nr)])]))),128)),Wo.value.length===0?(s(),h(`div`,rr,u(i.$t(`dcwDetail.keko1xy073`)),1)):g(``,!0)]),Q.value?(s(),h(`div`,ir,[f(u(i.$t(`dcwDetail.k1l3hrvp144`))+` `+u(Q.value.runId)+` `+u(i.$t(`dcwDetail.k1g3lh2v167`))+u(Q.value.ok)+`/`+u(Q.value.total)+` `+u(i.$t(`dcwDetail.k1bqci06149`))+` `,1),v(`button`,{class:`mini-btn`,style:{"margin-left":`10px`},disabled:cs.value,onClick:a[31]||=e=>ps(Q.value.runId)},u(cs.value?i.$t(`dcwDetail.k1br0ij9161`):i.$t(`dcwDetail.kxwei5175`)),9,ar)])):g(``,!0),to.value.length?(s(),h(`div`,or,[v(`p`,sr,u(i.$t(`dcwDetail.k1rjer8d074`)),1),v(`table`,cr,[v(`thead`,null,[v(`tr`,null,[v(`th`,null,u(i.$t(`dcwDetail.k400lb075`)),1),v(`th`,null,u(i.$t(`dcwDetail.k48grv027`)),1),v(`th`,null,u(i.$t(`dcwDetail.k4497j076`)),1),v(`th`,null,u(i.$t(`dcwDetail.k1bqhtmu077`)),1),v(`th`,lr,u(i.$t(`dcwDetail.k40aa6061`)),1)])]),v(`tbody`,null,[(s(!0),h(d,null,o([...to.value].reverse().slice(0,8),e=>(s(),h(`tr`,{key:e.id},[v(`td`,ur,u(e.id),1),v(`td`,null,u(e.recipeName),1),v(`td`,dr,u(e.startedAt.slice(5,19))+` ~ `+u(e.endedAt?e.endedAt.slice(5,19):i.$t(`dcwDetail.k3vpfg9162`)),1),v(`td`,null,[v(`span`,{class:c([`st-pill`,e.results.every(e=>e.ok)?`ok`:`warn`])},u(e.results.filter(e=>e.ok).length)+`/`+u(e.results.length),3)]),v(`td`,fr,[v(`button`,{class:`mini-btn`,disabled:cs.value,onClick:t=>ps(e.id)},u(i.$t(`dcwDetail.k1dzwrdp078`)),9,pr),e.endedAt?g(``,!0):(s(),h(`button`,{key:0,class:`mini-btn`,onClick:t=>l(S).closeRun(e.id)},u(i.$t(`dcwDetail.k1blr7y7079`)),9,mr))])]))),128))])])])):g(``,!0),$.value?(s(),h(`div`,{key:4,class:`modal-mask`,onClick:a[33]||=r(e=>$.value=null,[`self`])},[v(`div`,hr,[v(`h3`,gr,u(i.$t(`dcwDetail.k11lq94k145`))+` `+u($.value.data.run.recipeName)+`(`+u($.value.runId)+`) `,1),v(`p`,_r,u(i.$t(`dcwDetail.k1me41w8080`)),1),v(`table`,vr,[v(`thead`,null,[v(`tr`,null,[v(`th`,null,u(i.$t(`dcwDetail.k48hde081`)),1),v(`th`,null,u(i.$t(`dcwDetail.k45uio082`)),1),v(`th`,null,u(i.$t(`dcwDetail.k40t11083`)),1),v(`th`,null,u(i.$t(`dcwDetail.k3xuaw084`)),1),a[66]||=v(`th`,null,`min ~ max`,-1),v(`th`,null,u(i.$t(`dcwDetail.k4118o085`)),1)])]),v(`tbody`,null,[(s(!0),h(d,null,o($.value.data.daq,e=>(s(),h(`tr`,{key:e.nodeId},[v(`td`,null,[f(u(e.ch),1),v(`small`,yr,u(e.unit),1)]),v(`td`,null,u(e.nodeName),1),v(`td`,br,u(e.latest),1),v(`td`,xr,u(e.avg),1),v(`td`,Sr,u(e.min)+` ~ `+u(e.max),1),v(`td`,Cr,u(e.cnt),1)]))),128)),$.value.data.daq.length===0?(s(),h(`tr`,wr,[v(`td`,Tr,u(i.$t(`dcwDetail.kd457ry086`)),1)])):g(``,!0)])]),v(`p`,Er,u(i.$t(`dcwDetail.k12b7cxs087`)),1),v(`table`,Dr,[v(`thead`,null,[v(`tr`,null,[v(`th`,null,u(i.$t(`dcwDetail.k3xbjr088`)),1),v(`th`,null,u(i.$t(`dcwDetail.k45uio082`)),1),v(`th`,null,u(i.$t(`dcwDetail.k3ncbsh089`)),1),v(`th`,null,u(i.$t(`dcwDetail.k3lh3mz090`)),1),v(`th`,null,u(i.$t(`dcwDetail.k454pg091`)),1),v(`th`,null,u(i.$t(`dcwDetail.k40ieu092`)),1)])]),v(`tbody`,null,[(s(!0),h(d,null,o($.value.data.writes,(e,t)=>(s(),h(`tr`,{key:t},[v(`td`,null,u(e.param),1),v(`td`,null,u(e.nodeName),1),v(`td`,Or,u(e.eng),1),v(`td`,kr,u(e.raw),1),v(`td`,null,[v(`span`,{class:c([`st-pill`,e.ok?`ok`:`alarm`])},u(e.ok?`ACK`:i.$t(`dcwDetail.k3yit7139`)),3)]),v(`td`,Ar,u(e.at.slice(5,19)),1)]))),128)),$.value.data.writes.length===0?(s(),h(`tr`,jr,[v(`td`,Mr,u(i.$t(`dcwDetail.knzcp8i093`)),1)])):g(``,!0)])]),v(`div`,Nr,[v(`button`,{class:`aw-pill outline`,onClick:a[32]||=e=>$.value=null},u(i.$t(`dcwDetail.k3x62t043`)),1)])])])):g(``,!0)]),J.value?(s(),h(`div`,{key:4,class:`modal-mask`,onClick:a[40]||=r(e=>J.value=!1,[`self`])},[v(`div`,Pr,[v(`h3`,Fr,u(Y.value?i.$t(`dcwDetail.k1iiwk0i163`):i.$t(`dcwDetail.k1efq0r9176`)),1),v(`div`,Ir,[v(`label`,Lr,[v(`span`,null,[f(u(i.$t(`dcwDetail.k1dw4fzf094`)),1),a[67]||=v(`em`,null,`*`,-1)]),y(v(`select`,{"onUpdate:modelValue":a[34]||=e=>Z.productId=e,class:`inp`},[(s(!0),h(d,null,o(k.value,e=>(s(),h(`option`,{key:e.id,value:e.id},u(e.name),9,Rr))),128))],512),[[t,Z.productId]])]),v(`label`,zr,[v(`span`,null,[f(u(i.$t(`dcwDetail.k1l3f8so095`)),1),a[68]||=v(`em`,null,`*`,-1)]),y(v(`input`,{"onUpdate:modelValue":a[35]||=e=>Z.name=e,class:`inp`,placeholder:i.$t(`dcwDetail.k12c11vm014`)},null,8,Br),[[n,Z.name]])]),v(`label`,Vr,[v(`span`,null,u(i.$t(`dcwDetail.k40gkk096`)),1),y(v(`input`,{"onUpdate:modelValue":a[36]||=e=>Z.description=e,class:`inp`,placeholder:i.$t(`dcwDetail.k1hxx8hy015`)},null,8,Hr),[[n,Z.description]])])]),v(`p`,Ur,u(i.$t(`dcwDetail.ka1kfgh097`)),1),(s(!0),h(d,null,o(Z.params,(e,r)=>(s(),h(`div`,{key:r,class:`param-row`},[v(`label`,Wr,[v(`span`,null,u(i.$t(`dcwDetail.k1e2dtkt053`)),1),y(v(`select`,{"onUpdate:modelValue":t=>e.nodeId=t,class:`inp`},[(s(!0),h(d,null,o(O.value,e=>(s(),h(`option`,{key:e.id,value:e.id},u(e.name)+`(`+u(Ka(e.templateRef))+` · `+u(e.min)+`~`+u(e.max)+` `+u(e.unit)+`) `,9,Kr))),128))],8,Gr),[[t,e.nodeId]]),W(e.nodeId,C.value)?(s(),h(`span`,qr,u(W(e.nodeId,C.value).label),1)):g(``,!0)]),v(`label`,Jr,[v(`span`,null,[f(u(i.$t(`dcwDetail.k3renp2098`)),1),a[69]||=v(`em`,null,`*`,-1)]),y(v(`input`,{"onUpdate:modelValue":t=>e.value=t,type:`number`,class:`inp`,step:.1},null,8,Yr),[[n,e.value,void 0,{number:!0}]])]),v(`label`,Xr,[v(`span`,null,u(i.$t(`dcwDetail.k134rw3b146`))+u(qa(e.nodeId)??`-`)+`)`,1),y(v(`input`,{"onUpdate:modelValue":t=>e.min=t,type:`number`,class:`inp`,step:.1,placeholder:i.$t(`dcwDetail.k5vew9z016`)},null,8,Zr),[[n,e.min,void 0,{number:!0}]])]),v(`label`,Qr,[v(`span`,null,u(i.$t(`dcwDetail.khrv911147`))+u(Ja(e.nodeId)??`-`)+`)`,1),y(v(`input`,{"onUpdate:modelValue":t=>e.max=t,type:`number`,class:`inp`,step:.1,placeholder:i.$t(`dcwDetail.kzoh5pr017`)},null,8,$r),[[n,e.max,void 0,{number:!0}]])]),v(`button`,{class:`mini-btn danger param-del`,onClick:e=>Z.params.splice(r,1)},u(i.$t(`dcwDetail.k44idg099`)),9,ei)]))),128)),v(`button`,{class:`mini-btn`,onClick:a[37]||=e=>Z.params.push({nodeId:O.value[0]?.id??``,value:``,min:``,max:``})},u(i.$t(`dcwDetail.k1broh7h100`)),1),v(`p`,ti,u(i.$t(`dcwDetail.k1h5gues101`)),1),(s(!0),h(d,null,o(Z.daqWindows,(e,r)=>(s(),h(`div`,{key:`dw-${r}`,class:`param-row`},[v(`label`,ni,[v(`span`,null,u(i.$t(`dcwDetail.k1empnnb102`)),1),y(v(`select`,{"onUpdate:modelValue":t=>e.nodeId=t,class:`inp`},[(s(!0),h(d,null,o(Ya.value,e=>(s(),h(`option`,{key:e.id,value:e.id},u(e.name)+`(`+u(e.min)+`~`+u(e.max)+` `+u(e.unit)+`) `,9,ii))),128))],8,ri),[[t,e.nodeId]])]),v(`label`,ai,[v(`span`,null,u(i.$t(`dcwDetail.kqm08ap103`)),1),y(v(`input`,{"onUpdate:modelValue":t=>e.min=t,type:`number`,class:`inp`,step:.1},null,8,oi),[[n,e.min,void 0,{number:!0}]])]),v(`label`,si,[v(`span`,null,u(i.$t(`dcwDetail.kpypf8g104`)),1),y(v(`input`,{"onUpdate:modelValue":t=>e.max=t,type:`number`,class:`inp`,step:.1},null,8,ci),[[n,e.max,void 0,{number:!0}]])]),v(`button`,{class:`mini-btn danger param-del`,onClick:e=>Z.daqWindows.splice(r,1)},u(i.$t(`dcwDetail.k44idg099`)),9,li)]))),128)),v(`button`,{class:`mini-btn`,disabled:Ya.value.length===0,title:Ya.value.length===0?`本产线暂无数采节点`:``,onClick:a[38]||=e=>Z.daqWindows.push({nodeId:Ya.value[0]?.id??``,min:``,max:``})},u(i.$t(`dcwDetail.kv1de1p105`)),9,ui),ss.value?(s(),h(`p`,di,u(ss.value),1)):g(``,!0),X.value?(s(),h(`p`,fi,u(X.value),1)):g(``,!0),v(`div`,pi,[v(`button`,{class:`aw-pill outline`,onClick:a[39]||=e=>J.value=!1},u(i.$t(`dcwDetail.k3xdnn052`)),1),v(`button`,{class:`pill-btn`,disabled:os.value,onClick:ds},u(os.value?i.$t(`dcwDetail.k1b38d59164`):i.$t(`dcwDetail.k1b3kwg0177`)),9,mi)])])])):g(``,!0),Jo.value?(s(),h(`div`,{key:5,class:`modal-mask`,onClick:a[42]||=r(e=>Jo.value=!1,[`self`])},[v(`div`,hi,[v(`div`,gi,[v(`h3`,null,[f(u(l(b)(`dcwDetail.histTitle`)),1),G.value?(s(),h(`span`,_i,u(G.value.name)+` · v`+u(G.value.version),1)):g(``,!0)]),v(`button`,{class:`mini-btn`,onClick:a[41]||=e=>Jo.value=!1},` ✕ `)]),K.value?(s(),h(`p`,vi,u(K.value),1)):g(``,!0),Xo.value?(s(),h(`p`,yi,u(l(b)(`dcwDetail.histLoading`)),1)):Yo.value.length===0?(s(),h(`div`,bi,u(l(b)(`dcwDetail.histEmpty`)),1)):(s(!0),h(d,{key:3},o(Yo.value,(e,t)=>(s(),h(`div`,{key:e.version,class:c([`ver-row`,{cur:e.current}])},[v(`div`,xi,[v(`span`,Si,`v`+u(e.version),1),v(`span`,{class:c([`ver-src`,e.by??(e.current?`cur`:``)])},u(e.current?l(b)(`dcwDetail.histCurrent`):Qo(e.by)),3),v(`span`,Ci,u(e.at.slice(0,19).replace(`T`,` `)),1),v(`span`,wi,u(e.actorName||`—`),1),e.current?g(``,!0):(s(),h(`button`,{key:0,class:`mini-btn`,onClick:t=>es(e.version)},u(l(b)(`dcwDetail.revertTo`)),9,Ti))]),e.description?(s(),h(`p`,Ei,u(e.description),1)):g(``,!0),v(`p`,Di,u($o(e,t)),1)],2))),128))])])):g(``,!0),v(`section`,Oi,[v(`p`,ki,u(i.$t(`dcwDetail.k1us3jse106`)),1),v(`div`,Ai,[v(`label`,ji,[v(`span`,null,u(i.$t(`dcwDetail.k3waz1025`)),1),y(v(`select`,{"onUpdate:modelValue":a[43]||=e=>q.productId=e,class:`inp`,onChange:a[44]||=e=>q.recipeId=``},[v(`option`,Mi,u(i.$t(`dcwDetail.k1bkl1jx107`)),1),(s(!0),h(d,null,o(k.value,e=>(s(),h(`option`,{key:e.id,value:e.id},u(e.name),9,Ni))),128))],544),[[t,q.productId]])]),v(`label`,Pi,[v(`span`,null,u(i.$t(`dcwDetail.k48grv027`)),1),y(v(`select`,{"onUpdate:modelValue":a[45]||=e=>q.recipeId=e,class:`inp`,disabled:!q.productId},[v(`option`,Ii,u(i.$t(`dcwDetail.k1bkx7cr108`)),1),(s(!0),h(d,null,o(Wo.value,e=>(s(),h(`option`,{key:e.id,value:e.id},u(e.name),9,Li))),128))],8,Fi),[[t,q.recipeId]])]),v(`label`,Ri,[v(`span`,null,u(i.$t(`dcwDetail.k1demcae109`)),1),y(v(`select`,{"onUpdate:modelValue":a[46]||=e=>q.paramKey=e,class:`inp`},[v(`option`,zi,u(i.$t(`dcwDetail.k1bkx7ya110`)),1),(s(!0),h(d,null,o(as.value,e=>(s(),h(`option`,{key:e,value:e},u(e),9,Bi))),128))],512),[[t,q.paramKey]])]),v(`label`,Vi,[v(`span`,null,u(i.$t(`dcwDetail.k45uio082`)),1),y(v(`select`,{"onUpdate:modelValue":a[47]||=e=>q.nodeId=e,class:`inp`},[v(`option`,Hi,u(i.$t(`dcwDetail.k1bkul3k111`)),1),(s(!0),h(d,null,o(Ya.value,e=>(s(),h(`option`,{key:e.id,value:e.id},u(e.name),9,Ui))),128))],512),[[t,q.nodeId]])]),v(`label`,Wi,[v(`span`,null,u(i.$t(`dcwDetail.kx2ojn0112`)),1),y(v(`input`,{"onUpdate:modelValue":a[48]||=e=>q.lastMin=e,type:`number`,min:`1`,max:`10080`,class:`inp`},null,512),[[n,q.lastMin,void 0,{number:!0}]])]),v(`label`,Gi,[v(`span`,null,u(i.$t(`dcwDetail.kjvnvn4113`)),1),y(v(`input`,{"onUpdate:modelValue":a[49]||=e=>q.bucketMs=e,type:`number`,min:`1000`,step:`500`,class:`inp`},null,512),[[n,q.bucketMs,void 0,{number:!0}]])]),v(`div`,Ki,[v(`button`,{class:`pill-btn`,disabled:ns.value,onClick:is},u(ns.value?i.$t(`dcwDetail.k1eyx09r165`):i.$t(`dcwDetail.k416ek178`)),9,qi)])]),rs.value?(s(),h(`p`,Ji,u(rs.value),1)):g(``,!0),ts.value?(s(),h(`div`,Yi,[v(`table`,Xi,[v(`thead`,null,[v(`tr`,null,[v(`th`,null,u(i.$t(`dcwDetail.k48hde081`)),1),v(`th`,null,u(i.$t(`dcwDetail.k45uio082`)),1),v(`th`,null,u(i.$t(`dcwDetail.k42kcu114`)),1),v(`th`,null,u(i.$t(`dcwDetail.k49ujb115`)),1),v(`th`,null,u(i.$t(`dcwDetail.k40pvw116`)),1),v(`th`,null,u(i.$t(`dcwDetail.k3xho3117`)),1)])]),v(`tbody`,null,[(s(!0),h(d,null,o(ts.value.channels,e=>(s(),h(`tr`,{key:e.nodeId},[v(`td`,null,[f(u(e.ch),1),v(`small`,Zi,u(e.unit),1)]),v(`td`,null,u(e.nodeName),1),v(`td`,Qi,u(e.points.length),1),v(`td`,$i,u(ms(e.points[0])),1),v(`td`,ea,u(ms(e.points[e.points.length-1])),1),v(`td`,ta,u(new Date(e.points[0]?.at??0).toLocaleTimeString())+` ~ `+u(new Date(e.points[e.points.length-1]?.at??0).toLocaleTimeString()),1)]))),128))])])])):g(``,!0)]),no.value.length?(s(),h(`section`,na,[v(`p`,ra,u(i.$t(`dcwDetail.kw7ym9b148`))+` `+u(no.value.length)+` `+u(i.$t(`dcwDetail.k40bfz150`)),1),v(`table`,ia,[v(`tbody`,null,[(s(!0),h(d,null,o(no.value.slice(0,12),e=>(s(),h(`tr`,{key:e.id},[v(`td`,aa,u(e.at.slice(5,19)),1),v(`td`,null,u(e.param),1),v(`td`,null,u(e.nodeName),1),v(`td`,oa,u(e.eng),1),v(`td`,sa,` raw `+u(e.raw??`-`),1),v(`td`,null,[v(`span`,{class:c([`st-pill`,e.ok?`ok`:`alarm`])},u(e.ok?`ACK`:i.$t(`dcwDetail.k3yit7139`)),3)]),v(`td`,ca,u(e.recipeRunId?i.$t(`dcwDetail.k6vgks7181`,{p0:e.recipeRunId}):`手动`),1)]))),128))])])])):g(``,!0),Bo.value?(s(),h(`div`,{key:7,class:`modal-mask`,onClick:a[53]||=r(e=>Bo.value=!1,[`self`])},[v(`div`,la,[v(`h3`,ua,u(i.$t(`dcwDetail.k1efduyf118`)),1),v(`div`,da,[v(`label`,fa,[v(`span`,null,[f(u(i.$t(`dcwDetail.k1avjrl6119`)),1),a[70]||=v(`em`,null,`*`,-1)]),y(v(`input`,{"onUpdate:modelValue":a[50]||=e=>H.name=e,class:`inp`,placeholder:i.$t(`dcwDetail.k12c11vm014`)},null,8,pa),[[n,H.name]])]),v(`label`,ma,[v(`span`,null,u(i.$t(`dcwDetail.k40gkk096`)),1),y(v(`input`,{"onUpdate:modelValue":a[51]||=e=>H.description=e,class:`inp`,placeholder:i.$t(`dcwDetail.k1hxx8hy015`)},null,8,ha),[[n,H.description]])])]),Ho.value?(s(),h(`p`,ga,u(Ho.value),1)):g(``,!0),v(`div`,_a,[v(`button`,{class:`aw-pill outline`,onClick:a[52]||=e=>Bo.value=!1},u(i.$t(`dcwDetail.k3xdnn052`)),1),v(`button`,{class:`pill-btn`,disabled:Vo.value,onClick:Uo},u(Vo.value?i.$t(`dcwDetail.k1bg4759156`):i.$t(`dcwDetail.k1bg4kn6179`)),9,va)])])])):g(``,!0),l(S).error?(s(),h(`p`,ya,[f(u(l(S).error)+`(`,1),ne(p,{to:`/workshop`},{default:te(()=>[f(u(i.$t(`dcwDetail.k1bhhheq120`)),1)]),_:1}),a[71]||=f(`) `,-1)])):g(``,!0),v(`section`,ba,[v(`div`,xa,[v(`b`,null,u(i.$t(`dcwDetail.k1ledgt001`)),1),y(v(`select`,{"onUpdate:modelValue":a[54]||=e=>E.value=e,class:`inp`,onChange:Za},[v(`option`,Sa,u(i.$t(`dcwDetail.k1ledgs001`)),1),(s(!0),h(d,null,o(O.value,e=>(s(),h(`option`,{key:e.id,value:e.id},u(e.name),9,Ca))),128))],544),[[t,E.value]])]),D.value?(s(),h(d,{key:0},[v(`div`,wa,[v(`div`,Ta,[v(`small`,null,u(i.$t(`dcwDetail.k1ledgv001`)),1),v(`b`,Ea,u(D.value.current??`--`),1)]),v(`div`,Da,[v(`small`,null,u(i.$t(`dcwDetail.k1ledgv002`)),1),v(`b`,Oa,u(D.value.recipeTarget??`--`),1)]),v(`div`,ka,[v(`small`,null,u(i.$t(`dcwDetail.k1ledgv003`)),1),v(`b`,Aa,u(D.value.lastGood??`--`),1)]),v(`button`,{class:`mini-btn`,onClick:Za},u(i.$t(`dcwDetail.k1ledga001`)),1),v(`button`,{class:`mini-btn danger`,onClick:Qa},u(i.$t(`dcwDetail.k1ledga002`)),1)]),v(`div`,ja,[v(`div`,Ma,[v(`small`,Na,u(i.$t(`dcwDetail.k1ledgh001`)),1),v(`ul`,Pa,[(s(!0),h(d,null,o(D.value.journal,e=>(s(),h(`li`,{key:e.id},u(e.at.slice(5,16).replace(`T`,` `))+` [`+u(e.source)+`] `+u(e.prevValue??`?`)+` → `+u(e.newValue),1))),128))])]),v(`div`,Fa,[v(`small`,Ia,u(i.$t(`dcwDetail.k1ledgr001`)),1),v(`ul`,La,[(s(!0),h(d,null,o(D.value.records,e=>(s(),h(`li`,{key:e.id,class:`ledger-rec`},[v(`span`,{class:c([`rec-st`,e.status])},u(e.status),3),v(`span`,Ra,u(e.params[0]?.from??`?`)+` → `+u(e.params[0]?.to),1),v(`small`,null,u(e.judge?`${e.judge.verdict}(${e.judge.by})`:e.status===`open`?`open`:e.closedBy??``),1)]))),128))])])])],64)):g(``,!0)])]))}}}),[[`__scopeId`,`data-v-385b5f14`]]);export{za as default};
@@ -1 +0,0 @@
1
- import{C as e}from"./rqZ-1SoP.js";function t(){let{$http:t}=e();return t}export{t};
@@ -1 +0,0 @@
1
- import{C as e,H as t,St as n,Wt as r,b as i,et as a,f as o,g as s,h as c,lt as l,m as u,mt as d,nt as f,p,t as m,x as h}from"./BSCpFtzG.js";import{s as g}from"./C3tCneTM.js";import{n as _}from"./B5S_UyaC.js";import{n as v}from"./BeIfu4N3.js";import{t as y}from"./VLI2Zy4t.js";import{t as b}from"./D0fhp-Ga.js";import{t as x}from"./BN_PdN3J.js";import{r as S}from"./D-Ca4BGY.js";import{i as C}from"./Cn3J3NXR.js";import{t as w}from"./DzuC31-i.js";import{t as T}from"./DTYBfjRY.js";import{t as E}from"./6PZPfFcO.js";import{t as D}from"./ORt9oDIy2.js";import{t as O}from"./BcrN7QEl2.js";var k={class:`page-wrap`},A={class:`aw-page-head`},j={class:`sub`},M={class:`gate-title`},N={class:`gate-hint`},P=m(e({__name:`users`,setup(e){let{t:m}=v(),P=O(),F=d(!1),I=d([]),L=d(``),R=o(()=>P.authHeaders()),z=async()=>{if(P.isAdmin){F.value=!0;try{let e=await g(`/api/users`,{headers:R.value,query:{pageSize:100,keyword:L.value||void 0}});I.value=e.data?.items??[]}catch(e){S.error(e instanceof Error?e.message:m(`users.k1br33vc006`))}finally{F.value=!1}}};a(()=>P.isLoggedIn,e=>{e&&z()},{immediate:!0});let B={admin:`volcano`,editor:`blue`,user:`default`},V=o(()=>[{title:m(`users.name`),dataIndex:`name`,key:`name`},{title:m(`users.email`),dataIndex:`email`,key:`email`},{title:m(`users.role`),dataIndex:`role`,key:`role`,width:110},{title:m(`common.status`),dataIndex:`status`,key:`status`,width:90},{title:m(`users.created`),dataIndex:`createdAt`,key:`createdAt`,width:150},{title:m(`common.actions`),key:`action`,width:220}]);function H(e){return m(`users.role${e.charAt(0).toUpperCase()}${e.slice(1)}`)}let U=async(e,t)=>{try{await g(`/api/users/${e.id}`,{method:`PUT`,headers:R.value,body:{role:t}}),S.success(m(`users.krkb23h011`,{p0:e.name,p1:t})),z()}catch(e){S.error(e instanceof Error?e.message:m(`users.k1enhqn3007`))}},W=async e=>{let t=e.status===`active`?`disabled`:`active`;try{await g(`/api/users/${e.id}`,{method:`PUT`,headers:R.value,body:{status:t}}),S.success(m(`users.k1u7u12g012`,{p0:e.name,p1:m(t===`active`?`users.k3xhfg009`:`users.k3wsi1010`)})),z()}catch(e){S.error(e instanceof Error?e.message:m(`users.k1enhqn3007`))}},G=async e=>{try{await g(`/api/users/${e.id}`,{method:`DELETE`,headers:R.value}),S.success(m(`users.knh5f2r013`,{p0:e.name})),z()}catch(e){S.error(e instanceof Error?e.message:m(`users.k1bphrb3008`))}},K=e=>e.id===P.user?.id;return _({title:()=>m(`titles.users`)}),(e,a)=>{let o=w,d=C,g=E,_=x,v=y,S=T,O=D,R=b;return t(),s(`div`,k,[p(`div`,A,[p(`div`,null,[a[2]||=p(`p`,{class:`aw-kicker`},` agentworkshop / identity `,-1),p(`h1`,null,[i(r(n(m)(`users.title`))+` `,1),h(o,{color:`volcano`,class:`admin-tag`},{default:f(()=>[...a[1]||=[p(`span`,{class:`i-tabler-shield-check`},null,-1),i(` admin `,-1)]]),_:1})]),p(`p`,j,r(e.$t(`users.k1flpho5002`)),1)]),h(d,{value:n(L),"onUpdate:value":a[0]||=e=>l(L)?L.value=e:null,placeholder:n(m)(`users.search`),style:{width:`240px`},onSearch:z},null,8,[`value`,`placeholder`])]),n(P).isAdmin?(t(),u(g,{key:1,bordered:!1,class:`table-card`},{default:f(()=>[h(R,{"data-source":n(I),columns:n(V),loading:n(F),"row-key":`id`,size:`small`,pagination:!1},{bodyCell:f(({column:n,record:a})=>[n.key===`role`?(t(),u(o,{key:0,color:B[a.role]},{default:f(()=>[i(r(H(a.role)),1)]),_:2},1032,[`color`])):n.key===`status`?(t(),u(o,{key:1,color:a.status===`active`?`green`:`default`},{default:f(()=>[i(r(a.status===`active`?e.$t(`users.k3xhfg009`):e.$t(`users.k3wsi1010`)),1)]),_:2},1032,[`color`])):n.key===`action`?(t(),u(O,{key:2,size:`small`},{default:f(()=>[h(_,{value:a.role,size:`small`,style:{width:`92px`},disabled:K(a),options:[{value:`user`,label:`user`},{value:`editor`,label:`editor`},{value:`admin`,label:`admin`}],onChange:e=>U(a,e)},null,8,[`value`,`disabled`,`onChange`]),h(v,{size:`small`,type:`text`,disabled:K(a),onClick:e=>W(a)},{default:f(()=>[i(r(a.status===`active`?e.$t(`users.k3wsi1010`):e.$t(`users.k3xhfg009`)),1)]),_:2},1032,[`disabled`,`onClick`]),h(S,{title:e.$t(`users.k1jk2os9001`),disabled:K(a),onConfirm:e=>G(a)},{default:f(()=>[h(v,{size:`small`,type:`text`,danger:``,disabled:K(a)},{default:f(()=>[i(r(e.$t(`users.k3xakp005`)),1)]),_:1},8,[`disabled`])]),_:2},1032,[`title`,`disabled`,`onConfirm`])]),_:2},1024)):c(``,!0)]),_:1},8,[`data-source`,`columns`,`loading`])]),_:1})):(t(),u(g,{key:0,bordered:!1,class:`gate-card`},{default:f(()=>[a[3]||=p(`span`,{class:`i-tabler-lock gate-icon`},null,-1),p(`p`,M,r(e.$t(`users.kpdo6rc003`)),1),p(`p`,N,r(e.$t(`users.k1mue9bl004`)),1)]),_:1}))])}}}),[[`__scopeId`,`data-v-4f234dd7`]]);export{P as default};
@@ -1 +0,0 @@
1
- import{G as e,I as t,K as n,L as r,q as i}from"./rqZ-1SoP.js";import{C as a,F as o,G as s,H as c,Ht as l,K as u,O as d,St as f,U as p,Ut as m,Wt as h,a as g,b as _,et as v,f as y,g as b,gt as x,h as S,m as C,mt as w,nt as T,p as E,rt as D,t as O,x as k,y as A,z as j}from"./BSCpFtzG.js";import{d as M,p as N}from"./-6OnbLFb.js";import{i as P}from"./C3tCneTM.js";import{n as ee,r as te,t as F}from"./CbzsPO5H.js";import{t as ne}from"./D8CqF0yy.js";import{n as re}from"./BeIfu4N3.js";import{t as ie}from"./DpojD719.js";import{At as ae,Ct as I,d as oe,kt as L,n as R,nt as z,t as B,u as V}from"./BDUjyaF4.js";import{i as se}from"./DtBu71ev.js";import{t as H}from"./BfGc7TJp.js";import{t as ce}from"./VLI2Zy4t.js";import{t as le}from"./BN_PdN3J.js";import{h as U,r as ue}from"./D-Ca4BGY.js";import{a as W,i as de,n as fe,r as pe,t as me}from"./CKfhtOt7.js";import{t as G}from"./lO5tpDZ5.js";import{n as he}from"./D1z7i2UP.js";import{t as ge}from"./B7wL3pDk.js";import{t as _e}from"./Dy-mxvXY2.js";import{t as ve}from"./BSSUlJnx2.js";import{t as ye}from"./BcrN7QEl2.js";import{t as be}from"./C4OAdbVK2.js";import{t as xe}from"./G0qIw7Gq2.js";import{m as Se,p as Ce,t as we}from"./arUY5dyq2.js";import{t as Te}from"./DoTdlVVe2.js";var K=e=>{let{componentCls:t,colorBgContainer:n,colorBgBody:r,colorText:i}=e;return{[`${t}-sider-light`]:{background:n,[`${t}-sider-trigger`]:{color:i,background:n},[`${t}-sider-zero-width-trigger`]:{color:i,background:n,border:`1px solid ${r}`,borderInlineStart:0}}}},Ee=e=>{let{antCls:t,componentCls:n,colorText:r,colorTextLightSolid:i,colorBgHeader:a,colorBgBody:o,colorBgTrigger:s,layoutHeaderHeight:c,layoutHeaderPaddingInline:l,layoutHeaderColor:u,layoutFooterPadding:d,layoutTriggerHeight:f,layoutZeroTriggerSize:p,motionDurationMid:m,motionDurationSlow:h,fontSize:g,borderRadius:_}=e;return{[n]:L(L({display:`flex`,flex:`auto`,flexDirection:`column`,color:r,minHeight:0,background:o,"&, *":{boxSizing:`border-box`},[`&${n}-has-sider`]:{flexDirection:`row`,[`> ${n}, > ${n}-content`]:{width:0}},[`${n}-header, &${n}-footer`]:{flex:`0 0 auto`},[`${n}-header`]:{height:c,paddingInline:l,color:u,lineHeight:`${c}px`,background:a,[`${t}-menu`]:{lineHeight:`inherit`}},[`${n}-footer`]:{padding:d,color:r,fontSize:g,background:o},[`${n}-content`]:{flex:`auto`,minHeight:0},[`${n}-sider`]:{position:`relative`,minWidth:0,background:a,transition:`all ${m}, background 0s`,"&-children":{height:`100%`,marginTop:-.1,paddingTop:.1,[`${t}-menu${t}-menu-inline-collapsed`]:{width:`auto`}},"&-has-trigger":{paddingBottom:f},"&-right":{order:1},"&-trigger":{position:`fixed`,bottom:0,zIndex:1,height:f,color:i,lineHeight:`${f}px`,textAlign:`center`,background:s,cursor:`pointer`,transition:`all ${m}`},"&-zero-width":{"> *":{overflow:`hidden`},"&-trigger":{position:`absolute`,top:c,insetInlineEnd:-p,zIndex:1,width:p,height:p,color:i,fontSize:e.fontSizeXL,display:`flex`,alignItems:`center`,justifyContent:`center`,background:a,borderStartStartRadius:0,borderStartEndRadius:_,borderEndEndRadius:_,borderEndStartRadius:0,cursor:`pointer`,transition:`background ${h} ease`,"&::after":{position:`absolute`,inset:0,background:`transparent`,transition:`all ${h}`,content:`""`},"&:hover::after":{background:`rgba(255, 255, 255, 0.2)`},"&-right":{insetInlineStart:-p,borderStartStartRadius:_,borderStartEndRadius:0,borderEndEndRadius:0,borderEndStartRadius:_}}}}},K(e)),{"&-rtl":{direction:`rtl`}})}},De=oe(`Layout`,e=>{let{colorText:t,controlHeightSM:n,controlHeight:r,controlHeightLG:i,marginXXS:a}=e,o=i*1.25;return[Ee(V(e,{layoutHeaderHeight:r*2,layoutHeaderPaddingInline:o,layoutHeaderColor:t,layoutFooterPadding:`${n}px ${o}px`,layoutTriggerHeight:i+a*2,layoutZeroTriggerSize:i}))]},e=>{let{colorBgLayout:t}=e;return{colorBgHeader:`#001529`,colorBgBody:t,colorBgTrigger:`#002140`}}),q=()=>({prefixCls:String,hasSider:{type:Boolean,default:void 0},tagName:String});function J(e){let{suffixCls:t,tagName:n,name:r}=e;return e=>a({compatConfig:{MODE:3},name:r,props:q(),setup(r,i){let{slots:a}=i,{prefixCls:o}=R(t,r);return()=>{let t=L(L({},r),{prefixCls:o.value,tagName:n});return k(e,t,a)}}})}var Y=a({compatConfig:{MODE:3},props:q(),setup(e,t){let{slots:n}=t;return()=>k(e.tagName,{class:e.prefixCls},n)}}),Oe=a({compatConfig:{MODE:3},inheritAttrs:!1,props:q(),setup(e,t){let{slots:n,attrs:r}=t,{prefixCls:i,direction:a}=R(``,e),[o,s]=De(i),c=w([]);p(W,{addSider:e=>{c.value=[...c.value,e]},removeSider:e=>{c.value=c.value.filter(t=>t!==e)}});let l=y(()=>{let{prefixCls:t,hasSider:n}=e;return{[s.value]:!0,[`${t}`]:!0,[`${t}-has-sider`]:typeof n==`boolean`?n:c.value.length>0,[`${t}-rtl`]:a.value===`rtl`}});return()=>{let{tagName:t}=e;return o(k(t,L(L({},r),{class:[l.value,r.class]}),n))}}}),ke=J({suffixCls:`layout`,tagName:`section`,name:`ALayout`})(Oe),X=J({suffixCls:`layout-header`,tagName:`header`,name:`ALayoutHeader`})(Y),Z=J({suffixCls:`layout-footer`,tagName:`footer`,name:`ALayoutFooter`})(Y),Q=J({suffixCls:`layout-content`,tagName:`main`,name:`ALayoutContent`})(Y),Ae={icon:{tag:`svg`,attrs:{viewBox:`0 0 1024 1024`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0z`}}]},name:`bars`,theme:`outlined`};function je(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:Object(arguments[t]),r=Object.keys(n);typeof Object.getOwnPropertySymbols==`function`&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){Me(e,t,n[t])})}return e}function Me(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ne=function(e,t){var n=je({},e,t.attrs);return k(U,je({},n,{icon:Ae}),null)};Ne.displayName=`BarsOutlined`,Ne.inheritAttrs=!1;var Pe={xs:`479.98px`,sm:`575.98px`,md:`767.98px`,lg:`991.98px`,xl:`1199.98px`,xxl:`1599.98px`,xxxl:`1999.98px`},Fe=()=>({prefixCls:String,collapsible:{type:Boolean,default:void 0},collapsed:{type:Boolean,default:void 0},defaultCollapsed:{type:Boolean,default:void 0},reverseArrow:{type:Boolean,default:void 0},zeroWidthTriggerStyle:{type:Object,default:void 0},trigger:B.any,width:B.oneOfType([B.number,B.string]),collapsedWidth:B.oneOfType([B.number,B.string]),breakpoint:B.oneOf(z(`xs`,`sm`,`md`,`lg`,`xl`,`xxl`,`xxxl`)),theme:B.oneOf(z(`light`,`dark`)).def(`dark`),onBreakpoint:Function,onCollapse:Function}),Ie=(()=>{let e=0;return function(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:``;return e+=1,`${t}${e}`}})(),$=a({compatConfig:{MODE:3},name:`ALayoutSider`,inheritAttrs:!1,props:H(Fe(),{collapsible:!1,defaultCollapsed:!1,reverseArrow:!1,width:200,collapsedWidth:80}),emits:[`breakpoint`,`update:collapsed`,`collapse`],setup(e,t){let{emit:n,attrs:r,slots:i}=t,{prefixCls:a}=R(`layout-sider`,e),s=d(W,void 0),c=x(!!(e.collapsed===void 0?e.defaultCollapsed:e.collapsed)),l=x(!1);v(()=>e.collapsed,()=>{c.value=!!e.collapsed}),p(de,c);let u=(t,r)=>{e.collapsed===void 0&&(c.value=t),n(`update:collapsed`,t),n(`collapse`,t,r)},f=x(e=>{l.value=e.matches,n(`breakpoint`,e.matches),c.value!==e.matches&&u(e.matches,`responsive`)}),m;function h(e){return f.value(e)}let g=Ie(`ant-sider-`);s&&s.addSider(g),j(()=>{v(()=>e.breakpoint,()=>{try{m?.removeEventListener(`change`,h)}catch{m?.removeListener(h)}if(typeof window<`u`){let{matchMedia:t}=window;if(t&&e.breakpoint&&e.breakpoint in Pe){m=t(`(max-width: ${Pe[e.breakpoint]})`);try{m.addEventListener(`change`,h)}catch{m.addListener(h)}h(m)}}},{immediate:!0})}),o(()=>{try{m?.removeEventListener(`change`,h)}catch{m?.removeListener(h)}s&&s.removeSider(g)});let _=()=>{u(!c.value,`clickTrigger`)};return()=>{let t=a.value,{collapsedWidth:n,width:o,reverseArrow:s,zeroWidthTriggerStyle:u,trigger:d=i.trigger?.call(i),collapsible:f,theme:p}=e,m=c.value?n:o,h=G(m)?`${m}px`:String(m),g=parseFloat(String(n||0))===0?k(`span`,{onClick:_,class:I(`${t}-zero-width-trigger`,`${t}-zero-width-trigger-${s?`right`:`left`}`),style:u},[d||k(Ne,null,null)]):null,v={expanded:k(s?he:ge,null,null),collapsed:k(s?ge:he,null,null)}[c.value?`collapsed`:`expanded`],y=d===null?null:g||k(`div`,{class:`${t}-trigger`,onClick:_,style:{width:h}},[d||v]),b=[r.style,{flex:`0 0 ${h}`,maxWidth:h,minWidth:h,width:h}],x=I(t,`${t}-${p}`,{[`${t}-collapsed`]:!!c.value,[`${t}-has-trigger`]:f&&d!==null&&!g,[`${t}-below`]:!!l.value,[`${t}-zero-width`]:parseFloat(h)===0},r.class);return k(`aside`,ae(ae({},r),{},{class:x,style:b}),[k(`div`,{class:`${t}-children`},[i.default?.call(i)]),f||l.value&&g?y:null])}}}),Le=X,Re=Z,ze=$,Be=Q,Ve=L(ke,{Header:X,Footer:Z,Content:Q,Sider:$,install:e=>(e.component(ke.name,ke),e.component(X.name,X),e.component(Z.name,Z),e.component($.name,$),e.component(Q.name,Q),e)}),He=[`width`,`height`],Ue=Object.assign(a({__name:`AwLogo`,props:{size:{default:32}},setup(e){return(t,n)=>(c(),b(`svg`,{width:e.size,height:e.size,viewBox:`0 0 64 64`,fill:`none`,"aria-hidden":`true`},[...n[0]||=[A(`<defs><linearGradient id="aw-logo-gradient" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#35e0a0"></stop><stop offset="1" stop-color="#41c8f4"></stop></linearGradient></defs><path d="M32 4 L56 18 V46 L32 60 L8 46 V18 Z" stroke="url(#aw-logo-gradient)" stroke-width="4" stroke-linejoin="round"></path><path d="M32 15 L46.7 23.5 V40.5 L32 49 L17.3 40.5 V23.5 Z" stroke="#41c8f4" stroke-opacity="0.45" stroke-width="1.8" stroke-dasharray="4 3"></path><path d="M32 23 L25 38 M32 23 L39 38 M25 38 L39 38" stroke="#35e0a0" stroke-width="1.8" stroke-opacity="0.75"></path><circle cx="32" cy="23" r="3.4" fill="#35e0a0"></circle><circle cx="25" cy="38" r="3.4" fill="#41c8f4"></circle><circle cx="39" cy="38" r="3.4" fill="#41c8f4"></circle>`,7)]],8,He))}}),{__name:`AwLogo`}),We={class:`logo`},Ge={class:`logo-mark`,"aria-hidden":`true`},Ke={class:`logo-text`},qe={class:`logo-title`},Je={class:`app-menu`},Ye={class:`menu-group-label`},Xe={class:`menu-group-text`},Ze={class:`menu-group-sep`,"aria-hidden":`true`},Qe=[`title`,`onClick`],$e={class:`sider-footer`},et={class:`footer-line`},tt=Object.assign(O(a({__name:`AppSidebar`,setup(n){let r=ye(),{t:i}=re(),a=N(),o=F(),u=ee(),d=y(()=>[{id:`console`,label:i(`menu.groups.console`),items:[{key:`/`,icon:`i-tabler-layout-dashboard`,label:i(`menu.dashboard`),motion:`im-pop`},{key:`/workshop`,icon:`i-tabler-box`,label:i(`menu.workshop`),motion:`im-pop`},{key:`/town`,icon:`i-tabler-map-2`,label:i(`menu.town`),motion:`im-pop`},{key:`/daq`,icon:`i-tabler-activity`,label:i(`menu.daq`),motion:`im-pop`},{key:`/dcw`,icon:`i-tabler-settings-automation`,label:i(`menu.dcw`),motion:`im-pop`}]},{id:`ops`,label:i(`menu.groups.ops`),items:[{key:`/monitor`,icon:`i-tabler-cpu`,label:i(`menu.monitor`),motion:`im-pulse`},{key:`/logs`,icon:`i-tabler-list-details`,label:i(`menu.logs`),motion:`im-pop`}]},{id:`system`,label:i(`menu.groups.system`),items:[{key:`/tokens`,icon:`i-tabler-key`,label:i(`menu.tokens`),motion:`im-nudge-up`},{key:`/users`,icon:`i-tabler-users-group`,label:i(`menu.users`),motion:`im-pop`},{key:`/permissions`,icon:`i-tabler-shield-lock`,label:i(`menu.permissions`),motion:`im-pop`,adminOnly:!0},{key:`/plugins`,icon:`i-tabler-puzzle`,label:i(`menu.plugins`),motion:`im-pop`},{key:`/settings`,icon:`i-tabler-settings`,label:i(`menu.settings`),motion:`im-rotate`}]}].map(e=>({...e,items:e.items.filter(e=>!e.adminOnly||r.isAdmin)})).filter(e=>e.items.length>0)),p=e=>e===`/`?a.path===`/`:a.path.startsWith(e),m=e=>{p(e)||M(e)};return(n,r)=>{let i=Ue,a=ze;return c(),C(a,{collapsed:f(u).sidebarCollapsed,"onUpdate:collapsed":r[0]||=e=>f(u).sidebarCollapsed=e,trigger:null,collapsible:``,breakpoint:`lg`,width:228,"collapsed-width":64,class:`app-sider`},{default:T(()=>[E(`div`,We,[E(`div`,Ge,[k(i,{size:30})]),k(t,{name:`slide-fade`},{default:T(()=>[D(E(`div`,Ke,[E(`span`,qe,h(f(o).name),1),r[1]||=E(`span`,{class:`logo-sub`},`digital twin`,-1)],512),[[e,!f(u).sidebarCollapsed]])]),_:1})]),E(`nav`,Je,[(c(!0),b(g,null,s(f(d),t=>(c(),b(`div`,{key:t.id,class:`menu-group`},[D(E(`div`,Ye,[E(`span`,Xe,h(t.label),1),r[2]||=E(`span`,{class:`menu-group-rule`,"aria-hidden":`true`},null,-1)],512),[[e,!f(u).sidebarCollapsed]]),D(E(`div`,Ze,null,512),[[e,f(u).sidebarCollapsed]]),(c(!0),b(g,null,s(t.items,t=>(c(),b(`button`,{key:t.key,type:`button`,class:l([`menu-item im`,{active:p(t.key)}]),title:f(u).sidebarCollapsed?t.label:void 0,onClick:e=>m(t.key)},[E(`span`,{class:l([`menu-icon`,[t.icon,t.motion]])},null,2),D(E(`span`,{class:`menu-label`},h(t.label),513),[[e,!f(u).sidebarCollapsed]])],10,Qe))),128))]))),128))]),D(E(`div`,$e,[r[4]||=E(`div`,{class:`footer-rule`},null,-1),E(`div`,et,[E(`span`,null,`v`+h(f(o).version),1),r[3]||=E(`span`,{class:`sep`},`/`,-1),E(`span`,null,h(f(o).mode),1)])],512),[[e,!f(u).sidebarCollapsed]])]),_:1},8,[`collapsed`])}}}),[[`__scopeId`,`data-v-7a1c9e29`]]),{__name:`AppSidebar`}),nt=P(`app.routeTrail`,()=>{let e=w([]);function t(t){if(!t||t.startsWith(`/api`))return;let n=e.value.filter(e=>e.path!==t);e.value=[...n,{path:t,at:Date.now()}].slice(-8)}function n(t){let n=e.value.findIndex(e=>e.path===t);return n>=0&&(e.value=e.value.filter(e=>e.path!==t)),n}function r(){e.value=[]}return{waypoints:e,visit:t,remove:n,clear:r}},{persist:{pick:[`waypoints`],storage:te.localStorage()}});function rt(){let{t:e}=re(),t=be(),n={"/":{key:`menu.dashboard`,icon:`i-tabler-layout-dashboard`},"/workshop":{key:`menu.workshop`,icon:`i-tabler-box`},"/workshop/agents":{key:`meta.agents`,icon:`i-tabler-users`},"/workshop/teams":{key:`meta.teams`,icon:`i-tabler-users-group`},"/workshop/channel-templates":{key:`meta.ctpl`,icon:`i-tabler-layout-grid-add`},"/town":{key:`menu.town`,icon:`i-tabler-map-2`},"/tokens":{key:`menu.tokens`,icon:`i-tabler-key`},"/daq":{key:`menu.daq`,icon:`i-tabler-activity`},"/dcw":{key:`menu.dcw`,icon:`i-tabler-settings-automation`},"/logs":{key:`menu.logs`,icon:`i-tabler-list-details`},"/permissions":{key:`menu.permissions`,icon:`i-tabler-shield-lock`},"/plugins":{key:`menu.plugins`,icon:`i-tabler-puzzle`},"/users":{key:`menu.users`,icon:`i-tabler-users-group`},"/monitor":{key:`menu.monitor`,icon:`i-tabler-cpu`},"/settings":{key:`menu.settings`,icon:`i-tabler-settings`}};return{metaFor:r=>{let i=n[r];if(i)return{title:e(i.key),icon:i.icon};let a=r.match(/^\/workshop\/w\/([^/]+)$/);if(a){let n=a[1];return{title:t.workspaces.find(e=>e.id===n)?.name??`${e(`header.workspace`)} ${n.slice(0,6)}`,icon:`i-tabler-console`}}let o=r.split(`/`).filter(Boolean).pop()??`·`;return{title:o.charAt(0).toUpperCase()+o.slice(1),icon:`i-tabler-point`}}}}var it={class:`header-left`},at=[`aria-label`],ot={class:`node-title`},st=[`aria-label`],ct=[`title`,`onClick`,`onKeydown`],lt={class:`node-title`},ut=[`aria-label`,`title`,`onClick`],dt={class:`header-right`},ft=[`title`],pt={class:`hitl-count`},mt={class:`hitl-menu`},ht={class:`hitl-menu-title`},gt=[`onClick`],_t={class:`hitl-item-top`},vt={class:`hitl-item-agent`},yt={class:`hitl-item-kind`},bt={class:`hitl-item-title`},xt=[`title`],St={class:`user-chip`},Ct={class:`user-initial aw-avatar`},wt={class:`user-meta`},Tt={class:`user-name`},Et={class:`user-role`},Dt=Object.assign(O(a({__name:`AppHeader`,setup(e){let{t,locale:a,locales:u,setLocale:d}=re(),p=ee(),m=N(),x=nt(),D=ye(),{metaFor:O}=rt(),A=Ce(),P=we(),te=()=>{D.isLoggedIn&&P.ensureConnected()};v(()=>D.token,e=>{e?(te(),A.loadSnapshot()):A.clear()},{immediate:!0});let F=new Set([`codex-approval`,`opencode-permission`,`dsh-permission`]),ae=e=>{switch(e){case`omp-dialog`:return t(`appHeader.hitlKindOmp`);case`dcw-approval`:return t(`appHeader.hitlKindDcw`);case`codex-approval`:return t(`appHeader.hitlKindCodex`);case`opencode-permission`:return t(`appHeader.hitlKindOpencode`);case`dsh-permission`:return t(`appHeader.hitlKindDsh`);default:return e}},I=e=>{M({path:`/monitor`,query:{agentId:e.agentId,channelId:e.channelId}})},oe=Te(),L=w(null),R=async(e,t)=>{L.value=`${e.kind}:${e.id}`;try{await oe.respondHitl({kind:e.kind,id:e.id,confirmed:t,cancelled:!t}),await A.loadSnapshot()}catch(e){ue.error(xe(e))}finally{L.value=null}},z=y(()=>u.value.map(e=>({label:e.name,value:e.code}))),B=e=>{e!=null&&(localStorage.setItem(`aw.locale`,String(e)),d(String(e)),window.location.reload())},V=w(!1),H=w(!1),U=null;v(()=>m.path,()=>{x.visit(m.path),H.value=!1,requestAnimationFrame(()=>{H.value=!0,U&&clearTimeout(U),U=setTimeout(()=>{H.value=!1},620)})},{immediate:!1}),j(()=>{V.value=!0,x.visit(m.path)}),o(()=>{U&&clearTimeout(U)});let W=e=>{e!==m.path&&M(e)},de=e=>{let t=x.remove(e);if(e!==m.path)return;let n=x.waypoints,r=n[Math.min(Math.max(t-1,0),Math.max(n.length-1,0))]?.path??`/`;M(r)},G=w(!1);function he(){document.fullscreenElement?(document.exitFullscreen(),G.value=!1):(document.documentElement.requestFullscreen(),G.value=!0)}let ge=y(()=>(D.user?.name??`?`).trim().charAt(0).toUpperCase()),ve=y(()=>D.user?.name??t(`header.guest`)),be=y(()=>D.isLoggedIn?D.user?.role??`user`:`anonymous`),K=Se(),Ee=y(()=>K.state!==`closed`||K.lastDataAt>0),De=y(()=>K.state===`open`?K.pendingReplay?`syncing`:`live`:K.state===`connecting`?`syncing`:`down`),q=y(()=>K.state===`open`?K.pendingReplay?t(`appHeader.kwsdot0002`):t(`appHeader.kwsdot0001`):K.state===`connecting`?t(`appHeader.kwsdot0003`):t(`appHeader.kwsdot0004`)),J=y(()=>{let e=[{key:`tokens`,icon:`i-tabler-key`,label:t(`menu.tokens`)},{key:`settings`,icon:`i-tabler-adjustments`,label:t(`menu.settings`)}];return D.isLoggedIn&&(e.push({key:`d-logout`,label:``,divider:!0}),e.push({key:`logout`,icon:`i-tabler-logout`,label:t(`header.logout`),danger:!0})),e}),Y=async({key:e})=>{e===`settings`?M(`/settings`):e===`tokens`?M(`/tokens`):e===`logout`&&(await D.logout(),M(`/workshop`))};return(e,o)=>{let u=ne,d=ce,v=_e,y=ie,w=se,D=le,j=fe,M=pe,N=me,P=Le;return c(),C(P,{class:`app-header app-header-glass`},{default:T(()=>[E(`div`,it,[E(`button`,{class:`collapse-btn`,"aria-label":f(p).sidebarCollapsed?f(t)(`header.expand`):f(t)(`header.collapse`),onClick:o[0]||=e=>f(p).toggleSidebar()},[...o[3]||=[E(`span`,{class:`i-tabler-menu-2`},null,-1)]],8,at),o[6]||=E(`span`,{class:`rail-mark i-tabler-route`},null,-1),k(u,{class:l([`trail-node aml-entry`,{active:f(m).path.startsWith(`/aml`)}]),to:`/aml`,title:f(t)(`aml.k1amlx159`)},{default:T(()=>[o[4]||=E(`span`,{class:`node-icon i-tabler-flask`},null,-1),E(`span`,ot,h(f(t)(`aml.k1amlx158`)),1)]),_:1},8,[`class`,`title`]),E(`nav`,{class:`trail`,"aria-label":f(t)(`header.trail`)},[k(r,{name:`stamp`,tag:`div`,class:`trail-row`},{default:T(()=>[f(V)?(c(!0),b(g,{key:0},s(f(x).waypoints,(t,r)=>(c(),b(g,{key:t.path},[r>0?(c(),b(`span`,{key:`link-${t.path}`,class:`trail-link`,"aria-hidden":`true`})):S(``,!0),E(`div`,{class:l([`trail-node`,{active:t.path===f(m).path}]),role:`button`,tabindex:`0`,title:f(O)(t.path).title,onClick:e=>W(t.path),onKeydown:n(i(e=>W(t.path),[`prevent`]),[`enter`])},[E(`span`,{class:l([`node-icon`,f(O)(t.path).icon])},null,2),E(`span`,lt,h(f(O)(t.path).title),1),E(`button`,{class:`node-close`,"aria-label":e.$t(`appHeader.kzwjv99001`,{p0:f(O)(t.path).title}),title:e.$t(`appHeader.kzwjv99001`,{p0:f(O)(t.path).title}),onClick:i(e=>de(t.path),[`stop`])},[...o[5]||=[E(`span`,{class:`i-tabler-x`},null,-1)]],8,ut)],42,ct)],64))),128)):S(``,!0)]),_:1})],8,st)]),E(`div`,dt,[k(y,null,{default:T(()=>[f(A).count>0?(c(),C(v,{key:0,placement:`bottomRight`},{overlay:T(()=>[E(`div`,mt,[E(`div`,ht,h(f(t)(`appHeader.hitlBadge`))+` · `+h(f(A).count),1),(c(!0),b(g,null,s(f(A).items,e=>(c(),b(`button`,{key:`${e.kind}:${e.id}`,class:`hitl-item`,onClick:t=>I(e)},[E(`span`,_t,[E(`span`,vt,h(e.agentName),1),E(`span`,yt,h(ae(e.kind)),1)]),E(`span`,bt,h(e.title),1),f(F).has(e.kind)?(c(),b(`span`,{key:0,class:`hitl-item-actions`,onClick:o[1]||=i(()=>{},[`stop`])},[k(d,{size:`small`,type:`primary`,loading:f(L)===`${e.kind}:${e.id}`,onClick:t=>R(e,!0)},{default:T(()=>[_(h(f(t)(`appHeader.hitlApprove`)),1)]),_:1},8,[`loading`,`onClick`]),k(d,{size:`small`,danger:``,disabled:f(L)===`${e.kind}:${e.id}`,onClick:t=>R(e,!1)},{default:T(()=>[_(h(f(t)(`appHeader.hitlReject`)),1)]),_:1},8,[`disabled`,`onClick`])])):S(``,!0)],8,gt))),128))])]),default:T(()=>[E(`button`,{class:`icon-btn hitl-bell`,title:f(t)(`appHeader.hitlBadge`)},[o[7]||=E(`span`,{class:`i-tabler-bell-ringing`},null,-1),E(`span`,pt,h(f(A).count),1)],8,ft)]),_:1})):S(``,!0)]),_:1}),f(Ee)?(c(),b(`span`,{key:0,class:l([`ws-dot`,f(De)]),title:f(q)},null,10,xt)):S(``,!0),k(w,{title:f(t)(`header.fullscreen`)},{default:T(()=>[E(`button`,{class:`icon-btn`,onClick:he},[E(`span`,{class:l([`i-tabler-arrows-maximize`,{hidden:f(G)}])},null,2),E(`span`,{class:l([`i-tabler-arrows-minimize`,{hidden:!f(G)}])},null,2)])]),_:1},8,[`title`]),k(D,{id:`hdr-locale`,value:f(a),size:`middle`,options:f(z),class:`lang-select`,onChange:B},null,8,[`value`,`options`]),k(w,{title:f(p).isDark?f(t)(`common.light`):f(t)(`common.dark`)},{default:T(()=>[E(`button`,{class:`icon-btn`,onClick:o[2]||=e=>f(p).toggleDark()},[E(`span`,{class:l([`i-tabler-sun-high`,{hidden:f(p).isDark}])},null,2),E(`span`,{class:l([`i-tabler-moon-stars`,{hidden:!f(p).isDark}])},null,2)])]),_:1},8,[`title`]),k(v,null,{overlay:T(()=>[k(N,{onClick:Y},{default:T(()=>[(c(!0),b(g,null,s(f(J),e=>(c(),b(g,{key:e.key},[e.divider?(c(),C(j,{key:0})):(c(),C(M,{key:e.key,danger:e.danger},{default:T(()=>[E(`span`,{class:l([e.icon,`mr-2`])},null,2),_(` `+h(e.label),1)]),_:2},1032,[`danger`]))],64))),128))]),_:1})]),default:T(()=>[E(`div`,St,[k(y,null,{fallback:T(()=>[...o[8]||=[E(`span`,{class:`user-initial aw-avatar`},`·`,-1),E(`span`,{class:`user-meta`},[E(`span`,{class:`user-name`},`·`),E(`span`,{class:`user-role`},`·`)],-1)]]),default:T(()=>[E(`span`,Ct,h(f(ge)),1),E(`span`,wt,[E(`span`,Tt,h(f(ve)),1),E(`span`,Et,h(f(be)),1)])]),_:1})])]),_:1})]),E(`span`,{class:l([`plotter-line`,{run:f(H)}]),"aria-hidden":`true`},null,2)]),_:1})}}}),[[`__scopeId`,`data-v-25e1a1fc`]]),{__name:`AppHeader`}),Ot={class:`footer-title aw-serif-accent`},kt=O(a({__name:`default`,setup(e){let{token:t}=ve.useToken(),n=F();return(e,r)=>{let i=tt,a=Dt,o=Be,s=Re,l=Ve;return c(),C(l,{class:`app-layout`},{default:T(()=>[k(i),k(l,{class:`app-main`,style:m({background:`transparent`,"--app-bg-container":f(t)?.colorBgContainer,"--app-bg-layout":f(t)?.colorBgLayout,"--app-text":f(t)?.colorText,"--app-text-secondary":f(t)?.colorTextSecondary,"--app-border":f(t)?.colorBorderSecondary,"--app-fill":f(t)?.colorFillQuaternary,"--app-header-h":`56px`,"--app-footer-h":`46px`})},{default:T(()=>[k(a),k(o,{class:`app-content`},{default:T(()=>[u(e.$slots,`default`,{},void 0,!0)]),_:3}),k(s,{class:`app-footer`,style:m({color:f(t)?.colorTextSecondary})},{default:T(()=>[E(`span`,Ot,h(f(n).title),1),r[0]||=E(`span`,{class:`sep`},`/`,-1),E(`span`,null,`v`+h(f(n).version),1),r[1]||=E(`span`,{class:`sep`},`/`,-1),E(`span`,null,`mode=`+h(f(n).mode),1)]),_:1},8,[`style`])]),_:3},8,[`style`]),r[2]||=E(`span`,{class:`aw-noise`,"aria-hidden":`true`},null,-1)]),_:3})}}}),[[`__scopeId`,`data-v-05636ece`]]);export{kt as default};
@@ -1 +0,0 @@
1
- import{kt as e}from"./BDUjyaF4.js";var t=(t,n)=>{let r=e({},t);return Object.keys(n).forEach(e=>{let t=r[e];if(t)t.type||t.default?t.default=n[e]:t.def?t.def(n[e]):r[e]={type:t,default:n[e]};else throw Error(`not have ${e} prop`)}),r};export{t};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./B7gZokg82.js","./BBrRELH32.js","./CWKEp1wx2.js","./BFjGV-RV2.js","./RYFtK4qZ2.js","./BGkumHZ32.js"])))=>i.map(i=>d[i]);
2
- import{G as e,I as t,K as n,U as r,W as i,q as a}from"./rqZ-1SoP.js";import{C as o,F as s,G as c,H as l,Ht as u,M as d,St as f,Ut as p,Wt as m,a as h,b as g,bt as _,dt as v,et as y,f as b,ft as x,g as S,gt as C,h as w,it as T,lt as E,m as ee,mt as D,nt as te,ot as ne,p as O,pt as re,rt as k,t as A,vt as j,w as M,x as ie,y as ae,z as oe}from"./BSCpFtzG.js";import{t as se}from"./HclGiUj8.js";import{n as ce}from"./BeIfu4N3.js";import{t as le}from"./DXRZPxGs.js";import{t as ue}from"./BcrN7QEl2.js";import{t as de}from"./BZGNTgTQ2.js";import{t as fe}from"./BBrRELH32.js";import{C as pe,L as me,N,O as he,St as P,_ as ge,b as _e,c as ve,dt as ye,et as be,v as xe,y as Se,z as F}from"./BFjGV-RV2.js";import{t as Ce}from"./C4OAdbVK2.js";import{t as I}from"./G0qIw7Gq2.js";import{n as we,t as Te}from"./arUY5dyq2.js";import{t as Ee}from"./36oeS8_R2.js";import{r as De,t as Oe}from"./Lp7Ll94I.js";import{t as ke}from"./Bc0AmjfT.js";import{t as Ae}from"./Ct-WOVr4.js";import{n as L}from"./DeYsUzhr.js";var je=`__characterAssets`;function Me(e){return{id:e.id,name:e.name,file:e.file,frames:e.sheet?.frames??4,frameWidth:e.sheet?.frameWidth??48,frameHeight:e.sheet?.frameHeight??88,kind:e.kind===`glb`?`glb`:e.kind===`dev`?`dev`:`sheet`,builtin:e.author===`system`,applied:(e.appliedTo?.length??0)>0}}function R(){let e=[],t=[{id:`knight`,name:`灰羽骑士`,file:`/assets/game/character/knight.png`,frames:4,frameWidth:48,frameHeight:88,kind:`sheet`,builtin:!0,applied:!1},{id:`mage`,name:`紫晶法师`,file:`/assets/game/character/mage.png`,frames:4,frameWidth:48,frameHeight:88,kind:`sheet`,builtin:!0,applied:!1},{id:`bot`,name:`青枢机械`,file:`/assets/game/character/bot.png`,frames:4,frameWidth:48,frameHeight:88,kind:`sheet`,builtin:!0,applied:!1},{id:`hero-3d`,name:`标准员工模型`,file:`/assets/game/character/hero-3d.glb`,frames:1,frameWidth:0,frameHeight:0,kind:`glb`,builtin:!0,applied:!1,hint:`默认员工 3D 模型`},{id:`yangyang-walk`,name:`杨杨(走路)`,file:`/assets/game/character/yangyang-walk.glb`,frames:1,frameWidth:0,frameHeight:0,kind:`glb`,builtin:!0,applied:!1,hint:`自定义角色:骨骼走路动画(剪辑 WALK;文件较大,建议少量绑定)`},{id:`device-3d`,name:`工业泵设备`,file:`/assets/game/character/device-3d.glb`,frames:1,frameWidth:0,frameHeight:0,kind:`dev`,builtin:!0,applied:!1,hint:`数字孪生实体模型(拖入场景生成设备)`}],n=[];try{let e=Object.assign({});for(let[t,r]of Object.entries(e)){let e=t.split(`/`).pop()??``,i=`dev-folder-`+e.replace(/\.glb$/i,``),a=r.replace(/^\/public\//,`/`);n.push({id:i,name:e.replace(/\.glb$/i,``).replace(/[-_]/g,` `),file:a,frames:1,frameWidth:0,frameHeight:0,kind:`dev`,builtin:!0,applied:!1,hint:`设备实体(拖入场景生成数字孪生)`})}}catch{}let r=(e=!0)=>{let t=typeof document<`u`?document.cookie.match(/(?:^|;\s*)token=([^;]+)/)?.[1]??``:``,n={},r=t||``;return r&&(n.authorization=`Bearer ${decodeURIComponent(r)}`),e&&(n[`content-type`]=`application/json`),n},i=x({models:e,loaded:!1,loading:!1,error:``,async load(){if(!(i.loading||i.loaded)){i.loading=!0;try{let[e,a]=await Promise.allSettled([fetch(`/api/workshop/assets/character`,{headers:r()}),fetch(`/api/workshop/assets/devices`,{headers:r()})]),o=e.status===`fulfilled`?await e.value.json().catch(()=>({})):{},s=a.status===`fulfilled`?await a.value.json().catch(()=>({})):{},c=o?.data?.assets??[],l=(s?.data?.devices??[]).map(e=>({id:e.id,name:e.name,file:e.file,frames:1,frameWidth:0,frameHeight:0,kind:`dev`,builtin:!0,applied:!1,hint:`设备实体(拖入场景生成数字孪生)`,hFactor:typeof e.defaultScale==`number`&&e.defaultScale>0?e.defaultScale:1})),u=new Set(t.map(e=>e.file)),d=(s?.data?.characters??[]).filter(e=>!u.has(e.file)).map(e=>({id:e.id,name:e.name,file:e.file,frames:1,frameWidth:0,frameHeight:0,kind:`glb`,builtin:!0,applied:!1,hint:`角色 3D 模型(在频道成员管理中设置)`})),f=[],p=new Set;for(let e of c)f.push(Me(e)),p.add(e.id);for(let e of l)p.has(e.id)||(f.push(e),p.add(e.id));for(let e of d)p.has(e.id)||(f.push(e),p.add(e.id));for(let e of t)p.has(e.id)||f.push(e);for(let e of n)p.has(e.id)||f.push(e);i.models.splice(0,i.models.length,...f),i.loaded=!0,i.error=``}catch(e){i.loaded=!1,i.error=I(e)}finally{i.loading=!1}}},byId(t){return e.find(e=>e.id===t)},async upload(e,t){let n=new FormData;n.append(`file`,e),n.append(`name`,t.name??e.name.replace(/\.[^.]+$/,``)),n.append(`workspaceId`,t.workspaceId??``),n.append(`kind`,t.kind??`sheet`),n.append(`frameWidth`,String(t.frameWidth??48)),n.append(`frameHeight`,String(t.frameHeight??88)),n.append(`frames`,String(t.frames??4));let a=await fetch(`/api/workshop/assets/character`,{method:`POST`,headers:r(!1),body:n}),o=await a.json().catch(()=>({}));if(!a.ok||!o?.data?.asset)throw Error(o?.message??`上传失败`);return i.loaded=!1,await i.load(),Me(o.data.asset)},async remove(e){let t=await fetch(`/api/workshop/assets/character/${e}`,{method:`DELETE`,headers:r()}),n=await t.json().catch(()=>({}));if(!t.ok)throw Error(n?.message??`删除失败`);return i.loaded=!1,await i.load(),{used:n?.data?.used??0}},async uploadDevice(e,t){let n=new FormData;n.append(`file`,e),t&&n.append(`name`,t);let a=await fetch(`/api/workshop/assets/devices`,{method:`POST`,headers:r(!1),body:n}),o=await a.json().catch(()=>({}));if(!a.ok||!o?.data?.asset)throw Error(o?.message??`设备模型上传失败`);i.loaded=!1,await i.load();let s=o.data.asset;return{id:s.id,name:s.name,file:s.file,frames:1,frameWidth:0,frameHeight:0,kind:`dev`,builtin:!1,applied:!1,hint:`设备实体(拖入场景生成数字孪生)`}},async removeDevice(e){let t=e.replace(/^dev-folder-/,``),n=await fetch(`/api/workshop/assets/devices/${encodeURIComponent(t)}`,{method:`DELETE`,headers:r()}),a=await n.json().catch(()=>({}));if(!n.ok)throw Error(a?.message??`设备模型删除失败`);i.loaded=!1,await i.load()},async bind(e,t,n){let i=await fetch(`/api/workshop/channels/${e}/agents/${t}/model`,{method:`PATCH`,headers:r(),body:JSON.stringify({modelRef:n})}),a=await i.json().catch(()=>({}));if(!i.ok)throw Error(a?.message??`绑定失败`)}});return i}function Ne(){let e=globalThis;e[je]||(e[je]=R());let t=e[je];return t.load(),t}var Pe={key:0,class:`mp-loading`},z={key:1,class:`mp-failed`},Fe=Object.assign(A(o({__name:`ModelPreview3D`,props:{file:{default:``},localFile:{default:null},height:{default:64}},setup(e){let t=e,n=D(null),r=D(!1),i=D(!1),a=globalThis,o=``;function c(){if(a.__modelPreviewRig)return a.__modelPreviewRig;let e=new _e({alpha:!0,antialias:!1,powerPreference:`low-power`});e.setPixelRatio(Math.min(window.devicePixelRatio,1.5)),e.toneMapping=4,e.toneMappingExposure=1.15;let t={renderer:e,slots:new Set,raf:0,clock:new he},n=0,r=()=>{t.raf=requestAnimationFrame(r);let e=t.clock.getDelta();if(n+=e*1e3,n<1e3/30)return;let i=n/1e3;n=0;for(let e of t.slots)!e.canvas.isConnected||!e.visible||(e.group&&(e.group.rotation.y+=i*e.speed),t.renderer.setSize(e.w,e.h,!1),t.renderer.render(e.scene,e.camera),e.ctx.clearRect(0,0,e.w,e.h),e.ctx.drawImage(t.renderer.domElement,0,0,e.w,e.h))};return r(),a.__modelPreviewRig=t,t}function u(){let e=a.__modelPreviewRig;!e||e.slots.size>0||(cancelAnimationFrame(e.raf),e.renderer.dispose(),e.renderer.domElement.remove(),delete a.__modelPreviewRig)}function m(e){try{let t=new Se(a.__modelPreviewRig.renderer);e.environment=t.fromScene(new ge,.04).texture,e.environmentIntensity=.55,t.dispose()}catch{}e.add(new F(14674431,3813157,1.3));let t=new N(16773855,2.2);t.position.set(3,4,2),e.add(t);let n=new N(4311284,1);n.position.set(-3,1,-2.5),e.add(n)}function h(e){let t=new pe().setFromObject(e),n=new P;t.getSize(n);let r=t.getCenter(new P),i=2/(Math.max(n.x,Math.max(n.y,n.z))||1);e.scale.setScalar(i),e.position.set(-r.x*i,-r.y*i,-r.z*i)}let g=null;function _(e){if(!n.value||r.value)return;let a=n.value,o=a.clientWidth||120,s=t.height||64,l=c(),u=document.createElement(`canvas`);u.style.width=`100%`,u.style.height=`${s}px`,u.width=Math.max(2,Math.round(o*Math.min(window.devicePixelRatio,1.5))),u.height=Math.max(2,Math.round(s*Math.min(window.devicePixelRatio,1.5)));let d=u.getContext(`2d`);if(!d){r.value=!0;return}a.appendChild(u);let f=new ye;m(f);let p=new be(38,o/s,.1,100);p.position.set(2.4,1.8,3.1),p.lookAt(0,0,0);let _=new me;f.add(_),g={canvas:u,ctx:d,scene:f,camera:p,group:_,w:u.width,h:u.height,speed:.6,visible:!1,io:null},typeof IntersectionObserver<`u`?(g.io=new IntersectionObserver(e=>{for(let t of e)g&&(g.visible=t.isIntersecting)}),g.io.observe(u)):g.visible=!0,l.slots.add(g),i.value=!0,new xe().load(e,e=>{let t=e.scene;g&&(t.traverse(e=>{let t=e;t.isMesh&&(t.castShadow=!1,t.receiveShadow=!1)}),h(t),g.group.add(t),i.value=!1)},void 0,()=>{i.value=!1,r.value=!0})}function v(){if(o&&URL.revokeObjectURL(o),o=``,g){let e=a.__modelPreviewRig;g.io?.disconnect(),e?.slots.delete(g),g.scene.traverse(e=>{let t=e;if(t.isMesh){t.geometry?.dispose();let e=Array.isArray(t.material)?t.material:[t.material];for(let t of e){for(let e of Object.keys(t)){let n=t[e];n&&n.isTexture&&n.dispose()}t?.dispose()}}}),g.canvas.remove(),g=null,u()}}function b(){if(r.value=!1,t.localFile){o=URL.createObjectURL(t.localFile),_(o);return}t.file&&_(t.file)}return oe(b),y(()=>[t.file,t.localFile],()=>{v(),(t.localFile??(t.file?t.file:null))&&d(()=>b())}),s(v),(t,a)=>(l(),S(`div`,{ref_key:`hostRef`,ref:n,class:`model-preview-3d`,style:p({height:`${e.height}px`})},[f(i)?(l(),S(`div`,Pe,[...a[0]||=[O(`span`,{class:`mp-spin`},null,-1)]])):f(r)?(l(),S(`div`,z,` PREVIEW NA `)):w(``,!0)],4))}}),[[`__scopeId`,`data-v-9d114165`]]),{__name:`WorkshopTownModelPreview3D`}),Ie={class:`asset-lib`},Le={class:`lib-head`},Re={class:`head-title`},ze={class:`head-hint`},Be={class:`upload-row`},Ve={class:`upload-name`},He={key:0,class:`drop-hint`},Ue={key:1,class:`upload-file-tag`},We={class:`upload-actions`},Ge=[`disabled`],Ke=[`disabled`],B={key:2,class:`mini-err`},V={key:3,class:`mini-err`},qe={class:`lib-grid`},Je=[`data-model-id`,`title`,`onDragstart`],Ye={key:1,class:`model-img glb dev`},Xe={class:`model-name`},Ze={class:`model-badge`},Qe={class:`card-actions`},$e=[`disabled`,`onClick`],et={key:0,class:`lib-note`},tt={key:1,class:`lib-note`},nt={key:0,class:`mini-msg`},rt=Object.assign(A(o({__name:`AssetLibrary`,setup(e){let{t}=ce(),n=Ne(),r=b(()=>n.models.filter(e=>e.kind===`dev`)),i=e=>/\.(glb|gltf)$/i.test(e);function o(e,t){e.dataTransfer&&(e.dataTransfer.setData(`application/x-aw-model`,t),e.dataTransfer.setData(`text/plain`,t),e.dataTransfer.effectAllowed=`copy`)}let s=D(!1),d=D(``),p=D(null),_=D(!1),v=e=>{let t=e.target;x(t.files?.[0]??null)},y=e=>{_.value=!1,x(e.dataTransfer?.files?.[0]??null)},x=e=>{if(e&&!/\.(glb|gltf|obj|fbx)$/i.test(e.name)){d.value=`仅支持 .glb/.gltf/.obj/.fbx 模型文件`;return}p.value=e,d.value=``},C=()=>{p.value=null};async function T(){let e=p.value;if(!e){d.value=t(`assetLibrary.kcjqcaw012`);return}s.value=!0,d.value=``;try{let r=await n.uploadDevice(e);p.value=null,d.value=t(`assetLibrary.k8nv3or016`,{p0:r.name})}catch(e){d.value=I(e)}finally{s.value=!1}}let E=D(``),te=D(``);async function ne(e){E.value=e,te.value=``;try{await n.removeDevice(e),te.value=t(`assetLibrary.k8n918k013`)}catch(e){te.value=I(e)}finally{E.value=``}}return(e,t)=>(l(),S(`aside`,Ie,[O(`div`,Le,[O(`span`,Re,m(e.$t(`assetLibrary.k7la4x5001`)),1),O(`span`,ze,m(e.$t(`assetLibrary.kulif5b002`)),1)]),O(`div`,{class:u([`upload-box`,{drop:f(_)}]),onDragover:t[0]||=a(e=>_.value=!0,[`prevent`]),onDragleave:t[1]||=e=>_.value=!1,onDrop:a(y,[`prevent`])},[O(`label`,Be,[O(`input`,{type:`file`,accept:`.glb,.gltf,.obj,.fbx`,class:`file-input`,onChange:v},null,32),O(`span`,Ve,[t[2]||=O(`span`,{class:`i-tabler-plus upload-ico`},null,-1),g(` `+m(f(p)?.name||e.$t(`assetLibrary.k1iiort6010`)),1)])]),f(_)?(l(),S(`span`,He,[t[3]||=O(`span`,{class:`i-tabler-download`},null,-1),g(` `+m(e.$t(`assetLibrary.k5hg6jq003`)),1)])):w(``,!0),f(p)?(l(),S(h,{key:1},[i(f(p).name)?(l(),ee(Fe,{key:0,"local-file":f(p),height:92},null,8,[`local-file`])):(l(),S(`span`,Ue,m(f(p).name)+` (`+m(e.$t(`assetLibrary.k1xz5wvk009`)),1)),O(`div`,We,[O(`button`,{class:`upload-btn go`,disabled:f(s),onClick:T},m(f(s)?e.$t(`assetLibrary.k1ar7n8i005`):e.$t(`assetLibrary.k1hhga4h014`)),9,Ge),O(`button`,{class:`upload-btn`,disabled:f(s),onClick:C},m(e.$t(`assetLibrary.k3xdnn004`)),9,Ke)])],64)):f(s)?(l(),S(`span`,B,m(e.$t(`assetLibrary.k1ar7n8i005`)),1)):w(``,!0),f(d)&&!f(p)?(l(),S(`span`,V,m(f(d)),1)):w(``,!0)],34),O(`div`,qe,[(l(!0),S(h,null,c(f(r),n=>(l(),S(`div`,{key:n.id,class:`model-card`,"data-model-id":n.id,draggable:`true`,title:n.hint||e.$t(`assetLibrary.katn7lo015`,{p0:n.name}),onDragstart:e=>o(e,n.id)},[i(n.file)?(l(),ee(Fe,{key:0,file:n.file,height:76},null,8,[`file`])):(l(),S(`span`,Ye,[...t[4]||=[O(`span`,{class:`i-tabler-cpu glb-cube`,"aria-hidden":`true`},null,-1)]])),O(`span`,Xe,m(n.name),1),O(`span`,Ze,m(e.$t(`assetLibrary.k1n32zs0006`)),1),O(`div`,Qe,[n.file.includes(`/assets/game/devices/`)?(l(),S(`button`,{key:0,class:`card-btn danger`,disabled:f(E)===n.id,onClick:e=>ne(n.id)},m(f(E)===n.id?`…`:e.$t(`assetLibrary.k498l011`)),9,$e)):w(``,!0)])],40,Je))),128)),f(n).loaded?f(r).length===0?(l(),S(`div`,tt,m(e.$t(`assetLibrary.k15527e1008`)),1)):w(``,!0):(l(),S(`div`,et,[t[5]||=O(`span`,{class:`loading-dot`},null,-1),g(` `+m(e.$t(`assetLibrary.k1kq2tmi007`)),1)]))]),f(te)?(l(),S(`span`,nt,m(f(te)),1)):w(``,!0)]))}}),[[`__scopeId`,`data-v-effff4e2`]]),{__name:`WorkshopAssetLibrary`}),H={class:`twin-panel`},U={class:`twin-head`},it={class:`twin-kicker`},at={class:`twin-count`},ot={key:0,class:`twin-error`},st={key:1,class:`twin-empty`},ct={key:2,class:`twin-empty`},lt={class:`twin-empty-frame`},ut={class:`twin-empty-title`},dt={class:`twin-empty-sub`},ft={key:3,class:`twin-list`},pt=[`onClick`],mt={class:`twin-row`},ht={class:`twin-model-tag`},gt={class:`twin-idbar`},_t={class:`twin-name`},vt={class:`twin-code`},yt=[`disabled`,`title`,`onClick`],bt={key:0,class:`twin-tele`},xt={key:1,class:`twin-daq`},St={key:2,class:`twin-dcw`},Ct={class:`dcw-head`},W={key:0,class:`dcw-src`},wt={class:`dcw-set`},Tt=[`title`],Et={key:0,class:`dcw-act-at`},Dt={class:`dcw-win`},Ot=[`title`],kt={class:`dcw-ctrl`},At=[`onUpdate:modelValue`,`step`,`min`,`max`,`placeholder`,`onKeydown`],jt=[`disabled`,`title`,`onClick`],Mt={key:1,class:`dcw-err`},Nt={key:4,class:`twin-err`},Pt=Object.assign(A(o({__name:`DeviceTwinPanel`,props:{daqLive:{},dcwLive:{}},emits:[`focus-device`],setup(e){let{t}=ce(),r=Ae(),o=ke(),d=e=>e.kind===`daq`||(e.modelRef??``).startsWith(`daq-`),_=null;oe(()=>{r.load(),_=le(()=>void r.load(),2e3)}),s(()=>{_&&clearInterval(_)});let v=D(``),y=D(``),b=D(``),C=null;async function T(e){if(b.value!==e.id){b.value=e.id,C&&clearTimeout(C),C=setTimeout(()=>{b.value=``},3e3);return}C&&clearTimeout(C),b.value=``,v.value=e.id,y.value=``;try{await r.remove(e.id)}catch(e){y.value=I(e)}finally{v.value=``}}let E={idle:`var(--hud-amber)`,running:`var(--hud-ok)`,alarm:`var(--hud-danger)`,offline:`var(--hud-dim)`},ee={idle:`STANDBY`,running:`RUNNING`,alarm:`ALARM`,offline:`OFFLINE`},te=e=>e.replace(/[^A-Za-z0-9]/g,``).slice(0,4).toUpperCase()||`DEV`,ne=e=>e.replace(/^dev-/,``).replace(/[^a-z0-9]/gi,``).slice(-6).toUpperCase(),re=e=>typeof e==`number`?(Math.round(e*100)/100).toString():String(e),A=e=>`${Number.isFinite(e.lo)?e.lo:`-∞`} ~ ${Number.isFinite(e.hi)?e.hi:`+∞`} ${e.unit}`,j=x({}),M=x({}),ie=D(``);function ae(e){let n=j[e.id];if(n==null||n===``)return;let r=Number(n);if(r<e.lo||r>e.hi){M[e.id]=t(`deviceTwinPanel.kxddket010`,{p0:e.src===`recipe`?t(`deviceTwinPanel.kq2jssk008`):t(`deviceTwinPanel.k1iwj796009`),p1:A(e)});return}M[e.id]=``,ie.value=e.id,o.write(e.id,r).then(t=>{t.ok||(M[e.id]=t.message)}).catch(t=>{M[e.id]=I(t)}).finally(()=>{ie.value=``})}return(t,o)=>(l(),S(`aside`,H,[O(`div`,U,[O(`span`,it,m(t.$t(`deviceTwinPanel.k7k6evr002`)),1),O(`span`,at,m(f(r).twins.length),1)]),f(r).error?(l(),S(`div`,ot,m(f(r).error),1)):w(``,!0),f(r).loaded?f(r).twins.length===0?(l(),S(`div`,ct,[O(`div`,lt,[O(`div`,ut,m(t.$t(`deviceTwinPanel.k13y2qmg004`)),1),O(`div`,dt,m(t.$t(`deviceTwinPanel.kotf23l005`)),1)])])):(l(),S(`div`,ft,[(l(!0),S(h,null,c(f(r).twins,r=>(l(),S(`button`,{key:r.id,class:u([`twin-card`,{daq:d(r)}]),type:`button`,onClick:e=>t.$emit(`focus-device`,r)},[O(`div`,mt,[O(`span`,ht,m(te(r.modelRef||r.name)),1),O(`div`,gt,[O(`span`,_t,m(r.name),1),O(`span`,vt,m(d(r)?`DAQ`:ne(r.id)),1)]),O(`button`,{class:u([`twin-del`,{armed:f(b)===r.id}]),disabled:f(v)===r.id,title:f(b)===r.id?`再次点击确认删除该设备实例`:`删除该设备实例`,onClick:a(e=>T(r),[`stop`])},m(f(b)===r.id?t.$t(`deviceTwinPanel.k44653007`):`✕`),11,yt),O(`span`,{class:u([`twin-state`,`s-${r.state}`])},[O(`i`,{class:`twin-state-dot`,style:p({background:E[r.state]||`var(--hud-dim)`})},null,4),g(` `+m(ee[r.state]||r.state),1)],2)]),Object.keys(r.telemetry).length?(l(),S(`div`,bt,[(l(!0),S(h,null,c(r.telemetry,(e,t)=>(l(),S(`span`,{key:t,class:`tele-item`},[O(`em`,null,m(t),1),O(`b`,null,m(re(e)),1)]))),128))])):w(``,!0),e.daqLive?.[r.id]?.length?(l(),S(`div`,xt,[(l(!0),S(h,null,c(e.daqLive[r.id],(e,t)=>(l(),S(`span`,{key:`${e.ch}-${t}`,class:u([`daq-item`,{alarm:e.alarm}])},[O(`em`,null,m(e.ch),1),O(`b`,null,[g(m(e.value),1),O(`i`,null,m(e.unit),1)])],2))),128))])):w(``,!0),e.dcwLive?.[r.id]?.length?(l(),S(`div`,St,[(l(!0),S(h,null,c(e.dcwLive[r.id],e=>(l(),S(`div`,{key:e.id,class:`dcw-item`},[O(`div`,Ct,[O(`em`,null,[g(m(e.ch),1),e.src===`recipe`?(l(),S(`i`,W,m(t.$t(`deviceTwinPanel.k48grv006`)),1)):w(``,!0)]),O(`b`,wt,[g(m(e.value==null?`--`:e.value.toFixed(e.decimals)),1),O(`i`,null,m(e.unit),1)])]),e.readValue!=null||e.lastReadAt?(l(),S(`div`,{key:0,class:`dcw-act`,title:t.$t(`deviceTwinPanel.k9r7d4e030`)},[o[0]||=O(`em`,null,`ACT`,-1),O(`b`,null,[g(m(e.readValue==null?`--`:e.readValue.toFixed(e.decimals)),1),O(`i`,null,m(e.unit),1)]),e.lastReadAt?(l(),S(`i`,Et,m(e.lastReadAt.slice(11,19)),1)):w(``,!0)],8,Tt)):w(``,!0),O(`div`,Dt,[O(`span`,{title:e.src===`recipe`?`当前运行配方工艺窗口`:`节点全局量程`},m(A(e)),9,Ot)]),O(`div`,kt,[k(O(`input`,{"onUpdate:modelValue":t=>f(j)[e.id]=t,type:`number`,class:`ctrl-input`,step:10**-e.decimals,min:Number.isFinite(e.lo)?e.lo:void 0,max:Number.isFinite(e.hi)?e.hi:void 0,placeholder:`${Number.isFinite(e.lo)?e.lo:``} ~ ${Number.isFinite(e.hi)?e.hi:``}`,onKeydown:n(t=>ae(e),[`enter`])},null,40,At),[[i,f(j)[e.id],void 0,{number:!0}]]),O(`button`,{class:`ctrl-btn dcw-send`,disabled:f(j)[e.id]==null||f(j)[e.id]===``||f(ie)===e.id,title:t.$t(`deviceTwinPanel.k1j04u8001`),onClick:a(t=>ae(e),[`stop`])},m(f(ie)===e.id?`···`:`SET`),9,jt)]),f(M)[e.id]?(l(),S(`small`,Mt,m(f(M)[e.id]),1)):w(``,!0)]))),128))])):w(``,!0)],10,pt))),128))])):(l(),S(`div`,st,m(t.$t(`deviceTwinPanel.kkw7sn5003`)),1)),f(y)?(l(),S(`span`,Nt,m(f(y)),1)):w(``,!0)]))}}),[[`__scopeId`,`data-v-2eb2660e`]]),{__name:`WorkshopDeviceTwinPanel`}),Ft=`__sceneLayouts`;function G(e=!0){let t=typeof document<`u`?document.cookie.match(/(?:^|;\s*)token=([^;]+)/)?.[1]??``:``,n={};return t&&(n.authorization=`Bearer ${decodeURIComponent(t)}`),e&&(n[`content-type`]=`application/json`),n}function It(){let e=null,t=e=>new Promise(t=>setTimeout(t,e)),n=x({layouts:{},loaded:!1,loading:!1,error:``,rev:0,async load(){return e||=r().finally(()=>{e=null}),e},byChannel(e){return n.layouts[e]},async save(e,r){n.layouts[e]={channelId:e,x:r.x,z:r.z,radiusX:r.radiusX,radiusZ:r.radiusZ,shape:r.shape??`ellipse`,rotationY:r.rotationY??0,updatedAt:L()},n.rev++;let i=null;for(let a=0;a<3;a++)try{let t=await fetch(`/api/workshop/scene/layouts/${e}`,{method:`PUT`,headers:G(),body:JSON.stringify(r)}),i=await t.json().catch(()=>({}));if(!t.ok||!i?.data?.layout)throw Error(i?.message??`保存频道布局失败`);return n.layouts[e]=i.data.layout,i.data.layout}catch(e){i=e instanceof Error?e:Error(String(e)),a<2&&await t(500*(a+1))}throw i??Error(`保存频道布局失败`)},async remove(e){let t=await fetch(`/api/workshop/scene/layouts/${e}`,{method:`DELETE`,headers:G()}),r=await t.json().catch(()=>({}));if(!t.ok)throw Error(r?.message??`移除频道放置失败`);let i=Object.fromEntries(Object.entries(n.layouts).filter(([t])=>t!==e));n.layouts=i,n.rev++}});async function r(){n.loading=!0;let e=``;try{for(let r=0;r<3;r++)try{let e=await fetch(`/api/workshop/scene/layouts`,{headers:G()});if(!e.ok)throw Error(`HTTP ${e.status}`);let t=(await e.json().catch(()=>({})))?.data?.layouts??[],r={};for(let e of t)r[e.channelId]=e;n.layouts=r,n.loaded=!0,n.error=``,n.rev++;return}catch(n){e=I(n),r<2&&await t(400*(r+1))}n.loaded=!1,n.error=e}finally{n.loading=!1}}return n}function Lt(){let e=globalThis;e[Ft]||(e[Ft]=It());let t=e[Ft];return t.load(),t}function Rt(e){return ne()?(v(e),!0):!1}var zt=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var Bt=Object.prototype.toString,Vt=e=>Bt.call(e)===`[object Object]`,Ht=()=>{};function Ut(...e){if(e.length!==1)return j(...e);let t=e[0];return typeof t==`function`?re(T(()=>({get:t,set:Ht}))):D(t)}function Wt(e,t){function n(...n){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(i)})}return n}var Gt=e=>e();function Kt(e=Gt,t={}){let{initialState:n=`active`}=t,r=Ut(n===`active`);function i(){r.value=!1}function a(){r.value=!0}return{isActive:re(r),pause:i,resume:a,eventFilter:(...t)=>{r.value&&e(...t)}}}function qt(e){return Array.isArray(e)?e:[e]}function Jt(e){return e||M()}function Yt(e,t,n={}){let{eventFilter:r=Gt,...i}=n;return y(e,Wt(r,t),i)}function Xt(e,t,n={}){let{eventFilter:r,initialState:i=`active`,...a}=n,{eventFilter:o,pause:s,resume:c,isActive:l}=Kt(r,{initialState:i});return{stop:Yt(e,t,{...a,eventFilter:o}),pause:s,resume:c,isActive:l}}function K(e,t=!0,n){Jt(n)?oe(e,n):t?e():d(e)}function Zt(e,t,n){return y(e,t,{...n,immediate:!0})}var Qt=zt?window:void 0;zt&&window.document,zt&&window.navigator,zt&&window.location;function $t(e){let t=_(e);return t?.$el??t}function q(...e){let t=[],n=()=>{t.forEach(e=>e()),t.length=0},r=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),i=b(()=>{let t=qt(_(e[0])).filter(e=>e!=null);return t.every(e=>typeof e!=`string`)?t:void 0}),a=Zt(()=>[i.value?.map(e=>$t(e))??[Qt].filter(e=>e!=null),qt(_(i.value?e[1]:e[0])),qt(f(i.value?e[2]:e[1])),_(i.value?e[3]:e[2])],([e,i,a,o])=>{if(n(),!e?.length||!i?.length||!a?.length)return;let s=Vt(o)?{...o}:o;t.push(...e.flatMap(e=>i.flatMap(t=>a.map(n=>r(e,t,n,s)))))},{flush:`post`});return Rt(n),()=>{a(),n()}}var en=typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:{},tn=`__vueuse_ssr_handlers__`,nn=rn();function rn(){return tn in en||(en[tn]=en[tn]||{}),en[tn]}function an(e,t){return nn[e]||t}function on(e){return e==null?`any`:e instanceof Set?`set`:e instanceof Map?`map`:e instanceof Date?`date`:typeof e==`boolean`?`boolean`:typeof e==`string`?`string`:typeof e==`object`?`object`:Number.isNaN(e)?`any`:`number`}var sn={boolean:{read:e=>e===`true`,write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},cn=`vueuse-storage`;function ln(e,t,n,r={}){let{flush:i=`pre`,deep:a=!0,listenToStorageChanges:o=!0,writeDefaults:s=!0,mergeDefaults:c=!1,shallow:l,window:u=Qt,eventFilter:f,onError:p=e=>{console.error(e)},initOnMounted:m}=r,h=(l?C:D)(typeof t==`function`?t():t),g=b(()=>_(e));if(!n)try{n=an(`getDefaultStorage`,()=>Qt?.localStorage)()}catch(e){p(e)}if(!n)return h;let v=_(t),x=on(v),S=r.serializer??sn[x],{pause:w,resume:T}=Xt(h,e=>te(e),{flush:i,deep:a,eventFilter:f});y(g,()=>O(),{flush:i});let E=!1;u&&o&&(n instanceof Storage?q(u,`storage`,e=>{m&&!E||O(e)},{passive:!0}):q(u,cn,e=>{m&&!E||re(e)})),m?K(()=>{E=!0,O()}):O();function ee(e,t){if(u){let r={key:g.value,oldValue:e,newValue:t,storageArea:n};u.dispatchEvent(n instanceof Storage?new StorageEvent(`storage`,r):new CustomEvent(cn,{detail:r}))}}function te(e){try{let t=n.getItem(g.value);if(e==null)ee(t,null),n.removeItem(g.value);else{let r=S.write(e);t!==r&&(n.setItem(g.value,r),ee(t,r))}}catch(e){p(e)}}function ne(e){let t=e?e.newValue:n.getItem(g.value);if(t==null)return s&&v!=null&&n.setItem(g.value,S.write(v)),v;if(!e&&c){let e=S.read(t);return typeof c==`function`?c(e,v):x===`object`&&!Array.isArray(e)?{...v,...e}:e}return typeof t==`string`?S.read(t):t}function O(e){if(!(e&&e.storageArea!==n)){if(e&&e.key==null){h.value=v;return}if(!(e&&e.key!==g.value)){w();try{let t=S.write(h.value);(e===void 0||e?.newValue!==t)&&(h.value=ne(e))}catch(e){p(e)}finally{e?d(T):T()}}}}function re(e){O(e.detail)}return h}var un={class:`town-view`},dn={class:`topnav`},fn={class:`brand`},pn={class:`brand-sub`},mn=[`aria-label`],hn={class:`seg`},gn=[`disabled`,`title`],_n={class:`nav-right`},vn=[`title`],yn={class:`nav-chip mono`},bn=[`title`],xn={class:`avatar-fallback`},Sn={class:`app`},Cn={class:`rail rail-left`},wn={class:`panel`},Tn={class:`panel-hd`},En={class:`panel-tag`},Dn={class:`panel`},On={class:`panel-hd`},kn={class:`panel-tag`},An={class:`daq-ctrl`},jn=[`title`],Mn=[`title`],Nn=[`value`],Pn={class:`daq-list`},Fn=[`title`,`onClick`,`onKeydown`],In={class:`daq-ico`},Ln=[`innerHTML`],Rn={class:`daq-meta`},zn={class:`daq-name`},Bn={class:`daq-code`},Vn=[`title`,`onClick`],Hn={class:`daq-count`},Un={key:0,class:`daq-children`},Wn=[`draggable`,`title`,`onDragstart`,`onClick`],Gn={class:`daq-meta`},Kn={class:`daq-name`},qn={class:`daq-node-sub`},Jn={class:`node-val mono`},Yn={class:`node-dev`},Xn={key:0,class:`scene-cur`},Zn={key:0,class:`daq-empty-hint`},Qn={class:`panel`},$n={class:`panel-hd`},er={class:`panel-tag`},tr={class:`daq-list`},nr=[`title`,`onClick`,`onKeydown`],rr={class:`daq-ico`},ir=[`innerHTML`],ar={class:`daq-meta`},or={class:`daq-name`},sr={class:`daq-code`},cr=[`title`,`onClick`],lr={class:`daq-count`},ur={key:0,class:`daq-children`},dr=[`draggable`,`title`,`onDragstart`,`onClick`],fr={class:`daq-meta`},pr={class:`daq-name`},mr={class:`daq-node-sub`},hr={class:`node-val mono`},gr={class:`node-dev`},_r={key:0,class:`scene-cur`},vr={key:0,class:`daq-empty-hint`},yr={class:`panel`},br={class:`panel-hd`},xr={class:`panel-tag`},Sr={class:`scene-list`},Cr=[`draggable`,`data-channel-id`,`title`,`onDragstart`,`onClick`],wr={class:`scene-meta-wrap`},Tr={class:`scene-name`},Er={class:`scene-meta`},Dr={key:0,class:`scene-cur`},Or={key:1,class:`scene-add`},kr={key:0,class:`scene-hint`},Ar={class:`stage-col`},jr={class:`stage-top`},Mr={class:`vp-title`},Nr={class:`vp-id`},Pr={class:`vp-tools`},Fr=[`title`],Ir=[`title`],Lr=[`title`],Rr=[`title`],zr={class:`angle-chip`},Br=[`value`,`aria-label`],Vr={value:`std`},Hr={class:`leaders`},Ur=[`d`,`stroke`],Wr=[`cx`,`cy`,`fill`],Gr={class:`callout-layer`},Kr=[`title`,`onClick`],qr={class:`co-label`},Jr={class:`co-val`},Yr={class:`co-range`},Xr={class:`kpi-strip`},Zr={class:`kpi`},Qr={class:`kpi-meta`},$r={class:`kpi-label`},ei={class:`kpi-val`},ti={class:`kpi`},ni={class:`kpi-meta`},ri={class:`kpi-label`},ii={class:`kpi-val`},ai={class:`kpi`},oi={class:`kpi-meta`},si={class:`kpi-label`},ci={class:`kpi-val`},li={class:`kpi`},ui={class:`kpi-meta`},di={class:`kpi-label`},fi={class:`kpi-val`},pi={class:`kpi`},mi={class:`kpi-meta`},hi={class:`kpi-label`},gi={class:`kpi-val`},_i={key:1,class:`empty-hint`},vi=[`title`],yi={class:`bp-name`},bi={class:`bp-sub`},xi={class:`bp-tabs`},Si={class:`bp-row`},Ci={class:`bp-label`},wi={class:`bp-seg`},Ti={class:`bp-row`},Ei={class:`bp-label`},Di={class:`bp-val`},Oi={class:`bp-row`},ki={class:`bp-label`},Ai={class:`bp-val`},ji={class:`bp-row`},Mi={class:`bp-label`},Ni={class:`bp-val`},Pi={class:`bp-hint`},Fi={class:`member-list`},Ii={class:`member-info`},Li={class:`member-name`},Ri=[`value`,`onChange`],zi=[`value`],Bi={key:0,class:`bp-hint`},Vi={class:`bp-actions`},Hi={key:3,class:`drop-chip`},Ui={key:4,class:`error-chip`},Wi={key:5,"data-hud":`town-loading`,class:`loading-mask`},Gi={class:`loading-text`},Ki={class:`dock`},qi={class:`dock-card`},Ji={class:`dock-hd`},Yi={class:`dock-mode`},Xi={class:`ctl-sec`},Zi={class:`ctl-row`},Qi=[`title`],$i={class:`fps-seg`},ea=[`onClick`],ta={class:`ctl-row`},na=[`title`],ra={class:`fps-seg`},ia=[`onClick`],aa={class:`ctl-sec`},oa={class:`ctl-row`},sa={class:`ctl-name`},ca=[`value`],la={class:`ctl-val`},ua={class:`ctl-row`},da={class:`ctl-name`},fa=[`value`],pa={class:`ctl-val`},ma={class:`ctl-row`},ha={class:`ctl-name`},ga=[`value`],_a={class:`ctl-val`},va={class:`ctl-row`},ya=[`title`],ba=[`value`],xa={class:`ctl-val`},Sa={class:`ctl-sec`},Ca={class:`ctl-row`},wa={class:`ctl-name`},Ta={class:`ctl-btns`},Ea=[`disabled`,`title`],Da={class:`dock-card`},Oa={class:`dock-hd`},ka={class:`dock-count mono`},Aa=[`onClick`],ja=[`title`],Ma={class:`trend-wrap`},Na={key:0,class:`trend-empty`},Pa={class:`rail rail-right`},Fa={key:0,class:`panel inspector`},Ia={class:`panel-hd`},La=[`title`],Ra={class:`ins-chip-row`},za={class:`ins-chip mono`},Ba={key:0,class:`ins-chip accent`},Va={key:1,class:`ins-chip accent`},Ha={key:0,class:`daq-info`},Ua={class:`daq-info-row`},Wa={class:`cy`},Ga={class:`daq-info-row`},Ka={class:`daq-info-row`},qa={class:`daq-bind-bar`},Ja=[`step`,`placeholder`],Ya=[`disabled`],Xa={key:0,class:`dcw-err`},Za={key:1,class:`daq-bind-bar`},Qa={value:``},$a=[`value`],eo=[`disabled`],to={key:1,class:`daq-info`},no={class:`daq-info-row`},ro={class:`cy`},io={class:`daq-info-row`},ao={class:`daq-info-row`},oo={key:0,class:`daq-bind-bar`},so={value:``},co=[`value`],lo=[`disabled`],uo={key:1,class:`daq-node-ctl`},fo={class:`daq-info-row`},po={class:`daq-th-inputs`},mo={class:`daq-info-row`},ho={class:`daq-th-inputs`},go=[`value`],_o=[`value`],vo={class:`daq-info-row`},yo={class:`daq-th-inputs`},bo=[`value`],xo=[`value`],So={class:`daq-info-row`},Co={class:`daq-info-row`},wo=[`title`],To={key:2,class:`ins-empty`},Eo={class:`obj-row`},Do={class:`obj-label`},Oo=[`placeholder`,`disabled`,`title`],ko={class:`obj-row`},Ao={class:`obj-label`},jo=[`value`,`disabled`],Mo=[`value`],No={class:`sect-hd`},Po={class:`bind-ico`},Fo=[`innerHTML`],Io={class:`bind-meta`},Lo={class:`bind-label`},Ro={class:`bind-val`},zo=[`title`,`onClick`],Bo={key:0,class:`ins-empty`},Vo={key:1,class:`bind-add-wrap`},Ho={key:0,class:`bp-group`},Uo={class:`bp-tpl`},Wo=[`data-node-id`,`title`,`onClick`],Go=[`innerHTML`],Ko={key:0,class:`bp-cur`},qo={key:1,class:`bp-cur`},Jo={key:0,class:`bp-empty`},Yo={class:`sect-hd`},Xo={class:`dcw-top`},Zo={class:`bind-ico`},Qo=[`innerHTML`],$o={class:`dcw-id`},es={class:`bind-label`},ts={key:0,class:`dcw-tag`},ns={class:`dcw-name`},rs={class:`dcw-cur`},is=[`title`,`onClick`],as={class:`dcw-win-num`},os={class:`dcw-win-track`},ss={class:`dcw-win-num`},cs={class:`dcw-write`},ls=[`onUpdate:modelValue`,`step`,`placeholder`,`onKeydown`],us=[`disabled`,`title`,`onClick`],ds={key:0,class:`dcw-err`},fs={key:2,class:`ins-empty`},ps={key:3,class:`bind-add-wrap`},ms={key:0,class:`bp-group`},hs={class:`bp-tpl`},gs=[`data-node-id`,`title`,`onClick`],_s=[`innerHTML`],vs={key:0,class:`bp-cur`},ys={key:1,class:`bp-cur`},bs={key:0,class:`bp-empty`},xs={class:`xz-seg`},Ss={class:`scale-row`},Cs=[`value`],ws={class:`scale-val`},Ts={class:`ins-foot`},Es={key:5,class:`ins-empty`},Ds={class:`chat-id-row`},Os={class:`chat-nameplate`},ks={class:`chat-name`},As={class:`chat-meta`},js={key:0,class:`chat-harness`},Ms={class:`chat-count`},Ns={class:`obj-row`},Ps={class:`obj-label`},Fs=[`value`,`disabled`],Is=[`value`],Ls={class:`obj-row`},Rs={class:`obj-label`},zs={class:`range-status`},Bs=[`title`],Vs={class:`sect-hd`},Hs={class:`bind-meta`},Us={class:`bind-label`},Ws=[`value`,`title`,`onChange`],Gs={value:`auto`},Ks={value:`manual`},qs=[`title`,`onClick`],Js={key:0,class:`ins-empty`},Ys={key:1,class:`daq-bind-bar`,style:{"margin-bottom":`8px`}},Xs={value:`dcw`},Zs={value:`daq`},Qs={value:``},$s=[`value`],ec=[`value`],tc={value:`auto`},nc={value:`manual`},rc=[`disabled`],ic={class:`sect-hd`,style:{color:`var(--hud-amber)`}},ac={class:`approval-detail`},oc=[`onUpdate:modelValue`,`placeholder`],sc={class:`daq-bind-bar`,style:{"margin-top":`5px`}},cc=[`onClick`],lc=[`onClick`],uc={class:`obj-row`},dc={class:`obj-label`},fc={class:`bp-seg`},pc={class:`obj-row`},mc={class:`obj-label`},hc={class:`bp-val`},gc={class:`obj-row`},_c={class:`obj-label`},vc={class:`bp-val`},yc={key:4,class:`ins-empty`},bc={class:`sect-hd chat-sect`},xc=[`title`],Sc={key:0,class:`rpg-note`},Cc={class:`rpg-divider`},wc={class:`rpg-time`},Tc={class:`rpg-bubble`},Ec={class:`rpg-text`},Dc={key:2,class:`rpg-divider live`},Oc={class:`rpg-time`},kc={class:`rpg-bubble`},Ac={class:`rpg-text`},jc={key:3,class:`rpg-typing`},Mc={class:`ty-label`},Nc={key:4,class:`rpg-note`},Pc={class:`panel`},Fc={class:`panel-hd`},Ic={class:`health-body`},Lc={class:`donut-wrap`},Rc={class:`donut-center`},zc={class:`health-legend`},Bc={class:`hl-row`},Vc={class:`n`},Hc={class:`hl-row`},Uc={class:`n`},Wc={class:`hl-row`},Gc={class:`n`},Kc={class:`hl-row`},qc={class:`n`},Jc={class:`panel`},Yc={class:`panel-hd`},Xc={class:`panel-tag`},Zc={class:`panel`},Qc={class:`panel-hd`},$c={class:`panel-tag`},el=[`title`],tl={class:`alarm-list`},nl={class:`al-body`},rl={class:`al-txt`},il={class:`al-src`},al=[`onClick`],ol={key:0,class:`rail-empty`},sl={class:`panel`},cl={class:`panel-hd`},ll={class:`panel-tag`},ul={class:`event-list`},dl={class:`ev-time`},fl=[`title`],pl=[`title`],ml={key:0,class:`rail-empty`},hl={class:`panel`},gl={class:`panel-hd`},_l={class:`mm-body`},vl=[`title`],yl={class:`mm-col`},bl=[`title`],xl=[`title`],Sl=[`title`],Cl={class:`mm-meta mono`},wl={class:`statusbar`},Tl={class:`sb-stats`},El={class:`sb-lat mono`},Dl={class:`copy`},Ol={key:0,"data-hud":`town-loading`,class:`loading-mask`},kl={class:`loading-text`},Al=`aw-town-panel-pos`,jl=3200,Ml=2400,Nl=3e4,Pl=80,Fl=120,Il=104,Ll=8,Rl=1600,zl=Object.assign(A(o({__name:`TownView`,props:{channelId:{},allChannels:{type:Boolean}},setup(o){let{t:_}=ce(),v=o,T=we(),ee=Ce(),{conn:ne}=Te(),re=Ee(),A=Ne(),j=Ae(),M=Lt(),pe=de(),me=D(null),N=C(null),he=C(null),P=C(null),ge=typeof window<`u`?new URLSearchParams(location.search).get(`render`)!==`2d`:!0,_e=D(!1),ye=D(0),be=D(0),xe=D(0),Se=D(null),F=D(null),L=D(``),je=b(()=>ne.state===`connecting`),Me=b(()=>T.channels[v.channelId]?.name??``),R=D(`browse`),Pe=D(!0),z=D(null),Fe=b(()=>{switch(z.value?.state){case`dirty`:return _(`townView.k3oo50k155`);case`saving`:return _(`townView.k1b38d59156`);case`saved`:return _(`townView.k3n51yk157`);case`error`:return _(`townView.k1b3ayhc158`);default:return``}});function Ie(){R.value=R.value===`browse`?`edit`:`browse`,P.value?.setMode(R.value),R.value===`browse`&&(Ke(),qe(null)),U.value=!1}let Le=D(`translate`);function Re(e){Le.value=e,P.value?.setTransformMode(e)}y(()=>[F.value,R.value],([e,t])=>{t===`edit`&&e?.kind===`device`&&P.value?.setTransformMode(Le.value)});function ze(e){let t=e.target;if(t&&(t.tagName===`INPUT`||t.tagName===`SELECT`||t.tagName===`TEXTAREA`||t.isContentEditable))return;let n=e.key.toLowerCase();if(e.key===`Escape`){Ke();return}R.value===`edit`&&F.value?.kind===`device`&&(n===`g`?Re(`translate`):n===`r`?Re(`rotate`):n===`s`?Re(`scale`):(e.key===`Delete`||e.key===`Backspace`)&&pt())}function Be(){Pe.value=!Pe.value,P.value?.setSnap(Pe.value)}function Ve(e,t,n,r){let i=t||v.channelId;return i?pe.request({method:`PATCH`,url:`/workshop/channels/${i}/agents/${e}/position`,data:{x:n,z:r}}).catch(()=>null):Promise.resolve()}function He(e,t,n){let r=t||v.channelId;return r?pe.request({method:`PATCH`,url:`/workshop/channels/${r}/agents/${e}/range`,data:{range:n}}).catch(()=>null):Promise.resolve()}function Ue(){if(R.value!==`edit`){Nt();return}P.value?.persistAllDevices()}function We(e){F.value&&P.value?.setModelScale(F.value.id,e,F.value.kind)}function Ge(e){F.value&&P.value?.persistScale(F.value.kind,F.value.id)}function Ke(){F.value=null}let B=D(null),V=D(null);function qe(e){B.value=e,V.value=e?P.value?.getChannelLayout(e)??null:null}async function Je(){if(!B.value||!V.value)return;let e=V.value,t={x:e.x,z:e.z,radiusX:e.radiusX,radiusZ:e.radiusZ,shape:e.shape??`ellipse`,rotationY:e.rotationY??0};try{await M.save(B.value,t),z.value={state:`saved`,at:Date.now()}}catch(e){z.value={state:`error`,at:Date.now()},L.value=I(e)}}async function Ye(){if(B.value)try{await M.remove(B.value),P.value?.removeChannel(B.value),qe(null)}catch(e){L.value=I(e)}}function Xe(){!B.value||!V.value||(P.value?.updateChannelLayout(B.value,V.value),z.value={state:`dirty`,at:Date.now()})}let Ze=D(``);function Qe(e){let t=P.value;if(t){if(e.placed){t.focusChannel(e.channelId),qe(e.channelId);return}Ze.value=_(`townView.k7rvbts159`),window.setTimeout(()=>{Ze.value=``},2600)}}function $e(e,t,n){let r=P.value;if(!r)return!1;let i=W().find(t=>t.channelId===e),a=i?.channelName??T.channels[e]?.name??e.slice(0,8),o=i?.agents.length??T.agents[e]?.length??0;return r.getChannelLayout(e)?(Ze.value=_(`townView.kcyn0191`,{p0:a}),window.setTimeout(()=>{Ze.value=``},2600),r.focusChannel(e),qe(e),!1):(r.dropChannelOnWorld(t,n,e,a,o),M.save(e,{x:t,z:n,radiusX:Math.max(120,110+o*18),radiusZ:Math.max(80,70+o*14),shape:`ellipse`,rotationY:0}).then(()=>{z.value={state:`saved`,at:Date.now()}}).catch(()=>{z.value={state:`error`,at:Date.now()}}),r.focusChannel(e),!0)}let et=b(()=>A.models.filter(e=>e.kind===`glb`)),tt=b(()=>A.models.filter(e=>e.kind===`dev`)),nt=D(``),H=D(null),U=D(!1);y(()=>F.value,e=>{if(nt.value=e?.kind===`device`?P.value?.getDeviceName?.(e.id)??``:``,H.value=null,e?.kind===`agent`){let t=P.value?.getAgentRange?.(e.id);H.value=t?{radiusX:t.radiusX,radiusZ:t.radiusZ,shape:t.shape}:null,U.value=P.value?.isRangeDrawing(e.id)??!1}else U.value=!1});let it=b(()=>{let e=F.value;if(!e||e.kind!==`agent`)return``;let t=P.value?.getAgentRange?.(e.id);return t?`${t.shape===`rect`?_(`townView.k43u0g050`):_(`townView.k414bc049`)} ${Math.round(t.radiusX)} × ${Math.round(t.radiusZ)}`:_(`townView.k1v1icf6160`)});function at(){let e=F.value;if(!(!e||e.kind!==`agent`)){if(U.value){P.value?.cancelRangeDraw(),U.value=!1;return}P.value?.startRangeDraw(e.id),U.value=!0}}function ot(){!F.value||F.value.kind!==`agent`||!H.value||(P.value?.setAgentRangeScene(F.value.id,H.value),z.value={state:`dirty`,at:Date.now()})}function st(){!F.value||F.value.kind!==`agent`||P.value?.commitAgentRange(F.value.id)}function ct(){let e=F.value;!e||e.kind!==`agent`||(P.value?.clearAgentRange(e.id),H.value=null,U.value=!1)}function lt(){if(!F.value||F.value.kind!==`device`)return;let e=F.value.id,t=nt.value.trim();t&&(P.value?.renameDevice(e,t),j.update(e,{name:t}).catch(e=>{L.value=I(e)}))}async function ut(e){let t=F.value;if(!t||t.kind!==`agent`)return;let n=t.id,r=T.agents?Object.keys(T.agents).find(e=>(T.agents[e]??[]).some(e=>e.agentId===n)):void 0;if(!r){L.value=_(`townView.kpplr16161`);return}try{await A.bind(r,n,e),P.value?.swapAgentModel(n,e)}catch(e){L.value=I(e)}}async function dt(e){let t=F.value;if(!(!t||t.kind!==`device`)){P.value?.swapDeviceModel(t.id,e);try{await j.update(t.id,{modelRef:e})}catch(e){L.value=I(e)}}}let ft=D(``);function pt(){let e=F.value;if(!(!e||e.kind!==`device`)){if(ft.value!==e.id){ft.value=e.id,window.setTimeout(()=>{ft.value===e.id&&(ft.value=``)},3e3);return}ft.value=``,P.value?.removeDevice(e.id).then(()=>Ke()).catch(e=>{L.value=I(e)})}}let mt=D(`boundary`),ht=b(()=>B.value?W().find(e=>e.channelId===B.value)?.agents??[]:[]);async function gt(e,t){if(B.value)try{await A.bind(B.value,e,t),P.value?.swapAgentModel(e,t)}catch(e){L.value=I(e)}}function _t(e){mt.value=e}let vt=D(0),yt=b(()=>(vt.value,bt().map(e=>({channelId:e,name:T.channels[e]?.name??e.slice(0,8),agentCount:(T.agents[e]??[]).length,placed:P.value?.hasChannel(e)??!1,color:St(e)}))));function bt(){let e=[];for(let t of xt()??[])for(let n of t.channelIds??[])e.includes(n)||e.push(n);return e.includes(v.channelId)||e.push(v.channelId),e}function xt(){return ee.workspaces}function St(e){return ve(e)}function Ct(e,t){e.dataTransfer&&(e.dataTransfer.setData(`application/x-aw-channel`,t),e.dataTransfer.setData(`text/plain`,t),e.dataTransfer.effectAllowed=`copy`)}function W(){let e=[];for(let[t,n]of Object.entries(T.channels)){let r=(T.agents[t]??[]).map(e=>{let n=e.currentTaskId?(T.tasks[t]??[]).find(t=>t.id===e.currentTaskId):void 0;return{agentId:e.agentId,name:e.name,role:e.role,harness:e.harness,state:e.state,currentTaskId:e.currentTaskId??null,currentTaskTitle:n?.title??null,currentTaskProgress:e.currentTaskProgress??n?.progress??null,modelRef:e.modelRef??null,homeX:e.config?.homeX??null,homeZ:e.config?.homeZ??null,range:e.config?.range??null}});e.push({channelId:t,channelName:n.name,agents:r})}return e}function wt(e){!e||!(`registerModelsFromList`in e)||(`screenToWorld`in e?e.registerModelsFromList(A.models.map(e=>({id:e.id,file:e.file,name:e.name,kind:e.kind,hFactor:e.hFactor??1}))):e.registerModelsFromList(A.models.map(e=>({id:e.id,file:e.file,name:e.name}))))}y(()=>A.models.map(e=>`${e.id}:${e.file}`).join(`|`),()=>wt(N.value));async function Tt(){N.value||!me.value||(ge?await Et():await Dt())}async function Et(){let e=me.value;if(!e)return;let[{TownScene3D:t}]=await Promise.all([se(()=>import(`./B7gZokg82.js`),__vite__mapDeps([0,1,2,3]),import.meta.url)]),n=new t(W(),e);n.resolveTaskAssignee=e=>T.tasks[v.channelId]?.find(t=>t.id===e)?.assigneeId??null,n.devices={async create(e){return{id:(await j.create({name:e.name,modelRef:e.modelRef,kind:e.kind,controls:e.controls,posX:e.posX,posZ:e.posZ,scale:e.scale})).id}},async update(e,t){if(J.nodeById(e)){await J.saveTransform(e,t.posX,t.posZ);return}await j.update(e,t)},async remove(e){if(J.nodeById(e)){await J.removeNode(e);return}await j.remove(e)},async control(e,t,n){return j.control(e,t,n)}},n.agentApi={async updateHome(e,t,n,r){return Ve(e,t,n,r)},async updateRange(e,t,n){return He(e,t,n)}},n.channelApi={async save(e,t){return M.save(e,t)}},N.value=n,wt(n),P.value=n,n.setFpsCap(Number(mf.value)),n.setQualityMode(_f.value),Ot(n),n.on(`select`,e=>{F.value=e}),n.on(`saveState`,e=>{z.value=e}),n.on(`selectChannel`,e=>{qe(e)}),n.on(`channelResized`,e=>{e&&B.value===e.channelId&&(V.value=e.layout)}),n.on(`agentRangeChanged`,e=>{if(e&&F.value?.kind===`agent`&&F.value.id===e.agentId){let t=P.value?.getAgentRange?.(e.agentId);H.value=t?{radiusX:t.radiusX,radiusZ:t.radiusZ,shape:t.shape}:null}}),_e.value=!0,kt(n),Vf=Jl(n),M.load().then(()=>{n.hydrate(W(),Object.values(M.layouts),Gl.value),Rt()}).catch(e=>{L.value=_(`townView.k1hmf2ut192`,{p0:I(e)}),window.setTimeout(()=>{M.load()},2500)})}async function Dt(){let e=me.value;if(!e)return;let[t,{TownScene:n}]=await Promise.all([se(()=>import(`./BGkumHZ32.js`),[],import.meta.url),se(()=>import(`./RYFtK4qZ2.js`),__vite__mapDeps([4,5,1,2]),import.meta.url)]),r=new n(W());N.value=r,wt(r),r.resolveTaskAssignee=e=>T.tasks[v.channelId]?.find(t=>t.id===e)?.assigneeId??null;let i=new t.Game({type:t.AUTO,parent:e.id||`town-host`,width:1100,height:700,backgroundColor:`#eceae4`,pixelArt:!0,antialias:!1,roundPixels:!0,powerPreference:`high-performance`,physics:{default:`arcade`,arcade:{gravity:{x:0,y:0},debug:!1}},scale:{mode:t.Scale.FIT,autoCenter:t.Scale.CENTER_BOTH},scene:r});he.value=i,Ot(r),r.on(`ready`,()=>{_e.value=!0,kt(r)})}function Ot(e){let t=e;t.on(`fps`,e=>{ye.value=e}),t.on(`agentCount`,e=>{be.value=e}),t.on(`blockCount`,e=>{xe.value=e,vt.value++}),t.on(`lastActivity`,e=>{Se.value=e});let n=re.subscribe(t=>{try{if(t.type===`channel.snapshot`){e.rebuild(W()),N.value&&G(N.value),v.channelId&&e.focusChannel(v.channelId);return}if(t.type===`device.updated`){j.applyRemote(t.payload),N.value&&G(N.value);return}if(t.type===`device.created`){j.load().then(()=>{N.value&&G(N.value)});return}if(t.type===`device.deleted`){j.removeRemote(t.payload.id),N.value&&G(N.value);return}if(t.type===`scene.layout.saved`||t.type===`scene.layout.removed`){M.load().then(()=>{It(N.value),Rt()});return}let n=fe(t)?.bubble;n?.agentId&&an(n.agentId,n.kind,n.text,t.at,t.seq),e.handleTownEvent(t)}catch(e){L.value=I(e)}});N._off=n,window.__town={get scene(){return N.value},get game(){return he.value},buildInput:W,get characterAssets(){return A}}}function kt(e){if(`screenToWorld`in e){Ft(e);return}jt(e)}let At=[];function jt(e){let t=e.game.canvas;if(!t)return;let n=(n,r)=>{let i=e.cameras.main,a=t.getBoundingClientRect(),o=(n-a.left)/a.width,s=(r-a.top)/a.height;return{x:i.worldView.x+o*i.worldView.width,y:i.worldView.y+s*i.worldView.height}},r=!1,i=0,a=0;t.addEventListener(`pointerdown`,e=>{e.button===0&&(r=!0,i=e.clientX,a=e.clientY)});let o=n=>{if(!r)return;let o=e.cameras.main,s=t.getBoundingClientRect(),c=e.game.scale.width/s.width,l=(n.clientX-i)*c/o.zoom,u=(n.clientY-a)*c/o.zoom;o.scrollX-=l,o.scrollY-=u,i=n.clientX,a=n.clientY},s=()=>{r=!1};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s),At.push(()=>window.removeEventListener(`pointermove`,o)),At.push(()=>window.removeEventListener(`pointerup`,s)),t.addEventListener(`wheel`,t=>{t.preventDefault();let n=e.cameras.main,r=n.zoom+(t.deltaY<0?.08:-.08);n.setZoom(Math.min(2.4,Math.max(.6,r)))},{passive:!1}),t.addEventListener(`dragover`,e=>{e.preventDefault(),e.dataTransfer.dropEffect=`copy`}),t.addEventListener(`drop`,t=>{t.preventDefault();let r=t.dataTransfer?.getData(`application/x-aw-model`)||t.dataTransfer?.getData(`text/plain`);if(!r)return;let i=n(t.clientX,t.clientY),a=e.dropModelOnWorld(i.x,i.y,r);qt.value=a})}let Mt=null;function Nt(){L.value=_(`townView.kt6xb5p162`),Mt&&clearTimeout(Mt),Mt=setTimeout(()=>{L.value=``},2600)}function Ft(e){let t=e.canvas;if(!t)return;let n=0,r=0,i=0;t.addEventListener(`contextmenu`,e=>e.preventDefault()),t.addEventListener(`mousedown`,e=>{e.button===1&&e.preventDefault()}),t.addEventListener(`pointerdown`,t=>{if(!e.isGizmoBusy?.()){if(t.button===1||t.button===2||t.shiftKey){t.preventDefault(),n=2,r=t.clientX,i=t.clientY;return}t.button===0&&(e.tryStartPointerDrag(t.clientX,t.clientY)||(n=1,r=t.clientX,i=t.clientY))}});let a=t=>{if(e.isGizmoBusy?.())return;if(e.isPointerDragging()){e.movePointerDrag(t.clientX,t.clientY);return}if(!n)return;let a=t.clientX-r,o=t.clientY-i;r=t.clientX,i=t.clientY,n===1?e.orbitBy(a,o):e.panByScreen(a,o)},o=()=>{if(e.isPointerDragging()){e.endPointerDrag();return}n=0};window.addEventListener(`pointermove`,a),window.addEventListener(`pointerup`,o),At.push(()=>window.removeEventListener(`pointermove`,a)),At.push(()=>window.removeEventListener(`pointerup`,o)),t.addEventListener(`wheel`,t=>{t.preventDefault(),e.zoomBy(t.deltaY>0?.12:-.11)},{passive:!1}),t.addEventListener(`dragover`,e=>{e.preventDefault(),e.dataTransfer.dropEffect=`copy`}),t.addEventListener(`drop`,t=>{t.preventDefault();let n=t.dataTransfer;if(!n)return;if(R.value!==`edit`){Nt();return}let r=n.getData(`application/x-aw-channel`)||n.getData(`text/plain`);if(r&&yt.value.some(e=>e.channelId===r)){let n=e.screenToWorld(t.clientX,t.clientY);$e(r,n.x,n.z);return}let i=n.getData(`application/x-aw-daq-node`);if(i){let n=J.nodeById(i);if(n){let r=e.screenToWorld(t.clientX,t.clientY);J.patchNode(i,{posX:Math.round(r.x),posZ:Math.round(r.z)}).then(()=>{if(!n.deviceBindingId){let e=Gu(r.x,r.z,95);e&&Vu(i,e.id)}}).catch(e=>{L.value=I(e)})}return}let a=n.getData(`application/x-aw-dcw-node`);if(a){let n=Y.nodes.find(e=>e.id===a);if(n){let r=e.screenToWorld(t.clientX,t.clientY);Y.patchNode(a,{posX:Math.round(r.x),posZ:Math.round(r.z)}).then(()=>{if(!n.deviceBindingId){let e=Gu(r.x,r.z,95);e&&Y.bindNode(a,e.id).catch(e=>{L.value=I(e)})}N.value&&G(N.value)}).catch(e=>{L.value=I(e)})}return}let o=n.getData(`application/x-aw-model`)||n.getData(`text/plain`);if(o){let n=e.screenToWorld(t.clientX,t.clientY),r=e.dropModelOnWorld(n.x,n.z,o);qt.value=r}})}function G(e){`syncDevices`in e&&e.syncDevices(Gl.value)}y(()=>M.rev,e=>{let t=P.value;!t||!M.loaded||e===0||(t.hydrate(W(),Object.values(M.layouts),Gl.value),Rt())});function It(e){if(!e||!(`applySceneLayouts`in e))return;let t=e;t.applySceneLayouts(Object.values(M.layouts)),t.rebuild(W())}function Rt(){M.load().finally(()=>{})}function zt(e){let t=P.value;t&&(typeof e.posX==`number`&&typeof e.posZ==`number`&&t.focusTo(e.posX,e.posZ),t.setSelected?.({kind:`device`,id:e.id}))}let Bt=x({});function Vt(){if(!(typeof localStorage>`u`))try{let e=JSON.parse(localStorage.getItem(Al)||`{}`);for(let t of Object.keys(e))e[t]&&Number.isFinite(e[t].x)&&(Bt[t]=e[t])}catch{}}function Ht(){try{localStorage.setItem(Al,JSON.stringify(Bt))}catch{}}let Ut=null;function Wt(e,t){let n=e.currentTarget,r=n.closest(`.drag-panel`),i=n.closest(`.town-frame`);if(!r||!i)return;e.preventDefault();let a=r.getBoundingClientRect(),o=i.getBoundingClientRect();r.style.left=`${a.left-o.left}px`,r.style.top=`${a.top-o.top}px`,r.style.bottom=`auto`,r.style.transform=`none`,Bt[t]={x:a.left-o.left,y:a.top-o.top},Ut={frame:i,panel:r,offX:e.clientX-a.left,offY:e.clientY-a.top},document.body.style.userSelect=`none`,document.body.style.cursor=`grabbing`;let s=e=>{let n=Ut;if(!n)return;let r=n.frame.getBoundingClientRect(),i=e.clientX-n.offX-r.left,a=e.clientY-n.offY-r.top,o=n.panel.offsetWidth,s=Math.max(-o+90,Math.min(i,r.width-30)),c=Math.max(4,Math.min(a,r.height-34));n.panel.style.left=`${s}px`,n.panel.style.top=`${c}px`,Bt[t]={x:s,y:c}},c=()=>{Ut=null,document.body.style.userSelect=``,document.body.style.cursor=``,window.removeEventListener(`pointermove`,s),window.removeEventListener(`pointerup`,c),Ht()};window.addEventListener(`pointermove`,s),window.addEventListener(`pointerup`,c)}Vt();let Gt=C(null),Kt=e=>`#${e.toString(16).padStart(6,`0`)}`,qt=C(null),Jt=b(()=>{let e=qt.value;return e?e.mode===`rebind`?_(`townView.kgz2nej193`,{p0:e.agentId?.slice(0,8)??_(`townView.k479op189`),p1:e.textureKey}):_(`townView.k5e2460194`,{p0:e.textureKey}):``}),Yt=b(()=>{let e=F.value;if(!e||e.kind!==`agent`)return[];let t=rn.get(e.id);if(!t||t.length===0)return[];let n=q.value.length?q.value[q.value.length-1]?.at??0:0;return t.filter(e=>e.at>n)}),Xt=b(()=>!F.value||F.value.kind!==`agent`?``:P.value?.getAgentName?.(F.value.id)??_(`townView.k3xdvm125`)),K=b(()=>{let e=F.value;if(!e||e.kind!==`agent`)return null;for(let t of Object.values(T.agents)){let n=(t??[]).find(t=>t.agentId===e.id);if(n)return n}return null}),Zt=b(()=>K.value?.role===`lead`?`Leader`:`Worker`),Qt=b(()=>K.value?.role===`lead`?`LEADER`:`WORKER`),$t=b(()=>{let e=K.value?.state;return _(e===`busy`?`townView.k3n4l5f163`:e===`stopped`?`townView.k3n58d1164`:`townView.k3zcvb115`)}),q=D([]),en=D(!1),tn=new Map,nn=D(null),rn=x(new Map);function an(e,t,n,r,i){let a=typeof r==`number`?r:r?Date.parse(String(r)):Date.now();if(!Number.isFinite(a)||a<=0)return;let o=rn.get(e);o||(o=[],rn.set(e,o));let s=o[o.length-1];s&&s.text===n&&Math.abs(a-s.at)<1500||(o.push({id:`live-${i??a}-${o.length}`,agentId:e,text:n,kind:t,at:a,live:!0}),o.length>Pl&&o.splice(0,o.length-Pl))}function on(){return typeof document>`u`?``:document.cookie.match(/(?:^|;\s*)token=([^;]+)/)?.[1]??``}function sn(e){for(let t of Object.keys(T.agents))if((T.agents[t]??[]).some(t=>t.agentId===e))return t}async function cn(e,t,n=!1){let r=tn.get(e);if(!n&&r&&Date.now()-r.at<Nl){q.value=r.rows;return}en.value=!0;try{let n=on(),r=`/api/workshop/channels/${t}/events?limit=500&excludeTypes=agent.delta`,i=await(await fetch(r,{headers:n?{authorization:`Bearer ${decodeURIComponent(n)}`}:{}})).json().catch(()=>null),a=i?.data?.items??(Array.isArray(i?.data)?i.data:[]),o=[];for(let t of a){let n=fe(t)?.bubble;if(!n||n.agentId!==e)continue;let r=t.at,i=typeof r==`number`?r:r?Date.parse(String(r)):0;o.push({id:`${String(t.seq??o.length)}-${o.length}`,agentId:n.agentId,text:n.text,kind:n.kind,at:i,live:!1})}o.sort((e,t)=>e.at-t.at),tn.set(e,{rows:o,at:Date.now()}),q.value=o}catch{q.value=[]}finally{en.value=!1}}function zl(){let e=F.value;if(!e||e.kind!==`agent`)return;let t=sn(e.id);t&&cn(e.id,t,!0)}y(()=>F.value,e=>{if(!e||e.kind!==`agent`){q.value=[];return}let t=sn(e.id);t?cn(e.id,t):q.value=[]},{immediate:!0});let Bl=b(()=>{let e=F.value;if(!e||e.kind!==`agent`)return`#35e0a0`;let t=sn(e.id);return t?ve(t)??`#35e0a0`:`#35e0a0`});function Vl(e){switch(e){case`artifact`:return _(`townView.k3w9q9165`);case`delta`:return`……`;case`info`:return _(`townView.k44xa7166`);case`error`:return _(`townView.k3zbgf167`);default:return``}}function Hl(e){if(!e||!Number.isFinite(e)||e<=0)return`--:--:--`;let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}`}y(()=>q.value.length+Yt.value.length,async()=>{await d();let e=nn.value;e&&(e.scrollTop=e.scrollHeight)});let Ul=e=>Y.lines.find(t=>t.id===e)?.color,Wl=b(()=>Y.nodes.map(e=>({id:e.id,workspaceId:``,name:e.name,modelRef:`dcw-${e.templateRef.startsWith(`dcw-`)?e.templateRef.slice(4):e.templateRef}`,boundAgentId:null,kind:`daq`,telemetry:{value:e.value??0},desired:{},controls:[],state:e.enabled?e.state===`error`?`alarm`:`running`:`offline`,posX:e.posX,posZ:e.posZ,lineId:e.lineId||void 0,lineColor:e.lineId?Ul(e.lineId):void 0,updatedAt:e.lastWriteAt??e.createdAt}))),Gl=b(()=>[...j.twins.filter(e=>!du(e)),...X.value,...Wl.value]),Kl=e=>Gl.value.find(t=>t.id===e),ql=b(()=>_e.value&&xe.value===0&&!Gl.value.some(e=>typeof e.posX==`number`&&typeof e.posZ==`number`));function Jl(e){return le(()=>{j.load().then(()=>{if(N.value===e){e.syncDevices(Gl.value);for(let t of e.getDeviceNodes()){let n=Kl(t.twinId);n&&e.updateDeviceNode(t.twinId,n.state,n.telemetry)}}})},5e3)}let Yl=C([]),J=Oe(),Y=ke(),Xl=x(Y.templates.map(e=>({id:e.key,name:e.name,code:e.code,ch:e.ch,unit:e.unit,min:e.min,max:e.max,decimals:e.decimals,icon:e.icon})));y(()=>Y.templates,e=>{e?.length&&Xl.splice(0,Xl.length,...e.map(e=>({id:e.key,name:e.name,code:e.code,ch:e.ch,unit:e.unit,min:e.min,max:e.max,decimals:e.decimals,icon:e.icon})))},{immediate:!0,deep:!0});let Zl=ln(`aw.twin.treeOpen`,{});function Ql(e){Zl.value[e]=!Zl.value[e]}let $l=b(()=>{let e=new Map;for(let t of J.nodes){let n=t.templateRef.startsWith(`daq-`)?t.templateRef.slice(4):t.templateRef,r=e.get(n)??[];r.push(t),e.set(n,r)}for(let t of e.values())t.sort((e,t)=>e.name.localeCompare(t.name,void 0,{numeric:!0}));return e}),eu=b(()=>{let e=new Map;for(let t of Y.nodes){let n=t.templateRef.startsWith(`dcw-`)?t.templateRef.slice(4):t.templateRef,r=e.get(n)??[];r.push(t),e.set(n,r)}for(let t of e.values())t.sort((e,t)=>e.name.localeCompare(t.name,void 0,{numeric:!0}));return e});async function tu(e){try{let t=($l.value.get(e.id)?.length??0)+1;await J.createFromTemplate(`daq-${e.id}`,{name:`${e.name} ${String(t).padStart(2,`0`)}`}),Zl.value[`daq:${e.id}`]=!0}catch(e){L.value=I(e)}}async function nu(e){try{await Y.createFromTemplate(`dcw-${e.id}`,{}),Zl.value[`dcw:${e.id}`]=!0}catch(e){L.value=I(e)}}function ru(e,t){e.dataTransfer&&(e.dataTransfer.setData(`application/x-aw-daq-node`,t.id),e.dataTransfer.setData(`text/plain`,t.id),e.dataTransfer.effectAllowed=`copy`)}function iu(e,t){e.dataTransfer&&(e.dataTransfer.setData(`application/x-aw-dcw-node`,t.id),e.dataTransfer.setData(`text/plain`,t.id),e.dataTransfer.effectAllowed=`copy`)}function au(e){return!J.controller.running||!e.enabled||e.state===`offline`?`offline`:e.state===`alarm`?`alarm`:e.state===`warn`?`warn`:`running`}function ou(e){return!e.enabled||e.state===`error`?`offline`:`running`}let su=x(De.map(e=>({id:e.key,name:e.name,code:e.code,ch:e.ch,unit:e.unit,base:e.base,amp:e.amp,min:e.min,max:e.max,decimals:e.decimals,icon:e.icon})));y(()=>J.templates,e=>{e?.length&&su.splice(0,su.length,...e.map(e=>({id:e.key,name:e.name,code:e.code,ch:e.ch,unit:e.unit,base:e.base,amp:e.amp,min:e.min,max:e.max,decimals:e.decimals,icon:e.icon})))},{immediate:!0,deep:!0});let cu=e=>{let t=e.startsWith(`daq-`)?e.slice(4):e;return su.find(e=>e.id===t)},lu=e=>cu(e.templateRef);function uu(e){return!J.controller.running||!e.enabled?`offline`:e.state===`alarm`?`alarm`:`running`}let du=e=>e.kind===`daq`||(e.modelRef??``).startsWith(`daq-`),X=b(()=>J.nodes.map(e=>({id:e.id,workspaceId:``,name:e.name,modelRef:`daq-${lu(e)?.id??`unknown`}`,boundAgentId:null,kind:`daq`,telemetry:{value:e.value??0},desired:{},controls:[],state:uu(e),posX:e.posX,posZ:e.posZ,lineId:e.lineId||void 0,lineColor:e.lineId?Ul(e.lineId):void 0,updatedAt:e.lastAt??e.createdAt}))),fu=D(0),pu=new Map,mu=new Map,hu=null,gu=!1;function _u(){gu||(gu=!0,setTimeout(()=>{gu=!1,fu.value++},200))}function vu(e){if(!e.nodeId||typeof e.value!=`number`||!Number.isFinite(e.value))return;let t=e.state??`ok`;pu.set(e.nodeId,{value:e.value,state:t,atMs:Date.parse(e.at??``)||Date.now()});let n=mu.get(e.nodeId);n||(n=[],mu.set(e.nodeId,n)),n.push(e.value),n.length>Fl&&n.shift();let r=xu.get(e.nodeId);r&&r!==t&&Su(e.nodeId,r,t,e.value),r!==t&&xu.set(e.nodeId,t),_u()}let yu=b(()=>{fu.value;let e=new Map;for(let t of J.nodes){let n=lu(t);if(!n)continue;let r=pu.get(t.id),i=r&&(!t.lastAt||r.atMs>=Date.parse(t.lastAt)),a=i?r.value:t.value;if(a==null)continue;let o=i?r.state:t.state;e.set(t.id,{value:a,hist:mu.get(t.id)??t.hist,phase:0,tpl:n,alarm:o===`alarm`})}return e}),bu=e=>e.value.toFixed(e.tpl.decimals),xu=new Map;function Su(e,t,n,r){let i=J.nodeById(e),a=i?lu(i):null,o=i?.deviceIds??(i?.deviceBindingId?[i.deviceBindingId]:[]),s=(o.length?o.map(e=>j.byId(e)?.name??e.slice(0,8)).join(` / `):null)??i?.name??e.slice(0,8),c=`${r?.toFixed(a?.decimals??2)??`--`} ${a?.unit??``}`;n===`alarm`?lf(_(`townView.k113fir9195`,{p0:s,p1:a?.ch??``,p2:c}),`crit`,s):n===`warn`?lf(_(`townView.k1knv89d196`,{p0:s,p1:a?.ch??``,p2:c}),`warn`,s):t!==`ok`&&n===`ok`&&lf(_(`townView.ksjancw197`,{p0:s,p1:a?.ch??``}),`info`,s)}y(()=>J.nodes.map(e=>`${e.id}:${e.state}`).join(`|`),()=>{for(let e of J.nodes){let t=xu.get(e.id);xu.set(e.id,e.state),!(!t||t===e.state)&&Su(e.id,t,e.state,e.value)}});function Cu(e){return Math.max(0,Math.ceil((Date.parse(e.expiresAt)-Date.now())/1e3))}let wu=()=>{let e=document.cookie.match(/(?:^|;\s*)token=([^;]+)/)?.[1]??``;return{"content-type":`application/json`,authorization:`Bearer ${decodeURIComponent(e)}`}},Tu=D([]),Eu=D(`dcw`),Du=D(``),Ou=D(`auto`),ku=D([]),Au=x({}),ju=null;async function Mu(){let e=F.value?.id;if(!(F.value?.kind!==`agent`||!e))try{let t=await fetch(`/api/workshop/agent-tools/bindings?agentId=${encodeURIComponent(e)}`,{headers:wu()}).then(e=>e.json());Tu.value=t.data?.bindings??[]}catch{}}async function Nu(){let e=F.value?.id;if(!(F.value?.kind!==`agent`||!e))try{let t=await fetch(`/api/workshop/agent-tools/approvals?agentId=${encodeURIComponent(e)}`,{headers:wu()}).then(e=>e.json());ku.value=t.data?.approvals??[]}catch{}}async function Pu(){!F.value?.id||!Du.value||(await fetch(`/api/workshop/agent-tools/bindings`,{method:`POST`,headers:wu(),body:JSON.stringify({agentId:F.value.id,nodeId:Du.value,kind:Eu.value,mode:Ou.value})}),Du.value=``,await Mu())}async function Fu(e){await fetch(`/api/workshop/agent-tools/bindings/${e}`,{method:`DELETE`,headers:wu()}),await Mu()}async function Iu(e,t){await fetch(`/api/workshop/agent-tools/bindings/${e}`,{method:`PATCH`,headers:wu(),body:JSON.stringify({mode:t})}),await Mu()}async function Lu(e,t){await fetch(`/api/workshop/agent-tools/approvals/${e}/decide`,{method:`POST`,headers:wu(),body:JSON.stringify({approved:t,comment:Au[e]??``})}),Reflect.deleteProperty(Au,e),await Nu()}y(()=>F.value?.id,e=>{ju&&=(clearInterval(ju),null),F.value?.kind===`agent`&&e&&(Mu(),Nu(),ju=le(()=>{Nu()},1e3))},{immediate:!0}),s(()=>{ju&&clearInterval(ju)});function Ru(e){return e.kind===`dcw`?Y.nodeById(e.nodeId)?.name??e.nodeId:J.nodeById(e.nodeId)?.name??e.nodeId}let zu=e=>J.nodeById(e)?.deviceIds?.[0]??J.nodeById(e)?.deviceBindingId??null,Bu=e=>e?J.nodes.filter(t=>(t.deviceIds??(t.deviceBindingId?[t.deviceBindingId]:[])).includes(e)).map(e=>e.id):[];function Vu(e,t){J.bindNode(e,t).catch(e=>{L.value=I(e)})}function Hu(e){J.bindNode(e,null).catch(e=>{L.value=I(e)})}let Uu={thermo:`<path d="M10 4a2 2 0 0 1 4 0v9a4 4 0 1 1-4 0V4Z"/><circle cx="12" cy="16.5" r="1.6"/>`,pressure:`<circle cx="12" cy="12" r="8"/><path d="m12 12 3.5-3.5"/><circle cx="12" cy="12" r="1.2"/>`,tension:`<circle cx="12" cy="10" r="4"/><path d="M4 18.5h16M8 18.5V14M16 18.5V14"/><path d="M2.5 10H8M16 10h5.5"/>`,encoder:`<circle cx="12" cy="12" r="8"/><circle cx="12" cy="12" r="2"/><path d="M12 4v3M12 17v3M4 12h3M17 12h3"/>`,camera:`<rect x="3" y="7" width="13" height="10" rx="2"/><path d="m16 11 5-3v8l-5-3"/><circle cx="8" cy="12" r="2.5"/>`,gateway:`<rect x="8" y="11" width="8" height="10" rx="1.5"/><circle cx="12" cy="5.5" r="1.5"/><path d="M12 10V7M8.5 8.5a5 5 0 0 1 7 0M6 6a8.5 8.5 0 0 1 12 0"/>`},Wu=e=>Uu[e]??Uu.gateway;function Gu(e,t,n){let r=null,i=n;for(let n of j.twins){if(du(n)||typeof n.posX!=`number`||typeof n.posZ!=`number`)continue;let a=Math.hypot(n.posX-e,n.posZ-t);a<i&&(i=a,r=n)}return r}let Ku=D(!1),qu=D(!1),Ju=D(420);function Yu(e,t){let n=t.currentTarget,r=n?.closest(`.panel`);if(n&&r){let e=n.getBoundingClientRect().top-r.getBoundingClientRect().top-12;Ju.value=Math.max(160,Math.round(e))}e===`daq`?Ku.value=!Ku.value:qu.value=!qu.value}let Xu=b(()=>{let e=F.value?.kind===`device`?F.value.id:``,t={};if(!e)return t;for(let n of J.nodes){if(n.deviceBindingId===e)continue;let r=lu(n);r&&(t[r.id]??=[]).push({id:n.id,name:n.name,tpl:r,devName:n.deviceBindingId?j.byId(n.deviceBindingId)?.name??null:null,placed:typeof n.posX==`number`})}return t}),Zu=b(()=>Object.values(Xu.value).reduce((e,t)=>e+t.length,0));function Qu(e){let t=F.value?.kind===`device`?F.value.id:``;t&&(Vu(e,t),Ku.value=!1)}let $u=new Map;function ed(e,t){let n=t;n?$u.set(e,n):$u.delete(e)}function td(){for(let[e,t]of $u){let n=yu.value.get(e),r=t.getContext(`2d`);if(!n||!r)continue;let i=t.width,a=t.height;r.clearRect(0,0,i,a);let o=n.hist;if(o.length<2)continue;let s=o[0],c=o[0];for(let e of o)e<s&&(s=e),e>c&&(c=e);let l=Math.max(1e-6,c-s);r.strokeStyle=Nf(e),r.lineWidth=1.4,r.beginPath(),o.forEach((e,t)=>{let n=t/(o.length-1)*(i-2)+1,c=a-2-(e-s)/l*(a-4);t?r.lineTo(n,c):r.moveTo(n,c)}),r.stroke()}}y(()=>J.nodes.map(e=>`${e.id}:${e.posX??``}:${e.posZ??``}:${e.enabled}:${e.state}:${e.deviceBindingId??``}`).join(`|`),()=>{N.value&&G(N.value)}),y(()=>Y.nodes.map(e=>`${e.id}:${e.posX??``}:${e.posZ??``}:${e.enabled}:${e.deviceBindingId??``}:${e.value??``}`).join(`|`),()=>{N.value&&G(N.value)}),y(()=>J.nodes.map(e=>`${e.id}:${e.deviceBindingId??``}`).join(`|`),()=>{let e=P.value;!e||!(`syncDaqLinks`in e)||e.syncDaqLinks(J.nodes.filter(e=>e.deviceBindingId).map(e=>({daqId:e.id,deviceId:e.deviceBindingId})))});let nd=b(()=>F.value?.kind===`device`&&(rd.value?.modelRef||``).startsWith(`daq-`)),rd=b(()=>F.value?.kind===`device`?Kl(F.value?.id)??null:null),id=b(()=>{let e=F.value?.id;return e?yu.value.get(e)??null:null}),ad=D(``),od=b(()=>{let e=F.value?.id;return e?Bu(e).map(e=>{let t=Kl(e),n=yu.value.get(e),r=n?.tpl??cu(t?.modelRef??``);return{daqId:e,name:t?.name??e,ch:r?.ch??t(`townView.k1ef3cls168`),icon:r?.icon??`gateway`,value:n?bu(n):`--`,unit:n?.tpl.unit??r?.unit??``,color:Nf(e)}}):[]}),sd=b(()=>{let e=F.value?.id;if(!e)return``;let t=zu(e);return t?j.twins.find(e=>e.id===t)?.name??t.slice(0,8):``}),cd=e=>e?Y.nodes.filter(t=>t.deviceBindingId===e):[];function ld(e){let t=Y.nodeById(e);if(!t||!t.lineId)return null;let n=Y.lineStateOf(t.lineId);if(!n.active||!n.recipeId)return null;let r=Y.recipes.find(e=>e.id===n.recipeId);return r?r.params.find(t=>t.nodeId===e)??null:null}let ud=b(()=>{let e=F.value?.id;return e?cd(e).map(e=>{let t=e.templateRef.startsWith(`dcw-`)?e.templateRef.slice(4):e.templateRef,n=Y.templates.find(e=>e.key===t),r=ld(e.id);return{dcwId:e.id,name:e.name,ch:n?.ch??t,unit:e.unit,icon:n?.icon??`gateway`,value:e.value,state:e.state,decimals:e.decimals,gMin:e.min,gMax:e.max,rMin:r?.min??null,rMax:r?.max??null}}):[]});function dd(e){let t=ld(e.id);return t&&(t.min!=null||t.max!=null)?{lo:t.min??-1/0,hi:t.max??1/0,src:`recipe`}:{lo:e.min,hi:e.max,src:`global`}}function fd(e){let t=e.rMin??e.gMin,n=e.rMax??e.gMax;return!Number.isFinite(t)||!Number.isFinite(n)||n<=t||e.value==null?50:Math.min(100,Math.max(0,(e.value-t)/(n-t)*100))}let pd=x({}),md=x({});function hd(e){let t=pd[e.id];if(t==null||t===``)return;let n=dd(e);if(Number(t)<n.lo||Number(t)>n.hi){md[e.id]=_(`townView.kbuyve5198`,{p0:n.src===`recipe`?_(`townView.kb251ac190`):_(`townView.k1iwj796179`),p1:Number.isFinite(n.lo)?n.lo:`-∞`,p2:Number.isFinite(n.hi)?n.hi:`+∞`});return}md[e.id]=``,Y.write(e.id,Number(t)).then(t=>{t.ok||(md[e.id]=t.message)}).catch(t=>{md[e.id]=I(t)})}let gd=e=>{let t=e.startsWith(`dcw-`)?e.slice(4):e;return Xl.find(e=>e.id===t)},_d=b(()=>{let e=F.value?.kind===`device`?F.value.id:``,t={};if(!e)return t;for(let n of Y.nodes){if(n.deviceBindingId===e)continue;let r=gd(n.templateRef);r&&(t[r.id]??=[]).push({id:n.id,name:n.name,tpl:r,devName:n.deviceBindingId?j.byId(n.deviceBindingId)?.name??null:null,placed:typeof n.posX==`number`})}return t}),vd=b(()=>Object.values(_d.value).reduce((e,t)=>e+t.length,0));function yd(e){let t=F.value?.kind===`device`?F.value.id:``;t&&(Y.bindNode(e,t).catch(e=>{L.value=I(e)}),qu.value=!1)}function bd(e){Y.bindNode(e,null).catch(e=>{L.value=I(e)})}let xd=b(()=>F.value?.kind===`device`&&(Kl(F.value?.id)?.modelRef??``).startsWith(`dcw-`)),Z=b(()=>{let e=F.value?.id;return e?Y.nodeById(e)??null:null}),Sd=b(()=>{let e=Z.value;return e?dd(e):null}),Cd=b(()=>{let e=Z.value;return e?.deviceBindingId?j.twins.find(t=>t.id===e.deviceBindingId)?.name??e.deviceBindingId.slice(0,8):``}),wd=D(``);function Td(){let e=Z.value;!e||!wd.value||(Y.bindNode(e.id,wd.value).catch(e=>{L.value=I(e)}),wd.value=``)}function Ed(){let e=Z.value;e&&Y.bindNode(e.id,null).catch(e=>{L.value=I(e)})}function Dd(){let e=Z.value;e&&hd(e)}function Od(e){if(!e)return`--`;let t=dd(e);return`${Number.isFinite(t.lo)?t.lo:`-∞`} ~ ${Number.isFinite(t.hi)?t.hi:`+∞`} ${e.unit}`}function kd(e){if(!e)return``;let t=dd(e);return`${Number.isFinite(t.lo)?t.lo:``} ~ ${Number.isFinite(t.hi)?t.hi:``}`}let Q=b(()=>{let e=F.value?.id;return e?J.nodeById(e)??null:null}),Ad=D(null);y(Q,e=>{Ad.value=e?e.intervalMs??J.controller.defaultIntervalMs:null},{immediate:!0});function jd(){let e=Q.value;!e||Ad.value==null||J.patchNode(e.id,{intervalMs:Math.max(120,Math.min(6e4,Math.round(Ad.value)))}).catch(e=>{L.value=I(e)})}function Md(e,t){let n=Number(t);Number.isFinite(n)&&J.patchNode(Q.value.id,{[e]:(e.startsWith(`warn`),n)}).catch(e=>{L.value=I(e)})}let Nd=D(!0);function Pd(e){let t=zu(e)??e,n=Kl(t);n&&(F.value={kind:`device`,id:t,scale:F.value?.scale??1,rotation:F.value?.rotation??0},nt.value=n.name)}let Fd=D(!1);function Id(){Fd.value=!Fd.value,P.value?.setAutoOrbit(Fd.value)}function Ld(){let e=P.value,t=F.value;if(e){if(!t){L.value=_(`townView.k15tn2fh169`);return}if(t.kind===`device`){let n=e.getDeviceNodes().find(e=>e.twinId===t.id);n&&e.focusTo(n.x,n.z)}else{let n=e.getAgent(t.id);n&&e.focusTo(n.root.position.x,n.root.position.z)}}}let Rd=D({}),zd=ln(`aw.twin.calloutNear`,1150),Bd=b(()=>{let e={};for(let t of X.value){let n=yu.value.get(t.id);if(!n)continue;let r={ch:n.tpl.ch,value:bu(n),unit:n.tpl.unit,alarm:n.alarm??!1};(e[t.id]??=[]).push(r);let i=zu(t.id);i&&(e[i]??=[]).push(r)}return e}),Vd=b(()=>{let e={};for(let t of Y.nodes){if(!t.deviceBindingId)continue;let n=t.templateRef.startsWith(`dcw-`)?t.templateRef.slice(4):t.templateRef,r=Y.templates.find(e=>e.key===n),i=dd(t);(e[t.deviceBindingId]??=[]).push({id:t.id,ch:r?.ch??n,name:t.name,unit:t.unit,value:t.value,readValue:t.readValue,lastReadAt:t.lastReadAt,decimals:t.decimals,lo:i.lo,hi:i.hi,src:i.src})}return e}),Hd=D({pos:{x:0,y:0,z:0},target:{x:0,z:0},yaw:0,dolly:1}),Ud=b(()=>{if(!Nd.value)return[];let e=P.value;if(!e)return[];let t=e.getDeviceNodes(),n=Jd.value?.clientWidth??1600,r=[];for(let e of X.value){let n=yu.value.get(e.id);if(!n)continue;let i=zu(e.id),a=i?t.find(e=>e.twinId===i):t.find(t=>t.twinId===e.id);if(!a)continue;let o=Rd.value[e.id];o&&r.push({t:e,st:n,anchor:a,pos:o})}let i=new Map(r.map(e=>[e.anchor.twinId,e.anchor.topY])),a=new Map;for(let e of r){let t=a.get(e.anchor.twinId)??[];t.push(e),a.set(e.anchor.twinId,t)}let o=[];for(let e of a.values()){e.sort((e,t)=>e.t.id<t.t.id?-1:1);let t=e[0],r=Math.hypot(Hd.value.pos.x-t.anchor.x,Hd.value.pos.y-(i.get(t.anchor.twinId)??60),Hd.value.pos.z-t.anchor.z)<zd.value,a=Math.min(n-96,Math.max(96,t.pos.x));e.forEach((e,n)=>{let{lo:i,hi:s}=bf(e.st.tpl.min,e.st.tpl.max);o.push({id:e.t.id,x:a,y:t.pos.y-n*Il,label:`${e.st.tpl.ch} · ${e.anchor.name||e.t.name}`,value:bu(e.st),unit:e.st.tpl.unit,lo:i,hi:s,warn:e.st.alarm??!1,near:r,leader:n===0})})}return o}),Wd=null,Gd=b(()=>j.twins.length),Kd=b(()=>j.twins.filter(e=>e.state===`running`).length),qd=ue(),Jd=D(null),Yd=D(`std`);function Xd(e){Yd.value=e.target.value,P.value?.setViewPreset(Yd.value)}function Zd(){document.fullscreenElement?document.exitFullscreen():Jd.value?.requestFullscreen?.()}let Qd=b(()=>j.twins.filter(e=>e.state===`idle`).length),$d=b(()=>j.twins.filter(e=>e.state===`alarm`).length),ef=b(()=>j.twins.filter(e=>e.state===`offline`).length),tf=b(()=>{let e=j.twins.length;if(!e)return 100;let t=Kd.value+Qd.value;return Math.round(t/e*100)}),nf=b(()=>tf.value>=90?`#35e0a0`:tf.value>=60?`#f6c453`:`#ff6b6b`),rf=D(null);function af(){let e=rf.value;if(!e)return;let t=e.getContext(`2d`);if(!t)return;let n=j.twins.length||1,r=[{n:Kd.value,color:`#35e0a0`},{n:Qd.value,color:`#f6c453`},{n:$d.value,color:`#ff6b6b`},{n:ef.value,color:`#3a4a63`}];t.clearRect(0,0,118,118),t.lineWidth=12;let i=-Math.PI/2;for(let e of r){if(!e.n)continue;let r=e.n/n*Math.PI*2;t.beginPath(),t.strokeStyle=e.color,t.arc(59,59,48,i,i+r),t.stroke(),i+=r}}y(tf,()=>af()),y(()=>j.twins.length,()=>af()),oe(()=>af());let of=D([]),sf=0,cf=[_(`townView.k3ng94k170`),_(`townView.k3mi2n0171`),_(`townView.k3ncnxl172`)];function lf(e,t=`warn`,n=`SYSTEM`){let r=new Date,i=[r.getHours(),r.getMinutes(),r.getSeconds()].map(e=>String(e).padStart(2,`0`)).join(`:`);of.value.unshift({id:++sf,txt:e,src:n,time:i,state:0,level:t}),of.value.length>30&&of.value.pop()}let uf=b(()=>of.value.filter(e=>e.state<2).length);function df(e){let t=of.value.find(t=>t.id===e);t&&(t.state=Math.min(2,t.state+1))}function ff(){of.value=of.value.map(e=>({...e,state:2}))}let pf=D(100),mf=ln(`aw.twin.fpsCap`,`60`),hf=[{v:`60`,label:`60`},{v:`120`,label:`120`},{v:`0`,label:`∞`}];function gf(e){mf.value=e,P.value?.setFpsCap(Number(e))}let _f=ln(`aw.twin.quality`,`auto`),vf=[{v:`auto`,label:`townView.qualityAuto`},{v:`normal`,label:`townView.qualityNormal`},{v:`hd`,label:`townView.qualityHD`},{v:`ultra`,label:`townView.qualityUltra`}];function yf(e){_f.value=e,P.value?.setQualityMode(e)}function bf(e,t){let n=pf.value/100,r=(e+t)/2;return{lo:r-(r-e)*n,hi:r+(t-r)*n}}let xf=D(!1);function Sf(){xf.value=!xf.value,lf(xf.value?_(`townView.kb157zk173`):_(`townView.k1s9qzr9174`),xf.value?`crit`:`info`,`SYSTEM`)}let Cf=D(1.12),wf=D(1);function Tf(e,t,n){return`${Math.min(100,Math.max(0,(e-t)/(n-t)*100)).toFixed(1)}%`}function Ef(e){Cf.value=Number(e.target.value)/100,P.value?.setExposure(Cf.value)}function Df(e){wf.value=Number(e.target.value)/100,P.value?.setTerritoryOpacity(wf.value)}function Of(){P.value?.resetView(),Cf.value=1.12,wf.value=1,P.value?.setExposure(1.12),P.value?.setTerritoryOpacity(1)}function kf(e){jf.value={...jf.value,[e]:!jf.value[e]}}let Af=D(null),jf=D({}),Mf=[`#35e0a0`,`#41c8f4`,`#f6c453`,`#a78bfa`,`#ff6b6b`,`#4dd0e1`],Nf=e=>Mf[Math.abs(e.split(``).reduce((e,t)=>e*31+t.charCodeAt(0),7))%Mf.length]??`#35e0a0`;function Pf(e,t){let n=jf.value[e];return n==null?(t??X.value.findIndex(t=>t.id===e))<Ll:!n}let Ff=D(!1),If=b(()=>Math.max(X.value.length-Ll,0)),Lf=b(()=>Ff.value?X.value:X.value.slice(0,Ll));function Rf(){let e=Af.value;if(!e)return;let t=Math.min(window.devicePixelRatio,2),n=e.clientWidth,r=e.clientHeight;(e.width!==n*t||e.height!==r*t)&&(e.width=n*t,e.height=r*t);let i=e.getContext(`2d`);if(i){i.setTransform(t,0,0,t,0,0),i.clearRect(0,0,n,r),i.strokeStyle=`rgba(29, 42, 66, 0.6)`,i.lineWidth=1;for(let e=1;e<4;e++){let t=r/4*e;i.beginPath(),i.moveTo(0,t),i.lineTo(n,t),i.stroke()}X.value.forEach((e,t)=>{if(!Pf(e.id,t))return;let a=yu.value.get(e.id);if(!a)return;let o=mu.get(e.id)??a.hist;if(o.length<2)return;let s=a.tpl.min,c=a.tpl.max;i.strokeStyle=Nf(e.id),i.lineWidth=1.6,i.beginPath(),o.forEach((e,t)=>{let a=t/119*n,o=r-(e-s)/(c-s)*(r-8)-4;t===0?i.moveTo(a,o):i.lineTo(a,o)}),i.stroke()})}}let zf=null,Bf=null,Vf=null,Hf=null,Uf=D(null),Wf=b(()=>Math.min(5,Math.max(.4,Hd.value.dolly))),$=null;function Gf(e){let t=e.clientWidth||220,n=e.clientHeight||148;return{s:t/(Rl*Wf.value),w:t,h:n}}function Kf(){let e=Uf.value,t=Gt.value,n=P.value;if(!e)return;let r=Math.min(window.devicePixelRatio||1,2),i=Gf(e);(e.width!==Math.round(i.w*r)||e.height!==Math.round(i.h*r))&&(e.width=Math.round(i.w*r),e.height=Math.round(i.h*r));let a=e.getContext(`2d`);if(!a)return;a.setTransform(r,0,0,r,0,0),a.fillStyle=`#060b13`,a.fillRect(0,0,i.w,i.h);let o=n?.getCameraPose(),s=o?o.target.x:jl/2,c=o?o.target.z:Ml/2,l=i.w/2/i.s,u=i.h/2/i.s,d=(e,t)=>({x:i.w/2+(e-s)*i.s,y:i.h/2+(t-c)*i.s}),f=(e,t,n=60)=>e>s-l-n&&e<s+l+n&&t>c-u-n&&t<c+u+n;a.fillStyle=`rgba(65,200,244,.10)`;for(let e=Math.floor((s-l)/250)*250;e<=s+l;e+=250)for(let t=Math.floor((c-u)/250)*250;t<=c+u;t+=250){let n=d(e,t);a.fillRect(n.x-1,n.y-1,1.6,1.6)}let p=d(0,0),m=d(jl,Ml);a.strokeStyle=`rgba(53,224,160,.35)`,a.lineWidth=1,a.strokeRect(p.x,p.y,m.x-p.x,m.y-p.y);for(let e of t?.blocks??[]){let t=e.x*jl,n=e.y*Ml;if(!f(t,n,400))continue;let r=d(t,n),o=Math.max(4,(e.rx??.03)*jl*i.s),s=Math.max(3,(e.rz??.03)*Ml*i.s);a.strokeStyle=Kt(e.color),a.globalAlpha=.6,a.lineWidth=1,a.beginPath(),a.ellipse(r.x,r.y,o,s,0,0,Math.PI*2),a.stroke(),a.globalAlpha=.08,a.fillStyle=Kt(e.color),a.fill(),a.globalAlpha=1}a.strokeStyle=`rgba(65,200,244,.28)`;let h=new Set(J.nodes.filter(e=>e.deviceBindingId).map(e=>e.id));for(let[e,n]of J.nodes.filter(e=>e.deviceBindingId).map(e=>[e.id,e.deviceBindingId])){let r=(t?.devices??[]).find(t=>t.twinId===e),i=(t?.devices??[]).find(e=>e.twinId===n);if(!r||!i)continue;let o=d(r.x*jl,r.y*Ml),s=d(i.x*jl,i.y*Ml);a.beginPath(),a.moveTo(o.x,o.y),a.lineTo(s.x,s.y),a.stroke()}let g=e=>e.x>=7&&e.x<=i.w-7&&e.y>=7&&e.y<=i.h-7?{...e,edge:!1}:{x:Math.min(i.w-7,Math.max(7,e.x)),y:Math.min(i.h-7,Math.max(7,e.y)),edge:!0};for(let e of t?.devices??[]){let t=g(d(e.x*jl,e.y*Ml));if(e.daq)a.globalAlpha=t.edge?.4:1,a.fillStyle=`#35e0a0`,a.beginPath(),a.arc(t.x,t.y,t.edge?1.8:2.4,0,7),a.fill(),!t.edge&&e.twinId&&h.has(e.twinId)&&(a.strokeStyle=`rgba(53,224,160,.5)`,a.beginPath(),a.arc(t.x,t.y,4.4,0,7),a.stroke());else{a.globalAlpha=t.edge?.4:1,a.fillStyle=Kt(e.color);let n=t.edge?3.6:5.2;a.fillRect(t.x-n/2,t.y-n/2,n,n)}a.globalAlpha=1}for(let e of t?.agents??[]){let t=g(d(e.x*jl,e.y*Ml));a.globalAlpha=t.edge?.35:1,a.fillStyle=Kt(e.color),a.beginPath(),a.arc(t.x,t.y,t.edge?1.6:2.2,0,7),a.fill(),a.globalAlpha=1}if(o){let e=Math.atan2(-Math.cos(o.yaw),-Math.sin(o.yaw)),t=Math.min(i.w,i.h)*.36;a.fillStyle=`rgba(65,200,244,.14)`,a.strokeStyle=`rgba(65,200,244,.5)`,a.lineWidth=1,a.beginPath(),a.moveTo(i.w/2,i.h/2),a.arc(i.w/2,i.h/2,t,e-.4,e+.4),a.closePath(),a.fill(),a.stroke();let n=d(o.pos.x,o.pos.z);n.x>4&&n.x<i.w-4&&n.y>4&&n.y<i.h-4&&(a.fillStyle=`rgba(255,255,255,.85)`,a.beginPath(),a.arc(n.x,n.y,2.4,0,7),a.fill())}a.fillStyle=`#fff`,a.beginPath(),a.arc(i.w/2,i.h/2,3,0,7),a.fill(),a.strokeStyle=`rgba(255,255,255,.4)`,a.beginPath(),a.arc(i.w/2,i.h/2,5.5,0,7),a.stroke()}function qf(e){P.value?.zoomBy(e.deltaY>0?.14:-.12)}function Jf(e){$={lx:e.clientX,ly:e.clientY,moved:!1};try{e.target.setPointerCapture?.(e.pointerId)}catch{}}function Yf(e){let t=Uf.value,n=P.value;if(!$||!t||!n)return;let r=Gf(t),i=e.clientX-$.lx,a=e.clientY-$.ly;Math.abs(i)+Math.abs(a)>3&&($.moved=!0);let o=i/r.s,s=a/r.s;$.lx=e.clientX,$.ly=e.clientY,n.panWorldBy(o,s)}function Xf(e){let t=Uf.value,n=P.value;if($&&!$.moved&&t&&n){let r=t.getBoundingClientRect(),i=Gf(t),a=n.getCameraPose(),o=a.target.x+(e.clientX-r.left-r.width/2)/i.s,s=a.target.z+(e.clientY-r.top-r.height/2)/i.s;n.focusTo(o,s)}$=null}function Zf(){let e=N.value;e?.getMinimapState&&(Gt.value=e.getMinimapState()),Kf();let t=P.value;if(t&&(Hd.value=t.getCameraPose(),Nd.value)){let e=t.getDeviceNodes(),n=Jd.value?.getBoundingClientRect(),r={};for(let i of X.value){let a=zu(i.id),o=a?e.find(e=>e.twinId===a):e.find(e=>e.twinId===i.id);if(!o)continue;let s=t.worldToScreen(o.x,(o.topY??92)+26,o.z);s&&n&&(r[i.id]={x:s.x-n.left,y:s.y-n.top})}Rd.value=r}}function Qf(){if(document.hidden){zf&&=(clearInterval(zf),null),Hf&&=(clearInterval(Hf),null),Bf&&=(clearInterval(Bf),null);return}zf||=le(Zf,150),Hf||=le(()=>{J.nodes.length&&(Rf(),td())},200),Bf||=le(()=>{let e=N.value;e?.getRecentActivity&&(Yl.value=e.getRecentActivity())},400)}return oe(()=>{window.addEventListener(`keydown`,ze),document.addEventListener(`visibilitychange`,Qf),J.ensureWsFeed(),J.load(),hu=Ee().subscribe(e=>{e.type===`daq.reading`&&vu(e.payload)}),Y.ensureWsFeed(),Y.load(),zf=le(Zf,150),Hf=le(()=>{J.nodes.length&&(Rf(),td())},200),Bf=le(()=>{let e=N.value;e?.getRecentActivity&&(Yl.value=e.getRecentActivity())},400)}),s(()=>{window.removeEventListener(`keydown`,ze);for(let e of At)try{e()}catch{}At.length=0,document.removeEventListener(`visibilitychange`,Qf),zf&&clearInterval(zf),Hf&&clearInterval(Hf),Bf&&clearInterval(Bf),Vf&&clearInterval(Vf),Wd&&clearInterval(Wd),zf=null,Hf=null,Bf=null,Vf=null,Wd=null}),oe(()=>{Tt();let e=W();e.length>0&&N.value&&N.value.rebuild(e)}),s(()=>{hu?.();let e=N._off;e?.(),P.value?.dispose(),P.value=null,he.value?.destroy(!0),he.value=null,N.value=null}),(o,s)=>{let d=rt,_=Pt;return l(),S(`div`,un,[O(`header`,dn,[O(`div`,fn,[s[52]||=ae(`<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>`,1),O(`div`,null,[s[51]||=O(`div`,{class:`brand-name`},[g(` DIGITAL `),O(`em`,null,`TWIN`)],-1),O(`div`,pn,` AGENTWORKSHOP · `+m(o.$t(`townView.klyi8yg127`)),1)])]),O(`nav`,{class:`nav-tabs`,"aria-label":o.$t(`townView.k1c9jyta001`)},[O(`div`,hn,[O(`button`,{class:u({on:f(R)===`browse`}),onClick:s[0]||=e=>f(R)===`edit`&&Ie()},m(o.$t(`townView.k48dwh027`)),3),O(`button`,{class:u({on:f(R)===`edit`}),onClick:s[1]||=e=>f(R)===`browse`&&Ie()},m(o.$t(`townView.k45eb0028`)),3)]),O(`button`,{class:`nav-action`,disabled:f(R)!==`edit`,title:f(R)===`edit`?`把全部设备的位置/朝向/缩放写入数据库`:`运行模式只读`,onClick:Ue},m(o.$t(`townView.k1b3bk8t029`)),9,gn),f(z)&&f(z).state!==`idle`?(l(),S(`span`,{key:0,class:u([`save-chip`,`s-${f(z).state}`])},m(f(Fe)),3)):w(``,!0)],8,mn),O(`div`,_n,[O(`span`,{class:u([`nav-chip mono`,{"nav-bell-warn":f(uf)>0}]),title:o.$t(`townView.k1fsi3ir002`)},`◉ `+m(f(uf)),11,vn),O(`span`,yn,m(f(ye))+` FPS`,1),O(`div`,{class:`avatar-chip`,title:o.$t(`townView.k1demf38003`)},[O(`div`,xn,m((f(qd).user?.name??`OP`).slice(0,2).toUpperCase()),1),O(`span`,null,m(f(qd).user?.name||o.$t(`townView.k1pub99m139`)),1)],8,bn)])]),O(`div`,Sn,[O(`aside`,Cn,[O(`section`,wn,[O(`div`,Tn,[O(`h3`,null,m(o.$t(`townView.k1k75lzy030`)),1),O(`span`,En,m(f(tt).length),1)]),ie(d,{class:`lib-embed`})]),O(`section`,Dn,[O(`div`,On,[O(`h3`,null,m(o.$t(`townView.k2gwyas031`)),1),O(`span`,kn,m(f(X).length),1)]),O(`div`,An,[O(`button`,{class:u([`daq-ctl-btn`,{on:f(J).controller.running}]),title:f(J).controller.running?`暂停全部采集:停止所有启用节点的采样(节点级启停独立)`:`恢复全部采集:仅启用节点恢复采集(手动停用的保持停用)`,onClick:s[2]||=e=>f(J).controllerAction(f(J).controller.running?`pause`:`resume`)},m(f(J).controller.running?o.$t(`townView.k3w3j8f140`):o.$t(`townView.k3n93ed175`)),11,jn),O(`label`,{class:`daq-ctl-cycle mono`,title:o.$t(`townView.khzlyf5004`)},[g(m(o.$t(`townView.k3xg3w032`))+` `,1),O(`input`,{type:`number`,min:`200`,max:`60000`,step:`100`,value:f(J).controller.defaultIntervalMs,onChange:s[3]||=e=>f(J).controllerAction(`config`,Number(e.target.value))},null,40,Nn),s[53]||=g(`ms `,-1)],8,Mn)]),O(`div`,Pn,[(l(!0),S(h,null,c(f(su),e=>(l(),S(`div`,{key:e.id,class:`daq-group`},[O(`div`,{class:u([`daq-card tpl`,{open:!!f(Zl)[`daq:${e.id}`]}]),role:`button`,tabindex:`0`,title:o.$t(`townView.k2tplxp0001`,{p0:e.name,p1:e.ch,p2:e.min,p3:e.max,p4:e.unit}),onClick:t=>Ql(`daq:${e.id}`),onKeydown:n(a(t=>Ql(`daq:${e.id}`),[`prevent`]),[`enter`])},[s[54]||=O(`span`,{class:`daq-caret`},`▶`,-1),O(`span`,In,[(l(),S(`svg`,{class:`daq-svg`,viewBox:`0 0 24 24`,innerHTML:Wu(e.icon)},null,8,Ln))]),O(`div`,Rn,[O(`span`,zn,m(e.name),1),O(`span`,Bn,m(e.code),1)]),f(R)===`edit`?(l(),S(`button`,{key:0,class:`daq-add`,title:o.$t(`townView.k2tplxp0002`,{p0:e.name}),onClick:a(t=>tu(e),[`stop`])},` + `,8,Vn)):w(``,!0),O(`span`,Hn,`×`+m(f($l).get(e.id)?.length??0),1)],42,Fn),f(Zl)[`daq:${e.id}`]?(l(),S(`div`,Un,[(l(!0),S(h,null,c(f($l).get(e.id)??[],t=>(l(),S(`div`,{key:t.id,class:u([`daq-node`,{placed:typeof t.posX==`number`}]),draggable:f(R)===`edit`,title:typeof t.posX==`number`?o.$t(`townView.k2tplxp0005`):o.$t(`townView.k2tplxp0006`),onDragstart:e=>ru(e,t),onClick:e=>typeof t.posX==`number`&&zt({id:t.id,posX:t.posX,posZ:t.posZ})},[O(`span`,{class:u([`node-dot`,au(t)])},null,2),O(`div`,Gn,[O(`span`,Kn,m(t.name),1),O(`span`,qn,[O(`span`,Jn,m(t.value==null?`--`:`${t.value.toFixed(e.decimals)} ${e.unit}`),1),O(`span`,Yn,m(t.deviceBindingId?f(j).byId(t.deviceBindingId)?.name??o.$t(`townView.k3own4q148`):o.$t(`townView.k3own4q148`)),1)])]),typeof t.posX==`number`?(l(),S(`span`,Xn,`✓`)):w(``,!0)],42,Wn))),128)),f($l).get(e.id)?.length?w(``,!0):(l(),S(`div`,Zn,m(o.$t(`townView.k2tplxp0003`)),1))])):w(``,!0)]))),128))])]),O(`section`,Qn,[O(`div`,$n,[O(`h3`,null,m(o.$t(`townView.km7ayhi033`)),1),O(`span`,er,m(f(Y).nodes.length),1)]),O(`div`,tr,[(l(!0),S(h,null,c(f(Xl),e=>(l(),S(`div`,{key:e.id,class:`daq-group`},[O(`div`,{class:u([`daq-card tpl`,{open:!!f(Zl)[`dcw:${e.id}`]}]),role:`button`,tabindex:`0`,title:o.$t(`townView.k2tplxp0001`,{p0:e.name,p1:e.ch,p2:e.min,p3:e.max,p4:e.unit}),onClick:t=>Ql(`dcw:${e.id}`),onKeydown:n(a(t=>Ql(`dcw:${e.id}`),[`prevent`]),[`enter`])},[s[55]||=O(`span`,{class:`daq-caret`},`▶`,-1),O(`span`,rr,[(l(),S(`svg`,{class:`daq-svg`,viewBox:`0 0 24 24`,innerHTML:Wu(e.icon)},null,8,ir))]),O(`div`,ar,[O(`span`,or,m(e.name),1),O(`span`,sr,m(e.code),1)]),f(R)===`edit`?(l(),S(`button`,{key:0,class:`daq-add`,title:o.$t(`townView.k2tplxp0002`,{p0:e.name}),onClick:a(t=>nu(e),[`stop`])},` + `,8,cr)):w(``,!0),O(`span`,lr,`×`+m(f(eu).get(e.id)?.length??0),1)],42,nr),f(Zl)[`dcw:${e.id}`]?(l(),S(`div`,ur,[(l(!0),S(h,null,c(f(eu).get(e.id)??[],t=>(l(),S(`div`,{key:t.id,class:u([`daq-node`,{placed:typeof t.posX==`number`}]),draggable:f(R)===`edit`,title:typeof t.posX==`number`?o.$t(`townView.k2tplxp0005`):o.$t(`townView.k2tplxp0006`),onDragstart:e=>iu(e,t),onClick:e=>typeof t.posX==`number`&&zt({id:t.id,posX:t.posX,posZ:t.posZ})},[O(`span`,{class:u([`node-dot`,ou(t)])},null,2),O(`div`,fr,[O(`span`,pr,m(t.name),1),O(`span`,mr,[O(`span`,hr,m(t.value==null?`--`:`${t.value.toFixed(e.decimals)} ${e.unit}`),1),O(`span`,gr,m(t.deviceBindingId?f(j).byId(t.deviceBindingId)?.name??o.$t(`townView.k3own4q148`):o.$t(`townView.k3own4q148`)),1)])]),typeof t.posX==`number`?(l(),S(`span`,_r,`✓`)):w(``,!0)],42,dr))),128)),f(eu).get(e.id)?.length?w(``,!0):(l(),S(`div`,vr,m(o.$t(`townView.k2tplxp0003`)),1))])):w(``,!0)]))),128))])]),O(`section`,yr,[O(`div`,br,[O(`h3`,null,m(o.$t(`townView.k1c9n911034`)),1),O(`span`,xr,m(f(yt).length),1)]),O(`div`,Sr,[(l(!0),S(h,null,c(f(yt),e=>(l(),S(`div`,{key:e.channelId,class:u([`scene-row`,{active:e.placed}]),draggable:!e.placed&&f(R)===`edit`,"data-channel-id":e.channelId,title:e.placed?`已在场景中,点击定位`:`拖拽到场景放置`,onDragstart:t=>e.placed?void 0:Ct(t,e.channelId),onClick:t=>Qe(e)},[O(`span`,{class:`scene-ico`,style:p({"--ch":e.color})},null,4),O(`div`,wr,[O(`span`,Tr,m(e.name),1),O(`span`,Er,m(e.agentCount)+` `+m(o.$t(`townView.k1brss7t128`))+` `+m(e.placed?o.$t(`townView.k3n94g3141`):o.$t(`townView.k3os7i3176`)),1)]),e.placed?(l(),S(`span`,Dr,`✓`)):(l(),S(`span`,Or,`+`))],42,Cr))),128)),f(Ze)?(l(),S(`div`,kr,m(f(Ze)),1)):w(``,!0)])])]),O(`main`,Ar,[O(`div`,{ref_key:`stageRef`,ref:Jd,class:`stage`},[O(`div`,{id:`town-host`,ref_key:`hostRef`,ref:me,class:`town-host`},null,512),s[71]||=O(`div`,{class:`stage-vignette`},null,-1),O(`div`,jr,[O(`div`,Mr,[O(`h2`,null,m(o.$t(`townView.k1b0z4vr035`)),1),O(`span`,Nr,`CH · `+m(f(Me)||o.$t(`townView.k3lkuz3142`)),1)]),O(`div`,Pr,[O(`button`,{class:`vp-tool`,title:o.$t(`townView.k18d6wnb005`),onClick:Ld},[...s[56]||=[O(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[O(`circle`,{cx:`12`,cy:`12`,r:`7`}),O(`path`,{d:`M12 2v4M12 18v4M2 12h4M18 12h4`})],-1)]],8,Fr),O(`button`,{class:u([`vp-tool`,{on:f(Fd)}]),title:o.$t(`townView.k1io51dn006`),onClick:Id},[...s[57]||=[O(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[O(`circle`,{cx:`12`,cy:`12`,r:`3.2`}),O(`path`,{d:`M20.5 9a10 10 0 0 1 .3 4.5M3.5 15a10 10 0 0 1-.3-4.5`})],-1)]],10,Ir),O(`button`,{class:u([`vp-tool`,{on:f(Nd)}]),title:o.$t(`townView.k1sgjlq8007`),onClick:s[4]||=e=>Nd.value=!f(Nd)},[...s[58]||=[O(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[O(`path`,{d:`M4 8h12l4 4-4 4H4z`}),O(`circle`,{cx:`8.5`,cy:`12`,r:`1.4`})],-1)]],10,Lr),O(`button`,{class:`vp-tool`,title:o.$t(`townView.k3wuf0008`),onClick:Zd},[...s[59]||=[O(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[O(`path`,{d:`M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5`})],-1)]],8,Rr)])]),O(`div`,zr,[O(`select`,{value:f(Yd),"aria-label":o.$t(`townView.k1k4j5i7009`),onChange:s[5]||=e=>Xd(e)},[O(`option`,Vr,m(o.$t(`townView.kv72860036`)),1),s[60]||=O(`option`,{value:`top`},` 俯视 · TOP `,-1),s[61]||=O(`option`,{value:`front`},` 前视 · FRONT `,-1),s[62]||=O(`option`,{value:`side`},` 侧视 · SIDE `,-1)],40,Br)]),f(Nd)?(l(),S(h,{key:0},[(l(),S(`svg`,Hr,[(l(!0),S(h,null,c(f(Ud),t=>k((l(),S(`g`,{key:`ld-${t.id}`,class:u({near:t.near})},[O(`path`,{d:`M ${t.x} ${t.y-8} L ${t.x} ${t.y-2}`,stroke:t.warn?`rgba(246,196,83,.8)`:`rgba(65,200,244,.55)`,"stroke-width":`1.3`,fill:`none`},null,8,Ur),O(`circle`,{cx:t.x,cy:t.y,r:`2.6`,fill:t.warn?`#f6c453`:`#41c8f4`},null,8,Wr)],2)),[[e,t.leader]])),128))])),O(`div`,Gr,[(l(!0),S(h,null,c(f(Ud),e=>(l(),S(`div`,{key:e.id,class:u([`callout`,{warn:e.warn,near:e.near}]),style:p({left:e.x+`px`,top:e.y+`px`}),title:o.$t(`townView.k1ejxiwp010`),onClick:t=>Pd(e.id)},[O(`div`,qr,[s[63]||=O(`span`,{class:`co-dot`},null,-1),g(m(e.label),1)]),O(`div`,Jr,[g(m(e.value),1),O(`small`,null,m(e.unit),1)]),O(`div`,Yr,m(o.$t(`townView.k1faqmjb073`))+` `+m(e.lo.toFixed(Math.min(2,(String(e.lo).split(`.`)[1]??``).length+1)))+` – `+m(e.hi.toFixed(Math.min(2,(String(e.hi).split(`.`)[1]??``).length+1))),1)],14,Kr))),128))])],64)):w(``,!0),O(`div`,Xr,[O(`div`,Zr,[s[64]||=O(`span`,{class:`kpi-ico c1`},[O(`svg`,{class:`kpi-svg`,viewBox:`0 0 24 24`},[O(`path`,{d:`M4 8.5 12 4l8 4.5v7L12 20l-8-4.5v-7Z`}),O(`path`,{d:`M4 8.5l8 4.5 8-4.5M12 13v7`})])],-1),O(`div`,Qr,[O(`div`,$r,m(o.$t(`townView.k1k6xemt037`)),1),O(`div`,ei,[g(m(f(Gd)),1),O(`small`,null,m(o.$t(`townView.k49lh038`)),1)])])]),O(`div`,ti,[s[65]||=O(`span`,{class:`kpi-ico c2`},[O(`svg`,{class:`kpi-svg`,viewBox:`0 0 24 24`},[O(`path`,{d:`m5 12.5 4.5 4.5L19 7.5`})])],-1),O(`div`,ni,[O(`div`,ri,m(o.$t(`townView.k1l1a9t2039`)),1),O(`div`,ii,[g(m(f(Kd)),1),O(`small`,null,m(o.$t(`townView.k49lh038`)),1)])])]),O(`div`,ai,[s[66]||=O(`span`,{class:`kpi-ico c3`},[O(`svg`,{class:`kpi-svg`,viewBox:`0 0 24 24`},[O(`path`,{d:`M12 3 22 20H2L12 3Z`}),O(`path`,{d:`M12 10v4M12 17v.2`})])],-1),O(`div`,oi,[O(`div`,si,m(o.$t(`townView.k1fsi3ir002`)),1),O(`div`,ci,[g(m(f(uf)),1),O(`small`,null,m(o.$t(`townView.k4dfq040`)),1)])])]),O(`div`,li,[s[67]||=ae(`<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>`,1),O(`div`,ui,[O(`div`,di,m(o.$t(`townView.k1emsai1041`)),1),O(`div`,fi,[g(m(f(X).length),1),O(`small`,null,m(o.$t(`townView.k4l1w042`)),1)])])]),O(`div`,pi,[s[69]||=ae(`<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>`,1),O(`div`,mi,[O(`div`,hi,m(o.$t(`townView.kbrxdq1043`)),1),O(`div`,gi,[g(m(f(tf)),1),s[68]||=O(`small`,null,`%`,-1)])])])]),f(ql)?(l(),S(`div`,_i,[O(`b`,null,m(o.$t(`townView.k3rwxjc044`)),1),O(`span`,null,m(o.$t(`townView.k1sa1eaj045`)),1)])):w(``,!0),f(B)&&f(V)?(l(),S(`div`,{key:2,class:`boundary-panel drag-panel`,style:p(f(Bt).boundary?{left:f(Bt).boundary.x+`px`,top:f(Bt).boundary.y+`px`,bottom:`auto`,transform:`none`}:void 0)},[O(`div`,{class:`bp-title drag-grip`,title:o.$t(`townView.k1d0rl5z011`),onPointerdown:s[8]||=e=>Wt(e,`boundary`)},[O(`span`,yi,m(f(T).channels[f(B)]?.name??f(B).slice(0,8)),1),O(`span`,bi,m(o.$t(`townView.k1mehlxs046`)),1),O(`div`,xi,[O(`button`,{class:u([`bp-tab`,{on:f(mt)===`boundary`}]),onClick:s[6]||=e=>_t(`boundary`)},m(o.$t(`townView.k489ka047`)),3),O(`button`,{class:u([`bp-tab`,{on:f(mt)===`members`}]),onClick:s[7]||=e=>_t(`members`)},m(o.$t(`townView.k3ztf1129`))+` `+m(f(ht).length),3)])],40,vi),f(mt)===`boundary`?(l(),S(h,{key:0},[O(`div`,Si,[O(`span`,Ci,m(o.$t(`townView.k3zhy5048`)),1),O(`div`,wi,[O(`button`,{class:u([`seg-btn`,{on:f(V).shape===`ellipse`}]),onClick:s[9]||=e=>{f(V).shape=`ellipse`,Xe()}},m(o.$t(`townView.k414bc049`)),3),O(`button`,{class:u([`seg-btn`,{on:f(V).shape===`rect`}]),onClick:s[10]||=e=>{f(V).shape=`rect`,Xe()}},m(o.$t(`townView.k43u0g050`)),3)])]),O(`div`,Ti,[O(`span`,Ei,m(o.$t(`townView.k1fbz4s1051`)),1),k(O(`input`,{"onUpdate:modelValue":s[11]||=e=>f(V).radiusX=e,class:`bp-range`,type:`range`,min:`80`,max:`4000`,step:`8`,style:p({"--fill":Tf(f(V).radiusX,80,4e3)}),onChange:Xe},null,36),[[i,f(V).radiusX,void 0,{number:!0}]]),O(`span`,Di,m(Math.round(f(V).radiusX)),1)]),O(`div`,Oi,[O(`span`,ki,m(o.$t(`townView.k1ighwgs052`)),1),k(O(`input`,{"onUpdate:modelValue":s[12]||=e=>f(V).radiusZ=e,class:`bp-range`,type:`range`,min:`60`,max:`4000`,step:`8`,style:p({"--fill":Tf(f(V).radiusZ,60,4e3)}),onChange:Xe},null,36),[[i,f(V).radiusZ,void 0,{number:!0}]]),O(`span`,Ai,m(Math.round(f(V).radiusZ)),1)]),O(`div`,ji,[O(`span`,Mi,m(o.$t(`townView.k40qab053`)),1),k(O(`input`,{"onUpdate:modelValue":s[13]||=e=>f(V).rotationY=e,class:`bp-range`,type:`range`,min:`0`,max:`360`,step:`5`,style:p({"--fill":Tf(f(V).rotationY??0,0,360)}),onChange:Xe},null,36),[[i,f(V).rotationY,void 0,{number:!0}]]),O(`span`,Ni,m(Math.round(f(V).rotationY??0))+`°`,1)])],64)):(l(),S(h,{key:1},[O(`div`,Pi,m(o.$t(`townView.kimxls2054`)),1),O(`div`,Fi,[(l(!0),S(h,null,c(f(ht),e=>(l(),S(`div`,{key:e.agentId,class:`member-row`},[O(`span`,{class:`member-ava`,style:p({color:St(f(B))})},m(e.name.charAt(0).toUpperCase()),5),O(`div`,Ii,[O(`span`,Li,m(e.name),1),O(`span`,{class:u([`member-role`,e.role===`lead`?`r-lead`:`r-worker`])},m(e.role===`lead`?`Leader`:`Worker`),3)]),O(`select`,{class:`member-select`,value:(e.modelRef??``)||`hero-3d`,onChange:t=>gt(e.agentId,t.target.value)},[(l(!0),S(h,null,c(f(et),e=>(l(),S(`option`,{key:e.id,value:e.id},m(e.name),9,zi))),128))],40,Ri)]))),128)),f(ht).length===0?(l(),S(`div`,Bi,m(o.$t(`townView.k419rbs055`)),1)):w(``,!0)])],64)),O(`div`,Vi,[f(mt)===`boundary`?(l(),S(`button`,{key:0,class:`bp-btn save`,onClick:Je},m(o.$t(`townView.k1b3kp8f056`)),1)):w(``,!0),O(`button`,{class:`bp-btn danger`,onClick:Ye},m(o.$t(`townView.k1hs45qg057`)),1),O(`button`,{class:`bp-btn`,onClick:s[14]||=e=>qe(null)},m(o.$t(`townView.k3x62t058`)),1)])],4)):w(``,!0),f(Jt)?(l(),S(`div`,Hi,m(f(Jt)),1)):w(``,!0),f(L)?(l(),S(`div`,Ui,m(f(L)),1)):w(``,!0),f(_e)?w(``,!0):(l(),S(`div`,Wi,[s[70]||=O(`div`,{class:`loading-spinner`},null,-1),O(`span`,Gi,m(o.$t(`townView.kvjdqfg059`)),1)]))],512),O(`div`,Ki,[O(`section`,qi,[O(`div`,Ji,[O(`h3`,null,m(o.$t(`townView.k1c9iq23060`)),1),O(`span`,Yi,m(f(R)===`edit`?o.$t(`townView.k1iipfcs143`):o.$t(`townView.k1l147w1177`)),1)]),O(`p`,Xi,m(o.$t(`townView.secRender`)),1),O(`div`,Zi,[O(`span`,{class:`ctl-name`,title:o.$t(`townView.qualityTip`)},m(o.$t(`townView.qualityLabel`)),9,Qi),O(`div`,$i,[(l(),S(h,null,c(vf,e=>O(`button`,{key:e.v,class:u({on:f(_f)===e.v}),onClick:t=>yf(e.v)},m(o.$t(e.label)),11,ea)),64))]),s[72]||=O(`span`,{class:`ctl-val`},null,-1)]),O(`div`,ta,[O(`span`,{class:`ctl-name`,title:o.$t(`townView.fpsCapTip`)},m(o.$t(`townView.fpsCapLabel`)),9,na),O(`div`,ra,[(l(),S(h,null,c(hf,e=>O(`button`,{key:e.v,class:u({on:f(mf)===e.v}),onClick:t=>gf(e.v)},m(e.label),11,ia)),64))]),s[73]||=O(`span`,{class:`ctl-val`},null,-1)]),O(`p`,aa,m(o.$t(`townView.secEnv`)),1),O(`div`,oa,[O(`span`,sa,m(o.$t(`townView.k1gizopz061`)),1),O(`input`,{class:`ctl-range`,type:`range`,min:`30`,max:`220`,value:Math.round(f(Cf)*100),style:p({"--fill":Tf(Math.round(f(Cf)*100),30,220)}),onInput:s[15]||=e=>Ef(e)},null,44,ca),O(`span`,la,m(Math.round(f(Cf)*100))+`%`,1)]),O(`div`,ua,[O(`span`,da,m(o.$t(`townView.k1bcpqto062`)),1),O(`input`,{class:`ctl-range`,type:`range`,min:`10`,max:`100`,value:Math.round(f(wf)*100),style:p({"--fill":Tf(Math.round(f(wf)*100),10,100)}),onInput:s[16]||=e=>Df(e)},null,44,fa),O(`span`,pa,m(Math.round(f(wf)*100))+`%`,1)]),O(`div`,ma,[O(`span`,ha,m(o.$t(`townView.k1bztha1063`)),1),O(`input`,{class:`ctl-range`,type:`range`,min:`60`,max:`120`,value:f(pf),style:p({"--fill":Tf(f(pf),60,120)}),onInput:s[17]||=e=>pf.value=Number(e.target.value)},null,44,ga),O(`span`,_a,m(f(pf))+`%`,1)]),O(`div`,va,[O(`span`,{class:`ctl-name`,title:o.$t(`townView.kz71l1f012`)},m(o.$t(`townView.ka4i1s9064`)),9,ya),O(`input`,{class:`ctl-range`,type:`range`,min:`0`,max:`3000`,step:`50`,value:f(zd),style:p({"--fill":Tf(f(zd),0,3e3)}),onInput:s[18]||=e=>zd.value=Number(e.target.value)},null,44,ba),O(`span`,xa,m(f(zd)===0?o.$t(`townView.k493s144`):`${f(zd)}`),1)]),O(`p`,Sa,m(o.$t(`townView.secOps`)),1),O(`div`,Ca,[O(`span`,wa,m(o.$t(`townView.k1idc6pa065`)),1),O(`button`,{class:u([`snap-toggle`,{on:f(Pe)}]),onClick:Be},m(f(Pe)?o.$t(`townView.k4bs5145`):o.$t(`townView.k493s144`)),3),s[74]||=O(`span`,{class:`ctl-val`},null,-1)]),O(`div`,Ta,[O(`button`,{class:`btn btn-primary`,onClick:Of},m(o.$t(`townView.k1lap9bs024`)),1),O(`button`,{class:`btn btn-ghost`,disabled:f(R)!==`edit`,title:f(R)===`edit`?o.$t(`townView.ksavetip181`):o.$t(`townView.krotip182`),onClick:Ue},m(o.$t(`townView.k1b3bk8t029`)),9,Ea),O(`button`,{class:u([`btn btn-danger`,{armed:f(xf)}]),onClick:Sf},m(o.$t(`townView.k1i046wf066`)),3)])]),O(`section`,Da,[O(`div`,Oa,[O(`h3`,null,m(o.$t(`townView.k1kfoef9067`)),1),O(`span`,ka,m(f(X).length),1),O(`div`,{class:u([`trend-legend`,{expanded:f(Ff)}])},[(l(!0),S(h,null,c(f(Lf),e=>(l(),S(`button`,{key:e.id,class:u([`lg-chip`,{off:!Pf(e.id)}]),onClick:t=>kf(e.id)},[O(`span`,{class:`lg-dot`,style:p({background:Nf(e.id)})},null,4),g(m(e.name),1)],10,Aa))),128)),f(If)>0?(l(),S(`button`,{key:0,class:`lg-chip lg-more mono`,title:f(Ff)?o.$t(`townView.trendCollapse`):o.$t(`townView.trendExpandAll`,{p0:f(X).length}),onClick:s[19]||=e=>Ff.value=!f(Ff)},m(f(Ff)?o.$t(`townView.trendCollapse`):`+${f(If)}`),9,ja)):w(``,!0)],2)]),O(`div`,Ma,[O(`canvas`,{ref_key:`trendCanvas`,ref:Af,class:`trend-cv`},null,512),f(X).length?w(``,!0):(l(),S(`span`,Na,m(o.$t(`townView.k1uht2uv068`)),1))])])])]),O(`aside`,Pa,[ie(t,{name:`ins`},{default:te(()=>[f(F)?(l(),S(`section`,Fa,[O(`div`,Ia,[O(`h3`,null,m(f(F).kind===`device`?f(xd)?o.$t(`townView.k1ekqxlt146`):f(nd)?o.$t(`townView.k1empnnb178`):o.$t(`townView.k1k6wg8j185`):f(Zt)),1),O(`button`,{class:`mini-btn`,title:o.$t(`townView.k1bsckft013`),onClick:Ke},` ✕ `,8,La)]),O(`div`,Ra,[O(`span`,za,m(f(F).id.slice(0,8)),1),f(F).kind===`device`&&f(nd)?(l(),S(`span`,Ba,`DAQ`)):f(F).kind===`device`&&f(xd)?(l(),S(`span`,Va,`DCW`)):w(``,!0)]),f(F).kind===`device`?(l(),S(h,{key:0},[f(xd)?(l(),S(`div`,Ha,[O(`div`,Ua,[O(`span`,null,m(o.$t(`townView.k1deqh0d069`)),1),O(`b`,Wa,m(f(Z)?.value==null?`--`:f(Z).value.toFixed(f(Z).decimals))+` `+m(f(Z)?.unit),1)]),O(`div`,Ga,[O(`span`,null,m(f(Sd)?.src===`recipe`?o.$t(`townView.kq2jssk147`):o.$t(`townView.k1iwj796179`)),1),O(`b`,{class:u({amber:f(Sd)?.src===`recipe`})},m(Od(f(Z))),3)]),O(`div`,Ka,[O(`span`,null,m(o.$t(`townView.k1i8rtqt070`)),1),O(`b`,null,m(f(Cd)||o.$t(`townView.k3own4q148`)),1)]),O(`div`,qa,[k(O(`input`,{"onUpdate:modelValue":s[20]||=e=>f(pd)[f(F).id]=e,type:`number`,class:`bind-select`,step:10**-(f(Z)?.decimals??2),placeholder:kd(f(Z)),onKeydown:n(Dd,[`enter`])},null,40,Ja),[[i,f(pd)[f(F).id],void 0,{number:!0}]]),O(`button`,{class:`bind-add-btn`,disabled:f(pd)[f(F).id]==null||f(pd)[f(F).id]===``,onClick:Dd},m(o.$t(`townView.kwrbtn180`)),9,Ya)]),f(md)[f(F).id]?(l(),S(`p`,Xa,m(f(md)[f(F).id]),1)):w(``,!0),f(R)===`edit`?(l(),S(`div`,Za,[k(O(`select`,{"onUpdate:modelValue":s[21]||=e=>E(wd)?wd.value=e:null,class:`bind-select`},[O(`option`,Qa,m(o.$t(`townView.kjo6ekr071`)),1),(l(!0),S(h,null,c(f(j).twins.filter(e=>!du(e)&&e.id!==(f(F)?.id??``)),e=>(l(),S(`option`,{key:e.id,value:e.id},m(e.name),9,$a))),128))],512),[[r,f(wd)]]),O(`button`,{class:`bind-add-btn`,disabled:!f(Cd)&&!f(wd),onClick:s[22]||=e=>f(Cd)?Ed():Td()},m(f(Cd)?o.$t(`townView.k479eh149`):o.$t(`townView.k452a8102`)),9,eo)])):w(``,!0)])):f(nd)?(l(),S(`div`,to,[O(`div`,no,[O(`span`,null,m(o.$t(`townView.k3mv305072`)),1),O(`b`,ro,m(f(id)?bu(f(id)):`--`)+` `+m(f(id)?.tpl.unit),1)]),O(`div`,io,[O(`span`,null,m(o.$t(`townView.k1faqmjb073`)),1),O(`b`,null,m(f(id)?.tpl.min)+` ~ `+m(f(id)?.tpl.max),1)]),O(`div`,ao,[O(`span`,null,m(o.$t(`townView.k1i8rtqt070`)),1),O(`b`,null,m(f(sd)||o.$t(`townView.k3own4q148`)),1)]),f(R)===`edit`?(l(),S(`div`,oo,[k(O(`select`,{"onUpdate:modelValue":s[23]||=e=>E(ad)?ad.value=e:null,class:`bind-select`},[O(`option`,so,m(o.$t(`townView.kjo6ekr071`)),1),(l(!0),S(h,null,c(f(j).twins.filter(e=>!du(e)&&e.id!==(f(F)?.id??``)),e=>(l(),S(`option`,{key:e.id,value:e.id},m(e.name),9,co))),128))],512),[[r,f(ad)]]),O(`button`,{class:`bind-add-btn`,disabled:!f(sd)&&!f(ad),onClick:s[24]||=e=>{f(sd)?Hu(f(F).id):Vu(f(F).id,f(ad)),ad.value=``}},m(f(sd)?o.$t(`townView.k479eh149`):o.$t(`townView.k452a8102`)),9,lo)])):w(``,!0),f(R)===`edit`&&f(Q)?(l(),S(`div`,uo,[O(`div`,fo,[O(`span`,null,m(o.$t(`townView.k1l6g2ga074`)),1),O(`span`,po,[k(O(`input`,{"onUpdate:modelValue":s[25]||=e=>E(Ad)?Ad.value=e:null,type:`number`,min:`200`,max:`60000`,step:`100`,class:`daq-num`,onChange:jd},null,544),[[i,f(Ad),void 0,{number:!0}]]),O(`small`,null,m(o.$t(`townView.k1or92b075`)),1)])]),O(`div`,mo,[O(`span`,null,m(o.$t(`townView.k3x5tpx076`)),1),O(`span`,ho,[O(`input`,{value:f(Q).warnLow,type:`number`,step:`any`,class:`daq-num`,onChange:s[26]||=e=>Md(`warnLow`,e.target.value)},null,40,go),s[75]||=g(` ~ `,-1),O(`input`,{value:f(Q).warnHigh,type:`number`,step:`any`,class:`daq-num`,onChange:s[27]||=e=>Md(`warnHigh`,e.target.value)},null,40,_o)])]),O(`div`,vo,[O(`span`,null,m(o.$t(`townView.k1hjj0jf077`)),1),O(`span`,yo,[O(`input`,{value:f(Q).min,type:`number`,step:`any`,class:`daq-num`,onChange:s[28]||=e=>Md(`min`,e.target.value)},null,40,bo),s[76]||=g(` ~ `,-1),O(`input`,{value:f(Q).max,type:`number`,step:`any`,class:`daq-num`,onChange:s[29]||=e=>Md(`max`,e.target.value)},null,40,xo)])]),O(`div`,So,[O(`span`,null,m(o.$t(`townView.k48tki078`)),1),O(`button`,{class:u([`bind-add-btn`,{warn:f(Q).enabled}]),onClick:s[30]||=e=>f(J).patchNode(f(F).id,{enabled:!f(Q).enabled})},m(f(Q).enabled?o.$t(`townView.k1wv0nyo150`):o.$t(`townView.kh1586b180`)),3)]),O(`div`,Co,[O(`span`,null,m(o.$t(`townView.k3xakp079`)),1),O(`button`,{class:`bind-add-btn danger`,title:o.$t(`townView.kpwutri014`),onClick:s[31]||=e=>pt()},m(o.$t(`townView.k1bpp30k080`)),9,wo)])])):(l(),S(`div`,To,m(o.$t(`townView.kzk5dfx081`)),1))])):(l(),S(h,{key:2},[O(`div`,Eo,[O(`span`,Do,m(o.$t(`townView.k3xhia082`)),1),k(O(`input`,{"onUpdate:modelValue":s[32]||=e=>E(nt)?nt.value=e:null,class:`obj-input`,placeholder:o.$t(`townView.k1k6vbaf015`),disabled:f(R)!==`edit`,title:f(R)===`edit`?`设备名称`:`运行模式只读`,onChange:lt,onKeydown:n(lt,[`enter`])},null,40,Oo),[[i,f(nt)]])]),O(`div`,ko,[O(`span`,Ao,m(o.$t(`townView.k41amp083`)),1),O(`select`,{class:`obj-select`,value:f(P)?.getDeviceModelRef?.(f(F).id)??``,disabled:f(R)!==`edit`,onChange:s[33]||=e=>dt(e.target.value)},[(l(!0),S(h,null,c(f(tt),e=>(l(),S(`option`,{key:e.id,value:e.id},m(e.name),9,Mo))),128))],40,jo)]),O(`div`,No,m(o.$t(`townView.k1vtyk05130`))+` `+m(f(od).length)+` `+m(o.$t(`townView.k3vfpz5138`)),1),(l(!0),S(h,null,c(f(od),e=>(l(),S(`div`,{key:e.daqId,class:`bind-row`},[O(`span`,Po,[(l(),S(`svg`,{class:`bind-svg`,viewBox:`0 0 24 24`,innerHTML:Wu(e.icon)},null,8,Fo))]),O(`span`,Io,[O(`span`,Lo,m(e.ch),1),O(`span`,Ro,[O(`b`,null,m(e.value),1),g(` `+m(e.unit)+` · `+m(e.name),1)])]),O(`canvas`,{ref_for:!0,ref:t=>ed(e.daqId,t),class:`bind-spark`,width:`56`,height:`20`},null,512),f(R)===`edit`?(l(),S(`button`,{key:0,class:`bind-x`,title:o.$t(`townView.k1k73omv016`),onClick:t=>Hu(e.daqId)},` ✕ `,8,zo)):w(``,!0)]))),128)),f(od).length?w(``,!0):(l(),S(`div`,Bo,m(o.$t(`townView.kgpuqhb084`)),1)),f(R)===`edit`?(l(),S(`div`,Vo,[O(`button`,{class:`bind-add`,onClick:s[34]||=e=>Yu(`daq`,e)},m(o.$t(`townView.kvm0lin085`)),1),f(Ku)?(l(),S(`div`,{key:0,class:`bind-pop`,style:p({maxHeight:`${f(Ju)}px`})},[(l(!0),S(h,null,c(f(su),e=>(l(),S(h,{key:e.id},[f(Xu)[e.id]?.length?(l(),S(`div`,Ho,[O(`span`,Uo,m(e.name)+` · `+m(e.ch),1),(l(!0),S(h,null,c(f(Xu)[e.id],e=>(l(),S(`button`,{key:e.id,"data-node-id":e.id,title:e.devName?o.$t(`townView.k2bindr0007`,{p0:e.devName}):o.$t(`townView.k2bindr0008`),onClick:t=>Qu(e.id)},[(l(),S(`svg`,{class:`bind-svg`,viewBox:`0 0 24 24`,innerHTML:Wu(e.tpl.icon)},null,8,Go)),O(`span`,null,[g(m(e.name),1),e.devName?(l(),S(`i`,Ko,`→ `+m(e.devName),1)):e.placed?w(``,!0):(l(),S(`i`,qo,m(o.$t(`townView.k2bindr0009`)),1))])],8,Wo))),128))])):w(``,!0)],64))),128)),f(Zu)?w(``,!0):(l(),S(`div`,Jo,m(o.$t(`townView.k2bindr0010`)),1))],4)):w(``,!0)])):w(``,!0),O(`div`,Yo,m(o.$t(`townView.ktzir2t131`))+` `+m(f(ud).length)+` `+m(o.$t(`townView.k4l1w042`)),1),(l(!0),S(h,null,c(f(ud),e=>(l(),S(`div`,{key:e.dcwId,class:`dcw-row`},[O(`div`,Xo,[O(`span`,Zo,[(l(),S(`svg`,{class:`bind-svg`,viewBox:`0 0 24 24`,innerHTML:Wu(e.icon)},null,8,Qo))]),O(`span`,$o,[O(`span`,es,[g(m(e.ch),1),e.rMin!=null||e.rMax!=null?(l(),S(`i`,ts,m(o.$t(`townView.k48grv086`)),1)):w(``,!0)]),O(`span`,ns,m(e.name),1)]),O(`span`,rs,[O(`b`,null,m(e.value==null?`--`:e.value.toFixed(e.decimals)),1),O(`i`,null,m(e.unit),1)]),f(R)===`edit`?(l(),S(`button`,{key:0,class:`bind-x`,title:o.$t(`townView.k1k73omv016`),onClick:t=>bd(e.dcwId)},` ✕ `,8,is)):w(``,!0)]),O(`div`,{class:u([`dcw-win`,{recipe:e.rMin!=null||e.rMax!=null}])},[O(`em`,null,m(e.rMin!=null||e.rMax!=null?o.$t(`townView.k1l3m0hx151`):o.$t(`townView.k1bc6rqf181`)),1),O(`span`,as,m(e.rMin??`-∞`),1),O(`span`,os,[O(`i`,{style:p({left:`${fd(e)}%`})},null,4)]),O(`span`,ss,m(e.rMax??`+∞`),1)],2),O(`div`,cs,[k(O(`input`,{"onUpdate:modelValue":t=>f(pd)[e.dcwId]=t,type:`number`,step:10**-e.decimals,placeholder:`${e.rMin??e.gMin} ~ ${e.rMax??e.gMax}`,onKeydown:n(t=>hd(f(Y).nodeById(e.dcwId)),[`enter`])},null,40,ls),[[i,f(pd)[e.dcwId],void 0,{number:!0}]]),O(`button`,{class:`dcw-send`,disabled:f(pd)[e.dcwId]==null||f(pd)[e.dcwId]===``,title:o.$t(`townView.k15t7izc017`),onClick:t=>hd(f(Y).nodeById(e.dcwId))},` write `,8,us)]),f(md)[e.dcwId]?(l(),S(`small`,ds,m(f(md)[e.dcwId]),1)):w(``,!0)]))),128)),f(ud).length?w(``,!0):(l(),S(`div`,fs,m(o.$t(`townView.k10smf24087`)),1)),f(R)===`edit`?(l(),S(`div`,ps,[O(`button`,{class:`bind-add`,onClick:s[35]||=e=>Yu(`dcw`,e)},m(o.$t(`townView.kvk1vh5088`)),1),f(qu)?(l(),S(`div`,{key:0,class:`bind-pop`,style:p({maxHeight:`${f(Ju)}px`})},[(l(!0),S(h,null,c(f(Xl),e=>(l(),S(h,{key:e.id},[f(_d)[e.id]?.length?(l(),S(`div`,ms,[O(`span`,hs,m(e.name)+` · `+m(e.ch),1),(l(!0),S(h,null,c(f(_d)[e.id],e=>(l(),S(`button`,{key:e.id,"data-node-id":e.id,title:e.devName?o.$t(`townView.k2bindr0007`,{p0:e.devName}):o.$t(`townView.k2bindr0008`),onClick:t=>yd(e.id)},[(l(),S(`svg`,{class:`bind-svg`,viewBox:`0 0 24 24`,innerHTML:Wu(e.tpl.icon)},null,8,_s)),O(`span`,null,[g(m(e.name),1),e.devName?(l(),S(`i`,vs,`→ `+m(e.devName),1)):e.placed?w(``,!0):(l(),S(`i`,ys,m(o.$t(`townView.k2bindr0009`)),1))])],8,gs))),128))])):w(``,!0)],64))),128)),f(vd)?w(``,!0):(l(),S(`div`,bs,m(o.$t(`townView.k2bindr0010`)),1))],4)):w(``,!0)])):w(``,!0),f(R)===`edit`?(l(),S(h,{key:4},[s[79]||=O(`div`,{class:`sect-hd`},` 变换 · BLENDER `,-1),O(`div`,xs,[O(`button`,{class:u([`seg-btn`,{on:f(Le)===`translate`}]),onClick:s[36]||=e=>Re(`translate`)},m(o.$t(`townView.k1hg3167089`)),3),O(`button`,{class:u([`seg-btn`,{on:f(Le)===`rotate`}]),onClick:s[37]||=e=>Re(`rotate`)},m(o.$t(`townView.k1enlg7i090`)),3),O(`button`,{class:u([`seg-btn`,{on:f(Le)===`scale`}]),onClick:s[38]||=e=>Re(`scale`)},m(o.$t(`townView.k1ibjg3j091`)),3)]),O(`div`,Ss,[s[77]||=O(`span`,{class:`scale-min`},`0.2×`,-1),O(`input`,{class:`scale-range`,type:`range`,min:`0.2`,max:`5`,step:`0.05`,value:f(F).scale,onInput:s[39]||=e=>We(Number(e.target.value)),onChange:s[40]||=e=>Ge(Number(e.target.value))},null,40,Cs),s[78]||=O(`span`,{class:`scale-max`},`5×`,-1)]),O(`div`,ws,m(Math.round(f(F).scale*100))+`% `,1),O(`div`,Ts,[O(`button`,{class:u([`btn btn-danger ins-del`,{armed:f(ft)===f(F).id}]),onClick:pt},m(f(ft)===f(F).id?o.$t(`townView.k1w10xa5152`):o.$t(`townView.k121kfef182`)),3)])],64)):(l(),S(`div`,Es,m(o.$t(`townView.kt0i3y2092`)),1))],64))],64)):f(F).kind===`agent`?(l(),S(h,{key:1},[O(`div`,Ds,[O(`span`,{class:`chat-badge`,style:p({"--p-acc":f(Bl)})},m(f(Xt).slice(0,1).toUpperCase()),5),O(`div`,Os,[O(`span`,ks,m(f(Xt)),1),O(`span`,As,[O(`span`,{class:u([`chat-role`,f(K)?.role===`lead`?`r-lead`:`r-worker`])},m(f(Qt)),3),O(`span`,{class:u([`chat-state`,`s-${f(K)?.state??`idle`}`])},m(f($t)),3),f(K)?.harness?(l(),S(`span`,js,m(f(K).harness.toUpperCase()),1)):w(``,!0),O(`span`,Ms,m(f(q).length+f(Yt).length)+` `+m(o.$t(`townView.k4dfq040`)),1)])])]),O(`div`,Ns,[O(`span`,Ps,m(o.$t(`townView.k41amp083`)),1),O(`select`,{class:`obj-select`,value:(f(P)?.getAgentModel?.(f(F).id)??``)||`hero-3d`,disabled:f(R)!==`edit`,onChange:s[41]||=e=>ut(e.target.value)},[(l(!0),S(h,null,c(f(et),e=>(l(),S(`option`,{key:e.id,value:e.id},m(e.name),9,Is))),128))],40,Fs)]),s[83]||=O(`div`,{class:`obj-sep`},null,-1),O(`div`,Ls,[O(`span`,Rs,m(o.$t(`townView.k1fix3hb093`)),1),O(`span`,zs,m(f(it)),1),f(R)===`edit`?(l(),S(`button`,{key:0,class:u([`obj-mini`,{on:f(U)}]),title:o.$t(`townView.k13enoy3018`),onClick:at},m(f(U)?o.$t(`townView.k3slzhc153`):o.$t(`townView.k1f1xmci183`)),11,Bs)):w(``,!0)]),s[84]||=O(`div`,{class:`obj-sep`},null,-1),O(`div`,Vs,m(o.$t(`townView.k1p7nru2094`)),1),(l(!0),S(h,null,c(f(Tu),e=>(l(),S(`div`,{key:e.id,class:`bind-row`},[O(`span`,{class:u([`ins-chip`,e.kind===`dcw`?`accent`:``]),style:{flex:`none`}},m(e.kind===`dcw`?o.$t(`townView.k40ifw097`):o.$t(`townView.k40rjw098`)),3),O(`span`,Hs,[O(`span`,Us,m(Ru(e)),1),O(`select`,{class:`bind-select`,style:{"margin-top":`3px`},value:e.mode,title:o.$t(`townView.khqvwix019`),onChange:t=>Iu(e.id,t.target.value)},[O(`option`,Gs,m(o.$t(`townView.k1io1ylm095`)),1),O(`option`,Ks,m(o.$t(`townView.k1duyr8q096`)),1)],40,Ws)]),O(`button`,{class:`bind-x`,title:o.$t(`townView.k1k73omv016`),onClick:t=>Fu(e.id)},` ✕ `,8,qs)]))),128)),f(Tu).length?w(``,!0):(l(),S(`div`,Js,` 未绑定工业节点 —— 绑定后 Agent 可用 dcw_control / daq_query 工具 `)),f(R)===`edit`?(l(),S(`div`,Ys,[k(O(`select`,{"onUpdate:modelValue":s[42]||=e=>E(Eu)?Eu.value=e:null,class:`bind-select`,style:{flex:`none`,width:`62px`}},[O(`option`,Xs,m(o.$t(`townView.k40ifw097`)),1),O(`option`,Zs,m(o.$t(`townView.k40rjw098`)),1)],512),[[r,f(Eu)]]),k(O(`select`,{"onUpdate:modelValue":s[43]||=e=>E(Du)?Du.value=e:null,class:`bind-select`},[O(`option`,Qs,m(o.$t(`townView.kurjldk099`)),1),f(Eu)===`dcw`?(l(!0),S(h,{key:0},c(f(Y).nodes,e=>(l(),S(`option`,{key:e.id,value:e.id},m(e.name),9,$s))),128)):(l(!0),S(h,{key:1},c(f(J).nodes,e=>(l(),S(`option`,{key:e.id,value:e.id},m(e.name),9,ec))),128))],512),[[r,f(Du)]]),k(O(`select`,{"onUpdate:modelValue":s[44]||=e=>E(Ou)?Ou.value=e:null,class:`bind-select`,style:{flex:`none`,width:`76px`}},[O(`option`,tc,m(o.$t(`townView.k45kpj100`)),1),O(`option`,nc,m(o.$t(`townView.k3zul4101`)),1)],512),[[r,f(Ou)]]),O(`button`,{class:`bind-add-btn`,disabled:!f(Du),onClick:Pu},m(o.$t(`townView.k452a8102`)),9,rc)])):w(``,!0),f(ku).length?(l(),S(h,{key:2},[O(`div`,ic,m(o.$t(`townView.k1gk2jg7132`))+` `+m(f(ku).length),1),(l(!0),S(h,null,c(f(ku),e=>(l(),S(`div`,{key:e.id,class:`approval-card`},[O(`div`,ac,m(e.detail),1),O(`div`,{class:u([`approval-ttl`,{urgent:Cu(e)<=30}])},` ⏱ `+m(Cu(e))+`s `+m(o.$t(`townView.hitlAutoReject`)),3),k(O(`input`,{"onUpdate:modelValue":t=>f(Au)[e.id]=t,class:`dcw-write input-inline`,style:{width:`100%`,"margin-top":`5px`},placeholder:o.$t(`townView.keztqrn020`)},null,8,oc),[[i,f(Au)[e.id]]]),O(`div`,sc,[O(`button`,{class:`bind-add-btn`,onClick:t=>Lu(e.id,!0)},m(o.$t(`townView.kslcozu103`)),9,cc),O(`button`,{class:`bind-add-btn danger`,onClick:t=>Lu(e.id,!1)},m(o.$t(`townView.k14gu3rd104`)),9,lc)])]))),128))],64)):w(``,!0),f(H)&&f(R)===`edit`?(l(),S(h,{key:3},[O(`div`,uc,[O(`span`,dc,m(o.$t(`townView.k3zhy5048`)),1),O(`div`,fc,[O(`button`,{class:u([`seg-btn`,{on:f(H).shape===`ellipse`}]),onClick:s[45]||=e=>{f(H).shape=`ellipse`,ot()}},m(o.$t(`townView.k414bc049`)),3),O(`button`,{class:u([`seg-btn`,{on:f(H).shape===`rect`}]),onClick:s[46]||=e=>{f(H).shape=`rect`,ot()}},m(o.$t(`townView.k43u0g050`)),3)])]),O(`div`,pc,[O(`span`,mc,m(o.$t(`townView.k41lwj105`)),1),k(O(`input`,{"onUpdate:modelValue":s[47]||=e=>f(H).radiusX=e,class:`obj-range`,type:`range`,min:`40`,max:`4000`,step:`8`,onInput:ot,onChange:st},null,544),[[i,f(H).radiusX,void 0,{number:!0}]]),O(`span`,hc,m(Math.round(f(H).radiusX)),1)]),O(`div`,gc,[O(`span`,_c,m(o.$t(`townView.k45bta106`)),1),k(O(`input`,{"onUpdate:modelValue":s[48]||=e=>f(H).radiusZ=e,class:`obj-range`,type:`range`,min:`40`,max:`4000`,step:`8`,onInput:ot,onChange:st},null,544),[[i,f(H).radiusZ,void 0,{number:!0}]]),O(`span`,vc,m(Math.round(f(H).radiusZ)),1)]),O(`button`,{class:`obj-mini danger`,onClick:ct},m(o.$t(`townView.k1w45mzc107`)),1)],64)):(l(),S(`div`,yc,m(o.$t(`townView.k14s8urm108`)),1)),s[85]||=O(`div`,{class:`obj-sep`},null,-1),O(`div`,bc,[g(m(o.$t(`townView.k1ghjbfc133`))+` `+m(f(Xt))+` `,1),O(`button`,{class:`mini-btn chat-refresh`,title:o.$t(`townView.k15avt7g021`),onClick:zl},m(f(en)?`…`:`↻`),9,xc)]),O(`div`,{ref_key:`chatScroll`,ref:nn,class:`rpg-lines chat-embed`},[f(en)?(l(),S(`div`,Sc,m(o.$t(`townView.kkhlx5h109`)),1)):w(``,!0),f(q).length?(l(),S(h,{key:1},[O(`div`,Cc,m(o.$t(`townView.k768cnt134`))+` `+m(f(q).length),1),(l(!0),S(h,null,c(f(q),e=>(l(),S(`div`,{key:e.id,class:`rpg-line hist`},[O(`span`,wc,m(Hl(e.at)),1),O(`div`,Tc,[Vl(e.kind)?(l(),S(`span`,{key:0,class:u([`rpg-kind`,`k-${e.kind}`])},m(Vl(e.kind)),3)):w(``,!0),O(`span`,Ec,m(e.text),1)])]))),128))],64)):w(``,!0),f(Yt).length?(l(),S(`div`,Dc,m(o.$t(`townView.k1cwz73k135`))+` `+m(f(Yt).length),1)):w(``,!0),(l(!0),S(h,null,c(f(Yt),e=>(l(),S(`div`,{key:e.id,class:`rpg-line live`},[O(`span`,Oc,m(Hl(e.at)),1),O(`div`,kc,[O(`span`,Ac,m(e.text),1)])]))),128)),f(K)?.state===`busy`?(l(),S(`div`,jc,[s[80]||=O(`span`,{class:`ty-dot`},null,-1),s[81]||=O(`span`,{class:`ty-dot`},null,-1),s[82]||=O(`span`,{class:`ty-dot`},null,-1),O(`span`,Mc,m(o.$t(`townView.k3o5tz9110`)),1)])):w(``,!0),!f(en)&&!f(q).length&&!f(Yt).length?(l(),S(`div`,Nc,m(o.$t(`townView.k1qkqld7111`)),1)):w(``,!0)],512)],64)):w(``,!0)])):w(``,!0)]),_:1}),O(`section`,Pc,[O(`div`,Fc,[O(`h3`,null,m(o.$t(`townView.k17dkhgd112`)),1)]),O(`div`,Ic,[O(`div`,Lc,[O(`canvas`,{ref_key:`donutCanvas`,ref:rf,width:`118`,height:`118`},null,512),O(`div`,Rc,[O(`b`,{style:p({color:f(nf)})},m(f(tf))+`%`,5),O(`span`,null,m(o.$t(`townView.k7h1nxo113`)),1)])]),O(`div`,zc,[O(`div`,Bc,[s[86]||=O(`span`,{class:`hl-dot`,style:{background:`var(--hud-accent)`}},null,-1),g(` `+m(o.$t(`townView.k3vp67i114`))+` `,1),O(`span`,Vc,m(f(Kd)),1)]),O(`div`,Hc,[s[87]||=O(`span`,{class:`hl-dot`,style:{background:`var(--hud-amber)`}},null,-1),g(` `+m(o.$t(`townView.k3zcvb115`))+` `,1),O(`span`,Uc,m(f(Qd)),1)]),O(`div`,Wc,[s[88]||=O(`span`,{class:`hl-dot`,style:{background:`var(--hud-danger)`}},null,-1),g(` `+m(o.$t(`townView.k3xmid116`))+` `,1),O(`span`,Gc,m(f($d)),1)]),O(`div`,Kc,[s[89]||=O(`span`,{class:`hl-dot`,style:{background:`#3a4a63`}},null,-1),g(` `+m(o.$t(`townView.statesOffline`))+` `,1),O(`span`,qc,m(f(ef)),1)])])])]),O(`section`,Jc,[O(`div`,Yc,[O(`h3`,null,m(o.$t(`townView.k1q247fn117`)),1),O(`span`,Xc,m(f(j).twins.length),1)]),ie(_,{class:`kd-embed`,"daq-live":f(Bd),"dcw-live":f(Vd),onFocusDevice:zt},null,8,[`daq-live`,`dcw-live`])]),O(`section`,Zc,[O(`div`,Qc,[O(`h3`,null,m(o.$t(`townView.k1cxf749118`)),1),O(`span`,$c,m(f(uf))+` `+m(o.$t(`townView.k4dfq040`)),1),O(`button`,{class:`mini-btn`,title:o.$t(`townView.k1bkswpz022`),onClick:ff},` ✓ `,8,el)]),O(`div`,tl,[(l(!0),S(h,null,c(f(of).slice(0,8),e=>(l(),S(`div`,{key:e.id,class:`al-row`},[O(`span`,{class:u([`al-ico`,e.state===2?`info`:e.state===1?`warn`:`crit`])},[...s[90]||=[O(`svg`,{class:`al-svg`,viewBox:`0 0 24 24`},[O(`path`,{d:`M12 3 22 20H2L12 3Z`}),O(`path`,{d:`M12 10v4M12 17v.2`})],-1)]],2),O(`div`,nl,[O(`div`,rl,m(e.txt),1),O(`div`,il,m(e.src)+` · `+m(e.time),1)]),O(`button`,{class:u([`al-state`,`s${e.state}`]),onClick:t=>df(e.id)},m(cf[e.state]),11,al)]))),128)),f(of).length?w(``,!0):(l(),S(`div`,ol,[s[91]||=O(`svg`,{class:`re-ico`,viewBox:`0 0 24 24`},[O(`path`,{d:`M12 3l7 3v5c0 4.6-3 8.2-7 10-4-1.8-7-5.4-7-10V6l7-3Z`}),O(`path`,{d:`m9.2 12.2 2 2 3.6-4`})],-1),O(`span`,null,m(o.$t(`townView.kjz544r119`)),1)]))])]),O(`section`,sl,[O(`div`,cl,[O(`h3`,null,m(o.$t(`townView.k1cxdtq2120`)),1),O(`span`,ll,m(f(Yl).length),1)]),O(`div`,ul,[(l(!0),S(h,null,c([...f(Yl)].reverse(),(e,t)=>(l(),S(`div`,{key:`${e.at}-${t}`,class:`event-row`},[O(`span`,dl,m(Hl(e.at)),1),O(`span`,{class:`ev-name`,title:e.agentName},m(e.agentName),9,fl),O(`span`,{class:`ev-text`,title:e.text},m(e.text),9,pl)]))),128)),f(Yl).length?w(``,!0):(l(),S(`div`,ml,[s[92]||=O(`svg`,{class:`re-ico`,viewBox:`0 0 24 24`},[O(`path`,{d:`M3 12h3l2.5-6 4 12L15 12h6`})],-1),O(`span`,null,m(o.$t(`townView.k2uk6ua121`)),1)]))])]),O(`section`,hl,[O(`div`,gl,[O(`h3`,null,m(o.$t(`townView.kjug2jq122`)),1)]),O(`div`,_l,[O(`div`,{class:`mm-wrap`,title:o.$t(`townView.klfwiqg023`)},[O(`canvas`,{ref_key:`navCanvas`,ref:Uf,class:`nav-cv`,onPointerdown:Jf,onPointermove:Yf,onPointerup:Xf,onPointercancel:Xf,onWheel:a(qf,[`prevent`])},null,544)],8,vl),O(`div`,yl,[O(`button`,{class:`vp-tool`,title:o.$t(`townView.k1lap9bs024`),onClick:Of},[...s[93]||=[O(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[O(`path`,{d:`M3 12a9 9 0 1 0 3-6.7M3 4v5h5`})],-1)]],8,bl),O(`button`,{class:`vp-tool`,title:o.$t(`townView.kav8a8k025`),onClick:s[49]||=e=>f(P)?.zoomBy(.22)},[...s[94]||=[O(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[O(`circle`,{cx:`11`,cy:`11`,r:`6.5`}),O(`path`,{d:`m16 16 4.5 4.5M8.5 11h5`})],-1)]],8,xl),O(`button`,{class:`vp-tool`,title:o.$t(`townView.k1u7uce9026`),onClick:s[50]||=e=>f(P)?.zoomBy(-.18)},[...s[95]||=[O(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[O(`circle`,{cx:`11`,cy:`11`,r:`6.5`}),O(`path`,{d:`m16 16 4.5 4.5M8.5 11h5M11 8.5v5`})],-1)]],8,Sl)])]),O(`div`,Cl,m(o.$t(`townView.k1gaaodq136`))+m(f(Wf).toFixed(1))+` · `+m(f(Gt)?.devices?.length??0)+` `+m(o.$t(`townView.k47e16126`)),1)])])]),O(`footer`,wl,[O(`span`,null,[O(`span`,{class:u([`sb-dot`,{red:f(ne).state!==`open`}])},null,2),g(m(o.$t(`townView.k1i4g246123`))+` `,1),O(`b`,null,m(f(ne).state===`open`?o.$t(`townView.k41k5c154`):f(je)?o.$t(`townView.k3lmtk3184`):o.$t(`townView.k44c2n186`)),1)]),O(`span`,Tl,[g(m(o.$t(`townView.k4a0jt124`))+` `,1),O(`b`,null,m(f(xe)),1),s[96]||=O(`i`,null,`·`,-1),g(m(o.$t(`townView.k3xdvm125`))+` `,1),O(`b`,null,m(f(be)),1),s[97]||=O(`i`,null,`·`,-1),g(m(o.$t(`townView.k47e16126`))+` `,1),O(`b`,null,m(f(Gd)),1)]),O(`span`,El,m(f(ye))+` FPS `,1),O(`span`,Dl,` © 2026 ABO · DIGITAL TWIN · `+m(o.$t(`townView.k1h5gxpf137`)),1)]),f(_e)?w(``,!0):(l(),S(`div`,Ol,[s[98]||=O(`div`,{class:`loading-spinner`},null,-1),O(`span`,kl,m(o.$t(`townView.kvjdqfg059`)),1)]))])}}}),[[`__scopeId`,`data-v-1444af6d`]]),{__name:`WorkshopTownView`});export{ln as n,zl as t};
@@ -1 +0,0 @@
1
- import{C as e,G as t,H as n,Ht as r,St as i,Wt as a,a as o,b as s,f as c,ft as l,g as u,h as d,lt as f,m as ee,mt as p,nt as m,p as h,t as g,x as _}from"./BSCpFtzG.js";import{d as te}from"./-6OnbLFb.js";import{n as v}from"./B5S_UyaC.js";import{n as y}from"./BeIfu4N3.js";import{t as ne}from"./VLI2Zy4t.js";import{n as re,t as ie}from"./D0fhp-Ga.js";import{n as ae,r as oe,t as se}from"./BuvcLKh1.js";import{t as ce}from"./BN_PdN3J.js";import{r as b}from"./D-Ca4BGY.js";import{r as le,t as ue}from"./Cn3J3NXR.js";import{i as de,n as x,t as fe}from"./DzuC31-i.js";import{t as pe}from"./BBwMH_hG.js";import{t as me}from"./DTYBfjRY.js";import{t as he}from"./ORt9oDIy2.js";import{t as ge}from"./DoLasgPj2.js";import{t as S}from"./BcrN7QEl2.js";import{t as C}from"./G0qIw7Gq2.js";import{t as w}from"./DoTdlVVe2.js";import{t as T}from"./CNs_Ozdc2.js";var E={class:`page`},D={class:`head`},O={class:`sub`},k={class:`toolbar`},A={key:0,class:`admin-note`},j={class:`tpl-name`},M=[`title`],N={key:0,class:`h-miss`},P={class:`owner`},F={class:`inst-id`},I={class:`inst-ch`},L={key:0,class:`empty`},_e=[`href`],R={class:`mono`},ve={key:1,class:`harness-caps`},z=g(e({__name:`agents`,setup(e){let{t:g}=y();T({layout:`default`});let z=w(),B=S(),V=p([]),H=p(!1),U=async()=>{H.value=!0;try{let e=await z.listTemplates();V.value=e?.data??[]}finally{H.value=!1}};U();let W=p(`all`),ye=c(()=>{let e=[{value:`all`,label:g(`chips.chipAll`,{n:V.value.length})},{value:`mine`,label:g(`chips.chipMine`,{n:V.value.filter(e=>e.ownerUserId===B.user?.id).length})},{value:`public`,label:g(`chips.chipPublic`,{n:V.value.filter(e=>e.visibility===`public`).length})},{value:`builtin`,label:g(`chips.chipBuiltin`,{n:V.value.filter(e=>e.isBuiltin).length})}];return B.isAdmin&&e.push({value:`others`,label:g(`chips.chipOthers`,{n:V.value.filter(e=>e.ownerUserId!==null&&e.ownerUserId!==B.user?.id&&e.visibility===`private`).length})}),e}),be=c(()=>{let e=B.user?.id;switch(W.value){case`mine`:return V.value.filter(t=>t.ownerUserId===e);case`public`:return V.value.filter(e=>e.visibility===`public`);case`builtin`:return V.value.filter(e=>e.isBuiltin);case`others`:return V.value.filter(t=>t.ownerUserId!==null&&t.ownerUserId!==e&&t.visibility===`private`);default:return V.value}}),G=e=>!e.isBuiltin&&(e.ownerUserId===B.user?.id||B.isAdmin),K=e=>e.isBuiltin?{text:g(`agents.k3x23c017`),color:`default`,icon:`i-tabler-lock`}:e.visibility===`public`?{text:g(`agents.k3wv1t018`),color:`green`}:{text:g(`agents.k447jj019`),color:`default`},q=p([]),J=c(()=>new Map(q.value.map(e=>[e.id,e]))),Y=e=>J.value.get(e)?.available===!1,xe=c(()=>(q.value.length>0?q.value:[{id:`mock`,label:`mock(测试)`,description:``,capabilities:{steer:!0,supervise:!1,hitl:!1,terminal:!1,contextStats:!1,compact:!1}},{id:`omp`,label:`omp(真实 LLM)`,description:``,capabilities:{steer:!0,supervise:!0,hitl:!0,terminal:!0,contextStats:!0,compact:!0}},{id:`claude`,label:`claude`,description:``,capabilities:{steer:!1,supervise:!1,hitl:!1,terminal:!1,contextStats:!1,compact:!1}}]).map(e=>{let t=e.available===!1;return{value:e.id,label:t?`${e.label}(${g(`agents.notInstalled`)})`:e.label,disabled:t}})),X=e=>{let t=q.value.find(t=>t.id===e)?.capabilities;if(!t)return[];let n=[];return t.steer&&n.push(`steer`),t.supervise&&n.push(`lead`),t.hitl&&n.push(`HITL`),t.compact&&n.push(`compact`),n};(async()=>{try{let e=(await z.listHarnesses())?.data?.harnesses;Array.isArray(e)&&e.length>0&&(q.value=e)}catch{}})();let Z=p(!1),Q=p(null),$=l({name:``,harness:`mock`,configJson:`{}`,visibility:`private`}),Se=()=>{Q.value=null,$.name=``,$.harness=`mock`,$.configJson=`{}`,$.visibility=`private`,Z.value=!0},Ce=e=>{Q.value=e,$.name=e.name,$.harness=e.harness,$.configJson=JSON.stringify(e.config??{},null,2),$.visibility=e.visibility,Z.value=!0},we=async()=>{let e={};try{e=JSON.parse($.configJson||`{}`)}catch{b.error(`config 不是合法 JSON`);return}if(Y($.harness)){b.error(J.value.get($.harness)?.error??g(`agents.notInstalled`));return}try{Q.value?(await z.updateTemplate(Q.value.id,{name:$.name,harness:$.harness,config:e,visibility:$.visibility}),b.success(g(`agents.k3n9aij020`))):(await z.createTemplate({name:$.name,harness:$.harness,config:e,visibility:$.visibility}),b.success(g(`agents.k3n5hak021`))),Z.value=!1,U()}catch(e){b.error(C(e))}},Te=async e=>{await z.deleteTemplate(e.id),b.success(g(`agents.k3n5sd7022`)),U()},Ee=async e=>{await z.updateTemplate(e.id,{enabled:e.enabled===1?0:1}),U()},De=async(e,t)=>{try{await z.updateTemplate(e.id,{visibility:t?`public`:`private`}),b.success(g(t?`agents.kxa6cxx023`:`agents.k1xxabaf024`)),U()}catch(e){b.error(C(e))}};return v({title:()=>g(`titles.agents`)}),(e,c)=>{let l=ne,p=he,v=se,y=re,b=fe,S=ge,C=me,w=ie,T=ue,z=oe,V=ce,U=x,Oe=de,ke=le,Ae=ae,je=pe;return n(),u(`div`,E,[h(`div`,D,[h(`div`,null,[h(`h2`,null,`Agent `+a(e.$t(`agents.k3pa5h4025`)),1),h(`p`,O,a(e.$t(`agents.k5nsz7y008`)),1)]),_(p,null,{default:m(()=>[_(l,{onClick:c[0]||=t=>(`navigateTo`in e?e.navigateTo:i(te))(`/workshop`)},{default:m(()=>[s(a(e.$t(`agents.krpx6qa009`)),1)]),_:1}),_(l,{type:`primary`,onClick:Se},{default:m(()=>[s(a(e.$t(`agents.k1efixrj010`)),1)]),_:1})]),_:1})]),h(`div`,k,[_(v,{value:i(W),"onUpdate:value":c[1]||=e=>f(W)?W.value=e:null,size:`small`,options:i(ye)},null,8,[`value`,`options`]),i(B).isAdmin?(n(),u(`span`,A,[c[7]||=h(`span`,{class:`i-tabler-shield-check`},null,-1),s(` `+a(e.$t(`agents.ka1gpdj011`)),1)])):d(``,!0)]),_(w,{"data-source":i(be),loading:i(H),"row-key":`id`,size:`small`,pagination:!1},{expandedRowRender:m(({record:r})=>[(n(!0),u(o,null,t(r.instances,e=>(n(),u(`div`,{key:e.id,class:`inst`},[_(b,{color:e.role===`lead`?`gold`:`blue`},{default:m(()=>[s(a(e.role),1)]),_:2},1032,[`color`]),h(`span`,F,a(e.id.slice(0,8)),1),h(`span`,I,`channel `+a(e.channelId.slice(0,8)),1)]))),128)),r.instances.length===0?(n(),u(`div`,L,a(e.$t(`agents.k1d036zs014`)),1)):d(``,!0)]),default:m(()=>[_(y,{title:e.$t(`agents.k3xhia001`),"data-index":`name`},{default:m(({record:e})=>[h(`span`,j,[c[8]||=h(`span`,{class:`i-tabler-user-square`},null,-1),s(` `+a(e.name),1)])]),_:1},8,[`title`]),_(y,{title:`harness`,"data-index":`harness`,width:120},{default:m(({record:e})=>[h(`span`,{class:r([`h-cell`,{off:Y(e.harness)}]),title:Y(e.harness)?i(J).get(e.harness)?.error??``:i(J).get(e.harness)?.resolvedPath??``},[c[9]||=h(`span`,{class:`h-dot`},null,-1),s(a(e.harness),1),Y(e.harness)?(n(),u(`span`,N,`(`+a(i(g)(`agents.notInstalled`))+`)`,1)):d(``,!0)],10,M)]),_:1}),_(y,{title:e.$t(`agents.k3lrqn0002`),width:120},{default:m(({record:e})=>[_(b,{color:K(e).color,class:`vis-tag`},{default:m(()=>[K(e).icon?(n(),u(`span`,{key:0,class:r(K(e).icon)},null,2)):d(``,!0),s(a(K(e).text),1)]),_:2},1032,[`color`]),!e.isBuiltin&&G(e)?(n(),ee(S,{key:0,checked:e.visibility===`public`,size:`small`,"checked-children":`公开`,"un-checked-children":`私有`,title:e.visibility===`public`?`点击转为私有`:`点击公开(全员可读可用)`,onChange:t=>De(e,t===!0)},null,8,[`checked`,`title`,`onChange`])):d(``,!0)]),_:1},8,[`title`]),_(y,{title:e.$t(`agents.k3l98u7003`),width:130},{default:m(({record:e})=>[h(`span`,P,a(e.ownerName??e.ownerUserId?.slice(0,8)??`-`),1)]),_:1},8,[`title`]),_(y,{title:e.$t(`agents.k3mr526004`),width:70},{default:m(({record:e})=>[s(a(e.instances.length),1)]),_:1},8,[`title`]),_(y,{title:e.$t(`agents.k3xhfg005`),width:70},{default:m(({record:e})=>[_(S,{checked:e.enabled===1,size:`small`,disabled:!G(e),onChange:t=>Ee(e)},null,8,[`checked`,`disabled`,`onChange`])]),_:1},8,[`title`]),_(y,{title:e.$t(`agents.k40aa6006`),width:130},{default:m(({record:t})=>[_(p,{size:`small`},{default:m(()=>[_(l,{size:`small`,type:`text`,disabled:!G(t),title:t.isBuiltin?`内置模板不可修改`:G(t)?`编辑`:`仅属主可修改`,onClick:e=>Ce(t)},{default:m(()=>[s(a(e.$t(`agents.k45eb0012`)),1)]),_:1},8,[`disabled`,`title`,`onClick`]),_(C,{title:e.$t(`agents.keetzvf007`),disabled:!G(t),onConfirm:e=>Te(t)},{default:m(()=>[_(l,{size:`small`,type:`text`,danger:``,disabled:!G(t),title:t.isBuiltin?`内置模板不可删除`:`删除`},{default:m(()=>[s(a(e.$t(`agents.k3xakp013`)),1)]),_:1},8,[`disabled`,`title`])]),_:2},1032,[`title`,`disabled`,`onConfirm`])]),_:2},1024)]),_:1},8,[`title`])]),_:1},8,[`data-source`,`loading`]),_(je,{open:i(Z),"onUpdate:open":c[6]||=e=>f(Z)?Z.value=e:null,title:i(Q)?`编辑模板`:`新建模板`,"ok-text":`保存`,"cancel-text":`取消`,onOk:we},{default:m(()=>[_(Ae,{layout:`vertical`},{default:m(()=>[_(z,{label:e.$t(`agents.k3xhia001`)},{default:m(()=>[_(T,{value:i($).name,"onUpdate:value":c[2]||=e=>i($).name=e},null,8,[`value`])]),_:1},8,[`label`]),_(z,{label:`harness`},{default:m(()=>[_(V,{value:i($).harness,"onUpdate:value":c[3]||=e=>i($).harness=e,options:i(xe)},{option:m(({value:e,label:t})=>[h(`span`,{class:r([`h-opt`,{off:Y(String(e))}])},[c[10]||=h(`span`,{class:`h-opt-dot`},null,-1),s(` `+a(t),1)],2)]),_:1},8,[`value`,`options`]),i(q).length>0?(n(),u(`div`,{key:0,class:r([`harness-status`,{off:Y(i($).harness)}])},[Y(i($).harness)?(n(),u(o,{key:0},[c[11]||=h(`span`,{class:`i-tabler-plug-off`},null,-1),s(` `+a(i(J).get(i($).harness)?.error)+` `,1),i(J).get(i($).harness)?.homepage?(n(),u(`a`,{key:0,class:`h-install`,href:i(J).get(i($).harness)?.homepage,target:`_blank`,rel:`noopener`},a(i(g)(`agents.installLink`)),9,_e)):d(``,!0)],64)):i(J).get(i($).harness)?.inprocess?(n(),u(o,{key:1},[c[12]||=h(`span`,{class:`i-tabler-plug-connected`},null,-1),s(` `+a(i(g)(`agents.harnessInprocess`)),1)],64)):i(J).get(i($).harness)?.resolvedPath?(n(),u(o,{key:2},[c[13]||=h(`span`,{class:`i-tabler-plug-connected`},null,-1),c[14]||=s(),h(`span`,R,a(i(J).get(i($).harness)?.resolvedPath),1)],64)):d(``,!0)],2)):d(``,!0),X(i($).harness).length?(n(),u(`div`,ve,[(n(!0),u(o,null,t(X(i($).harness),e=>(n(),u(`span`,{key:e,class:`harness-cap`},a(e),1))),128))])):d(``,!0)]),_:1}),_(z,{label:e.$t(`agents.k3lrqn0002`)},{default:m(()=>[_(Oe,{value:i($).visibility,"onUpdate:value":c[4]||=e=>i($).visibility=e},{default:m(()=>[_(U,{value:`private`},{default:m(()=>[s(a(e.$t(`agents.k17jfge3015`)),1)]),_:1}),_(U,{value:`public`},{default:m(()=>[s(a(e.$t(`agents.k1tt5zyo016`)),1)]),_:1})]),_:1},8,[`value`])]),_:1},8,[`label`]),_(z,{label:`config(JSON;mock 可配 delayMs)`},{default:m(()=>[_(ke,{value:i($).configJson,"onUpdate:value":c[5]||=e=>i($).configJson=e,rows:6},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`open`,`title`])])}}}),[[`__scopeId`,`data-v-2bec4234`]]);export{z as default};
@@ -1 +0,0 @@
1
- import{G as e,I as t}from"./rqZ-1SoP.js";import{B as n,C as r,M as i,O as a,U as o,et as s,f as c,gt as l,mt as u,rt as d,x as f,z as p}from"./BSCpFtzG.js";import{$ as m,At as h,Ct as g,Q as _,Y as v,d as y,it as b,kt as x,n as S,pt as C,t as w,u as T}from"./BDUjyaF4.js";import{t as E}from"./BfGc7TJp.js";import{G as D,K as O,_ as k,g as A,s as j}from"./VLI2Zy4t.js";import{b as M,p as N,x as P}from"./D-Ca4BGY.js";import{t as F}from"./lO5tpDZ5.js";var I=()=>({prefixCls:String,width:w.oneOfType([w.string,w.number]),height:w.oneOfType([w.string,w.number]),style:{type:Object,default:void 0},class:String,rootClassName:String,rootStyle:m(),placement:{type:String},wrapperClassName:String,level:{type:[String,Array]},levelMove:{type:[Number,Function,Array]},duration:String,ease:String,showMask:{type:Boolean,default:void 0},maskClosable:{type:Boolean,default:void 0},maskStyle:{type:Object,default:void 0},afterVisibleChange:Function,keyboard:{type:Boolean,default:void 0},contentWrapperStyle:v(),autofocus:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},motion:_(),maskMotion:m()}),L=()=>x(x({},I()),{forceRender:{type:Boolean,default:void 0},getContainer:w.oneOfType([w.string,w.func,w.object,w.looseBool])}),R=()=>x(x({},I()),{getContainer:Function,getOpenCount:Function,scrollLocker:w.any,inline:Boolean});function z(e){return Array.isArray(e)?e:[e]}var B={transition:`transitionend`,WebkitTransition:`webkitTransitionEnd`,MozTransition:`transitionend`,OTransition:`oTransitionEnd otransitionend`};B[Object.keys(B).filter(e=>{if(typeof document>`u`)return!1;let t=document.getElementsByTagName(`html`)[0];return e in(t?t.style:{})})[0]];var V=!(typeof window<`u`&&window.document&&window.document.createElement),H=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},U={},W=r({compatConfig:{MODE:3},inheritAttrs:!1,props:R(),emits:[`close`,`handleClick`,`change`],setup(r,a){let{emit:o,slots:c}=a,u=l(),m=l(),_=l(),v=l(),y=l(),b=[],x=`drawer_id_${Number((Date.now()+Math.random()).toString().replace(`.`,Math.round(Math.random()*9).toString())).toString(16)}`;p(()=>{i(()=>{var e;let{open:t,getContainer:n,showMask:a,autofocus:o}=r,s=n?.();E(r),t&&(s&&s.parentNode===document.body&&(U[x]=t),i(()=>{o&&S()}),a&&((e=r.scrollLocker)==null||e.lock()))})}),s(()=>r.level,()=>{E(r)},{flush:`post`}),s(()=>r.open,()=>{let{open:e,getContainer:t,scrollLocker:n,showMask:i,autofocus:a}=r,o=t?.();o&&o.parentNode===document.body&&(U[x]=!!e),e?(a&&S(),i&&n?.lock()):n?.unLock()},{flush:`post`}),n(()=>{var e;let{open:t}=r;delete U[x],t&&(document.body.style.touchAction=``),(e=r.scrollLocker)==null||e.unLock()}),s(()=>r.placement,e=>{e&&(y.value=null)});let S=()=>{var e,t;(t=(e=m.value)?.focus)==null||t.call(e)},C=e=>{o(`close`,e)},w=e=>{e.keyCode===A.ESC&&(e.stopPropagation(),C(e))},T=()=>{let{open:e,afterVisibleChange:t}=r;t&&t(!!e)},E=e=>{let{level:t,getContainer:n}=e;if(V)return;let r=n?.(),i=r?r.parentNode:null;b=[],t===`all`?(i?Array.prototype.slice.call(i.children):[]).forEach(e=>{e.nodeName!==`SCRIPT`&&e.nodeName!==`STYLE`&&e.nodeName!==`LINK`&&e!==r&&b.push(e)}):t&&z(t).forEach(e=>{document.querySelectorAll(e).forEach(e=>{b.push(e)})})},D=e=>{o(`handleClick`,e)},k=l(!1);return s(m,()=>{i(()=>{k.value=!0})}),()=>{let{width:n,height:i,open:a,prefixCls:o,placement:s,level:l,levelMove:p,ease:b,duration:x,getContainer:S,onChange:E,afterVisibleChange:A,showMask:j,maskClosable:M,maskStyle:N,keyboard:P,getOpenCount:F,scrollLocker:I,contentWrapperStyle:L,style:R,class:z,rootClassName:B,rootStyle:V,maskMotion:U,motion:W,inline:G}=r,K=H(r,`width.height.open.prefixCls.placement.level.levelMove.ease.duration.getContainer.onChange.afterVisibleChange.showMask.maskClosable.maskStyle.keyboard.getOpenCount.scrollLocker.contentWrapperStyle.style.class.rootClassName.rootStyle.maskMotion.motion.inline`.split(`.`)),q=a&&k.value,J=g(o,{[`${o}-${s}`]:!0,[`${o}-open`]:q,[`${o}-inline`]:G,"no-mask":!j,[B]:!0}),Y=typeof W==`function`?W(s):W;return f(`div`,h(h({},O(K,[`autofocus`])),{},{tabindex:-1,class:J,style:V,ref:m,onKeydown:q&&P?w:void 0}),[f(t,U,{default:()=>[j&&d(f(`div`,{class:`${o}-mask`,onClick:M?C:void 0,style:N,ref:_},null),[[e,q]])]}),f(t,h(h({},Y),{},{onAfterEnter:T,onAfterLeave:T}),{default:()=>[d(f(`div`,{class:`${o}-content-wrapper`,style:[L],ref:u},[f(`div`,{class:[`${o}-content`,z],style:R,ref:y},[c.default?.call(c)]),c.handler?f(`div`,{onClick:D,ref:v},[c.handler?.call(c)]):null]),[[e,q]])]})])}}}),G=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},K=r({compatConfig:{MODE:3},inheritAttrs:!1,props:E(L(),{prefixCls:`drawer`,placement:`left`,getContainer:`body`,level:`all`,duration:`.3s`,ease:`cubic-bezier(0.78, 0.14, 0.15, 0.86)`,afterVisibleChange:()=>{},showMask:!0,maskClosable:!0,maskStyle:{},wrapperClassName:``,keyboard:!0,forceRender:!1,autofocus:!0}),emits:[`handleClick`,`close`],setup(e,t){let{emit:n,slots:r}=t,i=u(null),a=e=>{n(`handleClick`,e)},o=e=>{n(`close`,e)};return()=>{let{getContainer:t,wrapperClassName:n,rootClassName:s,rootStyle:c,forceRender:l}=e,u=G(e,[`getContainer`,`wrapperClassName`,`rootClassName`,`rootStyle`,`forceRender`]),d=null;if(!t)return f(W,h(h({},u),{},{rootClassName:s,rootStyle:c,open:e.open,onClose:o,onHandleClick:a,inline:!0}),r);let p=!!r.handler||l;return(p||e.open||i.value)&&(d=f(k,{autoLock:!0,visible:e.open,forceRender:p,getContainer:t,wrapperClassName:n},{default:t=>{var{visible:n,afterClose:l}=t,d=G(t,[`visible`,`afterClose`]);return f(W,h(h(h({ref:i},u),d),{},{rootClassName:s,rootStyle:c,open:n===void 0?e.open:n,afterVisibleChange:l===void 0?e.afterVisibleChange:l,onClose:o,onHandleClick:a}),r)}})),d}}}),q=e=>{let{componentCls:t,motionDurationSlow:n}=e,r={"&-enter, &-appear, &-leave":{"&-start":{transition:`none`},"&-active":{transition:`all ${n}`}}};return{[t]:{[`${t}-mask-motion`]:{"&-enter, &-appear, &-leave":{"&-active":{transition:`all ${n}`}},"&-enter, &-appear":{opacity:0,"&-active":{opacity:1}},"&-leave":{opacity:1,"&-active":{opacity:0}}},[`${t}-panel-motion`]:{"&-left":[r,{"&-enter, &-appear":{"&-start":{transform:`translateX(-100%) !important`},"&-active":{transform:`translateX(0)`}},"&-leave":{transform:`translateX(0)`,"&-active":{transform:`translateX(-100%)`}}}],"&-right":[r,{"&-enter, &-appear":{"&-start":{transform:`translateX(100%) !important`},"&-active":{transform:`translateX(0)`}},"&-leave":{transform:`translateX(0)`,"&-active":{transform:`translateX(100%)`}}}],"&-top":[r,{"&-enter, &-appear":{"&-start":{transform:`translateY(-100%) !important`},"&-active":{transform:`translateY(0)`}},"&-leave":{transform:`translateY(0)`,"&-active":{transform:`translateY(-100%)`}}}],"&-bottom":[r,{"&-enter, &-appear":{"&-start":{transform:`translateY(100%) !important`},"&-active":{transform:`translateY(0)`}},"&-leave":{transform:`translateY(0)`,"&-active":{transform:`translateY(100%)`}}}]}}}},J=e=>{let{componentCls:t,zIndexPopup:n,colorBgMask:r,colorBgElevated:i,motionDurationSlow:a,motionDurationMid:o,padding:s,paddingLG:c,fontSizeLG:l,lineHeightLG:u,lineWidth:d,lineType:f,colorSplit:p,marginSM:m,colorIcon:h,colorIconHover:g,colorText:_,fontWeightStrong:v,drawerFooterPaddingVertical:y,drawerFooterPaddingHorizontal:b}=e,x=`${t}-content-wrapper`;return{[t]:{position:`fixed`,inset:0,zIndex:n,pointerEvents:`none`,"&-pure":{position:`relative`,background:i,[`&${t}-left`]:{boxShadow:e.boxShadowDrawerLeft},[`&${t}-right`]:{boxShadow:e.boxShadowDrawerRight},[`&${t}-top`]:{boxShadow:e.boxShadowDrawerUp},[`&${t}-bottom`]:{boxShadow:e.boxShadowDrawerDown}},"&-inline":{position:`absolute`},[`${t}-mask`]:{position:`absolute`,inset:0,zIndex:n,background:r,pointerEvents:`auto`},[x]:{position:`absolute`,zIndex:n,transition:`all ${a}`,"&-hidden":{display:`none`}},[`&-left > ${x}`]:{top:0,bottom:0,left:{_skip_check_:!0,value:0},boxShadow:e.boxShadowDrawerLeft},[`&-right > ${x}`]:{top:0,right:{_skip_check_:!0,value:0},bottom:0,boxShadow:e.boxShadowDrawerRight},[`&-top > ${x}`]:{top:0,insetInline:0,boxShadow:e.boxShadowDrawerUp},[`&-bottom > ${x}`]:{bottom:0,insetInline:0,boxShadow:e.boxShadowDrawerDown},[`${t}-content`]:{width:`100%`,height:`100%`,overflow:`auto`,background:i,pointerEvents:`auto`},[`${t}-wrapper-body`]:{display:`flex`,flexDirection:`column`,width:`100%`,height:`100%`},[`${t}-header`]:{display:`flex`,flex:0,alignItems:`center`,padding:`${s}px ${c}px`,fontSize:l,lineHeight:u,borderBottom:`${d}px ${f} ${p}`,"&-title":{display:`flex`,flex:1,alignItems:`center`,minWidth:0,minHeight:0}},[`${t}-extra`]:{flex:`none`},[`${t}-close`]:{display:`inline-block`,marginInlineEnd:m,color:h,fontWeight:v,fontSize:l,fontStyle:`normal`,lineHeight:1,textAlign:`center`,textTransform:`none`,textDecoration:`none`,background:`transparent`,border:0,outline:0,cursor:`pointer`,transition:`color ${o}`,textRendering:`auto`,"&:focus, &:hover":{color:g,textDecoration:`none`}},[`${t}-title`]:{flex:1,margin:0,color:_,fontWeight:e.fontWeightStrong,fontSize:l,lineHeight:u},[`${t}-body`]:{flex:1,minWidth:0,minHeight:0,padding:c,overflow:`auto`},[`${t}-footer`]:{flexShrink:0,padding:`${y}px ${b}px`,borderTop:`${d}px ${f} ${p}`},"&-rtl":{direction:`rtl`}}}},Y=y(`Drawer`,e=>{let t=T(e,{drawerFooterPaddingVertical:e.paddingXS,drawerFooterPaddingHorizontal:e.padding});return[J(t),q(t)]},e=>({zIndexPopup:e.zIndexPopupBase})),ee=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},X=[`top`,`right`,`bottom`,`left`],Z={distance:180},Q=r({compatConfig:{MODE:3},name:`ADrawer`,inheritAttrs:!1,props:E({autofocus:{type:Boolean,default:void 0},closable:{type:Boolean,default:void 0},closeIcon:w.any,destroyOnClose:{type:Boolean,default:void 0},forceRender:{type:Boolean,default:void 0},getContainer:{type:[String,Function,Boolean,Object],default:void 0},maskClosable:{type:Boolean,default:void 0},mask:{type:Boolean,default:void 0},maskStyle:m(),rootClassName:String,rootStyle:m(),size:{type:String},drawerStyle:m(),headerStyle:m(),bodyStyle:m(),contentWrapperStyle:{type:Object,default:void 0},title:w.any,visible:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},width:w.oneOfType([w.string,w.number]),height:w.oneOfType([w.string,w.number]),zIndex:Number,prefixCls:String,push:w.oneOfType([w.looseBool,{type:Object}]),placement:w.oneOf(X),keyboard:{type:Boolean,default:void 0},extra:w.any,footer:w.any,footerStyle:m(),level:w.any,levelMove:{type:[Number,Array,Function]},handle:w.any,afterVisibleChange:Function,onAfterVisibleChange:Function,onAfterOpenChange:Function,"onUpdate:visible":Function,"onUpdate:open":Function,onClose:Function},{closable:!0,placement:`right`,maskClosable:!0,mask:!0,level:null,keyboard:!0,push:Z}),slots:Object,setup(e,t){let{emit:r,slots:u,attrs:d}=t,m=l(!1),_=l(!1),v=l(null),y=l(!1),b=l(!1),w=c(()=>e.open??e.visible);s(w,()=>{w.value?y.value=!0:b.value=!1},{immediate:!0}),s([w,y],()=>{w.value&&y.value&&(b.value=!0)},{immediate:!0});let T=a(`parentDrawerOpts`,null),{prefixCls:E,getPopupContainer:k,direction:A}=S(`drawer`,e),[I,L]=Y(E),R=c(()=>e.getContainer===void 0&&k?.value?()=>k.value(document.body):e.getContainer);D(!e.afterVisibleChange,`Drawer`,"`afterVisibleChange` prop is deprecated, please use `@afterVisibleChange` event instead"),o(`parentDrawerOpts`,{setPush:()=>{m.value=!0},setPull:()=>{m.value=!1,i(()=>{z()})}}),p(()=>{w.value&&T&&T.setPush()}),n(()=>{T&&T.setPull()}),s(b,()=>{T&&(b.value?T.setPush():T.setPull())},{flush:`post`});let z=()=>{var e,t;(t=(e=v.value)?.domFocus)==null||t.call(e)},B=e=>{r(`update:visible`,!1),r(`update:open`,!1),r(`close`,e)},V=t=>{var n;t||(_.value===!1&&(_.value=!0),e.destroyOnClose&&(y.value=!1)),(n=e.afterVisibleChange)==null||n.call(e,t),r(`afterVisibleChange`,t),r(`afterOpenChange`,t)},H=c(()=>{let{push:t,placement:n}=e,r;return r=typeof t==`boolean`?t?Z.distance:0:t.distance,r=parseFloat(String(r||0)),n===`left`||n===`right`?`translateX(${n===`left`?r:-r}px)`:n===`top`||n===`bottom`?`translateY(${n===`top`?r:-r}px)`:null}),U=c(()=>e.width??(e.size===`large`?736:378)),W=c(()=>e.height??(e.size===`large`?736:378)),G=c(()=>{let{mask:t,placement:n}=e;if(!b.value&&!t)return{};let r={};return n===`left`||n===`right`?r.width=F(U.value)?`${U.value}px`:U.value:r.height=F(W.value)?`${W.value}px`:W.value,r}),q=c(()=>{let{zIndex:t,contentWrapperStyle:n}=e,r=G.value;return[{zIndex:t,transform:m.value?H.value:void 0},x({},n),r]}),J=t=>{let{closable:n,headerStyle:r}=e,i=C(u,e,`extra`),a=C(u,e,`title`);return!a&&!n?null:f(`div`,{class:g(`${t}-header`,{[`${t}-header-close-only`]:n&&!a&&!i}),style:r},[f(`div`,{class:`${t}-header-title`},[X(t),a&&f(`div`,{class:`${t}-title`},[a])]),i&&f(`div`,{class:`${t}-extra`},[i])])},X=t=>{let{closable:n}=e,r=u.closeIcon?u.closeIcon?.call(u):e.closeIcon;return n&&f(`button`,{key:`closer`,onClick:B,"aria-label":`Close`,class:`${t}-close`},[r===void 0?f(N,null,null):r])},Q=t=>{if(_.value&&!e.forceRender&&!y.value)return null;let{bodyStyle:n,drawerStyle:r}=e;return f(`div`,{class:`${t}-wrapper-body`,style:r},[J(t),f(`div`,{key:`body`,class:`${t}-body`,style:n},[u.default?.call(u)]),$(t)])},$=t=>{let n=C(u,e,`footer`);if(!n)return null;let r=`${t}-footer`;return f(`div`,{class:r,style:e.footerStyle},[n])},te=c(()=>g({"no-mask":!e.mask,[`${E.value}-rtl`]:A.value===`rtl`},e.rootClassName,L.value)),ne=c(()=>P(M(E.value,`mask-motion`))),re=e=>P(M(E.value,`panel-motion-${e}`));return()=>{let{width:t,height:n,placement:r,mask:i,forceRender:a}=e,o=ee(e,[`width`,`height`,`placement`,`mask`,`forceRender`]),s=x(x(x({},d),O(o,[`size`,`closeIcon`,`closable`,`destroyOnClose`,`drawerStyle`,`headerStyle`,`bodyStyle`,`title`,`push`,`onAfterVisibleChange`,`onClose`,`onUpdate:visible`,`onUpdate:open`,`visible`])),{forceRender:a,onClose:B,afterVisibleChange:V,handler:!1,prefixCls:E.value,open:b.value,showMask:i,placement:r,ref:v});return I(f(j,null,{default:()=>[f(K,h(h({},s),{},{maskMotion:ne.value,motion:re,width:U.value,height:W.value,getContainer:R.value,rootClassName:te.value,rootStyle:e.rootStyle,contentWrapperStyle:q.value}),{handler:e.handle?()=>e.handle:u.handle,default:()=>Q(E.value)})]}))}}}),$=b(Q);export{$ as t};
@@ -1 +0,0 @@
1
- import{q as e}from"./rqZ-1SoP.js";import{C as t,G as n,H as r,Wt as i,a,b as o,et as s,f as c,ft as l,g as u,h as d,m as f,mt as p,nt as m,p as h,t as g,x as _,z as v}from"./BSCpFtzG.js";import{d as y}from"./-6OnbLFb.js";import{s as b}from"./C3tCneTM.js";import{n as x}from"./BeIfu4N3.js";import{t as S}from"./VLI2Zy4t.js";import{n as C,t as ee}from"./D0fhp-Ga.js";import{r as w}from"./D-Ca4BGY.js";import{i as te}from"./Cn3J3NXR.js";import{i as ne,r as T,t as E}from"./DzuC31-i.js";import{t as D}from"./6PZPfFcO.js";import{t as O}from"./Bp5luxkg2.js";import{t as k}from"./BcrN7QEl2.js";import{t as A}from"./G0qIw7Gq2.js";var re={class:`perm-page`},ie={class:`aw-page-head`},ae={class:`pg-sub`},j=[`onClick`],M={key:0,class:`dim`},N={class:`sec`},P={class:`detail`},F={class:`sec`},I={key:0,class:`ch-list`},L={key:1,class:`dim`},R={class:`sec`},z={class:`hint`},B={class:`matrix`},V=[`title`],H=g(t({__name:`index`,setup(t){let{t:g}=x(),H=k(),U=p([]),W=p([]),G=p(!1),K=p(``),q=p(!1),J=p(null),Y=l({}),X=p(!1);function Z(){let e=H.token;return e?{authorization:`Bearer ${e}`}:{}}async function oe(){G.value=!0;try{let e=await b(`/api/workshop/permissions`,{headers:Z()});if(e.code!==0||!e.data)throw Error(`load fail`);U.value=e.data.lines??[],W.value=e.data.users??[]}catch(e){w.error(A(e,g(`permissions.loadFail`)))}finally{G.value=!1}}let se=c(()=>{let e=K.value.trim().toLowerCase();return e?W.value.filter(t=>`${t.name} ${t.email}`.toLowerCase().includes(e)):W.value});function Q(e){J.value=e,ce(e),q.value=!0}function ce(e){for(let e of Object.keys(Y))Reflect.deleteProperty(Y,e);for(let t of U.value){let n=e.grants.find(e=>e.lineId===t.id);Y[t.id]=n?.mode===`readonly`||n?.mode===`operate`?n.mode:`none`}}let $=c(()=>{if(!J.value)return 0;let e=0;for(let t of U.value){let n=J.value.grants.find(e=>e.lineId===t.id),r=n?.mode===`readonly`||n?.mode===`operate`?n.mode:`none`;(Y[t.id]??`none`)!==r&&e++}return e});async function le(){if(J.value){X.value=!0;try{let e=U.value.filter(e=>(Y[e.id]??`none`)!==`none`).map(e=>({lineId:e.id,mode:Y[e.id]})),t=U.value.filter(e=>(Y[e.id]??`none`)===`none`&&J.value.grants.some(t=>t.lineId===e.id)).map(e=>({lineId:e.id,mode:null})),n=await b(`/api/workshop/permissions`,{method:`PUT`,headers:Z(),body:{userId:J.value.id,grants:[...e,...t]}});if(n.code!==0||!n.data)throw Error(`save fail`);J.value.grants=n.data.grants;let r=W.value.find(e=>e.id===J.value?.id);r&&(r.grants=n.data.grants),w.success(g(`permissions.saved`,{n:e.length+t.length}))}catch(e){w.error(A(e,g(`permissions.saveFail`)))}finally{X.value=!1}}}function ue(e){return g(e===`operate`?`permissions.operate`:e===`readonly`?`permissions.readonly`:`permissions.none`)}return s(()=>H.isLoggedIn,e=>{e&&!H.isAdmin&&y(`/`)},{immediate:!0}),v(oe),(t,s)=>{let c=te,l=C,p=E,g=S,v=ee,y=D,b=T,x=ne,w=O;return r(),u(`div`,re,[h(`header`,ie,[h(`div`,null,[s[2]||=h(`p`,{class:`aw-kicker`},` agentworkshop / permissions `,-1),h(`h1`,null,i(t.$t(`permissions.title`)),1),h(`p`,ae,i(t.$t(`permissions.subtitle`)),1)]),_(c,{value:K.value,"onUpdate:value":s[0]||=e=>K.value=e,placeholder:t.$t(`permissions.search`),style:{"max-width":`260px`},"allow-clear":``},null,8,[`value`,`placeholder`])]),_(y,{bordered:!1,class:`table-card`},{default:m(()=>[_(v,{"data-source":se.value,loading:G.value,"row-key":`id`,size:`middle`,pagination:{pageSize:12,showSizeChanger:!1}},{default:m(()=>[_(l,{title:t.$t(`permissions.colUser`),"data-index":`name`},{default:m(({record:t})=>[h(`a`,{onClick:e(e=>Q(t),[`prevent`])},i(t.name),9,j)]),_:1},8,[`title`]),_(l,{title:t.$t(`permissions.colEmail`),"data-index":`email`},null,8,[`title`]),_(l,{title:t.$t(`permissions.colRole`),"data-index":`role`},{default:m(({record:e})=>[_(p,{color:e.role===`admin`?`green`:e.role===`editor`?`blue`:`default`},{default:m(()=>[o(i(e.role),1)]),_:2},1032,[`color`])]),_:1},8,[`title`]),_(l,{title:t.$t(`permissions.colStatus`),"data-index":`status`},{default:m(({record:e})=>[_(p,{color:e.status===`active`?`cyan`:`red`},{default:m(()=>[o(i(e.status===`active`?t.$t(`permissions.active`):e.status),1)]),_:2},1032,[`color`])]),_:1},8,[`title`]),_(l,{title:t.$t(`permissions.colChannels`),"data-index":`channels`},{default:m(({record:e})=>[o(i(e.channels.length),1)]),_:1},8,[`title`]),_(l,{title:t.$t(`permissions.colGrants`),"data-index":`grants`},{default:m(({record:e})=>[(r(!0),u(a,null,n(e.grants,e=>(r(),f(p,{key:e.lineId,style:{"margin-bottom":`2px`}},{default:m(()=>[o(i((U.value.find(t=>t.id===e.lineId)?.name??e.lineId).slice(0,14))+` · `+i(ue(e.mode)),1)]),_:2},1024))),128)),e.grants.length?d(``,!0):(r(),u(`span`,M,`—`))]),_:1},8,[`title`]),_(l,{title:t.$t(`permissions.colOps`),width:90},{default:m(({record:e})=>[_(g,{size:`small`,onClick:t=>Q(e)},{default:m(()=>[o(i(t.$t(`permissions.manage`)),1)]),_:1},8,[`onClick`])]),_:1},8,[`title`])]),_:1},8,[`data-source`,`loading`])]),_:1}),_(w,{open:q.value,"onUpdate:open":s[1]||=e=>q.value=e,title:J.value?`${J.value.name} · ${t.$t(`permissions.detail`)}`:``,width:`560`},{default:m(()=>[J.value?(r(),u(a,{key:0},[h(`h4`,N,i(t.$t(`permissions.secProfile`)),1),h(`dl`,P,[s[3]||=h(`dt`,null,`email`,-1),h(`dd`,null,i(J.value.email),1),s[4]||=h(`dt`,null,`role`,-1),h(`dd`,null,i(J.value.role),1),s[5]||=h(`dt`,null,`status`,-1),h(`dd`,null,i(J.value.status),1),s[6]||=h(`dt`,null,`created`,-1),h(`dd`,null,i(J.value.createdAt),1)]),h(`h4`,F,i(t.$t(`permissions.secChannels`))+`(`+i(J.value.channels.length)+`) `,1),J.value.channels.length?(r(),u(`div`,I,[(r(!0),u(a,null,n(J.value.channels,e=>(r(),u(`code`,{key:e.id},i(e.name||e.id.slice(0,8)),1))),128))])):(r(),u(`p`,L,i(t.$t(`permissions.noChannels`)),1)),h(`h4`,R,[o(i(t.$t(`permissions.secMatrix`))+` `,1),_(g,{type:`primary`,size:`small`,loading:X.value,disabled:$.value===0,style:{"margin-left":`12px`},onClick:le},{default:m(()=>[o(i(t.$t(`permissions.save`,{n:$.value})),1)]),_:1},8,[`loading`,`disabled`])]),h(`p`,z,i(t.$t(`permissions.matrixHint`)),1),h(`div`,B,[(r(!0),u(a,null,n(U.value,e=>(r(),u(`div`,{key:e.id,class:`row`},[h(`span`,{class:`line-name`,title:e.id},i(e.name),9,V),_(x,{value:Y[e.id],"onUpdate:value":t=>Y[e.id]=t,size:`small`},{default:m(()=>[_(b,{value:`none`},{default:m(()=>[o(i(t.$t(`permissions.none`)),1)]),_:1}),_(b,{value:`readonly`},{default:m(()=>[o(i(t.$t(`permissions.readonly`)),1)]),_:1}),_(b,{value:`operate`},{default:m(()=>[o(i(t.$t(`permissions.operate`)),1)]),_:1})]),_:1},8,[`value`,`onUpdate:value`])]))),128))])],64)):d(``,!0)]),_:1},8,[`open`,`title`])])}}}),[[`__scopeId`,`data-v-96694c07`]]);export{H as default};