agentworkshop 0.7.44 → 0.7.46

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 (1866) hide show
  1. package/.AgentWorkShop/prompts/host-tools.json +265 -6
  2. package/.AgentWorkShop/prompts/lead-supervise.md +54 -29
  3. package/.AgentWorkShop/prompts/peer-reply-optional.md +6 -2
  4. package/.AgentWorkShop/prompts/peer-reply-required.md +8 -7
  5. package/.output/.AgentWorkShop/aml-python/amlkit.py +185 -120
  6. package/.output/.AgentWorkShop/aml-python/requirements.txt +9 -7
  7. package/.output/.AgentWorkShop/aml-python/train-hybrid-example.py +87 -0
  8. package/.output/.AgentWorkShop/prompts/host-tools.json +265 -6
  9. package/.output/.AgentWorkShop/prompts/lead-supervise.md +54 -29
  10. package/.output/.AgentWorkShop/prompts/peer-reply-optional.md +6 -2
  11. package/.output/.AgentWorkShop/prompts/peer-reply-required.md +8 -7
  12. package/.output/.AgentWorkShop/schema.json +12 -0
  13. package/.output/nitro.json +1 -1
  14. package/.output/public/_nuxt/-hB4kEmt.js +1 -0
  15. package/.output/public/_nuxt/1g9IT9Qh2.js +1 -0
  16. package/.output/public/_nuxt/74x7BOWv2.js +1 -0
  17. package/.output/public/_nuxt/9c5GOgbu.js +1 -0
  18. package/.output/public/_nuxt/9zrLAN2o2.js +1 -0
  19. package/.output/public/_nuxt/B1RT9NTO2.js +1 -0
  20. package/.output/public/_nuxt/B2x8SKRO.js +1 -0
  21. package/.output/public/_nuxt/B6Olw0Op.js +1 -0
  22. package/.output/public/_nuxt/B7jlMWsz.js +1 -0
  23. package/.output/public/_nuxt/B8cnjDtt.js +1 -0
  24. package/.output/public/_nuxt/B9rIcCX12.js +1 -0
  25. package/.output/public/_nuxt/BACBBVdw.js +1 -0
  26. package/.output/public/_nuxt/BBhLVYdM.js +1 -0
  27. package/.output/public/_nuxt/BDmNbZ252.js +1 -0
  28. package/.output/public/_nuxt/BFVf8HLR.js +1 -0
  29. package/.output/public/_nuxt/BGKUW7ra.js +1 -0
  30. package/.output/public/_nuxt/BH3obZJ42.js +1 -0
  31. package/.output/public/_nuxt/BHwG4yNs.js +1 -0
  32. package/.output/public/_nuxt/BIOq3xqe2.js +1 -0
  33. package/.output/public/_nuxt/BITZvQBK.js +1 -0
  34. package/.output/public/_nuxt/BL_dbd2v2.js +1 -0
  35. package/.output/public/_nuxt/BMMoqi94.js +1 -0
  36. package/.output/public/_nuxt/BNnnYEYh2.js +1 -0
  37. package/.output/public/_nuxt/BQXCMsXk.js +1 -0
  38. package/.output/public/_nuxt/BS9P_Ies2.js +1 -0
  39. package/.output/public/_nuxt/BWU1pvLL.js +1 -0
  40. package/.output/public/_nuxt/B_9_BM9G.js +3 -0
  41. package/.output/public/_nuxt/B_LcD7qE2.js +1 -0
  42. package/.output/public/_nuxt/BcQXL8pb.js +1 -0
  43. package/.output/public/_nuxt/BdM_Qr752.js +1 -0
  44. package/.output/public/_nuxt/BiOSWsjD.js +2 -0
  45. package/.output/public/_nuxt/BkSViqQd.js +1 -0
  46. package/.output/public/_nuxt/Bl5dYv4m.js +1 -0
  47. package/.output/public/_nuxt/BmiMC_BC.js +2 -0
  48. package/.output/public/_nuxt/BnpY_zNx.js +1 -0
  49. package/.output/public/_nuxt/BqYVLAcm.js +1 -0
  50. package/.output/public/_nuxt/Br3AySNQ.js +1 -0
  51. package/.output/public/_nuxt/Br3MggOL.js +1 -0
  52. package/.output/public/_nuxt/BrRX-l9B2.js +4108 -0
  53. package/.output/public/_nuxt/Bt2ZL5332.js +1 -0
  54. package/.output/public/_nuxt/Bub2P5me.js +28 -0
  55. package/.output/public/_nuxt/BvRk9kiK.js +0 -0
  56. package/.output/public/_nuxt/BvRk9kiK2.js +0 -0
  57. package/.output/public/_nuxt/Bwc6lt2X.js +3 -0
  58. package/.output/public/_nuxt/BxHBIVAg.js +1 -0
  59. package/.output/public/_nuxt/BxYTM0hb.js +1 -0
  60. package/.output/public/_nuxt/ByMj6e7s.js +3 -0
  61. package/.output/public/_nuxt/BzvHUfRR2.js +1 -0
  62. package/.output/public/_nuxt/C2YYOgMe.js +42 -0
  63. package/.output/public/_nuxt/C3twEwTh2.js +1 -0
  64. package/.output/public/_nuxt/C4WhK2wq.js +1 -0
  65. package/.output/public/_nuxt/C50LmoI1.js +0 -0
  66. package/.output/public/_nuxt/CAaSPBqk.js +1 -0
  67. package/.output/public/_nuxt/CBDX7p73.js +1 -0
  68. package/.output/public/_nuxt/CD9lpEz22.js +13 -0
  69. package/.output/public/_nuxt/CGZVhYJ4.js +1 -0
  70. package/.output/public/_nuxt/CJRDL4EG.js +1 -0
  71. package/.output/public/_nuxt/CKQPwwZa2.js +1 -0
  72. package/.output/public/_nuxt/CLySL7mW.js +75 -0
  73. package/.output/public/_nuxt/CMXcOb6W.js +1 -0
  74. package/.output/public/_nuxt/CN1CDAwe.js +1 -0
  75. package/.output/public/_nuxt/CP0I2l-6.js +1 -0
  76. package/.output/public/_nuxt/CP0Nep9S.js +1 -0
  77. package/.output/public/_nuxt/CPeZNE4S2.js +1 -0
  78. package/.output/public/_nuxt/CPmNRTBk2.js +21 -0
  79. package/.output/public/_nuxt/CQabB0oy.js +1 -0
  80. package/.output/public/_nuxt/CT-vTjcG.js +1 -0
  81. package/.output/public/_nuxt/CTVfcnjU.js +3 -0
  82. package/.output/public/_nuxt/CWzp2R6G.js +1 -0
  83. package/.output/public/_nuxt/C_VAXV7I2.js +7 -0
  84. package/.output/public/_nuxt/CavpkQb0.js +1 -0
  85. package/.output/public/_nuxt/CeWnOF3O.js +1 -0
  86. package/.output/public/_nuxt/CfLUvgr32.js +1 -0
  87. package/.output/public/_nuxt/Ch1P2mIf.js +1 -0
  88. package/.output/public/_nuxt/ChoLwR-s.js +1 -0
  89. package/.output/public/_nuxt/Chphw5IA2.js +1 -0
  90. package/.output/public/_nuxt/ChtjzEpK2.js +19 -0
  91. package/.output/public/_nuxt/CiTQY_n32.js +1 -0
  92. package/.output/public/_nuxt/Ck5oMvUk.js +1 -0
  93. package/.output/public/_nuxt/Ckafrjnw2.js +1 -0
  94. package/.output/public/_nuxt/Cm_PTn9t2.js +1 -0
  95. package/.output/public/_nuxt/Cmp8PMrA.js +1 -0
  96. package/.output/public/_nuxt/Cnrmlixo.js +3 -0
  97. package/.output/public/_nuxt/Cr518Gh02.js +1 -0
  98. package/.output/public/_nuxt/Crbir9cT.js +1 -0
  99. package/.output/public/_nuxt/CtPNnATm2.js +31 -0
  100. package/.output/public/_nuxt/Cu8c3oMN2.js +1 -0
  101. package/.output/public/_nuxt/CwLQAKay2.js +1 -0
  102. package/.output/public/_nuxt/CzlUIbK32.js +17 -0
  103. package/.output/public/_nuxt/D6lZftfy.js +1 -0
  104. package/.output/public/_nuxt/D83nVQPl.js +1 -0
  105. package/.output/public/_nuxt/D89BUtx6.js +1 -0
  106. package/.output/public/_nuxt/DCtk3qqr.js +1 -0
  107. package/.output/public/_nuxt/DD6Z0yPN2.js +1 -0
  108. package/.output/public/_nuxt/DGw8juu_.js +2 -0
  109. package/.output/public/_nuxt/DHSDk8Bq2.js +4 -0
  110. package/.output/public/_nuxt/DJdDFnjG2.js +1 -0
  111. package/.output/public/_nuxt/DJyNDnag.js +1 -0
  112. package/.output/public/_nuxt/DK3Fl9T5.js +1 -0
  113. package/.output/public/_nuxt/DLPuRMeG.js +19 -0
  114. package/.output/public/_nuxt/DMYYS5sK.js +1 -0
  115. package/.output/public/_nuxt/DNno23Jf2.js +1 -0
  116. package/.output/public/_nuxt/DNoEoo8t.js +1 -0
  117. package/.output/public/_nuxt/DPUXbTg92.js +1 -0
  118. package/.output/public/_nuxt/DRpFsrno.js +1 -0
  119. package/.output/public/_nuxt/DXIaadqv.js +1 -0
  120. package/.output/public/_nuxt/D_7AzAWe.js +1 -0
  121. package/.output/public/_nuxt/Dbe9TFc9.js +1 -0
  122. package/.output/public/_nuxt/DdNujZN5.js +1 -0
  123. package/.output/public/_nuxt/DdvQ7LRI.js +14 -0
  124. package/.output/public/_nuxt/DhFv8S2Z.js +1 -0
  125. package/.output/public/_nuxt/DkJVtqfc.js +1 -0
  126. package/.output/public/_nuxt/DkLCjrCk2.js +47 -0
  127. package/.output/public/_nuxt/DkpmSnHX.js +1 -0
  128. package/.output/public/_nuxt/DlUQa0wn2.js +1 -0
  129. package/.output/public/_nuxt/DoKpLEqc.js +1 -0
  130. package/.output/public/_nuxt/DpqA8D8_.js +1 -0
  131. package/.output/public/_nuxt/Dq0emNZi2.js +1 -0
  132. package/.output/public/_nuxt/DqtgGFEc.js +1 -0
  133. package/.output/public/_nuxt/DqtnqNgL2.js +1 -0
  134. package/.output/public/_nuxt/Dqz5HiXa.js +2 -0
  135. package/.output/public/_nuxt/DxagrjB8.js +1 -0
  136. package/.output/public/_nuxt/Dy3oXKdn2.js +1 -0
  137. package/.output/public/_nuxt/DzBbYWrw2.js +1 -0
  138. package/.output/public/_nuxt/EhhQmlBV2.js +1 -0
  139. package/.output/public/_nuxt/H2rNs1O82.js +1 -0
  140. package/.output/public/_nuxt/H6pPjo0l.js +1 -0
  141. package/.output/public/_nuxt/JAM4aNC_.js +1 -0
  142. package/.output/public/_nuxt/JgheoP3e.js +1 -0
  143. package/.output/public/_nuxt/LwIFGLgF.js +1 -0
  144. package/.output/public/_nuxt/Nw_6OpQZ2.js +1 -0
  145. package/.output/public/_nuxt/OXtV_ukR.js +1 -0
  146. package/.output/public/_nuxt/OmpTerminalPanel.ComMDrA8.css +1 -0
  147. package/.output/public/_nuxt/PLGqdko0.js +1 -0
  148. package/.output/public/_nuxt/PixDfCSm.js +1 -0
  149. package/.output/public/_nuxt/RAqsw632.js +1 -0
  150. package/.output/public/_nuxt/Sjjmp5OD2.js +1 -0
  151. package/.output/public/_nuxt/TOWR4WpO.js +1 -0
  152. package/.output/public/_nuxt/TownView.BvlfuLtP.css +1 -0
  153. package/.output/public/_nuxt/U8oQxruK.js +1 -0
  154. package/.output/public/_nuxt/WleoCtUX.js +1 -0
  155. package/.output/public/_nuxt/YaroNkJZ2.js +1 -0
  156. package/.output/public/_nuxt/Z-Z6EhXs.js +1 -0
  157. package/.output/public/_nuxt/ZuQtOnfI.js +1 -0
  158. package/.output/public/_nuxt/ZvXovq7N2.js +1 -0
  159. package/.output/public/_nuxt/_id_.BTrFUIHX.css +1 -0
  160. package/.output/public/_nuxt/_id_.Bossmhv1.css +1 -0
  161. package/.output/public/_nuxt/_wsId_.D-u-dbP9.css +1 -0
  162. package/.output/public/_nuxt/agents.Cgm_JG9L.css +1 -0
  163. package/.output/public/_nuxt/aml.Bi5X6_oi.css +1 -0
  164. package/.output/public/_nuxt/bg2adfck.js +1 -0
  165. package/.output/public/_nuxt/bt__BP-I.js +13 -0
  166. package/.output/public/_nuxt/builds/latest.json +1 -1
  167. package/.output/public/_nuxt/builds/meta/7827fe9f-b4c2-461f-b1fb-c0c7da7d66b8.json +1 -0
  168. package/.output/public/_nuxt/cBI0JqsV2.js +209 -0
  169. package/.output/public/_nuxt/cDcDztgb2.js +1 -0
  170. package/.output/public/_nuxt/cGSl2GZp.js +1 -0
  171. package/.output/public/_nuxt/csitHKnE2.js +1 -0
  172. package/.output/public/_nuxt/d-w5jR8R.js +1 -0
  173. package/.output/public/_nuxt/daq.0uieKcZk.css +1 -0
  174. package/.output/public/_nuxt/dcw.pQRVkAi_.css +1 -0
  175. package/.output/public/_nuxt/default.uao9U50c.css +1 -0
  176. package/.output/public/_nuxt/e7BBCLxr.js +1 -0
  177. package/.output/public/_nuxt/entry.6DEjPWvR.css +1 -0
  178. package/.output/public/_nuxt/eutnXI4F.js +24 -0
  179. package/.output/public/_nuxt/fxWyOzyp2.js +1 -0
  180. package/.output/public/_nuxt/hkMGMTqt.js +1 -0
  181. package/.output/public/_nuxt/ikAUnxx3.js +1 -0
  182. package/.output/public/_nuxt/lWYQbIR3.js +1 -0
  183. package/.output/public/_nuxt/logs.CD0Olr3c.css +1 -0
  184. package/.output/public/_nuxt/monitor.CI2v5Nvl.css +1 -0
  185. package/.output/public/_nuxt/pages.CMhSEhEb.css +1 -0
  186. package/.output/public/_nuxt/permissions.DxuOOIqQ.css +1 -0
  187. package/.output/public/_nuxt/plugins.C50x1qZp.css +1 -0
  188. package/.output/public/_nuxt/qOlYoGLf.js +1 -0
  189. package/.output/public/_nuxt/schedules.BXNJ9q_I.css +1 -0
  190. package/.output/public/_nuxt/settings.Bo5EYkLI.css +1 -0
  191. package/.output/public/_nuxt/teams.sGmx1AdX.css +1 -0
  192. package/.output/public/_nuxt/tokens.DFMFaCYU.css +1 -0
  193. package/.output/public/_nuxt/uI9Ki_XZ.js +9 -0
  194. package/.output/public/_nuxt/users.DBxcKnfg.css +1 -0
  195. package/.output/public/_nuxt/v55S8LnT.js +1 -0
  196. package/.output/public/_nuxt/wDPc4SSR.js +106 -0
  197. package/.output/public/_nuxt/workshop.b4YRXEe0.css +1 -0
  198. package/.output/public/_nuxt/y9kob70X.js +1 -0
  199. package/.output/public/_nuxt/zh-S_7rN.js +1 -0
  200. package/.output/server/chunks/_/LeftOutlined.mjs +1 -1
  201. package/.output/server/chunks/_/SearchOutlined.mjs +1243 -279
  202. package/.output/server/chunks/_/SearchOutlined.mjs.map +1 -1
  203. package/.output/server/chunks/_/binding-authz.mjs +1 -1
  204. package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
  205. package/.output/server/chunks/_/entity.mjs +1 -1
  206. package/.output/server/chunks/_/env-manager.mjs +1 -1
  207. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  208. package/.output/server/chunks/_/nitro.mjs +26927 -19070
  209. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  210. package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
  211. package/.output/server/chunks/build/Checkbox-4EdGAAl_.mjs +206 -0
  212. package/.output/server/chunks/build/Checkbox-4EdGAAl_.mjs.map +1 -0
  213. package/.output/server/chunks/build/FormItemContext-4ORSzhWv.mjs +72 -0
  214. package/.output/server/chunks/build/FormItemContext-4ORSzhWv.mjs.map +1 -0
  215. package/.output/server/chunks/build/OmpTerminalPanel-EQHrOJbw.mjs +942 -0
  216. package/.output/server/chunks/build/OmpTerminalPanel-EQHrOJbw.mjs.map +1 -0
  217. package/.output/server/chunks/build/PluginSlot-BP_qedpQ.mjs +399 -0
  218. package/.output/server/chunks/build/PluginSlot-BP_qedpQ.mjs.map +1 -0
  219. package/.output/server/chunks/build/TownView-BAR8CPIZ.mjs +6373 -0
  220. package/.output/server/chunks/build/TownView-BAR8CPIZ.mjs.map +1 -0
  221. package/.output/server/chunks/build/_id_-DgMpjM3_.mjs +1354 -0
  222. package/.output/server/chunks/build/_id_-DgMpjM3_.mjs.map +1 -0
  223. package/.output/server/chunks/build/_id_-Dv3BQbYV.mjs +388 -0
  224. package/.output/server/chunks/build/_id_-Dv3BQbYV.mjs.map +1 -0
  225. package/.output/server/chunks/build/_wsId_-BKJvFmyf.mjs +13109 -0
  226. package/.output/server/chunks/build/_wsId_-BKJvFmyf.mjs.map +1 -0
  227. package/.output/server/chunks/build/agents-B2GLPmn2.mjs +1085 -0
  228. package/.output/server/chunks/build/agents-B2GLPmn2.mjs.map +1 -0
  229. package/.output/server/chunks/build/aml-DdWicH3t.mjs +806 -0
  230. package/.output/server/chunks/build/aml-DdWicH3t.mjs.map +1 -0
  231. package/.output/server/chunks/build/api-BY6ji7RC.mjs +50 -0
  232. package/.output/server/chunks/build/api-BY6ji7RC.mjs.map +1 -0
  233. package/.output/server/chunks/build/api-error-BwAQLw44.mjs +47 -0
  234. package/.output/server/chunks/build/api-error-BwAQLw44.mjs.map +1 -0
  235. package/.output/server/chunks/build/apiClient-D281qrK2.mjs +81 -0
  236. package/.output/server/chunks/build/apiClient-D281qrK2.mjs.map +1 -0
  237. package/.output/server/chunks/build/builtin-catalog-edpDcgfL.mjs +1 -1
  238. package/.output/server/chunks/build/card-CUSocE9p.mjs +953 -0
  239. package/.output/server/chunks/build/card-CUSocE9p.mjs.map +1 -0
  240. package/.output/server/chunks/build/channel-templates-RPOtkgRf.mjs +846 -0
  241. package/.output/server/chunks/build/channel-templates-RPOtkgRf.mjs.map +1 -0
  242. package/.output/server/chunks/build/checkbox-C4AKj81e.mjs +439 -0
  243. package/.output/server/chunks/build/checkbox-C4AKj81e.mjs.map +1 -0
  244. package/.output/server/chunks/build/client-only-qNA2OVV_.mjs +43 -0
  245. package/.output/server/chunks/build/client-only-qNA2OVV_.mjs.map +1 -0
  246. package/.output/server/chunks/build/constants-HPHJvjne.mjs +139 -0
  247. package/.output/server/chunks/build/constants-HPHJvjne.mjs.map +1 -0
  248. package/.output/server/chunks/build/core-CgTOPS4t.mjs +294 -0
  249. package/.output/server/chunks/build/core-CgTOPS4t.mjs.map +1 -0
  250. package/.output/server/chunks/build/daq-CPtsh0e7.mjs +1253 -0
  251. package/.output/server/chunks/build/daq-CPtsh0e7.mjs.map +1 -0
  252. package/.output/server/chunks/build/dcw-ry5Gyw6Y.mjs +478 -0
  253. package/.output/server/chunks/build/dcw-ry5Gyw6Y.mjs.map +1 -0
  254. package/.output/server/chunks/build/default-DxOE1eB0.mjs +2061 -0
  255. package/.output/server/chunks/build/default-DxOE1eB0.mjs.map +1 -0
  256. package/.output/server/chunks/build/descriptions-CFaUq4y4.mjs +406 -0
  257. package/.output/server/chunks/build/descriptions-CFaUq4y4.mjs.map +1 -0
  258. package/.output/server/chunks/build/drawer-Cfh9_zft.mjs +834 -0
  259. package/.output/server/chunks/build/drawer-Cfh9_zft.mjs.map +1 -0
  260. package/.output/server/chunks/build/dropdown-KdKWCS5K.mjs +556 -0
  261. package/.output/server/chunks/build/dropdown-KdKWCS5K.mjs.map +1 -0
  262. package/.output/server/chunks/build/dropdown-Yev6knaj.mjs +14 -0
  263. package/.output/server/chunks/build/dropdown-Yev6knaj.mjs.map +1 -0
  264. package/.output/server/chunks/build/form-uSlNqIAV.mjs +4711 -0
  265. package/.output/server/chunks/build/form-uSlNqIAV.mjs.map +1 -0
  266. package/.output/server/chunks/build/input-Cr_KFj4T.mjs +1381 -0
  267. package/.output/server/chunks/build/input-Cr_KFj4T.mjs.map +1 -0
  268. package/.output/server/chunks/build/input-number-BRVnxeiA.mjs +1119 -0
  269. package/.output/server/chunks/build/input-number-BRVnxeiA.mjs.map +1 -0
  270. package/.output/server/chunks/build/interval-DvHBIIZh.mjs +9 -0
  271. package/.output/server/chunks/build/interval-DvHBIIZh.mjs.map +1 -0
  272. package/.output/server/chunks/build/logs-CeaiO3y9.mjs +367 -0
  273. package/.output/server/chunks/build/logs-CeaiO3y9.mjs.map +1 -0
  274. package/.output/server/chunks/build/menu-BgkRSSx7.mjs +1949 -0
  275. package/.output/server/chunks/build/menu-BgkRSSx7.mjs.map +1 -0
  276. package/.output/server/chunks/build/monitor-DnuXEIi5.mjs +2245 -0
  277. package/.output/server/chunks/build/monitor-DnuXEIi5.mjs.map +1 -0
  278. package/.output/server/chunks/build/narrow-fetch-CcG-BPxc.mjs +6 -0
  279. package/.output/server/chunks/build/narrow-fetch-CcG-BPxc.mjs.map +1 -0
  280. package/.output/server/chunks/build/pages-Bn90ijKD.mjs +539 -0
  281. package/.output/server/chunks/build/pages-Bn90ijKD.mjs.map +1 -0
  282. package/.output/server/chunks/build/permissions-DL70W1YD.mjs +629 -0
  283. package/.output/server/chunks/build/permissions-DL70W1YD.mjs.map +1 -0
  284. package/.output/server/chunks/build/plugins-DrsZo--K.mjs +246 -0
  285. package/.output/server/chunks/build/plugins-DrsZo--K.mjs.map +1 -0
  286. package/.output/server/chunks/build/popconfirm-Ox-_2V8A.mjs +339 -0
  287. package/.output/server/chunks/build/popconfirm-Ox-_2V8A.mjs.map +1 -0
  288. package/.output/server/chunks/build/schedules-VLzNcjnW.mjs +7164 -0
  289. package/.output/server/chunks/build/schedules-VLzNcjnW.mjs.map +1 -0
  290. package/.output/server/chunks/build/segmented-C61yLHvo.mjs +341 -0
  291. package/.output/server/chunks/build/segmented-C61yLHvo.mjs.map +1 -0
  292. package/.output/server/chunks/build/select-rdBWytVK.mjs +3922 -0
  293. package/.output/server/chunks/build/select-rdBWytVK.mjs.map +1 -0
  294. package/.output/server/chunks/build/settings-DVAUVMsX.mjs +1089 -0
  295. package/.output/server/chunks/build/settings-DVAUVMsX.mjs.map +1 -0
  296. package/.output/server/chunks/build/space-B2uhHJG8.mjs +110 -0
  297. package/.output/server/chunks/build/space-B2uhHJG8.mjs.map +1 -0
  298. package/.output/server/chunks/build/spin-C2cuvGth.mjs +357 -0
  299. package/.output/server/chunks/build/spin-C2cuvGth.mjs.map +1 -0
  300. package/.output/server/chunks/build/switch-DZAUIbIN.mjs +377 -0
  301. package/.output/server/chunks/build/switch-DZAUIbIN.mjs.map +1 -0
  302. package/.output/server/chunks/build/table-DOFAvY-v.mjs +8881 -0
  303. package/.output/server/chunks/build/table-DOFAvY-v.mjs.map +1 -0
  304. package/.output/server/chunks/build/tabs-DTeIuZeP.mjs +1923 -0
  305. package/.output/server/chunks/build/tabs-DTeIuZeP.mjs.map +1 -0
  306. package/.output/server/chunks/build/tag-CHLGvNM6.mjs +1029 -0
  307. package/.output/server/chunks/build/tag-CHLGvNM6.mjs.map +1 -0
  308. package/.output/server/chunks/build/teams-Mc07PYO8.mjs +1195 -0
  309. package/.output/server/chunks/build/teams-Mc07PYO8.mjs.map +1 -0
  310. package/.output/server/chunks/build/tokens-DiwD5qni.mjs +1036 -0
  311. package/.output/server/chunks/build/tokens-DiwD5qni.mjs.map +1 -0
  312. package/.output/server/chunks/build/town-BIn3be5v.mjs +39 -0
  313. package/.output/server/chunks/build/town-BIn3be5v.mjs.map +1 -0
  314. package/.output/server/chunks/build/town-D8VmTCmN.mjs +128 -0
  315. package/.output/server/chunks/build/town-D8VmTCmN.mjs.map +1 -0
  316. package/.output/server/chunks/build/types-D6J7slEa.mjs +5561 -0
  317. package/.output/server/chunks/build/types-D6J7slEa.mjs.map +1 -0
  318. package/.output/server/chunks/build/useAgentHarnessOptions-CPn5dzKe.mjs +121 -0
  319. package/.output/server/chunks/build/useAgentHarnessOptions-CPn5dzKe.mjs.map +1 -0
  320. package/.output/server/chunks/build/useAgentTemplateActions-DQWzVnZ0.mjs +74 -0
  321. package/.output/server/chunks/build/useAgentTemplateActions-DQWzVnZ0.mjs.map +1 -0
  322. package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs +64 -0
  323. package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs.map +1 -0
  324. package/.output/server/chunks/build/useAgentTemplateForm-vqyiRPtt.mjs +114 -0
  325. package/.output/server/chunks/build/useAgentTemplateForm-vqyiRPtt.mjs.map +1 -0
  326. package/.output/server/chunks/build/useAgentTemplatesCatalog-DcQbsOik.mjs +130 -0
  327. package/.output/server/chunks/build/useAgentTemplatesCatalog-DcQbsOik.mjs.map +1 -0
  328. package/.output/server/chunks/build/useAmlDatasets-BM0lZu40.mjs +89 -0
  329. package/.output/server/chunks/build/useAmlDatasets-BM0lZu40.mjs.map +1 -0
  330. package/.output/server/chunks/build/useAmlEntities-BjXWvFd_.mjs +83 -0
  331. package/.output/server/chunks/build/useAmlEntities-BjXWvFd_.mjs.map +1 -0
  332. package/.output/server/chunks/build/useAmlEnv-BB7p6x_w.mjs +191 -0
  333. package/.output/server/chunks/build/useAmlEnv-BB7p6x_w.mjs.map +1 -0
  334. package/.output/server/chunks/build/useAmlExperiments-BtyW32PO.mjs +86 -0
  335. package/.output/server/chunks/build/useAmlExperiments-BtyW32PO.mjs.map +1 -0
  336. package/.output/server/chunks/build/useAmlFormat-WrKuRfw2.mjs +79 -0
  337. package/.output/server/chunks/build/useAmlFormat-WrKuRfw2.mjs.map +1 -0
  338. package/.output/server/chunks/build/useAmlJobs-DBuLvWMF.mjs +263 -0
  339. package/.output/server/chunks/build/useAmlJobs-DBuLvWMF.mjs.map +1 -0
  340. package/.output/server/chunks/build/useAmlModels-VurmkBYe.mjs +90 -0
  341. package/.output/server/chunks/build/useAmlModels-VurmkBYe.mjs.map +1 -0
  342. package/.output/server/chunks/build/useAmlNotes-BUdj3X6Y.mjs +83 -0
  343. package/.output/server/chunks/build/useAmlNotes-BUdj3X6Y.mjs.map +1 -0
  344. package/.output/server/chunks/build/useAmlPredict-DFy-Do10.mjs +127 -0
  345. package/.output/server/chunks/build/useAmlPredict-DFy-Do10.mjs.map +1 -0
  346. package/.output/server/chunks/build/useDaqAddNode-kW7uTSMQ.mjs +139 -0
  347. package/.output/server/chunks/build/useDaqAddNode-kW7uTSMQ.mjs.map +1 -0
  348. package/.output/server/chunks/build/useDaqDetailBinding-cpBz4hSL.mjs +67 -0
  349. package/.output/server/chunks/build/useDaqDetailBinding-cpBz4hSL.mjs.map +1 -0
  350. package/.output/server/chunks/build/useDaqDetailFrames-BZGtKKXW.mjs +76 -0
  351. package/.output/server/chunks/build/useDaqDetailFrames-BZGtKKXW.mjs.map +1 -0
  352. package/.output/server/chunks/build/useDaqDetailHistory-C4_hVeqZ.mjs +173 -0
  353. package/.output/server/chunks/build/useDaqDetailHistory-C4_hVeqZ.mjs.map +1 -0
  354. package/.output/server/chunks/build/useDaqDetailNode-Bwid_iA8.mjs +96 -0
  355. package/.output/server/chunks/build/useDaqDetailNode-Bwid_iA8.mjs.map +1 -0
  356. package/.output/server/chunks/build/useDaqDetailParams-JfqHvTxr.mjs +156 -0
  357. package/.output/server/chunks/build/useDaqDetailParams-JfqHvTxr.mjs.map +1 -0
  358. package/.output/server/chunks/build/useDaqFilters-C13836p-.mjs +219 -0
  359. package/.output/server/chunks/build/useDaqFilters-C13836p-.mjs.map +1 -0
  360. package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs +87 -0
  361. package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs.map +1 -0
  362. package/.output/server/chunks/build/useDaqOptimizations-Ct-TSXxy.mjs +133 -0
  363. package/.output/server/chunks/build/useDaqOptimizations-Ct-TSXxy.mjs.map +1 -0
  364. package/.output/server/chunks/build/useDaqStream-wOxZcMDA.mjs +395 -0
  365. package/.output/server/chunks/build/useDaqStream-wOxZcMDA.mjs.map +1 -0
  366. package/.output/server/chunks/build/useDaqTemplates-BqQRdrIm.mjs +184 -0
  367. package/.output/server/chunks/build/useDaqTemplates-BqQRdrIm.mjs.map +1 -0
  368. package/.output/server/chunks/build/useDashboardCharts-DZysNDUX.mjs +351 -0
  369. package/.output/server/chunks/build/useDashboardCharts-DZysNDUX.mjs.map +1 -0
  370. package/.output/server/chunks/build/useDashboardData-Ny_wtbo6.mjs +150 -0
  371. package/.output/server/chunks/build/useDashboardData-Ny_wtbo6.mjs.map +1 -0
  372. package/.output/server/chunks/build/useDcwAddNode-C8nE7geh.mjs +148 -0
  373. package/.output/server/chunks/build/useDcwAddNode-C8nE7geh.mjs.map +1 -0
  374. package/.output/server/chunks/build/useDcwCards-ETEsHvVy.mjs +64 -0
  375. package/.output/server/chunks/build/useDcwCards-ETEsHvVy.mjs.map +1 -0
  376. package/.output/server/chunks/build/useDcwDetailScope-BNrpDzbO.mjs +181 -0
  377. package/.output/server/chunks/build/useDcwDetailScope-BNrpDzbO.mjs.map +1 -0
  378. package/.output/server/chunks/build/useDcwDetailTemplates-IcKAJ37Y.mjs +145 -0
  379. package/.output/server/chunks/build/useDcwDetailTemplates-IcKAJ37Y.mjs.map +1 -0
  380. package/.output/server/chunks/build/useDcwFilter-FfVlDdyS.mjs +68 -0
  381. package/.output/server/chunks/build/useDcwFilter-FfVlDdyS.mjs.map +1 -0
  382. package/.output/server/chunks/build/useDcwLedger-BLoMmcu1.mjs +76 -0
  383. package/.output/server/chunks/build/useDcwLedger-BLoMmcu1.mjs.map +1 -0
  384. package/.output/server/chunks/build/useDcwLineMutations-BMC5BTWU.mjs +134 -0
  385. package/.output/server/chunks/build/useDcwLineMutations-BMC5BTWU.mjs.map +1 -0
  386. package/.output/server/chunks/build/useDcwLineRun-Bpxk4mse.mjs +101 -0
  387. package/.output/server/chunks/build/useDcwLineRun-Bpxk4mse.mjs.map +1 -0
  388. package/.output/server/chunks/build/useDcwProducts-D-zrMaeV.mjs +90 -0
  389. package/.output/server/chunks/build/useDcwProducts-D-zrMaeV.mjs.map +1 -0
  390. package/.output/server/chunks/build/useDcwQuery-1lYHOaU6.mjs +95 -0
  391. package/.output/server/chunks/build/useDcwQuery-1lYHOaU6.mjs.map +1 -0
  392. package/.output/server/chunks/build/useDcwQuickActions-C-tgcXIr.mjs +85 -0
  393. package/.output/server/chunks/build/useDcwQuickActions-C-tgcXIr.mjs.map +1 -0
  394. package/.output/server/chunks/build/useDcwRecipes-BzGOymqz.mjs +237 -0
  395. package/.output/server/chunks/build/useDcwRecipes-BzGOymqz.mjs.map +1 -0
  396. package/.output/server/chunks/build/useDcwStream-D04kCV3J.mjs +435 -0
  397. package/.output/server/chunks/build/useDcwStream-D04kCV3J.mjs.map +1 -0
  398. package/.output/server/chunks/build/useDcwTemplates-Dsjw9u6U.mjs +88 -0
  399. package/.output/server/chunks/build/useDcwTemplates-Dsjw9u6U.mjs.map +1 -0
  400. package/.output/server/chunks/build/useDcwWrites-3RxwN36I.mjs +120 -0
  401. package/.output/server/chunks/build/useDcwWrites-3RxwN36I.mjs.map +1 -0
  402. package/.output/server/chunks/build/useDeviceTwins-CbVad1M3.mjs +128 -0
  403. package/.output/server/chunks/build/useDeviceTwins-CbVad1M3.mjs.map +1 -0
  404. package/.output/server/chunks/build/useLocalTime-9a4B-aHv.mjs +1 -8
  405. package/.output/server/chunks/build/useLocalTime-9a4B-aHv.mjs.map +1 -1
  406. package/.output/server/chunks/build/useLogsFormat-BlwLpyzy.mjs +74 -0
  407. package/.output/server/chunks/build/useLogsFormat-BlwLpyzy.mjs.map +1 -0
  408. package/.output/server/chunks/build/useLogsManual-Deev2Cjk.mjs +81 -0
  409. package/.output/server/chunks/build/useLogsManual-Deev2Cjk.mjs.map +1 -0
  410. package/.output/server/chunks/build/useLogsQuery-CRAm2hmS.mjs +112 -0
  411. package/.output/server/chunks/build/useLogsQuery-CRAm2hmS.mjs.map +1 -0
  412. package/.output/server/chunks/build/useLogsScope-ClNijVj4.mjs +80 -0
  413. package/.output/server/chunks/build/useLogsScope-ClNijVj4.mjs.map +1 -0
  414. package/.output/server/chunks/build/useMonitorColumns-ylxrUNTK.mjs +212 -0
  415. package/.output/server/chunks/build/useMonitorColumns-ylxrUNTK.mjs.map +1 -0
  416. package/.output/server/chunks/build/useMonitorData-CEpKXoD4.mjs +131 -0
  417. package/.output/server/chunks/build/useMonitorData-CEpKXoD4.mjs.map +1 -0
  418. package/.output/server/chunks/build/useMonitorFormat-_7zLapf3.mjs +87 -0
  419. package/.output/server/chunks/build/useMonitorFormat-_7zLapf3.mjs.map +1 -0
  420. package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs +68 -0
  421. package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs.map +1 -0
  422. package/.output/server/chunks/build/useOpsLog-CgnNG7_n.mjs +137 -0
  423. package/.output/server/chunks/build/useOpsLog-CgnNG7_n.mjs.map +1 -0
  424. package/.output/server/chunks/build/useTeamActions-D6sxdpkP.mjs +76 -0
  425. package/.output/server/chunks/build/useTeamActions-D6sxdpkP.mjs.map +1 -0
  426. package/.output/server/chunks/build/useTeamAddMemberDialog-Q-ntQ6Vo.mjs +81 -0
  427. package/.output/server/chunks/build/useTeamAddMemberDialog-Q-ntQ6Vo.mjs.map +1 -0
  428. package/.output/server/chunks/build/useTeamCreateDialog-D7OMfDTM.mjs +94 -0
  429. package/.output/server/chunks/build/useTeamCreateDialog-D7OMfDTM.mjs.map +1 -0
  430. package/.output/server/chunks/build/useTeamDeployDialog-vBRqjiut.mjs +77 -0
  431. package/.output/server/chunks/build/useTeamDeployDialog-vBRqjiut.mjs.map +1 -0
  432. package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs +79 -0
  433. package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs.map +1 -0
  434. package/.output/server/chunks/build/useTeamPluginDialog-B8kxewpZ.mjs +100 -0
  435. package/.output/server/chunks/build/useTeamPluginDialog-B8kxewpZ.mjs.map +1 -0
  436. package/.output/server/chunks/build/useTeamsCatalog-xRhk7ezA.mjs +120 -0
  437. package/.output/server/chunks/build/useTeamsCatalog-xRhk7ezA.mjs.map +1 -0
  438. package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs +69 -0
  439. package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs.map +1 -0
  440. package/.output/server/chunks/build/useTokenCreate-DpDcF1Vx.mjs +112 -0
  441. package/.output/server/chunks/build/useTokenCreate-DpDcF1Vx.mjs.map +1 -0
  442. package/.output/server/chunks/build/useTokenRename-BRejFrtc.mjs +84 -0
  443. package/.output/server/chunks/build/useTokenRename-BRejFrtc.mjs.map +1 -0
  444. package/.output/server/chunks/build/useTokenReveal-DER2afAS.mjs +115 -0
  445. package/.output/server/chunks/build/useTokenReveal-DER2afAS.mjs.map +1 -0
  446. package/.output/server/chunks/build/useTokensList-DHt65IOY.mjs +89 -0
  447. package/.output/server/chunks/build/useTokensList-DHt65IOY.mjs.map +1 -0
  448. package/.output/server/chunks/build/useWorkbenchAuth-B2j-zILO.mjs +135 -0
  449. package/.output/server/chunks/build/useWorkbenchAuth-B2j-zILO.mjs.map +1 -0
  450. package/.output/server/chunks/build/useWorkbenchWorkspaces-B_2mOxN6.mjs +133 -0
  451. package/.output/server/chunks/build/useWorkbenchWorkspaces-B_2mOxN6.mjs.map +1 -0
  452. package/.output/server/chunks/build/useWorkshopApi-B1B9vd4m.mjs +102 -0
  453. package/.output/server/chunks/build/useWorkshopApi-B1B9vd4m.mjs.map +1 -0
  454. package/.output/server/chunks/build/useWorkshopWs-B-Es2Xg3.mjs +1782 -0
  455. package/.output/server/chunks/build/useWorkshopWs-B-Es2Xg3.mjs.map +1 -0
  456. package/.output/server/chunks/build/useWorkspaceAuth-tQ1ORWXo.mjs +57 -0
  457. package/.output/server/chunks/build/useWorkspaceAuth-tQ1ORWXo.mjs.map +1 -0
  458. package/.output/server/chunks/build/useWorkspaceChannels-BwB6TAWY.mjs +87 -0
  459. package/.output/server/chunks/build/useWorkspaceChannels-BwB6TAWY.mjs.map +1 -0
  460. package/.output/server/chunks/build/useWorkspacePanels-CuAmDpT5.mjs +75 -0
  461. package/.output/server/chunks/build/useWorkspacePanels-CuAmDpT5.mjs.map +1 -0
  462. package/.output/server/chunks/build/useWorkspaceShell-CcQ4JlqO.mjs +165 -0
  463. package/.output/server/chunks/build/useWorkspaceShell-CcQ4JlqO.mjs.map +1 -0
  464. package/.output/server/chunks/build/users-De2HygNt.mjs +561 -0
  465. package/.output/server/chunks/build/users-De2HygNt.mjs.map +1 -0
  466. package/.output/server/chunks/build/workshop-CmgpTwyf.mjs +1018 -0
  467. package/.output/server/chunks/build/workshop-CmgpTwyf.mjs.map +1 -0
  468. package/.output/server/chunks/build/workspaces-DVIEk1Bl.mjs +139 -0
  469. package/.output/server/chunks/build/workspaces-DVIEk1Bl.mjs.map +1 -0
  470. package/.output/server/chunks/routes/api/health.get.mjs +2 -2
  471. package/.output/server/chunks/routes/api/index.get.mjs +2 -2
  472. package/.output/server/chunks/routes/api/index.post.mjs +2 -2
  473. package/.output/server/chunks/routes/api/mcp/workshop.mjs +2 -2
  474. package/.output/server/chunks/routes/api/metrics.mjs +2 -2
  475. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +2 -2
  476. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +2 -2
  477. package/.output/server/chunks/routes/api/plugins/i18n.get.mjs +2 -2
  478. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +2 -2
  479. package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs +2 -2
  480. package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs +2 -2
  481. package/.output/server/chunks/routes/api/system/config.get.mjs +2 -2
  482. package/.output/server/chunks/routes/api/system/index.get.mjs +2 -2
  483. package/.output/server/chunks/routes/api/system/index.patch.mjs +2 -2
  484. package/.output/server/chunks/routes/api/system/index.post.mjs +2 -2
  485. package/.output/server/chunks/routes/api/system/index2.get.mjs +2 -2
  486. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +35 -4
  487. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs.map +1 -1
  488. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +2 -2
  489. package/.output/server/chunks/routes/api/system/monitor.get.mjs +2 -2
  490. package/.output/server/chunks/routes/api/system/settings/events.get.mjs +2 -2
  491. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +2 -2
  492. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +2 -2
  493. package/.output/server/chunks/routes/api/users/_id_.get.mjs +2 -2
  494. package/.output/server/chunks/routes/api/users/_id_.put.mjs +2 -2
  495. package/.output/server/chunks/routes/api/users/index.get.mjs +2 -2
  496. package/.output/server/chunks/routes/api/users/index.post.mjs +2 -2
  497. package/.output/server/chunks/routes/api/users/login.post.mjs +2 -2
  498. package/.output/server/chunks/routes/api/users/logout.post.mjs +2 -2
  499. package/.output/server/chunks/routes/api/users/me.get.mjs +2 -2
  500. package/.output/server/chunks/routes/api/users/register.post.mjs +2 -2
  501. package/.output/server/chunks/routes/api/users/setup-status.get.mjs +2 -2
  502. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +2 -2
  503. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +2 -2
  504. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +2 -2
  505. package/.output/server/chunks/routes/api/workshop/_...path_.mjs +2 -2
  506. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +2 -2
  507. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +2 -2
  508. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +2 -2
  509. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +38 -6
  510. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs.map +1 -1
  511. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +2 -2
  512. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +2 -2
  513. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +14 -5
  514. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs.map +1 -1
  515. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +2 -2
  516. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +2 -2
  517. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +2 -2
  518. package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +2 -2
  519. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +2 -2
  520. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +2 -2
  521. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +2 -2
  522. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +2 -2
  523. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs +1 -1
  524. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs +2 -2
  525. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +2 -2
  526. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs +2 -2
  527. package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs +2 -2
  528. package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs +2 -2
  529. package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs +2 -2
  530. package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs +2 -2
  531. package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs +2 -2
  532. package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs +2 -2
  533. package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs +2 -2
  534. package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs +2 -2
  535. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs +2 -2
  536. package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs +2 -2
  537. package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs +2 -2
  538. package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs +2 -2
  539. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs +2 -2
  540. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs +2 -2
  541. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs +2 -2
  542. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs +2 -2
  543. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs +2 -2
  544. package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs +2 -2
  545. package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs +2 -2
  546. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs +2 -2
  547. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs +2 -2
  548. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +2 -2
  549. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +1 -1
  550. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +1 -1
  551. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +2 -2
  552. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +1 -1
  553. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +1 -1
  554. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +1 -1
  555. package/.output/server/chunks/routes/api/workshop/audit.get.mjs +2 -2
  556. package/.output/server/chunks/routes/api/workshop/caller.mjs +2 -2
  557. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +10 -5
  558. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs.map +1 -1
  559. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +2 -2
  560. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +2 -2
  561. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +2 -2
  562. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +2 -2
  563. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +2 -2
  564. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +2 -2
  565. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +2 -2
  566. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +2 -2
  567. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +2 -2
  568. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +2 -2
  569. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +2 -2
  570. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +2 -2
  571. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +2 -2
  572. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +2 -2
  573. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +2 -2
  574. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.get.mjs +41 -0
  575. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.get.mjs.map +1 -0
  576. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs +52 -0
  577. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs.map +1 -0
  578. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/messages/_messageId/read.post.mjs +33 -0
  579. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/messages/_messageId/read.post.mjs.map +1 -0
  580. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/permissions.get.mjs +48 -0
  581. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/permissions.get.mjs.map +1 -0
  582. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +2 -2
  583. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +2 -2
  584. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +2 -2
  585. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +2 -2
  586. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +10 -14
  587. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs.map +1 -1
  588. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +2 -2
  589. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +15 -28
  590. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs.map +1 -1
  591. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +3 -2
  592. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs.map +1 -1
  593. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +29 -23
  594. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs.map +1 -1
  595. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +9 -4
  596. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs.map +1 -1
  597. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs +22 -10
  598. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs.map +1 -1
  599. package/.output/server/chunks/routes/api/workshop/channels/_id/index6.get.mjs +34 -0
  600. package/.output/server/chunks/routes/api/workshop/channels/_id/index6.get.mjs.map +1 -0
  601. package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId/approve.post.mjs +33 -0
  602. package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId/approve.post.mjs.map +1 -0
  603. package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId_.delete.mjs +34 -0
  604. package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId_.delete.mjs.map +1 -0
  605. package/.output/server/chunks/routes/api/workshop/channels/_id/members/join.post.mjs +35 -0
  606. package/.output/server/chunks/routes/api/workshop/channels/_id/members/join.post.mjs.map +1 -0
  607. package/.output/server/chunks/routes/api/workshop/channels/_id/members/leave.post.mjs +33 -0
  608. package/.output/server/chunks/routes/api/workshop/channels/_id/members/leave.post.mjs.map +1 -0
  609. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +2 -2
  610. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +2 -2
  611. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +2 -2
  612. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +2 -2
  613. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +2 -2
  614. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +22 -6
  615. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs.map +1 -1
  616. package/.output/server/chunks/routes/api/workshop/channels.get.mjs +21 -3
  617. package/.output/server/chunks/routes/api/workshop/channels.get.mjs.map +1 -1
  618. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +5 -5
  619. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +2 -2
  620. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +2 -2
  621. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +2 -2
  622. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +2 -2
  623. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +2 -2
  624. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +2 -2
  625. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +2 -2
  626. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +2 -2
  627. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +2 -2
  628. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +2 -2
  629. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +2 -2
  630. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +2 -2
  631. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +2 -2
  632. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +2 -2
  633. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +2 -2
  634. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +2 -2
  635. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +2 -2
  636. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +2 -2
  637. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +2 -2
  638. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +2 -2
  639. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +2 -2
  640. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +2 -2
  641. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +2 -2
  642. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +2 -2
  643. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +2 -2
  644. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +2 -2
  645. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +2 -2
  646. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +2 -2
  647. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +2 -2
  648. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +2 -2
  649. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +2 -2
  650. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +2 -2
  651. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +2 -2
  652. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +2 -2
  653. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +2 -2
  654. package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs +2 -2
  655. package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +2 -2
  656. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +2 -2
  657. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +2 -2
  658. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +2 -2
  659. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +2 -2
  660. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +2 -2
  661. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +2 -2
  662. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +2 -2
  663. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +2 -2
  664. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +2 -2
  665. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +2 -2
  666. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +2 -2
  667. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs +2 -2
  668. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +2 -2
  669. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +2 -2
  670. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +2 -2
  671. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +2 -2
  672. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +2 -2
  673. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +2 -2
  674. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs +2 -2
  675. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +2 -2
  676. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs +2 -2
  677. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +2 -2
  678. package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs +2 -2
  679. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +2 -2
  680. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +2 -2
  681. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +2 -2
  682. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +2 -2
  683. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +2 -2
  684. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +2 -2
  685. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +2 -2
  686. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +2 -2
  687. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +2 -2
  688. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +2 -2
  689. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +1 -1
  690. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +2 -2
  691. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +2 -2
  692. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +11 -4
  693. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs.map +1 -1
  694. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +28 -36
  695. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs.map +1 -1
  696. package/.output/server/chunks/routes/api/workshop/index.get.mjs +2 -2
  697. package/.output/server/chunks/routes/api/workshop/index.post.mjs +2 -2
  698. package/.output/server/chunks/routes/api/workshop/index.put.mjs +2 -2
  699. package/.output/server/chunks/routes/api/workshop/index10.get.mjs +26 -12
  700. package/.output/server/chunks/routes/api/workshop/index10.get.mjs.map +1 -1
  701. package/.output/server/chunks/routes/api/workshop/index11.get.mjs +12 -7
  702. package/.output/server/chunks/routes/api/workshop/index11.get.mjs.map +1 -1
  703. package/.output/server/chunks/routes/api/workshop/index12.get.mjs +3 -3
  704. package/.output/server/chunks/routes/api/workshop/index12.get.mjs.map +1 -1
  705. package/.output/server/chunks/routes/api/workshop/index13.get.mjs +29 -0
  706. package/.output/server/chunks/routes/api/workshop/index13.get.mjs.map +1 -0
  707. package/.output/server/chunks/routes/api/workshop/index14.get.mjs +28 -0
  708. package/.output/server/chunks/routes/api/workshop/index14.get.mjs.map +1 -0
  709. package/.output/server/chunks/routes/api/workshop/index2.get.mjs +2 -2
  710. package/.output/server/chunks/routes/api/workshop/index2.post.mjs +2 -2
  711. package/.output/server/chunks/routes/api/workshop/index3.get.mjs +2 -2
  712. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +2 -2
  713. package/.output/server/chunks/routes/api/workshop/index4.get.mjs +2 -2
  714. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +2 -2
  715. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +2 -2
  716. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +2 -2
  717. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +2 -2
  718. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +2 -2
  719. package/.output/server/chunks/routes/api/workshop/index7.get.mjs +2 -2
  720. package/.output/server/chunks/routes/api/workshop/index7.post.mjs +14 -16
  721. package/.output/server/chunks/routes/api/workshop/index7.post.mjs.map +1 -1
  722. package/.output/server/chunks/routes/api/workshop/index8.get.mjs +40 -19
  723. package/.output/server/chunks/routes/api/workshop/index8.get.mjs.map +1 -1
  724. package/.output/server/chunks/routes/api/workshop/index8.post.mjs +19 -5
  725. package/.output/server/chunks/routes/api/workshop/index8.post.mjs.map +1 -1
  726. package/.output/server/chunks/routes/api/workshop/index9.get.mjs +20 -24
  727. package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
  728. package/.output/server/chunks/routes/api/workshop/index9.post.mjs +30 -0
  729. package/.output/server/chunks/routes/api/workshop/index9.post.mjs.map +1 -0
  730. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +2 -2
  731. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +2 -2
  732. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +2 -2
  733. package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs +41 -0
  734. package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs.map +1 -0
  735. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +2 -2
  736. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +2 -2
  737. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +2 -2
  738. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +2 -2
  739. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +2 -2
  740. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +2 -2
  741. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +2 -2
  742. package/.output/server/chunks/routes/api/workshop/schedules/_id/run.post.mjs +29 -0
  743. package/.output/server/chunks/routes/api/workshop/schedules/_id/run.post.mjs.map +1 -0
  744. package/.output/server/chunks/routes/api/workshop/schedules/_id/runs.get.mjs +31 -0
  745. package/.output/server/chunks/routes/api/workshop/schedules/_id/runs.get.mjs.map +1 -0
  746. package/.output/server/chunks/routes/api/workshop/schedules/_id_.delete.mjs +30 -0
  747. package/.output/server/chunks/routes/api/workshop/schedules/_id_.delete.mjs.map +1 -0
  748. package/.output/server/chunks/routes/api/workshop/schedules/_id_.get.mjs +29 -0
  749. package/.output/server/chunks/routes/api/workshop/schedules/_id_.get.mjs.map +1 -0
  750. package/.output/server/chunks/routes/api/workshop/schedules/_id_.patch.mjs +40 -0
  751. package/.output/server/chunks/routes/api/workshop/schedules/_id_.patch.mjs.map +1 -0
  752. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +2 -2
  753. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +2 -2
  754. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +2 -2
  755. package/.output/server/chunks/routes/api/workshop/tasks/_id/reassign.post.mjs +39 -0
  756. package/.output/server/chunks/routes/api/workshop/tasks/_id/reassign.post.mjs.map +1 -0
  757. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +2 -2
  758. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +2 -2
  759. package/.output/server/chunks/routes/api/workshop/tasks/_id/update.post.mjs +44 -0
  760. package/.output/server/chunks/routes/api/workshop/tasks/_id/update.post.mjs.map +1 -0
  761. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +9 -5
  762. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs.map +1 -1
  763. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +2 -2
  764. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +2 -2
  765. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +2 -2
  766. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +2 -2
  767. package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs +2 -2
  768. package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs +2 -2
  769. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +2 -2
  770. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +2 -2
  771. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +2 -2
  772. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +2 -2
  773. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +2 -2
  774. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +2 -2
  775. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +3 -3
  776. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +2 -2
  777. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +2 -2
  778. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +2 -2
  779. package/.output/server/chunks/routes/renderer.mjs +3 -3
  780. package/.output/server/chunks/virtual/entry.mjs +6055 -1624
  781. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  782. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  783. package/.output/server/index.mjs +15 -5549
  784. package/.output/server/index.mjs.map +1 -1
  785. package/.output/server/package.json +1 -1
  786. package/README-zh.md +102 -48
  787. package/README.md +105 -38
  788. package/app/components/AppHeader.vue +26 -703
  789. package/app/components/aml/AmlDatasetFormModal.vue +279 -0
  790. package/app/components/aml/AmlDatasetTable.vue +319 -0
  791. package/app/components/aml/AmlEnvPanel.vue +230 -0
  792. package/app/components/aml/AmlExperimentsTable.vue +142 -0
  793. package/app/components/aml/AmlInfraBanner.vue +23 -0
  794. package/app/components/aml/AmlJobsTable.vue +248 -0
  795. package/app/components/aml/AmlModelsTable.vue +173 -0
  796. package/app/components/aml/AmlOverviewBar.vue +62 -0
  797. package/app/components/aml/AmlPageHeader.vue +47 -0
  798. package/app/components/aml/AmlPredictConsole.vue +201 -0
  799. package/app/components/app-header/HeaderTools.vue +208 -0
  800. package/app/components/app-header/HitlBell.vue +423 -0
  801. package/app/components/app-header/TrailNav.vue +261 -0
  802. package/app/components/app-header/UserChip.vue +150 -0
  803. package/app/components/daq/DaqAddNodeModal.vue +209 -0
  804. package/app/components/daq/DaqAlarmBar.vue +46 -0
  805. package/app/components/daq/DaqControlCard.vue +159 -0
  806. package/app/components/daq/DaqDetailFramesTile.vue +139 -0
  807. package/app/components/daq/DaqDetailHistoryCard.vue +128 -0
  808. package/app/components/daq/DaqDetailLiveCard.vue +92 -0
  809. package/app/components/daq/DaqDetailParamForm.vue +350 -0
  810. package/app/components/daq/DaqInfraBanner.vue +31 -0
  811. package/app/components/daq/DaqLineBanner.vue +47 -0
  812. package/app/components/daq/DaqNodePanel.vue +396 -0
  813. package/app/components/daq/DaqOptPanel.vue +197 -0
  814. package/app/components/daq/DaqTemplateModal.vue +246 -0
  815. package/app/components/dashboard/DashboardFleetPanel.vue +228 -0
  816. package/app/components/dashboard/DashboardGaugeBand.vue +78 -0
  817. package/app/components/dashboard/DashboardHarnessPanel.vue +149 -0
  818. package/app/components/dashboard/DashboardHero.vue +209 -0
  819. package/app/components/dashboard/DashboardLineStatePanel.vue +78 -0
  820. package/app/components/dashboard/DashboardNodeStatePanel.vue +46 -0
  821. package/app/components/dashboard/DashboardPipelinePanel.vue +46 -0
  822. package/app/components/dashboard/DashboardTrendPanel.vue +83 -0
  823. package/app/components/dashboard/DashboardWritePanel.vue +52 -0
  824. package/app/components/dcw/DcwAddNodeModal.vue +328 -0
  825. package/app/components/dcw/DcwAdoptCard.vue +89 -0
  826. package/app/components/dcw/DcwCreateLineModal.vue +105 -0
  827. package/app/components/dcw/DcwDeleteLineModal.vue +73 -0
  828. package/app/components/dcw/DcwDetailHead.vue +65 -0
  829. package/app/components/dcw/DcwDetailTemplateModal.vue +238 -0
  830. package/app/components/dcw/DcwEditLineModal.vue +108 -0
  831. package/app/components/dcw/DcwGatewayBar.vue +94 -0
  832. package/app/components/dcw/DcwLedgerCard.vue +160 -0
  833. package/app/components/dcw/DcwLineCard.vue +117 -0
  834. package/app/components/dcw/DcwLineRunCard.vue +158 -0
  835. package/app/components/dcw/DcwNodesTable.vue +253 -0
  836. package/app/components/dcw/DcwProductCreateModal.vue +113 -0
  837. package/app/components/dcw/DcwQueryCard.vue +251 -0
  838. package/app/components/dcw/DcwRecipeEditModal.vue +285 -0
  839. package/app/components/dcw/DcwRecipeHistoryModal.vue +165 -0
  840. package/app/components/dcw/DcwRecipePanel.vue +367 -0
  841. package/app/components/dcw/DcwRunDataModal.vue +191 -0
  842. package/app/components/dcw/DcwTemplateModal.vue +227 -0
  843. package/app/components/dcw/DcwWriteHistoryCard.vue +96 -0
  844. package/app/components/logs/LogsEventTable.vue +309 -0
  845. package/app/components/logs/LogsFilterCard.vue +234 -0
  846. package/app/components/logs/LogsManualModal.vue +231 -0
  847. package/app/components/logs/LogsPageHead.vue +71 -0
  848. package/app/components/monitor/MonitorAgentTable.vue +143 -0
  849. package/app/components/monitor/MonitorChannelTable.vue +80 -0
  850. package/app/components/monitor/MonitorLoginGate.vue +24 -0
  851. package/app/components/monitor/MonitorPageHead.vue +92 -0
  852. package/app/components/monitor/MonitorProcessTable.vue +159 -0
  853. package/app/components/monitor/MonitorStatGrid.vue +165 -0
  854. package/app/components/settings/AppearancePane.vue +282 -0
  855. package/app/components/settings/PluginsSection.vue +280 -0
  856. package/app/components/settings/RuntimeFieldRow.vue +189 -0
  857. package/app/components/settings/RuntimeGroupSection.vue +290 -0
  858. package/app/components/settings/RuntimePane.vue +235 -0
  859. package/app/components/settings/SystemPane.vue +83 -0
  860. package/app/components/tokens/TokenCreateModal.vue +42 -0
  861. package/app/components/tokens/TokenOnceModal.vue +164 -0
  862. package/app/components/tokens/TokenRenameModal.vue +40 -0
  863. package/app/components/tokens/TokensAuthGate.vue +47 -0
  864. package/app/components/tokens/TokensPageHead.vue +76 -0
  865. package/app/components/tokens/TokensTable.vue +227 -0
  866. package/app/components/workshop/AgentLanesView.vue +35 -755
  867. package/app/components/workshop/ChannelSessionList.vue +58 -493
  868. package/app/components/workshop/ChatMemberPanel.vue +555 -0
  869. package/app/components/workshop/ChatTimeline.vue +569 -0
  870. package/app/components/workshop/CommandPalette.vue +1 -0
  871. package/app/components/workshop/Composer.vue +224 -511
  872. package/app/components/workshop/DeviceTwinPanel.vue +23 -499
  873. package/app/components/workshop/EventBlock.vue +20 -408
  874. package/app/components/workshop/MemoryPanel.vue +405 -364
  875. package/app/components/workshop/MultiChannelView.vue +189 -189
  876. package/app/components/workshop/NotificationCenter.vue +325 -0
  877. package/app/components/workshop/TaskBoardView.vue +260 -686
  878. package/app/components/workshop/TaskInspectorDrawer.vue +484 -390
  879. package/app/components/workshop/TranscriptTimeline.vue +60 -438
  880. package/app/components/workshop/agents/AgentTemplateEditModal.vue +139 -0
  881. package/app/components/workshop/agents/AgentTemplateTable.vue +269 -0
  882. package/app/components/workshop/agents/AgentTemplateToolbar.vue +67 -0
  883. package/app/components/workshop/blocks/ClusterRoute.vue +1 -1
  884. package/app/components/workshop/blocks/EventBlockAvatar.vue +114 -0
  885. package/app/components/workshop/blocks/EventBlockHead.vue +232 -0
  886. package/app/components/workshop/composer/ComposerToolbar.vue +278 -0
  887. package/app/components/workshop/composer/MentionMenu.vue +135 -0
  888. package/app/components/workshop/composer/ReplyChip.vue +65 -0
  889. package/app/components/workshop/composer/StatusChip.vue +171 -0
  890. package/app/components/workshop/console/CenterPane.vue +94 -0
  891. package/app/components/workshop/console/Dock.vue +71 -0
  892. package/app/components/workshop/console/LeftPane.vue +84 -0
  893. package/app/components/workshop/console/RightPane.vue +95 -0
  894. package/app/components/workshop/console/Topbar.vue +289 -0
  895. package/app/components/workshop/device-twin/DeviceTwinCard.vue +265 -0
  896. package/app/components/workshop/device-twin/DeviceTwinDcwSection.vue +203 -0
  897. package/app/components/workshop/lanes/AddMemberModal.vue +270 -0
  898. package/app/components/workshop/lanes/EditMemberModal.vue +106 -0
  899. package/app/components/workshop/lanes/LaneHeader.vue +432 -0
  900. package/app/components/workshop/lanes/LanesToolbar.vue +97 -0
  901. package/app/components/workshop/session-list/ChannelSettingsModal.vue +329 -0
  902. package/app/components/workshop/session-list/MountChannelModal.vue +124 -0
  903. package/app/components/workshop/session-list/SaveTemplateModal.vue +93 -0
  904. package/app/components/workshop/task-board/Card.vue +172 -0
  905. package/app/components/workshop/task-board/Column.vue +151 -0
  906. package/app/components/workshop/task-board/List.vue +157 -0
  907. package/app/components/workshop/task-board/StatusMenu.vue +88 -0
  908. package/app/components/workshop/teams/TeamAddMemberModal.vue +53 -0
  909. package/app/components/workshop/teams/TeamCard.vue +183 -0
  910. package/app/components/workshop/teams/TeamCreateModal.vue +94 -0
  911. package/app/components/workshop/teams/TeamDeployModal.vue +40 -0
  912. package/app/components/workshop/teams/TeamPluginModal.vue +119 -0
  913. package/app/components/workshop/terminal/OmpTerminalPanel.vue +19 -760
  914. package/app/components/workshop/terminal/TerminalHitlCard.vue +170 -0
  915. package/app/components/workshop/town/TownScene.ts +72 -961
  916. package/app/components/workshop/town/TownScene3D.ts +357 -4045
  917. package/app/components/workshop/town/TownView.vue +461 -7405
  918. package/app/components/workshop/town/components/TownAgentBindings.vue +380 -0
  919. package/app/components/workshop/town/components/TownAgentInspector.vue +546 -0
  920. package/app/components/workshop/town/components/TownAlarmList.vue +147 -0
  921. package/app/components/workshop/town/components/TownBoundaryPanel.vue +350 -0
  922. package/app/components/workshop/town/components/TownCalloutLayer.vue +147 -0
  923. package/app/components/workshop/town/components/TownChannelDock.vue +116 -0
  924. package/app/components/workshop/town/components/TownControlDock.vue +400 -0
  925. package/app/components/workshop/town/components/TownDaqNodeInspector.vue +345 -0
  926. package/app/components/workshop/town/components/TownDaqTree.vue +366 -0
  927. package/app/components/workshop/town/components/TownDcwBindSection.vue +473 -0
  928. package/app/components/workshop/town/components/TownDcwNodeInspector.vue +185 -0
  929. package/app/components/workshop/town/components/TownDcwTree.vue +280 -0
  930. package/app/components/workshop/town/components/TownDeviceBindings.vue +394 -0
  931. package/app/components/workshop/town/components/TownDeviceTransform.vue +248 -0
  932. package/app/components/workshop/town/components/TownEventList.vue +120 -0
  933. package/app/components/workshop/town/components/TownHealthBody.vue +100 -0
  934. package/app/components/workshop/town/components/TownKpiStrip.vue +207 -0
  935. package/app/components/workshop/town/components/TownLeftRail.vue +308 -0
  936. package/app/components/workshop/town/components/TownLoadingMask.vue +61 -0
  937. package/app/components/workshop/town/components/TownNavMap.vue +154 -0
  938. package/app/components/workshop/town/components/TownRightRail.vue +540 -0
  939. package/app/components/workshop/town/components/TownStage.vue +281 -0
  940. package/app/components/workshop/town/components/TownStageTop.vue +238 -0
  941. package/app/components/workshop/town/components/TownStatusBar.vue +108 -0
  942. package/app/components/workshop/town/components/TownTopNav.vue +367 -0
  943. package/app/components/workshop/town/components/TownTrendDock.vue +178 -0
  944. package/app/components/workshop/town/scene/town-scene-agents.ts +254 -0
  945. package/app/components/workshop/town/scene/town-scene-behavior.ts +194 -0
  946. package/app/components/workshop/town/scene/town-scene-bubbles.ts +96 -0
  947. package/app/components/workshop/town/scene/town-scene-core.ts +158 -0
  948. package/app/components/workshop/town/scene/town-scene-models.ts +109 -0
  949. package/app/components/workshop/town/scene/town-scene-visuals.ts +279 -0
  950. package/app/components/workshop/town/scene/town-scene3d-agents.ts +308 -0
  951. package/app/components/workshop/town/scene/town-scene3d-blocks.ts +297 -0
  952. package/app/components/workshop/town/scene/town-scene3d-bubbles.ts +281 -0
  953. package/app/components/workshop/town/scene/town-scene3d-camera.ts +282 -0
  954. package/app/components/workshop/town/scene/town-scene3d-devices.ts +433 -0
  955. package/app/components/workshop/town/scene/town-scene3d-editing.ts +490 -0
  956. package/app/components/workshop/town/scene/town-scene3d-events.ts +173 -0
  957. package/app/components/workshop/town/scene/town-scene3d-factory.ts +412 -0
  958. package/app/components/workshop/town/scene/town-scene3d-hud.ts +110 -0
  959. package/app/components/workshop/town/scene/town-scene3d-lifecycle.ts +144 -0
  960. package/app/components/workshop/town/scene/town-scene3d-links.ts +141 -0
  961. package/app/components/workshop/town/scene/town-scene3d-loop.ts +286 -0
  962. package/app/components/workshop/town/scene/town-scene3d-models.ts +154 -0
  963. package/app/components/workshop/town/scene/town-scene3d-nodes.ts +562 -0
  964. package/app/components/workshop/town/scene/town-scene3d-ranges.ts +273 -0
  965. package/app/components/workshop/town/scene/town-scene3d-renderer.ts +320 -0
  966. package/app/components/workshop/town/scene/town-scene3d-selection.ts +257 -0
  967. package/app/components/workshop/town/scene/town-scene3d-types.ts +264 -0
  968. package/app/components/workshop/transcript/TranscriptBlockList.vue +68 -0
  969. package/app/components/workshop/transcript/TranscriptEarlierPager.vue +81 -0
  970. package/app/components/workshop/transcript/TranscriptEmptyState.vue +153 -0
  971. package/app/components/workshop/transcript/TranscriptFilterBar.vue +126 -0
  972. package/app/components/workshop/workbench/AuthGate.vue +179 -0
  973. package/app/components/workshop/workbench/CreateWorkspaceModal.vue +36 -0
  974. package/app/components/workshop/workbench/WorkbenchHead.vue +129 -0
  975. package/app/components/workshop/workbench/WorkspaceCard.vue +198 -0
  976. package/app/components/workshop/workbench/WorkspaceEmpty.vue +56 -0
  977. package/app/composables/workshop/device-twin-types.ts +29 -0
  978. package/app/composables/workshop/event-blocks/attention.ts +58 -0
  979. package/app/composables/workshop/event-blocks/classify.ts +44 -0
  980. package/app/composables/workshop/event-blocks/clusterer.ts +231 -0
  981. package/app/composables/workshop/event-blocks/constants.ts +48 -0
  982. package/app/composables/workshop/event-blocks/fold-stream.ts +45 -0
  983. package/app/composables/workshop/event-blocks/markdown.ts +81 -0
  984. package/app/composables/workshop/event-blocks/mentions.ts +49 -0
  985. package/app/composables/workshop/event-blocks/text-utils.ts +100 -0
  986. package/app/composables/workshop/event-blocks/types.ts +40 -0
  987. package/app/composables/workshop/town/town-relay-props.ts +226 -0
  988. package/app/composables/workshop/town/town-view-types.ts +145 -0
  989. package/app/composables/workshop/town/useTownAgentBindings.ts +115 -0
  990. package/app/composables/workshop/town/useTownAgentChat.ts +203 -0
  991. package/app/composables/workshop/town/useTownAlarms.ts +36 -0
  992. package/app/composables/workshop/town/useTownCallouts.ts +174 -0
  993. package/app/composables/workshop/town/useTownChannels.ts +220 -0
  994. package/app/composables/workshop/town/useTownHealth.ts +66 -0
  995. package/app/composables/workshop/town/useTownHudTickers.ts +77 -0
  996. package/app/composables/workshop/town/useTownLayout.ts +277 -0
  997. package/app/composables/workshop/town/useTownNavMap.ts +301 -0
  998. package/app/composables/workshop/town/useTownNodeBindings.ts +345 -0
  999. package/app/composables/workshop/town/useTownPanelDrag.ts +91 -0
  1000. package/app/composables/workshop/town/useTownRailData.ts +421 -0
  1001. package/app/composables/workshop/town/useTownSceneControl.ts +92 -0
  1002. package/app/composables/workshop/town/useTownSceneInput.ts +275 -0
  1003. package/app/composables/workshop/town/useTownSceneRuntime.ts +390 -0
  1004. package/app/composables/workshop/town/useTownSheets.ts +41 -0
  1005. package/app/composables/workshop/town/useTownTrends.ts +93 -0
  1006. package/app/composables/workshop/useChannelList.ts +88 -0
  1007. package/app/composables/workshop/useChannelTerminals.ts +65 -0
  1008. package/app/composables/workshop/useComposerMentions.ts +130 -0
  1009. package/app/composables/workshop/useDeviceTwinDcwWrite.ts +77 -0
  1010. package/app/composables/workshop/useDeviceTwinPanel.ts +56 -0
  1011. package/app/composables/workshop/useEventBlockView.ts +159 -0
  1012. package/app/composables/workshop/useEventBlocks.ts +33 -662
  1013. package/app/composables/workshop/useHitlAnswer.ts +184 -0
  1014. package/app/composables/workshop/useLaneWidths.ts +27 -0
  1015. package/app/composables/workshop/useOmpTerminalSession.ts +424 -0
  1016. package/app/composables/workshop/usePluginAdmin.ts +152 -0
  1017. package/app/composables/workshop/useRuntimeConfigDraft.ts +118 -0
  1018. package/app/composables/workshop/useSettingsGroups.ts +243 -0
  1019. package/app/composables/workshop/useTaskBoardColumns.ts +47 -0
  1020. package/app/composables/workshop/useTaskBoardDrag.ts +78 -0
  1021. package/app/composables/workshop/useTaskBoardMenu.ts +60 -0
  1022. package/app/composables/workshop/useTaskBoardTasks.ts +74 -0
  1023. package/app/composables/workshop/useTerminalRenderer.ts +308 -0
  1024. package/app/composables/workshop/useTranscriptEnterStage.ts +48 -0
  1025. package/app/composables/workshop/useTranscriptHistory.ts +52 -0
  1026. package/app/composables/workshop/useTranscriptScroll.ts +113 -0
  1027. package/app/composables/workshop/useWorkshopApi.ts +85 -2
  1028. package/app/composables/workshop/useWorkshopWs.ts +265 -126
  1029. package/app/config/schema.ts +13 -0
  1030. package/app/layouts/town.vue +21 -16
  1031. package/app/pages/aml/api.ts +6 -0
  1032. package/app/pages/aml/composables/useAmlDatasets.ts +38 -0
  1033. package/app/pages/aml/composables/useAmlEntities.ts +57 -0
  1034. package/app/pages/aml/composables/useAmlEnv.ts +191 -0
  1035. package/app/pages/aml/composables/useAmlExperiments.ts +45 -0
  1036. package/app/pages/aml/composables/useAmlFormat.ts +44 -0
  1037. package/app/pages/aml/composables/useAmlJobs.ts +131 -0
  1038. package/app/pages/aml/composables/useAmlModels.ts +56 -0
  1039. package/app/pages/aml/composables/useAmlNotes.ts +47 -0
  1040. package/app/pages/aml/composables/useAmlPredict.ts +93 -0
  1041. package/app/pages/aml/constants.ts +63 -0
  1042. package/app/pages/aml/index.vue +143 -2596
  1043. package/app/pages/aml/styles.css +420 -0
  1044. package/app/pages/aml/types.ts +189 -0
  1045. package/app/pages/composables/useDashboardCharts.ts +192 -0
  1046. package/app/pages/composables/useDashboardData.ts +144 -0
  1047. package/app/pages/daq/[id].vue +59 -929
  1048. package/app/pages/daq/composables/useDaqAddNode.ts +126 -0
  1049. package/app/pages/daq/composables/useDaqDetailBinding.ts +29 -0
  1050. package/app/pages/daq/composables/useDaqDetailFrames.ts +42 -0
  1051. package/app/pages/daq/composables/useDaqDetailHistory.ts +199 -0
  1052. package/app/pages/daq/composables/useDaqDetailNode.ts +53 -0
  1053. package/app/pages/daq/composables/useDaqDetailParams.ts +138 -0
  1054. package/app/pages/daq/composables/useDaqFilters.ts +187 -0
  1055. package/app/pages/daq/composables/useDaqNodeWindow.ts +86 -0
  1056. package/app/pages/daq/composables/useDaqOptimizations.ts +99 -0
  1057. package/app/pages/daq/composables/useDaqTemplates.ts +152 -0
  1058. package/app/pages/daq/daq-page.css +681 -0
  1059. package/app/pages/daq/index.vue +132 -2188
  1060. package/app/pages/dcw/[id].vue +297 -2615
  1061. package/app/pages/dcw/composables/useDcwAddNode.ts +121 -0
  1062. package/app/pages/dcw/composables/useDcwCards.ts +27 -0
  1063. package/app/pages/dcw/composables/useDcwDetailScope.ts +145 -0
  1064. package/app/pages/dcw/composables/useDcwDetailTemplates.ts +94 -0
  1065. package/app/pages/dcw/composables/useDcwFilter.ts +29 -0
  1066. package/app/pages/dcw/composables/useDcwLedger.ts +34 -0
  1067. package/app/pages/dcw/composables/useDcwLineMutations.ts +115 -0
  1068. package/app/pages/dcw/composables/useDcwLineRun.ts +60 -0
  1069. package/app/pages/dcw/composables/useDcwProducts.ts +54 -0
  1070. package/app/pages/dcw/composables/useDcwQuery.ts +68 -0
  1071. package/app/pages/dcw/composables/useDcwQuickActions.ts +47 -0
  1072. package/app/pages/dcw/composables/useDcwRecipes.ts +239 -0
  1073. package/app/pages/dcw/composables/useDcwTemplates.ts +50 -0
  1074. package/app/pages/dcw/composables/useDcwWrites.ts +81 -0
  1075. package/app/pages/dcw/dcw-page.css +344 -0
  1076. package/app/pages/dcw/index.vue +64 -986
  1077. package/app/pages/dcw/types.ts +9 -0
  1078. package/app/pages/index.vue +64 -925
  1079. package/app/pages/logs/composables/useLogsFormat.ts +43 -0
  1080. package/app/pages/logs/composables/useLogsManual.ts +63 -0
  1081. package/app/pages/logs/composables/useLogsQuery.ts +52 -0
  1082. package/app/pages/logs/composables/useLogsScope.ts +39 -0
  1083. package/app/pages/logs/index.vue +57 -728
  1084. package/app/pages/monitor/composables/useMonitorColumns.ts +69 -0
  1085. package/app/pages/monitor/composables/useMonitorData.ts +124 -0
  1086. package/app/pages/monitor/composables/useMonitorFormat.ts +39 -0
  1087. package/app/pages/monitor/composables/useMonitorTerminal.ts +28 -0
  1088. package/app/pages/monitor/types.ts +61 -0
  1089. package/app/pages/monitor.vue +88 -658
  1090. package/app/pages/permissions/index.vue +3 -2
  1091. package/app/pages/plugins/index.vue +3 -2
  1092. package/app/pages/settings.vue +7 -1403
  1093. package/app/pages/tokens/composables/useTokenClipboard.ts +33 -0
  1094. package/app/pages/tokens/composables/useTokenCreate.ts +93 -0
  1095. package/app/pages/tokens/composables/useTokenRename.ts +54 -0
  1096. package/app/pages/tokens/composables/useTokenReveal.ts +84 -0
  1097. package/app/pages/tokens/composables/useTokensList.ts +60 -0
  1098. package/app/pages/tokens.vue +79 -597
  1099. package/app/pages/users.vue +5 -4
  1100. package/app/pages/workshop/agents.vue +47 -529
  1101. package/app/pages/workshop/composables/useAgentHarnessOptions.ts +59 -0
  1102. package/app/pages/workshop/composables/useAgentTemplateActions.ts +42 -0
  1103. package/app/pages/workshop/composables/useAgentTemplateDialogState.ts +24 -0
  1104. package/app/pages/workshop/composables/useAgentTemplateForm.ts +88 -0
  1105. package/app/pages/workshop/composables/useAgentTemplatesCatalog.ts +92 -0
  1106. package/app/pages/workshop/composables/useTeamActions.ts +44 -0
  1107. package/app/pages/workshop/composables/useTeamAddMemberDialog.ts +49 -0
  1108. package/app/pages/workshop/composables/useTeamCreateDialog.ts +67 -0
  1109. package/app/pages/workshop/composables/useTeamDeployDialog.ts +49 -0
  1110. package/app/pages/workshop/composables/useTeamDialogState.ts +46 -0
  1111. package/app/pages/workshop/composables/useTeamPluginDialog.ts +72 -0
  1112. package/app/pages/workshop/composables/useTeamsCatalog.ts +100 -0
  1113. package/app/pages/workshop/composables/useWorkbenchAuth.ts +125 -0
  1114. package/app/pages/workshop/composables/useWorkbenchWorkspaces.ts +123 -0
  1115. package/app/pages/workshop/composables/useWorkspaceAuth.ts +31 -0
  1116. package/app/pages/workshop/composables/useWorkspaceChannels.ts +62 -0
  1117. package/app/pages/workshop/composables/useWorkspacePanels.ts +56 -0
  1118. package/app/pages/workshop/composables/useWorkspaceShell.ts +136 -0
  1119. package/app/pages/workshop/index.vue +68 -620
  1120. package/app/pages/workshop/schedules.vue +553 -0
  1121. package/app/pages/workshop/teams.vue +58 -568
  1122. package/app/pages/workshop/w/[wsId].vue +113 -596
  1123. package/app/stores/workshop/chat.ts +434 -0
  1124. package/app/stores/workshop/entities.ts +385 -283
  1125. package/app/stores/workshop/events.ts +5 -4
  1126. package/app/stores/workshop/hitl.ts +110 -7
  1127. package/app/stores/workshop/narrow-fetch.ts +23 -0
  1128. package/app/stores/workshop/notifications.ts +288 -0
  1129. package/app/stores/workshop/user.ts +23 -10
  1130. package/app/stores/workshop/workspaces.ts +12 -2
  1131. package/config.yml +7 -1
  1132. package/docs/aml.md +10 -0
  1133. package/docs/cli.en.md +5 -5
  1134. package/docs/cli.md +5 -5
  1135. package/docs/full-test-plan.md +15 -1
  1136. package/docs/plugins.en.md +1 -1
  1137. package/docs/plugins.md +1 -1
  1138. package/docs/sdk.en.md +1 -1
  1139. package/docs/sdk.md +1 -1
  1140. package/i18n/dicts/dcwDetail.json +2 -0
  1141. package/i18n/locales/en.ts +71 -0
  1142. package/i18n/locales/zh-CN.ts +71 -0
  1143. package/package.json +2 -3
  1144. package/scripts/_audit/detached-instance.mjs +112 -0
  1145. package/scripts/_audit/schedules-ui/schedules-page.png +0 -0
  1146. package/scripts/_audit/schedules-ui/workspace-channel-tag.png +0 -0
  1147. package/scripts/_audit/stubs/nuxt-imports.mjs +67 -0
  1148. package/scripts/_audit/ts-register-hook.mjs +12 -0
  1149. package/scripts/_audit/ts-resolve-hook.mjs +25 -5
  1150. package/scripts/_audit/watchdog-recovery-test.mjs +24 -2
  1151. package/scripts/_dbg-comm-verify.mjs +188 -0
  1152. package/scripts/_dbg-full-feature-e2e.mjs +19 -11
  1153. package/scripts/_dbg-im-e2e.mjs +169 -0
  1154. package/scripts/_dbg-opt2-run.mjs +114 -0
  1155. package/scripts/_dbg-opt2-setup.mjs +95 -0
  1156. package/scripts/_dbg-param-map-e2e.ts +1 -1
  1157. package/scripts/_dbg-param-map-rest-smoke.mjs +1 -1
  1158. package/scripts/_dbg-real-scenario-e2e.mjs +246 -0
  1159. package/scripts/_dbg-schedule-e2e.mjs +262 -0
  1160. package/scripts/_dbg-schedule-ui-verify.mjs +115 -0
  1161. package/scripts/_dbg-team-matrix.mjs +148 -0
  1162. package/scripts/_dbg-ui-fullcrawl.mjs +91 -0
  1163. package/scripts/_dbg-ui-static-audit.mjs +65 -0
  1164. package/scripts/_dbg-write-lock-e2e.mjs +131 -0
  1165. package/scripts/_probe-daq-omp-task.mjs +100 -0
  1166. package/scripts/_probe-daq-scope-default.mjs +123 -0
  1167. package/scripts/_probe-recipe-switch.mjs +92 -0
  1168. package/scripts/_provision-injection-line.mjs +39 -0
  1169. package/scripts/_run-matrix.ps1 +53 -0
  1170. package/scripts/_run-real-injection-fifo-goals.mjs +367 -0
  1171. package/scripts/acceptance-aml-db.ts +23 -0
  1172. package/scripts/acceptance-aml-hybrid-live.mjs +94 -0
  1173. package/scripts/acceptance-aml-hybrid-twin.ts +93 -0
  1174. package/scripts/acceptance-hybrid-python.py +51 -0
  1175. package/scripts/aml-ui-smoke.mjs +2 -0
  1176. package/scripts/api-live-e2e.mjs +32 -7
  1177. package/scripts/demo-group-chat-all-real.ts +279 -0
  1178. package/scripts/demo-group-chat-omp-cases.ts +210 -0
  1179. package/scripts/demo-group-chat-omp.ts +184 -0
  1180. package/scripts/demo-group-chat-order.ts +197 -0
  1181. package/scripts/e2e-agent-team.mjs +6 -4
  1182. package/scripts/e2e-agentteam-chat.mjs +473 -0
  1183. package/scripts/e2e-agentteam-real-triage.mjs +421 -0
  1184. package/scripts/e2e-agentteam-task-flow-real.ts +443 -0
  1185. package/scripts/e2e-aw-tui-global.mjs +8 -8
  1186. package/scripts/e2e-channel-isolation.ts +5 -1
  1187. package/scripts/e2e-closedloop/cleanup.mjs +27 -0
  1188. package/scripts/e2e-closedloop/lib.mjs +109 -0
  1189. package/scripts/e2e-closedloop/main.mjs +59 -0
  1190. package/scripts/e2e-closedloop/scenarios-accounts.mjs +208 -0
  1191. package/scripts/e2e-closedloop/scenarios-authz.mjs +190 -0
  1192. package/scripts/e2e-closedloop/scenarios-daq-dcw.mjs +219 -0
  1193. package/scripts/e2e-closedloop/scenarios-plugins.mjs +169 -0
  1194. package/scripts/e2e-closedloop/state.mjs +10 -0
  1195. package/scripts/e2e-crash-cycle.mjs +108 -0
  1196. package/scripts/e2e-full-closedloop.mjs +6 -919
  1197. package/scripts/e2e-hil-multi-user.mjs +307 -0
  1198. package/scripts/e2e-hil-restart.mjs +339 -0
  1199. package/scripts/e2e-hitl-live.mjs +336 -323
  1200. package/scripts/e2e-lead-team-mgmt.ts +1 -1
  1201. package/scripts/e2e-memory-system.ts +70 -89
  1202. package/scripts/e2e-multiharness-team.mjs +32 -15
  1203. package/scripts/e2e-omp-workspace.ts +21 -6
  1204. package/scripts/e2e-parallel-execution.mjs +20 -6
  1205. package/scripts/e2e-plc-plugin-closedloop.mjs +96 -65
  1206. package/scripts/e2e-rest-memory.mjs +26 -11
  1207. package/scripts/e2e-resume-crash.mjs +22 -7
  1208. package/scripts/e2e-task-queue.ts +8 -8
  1209. package/scripts/e2e-template-isolation.mjs +4 -2
  1210. package/scripts/proof-omp-real.ts +189 -0
  1211. package/scripts/real-injection-closed-loop.mjs +383 -0
  1212. package/scripts/test-agent-runtime.ts +5 -1
  1213. package/scripts/test-agentteam-guardrails.ts +113 -0
  1214. package/scripts/test-agentteam-task-chat-flow.ts +420 -0
  1215. package/scripts/test-agentteam-workflow.ts +472 -0
  1216. package/scripts/test-collab-e2e.mjs +17 -3
  1217. package/scripts/test-dcw-read.ts +9 -2
  1218. package/scripts/test-event-persistence.mjs +10 -2
  1219. package/scripts/test-full-system.ts +16 -3
  1220. package/scripts/test-group-chat-hardening.ts +265 -0
  1221. package/scripts/test-group-chat-unit/lib.ts +186 -0
  1222. package/scripts/test-group-chat-unit/main.ts +45 -0
  1223. package/scripts/test-group-chat-unit/section-a-migration.ts +75 -0
  1224. package/scripts/test-group-chat-unit/section-b-permission-matrix.ts +88 -0
  1225. package/scripts/test-group-chat-unit/section-c-member-lifecycle.ts +64 -0
  1226. package/scripts/test-group-chat-unit/section-d-mention-resolution.ts +36 -0
  1227. package/scripts/test-group-chat-unit/section-e-chat-facts.ts +97 -0
  1228. package/scripts/test-group-chat-unit/section-f-user-notifications.ts +52 -0
  1229. package/scripts/test-group-chat-unit/section-g-member-projection.ts +44 -0
  1230. package/scripts/test-group-chat-unit/section-h-outbox-consistency.ts +30 -0
  1231. package/scripts/test-group-chat-unit/section-i-read-idempotency.ts +24 -0
  1232. package/scripts/test-group-chat-unit/section-j-permission-scope.ts +150 -0
  1233. package/scripts/test-group-chat-unit.ts +35 -0
  1234. package/scripts/test-hitl-decision.ts +526 -0
  1235. package/scripts/test-hitl-legacy-channel-auth.ts +143 -0
  1236. package/scripts/test-lane-history-live.mjs +30 -7
  1237. package/scripts/test-memory-vector.ts +10 -0
  1238. package/scripts/test-orchestration.ts +7 -2
  1239. package/scripts/test-persistence-lazy.ts +7 -1
  1240. package/scripts/test-prompt-system.mjs +46 -20
  1241. package/scripts/test-route-reason.mjs +9 -2
  1242. package/scripts/test-schedule-runtime.ts +309 -0
  1243. package/scripts/test-scheduler-loop/lib.ts +321 -0
  1244. package/scripts/test-scheduler-loop/main.ts +40 -0
  1245. package/scripts/test-scheduler-loop/scenarios-modes.ts +95 -0
  1246. package/scripts/test-scheduler-loop/scenarios-runtime.ts +58 -0
  1247. package/scripts/test-scheduler-loop/scenarios-supervise.ts +183 -0
  1248. package/scripts/test-scheduler-loop/scenarios-triage.ts +102 -0
  1249. package/scripts/test-scheduler-loop.ts +5 -460
  1250. package/scripts/test-supervision-watchdog.ts +105 -0
  1251. package/scripts/test-task-engine.ts +27 -5
  1252. package/scripts/test-task-lease-fencing.ts +154 -0
  1253. package/scripts/test-terminal-e2e.mjs +9 -3
  1254. package/scripts/three-system-e2e/lib.mjs +79 -0
  1255. package/scripts/three-system-e2e/main.mjs +40 -0
  1256. package/scripts/three-system-e2e/phases/phase-0-user-token.mjs +42 -0
  1257. package/scripts/three-system-e2e/phases/phase-0a2-line-autoselect.mjs +35 -0
  1258. package/scripts/three-system-e2e/phases/phase-0b-fixture-grants.mjs +39 -0
  1259. package/scripts/three-system-e2e/phases/phase-0c-plugin-outbound-auth.mjs +95 -0
  1260. package/scripts/three-system-e2e/phases/stage-1-health.mjs +47 -0
  1261. package/scripts/three-system-e2e/phases/stage-2-5-team-plugins.mjs +84 -0
  1262. package/scripts/three-system-e2e/phases/stage-2-teams-tools-hitl.mjs +184 -0
  1263. package/scripts/three-system-e2e/phases/stage-3-diag.mjs +73 -0
  1264. package/scripts/three-system-e2e/phases/stage-4-plugin-toggle.mjs +53 -0
  1265. package/scripts/three-system-e2e/state.mjs +87 -0
  1266. package/scripts/three-system-e2e.mjs +24 -646
  1267. package/scripts/typecheck.mjs +75 -0
  1268. package/scripts/ui/lib.mjs +14 -2
  1269. package/scripts/ui/smoke-refactor.mjs +258 -0
  1270. package/scripts/verify-a2a-live.mjs +15 -1
  1271. package/scripts/verify-ws-events.mjs +19 -1
  1272. package/server/api/system/monitor/terminal/ws.ts +51 -1
  1273. package/server/api/workshop/agent-tools/approvals/[id]/decide.post.ts +59 -5
  1274. package/server/api/workshop/agent-tools/approvals/index.get.ts +28 -3
  1275. package/server/api/workshop/channel-templates/[id]/instantiate.post.ts +6 -1
  1276. package/server/api/workshop/channels/[id]/chat/messages/[messageId]/read.post.ts +22 -0
  1277. package/server/api/workshop/channels/[id]/chat/messages/index.get.ts +29 -0
  1278. package/server/api/workshop/channels/[id]/chat/messages/index.post.ts +51 -0
  1279. package/server/api/workshop/channels/[id]/chat/permissions.get.ts +35 -0
  1280. package/server/api/workshop/channels/[id]/index.patch.ts +34 -8
  1281. package/server/api/workshop/channels/[id]/members/[userId]/approve.post.ts +20 -0
  1282. package/server/api/workshop/channels/[id]/members/[userId].delete.ts +21 -0
  1283. package/server/api/workshop/channels/[id]/members/index.get.ts +23 -0
  1284. package/server/api/workshop/channels/[id]/members/join.post.ts +30 -0
  1285. package/server/api/workshop/channels/[id]/members/leave.post.ts +20 -0
  1286. package/server/api/workshop/channels/[id]/messages/index.post.ts +3 -0
  1287. package/server/api/workshop/channels/[id]/tasks/index.post.ts +8 -0
  1288. package/server/api/workshop/channels.get.ts +21 -1
  1289. package/server/api/workshop/hitl/pending.get.ts +27 -7
  1290. package/server/api/workshop/hitl/respond.post.ts +86 -89
  1291. package/server/api/workshop/notifications/index.get.ts +60 -0
  1292. package/server/api/workshop/notifications/read.post.ts +31 -0
  1293. package/server/api/workshop/schedules/[id]/run.post.ts +15 -0
  1294. package/server/api/workshop/schedules/[id]/runs.get.ts +15 -0
  1295. package/server/api/workshop/schedules/[id].delete.ts +14 -0
  1296. package/server/api/workshop/schedules/[id].get.ts +13 -0
  1297. package/server/api/workshop/schedules/[id].patch.ts +29 -0
  1298. package/server/api/workshop/schedules/index.get.ts +12 -0
  1299. package/server/api/workshop/schedules/index.post.ts +32 -0
  1300. package/server/api/workshop/tasks/[id]/reassign.post.ts +32 -0
  1301. package/server/api/workshop/tasks/[id]/update.post.ts +35 -0
  1302. package/server/api/workshop/tasks/[id].get.ts +15 -6
  1303. package/server/api/workshop/ws/audience.ts +56 -0
  1304. package/server/api/workshop/ws/db-buffer.ts +68 -0
  1305. package/server/api/workshop/ws/event-mapping.ts +47 -0
  1306. package/server/api/workshop/ws/handlers.ts +132 -0
  1307. package/server/api/workshop/ws/hub.ts +133 -0
  1308. package/server/api/workshop/ws/index.ts +23 -0
  1309. package/server/api/workshop/ws/notification-uplink.ts +77 -0
  1310. package/server/api/workshop/ws/peer-sub.ts +128 -0
  1311. package/server/api/workshop/ws/publish.ts +122 -0
  1312. package/server/api/workshop/ws/shared.ts +94 -0
  1313. package/server/api/workshop/ws/streams.ts +146 -0
  1314. package/server/api/workshop/ws/subscriptions.ts +137 -0
  1315. package/server/plugins/workshop.ts +30 -0
  1316. package/server/plugins-builtin/diag-bridge/host/constants.mjs +25 -0
  1317. package/server/plugins-builtin/diag-bridge/host/diagnosis.mjs +56 -0
  1318. package/server/plugins-builtin/diag-bridge/host/helpers.mjs +126 -0
  1319. package/server/plugins-builtin/diag-bridge/host/index.mjs +15 -0
  1320. package/server/plugins-builtin/diag-bridge/host/plugin.mjs +296 -0
  1321. package/server/plugins-builtin/diag-bridge/host/snapshot.mjs +93 -0
  1322. package/server/plugins-builtin/diag-bridge/host/sweep.mjs +51 -0
  1323. package/server/plugins-builtin/diag-bridge/index.mjs +6 -605
  1324. package/server/repositories/user.repository.ts +13 -0
  1325. package/server/services/system-config/contracts.ts +29 -0
  1326. package/server/services/system-config/dispose.ts +19 -0
  1327. package/server/services/system-config/facade.ts +26 -0
  1328. package/server/services/system-config/groups.ts +108 -0
  1329. package/server/services/system-config/helpers.ts +41 -0
  1330. package/server/services/system-config/index.ts +21 -0
  1331. package/server/services/system-config/init.ts +26 -0
  1332. package/server/services/system-config/mutate.ts +103 -0
  1333. package/server/services/system-config/plugins.ts +104 -0
  1334. package/server/services/system-config/recompute.ts +66 -0
  1335. package/server/services/system-config/snapshot.ts +59 -0
  1336. package/server/services/system-config/state.ts +79 -0
  1337. package/server/services/system-config/types.ts +58 -0
  1338. package/server/services/workshop/agents/adapters/line-spawn.ts +2 -2
  1339. package/server/services/workshop/agents/adapters/omp-rpc-client/api.ts +111 -0
  1340. package/server/services/workshop/agents/adapters/omp-rpc-client/contracts.ts +22 -0
  1341. package/server/services/workshop/agents/adapters/omp-rpc-client/facade.ts +7 -0
  1342. package/server/services/workshop/agents/adapters/omp-rpc-client/frames.ts +111 -0
  1343. package/server/services/workshop/agents/adapters/omp-rpc-client/helpers.ts +38 -0
  1344. package/server/services/workshop/agents/adapters/omp-rpc-client/index.ts +25 -0
  1345. package/server/services/workshop/agents/adapters/omp-rpc-client/start.ts +70 -0
  1346. package/server/services/workshop/agents/adapters/omp-rpc-client/state.ts +65 -0
  1347. package/server/services/workshop/agents/adapters/omp-rpc-client/stdout.ts +92 -0
  1348. package/server/services/workshop/agents/adapters/omp-rpc-client/types.ts +115 -0
  1349. package/server/services/workshop/agents/adapters/omp-rpc-client/usage.ts +47 -0
  1350. package/server/services/workshop/agents/agent-interface.ts +52 -4
  1351. package/server/services/workshop/agents/base-agent.ts +36 -8
  1352. package/server/services/workshop/agents/claude-agent.ts +5 -0
  1353. package/server/services/workshop/agents/codex-agent/client.ts +170 -0
  1354. package/server/services/workshop/agents/codex-agent/core.ts +119 -0
  1355. package/server/services/workshop/agents/codex-agent/facade.ts +8 -0
  1356. package/server/services/workshop/agents/codex-agent/helpers.ts +13 -0
  1357. package/server/services/workshop/agents/codex-agent/hitl.ts +138 -0
  1358. package/server/services/workshop/agents/codex-agent/index.ts +14 -0
  1359. package/server/services/workshop/agents/codex-agent/turn.ts +367 -0
  1360. package/server/services/workshop/agents/codex-agent/types.ts +42 -0
  1361. package/server/services/workshop/agents/dsh-agent.ts +5 -0
  1362. package/server/services/workshop/agents/harness-availability.ts +127 -127
  1363. package/server/services/workshop/agents/harness-terminal/api.ts +197 -0
  1364. package/server/services/workshop/agents/harness-terminal/index.ts +17 -0
  1365. package/server/services/workshop/agents/harness-terminal/io.ts +120 -0
  1366. package/server/services/workshop/agents/harness-terminal/park.ts +55 -0
  1367. package/server/services/workshop/agents/harness-terminal/sanitize.ts +98 -0
  1368. package/server/services/workshop/agents/harness-terminal/session.ts +124 -0
  1369. package/server/services/workshop/agents/harness-terminal/shared.ts +74 -0
  1370. package/server/services/workshop/agents/hermes-agent.ts +5 -0
  1371. package/server/services/workshop/agents/hitl-capabilities.ts +312 -0
  1372. package/server/services/workshop/agents/hitl-decision/answers.ts +27 -0
  1373. package/server/services/workshop/agents/hitl-decision/decide.ts +268 -0
  1374. package/server/services/workshop/agents/hitl-decision/dispatcher.ts +81 -0
  1375. package/server/services/workshop/agents/hitl-decision/index.ts +24 -0
  1376. package/server/services/workshop/agents/hitl-decision/payload.ts +45 -0
  1377. package/server/services/workshop/agents/hitl-decision/reconcile.ts +70 -0
  1378. package/server/services/workshop/agents/hitl-decision/shared.ts +106 -0
  1379. package/server/services/workshop/agents/hitl-decision/visibility.ts +94 -0
  1380. package/server/services/workshop/agents/hitl-registry.ts +403 -7
  1381. package/server/services/workshop/agents/host-tool-bridge/catalog.ts +78 -0
  1382. package/server/services/workshop/agents/host-tool-bridge/dispatch.ts +167 -0
  1383. package/server/services/workshop/agents/host-tool-bridge/index.ts +15 -0
  1384. package/server/services/workshop/agents/host-tool-bridge/session.ts +22 -0
  1385. package/server/services/workshop/agents/host-tool-bridge/tools/industrial.ts +64 -0
  1386. package/server/services/workshop/agents/host-tool-bridge/tools/memory.ts +44 -0
  1387. package/server/services/workshop/agents/host-tool-bridge/tools/messaging.ts +182 -0
  1388. package/server/services/workshop/agents/host-tool-bridge/tools/progress.ts +84 -0
  1389. package/server/services/workshop/agents/host-tool-bridge/tools/tasks.ts +120 -0
  1390. package/server/services/workshop/agents/host-tool-bridge/tools/team.ts +70 -0
  1391. package/server/services/workshop/agents/host-tool-bridge/types.ts +31 -0
  1392. package/server/services/workshop/agents/industrial/aml-dataset-tools.ts +276 -0
  1393. package/server/services/workshop/agents/industrial/aml-job-tools.ts +363 -0
  1394. package/server/services/workshop/agents/industrial/daq-tools.ts +251 -0
  1395. package/server/services/workshop/agents/industrial/dcw-judge-tools.ts +153 -0
  1396. package/server/services/workshop/agents/industrial/dcw-tools.ts +213 -0
  1397. package/server/services/workshop/agents/industrial/index.ts +24 -0
  1398. package/server/services/workshop/agents/industrial/ops-tools.ts +382 -0
  1399. package/server/services/workshop/agents/industrial/param-tools.ts +172 -0
  1400. package/server/services/workshop/agents/industrial/twin-tools.ts +175 -0
  1401. package/server/services/workshop/agents/mock-agent.ts +136 -12
  1402. package/server/services/workshop/agents/omp-agent/client.ts +116 -0
  1403. package/server/services/workshop/agents/omp-agent/context-governance.ts +204 -0
  1404. package/server/services/workshop/agents/omp-agent/core.ts +146 -0
  1405. package/server/services/workshop/agents/omp-agent/event-mapping.ts +142 -0
  1406. package/server/services/workshop/agents/omp-agent/facade.ts +8 -0
  1407. package/server/services/workshop/agents/omp-agent/helpers.ts +37 -0
  1408. package/server/services/workshop/agents/omp-agent/index.ts +16 -0
  1409. package/server/services/workshop/agents/omp-agent/lifecycle.ts +80 -0
  1410. package/server/services/workshop/agents/omp-agent/tools-steer.ts +487 -0
  1411. package/server/services/workshop/agents/omp-agent/types.ts +45 -0
  1412. package/server/services/workshop/agents/opencode-agent/core.ts +77 -0
  1413. package/server/services/workshop/agents/opencode-agent/engine-agnostic.ts +274 -0
  1414. package/server/services/workshop/agents/opencode-agent/facade.ts +8 -0
  1415. package/server/services/workshop/agents/opencode-agent/helpers.ts +29 -0
  1416. package/server/services/workshop/agents/opencode-agent/hitl.ts +113 -0
  1417. package/server/services/workshop/agents/opencode-agent/index.ts +16 -0
  1418. package/server/services/workshop/agents/opencode-agent/lifecycle.ts +44 -0
  1419. package/server/services/workshop/agents/opencode-agent/server.ts +244 -0
  1420. package/server/services/workshop/agents/opencode-agent/turn.ts +278 -0
  1421. package/server/services/workshop/agents/opencode-agent/types.ts +54 -0
  1422. package/server/services/workshop/agents/prompt-builder.ts +16 -6
  1423. package/server/services/workshop/agents/qwen-agent.ts +6 -2
  1424. package/server/services/workshop/agents/registry.ts +32 -2
  1425. package/server/services/workshop/aml/job-orchestrator/broadcast.ts +37 -0
  1426. package/server/services/workshop/aml/job-orchestrator/control.ts +94 -0
  1427. package/server/services/workshop/aml/job-orchestrator/failure.ts +77 -0
  1428. package/server/services/workshop/aml/job-orchestrator/index.ts +22 -0
  1429. package/server/services/workshop/aml/job-orchestrator/process.ts +100 -0
  1430. package/server/services/workshop/aml/job-orchestrator/shared.ts +51 -0
  1431. package/server/services/workshop/aml/job-orchestrator/stages.ts +96 -0
  1432. package/server/services/workshop/aml/job-orchestrator/start-job.ts +124 -0
  1433. package/server/services/workshop/aml/job-orchestrator/status.ts +20 -0
  1434. package/server/services/workshop/aml/job-orchestrator/submit.ts +120 -0
  1435. package/server/services/workshop/aml/job-orchestrator/tick.ts +37 -0
  1436. package/server/services/workshop/aml/python/amlkit.py +185 -120
  1437. package/server/services/workshop/aml/python/requirements.txt +9 -7
  1438. package/server/services/workshop/aml/python/train-hybrid-example.py +87 -0
  1439. package/server/services/workshop/aml/twin/acceptance.ts +68 -0
  1440. package/server/services/workshop/aml/twin/calibration-scheduler.ts +48 -0
  1441. package/server/services/workshop/aml/twin/channel-profile.ts +43 -0
  1442. package/server/services/workshop/aml/twin/contracts.ts +215 -0
  1443. package/server/services/workshop/aml/twin/physics-runtime.ts +165 -0
  1444. package/server/services/workshop/aml/twin/repo.ts +26 -0
  1445. package/server/services/workshop/aml/twin/snapshot-service.ts +81 -0
  1446. package/server/services/workshop/aml/twin/trial-service.ts +89 -0
  1447. package/server/services/workshop/aml/twin/uq-ood.ts +66 -0
  1448. package/server/services/workshop/daq/daq-controller/contracts.ts +39 -0
  1449. package/server/services/workshop/daq/daq-controller/crud.ts +202 -0
  1450. package/server/services/workshop/daq/daq-controller/driver-probe.ts +64 -0
  1451. package/server/services/workshop/daq/daq-controller/facade.ts +28 -0
  1452. package/server/services/workshop/daq/daq-controller/frames.ts +137 -0
  1453. package/server/services/workshop/daq/daq-controller/helpers.ts +52 -0
  1454. package/server/services/workshop/daq/daq-controller/index.ts +22 -0
  1455. package/server/services/workshop/daq/daq-controller/ingest.ts +189 -0
  1456. package/server/services/workshop/daq/daq-controller/runtime-control.ts +72 -0
  1457. package/server/services/workshop/daq/daq-controller/state.ts +194 -0
  1458. package/server/services/workshop/daq/daq-controller/sweep-alarms.ts +164 -0
  1459. package/server/services/workshop/daq/daq-controller/tsdb-twin.ts +138 -0
  1460. package/server/services/workshop/daq/daq-controller/types.ts +68 -0
  1461. package/server/services/workshop/daq/daq-controller/views.ts +84 -0
  1462. package/server/services/workshop/daq/drivers/http.ts +95 -0
  1463. package/server/services/workshop/daq/drivers/index.ts +29 -0
  1464. package/server/services/workshop/daq/drivers/mock.ts +130 -0
  1465. package/server/services/workshop/daq/drivers/modbus-rtu.ts +67 -0
  1466. package/server/services/workshop/daq/drivers/modbus-tcp.ts +307 -0
  1467. package/server/services/workshop/daq/drivers/mqtt.ts +182 -0
  1468. package/server/services/workshop/daq/drivers/opcua.ts +227 -0
  1469. package/server/services/workshop/daq/drivers/registry.ts +144 -0
  1470. package/server/services/workshop/daq/drivers/s7-stub.ts +29 -0
  1471. package/server/services/workshop/daq/drivers/shared.ts +60 -0
  1472. package/server/services/workshop/db/channel-member.repo.ts +122 -0
  1473. package/server/services/workshop/db/channel.repo.ts +93 -8
  1474. package/server/services/workshop/db/chat-message.repo.ts +233 -0
  1475. package/server/services/workshop/db/database/index.ts +18 -0
  1476. package/server/services/workshop/db/database/json.ts +14 -0
  1477. package/server/services/workshop/db/database/migrations.ts +367 -0
  1478. package/server/services/workshop/db/database/open.ts +76 -0
  1479. package/server/services/workshop/db/database/rows.ts +374 -0
  1480. package/server/services/workshop/db/database/schema.ts +651 -0
  1481. package/server/services/workshop/db/database/seed-data.ts +60 -0
  1482. package/server/services/workshop/db/database/seed.ts +145 -0
  1483. package/server/services/workshop/db/hitl-request.repo.ts +221 -0
  1484. package/server/services/workshop/db/notification.repo.ts +199 -0
  1485. package/server/services/workshop/db/outbox.repo.ts +127 -0
  1486. package/server/services/workshop/db/scheduled-task.repo.ts +235 -0
  1487. package/server/services/workshop/db/schema.sql +185 -0
  1488. package/server/services/workshop/db/task.repo.ts +185 -69
  1489. package/server/services/workshop/db/transaction.ts +72 -0
  1490. package/server/services/workshop/dcw/dcw-controller/actuation.ts +127 -0
  1491. package/server/services/workshop/dcw/dcw-controller/bindings.ts +83 -0
  1492. package/server/services/workshop/dcw/dcw-controller/contracts.ts +16 -0
  1493. package/server/services/workshop/dcw/dcw-controller/control.ts +78 -0
  1494. package/server/services/workshop/dcw/dcw-controller/crud.ts +152 -0
  1495. package/server/services/workshop/dcw/dcw-controller/facade.ts +19 -0
  1496. package/server/services/workshop/dcw/dcw-controller/helpers.ts +57 -0
  1497. package/server/services/workshop/dcw/dcw-controller/index.ts +22 -0
  1498. package/server/services/workshop/dcw/dcw-controller/lines.ts +213 -0
  1499. package/server/services/workshop/dcw/dcw-controller/params.ts +97 -0
  1500. package/server/services/workshop/dcw/dcw-controller/products.ts +103 -0
  1501. package/server/services/workshop/dcw/dcw-controller/recipes.ts +137 -0
  1502. package/server/services/workshop/dcw/dcw-controller/state.ts +66 -0
  1503. package/server/services/workshop/dcw/dcw-controller/types.ts +57 -0
  1504. package/server/services/workshop/dcw/dcw-controller/write.ts +147 -0
  1505. package/server/services/workshop/dcw/dcw-node.ts +8 -0
  1506. package/server/services/workshop/dcw/drivers/http.ts +66 -0
  1507. package/server/services/workshop/dcw/drivers/index.ts +26 -0
  1508. package/server/services/workshop/dcw/drivers/mock.ts +44 -0
  1509. package/server/services/workshop/dcw/drivers/modbus-rtu.ts +93 -0
  1510. package/server/services/workshop/dcw/drivers/modbus.ts +139 -0
  1511. package/server/services/workshop/dcw/drivers/mqtt.ts +108 -0
  1512. package/server/services/workshop/dcw/drivers/opcua.ts +110 -0
  1513. package/server/services/workshop/dcw/drivers/registry.ts +118 -0
  1514. package/server/services/workshop/dcw/drivers/shared.ts +113 -0
  1515. package/server/services/workshop/dcw/recipe-rollback-manager/contracts.ts +26 -0
  1516. package/server/services/workshop/dcw/recipe-rollback-manager/facade.ts +13 -0
  1517. package/server/services/workshop/dcw/recipe-rollback-manager/helpers.ts +30 -0
  1518. package/server/services/workshop/dcw/recipe-rollback-manager/index.ts +17 -0
  1519. package/server/services/workshop/dcw/recipe-rollback-manager/internal.ts +33 -0
  1520. package/server/services/workshop/dcw/recipe-rollback-manager/judge.ts +52 -0
  1521. package/server/services/workshop/dcw/recipe-rollback-manager/lock.ts +137 -0
  1522. package/server/services/workshop/dcw/recipe-rollback-manager/rollback.ts +190 -0
  1523. package/server/services/workshop/dcw/recipe-rollback-manager/state.ts +21 -0
  1524. package/server/services/workshop/dcw/recipe-rollback-manager/sweep.ts +77 -0
  1525. package/server/services/workshop/dcw/recipe-rollback-manager/types.ts +3 -0
  1526. package/server/services/workshop/dcw/recipe-rollback-manager/views.ts +214 -0
  1527. package/server/services/workshop/plugins/host/api.mjs +90 -0
  1528. package/server/services/workshop/plugins/host/config.mjs +135 -0
  1529. package/server/services/workshop/plugins/host/index.mjs +23 -0
  1530. package/server/services/workshop/plugins/host/init.mjs +101 -0
  1531. package/server/services/workshop/plugins/host/load.mjs +321 -0
  1532. package/server/services/workshop/plugins/host/reload.mjs +94 -0
  1533. package/server/services/workshop/plugins/host/rollback.mjs +72 -0
  1534. package/server/services/workshop/plugins/host/services.mjs +58 -0
  1535. package/server/services/workshop/plugins/host/state.mjs +54 -0
  1536. package/server/services/workshop/plugins/host/toggle.mjs +64 -0
  1537. package/server/services/workshop/plugins/host.mjs +6 -890
  1538. package/server/services/workshop/runtime/agent-runtime/contracts.ts +25 -0
  1539. package/server/services/workshop/runtime/agent-runtime/facade.ts +7 -0
  1540. package/server/services/workshop/runtime/agent-runtime/helpers.ts +18 -0
  1541. package/server/services/workshop/runtime/agent-runtime/index.ts +19 -0
  1542. package/server/services/workshop/runtime/agent-runtime/lifecycle.ts +119 -0
  1543. package/server/services/workshop/runtime/agent-runtime/message.ts +409 -0
  1544. package/server/services/workshop/runtime/agent-runtime/state.ts +371 -0
  1545. package/server/services/workshop/runtime/agent-runtime/supervise.ts +188 -0
  1546. package/server/services/workshop/runtime/agent-runtime/types.ts +186 -0
  1547. package/server/services/workshop/runtime/channel-runtime.ts +7 -0
  1548. package/server/services/workshop/runtime/chat-mention.ts +164 -0
  1549. package/server/services/workshop/runtime/chat-projection.ts +246 -0
  1550. package/server/services/workshop/runtime/execution-mode.ts +11 -2
  1551. package/server/services/workshop/runtime/manager/a2a.ts +283 -0
  1552. package/server/services/workshop/runtime/manager/access.ts +483 -0
  1553. package/server/services/workshop/runtime/manager/admin-agents.ts +268 -0
  1554. package/server/services/workshop/runtime/manager/admin-channel.ts +276 -0
  1555. package/server/services/workshop/runtime/manager/bus.ts +182 -0
  1556. package/server/services/workshop/runtime/manager/channel-templates.ts +171 -0
  1557. package/server/services/workshop/runtime/manager/chat-reply.ts +181 -0
  1558. package/server/services/workshop/runtime/manager/chat.ts +384 -0
  1559. package/server/services/workshop/runtime/manager/contracts.ts +210 -0
  1560. package/server/services/workshop/runtime/manager/facade.ts +24 -0
  1561. package/server/services/workshop/runtime/manager/helpers.ts +119 -0
  1562. package/server/services/workshop/runtime/manager/host-tools.ts +249 -0
  1563. package/server/services/workshop/runtime/manager/index.ts +42 -0
  1564. package/server/services/workshop/runtime/manager/internal.ts +73 -0
  1565. package/server/services/workshop/runtime/manager/lead-team.ts +161 -0
  1566. package/server/services/workshop/runtime/manager/notifications.ts +108 -0
  1567. package/server/services/workshop/runtime/manager/runtime-observe.ts +300 -0
  1568. package/server/services/workshop/runtime/manager/runtime-wiring.ts +307 -0
  1569. package/server/services/workshop/runtime/manager/schedules.ts +302 -0
  1570. package/server/services/workshop/runtime/manager/state.ts +644 -0
  1571. package/server/services/workshop/runtime/manager/tasks.ts +518 -0
  1572. package/server/services/workshop/runtime/manager/teams.ts +148 -0
  1573. package/server/services/workshop/runtime/manager/types.ts +245 -0
  1574. package/server/services/workshop/runtime/manager/workspace.ts +136 -0
  1575. package/server/services/workshop/runtime/memory/contracts.ts +18 -0
  1576. package/server/services/workshop/runtime/memory/facade.ts +10 -0
  1577. package/server/services/workshop/runtime/memory/governance.ts +184 -0
  1578. package/server/services/workshop/runtime/memory/helpers.ts +196 -0
  1579. package/server/services/workshop/runtime/memory/index.ts +27 -0
  1580. package/server/services/workshop/runtime/memory/recall.ts +216 -0
  1581. package/server/services/workshop/runtime/memory/score.ts +33 -0
  1582. package/server/services/workshop/runtime/memory/state.ts +40 -0
  1583. package/server/services/workshop/runtime/memory/types.ts +44 -0
  1584. package/server/services/workshop/runtime/memory/write.ts +93 -0
  1585. package/server/services/workshop/runtime/permission-scope.ts +81 -0
  1586. package/server/services/workshop/runtime/schedule-runtime.ts +320 -0
  1587. package/server/services/workshop/runtime/scheduler-loop/contracts.ts +29 -0
  1588. package/server/services/workshop/runtime/scheduler-loop/execute.ts +295 -0
  1589. package/server/services/workshop/runtime/scheduler-loop/facade.ts +7 -0
  1590. package/server/services/workshop/runtime/scheduler-loop/helpers.ts +14 -0
  1591. package/server/services/workshop/runtime/scheduler-loop/index.ts +16 -0
  1592. package/server/services/workshop/runtime/scheduler-loop/rules.ts +131 -0
  1593. package/server/services/workshop/runtime/scheduler-loop/snapshot.ts +99 -0
  1594. package/server/services/workshop/runtime/scheduler-loop/state.ts +150 -0
  1595. package/server/services/workshop/runtime/scheduler-loop/tick.ts +157 -0
  1596. package/server/services/workshop/runtime/scheduler-loop/types.ts +50 -0
  1597. package/server/services/workshop/runtime/task-engine/contracts.ts +16 -0
  1598. package/server/services/workshop/runtime/task-engine/create.ts +145 -0
  1599. package/server/services/workshop/runtime/task-engine/facade.ts +7 -0
  1600. package/server/services/workshop/runtime/task-engine/helpers.ts +87 -0
  1601. package/server/services/workshop/runtime/task-engine/index.ts +15 -0
  1602. package/server/services/workshop/runtime/task-engine/lease.ts +79 -0
  1603. package/server/services/workshop/runtime/task-engine/lifecycle.ts +308 -0
  1604. package/server/services/workshop/runtime/task-engine/policy.ts +113 -0
  1605. package/server/services/workshop/runtime/task-engine/transition.ts +146 -0
  1606. package/server/services/workshop/runtime/task-engine/types.ts +3 -0
  1607. package/server/services/workshop/runtime/task-engine/update.ts +116 -0
  1608. package/server/services/workshop/runtime/task-engine/views.ts +169 -0
  1609. package/server/services/workshop/runtime/user-notification-hub.ts +192 -0
  1610. package/server/services/workshop/settings.ts +32 -0
  1611. package/server/services/workshop/types/task.ts +85 -0
  1612. package/server/utils/errors.ts +2 -0
  1613. package/server/utils/mojibake-guard.ts +29 -0
  1614. package/shared/config/schema.json +12 -0
  1615. package/shared/dcw-protocol/catalog.ts +203 -0
  1616. package/shared/dcw-protocol/closed-loop.ts +137 -0
  1617. package/shared/dcw-protocol/index.ts +19 -0
  1618. package/shared/dcw-protocol/line.ts +131 -0
  1619. package/shared/dcw-protocol/recipe.ts +301 -0
  1620. package/shared/workshop-protocol.ts +327 -5
  1621. package/tui/aw-tui.mjs +27 -6
  1622. package/tui/lib/pickers.mjs +21 -2
  1623. package/.output/public/_nuxt/4sIEbgcl.js +0 -42
  1624. package/.output/public/_nuxt/B7gZokg82.js +0 -209
  1625. package/.output/public/_nuxt/B8uy9iRW.js +0 -1
  1626. package/.output/public/_nuxt/BC9wjTJK2.js +0 -4
  1627. package/.output/public/_nuxt/BCGafdXT.js +0 -2
  1628. package/.output/public/_nuxt/BDmh31hl.js +0 -1
  1629. package/.output/public/_nuxt/BFjGV-RV2.js +0 -4108
  1630. package/.output/public/_nuxt/BGTYYQH-.js +0 -1
  1631. package/.output/public/_nuxt/BHA40aHa.js +0 -1
  1632. package/.output/public/_nuxt/BJHKLJJU.js +0 -1
  1633. package/.output/public/_nuxt/BN6iuJEg2.js +0 -1
  1634. package/.output/public/_nuxt/BU83-NnX.js +0 -106
  1635. package/.output/public/_nuxt/BUmHEJ77.js +0 -2
  1636. package/.output/public/_nuxt/BY7YrV_D.js +0 -1
  1637. package/.output/public/_nuxt/BYhEUx8t.js +0 -17
  1638. package/.output/public/_nuxt/BneN7fbu.js +0 -75
  1639. package/.output/public/_nuxt/Bqcgz95s.js +0 -18
  1640. package/.output/public/_nuxt/C3J6FYKa.js +0 -1
  1641. package/.output/public/_nuxt/C3gwHTz0.js +0 -1
  1642. package/.output/public/_nuxt/C4DWUZ6d2.js +0 -1
  1643. package/.output/public/_nuxt/C7UlqPeD.js +0 -1
  1644. package/.output/public/_nuxt/CClOy-Hz2.js +0 -1
  1645. package/.output/public/_nuxt/CFxtLwjp.js +0 -1
  1646. package/.output/public/_nuxt/CS50LB_l.js +0 -1
  1647. package/.output/public/_nuxt/CSkxz2NX.js +0 -3
  1648. package/.output/public/_nuxt/CTmDn-YP.js +0 -1
  1649. package/.output/public/_nuxt/CWoJjWmZ.js +0 -1
  1650. package/.output/public/_nuxt/CYWVXZTS2.js +0 -7
  1651. package/.output/public/_nuxt/C__m4EhR.js +0 -1
  1652. package/.output/public/_nuxt/CoNpEq5X.js +0 -1
  1653. package/.output/public/_nuxt/Crod5z2f.js +0 -1
  1654. package/.output/public/_nuxt/Cs8pVeVG.js +0 -1
  1655. package/.output/public/_nuxt/CssgYAAL2.js +0 -1
  1656. package/.output/public/_nuxt/CzlMDL5H.js +0 -13
  1657. package/.output/public/_nuxt/D0ZBQrN_2.js +0 -1
  1658. package/.output/public/_nuxt/D6uzXueg.js +0 -2
  1659. package/.output/public/_nuxt/D98NH8kG.js +0 -1
  1660. package/.output/public/_nuxt/D9Oidm5I.js +0 -1
  1661. package/.output/public/_nuxt/DBHNsT1Y.js +0 -23
  1662. package/.output/public/_nuxt/DDgJcSET.js +0 -19
  1663. package/.output/public/_nuxt/DGIuvyRN2.js +0 -1
  1664. package/.output/public/_nuxt/DGj-WEBg.js +0 -1
  1665. package/.output/public/_nuxt/DHFrCUxA2.js +0 -13
  1666. package/.output/public/_nuxt/DIaZ2PTo2.js +0 -1
  1667. package/.output/public/_nuxt/DKySmNPI.js +0 -14
  1668. package/.output/public/_nuxt/DPnwL14Y.js +0 -1
  1669. package/.output/public/_nuxt/DR12_WCA.js +0 -3
  1670. package/.output/public/_nuxt/DTFCy6h-.js +0 -1
  1671. package/.output/public/_nuxt/DYr1VMiQ.js +0 -6
  1672. package/.output/public/_nuxt/DZtm4l-P2.js +0 -1
  1673. package/.output/public/_nuxt/DdD9mCHM.js +0 -1
  1674. package/.output/public/_nuxt/DeyBFhKH2.js +0 -4
  1675. package/.output/public/_nuxt/Di0NY_ht.js +0 -1
  1676. package/.output/public/_nuxt/DkGQ7lnb2.js +0 -1
  1677. package/.output/public/_nuxt/DtYHUi5Z.js +0 -1
  1678. package/.output/public/_nuxt/Dz_Q3Lpw2.js +0 -1
  1679. package/.output/public/_nuxt/DzbFpZRk.js +0 -3
  1680. package/.output/public/_nuxt/EHlEMRii.js +0 -1
  1681. package/.output/public/_nuxt/Eke1fs-U.js +0 -1
  1682. package/.output/public/_nuxt/H0BcqZtT.js +0 -9
  1683. package/.output/public/_nuxt/HSYEkkce.js +0 -1
  1684. package/.output/public/_nuxt/IREZ1eC2.js +0 -1
  1685. package/.output/public/_nuxt/J9oU00D1.js +0 -1
  1686. package/.output/public/_nuxt/JCoYF4IJ.js +0 -31
  1687. package/.output/public/_nuxt/JTLM-kqr2.js +0 -1
  1688. package/.output/public/_nuxt/KZQX7xoM.js +0 -3
  1689. package/.output/public/_nuxt/OmpTerminalPanel.BxR5-lvi.css +0 -1
  1690. package/.output/public/_nuxt/RYFtK4qZ2.js +0 -1
  1691. package/.output/public/_nuxt/SSyAPaHc.js +0 -1
  1692. package/.output/public/_nuxt/TownView.li4EMQxK.css +0 -1
  1693. package/.output/public/_nuxt/VdLk4jLE2.js +0 -1
  1694. package/.output/public/_nuxt/YnQxK3eG.js +0 -1
  1695. package/.output/public/_nuxt/_id_.BhsXoEuk.css +0 -1
  1696. package/.output/public/_nuxt/_id_.DQyj-WKN.css +0 -1
  1697. package/.output/public/_nuxt/_wsId_.CTx-BlfF.css +0 -1
  1698. package/.output/public/_nuxt/aLLjF2K-2.js +0 -1
  1699. package/.output/public/_nuxt/aShsv_rG.js +0 -19
  1700. package/.output/public/_nuxt/aWWIh8YL.js +0 -24
  1701. package/.output/public/_nuxt/aesgXKSr.js +0 -4
  1702. package/.output/public/_nuxt/agents.B21nUEUX.css +0 -1
  1703. package/.output/public/_nuxt/aml.ekTjxFkf.css +0 -1
  1704. package/.output/public/_nuxt/builds/meta/b5506ef0-f48e-4f14-a6c0-d65e505d0b09.json +0 -1
  1705. package/.output/public/_nuxt/ca4TJ3Op.js +0 -1
  1706. package/.output/public/_nuxt/daq.BdVmoIfe.css +0 -1
  1707. package/.output/public/_nuxt/dcw.DCgyzpWV.css +0 -1
  1708. package/.output/public/_nuxt/default.Bh3L2HU8.css +0 -1
  1709. package/.output/public/_nuxt/entry.bdm0tv6M.css +0 -1
  1710. package/.output/public/_nuxt/jZsY8yYz.js +0 -1
  1711. package/.output/public/_nuxt/lHAxdSsj.js +0 -1
  1712. package/.output/public/_nuxt/logs.BpKzmKsh.css +0 -1
  1713. package/.output/public/_nuxt/monitor.D9pe7qN6.css +0 -1
  1714. package/.output/public/_nuxt/pages.j9rzRocr.css +0 -1
  1715. package/.output/public/_nuxt/pdk8jLGT.js +0 -1
  1716. package/.output/public/_nuxt/permissions.DwTVlFe6.css +0 -1
  1717. package/.output/public/_nuxt/plugins.DhiZbHU8.css +0 -1
  1718. package/.output/public/_nuxt/settings.BRx9rIDg.css +0 -1
  1719. package/.output/public/_nuxt/teams.BLlOPB_Z.css +0 -1
  1720. package/.output/public/_nuxt/tokens.De8xzszn.css +0 -1
  1721. package/.output/public/_nuxt/town.BLrD9-WH.css +0 -1
  1722. package/.output/public/_nuxt/users.DLgZ1D0h.css +0 -1
  1723. package/.output/public/_nuxt/vRTjoWqd.js +0 -1
  1724. package/.output/public/_nuxt/workshop.D1jFNkrn.css +0 -1
  1725. package/.output/public/_nuxt/xh3_vYcu.js +0 -1
  1726. package/.output/public/_nuxt/zq5t1vyX.js +0 -1
  1727. package/.output/server/chunks/build/Checkbox-eax2M3o-.mjs +0 -207
  1728. package/.output/server/chunks/build/Checkbox-eax2M3o-.mjs.map +0 -1
  1729. package/.output/server/chunks/build/OmpTerminalPanel-CVvxpsF7.mjs +0 -915
  1730. package/.output/server/chunks/build/OmpTerminalPanel-CVvxpsF7.mjs.map +0 -1
  1731. package/.output/server/chunks/build/PluginSlot-CcR4Ys3T.mjs +0 -400
  1732. package/.output/server/chunks/build/PluginSlot-CcR4Ys3T.mjs.map +0 -1
  1733. package/.output/server/chunks/build/TownView-CJ6IsDCc.mjs +0 -2791
  1734. package/.output/server/chunks/build/TownView-CJ6IsDCc.mjs.map +0 -1
  1735. package/.output/server/chunks/build/_id_-CVD_H0ir.mjs +0 -804
  1736. package/.output/server/chunks/build/_id_-CVD_H0ir.mjs.map +0 -1
  1737. package/.output/server/chunks/build/_id_-CtxMb3qp.mjs +0 -381
  1738. package/.output/server/chunks/build/_id_-CtxMb3qp.mjs.map +0 -1
  1739. package/.output/server/chunks/build/_wsId_-DpY3T-md.mjs +0 -10136
  1740. package/.output/server/chunks/build/_wsId_-DpY3T-md.mjs.map +0 -1
  1741. package/.output/server/chunks/build/agents-DsCkuXDV.mjs +0 -1114
  1742. package/.output/server/chunks/build/agents-DsCkuXDV.mjs.map +0 -1
  1743. package/.output/server/chunks/build/aml-CT0xKGKI.mjs +0 -605
  1744. package/.output/server/chunks/build/aml-CT0xKGKI.mjs.map +0 -1
  1745. package/.output/server/chunks/build/api-error-dul30BYQ.mjs +0 -47
  1746. package/.output/server/chunks/build/api-error-dul30BYQ.mjs.map +0 -1
  1747. package/.output/server/chunks/build/apiClient-BwnfOQU8.mjs +0 -81
  1748. package/.output/server/chunks/build/apiClient-BwnfOQU8.mjs.map +0 -1
  1749. package/.output/server/chunks/build/button-DEcZFcqN.mjs +0 -1938
  1750. package/.output/server/chunks/build/button-DEcZFcqN.mjs.map +0 -1
  1751. package/.output/server/chunks/build/card-Dipvaykh.mjs +0 -955
  1752. package/.output/server/chunks/build/card-Dipvaykh.mjs.map +0 -1
  1753. package/.output/server/chunks/build/channel-templates-Dla9FbYa.mjs +0 -847
  1754. package/.output/server/chunks/build/channel-templates-Dla9FbYa.mjs.map +0 -1
  1755. package/.output/server/chunks/build/checkbox-8fB-wI-T.mjs +0 -439
  1756. package/.output/server/chunks/build/checkbox-8fB-wI-T.mjs.map +0 -1
  1757. package/.output/server/chunks/build/client-only-D5BzSQc6.mjs +0 -43
  1758. package/.output/server/chunks/build/client-only-D5BzSQc6.mjs.map +0 -1
  1759. package/.output/server/chunks/build/daq-DWWSKGAV.mjs +0 -1059
  1760. package/.output/server/chunks/build/daq-DWWSKGAV.mjs.map +0 -1
  1761. package/.output/server/chunks/build/dcw-CT8k17_E.mjs +0 -250
  1762. package/.output/server/chunks/build/dcw-CT8k17_E.mjs.map +0 -1
  1763. package/.output/server/chunks/build/default-D3525UFX.mjs +0 -1487
  1764. package/.output/server/chunks/build/default-D3525UFX.mjs.map +0 -1
  1765. package/.output/server/chunks/build/drawer-Cmh90erI.mjs +0 -836
  1766. package/.output/server/chunks/build/drawer-Cmh90erI.mjs.map +0 -1
  1767. package/.output/server/chunks/build/dropdown-CGQ0KAzA.mjs +0 -14
  1768. package/.output/server/chunks/build/dropdown-CGQ0KAzA.mjs.map +0 -1
  1769. package/.output/server/chunks/build/dropdown-vhn1NPFs.mjs +0 -558
  1770. package/.output/server/chunks/build/dropdown-vhn1NPFs.mjs.map +0 -1
  1771. package/.output/server/chunks/build/initDefaultProps-DIbWwP4R.mjs +0 -21
  1772. package/.output/server/chunks/build/initDefaultProps-DIbWwP4R.mjs.map +0 -1
  1773. package/.output/server/chunks/build/input-number-DzpyYB99.mjs +0 -1521
  1774. package/.output/server/chunks/build/input-number-DzpyYB99.mjs.map +0 -1
  1775. package/.output/server/chunks/build/input-sf_BT6o6.mjs +0 -2617
  1776. package/.output/server/chunks/build/input-sf_BT6o6.mjs.map +0 -1
  1777. package/.output/server/chunks/build/logs--dByNyhw.mjs +0 -198
  1778. package/.output/server/chunks/build/logs--dByNyhw.mjs.map +0 -1
  1779. package/.output/server/chunks/build/menu-WCrlpYVh.mjs +0 -1950
  1780. package/.output/server/chunks/build/menu-WCrlpYVh.mjs.map +0 -1
  1781. package/.output/server/chunks/build/modal-yvUquPj5.mjs +0 -1272
  1782. package/.output/server/chunks/build/modal-yvUquPj5.mjs.map +0 -1
  1783. package/.output/server/chunks/build/monitor-Dh2Kvaq5.mjs +0 -2212
  1784. package/.output/server/chunks/build/monitor-Dh2Kvaq5.mjs.map +0 -1
  1785. package/.output/server/chunks/build/pages-BHcSBM2D.mjs +0 -518
  1786. package/.output/server/chunks/build/pages-BHcSBM2D.mjs.map +0 -1
  1787. package/.output/server/chunks/build/permissions-68SsNjex.mjs +0 -629
  1788. package/.output/server/chunks/build/permissions-68SsNjex.mjs.map +0 -1
  1789. package/.output/server/chunks/build/plugins-BNgIi61W.mjs +0 -246
  1790. package/.output/server/chunks/build/plugins-BNgIi61W.mjs.map +0 -1
  1791. package/.output/server/chunks/build/popconfirm-CRaHcz5O.mjs +0 -342
  1792. package/.output/server/chunks/build/popconfirm-CRaHcz5O.mjs.map +0 -1
  1793. package/.output/server/chunks/build/segmented-3TrWo0lS.mjs +0 -5047
  1794. package/.output/server/chunks/build/segmented-3TrWo0lS.mjs.map +0 -1
  1795. package/.output/server/chunks/build/select-D-CeE5vY.mjs +0 -3923
  1796. package/.output/server/chunks/build/select-D-CeE5vY.mjs.map +0 -1
  1797. package/.output/server/chunks/build/settings-ipYBDWdn.mjs +0 -1175
  1798. package/.output/server/chunks/build/settings-ipYBDWdn.mjs.map +0 -1
  1799. package/.output/server/chunks/build/space-CCBYAkXt.mjs +0 -197
  1800. package/.output/server/chunks/build/space-CCBYAkXt.mjs.map +0 -1
  1801. package/.output/server/chunks/build/spin-HVY81X_L.mjs +0 -358
  1802. package/.output/server/chunks/build/spin-HVY81X_L.mjs.map +0 -1
  1803. package/.output/server/chunks/build/switch-CelRXpcy.mjs +0 -377
  1804. package/.output/server/chunks/build/switch-CelRXpcy.mjs.map +0 -1
  1805. package/.output/server/chunks/build/table-BjSWwmic.mjs +0 -8883
  1806. package/.output/server/chunks/build/table-BjSWwmic.mjs.map +0 -1
  1807. package/.output/server/chunks/build/tabs-BM3tAh_J.mjs +0 -1925
  1808. package/.output/server/chunks/build/tabs-BM3tAh_J.mjs.map +0 -1
  1809. package/.output/server/chunks/build/tag-DNE9vXc0.mjs +0 -1029
  1810. package/.output/server/chunks/build/tag-DNE9vXc0.mjs.map +0 -1
  1811. package/.output/server/chunks/build/teams-5lx-CwFa.mjs +0 -1218
  1812. package/.output/server/chunks/build/teams-5lx-CwFa.mjs.map +0 -1
  1813. package/.output/server/chunks/build/tokens-q-IDT8Io.mjs +0 -908
  1814. package/.output/server/chunks/build/tokens-q-IDT8Io.mjs.map +0 -1
  1815. package/.output/server/chunks/build/town-BUqRobze.mjs +0 -52
  1816. package/.output/server/chunks/build/town-BUqRobze.mjs.map +0 -1
  1817. package/.output/server/chunks/build/town-QJWB5wng.mjs +0 -125
  1818. package/.output/server/chunks/build/town-QJWB5wng.mjs.map +0 -1
  1819. package/.output/server/chunks/build/useDaqStream-DfCFpb3p.mjs +0 -395
  1820. package/.output/server/chunks/build/useDaqStream-DfCFpb3p.mjs.map +0 -1
  1821. package/.output/server/chunks/build/useDcwStream-UPiX-3iO.mjs +0 -435
  1822. package/.output/server/chunks/build/useDcwStream-UPiX-3iO.mjs.map +0 -1
  1823. package/.output/server/chunks/build/useDeviceTwins-Yko6nNPF.mjs +0 -128
  1824. package/.output/server/chunks/build/useDeviceTwins-Yko6nNPF.mjs.map +0 -1
  1825. package/.output/server/chunks/build/useOpsLog-CO_VWh7t.mjs +0 -137
  1826. package/.output/server/chunks/build/useOpsLog-CO_VWh7t.mjs.map +0 -1
  1827. package/.output/server/chunks/build/useWorkshopApi-NyjL0L3j.mjs +0 -90
  1828. package/.output/server/chunks/build/useWorkshopApi-NyjL0L3j.mjs.map +0 -1
  1829. package/.output/server/chunks/build/useWorkshopWs-C_I7q9As.mjs +0 -1319
  1830. package/.output/server/chunks/build/useWorkshopWs-C_I7q9As.mjs.map +0 -1
  1831. package/.output/server/chunks/build/users-Cfd5-l2-.mjs +0 -561
  1832. package/.output/server/chunks/build/users-Cfd5-l2-.mjs.map +0 -1
  1833. package/.output/server/chunks/build/workshop-BIlCj_ZP.mjs +0 -931
  1834. package/.output/server/chunks/build/workshop-BIlCj_ZP.mjs.map +0 -1
  1835. package/.output/server/chunks/build/workspaces-Bgz5Ekwp.mjs +0 -139
  1836. package/.output/server/chunks/build/workspaces-Bgz5Ekwp.mjs.map +0 -1
  1837. package/scripts/test-agent-brain.ts +0 -135
  1838. package/scripts/test-game-session.ts +0 -160
  1839. package/scripts/test-protocol.ts +0 -156
  1840. package/scripts/verify-game.mjs +0 -477
  1841. package/server/api/workshop/ws.ts +0 -763
  1842. package/server/services/system-config.ts +0 -629
  1843. package/server/services/workshop/agents/adapters/omp-rpc-client.ts +0 -604
  1844. package/server/services/workshop/agents/codex-agent.ts +0 -743
  1845. package/server/services/workshop/agents/harness-terminal.ts +0 -625
  1846. package/server/services/workshop/agents/host-tool-bridge.ts +0 -714
  1847. package/server/services/workshop/agents/industrial-tools.ts +0 -1680
  1848. package/server/services/workshop/agents/omp-agent.ts +0 -1199
  1849. package/server/services/workshop/agents/opencode-agent.ts +0 -960
  1850. package/server/services/workshop/aml/job-orchestrator.ts +0 -639
  1851. package/server/services/workshop/daq/daq-controller.ts +0 -1284
  1852. package/server/services/workshop/daq/drivers.ts +0 -1196
  1853. package/server/services/workshop/db/database.ts +0 -1044
  1854. package/server/services/workshop/dcw/dcw-controller.ts +0 -1176
  1855. package/server/services/workshop/dcw/drivers.ts +0 -731
  1856. package/server/services/workshop/dcw/recipe-rollback-manager.ts +0 -713
  1857. package/server/services/workshop/runtime/agent-runtime.ts +0 -821
  1858. package/server/services/workshop/runtime/manager.ts +0 -3050
  1859. package/server/services/workshop/runtime/memory.ts +0 -681
  1860. package/server/services/workshop/runtime/scheduler-loop.ts +0 -799
  1861. package/server/services/workshop/runtime/task-engine.ts +0 -574
  1862. package/shared/dcw-protocol.ts +0 -747
  1863. /package/.output/public/_nuxt/{BrIJiJSN.js → BrIJiJSN2.js} +0 -0
  1864. /package/.output/public/_nuxt/{CNs_Ozdc2.js → CNs_Ozdc.js} +0 -0
  1865. /package/.output/public/_nuxt/{DIOBYJe3.js → DIOBYJe32.js} +0 -0
  1866. /package/.output/public/_nuxt/{lO5tpDZ5.js → lO5tpDZ52.js} +0 -0
@@ -1,209 +0,0 @@
1
- import{t as e}from"./BBrRELH32.js";import{n as t,t as n}from"./CWKEp1wx2.js";import{$ as r,A as i,B as a,C as o,Ct as s,D as c,E as l,F as u,G as d,H as f,I as p,J as m,K as h,L as g,M as _,N as v,O as y,P as b,Q as x,R as S,S as ee,St as C,T as w,U as te,V as ne,W as T,X as re,Y as E,Z as ie,_ as ae,_t as oe,a as D,at as se,b as ce,bt as O,ct as k,d as A,dt as le,et as ue,f as de,ft as j,g as fe,gt as pe,h as me,ht as M,i as N,it as P,j as he,k as F,l as ge,lt as I,m as L,mt as _e,n as R,nt as ve,o as ye,ot as be,p as xe,pt as Se,q as z,r as B,rt as Ce,s as we,st as Te,t as Ee,tt as De,u as V,v as Oe,vt as ke,w as H,x as Ae,xt as U,y as je,yt as W,z as Me}from"./BFjGV-RV2.js";var G=new be,K=new C,q=new C,J=new P,Ne={X:new C(1,0,0),Y:new C(0,1,0),Z:new C(0,0,1)},Pe={type:`change`},Fe={type:`mouseDown`,mode:null},Ie={type:`mouseUp`,mode:null},Le={type:`objectChange`},Re=class extends he{constructor(e,t=null){super(void 0,t);let n=new nt(this);this._root=n;let r=new rt;this._gizmo=r,n.add(r);let i=new it;this._plane=i,n.add(i);let a=this;function o(e,t){let n=t;Object.defineProperty(a,e,{get:function(){return n===void 0?t:n},set:function(t){n!==t&&(n=t,i[e]=t,r[e]=t,a.dispatchEvent({type:e+`-changed`,value:t}),a.dispatchEvent(Pe))}}),a[e]=t,i[e]=t,r[e]=t}o(`camera`,e),o(`object`,void 0),o(`enabled`,!0),o(`axis`,null),o(`mode`,`translate`),o(`translationSnap`,null),o(`rotationSnap`,null),o(`scaleSnap`,null),o(`space`,`world`),o(`size`,1),this.viewport=null,o(`dragging`,!1),o(`showX`,!0),o(`showY`,!0),o(`showZ`,!0),o(`showXY`,!0),o(`showYZ`,!0),o(`showXZ`,!0),o(`showXYZE`,!0),o(`showE`,!0),o(`minX`,-1/0),o(`maxX`,1/0),o(`minY`,-1/0),o(`maxY`,1/0),o(`minZ`,-1/0),o(`maxZ`,1/0);let s=new C,c=new C,l=new P,u=new P,d=new C,f=new P,p=new C,m=new C,h=new C,g=new C;o(`worldPosition`,s),o(`worldPositionStart`,c),o(`worldQuaternion`,l),o(`worldQuaternionStart`,u),o(`cameraPosition`,d),o(`cameraQuaternion`,f),o(`pointStart`,p),o(`pointEnd`,m),o(`rotationAxis`,h),o(`rotationAngle`,0),o(`eye`,g),this._offset=new C,this._startNorm=new C,this._endNorm=new C,this._cameraScale=new C,this._parentPosition=new C,this._parentQuaternion=new P,this._parentQuaternionInv=new P,this._parentScale=new C,this._worldScaleStart=new C,this._worldQuaternionInv=new P,this._worldScale=new C,this._positionStart=new C,this._quaternionStart=new P,this._scaleStart=new C,this._getPointer=ze.bind(this),this._onPointerDown=Ve.bind(this),this._onPointerHover=Be.bind(this),this._onPointerMove=He.bind(this),this._onPointerUp=Ue.bind(this),t!==null&&this.connect(t)}connect(e){super.connect(e),this.domElement.addEventListener(`pointerdown`,this._onPointerDown),this.domElement.addEventListener(`pointermove`,this._onPointerHover),this.domElement.addEventListener(`pointerup`,this._onPointerUp),this.domElement.style.touchAction=`none`}disconnect(){this.domElement.removeEventListener(`pointerdown`,this._onPointerDown),this.domElement.removeEventListener(`pointermove`,this._onPointerHover),this.domElement.removeEventListener(`pointermove`,this._onPointerMove),this.domElement.removeEventListener(`pointerup`,this._onPointerUp),this.domElement.style.touchAction=``}getHelper(){return this._root}pointerHover(e){if(this.object===void 0||this.dragging===!0)return;e!==null&&G.setFromCamera(e,this.camera);let t=We(this._gizmo.picker[this.mode],G);this.axis=t?t.object.name:null}pointerDown(e){if(!(this.object===void 0||this.dragging===!0||e!=null&&e.button!==0)&&this.axis!==null){e!==null&&G.setFromCamera(e,this.camera);let t=We(this._plane,G,!0);t&&(this.object.updateMatrixWorld(),this.object.parent.updateMatrixWorld(),this._positionStart.copy(this.object.position),this._quaternionStart.copy(this.object.quaternion),this._scaleStart.copy(this.object.scale),this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this._worldScaleStart),this.pointStart.copy(t.point).sub(this.worldPositionStart)),this.dragging=!0,Fe.mode=this.mode,this.dispatchEvent(Fe)}}pointerMove(e){let t=this.axis,n=this.mode,r=this.object,i=this.space;if(n===`scale`?i=`local`:(t===`E`||t===`XYZE`||t===`XYZ`)&&(i=`world`),r===void 0||t===null||this.dragging===!1||e!==null&&e.button!==-1)return;e!==null&&G.setFromCamera(e,this.camera);let a=We(this._plane,G,!0);if(a){if(this.pointEnd.copy(a.point).sub(this.worldPositionStart),n===`translate`)this._offset.copy(this.pointEnd).sub(this.pointStart),i===`local`&&t!==`XYZ`&&this._offset.applyQuaternion(this._worldQuaternionInv),t.indexOf(`X`)===-1&&(this._offset.x=0),t.indexOf(`Y`)===-1&&(this._offset.y=0),t.indexOf(`Z`)===-1&&(this._offset.z=0),i===`local`&&t!==`XYZ`?this._offset.applyQuaternion(this._quaternionStart).divide(this._parentScale):this._offset.applyQuaternion(this._parentQuaternionInv).divide(this._parentScale),r.position.copy(this._offset).add(this._positionStart),this.translationSnap&&(i===`local`&&(r.position.applyQuaternion(J.copy(this._quaternionStart).invert()),t.search(`X`)!==-1&&(r.position.x=Math.round(r.position.x/this.translationSnap)*this.translationSnap),t.search(`Y`)!==-1&&(r.position.y=Math.round(r.position.y/this.translationSnap)*this.translationSnap),t.search(`Z`)!==-1&&(r.position.z=Math.round(r.position.z/this.translationSnap)*this.translationSnap),r.position.applyQuaternion(this._quaternionStart)),i===`world`&&(r.getWorldPosition(K),t.search(`X`)!==-1&&(K.x=Math.round(K.x/this.translationSnap)*this.translationSnap),t.search(`Y`)!==-1&&(K.y=Math.round(K.y/this.translationSnap)*this.translationSnap),t.search(`Z`)!==-1&&(K.z=Math.round(K.z/this.translationSnap)*this.translationSnap),r.position.copy(r.parent.worldToLocal(K)))),r.position.x=Math.max(this.minX,Math.min(this.maxX,r.position.x)),r.position.y=Math.max(this.minY,Math.min(this.maxY,r.position.y)),r.position.z=Math.max(this.minZ,Math.min(this.maxZ,r.position.z));else if(n===`scale`){if(t.search(`XYZ`)!==-1){let e=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(e*=-1),q.set(e,e,e)}else K.copy(this.pointStart),q.copy(this.pointEnd),K.applyQuaternion(this._worldQuaternionInv),q.applyQuaternion(this._worldQuaternionInv),q.divide(K),t.search(`X`)===-1&&(q.x=1),t.search(`Y`)===-1&&(q.y=1),t.search(`Z`)===-1&&(q.z=1);r.scale.copy(this._scaleStart).multiply(q),this.scaleSnap&&(t.search(`X`)!==-1&&(r.scale.x=Math.round(r.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),t.search(`Y`)!==-1&&(r.scale.y=Math.round(r.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),t.search(`Z`)!==-1&&(r.scale.z=Math.round(r.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(n===`rotate`){this._offset.copy(this.pointEnd).sub(this.pointStart);let e=20/this.worldPosition.distanceTo(K.setFromMatrixPosition(this.camera.matrixWorld)),n=!1;t===`XYZE`?(this.rotationAxis.copy(this._offset).cross(this.eye).normalize(),this.rotationAngle=this._offset.dot(K.copy(this.rotationAxis).cross(this.eye))*e):(t===`X`||t===`Y`||t===`Z`)&&(this.rotationAxis.copy(Ne[t]),K.copy(Ne[t]),i===`local`&&K.applyQuaternion(this.worldQuaternion),K.cross(this.eye),K.length()===0?n=!0:this.rotationAngle=this._offset.dot(K.normalize())*e),(t===`E`||n)&&(this.rotationAxis.copy(this.eye),this.rotationAngle=this.pointEnd.angleTo(this.pointStart),this._startNorm.copy(this.pointStart).normalize(),this._endNorm.copy(this.pointEnd).normalize(),this.rotationAngle*=this._endNorm.cross(this._startNorm).dot(this.eye)<0?1:-1),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),i===`local`&&t!==`E`&&t!==`XYZE`?(r.quaternion.copy(this._quaternionStart),r.quaternion.multiply(J.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this._parentQuaternionInv),r.quaternion.copy(J.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),r.quaternion.multiply(this._quaternionStart).normalize())}this.dispatchEvent(Pe),this.dispatchEvent(Le)}}pointerUp(e){(e===null||e.button===0)&&(this.dragging&&this.axis!==null&&(Ie.mode=this.mode,this.dispatchEvent(Ie)),this.dragging=!1,this.axis=null)}dispose(){this.disconnect(),this._root.dispose()}attach(e){return this.object=e,this._root.visible=!0,this}detach(){return this.object=void 0,this.axis=null,this._root.visible=!1,this}reset(){this.enabled&&this.dragging&&(this.object.position.copy(this._positionStart),this.object.quaternion.copy(this._quaternionStart),this.object.scale.copy(this._scaleStart),this.dispatchEvent(Pe),this.dispatchEvent(Le),this.pointStart.copy(this.pointEnd))}getRaycaster(){return G}getMode(){return this.mode}setMode(e){this.mode=e}setTranslationSnap(e){this.translationSnap=e}setRotationSnap(e){this.rotationSnap=e}setScaleSnap(e){this.scaleSnap=e}setSize(e){this.size=e}setSpace(e){this.space=e}setColors(e,t,n,r){let i=this._gizmo.materialLib;i.xAxis.color.set(e),i.yAxis.color.set(t),i.zAxis.color.set(n),i.active.color.set(r),i.xAxisTransparent.color.set(e),i.yAxisTransparent.color.set(t),i.zAxisTransparent.color.set(n),i.activeTransparent.color.set(r),i.xAxis._color&&i.xAxis._color.set(e),i.yAxis._color&&i.yAxis._color.set(t),i.zAxis._color&&i.zAxis._color.set(n),i.active._color&&i.active._color.set(r),i.xAxisTransparent._color&&i.xAxisTransparent._color.set(e),i.yAxisTransparent._color&&i.yAxisTransparent._color.set(t),i.zAxisTransparent._color&&i.zAxisTransparent._color.set(n),i.activeTransparent._color&&i.activeTransparent._color.set(r)}};function ze(e){if(this.domElement.ownerDocument.pointerLockElement)return{x:0,y:0,button:e.button};{let t=this.domElement.getBoundingClientRect(),n=this.viewport,r,i,a,o;return n===null?(r=0,i=0,a=t.width,o=t.height):(r=n.x,i=t.height-n.y-n.w,a=n.z,o=n.w),{x:(e.clientX-t.left-r)/a*2-1,y:-(e.clientY-t.top-i)/o*2+1,button:e.button}}}function Be(e){if(this.enabled)switch(e.pointerType){case`mouse`:case`pen`:this.pointerHover(this._getPointer(e))}}function Ve(e){this.enabled&&(document.pointerLockElement||this.domElement.setPointerCapture(e.pointerId),this.domElement.addEventListener(`pointermove`,this._onPointerMove),this.pointerHover(this._getPointer(e)),this.pointerDown(this._getPointer(e)))}function He(e){this.enabled&&this.pointerMove(this._getPointer(e))}function Ue(e){this.enabled&&(this.domElement.releasePointerCapture(e.pointerId),this.domElement.removeEventListener(`pointermove`,this._onPointerMove),this.pointerUp(this._getPointer(e)))}function We(e,t,n){let r=t.intersectObject(e,!0);for(let e=0;e<r.length;e++)if(r[e].object.visible||n)return r[e];return!1}var Ge=new b,Y=new C(0,1,0),Ke=new C(0,0,0),qe=new d,Je=new P,Ye=new P,X=new C,Xe=new d,Ze=new C(1,0,0),Z=new C(0,1,0),Qe=new C(0,0,1),$e=new C,et=new C,tt=new C,nt=class extends re{constructor(e){super(),this.isTransformControlsRoot=!0,this.controls=e,this.visible=!1}updateMatrixWorld(e){let t=this.controls;t.object!==void 0&&(t.object.updateMatrixWorld(),t.object.parent===null?console.error(`TransformControls: The attached 3D object must be a part of the scene graph.`):t.object.parent.matrixWorld.decompose(t._parentPosition,t._parentQuaternion,t._parentScale),t.object.matrixWorld.decompose(t.worldPosition,t.worldQuaternion,t._worldScale),t._parentQuaternionInv.copy(t._parentQuaternion).invert(),t._worldQuaternionInv.copy(t.worldQuaternion).invert()),t.camera.updateMatrixWorld(),t.camera.matrixWorld.decompose(t.cameraPosition,t.cameraQuaternion,t._cameraScale),t.camera.isOrthographicCamera?t.camera.getWorldDirection(t.eye).negate():t.eye.copy(t.cameraPosition).sub(t.worldPosition).normalize(),this.parent&&(Xe.copy(this.parent.matrixWorld).invert(),Xe.decompose(this.position,this.quaternion,this.scale)),super.updateMatrixWorld(e)}dispose(){this.traverse(function(e){e.geometry&&e.geometry.dispose(),e.material&&e.material.dispose()})}},rt=class extends re{constructor(){super(),this.isTransformControlsGizmo=!0,this.type=`TransformControlsGizmo`;let e=new z({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),t=new ne({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),n=e.clone();n.opacity=.15;let r=t.clone();r.opacity=.5;let i=e.clone();i.color.setHex(16711680);let o=e.clone();o.color.setHex(65280);let s=e.clone();s.color.setHex(255);let c=e.clone();c.color.setHex(16711680),c.opacity=.5;let l=e.clone();l.color.setHex(65280),l.opacity=.5;let d=e.clone();d.color.setHex(255),d.opacity=.5;let f=e.clone();f.opacity=.25;let p=e.clone();p.color.setHex(16776960),p.opacity=.25;let m=e.clone();m.color.setHex(16776960);let g=e.clone();g.color.setHex(7895160),this.materialLib={xAxis:i,yAxis:o,zAxis:s,active:m,xAxisTransparent:c,yAxisTransparent:l,zAxisTransparent:d,activeTransparent:p};let v=new _(0,.04,.1,12);v.translate(0,.05,0);let y=new H(.08,.08,.08);y.translate(0,.04,0);let b=new w;b.setAttribute(`position`,new u([0,0,0,1,0,0],3));let x=new _(.0075,.0075,.5,3);x.translate(0,.25,0);function S(e,t){let n=new W(e,.0075,3,64,t*Math.PI*2);return n.rotateY(Math.PI/2),n.rotateX(Math.PI/2),n}function ee(){let e=new w;return e.setAttribute(`position`,new u([0,0,0,1,1,1],3)),e}let C={X:[[new h(v,i),[.5,0,0],[0,0,-Math.PI/2]],[new h(v,i),[-.5,0,0],[0,0,Math.PI/2]],[new h(x,i),[0,0,0],[0,0,-Math.PI/2]]],Y:[[new h(v,o),[0,.5,0]],[new h(v,o),[0,-.5,0],[Math.PI,0,0]],[new h(x,o)]],Z:[[new h(v,s),[0,0,.5],[Math.PI/2,0,0]],[new h(v,s),[0,0,-.5],[-Math.PI/2,0,0]],[new h(x,s),null,[Math.PI/2,0,0]]],XYZ:[[new h(new ie(.1,0),f),[0,0,0]]],XY:[[new h(new H(.15,.15,.01),d),[.15,.15,0]]],YZ:[[new h(new H(.15,.15,.01),c),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new h(new H(.15,.15,.01),l),[.15,0,.15],[-Math.PI/2,0,0]]]},te={X:[[new h(new _(.2,0,.6,4),n),[.3,0,0],[0,0,-Math.PI/2]],[new h(new _(.2,0,.6,4),n),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new h(new _(.2,0,.6,4),n),[0,.3,0]],[new h(new _(.2,0,.6,4),n),[0,-.3,0],[0,0,Math.PI]]],Z:[[new h(new _(.2,0,.6,4),n),[0,0,.3],[Math.PI/2,0,0]],[new h(new _(.2,0,.6,4),n),[0,0,-.3],[-Math.PI/2,0,0]]],XYZ:[[new h(new ie(.2,0),n)]],XY:[[new h(new H(.2,.2,.01),n),[.15,.15,0]]],YZ:[[new h(new H(.2,.2,.01),n),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new h(new H(.2,.2,.01),n),[.15,0,.15],[-Math.PI/2,0,0]]]},T={START:[[new h(new ie(.01,2),r),null,null,null,`helper`]],END:[[new h(new ie(.01,2),r),null,null,null,`helper`]],DELTA:[[new a(ee(),r),null,null,null,`helper`]],X:[[new a(b,r),[-1e3,0,0],null,[1e6,1,1],`helper`]],Y:[[new a(b,r),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],`helper`]],Z:[[new a(b,r),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],`helper`]]},E={XYZE:[[new h(S(.5,1),g),null,[0,Math.PI/2,0]]],X:[[new h(S(.5,.5),i)]],Y:[[new h(S(.5,.5),o),null,[0,0,-Math.PI/2]]],Z:[[new h(S(.5,.5),s),null,[0,Math.PI/2,0]]],E:[[new h(S(.75,1),p),null,[0,Math.PI/2,0]]]},ae={AXIS:[[new a(b,r),[-1e3,0,0],null,[1e6,1,1],`helper`]]},oe={XYZE:[[new h(new M(.25,10,8),n)]],X:[[new h(new W(.5,.1,4,24),n),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new h(new W(.5,.1,4,24),n),[0,0,0],[Math.PI/2,0,0]]],Z:[[new h(new W(.5,.1,4,24),n),[0,0,0],[0,0,-Math.PI/2]]],E:[[new h(new W(.75,.1,2,24),n)]]},D={X:[[new h(y,i),[.5,0,0],[0,0,-Math.PI/2]],[new h(x,i),[0,0,0],[0,0,-Math.PI/2]],[new h(y,i),[-.5,0,0],[0,0,Math.PI/2]]],Y:[[new h(y,o),[0,.5,0]],[new h(x,o)],[new h(y,o),[0,-.5,0],[0,0,Math.PI]]],Z:[[new h(y,s),[0,0,.5],[Math.PI/2,0,0]],[new h(x,s),[0,0,0],[Math.PI/2,0,0]],[new h(y,s),[0,0,-.5],[-Math.PI/2,0,0]]],XY:[[new h(new H(.15,.15,.01),d),[.15,.15,0]]],YZ:[[new h(new H(.15,.15,.01),c),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new h(new H(.15,.15,.01),l),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new h(new H(.1,.1,.1),f)]]},se={X:[[new h(new _(.2,0,.6,4),n),[.3,0,0],[0,0,-Math.PI/2]],[new h(new _(.2,0,.6,4),n),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new h(new _(.2,0,.6,4),n),[0,.3,0]],[new h(new _(.2,0,.6,4),n),[0,-.3,0],[0,0,Math.PI]]],Z:[[new h(new _(.2,0,.6,4),n),[0,0,.3],[Math.PI/2,0,0]],[new h(new _(.2,0,.6,4),n),[0,0,-.3],[-Math.PI/2,0,0]]],XY:[[new h(new H(.2,.2,.01),n),[.15,.15,0]]],YZ:[[new h(new H(.2,.2,.01),n),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new h(new H(.2,.2,.01),n),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new h(new H(.2,.2,.2),n),[0,0,0]]]},ce={X:[[new a(b,r),[-1e3,0,0],null,[1e6,1,1],`helper`]],Y:[[new a(b,r),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],`helper`]],Z:[[new a(b,r),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],`helper`]]};function O(e){let t=new re;for(let n in e)for(let r=e[n].length;r--;){let i=e[n][r][0].clone(),a=e[n][r][1],o=e[n][r][2],s=e[n][r][3],c=e[n][r][4];i.name=n,i.tag=c,a&&i.position.set(a[0],a[1],a[2]),o&&i.rotation.set(o[0],o[1],o[2]),s&&i.scale.set(s[0],s[1],s[2]),i.updateMatrix();let l=i.geometry.clone();l.applyMatrix4(i.matrix),i.geometry=l,i.renderOrder=1/0,i.position.set(0,0,0),i.rotation.set(0,0,0),i.scale.set(1,1,1),t.add(i)}return t}this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=O(C)),this.add(this.gizmo.rotate=O(E)),this.add(this.gizmo.scale=O(D)),this.add(this.picker.translate=O(te)),this.add(this.picker.rotate=O(oe)),this.add(this.picker.scale=O(se)),this.add(this.helper.translate=O(T)),this.add(this.helper.rotate=O(ae)),this.add(this.helper.scale=O(ce)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}updateMatrixWorld(e){let t=(this.mode===`scale`?`local`:this.space)===`local`?this.worldQuaternion:Ye;this.gizmo.translate.visible=this.mode===`translate`,this.gizmo.rotate.visible=this.mode===`rotate`,this.gizmo.scale.visible=this.mode===`scale`,this.helper.translate.visible=this.mode===`translate`,this.helper.rotate.visible=this.mode===`rotate`,this.helper.scale.visible=this.mode===`scale`;let n=[];n=n.concat(this.picker[this.mode].children),n=n.concat(this.gizmo[this.mode].children),n=n.concat(this.helper[this.mode].children);for(let e=0;e<n.length;e++){let r=n[e];r.visible=!0,r.rotation.set(0,0,0),r.position.copy(this.worldPosition);let i;if(i=this.camera.isOrthographicCamera?(this.camera.top-this.camera.bottom)/this.camera.zoom:this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),r.scale.set(1,1,1).multiplyScalar(i*this.size/4),r.tag===`helper`){r.visible=!1,r.name===`AXIS`?(r.visible=!!this.axis,this.axis===`X`&&(J.setFromEuler(Ge.set(0,0,0)),r.quaternion.copy(t).multiply(J),Math.abs(Y.copy(Ze).applyQuaternion(t).dot(this.eye))>.9&&(r.visible=!1)),this.axis===`Y`&&(J.setFromEuler(Ge.set(0,0,Math.PI/2)),r.quaternion.copy(t).multiply(J),Math.abs(Y.copy(Z).applyQuaternion(t).dot(this.eye))>.9&&(r.visible=!1)),this.axis===`Z`&&(J.setFromEuler(Ge.set(0,Math.PI/2,0)),r.quaternion.copy(t).multiply(J),Math.abs(Y.copy(Qe).applyQuaternion(t).dot(this.eye))>.9&&(r.visible=!1)),this.axis===`XYZE`&&(J.setFromEuler(Ge.set(0,Math.PI/2,0)),Y.copy(this.rotationAxis),r.quaternion.setFromRotationMatrix(qe.lookAt(Ke,Y,Z)),r.quaternion.multiply(J),r.visible=this.dragging),this.axis===`E`&&(r.visible=!1)):r.name===`START`?(r.position.copy(this.worldPositionStart),r.visible=this.dragging):r.name===`END`?(r.position.copy(this.worldPosition),r.visible=this.dragging):r.name===`DELTA`?(r.position.copy(this.worldPositionStart),r.quaternion.copy(this.worldQuaternionStart),K.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),K.applyQuaternion(this.worldQuaternionStart.clone().invert()),r.scale.copy(K),r.visible=this.dragging):(r.quaternion.copy(t),this.dragging?r.position.copy(this.worldPositionStart):r.position.copy(this.worldPosition),this.axis&&(r.visible=this.axis.search(r.name)!==-1));continue}if(r.quaternion.copy(t),this.mode===`translate`||this.mode===`scale`){let e=.99,n=.2;r.name===`X`&&Math.abs(Y.copy(Ze).applyQuaternion(t).dot(this.eye))>e&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name===`Y`&&Math.abs(Y.copy(Z).applyQuaternion(t).dot(this.eye))>e&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name===`Z`&&Math.abs(Y.copy(Qe).applyQuaternion(t).dot(this.eye))>e&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name===`XY`&&Math.abs(Y.copy(Qe).applyQuaternion(t).dot(this.eye))<n&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name===`YZ`&&Math.abs(Y.copy(Ze).applyQuaternion(t).dot(this.eye))<n&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name===`XZ`&&Math.abs(Y.copy(Z).applyQuaternion(t).dot(this.eye))<n&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1)}else this.mode===`rotate`&&(Je.copy(t),Y.copy(this.eye).applyQuaternion(J.copy(t).invert()),r.name.search(`E`)!==-1&&r.quaternion.setFromRotationMatrix(qe.lookAt(this.eye,Ke,Z)),r.name===`X`&&(J.setFromAxisAngle(Ze,Math.atan2(-Y.y,Y.z)),J.multiplyQuaternions(Je,J),r.quaternion.copy(J)),r.name===`Y`&&(J.setFromAxisAngle(Z,Math.atan2(Y.x,Y.z)),J.multiplyQuaternions(Je,J),r.quaternion.copy(J)),r.name===`Z`&&(J.setFromAxisAngle(Qe,Math.atan2(Y.y,Y.x)),J.multiplyQuaternions(Je,J),r.quaternion.copy(J)));r.visible=r.visible&&(r.name.indexOf(`X`)===-1||this.showX),r.visible=r.visible&&(r.name.indexOf(`Y`)===-1||this.showY),r.visible=r.visible&&(r.name.indexOf(`Z`)===-1||this.showZ),r.visible=r.visible&&(r.name.indexOf(`E`)===-1||this.showX&&this.showY&&this.showZ),r.visible=r.visible&&(r.name.indexOf(`XY`)===-1||this.showXY),r.visible=r.visible&&(r.name.indexOf(`YZ`)===-1||this.showYZ),r.visible=r.visible&&(r.name.indexOf(`XZ`)===-1||this.showXZ),r.visible=r.visible&&(r.name!==`E`||this.showE),r.visible=r.visible&&(r.name!==`XYZE`||this.showXYZE),r.material._color=r.material._color||r.material.color.clone(),r.material._opacity=r.material._opacity||r.material.opacity,r.material.color.copy(r.material._color),r.material.opacity=r.material._opacity,this.enabled&&this.axis&&(r.name===this.axis||this.axis.split(``).some(function(e){return r.name===e}))&&(r.material.color.copy(this.materialLib.active.color),r.material.opacity=1)}super.updateMatrixWorld(e)}},it=class extends h{constructor(){super(new ve(1e5,1e5,2,2),new z({visible:!1,wireframe:!0,side:2,transparent:!0,opacity:.1,toneMapped:!1})),this.isTransformControlsPlane=!0,this.type=`TransformControlsPlane`}updateMatrixWorld(e){let t=this.space;switch(this.position.copy(this.worldPosition),this.mode===`scale`&&(t=`local`),$e.copy(Ze).applyQuaternion(t===`local`?this.worldQuaternion:Ye),et.copy(Z).applyQuaternion(t===`local`?this.worldQuaternion:Ye),tt.copy(Qe).applyQuaternion(t===`local`?this.worldQuaternion:Ye),Y.copy(et),this.mode){case`translate`:case`scale`:switch(this.axis){case`X`:Y.copy(this.eye).cross($e),X.copy($e).cross(Y);break;case`Y`:Y.copy(this.eye).cross(et),X.copy(et).cross(Y);break;case`Z`:Y.copy(this.eye).cross(tt),X.copy(tt).cross(Y);break;case`XY`:X.copy(tt);break;case`YZ`:X.copy($e);break;case`XZ`:Y.copy(tt),X.copy(et);break;case`XYZ`:case`E`:X.set(0,0,0)}break;default:X.set(0,0,0)}X.length()===0?this.quaternion.copy(this.cameraQuaternion):(Xe.lookAt(K.set(0,0,0),X,Y),this.quaternion.setFromRotationMatrix(Xe)),super.updateMatrixWorld(e)}},at={name:`CopyShader`,uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:`
2
-
3
- varying vec2 vUv;
4
-
5
- void main() {
6
-
7
- vUv = uv;
8
- gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
9
-
10
- }`,fragmentShader:`
11
-
12
- uniform float opacity;
13
-
14
- uniform sampler2D tDiffuse;
15
-
16
- varying vec2 vUv;
17
-
18
- void main() {
19
-
20
- vec4 texel = texture2D( tDiffuse, vUv );
21
- gl_FragColor = opacity * texel;
22
-
23
-
24
- }`},Q=class{constructor(){this.isPass=!0,this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error(`THREE.Pass: .render() must be implemented in derived pass.`)}dispose(){}},ot=new x(-1,1,1,-1,0,1),st=new class extends w{constructor(){super(),this.setAttribute(`position`,new u([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute(`uv`,new u([0,2,0,0,2,0],2))}},ct=class{constructor(e){this._mesh=new h(st,e)}dispose(){this._mesh.geometry.dispose()}render(e){e.render(this._mesh,ot)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}},lt=class extends Q{constructor(e,t=`tDiffuse`){super(),this.textureID=t,this.uniforms=null,this.material=null,e instanceof j?(this.uniforms=e.uniforms,this.material=e):e&&(this.uniforms=O.clone(e.uniforms),this.material=new j({name:e.name===void 0?`unspecified`:e.name,defines:Object.assign({},e.defines),uniforms:this.uniforms,vertexShader:e.vertexShader,fragmentShader:e.fragmentShader})),this._fsQuad=new ct(this.material)}render(e,t,n){this.uniforms[this.textureID]&&(this.uniforms[this.textureID].value=n.texture),this._fsQuad.material=this.material,this.renderToScreen?(e.setRenderTarget(null),this._fsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),this._fsQuad.render(e))}dispose(){this.material.dispose(),this._fsQuad.dispose()}},ut=class extends Q{constructor(e,t){super(),this.scene=e,this.camera=t,this.clear=!0,this.needsSwap=!1,this.inverse=!1}render(e,t,n){let r=e.getContext(),i=e.state;i.buffers.color.setMask(!1),i.buffers.depth.setMask(!1),i.buffers.color.setLocked(!0),i.buffers.depth.setLocked(!0);let a,o;this.inverse?(a=0,o=1):(a=1,o=0),i.buffers.stencil.setTest(!0),i.buffers.stencil.setOp(r.REPLACE,r.REPLACE,r.REPLACE),i.buffers.stencil.setFunc(r.ALWAYS,a,4294967295),i.buffers.stencil.setClear(o),i.buffers.stencil.setLocked(!0),e.setRenderTarget(n),this.clear&&e.clear(),e.render(this.scene,this.camera),e.setRenderTarget(t),this.clear&&e.clear(),e.render(this.scene,this.camera),i.buffers.color.setLocked(!1),i.buffers.depth.setLocked(!1),i.buffers.color.setMask(!0),i.buffers.depth.setMask(!0),i.buffers.stencil.setLocked(!1),i.buffers.stencil.setFunc(r.EQUAL,1,4294967295),i.buffers.stencil.setOp(r.KEEP,r.KEEP,r.KEEP),i.buffers.stencil.setLocked(!0)}},dt=class extends Q{constructor(){super(),this.needsSwap=!1}render(e){e.state.buffers.stencil.setLocked(!1),e.state.buffers.stencil.setTest(!1)}},ft=class{constructor(e,t){if(this.renderer=e,this._pixelRatio=e.getPixelRatio(),t===void 0){let n=e.getSize(new U);this._width=n.width,this._height=n.height,t=new s(this._width*this._pixelRatio,this._height*this._pixelRatio,{type:S}),t.texture.name=`EffectComposer.rt1`}else this._width=t.width,this._height=t.height;this.renderTarget1=t,this.renderTarget2=t.clone(),this.renderTarget2.texture.name=`EffectComposer.rt2`,this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2,this.renderToScreen=!0,this.passes=[],this.copyPass=new lt(at),this.copyPass.material.blending=0,this.timer=new ke}swapBuffers(){let e=this.readBuffer;this.readBuffer=this.writeBuffer,this.writeBuffer=e}addPass(e){this.passes.push(e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}insertPass(e,t){this.passes.splice(t,0,e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}removePass(e){let t=this.passes.indexOf(e);t!==-1&&this.passes.splice(t,1)}isLastEnabledPass(e){for(let t=e+1;t<this.passes.length;t++)if(this.passes[t].enabled)return!1;return!0}render(e){this.timer.update(),e===void 0&&(e=this.timer.getDelta());let t=this.renderer.getRenderTarget(),n=!1;for(let t=0,r=this.passes.length;t<r;t++){let r=this.passes[t];if(r.enabled!==!1){if(r.renderToScreen=this.renderToScreen&&this.isLastEnabledPass(t),r.render(this.renderer,this.writeBuffer,this.readBuffer,e,n),r.needsSwap){if(n){let t=this.renderer.getContext(),n=this.renderer.state.buffers.stencil;n.setFunc(t.NOTEQUAL,1,4294967295),this.copyPass.render(this.renderer,this.writeBuffer,this.readBuffer,e),n.setFunc(t.EQUAL,1,4294967295)}this.swapBuffers()}ut!==void 0&&(r instanceof ut?n=!0:r instanceof dt&&(n=!1))}}this.renderer.setRenderTarget(t)}reset(e){if(e===void 0){let t=this.renderer.getSize(new U);this._pixelRatio=this.renderer.getPixelRatio(),this._width=t.width,this._height=t.height,e=this.renderTarget1.clone(),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.renderTarget1=e,this.renderTarget2=e.clone(),this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2}setSize(e,t){this._width=e,this._height=t;let n=this._width*this._pixelRatio,r=this._height*this._pixelRatio;this.renderTarget1.setSize(n,r),this.renderTarget2.setSize(n,r);for(let e=0;e<this.passes.length;e++)this.passes[e].setSize(n,r)}setPixelRatio(e){this._pixelRatio=e,this.setSize(this._width,this._height)}dispose(){this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.copyPass.dispose()}},pt=class extends Q{constructor(e,t,n=null,r=null,i=null){super(),this.scene=e,this.camera=t,this.overrideMaterial=n,this.clearColor=r,this.clearAlpha=i,this.clear=!0,this.clearDepth=!1,this.needsSwap=!1,this.isRenderPass=!0,this._oldClearColor=new F}render(e,t,n){let r=e.autoClear;e.autoClear=!1;let i,a;this.overrideMaterial!==null&&(a=this.scene.overrideMaterial,this.scene.overrideMaterial=this.overrideMaterial),this.clearColor!==null&&(e.getClearColor(this._oldClearColor),e.setClearColor(this.clearColor,e.getClearAlpha())),this.clearAlpha!==null&&(i=e.getClearAlpha(),e.setClearAlpha(this.clearAlpha)),this.clearDepth==1&&e.clearDepth(),e.setRenderTarget(this.renderToScreen?null:n),this.clear===!0&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),e.render(this.scene,this.camera),this.clearColor!==null&&e.setClearColor(this._oldClearColor),this.clearAlpha!==null&&e.setClearAlpha(i),this.overrideMaterial!==null&&(this.scene.overrideMaterial=a),e.autoClear=r}},mt={name:`LuminosityHighPassShader`,uniforms:{tDiffuse:{value:null},luminosityThreshold:{value:1},smoothWidth:{value:1},defaultColor:{value:new F(0)},defaultOpacity:{value:0}},vertexShader:`
25
-
26
- varying vec2 vUv;
27
-
28
- void main() {
29
-
30
- vUv = uv;
31
-
32
- gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
33
-
34
- }`,fragmentShader:`
35
-
36
- uniform sampler2D tDiffuse;
37
- uniform vec3 defaultColor;
38
- uniform float defaultOpacity;
39
- uniform float luminosityThreshold;
40
- uniform float smoothWidth;
41
-
42
- varying vec2 vUv;
43
-
44
- void main() {
45
-
46
- vec4 texel = texture2D( tDiffuse, vUv );
47
-
48
- float v = luminance( texel.xyz );
49
-
50
- vec4 outputColor = vec4( defaultColor.rgb, defaultOpacity );
51
-
52
- float alpha = smoothstep( luminosityThreshold, luminosityThreshold + smoothWidth, v );
53
-
54
- gl_FragColor = mix( outputColor, texel, alpha );
55
-
56
- }`},ht=class e extends Q{constructor(e,t=1,n,r){super(),this.strength=t,this.radius=n,this.threshold=r,this.resolution=e===void 0?new U(256,256):new U(e.x,e.y),this.clearColor=new F(0,0,0),this.needsSwap=!1,this.renderTargetsHorizontal=[],this.renderTargetsVertical=[],this.nMips=5;let i=Math.round(this.resolution.x/2),a=Math.round(this.resolution.y/2);this.renderTargetBright=new s(i,a,{type:S}),this.renderTargetBright.texture.name=`UnrealBloomPass.bright`,this.renderTargetBright.texture.generateMipmaps=!1;for(let e=0;e<this.nMips;e++){let t=new s(i,a,{type:S});t.texture.name=`UnrealBloomPass.h`+e,t.texture.generateMipmaps=!1,this.renderTargetsHorizontal.push(t);let n=new s(i,a,{type:S});n.texture.name=`UnrealBloomPass.v`+e,n.texture.generateMipmaps=!1,this.renderTargetsVertical.push(n),i=Math.round(i/2),a=Math.round(a/2)}let o=mt;this.highPassUniforms=O.clone(o.uniforms),this.highPassUniforms.luminosityThreshold.value=r,this.highPassUniforms.smoothWidth.value=.01,this.materialHighPassFilter=new j({uniforms:this.highPassUniforms,vertexShader:o.vertexShader,fragmentShader:o.fragmentShader}),this.separableBlurMaterials=[];let c=[6,10,14,18,22];i=Math.round(this.resolution.x/2),a=Math.round(this.resolution.y/2);for(let e=0;e<this.nMips;e++)this.separableBlurMaterials.push(this._getSeparableBlurMaterial(c[e])),this.separableBlurMaterials[e].uniforms.invSize.value=new U(1/i,1/a),i=Math.round(i/2),a=Math.round(a/2);this.compositeMaterial=this._getCompositeMaterial(this.nMips),this.compositeMaterial.uniforms.blurTexture1.value=this.renderTargetsVertical[0].texture,this.compositeMaterial.uniforms.blurTexture2.value=this.renderTargetsVertical[1].texture,this.compositeMaterial.uniforms.blurTexture3.value=this.renderTargetsVertical[2].texture,this.compositeMaterial.uniforms.blurTexture4.value=this.renderTargetsVertical[3].texture,this.compositeMaterial.uniforms.blurTexture5.value=this.renderTargetsVertical[4].texture,this.compositeMaterial.uniforms.bloomStrength.value=t,this.compositeMaterial.uniforms.bloomRadius.value=.1;let l=[1,.8,.6,.4,.2];this.compositeMaterial.uniforms.bloomFactors.value=l,this.bloomTintColors=[new C(1,1,1),new C(1,1,1),new C(1,1,1),new C(1,1,1),new C(1,1,1)],this.compositeMaterial.uniforms.bloomTintColors.value=this.bloomTintColors,this.copyUniforms=O.clone(at.uniforms),this.blendMaterial=new j({uniforms:this.copyUniforms,vertexShader:at.vertexShader,fragmentShader:at.fragmentShader,premultipliedAlpha:!0,blending:2,depthTest:!1,depthWrite:!1,transparent:!0}),this._oldClearColor=new F,this._oldClearAlpha=1,this._basic=new z,this._fsQuad=new ct(null)}dispose(){for(let e=0;e<this.renderTargetsHorizontal.length;e++)this.renderTargetsHorizontal[e].dispose();for(let e=0;e<this.renderTargetsVertical.length;e++)this.renderTargetsVertical[e].dispose();this.renderTargetBright.dispose();for(let e=0;e<this.separableBlurMaterials.length;e++)this.separableBlurMaterials[e].dispose();this.compositeMaterial.dispose(),this.blendMaterial.dispose(),this._basic.dispose(),this._fsQuad.dispose()}setSize(e,t){let n=Math.round(e/2),r=Math.round(t/2);this.renderTargetBright.setSize(n,r);for(let e=0;e<this.nMips;e++)this.renderTargetsHorizontal[e].setSize(n,r),this.renderTargetsVertical[e].setSize(n,r),this.separableBlurMaterials[e].uniforms.invSize.value=new U(1/n,1/r),n=Math.round(n/2),r=Math.round(r/2)}render(t,n,r,i,a){t.getClearColor(this._oldClearColor),this._oldClearAlpha=t.getClearAlpha();let o=t.autoClear;t.autoClear=!1,t.setClearColor(this.clearColor,0),a&&t.state.buffers.stencil.setTest(!1),this.renderToScreen&&(this._fsQuad.material=this._basic,this._basic.map=r.texture,t.setRenderTarget(null),t.clear(),this._fsQuad.render(t)),this.highPassUniforms.tDiffuse.value=r.texture,this.highPassUniforms.luminosityThreshold.value=this.threshold,this._fsQuad.material=this.materialHighPassFilter,t.setRenderTarget(this.renderTargetBright),t.clear(),this._fsQuad.render(t);let s=this.renderTargetBright;for(let n=0;n<this.nMips;n++)this._fsQuad.material=this.separableBlurMaterials[n],this.separableBlurMaterials[n].uniforms.colorTexture.value=s.texture,this.separableBlurMaterials[n].uniforms.direction.value=e.BlurDirectionX,t.setRenderTarget(this.renderTargetsHorizontal[n]),t.clear(),this._fsQuad.render(t),this.separableBlurMaterials[n].uniforms.colorTexture.value=this.renderTargetsHorizontal[n].texture,this.separableBlurMaterials[n].uniforms.direction.value=e.BlurDirectionY,t.setRenderTarget(this.renderTargetsVertical[n]),t.clear(),this._fsQuad.render(t),s=this.renderTargetsVertical[n];this._fsQuad.material=this.compositeMaterial,this.compositeMaterial.uniforms.bloomStrength.value=this.strength,this.compositeMaterial.uniforms.bloomRadius.value=this.radius,this.compositeMaterial.uniforms.bloomTintColors.value=this.bloomTintColors,t.setRenderTarget(this.renderTargetsHorizontal[0]),t.clear(),this._fsQuad.render(t),this._fsQuad.material=this.blendMaterial,this.copyUniforms.tDiffuse.value=this.renderTargetsHorizontal[0].texture,a&&t.state.buffers.stencil.setTest(!0),this.renderToScreen?(t.setRenderTarget(null),this._fsQuad.render(t)):(t.setRenderTarget(r),this._fsQuad.render(t)),t.setClearColor(this._oldClearColor,this._oldClearAlpha),t.autoClear=o}_getSeparableBlurMaterial(e){let t=[],n=e/3;for(let r=0;r<e;r++)t.push(.39894*Math.exp(-.5*r*r/(n*n))/n);return new j({defines:{KERNEL_RADIUS:e},uniforms:{colorTexture:{value:null},invSize:{value:new U(.5,.5)},direction:{value:new U(.5,.5)},gaussianCoefficients:{value:t}},vertexShader:`
57
-
58
- varying vec2 vUv;
59
-
60
- void main() {
61
-
62
- vUv = uv;
63
- gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
64
-
65
- }`,fragmentShader:`
66
-
67
- #include <common>
68
-
69
- varying vec2 vUv;
70
-
71
- uniform sampler2D colorTexture;
72
- uniform vec2 invSize;
73
- uniform vec2 direction;
74
- uniform float gaussianCoefficients[KERNEL_RADIUS];
75
-
76
- void main() {
77
-
78
- float weightSum = gaussianCoefficients[0];
79
- vec3 diffuseSum = texture2D( colorTexture, vUv ).rgb * weightSum;
80
-
81
- for ( int i = 1; i < KERNEL_RADIUS; i ++ ) {
82
-
83
- float x = float( i );
84
- float w = gaussianCoefficients[i];
85
- vec2 uvOffset = direction * invSize * x;
86
- vec3 sample1 = texture2D( colorTexture, vUv + uvOffset ).rgb;
87
- vec3 sample2 = texture2D( colorTexture, vUv - uvOffset ).rgb;
88
- diffuseSum += ( sample1 + sample2 ) * w;
89
-
90
- }
91
-
92
- gl_FragColor = vec4( diffuseSum, 1.0 );
93
-
94
- }`})}_getCompositeMaterial(e){return new j({defines:{NUM_MIPS:e},uniforms:{blurTexture1:{value:null},blurTexture2:{value:null},blurTexture3:{value:null},blurTexture4:{value:null},blurTexture5:{value:null},bloomStrength:{value:1},bloomFactors:{value:null},bloomTintColors:{value:null},bloomRadius:{value:0}},vertexShader:`
95
-
96
- varying vec2 vUv;
97
-
98
- void main() {
99
-
100
- vUv = uv;
101
- gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
102
-
103
- }`,fragmentShader:`
104
-
105
- varying vec2 vUv;
106
-
107
- uniform sampler2D blurTexture1;
108
- uniform sampler2D blurTexture2;
109
- uniform sampler2D blurTexture3;
110
- uniform sampler2D blurTexture4;
111
- uniform sampler2D blurTexture5;
112
- uniform float bloomStrength;
113
- uniform float bloomRadius;
114
- uniform float bloomFactors[NUM_MIPS];
115
- uniform vec3 bloomTintColors[NUM_MIPS];
116
-
117
- float lerpBloomFactor( const in float factor ) {
118
-
119
- float mirrorFactor = 1.2 - factor;
120
- return mix( factor, mirrorFactor, bloomRadius );
121
-
122
- }
123
-
124
- void main() {
125
-
126
- // 3.0 for backwards compatibility with previous alpha-based intensity
127
- vec3 bloom = 3.0 * bloomStrength * (
128
- lerpBloomFactor( bloomFactors[ 0 ] ) * bloomTintColors[ 0 ] * texture2D( blurTexture1, vUv ).rgb +
129
- lerpBloomFactor( bloomFactors[ 1 ] ) * bloomTintColors[ 1 ] * texture2D( blurTexture2, vUv ).rgb +
130
- lerpBloomFactor( bloomFactors[ 2 ] ) * bloomTintColors[ 2 ] * texture2D( blurTexture3, vUv ).rgb +
131
- lerpBloomFactor( bloomFactors[ 3 ] ) * bloomTintColors[ 3 ] * texture2D( blurTexture4, vUv ).rgb +
132
- lerpBloomFactor( bloomFactors[ 4 ] ) * bloomTintColors[ 4 ] * texture2D( blurTexture5, vUv ).rgb
133
- );
134
-
135
- float bloomAlpha = max( bloom.r, max( bloom.g, bloom.b ) );
136
- gl_FragColor = vec4( bloom, bloomAlpha );
137
-
138
- }`})}};ht.BlurDirectionX=new U(1,0),ht.BlurDirectionY=new U(0,1);var gt={name:`OutputShader`,uniforms:{tDiffuse:{value:null},toneMappingExposure:{value:1}},vertexShader:`
139
- precision highp float;
140
-
141
- uniform mat4 modelViewMatrix;
142
- uniform mat4 projectionMatrix;
143
-
144
- attribute vec3 position;
145
- attribute vec2 uv;
146
-
147
- varying vec2 vUv;
148
-
149
- void main() {
150
-
151
- vUv = uv;
152
- gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
153
-
154
- }`,fragmentShader:`
155
-
156
- precision highp float;
157
-
158
- uniform sampler2D tDiffuse;
159
-
160
- #include <tonemapping_pars_fragment>
161
- #include <colorspace_pars_fragment>
162
-
163
- varying vec2 vUv;
164
-
165
- void main() {
166
-
167
- gl_FragColor = texture2D( tDiffuse, vUv );
168
-
169
- // tone mapping
170
-
171
- #ifdef LINEAR_TONE_MAPPING
172
-
173
- gl_FragColor.rgb = LinearToneMapping( gl_FragColor.rgb );
174
-
175
- #elif defined( REINHARD_TONE_MAPPING )
176
-
177
- gl_FragColor.rgb = ReinhardToneMapping( gl_FragColor.rgb );
178
-
179
- #elif defined( CINEON_TONE_MAPPING )
180
-
181
- gl_FragColor.rgb = CineonToneMapping( gl_FragColor.rgb );
182
-
183
- #elif defined( ACES_FILMIC_TONE_MAPPING )
184
-
185
- gl_FragColor.rgb = ACESFilmicToneMapping( gl_FragColor.rgb );
186
-
187
- #elif defined( AGX_TONE_MAPPING )
188
-
189
- gl_FragColor.rgb = AgXToneMapping( gl_FragColor.rgb );
190
-
191
- #elif defined( NEUTRAL_TONE_MAPPING )
192
-
193
- gl_FragColor.rgb = NeutralToneMapping( gl_FragColor.rgb );
194
-
195
- #elif defined( CUSTOM_TONE_MAPPING )
196
-
197
- gl_FragColor.rgb = CustomToneMapping( gl_FragColor.rgb );
198
-
199
- #endif
200
-
201
- // color space
202
-
203
- #ifdef SRGB_TRANSFER
204
-
205
- gl_FragColor = sRGBTransferOETF( gl_FragColor );
206
-
207
- #endif
208
-
209
- }`},_t=class extends Q{constructor(){super(),this.isOutputPass=!0,this.uniforms=O.clone(gt.uniforms),this.material=new se({name:gt.name,uniforms:this.uniforms,vertexShader:gt.vertexShader,fragmentShader:gt.fragmentShader}),this._fsQuad=new ct(this.material),this._outputColorSpace=null,this._toneMapping=null}render(e,t,n){this.uniforms.tDiffuse.value=n.texture,this.uniforms.toneMappingExposure.value=e.toneMappingExposure,(this._outputColorSpace!==e.outputColorSpace||this._toneMapping!==e.toneMapping)&&(this._outputColorSpace=e.outputColorSpace,this._toneMapping=e.toneMapping,this.material.defines={},i.getTransfer(this._outputColorSpace)===`srgb`&&(this.material.defines.SRGB_TRANSFER=``),this._toneMapping===1?this.material.defines.LINEAR_TONE_MAPPING=``:this._toneMapping===2?this.material.defines.REINHARD_TONE_MAPPING=``:this._toneMapping===3?this.material.defines.CINEON_TONE_MAPPING=``:this._toneMapping===4?this.material.defines.ACES_FILMIC_TONE_MAPPING=``:this._toneMapping===6?this.material.defines.AGX_TONE_MAPPING=``:this._toneMapping===7?this.material.defines.NEUTRAL_TONE_MAPPING=``:this._toneMapping===5&&(this.material.defines.CUSTOM_TONE_MAPPING=``),this.material.needsUpdate=!0),this.renderToScreen===!0?(e.setRenderTarget(null),this._fsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),this._fsQuad.render(e))}dispose(){this.material.dispose(),this._fsQuad.dispose()}},vt=class{channelId;name;x;z;radiusX;radiusZ;shape;rotationY;color;platform;padRing;beacon;boundary;label;members=[];host;constructor(e){Object.assign(this,e)}layout(){return{channelId:this.channelId,x:this.x,z:this.z,radiusX:this.radiusX,radiusZ:this.radiusZ,shape:this.shape,rotationY:this.rotationY}}normLayout(){return L(this.layout())}handlePoints(){return this.shape===`rect`?[[this.radiusX,this.radiusZ],[-this.radiusX,this.radiusZ],[-this.radiusX,-this.radiusZ],[this.radiusX,-this.radiusZ]]:[[this.radiusX,0],[-this.radiusX,0],[0,this.radiusZ],[0,-this.radiusZ]]}pointIn(e,t){return me(this.layout(),e,t)}moveBy(e,t){this.x+=e,this.z+=t,this.platform.position.set(this.x,.16,this.z),this.padRing.position.set(this.x,.32,this.z),this.beacon.position.set(this.x,0,this.z),this.boundary.position.set(this.x,.3,this.z),this.boundary.rotation.y=this.rotationY*Math.PI/180,this.label.position.set(this.x,30,this.z);for(let n of this.members)n.root.position.x+=e,n.root.position.z+=t,n.homeX+=e,n.homeZ+=t,n.range&&(n.range.x+=e,n.range.z+=t,n.renderRangeLine());this.host.trackLayout(this)}applyPatch(e){e.x!==void 0&&(this.x=e.x),e.z!==void 0&&(this.z=e.z),e.radiusX!==void 0&&(this.radiusX=e.radiusX),e.radiusZ!==void 0&&(this.radiusZ=e.radiusZ),e.shape!==void 0&&(this.shape=e.shape),e.rotationY!==void 0&&(this.rotationY=e.rotationY)}clampMembersAndRanges(){let e=this.layout();for(let t of this.members){let n=A(e,t.root.position.x,t.root.position.z,16);if(t.root.position.x=n.x,t.root.position.z=n.z,t.homeX=n.x,t.homeZ=n.z,t.range){t.renderRangeLine();let e=V(t.range,t.homeX,t.homeZ,0);(e.x!==t.homeX||e.z!==t.homeZ)&&(t.homeX=e.x,t.homeZ=e.z,t.root.position.x=e.x,t.root.position.z=e.z)}}this.host.markDirty()}};function $(e,t,n,r){let i=ye(e,t,n,48).map(([e,t])=>new C(e,0,t)),a=new w().setFromPoints(i);return new te(a,new ne({color:r,transparent:!0,opacity:.75,depthTest:!1}))}var yt=class{channelId;agentId;name;role;root;model;mixer;clips;colorNum;nameSprite;bubble;bubbleText;bubbleTimer;state;progress;behavior;dragging;homeX;homeZ;range;rangeLine;textureKey;modelRef;animState=`idle`;activeAction=null;host;moving=!1;aura=null;auraMats=[];auraPhase=0;attachAura(e,t){let n=new g,r=[],i=(t,i,a,o)=>{let s=new z({color:e,transparent:!0,opacity:o,side:2,depthWrite:!1,blending:2});s.userData.baseOp=o,r.push(s);let c=new h(new k(t,i,44),s);c.rotation.x=-Math.PI/2,c.position.y=a,n.add(c)};i(34,40,.36,.26),t===`lead`&&i(46,50,.42,.2),this.root.add(n),this.aura=n,this.auraMats=r,this.auraPhase=Math.random()*Math.PI*2}constructor(e){Object.assign(this,e)}reached(e){return Math.hypot(this.root.position.x-e.x,this.root.position.z-e.z)<=48}driveToward(e,n,r){this.moving=!0;let i={x:this.root.position.x,z:this.root.position.z},a=t({x:i.x,y:i.z},{x:e.x,y:e.z},n,r),o=a.x,s=a.y;if(this.range){let e=V(this.range,o,s,6);o=e.x,s=e.z}else{let e=this.host.blockLayoutOf(this.channelId);if(e){let t=A(e,o,s,6);o=t.x,s=t.z}}this.root.position.x=o,this.root.position.z=s;let c=a.dir===`left`?Math.PI:0,l=this.root.rotation.y,u=c-l;u>Math.PI?u-=Math.PI*2:u<-Math.PI&&(u+=Math.PI*2);let d=r*3.2;this.root.rotation.y=l+Math.max(-d,Math.min(d,u))}update(e){this.moving=!1;try{this.updateBehavior(e)}finally{this.playWalkAnim(this.moving)}}updateBehavior(e){let t=this.behavior;if(t.mode===`idle`||t.mode===`roam`){if(t.engaged||this.dragging)return;if(t.mode=`roam`,!t.roamTarget){if(performance.now()<t.pauseUntil)return;let e=this.host.blockLayoutOf(this.channelId),n,r;if(this.range){n=this.homeX+(Math.random()*2-1)*this.range.radiusX*.9,r=this.homeZ+(Math.random()*2-1)*this.range.radiusZ*.9;let e=V(this.range,n,r,8);n=e.x,r=e.z}else{let t=e?Math.min(e.radiusX,e.radiusZ)*.45:80;if(n=this.homeX+(Math.random()*2-1)*t,r=this.homeZ+(Math.random()*2-1)*t*.6,e){let t=A(e,n,r,16);n=t.x,r=t.z}}t.roamTarget={x:n,z:r}}this.driveToward(t.roamTarget,48,e),this.reached(t.roamTarget)&&(t.roamTarget=null,t.pauseUntil=performance.now()+350+Math.random()*900);return}if(t.mode===`approach`){let n=t.targetId?this.host.getAgent(t.targetId):void 0;if(!n){t.mode=`idle`;return}let r={x:n.root.position.x,z:n.root.position.z};if(this.range){let e=V(this.range,r.x,r.z,8);r={x:e.x,z:e.z}}this.driveToward(r,96,e),this.reached(r)&&(this.host.deliverBehavior(this,n),t.action?.requireReply?(t.mode=`wait`,t.waitUntil=performance.now()+Ee):(t.mode=`returnHome`,this.host.releaseEngaged(this),t.targetId=null));return}if(t.mode===`wait`){if(this.dragging)return;let n=t.targetId?this.host.getAgent(t.targetId):void 0;if(n&&!n.dragging){let t={x:n.root.position.x+28,z:n.root.position.z+8};this.driveToward(t,96*.6,e)}performance.now()>=t.waitUntil&&(t.mode=`returnHome`,this.host.releaseEngaged(this));return}if(t.mode===`returnHome`){if(this.dragging)return;let n={x:this.homeX,z:this.homeZ};this.driveToward(n,96*.7,e),this.reached(n)&&(this.root.position.set(this.homeX,0,this.homeZ),t.mode=`idle`,t.targetId=null,t.action=void 0)}}playWalkAnim(e){let t=e?`walk`:`idle`;this.animState!==t&&(this.animState=t,this.host.notifyMotion(this));let n=()=>{let t=performance.now(),n=1.2+Math.sin(t*.0016)*1.6,r=Math.abs(Math.sin(t*.005))*6;this.model.position.y=e?r:n;let i=e?Math.sin(t*.006)*.07:0;this.model.rotation.z+=(i-this.model.rotation.z)*.12};if(this.clips.length===0){n();return}if(!this.mixer)return;let r=e=>e.name.toLowerCase(),i=e?this.clips.find(e=>/walk|run|move/.test(r(e)))??this.clips[Math.min(1,this.clips.length-1)]:this.clips.find(e=>/idle|stand|breath/.test(r(e)))??(this.clips.length>1?this.clips[0]:null);if(!i){this.activeAction&&=(this.activeAction.fadeOut(.15),null),n();return}let a=this.mixer.clipAction(i);if(this.activeAction===a){a.timeScale=e?1.3:.9;return}a.reset().setEffectiveTimeScale(e?1.3:.9).fadeIn(.15).play(),this.activeAction&&this.activeAction.fadeOut(.15),this.activeAction=a}setHome(e,t){this.homeX=e,this.homeZ=t}renderRangeLine(){if(this.rangeLine&&=(this.host.threeScene.remove(this.rangeLine),null),!this.range)return;let e=4311284,t=$(this.range.shape,this.range.radiusX,this.range.radiusZ,e);t.material=new f({color:e,transparent:!0,opacity:.75,depthTest:!1,dashSize:14,gapSize:9}),t.computeLineDistances(),t.position.set(this.range.x,.5,this.range.z),t.rotation.y=this.range.rotationY*Math.PI/180,t.visible=this.host.rangeLineVisibleFor(this),this.host.threeScene.add(t),this.rangeLine=t,this.host.markDirty()}attachBubble(e,t){this.bubble&&(this.host.threeScene.remove(this.bubble),this.bubbleText=null),this.bubble=e,this.bubbleText=t}clearBubble(){this.bubble&&(this.host.threeScene.remove(this.bubble),this.bubble=null,this.bubbleText=null)}},bt=class{twinId;name;modelRef;root;holder;ring;arc=null;label;state;telemetry;host;constructor(e){Object.assign(this,e)}topYCache=null;lineColor=``;applyLine=null;updateRing(){let e=this.ring.material;this.lineColor?e.color.set(this.lineColor):e.color.setHex(this.state===`alarm`?16739179:this.state===`offline`?8689317:this.state===`running`?3530912:16172115),this.arc&&(this.arc.visible=this.state===`running`)}applyTwin(e){e.state&&(this.state=e.state),e.telemetry&&(this.telemetry={...this.telemetry,...e.telemetry}),e.name&&e.name!==this.name&&this.host.renameDeviceSprite(this,e.name),e.modelRef&&e.modelRef!==this.modelRef&&this.host.swapDeviceModelSprite(this,e.modelRef),(e.lineColor??``)!==this.lineColor&&(this.lineColor=e.lineColor??``,this.applyLine?.(this.lineColor)),this.updateRing(),this.host.markDirty()}rememberTransform(){return{posX:Math.round(this.root.position.x*10)/10,posZ:Math.round(this.root.position.z*10)/10,rotationY:Math.round(T.radToDeg(this.root.rotation.y)*10)/10}}},xt=class t{renderer;composer;camera;camTarget=new C(R,20,B);keyLight;scene;ground;skyDome=null;blocks=new Map;agents=new Map;deviceNodes=new Map;daqLedRings=new Map;daqLinkGroup=new g;daqLinks=[];static _wDir=new C;static _wRel=new C;static _wVec=new C;static _wVec2=new U;static _groundPlane=new De(new C(0,1,0),0);static _raycaster=new be;daqLinkSig=``;daqLinksWanted=[];filmWebGroup=new g;filmWebSig=``;filmWebMat=null;pendingDeviceTwins=new Map;pendingDeviceCreates=new Map;cancelledDeviceCreates=new Set;scalables=new Map;selected=null;modelsById=new Map;gltfCache=new Map;gltfLoader=new Oe;el;raf=0;clock=new y;frameCount=0;fpsAccum=0;fpsWinT0=0;rafCount=0;frameBudgetMs=25;setFpsCap(e){this.frameBudgetMs=e>0?1e3/e:0,this.frameAcc=0}frameAcc=0;baseDpr=Math.min(window.devicePixelRatio,2);dirty=!0;flagBy=new Map;disposed=!1;dolly=1;autoOrbit=!1;viewCur={yaw:0,pitch:.7,radius:1178};viewTarget={yaw:0,pitch:.7,radius:1178};tControls=null;resizeOb=null;mode=`browse`;pointerDrag=null;snapEnabled=!0;selRing=null;resizeHandles=[];agentRangeHandles=[];rangeDrawLine=null;rangeDrawAgent=null;rangeDrawPreviewState=null;rangeHomeMoved=null;lastActivity=null;recentActivity=[];dbgBubbles=[];receivers=new Map;container;resolveTaskAssignee=null;devices=null;agentApi=null;channelApi=null;busHandlers=new Map;constructor(e,t){this.el=t,this.container=t,this.initRenderer(),this.buildBlocks(e)}initRenderer(){this.renderer=new ce({antialias:!0,alpha:!0,powerPreference:`high-performance`}),this.renderer.setPixelRatio(Math.min(window.devicePixelRatio,2)),this.renderer.setSize(this.el.clientWidth||1100,this.el.clientHeight||700),this.renderer.shadowMap.enabled=!0,this.renderer.shadowMap.type=2,this.renderer.shadowMap.autoUpdate=!1,this.renderer.outputColorSpace=I,this.renderer.toneMapping=4,this.renderer.toneMappingExposure=1.12,this.renderer.info.autoReset=!1,this.el.appendChild(this.renderer.domElement),this.resizeOb=new ResizeObserver(()=>{let e=this.el.clientWidth,t=this.el.clientHeight;e<2||t<2||(this.renderer.setSize(e,t),this.composer.setSize(e,t),this.camera.aspect=e/t,this.camera.updateProjectionMatrix(),this.dirty=!0)}),this.resizeOb.observe(this.el);let e=null;this.renderer.domElement.addEventListener(`pointerdown`,t=>{e=t.button===0?{x:t.clientX,y:t.clientY}:null}),this.renderer.domElement.addEventListener(`pointerup`,t=>{if(t.button!==0||this.pointerDrag||this.tControls?.dragging)return;if(e&&Math.hypot(t.clientX-e.x,t.clientY-e.y)>8){e=null;return}e=null;let n=this.screenToWorld(t.clientX,t.clientY),r=this.pickBeacon(n.x,n.z);if(r){this.setSelected(null),this.selectChannel(r.cid),this.focusTo(r.x,r.z);return}let i=this.pickAt(n.x,n.z);if(i){this.setSelected(i),this.selectedChannel&&this.selectChannel(null);return}let a=this.pickChannel(n.x,n.z);this.setSelected(null),a&&this.mode===`edit`&&this.selectChannel(a)}),this.renderer.domElement.addEventListener(`dblclick`,e=>{if(this.pointerDrag)return;let t=this.screenToWorld(e.clientX,e.clientY),n=this.pickAt(t.x,t.z);if(n?.kind===`agent`){let e=this.agents.get(n.id);e&&this.focusTo(e.root.position.x,e.root.position.z)}else if(n?.kind===`device`){let e=this.deviceNodes.get(n.id);e&&this.focusTo(e.root.position.x,e.root.position.z)}else{let e=this.pickChannel(t.x,t.z),n=e?this.blocks.get(e):void 0;n&&(this.selectChannel(e),this.focusTo(n.x,n.z))}}),this.scene=new le,this.scene.background=new F(659224),this.scene.fog=new p(1779766,1400,8800);try{let e=new je(this.renderer);this.scene.environment=e.fromScene(new ae,.04).texture,this.scene.environmentIntensity=.42,e.dispose()}catch{}this.skyDome=this.makeSkyDome(),this.scene.add(this.skyDome);for(let e=0;e<4;e++){let t=new h(new W(16,6,8,20),new z({color:16172115,transparent:!0,opacity:.95,depthTest:!1}));t.rotation.x=Math.PI/2,t.position.y=1.4,t.visible=!1,this.scene.add(t),this.resizeHandles.push({mesh:t,cid:``,handle:e})}for(let e=0;e<4;e++){let t=new h(new W(10,4,8,16),new z({color:4311284,transparent:!0,opacity:.95,depthTest:!1}));t.rotation.x=Math.PI/2,t.position.y=1.2,t.visible=!1,this.scene.add(t),this.agentRangeHandles.push({mesh:t,agentId:``,handle:e})}let t=new h(new k(.92,1,56),new z({color:16172115,transparent:!0,opacity:.85,side:2,depthWrite:!1,blending:2}));t.rotation.x=-Math.PI/2,t.position.y=.5,t.visible=!1,t.renderOrder=5,this.scene.add(t),this.selRing=t,this.camera=new ue(55,(this.el.clientWidth||1100)/(this.el.clientHeight||700),1,12e3),this.camera.position.set(R,760,B+900),this.camera.lookAt(R,20,B);let n=new Re(this.camera,this.renderer.domElement);n.size=.85,n.setMode(`translate`),n.showY=!1,n.addEventListener(`dragging-changed`,e=>{if(!e.value){let e=this.selected;e?.kind===`device`&&this.deviceNodes.has(e.id)&&this.persistDeviceTransform(e.id)}}),n.addEventListener(`objectChange`,()=>{let e=this.selected;if(!e||e.kind!==`device`)return;let t=this.deviceNodes.get(e.id);if(t){if(n.mode===`scale`&&Math.abs(t.root.scale.x-1)>1e-4){let n=this.scalables.get(`device:${e.id}`)?.userScale??1;this.setModelScale(e.id,Math.min(50,Math.max(.02,n*t.root.scale.x)),`device`),t.root.scale.set(1,1,1)}this.dirty=!0}}),this.tControls=n,this.scene.add(n.getHelper()),this.scene.add(new Ae(13690094,1.6));let r=new Me(10471400,3813157,.7);this.scene.add(r);let i=new v(16774368,3.2);i.position.set(R+500,900,B+300),i.castShadow=!0,this.keyLight=i,i.shadow.mapSize.set(2048,2048),i.shadow.camera.left=-1400,i.shadow.camera.right=1400,i.shadow.camera.top=2e3,i.shadow.camera.bottom=-2e3,i.shadow.normalBias=2,i.shadow.bias=-2e-4,i.shadow.radius=6,this.scene.add(i);let a=new v(8961023,.75);a.position.set(R-1200,900,B-800),this.scene.add(a);let o=new v(4311284,1.4);o.position.set(R-1400,620,B-1e3),this.scene.add(o);let c=new v(3530912,.4);c.position.set(R+700,380,B+900),this.scene.add(c);let l=new E({color:16777215,roughness:.62,metalness:.3,envMapIntensity:.42});this.ground=new h(new ve(D*16,N*16),l),this.ground.rotation.x=-Math.PI/2,this.ground.receiveShadow=!0,this.scene.add(this.ground),this.scene.add(this.daqLinkGroup,this.filmWebGroup);let u=new s(1,1,{type:S,samples:4});this.composer=new ft(this.renderer,u),this.composer.setPixelRatio(this.renderer.getPixelRatio()),this.composer.setSize(this.el.clientWidth||1100,this.el.clientHeight||700),this.composer.addPass(new pt(this.scene,this.camera)),this.composer.addPass(new ht(new U(this.el.clientWidth||1100,this.el.clientHeight||700),.32,.35,3)),this.composer.addPass(new _t),this.applyGroundTexture(),globalThis.__townScene3d=this,this.loop()}makeIndustrialGroundTexture(){let e=1024,t=document.createElement(`canvas`);t.width=e,t.height=e;let n=t.getContext(`2d`),r=n.createLinearGradient(0,0,e,e);r.addColorStop(0,`#151f36`),r.addColorStop(.5,`#101a2d`),r.addColorStop(1,`#131c31`),n.fillStyle=r,n.fillRect(0,0,e,e),n.strokeStyle=`rgba(42,63,102,0.32)`,n.lineWidth=2;for(let t=0;t<=8;t++){let r=t/8*e;n.beginPath(),n.moveTo(r,0),n.lineTo(r,e),n.stroke(),n.beginPath(),n.moveTo(0,r),n.lineTo(e,r),n.stroke()}n.strokeStyle=`rgba(42,63,102,0.2)`,n.lineWidth=1;for(let t=0;t<=32;t++){let r=t/32*e;n.beginPath(),n.moveTo(r,0),n.lineTo(r,e),n.stroke(),n.beginPath(),n.moveTo(0,r),n.lineTo(e,r),n.stroke()}n.fillStyle=`rgba(255,255,255,0.02)`;for(let t=0;t<900;t++){let r=t*733%e,i=t*151%e;n.fillRect(r,i,2,2)}let i=new l(t);return i.colorSpace=I,i.wrapS=Te,i.wrapT=Te,i.repeat.set(23,17),i.anisotropy=Math.min(8,this.renderer.capabilities.getMaxAnisotropy()),i}makeSkyDome(){let e=document.createElement(`canvas`);e.width=1024,e.height=256;let t=e.getContext(`2d`),n=t.createLinearGradient(0,0,0,256);n.addColorStop(0,`#080d16`),n.addColorStop(.4,`#121b27`),n.addColorStop(.64,`#22303e`),n.addColorStop(.84,`#3b4b5b`),n.addColorStop(1,`#2a3644`),t.fillStyle=n,t.fillRect(0,0,e.width,e.height);let r=20260831,i=()=>(r=(r*1103515245+12345)%2147483648,r/2147483648);for(let n=0;n<220;n++){let n=i()*e.width,r=i()*i()*118,a=i()<.88?1:2,o=.12+i()*.5;t.fillStyle=i()<.24?`rgba(160,220,255,${o.toFixed(2)})`:`rgba(232,240,250,${o.toFixed(2)})`,t.beginPath(),t.arc(n,r,a,0,Math.PI*2),t.fill()}let a=new l(e);a.colorSpace=I;let o=new M(5600,24,16),s=new z({map:a,side:1,fog:!1,depthWrite:!1}),c=new h(o,s);return c.position.set(R,0,B),c.renderOrder=-10,c}applyGroundTexture(){try{let e=this.ground.material;e.map=this.makeIndustrialGroundTexture(),e.color.set(16777215),e.roughness=.94,e.metalness=.06,e.envMapIntensity=.28,e.needsUpdate=!0,this.dirty=!0}catch{}}on(e,t){return this.busHandlers.set(e,t),()=>this.busHandlers.delete(e)}emit(e,t){let n=this.busHandlers.get(e);n&&n(t)}buildBlocks(e){this.entityIndex.clear();for(let t of e){this.entityIndex.set(t.channelId,t);let e=this.layouts.get(t.channelId);e&&this.placeChannel(t,e)}this.emit(`blockCount`,this.blocks.size),this.emit(`agentCount`,this.agents.size)}placeChannel(e,t){let n=L(t),r=ge(e.channelId),i=this.makeBlock(e.channelName,r,n),a=new vt({channelId:e.channelId,name:e.channelName,x:n.x,z:n.z,radiusX:n.radiusX,radiusZ:n.radiusZ,shape:n.shape,rotationY:n.rotationY,color:r,platform:i.platform,padRing:i.padRing,beacon:i.beacon,boundary:$(n.shape,n.radiusX,n.radiusZ,r),label:this.makeLabel(e.channelName,n.x,30,n.z)});a.host=this,a.boundary.position.set(n.x,.3,n.z),a.boundary.rotation.y=n.rotationY*Math.PI/180,this.scene.add(a.boundary),this.blocks.set(e.channelId,a),this.layoutAgentsInBlock(e,a);for(let t of this.agents.values())t.channelId===e.channelId&&!a.members.includes(t)&&a.members.push(t)}layoutAgentsInBlock(e,t){let{x:n,z:r,radiusX:i,radiusZ:a}=t,o=.6,s=Math.max(1,e.agents.length);e.agents.forEach((c,l)=>{let u,d;if(typeof c.homeX==`number`&&typeof c.homeZ==`number`)u=c.homeX,d=c.homeZ;else{let e=s<=1?0:l/(s-1)*2-1;u=n+e*i*o*.8,d=r+(c.role===`lead`?0:(l%2==0?-1:1)*a*o*.4)}this.ensureAgent({...c,channelId:e.channelId},u,d,t.color)})}makeBlock(e,t,n){let r=n.rotationY*Math.PI/180,i=new h(this.makePadShapeGeometry(n.shape,n.radiusX,n.radiusZ),new E({color:t,transparent:!0,opacity:.24,roughness:.85,metalness:.12,emissive:t,emissiveIntensity:.12,side:2}));i.rotation.set(0,r,0),i.position.set(n.x,.16,n.z),i.receiveShadow=!1,this.scene.add(i);let a=new h(this.makePadRingGeometry(n.shape,n.radiusX,n.radiusZ),new z({color:t,transparent:!0,opacity:.52,side:2,depthWrite:!1}));a.rotation.set(0,r,0),a.position.set(n.x,.34,n.z),this.scene.add(a);let o=this.makeBeacon(t);return o.position.set(n.x,0,n.z),this.scene.add(o),{platform:i,padRing:a,beacon:o}}makeBeacon(e){let t=new g,n=new E({color:2766146,roughness:.45,metalness:.65}),r=new h(new _(7,9,5,12),n);r.position.y=2.5;let i=new h(new _(1.6,1.6,30,8),n);i.position.y=18;let a=new h(new ie(6.5),new z({color:e}));return a.material.color.multiplyScalar(4.5),a.position.y=37,t.add(r,i,a),t}pickBeacon(e,t){for(let n of this.blocks.values())if(Math.hypot(n.x-e,n.z-t)<34)return{cid:n.channelId,x:n.x,z:n.z};return null}makePadShapeGeometry(e,t,n){let r=new Se;e===`rect`?(r.moveTo(-t,-n),r.lineTo(t,-n),r.lineTo(t,n),r.lineTo(-t,n),r.closePath()):r.absellipse(0,0,t,n,0,Math.PI*2);let i=new _e(r,e===`rect`?1:56);return i.rotateX(Math.PI/2),i}makePadRingGeometry(e,t,n,i=13){let a=Math.max(4,t-i),o=Math.max(4,n-i),s=new Se,c=new r;e===`rect`?(s.moveTo(-t,-n),s.lineTo(t,-n),s.lineTo(t,n),s.lineTo(-t,n),s.closePath(),c.moveTo(-a,-o),c.lineTo(a,-o),c.lineTo(a,o),c.lineTo(-a,o),c.closePath()):(s.absellipse(0,0,t,n,0,Math.PI*2),c.absellipse(0,0,a,o,0,Math.PI*2)),s.holes.push(c);let l=new _e(s,e===`rect`?1:56);return l.rotateX(Math.PI/2),l}applyPadToBlock(e){let t=e.rotationY*Math.PI/180;e.platform.rotation.set(0,t,0),e.padRing.rotation.set(0,t,0);let n=e.platform.geometry;e.platform.geometry=this.makePadShapeGeometry(e.shape,e.radiusX,e.radiusZ),n.dispose();let r=e.padRing.geometry;e.padRing.geometry=this.makePadRingGeometry(e.shape,e.radiusX,e.radiusZ),r.dispose()}makeLabel(e,t,n,r,i=`#41c8f4`){let a=document.createElement(`canvas`),o=a.getContext(`2d`),s=`600 21px "Geist Mono", Geist, "PingFang SC", monospace`;o.font=s;let c=Math.max(104,Math.ceil(o.measureText(e).width)+26+14);a.width=c,a.height=48,o.font=s,o.fillStyle=`rgba(10,14,20,0.8)`,o.fillRect(0,0,c,48),o.strokeStyle=`${i}66`,o.lineWidth=1,o.strokeRect(.5,.5,c-1,47),o.fillStyle=i,o.fillRect(0,0,3,48),o.fillStyle=`#dce7f0`,o.textAlign=`left`,o.textBaseline=`middle`,o.fillText(e,26,25);let u=new l(a);u.colorSpace=I;let d=new pe(new oe({map:u,transparent:!0,depthTest:!1}));return d.scale.set(c/6,8,1),d.position.set(t,n,r),this.scene.add(d),d}hexOf(e){return`#${e.toString(16).padStart(6,`0`)}`}ensureAgent(e,t,n,r){let i=e.agentId;if(this.agents.has(i))return;let a=this.blockLayout(e.channelId),o=e.homeX??t,s=e.homeZ??n;if(a){let e=A(a,o,s,20);o=e.x,s=e.z}let c=e.range??null,l=new g;l.position.set(o,0,s);let u=this.makeLabel(e.name,o,48,s,this.hexOf(r)),d=e.modelRef||`hero-anime-1`,f=new g;l.add(f),this.scene.add(l);let p=new yt({channelId:e.channelId,agentId:i,name:e.name,role:e.role,root:l,model:f,mixer:null,clips:[],colorNum:r,nameSprite:u,bubble:null,bubbleText:null,bubbleTimer:null,state:e.state,progress:e.currentTaskProgress??null,dragging:!1,homeX:o,homeZ:s,range:c,rangeLine:null,textureKey:d,modelRef:e.modelRef??``,behavior:{mode:`idle`,roamTarget:null,targetId:null,waitUntil:0,pauseUntil:0,engaged:!1}});p.host=this,p.attachAura(r,e.role),this.agents.set(i,p);let m=this.modelsById.get(d)??(d.startsWith(`hero-anime-`)?{id:d,file:`/assets/game/character/${d}.glb`,name:`二次元角色`}:this.modelsById.get(`hero-3d`)??{id:`hero-3d`,file:`/assets/game/character/hero-3d.glb`,name:`标准员工模型`});this.mountModel(p,m.file,m.name),p.renderRangeLine(),this.emit(`agentCount`,this.agents.size)}async mountModel(e,t,n){let r=this.gltfCache.get(t),i,a;if(r)i=r.scene.clone(!0),a=r.height;else try{let e=await this.loadGltf(t);i=e.scene;let n=new o().setFromObject(i);a=Math.max(.5,n.max.y-n.min.y),this.gltfCache.set(t,{file:t,scene:i,height:a}),this.agentAnimClips.set(t,e.animations)}catch{i=this.makeFallbackBot(),a=1.4}i.position.y=0,i.scale.setScalar(120/a),i.traverse(e=>{e.isMesh&&(e.castShadow=!0)}),this.enhancePbrMaterials(i,`character`),e.model.clear(),e.model.add(i),this.registerScalable(`agent`,e.agentId,e.model),e.mixer=null,e.activeAction=null;let s=this.agentAnimClips.get(t)??[],c=s[0];if(c){e.mixer=new ee(i),e.clips=s;let t=e.mixer.clipAction(c);t.play(),e.activeAction=t}this.dirty=!0}agentAnimClips=new Map;loadGltf(e){return new Promise((t,n)=>{this.gltfLoader.load(e,e=>t({scene:e.scene,animations:e.animations??[]}),void 0,n)})}makeFallbackBot(){let e=new g,t=new E({color:2766146,roughness:.42,metalness:.62}),n=new E({color:1317668,roughness:.6,metalness:.4}),r=new z({color:4311284}),i=new h(new c(.42,.62,8,16),t);i.position.y=.86;let a=new h(new M(.32,16,12),t);a.position.y=1.62;let o=new h(new H(.4,.1,.12),r);o.position.set(0,1.66,.27);let s=new h(new M(.14,12,8),r);s.position.set(0,1.1,.36);let l=new h(new _(.5,.62,.26,16),n);l.position.y=.16;let u=new h(new _(.03,.03,.5,6),n);u.position.set(0,2.04,0);let d=new h(new M(.08,10,8),r);return d.position.set(0,2.34,0),e.add(i,a,o,s,l,u,d),e}registerModelsFromList(e){if(this.disposed)return;let t=new Set;for(let n of e){let e=this.modelsById.get(n.id);(!e||e.file!==n.file||e.name!==n.name||e.kind!==n.kind||e.hFactor!==(n.hFactor??1))&&(this.modelsById.set(n.id,{...n,hFactor:n.hFactor??1}),t.add(n.id))}if(t.size>0){for(let e of this.agents.values()){if(!e.modelRef||!t.has(e.modelRef))continue;let n=this.modelsById.get(e.modelRef);n&&this.mountModel(e,n.file,n.name)}for(let e of this.deviceNodes.values())t.has(e.modelRef)&&this.swapDeviceModelSprite(e,e.modelRef)}for(let e of[...this.pendingDeviceTwins.values()])!(e.kind===`daq`||(e.modelRef??``).startsWith(`daq-`))&&!this.modelsById.get(e.modelRef)?.file||(this.pendingDeviceTwins.delete(e.id),this.recreateDeviceNode(e))}applySceneLayouts(e){this.layouts.clear();for(let t of e){let e=L(t);this.layouts.set(e.channelId,e)}}hasChannel(e){return this.blocks.has(e)}blockLayout(e){let t=this.blocks.get(e);return t?t.layout():null}placedChannels(){return[...this.blocks.keys()]}getChannelLayout(e){let t=this.blocks.get(e);return t?t.layout():null}get threeScene(){return this.scene}markDirty(){this.dirty=!0}trackLayout(e){this.layouts.set(e.channelId,e.normLayout())}renameDeviceSprite(e,t){e.name=t.trim(),this.scene.remove(e.label),e.label=this.makeLabel(`⚙ ${e.name}`,e.root.position.x,60,e.root.position.z),this.dirty=!0}swapDeviceModelSprite(e,t){let n=this.modelsById.get(t);n?.file&&(e.modelRef!==t||e.holder.userData.modelFile!==n.file)&&(e.modelRef=t,e.holder.clear(),e.holder.userData.modelFile=n.file,this.loadGltfToGroup(n.file,e.holder,192),this.dirty=!0)}hydrate(e,t,n){this.applySceneLayouts(t),this.rebuild(e),this.syncDevices(n),this.emit(`blockCount`,this.blocks.size),this.emit(`agentCount`,this.agents.size)}rebuild(e){this.resetAll(),this.buildBlocks(e),this.emit(`blockCount`,this.blocks.size),this.emit(`agentCount`,this.agents.size)}focusChannel(e){let t=this.blocks.get(e);t&&this.focusTo(t.x,t.z)}dropChannelOnWorld(e,t,n,r,i){let a=this.blocks.get(n);if(a)return this.focusTo(a.x,a.z),{x:Math.round(a.x),z:Math.round(a.z),channelId:n,name:a.name};let o={channelId:n,x:e,z:t,radiusX:Math.max(120,110+i*18),radiusZ:Math.max(80,70+i*14),shape:`ellipse`,rotationY:0};this.layouts.set(n,L(o));let s=this.entityIndex.get(n);if(s)this.placeChannel(s,o);else{let i=ge(n),a=this.makeBlock(r,i,o),s=new vt({channelId:n,name:r,x:e,z:t,radiusX:o.radiusX,radiusZ:o.radiusZ,shape:o.shape,rotationY:o.rotationY,color:i,platform:a.platform,padRing:a.padRing,beacon:a.beacon,boundary:$(o.shape,o.radiusX,o.radiusZ,i),label:this.makeLabel(r,e,30,t)});s.host=this,s.boundary.position.set(e,.3,t),this.scene.add(s.boundary),this.blocks.set(n,s)}return this.emit(`blockCount`,this.blocks.size),this.emit(`agentCount`,this.agents.size),{x:Math.round(e),z:Math.round(t),channelId:n,name:r}}updateChannelLayout(e,t){let n=this.blocks.get(e);if(!n)return;t.x!==void 0&&(n.x=t.x),t.z!==void 0&&(n.z=t.z),t.radiusX!==void 0&&(n.radiusX=Math.max(60,t.radiusX)),t.radiusZ!==void 0&&(n.radiusZ=Math.max(40,t.radiusZ)),t.shape!==void 0&&(n.shape=t.shape),t.rotationY!==void 0&&(n.rotationY=t.rotationY);let r=L({channelId:e,x:n.x,z:n.z,radiusX:n.radiusX,radiusZ:n.radiusZ,shape:n.shape,rotationY:n.rotationY});this.layouts.set(e,r),this.scene.remove(n.boundary),this.applyPadToBlock(n),n.boundary=$(r.shape,r.radiusX,r.radiusZ,n.color),n.boundary.position.set(r.x,.3,r.z),n.boundary.rotation.y=r.rotationY*Math.PI/180,this.scene.add(n.boundary),this.clampAgentsToBoundary(e),this.dirty=!0}removeChannel(e){let t=this.blocks.get(e);if(t){this.scene.remove(t.platform),this.scene.remove(t.padRing),this.scene.remove(t.beacon),t.boundary&&this.scene.remove(t.boundary),this.scene.remove(t.label);for(let[t,n]of[...this.agents.entries()])n.channelId===e&&(this.scene.remove(n.root),n.nameSprite&&this.scene.remove(n.nameSprite),n.bubble&&this.scene.remove(n.bubble),n.rangeLine&&this.scene.remove(n.rangeLine),this.disposeAgentAssets(n),this.agents.delete(t));t.label&&this.disposeCanvasTextures(t.label),this.rangeDrawAgent&&this.agents.get(this.rangeDrawAgent)===void 0&&this.cancelRangeDraw(),this.blocks.delete(e),this.layouts.delete(e),this.receivers.delete(e);for(let e of this.resizeHandles)e.mesh.visible=!1;for(let e of this.agentRangeHandles)e.mesh.visible=!1;this.selectedChannel===e&&(this.selectedChannel=null,this.emit(`selectChannel`,null)),this.emit(`blockCount`,this.blocks.size),this.emit(`agentCount`,this.agents.size),this.dirty=!0}}applyBlockMove(e,t,n){e.moveBy(t-e.x,n-e.z),this.refreshAgentRangeHandles(),this.dirty=!0}applyLayoutToBlock(e){let t={channelId:e.channelId,x:e.x,z:e.z,radiusX:e.radiusX,radiusZ:e.radiusZ,shape:e.shape,rotationY:e.rotationY};this.layouts.set(e.channelId,L(t)),e.platform.position.set(e.x,.16,e.z),e.padRing.position.set(e.x,.34,e.z),this.applyPadToBlock(e),e.boundary&&this.scene.remove(e.boundary),e.boundary=$(e.shape,e.radiusX,e.radiusZ,e.color),e.boundary.position.set(e.x,.3,e.z),e.boundary.rotation.y=e.rotationY*Math.PI/180,this.scene.add(e.boundary),this.dirty=!0}boundaryHandlePoints(e){return e.shape===`rect`?[[e.radiusX,e.radiusZ],[-e.radiusX,e.radiusZ],[-e.radiusX,-e.radiusZ],[e.radiusX,-e.radiusZ]]:[[e.radiusX,0],[-e.radiusX,0],[0,e.radiusZ],[0,-e.radiusZ]]}refreshChannelHandles(){for(let e of this.resizeHandles)e.mesh.visible=!1;if(this.mode!==`edit`||!this.selectedChannel)return;let e=this.blocks.get(this.selectedChannel);if(!e)return;let t=e.rotationY*Math.PI/180,n=this.boundaryHandlePoints(e);for(let r=0;r<this.resizeHandles.length&&r<n.length;r++){let[i,a]=n[r],o=e.x+i*Math.cos(t)-a*Math.sin(t),s=e.z+i*Math.sin(t)+a*Math.cos(t);this.resizeHandles[r].cid=e.channelId,this.resizeHandles[r].mesh.position.set(o,1.4,s),this.resizeHandles[r].mesh.visible=!0}}pickResizeHandle(e,t){if(this.mode!==`edit`)return null;for(let n of this.resizeHandles)if(n.mesh.visible&&Math.hypot(n.mesh.position.x-e,n.mesh.position.z-t)<90)return{cid:n.cid,handle:n.handle};return null}applyResize(e,t,n,r){let i=-e.rotationY*Math.PI/180,a=Math.cos(i),o=Math.sin(i),s=n-e.x,c=r-e.z,l=s*a-c*o,u=s*o+c*a;e.shape===`rect`?(e.radiusX=Math.max(60,Math.abs(l)),e.radiusZ=Math.max(40,Math.abs(u))):t===0||t===1?e.radiusX=Math.max(60,Math.abs(l)):e.radiusZ=Math.max(40,Math.abs(u)),this.applyLayoutToBlock(e),this.refreshChannelHandles(),this.autoFrameTo(e.radiusX,e.radiusZ),this.dirty=!0}clampAgentsToBoundary(e){let t=this.blocks.get(e);t&&(t.clampMembersAndRanges(),this.dirty=!0)}getSelectedChannel(){return this.selectedChannel}selectChannel(e){this.selectedChannel=e,this.emit(`selectChannel`,e),this.refreshChannelHandles(),this.cancelRangeDraw(),this.refreshAgentRangeHandles();for(let t of this.blocks.values()){let n=t.boundary.material;n.color.setHex(t.channelId===e?16172115:t.color),n.opacity=t.channelId===e?1:.75}e&&!this.pointerDrag&&this.focusTo(this.blocks.get(e)?.x??1600,this.blocks.get(e)?.z??1200)}getAllChannelLayouts(){return[...this.blocks.values()].map(e=>({channelId:e.channelId,x:e.x,z:e.z,radiusX:e.radiusX,radiusZ:e.radiusZ,shape:e.shape,rotationY:e.rotationY}))}handleTownEvent(t){if(t.type===`channel.snapshot`)return;if(t.type===`scene.layout.saved`){let e=t.payload;this.blocks.has(e.channelId)&&(this.applySceneLayouts([...this.layouts.values(),e]),this.getChannelLayout(e.channelId)&&this.updateChannelLayout(e.channelId,e));return}if(t.type===`scene.layout.removed`){let{channelId:e}=t.payload;this.removeChannel(e);return}let r=e(t);if(!r)return;if(r.agentId){let e=this.agents.get(r.agentId);e&&(t.type===`agent.status`&&(e.state=t.payload.state,e.state!==`busy`&&(e.progress=null)),t.type===`task.progress`&&(e.progress=t.payload.progress),this.dirty=!0)}r.bubble&&this.enqueueBubble(r.bubble.channelId,r.bubble.agentId,r.bubble.kind,r.bubble.text,r.bubble.ttlMs),this.emitResonance(t);let i=n(t,{resolveTaskAssignee:this.resolveTaskAssignee??void 0});i&&this.startBehavior(i)}startBehavior(e){let t=this.agents.get(e.fromId),n=this.agents.get(e.toId);!t||!n||t.dragging||(t.behavior.mode=`approach`,t.behavior.targetId=n.agentId,t.behavior.action=e,n.dragging||(n.behavior.engaged=!0,n.behavior.roamTarget=null),this.emit(`behavior`,{agentName:t.name,action:this.behaviorActionLabel(e.kind),targetName:n.name}))}behaviorActionLabel(e){return e===`task`?`下发任务`:`回复`}notifyMotion(e){this.emit(`motion`,{agentName:e.name,anim:e.animState,at:Date.now()})}deliverBehavior(e,t){let n=e.behavior.action?.text??``;n&&this.enqueueBubble(e.channelId,e.agentId,`info`,n,2600),this.emit(`behavior`,{agentName:e.name,action:this.behaviorActionLabel(e.behavior.action?.kind??`message`),targetName:t.name})}releaseEngaged(e){let t=e.behavior.targetId?this.agents.get(e.behavior.targetId):void 0;t&&(t.behavior.engaged=!1)}getAgent(e){return this.agents.get(e)}blockLayoutOf(e){return this.blockLayout(e)}resolveFile(e){return this.modelsById.get(e)?.file??``}getCameraTarget(){return{x:Math.round(this.camTarget.x),z:Math.round(this.camTarget.z)}}swapAgentModel(e,t){let n=this.agents.get(e);if(!n)return;let r=this.modelsById.get(t),i=r?.file??`/assets/game/character/hero-3d.glb`;n.modelRef=t,n.textureKey=t,this.mountModel(n,i,r?.name??t)}emitResonance(e){let t=this.blocks.get(e.channelId),n=e.agentId?this.agents.get(e.agentId):void 0,r=n?.root.position.x??t?.x,i=n?.root.position.z??t?.z;r!==void 0&&i!==void 0&&(e.type===`agent.message`||e.type===`agent.status.message`||e.type===`a2a.message`?this.pulseRing(r,i,n?4311284:t?.color??4311284):e.type===`error`||e.type===`task.status`&&(e.payload.state===`failed`||e.payload.state===`canceled`)?this.pulseRing(r,i,16739179):e.type===`task.status`&&e.payload.state===`completed`&&this.lightColumn(r,i,3530912))}pulseRing(e,t,n){let r=new h(new k(10,22,24),new z({color:n,transparent:!0,opacity:.8,side:2,depthWrite:!1}));r.rotation.x=-Math.PI/2,r.position.set(e,.4,t),this.scene.add(r);let i=performance.now(),a=()=>{let e=Math.min(1,(performance.now()-i)/800),t=1-(1-e)**3;if(r.scale.setScalar(1+t*1.6),r.material.opacity=.8*(1-t),e>=1){this.scene.remove(r),r.geometry.dispose(),r.material.dispose();return}this.rafAnims.push(a)};this.rafAnims.push(a)}lightColumn(e,t,n){let r=new _(6,12,120,16);r.translate(0,60,0);let i=new h(r,new z({color:n,transparent:!0,opacity:.8,depthWrite:!1}));i.position.set(e,0,t),i.scale.y=.01,this.scene.add(i);let a=performance.now(),o=()=>{let e=Math.min(1,(performance.now()-a)/900),t=1-(1-e)**2;if(i.scale.y=.01+t*.99,i.material.opacity=.8*(1-e),e>=1){this.scene.remove(i),i.geometry.dispose(),i.material.dispose();return}this.rafAnims.push(o)};this.rafAnims.push(o)}rafAnims=[];layouts=new Map;entityIndex=new Map;selectedChannel=null;enqueueBubble(e,t,n,r,i){this.dbgBubbles.push({text:r,at:Date.now()}),this.dbgBubbles.length>30&&this.dbgBubbles.splice(0,this.dbgBubbles.length-30);let a=t?this.agents.get(t)?.name:void 0;this.lastActivity={channelId:e,agentName:a??this.blocks.get(e)?.name??`系统`,text:r,at:Date.now()},this.recentActivity.push(this.lastActivity),this.recentActivity.length>30&&this.recentActivity.splice(0,this.recentActivity.length-30),this.emit(`lastActivity`,this.lastActivity);let o=this.receivers.get(e);o||(o={channelId:e,queue:[],current:null,currentUntil:0},this.receivers.set(e,o)),o.queue.length>=24&&o.queue.splice(0,o.queue.length-24),o.queue.push({agentId:t??null,kind:n,text:r,ttlMs:i}),this.dirty=!0}drainReceivers(e){for(let t of this.receivers.values()){if(t.current){if(e<t.currentUntil)continue;this.clearReceiverBubble(t.channelId,t.current),t.current=null}let n=t.queue.shift();n&&(t.current=n,t.currentUntil=e+xe(n.text,t.queue.length),this.renderReceiverBubble(t.channelId,n))}}clearReceiverBubble(e,t){if(!t.agentId)return;let n=this.agents.get(t.agentId);n?.bubble&&(this.scene.remove(n.bubble),n.bubble=null,n.bubbleText=null,n.bubbleTimer&&=(clearTimeout(n.bubbleTimer),null))}renderReceiverBubble(e,t){let n=t.agentId?this.agents.get(t.agentId):void 0,r=this.blocks.get(e);if(!n&&!r)return;let i=n?.name??r?.name??`系统`,a=n?n.colorNum:r?.color??4311284,o=(t.kind===`artifact`&&!t.text.startsWith(`📦`)?`📦 ${t.text}`:t.text)||`…`,s=this.makeChatBubble(o,i,a,t.kind),c=n?.root.position.x??r.x,l=n?.root.position.z??r.z;if(s.position.set(c,n?108+Math.max(0,n.model.scale.y-1)*22:64,l),this.scene.add(s),!n){window.setTimeout(()=>{this.scene.remove(s)},we(t.text)+500);return}n.bubble&&(this.scene.remove(n.bubble),this.disposeCanvasTextures(n.bubble),n.bubbleText=null),n.bubble=s,n.bubbleText=o,this.popInSprite(s),this.dirty=!0}makeChatBubble(e,t,n,r){let i=`#${n.toString(16).padStart(6,`0`)}`,a=document.createElement(`canvas`),o=a.getContext(`2d`),s=`18px Geist, "PingFang SC", sans-serif`;o.font=s;let c=this.wrapBubbleLines(o,e.replace(/\s+/g,` `).trim()||`…`,470,6),u=Math.max(...c.map(e=>o.measureText(e).width)),d=Math.min(680,Math.max(140,Math.ceil(u)+36)),f=26+c.length*24+24,p=f+13;a.width=d,a.height=p,o.clearRect(0,0,d,p);let m=d/2,h=Math.min(24,d*.32),g=()=>{o.beginPath(),o.moveTo(4,0),o.lineTo(d-4,0),o.quadraticCurveTo(d,0,d,4),o.lineTo(d,f-4),o.quadraticCurveTo(d,f,d-4,f),o.lineTo(m+h/2,f),o.lineTo(m,f+13),o.lineTo(m-h/2,f),o.lineTo(4,f),o.quadraticCurveTo(0,f,0,f-4),o.lineTo(0,4),o.quadraticCurveTo(0,0,4,0),o.closePath()};o.save(),o.shadowColor=`rgba(0,0,0,0.55)`,o.shadowBlur=14,o.shadowOffsetY=4,g(),o.fillStyle=`rgba(14,18,27,0.94)`,o.fill(),o.restore(),o.save(),g(),o.clip(),o.fillStyle=`rgba(255,255,255,0.045)`,o.fillRect(0,0,d,38),o.restore(),o.globalAlpha=.28,o.fillStyle=`#fff`,o.fillRect(18,30,d-36,1),o.globalAlpha=1,g(),o.lineWidth=1.2,o.strokeStyle=`rgba(140,170,195,0.4)`,o.stroke(),o.save(),g(),o.clip(),o.fillStyle=i,o.fillRect(0,0,3,f),o.restore(),o.font=`600 13px "Geist Mono", Geist, "PingFang SC", monospace`,o.fillStyle=i,o.textBaseline=`middle`,o.textAlign=`left`,o.fillText(t,18,22);let _=r===`artifact`?`ARTIFACT`:r===`error`?`FAULT`:``;if(_){let e=o.measureText(_).width+12;o.font=`600 10px "Geist Mono", Geist, monospace`,o.fillStyle=r===`error`?`#ff8d80`:`#9fc3e8`,o.strokeStyle=r===`error`?`rgba(255,141,128,0.55)`:`rgba(159,195,232,0.45)`,o.lineWidth=1;let t=d-18-e;o.beginPath(),o.rect(t,14,e,16),o.fill(),o.stroke(),o.textAlign=`center`,o.fillText(_,t+e/2,22.5)}o.font=s,o.fillStyle=r===`error`?`#ff9d9d`:`#eef2fb`,o.textAlign=`left`,c.forEach((e,t)=>o.fillText(e,18,48+t*24));let v=new l(a);v.colorSpace=I;let y=new pe(new oe({map:v,transparent:!0,depthTest:!1,depthWrite:!1})),b=2.4;return y.scale.set(d/b,p/b,1),y}popInSprite(e){let t=e.scale.x,n=e.scale.y;e.scale.set(t*.62,n*.62,1);let r=performance.now(),i=()=>{if(this.disposed)return;let a=Math.min(1,(performance.now()-r)/180),o=.62+.38*(1-(1-a)**3);e.scale.set(t*o,n*o,1),a<1&&this.rafAnims.push(i)};this.rafAnims.push(i)}wrapBubbleLines(e,t,n,r){let i=[],a=``;for(let o of t)if(e.measureText(a+o).width>n&&a){if(i.push(a),a=o,i.length>=r)return i[r-1]=`${i[r-1]??``}…`,i}else a+=o;return a&&i.push(a),i.length===0&&i.push(`…`),i}get canvas(){return this.renderer.domElement}worldToScreen(e,n,r){let i=this.renderer.domElement.getBoundingClientRect(),a=t._wDir;if(this.camera.getWorldDirection(a),t._wRel.set(e-this.camera.position.x,n-this.camera.position.y,r-this.camera.position.z).dot(a)<=.1)return null;let o=t._wVec.set(e,n,r).project(this.camera);return o.z>1||Math.abs(o.x)>1.6||Math.abs(o.y)>1.6?null:{x:i.left+(o.x+1)/2*i.width,y:i.top+(1-o.y)/2*i.height}}screenToWorld(e,n){let r=this.renderer.domElement.getBoundingClientRect(),i=(e-r.left)/r.width*2-1,a=-((n-r.top)/r.height)*2+1,o=t._raycaster;o.setFromCamera(t._wVec2.set(i,a),this.camera);let s=t._wVec;return o.ray.intersectPlane(t._groundPlane,s),s?{x:s.x,z:s.z}:{x:this.camera.position.x,z:this.camera.position.z}}panBy(e,t){this.camTarget.x-=e,this.camTarget.z-=t}autoDolly=null;fitDollyFor(e,t){let n=this.camera.aspect||1.6;return Math.max(e/(.82*613*n),t/779)}autoFrameTo(e,t){let n=this.fitDollyFor(e,t);n>this.dolly&&(this.autoDolly=Math.min(40,n*1.18))}setTransformMode(e){this.tControls&&(this.tControls.setMode(e),this.tControls.showX=e!==`rotate`,this.tControls.showY=e!==`translate`,this.tControls.showZ=e!==`rotate`)}isGizmoBusy(){return!!this.tControls&&(this.tControls.dragging||!!this.tControls.axis)}setViewPreset(e){let t={std:{yaw:0,pitch:.7,radius:1178},top:{yaw:0,pitch:1.51,radius:2400},front:{yaw:0,pitch:.09,radius:1510},side:{yaw:Math.PI/2,pitch:.33,radius:1320}},n=t[e]??t.std;this.viewTarget={...n}}orbitBy(e,t){let n=this.viewCur.yaw-e*.0052,r=Math.min(1.52,Math.max(.06,this.viewCur.pitch+t*.0052));this.viewCur={yaw:n,pitch:r,radius:this.viewCur.radius},this.viewTarget={...this.viewCur},this.dirty=!0}setAutoOrbit(e){this.autoOrbit=e}getAutoOrbit(){return this.autoOrbit}panByScreen(e,t){let n=this.viewCur.radius*this.dolly*.0011,r=Math.sin(this.viewCur.yaw),i=Math.cos(this.viewCur.yaw),a=Math.sin(this.viewCur.pitch),o=(i*e+a*r*t)*n,s=(-r*e+a*i*t)*n;this.panBy(o,s)}flyToPreset(e,t=900){this.setViewPreset(e)}getCameraPose(){return{pos:{x:this.camera.position.x,y:this.camera.position.y,z:this.camera.position.z},target:{x:this.camTarget.x,z:this.camTarget.z},yaw:this.viewCur.yaw,dolly:this.dolly}}panWorldBy(e,t){this.camTarget.x-=e,this.camTarget.z-=t,this.camera.position.x-=e,this.camera.position.z-=t,this.dirty=!0}setExposure(e){this.renderer.toneMappingExposure=Math.min(2.2,Math.max(.2,e))}setTerritoryOpacity(e){let t=Math.min(1,Math.max(.05,e));for(let e of this.blocks.values())e.platform.material.opacity=.24*t;this.dirty=!0}resetView(){this.dolly=1,this.autoDolly=null,this.tweenCamTo(R,B),this.setViewPreset(`std`)}zoomBy(e){this.autoDolly=null,this.dolly=Math.min(1e3,Math.max(.001,this.dolly+e))}focusTo(e,t){this.tweenCamTo(e,t)}tweenCamTo(e,t){let n=performance.now(),r=this.camTarget.x,i=this.camTarget.z,a=()=>{let o=Math.min(1,(performance.now()-n)/600),s=1-(1-o)**3;this.camTarget.x=r+(e-r)*s,this.camTarget.z=i+(t-i)*s,o<1&&this.rafAnims.push(a)};this.rafAnims.push(a)}dropModelOnWorld(e,t,n){let r=this.nearestAgent(e,t,80),i=this.modelsById.get(n),a=i?.id??n;if(i?.kind===`dev`)return{mode:`spawn`,agentId:this.spawnDeviceNode(e,t,a,i.file,i.name),textureKey:a,x:Math.round(e),y:Math.round(t)};if(r)return this.swapTexture(r,a),this.enqueueBubble(r.channelId,r.agentId,`info`,`换装 → ${i?.name??n}`,2200),{mode:`rebind`,agentId:r.agentId,textureKey:a,x:Math.round(r.root.position.x),y:Math.round(r.root.position.z)};let o=i??{id:n,file:``,name:n};return this.spawnResident(e,t,a,o.name),{mode:`spawn`,textureKey:a,x:Math.round(e),y:Math.round(t)}}nearestAgent(e,t,n){let r,i=n;for(let n of this.agents.values()){let a=Math.hypot(n.root.position.x-e,n.root.position.z-t);a<i&&(r=n,i=a)}return r}swapTexture(e,t){let n=this.modelsById.get(t),r=n?.file??this.resolveFile(t)??`/assets/game/character/hero-3d.glb`;e.modelRef=t,e.textureKey=t,this.mountModel(e,r,n?.name??t)}spawnResident(e,t,n,r){let i=new g;i.position.set(e,0,t);let a=new g;i.add(a);let o=this.makeLabel(r,e,48,t,this.hexOf(16771524));this.scene.add(i);let s=new yt({channelId:``,agentId:`resident-${Date.now().toString(36)}`,name:r,role:`worker`,root:i,model:a,mixer:null,clips:[],colorNum:16771524,nameSprite:o,bubble:null,bubbleText:null,bubbleTimer:null,state:`idle`,progress:null,dragging:!1,homeX:e,homeZ:t,range:null,rangeLine:null,textureKey:n,modelRef:n,behavior:{mode:`idle`,roamTarget:null,targetId:null,waitUntil:0,pauseUntil:0,engaged:!1}});s.host=this,s.attachAura(16771524,`worker`),this.agents.set(s.agentId,s);let c=this.modelsById.get(n);this.mountModel(s,c?.file??`/assets/game/character/hero-3d.glb`,c?.name??r)}makeDeviceRing(){let e=new h(new k(20,26,32),new z({color:16172115,transparent:!0,opacity:.8,side:2}));e.rotation.x=-Math.PI/2,e.position.y=.3;let t=new h(new k(20,26,32,1,0,Math.PI*1.5),new z({color:3530912,transparent:!0,opacity:.55,side:2,depthWrite:!1,blending:2}));return t.rotation.x=-Math.PI/2,t.position.y=.34,t.visible=!1,{ring:e,arc:t}}spawnDeviceNode(e,t,n,r,i){let a=`dev-${Date.now().toString(36)}`,o=new g;o.position.set(e,0,t);let{ring:s,arc:c}=this.makeDeviceRing();o.add(s,c);let l=new g;o.add(l),l.userData.modelFile=r;let u=this.makeLabel(`⚙ ${i}`,e,60,t);this.scene.add(o);let d=new bt({twinId:a,name:i,modelRef:n,root:o,holder:l,ring:s,label:u,state:`idle`,telemetry:{}});d.host=this,d.arc=c,d.updateRing(),this.deviceNodes.set(a,d),this.registerScalable(`device`,a,l),this.loadGltfToGroup(r,l,192);let f=this.scalables.get(`device:${a}`),p=this.devices?.create({name:i,modelRef:n,kind:`device`,controls:[`power_on`,`power_off`,`set_speed`],posX:Math.round(e*10)/10,posZ:Math.round(t*10)/10,scale:f?Math.round(f.userScale*100)/100:1});return p?(this.pendingDeviceCreates.set(a,{name:i,modelRef:n,posX:e,posZ:t}),p.then(e=>{let t=this.cancelledDeviceCreates.delete(a);if(this.pendingDeviceCreates.delete(a),t){this.devices?.remove?.(e.id).catch(()=>{});return}this.disposed||this.adoptDeviceNode(a,e.id)}).catch(()=>{this.cancelledDeviceCreates.delete(a),this.pendingDeviceCreates.delete(a)}),a):a}adoptDeviceNode(e,t){this.pendingDeviceCreates.delete(e);let n=this.deviceNodes.get(e);if(!n)return;let r=this.deviceNodes.get(t);if(r&&r!==n){this.removeDeviceNode(e),this.selected?.kind===`device`&&this.selected.id===e&&this.setSelected({kind:`device`,id:t});return}this.deviceNodes.delete(e),n.twinId=t,this.deviceNodes.set(t,n);let i=this.scalables.get(`device:${e}`);this.scalables.delete(`device:${e}`),i&&(i.id=t,this.scalables.set(`device:${t}`,i));let a=this.pendingSaveTimers.get(e);this.pendingSaveTimers.delete(e),a&&this.pendingSaveTimers.set(t,a),this.pointerDrag?.kind===`device`&&this.pointerDrag.id===e&&(this.pointerDrag.id=t),this.selected?.kind===`device`&&this.selected.id===e&&this.setSelected({kind:`device`,id:t}),this.persistDeviceTransform(t)}async loadGltfToGroup(e,t,n){try{let r=await this.loadGltf(e),i=new o().setFromObject(r.scene),a=n/Math.max(.5,i.max.y-i.min.y);r.scene.scale.setScalar(a),r.scene.position.y=0,r.scene.traverse(e=>{e.isMesh&&(e.castShadow=!0)}),this.enhancePbrMaterials(r.scene,`device`),r.scene.traverse(e=>{e!==r.scene&&(e.matrixAutoUpdate=!1,e.updateMatrix())}),t.add(r.scene)}catch{}}enhancePbrMaterials(e,t){e.traverse(e=>{let n=e;if(!n.isMesh)return;n.receiveShadow=!0;let r=e=>{let n=e,r;if(n?.isMeshBasicMaterial){if(t===`device`&&/led|lamp|light/i.test(n.name??``)){let e=n.userData??={};return e.hdrBoost||=(n.color.multiplyScalar(4.5),!0),n}r=new E({map:n.map??null,color:n.color.clone().multiplyScalar(t===`character`?.38:.5),transparent:n.transparent,opacity:n.opacity,alphaTest:n.alphaTest,side:n.side,roughness:t===`character`?.92:.6,metalness:t===`character`?0:.25}),r.name=n.name??``,n.dispose()}else{let t=e;if(!t||!(`envMapIntensity`in t))return e;r=t}if(t===`character`)return r.envMapIntensity=.45,r.metalness>.3&&(r.metalness=0),r;if(r.transparent)return r.envMapIntensity=.42,r.emissive&&r.emissive.setScalar(Math.max(r.emissive.r,.06)),r;if(r.metalness>=.5)return r.envMapIntensity=.85,r;if(r.isMeshPhysicalMaterial){let e=r;return e.clearcoat=.35,e.clearcoatRoughness=.4,e.envMapIntensity=.7,e.needsUpdate=!0,e}let i=new m({color:r.color,map:r.map,normalMap:r.normalMap,roughnessMap:r.roughnessMap,aoMap:r.aoMap,emissive:r.emissive,emissiveMap:r.emissiveMap,emissiveIntensity:r.emissiveIntensity,roughness:Math.min(r.roughness,.55),metalness:r.metalness,clearcoat:.35,clearcoatRoughness:.4});return i.name=r.name,i.side=r.side,r.dispose(),i};n.material=Array.isArray(n.material)?n.material.map(r):r(n.material)}),this.dirty=!0}getDebugState(){return{blocks:this.blocks.size,agents:[...this.agents.values()].map(e=>({agentId:e.agentId,name:e.name,role:e.role,channelId:e.channelId,state:e.state,progress:e.progress,x:Math.round(e.root.position.x),y:Math.round(e.root.position.z),visible:!0,draggable:!0,auraColor:e.colorNum,behavior:e.behavior.mode,targetId:e.behavior.targetId,homeX:Math.round(e.homeX),homeY:Math.round(e.homeZ),textureKey:e.textureKey,modelRef:e.modelRef,decorated:!e.channelId,range:e.range?{x:Math.round(e.range.x),z:Math.round(e.range.z),radiusX:Math.round(e.range.radiusX),radiusZ:Math.round(e.range.radiusZ),shape:e.range.shape}:null,bubbleText:e.bubbleText,anim:e.animState})),bubbles:this.dbgBubbles.slice(-8),activity:this.lastActivity,player:{x:Math.round(this.camera.position.x),y:Math.round(this.camera.position.z)}}}getMinimapState(){let e=e=>e===`alarm`?16739179:e===`offline`?8689317:e===`running`?3530912:16172115;return{world:{w:D,h:N},blocks:[...this.blocks.values()].map(e=>({x:e.x/D,y:e.z/N,color:e.color,name:e.name,shape:e.shape,rx:e.radiusX/D,rz:e.radiusZ/N,rot:e.rotationY})),agents:[...this.agents.values()].map(e=>({x:e.root.position.x/D,y:e.root.position.z/N,color:e.colorNum,busy:e.state===`busy`})),devices:[...this.deviceNodes.values()].map(t=>({twinId:t.twinId,x:t.root.position.x/D,y:t.root.position.z/N,color:e(t.state),state:t.state,daq:t.modelRef.startsWith(`daq-`)||t.modelRef.includes(`daq`),bound:!1})),player:{x:this.camTarget.x/D,y:this.camTarget.z/N}}}getRecentActivity(){return[...this.recentActivity]}updateDeviceNode(e,t,n){let r=this.deviceNodes.get(e);r&&(t&&(r.state=t,r.updateRing()),n&&(r.telemetry={...r.telemetry,...n}),this.dirty=!0)}renameDevice(e,t){let n=this.deviceNodes.get(e);!n||!t.trim()||t.trim()===n.name||this.renameDeviceSprite(n,t)}swapDeviceModel(e,t){let n=this.deviceNodes.get(e);n&&this.swapDeviceModelSprite(n,t)}getDeviceName(e){return this.deviceNodes.get(e)?.name??``}getDeviceModelRef(e){return this.deviceNodes.get(e)?.modelRef??``}async removeDevice(e){if(this.deviceNodes.get(e)){if(this.pendingDeviceCreates.has(e)){this.cancelledDeviceCreates.add(e),this.removeDeviceNode(e);return}try{await this.devices?.remove?.(e)}catch{}this.removeDeviceNode(e)}}getDeviceNodes(){return[...this.deviceNodes.values()].map(e=>({twinId:e.twinId,name:e.name,x:Math.round(e.root.position.x),z:Math.round(e.root.position.z),topY:Math.round(this.deviceTopY(e)),state:e.state,telemetry:e.telemetry}))}setAnimPref(e,t){let n=this.agents.get(e);if(!n||n.clips.length===0||!n.mixer)return;let r=n.clips.findIndex(e=>e.name.toLowerCase().includes(t.toLowerCase()));r<0&&(r=t===`work`?n.clips.length-1:t===`walk`?Math.min(1,n.clips.length-1):0);let i=n.clips[r];i&&(n.mixer.stopAllAction(),n.mixer.clipAction(i).reset().play())}getAgentModel(e){return this.agents.get(e)?.modelRef??null}getAgentName(e){return this.agents.get(e)?.name??e.slice(0,8)}getAgentClips(e){let t=this.agents.get(e);return t?t.clips.map(e=>({name:e.name,duration:Math.round(e.duration*10)/10})):[]}pickAt(e,t){let n=null;for(let r of this.agents.values()){let i=Math.hypot(r.root.position.x-e,r.root.position.z-t);i<90&&(!n||i<n.d)&&(n={kind:`agent`,id:r.agentId,d:i})}for(let r of this.deviceNodes.values()){let i=Math.hypot(r.root.position.x-e,r.root.position.z-t);i<90&&(!n||i<n.d)&&(n={kind:`device`,id:r.twinId,d:i})}return n?{kind:n.kind,id:n.id}:null}pickChannel(e,t){for(let n of this.blocks.values()){let r={channelId:n.channelId,x:n.x,z:n.z,radiusX:n.radiusX,radiusZ:n.radiusZ,shape:n.shape,rotationY:n.rotationY};if(me(r,e,t))return n.channelId}return null}pickChannelEdge(e,t){for(let n of this.blocks.values()){let r=fe(n,e,t),i=Math.hypot(r.x/n.radiusX,r.z/n.radiusZ),a=42/Math.min(n.radiusX,n.radiusZ);if(Math.abs(i-1)<=a)return{cid:n.channelId,rx0:n.radiusX,rz0:n.radiusZ,rd0:i}}return null}setSelected(e){if((!e||e.kind!==`agent`||e.id!==this.rangeDrawAgent)&&this.cancelRangeDraw(),this.selected=e,this.tControls&&(e?.kind===`device`&&this.mode===`edit`&&this.deviceNodes.has(e.id)?this.tControls.attach(this.deviceNodes.get(e.id).root):this.tControls.detach()),this.refreshAgentRangeLines(),this.refreshAgentRangeHandles(),!e){this.emit(`select`,null);return}let t=this.scalables.get(`${e.kind}:${e.id}`);t&&this.emit(`select`,{kind:e.kind,id:e.id,scale:t.userScale,rotation:Math.round(this.getModelRotation(e.id,e.kind)*10)/10})}setModelScale(e,t,n){let r=n??(this.scalables.has(`device:${e}`)?`device`:`agent`),i=`${r}:${e}`,a=this.scalables.get(i);if(a){if(a.userScale=t,a.holder.scale.setScalar(a.userScale),r===`device`){let t=this.deviceNodes.get(e);t&&(t.topYCache=null)}this.dirty=!0}}getSelectedScale(){if(!this.selected)return null;let e=this.scalables.get(`${this.selected.kind}:${this.selected.id}`);return e?{kind:this.selected.kind,id:this.selected.id,scale:e.userScale,rotation:Math.round(this.getModelRotation(this.selected.id,this.selected.kind)*10)/10}:null}registerScalable(e,t,n,r){let i=r===void 0?typeof localStorage<`u`?Number(localStorage.getItem(`town.scale.${e}:${t}`)??1):1:r,a=Number.isFinite(i)&&i>0?i:1;if(this.scalables.set(`${e}:${t}`,{kind:e,id:t,userScale:a,holder:n}),n.scale.setScalar(a),e===`device`){let e=this.deviceNodes.get(t);e&&(e.topYCache=null)}}persistScale(e,t){let n=this.scalables.get(`${e}:${t}`);!n||typeof localStorage>`u`||(localStorage.setItem(`town.scale.${e}:${t}`,String(n.userScale)),e===`device`&&this.persistDeviceTransform(t))}setMode(e){if(this.mode!==e){this.mode=e,e===`browse`&&(this.pointerDrag&&this.endPointerDrag(),this.cancelRangeDraw(),this.setSelected(null),this.tControls?.detach()),this.refreshChannelHandles(),this.refreshAgentRangeHandles();for(let e of this.agents.values())e.renderRangeLine();this.dirty=!0}}getMode(){return this.mode}setSnap(e){this.snapEnabled=e}getSnap(){return this.snapEnabled}tryStartPointerDrag(e,t){if(this.mode!==`edit`||this.isGizmoBusy())return!1;let n=this.screenToWorld(e,t),r=this.pickAgentRangeHandle(n.x,n.z);if(r)return this.pointerDrag={kind:`agentRangeResize`,id:r.agentId,handle:r.handle},this.emitSaveState(`dirty`),!0;let i=this.pickResizeHandle(n.x,n.z);if(i)return this.pointerDrag={kind:`resize`,id:i.cid,handle:i.handle},this.setSelected(null),this.emitSaveState(`dirty`),!0;if(this.rangeDrawAgent)return this.pointerDrag={kind:`rangeDraw`,id:this.rangeDrawAgent,x0:n.x,z0:n.z},this.rangeDrawPreviewState=null,!0;let a=this.pickAt(n.x,n.z);if(a){if(a.kind===`device`)return this.deviceNodes.has(a.id)?(this.pointerDrag=a,this.setSelected(a),this.emitSaveState(`dirty`),!0):!1;let e=this.agents.get(a.id);return!e||!e.channelId?!1:(e.bubbleTimer&&=(clearTimeout(e.bubbleTimer),null),e.dragging=!0,e.behavior.mode=`idle`,e.behavior.targetId=null,this.pointerDrag=a,this.setSelected(a),this.emitSaveState(`dirty`),!0)}let o=this.hitAgentRangeBoundary(n.x,n.z);if(o&&o.range)return this.pointerDrag={kind:`agentRange`,id:o.agentId,dx:o.range.x-n.x,dz:o.range.z-n.z},this.setSelected({kind:`agent`,id:o.agentId}),this.emitSaveState(`dirty`),!0;let s=this.pickChannelEdge(n.x,n.z);if(s)return this.pointerDrag={kind:`channelEdge`,id:s.cid,rx0:s.rx0,rz0:s.rz0,rd0:s.rd0},this.setSelected(null),this.selectChannel(s.cid),this.emitSaveState(`dirty`),!0;if(this.pickBeacon(n.x,n.z))return!1;let c=this.pickChannel(n.x,n.z);if(c){let e=this.blocks.get(c);return e?(this.pointerDrag={kind:`channel`,id:c,dx:e.x-n.x,dz:e.z-n.z},this.setSelected(null),this.selectChannel(c),this.emitSaveState(`dirty`),!0):!1}return!1}isPointerDragging(){return this.pointerDrag!==null}snapWorld(e){return this.snapEnabled?Math.round(e/16)*16:Math.round(e*10)/10}movePointerDrag(e,t){if(!this.pointerDrag)return;let n=this.screenToWorld(e,t),r=this.snapWorld(n.x),i=this.snapWorld(n.z),a=this.pointerDrag;if(a.kind===`device`){let e=this.deviceNodes.get(a.id);e&&(e.root.position.x=r,e.root.position.z=i,this.dirty=!0)}else if(a.kind===`agent`){let e=this.agents.get(a.id);if(e){let t=r,n=i,a=this.blockLayout(e.channelId);if(a){let e=A(a,r,i,20);t=e.x,n=e.z}e.root.position.x=t,e.root.position.z=n,this.dirty=!0}}else if(a.kind===`rangeDraw`){let e=this.agents.get(a.id);if(!e)return;let t=this.blockLayout(e.channelId),r=n.x,i=n.z;if(t){let e=A(t,r,i,12);r=e.x,i=e.z}this.rangeDrawPreviewState={x0:a.x0,z0:a.z0,x1:r,z1:i},this.updateRangeDrawPreview(a.x0,a.z0,r,i),this.dirty=!0}else if(a.kind===`agentRange`){let e=this.agents.get(a.id);if(!e||!e.range)return;let t=r+a.dx,n=i+a.dz;e.range={...e.range,x:t,z:n},e.renderRangeLine(),this.refreshAgentRangeHandles(),this.dirty=!0}else if(a.kind===`agentRangeResize`){let e=this.agents.get(a.id);if(!e||!e.range)return;e.range=this.applyAgentRangeResize(e.range,a.handle,n.x,n.z),e.renderRangeLine(),this.refreshAgentRangeHandles(),this.autoFrameTo(e.range.radiusX,e.range.radiusZ),this.dirty=!0}else if(a.kind===`channel`){let e=this.blocks.get(a.id);e&&this.applyBlockMove(e,r+a.dx,i+a.dz)}else if(a.kind===`resize`){let e=this.blocks.get(a.id);e&&this.applyResize(e,a.handle,n.x,n.z)}else if(a.kind===`channelEdge`){let e=this.blocks.get(a.id);if(e){let t=fe(e,r,i),n=Math.hypot(t.x/a.rx0,t.z/a.rz0),o=a.rd0>.05?n/a.rd0:1;e.radiusX=Math.max(60,Math.round(a.rx0*o)),e.radiusZ=Math.max(40,Math.round(a.rz0*o)),this.applyLayoutToBlock(e),this.autoFrameTo(e.radiusX,e.radiusZ)}}}endPointerDrag(){if(!this.pointerDrag)return;let e=this.pointerDrag;if(this.pointerDrag=null,e.kind===`device`)this.deviceNodes.get(e.id)&&this.persistDeviceTransform(e.id);else if(e.kind===`agent`){let t=this.agents.get(e.id);t&&(t.homeX=t.root.position.x,t.homeZ=t.root.position.z,t.dragging=!1,this.emitSaveState(`saving`),this.agentApi?.updateHome(e.id,t.channelId,t.homeX,t.homeZ).then(()=>this.emitSaveState(`saved`,Date.now())).catch(()=>this.emitSaveState(`error`)))}else if(e.kind===`rangeDraw`){let t=this.agents.get(e.id);if(t&&this.rangeDrawPreviewState){let n=this.rangeDrawPreviewState,r={x:(n.x0+n.x1)/2,z:(n.z0+n.z1)/2,radiusX:Math.abs(n.x1-n.x0)/2,radiusZ:Math.abs(n.z1-n.z0)/2,shape:`rect`,rotationY:0};if(r.radiusX>=40&&r.radiusZ>=40){t.range=r,t.renderRangeLine();let n=V(t.range,t.homeX,t.homeZ,0);(n.x!==t.homeX||n.z!==t.homeZ)&&(t.homeX=n.x,t.homeZ=n.z,t.root.position.x=n.x,t.root.position.z=n.z,this.agentApi?.updateHome(e.id,t.channelId,n.x,n.z).catch(()=>{})),this.emitSaveState(`saving`),this.agentApi?.updateRange(e.id,t.channelId,t.range).then(()=>this.emitSaveState(`saved`,Date.now())).catch(()=>this.emitSaveState(`error`))}}this.cancelRangeDraw(),this.refreshAgentRangeHandles(),this.emitAgentRangeChanged(e.id)}else if(e.kind===`agentRange`||e.kind===`agentRangeResize`){let t=this.agents.get(e.id);t&&t.range&&(this.emitSaveState(`saving`),this.agentApi?.updateRange(e.id,t.channelId,t.range).then(()=>this.emitSaveState(`saved`,Date.now())).catch(()=>this.emitSaveState(`error`))),this.refreshAgentRangeHandles(),this.emitAgentRangeChanged(e.id)}else if(this.blocks.get(e.id)){this.clampAgentsToBoundary(e.id),this.refreshChannelHandles();let t=this.getChannelLayout(e.id);t&&(this.emitSaveState(`saving`),this.channelApi?.save(e.id,t).then(()=>this.emitSaveState(`saved`,Date.now())).catch(()=>this.emitSaveState(`error`)),this.emit(`channelResized`,{channelId:e.id,layout:t}))}}rangeLineVisible(e){return this.mode===`edit`||this.selected?.kind===`agent`&&this.selected.id===e.agentId}emitAgentRangeChanged(e){this.emit(`agentRangeChanged`,{agentId:e})}refreshAgentRangeLines(){for(let e of this.agents.values())e.rangeLine&&(e.rangeLine.visible=this.rangeLineVisibleFor(e))}rangeLineVisibleFor(e){return this.mode===`edit`||this.selected?.kind===`agent`&&this.selected.id===e.agentId}refreshAgentRangeHandles(){for(let e of this.agentRangeHandles)e.mesh.visible=!1;if(this.mode!==`edit`||!this.selected||this.selected.kind!==`agent`)return;let e=this.agents.get(this.selected.id);if(!e||!e.range)return;let t=e.range.rotationY*Math.PI/180,n=this.boundaryHandlePoints(e.range);for(let r=0;r<this.agentRangeHandles.length&&r<n.length;r++){let[i,a]=n[r],o=e.range.x+i*Math.cos(t)-a*Math.sin(t),s=e.range.z+i*Math.sin(t)+a*Math.cos(t);this.agentRangeHandles[r].agentId=e.agentId,this.agentRangeHandles[r].mesh.position.set(o,1.2,s),this.agentRangeHandles[r].mesh.visible=!0}}pickAgentRangeHandle(e,t){if(this.mode!==`edit`)return null;for(let n of this.agentRangeHandles)if(n.mesh.visible&&Math.hypot(n.mesh.position.x-e,n.mesh.position.z-t)<40)return{agentId:n.agentId,handle:n.handle};return null}hitAgentRangeBoundary(e,t){if(this.mode===`edit`){for(let n of this.agents.values())if(!(!n.range||!n.channelId)&&de(n.range,e,t)<26)return n}}applyAgentRangeResize(e,t,n,r){let i=-e.rotationY*Math.PI/180,a=Math.cos(i),o=Math.sin(i),s=n-e.x,c=r-e.z,l=s*a-c*o,u=s*o+c*a,d;return d=e.shape===`rect`?{...e,radiusX:Math.max(30,Math.abs(l)),radiusZ:Math.max(30,Math.abs(u))}:t===0||t===1?{...e,radiusX:Math.max(30,Math.abs(l))}:{...e,radiusZ:Math.max(30,Math.abs(u))},d}updateRangeDrawPreview(e,t,n,r){let i=Math.min(e,n),a=Math.max(e,n),o=Math.min(t,r),s=Math.max(t,r),c=(i+a)/2,l=(o+s)/2,u=Math.max(8,(a-i)/2),d=Math.max(8,(s-o)/2);if(!this.rangeDrawLine){let e=$(`rect`,1,1,4311284);e.material.opacity=.95,e.position.y=.5,this.scene.add(e),this.rangeDrawLine=e}this.rangeDrawLine.position.set(c,.5,l),this.rangeDrawLine.rotation.y=0;let f=new w().setFromPoints([new C(-u,0,-d),new C(u,0,-d),new C(u,0,d),new C(-u,0,d)]);this.rangeDrawLine.geometry.dispose(),this.rangeDrawLine.geometry=f}cancelRangeDraw(){this.rangeDrawAgent===null&&!this.rangeDrawLine||(this.rangeDrawAgent=null,this.rangeDrawPreviewState=null,this.rangeDrawLine&&=(this.scene.remove(this.rangeDrawLine),null),this.dirty=!0)}startRangeDraw(e){let t=this.agents.get(e);!t||!t.channelId||this.mode!==`edit`||(this.setSelected({kind:`agent`,id:e}),this.cancelRangeDraw(),this.rangeDrawAgent=e,this.rangeDrawPreviewState=null,this.refreshAgentRangeHandles(),this.dirty=!0)}isRangeDrawing(e){return this.rangeDrawAgent?e===void 0||this.rangeDrawAgent===e:!1}debugAdvanceReceiver(e){let t=this.receivers.get(e);t&&(t.currentUntil=0)}getAgentRange(e){return this.agents.get(e)?.range??null}setAgentRangeScene(e,t){let n=this.agents.get(e);if(!n)return;n.range||={x:n.homeX,z:n.homeZ,radiusX:120,radiusZ:90,shape:`ellipse`,rotationY:0},n.range={...n.range,...t};let r=V(n.range,n.homeX,n.homeZ,0);(r.x!==n.homeX||r.z!==n.homeZ)&&(n.homeX=r.x,n.homeZ=r.z,n.root.position.x=r.x,n.root.position.z=r.z,this.rangeHomeMoved={agentId:e,x:r.x,z:r.z}),n.renderRangeLine(),this.refreshAgentRangeHandles(),this.dirty=!0}commitAgentRange(e){let t=this.agents.get(e);if(t){if(this.rangeHomeMoved?.agentId===e){let{x:n,z:r}=this.rangeHomeMoved;this.rangeHomeMoved=null,this.agentApi?.updateHome(e,t.channelId,n,r).catch(()=>{})}this.emitSaveState(`saving`),this.agentApi?.updateRange(e,t.channelId,t.range).then(()=>this.emitSaveState(`saved`,Date.now())).catch(()=>this.emitSaveState(`error`)),this.emitAgentRangeChanged(e)}}clearAgentRange(e){let t=this.agents.get(e);t&&(t.rangeLine&&=(this.scene.remove(t.rangeLine),null),t.range=null,this.rangeHomeMoved=null,this.refreshAgentRangeHandles(),this.emitSaveState(`saving`),this.agentApi?.updateRange(e,t.channelId,null).then(()=>this.emitSaveState(`saved`,Date.now())).catch(()=>this.emitSaveState(`error`)),this.emitAgentRangeChanged(e),this.dirty=!0)}setModelRotation(e,t,n){if((n??(this.deviceNodes.has(e)?`device`:`agent`))===`device`){let n=this.deviceNodes.get(e);if(!n)return;n.root.rotation.y=t*Math.PI/180}else{let n=this.agents.get(e);if(!n)return;n.root.rotation.y=t*Math.PI/180}this.dirty=!0}getModelRotation(e,t){if((t??(this.deviceNodes.has(e)?`device`:`agent`))===`device`){let t=this.deviceNodes.get(e);return t?T.radToDeg(t.root.rotation.y):0}let n=this.agents.get(e);return n?T.radToDeg(n.root.rotation.y):0}emitSaveState(e,t=Date.now()){this.emit(`saveState`,{state:e,at:t})}persistDeviceTransform(e){let t=this.deviceNodes.get(e);if(!t||!this.devices?.update||this.pendingDeviceCreates.has(e))return;let n=this.scalables.get(`device:${e}`),r=this.pendingSaveTimers.get(e);r&&clearTimeout(r),this.pendingSaveTimers.set(e,setTimeout(()=>{this.pendingSaveTimers.delete(e),!(this.disposed||this.pendingDeviceCreates.has(e))&&(this.emitSaveState(`saving`),this.devices.update(e,{posX:Math.round(t.root.position.x*10)/10,posZ:Math.round(t.root.position.z*10)/10,rotationY:Math.round(T.radToDeg(t.root.rotation.y)*10)/10,scale:n?Math.round(n.userScale*100)/100:void 0}).then(()=>this.emitSaveState(`saved`,Date.now())).catch(()=>this.emitSaveState(`error`)))},350)),this.emitSaveState(`dirty`)}persistAllDevices(){for(let e of[...this.deviceNodes.keys()])this.persistDeviceTransform(e)}pendingSaveTimers=new Map;syncDevices(e){let t=new Set(e.map(e=>e.id));for(let e of[...this.deviceNodes.keys()])!t.has(e)&&!this.pendingDeviceCreates.has(e)&&this.removeDeviceNode(e);for(let t of e){let e=this.deviceNodes.get(t.id);if(!e){let n=[...this.pendingDeviceCreates.entries()].find(([,e])=>e.name===t.name&&e.modelRef===t.modelRef);n&&(this.adoptDeviceNode(n[0],t.id),e=this.deviceNodes.get(t.id))}if(!e){(t.kind===`daq`||(t.modelRef??``).startsWith(`daq-`)||(t.modelRef??``).startsWith(`dcw-`)||this.resolveDeviceModel(t.modelRef)?.file)&&typeof t.posX==`number`&&typeof t.posZ==`number`?this.recreateDeviceNode(t):this.pendingDeviceTwins.set(t.id,t);continue}if(this.pendingDeviceTwins.delete(t.id),e.applyTwin(t),this.pointerDrag?.id!==t.id){let n=typeof t.posX==`number`&&t.posX!==e.root.position.x||typeof t.posZ==`number`&&t.posZ!==e.root.position.z;typeof t.posX==`number`&&(e.root.position.x=t.posX),typeof t.posZ==`number`&&(e.root.position.z=t.posZ),typeof t.rotationY==`number`&&(e.root.rotation.y=t.rotationY*Math.PI/180);let r=this.scalables.get(`device:${t.id}`);typeof t.scale==`number`&&r&&(r.userScale=t.scale,r.holder.scale.setScalar(t.scale)),n&&(this.dirty=!0)}this.dirty=!0}this.daqLinksWanted.length&&this.syncDaqLinks(this.daqLinksWanted);for(let e of[...this.pendingDeviceTwins.keys()])t.has(e)||this.pendingDeviceTwins.delete(e)}resolveDeviceModel(e){let t=this.modelsById.get(e);if(t?.file)return{id:t.id,file:t.file,hFactor:t.hFactor??1};for(let[t,n]of this.modelsById)if(!(n.kind!==`dev`||!n.file)&&(t===`dev-folder-${e}`||t.endsWith(`-${e}`)))return{id:t,file:n.file,hFactor:n.hFactor??1};return null}recreateDeviceNode(e){if(e.kind===`daq`||(e.modelRef??``).startsWith(`daq-`)||(e.modelRef??``).startsWith(`dcw-`)){this.recreateDaqNode(e);return}let t=this.resolveDeviceModel(e.modelRef),n=t?.file??``;if(!n)return;let r=typeof e.posX==`number`?e.posX:R,i=typeof e.posZ==`number`?e.posZ:B,a=new g;a.position.set(r,0,i),a.rotation.y=typeof e.rotationY==`number`?e.rotationY*Math.PI/180:0;let{ring:o,arc:s}=this.makeDeviceRing();a.add(o,s);let c=new g;a.add(c);let l=this.makeLabel(`⚙ ${e.name}`,r,60,i);c.userData.modelFile=n,this.scene.add(a);let u=new bt({twinId:e.id,name:e.name,modelRef:e.modelRef,root:a,holder:c,ring:o,label:l,state:e.state??`idle`,telemetry:e.telemetry??{}});u.host=this,u.arc=s,u.updateRing(),this.deviceNodes.set(e.id,u),this.registerScalable(`device`,e.id,c,typeof e.scale==`number`?e.scale:void 0),this.loadGltfToGroup(n,c,192*(t?.hFactor??1)),this.dirty=!0}makeDaqMesh(e){let t=new g,n=new E({color:10465992,metalness:.85,roughness:.32}),r=new E({color:7636636,metalness:.35,roughness:.5}),i=new E({color:5596282,metalness:.4,roughness:.55}),a=new E({color:2831426,metalness:.7,roughness:.45}),o=new E({color:14674162,metalness:1,roughness:.14}),s=new E({color:12941893,metalness:.9,roughness:.35}),c=new z({color:4311284});c.color.multiplyScalar(5);let l=(e,t,n,r)=>{let i=new h(new H(e*34,t*34,n*34),r);return i.castShadow=!0,i},u=(e,t,n,r,i=20)=>{let a=new h(new _(e*34,t*34,n*34,i),r);return a.castShadow=!0,a},d=(e,n,r,i)=>(e.position.set(n*34,r*34,i*34),t.add(e),e);d(u(.17,.22,.09,a),0,.045,0),d(u(.028,.028,.95,n,10),0,.55,0);let f=new h(new W(3.06,.68,10,28),new z({color:3530912}));if(f.material.color.multiplyScalar(6),f.rotation.x=Math.PI/2,t.add(f),f.position.y=34.68,e.endsWith(`temp-tc`)){d(l(.24,.32,.24,r),0,1.2,0);let e=d(u(.014,.014,.4,n,8),.14,.85,0);e.rotation.z=-.5}else if(e.endsWith(`pressure-tx`))d(u(.13,.16,.3,n),0,1.22,0),d(u(.12,.12,.05,a),0,1.4,0),d(l(.05,.05,.2,s),0,1.1,.2);else if(e.endsWith(`tension-cell`)){d(l(.34,.2,.2,r),0,1.25,0);for(let e of[-.11,.11]){let t=d(u(.06,.06,.26,o),e,1.25,0);t.rotation.x=Math.PI/2}}else if(e.endsWith(`line-encoder`)){d(l(.34,.05,.05,n),.14,1.28,0);let e=d(u(.16,.16,.05,a),.32,1.28,0);e.rotation.z=Math.PI/2,d(new h(new W(.1*34,.51,10,26),f.material),.35,1.28,0)}else if(e.endsWith(`vision-cam`)){d(l(.28,.2,.36,i),0,1.3,0);let e=d(u(.07,.09,.14,a),0,1.3,.24);e.rotation.x=Math.PI/2,d(new h(new W(2.55,.012*34,10,24),f.material),0,1.3,.3)}else e.endsWith(`power-meter`)&&(d(l(.32,.42,.18,r),0,1.3,0),d(u(.012,.012,.42,n,8),.1,1.7,0),d(new h(new M(.028*34,10,8),f.material),.1,1.92,0),d(l(.2,.06,.02,c),0,1.42,.1));return{group:t,ledRing:f}}recreateDaqNode(e){let t=typeof e.posX==`number`?e.posX:R,n=typeof e.posZ==`number`?e.posZ:B,r=new g;r.position.set(t,0,n),r.rotation.y=typeof e.rotationY==`number`?e.rotationY*Math.PI/180:0;let{group:i,ledRing:a}=this.makeDaqMesh(e.modelRef);r.add(i);let o=new h(new k(16,21,36),new z({color:3530912,transparent:!0,opacity:.5,side:2,depthWrite:!1}));o.rotation.x=-Math.PI/2,o.position.y=.35,r.add(o);let s=new h(new k(24,34,48),new z({color:3530912,transparent:!0,opacity:.16,side:2,depthWrite:!1,blending:2}));s.rotation.x=-Math.PI/2,s.position.y=.28,r.add(s);let c=e.lineColor||`#35e0a0`,l=this.makeLabel(e.name,t,62,n,c);this.scene.add(r);let u=new bt({twinId:e.id,name:e.name,modelRef:e.modelRef,root:r,holder:r,ring:o,label:l,state:e.state??`running`,telemetry:e.telemetry??{}});u.host=this,u.lineColor=e.lineColor??``,u.applyLine=e=>{let t=new F(e||`#35e0a0`);o.material.color.copy(t),s.material.color.copy(t),a.material.color.copy(t).multiplyScalar(6),this.scene.remove(l),l.material.dispose();let n=this.makeLabel(u.name,r.position.x,62,r.position.z,e||`#35e0a0`);u.label=n,this.scene.add(n),this.dirty=!0},e.lineColor&&u.applyLine(e.lineColor),u.updateRing(),this.deviceNodes.set(e.id,u),this.daqLedRings.set(e.id,a),this.registerScalable(`device`,e.id,r,typeof e.scale==`number`?e.scale:void 0),this.dirty=!0}removeDeviceNode(e){let t=this.deviceNodes.get(e);t&&(this.scene.remove(t.root),this.scene.remove(t.label),this.disposeDeviceAssets(t),this.selected?.kind===`device`&&this.selected.id===e&&this.setSelected(null),this.scalables.delete(`device:${e}`),this.deviceNodes.delete(e),this.daqLedRings.delete(e),this.daqLinkSig=``,this.filmWebSig=``,this.dirty=!0)}deviceTopY(e){if(e.topYCache!=null)return e.topYCache;let t=new o().setFromObject(e.holder),n=Number.isFinite(t.max.y)?Math.max(40,t.max.y):64;return e.topYCache=n,n}syncDaqLinks(e){this.daqLinksWanted=e;let t=e.filter(e=>this.deviceNodes.has(e.daqId)&&this.deviceNodes.has(e.deviceId)),n=t.map(e=>`${e.daqId}>${e.deviceId}`).sort().join(`|`);if(n!==this.daqLinkSig){this.daqLinkSig=n;for(let e of this.daqLinks)this.daqLinkGroup.remove(e.line),this.daqLinkGroup.remove(e.pulse),e.line.geometry.dispose();this.daqLinks=[];for(let e of t){let t=this.deviceNodes.get(e.daqId),n=this.deviceNodes.get(e.deviceId),r=new C(t.root.position.x,42,t.root.position.z),i=new C(n.root.position.x,this.deviceTopY(n)+6,n.root.position.z),o=r.clone().add(i).multiplyScalar(.5);o.y=Math.max(r.y,i.y)+42;let s=new Ce(r,o,i),c=new w().setFromPoints(s.getPoints(28)),l=new a(c,new f({color:3530912,transparent:!0,opacity:.55,dashSize:8,gapSize:5}));l.computeLineDistances();let u=new h(new M(2.6,10,8),new z({color:4311284}));u.material.color.multiplyScalar(5),this.daqLinkGroup.add(l,u),this.daqLinks.push({...e,line:l,pulse:u,curve:s,pt:Math.random(),ptSig:``})}this.dirty=!0}}static _lkA=new C;static _lkB=new C;static _lkM=new C;refreshDaqLinks(){for(let e of this.daqLinks){let n=this.deviceNodes.get(e.daqId),r=this.deviceNodes.get(e.deviceId);if(!n||!r)continue;let i=this.deviceTopY(r)+6,a=`${Math.round(n.root.position.x)},${Math.round(n.root.position.z)},${Math.round(r.root.position.x)},${Math.round(r.root.position.z)},${Math.round(i)}`;if(a===e.ptSig)continue;e.ptSig=a;let o=t._lkA.set(n.root.position.x,42,n.root.position.z),s=t._lkB.set(r.root.position.x,i,r.root.position.z),c=t._lkM.copy(o).add(s).multiplyScalar(.5);c.y=Math.max(o.y,s.y)+42,e.curve.v0.copy(o),e.curve.v1.copy(c),e.curve.v2.copy(s);let l=e.curve.getPoints(28);e.line.geometry.setFromPoints(l),e.line.computeLineDistances()}}isLineDevice(e){let t=e.toLowerCase();return/extruder|caster|mdo|tdo|winder/.test(t)}rebuildFilmWeb(){let e=[...this.deviceNodes.values()].filter(e=>this.isLineDevice(e.modelRef)&&!e.modelRef.startsWith(`daq-`)).sort((e,t)=>e.root.position.x-t.root.position.x),t=e.map(e=>`${e.twinId}:${Math.round(e.root.position.x)},${Math.round(e.root.position.z)}`).join(`|`);if(t!==this.filmWebSig){for(this.filmWebSig=t;this.filmWebGroup.children.length;){let e=this.filmWebGroup.children[0];this.filmWebGroup.remove(e),e.geometry.dispose()}this.filmWebMat||=new E({color:11196671,metalness:.1,roughness:.35,transparent:!0,opacity:.28,emissive:2845583,emissiveIntensity:.25,side:2,depthWrite:!1});for(let t=0;t<e.length-1;t++){let n=e[t].root.position,r=e[t+1].root.position,i=Math.abs(r.x-n.x)-110;if(i<30)continue;let a=new h(new H(i,1.2,46),this.filmWebMat);a.position.set((n.x+r.x)/2,48,(n.z+r.z)/2),this.filmWebGroup.add(a)}this.dirty=!0}}loop(){let e=()=>{if(this.disposed)return;this.raf=requestAnimationFrame(e),this.rafCount+=1;let t=this.clock.getDelta();if(this.frameBudgetMs>0){if(this.frameAcc+=t*1e3,this.frameAcc<this.frameBudgetMs-.5)return;this.frameAcc=0}let n=Math.min(t,.1),r=this.clock.elapsedTime;this.drainReceivers(performance.now());for(let e of this.agents.values())e.state!==`stopped`&&!e.dragging&&e.update(n);for(let e of this.agents.values())e.mixer&&e.mixer.update(n);for(let e of this.blocks.values())e.beacon.rotation.y+=n*.4;for(let e of this.agents.values())if(e.nameSprite.position.set(e.root.position.x,48,e.root.position.z),e.bubble&&e.bubble.position.set(e.root.position.x,108+Math.max(0,e.model.scale.y-1)*22,e.root.position.z),e.auraMats.length){let t=.8+.2*Math.sin(r*2.2+e.auraPhase);for(let n of e.auraMats)n.opacity=n.userData.baseOp*t}for(let e of this.deviceNodes.values())e.label.position.set(e.root.position.x,60,e.root.position.z),e.arc?.visible&&(e.arc.rotation.z+=n*1.6);for(let e of this.daqLedRings.values()){e.rotation.z+=n*1.2;let t=1+Math.sin(r*3.2)*.08;e.scale.setScalar(t)}if(this.daqLinks.length){this.dirty&&this.refreshDaqLinks();for(let e of this.daqLinks)e.pt=(e.pt+n*.3)%1,e.pulse.position.copy(e.curve.getPoint(e.pt))}if(this.dirty&&this.rebuildFilmWeb(),this.selRing){let e=this.selected,t=0,r=0,i=0;if(e?.kind===`agent`){let n=this.agents.get(e.id);n&&(t=n.root.position.x,r=n.root.position.z,i=46*Math.max(.6,n.model.scale.y))}else if(e?.kind===`device`){let n=this.deviceNodes.get(e.id);n&&(t=n.root.position.x,r=n.root.position.z,i=Math.max(34,this.deviceTopY(n)*.42))}this.selRing.visible=i>0,i>0&&(this.selRing.position.set(t,.5,r),this.selRing.scale.setScalar(i),this.selRing.rotation.z+=n*.9)}let i=this.rafAnims;this.rafAnims=[];for(let e of i)e();let a=1-Math.exp(-n*7.2);this.autoDolly!==null&&(this.dolly+=(this.autoDolly-this.dolly)*a,Math.abs(this.autoDolly-this.dolly)<.01&&(this.autoDolly=null));let o=1-Math.exp(-n*4.8);for(let e of[`yaw`,`pitch`,`radius`])this.viewCur[e]+=(this.viewTarget[e]-this.viewCur[e])*o;this.autoOrbit&&!this.pointerDrag&&(this.viewCur.yaw-=n*.156,this.viewTarget.yaw=this.viewCur.yaw);let s=this.viewCur.radius*this.dolly,c=Math.cos(this.viewCur.pitch);this.camera.position.set(this.camTarget.x+s*c*Math.sin(this.viewCur.yaw),20+s*Math.sin(this.viewCur.pitch),this.camTarget.z+s*c*Math.cos(this.viewCur.yaw)),this.camera.lookAt(this.camTarget.x,20,this.camTarget.z);let l=Math.max(.05,1.2*this.dolly),u=16e3*this.dolly;(Math.abs(this.camera.near-l)>.005||Math.abs(this.camera.far-u)>1)&&(this.camera.near=l,this.camera.far=u,this.camera.updateProjectionMatrix()),this.skyDome&&(this.skyDome.position.set(this.camTarget.x,0,this.camTarget.z),this.skyDome.scale.setScalar(Math.max(1,this.dolly*1.3))),this.ground.position.set(this.camTarget.x,0,this.camTarget.z);let d=this.ground.material.map;d&&d.offset.set(this.camTarget.x/(D*16/d.repeat.x),-this.camTarget.z/(N*16/d.repeat.y));let f=this.scene.fog;f instanceof p&&(f.near=1400*this.dolly,f.far=8800*this.dolly);let m=this.keyLight.shadow.camera,h=1600*Math.max(1,this.dolly);Math.abs(m.right-h)>1&&(m.left=-h,m.right=h,m.top=2300*Math.max(1,this.dolly),m.bottom=-2300*Math.max(1,this.dolly),m.updateProjectionMatrix(),this.renderer.shadowMap.needsUpdate=!0);let g=!1;for(let e of this.agents.values())if(e.mixer){g=!0;break}this.renderer.shadowMap.needsUpdate=this.dirty||g,this.renderer.info.reset(),this.composer.render(n),this.dirty=!1,this.frameCount+=1;let _=performance.now();if(this.fpsWinT0===0&&(this.fpsWinT0=_),_-this.fpsWinT0>=1e3){let e=Math.round(this.frameCount*1e3/(_-this.fpsWinT0));this.emit(`fps`,e),this.adaptQuality(e);let t=this.renderer.info;globalThis.__townStats={fps:e,rafHz:this.rafCount,drawCalls:t.render.calls,triangles:t.render.triangles,geometries:t.memory.geometries,textures:t.memory.textures,tier:this.qTier,dpr:+this.renderer.getPixelRatio().toFixed(2),frameBudgetMs:+this.frameBudgetMs.toFixed(2),agents:this.agents.size,devices:this.deviceNodes.size},this.frameCount=0,this.rafCount=0,this.fpsWinT0=_}};e()}static Q_TIERS=[{scale:1,shadow:2048,bloom:!0},{scale:.8,shadow:2048,bloom:!0},{scale:.65,shadow:1024,bloom:!0},{scale:.55,shadow:1024,bloom:!1}];qTier=0;qLowStreak=0;qHighStreak=0;qualityMode=`auto`;static USER_QUALITY={ultra:{scale:1,shadow:2048,bloom:!0},hd:{scale:.8,shadow:2048,bloom:!0},normal:{scale:.6,shadow:1024,bloom:!0}};setQualityMode(e){if(this.qualityMode=e,e===`auto`){this.applyQuality();return}let n=t.USER_QUALITY[e];this.applyPixelRatio(Math.max(.5,this.baseDpr*n.scale));let r=this.keyLight;(r.shadow.mapSize.x??0)!==n.shadow&&(r.shadow.mapSize.set(n.shadow,n.shadow),r.shadow.map?.dispose(),r.shadow.map=null,this.renderer.shadowMap.needsUpdate=!0);let i=this.composer.passes.find(e=>e instanceof ht);i&&(i.enabled=n.bloom)}adaptQuality(e){if(this.qualityMode!==`auto`)return;let n=t.Q_TIERS.length-1;e<17&&this.qTier<n?++this.qLowStreak>=2&&(this.qTier++,this.applyQuality(),this.qLowStreak=0,this.qHighStreak=0):e>=27&&this.qTier>0?++this.qHighStreak>=4&&(this.qTier--,this.applyQuality(),this.qHighStreak=0,this.qLowStreak=0):(this.qLowStreak=0,this.qHighStreak=0)}applyQuality(){let e=t.Q_TIERS[this.qTier];this.applyPixelRatio(Math.max(.5,this.baseDpr*e.scale));let n=this.keyLight;(n.shadow.mapSize.x??0)!==e.shadow&&(n.shadow.mapSize.set(e.shadow,e.shadow),n.shadow.map?.dispose(),n.shadow.map=null,this.renderer.shadowMap.needsUpdate=!0);let r=this.composer.passes.find(e=>e instanceof ht);r&&(r.enabled=e.bloom)}applyPixelRatio(e){this.renderer.setPixelRatio(e),this.composer.setPixelRatio(e);let t=this.el.clientWidth||1100,n=this.el.clientHeight||700;this.renderer.setSize(t,n),this.composer.setSize(t,n)}disposeCanvasTextures(e){e&&e.traverse(e=>{let t=e.material,n=Array.isArray(t)?t:t?[t]:[];for(let e of n){let t=e;t.map&&t.map.image instanceof HTMLCanvasElement&&t.map.dispose(),e.dispose()}})}disposeDeviceAssets(e){e.ring.geometry.dispose(),e.ring.material.dispose(),e.arc&&(e.arc.geometry.dispose(),e.arc.material.dispose()),this.disposeCanvasTextures(e.label)}disposeAgentAssets(e){this.disposeCanvasTextures(e.nameSprite??null),this.disposeCanvasTextures(e.bubble??null),e.rangeLine?.geometry.dispose(),e.aura&&=(e.aura.traverse(e=>{let t=e;t.isMesh&&(t.geometry.dispose(),t.material.dispose())}),null)}resetAll(){for(let e of this.agents.values())this.scene.remove(e.root),e.nameSprite&&this.scene.remove(e.nameSprite),e.bubble&&this.scene.remove(e.bubble),e.rangeLine&&this.scene.remove(e.rangeLine),this.disposeAgentAssets(e);for(let e of this.blocks.values())this.scene.remove(e.platform),this.scene.remove(e.padRing),this.scene.remove(e.beacon),this.scene.remove(e.boundary),this.scene.remove(e.label),this.disposeCanvasTextures(e.label);for(let e of this.deviceNodes.values())this.scene.remove(e.root),this.scene.remove(e.label),this.disposeDeviceAssets(e);this.deviceNodes.clear(),this.scalables.clear(),this.receivers.clear(),this.pointerDrag=null,this.cancelRangeDraw(),this.selected=null,this.selectedChannel=null;for(let e of this.resizeHandles)e.mesh.visible=!1;for(let e of this.agentRangeHandles)e.mesh.visible=!1;this.agents.clear(),this.blocks.clear()}dispose(){this.disposed=!0,cancelAnimationFrame(this.raf),delete globalThis.__townScene3d;for(let e of this.pendingSaveTimers.values())clearTimeout(e);this.pendingSaveTimers.clear(),this.receivers.clear(),this.resizeOb?.disconnect(),this.resizeOb=null,this.tControls?.dispose(),this.tControls=null,this.composer?.dispose(),this.renderer.dispose(),this.renderer.domElement.parentElement===this.el&&this.renderer.domElement.remove()}};export{xt as TownScene3D};
@@ -1 +0,0 @@
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 ee,W as o,b as s,ct as c,d as l,dt as te,f as u,h as d,i as f,m as p,p as m,pt as h,tt as g,xt as _,y as v}from"./CSkxz2NX.js";import{d as ne}from"./BJHKLJJU.js";import{n as y}from"./DtYHUi5Z.js";import{n as re}from"./KZQX7xoM.js";import{n as ie,r as ae,t as oe}from"./DDgJcSET.js";import{t as se}from"./aWWIh8YL.js";import{t as ce}from"./DBHNsT1Y.js";import{i as le,n as ue,t as de}from"./BCGafdXT.js";import{r as fe,t as pe}from"./CzlMDL5H.js";import{t as me}from"./jZsY8yYz.js";import{n as he,t as ge}from"./CYWVXZTS2.js";import{t as _e}from"./C4DWUZ6d2.js";import{t as ve}from"./DZtm4l-P2.js";import{t as ye}from"./CClOy-Hz2.js";import{t as b}from"./DIaZ2PTo2.js";import{t as x}from"./BDNMzG2s2.js";import{t as S}from"./D0ZBQrN_2.js";import{t as C}from"./BN6iuJEg2.js";import{t as w}from"./CNs_Ozdc2.js";import{i as T}from"./Du9v6qGB.js";var be={class:`page`},xe={class:`head`},Se={class:`sub`},Ce={class:`toolbar`},we={key:0,class:`admin-note`},Te={class:`grid`},Ee={class:`card-head`},De={class:`name`},Oe={class:`owner`},ke={class:`members`},Ae={class:`member-name`},je={class:`member-harness`},Me=[`onClick`],Ne={class:`aw-mono`},Pe={key:0,class:`plug-builtin-tag`},Fe={class:`plug-hint`},Ie={class:`plug-source`},Le={class:`plug-text`},Re={class:`plug-name`},ze={class:`aw-mono`},Be={key:0,class:`plug-builtin-tag`},Ve={class:`plug-desc`},He={key:0,class:`plug-hint`},E=x(r({__name:`teams`,setup(r){let{t:x}=re(),E=e=>T(x,e);w({layout:`default`});let D=C(),O=b(),k=h([]),A=h([]),Ue=h([]),We=h(!1),j=async()=>{We.value=!0;try{let[e,t,n]=await Promise.all([D.listTeams(),D.listTemplates(),D.listChannels()]);k.value=e?.data??[],A.value=t?.data??[],Ue.value=n?.data??[]}finally{We.value=!1}};j();let Ge=h({});(async()=>{try{let e=(await D.listHarnesses())?.data?.harnesses;if(Array.isArray(e)){let t={};for(let n of e)t[n.id]=n.available!==!1;Ge.value=t}}catch{}})();let M=e=>Ge.value[e.harness]===!1,Ke=l(()=>A.value.map(e=>{let t=M(e);return{value:e.id,label:t?`${e.name}(${e.harness} · ${x(`agents.notInstalled`)})`:`${e.name}(${e.harness})`,disabled:t}})),N=h(`all`),qe=l(()=>{let e=O.user?.id;switch(N.value){case`mine`:return k.value.filter(t=>t.ownerUserId===e);case`public`:return k.value.filter(e=>e.visibility===`public`);case`builtin`:return k.value.filter(e=>e.isBuiltin);default:return k.value}}),P=e=>!e.isBuiltin&&(e.ownerUserId===O.user?.id||O.isAdmin),F=e=>e.isBuiltin?{text:x(`teams.k3x23c018`),color:`default`,icon:`i-tabler-lock`}:e.visibility===`public`?{text:x(`teams.k3wv1t019`),color:`green`}:{text:x(`teams.k447jj020`),color:`default`},I=h(!1),L=te({name:``,description:``,visibility:`private`}),R=h([]),z=h({});(async()=>{try{let e=await D.listPlugins(),t=e?.plugins??e?.data?.plugins??[],n=(Array.isArray(t)?t:[]).filter(e=>e.enabled!==!1);R.value=n;let r={};for(let e of n)r[e.name]=!0;z.value=r}catch{}})();let Je=l({get:()=>Object.entries(z.value).filter(([,e])=>e).map(([e])=>e),set:e=>{let t={};for(let n of R.value)t[n.name]=e.includes(n.name);z.value=t}}),Ye=async()=>{if(!L.name.trim()){e.warning(x(`teams.k1bvcdo2021`));return}let t=Object.entries(z.value).map(([e,t])=>({name:e,enabled:t}));await D.createTeam({name:L.name.trim(),description:L.description||void 0,visibility:L.visibility,plugins:t}),e.success(x(`teams.k3n5hak022`)),I.value=!1,L.name=``,L.description=``,L.visibility=`private`,z.value=Object.fromEntries(Object.entries(z.value).map(([e])=>[e,!0])),j()},Xe=async(t,n)=>{try{await D.updateTeam(t.id,{visibility:n?`public`:`private`}),e.success(x(n?`teams.k1globhp023`:`teams.k1xxabaf024`)),j()}catch(t){e.error(S(t))}},B=h(!1),V=h(null),H=h(``),U=h(`worker`),Ze=e=>{V.value=e,H.value=``,U.value=`worker`,B.value=!0},Qe=async()=>{if(!V.value||!H.value){e.warning(x(`teams.k1kw4rtj025`));return}try{await D.addTeamMember(V.value.id,{agentId:H.value,role:U.value}),e.success(x(`teams.k3n5hzw026`)),B.value=!1,j()}catch(t){e.error(S(t))}},$e=async(e,t)=>{await D.removeTeamMember(e.id,t),j()},W=h(!1),G=h(null),K=h(``),et=h(!1),tt=e=>{G.value=e,K.value=``,W.value=!0},nt=async()=>{if(!G.value||!K.value){e.warning(x(`teams.selectChannel`));return}et.value=!0;try{let t=(await D.deployTeam(G.value.id,K.value))?.data?.agents?.length??0;e.success(x(`teams.kh90glh031`,{p0:t})),W.value=!1}catch(t){e.error(S(t))}finally{et.value=!1}},rt=async t=>{await D.deleteTeam(t.id),e.success(x(`teams.k1oxjrxx027`)),j()},q=h(!1),J=h(null),Y=h([]),X=h(`default`),Z=h(!1),Q=h(null),it=e=>{J.value=e,Y.value=[],X.value=`default`,q.value=!0,$(e)},$=async t=>{Z.value=!0;try{let e=(await D.listTeamPlugins(t.id))?.data??{};Y.value=e.plugins??[],X.value=e.source===`explicit`?`explicit`:`default`}catch(t){e.error(S(t))}finally{Z.value=!1}},at=async(t,n)=>{if(!J.value||Q.value)return;let r=J.value.id;Q.value=t.name;try{let i=Y.value.map(e=>({name:e.name,enabled:e.name===t.name?n:e.enabled})),a=(await D.putTeamPlugins(r,{plugins:i}))?.data??{};Y.value=a.plugins??i.map(e=>({...e})),X.value=a.source===`explicit`?`explicit`:`default`,e.success(x(`teams.k1plugon043`))}catch(t){e.error(S(t))}finally{Q.value=null}};return y({title:()=>x(`titles.teams`)}),(e,r)=>{let l=t,te=me,h=oe,y=de,re=ye,b=fe,x=pe,S=_e,C=ve,w=ce,T=ae,D=ue,A=le,j=ge,Ge=he,M=ie,z=n,$=se;return a(),d(`div`,be,[u(`div`,xe,[u(`div`,null,[u(`h2`,null,`AgentTeam `+i(e.$t(`teams.k3svl8y028`)),1),u(`p`,Se,i(e.$t(`teams.k12gl4wn008`)),1)]),s(te,null,{default:g(()=>[s(l,{onClick:r[0]||=t=>(`navigateTo`in e?e.navigateTo:_(ne))(`/workshop`)},{default:g(()=>[v(i(e.$t(`teams.krpx6qa009`)),1)]),_:1}),s(l,{type:`primary`,onClick:r[1]||=e=>I.value=!0},{default:g(()=>[v(i(e.$t(`teams.k1efmuyx002`)),1)]),_:1})]),_:1})]),u(`div`,Ce,[s(h,{value:_(N),"onUpdate:value":r[2]||=e=>c(N)?N.value=e:null,size:`small`,options:[{value:`all`,label:e.$t(`chips.chipAll`,{n:_(k).length})},{value:`mine`,label:e.$t(`chips.mine`)},{value:`public`,label:e.$t(`chips.public`)},{value:`builtin`,label:e.$t(`chips.builtin`)}]},null,8,[`value`,`options`]),_(O).isAdmin?(a(),d(`span`,we,[r[15]||=u(`span`,{class:`i-tabler-shield-check`},null,-1),v(` `+i(e.$t(`teams.k1bpgi8h010`)),1)])):p(``,!0)]),s(C,{spinning:_(We)},{default:g(()=>[u(`div`,Te,[(a(!0),d(f,null,o(_(qe),t=>(a(),d(`div`,{key:t.id,class:`card`},[u(`div`,Ee,[u(`span`,De,i(E(t)),1),s(y,{color:F(t).color,class:`vis-tag`},{default:g(()=>[F(t).icon?(a(),d(`span`,{key:0,class:ee(F(t).icon)},null,2)):p(``,!0),v(i(F(t).text),1)]),_:2},1032,[`color`]),!t.isBuiltin&&P(t)?(a(),m(re,{key:0,checked:t.visibility===`public`,size:`small`,title:t.visibility===`public`?e.$t(`teams.toPrivate`):e.$t(`teams.toPublic`),onChange:e=>Xe(t,e===!0)},null,8,[`checked`,`title`,`onChange`])):p(``,!0),u(`span`,Oe,i(t.ownerName??`-`),1),P(t)?(a(),m(S,{key:1},{overlay:g(()=>[s(x,null,{default:g(()=>[s(b,{onClick:e=>tt(t)},{default:g(()=>[v(i(e.$t(`teams.deployToChannel`)),1)]),_:1},8,[`onClick`]),s(b,{onClick:e=>it(t)},{default:g(()=>[v(i(e.$t(`teams.k1plugon047`)),1)]),_:1},8,[`onClick`]),s(b,{danger:``,onClick:e=>rt(t)},{default:g(()=>[v(i(e.$t(`teams.k1bpojhf011`)),1)]),_:1},8,[`onClick`])]),_:2},1024)]),default:g(()=>[r[16]||=u(`span`,{class:`i-tabler-dots op`},null,-1)]),_:2},1024)):(a(),m(l,{key:2,class:`deploy-btn`,size:`small`,type:`default`,title:e.$t(`teams.kxheuf1001`),onClick:e=>tt(t)},{default:g(()=>[v(i(e.$t(`teams.k48ja7012`)),1)]),_:1},8,[`title`,`onClick`]))]),u(`div`,ke,[(a(!0),d(f,null,o(t.members,e=>(a(),d(`div`,{key:e.templateId,class:`member`},[s(y,{color:e.role===`lead`?`gold`:`blue`,class:`role`},{default:g(()=>[v(i(e.role),1)]),_:2},1032,[`color`]),u(`span`,Ae,i(E(e)),1),u(`span`,je,i(e.harness),1),P(t)?(a(),d(`span`,{key:0,class:`i-tabler-x rm`,onClick:n=>$e(t,e.templateId)},null,8,Me)):p(``,!0)]))),128)),P(t)?(a(),m(l,{key:0,size:`small`,type:`dashed`,block:``,onClick:e=>Ze(t)},{default:g(()=>[v(i(e.$t(`teams.krt2oib013`)),1)]),_:1},8,[`onClick`])):p(``,!0)])]))),128)),_(qe).length===0?(a(),d(`div`,{key:0,class:`card placeholder`,onClick:r[3]||=e=>I.value=!0},[r[17]||=u(`span`,{class:`i-tabler-plus big`},null,-1),u(`span`,null,i(e.$t(`teams.k6cbbgf014`)),1)])):p(``,!0)])]),_:1},8,[`spinning`]),s(z,{open:_(I),"onUpdate:open":r[8]||=e=>c(I)?I.value=e:null,title:e.$t(`teams.k1efmuyx002`),"ok-text":e.$t(`common.create`),"cancel-text":e.$t(`common.cancel`),onOk:Ye},{default:g(()=>[s(M,{layout:`vertical`},{default:g(()=>[s(T,{label:e.$t(`teams.k3xhia003`)},{default:g(()=>[s(w,{value:_(L).name,"onUpdate:value":r[4]||=e=>_(L).name=e},null,8,[`value`])]),_:1},8,[`label`]),s(T,{label:e.$t(`teams.k40gkk004`)},{default:g(()=>[s(w,{value:_(L).description,"onUpdate:value":r[5]||=e=>_(L).description=e},null,8,[`value`])]),_:1},8,[`label`]),s(T,{label:e.$t(`teams.k3lrqn0005`)},{default:g(()=>[s(A,{value:_(L).visibility,"onUpdate:value":r[6]||=e=>_(L).visibility=e},{default:g(()=>[s(D,{value:`private`},{default:g(()=>[v(i(e.$t(`teams.k17jfge3015`)),1)]),_:1}),s(D,{value:`public`},{default:g(()=>[v(i(e.$t(`teams.k1h2lq0o016`)),1)]),_:1})]),_:1},8,[`value`])]),_:1},8,[`label`]),_(R).length?(a(),m(T,{key:0,label:e.$t(`teams.k1plugon041`)},{default:g(()=>[s(Ge,{value:_(Je),"onUpdate:value":r[7]||=e=>c(Je)?Je.value=e:null,class:`plug-create-group`},{default:g(()=>[(a(!0),d(f,null,o(_(R),t=>(a(),m(j,{key:t.name,value:t.name},{default:g(()=>[u(`span`,Ne,i(t.name),1),t.builtin?(a(),d(`span`,Pe,i(e.$t(`teams.k3x23c018`)),1)):p(``,!0)]),_:2},1032,[`value`]))),128))]),_:1},8,[`value`]),u(`div`,Fe,i(e.$t(`teams.k1plugon042`)),1)]),_:1},8,[`label`])):p(``,!0)]),_:1})]),_:1},8,[`open`,`title`,`ok-text`,`cancel-text`]),s(z,{open:_(B),"onUpdate:open":r[11]||=e=>c(B)?B.value=e:null,title:e.$t(`teams.k6ljhyv029`,{p0:_(V)?.name??``}),"ok-text":e.$t(`teams.joinOk`),"cancel-text":e.$t(`common.cancel`),onOk:Qe},{default:g(()=>[s(M,{layout:`vertical`},{default:g(()=>[s(T,{label:e.$t(`teams.k41ds5006`)},{default:g(()=>[s($,{value:_(H),"onUpdate:value":r[9]||=e=>c(H)?H.value=e:null,options:_(Ke)},null,8,[`value`,`options`])]),_:1},8,[`label`]),s(T,{label:e.$t(`teams.k479op007`)},{default:g(()=>[s(A,{value:_(U),"onUpdate:value":r[10]||=e=>c(U)?U.value=e:null},{default:g(()=>[s(D,{value:`worker`},{default:g(()=>[...r[18]||=[v(` worker `,-1)]]),_:1}),s(D,{value:`lead`},{default:g(()=>[v(i(e.$t(`teams.keowzlv017`)),1)]),_:1})]),_:1},8,[`value`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`open`,`title`,`ok-text`,`cancel-text`]),s(z,{open:_(W),"onUpdate:open":r[13]||=e=>c(W)?W.value=e:null,title:e.$t(`teams.k1c0o6oe030`,{p0:_(G)?.name??``}),"confirm-loading":_(et),"ok-text":e.$t(`teams.deployOk`),"cancel-text":e.$t(`common.cancel`),onOk:nt},{default:g(()=>[s(M,{layout:`vertical`},{default:g(()=>[s(T,{label:e.$t(`teams.targetChannelLabel`)},{default:g(()=>[s($,{value:_(K),"onUpdate:value":r[12]||=e=>c(K)?K.value=e:null,options:_(Ue).map(e=>({value:e.id,label:e.name}))},null,8,[`value`,`options`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`open`,`title`,`confirm-loading`,`ok-text`,`cancel-text`]),s(z,{open:_(q),"onUpdate:open":r[14]||=e=>c(q)?q.value=e:null,title:e.$t(`teams.k1plugon040`,{p0:_(J)?.name??``}),footer:null},{default:g(()=>[s(C,{spinning:_(Z)},{default:g(()=>[u(`p`,Ie,[_(X)===`explicit`?(a(),d(f,{key:0},[v(i(e.$t(`teams.k1plugon045`)),1)],64)):(a(),d(f,{key:1},[v(i(e.$t(`teams.k1plugon044`)),1)],64))]),(a(!0),d(f,null,o(_(Y),t=>(a(),d(`div`,{key:t.name,class:`plug-row`},[u(`div`,Le,[u(`div`,Re,[u(`span`,ze,i(t.name),1),t.builtin?(a(),d(`span`,Be,i(e.$t(`teams.k3x23c018`)),1)):p(``,!0)]),u(`div`,Ve,i(t.description||`—`),1)]),s(re,{checked:t.enabled,size:`small`,loading:_(Q)===t.name,onChange:e=>at(t,e===!0)},null,8,[`checked`,`loading`,`onChange`])]))),128)),_(Y).length===0&&!_(Z)?(a(),d(`div`,He,i(e.$t(`teams.k1plugon046`)),1)):p(``,!0)]),_:1},8,[`spinning`])]),_:1},8,[`open`,`title`])])}}}),[[`__scopeId`,`data-v-ce9bd2cc`]]);export{E as default};
@@ -1,4 +0,0 @@
1
- import{$ as e,P as t,R as n,dt as r}from"./CSkxz2NX.js";import{i,s as a}from"./YnQxK3eG.js";import{t as o}from"./CWoJjWmZ.js";import{t as s}from"./36oeS8_R.js";import{t as c}from"./DIaZ2PTo2.js";var l=45e3,u=9e4,d=i(`workshop.connection`,{state:()=>({state:`closed`,cursors:{},lastDataAt:0,pendingReplay:!1,lastError:``,retryCount:0})}),f=class{onEvent;onStateChange;onPendingReplay;onDataRecovered;ws=null;retry=0;closedByUser=!1;subscribed=new Set;refCounts=new Map;lastSeqByChannel=new Map;lastFrameAt=0;lastDataAt=0;userToken=``;constructor(e,t,n=()=>{},r=()=>{}){this.onEvent=e,this.onStateChange=t,this.onPendingReplay=n,this.onDataRecovered=r}updateCursor(e,t){Number.isFinite(t)&&this.lastSeqByChannel.set(e,t)}url(){return typeof location>`u`?`ws://localhost/api/workshop/ws`:`${location.protocol===`https:`?`wss`:`ws`}://${location.host}/api/workshop/ws${this.userToken?`?token=${encodeURIComponent(this.userToken)}`:``}`}connect(){if(typeof window>`u`)return;this.onStateChange(`connecting`,this.retry);let e=new WebSocket(this.url());this.ws=e,this.lastFrameAt=Date.now(),this.lastDataAt=Date.now(),e.onopen=()=>{this.retry=0,this.onStateChange(`open`,0);for(let e of this.subscribed)this.sendSub(e,this.lastSeqByChannel.get(e))},e.onmessage=e=>{this.lastFrameAt=Date.now();try{let t=JSON.parse(e.data);t.type!==`pong`&&(this.lastDataAt=Date.now(),this.onDataRecovered()),this.onEvent(t)}catch{}},e.onclose=()=>{if(this.ws=null,this.closedByUser){this.onStateChange(`closed`,0);return}this.onStateChange(`closed`,this.retry),this.subscribed.size>0&&this.onPendingReplay();let e=Math.min(1e3*2**this.retry,1e4);this.retry+=1,setTimeout(()=>{this.closedByUser||this.connect()},e)},e.onerror=()=>{}}checkStale(){let e=this.ws;!e||e.readyState!==WebSocket.OPEN||(Date.now()-this.lastFrameAt>l||Date.now()-this.lastDataAt>u)&&e.close()}sendSub(e,t){let n={type:`sub`,channelId:e,token:this.userToken};typeof t==`number`&&(n.lastSeq=t),this.ws?.send(JSON.stringify(n))}subscribe(e,t){let n=this.refCounts.get(e)??0;this.refCounts.set(e,n+1),!(n>0)&&(this.subscribed.add(e),typeof t==`number`&&this.lastSeqByChannel.set(e,t),this.ws?.readyState===WebSocket.OPEN?this.sendSub(e,this.lastSeqByChannel.get(e)):this.ws||this.connect())}ensureConnected(){typeof window>`u`||this.ws||this.connect()}unsubscribe(e){let t=this.refCounts.get(e)??0;t<=1?(this.refCounts.delete(e),this.subscribed.delete(e),this.ws?.readyState===WebSocket.OPEN&&this.ws?.send(JSON.stringify({type:`unsub`,channelId:e}))):this.refCounts.set(e,t-1)}refCount(e){return this.refCounts.get(e)??0}ping(){try{this.ws?.send(JSON.stringify({type:`ping`}))}catch{try{this.ws?.close()}catch{}}}close(){this.closedByUser=!0,this.ws?.close()}},p=e=>`${e.kind}:${e.id}`,m=i(`workshop.hitl`,{state:()=>({items:[],snapshotLoaded:!1}),getters:{count:e=>e.items.length,byAgent:e=>{let t=new Map;for(let n of e.items){let e=t.get(n.agentId)??[];e.push(n),t.set(n.agentId,e)}return t}},actions:{applyEnvelope(e){if(e.type===`hitl.request`){let t=e.payload,n=p(t),r=this.items.findIndex(e=>p(e)===n);r>=0?this.items[r]=t:this.items.push(t)}else if(e.type===`hitl.resolved`){let t=e.payload;this.items=this.items.filter(e=>p(e)!==p(t))}},async loadSnapshot(){if(typeof window>`u`)return;let e=c().token;if(e)try{let t=await a(`/api/workshop/hitl/pending`,{headers:{authorization:`Bearer ${e}`}});t.code===0&&t.data&&(this.items=t.data.items,this.snapshotLoaded=!0)}catch{}},invalidate(){this.snapshotLoaded=!1},clear(){this.items=[],this.snapshotLoaded=!1}}}),h=/^🔧\s*\S+/,g={read:{icon:`i-tabler-file-search`,kind:`native`},write:{icon:`i-tabler-pencil`,kind:`native`},edit:{icon:`i-tabler-edit`,kind:`native`},bash:{icon:`i-tabler-terminal-2`,kind:`native`},grep:{icon:`i-tabler-search`,kind:`native`},glob:{icon:`i-tabler-folders`,kind:`native`},dispatch_task:{icon:`i-tabler-send`,kind:`host`},reassign_task:{icon:`i-tabler-arrows-exchange`,kind:`host`},update_task:{icon:`i-tabler-pencil-code`,kind:`host`},cancel_task:{icon:`i-tabler-circle-x`,kind:`host`},complete_task:{icon:`i-tabler-circle-check`,kind:`host`},report_progress:{icon:`i-tabler-progress-check`,kind:`host`},send_message_to_agent:{icon:`i-tabler-message`,kind:`host`},poll_messages:{icon:`i-tabler-inbox`,kind:`host`},broadcast_message:{icon:`i-tabler-rss`,kind:`host`},list_team_agents:{icon:`i-tabler-users`,kind:`host`},list_channel_tasks:{icon:`i-tabler-list`,kind:`host`},get_task_details:{icon:`i-tabler-eye`,kind:`host`},get_my_task_queue:{icon:`i-tabler-stack-2`,kind:`host`},get_queue_overview:{icon:`i-tabler-chart-bar`,kind:`host`},search_memory:{icon:`i-tabler-brain`,kind:`host`},save_memory:{icon:`i-tabler-bookmark`,kind:`host`},create_team_agent:{icon:`i-tabler-user-plus`,kind:`host`},update_team_agent:{icon:`i-tabler-user-cog`,kind:`host`},remove_team_agent:{icon:`i-tabler-user-minus`,kind:`host`}},_={tool:{label:`tool`,icon:`i-tabler-tool`},status:{label:`status`,icon:`i-tabler-dots`},life:{label:`state`,icon:`i-tabler-activity`},route:{label:`message`,icon:`i-tabler-route`},stream:{label:`llm`,icon:`i-tabler-message-dots`},task:{label:`task`,icon:`i-tabler-checklist`},artifact:{label:`artifact`,icon:`i-tabler-package`},member:{label:`team`,icon:`i-tabler-users`},memory:{label:`memory`,icon:`i-tabler-bookmark`},error:{label:`error`,icon:`i-tabler-alert-triangle`},other:{label:`event`,icon:`i-tabler-dots`}};function v(e){switch(e.type){case`agent.status.message`:return h.test(String(e.payload.text??``))?`tool`:`status`;case`agent.status`:return`life`;case`a2a.message`:return`route`;case`agent.delta`:case`agent.message`:return`stream`;case`task.status`:case`task.progress`:return`task`;case`a2a.artifact`:return`artifact`;case`agent.member`:return`member`;case`memory.saved`:return`memory`;case`error`:return`error`;default:return`other`}}function y(e){if(!e)return`#6e6e77`;let t=0;for(let n of e)t=(t*31+n.charCodeAt(0))%360;return`hsl(${t}, 42%, 34%)`}var b={silent:0,status:1,attention:2,terminal:3};function x(e){switch(e.type){case`error`:return`attention`;case`a2a.artifact`:case`agent.message`:return`terminal`;case`task.status`:{let t=String(e.payload.state??``);return t===`COMPLETED`||t===`FAILED`||t===`CANCELED`?`terminal`:t===`WAITING`?`attention`:`status`}case`a2a.message`:return(e.payload.metadata??{})[`x-aw-require-reply`]===`true`?`attention`:`status`;case`agent.delta`:case`agent.status.message`:case`task.progress`:case`memory.saved`:return`silent`;default:return`status`}}function S(e){let t=`silent`;for(let n of e){let e=x(n);b[e]>b[t]&&(t=e)}return t}function C(e){return e.replace(/\s+/g,` `).trim()}function ee(e){let t=e.events[e.events.length-1];return t?t.type===`agent.delta`&&!e.settled:!1}function w(e){if(e.taskId)return e.taskId;switch(e.type){case`task.status`:case`task.progress`:return String(e.payload.taskId??``)||null;case`a2a.artifact`:return String(e.payload.taskId??``)||null;default:return null}}function T(e,t){return e==null||t==null||e===t}function E(e,t){let n=e.trim(),r=t.trim();return!n||!r?`none`:n===r||C(n)===C(r)?`dup`:r.startsWith(n)?`extend`:`none`}var D=class{arr=[];last=null;tracks=new Map;trail=Object.create(null);idSeq=0;processed=0;headSeq=void 0;get blocks(){return this.arr}get processedCount(){return this.processed}reset(){this.arr.length=0,this.last=null,this.tracks.clear(),this.trail=Object.create(null),this.processed=0,this.headSeq=void 0}sync(e){let t=e.length>0?e[0]?.seq:void 0;(e.length<this.processed||t!==this.headSeq)&&this.reset();for(let t=this.processed;t<e.length;t++)this.push(e[t]);this.processed=e.length,this.headSeq=e.length>0?e[0]?.seq:void 0}push(e){if(e.type===`channel.snapshot`||e.type===`pong`||e.type===`agent.delta`&&!O(e)||(e.type===`agent.status.message`||e.type===`agent.message`)&&!O(e).trim())return this.last;let t=e.agentId??null,n=w(e),i=t??``,a=`${i}\u0000${n??``}`,o=v(e);if(e.type===`agent.status.message`&&o===`status`){let t=O(e).trim(),n=this.tracks.get(a);if(t&&n&&n.text){let r=E(n.text,t);if(r===`dup`||r===`extend`)return this.foldInto(n,e,t)}}if(e.type===`agent.message`){let t=O(e).trim(),n=this.tracks.get(a);if(t&&n&&n.text){let r=E(n.text,t);if(r===`dup`||r===`extend`)return this.foldInto(n,e,t)}}let s=o;if(e.type===`agent.delta`)s=`stream`;else if(e.type===`agent.message`)s=`stream`;else if(o===`status`){let t=this.last;t!==null&&t.kind===`stream`&&e.agentId===t.agentId&&T(t.taskId,n)&&!t.settled&&(s=`stream`)}if(this.last!==null&&this.last.kind===s&&this.last.agentId===e.agentId&&t!==null&&T(this.last.taskId,n)&&!(s===`stream`&&this.last.settled)&&!(s===`task`&&this.last.taskId&&n&&this.last.taskId!==n)&&!(s===`artifact`&&this.last.taskId&&n&&this.last.taskId!==n)&&this.last){let t=this.last;if(t.events.push(e),t.lastAt=e.at,s===`stream`){if(e.type===`agent.delta`){t.settled=!1;let r=this.tracks.get(a);r?(r.text+=O(e),r.last=t,this.setTrail(i,n,r.text)):(t.settled=!1,this.setTrail(i,n,O(e)))}else t.settled=!0,this.setTrail(i,n,`${O(e)}`)}return t}let c=r({id:`b${++this.idSeq}`,kind:s,agentId:t,taskId:n,events:[e],firstAt:e.at,lastAt:e.at,settled:s===`stream`&&e.type!==`agent.delta`,folded:0,overrideText:null,coveredBy:null,dupStream:!1});if(this.arr.push(c),this.last=c,s===`stream`){let t=this.tracks.get(a);if(t&&t.pieces.length>0&&!t.pieces.includes(c)?(t.pieces.push(c),t.last=c):t||this.tracks.set(a,{text:``,pieces:[c],last:c}),e.type===`agent.delta`){let t=this.tracks.get(a);t&&(t.text+=O(e),this.setTrail(i,n,t.text))}}if(s===`artifact`){let t=O(e),n=this.trail[a]??this.trail[`${i}\u0000`];n&&t&&C(n)===C(t)&&(c.dupStream=!0)}return c}foldInto(e,t,n){let r=e.last;r.events.push(t),r.folded+=1,r.lastAt=t.at,r.settled=!0,r.overrideText=n;for(let t of e.pieces)t!==r&&(t.coveredBy=r.id);return e.text=``,e.pieces=[r],e.last=r,this.setTrail(r.agentId??``,r.taskId,n),r}setTrail(e,t,n){this.trail[`${e}\u0000${t??``}`]=n}};function O(e){switch(e.type){case`agent.delta`:return String(e.payload.delta??``);case`agent.status.message`:return String(e.payload.text??``);case`agent.message`:case`a2a.message`:return(e.payload.parts??[]).map(e=>e.text??``).join(`
2
- `);case`a2a.artifact`:return(e.payload.artifact?.parts??[]).map(e=>e.text??``).join(`
3
- `);default:return``}}function k(e){if(e.overrideText)return e.overrideText;let t=``;for(let n of e.events){if(n.type===`agent.delta`){t+=O(n);continue}if(n.type!==`agent.status.message`&&n.type===`agent.message`){let e=O(n).trim();e&&(t=`${t?`${t}\n`:``}${e}`);continue}}return t}function A(e,t,n){return e>0&&(n||t<e)}function j(e){return e.replace(/[&<>"']/g,e=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`})[e]??e)}function M(e){return e.replace(/`([^`\n]+)`/g,`<code>$1</code>`).replace(/\*\*([^*\n]+)\*\*/g,`<b>$1</b>`).replace(/(^|\s)\*([^*\n]+)\*(?=\s|$)/g,`$1<i>$2</i>`)}var N={note:{label:`说明`,icon:`i-tabler-info-circle`},tip:{label:`提示`,icon:`i-tabler-bulb`},important:{label:`重要`,icon:`i-tabler-flag`},warning:{label:`警告`,icon:`i-tabler-alert-triangle`},caution:{label:`注意`,icon:`i-tabler-shield-half`}};function P(e){let t=[];return j(e).replace(/```([\w+-]*)\n?([\s\S]*?)(?:```|$)/g,(e,n,r)=>{let i=t.length;return t.push(`<div class="code-block" data-lang="${n||`text`}"><div class="code-head"><span class="code-lang">${n||`text`}</span><button type="button" class="code-copy">复制</button></div><pre><code>${r.replace(/\n$/,``)}</code></pre></div>`),`@@AWCODE${i}@@`}).split(/\n{2,}/).map(e=>{let t=e.split(`
4
- `);if(/^### /.test(e))return`<h5>${M(e.slice(4))}</h5>`;if(/^## /.test(e))return`<h4>${M(e.slice(3))}</h4>`;if(/^# /.test(e))return`<h4>${M(e.slice(2))}</h4>`;if(t.every(e=>/^\s*[-*] /.test(e)))return t.some(e=>/^\s*[-*] \[[ xX]\] /.test(e))?`<ul class="task-list">${t.map(e=>{let t=/^\s*[-*] \[([ xX])\] (.*)$/.exec(e),n=(t[1]??` `).toLowerCase()===`x`;return`<li class="task-item${n?` done`:``}"><span class="task-check${n?` on`:``}">${n?`✓`:``}</span><span class="task-text">${M(t[2]??``)}</span></li>`}).join(``)}</ul>`:`<ul>${t.map(e=>`<li>${M(e.replace(/^\s*[-*] /,``))}</li>`).join(``)}</ul>`;if(t.every(e=>/^&gt;\s?/.test(e))){let e=/^&gt;\s*\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\]\s*(.*)$/.exec(t[0]??``);if(e){let n=N[e[1].toLowerCase()],r=e[2]??``,i=[...r?[r]:[],...t.slice(1).map(e=>e.replace(/^&gt;\s?/,``))];return`<div class="gh-alert gh-${e[1].toLowerCase()}"><div class="gh-title"><span class="${n.icon}"></span>${n.label}</div><p>${i.map(e=>M(e)).join(`<br>`)}</p></div>`}return`<blockquote>${t.map(e=>M(e.replace(/^&gt;\s?/,``))).join(`<br>`)}</blockquote>`}return t.length===1&&/^@@AWCODE\d+@@$/.test(e)?e:`<p>${t.map(e=>M(e)).join(`<br>`)}</p>`}).join(``).replace(/@@AWCODE(\d+)@@/g,(e,n)=>t[Number(n)]??``)}function te(e){let t=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);return RegExp(`(^|(?<![\\w@]))@(${t})(?=$|[\\s,.;:!?、,。;:!?…)\\]】」』])`,`gu`)}function ne(e,t){let n=[];if(t.length===0)return{text:e,hits:n};let r=[...t].sort((e,t)=>t.name.length-e.name.length),i=e;for(let e of r)e.name&&(i=i.replace(te(e.name),(t,r,i)=>(n.push(e),`\uE000M${n.length-1}\uE000`)));return{text:i,hits:n}}function F(e,t){return e.replace(/\uE000M(\d+)\uE000/g,(e,n)=>{let r=t[Number(n)];return r?`<span class="md-mention" data-agent-id="${j(r.agentId)}">@${j(r.name)}</span>`:``})}function I(e,t){let{text:n,hits:r}=ne(e,t);return F(P(n),r)}var L=5e3,R=[`agent.delta`],z={all:null,messages:[`agent.message`,`agent.delta`,`agent.status.message`,`a2a.message`],tasks:[`task.status`,`task.progress`,`a2a.artifact`],team:[`agent.member`,`task.status`],errors:[`error`],key:null};function B(e,t,n,r){if(e.type===`channel.snapshot`)return!1;if(t===`key`){let t=x(e);return t===`attention`||t===`terminal`}return n&&!n.includes(e.type)?!1:r&&e.type!==`task.status`&&e.type!==`task.progress`?e.agentId===r||e.type===`a2a.message`&&e.payload.metadata?.[`x-aw-target-agent`]===r:!0}function V(e,t,n,r){return e.filter(e=>B(e,t,n,r))}var H=Object.freeze([]),U=new Map;function W(e,t){let n=0,r=e.length;for(;n<r;){let i=n+r>>>1;(e[i]?.seq??0)>t?r=i:n=i+1}return n}var G=()=>({lastSeq:0,items:[],consumed:new Set,byAgent:new Map});function K(e,t){let n=t.agentId;if(!n)return;let r=e.byAgent.get(n);r?r.push(t):e.byAgent.set(n,[t])}function q(e,t){for(let n of t){let t=e.byAgent.get(n.agentId??``);if(!t)continue;let r=t.indexOf(n);r>=0&&t.splice(r,1),t.length===0&&e.byAgent.delete(n.agentId??``)}}function J(e){e.byAgent.clear();for(let t of e.items)K(e,t)}function Y(e,t,n){let r=0;for(let i of t)typeof i.seq!=`number`||i.seq>n||e.consumed.has(i.seq)||(e.items.push(i),e.consumed.add(i.seq),r+=1);if(r>0){e.items.sort((e,t)=>e.seq-t.seq);let t=e.items.length-L;t>0&&e.items.splice(0,t),J(e)}return r}var X=i(`workshop.events`,{state:()=>({rings:{},filters:{},focusAgents:{},laneLoaded:{}}),getters:{ring(e){return t=>e.rings[t]??G()},timeline(e){return t=>{let n=e.rings[t];if(!n)return H;let r=e.filters[t]??`all`,i=e.focusAgents[t]??null,a=n.items,o=z[r],s=a.length>0?a[a.length-1]?.seq??0:-1,c=U.get(t);if(!c||c.filter!==r||c.focus!==i||a.length===0&&c.result.length>0||c.lastSeq>s){let e=V(a,r,o,i);return U.set(t,{filter:r,focus:i,lastSeq:s,result:e}),e}let l=a[0]?.seq??0,u=c.result;if(u.length>0&&(u[0]?.seq??0)<l){let e=0;for(;e<u.length&&(u[e]?.seq??0)<l;)e++;u.splice(0,e)}if(s>c.lastSeq){let e=W(a,c.lastSeq);for(let t=e;t<a.length;t++){let e=a[t];B(e,r,o,i)&&u.push(e)}c.lastSeq=s}return u}},agentEvents(e){return(t,n)=>n?e.rings[t]?.byAgent.get(n)??H:H},lastSeq(e){return t=>e.rings[t]?.lastSeq??0}},actions:{ingest(e){if(!e.channelId)return;let t=this.rings[e.channelId]??G();if(e.type===`channel.snapshot`){this.rings[e.channelId]={lastSeq:e.seq,items:[],consumed:new Set([e.seq]),byAgent:new Map};return}if(typeof e.seq==`number`&&e.seq>t.lastSeq){if(t.consumed.add(e.seq),e.type===`agent.delta`){let n=t.items[t.items.length-1];if(n&&n.type===`agent.delta`&&n.agentId===e.agentId&&(n.taskId??null)===(e.taskId??null)&&n){let r=n.payload.delta;n.payload.delta=r+e.payload.delta,t.lastSeq=e.seq,this.rings[e.channelId]=t;return}}t.items.push(e),K(t,e),t.items.length>L&&q(t,t.items.splice(0,t.items.length-L)),t.lastSeq=e.seq,t.consumed.size>2e4&&(t.consumed=new Set(t.items.map(e=>e.seq))),this.rings[e.channelId]=t}},setFilter(e,t){this.filters[e]=t},async loadHistory(e,t=200){if(typeof window>`u`)return;let n=this.rings[e]??G();try{let r=await a(`/api/workshop/channels/${e}/events`,{params:{limit:t,excludeTypes:R.join(`,`)},headers:{authorization:`Bearer ${c().token}`}});if(r.code!==0||!r.data?.items?.length)return;Y(n,r.data.items,n.lastSeq),this.rings[e]=n}catch{}},async loadEarlier(e,t=200){if(typeof window>`u`)return!1;let n=this.rings[e];if(!n)return!1;let r=n.items.length>0?n.items[0]?.seq??0:n.lastSeq;if(r<=1)return!1;try{let i=await a(`/api/workshop/channels/${e}/events`,{params:{limit:t,beforeSeq:Math.max(1,r-1),excludeTypes:R.join(`,`)},headers:{authorization:`Bearer ${c().token}`}});if(i.code!==0||!i.data?.items?.length)return!1;let o=Y(n,i.data.items,n.lastSeq);return o>0&&(this.rings[e]=n),o>0&&i.data.items.length>=t}catch{return!1}},async loadLaneHistory(e,t,n=200){if(typeof window>`u`||this.laneLoaded[e]?.has(t))return;(this.laneLoaded[e]??=new Set).add(t);for(let t=0;t<20&&this.lastSeq(e)===0;t++)await new Promise(e=>setTimeout(e,150));if(this.lastSeq(e)===0){this.laneLoaded[e]?.delete(t);return}let r=this.rings[e];try{let i=await a(`/api/workshop/channels/${e}/events`,{params:{limit:n,agentId:t,excludeTypes:R.join(`,`)},headers:{authorization:`Bearer ${c().token}`}});i.code===0&&i.data?.items?.length&&(Y(r,i.data.items,r.lastSeq),this.rings[e]=r)}catch{this.laneLoaded[e]?.delete(t)}},async loadLaneEarlier(e,t,n=200){if(typeof window>`u`)return!1;let r=this.rings[e];if(!r)return!1;let i=0;for(let e of r.items)if(e.agentId===t){i=e.seq;break}if(i<=1)return!1;try{let o=await a(`/api/workshop/channels/${e}/events`,{params:{limit:n,agentId:t,beforeSeq:i-1,excludeTypes:R.join(`,`)},headers:{authorization:`Bearer ${c().token}`}});if(o.code!==0||!o.data?.items?.length)return!1;let s=Y(r,o.data.items,r.lastSeq);return s>0&&(this.rings[e]=r),s>0&&o.data.items.length>=n}catch{return!1}},setFocusAgent(e,t){this.focusAgents[e]=t},clear(e){Reflect.deleteProperty(this.rings,e),Reflect.deleteProperty(this.laneLoaded,e)}}}),Z=i(`workshop.entities`,{state:()=>({channels:{},agents:{},tasks:{},refreshing:{},refreshingAgents:{}}),getters:{agentById(e){return(t,n)=>e.agents[t]?.find(e=>e.agentId===n)},agentName(e){return(t,n)=>n?e.agents[t]?.find(e=>e.agentId===n)?.name??n.slice(0,8):`system`},taskTitle(e){return(t,n)=>n?e.tasks[t]?.find(e=>e.id===n)?.title??n.slice(0,8):``},rootTasks(e){return t=>(e.tasks[t]??[]).filter(e=>!e.parentId)},taskById(e){return(t,n)=>e.tasks[t]?.find(e=>e.id===n)},busyCount(e){return t=>(e.agents[t]??[]).filter(e=>e.state===`busy`).length}},actions:{applySnapshot(e){let{channelId:t}=e;this.channels[t]={...e.channel,loadedAt:Date.now()},this.agents[t]=e.agents.map(e=>({...e,modelRef:e.config?.modelRef??e.modelRef??null})),this.tasks[t]=e.tasks.map(e=>this.toTaskView(e))},applyEvent(e){let t=e.channelId;switch(e.type){case`agent.status`:{let n=this.agents[t]??[],r=e.payload,i={agentId:r.agentId,state:r.state,currentTaskId:r.currentTaskId??null,currentTaskTitle:r.currentTaskTitle??null,currentTaskProgress:r.currentTaskProgress??null,queued:r.queued??r.queuedCount??0,completed:r.completed??r.completedCount??0},a=n.findIndex(e=>e.agentId===i.agentId);if(a>=0)n[a]={...n[a],...i};else{let e={agentId:i.agentId,state:i.state,currentTaskId:i.currentTaskId??null,queued:i.queued,completed:i.completed,name:i.agentId.slice(0,8),role:`worker`,harness:`-`};n.push(e),this.refreshAgents(t)}this.agents[t]=[...n];break}case`agent.member`:{let n=e.payload,r=this.agents[t]??[],i=r.findIndex(e=>e.agentId===n.agentId);if(n.op===`added`)i<0&&r.push({agentId:n.agentId,name:n.name,role:n.role,harness:n.harness,enabled:n.enabled,config:n.config,modelRef:n.config?.modelRef??null,state:`idle`,currentTaskId:null,queued:0,completed:0});else if(n.op===`updated`){if(i>=0){let e=r[i],t=n.config??e.config;r[i]={...e,name:n.name??e.name,role:n.role??e.role,harness:n.harness??e.harness,enabled:n.enabled??e.enabled,config:t,modelRef:t?.modelRef??e.modelRef??null}}}else n.op===`removed`&&i>=0&&r.splice(i,1);this.agents[t]=[...r];break}case`task.status`:{let n=e.payload,r=this.tasks[t]??[],i=r.findIndex(e=>e.id===n.taskId);if(i>=0){let e=r[i];r[i]={...e,state:n.state,assigneeId:n.assigneeId??e.assigneeId,title:n.title??e.title,parentId:n.parentId??e.parentId,progress:Math.max(e.progress,n.progress??0),routeReason:n.routeReason??e.routeReason,createdAt:n.createdAt??e.createdAt,artifacts:Math.max(e.artifacts,n.artifacts??0)}}else{let e={id:n.taskId,title:n.title??n.taskId.slice(0,8),state:n.state,progress:n.progress??0,assigneeId:n.assigneeId??``,artifacts:n.artifacts??0};n.parentId&&(e.parentId=n.parentId),n.routeReason&&(e.routeReason=n.routeReason),n.createdAt&&(e.createdAt=n.createdAt),r.push(e),n.title===void 0&&this.refreshTasks(t)}this.tasks[t]=[...r];break}case`task.progress`:{let n=e.payload,r=this.tasks[t]??[],i=r.findIndex(e=>e.id===n.taskId),a=i>=0?r[i]:void 0;a&&(r[i]={...a,progress:n.progress}),this.tasks[t]=[...r];break}case`a2a.artifact`:{let n=e.payload;if(!n.taskId)break;let r=this.tasks[t]??[],i=r.findIndex(e=>e.id===n.taskId),a=i>=0?r[i]:void 0;a&&(r[i]={...a,artifacts:a.artifacts+1}),this.tasks[t]=[...r];break}}},toTaskView(e){return{id:e.id,parentId:e.parentId,title:e.title,state:e.state,progress:e.progress,assigneeId:e.assigneeId,artifacts:e.artifacts.length,updatedAt:e.updatedAt}},refreshChannel(e,t){this.applySnapshot(t)},refreshAgents(e){this.refreshingAgents[e]||(this.refreshingAgents[e]=!0,a(`/api/workshop/channels/${e}/agents`,{headers:{authorization:`Bearer ${c().token}`}}).then(t=>{let n=t.data??[],r=[...this.agents[e]??[]];for(let e of n){let t=r.findIndex(t=>t.agentId===e.id);t>=0?r[t]={...r[t],name:e.name,role:e.role,harness:e.harness,config:e.config}:r.push({agentId:e.id,name:e.name,role:e.role,harness:e.harness,config:e.config,state:`idle`,currentTaskId:null,queued:0,completed:0})}this.agents[e]=r}).catch(()=>{}).finally(()=>{this.refreshingAgents[e]=!1}))},refreshTasks(e){this.refreshing[e]||(this.refreshing[e]=!0,a(`/api/workshop/channels/${e}/tasks`,{headers:{authorization:`Bearer ${c().token}`}}).then(t=>{let n=t.data??[],r=this.tasks[e]??[],i=new Map(r.map(e=>[e.id,e])),a=new Set(n.map(e=>e.id)),o=n.map(e=>{let t=i.get(e.id),n=this.toTaskView(e);return t&&t.progress>n.progress?{...n,progress:t.progress}:n});for(let e of r)a.has(e.id)||o.push(e);this.tasks[e]=o}).catch(()=>{}).finally(()=>{this.refreshing[e]=!1}))}}}),Q=null,$=0;function re(){let r=d(),i=c(),a=X(),l=Z(),u=m(),p=s(),h=globalThis.__workshopWs??null,g=new Map;if(!h){let e=new f(t=>{if(t.channelId&&typeof t.seq==`number`&&t.seq>0&&t.type!==`channel.snapshot`){let e=g.get(t.channelId)??0;if(t.seq<=e)return;g.set(t.channelId,t.seq),r.pendingReplay&&=!1}t.type===`channel.snapshot`&&t.channelId?(g.set(t.channelId,typeof t.seq==`number`?t.seq:0),r.pendingReplay=!1,a.ingest(t),l.applyEvent(t),l.applySnapshot(t.payload),a.loadHistory(t.channelId)):(a.ingest(t),l.applyEvent(t)),(t.type===`hitl.request`||t.type===`hitl.resolved`)&&u.applyEnvelope(t),typeof t.seq==`number`&&t.seq>0&&t.channelId&&(r.cursors[t.channelId]=t.seq,e.updateCursor(t.channelId,t.seq)),p.emit(t)},(e,t)=>{r.state=e,r.retryCount=t},()=>{r.pendingReplay=!0},()=>{r.lastDataAt=Date.now()});h=e,globalThis.__workshopWs=h}return e(()=>i.token,e=>{h instanceof f&&(h.userToken=e)},{immediate:!0}),n(()=>{$++,!Q&&(Q=o(()=>{h?.ping(),h?.checkStale()},15e3))}),t(()=>{--$<=0&&Q&&(clearInterval(Q),Q=null)}),{subscribe:e=>{let t=a.lastSeq(e);h?.subscribe(e,t>0?t:void 0)},unsubscribe:e=>{h&&(h.unsubscribe(e),h.refCount(e)===0&&a.clear(e))},ensureConnected:()=>{h?.ensureConnected()},conn:r}}export{_ as a,S as c,I as d,A as f,D as i,k as l,d as m,Z as n,g as o,m as p,X as r,y as s,re as t,ee as u};
@@ -1,2 +0,0 @@
1
- import{at as e,ct as t,d as n,ht as r,k as i}from"./BU83-NnX.js";import{$ as a,D as o,H as s,S as c,b as l,d as u,et as d,ht as f,i as p,j as m,pt as h}from"./CSkxz2NX.js";import{At as g,B as _,Et as v,O as y,Q as b,X as x,Y as S,Z as C,d as w,h as T,jt as E,n as D,p as O,t as k,tt as A,u as j,wt as M}from"./4sIEbgcl.js";import{Y as N,c as P,l as ee}from"./DYr1VMiQ.js";import{i as F,n as te}from"./vRTjoWqd.js";import{k as ne}from"./DBHNsT1Y.js";import{t as re}from"./C3gwHTz0.js";var I=/\s/;function ie(e){for(var t=e.length;t--&&I.test(e.charAt(t)););return t}var ae=/^\s+/;function oe(e){return e&&e.slice(0,ie(e)+1).replace(ae,``)}var L=NaN,se=/^[-+]0x[0-9a-f]+$/i,ce=/^0b[01]+$/i,le=/^0o[0-7]+$/i,ue=parseInt;function R(t){if(typeof t==`number`)return t;if(ne(t))return L;if(e(t)){var n=typeof t.valueOf==`function`?t.valueOf():t;t=e(n)?n+``:n}if(typeof t!=`string`)return t===0?t:+t;t=oe(t);var r=ce.test(t);return r||le.test(t)?ue(t.slice(2),r?2:8):se.test(t)?L:+t}var z=function(){return t.Date.now()},B=`Expected a function`,V=Math.max,H=Math.min;function de(t,n,r){var i,a,o,s,c,l,u=0,d=!1,f=!1,p=!0;if(typeof t!=`function`)throw TypeError(B);n=R(n)||0,e(r)&&(d=!!r.leading,f=`maxWait`in r,o=f?V(R(r.maxWait)||0,n):o,p=`trailing`in r?!!r.trailing:p);function m(e){var n=i,r=a;return i=a=void 0,u=e,s=t.apply(r,n),s}function h(e){return u=e,c=setTimeout(v,n),d?m(e):s}function g(e){var t=e-l,r=e-u,i=n-t;return f?H(i,o-r):i}function _(e){var t=e-l,r=e-u;return l===void 0||t>=n||t<0||f&&r>=o}function v(){var e=z();if(_(e))return y(e);c=setTimeout(v,g(e))}function y(e){return c=void 0,p&&i?m(e):(i=a=void 0,s)}function b(){c!==void 0&&clearTimeout(c),u=0,i=l=a=c=void 0}function x(){return c===void 0?s:y(z())}function S(){var e=z(),t=_(e);if(i=arguments,a=this,l=e,t){if(c===void 0)return h(l);if(f)return clearTimeout(c),c=setTimeout(v,n),m(l)}return c===void 0&&(c=setTimeout(v,n)),s}return S.cancel=b,S.flush=x,S}var U=Symbol(`radioGroupContextKey`),fe=e=>{s(U,e)},pe=()=>o(U,void 0),W=Symbol(`radioOptionTypeContextKey`),me=e=>{s(W,e)},he=()=>o(W,void 0),ge=new y(`antRadioEffect`,{"0%":{transform:`scale(1)`,opacity:.5},"100%":{transform:`scale(1.6)`,opacity:0}}),_e=e=>{let{componentCls:t,antCls:n}=e,r=`${t}-group`;return{[r]:g(g({},T(e)),{display:`inline-block`,fontSize:0,[`&${r}-rtl`]:{direction:`rtl`},[`${n}-badge ${n}-badge-count`]:{zIndex:1},[`> ${n}-badge:not(:first-child) > ${n}-button-wrapper`]:{borderInlineStart:`none`}})}},ve=e=>{let{componentCls:t,radioWrapperMarginRight:n,radioCheckedColor:r,radioSize:i,motionDurationSlow:a,motionDurationMid:o,motionEaseInOut:s,motionEaseInOutCirc:c,radioButtonBg:l,colorBorder:u,lineWidth:d,radioDotSize:f,colorBgContainerDisabled:p,colorTextDisabled:m,paddingXS:h,radioDotDisabledColor:_,lineType:v,radioDotDisabledSize:y,wireframe:b,colorWhite:x}=e,S=`${t}-inner`;return{[`${t}-wrapper`]:g(g({},T(e)),{position:`relative`,display:`inline-flex`,alignItems:`baseline`,marginInlineStart:0,marginInlineEnd:n,cursor:`pointer`,[`&${t}-wrapper-rtl`]:{direction:`rtl`},"&-disabled":{cursor:`not-allowed`,color:e.colorTextDisabled},"&::after":{display:`inline-block`,width:0,overflow:`hidden`,content:`"\\a0"`},[`${t}-checked::after`]:{position:`absolute`,insetBlockStart:0,insetInlineStart:0,width:`100%`,height:`100%`,border:`${d}px ${v} ${r}`,borderRadius:`50%`,visibility:`hidden`,animationName:ge,animationDuration:a,animationTimingFunction:s,animationFillMode:`both`,content:`""`},[t]:g(g({},T(e)),{position:`relative`,display:`inline-block`,outline:`none`,cursor:`pointer`,alignSelf:`center`}),[`${t}-wrapper:hover &,
2
- &:hover ${S}`]:{borderColor:r},[`${t}-input:focus-visible + ${S}`]:g({},O(e)),[`${t}:hover::after, ${t}-wrapper:hover &::after`]:{visibility:`visible`},[`${t}-inner`]:{"&::after":{boxSizing:`border-box`,position:`absolute`,insetBlockStart:`50%`,insetInlineStart:`50%`,display:`block`,width:i,height:i,marginBlockStart:i/-2,marginInlineStart:i/-2,backgroundColor:b?r:x,borderBlockStart:0,borderInlineStart:0,borderRadius:i,transform:`scale(0)`,opacity:0,transition:`all ${a} ${c}`,content:`""`},boxSizing:`border-box`,position:`relative`,insetBlockStart:0,insetInlineStart:0,display:`block`,width:i,height:i,backgroundColor:l,borderColor:u,borderStyle:`solid`,borderWidth:d,borderRadius:`50%`,transition:`all ${o}`},[`${t}-input`]:{position:`absolute`,insetBlockStart:0,insetInlineEnd:0,insetBlockEnd:0,insetInlineStart:0,zIndex:1,cursor:`pointer`,opacity:0},[`${t}-checked`]:{[S]:{borderColor:r,backgroundColor:b?l:r,"&::after":{transform:`scale(${f/i})`,opacity:1,transition:`all ${a} ${c}`}}},[`${t}-disabled`]:{cursor:`not-allowed`,[S]:{backgroundColor:p,borderColor:u,cursor:`not-allowed`,"&::after":{backgroundColor:_}},[`${t}-input`]:{cursor:`not-allowed`},[`${t}-disabled + span`]:{color:m,cursor:`not-allowed`},[`&${t}-checked`]:{[S]:{"&::after":{transform:`scale(${y/i})`}}}},[`span${t} + *`]:{paddingInlineStart:h,paddingInlineEnd:h}})}},ye=e=>{let{radioButtonColor:t,controlHeight:n,componentCls:r,lineWidth:i,lineType:a,colorBorder:o,motionDurationSlow:s,motionDurationMid:c,radioButtonPaddingHorizontal:l,fontSize:u,radioButtonBg:d,fontSizeLG:f,controlHeightLG:p,controlHeightSM:m,paddingXS:h,borderRadius:_,borderRadiusSM:v,borderRadiusLG:y,radioCheckedColor:b,radioButtonCheckedBg:x,radioButtonHoverColor:S,radioButtonActiveColor:C,radioSolidCheckedColor:w,colorTextDisabled:T,colorBgContainerDisabled:E,radioDisabledButtonCheckedColor:D,radioDisabledButtonCheckedBg:k}=e;return{[`${r}-button-wrapper`]:{position:`relative`,display:`inline-block`,height:n,margin:0,paddingInline:l,paddingBlock:0,color:t,fontSize:u,lineHeight:`${n-i*2}px`,background:d,border:`${i}px ${a} ${o}`,borderBlockStartWidth:i+.02,borderInlineStartWidth:0,borderInlineEndWidth:i,cursor:`pointer`,transition:[`color ${c}`,`background ${c}`,`border-color ${c}`,`box-shadow ${c}`].join(`,`),a:{color:t},[`> ${r}-button`]:{position:`absolute`,insetBlockStart:0,insetInlineStart:0,zIndex:-1,width:`100%`,height:`100%`},"&:not(:first-child)":{"&::before":{position:`absolute`,insetBlockStart:-i,insetInlineStart:-i,display:`block`,boxSizing:`content-box`,width:1,height:`100%`,paddingBlock:i,paddingInline:0,backgroundColor:o,transition:`background-color ${s}`,content:`""`}},"&:first-child":{borderInlineStart:`${i}px ${a} ${o}`,borderStartStartRadius:_,borderEndStartRadius:_},"&:last-child":{borderStartEndRadius:_,borderEndEndRadius:_},"&:first-child:last-child":{borderRadius:_},[`${r}-group-large &`]:{height:p,fontSize:f,lineHeight:`${p-i*2}px`,"&:first-child":{borderStartStartRadius:y,borderEndStartRadius:y},"&:last-child":{borderStartEndRadius:y,borderEndEndRadius:y}},[`${r}-group-small &`]:{height:m,paddingInline:h-i,paddingBlock:0,lineHeight:`${m-i*2}px`,"&:first-child":{borderStartStartRadius:v,borderEndStartRadius:v},"&:last-child":{borderStartEndRadius:v,borderEndEndRadius:v}},"&:hover":{position:`relative`,color:b},"&:has(:focus-visible)":g({},O(e)),[`${r}-inner, input[type='checkbox'], input[type='radio']`]:{width:0,height:0,opacity:0,pointerEvents:`none`},[`&-checked:not(${r}-button-wrapper-disabled)`]:{zIndex:1,color:b,background:x,borderColor:b,"&::before":{backgroundColor:b},"&:first-child":{borderColor:b},"&:hover":{color:S,borderColor:S,"&::before":{backgroundColor:S}},"&:active":{color:C,borderColor:C,"&::before":{backgroundColor:C}}},[`${r}-group-solid &-checked:not(${r}-button-wrapper-disabled)`]:{color:w,background:b,borderColor:b,"&:hover":{color:w,background:S,borderColor:S},"&:active":{color:w,background:C,borderColor:C}},"&-disabled":{color:T,backgroundColor:E,borderColor:o,cursor:`not-allowed`,"&:first-child, &:hover":{color:T,backgroundColor:E,borderColor:o}},[`&-disabled${r}-button-wrapper-checked`]:{color:D,backgroundColor:k,borderColor:o,boxShadow:`none`}}}},G=w(`Radio`,e=>{let{padding:t,lineWidth:n,controlItemBgActiveDisabled:r,colorTextDisabled:i,colorBgContainer:a,fontSizeLG:o,controlOutline:s,colorPrimaryHover:c,colorPrimaryActive:l,colorText:u,colorPrimary:d,marginXS:f,controlOutlineWidth:p,colorTextLightSolid:m,wireframe:h}=e,g=`0 0 0 ${p}px ${s}`,_=g,v=o,y=v-8,b=h?y:v-(4+n)*2,x=d,S=u,C=c,w=l,T=t-n,E=j(e,{radioFocusShadow:g,radioButtonFocusShadow:_,radioSize:v,radioDotSize:b,radioDotDisabledSize:y,radioCheckedColor:x,radioDotDisabledColor:i,radioSolidCheckedColor:m,radioButtonBg:a,radioButtonCheckedBg:a,radioButtonColor:S,radioButtonHoverColor:C,radioButtonActiveColor:w,radioButtonPaddingHorizontal:T,radioDisabledButtonCheckedBg:r,radioDisabledButtonCheckedColor:i,radioWrapperMarginRight:f});return[_e(E),ve(E),ye(E)]}),be=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},K=()=>({prefixCls:String,checked:x(),disabled:x(),isGroup:x(),value:k.any,name:String,id:String,autofocus:x(),onChange:b(),onFocus:b(),onBlur:b(),onClick:b(),"onUpdate:checked":b(),"onUpdate:value":b()}),q=c({compatConfig:{MODE:3},name:`ARadio`,inheritAttrs:!1,props:K(),setup(e,t){let{emit:n,expose:i,slots:a,attrs:o}=t,s=F(),c=te.useInject(),d=he(),f=pe(),p=_(),m=u(()=>x.value??p.value),v=h(),{prefixCls:y,direction:b,disabled:x}=D(`radio`,e),S=u(()=>f?.optionType.value===`button`||d===`button`?`${y.value}-button`:y.value),C=_(),[w,T]=G(y);i({focus:()=>{v.value.focus()},blur:()=>{v.value.blur()}});let O=e=>{let t=e.target.checked;n(`update:checked`,t),n(`update:value`,t),n(`change`,e),s.onFieldChange()},k=e=>{n(`change`,e),f&&f.onChange&&f.onChange(e)};return()=>{let t=f,{prefixCls:n,id:i=s.id.value}=e,u=be(e,[`prefixCls`,`id`]),d=g(g({prefixCls:S.value,id:i},r(u,[`onUpdate:checked`,`onUpdate:value`])),{disabled:x.value??C.value});t?(d.name=t.name.value,d.onChange=k,d.checked=e.value===t.value.value,d.disabled=m.value||t.disabled.value):d.onChange=O;let p=M({[`${S.value}-wrapper`]:!0,[`${S.value}-wrapper-checked`]:d.checked,[`${S.value}-wrapper-disabled`]:d.disabled,[`${S.value}-wrapper-rtl`]:b.value===`rtl`,[`${S.value}-wrapper-in-form-item`]:c.isFormItemInput},o.class,T.value);return w(l(`label`,E(E({},o),{},{class:p}),[l(re,E(E({},d),{},{type:`radio`,ref:v}),null),a.default&&l(`span`,null,[a.default()])]))}}}),J=c({compatConfig:{MODE:3},name:`ARadioGroup`,inheritAttrs:!1,props:{prefixCls:String,value:k.any,size:A(),options:S(),disabled:x(),name:String,buttonStyle:A(`outline`),id:String,optionType:A(`default`),onChange:b(),"onUpdate:value":b()},setup(e,t){let{slots:n,emit:r,attrs:i}=t,o=F(),{prefixCls:s,direction:c,size:d}=D(`radio`,e),[f,p]=G(s),g=h(e.value),_=h(!1);return a(()=>e.value,e=>{g.value=e,_.value=!1}),fe({onChange:t=>{let n=g.value,{value:i}=t.target;`value`in e||(g.value=i),!_.value&&i!==n&&(_.value=!0,r(`update:value`,i),r(`change`,t),o.onFieldChange()),m(()=>{_.value=!1})},value:g,disabled:u(()=>e.disabled),name:u(()=>e.name),optionType:u(()=>e.optionType)}),()=>{let{options:t,buttonStyle:r,id:a=o.id.value}=e,u=`${s.value}-group`,m=M(u,`${u}-${r}`,{[`${u}-${d.value}`]:d.value,[`${u}-rtl`]:c.value===`rtl`},i.class,p.value),h=null;return h=t&&t.length>0?t.map(t=>{if(typeof t==`string`||typeof t==`number`)return l(q,{key:t,prefixCls:s.value,disabled:e.disabled,value:t,checked:g.value===t},{default:()=>[t]});let{value:n,disabled:r,label:i}=t;return l(q,{key:`radio-group-value-options-${n}`,prefixCls:s.value,disabled:r||e.disabled,value:n,checked:g.value===n},{default:()=>[i]})}):n.default?.call(n),f(l(`div`,E(E({},i),{},{class:m,id:a}),[h]))}}}),Y=c({compatConfig:{MODE:3},name:`ARadioButton`,inheritAttrs:!1,props:K(),setup(e,t){let{slots:n,attrs:r}=t,{prefixCls:i}=D(`radio`,e);return me(`button`),()=>l(q,E(E(E({},r),e),{},{prefixCls:i.value}),{default:()=>[n.default?.call(n)]})}});q.Group=J,q.Button=Y,q.install=function(e){return e.component(q.name,q),e.component(q.Group.name,q.Group),e.component(q.Button.name,q.Button),e};var xe=q,X=(e,t,n)=>{let r=v(n);return{[`${e.componentCls}-${t}`]:{color:e[`color${n}`],background:e[`color${r}Bg`],borderColor:e[`color${r}Border`],[`&${e.componentCls}-borderless`]:{borderColor:`transparent`}}}},Se=e=>N(e,(t,n)=>{let{textColor:r,lightBorderColor:i,lightColor:a,darkColor:o}=n;return{[`${e.componentCls}-${t}`]:{color:r,background:a,borderColor:i,"&-inverse":{color:e.colorTextLightSolid,background:o,borderColor:o},[`&${e.componentCls}-borderless`]:{borderColor:`transparent`}}}}),Ce=e=>{let{paddingXXS:t,lineWidth:n,tagPaddingHorizontal:r,componentCls:i}=e,a=r-n,o=t-n;return{[i]:g(g({},T(e)),{display:`inline-block`,height:`auto`,marginInlineEnd:e.marginXS,paddingInline:a,fontSize:e.tagFontSize,lineHeight:`${e.tagLineHeight}px`,whiteSpace:`nowrap`,background:e.tagDefaultBg,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusSM,opacity:1,transition:`all ${e.motionDurationMid}`,textAlign:`start`,[`&${i}-rtl`]:{direction:`rtl`},"&, a, a:hover":{color:e.tagDefaultColor},[`${i}-close-icon`]:{marginInlineStart:o,color:e.colorTextDescription,fontSize:e.tagIconSize,cursor:`pointer`,transition:`all ${e.motionDurationMid}`,"&:hover":{color:e.colorTextHeading}},[`&${i}-has-color`]:{borderColor:`transparent`,[`&, a, a:hover, ${e.iconCls}-close, ${e.iconCls}-close:hover`]:{color:e.colorTextLightSolid}},"&-checkable":{backgroundColor:`transparent`,borderColor:`transparent`,cursor:`pointer`,[`&:not(${i}-checkable-checked):hover`]:{color:e.colorPrimary,backgroundColor:e.colorFillSecondary},"&:active, &-checked":{color:e.colorTextLightSolid},"&-checked":{backgroundColor:e.colorPrimary,"&:hover":{backgroundColor:e.colorPrimaryHover}},"&:active":{backgroundColor:e.colorPrimaryActive}},"&-hidden":{display:`none`},[`> ${e.iconCls} + span, > span + ${e.iconCls}`]:{marginInlineStart:a}}),[`${i}-borderless`]:{borderColor:`transparent`,background:e.tagBorderlessBg}}},Z=w(`Tag`,e=>{let{fontSize:t,lineHeight:n,lineWidth:r,fontSizeIcon:i}=e,a=Math.round(t*n),o=e.fontSizeSM,s=a-r*2,c=e.colorFillAlter,l=e.colorText,u=j(e,{tagFontSize:o,tagLineHeight:s,tagDefaultBg:c,tagDefaultColor:l,tagIconSize:i-2*r,tagPaddingHorizontal:8,tagBorderlessBg:e.colorFillTertiary});return[Ce(u),Se(u),X(u,`success`,`Success`),X(u,`processing`,`Info`),X(u,`error`,`Error`),X(u,`warning`,`Warning`)]}),Q=c({compatConfig:{MODE:3},name:`ACheckableTag`,inheritAttrs:!1,props:{prefixCls:String,checked:{type:Boolean,default:void 0},onChange:{type:Function},onClick:{type:Function},"onUpdate:checked":Function},setup(e,t){let{slots:n,emit:r,attrs:i}=t,{prefixCls:a}=D(`tag`,e),[o,s]=Z(a),c=t=>{let{checked:n}=e;r(`update:checked`,!n),r(`change`,!n),r(`click`,t)},d=u(()=>M(a.value,s.value,{[`${a.value}-checkable`]:!0,[`${a.value}-checkable-checked`]:e.checked}));return()=>o(l(`span`,E(E({},i),{},{class:[d.value,i.class],onClick:c}),[n.default?.call(n)]))}}),$=c({compatConfig:{MODE:3},name:`ATag`,inheritAttrs:!1,props:{prefixCls:String,color:{type:String},closable:{type:Boolean,default:!1},closeIcon:k.any,visible:{type:Boolean,default:void 0},onClose:{type:Function},onClick:C(),"onUpdate:visible":Function,icon:k.any,bordered:{type:Boolean,default:!0}},slots:Object,setup(e,t){let{slots:r,emit:a,attrs:o}=t,{prefixCls:s,direction:c}=D(`tag`,e),[m,h]=Z(s),g=f(!0);d(()=>{e.visible!==void 0&&(g.value=e.visible)});let _=t=>{t.stopPropagation(),a(`update:visible`,!1),a(`close`,t),!t.defaultPrevented&&e.visible===void 0&&(g.value=!1)},v=u(()=>P(e.color)||ee(e.color)),y=u(()=>M(s.value,h.value,{[`${s.value}-${e.color}`]:v.value,[`${s.value}-has-color`]:e.color&&!v.value,[`${s.value}-hidden`]:!g.value,[`${s.value}-rtl`]:c.value===`rtl`,[`${s.value}-borderless`]:!e.bordered})),b=e=>{a(`click`,e)};return()=>{let{icon:t=r.icon?.call(r),color:a,closeIcon:c=r.closeIcon?.call(r),closable:u=!1}=e,d=()=>u?c?l(`span`,{class:`${s.value}-close-icon`,onClick:_},[c]):l(i,{class:`${s.value}-close-icon`,onClick:_},null):null,f={backgroundColor:a&&!v.value?a:void 0},h=t||null,g=r.default?.call(r),x=h?l(p,null,[h,l(`span`,null,[g])]):g,S=e.onClick!==void 0,C=l(`span`,E(E({},o),{},{onClick:b,class:[y.value,o.class],style:[f,o.style]}),[x,d()]);return m(S?l(n,null,{default:()=>[C]}):C)}}});$.CheckableTag=Q,$.install=function(e){return e.component($.name,$),e.component(Q.name,Q),e};export{de as a,J as i,xe as n,R as o,Y as r,$ as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./D0ZBQrN_2.js";var t=class extends Error{code;status;constructor(e,t,n){super(n),this.name=`ApiError`,this.code=e,this.status=t}};function n(e=!0){let t=typeof document<`u`?document.cookie.match(/(?:^|;\s*)token=([^;]+)/)?.[1]??``:``,n={};return t&&(n.authorization=`Bearer ${decodeURIComponent(t)}`),e&&(n[`content-type`]=`application/json`),n}var r=e=>new Promise(t=>setTimeout(t,e));function i(e){let t=(e?.method??`GET`).toUpperCase();return t===`GET`||t===`HEAD`}async function a(e,r,i){let a;try{a=await fetch(e+r,{...i,headers:{...n(!!i?.body),...i?.headers},signal:i?.signal??AbortSignal.timeout(i?.method&&i.method.toUpperCase()!==`GET`?3e4:15e3)})}catch(e){throw e instanceof Error&&(e.name===`TimeoutError`||e.name===`AbortError`)?new t(`TIMEOUT`,0,`请求超时,请检查网络或服务状态`):new t(`NETWORK`,0,`无法连接服务器,请检查网络或服务状态`)}let o=null;try{o=await a.json()}catch{}if(!a.ok)throw new t(o?.code??`HTTP_${a.status}`,a.status,o?.message||`请求失败(HTTP ${a.status})`);if(o?.code!==0)throw new t(o?.code??`REQUEST_ERROR`,a.status,o?.message||`请求失败`);return o.data}async function o(n){let{base:o,path:s=``,init:c,retries:l=0}=n,u=i(c),d=u?l+1:1,f;for(let n=0;n<d;n++)try{return await a(o,s,c)}catch(i){let a=i instanceof t?i:new t(`INTERNAL_ERROR`,0,e(i)),o=u&&(a.code===`NETWORK`||a.status>=500);if(f=a,!o||n===d-1)throw a;await r(400*(n+1))}throw f??new t(`INTERNAL_ERROR`,0,`请求失败`)}export{o as t};