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
@@ -0,0 +1 @@
1
+ import{a as e,c as t,n}from"./BU83-NnX.js";import{$ as r,S as i,Ut as a,V as o,Vt as s,b as c,ct as l,d as u,f as d,h as f,i as p,m,p as h,pt as g,tt as _,xt as v,y}from"./CSkxz2NX.js";import{d as b}from"./D6uzXueg.js";import{d as x}from"./BJHKLJJU.js";import{n as S}from"./DtYHUi5Z.js";import{n as C}from"./KZQX7xoM.js";import{t as ee}from"./zIGh7R49.js";import{t as te}from"./DBHNsT1Y.js";import{t as ne}from"./BCGafdXT.js";import{t as re}from"./pdk8jLGT.js";import{t as ie}from"./BYhEUx8t.js";import{t as ae}from"./jZsY8yYz.js";import{t as w}from"./DZtm4l-P2.js";import{t as T}from"./DIaZ2PTo2.js";import{t as E}from"./BDNMzG2s2.js";import{t as D}from"./D0ZBQrN_2.js";import{t as O}from"./CNs_Ozdc2.js";var oe={class:`page`},se={key:0,class:`auth-gate`},ce={class:`sub`},le={class:`aw-page-head`},ue={class:`sub`},de={class:`font-medium`},fe={key:1,class:`tok-cell`},pe=[`title`],me={class:`once-banner`},he={class:`raw-row`},ge={class:`raw`},_e=[`title`],ve=[`title`],ye={class:`once-meta`},k=E(i({__name:`tokens`,setup(i){let{t:E}=C();O({layout:`default`});let k=T(),A=g([]),j=g(!1),M=g(!1),N=g(``),P=g(!1),F=g(``),I=g(``),L=g(!1),R=g(``),z=g(``),B=g(!1),V=async()=>{if(k.isLoggedIn){j.value=!0;try{A.value=await k.listTokens()}catch(t){e.error(t instanceof Error?t.message:E(`tokens.k19jvk54013`))}finally{j.value=!1}}};r(()=>k.isLoggedIn,e=>{e?V():A.value=[]},{immediate:!0});let H=async()=>{P.value=!0;try{let e=await k.createToken(N.value);F.value=e.token,I.value=N.value,M.value=!1,N.value=``,await V()}catch(t){e.error(D(t))}finally{P.value=!1}},U=async()=>{if(!z.value.trim()){e.warning(E(`tokens.k169z26g014`));return}B.value=!0;try{await k.renameToken(R.value,z.value),L.value=!1,await V(),e.success(E(`tokens.k3n9aij015`))}catch(t){e.error(D(t))}finally{B.value=!1}},be=t=>{let n=t.id;if(!n)return;let r=n===k.user?.tokenId;(async()=>{try{if(await k.revokeToken(n),e.success(E(`tokens.k3n64kh016`)),r)return;await V()}catch(t){e.error(D(t))}})()},W=g(!1),G=g(!1),xe=u(()=>{let e=F.value;return e?`${e.slice(0,6)}${`•`.repeat(Math.max(12,e.length-10))}${e.slice(-4)}`:``}),Se=()=>{W.value=!W.value},K=async e=>{try{return await navigator.clipboard.writeText(e),!0}catch{try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}},Ce=async()=>{await K(F.value)?(G.value=!0,setTimeout(()=>{G.value=!1},1600)):e.error(E(`tokens.kjtcn2h017`))},q=()=>{F.value=``,W.value=!1,G.value=!1},J=g({}),Y=g(``),X=g(``),Z=e=>e in J.value,we=e=>Z(e.id)?J.value[e.id]:e.preview??`ut-${`•`.repeat(14)}`,Q=async t=>{if(Z(t.id)){Reflect.deleteProperty(J.value,t.id);return}if(!t.hasPlain){e.warning(E(`tokens.kkpgzo8018`));return}Y.value=t.id;try{let e=await k.revealToken(t.id);e&&(J.value[t.id]=e)}catch(t){e.error(t instanceof Error?t.message:E(`tokens.k1gj9ls019`))}finally{Y.value=``}},Te=async t=>{let n=J.value[t.id]??null;if(!n){if(!t.hasPlain){e.warning(E(`tokens.kr5ovor020`));return}Y.value=t.id;try{n=await k.revealToken(t.id)}catch(t){e.error(t instanceof Error?t.message:E(`tokens.kubtby5021`));return}finally{Y.value=``}}n&&await K(n)?(X.value=t.id,setTimeout(()=>{X.value=``},1600)):e.error(E(`tokens.kgkfcr0022`))},$=e=>e?e.replace(`T`,` `).slice(0,19):`-`,Ee=e=>{R.value=e.id??``,z.value=e.label??``,L.value=!0},De=[{title:E(`tokens.k41416002`),key:`label`,dataIndex:`label`},{title:`Token`,key:`token`,width:360},{title:E(`tokens.k1bg95gk023`),key:`createdAt`,dataIndex:`createdAt`,width:170},{title:E(`tokens.k1euotul024`),key:`lastUsedAt`,dataIndex:`lastUsedAt`,width:200},{title:E(`tokens.k40aa6025`),key:`action`,width:170}];return S({title:()=>E(`titles.tokens`)}),(e,r)=>{let i=t,u=ie,g=ne,S=ae,C=re,T=ee,E=w,D=te,O=n;return o(),f(`div`,oe,[v(k).isLoggedIn?(o(),f(p,{key:1},[d(`div`,le,[d(`div`,null,[r[6]||=d(`p`,{class:`aw-kicker`},` agentworkshop / api tokens `,-1),r[7]||=d(`h1`,null,`API Token`,-1),d(`p`,ue,a(v(k).user?.name)+` · `+a(e.$t(`tokens.k1upppaw026`)),1)]),c(S,{class:`head-actions`},{default:_(()=>[v(k).user?.tokenId?(o(),h(g,{key:0,color:`green`},{default:_(()=>[y(a(e.$t(`tokens.khcxmsc006`)),1)]),_:1})):m(``,!0),c(i,{type:`primary`,onClick:r[1]||=e=>M.value=!0},{default:_(()=>[r[8]||=d(`span`,{class:`i-tabler-plus`},null,-1),y(` `+a(e.$t(`chips.issue`)),1)]),_:1})]),_:1})]),c(u,{bordered:!1,class:`table-card`},{default:_(()=>[c(E,{spinning:v(j)},{default:_(()=>[c(T,{columns:De,"data-source":v(A),pagination:!1,"row-key":`id`},{bodyCell:_(({column:t,record:n})=>[t.key===`label`?(o(),h(S,{key:0},{default:_(()=>[r[9]||=d(`span`,{class:`i-tabler-key text-primary`},null,-1),d(`span`,de,a(n.label||e.$t(`tokens.kj3mklm028`)),1),n.id===v(k).user?.tokenId?(o(),h(g,{key:0,color:`green`},{default:_(()=>[y(a(e.$t(`tokens.k1defr98007`)),1)]),_:1})):m(``,!0)]),_:2},1024)):t.key===`token`?(o(),f(`div`,fe,[d(`code`,{class:s([`tok-val`,{revealed:Z(n.id)}]),title:Z(n.id)?`已显示明文,点击眼睛遮回`:`掩码预览`},a(we(n)),11,pe),n.hasPlain?(o(),h(i,{key:0,type:`text`,size:`small`,class:`tok-op`,loading:v(Y)===n.id,title:Z(n.id)?`遮回`:`查看明文`,onClick:e=>Q(n)},{default:_(()=>[d(`span`,{class:s(Z(n.id)?`i-tabler-eye-off`:`i-tabler-eye`)},null,2)]),_:2},1032,[`loading`,`title`,`onClick`])):m(``,!0),n.hasPlain?(o(),h(i,{key:1,type:`text`,size:`small`,class:s([`tok-op`,{ok:v(X)===n.id}]),title:v(X)===n.id?`已复制`:`复制明文`,onClick:e=>Te(n)},{default:_(()=>[d(`span`,{class:s(v(X)===n.id?`i-tabler-check`:`i-tabler-copy`)},null,2)]),_:2},1032,[`class`,`title`,`onClick`])):m(``,!0)])):t.key===`createdAt`?(o(),f(p,{key:2},[y(a($(n.createdAt)),1)],64)):t.key===`lastUsedAt`?(o(),f(p,{key:3},[y(a($(n.lastUsedAt)),1)],64)):t.key===`action`?(o(),h(S,{key:4},{default:_(()=>[c(i,{type:`link`,size:`small`,onClick:e=>Ee(n)},{default:_(()=>[r[10]||=d(`span`,{class:`i-tabler-edit`},null,-1),y(` `+a(e.$t(`tokens.k3vrpcs009`)),1)]),_:1},8,[`onClick`]),c(C,{title:n.id===v(k).user?.tokenId?`吊销当前会话 token 将退出登录`:`吊销后立即失效`,"ok-text":`吊销`,"cancel-text":`取消`,onConfirm:e=>be(n)},{default:_(()=>[c(i,{type:`text`,size:`small`,class:`tok-revoke`},{default:_(()=>[r[11]||=d(`span`,{class:`i-tabler-trash`},null,-1),y(` `+a(e.$t(`tokens.k3xmrz010`)),1)]),_:1})]),_:1},8,[`title`,`onConfirm`])]),_:2},1024)):m(``,!0)]),_:1},8,[`data-source`])]),_:1},8,[`spinning`])]),_:1}),c(O,{open:v(M),"onUpdate:open":r[3]||=e=>l(M)?M.value=e:null,title:e.$t(`chips.issueTitle`),"confirm-loading":v(P),"ok-text":`创建`,"cancel-text":`取消`,onOk:H},{default:_(()=>[c(D,{value:v(N),"onUpdate:value":r[2]||=e=>l(N)?N.value=e:null,placeholder:e.$t(`tokens.k1hlqknl001`),onKeydown:b(H,[`enter`])},null,8,[`value`,`placeholder`])]),_:1},8,[`open`,`title`,`confirm-loading`]),c(O,{open:v(F)!==``,title:`Token 已创建`,footer:null,"mask-closable":!1,onCancel:q,onAfterClose:q},{default:_(()=>[d(`div`,me,[r[12]||=d(`span`,{class:`i-tabler-circle-check`},null,-1),d(`span`,null,a(e.$t(`tokens.k12149oy011`)),1)]),d(`div`,he,[d(`code`,ge,a(v(W)?v(F):v(xe)),1),d(`button`,{class:`raw-op`,title:v(W)?`隐藏明文`:`显示明文`,onClick:Se},[d(`span`,{class:s(v(W)?`i-tabler-eye-off`:`i-tabler-eye`)},null,2)],8,_e),d(`button`,{class:s([`raw-op`,{ok:v(G)}]),title:v(G)?`已复制`:`复制`,onClick:Ce},[d(`span`,{class:s(v(G)?`i-tabler-check`:`i-tabler-copy`)},null,2)],10,ve)]),d(`div`,ye,[d(`span`,null,a(e.$t(`tokens.k3p0p44027`))+a(v(I)||e.$t(`tokens.kj3mklm028`)),1),r[13]||=d(`span`,null,`用法:Authorization: Bearer <token>`,-1)]),c(i,{type:`primary`,block:``,onClick:q},{default:_(()=>[y(a(e.$t(`tokens.k1s5f5zd012`)),1)]),_:1})]),_:1},8,[`open`]),c(O,{open:v(L),"onUpdate:open":r[5]||=e=>l(L)?L.value=e:null,title:`重命名 Token`,"confirm-loading":v(B),"ok-text":`保存`,"cancel-text":`取消`,onOk:U},{default:_(()=>[c(D,{value:v(z),"onUpdate:value":r[4]||=e=>l(z)?z.value=e:null,placeholder:e.$t(`tokens.k41416002`),onKeydown:b(U,[`enter`])},null,8,[`value`,`placeholder`])]),_:1},8,[`open`,`confirm-loading`])],64)):(o(),f(`div`,se,[c(u,{class:`auth-card`},{default:_(()=>[d(`h2`,null,a(e.$t(`tokens.k1k6z0r8003`)),1),d(`p`,ce,a(e.$t(`tokens.k1gjnree004`)),1),c(i,{type:`primary`,block:``,onClick:r[0]||=t=>(`navigateTo`in e?e.navigateTo:v(x))(`/workshop`)},{default:_(()=>[y(a(e.$t(`tokens.k1bhhheq005`)),1)]),_:1})]),_:1})]))])}}}),[[`__scopeId`,`data-v-759f0cd9`]]);export{k as default};
@@ -0,0 +1 @@
1
+ import{$ as e,D as t,H as n,S as r,T as i,d as a,dt as o,ht as s,j as c,mt as l,pt as u,xt as d}from"./CSkxz2NX.js";import{A as f,B as p,C as m,D as h,E as ee,F as g,G as _,H as te,I as v,L as ne,M as re,N as ie,O as y,P as ae,R as b,S as x,T as oe,U as S,V as se,W as C,_ as ce,a as w,b as le,c as T,d as E,f as ue,g as de,h as fe,j as D,k as pe,l as me,m as he,o as O,p as k,s as ge,u as A,v as j,w as M,x as N,y as _e,z as ve}from"./DPnwL14Y.js";var P=()=>location.protocol+`//`+location.host;function F(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),S(n,``)}return S(n,e)+r+i}function I(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=F(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:ge.pop,direction:u?u>0?O.forward:O.back:O.unknown})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(A({},e.state,{scroll:E()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function L(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?E():null}}function ye(e){let{history:t,location:n}=window,r={value:F(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:P()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,A({},t.state,L(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=A({},i.value,t.state,{forward:e,scroll:E()});a(o.current,o,!0),a(e,A({},L(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function R(e){e=re(e);let t=ye(e),n=I(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=A({location:``,base:e,go:r,createHref:ue.bind(null,e)},t,n);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}function z(e){return e=location.host?e||location.pathname+location.search:``,e.includes(`#`)||(e+=`#`),R(e)}var B=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.Group=2]=`Group`,e}({}),V=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.ParamRegExp=2]=`ParamRegExp`,e[e.ParamRegExpEnd=3]=`ParamRegExpEnd`,e[e.EscapeNext=4]=`EscapeNext`,e}(V||{}),H={type:B.Static,value:``},U=/[a-zA-Z0-9_]/;function be(e){if(!e)return[[]];if(e===`/`)return[[H]];if(!e.startsWith(`/`))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=V.Static,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===V.Static?a.push({type:B.Static,value:l}):n===V.Param||n===V.ParamRegExp||n===V.ParamRegExpEnd?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:B.Param,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;s<e.length;){if(c=e[s++],c===`\\`&&n!==V.ParamRegExp){r=n,n=V.EscapeNext;continue}switch(n){case V.Static:c===`/`?(l&&d(),o()):c===`:`?(d(),n=V.Param):f();break;case V.EscapeNext:f(),n=r;break;case V.Param:c===`(`?n=V.ParamRegExp:U.test(c)?f():(d(),n=V.Static,c!==`*`&&c!==`?`&&c!==`+`&&s--);break;case V.ParamRegExp:c===`)`?u[u.length-1]==`\\`?u=u.slice(0,-1)+c:n=V.ParamRegExpEnd:u+=c;break;case V.ParamRegExpEnd:d(),n=V.Static,c!==`*`&&c!==`?`&&c!==`+`&&s--,u=``;break;default:t(`Unknown state`)}}return n===V.ParamRegExp&&t(`Unfinished custom RegExp for param "${l}"`),d(),o(),i}var W=`[^/]+?`,xe={sensitive:!1,strict:!1,start:!0,end:!0},G=function(e){return e[e._multiplier=10]=`_multiplier`,e[e.Root=90]=`Root`,e[e.Segment=40]=`Segment`,e[e.SubSegment=30]=`SubSegment`,e[e.Static=40]=`Static`,e[e.Dynamic=20]=`Dynamic`,e[e.BonusCustomRegExp=10]=`BonusCustomRegExp`,e[e.BonusWildcard=-50]=`BonusWildcard`,e[e.BonusRepeatable=-20]=`BonusRepeatable`,e[e.BonusOptional=-8]=`BonusOptional`,e[e.BonusStrict=.7000000000000001]=`BonusStrict`,e[e.BonusCaseSensitive=.25]=`BonusCaseSensitive`,e}(G||{}),Se=/[.+*?^${}()[\]/\\]/g;function K(e,t){let n=A({},xe,t),r=[],i=n.start?`^`:``,a=[];for(let t of e){let e=t.length?[]:[G.Root];n.strict&&!t.length&&(i+=`/`);for(let r=0;r<t.length;r++){let o=t[r],s=G.Segment+(n.sensitive?G.BonusCaseSensitive:0);if(o.type===B.Static)r||(i+=`/`),i+=o.value.replace(Se,`\\$&`),s+=G.Static;else if(o.type===B.Param){let{value:e,repeatable:n,optional:c,regexp:l}=o;a.push({name:e,repeatable:n,optional:c});let u=l||W;if(u!==W){s+=G.BonusCustomRegExp;try{`${u}`}catch(t){throw Error(`Invalid custom RegExp for param "${e}" (${u}): `+t.message)}}let d=n?`((?:${u})(?:/(?:${u}))*)`:`(${u})`;r||(d=c&&t.length<2?`(?:/${d})`:`/`+d),c&&(d+=`?`),i+=d,s+=G.Dynamic,c&&(s+=G.BonusOptional),n&&(s+=G.BonusRepeatable),u===`.*`&&(s+=G.BonusWildcard)}e.push(s)}r.push(e)}if(n.strict&&n.end){let e=r.length-1;r[e][r[e].length-1]+=G.BonusStrict}n.strict||(i+=`/?`),n.end?i+=`$`:n.strict&&!i.endsWith(`/`)&&(i+=`(?:/|$)`);let o=new RegExp(i,n.sensitive?``:`i`);function s(e){let t=e.match(o),n={};if(!t)return null;for(let e=1;e<t.length;e++){let r=t[e]||``,i=a[e-1];n[i.name]=r&&i.repeatable?r.split(`/`):r}return n}function c(t){let n=``,r=!1;for(let i of e){(!r||!n.endsWith(`/`))&&(n+=`/`),r=!1;for(let e of i)if(e.type===B.Static)n+=e.value;else if(e.type===B.Param){let{value:a,repeatable:o,optional:s}=e,c=a in t?t[a]:``;if(x(c)&&!o)throw Error(`Provided param "${a}" is an array but it is not repeatable (* or + modifiers)`);let l=x(c)?c.join(`/`):c;if(!l){if(s)i.length<2&&(n.endsWith(`/`)?n=n.slice(0,-1):r=!0);else throw Error(`Missing required param "${a}"`)}n+=l}}return n||`/`}return{re:o,score:r,keys:a,parse:s,stringify:c}}function q(e,t){let n=0;for(;n<e.length&&n<t.length;){let r=t[n]-e[n];if(r)return r;n++}return e.length<t.length?e.length===1&&e[0]===G.Static+G.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===G.Static+G.Segment?1:-1:0}function Ce(e,t){let n=0,r=e.score,i=t.score;for(;n<r.length&&n<i.length;){let e=q(r[n],i[n]);if(e)return e;n++}if(Math.abs(i.length-r.length)===1){if(J(r))return 1;if(J(i))return-1}return i.length-r.length}function J(e){let t=e[e.length-1];return e.length>0&&t[t.length-1]<0}var we={strict:!1,end:!0,sensitive:!1};function Y(e,t,n){let r=K(be(e.path),n),i=A(r,{record:e,parent:t,children:[],alias:[]});return t&&!i.record.aliasOf==!t.record.aliasOf&&t.children.push(i),i}function Te(e,t){let n=[],r=new Map;t=f(we,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=Z(e);s.aliasOf=r&&r.record;let l=f(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(Z(A({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,p;for(let t of u){let{path:u}=t;if(n&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=Y(t,n,l),r?r.alias.push(d):(p||=d,p!==d&&p.alias.push(d),i&&e.name&&!$(d)&&o(e.name)),ke(d)&&c(d),s.children){let e=s.children;for(let t=0;t<e.length;t++)a(e[t],d,r&&r.children[t])}r||=d}return p?()=>{o(p)}:D}function o(e){if(oe(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=De(e,n);n.splice(t,0,e),e.record.name&&!$(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw k(w.MATCHER_NOT_FOUND,{location:e});s=i.record.name,a=A(X(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&X(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name);else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw k(w.MATCHER_NOT_FOUND,{location:e,currentLocation:t});s=i.record.name,a=A({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:Ee(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function X(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Z(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Q(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Q(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function $(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Ee(e){return e.reduce((e,t)=>A(e,t.meta),{})}function De(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;Ce(e,t[i])<0?r=i:n=i+1}let i=Oe(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function Oe(e){let t=e;for(;t=t.parent;)if(ke(t)&&Ce(e,t)===0)return t}function ke({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Ae(e){let n=t(ne),r=t(v),i=a(()=>{let t=d(e.to);return n.resolve(t)}),o=a(()=>{let{matched:e}=i.value,{length:t}=e,n=e[t-1],a=r.matched;if(!n||!a.length)return-1;let o=a.findIndex(y.bind(null,n));if(o>-1)return o;let s=Fe(e[t-2]);return t>1&&Fe(n)===s&&a[a.length-1].path!==s?a.findIndex(y.bind(null,e[t-2])):o}),s=a(()=>o.value>-1&&Pe(r.params,i.value.params)),c=a(()=>o.value>-1&&o.value===r.matched.length-1&&h(r.params,i.value.params));function l(t={}){if(Ne(t)){let t=n[d(e.replace)?`replace`:`push`](d(e.to)).catch(D);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>t),t}return Promise.resolve()}return{route:i,href:a(()=>i.value.href),isActive:s,isExactActive:c,navigate:l}}function je(e){return e.length===1?e[0]:e}var Me=r({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:Ae,setup(e,{slots:n}){let r=o(Ae(e)),{options:s}=t(ne),c=a(()=>({[Ie(e.activeClass,s.linkActiveClass,`router-link-active`)]:r.isActive,[Ie(e.exactActiveClass,s.linkExactActiveClass,`router-link-exact-active`)]:r.isExactActive}));return()=>{let t=n.default&&je(n.default(r));return e.custom?t:i(`a`,{"aria-current":r.isExactActive?e.ariaCurrentValue:null,href:r.href,onClick:r.navigate,class:c.value},t)}}});function Ne(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(e.button===void 0||e.button===0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Pe(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!x(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}return!0}function Fe(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var Ie=(e,t,n)=>e??t??n,Le=r({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(r,{attrs:o,slots:s}){let c=t(b),l=a(()=>r.route||c.value),f=t(_,0),p=a(()=>{let e=d(f),{matched:t}=l.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),m=a(()=>l.value.matched[p.value]);n(_,a(()=>p.value+1)),n(pe,m),n(b,l);let h=u();return e(()=>[h.value,m.value,r.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!y(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let e=l.value,t=r.name,n=m.value,a=n&&n.components[t];if(!a)return Re(s.default,{Component:a,route:e});let c=n.props[t],u=c?c===!0?e.params:typeof c==`function`?c(e):c:null,d=i(a,A({},u,o,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(n.instances[t]=null)},ref:h}));return Re(s.default,{Component:d,route:e})||d}}});function Re(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var ze=Le;function Be(e){let t=Te(e.routes,e),n=e.parseQuery||ae,r=e.stringifyQuery||se,i=e.history,a=C(),o=C(),u=C(),f=s(T),h=T;m&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let _=me.bind(null,e=>``+e),re=me.bind(null,de),y=me.bind(null,he);function S(e,n){let r,i;return oe(e)?(r=t.getRecordMatcher(e),i=n):i=e,t.addRoute(i,r)}function ue(e){let n=t.getRecordMatcher(e);n&&t.removeRoute(n)}function pe(){return t.getRoutes().map(e=>e.record)}function O(e){return!!t.getRecordMatcher(e)}function P(e,a){if(a=A({},a||f.value),typeof e==`string`){let r=g(n,e,a.path),o=t.resolve({path:r.path},a),s=i.createHref(r.fullPath);return A(r,o,{params:y(o.params),hash:he(r.hash),redirectedFrom:void 0,href:s})}let o;if(e.path!=null)o=A({},e,{path:g(n,e.path,a.path).path});else{let t=A({},e.params);for(let e in t)t[e]??delete t[e];o=A({},e,{params:re(t)}),a.params=re(a.params)}let s=t.resolve(o,a),c=e.hash||``;s.params=_(y(s.params));let l=te(r,A({},e,{hash:fe(c),path:s.path})),u=i.createHref(l);return A({fullPath:l,hash:c,query:r===se?ie(e.query):e.query||{}},s,{redirectedFrom:void 0,href:u})}function F(e){return typeof e==`string`?g(n,e,f.value.path):A({},e)}function I(e,t){if(h!==e)return k(w.NAVIGATION_CANCELLED,{from:t,to:e})}function L(e){return z(e)}function ye(e){return L(A(F(e),{replace:!0}))}function R(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=F(i):{path:i},i.params={}),A({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function z(e,t){let n=h=P(e),i=f.value,a=e.state,o=e.force,s=e.replace===!0,c=R(n,i);if(c)return z(A(F(c),{state:typeof c==`object`?A({},a,c.state):a,force:o,replace:s}),t||n);let l=n;l.redirectedFrom=t;let u;return!o&&ee(r,i,n)&&(u=k(w.NAVIGATION_DUPLICATED,{to:l,from:i}),we(i,i,!0,!1)),(u?Promise.resolve(u):H(l,i)).catch(e=>M(e)?M(e,w.NAVIGATION_GUARD_REDIRECT)?e:J(e):q(e,l,i)).then(e=>{if(e){if(M(e,w.NAVIGATION_GUARD_REDIRECT))return z(A({replace:s},F(e.to),{state:typeof e.to==`object`?A({},a,e.to.state):a,force:o}),t||l)}else e=be(l,i,!0,s,a);return U(l,i,e),e})}function B(e,t){let n=I(e,t);return n?Promise.reject(n):Promise.resolve()}function V(e){let t=Z.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function H(e,t){let n,[r,i,s]=ce(e,t);n=j(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(N(r,e,t))});let c=B.bind(null,e,t);return n.push(c),$(n).then(()=>{n=[];for(let r of a.list())n.push(N(r,e,t));return n.push(c),$(n)}).then(()=>{n=j(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(N(r,e,t))});return n.push(c),$(n)}).then(()=>{n=[];for(let r of s)if(r.beforeEnter){if(x(r.beforeEnter))for(let i of r.beforeEnter)n.push(N(i,e,t));else n.push(N(r.beforeEnter,e,t))}return n.push(c),$(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=j(s,`beforeRouteEnter`,e,t,V),n.push(c),$(n))).then(()=>{n=[];for(let r of o.list())n.push(N(r,e,t));return n.push(c),$(n)}).catch(e=>M(e,w.NAVIGATION_CANCELLED)?e:Promise.reject(e))}function U(e,t,n){u.list().forEach(r=>V(()=>r(e,t,n)))}function be(e,t,n,r,a){let o=I(e,t);if(o)return o;let s=t===T,c=m?history.state:{};n&&(r||s?i.replace(e.fullPath,A({scroll:s&&c&&c.scroll},a)):i.push(e.fullPath,a)),f.value=e,we(e,t,n,s),J()}let W;function xe(){W||=i.listen((e,t,n)=>{if(!Q.listening)return;let r=P(e),a=R(r,Q.currentRoute.value);if(a){z(A(a,{replace:!0,force:!0}),r).catch(D);return}h=r;let o=f.value;m&&ve(le(o.fullPath,n.delta),E()),H(r,o).catch(e=>M(e,w.NAVIGATION_ABORTED|w.NAVIGATION_CANCELLED)?e:M(e,w.NAVIGATION_GUARD_REDIRECT)?(z(A(F(e.to),{force:!0}),r).then(e=>{M(e,w.NAVIGATION_ABORTED|w.NAVIGATION_DUPLICATED)&&!n.delta&&n.type===ge.pop&&i.go(-1,!1)}).catch(D),Promise.reject()):(n.delta&&i.go(-n.delta,!1),q(e,r,o))).then(e=>{e||=be(r,o,!1),e&&(n.delta&&!M(e,w.NAVIGATION_CANCELLED)?i.go(-n.delta,!1):n.type===ge.pop&&M(e,w.NAVIGATION_ABORTED|w.NAVIGATION_DUPLICATED)&&i.go(-1,!1)),U(r,o,e)}).catch(D)})}let G=C(),Se=C(),K;function q(e,t,n){J(e);let r=Se.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function Ce(){return K&&f.value!==T?Promise.resolve():new Promise((e,t)=>{G.add([e,t])})}function J(e){return K||(K=!e,xe(),G.list().forEach(([t,n])=>e?n(e):t()),G.reset()),e}function we(t,n,r,i){let{scrollBehavior:a}=e;if(!m||!a)return Promise.resolve();let o=!r&&_e(le(t.fullPath,0))||(i||!r)&&history.state&&history.state.scroll||null;return c().then(()=>a(t,n,o)).then(e=>e&&p(e)).catch(e=>q(e,t,n))}let Y=e=>i.go(e),X,Z=new Set,Q={currentRoute:f,listening:!0,addRoute:S,removeRoute:ue,clearRoutes:t.clearRoutes,hasRoute:O,getRoutes:pe,resolve:P,options:e,push:L,replace:ye,go:Y,back:()=>Y(-1),forward:()=>Y(1),beforeEach:a.add,beforeResolve:o.add,afterEach:u.add,onError:Se.add,isReady:Ce,install(e){e.component(`RouterLink`,Me),e.component(`RouterView`,ze),e.config.globalProperties.$router=Q,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>d(f)}),m&&!X&&f.value===T&&(X=!0,L(i.location).catch(e=>{}));let t={};for(let e in T)Object.defineProperty(t,e,{get:()=>f.value[e],enumerable:!0});e.provide(ne,Q),e.provide(v,l(t)),e.provide(b,f);let n=e.unmount;Z.add(e),e.unmount=function(){Z.delete(e),Z.size<1&&(h=T,W&&W(),W=null,f.value=T,X=!1,K=!1),n()}}};function $(e){return e.reduce((e,t)=>e.then(()=>V(t)),Promise.resolve())}return Q}function Ve(e){return t(v)}export{Ve as a,R as i,Be as n,z as r,ze as t};
@@ -0,0 +1 @@
1
+ import{a as e,c as t,n}from"./BU83-NnX.js";import{S as r,Ut as i,V as a,Vt as o,W as s,b as c,ct as l,d as u,dt as d,f,h as p,i as m,m as h,p as ee,pt as g,tt as _,xt as v,y}from"./CSkxz2NX.js";import{d as te}from"./BJHKLJJU.js";import{n as b}from"./DtYHUi5Z.js";import{n as x}from"./KZQX7xoM.js";import{n as ne,t as re}from"./zIGh7R49.js";import{n as ie,r as ae,t as oe}from"./DDgJcSET.js";import{t as se}from"./aWWIh8YL.js";import{r as ce,t as le}from"./DBHNsT1Y.js";import{i as ue,n as de,t as fe}from"./BCGafdXT.js";import{t as pe}from"./pdk8jLGT.js";import{t as me}from"./jZsY8yYz.js";import{t as he}from"./CClOy-Hz2.js";import{t as S}from"./DIaZ2PTo2.js";import{t as C}from"./BDNMzG2s2.js";import{t as w}from"./D0ZBQrN_2.js";import{t as T}from"./BN6iuJEg2.js";import{t as E}from"./CNs_Ozdc2.js";var ge={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=C(r({__name:`agents`,setup(r){let{t:C}=x();E({layout:`default`});let z=T(),B=S(),V=g([]),H=g(!1),U=async()=>{H.value=!0;try{let e=await z.listTemplates();V.value=e?.data??[]}finally{H.value=!1}};U();let W=g(`all`),ye=u(()=>{let e=[{value:`all`,label:C(`chips.chipAll`,{n:V.value.length})},{value:`mine`,label:C(`chips.chipMine`,{n:V.value.filter(e=>e.ownerUserId===B.user?.id).length})},{value:`public`,label:C(`chips.chipPublic`,{n:V.value.filter(e=>e.visibility===`public`).length})},{value:`builtin`,label:C(`chips.chipBuiltin`,{n:V.value.filter(e=>e.isBuiltin).length})}];return B.isAdmin&&e.push({value:`others`,label:C(`chips.chipOthers`,{n:V.value.filter(e=>e.ownerUserId!==null&&e.ownerUserId!==B.user?.id&&e.visibility===`private`).length})}),e}),be=u(()=>{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:C(`agents.k3x23c017`),color:`default`,icon:`i-tabler-lock`}:e.visibility===`public`?{text:C(`agents.k3wv1t018`),color:`green`}:{text:C(`agents.k447jj019`),color:`default`},q=g([]),J=u(()=>new Map(q.value.map(e=>[e.id,e]))),Y=e=>J.value.get(e)?.available===!1,xe=u(()=>(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}(${C(`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=g(!1),Q=g(null),$=d({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 t={};try{t=JSON.parse($.configJson||`{}`)}catch{e.error(`config 不是合法 JSON`);return}if(Y($.harness)){e.error(J.value.get($.harness)?.error??C(`agents.notInstalled`));return}try{Q.value?(await z.updateTemplate(Q.value.id,{name:$.name,harness:$.harness,config:t,visibility:$.visibility}),e.success(C(`agents.k3n9aij020`))):(await z.createTemplate({name:$.name,harness:$.harness,config:t,visibility:$.visibility}),e.success(C(`agents.k3n5hak021`))),Z.value=!1,U()}catch(t){e.error(w(t))}},Te=async t=>{await z.deleteTemplate(t.id),e.success(C(`agents.k3n5sd7022`)),U()},Ee=async e=>{await z.updateTemplate(e.id,{enabled:e.enabled===1?0:1}),U()},De=async(t,n)=>{try{await z.updateTemplate(t.id,{visibility:n?`public`:`private`}),e.success(C(n?`agents.kxa6cxx023`:`agents.k1xxabaf024`)),U()}catch(t){e.error(w(t))}};return b({title:()=>C(`titles.agents`)}),(e,r)=>{let u=t,d=me,g=oe,b=ne,x=fe,S=he,w=pe,T=re,E=le,z=ae,V=se,U=de,Oe=ue,ke=ce,Ae=ie,je=n;return a(),p(`div`,ge,[f(`div`,D,[f(`div`,null,[f(`h2`,null,`Agent `+i(e.$t(`agents.k3pa5h4025`)),1),f(`p`,O,i(e.$t(`agents.k5nsz7y008`)),1)]),c(d,null,{default:_(()=>[c(u,{onClick:r[0]||=t=>(`navigateTo`in e?e.navigateTo:v(te))(`/workshop`)},{default:_(()=>[y(i(e.$t(`agents.krpx6qa009`)),1)]),_:1}),c(u,{type:`primary`,onClick:Se},{default:_(()=>[y(i(e.$t(`agents.k1efixrj010`)),1)]),_:1})]),_:1})]),f(`div`,k,[c(g,{value:v(W),"onUpdate:value":r[1]||=e=>l(W)?W.value=e:null,size:`small`,options:v(ye)},null,8,[`value`,`options`]),v(B).isAdmin?(a(),p(`span`,A,[r[7]||=f(`span`,{class:`i-tabler-shield-check`},null,-1),y(` `+i(e.$t(`agents.ka1gpdj011`)),1)])):h(``,!0)]),c(T,{"data-source":v(be),loading:v(H),"row-key":`id`,size:`small`,pagination:!1},{expandedRowRender:_(({record:t})=>[(a(!0),p(m,null,s(t.instances,e=>(a(),p(`div`,{key:e.id,class:`inst`},[c(x,{color:e.role===`lead`?`gold`:`blue`},{default:_(()=>[y(i(e.role),1)]),_:2},1032,[`color`]),f(`span`,F,i(e.id.slice(0,8)),1),f(`span`,I,`channel `+i(e.channelId.slice(0,8)),1)]))),128)),t.instances.length===0?(a(),p(`div`,L,i(e.$t(`agents.k1d036zs014`)),1)):h(``,!0)]),default:_(()=>[c(b,{title:e.$t(`agents.k3xhia001`),"data-index":`name`},{default:_(({record:e})=>[f(`span`,j,[r[8]||=f(`span`,{class:`i-tabler-user-square`},null,-1),y(` `+i(e.name),1)])]),_:1},8,[`title`]),c(b,{title:`harness`,"data-index":`harness`,width:120},{default:_(({record:e})=>[f(`span`,{class:o([`h-cell`,{off:Y(e.harness)}]),title:Y(e.harness)?v(J).get(e.harness)?.error??``:v(J).get(e.harness)?.resolvedPath??``},[r[9]||=f(`span`,{class:`h-dot`},null,-1),y(i(e.harness),1),Y(e.harness)?(a(),p(`span`,N,`(`+i(v(C)(`agents.notInstalled`))+`)`,1)):h(``,!0)],10,M)]),_:1}),c(b,{title:e.$t(`agents.k3lrqn0002`),width:120},{default:_(({record:e})=>[c(x,{color:K(e).color,class:`vis-tag`},{default:_(()=>[K(e).icon?(a(),p(`span`,{key:0,class:o(K(e).icon)},null,2)):h(``,!0),y(i(K(e).text),1)]),_:2},1032,[`color`]),!e.isBuiltin&&G(e)?(a(),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`])):h(``,!0)]),_:1},8,[`title`]),c(b,{title:e.$t(`agents.k3l98u7003`),width:130},{default:_(({record:e})=>[f(`span`,P,i(e.ownerName??e.ownerUserId?.slice(0,8)??`-`),1)]),_:1},8,[`title`]),c(b,{title:e.$t(`agents.k3mr526004`),width:70},{default:_(({record:e})=>[y(i(e.instances.length),1)]),_:1},8,[`title`]),c(b,{title:e.$t(`agents.k3xhfg005`),width:70},{default:_(({record:e})=>[c(S,{checked:e.enabled===1,size:`small`,disabled:!G(e),onChange:t=>Ee(e)},null,8,[`checked`,`disabled`,`onChange`])]),_:1},8,[`title`]),c(b,{title:e.$t(`agents.k40aa6006`),width:130},{default:_(({record:t})=>[c(d,{size:`small`},{default:_(()=>[c(u,{size:`small`,type:`text`,disabled:!G(t),title:t.isBuiltin?`内置模板不可修改`:G(t)?`编辑`:`仅属主可修改`,onClick:e=>Ce(t)},{default:_(()=>[y(i(e.$t(`agents.k45eb0012`)),1)]),_:1},8,[`disabled`,`title`,`onClick`]),c(w,{title:e.$t(`agents.keetzvf007`),disabled:!G(t),onConfirm:e=>Te(t)},{default:_(()=>[c(u,{size:`small`,type:`text`,danger:``,disabled:!G(t),title:t.isBuiltin?`内置模板不可删除`:`删除`},{default:_(()=>[y(i(e.$t(`agents.k3xakp013`)),1)]),_:1},8,[`disabled`,`title`])]),_:2},1032,[`title`,`disabled`,`onConfirm`])]),_:2},1024)]),_:1},8,[`title`])]),_:1},8,[`data-source`,`loading`]),c(je,{open:v(Z),"onUpdate:open":r[6]||=e=>l(Z)?Z.value=e:null,title:v(Q)?`编辑模板`:`新建模板`,"ok-text":`保存`,"cancel-text":`取消`,onOk:we},{default:_(()=>[c(Ae,{layout:`vertical`},{default:_(()=>[c(z,{label:e.$t(`agents.k3xhia001`)},{default:_(()=>[c(E,{value:v($).name,"onUpdate:value":r[2]||=e=>v($).name=e},null,8,[`value`])]),_:1},8,[`label`]),c(z,{label:`harness`},{default:_(()=>[c(V,{value:v($).harness,"onUpdate:value":r[3]||=e=>v($).harness=e,options:v(xe)},{option:_(({value:e,label:t})=>[f(`span`,{class:o([`h-opt`,{off:Y(String(e))}])},[r[10]||=f(`span`,{class:`h-opt-dot`},null,-1),y(` `+i(t),1)],2)]),_:1},8,[`value`,`options`]),v(q).length>0?(a(),p(`div`,{key:0,class:o([`harness-status`,{off:Y(v($).harness)}])},[Y(v($).harness)?(a(),p(m,{key:0},[r[11]||=f(`span`,{class:`i-tabler-plug-off`},null,-1),y(` `+i(v(J).get(v($).harness)?.error)+` `,1),v(J).get(v($).harness)?.homepage?(a(),p(`a`,{key:0,class:`h-install`,href:v(J).get(v($).harness)?.homepage,target:`_blank`,rel:`noopener`},i(v(C)(`agents.installLink`)),9,_e)):h(``,!0)],64)):v(J).get(v($).harness)?.inprocess?(a(),p(m,{key:1},[r[12]||=f(`span`,{class:`i-tabler-plug-connected`},null,-1),y(` `+i(v(C)(`agents.harnessInprocess`)),1)],64)):v(J).get(v($).harness)?.resolvedPath?(a(),p(m,{key:2},[r[13]||=f(`span`,{class:`i-tabler-plug-connected`},null,-1),r[14]||=y(),f(`span`,R,i(v(J).get(v($).harness)?.resolvedPath),1)],64)):h(``,!0)],2)):h(``,!0),X(v($).harness).length?(a(),p(`div`,ve,[(a(!0),p(m,null,s(X(v($).harness),e=>(a(),p(`span`,{key:e,class:`harness-cap`},i(e),1))),128))])):h(``,!0)]),_:1}),c(z,{label:e.$t(`agents.k3lrqn0002`)},{default:_(()=>[c(Oe,{value:v($).visibility,"onUpdate:value":r[4]||=e=>v($).visibility=e},{default:_(()=>[c(U,{value:`private`},{default:_(()=>[y(i(e.$t(`agents.k17jfge3015`)),1)]),_:1}),c(U,{value:`public`},{default:_(()=>[y(i(e.$t(`agents.k1tt5zyo016`)),1)]),_:1})]),_:1},8,[`value`])]),_:1},8,[`label`]),c(z,{label:`config(JSON;mock 可配 delayMs)`},{default:_(()=>[c(ke,{value:v($).configJson,"onUpdate:value":r[5]||=e=>v($).configJson=e,rows:6},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`open`,`title`])])}}}),[[`__scopeId`,`data-v-2bec4234`]]);export{z as default};
@@ -1 +1 @@
1
- import{i as e,s as t}from"./C3tCneTM.js";import{t as n}from"./BcrN7QEl2.js";async function r(e,r={}){let i=n().token;return await t(e,{...r,headers:{authorization:`Bearer ${i}`,...r.headers}})}var i=`workshop.activeChannel`;function a(){try{return JSON.parse(localStorage.getItem(i)??`{}`)}catch{return{}}}function o(e){localStorage.setItem(i,JSON.stringify(e))}var s=e(`workshop.workspaces`,{state:()=>({workspaces:[],loaded:!1}),getters:{activeWorkspaceId(e){return localStorage.getItem(`workshop.activeWorkspace`)??e.workspaces[0]?.id??null}},actions:{setActiveWorkspaceId(e){localStorage.setItem(`workshop.activeWorkspace`,e??``)},async load(){let e=await r(`/api/workshop/workspaces`);if(e.code!==0)throw Error(e.message??`加载失败`);let t=a();this.workspaces=(e.data??[]).map(e=>{let n=e.channelIds??[],r=t[e.id],i=r&&n.includes(r)?r:void 0;return r!==i&&(i?t[e.id]=i:Reflect.deleteProperty(t,e.id)),{id:e.id,name:e.name,channelIds:n,activeChannelId:i}}),o(t),this.loaded=!0},async create(e){let t=await r(`/api/workshop/workspaces`,{method:`POST`,body:{name:e}});if(t.code!==0||!t.data)throw Error(t.message??`创建失败`);let n={id:t.data.id,name:t.data.name,channelIds:[]};return this.workspaces.push(n),n},async remove(e){await r(`/api/workshop/workspaces/${e}`,{method:`DELETE`}),this.workspaces=this.workspaces.filter(t=>t.id!==e)},async rename(e,t){let n=this.workspaces.find(t=>t.id===e);n&&(n.name=t)},async mountChannel(e,t){let n=this.workspaces.find(t=>t.id===e);!n||n.channelIds.includes(t)||(await r(`/api/workshop/workspaces/${e}/channels/${t}`,{method:`POST`}),n.channelIds.push(t),n.activeChannelId||(n.activeChannelId=t,this.persistActive(n)))},async unmountChannel(e,t){let n=this.workspaces.find(t=>t.id===e);n&&(await r(`/api/workshop/workspaces/${e}/channels/${t}`,{method:`DELETE`}),n.channelIds=n.channelIds.filter(e=>e!==t),n.activeChannelId===t&&(n.activeChannelId=n.channelIds[0]),this.persistActive(n))},setActiveChannel(e,t){let n=this.workspaces.find(t=>t.id===e);n&&n.channelIds.includes(t)&&(n.activeChannelId=t,this.persistActive(n))},persistActive(e){let t=a();e.activeChannelId?t[e.id]=e.activeChannelId:Reflect.deleteProperty(t,e.id),o(t)}}});export{s as t};
1
+ import{i as e,s as t}from"./YnQxK3eG.js";import{t as n}from"./DIaZ2PTo2.js";async function r(e,r={}){let i=n().token;return await t(e,{...r,headers:{authorization:`Bearer ${i}`,...r.headers}})}var i=`workshop.activeChannel`;function a(){try{return JSON.parse(localStorage.getItem(i)??`{}`)}catch{return{}}}function o(e){localStorage.setItem(i,JSON.stringify(e))}var s=e(`workshop.workspaces`,{state:()=>({workspaces:[],loaded:!1}),getters:{activeWorkspaceId(e){return localStorage.getItem(`workshop.activeWorkspace`)??e.workspaces[0]?.id??null}},actions:{setActiveWorkspaceId(e){localStorage.setItem(`workshop.activeWorkspace`,e??``)},async load(){let e=await r(`/api/workshop/workspaces`);if(e.code!==0)throw Error(e.message??`加载失败`);let t=a();this.workspaces=(e.data??[]).map(e=>{let n=e.channelIds??[],r=t[e.id],i=r&&n.includes(r)?r:void 0;return r!==i&&(i?t[e.id]=i:Reflect.deleteProperty(t,e.id)),{id:e.id,name:e.name,channelIds:n,activeChannelId:i}}),o(t),this.loaded=!0},async create(e){let t=await r(`/api/workshop/workspaces`,{method:`POST`,body:{name:e}});if(t.code!==0||!t.data)throw Error(t.message??`创建失败`);let n={id:t.data.id,name:t.data.name,channelIds:[]};return this.workspaces.push(n),n},async remove(e){await r(`/api/workshop/workspaces/${e}`,{method:`DELETE`}),this.workspaces=this.workspaces.filter(t=>t.id!==e)},async rename(e,t){let n=this.workspaces.find(t=>t.id===e);n&&(n.name=t)},async mountChannel(e,t){let n=this.workspaces.find(t=>t.id===e);!n||n.channelIds.includes(t)||(await r(`/api/workshop/workspaces/${e}/channels/${t}`,{method:`POST`}),n.channelIds.push(t),n.activeChannelId||(n.activeChannelId=t,this.persistActive(n)))},async unmountChannel(e,t){let n=this.workspaces.find(t=>t.id===e);n&&(await r(`/api/workshop/workspaces/${e}/channels/${t}`,{method:`DELETE`}),n.channelIds=n.channelIds.filter(e=>e!==t),n.activeChannelId===t&&(n.activeChannelId=n.channelIds[0]),this.persistActive(n))},setActiveChannel(e,t){let n=this.workspaces.find(t=>t.id===e);n&&n.channelIds.includes(t)&&(n.activeChannelId=t,this.persistActive(n))},persistActive(e){let t=a();e.activeChannelId?t[e.id]=e.activeChannelId:Reflect.deleteProperty(t,e.id),o(t)}}});export{s as t};
@@ -1 +1 @@
1
- import{ft as e}from"./BSCpFtzG.js";import{t}from"./G0qIw7Gq2.js";import{t as n}from"./36oeS8_R2.js";import{t as r}from"./C-mDhyEd.js";var i=40,a=(e,t)=>r({base:`/api/workshop/ops-logs`,path:e,init:t});function o(e){return{id:0,actor:e.actor,actorName:e.actorName||e.actor,actorKind:e.actorKind,action:e.action,targetKind:e.targetKind,targetId:e.targetId,detailJson:``,at:e.at,lineId:e.lineId,productId:e.productId,recipeId:e.recipeId,kind:e.kind,summary:e.summary}}var s=()=>{let r=e([]),s=e([]),c=e({list:!1,posting:!1}),l=e({list:``,post:``}),u=0,d=null;function f(){u++,u===1&&(m(),d=n().subscribe(p));let e=!1;return()=>{e||(e=!0,--u===0&&(d?.(),d=null))}}function p(e){if(e.type===`ops.log`){let t=o(e.payload);r.some(e=>e.at===t.at&&e.actor===t.actor&&e.action===t.action)||(r.unshift(t),r.length>i&&r.splice(i))}}async function m(){try{let e=await a(`?limit=15`);for(let t of(e.logs??[]).reverse())r.some(e=>e.at===t.at&&e.actor===t.actor&&e.action===t.action)||r.unshift(t)}catch{}}async function h(e={}){c.list=!0,l.list=``;try{let t=new URLSearchParams;for(let[n,r]of Object.entries(e))r!=null&&r!==``&&t.set(n,String(r));let n=await a(`?${t.toString()}`);s.splice(0,s.length,...n.logs??[])}catch(e){l.list=t(e)}finally{c.list=!1}}async function g(e){c.posting=!0,l.post=``;try{await a(``,{method:`POST`,body:JSON.stringify(e)})}catch(e){throw l.post=t(e),e}finally{c.posting=!1}}return e({recent:r,results:s,loading:c,error:l,ensureLive:f,fetchLogs:h,postManual:g})},c=`__opsLogStream`;function l(){let e=globalThis;return e[c]||(e[c]=s()),e[c]}export{l as t};
1
+ import{dt as e}from"./CSkxz2NX.js";import{t}from"./D0ZBQrN_2.js";import{t as n}from"./36oeS8_R2.js";import{t as r}from"./BDmh31hl.js";var i=40,a=(e,t)=>r({base:`/api/workshop/ops-logs`,path:e,init:t});function o(e){return{id:0,actor:e.actor,actorName:e.actorName||e.actor,actorKind:e.actorKind,action:e.action,targetKind:e.targetKind,targetId:e.targetId,detailJson:``,at:e.at,lineId:e.lineId,productId:e.productId,recipeId:e.recipeId,kind:e.kind,summary:e.summary}}var s=()=>{let r=e([]),s=e([]),c=e({list:!1,posting:!1}),l=e({list:``,post:``}),u=0,d=null;function f(){u++,u===1&&(m(),d=n().subscribe(p));let e=!1;return()=>{e||(e=!0,--u===0&&(d?.(),d=null))}}function p(e){if(e.type===`ops.log`){let t=o(e.payload);r.some(e=>e.at===t.at&&e.actor===t.actor&&e.action===t.action)||(r.unshift(t),r.length>i&&r.splice(i))}}async function m(){try{let e=await a(`?limit=15`);for(let t of(e.logs??[]).reverse())r.some(e=>e.at===t.at&&e.actor===t.actor&&e.action===t.action)||r.unshift(t)}catch{}}async function h(e={}){c.list=!0,l.list=``;try{let t=new URLSearchParams;for(let[n,r]of Object.entries(e))r!=null&&r!==``&&t.set(n,String(r));let n=await a(`?${t.toString()}`);s.splice(0,s.length,...n.logs??[])}catch(e){l.list=t(e)}finally{c.list=!1}}async function g(e){c.posting=!0,l.post=``;try{await a(``,{method:`POST`,body:JSON.stringify(e)})}catch(e){throw l.post=t(e),e}finally{c.posting=!1}}return e({recent:r,results:s,loading:c,error:l,ensureLive:f,fetchLogs:h,postManual:g})},c=`__opsLogStream`;function l(){let e=globalThis;return e[c]||(e[c]=s()),e[c]}export{l as t};
@@ -0,0 +1 @@
1
+ import{a as e,c as t}from"./BU83-NnX.js";import{$ as n,R as r,S as i,Ut as a,V as o,W as s,b as c,d as l,dt as u,f as d,h as f,i as p,m,p as h,pt as g,tt as _,y as v}from"./CSkxz2NX.js";import{f as y}from"./D6uzXueg.js";import{d as b}from"./BJHKLJJU.js";import{s as x}from"./YnQxK3eG.js";import{n as S}from"./KZQX7xoM.js";import{n as C,t as w}from"./zIGh7R49.js";import{i as ee}from"./DBHNsT1Y.js";import{i as te,r as ne,t as re}from"./BCGafdXT.js";import{t as T}from"./BYhEUx8t.js";import{t as E}from"./Dz_Q3Lpw2.js";import{t as D}from"./DIaZ2PTo2.js";import{t as O}from"./BDNMzG2s2.js";import{t as k}from"./D0ZBQrN_2.js";var A={class:`perm-page`},j={class:`aw-page-head`},ie={class:`pg-sub`},ae=[`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=O(i({__name:`index`,setup(i){let{t:O}=S(),H=D(),U=g([]),W=g([]),G=g(!1),K=g(``),q=g(!1),J=g(null),Y=u({}),X=g(!1);function Z(){let e=H.token;return e?{authorization:`Bearer ${e}`}:{}}async function oe(){G.value=!0;try{let e=await x(`/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(t){e.error(k(t,O(`permissions.loadFail`)))}finally{G.value=!1}}let se=l(()=>{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 $=l(()=>{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 t=U.value.filter(e=>(Y[e.id]??`none`)!==`none`).map(e=>({lineId:e.id,mode:Y[e.id]})),n=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})),r=await x(`/api/workshop/permissions`,{method:`PUT`,headers:Z(),body:{userId:J.value.id,grants:[...t,...n]}});if(r.code!==0||!r.data)throw Error(`save fail`);J.value.grants=r.data.grants;let i=W.value.find(e=>e.id===J.value?.id);i&&(i.grants=r.data.grants),e.success(O(`permissions.saved`,{n:t.length+n.length}))}catch(t){e.error(k(t,O(`permissions.saveFail`)))}finally{X.value=!1}}}function ue(e){return O(e===`operate`?`permissions.operate`:e===`readonly`?`permissions.readonly`:`permissions.none`)}return n(()=>H.isLoggedIn,e=>{e&&!H.isAdmin&&b(`/`)},{immediate:!0}),r(oe),(e,n)=>{let r=ee,i=C,l=re,u=t,g=w,b=T,x=ne,S=te,D=E;return o(),f(`div`,A,[d(`header`,j,[d(`div`,null,[n[2]||=d(`p`,{class:`aw-kicker`},` agentworkshop / permissions `,-1),d(`h1`,null,a(e.$t(`permissions.title`)),1),d(`p`,ie,a(e.$t(`permissions.subtitle`)),1)]),c(r,{value:K.value,"onUpdate:value":n[0]||=e=>K.value=e,placeholder:e.$t(`permissions.search`),style:{"max-width":`260px`},"allow-clear":``},null,8,[`value`,`placeholder`])]),c(b,{bordered:!1,class:`table-card`},{default:_(()=>[c(g,{"data-source":se.value,loading:G.value,"row-key":`id`,size:`middle`,pagination:{pageSize:12,showSizeChanger:!1}},{default:_(()=>[c(i,{title:e.$t(`permissions.colUser`),"data-index":`name`},{default:_(({record:e})=>[d(`a`,{onClick:y(t=>Q(e),[`prevent`])},a(e.name),9,ae)]),_:1},8,[`title`]),c(i,{title:e.$t(`permissions.colEmail`),"data-index":`email`},null,8,[`title`]),c(i,{title:e.$t(`permissions.colRole`),"data-index":`role`},{default:_(({record:e})=>[c(l,{color:e.role===`admin`?`green`:e.role===`editor`?`blue`:`default`},{default:_(()=>[v(a(e.role),1)]),_:2},1032,[`color`])]),_:1},8,[`title`]),c(i,{title:e.$t(`permissions.colStatus`),"data-index":`status`},{default:_(({record:t})=>[c(l,{color:t.status===`active`?`cyan`:`red`},{default:_(()=>[v(a(t.status===`active`?e.$t(`permissions.active`):t.status),1)]),_:2},1032,[`color`])]),_:1},8,[`title`]),c(i,{title:e.$t(`permissions.colChannels`),"data-index":`channels`},{default:_(({record:e})=>[v(a(e.channels.length),1)]),_:1},8,[`title`]),c(i,{title:e.$t(`permissions.colGrants`),"data-index":`grants`},{default:_(({record:e})=>[(o(!0),f(p,null,s(e.grants,e=>(o(),h(l,{key:e.lineId,style:{"margin-bottom":`2px`}},{default:_(()=>[v(a((U.value.find(t=>t.id===e.lineId)?.name??e.lineId).slice(0,14))+` · `+a(ue(e.mode)),1)]),_:2},1024))),128)),e.grants.length?m(``,!0):(o(),f(`span`,M,`—`))]),_:1},8,[`title`]),c(i,{title:e.$t(`permissions.colOps`),width:90},{default:_(({record:t})=>[c(u,{size:`small`,onClick:e=>Q(t)},{default:_(()=>[v(a(e.$t(`permissions.manage`)),1)]),_:1},8,[`onClick`])]),_:1},8,[`title`])]),_:1},8,[`data-source`,`loading`])]),_:1}),c(D,{open:q.value,"onUpdate:open":n[1]||=e=>q.value=e,title:J.value?`${J.value.name} · ${e.$t(`permissions.detail`)}`:``,width:`560`},{default:_(()=>[J.value?(o(),f(p,{key:0},[d(`h4`,N,a(e.$t(`permissions.secProfile`)),1),d(`dl`,P,[n[3]||=d(`dt`,null,`email`,-1),d(`dd`,null,a(J.value.email),1),n[4]||=d(`dt`,null,`role`,-1),d(`dd`,null,a(J.value.role),1),n[5]||=d(`dt`,null,`status`,-1),d(`dd`,null,a(J.value.status),1),n[6]||=d(`dt`,null,`created`,-1),d(`dd`,null,a(J.value.createdAt),1)]),d(`h4`,F,a(e.$t(`permissions.secChannels`))+`(`+a(J.value.channels.length)+`) `,1),J.value.channels.length?(o(),f(`div`,I,[(o(!0),f(p,null,s(J.value.channels,e=>(o(),f(`code`,{key:e.id},a(e.name||e.id.slice(0,8)),1))),128))])):(o(),f(`p`,L,a(e.$t(`permissions.noChannels`)),1)),d(`h4`,R,[v(a(e.$t(`permissions.secMatrix`))+` `,1),c(u,{type:`primary`,size:`small`,loading:X.value,disabled:$.value===0,style:{"margin-left":`12px`},onClick:le},{default:_(()=>[v(a(e.$t(`permissions.save`,{n:$.value})),1)]),_:1},8,[`loading`,`disabled`])]),d(`p`,z,a(e.$t(`permissions.matrixHint`)),1),d(`div`,B,[(o(!0),f(p,null,s(U.value,t=>(o(),f(`div`,{key:t.id,class:`row`},[d(`span`,{class:`line-name`,title:t.id},a(t.name),9,V),c(S,{value:Y[t.id],"onUpdate:value":e=>Y[t.id]=e,size:`small`},{default:_(()=>[c(x,{value:`none`},{default:_(()=>[v(a(e.$t(`permissions.none`)),1)]),_:1}),c(x,{value:`readonly`},{default:_(()=>[v(a(e.$t(`permissions.readonly`)),1)]),_:1}),c(x,{value:`operate`},{default:_(()=>[v(a(e.$t(`permissions.operate`)),1)]),_:1})]),_:1},8,[`value`,`onUpdate:value`])]))),128))])],64)):m(``,!0)]),_:1},8,[`open`,`title`])])}}}),[[`__scopeId`,`data-v-96694c07`]]);export{H as default};
@@ -1 +1 @@
1
- import{f as e,ft as t}from"./BSCpFtzG.js";var n=t({slots:{}});function r(e,t){let n=e.findIndex(e=>e.plugin===t.plugin&&e.name===t.name);n>=0&&e.splice(n,1),e.push(t),e.sort((e,t)=>(e.order??100)-(t.order??100)||e.plugin.localeCompare(t.plugin)||e.name.localeCompare(t.name))}function i(){function t(e){let t=e.slot||`plugins.page`;return r(n.slots[t]??=[],{...e,slot:t}),()=>i(t,e.plugin,e.name)}function i(e,t,r){let i=n.slots[e];if(!i)return;let a=i.findIndex(e=>e.plugin===t&&e.name===r);a>=0&&i.splice(a,1)}function a(e){for(let t of Object.values(n.slots))for(let n=t.length-1;n>=0;n--)t[n].plugin===e&&t.splice(n,1)}function o(t){return e(()=>n.slots[t]??[])}return{registerPanel:t,unregisterPanel:i,unregisterPlugin:a,panelsOf:o}}export{i as t};
1
+ import{d as e,dt as t}from"./CSkxz2NX.js";var n=t({slots:{}});function r(e,t){let n=e.findIndex(e=>e.plugin===t.plugin&&e.name===t.name);n>=0&&e.splice(n,1),e.push(t),e.sort((e,t)=>(e.order??100)-(t.order??100)||e.plugin.localeCompare(t.plugin)||e.name.localeCompare(t.name))}function i(){function t(e){let t=e.slot||`plugins.page`;return r(n.slots[t]??=[],{...e,slot:t}),()=>i(t,e.plugin,e.name)}function i(e,t,r){let i=n.slots[e];if(!i)return;let a=i.findIndex(e=>e.plugin===t&&e.name===r);a>=0&&i.splice(a,1)}function a(e){for(let t of Object.values(n.slots))for(let n=t.length-1;n>=0;n--)t[n].plugin===e&&t.splice(n,1)}function o(t){return e(()=>n.slots[t]??[])}return{registerPanel:t,unregisterPanel:i,unregisterPlugin:a,panelsOf:o}}export{i as t};
@@ -0,0 +1 @@
1
+ import{a as e,c as t}from"./BU83-NnX.js";import{$ as n,S as r,Ut as i,V as a,b as o,ct as s,d as c,f as l,h as u,m as d,p as f,pt as p,tt as m,xt as h,y as g}from"./CSkxz2NX.js";import{s as _}from"./YnQxK3eG.js";import{n as v}from"./DtYHUi5Z.js";import{n as y}from"./KZQX7xoM.js";import{t as b}from"./zIGh7R49.js";import{t as x}from"./aWWIh8YL.js";import{i as S}from"./DBHNsT1Y.js";import{t as C}from"./BCGafdXT.js";import{t as w}from"./pdk8jLGT.js";import{t as T}from"./BYhEUx8t.js";import{t as E}from"./jZsY8yYz.js";import{t as D}from"./DIaZ2PTo2.js";import{t as O}from"./BDNMzG2s2.js";var k={class:`page-wrap`},A={class:`aw-page-head`},j={class:`sub`},M={class:`gate-title`},N={class:`gate-hint`},P=O(r({__name:`users`,setup(r){let{t:O}=y(),P=D(),F=p(!1),I=p([]),L=p(``),R=c(()=>P.authHeaders()),z=async()=>{if(P.isAdmin){F.value=!0;try{let e=await _(`/api/users`,{headers:R.value,query:{pageSize:100,keyword:L.value||void 0}});I.value=e.data?.items??[]}catch(t){e.error(t instanceof Error?t.message:O(`users.k1br33vc006`))}finally{F.value=!1}}};n(()=>P.isLoggedIn,e=>{e&&z()},{immediate:!0});let B={admin:`volcano`,editor:`blue`,user:`default`},V=c(()=>[{title:O(`users.name`),dataIndex:`name`,key:`name`},{title:O(`users.email`),dataIndex:`email`,key:`email`},{title:O(`users.role`),dataIndex:`role`,key:`role`,width:110},{title:O(`common.status`),dataIndex:`status`,key:`status`,width:90},{title:O(`users.created`),dataIndex:`createdAt`,key:`createdAt`,width:150},{title:O(`common.actions`),key:`action`,width:220}]);function H(e){return O(`users.role${e.charAt(0).toUpperCase()}${e.slice(1)}`)}let U=async(t,n)=>{try{await _(`/api/users/${t.id}`,{method:`PUT`,headers:R.value,body:{role:n}}),e.success(O(`users.krkb23h011`,{p0:t.name,p1:n})),z()}catch(t){e.error(t instanceof Error?t.message:O(`users.k1enhqn3007`))}},W=async t=>{let n=t.status===`active`?`disabled`:`active`;try{await _(`/api/users/${t.id}`,{method:`PUT`,headers:R.value,body:{status:n}}),e.success(O(`users.k1u7u12g012`,{p0:t.name,p1:O(n===`active`?`users.k3xhfg009`:`users.k3wsi1010`)})),z()}catch(t){e.error(t instanceof Error?t.message:O(`users.k1enhqn3007`))}},G=async t=>{try{await _(`/api/users/${t.id}`,{method:`DELETE`,headers:R.value}),e.success(O(`users.knh5f2r013`,{p0:t.name})),z()}catch(t){e.error(t instanceof Error?t.message:O(`users.k1bphrb3008`))}},K=e=>e.id===P.user?.id;return v({title:()=>O(`titles.users`)}),(e,n)=>{let r=C,c=S,p=T,_=x,v=t,y=w,D=E,R=b;return a(),u(`div`,k,[l(`div`,A,[l(`div`,null,[n[2]||=l(`p`,{class:`aw-kicker`},` agentworkshop / identity `,-1),l(`h1`,null,[g(i(h(O)(`users.title`))+` `,1),o(r,{color:`volcano`,class:`admin-tag`},{default:m(()=>[...n[1]||=[l(`span`,{class:`i-tabler-shield-check`},null,-1),g(` admin `,-1)]]),_:1})]),l(`p`,j,i(e.$t(`users.k1flpho5002`)),1)]),o(c,{value:h(L),"onUpdate:value":n[0]||=e=>s(L)?L.value=e:null,placeholder:h(O)(`users.search`),style:{width:`240px`},onSearch:z},null,8,[`value`,`placeholder`])]),h(P).isAdmin?(a(),f(p,{key:1,bordered:!1,class:`table-card`},{default:m(()=>[o(R,{"data-source":h(I),columns:h(V),loading:h(F),"row-key":`id`,size:`small`,pagination:!1},{bodyCell:m(({column:t,record:n})=>[t.key===`role`?(a(),f(r,{key:0,color:B[n.role]},{default:m(()=>[g(i(H(n.role)),1)]),_:2},1032,[`color`])):t.key===`status`?(a(),f(r,{key:1,color:n.status===`active`?`green`:`default`},{default:m(()=>[g(i(n.status===`active`?e.$t(`users.k3xhfg009`):e.$t(`users.k3wsi1010`)),1)]),_:2},1032,[`color`])):t.key===`action`?(a(),f(D,{key:2,size:`small`},{default:m(()=>[o(_,{value:n.role,size:`small`,style:{width:`92px`},disabled:K(n),options:[{value:`user`,label:`user`},{value:`editor`,label:`editor`},{value:`admin`,label:`admin`}],onChange:e=>U(n,e)},null,8,[`value`,`disabled`,`onChange`]),o(v,{size:`small`,type:`text`,disabled:K(n),onClick:e=>W(n)},{default:m(()=>[g(i(n.status===`active`?e.$t(`users.k3wsi1010`):e.$t(`users.k3xhfg009`)),1)]),_:2},1032,[`disabled`,`onClick`]),o(y,{title:e.$t(`users.k1jk2os9001`),disabled:K(n),onConfirm:e=>G(n)},{default:m(()=>[o(v,{size:`small`,type:`text`,danger:``,disabled:K(n)},{default:m(()=>[g(i(e.$t(`users.k3xakp005`)),1)]),_:1},8,[`disabled`])]),_:2},1032,[`title`,`disabled`,`onConfirm`])]),_:2},1024)):d(``,!0)]),_:1},8,[`data-source`,`columns`,`loading`])]),_:1})):(a(),f(p,{key:0,bordered:!1,class:`gate-card`},{default:m(()=>[n[3]||=l(`span`,{class:`i-tabler-lock gate-icon`},null,-1),l(`p`,M,i(e.$t(`users.kpdo6rc003`)),1),l(`p`,N,i(e.$t(`users.k1mue9bl004`)),1)]),_:1}))])}}}),[[`__scopeId`,`data-v-6dd85a94`]]);export{P as default};
@@ -1 +1 @@
1
- import{x as e}from"./BSCpFtzG.js";import{h as t}from"./D-Ca4BGY.js";var n={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z`}}]},name:`left`,theme:`outlined`};function r(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){i(e,t,n[t])})}return e}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var a=function(i,a){var o=r({},i,a.attrs);return e(t,r({},o,{icon:n}),null)};a.displayName=`LeftOutlined`,a.inheritAttrs=!1;export{a as t};
1
+ import{j as e}from"./BU83-NnX.js";import{b as t}from"./CSkxz2NX.js";var n={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z`}}]},name:`left`,theme:`outlined`};function r(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){i(e,t,n[t])})}return e}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var a=function(i,a){var o=r({},i,a.attrs);return t(e,r({},o,{icon:n}),null)};a.displayName=`LeftOutlined`,a.inheritAttrs=!1;export{a as t};
@@ -0,0 +1,13 @@
1
+ import{H as e,P as t,W as n,b as r,j as i,mt as a,ut as o,xt as s}from"./BU83-NnX.js";import{$ as c,C as l,D as u,H as d,P as f,R as p,S as m,_t as h,b as g,d as _,et as v,gt as y,ht as b,i as x,nt as S,pt as C,s as w,xt as T}from"./CSkxz2NX.js";import{t as E,u as D}from"./D6uzXueg.js";import{$ as O,At as k,Ct as A,D as j,_ as M,bt as N,ct as ee,d as P,f as F,g as I,h as te,jt as L,n as ne,p as re,pt as R,t as z,u as B,wt as V,yt as ie}from"./4sIEbgcl.js";import{A as H,D as ae,G as U,H as oe,W,b as se,i as G,m as ce,p as le,t as ue,y as de}from"./DYr1VMiQ.js";function fe(){}var pe=n&&1/oe(new n([,-0]))[1]==1/0?function(e){return new n(e)}:fe,me=200;function he(e,t,n){var r=-1,i=se,a=e.length,o=!0,s=[],c=s;if(n)o=!1,i=de;else if(a>=me){var l=t?null:pe(e);if(l)return oe(l);o=!1,i=W,c=new U}else c=t?[]:s;outer:for(;++r<a;){var u=e[r],d=t?t(u):u;if(u=n||u!==0?u:0,o&&d===d){for(var f=c.length;f--;)if(c[f]===d)continue outer;t&&c.push(d),s.push(u)}else i(c,d,n)||(c!==s&&c.push(d),s.push(u))}return s}function K(e){return e&&e.length?he(e):[]}var q={adjustX:1,adjustY:1},J=[0,0],ge={topLeft:{points:[`bl`,`tl`],overflow:q,offset:[0,-4],targetOffset:J},topCenter:{points:[`bc`,`tc`],overflow:q,offset:[0,-4],targetOffset:J},topRight:{points:[`br`,`tr`],overflow:q,offset:[0,-4],targetOffset:J},bottomLeft:{points:[`tl`,`bl`],overflow:q,offset:[0,4],targetOffset:J},bottomCenter:{points:[`tc`,`bc`],overflow:q,offset:[0,4],targetOffset:J},bottomRight:{points:[`tr`,`br`],overflow:q,offset:[0,4],targetOffset:J}},_e=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},ve=m({compatConfig:{MODE:3},props:{minOverlayWidthMatchTrigger:{type:Boolean,default:void 0},arrow:{type:Boolean,default:!1},prefixCls:z.string.def(`rc-dropdown`),transitionName:String,overlayClassName:z.string.def(``),openClassName:String,animation:z.any,align:z.object,overlayStyle:{type:Object,default:void 0},placement:z.string.def(`bottomLeft`),overlay:z.any,trigger:z.oneOfType([z.string,z.arrayOf(z.string)]).def(`hover`),alignPoint:{type:Boolean,default:void 0},showAction:z.array,hideAction:z.array,getPopupContainer:Function,visible:{type:Boolean,default:void 0},defaultVisible:{type:Boolean,default:!1},mouseEnterDelay:z.number.def(.15),mouseLeaveDelay:z.number.def(.1)},emits:[`visibleChange`,`overlayClick`],setup(e,t){let{slots:n,emit:r,expose:i}=t,a=C(!!e.visible);c(()=>e.visible,e=>{e!==void 0&&(a.value=e)});let s=C();i({triggerRef:s});let l=t=>{e.visible===void 0&&(a.value=!1),r(`overlayClick`,t)},u=t=>{e.visible===void 0&&(a.value=t),r(`visibleChange`,t)},d=()=>{let t=n.overlay?.call(n),r={prefixCls:`${e.prefixCls}-menu`,onClick:l};return g(x,{key:N},[e.arrow&&g(`div`,{class:`${e.prefixCls}-arrow`},null),o(t,r,!1)])},f=_(()=>{let{minOverlayWidthMatchTrigger:t=!e.alignPoint}=e;return t}),p=()=>{let t=n.default?.call(n);return a.value&&t?o(t[0],{class:e.openClassName||`${e.prefixCls}-open`},!1):t},m=_(()=>!e.hideAction&&e.trigger.indexOf(`contextmenu`)!==-1?[`click`]:e.hideAction);return()=>{let{prefixCls:t,arrow:n,showAction:r,overlayStyle:i,trigger:o,placement:c,align:l,getPopupContainer:h,transitionName:_,animation:v,overlayClassName:y}=e,b=_e(e,[`prefixCls`,`arrow`,`showAction`,`overlayStyle`,`trigger`,`placement`,`align`,`getPopupContainer`,`transitionName`,`animation`,`overlayClassName`]);return g(H,L(L({},b),{},{prefixCls:t,ref:s,popupClassName:V(y,{[`${t}-show-arrow`]:n}),popupStyle:i,builtinPlacements:ge,action:o,showAction:r,hideAction:m.value||[],popupPlacement:c,popupAlign:l,popupTransitionName:_,popupAnimation:v,popupVisible:a.value,stretch:f.value?`minWidth`:``,onPopupVisibleChange:u,getPopupContainer:h}),{popup:d,default:p})}}}),ye={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z`}}]},name:`ellipsis`,theme:`outlined`};function be(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){xe(e,t,n[t])})}return e}function xe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Se=function(e,t){var n=be({},e,t.attrs);return g(i,be({},n,{icon:ye}),null)};Se.displayName=`EllipsisOutlined`,Se.inheritAttrs=!1;var Ce=Symbol(`OverrideContextKey`),we=()=>u(Ce,void 0),Te=e=>{let{prefixCls:t,mode:n,selectable:r,validator:i,onClick:a,expandIcon:o}=we()||{};d(Ce,{prefixCls:_(()=>e.prefixCls?.value??t?.value),mode:_(()=>e.mode?.value??n?.value),selectable:_(()=>e.selectable?.value??r?.value),validator:e.validator??i,onClick:e.onClick??a,expandIcon:e.expandIcon??o?.value})};function Ee(e,t,n,r){let i=n?n.call(r,e,t):void 0;if(i!==void 0)return!!i;if(e===t)return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;let a=Object.keys(e),o=Object.keys(t);if(a.length!==o.length)return!1;let s=Object.prototype.hasOwnProperty.bind(t);for(let o=0;o<a.length;o++){let c=a[o];if(!s(c))return!1;let l=e[c],u=t[c];if(i=n?n.call(r,l,u,c):void 0,i===!1||i===void 0&&l!==u)return!1}return!0}function De(e,t){return Ee(y(e),y(t))}var Oe=Symbol(`menuContextKey`),ke=e=>{d(Oe,e)},Y=()=>u(Oe),Ae=Symbol(`ForceRenderKey`),je=e=>{d(Ae,e)},Me=()=>u(Ae,!1),Ne=Symbol(`menuFirstLevelContextKey`),Pe=e=>{d(Ne,e)},Fe=()=>u(Ne,!0),Ie=m({compatConfig:{MODE:3},name:`MenuContextProvider`,inheritAttrs:!1,props:{mode:{type:String,default:void 0},overflowDisabled:{type:Boolean,default:void 0}},setup(e,t){let{slots:n}=t,r=Y(),i=k({},r);return e.mode!==void 0&&(i.mode=h(e,`mode`)),e.overflowDisabled!==void 0&&(i.overflowDisabled=h(e,`overflowDisabled`)),ke(i),()=>n.default?.call(n)}}),Le=Symbol(`siderCollapsed`),Re=Symbol(`siderHookProvider`),ze=`$$__vc-menu-more__key`,Be=Symbol(`KeyPathContext`),Ve=()=>u(Be,{parentEventKeys:_(()=>[]),parentKeys:_(()=>[]),parentInfo:{}}),He=(e,t,n)=>{let{parentEventKeys:r,parentKeys:i}=Ve(),a=_(()=>[...r.value,e]),o=_(()=>[...i.value,t]);return d(Be,{parentEventKeys:a,parentKeys:o,parentInfo:n}),o},Ue=Symbol(`measure`),We=m({compatConfig:{MODE:3},setup(e,t){let{slots:n}=t;return d(Ue,!0),()=>n.default?.call(n)}}),Ge=()=>u(Ue,!1);function Ke(e){let{mode:t,rtl:n,inlineIndent:r}=Y();return _(()=>t.value===`inline`?n.value?{paddingRight:`${e.value*r.value}px`}:{paddingLeft:`${e.value*r.value}px`}:null)}var qe=0,X=m({compatConfig:{MODE:3},name:`AMenuItem`,inheritAttrs:!1,props:{id:String,role:String,disabled:Boolean,danger:Boolean,title:{type:[String,Boolean],default:void 0},icon:z.any,onMouseenter:Function,onMouseleave:Function,onClick:Function,onKeydown:Function,onFocus:Function,originItemValue:O()},slots:Object,setup(e,n){let{slots:r,emit:i,attrs:s}=n,u=l(),d=Ge(),p=typeof u.vnode.key==`symbol`?String(u.vnode.key):u.vnode.key;a(typeof u.vnode.key!=`symbol`,`MenuItem`,`MenuItem \`:key="${String(p)}"\` not support Symbol type`);let m=`menu_item_${++qe}_$$_${p}`,{parentEventKeys:h,parentKeys:v}=Ve(),{prefixCls:y,activeKeys:x,disabled:S,changeActiveKeys:C,rtl:w,inlineCollapsed:T,siderCollapsed:E,onItemClick:D,selectedKeys:O,registerMenuInfo:A,unRegisterMenuInfo:j}=Y(),M=Fe(),N=b(!1),P=_(()=>[...v.value,p]);A(m,{eventKey:m,key:p,parentEventKeys:h,parentKeys:v,isLeaf:!0}),f(()=>{j(m)}),c(x,()=>{N.value=!!x.value.find(e=>e===p)},{immediate:!0});let F=_(()=>S.value||e.disabled),I=_(()=>O.value.includes(p)),te=_(()=>{let t=`${y.value}-item`;return{[`${t}`]:!0,[`${t}-danger`]:e.danger,[`${t}-active`]:N.value,[`${t}-selected`]:I.value,[`${t}-disabled`]:F.value}}),ne=t=>({key:p,eventKey:m,keyPath:P.value,eventKeyPath:[...h.value,m],domEvent:t,item:k(k({},e),s)}),re=e=>{if(F.value)return;let t=ne(e);i(`click`,e),D(t)},R=e=>{F.value||(C(P.value),i(`mouseenter`,e))},z=e=>{F.value||(C([]),i(`mouseleave`,e))},B=e=>{if(i(`keydown`,e),e.which===t.ENTER){let t=ne(e);i(`click`,e),D(t)}},V=e=>{C(P.value),i(`focus`,e)},H=(e,t)=>{let n=g(`span`,{class:`${y.value}-title-content`},[t]);return(!e||ie(t)&&t.type===`span`)&&t&&T.value&&M&&typeof t==`string`?g(`div`,{class:`${y.value}-inline-collapsed-noicon`},[t.charAt(0)]):n},U=Ke(_(()=>P.value.length));return()=>{if(d)return null;let t=e.title??r.title?.call(r),n=ee(r.default?.call(r)),i=n.length,a=t;t===void 0?a=M&&i?n:``:t===!1&&(a=``);let c={title:a};!E.value&&!T.value&&(c.title=null,c.open=!1);let l={};e.role===`option`&&(l[`aria-selected`]=I.value);let u=e.icon??r.icon?.call(r,e);return g(G,L(L({},c),{},{placement:w.value?`left`:`right`,overlayClassName:`${y.value}-inline-collapsed-tooltip`}),{default:()=>[g(ae.Item,L(L(L({component:`li`},s),{},{id:e.id,style:k(k({},s.style||{}),U.value),class:[te.value,{[`${s.class}`]:!!s.class,[`${y.value}-item-only-child`]:(u?i+1:i)===1}],role:e.role||`menuitem`,tabindex:e.disabled?null:-1,"data-menu-id":p,"aria-disabled":e.disabled},l),{},{onMouseenter:R,onMouseleave:z,onClick:re,onKeydown:B,onFocus:V,title:typeof t==`string`?t:void 0}),{default:()=>[o(typeof u==`function`?u(e.originItemValue):u,{class:`${y.value}-item-icon`},!1),H(u,n)]})]})}}}),Z={adjustX:1,adjustY:1},Je={topLeft:{points:[`bl`,`tl`],overflow:Z,offset:[0,-7]},bottomLeft:{points:[`tl`,`bl`],overflow:Z,offset:[0,7]},leftTop:{points:[`tr`,`tl`],overflow:Z,offset:[-4,0]},rightTop:{points:[`tl`,`tr`],overflow:Z,offset:[4,0]}},Ye={topLeft:{points:[`bl`,`tl`],overflow:Z,offset:[0,-7]},bottomLeft:{points:[`tl`,`bl`],overflow:Z,offset:[0,7]},rightTop:{points:[`tr`,`tl`],overflow:Z,offset:[-4,0]},leftTop:{points:[`tl`,`tr`],overflow:Z,offset:[4,0]}},Xe={horizontal:`bottomLeft`,vertical:`rightTop`,"vertical-left":`rightTop`,"vertical-right":`leftTop`},Ze=m({compatConfig:{MODE:3},name:`PopupTrigger`,inheritAttrs:!1,props:{prefixCls:String,mode:String,visible:Boolean,popupClassName:String,popupOffset:Array,disabled:Boolean,onVisibleChange:Function},slots:Object,emits:[`visibleChange`],setup(t,n){let{slots:r,emit:i}=n,a=b(!1),{getPopupContainer:o,rtl:l,subMenuOpenDelay:u,subMenuCloseDelay:d,builtinPlacements:p,triggerSubMenuAction:m,forceSubMenuRender:h,motion:v,defaultMotions:y,rootClassName:x}=Y(),S=Me(),C=_(()=>l.value?k(k({},Ye),p.value):k(k({},Je),p.value)),w=_(()=>Xe[t.mode]),T=b();c(()=>t.visible,e=>{s.cancel(T.value),T.value=s(()=>{a.value=e})},{immediate:!0}),f(()=>{s.cancel(T.value)});let E=e=>{i(`visibleChange`,e)},D=_(()=>{let n=v.value||y.value?.[t.mode]||y.value?.other,r=typeof n==`function`?n():n;return r?e(r.name,{css:!0}):void 0});return()=>{let{prefixCls:e,popupClassName:n,mode:i,popupOffset:s,disabled:c}=t;return g(H,{prefixCls:e,popupClassName:V(`${e}-popup`,{[`${e}-rtl`]:l.value},n,x.value),stretch:i===`horizontal`?`minWidth`:null,getPopupContainer:o.value,builtinPlacements:C.value,popupPlacement:w.value,popupVisible:a.value,popupAlign:s&&{offset:s},action:c?[]:[m.value],mouseEnterDelay:u.value,mouseLeaveDelay:d.value,onPopupVisibleChange:E,forceRender:S||h.value,popupAnimation:D.value},{popup:r.popup,default:r.default})}}}),Qe=(e,t)=>{let{slots:n,attrs:r}=t,{prefixCls:i,mode:a}=Y();return g(`ul`,L(L({},r),{},{class:V(i.value,`${i.value}-sub`,`${i.value}-${a.value===`inline`?`inline`:`vertical`}`),"data-menu-list":!0}),[n.default?.call(n)])};Qe.displayName=`SubMenuList`;var $e=m({compatConfig:{MODE:3},name:`InlineSubMenuList`,inheritAttrs:!1,props:{id:String,open:Boolean,keyPath:Array},setup(e,t){let{slots:n}=t,r=_(()=>`inline`),{motion:i,mode:a,defaultMotions:o}=Y(),s=_(()=>a.value===r.value),l=C(!s.value),u=_(()=>s.value?e.open:!1);c(a,()=>{s.value&&(l.value=!1)},{flush:`post`});let d=_(()=>{let t=i.value||o.value?.[r.value]||o.value?.other,n=typeof t==`function`?t():t;return k(k({},n),{appear:e.keyPath.length<=1})});return()=>l.value?null:g(Ie,{mode:r.value},{default:()=>[g(E,d.value,{default:()=>[S(g(Qe,{id:e.id},{default:()=>[n.default?.call(n)]}),[[D,u.value]])]})]})}}),et=0,Q=m({compatConfig:{MODE:3},name:`ASubMenu`,inheritAttrs:!1,props:{icon:z.any,title:z.any,disabled:Boolean,level:Number,popupClassName:String,popupOffset:Array,internalPopupClose:Boolean,eventKey:String,expandIcon:Function,theme:String,onMouseenter:Function,onMouseleave:Function,onTitleClick:Function,originItemValue:O()},slots:Object,setup(e,t){let{slots:n,attrs:r,emit:i}=t;var s;Pe(!1);let u=Ge(),d=l(),p=typeof d.vnode.key==`symbol`?String(d.vnode.key):d.vnode.key;a(typeof d.vnode.key!=`symbol`,`SubMenu`,`SubMenu \`:key="${String(p)}"\` not support Symbol type`);let m=A(p)?p:`sub_menu_${++et}_$$_not_set_key`,h=e.eventKey??(A(p)?`sub_menu_${++et}_$$_${p}`:m),{parentEventKeys:v,parentInfo:y,parentKeys:S}=Ve(),C=_(()=>[...S.value,m]),w={eventKey:h,key:m,parentEventKeys:v,childrenEventKeys:b([]),parentKeys:S};(s=y.childrenEventKeys)==null||s.value.push(h),f(()=>{y.childrenEventKeys&&(y.childrenEventKeys.value=y.childrenEventKeys?.value.filter(e=>e!=h))}),He(h,m,w);let{prefixCls:T,activeKeys:E,disabled:D,changeActiveKeys:O,mode:j,inlineCollapsed:M,openKeys:N,overflowDisabled:ee,onOpenChange:P,registerMenuInfo:F,unRegisterMenuInfo:I,selectedSubMenuKeys:te,expandIcon:ne,theme:re}=Y(),z=p!=null,B=!u&&(Me()||!z);je(B),(u&&z||!u&&!z||B)&&(F(h,w),f(()=>{I(h)}));let H=_(()=>`${T.value}-submenu`),U=_(()=>D.value||e.disabled),oe=b(),W=b(),se=_(()=>N.value.includes(m)),G=_(()=>!ee.value&&se.value),ce=_(()=>te.value.includes(m)),le=b(!1);c(E,()=>{le.value=!!E.value.find(e=>e===m)},{immediate:!0});let ue=e=>{U.value||(i(`titleClick`,e,m),j.value===`inline`&&P(m,!se.value))},de=e=>{U.value||(O(C.value),i(`mouseenter`,e))},fe=e=>{U.value||(O([]),i(`mouseleave`,e))},pe=Ke(_(()=>C.value.length)),me=e=>{j.value!==`inline`&&P(m,e)},he=()=>{O(C.value)},K=h&&`${h}-popup`,q=_(()=>V(T.value,`${T.value}-${e.theme||re.value}`,e.popupClassName)),J=(t,n)=>{if(!n)return M.value&&!S.value.length&&t&&typeof t==`string`?g(`div`,{class:`${T.value}-inline-collapsed-noicon`},[t.charAt(0)]):g(`span`,{class:`${T.value}-title-content`},[t]);let r=ie(t)&&t.type===`span`;return g(x,null,[o(typeof n==`function`?n(e.originItemValue):n,{class:`${T.value}-item-icon`},!1),r?t:g(`span`,{class:`${T.value}-title-content`},[t])])},ge=_(()=>j.value!==`inline`&&C.value.length>1?`vertical`:j.value),_e=_(()=>j.value===`horizontal`?`vertical`:j.value),ve=_(()=>ge.value===`horizontal`?`vertical`:ge.value),ye=()=>{let t=H.value,r=e.icon??n.icon?.call(n,e),i=e.expandIcon||n.expandIcon||ne.value,a=J(R(n,e,`title`),r);return g(`div`,{style:pe.value,class:`${t}-title`,tabindex:U.value?null:-1,ref:oe,title:typeof a==`string`?a:null,"data-menu-id":m,"aria-expanded":G.value,"aria-haspopup":!0,"aria-controls":K,"aria-disabled":U.value,onClick:ue,onFocus:he},[a,j.value!==`horizontal`&&i?i(k(k({},e),{isOpen:G.value})):g(`i`,{class:`${t}-arrow`},null)])};return()=>{if(u)return z?n.default?.call(n):null;let t=H.value,i=()=>null;if(!ee.value&&j.value!==`inline`){let r=j.value===`horizontal`?[0,8]:[10,0];i=()=>g(Ze,{mode:ge.value,prefixCls:t,visible:!e.internalPopupClose&&G.value,popupClassName:q.value,popupOffset:e.popupOffset||r,disabled:U.value,onVisibleChange:me},{default:()=>[ye()],popup:()=>g(Ie,{mode:ve.value},{default:()=>[g(Qe,{id:K,ref:W},{default:n.default})]})})}else i=()=>g(Ze,null,{default:ye});return g(Ie,{mode:_e.value},{default:()=>[g(ae.Item,L(L({component:`li`},r),{},{role:`none`,class:V(t,`${t}-${j.value}`,r.class,{[`${t}-open`]:G.value,[`${t}-active`]:le.value,[`${t}-selected`]:ce.value,[`${t}-disabled`]:U.value}),onMouseenter:de,onMouseleave:fe,"data-submenu-id":m}),{default:()=>g(x,null,[i(),!ee.value&&g($e,{id:K,open:G.value,keyPath:C.value},{default:n.default})])})]})}}}),tt=m({compatConfig:{MODE:3},name:`AMenuItemGroup`,inheritAttrs:!1,props:{title:z.any,originItemValue:O()},slots:Object,setup(e,t){let{slots:n,attrs:r}=t,{prefixCls:i}=Y(),a=_(()=>`${i.value}-item-group`),o=Ge();return()=>o?n.default?.call(n):g(`li`,L(L({},r),{},{onClick:e=>e.stopPropagation(),class:a.value}),[g(`div`,{title:typeof e.title==`string`?e.title:void 0,class:`${a.value}-title`},[R(n,e,`title`)]),g(`ul`,{class:`${a.value}-list`},[n.default?.call(n)])])}}),nt=m({compatConfig:{MODE:3},name:`AMenuDivider`,props:{prefixCls:String,dashed:Boolean},setup(e){let{prefixCls:t}=Y(),n=_(()=>({[`${t.value}-item-divider`]:!0,[`${t.value}-item-divider-dashed`]:!!e.dashed}));return()=>g(`li`,{class:n.value},null)}}),rt=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};function it(e,t,n){return(e||[]).map((e,r)=>{if(e&&typeof e==`object`){let i=e,{label:a,children:o,key:s,type:c}=i,l=rt(i,[`label`,`children`,`key`,`type`]),u=s??`tmp-${r}`,d=n?n.parentKeys.slice():[],f=[],p={eventKey:u,key:u,parentEventKeys:C(d),parentKeys:C(d),childrenEventKeys:C(f),isLeaf:!1};if(o||c===`group`){if(c===`group`){let r=it(o,t,n);return g(tt,L(L({key:u},l),{},{title:a,originItemValue:e}),{default:()=>[r]})}t.set(u,p),n&&n.childrenEventKeys.push(u);let r=it(o,t,{childrenEventKeys:f,parentKeys:[].concat(d,u)});return g(Q,L(L({key:u},l),{},{title:a,originItemValue:e}),{default:()=>[r]})}return c===`divider`?g(nt,L({key:u},l),null):(p.isLeaf=!0,t.set(u,p),g(X,L(L({key:u},l),{},{originItemValue:e}),{default:()=>[a]}))}return null}).filter(e=>e)}function at(e){let t=b([]),n=b(!1),r=b(new Map);return c(()=>e.items,()=>{let i=new Map;n.value=!1,e.items?(n.value=!0,t.value=it(e.items,i)):t.value=void 0,r.value=i},{immediate:!0,deep:!0}),{itemsNodes:t,store:r,hasItmes:n}}var ot=e=>{let{componentCls:t,motionDurationSlow:n,menuHorizontalHeight:r,colorSplit:i,lineWidth:a,lineType:o,menuItemPaddingInline:s}=e;return{[`${t}-horizontal`]:{lineHeight:`${r}px`,border:0,borderBottom:`${a}px ${o} ${i}`,boxShadow:`none`,"&::after":{display:`block`,clear:`both`,height:0,content:`"\\20"`},[`${t}-item, ${t}-submenu`]:{position:`relative`,display:`inline-block`,verticalAlign:`bottom`,paddingInline:s},[`> ${t}-item:hover,
2
+ > ${t}-item-active,
3
+ > ${t}-submenu ${t}-submenu-title:hover`]:{backgroundColor:`transparent`},[`${t}-item, ${t}-submenu-title`]:{transition:[`border-color ${n}`,`background ${n}`].join(`,`)},[`${t}-submenu-arrow`]:{display:`none`}}}},st=e=>{let{componentCls:t,menuArrowOffset:n}=e;return{[`${t}-rtl`]:{direction:`rtl`},[`${t}-submenu-rtl`]:{transformOrigin:`100% 0`},[`${t}-rtl${t}-vertical,
4
+ ${t}-submenu-rtl ${t}-vertical`]:{[`${t}-submenu-arrow`]:{"&::before":{transform:`rotate(-45deg) translateY(-${n})`},"&::after":{transform:`rotate(45deg) translateY(${n})`}}}}},ct=e=>k({},re(e)),lt=(e,t)=>{let{componentCls:n,colorItemText:r,colorItemTextSelected:i,colorGroupTitle:a,colorItemBg:o,colorSubItemBg:s,colorItemBgSelected:c,colorActiveBarHeight:l,colorActiveBarWidth:u,colorActiveBarBorderSize:d,motionDurationSlow:f,motionEaseInOut:p,motionEaseOut:m,menuItemPaddingInline:h,motionDurationMid:g,colorItemTextHover:_,lineType:v,colorSplit:y,colorItemTextDisabled:b,colorDangerItemText:x,colorDangerItemTextHover:S,colorDangerItemTextSelected:C,colorDangerItemBgActive:w,colorDangerItemBgSelected:T,colorItemBgHover:E,menuSubMenuBg:D,colorItemTextSelectedHorizontal:O,colorItemBgSelectedHorizontal:A}=e;return{[`${n}-${t}`]:{color:r,background:o,[`&${n}-root:focus-visible`]:k({},ct(e)),[`${n}-item-group-title`]:{color:a},[`${n}-submenu-selected`]:{[`> ${n}-submenu-title`]:{color:i}},[`${n}-item-disabled, ${n}-submenu-disabled`]:{color:`${b} !important`},[`${n}-item:hover, ${n}-submenu-title:hover`]:{[`&:not(${n}-item-selected):not(${n}-submenu-selected)`]:{color:_}},[`&:not(${n}-horizontal)`]:{[`${n}-item:not(${n}-item-selected)`]:{"&:hover":{backgroundColor:E},"&:active":{backgroundColor:c}},[`${n}-submenu-title`]:{"&:hover":{backgroundColor:E},"&:active":{backgroundColor:c}}},[`${n}-item-danger`]:{color:x,[`&${n}-item:hover`]:{[`&:not(${n}-item-selected):not(${n}-submenu-selected)`]:{color:S}},[`&${n}-item:active`]:{background:w}},[`${n}-item a`]:{"&, &:hover":{color:`inherit`}},[`${n}-item-selected`]:{color:i,[`&${n}-item-danger`]:{color:C},"a, a:hover":{color:`inherit`}},[`& ${n}-item-selected`]:{backgroundColor:c,[`&${n}-item-danger`]:{backgroundColor:T}},[`${n}-item, ${n}-submenu-title`]:{[`&:not(${n}-item-disabled):focus-visible`]:k({},ct(e))},[`&${n}-submenu > ${n}`]:{backgroundColor:D},[`&${n}-popup > ${n}`]:{backgroundColor:o},[`&${n}-horizontal`]:k(k({},t===`dark`?{borderBottom:0}:{}),{[`> ${n}-item, > ${n}-submenu`]:{top:d,marginTop:-d,marginBottom:0,borderRadius:0,"&::after":{position:`absolute`,insetInline:h,bottom:0,borderBottom:`${l}px solid transparent`,transition:`border-color ${f} ${p}`,content:`""`},"&:hover, &-active, &-open":{"&::after":{borderBottomWidth:l,borderBottomColor:O}},"&-selected":{color:O,backgroundColor:A,"&::after":{borderBottomWidth:l,borderBottomColor:O}}}}),[`&${n}-root`]:{[`&${n}-inline, &${n}-vertical`]:{borderInlineEnd:`${d}px ${v} ${y}`}},[`&${n}-inline`]:{[`${n}-sub${n}-inline`]:{background:s},[`${n}-item, ${n}-submenu-title`]:d&&u?{width:`calc(100% + ${d}px)`}:{},[`${n}-item`]:{position:`relative`,"&::after":{position:`absolute`,insetBlock:0,insetInlineEnd:0,borderInlineEnd:`${u}px solid ${i}`,transform:`scaleY(0.0001)`,opacity:0,transition:[`transform ${g} ${m}`,`opacity ${g} ${m}`].join(`,`),content:`""`},[`&${n}-item-danger`]:{"&::after":{borderInlineEndColor:C}}},[`${n}-selected, ${n}-item-selected`]:{"&::after":{transform:`scaleY(1)`,opacity:1,transition:[`transform ${g} ${p}`,`opacity ${g} ${p}`].join(`,`)}}}}}},ut=e=>{let{componentCls:t,menuItemHeight:n,itemMarginInline:r,padding:i,menuArrowSize:a,marginXS:o,marginXXS:s}=e,c=i+a+o;return{[`${t}-item`]:{position:`relative`},[`${t}-item, ${t}-submenu-title`]:{height:n,lineHeight:`${n}px`,paddingInline:i,overflow:`hidden`,textOverflow:`ellipsis`,marginInline:r,marginBlock:s,width:`calc(100% - ${r*2}px)`},[`${t}-submenu`]:{paddingBottom:.02},[`> ${t}-item,
5
+ > ${t}-submenu > ${t}-submenu-title`]:{height:n,lineHeight:`${n}px`},[`${t}-item-group-list ${t}-submenu-title,
6
+ ${t}-submenu-title`]:{paddingInlineEnd:c}}},dt=e=>{let{componentCls:t,iconCls:n,menuItemHeight:r,colorTextLightSolid:i,dropdownWidth:a,controlHeightLG:o,motionDurationMid:s,motionEaseOut:c,paddingXL:l,fontSizeSM:u,fontSizeLG:d,motionDurationSlow:f,paddingXS:p,boxShadowSecondary:m}=e,h={height:r,lineHeight:`${r}px`,listStylePosition:`inside`,listStyleType:`disc`};return[{[t]:{"&-inline, &-vertical":k({[`&${t}-root`]:{boxShadow:`none`}},ut(e))},[`${t}-submenu-popup`]:{[`${t}-vertical`]:k(k({},ut(e)),{boxShadow:m})}},{[`${t}-submenu-popup ${t}-vertical${t}-sub`]:{minWidth:a,maxHeight:`calc(100vh - ${o*2.5}px)`,padding:`0`,overflow:`hidden`,borderInlineEnd:0,"&:not([class*='-active'])":{overflowX:`hidden`,overflowY:`auto`}}},{[`${t}-inline`]:{width:`100%`,[`&${t}-root`]:{[`${t}-item, ${t}-submenu-title`]:{display:`flex`,alignItems:`center`,transition:[`border-color ${f}`,`background ${f}`,`padding ${s} ${c}`].join(`,`),[`> ${t}-title-content`]:{flex:`auto`,minWidth:0,overflow:`hidden`,textOverflow:`ellipsis`},"> *":{flex:`none`}}},[`${t}-sub${t}-inline`]:{padding:0,border:0,borderRadius:0,boxShadow:`none`,[`& > ${t}-submenu > ${t}-submenu-title`]:h,[`& ${t}-item-group-title`]:{paddingInlineStart:l}},[`${t}-item`]:h}},{[`${t}-inline-collapsed`]:{width:r*2,[`&${t}-root`]:{[`${t}-item, ${t}-submenu ${t}-submenu-title`]:{[`> ${t}-inline-collapsed-noicon`]:{fontSize:d,textAlign:`center`}}},[`> ${t}-item,
7
+ > ${t}-item-group > ${t}-item-group-list > ${t}-item,
8
+ > ${t}-item-group > ${t}-item-group-list > ${t}-submenu > ${t}-submenu-title,
9
+ > ${t}-submenu > ${t}-submenu-title`]:{insetInlineStart:0,paddingInline:`calc(50% - ${u}px)`,textOverflow:`clip`,[`
10
+ ${t}-submenu-arrow,
11
+ ${t}-submenu-expand-icon
12
+ `]:{opacity:0},[`${t}-item-icon, ${n}`]:{margin:0,fontSize:d,lineHeight:`${r}px`,"+ span":{display:`inline-block`,opacity:0}}},[`${t}-item-icon, ${n}`]:{display:`inline-block`},"&-tooltip":{pointerEvents:`none`,[`${t}-item-icon, ${n}`]:{display:`none`},"a, a:hover":{color:i}},[`${t}-item-group-title`]:k(k({},M),{paddingInline:p})}}]},ft=e=>{let{componentCls:t,fontSize:n,motionDurationSlow:r,motionDurationMid:i,motionEaseInOut:a,motionEaseOut:o,iconCls:s,controlHeightSM:c}=e;return{[`${t}-item, ${t}-submenu-title`]:{position:`relative`,display:`block`,margin:0,whiteSpace:`nowrap`,cursor:`pointer`,transition:[`border-color ${r}`,`background ${r}`,`padding ${r} ${a}`].join(`,`),[`${t}-item-icon, ${s}`]:{minWidth:n,fontSize:n,transition:[`font-size ${i} ${o}`,`margin ${r} ${a}`,`color ${r}`].join(`,`),"+ span":{marginInlineStart:c-n,opacity:1,transition:[`opacity ${r} ${a}`,`margin ${r}`,`color ${r}`].join(`,`)}},[`${t}-item-icon`]:k({},I()),[`&${t}-item-only-child`]:{[`> ${s}, > ${t}-item-icon`]:{marginInlineEnd:0}}},[`${t}-item-disabled, ${t}-submenu-disabled`]:{background:`none !important`,cursor:`not-allowed`,"&::after":{borderColor:`transparent !important`},a:{color:`inherit !important`},[`> ${t}-submenu-title`]:{color:`inherit !important`,cursor:`not-allowed`}}}},pt=e=>{let{componentCls:t,motionDurationSlow:n,motionEaseInOut:r,borderRadius:i,menuArrowSize:a,menuArrowOffset:o}=e;return{[`${t}-submenu`]:{"&-expand-icon, &-arrow":{position:`absolute`,top:`50%`,insetInlineEnd:e.margin,width:a,color:`currentcolor`,transform:`translateY(-50%)`,transition:`transform ${n} ${r}, opacity ${n}`},"&-arrow":{"&::before, &::after":{position:`absolute`,width:a*.6,height:a*.15,backgroundColor:`currentcolor`,borderRadius:i,transition:[`background ${n} ${r}`,`transform ${n} ${r}`,`top ${n} ${r}`,`color ${n} ${r}`].join(`,`),content:`""`},"&::before":{transform:`rotate(45deg) translateY(-${o})`},"&::after":{transform:`rotate(-45deg) translateY(${o})`}}}}},mt=e=>{let{antCls:t,componentCls:n,fontSize:r,motionDurationSlow:i,motionDurationMid:a,motionEaseInOut:o,lineHeight:s,paddingXS:c,padding:l,colorSplit:u,lineWidth:d,zIndexPopup:f,borderRadiusLG:p,radiusSubMenuItem:m,menuArrowSize:h,menuArrowOffset:g,lineType:_,menuPanelMaskInset:v}=e;return[{"":{[`${n}`]:k(k({},F()),{"&-hidden":{display:`none`}})},[`${n}-submenu-hidden`]:{display:`none`}},{[n]:k(k(k(k(k(k(k({},te(e)),F()),{marginBottom:0,paddingInlineStart:0,fontSize:r,lineHeight:0,listStyle:`none`,outline:`none`,transition:`width ${i} cubic-bezier(0.2, 0, 0, 1) 0s`,"ul, ol":{margin:0,padding:0,listStyle:`none`},"&-overflow":{display:`flex`,[`${n}-item`]:{flex:`none`}},[`${n}-item, ${n}-submenu, ${n}-submenu-title`]:{borderRadius:e.radiusItem},[`${n}-item-group-title`]:{padding:`${c}px ${l}px`,fontSize:r,lineHeight:s,transition:`all ${i}`},[`&-horizontal ${n}-submenu`]:{transition:[`border-color ${i} ${o}`,`background ${i} ${o}`].join(`,`)},[`${n}-submenu, ${n}-submenu-inline`]:{transition:[`border-color ${i} ${o}`,`background ${i} ${o}`,`padding ${a} ${o}`].join(`,`)},[`${n}-submenu ${n}-sub`]:{cursor:`initial`,transition:[`background ${i} ${o}`,`padding ${i} ${o}`].join(`,`)},[`${n}-title-content`]:{transition:`color ${i}`},[`${n}-item a`]:{"&::before":{position:`absolute`,inset:0,backgroundColor:`transparent`,content:`""`}},[`${n}-item-divider`]:{overflow:`hidden`,lineHeight:0,borderColor:u,borderStyle:_,borderWidth:0,borderTopWidth:d,marginBlock:d,padding:0,"&-dashed":{borderStyle:`dashed`}}}),ft(e)),{[`${n}-item-group`]:{[`${n}-item-group-list`]:{margin:0,padding:0,[`${n}-item, ${n}-submenu-title`]:{paddingInline:`${r*2}px ${l}px`}}},"&-submenu":{"&-popup":{position:`absolute`,zIndex:f,background:`transparent`,borderRadius:p,boxShadow:`none`,transformOrigin:`0 0`,"&::before":{position:`absolute`,inset:`${v}px 0 0`,zIndex:-1,width:`100%`,height:`100%`,opacity:0,content:`""`}},"&-placement-rightTop::before":{top:0,insetInlineStart:v},[`> ${n}`]:k(k(k({borderRadius:p},ft(e)),pt(e)),{[`${n}-item, ${n}-submenu > ${n}-submenu-title`]:{borderRadius:m},[`${n}-submenu-title::after`]:{transition:`transform ${i} ${o}`}})}}),pt(e)),{[`&-inline-collapsed ${n}-submenu-arrow,
13
+ &-inline ${n}-submenu-arrow`]:{"&::before":{transform:`rotate(-45deg) translateX(${g})`},"&::after":{transform:`rotate(45deg) translateX(-${g})`}},[`${n}-submenu-open${n}-submenu-inline > ${n}-submenu-title > ${n}-submenu-arrow`]:{transform:`translateY(-${h*.2}px)`,"&::after":{transform:`rotate(-45deg) translateX(-${g})`},"&::before":{transform:`rotate(45deg) translateX(${g})`}}})},{[`${t}-layout-header`]:{[n]:{lineHeight:`inherit`}}}]},ht=((e,t)=>P(`Menu`,(e,n)=>{let{overrideComponentToken:i}=n;if(t?.value===!1)return[];let{colorBgElevated:a,colorPrimary:o,colorError:s,colorErrorHover:c,colorTextLightSolid:l}=e,{controlHeightLG:u,fontSize:d}=e,f=d/7*5,p=B(e,{menuItemHeight:u,menuItemPaddingInline:e.margin,menuArrowSize:f,menuHorizontalHeight:u*1.15,menuArrowOffset:`${f*.25}px`,menuPanelMaskInset:-7,menuSubMenuBg:a}),m=new j(l).setAlpha(.65).toRgbString(),h=B(p,{colorItemText:m,colorItemTextHover:l,colorGroupTitle:m,colorItemTextSelected:l,colorItemBg:`#001529`,colorSubItemBg:`#000c17`,colorItemBgActive:`transparent`,colorItemBgSelected:o,colorActiveBarWidth:0,colorActiveBarHeight:0,colorActiveBarBorderSize:0,colorItemTextDisabled:new j(l).setAlpha(.25).toRgbString(),colorDangerItemText:s,colorDangerItemTextHover:c,colorDangerItemTextSelected:l,colorDangerItemBgActive:s,colorDangerItemBgSelected:s,menuSubMenuBg:`#001529`,colorItemTextSelectedHorizontal:l,colorItemBgSelectedHorizontal:o},k({},i));return[mt(p),ot(p),dt(p),lt(p,`light`),lt(h,`dark`),st(p),le(p),ce(p,`slide-up`),ce(p,`slide-down`),r(p,`zoom-big`)]},e=>{let{colorPrimary:t,colorError:n,colorTextDisabled:r,colorErrorBg:i,colorText:a,colorTextDescription:o,colorBgContainer:s,colorFillAlter:c,colorFillContent:l,lineWidth:u,lineWidthBold:d,controlItemBgActive:f,colorBgTextHover:p}=e;return{dropdownWidth:160,zIndexPopup:e.zIndexPopupBase+50,radiusItem:e.borderRadiusLG,radiusSubMenuItem:e.borderRadiusSM,colorItemText:a,colorItemTextHover:a,colorItemTextHoverHorizontal:t,colorGroupTitle:o,colorItemTextSelected:t,colorItemTextSelectedHorizontal:t,colorItemBg:s,colorItemBgHover:p,colorItemBgActive:l,colorSubItemBg:c,colorItemBgSelected:f,colorItemBgSelectedHorizontal:`transparent`,colorActiveBarWidth:0,colorActiveBarHeight:d,colorActiveBarBorderSize:u,colorItemTextDisabled:r,colorDangerItemText:n,colorDangerItemTextHover:n,colorDangerItemTextSelected:n,colorDangerItemBgActive:i,colorDangerItemBgSelected:i,itemMarginInline:e.marginXXS}})(e)),gt=()=>({id:String,prefixCls:String,items:Array,disabled:Boolean,inlineCollapsed:Boolean,disabledOverflow:Boolean,forceSubMenuRender:Boolean,openKeys:Array,selectedKeys:Array,activeKey:String,selectable:{type:Boolean,default:!0},multiple:{type:Boolean,default:!1},tabindex:{type:[Number,String]},motion:Object,role:String,theme:{type:String,default:`light`},mode:{type:String,default:`vertical`},inlineIndent:{type:Number,default:24},subMenuOpenDelay:{type:Number,default:0},subMenuCloseDelay:{type:Number,default:.1},builtinPlacements:{type:Object},triggerSubMenuAction:{type:String,default:`hover`},getPopupContainer:Function,expandIcon:Function,onOpenChange:Function,onSelect:Function,onDeselect:Function,onClick:[Function,Array],onFocus:Function,onBlur:Function,onMousedown:Function,"onUpdate:openKeys":Function,"onUpdate:selectedKeys":Function,"onUpdate:activeKey":Function}),_t=[],$=m({compatConfig:{MODE:3},name:`AMenu`,inheritAttrs:!1,props:gt(),slots:Object,setup(e,t){let{slots:n,emit:r,attrs:i}=t,{direction:s,getPrefixCls:l}=ne(`menu`,e),d=we(),f=_(()=>l(`menu`,e.prefixCls||d?.prefixCls?.value)),[m,h]=ht(f,_(()=>!d)),y=b(new Map),S=u(Le,C(void 0)),E=_(()=>S.value===void 0?e.inlineCollapsed:S.value),{itemsNodes:D}=at(e),O=b(!1);p(()=>{O.value=!0}),v(()=>{a(e.inlineCollapsed!==!0||e.mode===`inline`,`Menu`,"`inlineCollapsed` should only be used when `mode` is inline."),a(S.value===void 0||e.inlineCollapsed!==!0,`Menu`,"`inlineCollapsed` not control Menu under Sider. Should set `collapsed` on Sider instead.")});let A=C([]),j=C([]),M=C({});c(y,()=>{let e={};for(let t of y.value.values())e[t.key]=t;M.value=e},{flush:`post`}),v(()=>{if(e.activeKey!==void 0){let t=[],n=e.activeKey?M.value[e.activeKey]:void 0;t=n&&e.activeKey!==void 0?K([].concat(T(n.parentKeys),e.activeKey)):[],De(A.value,t)||(A.value=t)}}),c(()=>e.selectedKeys,e=>{e&&(j.value=e.slice())},{immediate:!0,deep:!0});let N=C([]);c([M,j],()=>{let e=[];j.value.forEach(t=>{let n=M.value[t];n&&(e=e.concat(T(n.parentKeys)))}),e=K(e),De(N.value,e)||(N.value=e)},{immediate:!0});let P=t=>{if(e.selectable){let{key:n}=t,i=j.value.includes(n),a;a=e.multiple?i?j.value.filter(e=>e!==n):[...j.value,n]:[n];let o=k(k({},t),{selectedKeys:a});De(a,j.value)||(e.selectedKeys===void 0&&(j.value=a),r(`update:selectedKeys`,a),i&&e.multiple?r(`deselect`,o):r(`select`,o))}z.value!==`inline`&&!e.multiple&&F.value.length&&ie(_t)},F=C([]);c(()=>e.openKeys,function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:F.value;De(F.value,e)||(F.value=e.slice())},{immediate:!0,deep:!0});let I,te=t=>{clearTimeout(I),I=setTimeout(()=>{e.activeKey===void 0&&(A.value=t),r(`update:activeKey`,t[t.length-1])})},re=_(()=>!!e.disabled),R=_(()=>s.value===`rtl`),z=C(`vertical`),B=b(!1);v(()=>{(e.mode===`inline`||e.mode===`vertical`)&&E.value?(z.value=`vertical`,B.value=E.value):(z.value=e.mode,B.value=!1),d?.mode?.value&&(z.value=d.mode.value)});let V=_(()=>z.value===`inline`),ie=e=>{F.value=e,r(`update:openKeys`,e),r(`openChange`,e)},H=C(F.value),U=b(!1);c(F,()=>{V.value&&(H.value=F.value)},{immediate:!0}),c(V,()=>{if(!U.value){U.value=!0;return}V.value?F.value=H.value:ie(_t)},{immediate:!0});let oe=_(()=>({[`${f.value}`]:!0,[`${f.value}-root`]:!0,[`${f.value}-${z.value}`]:!0,[`${f.value}-inline-collapsed`]:B.value,[`${f.value}-rtl`]:R.value,[`${f.value}-${e.theme}`]:!0})),W=_(()=>l()),se=_(()=>({horizontal:{name:`${W.value}-slide-up`},inline:ue(`${W.value}-motion-collapse`),other:{name:`${W.value}-zoom-big`}}));Pe(!0);let G=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=[],n=y.value;return e.forEach(e=>{let{key:r,childrenEventKeys:i}=n.get(e);t.push(r,...G(T(i)))}),t},ce=e=>{var t;r(`click`,e),P(e),(t=d?.onClick)==null||t.call(d)},le=(e,t)=>{let n=M.value[e]?.childrenEventKeys||[],r=F.value.filter(t=>t!==e);if(t)r.push(e);else if(z.value!==`inline`){let e=G(T(n));r=K(r.filter(t=>!e.includes(t)))}De(F,r)||ie(r)},de=(e,t)=>{y.value.set(e,t),y.value=new Map(y.value)},fe=e=>{y.value.delete(e),y.value=new Map(y.value)},pe=C(0),me=_(()=>e.expandIcon||n.expandIcon||d?.expandIcon?.value?t=>{let r=e.expandIcon||n.expandIcon;return r=typeof r==`function`?r(t):r,o(r,{class:`${f.value}-submenu-expand-icon`},!1)}:null);ke({prefixCls:f,activeKeys:A,openKeys:F,selectedKeys:j,changeActiveKeys:te,disabled:re,rtl:R,mode:z,inlineIndent:_(()=>e.inlineIndent),subMenuCloseDelay:_(()=>e.subMenuCloseDelay),subMenuOpenDelay:_(()=>e.subMenuOpenDelay),builtinPlacements:_(()=>e.builtinPlacements),triggerSubMenuAction:_(()=>e.triggerSubMenuAction),getPopupContainer:_(()=>e.getPopupContainer),inlineCollapsed:B,theme:_(()=>e.theme),siderCollapsed:S,defaultMotions:_(()=>O.value?se.value:null),motion:_(()=>O.value?e.motion:null),overflowDisabled:b(void 0),onOpenChange:le,onItemClick:ce,registerMenuInfo:de,unRegisterMenuInfo:fe,selectedSubMenuKeys:N,expandIcon:me,forceSubMenuRender:_(()=>e.forceSubMenuRender),rootClassName:h});let he=()=>D.value||ee(n.default?.call(n));return()=>{let t=he(),r=pe.value>=t.length-1||z.value!==`horizontal`||e.disabledOverflow,a=t=>z.value!==`horizontal`||e.disabledOverflow?t:t.map((e,t)=>g(Ie,{key:e.key,overflowDisabled:t>pe.value},{default:()=>e})),o=n.overflowedIndicator?.call(n)||g(Se,null,null);return m(g(ae,L(L({},i),{},{onMousedown:e.onMousedown,prefixCls:`${f.value}-overflow`,component:`ul`,itemComponent:X,class:[oe.value,i.class,h.value],role:`menu`,id:e.id,data:a(t),renderRawItem:e=>e,renderRawRest:e=>{let n=e.length,i=n?t.slice(-n):null;return g(x,null,[g(Q,{eventKey:ze,key:ze,title:o,disabled:r,internalPopupClose:n===0},{default:()=>i}),g(We,null,{default:()=>[g(Q,{eventKey:ze,key:ze,title:o,disabled:r,internalPopupClose:n===0},{default:()=>i})]})])},maxCount:z.value!==`horizontal`||e.disabledOverflow?ae.INVALIDATE:ae.RESPONSIVE,ssr:`full`,"data-menu-list":!0,onVisibleChange:e=>{pe.value=e}}),{default:()=>[g(w,{to:`body`},{default:()=>[g(`div`,{style:{display:`none`},"aria-hidden":!0},[g(We,null,{default:()=>[a(he())]})])]})]}))}}});$.install=function(e){return e.component($.name,$),e.component(X.name,X),e.component(Q.name,Q),e.component(nt.name,nt),e.component(tt.name,tt),e},$.Item=X,$.Divider=nt,$.SubMenu=Q,$.ItemGroup=tt;var vt=$;export{Re as a,ve as c,Le as i,nt as n,Te as o,X as r,Se as s,vt as t};
@@ -1 +1 @@
1
- import{C as e}from"./rqZ-1SoP.js";var t={http400:`请求参数有误,请检查后重试`,http401:`登录已过期,请重新登录`,http403:`权限不足:该操作需要管理员权限`,http404:`目标不存在或已被删除`,http409:`操作冲突:资源已存在或状态不允许`,http5xx:`服务器内部错误,请稍后重试`,network:`无法连接服务器,请检查网络与服务状态`,fallback:`操作失败,请稍后重试`};function n(t){try{let n=e().$i18n?.t?.(t);return typeof n==`string`&&n&&!n.startsWith(`errors.`)?n:null}catch{return null}}function r(e){return e===400?`http400`:e===401?`http401`:e===403?`http403`:e===404?`http404`:e===409?`http409`:e>=500?`http5xx`:null}function i(e,i){let a=e??{},o=a.data??null;if(o&&typeof o.message==`string`&&o.message.trim())return o.message.trim();let s=r(Number(a.statusCode??a.status??0));if(s)return n(`errors.${s}`)??t[s];let c=String(a.message??``);return/fetch failed|network|ECONNREFUSED|ENOTFOUND|ECONNRESET|aborted|timeout/i.test(c)?n(`errors.network`)??t.network:c.replace(/^Error:\s*/,``).trim()||(i??n(`errors.fallback`)??t.fallback)}export{i as t};
1
+ import{C as e}from"./DdD9mCHM.js";var t={http400:`请求参数有误,请检查后重试`,http401:`登录已过期,请重新登录`,http403:`权限不足:该操作需要管理员权限`,http404:`目标不存在或已被删除`,http409:`操作冲突:资源已存在或状态不允许`,http5xx:`服务器内部错误,请稍后重试`,network:`无法连接服务器,请检查网络与服务状态`,fallback:`操作失败,请稍后重试`};function n(t){try{let n=e().$i18n?.t?.(t);return typeof n==`string`&&n&&!n.startsWith(`errors.`)?n:null}catch{return null}}function r(e){return e===400?`http400`:e===401?`http401`:e===403?`http403`:e===404?`http404`:e===409?`http409`:e>=500?`http5xx`:null}function i(e,i){let a=e??{},o=a.data??null;if(o&&typeof o.message==`string`&&o.message.trim())return o.message.trim();let s=r(Number(a.statusCode??a.status??0));if(s)return n(`errors.${s}`)??t[s];let c=String(a.message??``);return/fetch failed|network|ECONNREFUSED|ENOTFOUND|ECONNRESET|aborted|timeout/i.test(c)?n(`errors.network`)??t.network:c.replace(/^Error:\s*/,``).trim()||(i??n(`errors.fallback`)??t.fallback)}export{i as t};
@@ -1 +1 @@
1
- import{ft as e}from"./BSCpFtzG.js";import{t}from"./G0qIw7Gq2.js";import{t as n}from"./36oeS8_R2.js";import{t as r}from"./C-mDhyEd.js";var i=[`thermo`,`pressure`,`tension`,`encoder`,`camera`,`gateway`],a=[{key:`temp-tc`,name:`温度传感器`,code:`TEMP · TC`,ch:`熔体/箱体温度`,unit:`℃`,base:168,amp:3.2,min:150,max:185,decimals:1,icon:`thermo`,telemetryKey:`temperature`,semantics:`熔体/箱体温度:热工艺核心被控量,热惯性大(变化平缓)。判读:与设定值偏差 ±2℃ 内为稳态;持续单边漂移 = 加热/散热失衡;骤升骤降多为扰动或传感器异常。`},{key:`pressure-tx`,name:`压力变送器`,code:`PRESSURE · TX`,ch:`熔体压力`,unit:`MPa`,base:.82,amp:.05,min:.6,max:1.2,decimals:2,icon:`pressure`,telemetryKey:`pressure`,semantics:`熔体压力:挤出负荷的「血压计」。判读:与温度负相关(温度升→熔体黏度降→压力降);压力突升常见于滤网堵塞或出料受阻。`},{key:`tension-cell`,name:`张力传感器`,code:`TENSION · CELL`,ch:`膜张力`,unit:`kN`,base:21.4,amp:.9,min:18,max:26,decimals:1,icon:`tension`,semantics:`膜张力:成膜质量直接指标。判读:张力波动与速度/温度设定强耦合,评估张力前先确认速度稳定。`},{key:`line-encoder`,name:`速度编码器`,code:`LINE · ENCODER`,ch:`产线速度`,unit:`m/min`,base:318,amp:7,min:280,max:360,decimals:0,icon:`encoder`,semantics:`产线速度:产能直接观测量。判读:实际速度对设定值的跟随滞后反映传动惯量;速度波动会传导至张力与厚度。`},{key:`vision-cam`,name:`视觉检测相机`,code:`VISION · CAM`,ch:`表面缺陷率`,unit:`‰`,base:.42,amp:.09,min:.1,max:.9,decimals:2,icon:`camera`},{key:`power-meter`,name:`电参采集器`,code:`POWER · METER`,ch:`运行功率`,unit:`kW`,base:45.2,amp:2.6,min:38,max:55,decimals:1,icon:`gateway`},{key:`thickness-scan`,name:`测厚扫描仪`,code:`THK · SCAN`,ch:`厚度轮廓`,unit:`mm`,base:.52,amp:.018,min:.4,max:.65,decimals:3,icon:`tension`,signalKind:`vector`,vector:{points:64,min:.4,max:.65},sink:{processors:[{name:`resample`,args:{n:64}},{name:`derive-metric`,args:{name:`avg`,op:`avg`}},{name:`derive-metric`,args:{name:`max`,op:`max`}}]},metrics:[{key:`max`,label:`最大厚度`,unit:`mm`,alarmHigh:.62},{key:`avg`,label:`平均厚度`,unit:`mm`,warnLow:.47,warnHigh:.57}],semantics:`测厚仪横向扫描轮廓:多点厚度分布。判读:平均值漂移=工艺整体偏移;单点尖峰=局部缺陷(夹杂/气泡);max 越硬限=超差,须联动分切剔除。`},{key:`ccd-image`,name:`CCD 视觉相机`,code:`CCD · IMG`,ch:`表面图像`,unit:`灰度`,base:128,amp:0,min:0,max:255,decimals:0,icon:`camera`,signalKind:`image`,sink:{processors:[{name:`thumbnail`,args:{width:256}},{name:`quality-gate`}]},metrics:[{key:`brightness`,label:`平均亮度`,unit:`gray`,alarmLow:30,alarmHigh:230}],semantics:`CCD 图像帧:像素数据入对象存储,Timescale 仅存元数据与派生指标。判读:brightness 过低=曝光不足/镜头遮挡,过高=过曝;缺陷识别算法经插件处理器扩展。`}],o=e=>e.startsWith(`daq-`)?e.slice(4):e,s=[{kind:`mock`,label:`Mock 模拟源`,status:`builtin`,configFields:[]},{kind:`modbus-tcp`,label:`Modbus TCP(PLC/网关)`,status:`real`,configFields:[{key:`host`,label:`设备地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.10`,hint:`PLC 或 Modbus 网关 IP`},{key:`port`,label:`端口`,type:`number`,default:502,hint:`Modbus TCP 标准端口 502`},{key:`unitId`,label:`单元号(unitId)`,type:`number`,default:1,hint:`从站地址,常见 1`},{key:`register`,label:`寄存器地址`,type:`number`,required:!0,placeholder:`40001`,hint:`4xxxx=保持寄存器(地址-40001 为协议偏移);3xxxx=输入寄存器`},{key:`registerType`,label:`寄存器区`,type:`select`,default:`holding`,options:[{value:`holding`,label:`保持寄存器(4x)`},{value:`input`,label:`输入寄存器(3x)`}]},{key:`dataType`,label:`数据类型`,type:`select`,default:`float32`,options:[{value:`int16`,label:`int16(1 寄存器)`},{value:`uint16`,label:`uint16(1 寄存器)`},{value:`int32`,label:`int32(2 寄存器)`},{value:`uint32`,label:`uint32(2 寄存器)`},{value:`float32`,label:`float32(2 寄存器,常用)`}]},{key:`scale`,label:`缩放系数`,type:`number`,default:1,hint:`原始值 × scale = 工程量(如 0.1)`},{key:`byteOrder`,label:`字节序`,type:`select`,default:`big`,options:[{value:`big`,label:`大端(AB CD)`},{value:`little`,label:`小端(CD AB)`},{value:`wordSwap`,label:`字交换(CD AB / 交换单字)`}]}]},{kind:`opcua`,label:`OPC UA(PLC/MES)`,status:`real`,configFields:[{key:`endpoint`,label:`端点(endpoint)`,type:`string`,required:!0,placeholder:`opc.tcp://192.168.1.10:4840`,hint:`OPC UA 服务器地址`},{key:`nodeId`,label:`节点 ID(NodeId)`,type:`string`,required:!0,placeholder:`ns=2;s=Channel1.Device1.Tag1`,hint:`要采集的变量节点`},{key:`securityMode`,label:`安全策略`,type:`select`,default:`None`,options:[{value:`None`,label:`None(无加密,内网常用)`},{value:`Sign`,label:`Sign(签名)`},{value:`SignAndEncrypt`,label:`SignAndEncrypt(签名+加密)`}]},{key:`username`,label:`用户名(可选)`,type:`string`},{key:`password`,label:`密码(可选)`,type:`string`},{key:`certificateFile`,label:`客户端证书路径(可选)`,type:`string`,placeholder:`certs/client_cert.pem`,hint:`Sign/SignAndEncrypt 时的 PEM 证书;留空自动生成自签`},{key:`privateKeyFile`,label:`私钥路径(可选)`,type:`string`,placeholder:`certs/client_key.pem`,hint:`与证书配对的 PEM 私钥`}]},{kind:`modbus-rtu`,label:`Modbus RTU over TCP(串口网关)`,status:`real`,configFields:[{key:`host`,label:`网关地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.50`,hint:`串口服务器/RTU 转 TCP 网关 IP(设备本身走 RS-485)`},{key:`port`,label:`端口`,type:`number`,default:502,hint:`网关透传端口(常见 502 / 8899 / 26)`},{key:`unitId`,label:`从站地址(unitId)`,type:`number`,default:1,hint:`RS-485 总线上的从站地址`},{key:`register`,label:`寄存器地址`,type:`number`,required:!0,placeholder:`40001`,hint:`4xxxx=保持寄存器(地址-40001 为协议偏移);3xxxx=输入寄存器`},{key:`registerType`,label:`寄存器区`,type:`select`,default:`holding`,options:[{value:`holding`,label:`保持寄存器(4x)`},{value:`input`,label:`输入寄存器(3x)`}]},{key:`dataType`,label:`数据类型`,type:`select`,default:`float32`,options:[{value:`int16`,label:`int16(1 寄存器)`},{value:`uint16`,label:`uint16(1 寄存器)`},{value:`int32`,label:`int32(2 寄存器)`},{value:`uint32`,label:`uint32(2 寄存器)`},{value:`float32`,label:`float32(2 寄存器,常用)`}]},{key:`scale`,label:`缩放系数`,type:`number`,default:1,hint:`原始值 × scale = 工程量(如 0.1)`},{key:`byteOrder`,label:`字节序`,type:`select`,default:`big`,options:[{value:`big`,label:`大端(AB CD)`},{value:`little`,label:`小端(CD AB)`},{value:`wordSwap`,label:`字交换(CD AB / 交换单字)`}]}]},{kind:`mqtt`,label:`MQTT(网关/边缘采集)`,status:`real`,configFields:[{key:`host`,label:`Broker 地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.20 或 mqtt.example.com`,hint:`MQTT Broker(EMQX/Mosquitto/Aliyun IoT)地址`},{key:`port`,label:`端口`,type:`number`,default:1883,hint:`MQTT TCP 标准端口 1883(TLS 8883)`},{key:`topic`,label:`主题(topic)`,type:`string`,required:!0,placeholder:`factory/line1/temp`,hint:`设备上报数值的主题;支持 +/# 通配`},{key:`jsonPath`,label:`取值路径(可选)`,type:`string`,placeholder:`data.temperature`,hint:`payload 为 JSON 时按路径取数值,如 data.temp;纯数字报文留空`},{key:`username`,label:`用户名(可选)`,type:`string`},{key:`password`,label:`密码(可选)`,type:`string`}]},{kind:`http`,label:`HTTP/REST(轮询)`,status:`real`,configFields:[{key:`url`,label:`接口地址(URL)`,type:`string`,required:!0,placeholder:`http://192.168.1.30/api/sensor`,hint:`返回数值或 JSON 的 HTTP 接口`},{key:`jsonPath`,label:`取值路径(可选)`,type:`string`,placeholder:`data.value`,hint:`响应为 JSON 时按路径取数值,如 data.value;纯文本留空`},{key:`headersJSON`,label:`请求头(可选)`,type:`string`,placeholder:`{"Authorization":"Bearer xxx"}`,hint:`JSON 对象形式的 HTTP 头`}]},{kind:`s7`,label:`S7(西门子 PLC)`,status:`planned`,configFields:[]}],c=60,l=30,u=(e,t)=>r({base:`/api/workshop/daq`,path:e,init:t,retries:(t?.method??`GET`).toUpperCase()===`GET`?2:0}),d=()=>{let r=e([]),i=new Map,o=e([]),s=e({running:!0,defaultIntervalMs:1e3,defaultPublishIntervalMs:0,queryDisplayIntervalMs:5e3,nodesTotal:0,nodesOnline:0}),d=e({tsdb:`…`,queue:`…`,drivers:[],driverAvailable:{},infra:void 0,produced:0,consumed:0,dropped:0,samplesStored:0}),f=e(a.map(e=>({...e}))),p=e({});function m(){i.clear();for(let e of r)i.set(e.id,e)}function h(e){let t=r.findIndex(t=>t.id===e.id);t>=0?r[t]=Object.assign(r[t],e):(r.push({...e,hist:[]}),i.set(e.id,r[r.length-1]))}let g=[],_=null;function v(){_=null;let e=g;if(g=[],!e.length)return;let t=new Map;for(let n of e){t.set(n.nodeId,n);let e=i.get(n.nodeId);e&&(e.hist.push(n.value),e.hist.length>c&&e.hist.splice(0,e.hist.length-c))}for(let e of t.values()){let t=i.get(e.nodeId);t&&(t.value=e.value,t.state=e.state,t.lastAt=e.at)}}function y(e){g.push(e),_||=setTimeout(v,500)}function b(e){if(e.node){if(e.op===`removed`){let t=r.findIndex(t=>t.id===e.node.id);t>=0&&r.splice(t,1),i.delete(e.node.id),Reflect.deleteProperty(p,e.node.id);return}h(e.node)}}function x(e){f.splice(0,f.length,...e.map(e=>({...e})))}function S(e){if(!e.template)return;let t=f.findIndex(t=>t.key===e.template.key);if(e.op===`removed`){t>=0&&f.splice(t,1);return}t>=0?f[t]={...e.template}:f.push({...e.template})}function C(e){let t=Date.parse(e.at),n=p[e.nodeId]??(p[e.nodeId]=[]);n.some(e=>e.at===t)||(n.unshift({at:t,kind:e.kind,points:e.preview,metrics:e.metrics??{},thumbUrl:e.thumbUrl,contentUrl:e.thumbUrl?e.thumbUrl.replace(`thumb=1`,`thumb=0`):void 0}),n.length>l&&n.splice(l));let r=i.get(e.nodeId);r&&(r.value=e.metrics?.avg??r.value,e.state&&(r.state=e.state),r.lastAt=e.at)}let w=0,T=null;function E(){w++,w===1&&(T=n().subscribe(D));let e=!1;return()=>{e||(e=!0,--w===0&&(T?.(),T=null))}}function D(e){if(e.type===`daq.reading`)y(e.payload);else if(e.type===`daq.frame`)C(e.payload);else if(e.type===`daq.node.changed`)b(e.payload);else if(e.type===`daq.controller`)Object.assign(s,e.payload);else if(e.type===`daq.template.changed`)S(e.payload);else if(e.type===`daq.alarm`){let t=e.payload;o.some(e=>e.id===t.id)||o.unshift(t)}else if(e.type===`daq.alarm.changed`){let t=e.payload;if(t.ackedAt){let e=o.findIndex(e=>e.id===t.id);e>=0&&o.splice(e,1)}}}async function O(){try{let e=await u(``),t=new Map(r.map(e=>[e.id,e])),n=[];for(let r of e.nodes){let e=t.get(r.id);e?(Object.assign(e,r),n.push(e),t.delete(r.id)):n.push({...r,hist:[]})}r.splice(0,r.length,...n),m();for(let e of Object.keys(p))i.has(e)||Reflect.deleteProperty(p,e);Object.assign(s,e.controller),Object.assign(d,e.meta??{}),d.driverAvailable=e.driverAvailable??{},d.infra=e.infra,e.templates?.length&&x(e.templates),K.loaded=!0,K.error=``}catch(e){K.error=t(e)}}async function k(e,t){let n=await u(``,{method:`POST`,body:JSON.stringify({templateRef:e,...t})});return h(n.node),n.node}async function A(e,t){await u(`/${e}`,{method:`PATCH`,body:JSON.stringify(t)})}async function j(e,t,n){await u(`/${e}`,{method:`PATCH`,body:JSON.stringify({posX:t,posZ:n})})}async function M(e){await u(`/${e}`,{method:`DELETE`});let t=r.findIndex(t=>t.id===e);t>=0&&r.splice(t,1),i.delete(e),Reflect.deleteProperty(p,e)}async function N(e,t){h((await u(`/${e}/bind`,{method:`POST`,body:JSON.stringify({deviceId:t})})).node)}async function P(e,t){h((await u(`/${e}/bindings`,{method:`PUT`,body:JSON.stringify({deviceIds:t})})).node)}async function F(e,t){return(await u(`/test-driver`,{method:`POST`,body:JSON.stringify({driver:e,driverConfig:t})})).test}async function I(e){return(await u(`/${e}/test`,{method:`POST`})).test}async function L(){try{let e=await u(`/alarms?scope=open&limit=50`);o.splice(0,o.length,...e.alarms??[])}catch{}}async function R(e){await u(`/alarms/${e}/ack`,{method:`POST`}),await L()}async function z(){let e=await u(`/infra/reconnect`,{method:`POST`});return d.infra=e.infra,await O(),e.infra}async function B(e,t,n){let r=await u(`/controller`,{method:`POST`,body:JSON.stringify({action:e,defaultIntervalMs:t,defaultPublishIntervalMs:n})});Object.assign(s,r.controller)}async function V(e,t={}){let n=new URLSearchParams;return t.fromMs!=null&&n.set(`from`,String(t.fromMs)),t.toMs!=null&&n.set(`to`,String(t.toMs)),t.bucketMs!=null&&n.set(`bucketMs`,String(t.bucketMs)),t.limit!=null&&n.set(`limit`,String(t.limit)),(await u(`/${e}/samples?${n.toString()}`)).points??[]}async function H(e,t={}){let n=new URLSearchParams;t.fromMs!=null&&n.set(`from`,String(t.fromMs)),t.toMs!=null&&n.set(`to`,String(t.toMs)),t.kind&&n.set(`kind`,t.kind),t.limit!=null&&n.set(`limit`,String(t.limit));let r=await u(`/${e}/frames?${n.toString()}`);return p[e]=r.frames??[],p[e]}async function U(e){let t=await u(`/templates`,{method:`POST`,body:JSON.stringify(e)});return S({op:`added`,template:t.template}),t.template}async function W(e,t){let n=await u(`/templates/${e}`,{method:`PATCH`,body:JSON.stringify(t)});return S({op:`updated`,template:n.template}),n.template}async function G(e){await u(`/templates/${e}`,{method:`DELETE`}),S({op:`removed`,template:{key:e}})}let K=e({nodes:r,controller:s,meta:d,templates:f,loaded:!1,error:``,ensureWsFeed:E,load:O,createFromTemplate:k,createTemplate:U,updateTemplate:W,removeTemplate:G,testDriver:F,testNode:I,reconnectInfra:z,patchNode:A,saveTransform:j,removeNode:M,bindNode:N,setNodeBindings:P,controllerAction:B,alarms:o,fetchAlarms:L,ackAlarm:R,nodeById:e=>i.get(e)??r.find(t=>t.id===e),samplesOf:V,fetchFrames:H,frames:p,framesOf:e=>p[e]??[],templateOf:e=>f.find(t=>t.key===e||`daq-${t.key}`===e),ofDevice:e=>e?r.filter(t=>t.deviceBindingId===e):[]});return K},f=`__daqStream`;function p(){let e=globalThis;return e[f]||(e[f]=d()),e[f]}export{o as a,i,s as n,a as r,p as t};
1
+ import{dt as e}from"./CSkxz2NX.js";import{t}from"./D0ZBQrN_2.js";import{t as n}from"./36oeS8_R2.js";import{t as r}from"./BDmh31hl.js";var i=[`thermo`,`pressure`,`tension`,`encoder`,`camera`,`gateway`],a=[{key:`temp-tc`,name:`温度传感器`,code:`TEMP · TC`,ch:`熔体/箱体温度`,unit:`℃`,base:168,amp:3.2,min:150,max:185,decimals:1,icon:`thermo`,telemetryKey:`temperature`,semantics:`熔体/箱体温度:热工艺核心被控量,热惯性大(变化平缓)。判读:与设定值偏差 ±2℃ 内为稳态;持续单边漂移 = 加热/散热失衡;骤升骤降多为扰动或传感器异常。`},{key:`pressure-tx`,name:`压力变送器`,code:`PRESSURE · TX`,ch:`熔体压力`,unit:`MPa`,base:.82,amp:.05,min:.6,max:1.2,decimals:2,icon:`pressure`,telemetryKey:`pressure`,semantics:`熔体压力:挤出负荷的「血压计」。判读:与温度负相关(温度升→熔体黏度降→压力降);压力突升常见于滤网堵塞或出料受阻。`},{key:`tension-cell`,name:`张力传感器`,code:`TENSION · CELL`,ch:`膜张力`,unit:`kN`,base:21.4,amp:.9,min:18,max:26,decimals:1,icon:`tension`,semantics:`膜张力:成膜质量直接指标。判读:张力波动与速度/温度设定强耦合,评估张力前先确认速度稳定。`},{key:`line-encoder`,name:`速度编码器`,code:`LINE · ENCODER`,ch:`产线速度`,unit:`m/min`,base:318,amp:7,min:280,max:360,decimals:0,icon:`encoder`,semantics:`产线速度:产能直接观测量。判读:实际速度对设定值的跟随滞后反映传动惯量;速度波动会传导至张力与厚度。`},{key:`vision-cam`,name:`视觉检测相机`,code:`VISION · CAM`,ch:`表面缺陷率`,unit:`‰`,base:.42,amp:.09,min:.1,max:.9,decimals:2,icon:`camera`},{key:`power-meter`,name:`电参采集器`,code:`POWER · METER`,ch:`运行功率`,unit:`kW`,base:45.2,amp:2.6,min:38,max:55,decimals:1,icon:`gateway`},{key:`thickness-scan`,name:`测厚扫描仪`,code:`THK · SCAN`,ch:`厚度轮廓`,unit:`mm`,base:.52,amp:.018,min:.4,max:.65,decimals:3,icon:`tension`,signalKind:`vector`,vector:{points:64,min:.4,max:.65},sink:{processors:[{name:`resample`,args:{n:64}},{name:`derive-metric`,args:{name:`avg`,op:`avg`}},{name:`derive-metric`,args:{name:`max`,op:`max`}}]},metrics:[{key:`max`,label:`最大厚度`,unit:`mm`,alarmHigh:.62},{key:`avg`,label:`平均厚度`,unit:`mm`,warnLow:.47,warnHigh:.57}],semantics:`测厚仪横向扫描轮廓:多点厚度分布。判读:平均值漂移=工艺整体偏移;单点尖峰=局部缺陷(夹杂/气泡);max 越硬限=超差,须联动分切剔除。`},{key:`ccd-image`,name:`CCD 视觉相机`,code:`CCD · IMG`,ch:`表面图像`,unit:`灰度`,base:128,amp:0,min:0,max:255,decimals:0,icon:`camera`,signalKind:`image`,sink:{processors:[{name:`thumbnail`,args:{width:256}},{name:`quality-gate`}]},metrics:[{key:`brightness`,label:`平均亮度`,unit:`gray`,alarmLow:30,alarmHigh:230}],semantics:`CCD 图像帧:像素数据入对象存储,Timescale 仅存元数据与派生指标。判读:brightness 过低=曝光不足/镜头遮挡,过高=过曝;缺陷识别算法经插件处理器扩展。`}],o=e=>e.startsWith(`daq-`)?e.slice(4):e,s=[{kind:`mock`,label:`Mock 模拟源`,status:`builtin`,configFields:[]},{kind:`modbus-tcp`,label:`Modbus TCP(PLC/网关)`,status:`real`,configFields:[{key:`host`,label:`设备地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.10`,hint:`PLC 或 Modbus 网关 IP`},{key:`port`,label:`端口`,type:`number`,default:502,hint:`Modbus TCP 标准端口 502`},{key:`unitId`,label:`单元号(unitId)`,type:`number`,default:1,hint:`从站地址,常见 1`},{key:`register`,label:`寄存器地址`,type:`number`,required:!0,placeholder:`40001`,hint:`4xxxx=保持寄存器(地址-40001 为协议偏移);3xxxx=输入寄存器`},{key:`registerType`,label:`寄存器区`,type:`select`,default:`holding`,options:[{value:`holding`,label:`保持寄存器(4x)`},{value:`input`,label:`输入寄存器(3x)`}]},{key:`dataType`,label:`数据类型`,type:`select`,default:`float32`,options:[{value:`int16`,label:`int16(1 寄存器)`},{value:`uint16`,label:`uint16(1 寄存器)`},{value:`int32`,label:`int32(2 寄存器)`},{value:`uint32`,label:`uint32(2 寄存器)`},{value:`float32`,label:`float32(2 寄存器,常用)`}]},{key:`scale`,label:`缩放系数`,type:`number`,default:1,hint:`原始值 × scale = 工程量(如 0.1)`},{key:`byteOrder`,label:`字节序`,type:`select`,default:`big`,options:[{value:`big`,label:`大端(AB CD)`},{value:`little`,label:`小端(CD AB)`},{value:`wordSwap`,label:`字交换(CD AB / 交换单字)`}]}]},{kind:`opcua`,label:`OPC UA(PLC/MES)`,status:`real`,configFields:[{key:`endpoint`,label:`端点(endpoint)`,type:`string`,required:!0,placeholder:`opc.tcp://192.168.1.10:4840`,hint:`OPC UA 服务器地址`},{key:`nodeId`,label:`节点 ID(NodeId)`,type:`string`,required:!0,placeholder:`ns=2;s=Channel1.Device1.Tag1`,hint:`要采集的变量节点`},{key:`securityMode`,label:`安全策略`,type:`select`,default:`None`,options:[{value:`None`,label:`None(无加密,内网常用)`},{value:`Sign`,label:`Sign(签名)`},{value:`SignAndEncrypt`,label:`SignAndEncrypt(签名+加密)`}]},{key:`username`,label:`用户名(可选)`,type:`string`},{key:`password`,label:`密码(可选)`,type:`string`},{key:`certificateFile`,label:`客户端证书路径(可选)`,type:`string`,placeholder:`certs/client_cert.pem`,hint:`Sign/SignAndEncrypt 时的 PEM 证书;留空自动生成自签`},{key:`privateKeyFile`,label:`私钥路径(可选)`,type:`string`,placeholder:`certs/client_key.pem`,hint:`与证书配对的 PEM 私钥`}]},{kind:`modbus-rtu`,label:`Modbus RTU over TCP(串口网关)`,status:`real`,configFields:[{key:`host`,label:`网关地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.50`,hint:`串口服务器/RTU 转 TCP 网关 IP(设备本身走 RS-485)`},{key:`port`,label:`端口`,type:`number`,default:502,hint:`网关透传端口(常见 502 / 8899 / 26)`},{key:`unitId`,label:`从站地址(unitId)`,type:`number`,default:1,hint:`RS-485 总线上的从站地址`},{key:`register`,label:`寄存器地址`,type:`number`,required:!0,placeholder:`40001`,hint:`4xxxx=保持寄存器(地址-40001 为协议偏移);3xxxx=输入寄存器`},{key:`registerType`,label:`寄存器区`,type:`select`,default:`holding`,options:[{value:`holding`,label:`保持寄存器(4x)`},{value:`input`,label:`输入寄存器(3x)`}]},{key:`dataType`,label:`数据类型`,type:`select`,default:`float32`,options:[{value:`int16`,label:`int16(1 寄存器)`},{value:`uint16`,label:`uint16(1 寄存器)`},{value:`int32`,label:`int32(2 寄存器)`},{value:`uint32`,label:`uint32(2 寄存器)`},{value:`float32`,label:`float32(2 寄存器,常用)`}]},{key:`scale`,label:`缩放系数`,type:`number`,default:1,hint:`原始值 × scale = 工程量(如 0.1)`},{key:`byteOrder`,label:`字节序`,type:`select`,default:`big`,options:[{value:`big`,label:`大端(AB CD)`},{value:`little`,label:`小端(CD AB)`},{value:`wordSwap`,label:`字交换(CD AB / 交换单字)`}]}]},{kind:`mqtt`,label:`MQTT(网关/边缘采集)`,status:`real`,configFields:[{key:`host`,label:`Broker 地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.20 或 mqtt.example.com`,hint:`MQTT Broker(EMQX/Mosquitto/Aliyun IoT)地址`},{key:`port`,label:`端口`,type:`number`,default:1883,hint:`MQTT TCP 标准端口 1883(TLS 8883)`},{key:`topic`,label:`主题(topic)`,type:`string`,required:!0,placeholder:`factory/line1/temp`,hint:`设备上报数值的主题;支持 +/# 通配`},{key:`jsonPath`,label:`取值路径(可选)`,type:`string`,placeholder:`data.temperature`,hint:`payload 为 JSON 时按路径取数值,如 data.temp;纯数字报文留空`},{key:`username`,label:`用户名(可选)`,type:`string`},{key:`password`,label:`密码(可选)`,type:`string`}]},{kind:`http`,label:`HTTP/REST(轮询)`,status:`real`,configFields:[{key:`url`,label:`接口地址(URL)`,type:`string`,required:!0,placeholder:`http://192.168.1.30/api/sensor`,hint:`返回数值或 JSON 的 HTTP 接口`},{key:`jsonPath`,label:`取值路径(可选)`,type:`string`,placeholder:`data.value`,hint:`响应为 JSON 时按路径取数值,如 data.value;纯文本留空`},{key:`headersJSON`,label:`请求头(可选)`,type:`string`,placeholder:`{"Authorization":"Bearer xxx"}`,hint:`JSON 对象形式的 HTTP 头`}]},{kind:`s7`,label:`S7(西门子 PLC)`,status:`planned`,configFields:[]}],c=60,l=30,u=(e,t)=>r({base:`/api/workshop/daq`,path:e,init:t,retries:(t?.method??`GET`).toUpperCase()===`GET`?2:0}),d=()=>{let r=e([]),i=new Map,o=e([]),s=e({running:!0,defaultIntervalMs:1e3,defaultPublishIntervalMs:0,queryDisplayIntervalMs:5e3,nodesTotal:0,nodesOnline:0}),d=e({tsdb:`…`,queue:`…`,drivers:[],driverAvailable:{},infra:void 0,produced:0,consumed:0,dropped:0,samplesStored:0}),f=e(a.map(e=>({...e}))),p=e({});function m(){i.clear();for(let e of r)i.set(e.id,e)}function h(e){let t=r.findIndex(t=>t.id===e.id);t>=0?r[t]=Object.assign(r[t],e):(r.push({...e,hist:[]}),i.set(e.id,r[r.length-1]))}let g=[],_=null;function v(){_=null;let e=g;if(g=[],!e.length)return;let t=new Map;for(let n of e){t.set(n.nodeId,n);let e=i.get(n.nodeId);e&&(e.hist.push(n.value),e.hist.length>c&&e.hist.splice(0,e.hist.length-c))}for(let e of t.values()){let t=i.get(e.nodeId);t&&(t.value=e.value,t.state=e.state,t.lastAt=e.at)}}function y(e){g.push(e),_||=setTimeout(v,500)}function b(e){if(e.node){if(e.op===`removed`){let t=r.findIndex(t=>t.id===e.node.id);t>=0&&r.splice(t,1),i.delete(e.node.id),Reflect.deleteProperty(p,e.node.id);return}h(e.node)}}function x(e){f.splice(0,f.length,...e.map(e=>({...e})))}function S(e){if(!e.template)return;let t=f.findIndex(t=>t.key===e.template.key);if(e.op===`removed`){t>=0&&f.splice(t,1);return}t>=0?f[t]={...e.template}:f.push({...e.template})}function C(e){let t=Date.parse(e.at),n=p[e.nodeId]??(p[e.nodeId]=[]);n.some(e=>e.at===t)||(n.unshift({at:t,kind:e.kind,points:e.preview,metrics:e.metrics??{},thumbUrl:e.thumbUrl,contentUrl:e.thumbUrl?e.thumbUrl.replace(`thumb=1`,`thumb=0`):void 0}),n.length>l&&n.splice(l));let r=i.get(e.nodeId);r&&(r.value=e.metrics?.avg??r.value,e.state&&(r.state=e.state),r.lastAt=e.at)}let w=0,T=null;function E(){w++,w===1&&(T=n().subscribe(D));let e=!1;return()=>{e||(e=!0,--w===0&&(T?.(),T=null))}}function D(e){if(e.type===`daq.reading`)y(e.payload);else if(e.type===`daq.frame`)C(e.payload);else if(e.type===`daq.node.changed`)b(e.payload);else if(e.type===`daq.controller`)Object.assign(s,e.payload);else if(e.type===`daq.template.changed`)S(e.payload);else if(e.type===`daq.alarm`){let t=e.payload;o.some(e=>e.id===t.id)||o.unshift(t)}else if(e.type===`daq.alarm.changed`){let t=e.payload;if(t.ackedAt){let e=o.findIndex(e=>e.id===t.id);e>=0&&o.splice(e,1)}}}async function O(){try{let e=await u(``),t=new Map(r.map(e=>[e.id,e])),n=[];for(let r of e.nodes){let e=t.get(r.id);e?(Object.assign(e,r),n.push(e),t.delete(r.id)):n.push({...r,hist:[]})}r.splice(0,r.length,...n),m();for(let e of Object.keys(p))i.has(e)||Reflect.deleteProperty(p,e);Object.assign(s,e.controller),Object.assign(d,e.meta??{}),d.driverAvailable=e.driverAvailable??{},d.infra=e.infra,e.templates?.length&&x(e.templates),K.loaded=!0,K.error=``}catch(e){K.error=t(e)}}async function k(e,t){let n=await u(``,{method:`POST`,body:JSON.stringify({templateRef:e,...t})});return h(n.node),n.node}async function A(e,t){await u(`/${e}`,{method:`PATCH`,body:JSON.stringify(t)})}async function j(e,t,n){await u(`/${e}`,{method:`PATCH`,body:JSON.stringify({posX:t,posZ:n})})}async function M(e){await u(`/${e}`,{method:`DELETE`});let t=r.findIndex(t=>t.id===e);t>=0&&r.splice(t,1),i.delete(e),Reflect.deleteProperty(p,e)}async function N(e,t){h((await u(`/${e}/bind`,{method:`POST`,body:JSON.stringify({deviceId:t})})).node)}async function P(e,t){h((await u(`/${e}/bindings`,{method:`PUT`,body:JSON.stringify({deviceIds:t})})).node)}async function F(e,t){return(await u(`/test-driver`,{method:`POST`,body:JSON.stringify({driver:e,driverConfig:t})})).test}async function I(e){return(await u(`/${e}/test`,{method:`POST`})).test}async function L(){try{let e=await u(`/alarms?scope=open&limit=50`);o.splice(0,o.length,...e.alarms??[])}catch{}}async function R(e){await u(`/alarms/${e}/ack`,{method:`POST`}),await L()}async function z(){let e=await u(`/infra/reconnect`,{method:`POST`});return d.infra=e.infra,await O(),e.infra}async function B(e,t,n){let r=await u(`/controller`,{method:`POST`,body:JSON.stringify({action:e,defaultIntervalMs:t,defaultPublishIntervalMs:n})});Object.assign(s,r.controller)}async function V(e,t={}){let n=new URLSearchParams;return t.fromMs!=null&&n.set(`from`,String(t.fromMs)),t.toMs!=null&&n.set(`to`,String(t.toMs)),t.bucketMs!=null&&n.set(`bucketMs`,String(t.bucketMs)),t.limit!=null&&n.set(`limit`,String(t.limit)),(await u(`/${e}/samples?${n.toString()}`)).points??[]}async function H(e,t={}){let n=new URLSearchParams;t.fromMs!=null&&n.set(`from`,String(t.fromMs)),t.toMs!=null&&n.set(`to`,String(t.toMs)),t.kind&&n.set(`kind`,t.kind),t.limit!=null&&n.set(`limit`,String(t.limit));let r=await u(`/${e}/frames?${n.toString()}`);return p[e]=r.frames??[],p[e]}async function U(e){let t=await u(`/templates`,{method:`POST`,body:JSON.stringify(e)});return S({op:`added`,template:t.template}),t.template}async function W(e,t){let n=await u(`/templates/${e}`,{method:`PATCH`,body:JSON.stringify(t)});return S({op:`updated`,template:n.template}),n.template}async function G(e){await u(`/templates/${e}`,{method:`DELETE`}),S({op:`removed`,template:{key:e}})}let K=e({nodes:r,controller:s,meta:d,templates:f,loaded:!1,error:``,ensureWsFeed:E,load:O,createFromTemplate:k,createTemplate:U,updateTemplate:W,removeTemplate:G,testDriver:F,testNode:I,reconnectInfra:z,patchNode:A,saveTransform:j,removeNode:M,bindNode:N,setNodeBindings:P,controllerAction:B,alarms:o,fetchAlarms:L,ackAlarm:R,nodeById:e=>i.get(e)??r.find(t=>t.id===e),samplesOf:V,fetchFrames:H,frames:p,framesOf:e=>p[e]??[],templateOf:e=>f.find(t=>t.key===e||`daq-${t.key}`===e),ofDevice:e=>e?r.filter(t=>t.deviceBindingId===e):[]});return K},f=`__daqStream`;function p(){let e=globalThis;return e[f]||(e[f]=d()),e[f]}export{o as a,i,s as n,a as r,p as t};
@@ -1 +1 @@
1
- import{ft as e}from"./BSCpFtzG.js";import{t}from"./G0qIw7Gq2.js";import{t as n}from"./36oeS8_R2.js";import{t as r}from"./C-mDhyEd.js";var i=[{key:`temp-sp`,name:`温度设定器`,code:`TEMP · SP`,ch:`烘箱温度设定`,unit:`℃`,min:150,max:200,decimals:1,icon:`thermo`,semantics:`烘箱/熔体温度设定:升高使热塑温度上升(成膜更均匀但能耗高、过热降解风险),降低则偏冷易厚度不均。调整后需等待热惯性(数十秒级)再评估效果。`},{key:`speed-sp`,name:`速度设定器`,code:`LINE · SP`,ch:`产线速度设定`,unit:`m/min`,min:280,max:360,decimals:0,icon:`encoder`,semantics:`产线速度设定:升速提高产能但缩短物料受热时间(温度补偿需联动),降速利于精细工艺。速度变化会同步影响张力与厚度分布。`},{key:`tension-sp`,name:`张力设定器`,code:`TENSION · SP`,ch:`膜张力设定`,unit:`kN`,min:18,max:26,decimals:1,icon:`tension`,semantics:`膜张力设定:张力过大易断膜/拉伸变形,过小则跑偏起皱。调整需平缓,并与速度联动观察。`},{key:`pressure-sp`,name:`压力设定器`,code:`PRESSURE · SP`,ch:`熔体压力设定`,unit:`MPa`,min:.6,max:1.2,decimals:2,icon:`pressure`,semantics:`熔体压力设定:反映挤出/泵送负荷,压力偏高提示阻力大或温度偏低,偏低可能是料位不足。调整需小幅步进。`}],a=[{kind:`mock`,label:`Mock 模拟 PLC`,status:`builtin`,configFields:[]},{kind:`modbus-tcp`,label:`Modbus TCP(PLC/网关 写保持寄存器)`,status:`real`,configFields:[{key:`host`,label:`设备地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.10`,hint:`PLC 或 Modbus 网关 IP`},{key:`port`,label:`端口`,type:`number`,default:502,hint:`Modbus TCP 标准端口 502`},{key:`unitId`,label:`单元号(unitId)`,type:`number`,default:1,hint:`从站地址,常见 1`},{key:`register`,label:`写寄存器地址`,type:`number`,required:!0,placeholder:`40021`,hint:`4xxxx=保持寄存器(写);回读同址校验`},{key:`dataType`,label:`数据类型`,type:`select`,default:`float32`,options:[{value:`int16`,label:`int16(1 寄存器)`},{value:`uint16`,label:`uint16(1 寄存器)`},{value:`int32`,label:`int32(2 寄存器)`},{value:`uint32`,label:`uint32(2 寄存器)`},{value:`float32`,label:`float32(2 寄存器,常用)`}]},{key:`byteOrder`,label:`字节序`,type:`select`,default:`big`,options:[{value:`big`,label:`大端(AB CD)`},{value:`little`,label:`小端(CD AB)`},{value:`wordSwap`,label:`字交换(CD AB / 交换单字)`}]},{key:`engMin`,label:`工程量程下限`,type:`number`,hint:`线性换算:eng ∈ [engMin, engMax] ↔ raw ∈ [rawMin, rawMax];float32 且未填原始量程时 raw=eng`},{key:`engMax`,label:`工程量程上限`,type:`number`},{key:`rawMin`,label:`原始值下限`,type:`number`,hint:`如 int16 用 0~2000 表示 0.1 分辨率`},{key:`rawMax`,label:`原始值上限`,type:`number`}]},{kind:`opcua`,label:`OPC UA(PLC/MES 写节点值)`,status:`real`,configFields:[{key:`endpoint`,label:`端点(endpoint)`,type:`string`,required:!0,placeholder:`opc.tcp://192.168.1.10:4840`,hint:`OPC UA 服务器地址`},{key:`nodeId`,label:`节点 ID(NodeId)`,type:`string`,required:!0,placeholder:`ns=2;s=Channel1.Device1.SetTemp`,hint:`要写入的变量节点`},{key:`securityMode`,label:`安全策略`,type:`select`,default:`None`,options:[{value:`None`,label:`None(无加密,内网常用)`},{value:`Sign`,label:`Sign(签名)`},{value:`SignAndEncrypt`,label:`SignAndEncrypt(签名+加密)`}]},{key:`username`,label:`用户名(可选)`,type:`string`},{key:`password`,label:`密码(可选)`,type:`string`}]},{kind:`modbus-rtu`,label:`Modbus RTU over TCP(串口网关 写保持寄存器)`,status:`real`,configFields:[{key:`host`,label:`网关地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.50`,hint:`串口服务器/RTU 转 TCP 网关 IP`},{key:`port`,label:`端口`,type:`number`,default:502,hint:`网关透传端口(常见 502 / 8899 / 26)`},{key:`unitId`,label:`从站地址(unitId)`,type:`number`,default:1,hint:`RS-485 总线上的从站地址`},{key:`register`,label:`写寄存器地址`,type:`number`,required:!0,placeholder:`40021`,hint:`4xxxx=保持寄存器(写);回读同址校验`},{key:`dataType`,label:`数据类型`,type:`select`,default:`float32`,options:[{value:`int16`,label:`int16(1 寄存器)`},{value:`uint16`,label:`uint16(1 寄存器)`},{value:`int32`,label:`int32(2 寄存器)`},{value:`uint32`,label:`uint32(2 寄存器)`},{value:`float32`,label:`float32(2 寄存器,常用)`}]},{key:`byteOrder`,label:`字节序`,type:`select`,default:`big`,options:[{value:`big`,label:`大端(AB CD)`},{value:`little`,label:`小端(CD AB)`},{value:`wordSwap`,label:`字交换(CD AB / 交换单字)`}]},{key:`engMin`,label:`工程量程下限`,type:`number`,hint:`线性换算:eng ∈ [engMin, engMax] ↔ raw ∈ [rawMin, rawMax];float32 且未填原始量程时 raw=eng`},{key:`engMax`,label:`工程量程上限`,type:`number`},{key:`rawMin`,label:`原始值下限`,type:`number`},{key:`rawMax`,label:`原始值上限`,type:`number`}]},{kind:`mqtt`,label:`MQTT(发布设定值到 Broker)`,status:`real`,configFields:[{key:`host`,label:`Broker 地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.20`,hint:`MQTT Broker 地址(与边缘网关约定同一 Broker)`},{key:`port`,label:`端口`,type:`number`,default:1883,hint:`MQTT TCP 端口 1883`},{key:`topic`,label:`下发主题(topic)`,type:`string`,required:!0,placeholder:`factory/line1/setpoint`,hint:`网关订阅的控制主题(勿与采集主题相同)`},{key:`jsonKey`,label:`JSON 键(可选)`,type:`string`,placeholder:`setpoint`,hint:`留空 = 纯数字报文;填写 = {"键":值} JSON 报文`},{key:`qos`,label:`QoS`,type:`number`,default:1,hint:`0=至多一次 1=至少一次(推荐)`},{key:`username`,label:`用户名(可选)`,type:`string`},{key:`password`,label:`密码(可选)`,type:`string`}]},{kind:`http`,label:`HTTP/REST(POST 设定值)`,status:`real`,configFields:[{key:`url`,label:`写接口地址(URL)`,type:`string`,required:!0,placeholder:`http://192.168.1.30/api/setpoint`,hint:`接收设定值的 HTTP 接口(POST JSON)`},{key:`bodyKey`,label:`JSON 键(可选)`,type:`string`,placeholder:`setpoint`,hint:`留空 = {"value": 设定值};填写 = {"键": 设定值}`},{key:`headersJSON`,label:`请求头(可选)`,type:`string`,placeholder:`{"Authorization":"Bearer xxx"}`,hint:`JSON 对象形式的 HTTP 头`}]}],o=[`#3aa0ff`,`#f4c542`,`#35e0a0`,`#41c8f4`,`#b58cff`,`#ff8a5c`],s=(e,t)=>r({base:`/api/workshop/dcw`,path:e,init:t,retries:(t?.method??`GET`).toUpperCase()===`GET`?2:0});function c(){let r=e([]),a=new Map,o=e({running:!0,nodesTotal:0,nodesOnline:0,writesTotal:0,writesFailed:0}),c=e(i.map(e=>({...e}))),l=e([]),u=e([]),d=e([]),f=e([]),p=e([]),m=e({}),h=e([]);function g(e){let t=r.findIndex(t=>t.id===e.id);t>=0?r[t]=Object.assign(r[t],e):(r.push(e),a.set(e.id,r[r.length-1]))}function _(e){if(e.node){if(e.op===`removed`){let t=r.findIndex(t=>t.id===e.node.id);t>=0&&r.splice(t,1),a.delete(e.node.id);return}g(e.node)}}let v=0,y=null;function b(){v++,v===1&&(y=n().subscribe(x));let e=!1;return()=>{e||(e=!0,--v===0&&(y?.(),y=null))}}function x(e){if(e.type===`dcw.written`){let t=e.payload,n=a.get(t.nodeId);n&&(n.value=t.value,n.state=t.ok?`ok`:`error`,n.lastWriteAt=t.at,t.ok&&(n.lastAckAt=t.at)),d.unshift({id:`${t.nodeId}-${t.at}`,nodeId:t.nodeId,nodeName:n?.name??t.nodeId,param:``,eng:t.value,raw:t.raw,ok:t.ok,message:t.message,recipeRunId:t.recipeRunId,at:t.at}),d.length>60&&d.splice(60)}else if(e.type===`dcw.read`){let t=e.payload,n=a.get(t.nodeId);n&&(t.ok&&(n.readValue=t.value),n.lastReadAt=t.at,n.lastReadError=t.ok?null:t.message)}else if(e.type===`dcw.node.changed`)_(e.payload);else if(e.type===`dcw.controller`)Object.assign(o,e.payload);else if(e.type===`dcw.optimization.changed`){let t=e.payload.record,n=h.findIndex(e=>e.id===t.id);n>=0?h[n]=t:h.unshift(t),h.length>200&&(h.length=200)}}async function S(){try{let e=await s(``);r.splice(0,r.length,...e.nodes),a.clear();for(let e of r)a.set(e.id,e);Object.assign(o,e.controller),e.templates?.length&&c.splice(0,c.length,...e.templates.map(e=>({...e}))),l.splice(0,l.length,...e.recipes??[]),u.splice(0,u.length,...e.runs??[]),d.splice(0,d.length,...e.history??[]),f.splice(0,f.length,...e.products??[]),p.splice(0,p.length,...e.lines??[]);for(let e of Object.keys(m))Reflect.deleteProperty(m,e);for(let t of e.lineStates??[])m[t.lineId]=t;C.loaded=!0,C.error=``}catch(e){C.error=t(e)}}let C=e({nodes:r,controller:o,templates:c,recipes:l,runs:u,history:d,products:f,lines:p,lineStates:m,optimizations:h,loaded:!1,error:``,ensureWsFeed:b,load:S,loadOptimizations:async e=>{let t=new URLSearchParams;e?.lineId&&t.set(`lineId`,e.lineId),e?.recipeId&&t.set(`recipeId`,e.recipeId),e?.nodeId&&t.set(`nodeId`,e.nodeId),e?.status&&t.set(`status`,e.status),t.set(`limit`,String(e?.limit??100));let n=await s(`/optimizations?${t.toString()}`);h.splice(0,h.length,...n.records)},fetchLedger:async e=>(await s(`/${e}/param-ledger`)).ledger,optimizationSeries:async(e,t)=>s(`/optimizations/${e}/series${t?`?windowMs=${t}`:``}`),judgeOptimization:async(e,t,n)=>{await s(`/optimizations/${e}/judge`,{method:`POST`,body:JSON.stringify({verdict:t,reason:n})})},rollbackOptimization:async e=>{await s(`/optimizations/${e}/rollback`,{method:`POST`,body:JSON.stringify({})})},rollbackNode:async(e,t)=>{await s(`/journal/node/${e}/rollback`,{method:`POST`,body:JSON.stringify({to:t})})},markGood:async(e,t)=>{await s(`/recipes/${e}/mark-good`,{method:`POST`,body:JSON.stringify({runId:t})})},rollbackRecipeGood:async e=>{await s(`/recipes/${e}/rollback-good`,{method:`POST`,body:JSON.stringify({})})},createFromTemplate:async(e,t)=>{let n=await s(``,{method:`POST`,body:JSON.stringify({templateRef:e,...t})});return g(n.node),n.node},patchNode:async(e,t)=>{await s(`/${e}`,{method:`PATCH`,body:JSON.stringify(t)})},removeNode:async e=>{await s(`/${e}`,{method:`DELETE`});let t=r.findIndex(t=>t.id===e);t>=0&&r.splice(t,1),a.delete(e)},bindNode:async(e,t)=>{g((await s(`/${e}/bind`,{method:`POST`,body:JSON.stringify({deviceId:t})})).node)},write:async(e,t)=>s(`/${e}/write`,{method:`POST`,body:JSON.stringify({value:t})}).then(e=>e.outcome),readNode:async e=>s(`/${e}/read`,{method:`POST`,body:JSON.stringify({})}).then(e=>e.read),testDriver:async(e,t)=>s(`/test-driver`,{method:`POST`,body:JSON.stringify({driver:e,driverConfig:t})}).then(e=>e.test),testNode:async e=>s(`/${e}/test`,{method:`POST`}).then(e=>e.test),startStop:async e=>{let t=await s(`/controller`,{method:`POST`,body:JSON.stringify({action:e})});Object.assign(o,t.controller)},createTemplate:async e=>{let t=await s(`/templates`,{method:`POST`,body:JSON.stringify(e)});return c.push(t.template),t.template},createRecipe:async e=>{let t=await s(`/recipes`,{method:`POST`,body:JSON.stringify(e)});return l.push(t.recipe),t.recipe},updateRecipe:async(e,t)=>{let n=await s(`/recipes/${e}`,{method:`PATCH`,body:JSON.stringify(t)}),r=l.findIndex(t=>t.id===e);return r>=0&&(l[r]=n.recipe),n.recipe},removeRecipe:async e=>{await s(`/recipes/${e}`,{method:`DELETE`});let t=l.findIndex(t=>t.id===e);t>=0&&l.splice(t,1)},applyRecipe:async e=>{let t=await s(`/recipes/${e}/apply`,{method:`POST`});return u.push(t.run),t.run},recipeVersions:async e=>(await s(`/recipes/${e}/versions`)).versions??[],revertRecipe:async(e,t)=>{let n=await s(`/recipes/${e}/revert`,{method:`POST`,body:JSON.stringify(t)}),r=l.findIndex(t=>t.id===e);return r>=0&&(l[r]=n.recipe),n.recipe},closeRun:async e=>{let t=await s(`/runs/${e}/close`,{method:`POST`}),n=u.findIndex(t=>t.id===e);return n>=0&&(u[n]=t.run),t.run},runData:e=>s(`/runs/${e}/data`),nodeById:e=>a.get(e)??r.find(t=>t.id===e),createProduct:async e=>{let t=await s(`/products`,{method:`POST`,body:JSON.stringify(e)});return f.push(t.product),t.product},updateProduct:async(e,t)=>s(`/products/${e}`,{method:`PATCH`,body:JSON.stringify(t)}).then(e=>(w(),e.product)),removeProduct:async e=>{await s(`/products/${e}`,{method:`DELETE`});let t=f.findIndex(t=>t.id===e);t>=0&&f.splice(t,1)},createLine:async e=>{let t=await s(`/lines`,{method:`POST`,body:JSON.stringify(e)});return p.push(t.line),t.line},updateLine:async(e,t)=>{let n=await s(`/lines/${e}`,{method:`PATCH`,body:JSON.stringify(t)}),r=p.findIndex(t=>t.id===e);r>=0&&(p[r]=n.line)},removeLine:async(e,t=!1)=>{await s(`/lines/${e}${t?`?purge=1`:``}`,{method:`DELETE`});let n=p.findIndex(t=>t.id===e);n>=0&&p.splice(n,1),Reflect.deleteProperty(m,e),await S()},startLine:async(e,t)=>{let n=await s(`/lines/${e}/start`,{method:`POST`,body:JSON.stringify({recipeId:t})});m[e]=n.line},stopLine:async e=>{let t=await s(`/lines/${e}/stop`,{method:`POST`});m[e]=t.line},lineStateOf:e=>m[e]??{lineId:e,active:!1,runId:null,recipeId:null,recipeName:null,productId:null,productName:null,startedAt:null,taggedSamples:0},queryLine:e=>{let t=new URLSearchParams;return e.lineId&&t.set(`lineId`,e.lineId),e.productId&&t.set(`productId`,e.productId),e.recipeId&&t.set(`recipeId`,e.recipeId),e.paramKey&&t.set(`paramKey`,e.paramKey),e.nodeId&&t.set(`nodeId`,e.nodeId),e.fromMs!=null&&t.set(`from`,String(e.fromMs)),e.toMs!=null&&t.set(`to`,String(e.toMs)),e.bucketMs!=null&&t.set(`bucketMs`,String(e.bucketMs)),e.limit!=null&&t.set(`limit`,String(e.limit)),s(`/line/query?${t.toString()}`)}});async function w(){try{let e=await s(``);f.splice(0,f.length,...e.products??[]),l.splice(0,l.length,...e.recipes??[])}catch{}}return C}var l=`__dcwStream`;function u(){let e=globalThis;return e[l]||(e[l]=c()),e[l]}export{a as n,o as r,u as t};
1
+ import{dt as e}from"./CSkxz2NX.js";import{t}from"./D0ZBQrN_2.js";import{t as n}from"./36oeS8_R2.js";import{t as r}from"./BDmh31hl.js";var i=[{key:`temp-sp`,name:`温度设定器`,code:`TEMP · SP`,ch:`烘箱温度设定`,unit:`℃`,min:150,max:200,decimals:1,icon:`thermo`,semantics:`烘箱/熔体温度设定:升高使热塑温度上升(成膜更均匀但能耗高、过热降解风险),降低则偏冷易厚度不均。调整后需等待热惯性(数十秒级)再评估效果。`},{key:`speed-sp`,name:`速度设定器`,code:`LINE · SP`,ch:`产线速度设定`,unit:`m/min`,min:280,max:360,decimals:0,icon:`encoder`,semantics:`产线速度设定:升速提高产能但缩短物料受热时间(温度补偿需联动),降速利于精细工艺。速度变化会同步影响张力与厚度分布。`},{key:`tension-sp`,name:`张力设定器`,code:`TENSION · SP`,ch:`膜张力设定`,unit:`kN`,min:18,max:26,decimals:1,icon:`tension`,semantics:`膜张力设定:张力过大易断膜/拉伸变形,过小则跑偏起皱。调整需平缓,并与速度联动观察。`},{key:`pressure-sp`,name:`压力设定器`,code:`PRESSURE · SP`,ch:`熔体压力设定`,unit:`MPa`,min:.6,max:1.2,decimals:2,icon:`pressure`,semantics:`熔体压力设定:反映挤出/泵送负荷,压力偏高提示阻力大或温度偏低,偏低可能是料位不足。调整需小幅步进。`}],a=[{kind:`mock`,label:`Mock 模拟 PLC`,status:`builtin`,configFields:[]},{kind:`modbus-tcp`,label:`Modbus TCP(PLC/网关 写保持寄存器)`,status:`real`,configFields:[{key:`host`,label:`设备地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.10`,hint:`PLC 或 Modbus 网关 IP`},{key:`port`,label:`端口`,type:`number`,default:502,hint:`Modbus TCP 标准端口 502`},{key:`unitId`,label:`单元号(unitId)`,type:`number`,default:1,hint:`从站地址,常见 1`},{key:`register`,label:`写寄存器地址`,type:`number`,required:!0,placeholder:`40021`,hint:`4xxxx=保持寄存器(写);回读同址校验`},{key:`dataType`,label:`数据类型`,type:`select`,default:`float32`,options:[{value:`int16`,label:`int16(1 寄存器)`},{value:`uint16`,label:`uint16(1 寄存器)`},{value:`int32`,label:`int32(2 寄存器)`},{value:`uint32`,label:`uint32(2 寄存器)`},{value:`float32`,label:`float32(2 寄存器,常用)`}]},{key:`byteOrder`,label:`字节序`,type:`select`,default:`big`,options:[{value:`big`,label:`大端(AB CD)`},{value:`little`,label:`小端(CD AB)`},{value:`wordSwap`,label:`字交换(CD AB / 交换单字)`}]},{key:`engMin`,label:`工程量程下限`,type:`number`,hint:`线性换算:eng ∈ [engMin, engMax] ↔ raw ∈ [rawMin, rawMax];float32 且未填原始量程时 raw=eng`},{key:`engMax`,label:`工程量程上限`,type:`number`},{key:`rawMin`,label:`原始值下限`,type:`number`,hint:`如 int16 用 0~2000 表示 0.1 分辨率`},{key:`rawMax`,label:`原始值上限`,type:`number`}]},{kind:`opcua`,label:`OPC UA(PLC/MES 写节点值)`,status:`real`,configFields:[{key:`endpoint`,label:`端点(endpoint)`,type:`string`,required:!0,placeholder:`opc.tcp://192.168.1.10:4840`,hint:`OPC UA 服务器地址`},{key:`nodeId`,label:`节点 ID(NodeId)`,type:`string`,required:!0,placeholder:`ns=2;s=Channel1.Device1.SetTemp`,hint:`要写入的变量节点`},{key:`securityMode`,label:`安全策略`,type:`select`,default:`None`,options:[{value:`None`,label:`None(无加密,内网常用)`},{value:`Sign`,label:`Sign(签名)`},{value:`SignAndEncrypt`,label:`SignAndEncrypt(签名+加密)`}]},{key:`username`,label:`用户名(可选)`,type:`string`},{key:`password`,label:`密码(可选)`,type:`string`}]},{kind:`modbus-rtu`,label:`Modbus RTU over TCP(串口网关 写保持寄存器)`,status:`real`,configFields:[{key:`host`,label:`网关地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.50`,hint:`串口服务器/RTU 转 TCP 网关 IP`},{key:`port`,label:`端口`,type:`number`,default:502,hint:`网关透传端口(常见 502 / 8899 / 26)`},{key:`unitId`,label:`从站地址(unitId)`,type:`number`,default:1,hint:`RS-485 总线上的从站地址`},{key:`register`,label:`写寄存器地址`,type:`number`,required:!0,placeholder:`40021`,hint:`4xxxx=保持寄存器(写);回读同址校验`},{key:`dataType`,label:`数据类型`,type:`select`,default:`float32`,options:[{value:`int16`,label:`int16(1 寄存器)`},{value:`uint16`,label:`uint16(1 寄存器)`},{value:`int32`,label:`int32(2 寄存器)`},{value:`uint32`,label:`uint32(2 寄存器)`},{value:`float32`,label:`float32(2 寄存器,常用)`}]},{key:`byteOrder`,label:`字节序`,type:`select`,default:`big`,options:[{value:`big`,label:`大端(AB CD)`},{value:`little`,label:`小端(CD AB)`},{value:`wordSwap`,label:`字交换(CD AB / 交换单字)`}]},{key:`engMin`,label:`工程量程下限`,type:`number`,hint:`线性换算:eng ∈ [engMin, engMax] ↔ raw ∈ [rawMin, rawMax];float32 且未填原始量程时 raw=eng`},{key:`engMax`,label:`工程量程上限`,type:`number`},{key:`rawMin`,label:`原始值下限`,type:`number`},{key:`rawMax`,label:`原始值上限`,type:`number`}]},{kind:`mqtt`,label:`MQTT(发布设定值到 Broker)`,status:`real`,configFields:[{key:`host`,label:`Broker 地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.20`,hint:`MQTT Broker 地址(与边缘网关约定同一 Broker)`},{key:`port`,label:`端口`,type:`number`,default:1883,hint:`MQTT TCP 端口 1883`},{key:`topic`,label:`下发主题(topic)`,type:`string`,required:!0,placeholder:`factory/line1/setpoint`,hint:`网关订阅的控制主题(勿与采集主题相同)`},{key:`jsonKey`,label:`JSON 键(可选)`,type:`string`,placeholder:`setpoint`,hint:`留空 = 纯数字报文;填写 = {"键":值} JSON 报文`},{key:`qos`,label:`QoS`,type:`number`,default:1,hint:`0=至多一次 1=至少一次(推荐)`},{key:`username`,label:`用户名(可选)`,type:`string`},{key:`password`,label:`密码(可选)`,type:`string`}]},{kind:`http`,label:`HTTP/REST(POST 设定值)`,status:`real`,configFields:[{key:`url`,label:`写接口地址(URL)`,type:`string`,required:!0,placeholder:`http://192.168.1.30/api/setpoint`,hint:`接收设定值的 HTTP 接口(POST JSON)`},{key:`bodyKey`,label:`JSON 键(可选)`,type:`string`,placeholder:`setpoint`,hint:`留空 = {"value": 设定值};填写 = {"键": 设定值}`},{key:`headersJSON`,label:`请求头(可选)`,type:`string`,placeholder:`{"Authorization":"Bearer xxx"}`,hint:`JSON 对象形式的 HTTP 头`}]}],o=[`#3aa0ff`,`#f4c542`,`#35e0a0`,`#41c8f4`,`#b58cff`,`#ff8a5c`],s=(e,t)=>r({base:`/api/workshop/dcw`,path:e,init:t,retries:(t?.method??`GET`).toUpperCase()===`GET`?2:0});function c(){let r=e([]),a=new Map,o=e({running:!0,nodesTotal:0,nodesOnline:0,writesTotal:0,writesFailed:0}),c=e(i.map(e=>({...e}))),l=e([]),u=e([]),d=e([]),f=e([]),p=e([]),m=e({}),h=e([]);function g(e){let t=r.findIndex(t=>t.id===e.id);t>=0?r[t]=Object.assign(r[t],e):(r.push(e),a.set(e.id,r[r.length-1]))}function _(e){if(e.node){if(e.op===`removed`){let t=r.findIndex(t=>t.id===e.node.id);t>=0&&r.splice(t,1),a.delete(e.node.id);return}g(e.node)}}let v=0,y=null;function b(){v++,v===1&&(y=n().subscribe(x));let e=!1;return()=>{e||(e=!0,--v===0&&(y?.(),y=null))}}function x(e){if(e.type===`dcw.written`){let t=e.payload,n=a.get(t.nodeId);n&&(n.value=t.value,n.state=t.ok?`ok`:`error`,n.lastWriteAt=t.at,t.ok&&(n.lastAckAt=t.at)),d.unshift({id:`${t.nodeId}-${t.at}`,nodeId:t.nodeId,nodeName:n?.name??t.nodeId,param:``,eng:t.value,raw:t.raw,ok:t.ok,message:t.message,recipeRunId:t.recipeRunId,at:t.at}),d.length>60&&d.splice(60)}else if(e.type===`dcw.read`){let t=e.payload,n=a.get(t.nodeId);n&&(t.ok&&(n.readValue=t.value),n.lastReadAt=t.at,n.lastReadError=t.ok?null:t.message)}else if(e.type===`dcw.node.changed`)_(e.payload);else if(e.type===`dcw.controller`)Object.assign(o,e.payload);else if(e.type===`dcw.optimization.changed`){let t=e.payload.record,n=h.findIndex(e=>e.id===t.id);n>=0?h[n]=t:h.unshift(t),h.length>200&&(h.length=200)}}async function S(){try{let e=await s(``);r.splice(0,r.length,...e.nodes),a.clear();for(let e of r)a.set(e.id,e);Object.assign(o,e.controller),e.templates?.length&&c.splice(0,c.length,...e.templates.map(e=>({...e}))),l.splice(0,l.length,...e.recipes??[]),u.splice(0,u.length,...e.runs??[]),d.splice(0,d.length,...e.history??[]),f.splice(0,f.length,...e.products??[]),p.splice(0,p.length,...e.lines??[]);for(let e of Object.keys(m))Reflect.deleteProperty(m,e);for(let t of e.lineStates??[])m[t.lineId]=t;C.loaded=!0,C.error=``}catch(e){C.error=t(e)}}let C=e({nodes:r,controller:o,templates:c,recipes:l,runs:u,history:d,products:f,lines:p,lineStates:m,optimizations:h,loaded:!1,error:``,ensureWsFeed:b,load:S,loadOptimizations:async e=>{let t=new URLSearchParams;e?.lineId&&t.set(`lineId`,e.lineId),e?.recipeId&&t.set(`recipeId`,e.recipeId),e?.nodeId&&t.set(`nodeId`,e.nodeId),e?.status&&t.set(`status`,e.status),t.set(`limit`,String(e?.limit??100));let n=await s(`/optimizations?${t.toString()}`);h.splice(0,h.length,...n.records)},fetchLedger:async e=>(await s(`/${e}/param-ledger`)).ledger,optimizationSeries:async(e,t)=>s(`/optimizations/${e}/series${t?`?windowMs=${t}`:``}`),judgeOptimization:async(e,t,n)=>{await s(`/optimizations/${e}/judge`,{method:`POST`,body:JSON.stringify({verdict:t,reason:n})})},rollbackOptimization:async e=>{await s(`/optimizations/${e}/rollback`,{method:`POST`,body:JSON.stringify({})})},rollbackNode:async(e,t)=>{await s(`/journal/node/${e}/rollback`,{method:`POST`,body:JSON.stringify({to:t})})},markGood:async(e,t)=>{await s(`/recipes/${e}/mark-good`,{method:`POST`,body:JSON.stringify({runId:t})})},rollbackRecipeGood:async e=>{await s(`/recipes/${e}/rollback-good`,{method:`POST`,body:JSON.stringify({})})},createFromTemplate:async(e,t)=>{let n=await s(``,{method:`POST`,body:JSON.stringify({templateRef:e,...t})});return g(n.node),n.node},patchNode:async(e,t)=>{await s(`/${e}`,{method:`PATCH`,body:JSON.stringify(t)})},removeNode:async e=>{await s(`/${e}`,{method:`DELETE`});let t=r.findIndex(t=>t.id===e);t>=0&&r.splice(t,1),a.delete(e)},bindNode:async(e,t)=>{g((await s(`/${e}/bind`,{method:`POST`,body:JSON.stringify({deviceId:t})})).node)},write:async(e,t)=>s(`/${e}/write`,{method:`POST`,body:JSON.stringify({value:t})}).then(e=>e.outcome),readNode:async e=>s(`/${e}/read`,{method:`POST`,body:JSON.stringify({})}).then(e=>e.read),testDriver:async(e,t)=>s(`/test-driver`,{method:`POST`,body:JSON.stringify({driver:e,driverConfig:t})}).then(e=>e.test),testNode:async e=>s(`/${e}/test`,{method:`POST`}).then(e=>e.test),startStop:async e=>{let t=await s(`/controller`,{method:`POST`,body:JSON.stringify({action:e})});Object.assign(o,t.controller)},createTemplate:async e=>{let t=await s(`/templates`,{method:`POST`,body:JSON.stringify(e)});return c.push(t.template),t.template},createRecipe:async e=>{let t=await s(`/recipes`,{method:`POST`,body:JSON.stringify(e)});return l.push(t.recipe),t.recipe},updateRecipe:async(e,t)=>{let n=await s(`/recipes/${e}`,{method:`PATCH`,body:JSON.stringify(t)}),r=l.findIndex(t=>t.id===e);return r>=0&&(l[r]=n.recipe),n.recipe},removeRecipe:async e=>{await s(`/recipes/${e}`,{method:`DELETE`});let t=l.findIndex(t=>t.id===e);t>=0&&l.splice(t,1)},applyRecipe:async e=>{let t=await s(`/recipes/${e}/apply`,{method:`POST`});return u.push(t.run),t.run},recipeVersions:async e=>(await s(`/recipes/${e}/versions`)).versions??[],revertRecipe:async(e,t)=>{let n=await s(`/recipes/${e}/revert`,{method:`POST`,body:JSON.stringify(t)}),r=l.findIndex(t=>t.id===e);return r>=0&&(l[r]=n.recipe),n.recipe},closeRun:async e=>{let t=await s(`/runs/${e}/close`,{method:`POST`}),n=u.findIndex(t=>t.id===e);return n>=0&&(u[n]=t.run),t.run},runData:e=>s(`/runs/${e}/data`),nodeById:e=>a.get(e)??r.find(t=>t.id===e),createProduct:async e=>{let t=await s(`/products`,{method:`POST`,body:JSON.stringify(e)});return f.push(t.product),t.product},updateProduct:async(e,t)=>s(`/products/${e}`,{method:`PATCH`,body:JSON.stringify(t)}).then(e=>(w(),e.product)),removeProduct:async e=>{await s(`/products/${e}`,{method:`DELETE`});let t=f.findIndex(t=>t.id===e);t>=0&&f.splice(t,1)},createLine:async e=>{let t=await s(`/lines`,{method:`POST`,body:JSON.stringify(e)});return p.push(t.line),t.line},updateLine:async(e,t)=>{let n=await s(`/lines/${e}`,{method:`PATCH`,body:JSON.stringify(t)}),r=p.findIndex(t=>t.id===e);r>=0&&(p[r]=n.line)},removeLine:async(e,t=!1)=>{await s(`/lines/${e}${t?`?purge=1`:``}`,{method:`DELETE`});let n=p.findIndex(t=>t.id===e);n>=0&&p.splice(n,1),Reflect.deleteProperty(m,e),await S()},startLine:async(e,t)=>{let n=await s(`/lines/${e}/start`,{method:`POST`,body:JSON.stringify({recipeId:t})});m[e]=n.line},stopLine:async e=>{let t=await s(`/lines/${e}/stop`,{method:`POST`});m[e]=t.line},lineStateOf:e=>m[e]??{lineId:e,active:!1,runId:null,recipeId:null,recipeName:null,productId:null,productName:null,startedAt:null,taggedSamples:0},queryLine:e=>{let t=new URLSearchParams;return e.lineId&&t.set(`lineId`,e.lineId),e.productId&&t.set(`productId`,e.productId),e.recipeId&&t.set(`recipeId`,e.recipeId),e.paramKey&&t.set(`paramKey`,e.paramKey),e.nodeId&&t.set(`nodeId`,e.nodeId),e.fromMs!=null&&t.set(`from`,String(e.fromMs)),e.toMs!=null&&t.set(`to`,String(e.toMs)),e.bucketMs!=null&&t.set(`bucketMs`,String(e.bucketMs)),e.limit!=null&&t.set(`limit`,String(e.limit)),s(`/line/query?${t.toString()}`)}});async function w(){try{let e=await s(``);f.splice(0,f.length,...e.products??[]),l.splice(0,l.length,...e.recipes??[])}catch{}}return C}var l=`__dcwStream`;function u(){let e=globalThis;return e[l]||(e[l]=c()),e[l]}export{a as n,o as r,u as t};
@@ -0,0 +1,2 @@
1
+ import{At as e,B as t,Bt as n,C as r,Ct as i,Dt as a,Et as o,Ft as s,It as c,Lt as l,Mt as u,Ot as d,Pt as f,Q as p,Rt as m,St as h,T as ee,Tt as g,Wt as _,X as v,Y as y,_ as te,b as ne,g as re,gt as ie,i as b,j as x,jt as S,kt as C,l as ae,n as oe,t as se,w as ce,wt as w,zt as T}from"./CSkxz2NX.js";var E=void 0,le=typeof window<`u`&&window.trustedTypes;if(le)try{E=le.createPolicy(`vue`,{createHTML:e=>e})}catch{}var ue=E?e=>E.createHTML(e):e=>e,de=`http://www.w3.org/2000/svg`,fe=`http://www.w3.org/1998/Math/MathML`,D=typeof document<`u`?document:null,pe=D&&D.createElement(`template`),me={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{let i=t===`svg`?D.createElementNS(de,e):t===`mathml`?D.createElementNS(fe,e):n?D.createElement(e,{is:n}):D.createElement(e);return e===`select`&&r&&r.multiple!=null&&i.setAttribute(`multiple`,r.multiple),i},createText:e=>D.createTextNode(e),createComment:e=>D.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>D.querySelector(e),setScopeId(e,t){e.setAttribute(t,``)},insertStaticContent(e,t,n,r,i,a){let o=n?n.previousSibling:t.lastChild;if(i&&(i===a||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),!(i===a||!(i=i.nextSibling)););else{pe.innerHTML=ue(r===`svg`?`<svg>${e}</svg>`:r===`mathml`?`<math>${e}</math>`:e);let i=pe.content;if(r===`svg`||r===`mathml`){let e=i.firstChild;for(;e.firstChild;)i.appendChild(e.firstChild);i.removeChild(e)}t.insertBefore(i,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},O=`transition`,k=`animation`,A=Symbol(`_vtc`),he={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},ge=w({},oe,he),_e=(e=>(e.displayName=`Transition`,e.props=ge,e))((e,{slots:t})=>ee(se,N(e),t)),j=(e,t=[])=>{d(e)?e.forEach(e=>e(...t)):e&&e(...t)},M=e=>e?d(e)?e.some(e=>e.length>1):e.length>1:!1;function N(e){let t={};for(let n in e)n in he||(t[n]=e[n]);if(e.css===!1)return t;let{name:n=`v`,type:r,duration:i,enterFromClass:a=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:c=a,appearActiveClass:l=o,appearToClass:u=s,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:f=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,m=ve(i),h=m&&m[0],ee=m&&m[1],{onBeforeEnter:g,onEnter:_,onEnterCancelled:v,onLeave:y,onLeaveCancelled:te,onBeforeAppear:ne=g,onAppear:re=_,onAppearCancelled:ie=v}=t,b=(e,t,n,r)=>{e._enterCancelled=r,I(e,t?u:s),I(e,t?l:o),n&&n()},x=(e,t)=>{e._isLeaving=!1,I(e,d),I(e,p),I(e,f),t&&t()},S=e=>(t,n)=>{let i=e?re:_,o=()=>b(t,e,n);j(i,[t,o]),ye(()=>{I(t,e?c:a),F(t,e?u:s),M(i)||xe(t,r,h,o)})};return w(t,{onBeforeEnter(e){j(g,[e]),F(e,a),F(e,o)},onBeforeAppear(e){j(ne,[e]),F(e,c),F(e,l)},onEnter:S(!1),onAppear:S(!0),onLeave(e,t){e._isLeaving=!0;let n=()=>x(e,t);F(e,d),e._enterCancelled?(F(e,f),L(e)):(L(e),F(e,f)),ye(()=>{e._isLeaving&&(I(e,d),F(e,p),M(y)||xe(e,r,ee,n))}),j(y,[e,n])},onEnterCancelled(e){b(e,!1,void 0,!0),j(v,[e])},onAppearCancelled(e){b(e,!0,void 0,!0),j(ie,[e])},onLeaveCancelled(e){x(e),j(te,[e])}})}function ve(e){if(e==null)return null;if(S(e))return[P(e.enter),P(e.leave)];{let t=P(e);return[t,t]}}function P(e){return _(e)}function F(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e[A]||(e[A]=new Set)).add(t)}function I(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.remove(t));let n=e[A];n&&(n.delete(t),n.size||(e[A]=void 0))}function ye(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var be=0;function xe(e,t,n,r){let i=e._endId=++be,a=()=>{i===e._endId&&r()};if(n!=null)return setTimeout(a,n);let{type:o,timeout:s,propCount:c}=Se(e,t);if(!o)return r();let l=o+`end`,u=0,d=()=>{e.removeEventListener(l,f),a()},f=t=>{t.target===e&&++u>=c&&d()};setTimeout(()=>{u<c&&d()},s+1),e.addEventListener(l,f)}function Se(e,t){let n=window.getComputedStyle(e),r=e=>(n[e]||``).split(`, `),i=r(`${O}Delay`),a=r(`${O}Duration`),o=Ce(i,a),s=r(`${k}Delay`),c=r(`${k}Duration`),l=Ce(s,c),u=null,d=0,f=0;t===O?o>0&&(u=O,d=o,f=a.length):t===k?l>0&&(u=k,d=l,f=c.length):(d=Math.max(o,l),u=d>0?o>l?O:k:null,f=u?u===O?a.length:c.length:0);let p=u===O&&/\b(?:transform|all)(?:,|$)/.test(r(`${O}Property`).toString());return{type:u,timeout:d,propCount:f,hasTransform:p}}function Ce(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((t,n)=>we(t)+we(e[n])))}function we(e){return e===`auto`?0:Number(e.slice(0,-1).replace(`,`,`.`))*1e3}function L(e){return(e?e.ownerDocument:document).body.offsetHeight}function Te(e,t,n){let r=e[A];r&&(t=(t?[t,...r]:[...r]).join(` `)),t==null?e.removeAttribute(`class`):n?e.setAttribute(`class`,t):e.className=t}var R=Symbol(`_vod`),z=Symbol(`_vsh`),Ee={name:`show`,beforeMount(e,{value:t},{transition:n}){e[R]=e.style.display===`none`?``:e.style.display,n&&t?n.beforeEnter(e):B(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),B(e,!0),r.enter(e)):r.leave(e,()=>{B(e,!1)}):B(e,t))},beforeUnmount(e,{value:t}){B(e,t)}};function B(e,t){e.style.display=t?e[R]:`none`,e[z]=!t}var De=Symbol(``),Oe=/(?:^|;)\s*display\s*:/;function ke(e,t,n){let r=e.style,i=c(n),a=!1;if(n&&!i){if(t){if(c(t))for(let e of t.split(`;`)){let t=e.slice(0,e.indexOf(`:`)).trim();n[t]??V(r,t,``)}else for(let e in t)n[e]??V(r,e,``)}for(let i in n){i===`display`&&(a=!0);let o=n[i];o==null?V(r,i,``):Ne(e,i,!c(t)&&t?t[i]:void 0,o)||V(r,i,o)}}else if(i){if(t!==n){let e=r[De];e&&(n+=`;`+e),r.cssText=n,a=Oe.test(n)}}else t&&e.removeAttribute(`style`);R in e&&(e[R]=a?r.display:``,e[z]&&(r.display=`none`))}var Ae=/\s*!important$/;function V(e,t,n){if(d(n))n.forEach(n=>V(e,t,n));else if(n??=``,t.startsWith(`--`))e.setProperty(t,n);else{let r=Me(e,t);Ae.test(n)?e.setProperty(g(r),n.replace(Ae,``),`important`):e[r]=n}}var je=[`Webkit`,`Moz`,`ms`],H={};function Me(e,t){let n=H[t];if(n)return n;let r=h(t);if(r!==`filter`&&r in e)return H[t]=r;r=i(r);for(let n=0;n<je.length;n++){let i=je[n]+r;if(i in e)return H[t]=i}return t}function Ne(e,t,n,r){return e.tagName===`TEXTAREA`&&(t===`width`||t===`height`)&&c(r)&&n===r}var Pe=`http://www.w3.org/1999/xlink`;function Fe(e,t,n,r,i,a=s(t)){r&&t.startsWith(`xlink:`)?n==null?e.removeAttributeNS(Pe,t.slice(6,t.length)):e.setAttributeNS(Pe,t,n):n==null||a&&!o(n)?e.removeAttribute(t):e.setAttribute(t,a?``:l(n)?String(n):n)}function Ie(e,t,n,r,i){if(t===`innerHTML`||t===`textContent`){n!=null&&(e[t]=t===`innerHTML`?ue(n):n);return}let a=e.tagName;if(t===`value`&&a!==`PROGRESS`&&!a.includes(`-`)){let r=a===`OPTION`?e.getAttribute(`value`)||``:e.value,i=n==null?e.type===`checkbox`?`on`:``:String(n);(r!==i||!(`_value`in e))&&(e.value=i),n??e.removeAttribute(t),e._value=n;return}let s=!1;if(n===``||n==null){let r=typeof e[t];r===`boolean`?n=o(n):n==null&&r===`string`?(n=``,s=!0):r===`number`&&(n=0,s=!0)}try{e[t]=n}catch{}s&&e.removeAttribute(i||t)}function U(e,t,n,r){e.addEventListener(t,n,r)}function Le(e,t,n,r){e.removeEventListener(t,n,r)}var W=Symbol(`_vei`);function Re(e,t,n,r,i=null){let a=e[W]||(e[W]={}),o=a[t];if(r&&o)o.value=r;else{let[n,s]=Ve(t);r?U(e,n,a[t]=Ge(r,i),s):o&&(Le(e,n,o,s),a[t]=void 0)}}var ze=/(Once|Passive|Capture)$/,Be=/^on:?(?:Once|Passive|Capture)$/;function Ve(e){let t,n;for(;(n=e.match(ze))&&!Be.test(e);)t||={},e=e.slice(0,e.length-n[1].length),t[n[1].toLowerCase()]=!0;return[e[2]===`:`?e.slice(3):g(e.slice(2)),t]}var He=0,Ue=Promise.resolve(),We=()=>He||=(Ue.then(()=>He=0),Date.now());function Ge(e,t){let n=e=>{if(!e._vts)e._vts=Date.now();else if(e._vts<=n.attached)return;let r=n.value;if(d(r)){let n=e.stopImmediatePropagation;e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0};let i=r.slice(),a=[e];for(let n=0;n<i.length&&!e._stopped;n++){let e=i[n];e&&ae(e,t,5,a)}}else ae(r,t,5,[e])};return n.value=e,n.attached=We(),n}var Ke=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,qe=(t,n,r,i,a,o)=>{let s=a===`svg`;n===`class`?Te(t,i,s):n===`style`?ke(t,r,i):u(n)?e(n)||Re(t,n,r,i,o):(n[0]===`.`?(n=n.slice(1),!0):n[0]===`^`?(n=n.slice(1),!1):Je(t,n,i,s))?(Ie(t,n,i),!t.tagName.includes(`-`)&&(n===`value`||n===`checked`||n===`selected`)&&Fe(t,n,i,s,o,n!==`value`)):t._isVueCE&&(Ye(t,n)||t._def.__asyncLoader&&(/[A-Z]/.test(n)||!c(i)))?Ie(t,h(n),i,o,n):(n===`true-value`?t._trueValue=i:n===`false-value`&&(t._falseValue=i),Fe(t,n,i,s))};function Je(e,t,n,r){if(r)return!!(t===`innerHTML`||t===`textContent`||t in e&&Ke(t)&&C(n));if(t===`spellcheck`||t===`draggable`||t===`translate`||t===`autocorrect`||t===`sandbox`&&e.tagName===`IFRAME`||t===`form`||t===`list`&&e.tagName===`INPUT`||t===`type`&&e.tagName===`TEXTAREA`)return!1;if(t===`width`||t===`height`){let t=e.tagName;if(t===`IMG`||t===`VIDEO`||t===`CANVAS`||t===`SOURCE`)return!1}return Ke(t)&&c(n)?!1:t in e}function Ye(e,t){let n=e._def.props;if(!n)return!1;let r=h(t);return Array.isArray(n)?n.some(e=>h(e)===r):Object.keys(n).some(e=>h(e)===r)}var Xe=new WeakMap,Ze=new WeakMap,G=Symbol(`_moveCb`),Qe=Symbol(`_enterCb`),$e=(e=>(delete e.props.mode,e))({name:`TransitionGroup`,props:w({},ge,{tag:String,moveClass:String}),setup(e,{slots:n}){let i=r(),a=p(),o,s;return t(()=>{if(!o.length)return;let t=e.moveClass||`${e.name||`v`}-move`;if(!it(o[0].el,i.vnode.el,t)){o=[];return}o.forEach(et),o.forEach(tt);let n=o.filter(nt);L(i.vnode.el),n.forEach(e=>{let n=e.el,r=n.style;F(n,t),r.transform=r.webkitTransform=r.transitionDuration=``;let i=n[G]=e=>{e&&e.target!==n||(!e||e.propertyName.endsWith(`transform`))&&(n.removeEventListener(`transitionend`,i),n[G]=null,I(n,t))};n.addEventListener(`transitionend`,i)}),o=[]}),()=>{let t=ie(e),r=N(t),c=t.tag||b;if(o=[],s)for(let e=0;e<s.length;e++){let t=s[e];t.el&&t.el instanceof Element&&!t.el[z]&&(o.push(t),v(t,y(t,r,a,i)),Xe.set(t,rt(t.el)))}s=n.default?ce(n.default()):[];for(let e=0;e<s.length;e++){let t=s[e];t.key!=null&&v(t,y(t,r,a,i))}return ne(c,null,s)}}});function et(e){let t=e.el;t[G]&&t[G](),t[Qe]&&t[Qe]()}function tt(e){Ze.set(e,rt(e.el))}function nt(e){let t=Xe.get(e),n=Ze.get(e),r=t.left-n.left,i=t.top-n.top;if(r||i){let t=e.el,n=t.style,a=t.getBoundingClientRect(),o=1,s=1;return t.offsetWidth&&(o=a.width/t.offsetWidth),t.offsetHeight&&(s=a.height/t.offsetHeight),(!Number.isFinite(o)||o===0)&&(o=1),(!Number.isFinite(s)||s===0)&&(s=1),Math.abs(o-1)<.01&&(o=1),Math.abs(s-1)<.01&&(s=1),n.transform=n.webkitTransform=`translate(${r/o}px,${i/s}px)`,n.transitionDuration=`0s`,e}}function rt(e){let t=e.getBoundingClientRect();return{left:t.left,top:t.top}}function it(e,t,n){let r=e.cloneNode(),i=e[A];i&&i.forEach(e=>{e.split(/\s+/).forEach(e=>e&&r.classList.remove(e))}),n.split(/\s+/).forEach(e=>e&&r.classList.add(e)),r.style.display=`none`;let a=t.nodeType===1?t:t.parentNode;a.appendChild(r);let{hasTransform:o}=Se(r);return a.removeChild(r),o}var K=e=>{let t=e.props[`onUpdate:modelValue`]||!1;return d(t)?e=>a(t,e):t};function at(e){e.target.composing=!0}function ot(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event(`input`)))}var q=Symbol(`_assign`),J=Symbol(`_initialValue`);function Y(e,t,r){return t&&(e=e.trim()),r&&(e=n(e)),e}var X={created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e.parentNode&&(e.type===`text`?e[J]=e.defaultValue.replace(/[\r\n]/g,``):e.type===`textarea`&&(e[J]=e.defaultValue.replace(/\r\n?/g,`
2
+ `))),e[q]=K(i);let a=r||i.props&&i.props.type===`number`;U(e,t?`change`:`input`,t=>{t.target.composing||e[q](Y(e.value,n,a))}),(n||a)&&U(e,`change`,()=>{e.value=Y(e.value,n,a)}),t||(U(e,`compositionstart`,at),U(e,`compositionend`,ot),U(e,`change`,ot))},mounted(e,{value:t,modifiers:{trim:n,number:r}}){let i=t??``,a=e[J];delete e[J],a!==void 0&&(e.type===`text`||e.type===`textarea`)&&e.value!==a?e[q](Y(e.value,n,r)):e.value=i},beforeUpdate(e,{value:t,oldValue:r,modifiers:{lazy:i,trim:a,number:o}},s){if(e[q]=K(s),e.composing)return;let c=(o||e.type===`number`)&&!/^0\d/.test(e.value)?n(e.value):e.value,l=t??``;if(c===l)return;let u=e.getRootNode();(u instanceof Document||u instanceof ShadowRoot)&&u.activeElement===e&&e.type!==`range`&&(i&&t===r||a&&e.value.trim()===l)||(e.value=l)}},st={deep:!0,created(e,t,n){e[q]=K(n),U(e,`change`,()=>{let t=e._modelValue,n=Z(e),r=e.checked,i=e[q];if(d(t)){let e=T(t,n),a=e!==-1;if(r&&!a)i(t.concat(n));else if(!r&&a){let n=[...t];n.splice(e,1),i(n)}}else if(f(t)){let e=new Set(t);r?e.add(n):e.delete(n),i(e)}else i(ft(e,r))})},mounted:ct,beforeUpdate(e,t,n){e[q]=K(n),ct(e,t,n)}};function ct(e,{value:t,oldValue:n},r){e._modelValue=t;let i;if(d(t))i=T(t,r.props.value)>-1;else if(f(t))i=t.has(r.props.value);else{if(t===n)return;i=m(t,ft(e,!0))}e.checked!==i&&(e.checked=i)}var lt={created(e,{value:t},n){e.checked=m(t,n.props.value),e[q]=K(n),U(e,`change`,()=>{e[q](Z(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[q]=K(r),t!==n&&(e.checked=m(t,r.props.value))}},ut={deep:!0,created(e,{value:t,modifiers:{number:r}},i){e._modelValue=t,U(e,`change`,()=>{let t=Array.prototype.filter.call(e.options,e=>e.selected).map(e=>r?n(Z(e)):Z(e));e[q](e.multiple?f(e._modelValue)?new Set(t):t:t[0]),e._assigning=!0,x(()=>{e._assigning=!1})}),e[q]=K(i)},mounted(e,{value:t}){dt(e,t)},beforeUpdate(e,{value:t},n){e._modelValue=t,e[q]=K(n)},updated(e,{value:t}){e._assigning||dt(e,t)}};function dt(e,t){let n=e.multiple,r=d(t);if(!(n&&!r&&!f(t))){for(let i=0,a=e.options.length;i<a;i++){let a=e.options[i],o=Z(a);if(n){if(r){let e=typeof o;a.selected=e===`string`||e===`number`?t.some(e=>String(e)===String(o)):T(t,o)>-1}else a.selected=t.has(o)}else if(m(Z(a),t)){e.selectedIndex!==i&&(e.selectedIndex=i);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Z(e){return`_value`in e?e._value:e.value}function ft(e,t){let n=t?`_trueValue`:`_falseValue`;return n in e?e[n]:t}var pt={created(e,t,n){Q(e,t,n,null,`created`)},mounted(e,t,n){Q(e,t,n,null,`mounted`)},beforeUpdate(e,t,n,r){Q(e,t,n,r,`beforeUpdate`)},updated(e,t,n,r){Q(e,t,n,r,`updated`)}};function mt(e,t){switch(e){case`SELECT`:return ut;case`TEXTAREA`:return X;default:switch(t){case`checkbox`:return st;case`radio`:return lt;default:return X}}}function Q(e,t,n,r,i){let a=mt(e.tagName,n.props&&n.props.type)[i];a&&a(e,t,n,r)}var ht=[`ctrl`,`shift`,`alt`,`meta`],gt={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>`button`in e&&e.button!==0,middle:e=>`button`in e&&e.button!==1,right:e=>`button`in e&&e.button!==2,exact:(e,t)=>ht.some(n=>e[`${n}Key`]&&!t.includes(n))},_t=(e,t)=>{if(!e)return e;let n=e._withMods||={},r=t.join(`.`);return n[r]||(n[r]=((n,...r)=>{for(let e=0;e<t.length;e++){let r=gt[t[e]];if(r&&r(n,t))return}return e(n,...r)}))},vt={esc:`escape`,space:` `,up:`arrow-up`,left:`arrow-left`,right:`arrow-right`,down:`arrow-down`,delete:`backspace`},yt=(e,t)=>{let n=e._withKeys||={},r=t.join(`.`);return n[r]||(n[r]=(n=>{if(!(`key`in n))return;let r=g(n.key);if(t.some(e=>e===r||vt[e]===r))return e(n)}))},bt=w({patchProp:qe},me),$,xt=!1;function St(){return $||=te(bt)}function Ct(){return $=xt?$:re(bt),xt=!0,$}var wt=((...e)=>{St().render(...e)}),Tt=((...e)=>{let t=St().createApp(...e),{mount:n}=t;return t.mount=e=>{let r=Ot(e);if(!r)return;let i=t._component;!C(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent=``);let a=n(r,!1,Dt(r));return r instanceof Element&&(r.removeAttribute(`v-cloak`),r.setAttribute(`data-v-app`,``)),a},t}),Et=((...e)=>{let t=Ct().createApp(...e),{mount:n}=t;return t.mount=e=>{let t=Ot(e);if(t)return n(t,!0,Dt(t))},t});function Dt(e){if(e instanceof SVGElement)return`svg`;if(typeof MathMLElement==`function`&&e instanceof MathMLElement)return`mathml`}function Ot(e){return c(e)?document.querySelector(e):e}export{wt as a,ut as c,yt as d,_t as f,Et as i,X as l,$e as n,st as o,Tt as r,pt as s,_e as t,Ee as u};
@@ -0,0 +1 @@
1
+ import{C as e,H as t,R as n,S as r,T as i,h as a,ht as o,u as s}from"./CSkxz2NX.js";import{i as c}from"./DPnwL14Y.js";r({name:`ServerPlaceholder`,render(){return a(`div`)}});var l=Symbol.for(`nuxt:client-only`),u=r({name:`ClientOnly`,inheritAttrs:!1,props:[`fallback`,`placeholder`,`placeholderTag`,`fallbackTag`],setup(r,{slots:u,attrs:d}){let f=o(!1);n(()=>{f.value=!0});let p=e();return p&&(p._nuxtClientOnly=!0),t(l,!0),()=>{if(f.value){let e=u.default?.();return e&&e.length===1?[s(e[0],d)]:e}let e=u.fallback||u.placeholder;if(e)return i(e);let t=r.fallback||r.placeholder||``,n=c(r.fallbackTag||r.placeholderTag,`span`);return a(n,d,t)}}});export{l as n,u as t};
@@ -0,0 +1 @@
1
+ import{$ as e,P as t,R as n,S as r,Ut as i,V as a,Vt as o,W as s,b as c,d as l,dt as ee,f as u,h as d,i as f,m as p,nt as m,pt as h,tt as te,xt as g,y as _}from"./CSkxz2NX.js";import{c as v,f as ne,l as y,s as re}from"./D6uzXueg.js";import{a as ie}from"./C__m4EhR.js";import{t as ae}from"./BHA40aHa.js";import{n as oe}from"./KZQX7xoM.js";import{t as se}from"./CWoJjWmZ.js";import{t as b}from"./BDNMzG2s2.js";import{t as ce}from"./D0ZBQrN_2.js";import{t as le}from"./CNs_Ozdc2.js";import{a as ue,n as x,t as de}from"./D1YDxZpZ.js";import{t as fe}from"./D20Yamr4.js";import{t as pe}from"./C3J6FYKa.js";var me={class:`page`},he={class:`aw-kicker`},ge={class:`aw-page-head`},_e={key:0,class:`err`},ve={key:1,class:`grid`},ye={class:`col-live`},be={class:`aw-tile value-card`},xe={class:`aw-kicker`},Se={class:`big-val mono`},Ce={class:`facts mono`},we={class:`col-form aw-tile pad`},Te={class:`sec`},Ee={class:`field`},De={class:`field`},Oe={value:``},ke=[`value`],Ae={class:`field`},je=[`value`,`disabled`],Me={class:`field row`},Ne=[`disabled`],Pe={class:`field row`},Fe=[`disabled`],Ie=[`disabled`],Le={class:`field row`},Re=[`disabled`],ze={class:`field`},Be={class:`field`},Ve={class:`field-row`},He={class:`field`},Ue={class:`field`},We={class:`field`},Ge={class:`field`},Ke=[`disabled`],qe={class:`sec mt`},Je={class:`driver-grid`},Ye={key:0},Xe=[`onUpdate:modelValue`],Ze=[`value`],Qe=[`onUpdate:modelValue`,`type`,`placeholder`],$e={class:`test-row`},et=[`disabled`],tt={class:`sec mt`},nt={class:`bind-row`},rt={value:``},it=[`value`],at={class:`col-hist aw-tile pad`},ot={class:`hist-hd`},st={class:`sec`},ct={class:`hist-ctl mono`},lt=[`value`],ut=[`title`],dt=[`placeholder`],ft={class:`raw-table mono`},pt={key:2,class:`aw-tile pad frames-tile`},mt={class:`hist-hd`},ht={class:`sec`},gt={class:`mono frames-n`},_t=[`viewBox`],vt=[`points`],yt={class:`raw-table mono`},bt={key:0,class:`gal`},xt=[`title`,`onClick`],St=[`src`],Ct={class:`mono`},wt={key:1,class:`frames-empty`},Tt=[`src`],S=320,Et=84,Dt=`#35e0a0`,Ot=`rgba(120,135,160,0.18)`,kt=`rgba(140,155,175,0.8)`,At=b(r({__name:`[id]`,setup(r){let{t:b}=oe();le({layout:`default`});let At=ie(),C=l(()=>String(At.params.id??``)),w=de(),jt=fe();jt.load();let T=pe(),E=l(()=>w.nodeById(C.value)??null),D=l(()=>{let e=E.value?ue(E.value.templateRef):``;return w.templates.find(t=>t.key===e)??null}),Mt={ok:b(`daqDetail.k41k5c026`),warn:b(`daqDetail.k49z8v027`),alarm:b(`daqDetail.k3xmid028`),offline:b(`daqDetail.k44c2n029`)},O=()=>{let e=E.value;return!e||!w.controller.running||!e.enabled?`offline`:e.state},Nt=null;n(()=>{Nt=w.ensureWsFeed(),w.load(),T.load(),A.value&&M()}),t(()=>Nt?.());let k=l(()=>D.value?.signalKind??`scalar`),A=l(()=>k.value!==`scalar`),j=l(()=>w.framesOf(C.value));async function M(){C.value&&await w.fetchFrames(C.value,{limit:24}).catch(()=>{})}e(C,()=>{A.value&&M()});let Pt=e=>new Date(e).toLocaleTimeString(`zh-CN`,{hour12:!1}),Ft=e=>Object.entries(e.metrics??{}).slice(0,3).map(([e,t])=>`${e}=${t}`).join(` `),It=l(()=>j.value.find(e=>e.kind===`vector`&&e.points?.length)),Lt=l(()=>{let e=It.value?.points??[];if(e.length<2)return``;let t=Math.min(...e),n=Math.max(...e)-t||1;return e.map((r,i)=>`${(i/(e.length-1)*S).toFixed(1)},${(78-(r-t)/n*72).toFixed(1)}`).join(` `)}),N=h(null);function Rt(e){return e==null?b(`daqDetail.k9vnp9h053`,{p0:w.controller.defaultPublishIntervalMs}):e===0?b(`daqDetail.k1m1zwux030`):`${e}ms`}let P=ee({enabled:!0,driver:`mock`,lineId:``,followGlobal:!0,intervalMs:5e3,calKind:`none`,calScale:1,calOffset:0,publishFollow:!0,publishEveryFrame:!1,publishMs:1e3,unit:``,decimals:1,min:0,max:100,warnLow:null,warnHigh:null});e(E,e=>{e&&(P.enabled=e.enabled,P.lineId=e.lineId??``,P.driver=e.driver,P.followGlobal=e.intervalMs==null,P.intervalMs=e.intervalMs??w.controller.defaultIntervalMs,P.publishFollow=e.publishIntervalMs==null,P.publishEveryFrame=e.publishIntervalMs===0,P.publishMs=e.publishIntervalMs==null?w.controller.defaultPublishIntervalMs:e.publishIntervalMs,P.unit=e.unit,P.decimals=e.decimals,P.min=e.min,P.max=e.max,P.warnLow=e.warnLow,P.warnHigh=e.warnHigh)},{immediate:!0});let F=h({}),I=l(()=>x.find(e=>e.kind===P.driver)?.configFields??[]);e(E,e=>{e&&(F.value={...e.driverConfig})},{immediate:!0}),e(()=>P.driver,()=>{if(I.value.length&&Object.keys(F.value).length===0){let e={};for(let t of I.value)t.default!==void 0&&(e[t.key]=t.default);F.value=e}},{immediate:!0});let L=h(!1),R=h(null);async function zt(){L.value=!0,R.value=null;try{await w.patchNode(C.value,{driver:P.driver,driverConfig:{...F.value}}),R.value=await w.testNode(C.value)}catch(e){R.value={ok:!1,message:ce(e)}}finally{L.value=!1}}let z=h(!1);async function Bt(){let e=E.value;if(!(!e||z.value)){z.value=!0;try{await w.patchNode(e.id,{enabled:P.enabled,driver:P.driver,lineId:P.lineId,driverConfig:{...F.value},intervalMs:P.followGlobal?null:Math.max(1e3,Math.min(6e4,Math.round(P.intervalMs))),publishIntervalMs:P.publishFollow?null:P.publishEveryFrame?0:Math.max(0,Math.min(6e4,Math.round(P.publishMs))),unit:P.unit,decimals:Math.max(0,Math.min(6,Math.round(P.decimals))),min:P.min,max:P.max,warnLow:P.warnLow,warnHigh:P.warnHigh})}finally{z.value=!1}}}function Vt(e){return w.meta.drivers.find(t=>t.kind===e)?.status===`planned`}let B=h(``),Ht=l(()=>(E.value?.deviceIds??(E.value?.deviceBindingId?[E.value.deviceBindingId]:[])).map(e=>T.twins.find(t=>t.id===e)?.name??`${e.slice(0,8)}…`).join(` / `));function Ut(){w.bindNode(C.value,E.value?.deviceBindingId?null:B.value||null)}let Wt=l(()=>T.twins.filter(e=>e.kind!==`daq`&&e.id!==E.value?.id)),V=h([]),H=h(15e3),U=h(!1),Gt=[{label:`1s 桶`,ms:1e3},{label:`5s 桶`,ms:5e3},{label:`15s 桶(默认)`,ms:15e3},{label:`30s 桶`,ms:3e4},{label:`1min 桶`,ms:6e4}];async function W(){if(C.value){U.value=!0;try{let e=await w.samplesOf(C.value,{toMs:Date.now(),bucketMs:H.value||void 0,limit:400});V.value=[...e].reverse()}finally{U.value=!1,qt()}}}let Kt=h(null);function qt(){let e=Kt.value;if(!e)return;let t=Math.min(window.devicePixelRatio||1,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)return;i.setTransform(t,0,0,t,0,0),i.clearRect(0,0,n,r);for(let e=1;e<4;e++)i.strokeStyle=Ot,i.beginPath(),i.moveTo(0,r/4*e),i.lineTo(n,r/4*e),i.stroke();let a=V.value;if(a.length<2)return;let o=1/0,s=-1/0;for(let e of a){let t=e.value??e.avg??e.min??0;o=Math.min(o,t),s=Math.max(s,t)}let c=Math.max(s-o,1e-9);i.strokeStyle=kt,i.font=`10px monospace`,i.fillStyle=kt,i.fillText(s.toFixed(2),4,11),i.fillText(o.toFixed(2),4,r-4),i.strokeStyle=Dt,i.lineWidth=1.6,i.beginPath(),a.forEach((e,t)=>{let s=t/(a.length-1)*n,l=r-((e.value??e.avg??0)-o)/c*(r-16)-8;t===0?i.moveTo(s,l):i.lineTo(s,l)}),i.stroke()}let G=h(null),K=null,q=``;function J(){let e=G.value,t=E.value;if(!e||!t||t.hist.length<2)return;let n=`${t.hist.length}:${t.hist[t.hist.length-1]}:${t.hist[0]}`;if(n===q)return;q=n;let r=Math.min(window.devicePixelRatio||1,2),i=e.clientWidth,a=e.clientHeight;(e.width!==i*r||e.height!==a*r)&&(e.width=i*r,e.height=a*r);let o=e.getContext(`2d`);if(!o)return;o.setTransform(r,0,0,r,0,0),o.clearRect(0,0,i,a);let s=Math.max(...t.hist),c=Math.min(...t.hist),l=Math.max(s-c,1e-9);o.strokeStyle=`rgba(65,200,244,0.9)`,o.lineWidth=1.5,o.beginPath(),t.hist.forEach((e,n)=>{let r=n/(t.hist.length-1)*i,s=a-(e-c)/l*(a-6)-3;n===0?o.moveTo(r,s):o.lineTo(r,s)}),o.stroke()}let Y=null,X=!1;function Jt(){X=document.hidden,X||(J(),Q.value&&W())}let Z=h(0),Q=l(()=>{let e=w.controller.minQueryDisplayIntervalMs??500,t=Z.value>0?Z.value:w.controller.queryDisplayIntervalMs??0;return t>0?Math.max(e,t):0}),$=null;function Yt(){$&&=(clearInterval($),null);let e=Q.value;e&&($=se(()=>{document.hidden||U.value||W()},e))}return n(()=>{W(),K=se(()=>{X||J()},800),document.addEventListener(`visibilitychange`,Jt),typeof ResizeObserver<`u`&&(Y=new ResizeObserver(()=>{q=``,J(),qt()}),G.value&&Y.observe(G.value)),Yt()}),t(()=>{K&&clearInterval(K),$&&clearInterval($),document.removeEventListener(`visibilitychange`,Jt),Y?.disconnect(),Y=null}),e(H,()=>void W()),e(Q,()=>Yt()),(e,t)=>{let n=ae;return a(),d(`div`,me,[u(`p`,he,[c(n,{to:`/daq`,class:`back`},{default:te(()=>[_(i(e.$t(`daqDetail.k1emg364001`)),1)]),_:1}),_(` / NODE `+i(C.value.slice(0,8).toUpperCase()),1)]),u(`div`,ge,[u(`h1`,null,i(E.value?.name??C.value),1),u(`span`,{class:o([`st-pill`,[O()]])},i(Mt[O()]),3)]),!E.value&&g(w).error?(a(),d(`p`,_e,[_(i(g(w).error)+`(`,1),c(n,{to:`/workshop`},{default:te(()=>[_(i(e.$t(`daqDetail.k1bhhheq002`)),1)]),_:1}),t[21]||=_(`) `,-1)])):p(``,!0),E.value?(a(),d(`div`,ve,[u(`section`,ye,[u(`div`,be,[u(`p`,xe,i(e.$t(`daqDetail.k1fx2vik032`))+` `+i(D.value?.ch??`-`),1),u(`div`,Se,[_(i(E.value.value==null?`--`:E.value.value.toFixed(E.value.decimals)),1),u(`small`,null,i(E.value.unit),1)]),u(`canvas`,{ref_key:`liveCanvas`,ref:G,class:`live-canvas`},null,512),u(`dl`,Ce,[u(`div`,null,[u(`dt`,null,i(e.$t(`daqDetail.k4a0la003`)),1),u(`dd`,null,i(E.value.driver)+i(Vt(E.value.driver)?e.$t(`daqDetail.kz8zr9v035`):``),1)]),u(`div`,null,[u(`dt`,null,i(e.$t(`daqDetail.k3xg3w004`)),1),u(`dd`,null,i(E.value.intervalMs??e.$t(`daqDetail.k9vnp9h053`,{p0:g(w).controller.defaultIntervalMs})),1)]),u(`div`,null,[u(`dt`,null,i(e.$t(`daqDetail.k3w6td005`)),1),u(`dd`,null,i(Rt(E.value.publishIntervalMs)),1)]),u(`div`,null,[u(`dt`,null,i(e.$t(`daqDetail.k3x5tpx006`)),1),u(`dd`,null,i(E.value.warnLow??`-∞`)+` ~ `+i(E.value.warnHigh??`+∞`),1)]),u(`div`,null,[u(`dt`,null,i(e.$t(`daqDetail.k1hjj0jf007`)),1),u(`dd`,null,i(E.value.min)+` ~ `+i(E.value.max),1)]),u(`div`,null,[u(`dt`,null,i(e.$t(`daqDetail.k1i8rtqt008`)),1),u(`dd`,null,i(Ht.value||e.$t(`daqDetail.k3own4q036`)),1)])])])]),u(`section`,we,[u(`h3`,Te,i(e.$t(`daqDetail.kd9d69j009`)),1),u(`form`,{class:`form-grid`,onSubmit:ne(Bt,[`prevent`])},[u(`label`,Ee,[u(`span`,null,i(e.$t(`daqDetail.k1iw7tbf010`)),1),u(`button`,{type:`button`,class:o([`toggle`,{on:P.enabled}]),onClick:t[0]||=e=>P.enabled=!P.enabled},i(P.enabled?e.$t(`daqDetail.k3w3j8f037`):e.$t(`daqDetail.k3n5aaj045`)),3)]),u(`label`,De,[u(`span`,null,i(e.$t(`daqDetail.k12k23od011`)),1),m(u(`select`,{"onUpdate:modelValue":t[1]||=e=>P.lineId=e,class:`input`},[u(`option`,Oe,i(e.$t(`daqDetail.k3ootr6012`)),1),(a(!0),d(f,null,s(g(jt).lines,e=>(a(),d(`option`,{key:e.id,value:e.id},i(e.name),9,ke))),128))],512),[[v,P.lineId]])]),u(`label`,Ae,[u(`span`,null,i(e.$t(`daqDetail.k1l6smxo013`)),1),m(u(`select`,{"onUpdate:modelValue":t[2]||=e=>P.driver=e,class:`input`},[(a(!0),d(f,null,s(g(x),t=>(a(),d(`option`,{key:t.kind,value:t.kind,disabled:t.status===`planned`},i(t.label)+i(t.status===`planned`?e.$t(`daqDetail.kz8zr9v035`):``),9,je))),128))],512),[[v,P.driver]])]),u(`label`,Me,[u(`button`,{type:`button`,class:o([`toggle slim`,{on:P.followGlobal}]),onClick:t[3]||=e=>P.followGlobal=!P.followGlobal},i(P.followGlobal?e.$t(`daqDetail.k1k2ueyq038`):e.$t(`daqDetail.k1cgi8fy046`)),3),m(u(`input`,{"onUpdate:modelValue":t[4]||=e=>P.intervalMs=e,type:`number`,min:`1000`,max:`60000`,step:`500`,class:`input`,disabled:P.followGlobal},null,8,Ne),[[y,P.intervalMs,void 0,{number:!0}]]),t[22]||=u(`small`,null,`ms`,-1)]),u(`label`,Pe,[u(`button`,{type:`button`,class:o([`toggle slim`,{on:P.calKind===`linear`}]),title:`采集标定 decoder:物理值 = scale × PLC采集值 + offset`,onClick:t[5]||=e=>P.calKind=P.calKind===`linear`?`none`:`linear`},i(P.calKind===`linear`?e.$t(`daqDetail.k1eru4r1039`):e.$t(`daqDetail.k3oktae047`)),3),m(u(`input`,{"onUpdate:modelValue":t[6]||=e=>P.calScale=e,type:`number`,step:`0.1`,class:`input`,disabled:P.calKind!==`linear`,title:`decode 斜率(≠0)`},null,8,Fe),[[y,P.calScale,void 0,{number:!0}]]),m(u(`input`,{"onUpdate:modelValue":t[7]||=e=>P.calOffset=e,type:`number`,step:`0.1`,class:`input`,disabled:P.calKind!==`linear`,title:`decode 截距`},null,8,Ie),[[y,P.calOffset,void 0,{number:!0}]]),t[23]||=u(`small`,null,`decoder`,-1)]),u(`label`,Le,[u(`button`,{type:`button`,class:o([`toggle slim`,{on:P.publishFollow}]),onClick:t[8]||=e=>P.publishFollow=!P.publishFollow},i(P.publishFollow?e.$t(`daqDetail.k1k2t5o7040`):e.$t(`daqDetail.k1cggz5f048`)),3),u(`span`,{class:o([`toggle slim`,{on:P.publishEveryFrame}]),style:{cursor:`pointer`},onClick:t[9]||=e=>P.publishEveryFrame=!P.publishEveryFrame},i(P.publishEveryFrame?e.$t(`daqDetail.k41mvv041`):e.$t(`daqDetail.k3n42dj049`)),3),m(u(`input`,{"onUpdate:modelValue":t[10]||=e=>P.publishMs=e,type:`number`,min:`0`,max:`60000`,step:`100`,class:`input`,disabled:P.publishFollow||P.publishEveryFrame},null,8,Re),[[y,P.publishMs,void 0,{number:!0}]]),t[24]||=u(`small`,null,`ms`,-1)]),u(`label`,ze,[u(`span`,null,i(e.$t(`daqDetail.k3x4ef014`)),1),m(u(`input`,{"onUpdate:modelValue":t[11]||=e=>P.unit=e,class:`input`},null,512),[[y,P.unit]])]),u(`label`,Be,[u(`span`,null,i(e.$t(`daqDetail.k3mxmcx015`)),1),m(u(`input`,{"onUpdate:modelValue":t[12]||=e=>P.decimals=e,type:`number`,min:`0`,max:`6`,class:`input`},null,512),[[y,P.decimals,void 0,{number:!0}]])]),u(`div`,Ve,[u(`label`,He,[u(`span`,null,i(e.$t(`daqDetail.k1l9jv5m016`)),1),m(u(`input`,{"onUpdate:modelValue":t[13]||=e=>P.min=e,type:`number`,step:`any`,class:`input`},null,512),[[y,P.min,void 0,{number:!0}]])]),u(`label`,Ue,[u(`span`,null,i(e.$t(`daqDetail.k1md63hm017`)),1),m(u(`input`,{"onUpdate:modelValue":t[14]||=e=>P.warnLow=e,type:`number`,step:`any`,class:`input`},null,512),[[y,P.warnLow,void 0,{number:!0}]])]),u(`label`,We,[u(`span`,null,i(e.$t(`daqDetail.k1md63gp018`)),1),m(u(`input`,{"onUpdate:modelValue":t[15]||=e=>P.warnHigh=e,type:`number`,step:`any`,class:`input`},null,512),[[y,P.warnHigh,void 0,{number:!0}]])]),u(`label`,Ge,[u(`span`,null,i(e.$t(`daqDetail.k1l9jv4p019`)),1),m(u(`input`,{"onUpdate:modelValue":t[16]||=e=>P.max=e,type:`number`,step:`any`,class:`input`},null,512),[[y,P.max,void 0,{number:!0}]])])]),u(`button`,{class:`aw-pill`,type:`submit`,disabled:z.value},i(z.value?e.$t(`daqDetail.k1as0g50042`):e.$t(`daqDetail.ksn9cgo050`)),9,Ke)],32),I.value.length?(a(),d(f,{key:0},[u(`h3`,qe,i(e.$t(`daqDetail.k1p9gioa033`))+` `+i(g(x).find(e=>e.kind===P.driver)?.label),1),u(`div`,Je,[(a(!0),d(f,null,s(I.value,e=>(a(),d(`label`,{key:e.key,class:`field`},[u(`span`,null,[_(i(e.label),1),e.required?(a(),d(`em`,Ye,`*`)):p(``,!0)]),e.type===`select`?m((a(),d(`select`,{key:0,"onUpdate:modelValue":t=>F.value[e.key]=t,class:`input`},[(a(!0),d(f,null,s(e.options,e=>(a(),d(`option`,{key:e.value,value:e.value},i(e.label),9,Ze))),128))],8,Xe)),[[v,F.value[e.key]]]):m((a(),d(`input`,{key:1,"onUpdate:modelValue":t=>F.value[e.key]=t,type:e.type===`number`?`number`:`text`,placeholder:e.placeholder,class:`input`},null,8,Qe)),[[re,F.value[e.key]]])]))),128))]),u(`div`,$e,[u(`button`,{class:`pill-btn`,disabled:L.value,onClick:zt},i(L.value?e.$t(`daqDetail.k1fsh720043`):e.$t(`daqDetail.k1fstglk051`)),9,et),R.value?(a(),d(`span`,{key:0,class:o([`test-out mono`,R.value.ok?`ok`:`bad`])},i(R.value.ok?`✓`:`✗`)+` `+i(R.value.message),3)):p(``,!0)])],64)):p(``,!0),u(`h3`,tt,i(e.$t(`daqDetail.k1ie6qju020`)),1),u(`div`,nt,[m(u(`select`,{"onUpdate:modelValue":t[17]||=e=>B.value=e,class:`input grow`},[u(`option`,rt,i(e.$t(`daqDetail.kjobzu3021`)),1),(a(!0),d(f,null,s(Wt.value,e=>(a(),d(`option`,{key:e.id,value:e.id},i(e.name),9,it))),128))],512),[[v,B.value]]),u(`button`,{class:`pill-btn`,onClick:Ut},i(Ht.value?e.$t(`daqDetail.k479eh044`):e.$t(`daqDetail.k452a8052`)),1)])]),u(`section`,at,[u(`div`,ot,[u(`h3`,st,i(e.$t(`daqDetail.k1i535i5034`))+i(g(w).meta.tsdb)+`) `,1),u(`div`,ct,[m(u(`select`,{"onUpdate:modelValue":t[18]||=e=>H.value=e,class:`input`},[(a(),d(f,null,s(Gt,e=>u(`option`,{key:e.ms,value:e.ms},i(e.label),9,lt)),64))],512),[[v,H.value,void 0,{number:!0}]]),u(`label`,{class:`refresh-ctl`,title:e.$t(`daqDetail.k1rfrshint001`,{p0:g(w).controller.minQueryDisplayIntervalMs??500})},[t[25]||=u(`span`,{class:`i-tabler-refresh`},null,-1),m(u(`input`,{"onUpdate:modelValue":t[19]||=e=>Z.value=e,type:`number`,min:0,max:`600000`,step:`500`,placeholder:String(g(w).controller.queryDisplayIntervalMs??5e3)},null,8,dt),[[y,Z.value,void 0,{number:!0}]]),t[26]||=_(`ms `,-1)],8,ut),u(`button`,{class:`pill-btn`,onClick:W},i(e.$t(`daqDetail.k3x1jg022`)),1)])]),u(`canvas`,{ref_key:`chartCanvas`,ref:Kt,class:`hist-canvas`},null,512),u(`table`,ft,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,i(e.$t(`daqDetail.k40vsf023`)),1),u(`th`,null,i(e.$t(`daqDetail.k48v5024`)),1),u(`th`,null,i(e.$t(`daqDetail.k4bza025`)),1)])]),u(`tbody`,null,[(a(!0),d(f,null,s(V.value.filter(e=>e.value!=null).slice(-12).reverse(),(e,t)=>(a(),d(`tr`,{key:t},[u(`td`,null,i(new Date(e.at).toLocaleTimeString(`zh-CN`,{hour12:!1})),1),u(`td`,null,i(e.value.toFixed(E.value?.decimals??2)),1),u(`td`,null,i(e.state),1)]))),128))])])])])):p(``,!0),A.value?(a(),d(`section`,pt,[u(`div`,mt,[u(`h3`,ht,[_(i(k.value===`image`?e.$t(`daqDetail.kfrm0001`):e.$t(`daqDetail.kfrm0002`))+` `,1),u(`span`,gt,i(j.value.length),1)]),u(`button`,{class:`pill-btn`,onClick:M},i(e.$t(`daqDetail.k3x1jg022`)),1)]),k.value===`vector`?(a(),d(f,{key:0},[(a(),d(`svg`,{class:`vec-svg`,viewBox:`0 0 ${S} ${Et}`,preserveAspectRatio:`none`},[u(`polyline`,{points:Lt.value,fill:`none`,stroke:`var(--accent)`,"stroke-width":`1.5`},null,8,vt)],8,_t)),u(`table`,yt,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,i(e.$t(`daqDetail.k40vsf023`)),1),u(`th`,null,i(e.$t(`daqDetail.kfrm0004`)),1),u(`th`,null,i(e.$t(`daqDetail.kfrm0005`)),1)])]),u(`tbody`,null,[(a(!0),d(f,null,s(j.value.filter(e=>e.kind===`vector`).slice(0,12),e=>(a(),d(`tr`,{key:e.at},[u(`td`,null,i(Pt(e.at)),1),u(`td`,null,i(e.points?.length??0),1),u(`td`,null,i(Ft(e)),1)]))),128))])])],64)):(a(),d(f,{key:1},[j.value.length?(a(),d(`div`,bt,[(a(!0),d(f,null,s(j.value,t=>(a(),d(`figure`,{key:t.at,class:`gal-item`,title:e.$t(`daqDetail.kfrm0006`),onClick:e=>N.value=t},[u(`img`,{src:t.thumbUrl,loading:`lazy`,alt:`daq frame`},null,8,St),u(`figcaption`,Ct,i(Pt(t.at))+` · `+i(Ft(t)),1)],8,xt))),128))])):(a(),d(`p`,wt,i(e.$t(`daqDetail.kfrm0003`)),1)),N.value?(a(),d(`div`,{key:2,class:`gal-full`,onClick:t[20]||=e=>N.value=null},[u(`img`,{src:N.value.contentUrl??N.value.thumbUrl,alt:`daq frame full`},null,8,Tt)])):p(``,!0)],64))])):p(``,!0)])}}}),[[`__scopeId`,`data-v-1365f679`]]);export{At as default};