agentworkshop 0.7.39 → 0.7.40

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 (373) hide show
  1. package/.AgentWorkShop/prompts/host-tools.json +55 -0
  2. package/.output/.AgentWorkShop/prompts/host-tools.json +55 -0
  3. package/.output/nitro.json +1 -1
  4. package/.output/public/_nuxt/88GOowgO2.js +1 -0
  5. package/.output/public/_nuxt/{BNT8gYU92.js → BC9wjTJK2.js} +2 -2
  6. package/.output/public/_nuxt/BOt2SP4z.js +1 -0
  7. package/.output/public/_nuxt/BP-NyKVG.js +18 -0
  8. package/.output/public/_nuxt/{HBLJ-wei.js → BXxH0UQE.js} +1 -1
  9. package/.output/public/_nuxt/{zIGh7R49.js → BneN7fbu.js} +1 -1
  10. package/.output/public/_nuxt/BsROmY89.js +1 -0
  11. package/.output/public/_nuxt/{C_OLzD09.js → C4oW1HsE.js} +1 -1
  12. package/.output/public/_nuxt/CFxtLwjp.js +1 -0
  13. package/.output/public/_nuxt/{Cec0Ua3F.js → CS50LB_l.js} +1 -1
  14. package/.output/public/_nuxt/C_iYD-EB.js +1 -0
  15. package/.output/public/_nuxt/{DAe0h2MB.js → ClILjvWH.js} +1 -1
  16. package/.output/public/_nuxt/CssgYAAL2.js +1 -0
  17. package/.output/public/_nuxt/{CY9LbPCI.js → CzOCSGLe.js} +1 -1
  18. package/.output/public/_nuxt/D8qvkfyY.js +1 -0
  19. package/.output/public/_nuxt/DCn7QZ5N.js +2 -0
  20. package/.output/public/_nuxt/DGIuvyRN2.js +1 -0
  21. package/.output/public/_nuxt/{CojCTLKD.js → DGj-WEBg.js} +1 -1
  22. package/.output/public/_nuxt/{DDShH71m.js → DS8qj8EL.js} +1 -1
  23. package/.output/public/_nuxt/DTFCy6h-.js +1 -0
  24. package/.output/public/_nuxt/{DrYV5i68.js → DUjW5Yq5.js} +1 -1
  25. package/.output/public/_nuxt/DZshyNLa.js +1 -0
  26. package/.output/public/_nuxt/{45zuyAso.js → D_OTvQza.js} +1 -1
  27. package/.output/public/_nuxt/DcsCcxp4.js +1 -0
  28. package/.output/public/_nuxt/{DUrecWPx.js → Dihnimlk.js} +2 -2
  29. package/.output/public/_nuxt/Dqw1lpr-.js +1 -0
  30. package/.output/public/_nuxt/{CUDwzgLV.js → Dr9v6C0f.js} +9 -9
  31. package/.output/public/_nuxt/{8NMOXZOV.js → Du9ZJtnj.js} +1 -1
  32. package/.output/public/_nuxt/TownView.f-YOdXRs.css +1 -0
  33. package/.output/public/_nuxt/_id_.CM4bIgKY.css +1 -0
  34. package/.output/public/_nuxt/_id_.bNV69Dtf.css +1 -0
  35. package/.output/public/_nuxt/_wsId_.B4WiqkIS.css +1 -0
  36. package/.output/public/_nuxt/agents.ZD0rVdHE.css +1 -0
  37. package/.output/public/_nuxt/aml.BN8ZEW4h.css +1 -0
  38. package/.output/public/_nuxt/builds/latest.json +1 -1
  39. package/.output/public/_nuxt/builds/meta/f4707884-7cf4-4a31-80d2-e3d72b73745f.json +1 -0
  40. package/.output/public/_nuxt/channel-templates.BOtahzPi.css +1 -0
  41. package/.output/public/_nuxt/daq.B0D3dPAc.css +1 -0
  42. package/.output/public/_nuxt/dcw.8Y7FqCVN.css +1 -0
  43. package/.output/public/_nuxt/default.J32SgqFY.css +1 -0
  44. package/.output/public/_nuxt/entry.bdm0tv6M.css +1 -0
  45. package/.output/public/_nuxt/logs.BpKzmKsh.css +1 -0
  46. package/.output/public/_nuxt/monitor.D9pe7qN6.css +1 -0
  47. package/.output/public/_nuxt/pages.D7aSDlUI.css +1 -0
  48. package/.output/public/_nuxt/permissions.DwTVlFe6.css +1 -0
  49. package/.output/public/_nuxt/plugins.sb4nDGqr.css +1 -0
  50. package/.output/public/_nuxt/{Cbq-mryP.js → qr6R6Ha1.js} +1 -1
  51. package/.output/public/_nuxt/settings.BTgR-NiE.css +1 -0
  52. package/.output/public/_nuxt/teams.CxnxKVVs.css +1 -0
  53. package/.output/public/_nuxt/tokens.BFY7qv4f.css +1 -0
  54. package/.output/public/_nuxt/{town.DKIAhKnx.css → town.BBXZmeoP.css} +1 -1
  55. package/.output/public/_nuxt/users.DLgZ1D0h.css +1 -0
  56. package/.output/public/_nuxt/workshop.CR_QzeAN.css +1 -0
  57. package/.output/public/_nuxt/{BzHEilTt.js → xh3_vYcu.js} +1 -1
  58. package/.output/public/_nuxt/yF0aYMF1.js +4 -0
  59. package/.output/server/chunks/_/entity.mjs.map +1 -1
  60. package/.output/server/chunks/_/nitro.mjs +2225 -1445
  61. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  62. package/.output/server/chunks/build/{TownView-jVazYOjN.mjs → TownView-BuLAsmpR.mjs} +288 -206
  63. package/.output/server/chunks/build/TownView-BuLAsmpR.mjs.map +1 -0
  64. package/.output/server/chunks/build/{_id_-CfVosNg3.mjs → _id_-BU1wfOID.mjs} +138 -138
  65. package/.output/server/chunks/build/{_id_-CfVosNg3.mjs.map → _id_-BU1wfOID.mjs.map} +1 -1
  66. package/.output/server/chunks/build/{_id_-Hwr4rZpr.mjs → _id_-BYsEua57.mjs} +33 -32
  67. package/.output/server/chunks/build/_id_-BYsEua57.mjs.map +1 -0
  68. package/.output/server/chunks/build/{_wsId_-BVg3bB77.mjs → _wsId_-BxlDcJHg.mjs} +293 -259
  69. package/.output/server/chunks/build/{_wsId_-BVg3bB77.mjs.map → _wsId_-BxlDcJHg.mjs.map} +1 -1
  70. package/.output/server/chunks/build/{agents-Bvin73QY.mjs → agents-CLQqJF2y.mjs} +21 -27
  71. package/.output/server/chunks/build/agents-CLQqJF2y.mjs.map +1 -0
  72. package/.output/server/chunks/build/{aml-BCSJCdX7.mjs → aml-_7FdFL2p.mjs} +109 -109
  73. package/.output/server/chunks/build/{aml-BCSJCdX7.mjs.map → aml-_7FdFL2p.mjs.map} +1 -1
  74. package/.output/server/chunks/build/api-error-dul30BYQ.mjs.map +1 -1
  75. package/.output/server/chunks/build/{channel-templates-BTq8570n.mjs → channel-templates-p6SZNjlM.mjs} +19 -19
  76. package/.output/server/chunks/build/{channel-templates-BTq8570n.mjs.map → channel-templates-p6SZNjlM.mjs.map} +1 -1
  77. package/.output/server/chunks/build/{daq-C03Uu5UE.mjs → daq-cgyjKmJu.mjs} +188 -122
  78. package/.output/server/chunks/build/daq-cgyjKmJu.mjs.map +1 -0
  79. package/.output/server/chunks/build/{dcw-6vEYVeje.mjs → dcw-CoTxBlAZ.mjs} +45 -45
  80. package/.output/server/chunks/build/{dcw-6vEYVeje.mjs.map → dcw-CoTxBlAZ.mjs.map} +1 -1
  81. package/.output/server/chunks/build/{default-CZmZFpqH.mjs → default-BE4r0FZN.mjs} +152 -58
  82. package/.output/server/chunks/build/{default-CZmZFpqH.mjs.map → default-BE4r0FZN.mjs.map} +1 -1
  83. package/.output/server/chunks/build/{logs-B-xhuqln.mjs → logs-BSOeZwwI.mjs} +34 -34
  84. package/.output/server/chunks/build/{logs-B-xhuqln.mjs.map → logs-BSOeZwwI.mjs.map} +1 -1
  85. package/.output/server/chunks/build/{monitor-CyfDt4nR.mjs → monitor-C0okQaXz.mjs} +33 -33
  86. package/.output/server/chunks/build/{monitor-CyfDt4nR.mjs.map → monitor-C0okQaXz.mjs.map} +1 -1
  87. package/.output/server/chunks/build/{pages-BO7yZsXA.mjs → pages-DFxjn9Xa.mjs} +33 -17
  88. package/.output/server/chunks/build/pages-DFxjn9Xa.mjs.map +1 -0
  89. package/.output/server/chunks/build/{permissions-B52oOmaO.mjs → permissions-68SsNjex.mjs} +12 -12
  90. package/.output/server/chunks/build/{permissions-B52oOmaO.mjs.map → permissions-68SsNjex.mjs.map} +1 -1
  91. package/.output/server/chunks/build/{plugins-CUWmMdyt.mjs → plugins-lGlUr1lj.mjs} +17 -17
  92. package/.output/server/chunks/build/{plugins-CUWmMdyt.mjs.map → plugins-lGlUr1lj.mjs.map} +1 -1
  93. package/.output/server/chunks/build/{settings-DoQ2Oq3P.mjs → settings-Ddd1qx2Z.mjs} +50 -47
  94. package/.output/server/chunks/build/settings-Ddd1qx2Z.mjs.map +1 -0
  95. package/.output/server/chunks/build/{teams-2kz3CusY.mjs → teams-MEDLZdMn.mjs} +38 -34
  96. package/.output/server/chunks/build/teams-MEDLZdMn.mjs.map +1 -0
  97. package/.output/server/chunks/build/{tokens-BbWLqtVz.mjs → tokens-C7fTM5C2.mjs} +14 -14
  98. package/.output/server/chunks/build/{tokens-BbWLqtVz.mjs.map → tokens-C7fTM5C2.mjs.map} +1 -1
  99. package/.output/server/chunks/build/{town-BOl6hs9B.mjs → town-qMPql9Se.mjs} +36 -10
  100. package/.output/server/chunks/build/town-qMPql9Se.mjs.map +1 -0
  101. package/.output/server/chunks/build/useDaqStream-CIBaiGAl.mjs +1 -1
  102. package/.output/server/chunks/build/useDcwStream-CBbiYnWe.mjs +1 -1
  103. package/.output/server/chunks/build/useResponsive-BKDMGTHs.mjs +49 -0
  104. package/.output/server/chunks/build/useResponsive-BKDMGTHs.mjs.map +1 -0
  105. package/.output/server/chunks/build/{users-fohSmF-J.mjs → users-Cfd5-l2-.mjs} +6 -6
  106. package/.output/server/chunks/build/{users-fohSmF-J.mjs.map → users-Cfd5-l2-.mjs.map} +1 -1
  107. package/.output/server/chunks/build/{workshop-DX5-ldc4.mjs → workshop-BL5bhfs0.mjs} +15 -15
  108. package/.output/server/chunks/build/{workshop-DX5-ldc4.mjs.map → workshop-BL5bhfs0.mjs.map} +1 -1
  109. package/.output/server/chunks/build/{workspaces-BuydxM-3.mjs → workspaces-Bgz5Ekwp.mjs} +18 -3
  110. package/.output/server/chunks/build/workspaces-Bgz5Ekwp.mjs.map +1 -0
  111. package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs.map +1 -1
  112. package/.output/server/chunks/routes/api/system/index.patch.mjs.map +1 -1
  113. package/.output/server/chunks/routes/api/system/index.post.mjs.map +1 -1
  114. package/.output/server/chunks/routes/api/system/settings/events.get.mjs.map +1 -1
  115. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +6 -2
  116. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs.map +1 -1
  117. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +2 -1
  118. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs.map +1 -1
  119. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +1 -1
  120. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +3 -3
  121. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs.map +1 -1
  122. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs.map +1 -1
  123. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs.map +1 -1
  124. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +3 -2
  125. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs.map +1 -1
  126. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +2 -1
  127. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs.map +1 -1
  128. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +8 -6
  129. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs.map +1 -1
  130. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +5 -5
  131. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs.map +1 -1
  132. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +14 -4
  133. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs.map +1 -1
  134. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +4 -4
  135. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs.map +1 -1
  136. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +4 -3
  137. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs.map +1 -1
  138. package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs +31 -0
  139. package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs.map +1 -0
  140. package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +28 -0
  141. package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs.map +1 -0
  142. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs.map +1 -1
  143. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +32 -0
  144. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs.map +1 -0
  145. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs +34 -0
  146. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs.map +1 -0
  147. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +33 -0
  148. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs.map +1 -0
  149. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +34 -0
  150. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs.map +1 -0
  151. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
  152. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
  153. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
  154. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
  155. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
  156. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
  157. package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
  158. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +2 -0
  159. package/.output/server/chunks/routes/api/workshop/index6.get.mjs.map +1 -1
  160. package/.output/server/chunks/routes/api/workshop/index9.get.mjs +3 -1
  161. package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
  162. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
  163. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
  164. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
  165. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
  166. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -1
  167. package/.output/server/chunks/routes/renderer.mjs +3 -3
  168. package/.output/server/chunks/virtual/entry.mjs +51 -25
  169. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  170. package/.output/server/package.json +1 -1
  171. package/README-zh.md +199 -35
  172. package/README.md +739 -591
  173. package/app/app.vue +9 -3
  174. package/app/assets/css/main.css +517 -7
  175. package/app/components/AppHeader.vue +98 -7
  176. package/app/components/AppSidebar.vue +117 -11
  177. package/app/components/AwChart.vue +2 -1
  178. package/app/components/workshop/AgentInspectorDrawer.vue +6 -6
  179. package/app/components/workshop/AgentLanesView.vue +52 -1
  180. package/app/components/workshop/AssetLibrary.vue +4 -2
  181. package/app/components/workshop/ChannelSessionList.vue +4 -2
  182. package/app/components/workshop/Composer.vue +96 -0
  183. package/app/components/workshop/DaqNodeRow.vue +19 -0
  184. package/app/components/workshop/DaqTemplateIcon.vue +33 -0
  185. package/app/components/workshop/DeviceTwinPanel.vue +37 -35
  186. package/app/components/workshop/EventBlock.vue +3 -3
  187. package/app/components/workshop/InspectorPanel.vue +47 -11
  188. package/app/components/workshop/LiveAgentBar.vue +34 -0
  189. package/app/components/workshop/TaskBoardView.vue +83 -33
  190. package/app/components/workshop/TranscriptTimeline.vue +56 -0
  191. package/app/components/workshop/blocks/ClusterError.vue +1 -1
  192. package/app/components/workshop/blocks/ClusterRoute.vue +3 -1
  193. package/app/components/workshop/blocks/ClusterStatus.vue +2 -2
  194. package/app/components/workshop/blocks/ClusterStream.vue +8 -2
  195. package/app/components/workshop/town/ModelPreview3D.vue +1 -1
  196. package/app/components/workshop/town/TownView.vue +507 -82
  197. package/app/composables/useResponsive.ts +88 -0
  198. package/app/composables/useRouteMeta.ts +3 -0
  199. package/app/composables/workshop/useDcwStream.ts +1 -1
  200. package/app/composables/workshop/useVisibleInterval.ts +2 -2
  201. package/app/composables/workshop/useWorkshopApi.ts +1 -1
  202. package/app/layouts/default.vue +46 -2
  203. package/app/pages/aml/index.vue +712 -616
  204. package/app/pages/daq/[id].vue +3 -2
  205. package/app/pages/daq/index.vue +209 -9
  206. package/app/pages/dcw/[id].vue +109 -28
  207. package/app/pages/dcw/index.vue +83 -23
  208. package/app/pages/index.vue +35 -1
  209. package/app/pages/logs/index.vue +147 -13
  210. package/app/pages/monitor.vue +56 -12
  211. package/app/pages/permissions/index.vue +34 -0
  212. package/app/pages/plugins/index.vue +35 -4
  213. package/app/pages/settings.vue +90 -21
  214. package/app/pages/tokens.vue +23 -0
  215. package/app/pages/town.vue +50 -5
  216. package/app/pages/users.vue +23 -0
  217. package/app/pages/workshop/agents.vue +92 -2
  218. package/app/pages/workshop/channel-templates.vue +53 -0
  219. package/app/pages/workshop/index.vue +14 -0
  220. package/app/pages/workshop/teams.vue +66 -6
  221. package/app/pages/workshop/w/[wsId].vue +202 -14
  222. package/app/plugins/aw-plugins.client.ts +13 -8
  223. package/app/stores/app.ts +33 -1
  224. package/app/stores/workshop/user.ts +1 -1
  225. package/app/stores/workshop/workspaces.ts +18 -2
  226. package/app/utils/api-error.ts +1 -1
  227. package/cli/commands/build.mjs +8 -1
  228. package/docker-compose.yml +6 -0
  229. package/i18n/locales/en.ts +2 -0
  230. package/i18n/locales/zh-CN.ts +2 -0
  231. package/nuxt.config.ts +31 -0
  232. package/package.json +9 -1
  233. package/scripts/_dbg-param-map-e2e.ts +242 -0
  234. package/scripts/_dbg-param-map-rest-smoke.mjs +73 -0
  235. package/scripts/_dbg-param-real-scenario.mjs +153 -0
  236. package/scripts/api-live-e2e.mjs +40 -8
  237. package/scripts/capture-walkthrough.mjs +232 -0
  238. package/scripts/render-walkthrough-figure.mjs +46 -0
  239. package/scripts/seed-walkthrough-fixture.mjs +143 -0
  240. package/scripts/test-plugin-hardening.mjs +8 -0
  241. package/scripts/ui/admin-shots.mjs +46 -0
  242. package/scripts/ui/audit-layout.mjs +301 -0
  243. package/scripts/ui/bump-microfont.mjs +39 -0
  244. package/scripts/ui/lib.mjs +198 -0
  245. package/scripts/ui/linkcheck2.mjs +37 -0
  246. package/scripts/ui/live-render-check.mjs +72 -0
  247. package/scripts/ui/md-lint.mjs +80 -0
  248. package/scripts/ui/perf-audit.mjs +132 -0
  249. package/scripts/ui/readme-assets.mjs +30 -0
  250. package/scripts/ui/readme-shots.mjs +42 -0
  251. package/scripts/ui/record.mjs +225 -0
  252. package/scripts/ui/seed-admin.mjs +68 -0
  253. package/scripts/ui/seed-demo.mjs +83 -0
  254. package/scripts/ui/shot-hero.mjs +25 -0
  255. package/scripts/ui/shots.mjs +75 -0
  256. package/scripts/ui/sim-ui-shot.mjs +16 -0
  257. package/scripts/ui/verify-nav.mjs +51 -0
  258. package/scripts/ui/verify-responsive.mjs +285 -0
  259. package/server/api/system/config-groups/[id].patch.ts +1 -1
  260. package/server/api/system/config-groups/index.post.ts +1 -1
  261. package/server/api/system/settings/events.get.ts +1 -1
  262. package/server/api/system/settings/index.patch.ts +1 -1
  263. package/server/api/workshop/agent-tools/invoke.post.ts +16 -2
  264. package/server/api/workshop/aml/datasets/[id].get.ts +8 -1
  265. package/server/api/workshop/daq/infra/reconnect.post.ts +1 -1
  266. package/server/api/workshop/daq/templates/[key].delete.ts +1 -0
  267. package/server/api/workshop/daq/templates/[key].patch.ts +1 -0
  268. package/server/api/workshop/daq/templates/index.post.ts +1 -0
  269. package/server/api/workshop/dcw/[id]/write.post.ts +10 -2
  270. package/server/api/workshop/dcw/[id].delete.ts +5 -2
  271. package/server/api/workshop/dcw/index.get.ts +2 -0
  272. package/server/api/workshop/dcw/lines/[id].patch.ts +1 -1
  273. package/server/api/workshop/dcw/params/[id]/read.post.ts +17 -0
  274. package/server/api/workshop/dcw/params/[id]/write.post.ts +21 -0
  275. package/server/api/workshop/dcw/params/[id].delete.ts +19 -0
  276. package/server/api/workshop/dcw/params/[id].patch.ts +23 -0
  277. package/server/api/workshop/dcw/params/index.get.ts +27 -0
  278. package/server/api/workshop/dcw/params/index.post.ts +25 -0
  279. package/server/api/workshop/permissions/index.get.ts +3 -1
  280. package/server/plugins/aw-plugins.ts +14 -3
  281. package/server/plugins/dev-stability-guard.ts +3 -1
  282. package/server/plugins/system-config.ts +6 -1
  283. package/server/services/system-config.ts +28 -9
  284. package/server/services/workshop/agents/adapters/one-shot-cli-agent.ts +2 -1
  285. package/server/services/workshop/agents/agent-interface.ts +8 -6
  286. package/server/services/workshop/agents/base-agent.ts +18 -4
  287. package/server/services/workshop/agents/claude-agent.ts +7 -3
  288. package/server/services/workshop/agents/codex-agent.ts +3 -3
  289. package/server/services/workshop/agents/dsh-agent.ts +3 -3
  290. package/server/services/workshop/agents/goose-agent.ts +0 -1
  291. package/server/services/workshop/agents/harness-terminal.ts +14 -1
  292. package/server/services/workshop/agents/hermes-agent.ts +4 -2
  293. package/server/services/workshop/agents/host-tool-bridge.ts +5 -1
  294. package/server/services/workshop/agents/industrial-context.ts +4 -1
  295. package/server/services/workshop/agents/industrial-tools.ts +164 -6
  296. package/server/services/workshop/agents/omp-agent.ts +15 -9
  297. package/server/services/workshop/agents/opencode-agent.ts +47 -21
  298. package/server/services/workshop/agents/qwen-agent.ts +10 -5
  299. package/server/services/workshop/aml/entity.ts +3 -1
  300. package/server/services/workshop/aml/python-runtime.ts +3 -2
  301. package/server/services/workshop/daq/bus/mqtt.adapter.ts +8 -4
  302. package/server/services/workshop/daq/daq-controller.ts +18 -3
  303. package/server/services/workshop/daq/daq-runtime.ts +5 -3
  304. package/server/services/workshop/daq/drivers.ts +63 -8
  305. package/server/services/workshop/daq/host-ports.ts +3 -2
  306. package/server/services/workshop/daq/storage/timescale.adapter.ts +3 -1
  307. package/server/services/workshop/db/channel.repo.ts +4 -0
  308. package/server/services/workshop/db/ops.repo.ts +5 -2
  309. package/server/services/workshop/db/retention.ts +8 -3
  310. package/server/services/workshop/dcw/dcw-controller.ts +143 -16
  311. package/server/services/workshop/dcw/dcw-product.repo.ts +38 -1
  312. package/server/services/workshop/dcw/dcw-runtime.ts +3 -2
  313. package/server/services/workshop/dcw/drivers.ts +5 -2
  314. package/server/services/workshop/dcw/param-conversion.ts +78 -0
  315. package/server/services/workshop/dcw/param-limits.ts +142 -0
  316. package/server/services/workshop/dcw/param-map.repo.ts +305 -0
  317. package/server/services/workshop/dcw/recipe-rollback-manager.ts +13 -7
  318. package/server/services/workshop/runtime/agent-runtime.ts +4 -0
  319. package/server/services/workshop/runtime/manager.ts +9 -2
  320. package/server/services/workshop/settings.ts +4 -2
  321. package/server/types/pg.d.ts +49 -0
  322. package/server/utils/stability-severity.ts +13 -2
  323. package/shared/config/groups.mjs +22 -1
  324. package/shared/config/home.d.mts +28 -0
  325. package/shared/dcw-protocol.ts +136 -0
  326. package/uno.config.ts +12 -1
  327. package/.output/public/_nuxt/BFkgkW8u.js +0 -4
  328. package/.output/public/_nuxt/C5gUkRwn.js +0 -1
  329. package/.output/public/_nuxt/CM12FuB42.js +0 -1
  330. package/.output/public/_nuxt/CZiw7sEV.js +0 -1
  331. package/.output/public/_nuxt/Cc_9VzD42.js +0 -1
  332. package/.output/public/_nuxt/CdPzkOMV.js +0 -1
  333. package/.output/public/_nuxt/CmsOtOAA2.js +0 -1
  334. package/.output/public/_nuxt/D1YDxZpZ.js +0 -1
  335. package/.output/public/_nuxt/D20Yamr4.js +0 -1
  336. package/.output/public/_nuxt/DmqknNvV.js +0 -18
  337. package/.output/public/_nuxt/DnUuIR83.js +0 -1
  338. package/.output/public/_nuxt/S_fVQwJK.js +0 -1
  339. package/.output/public/_nuxt/TownView.0oLiQgTC.css +0 -1
  340. package/.output/public/_nuxt/_id_.D-SYuyZb.css +0 -1
  341. package/.output/public/_nuxt/_id_.hma_BU6T.css +0 -1
  342. package/.output/public/_nuxt/_wsId_.B12v3PhY.css +0 -1
  343. package/.output/public/_nuxt/agents.BV70ioCv.css +0 -1
  344. package/.output/public/_nuxt/ahgEJu2R.js +0 -1
  345. package/.output/public/_nuxt/aml.COEKNNqK.css +0 -1
  346. package/.output/public/_nuxt/builds/meta/4457d63f-0866-4cea-b320-04a321f24795.json +0 -1
  347. package/.output/public/_nuxt/channel-templates.C-M5nKcC.css +0 -1
  348. package/.output/public/_nuxt/daq.B3265ZDn.css +0 -1
  349. package/.output/public/_nuxt/dcw.DLYZqEhT.css +0 -1
  350. package/.output/public/_nuxt/default.BXI_fZUi.css +0 -1
  351. package/.output/public/_nuxt/entry.BB-Eeh-J.css +0 -1
  352. package/.output/public/_nuxt/logs.CqFyMrJw.css +0 -1
  353. package/.output/public/_nuxt/monitor.B--1dPzs.css +0 -1
  354. package/.output/public/_nuxt/pages.ooEzrMm9.css +0 -1
  355. package/.output/public/_nuxt/permissions.B1pjGChZ.css +0 -1
  356. package/.output/public/_nuxt/plugins.5e5chZ67.css +0 -1
  357. package/.output/public/_nuxt/pz2JDAM7.js +0 -2
  358. package/.output/public/_nuxt/settings.Dm3M0RLy.css +0 -1
  359. package/.output/public/_nuxt/teams.BC75EGnR.css +0 -1
  360. package/.output/public/_nuxt/tokens.xRb1fSPU.css +0 -1
  361. package/.output/public/_nuxt/users.CXnP2E08.css +0 -1
  362. package/.output/public/_nuxt/workshop.Jk5HxWPE.css +0 -1
  363. package/.output/server/chunks/build/TownView-jVazYOjN.mjs.map +0 -1
  364. package/.output/server/chunks/build/_id_-Hwr4rZpr.mjs.map +0 -1
  365. package/.output/server/chunks/build/agents-Bvin73QY.mjs.map +0 -1
  366. package/.output/server/chunks/build/daq-C03Uu5UE.mjs.map +0 -1
  367. package/.output/server/chunks/build/pages-BO7yZsXA.mjs.map +0 -1
  368. package/.output/server/chunks/build/settings-DoQ2Oq3P.mjs.map +0 -1
  369. package/.output/server/chunks/build/teams-2kz3CusY.mjs.map +0 -1
  370. package/.output/server/chunks/build/town-BOl6hs9B.mjs.map +0 -1
  371. package/.output/server/chunks/build/workspaces-BuydxM-3.mjs.map +0 -1
  372. /package/.output/public/_nuxt/{36oeS8_R2.js → 36oeS8_R.js} +0 -0
  373. /package/.output/public/_nuxt/{CYWVXZTS.js → CYWVXZTS2.js} +0 -0
@@ -531,6 +531,61 @@
531
531
  ]
532
532
  }
533
533
  },
534
+ {
535
+ "name": "param_control",
536
+ "label": "Param Control",
537
+ "description": "按工艺参数下发设定值(推荐的参数语义寻址面;param=工艺参数 id 或 key)。参数 → PLC 执行点的映射由系统封装,你只面对真实物理量纲,不需要也不可见寄存器/数据类型等底层细节。设定值受四层限界联锁(节点安全量程 ∩ 工艺参数基准限界 ∩ 活动产品限界 ∩ 活动配方工艺窗口)逐层收窄,用户与 Agent 一体约束,越界直接拒绝。手动确认模式下需等待用户批准。下发前先调用 my_industrial_nodes 理解参数语义。",
538
+ "parameters": {
539
+ "type": "object",
540
+ "properties": {
541
+ "param": {
542
+ "type": "string",
543
+ "description": "工艺参数 id(pp-*)或参数 key(产线内唯一,见 my_industrial_nodes / line_context)"
544
+ },
545
+ "value": {
546
+ "type": "number",
547
+ "description": "目标设定值(真实物理量纲,如 ℃)"
548
+ },
549
+ "line_id": {
550
+ "type": "string",
551
+ "description": "产线 id(可选;参数 key 跨产线同名时用于消歧)"
552
+ },
553
+ "hypothesis": {
554
+ "type": "string",
555
+ "description": "本次调参假设(入优化记录档案):目标 + 预期效果 + 观察计划"
556
+ },
557
+ "task_id": {
558
+ "type": "string",
559
+ "description": "关联的优化任务 id(可选,入优化记录档案)"
560
+ }
561
+ },
562
+ "required": [
563
+ "param",
564
+ "value"
565
+ ]
566
+ }
567
+ },
568
+ {
569
+ "name": "param_read",
570
+ "label": "Param Read",
571
+ "description": "按工艺参数读取 PLC 当前值(param=工艺参数 id 或 key),返回实时读数(物理量纲)与当前设定值对照,以及该参数当前的有效写入区间(分层限界)。用于下发前取证、下发后复核。读取是被动观测,不需要审批。",
572
+ "parameters": {
573
+ "type": "object",
574
+ "properties": {
575
+ "param": {
576
+ "type": "string",
577
+ "description": "工艺参数 id(pp-*)或参数 key"
578
+ },
579
+ "line_id": {
580
+ "type": "string",
581
+ "description": "产线 id(可选;参数 key 跨产线同名时用于消歧)"
582
+ }
583
+ },
584
+ "required": [
585
+ "param"
586
+ ]
587
+ }
588
+ },
534
589
  {
535
590
  "name": "daq_query",
536
591
  "label": "DAQ Query",
@@ -531,6 +531,61 @@
531
531
  ]
532
532
  }
533
533
  },
534
+ {
535
+ "name": "param_control",
536
+ "label": "Param Control",
537
+ "description": "按工艺参数下发设定值(推荐的参数语义寻址面;param=工艺参数 id 或 key)。参数 → PLC 执行点的映射由系统封装,你只面对真实物理量纲,不需要也不可见寄存器/数据类型等底层细节。设定值受四层限界联锁(节点安全量程 ∩ 工艺参数基准限界 ∩ 活动产品限界 ∩ 活动配方工艺窗口)逐层收窄,用户与 Agent 一体约束,越界直接拒绝。手动确认模式下需等待用户批准。下发前先调用 my_industrial_nodes 理解参数语义。",
538
+ "parameters": {
539
+ "type": "object",
540
+ "properties": {
541
+ "param": {
542
+ "type": "string",
543
+ "description": "工艺参数 id(pp-*)或参数 key(产线内唯一,见 my_industrial_nodes / line_context)"
544
+ },
545
+ "value": {
546
+ "type": "number",
547
+ "description": "目标设定值(真实物理量纲,如 ℃)"
548
+ },
549
+ "line_id": {
550
+ "type": "string",
551
+ "description": "产线 id(可选;参数 key 跨产线同名时用于消歧)"
552
+ },
553
+ "hypothesis": {
554
+ "type": "string",
555
+ "description": "本次调参假设(入优化记录档案):目标 + 预期效果 + 观察计划"
556
+ },
557
+ "task_id": {
558
+ "type": "string",
559
+ "description": "关联的优化任务 id(可选,入优化记录档案)"
560
+ }
561
+ },
562
+ "required": [
563
+ "param",
564
+ "value"
565
+ ]
566
+ }
567
+ },
568
+ {
569
+ "name": "param_read",
570
+ "label": "Param Read",
571
+ "description": "按工艺参数读取 PLC 当前值(param=工艺参数 id 或 key),返回实时读数(物理量纲)与当前设定值对照,以及该参数当前的有效写入区间(分层限界)。用于下发前取证、下发后复核。读取是被动观测,不需要审批。",
572
+ "parameters": {
573
+ "type": "object",
574
+ "properties": {
575
+ "param": {
576
+ "type": "string",
577
+ "description": "工艺参数 id(pp-*)或参数 key"
578
+ },
579
+ "line_id": {
580
+ "type": "string",
581
+ "description": "产线 id(可选;参数 key 跨产线同名时用于消歧)"
582
+ }
583
+ },
584
+ "required": [
585
+ "param"
586
+ ]
587
+ }
588
+ },
534
589
  {
535
590
  "name": "daq_query",
536
591
  "label": "DAQ Query",
@@ -1,5 +1,5 @@
1
1
  {
2
- "date": "2026-09-12T13:00:39.869Z",
2
+ "date": "2026-09-18T14:34:37.969Z",
3
3
  "preset": "node-server",
4
4
  "framework": {
5
5
  "name": "nuxt",
@@ -0,0 +1 @@
1
+ import{a as e,c as t,j as n}from"./BU83-NnX.js";import{$ as r,D as i,G as a,H as o,Ht as s,P as c,R as l,S as u,Ut as d,V as f,Vt as p,W as m,b as h,d as g,et as _,f as v,h as y,ht as b,i as x,m as S,nt as C,p as w,pt as T,tt as E,v as D,xt as O,y as k}from"./CSkxz2NX.js";import{d as ee,f as A,n as j,t as M,u as N}from"./D6uzXueg.js";import{d as P,p as te}from"./BJHKLJJU.js";import{i as F}from"./YnQxK3eG.js";import{n as ne,r as I,t as re}from"./xh3_vYcu.js";import{n as ie}from"./KZQX7xoM.js";import{t as ae}from"./D9Oidm5I.js";import{At as L,St as oe,d as R,jt as se,n as z,nt as ce,t as B,u as le,wt as ue}from"./4sIEbgcl.js";import{i as de}from"./DYr1VMiQ.js";import{t as fe}from"./aWWIh8YL.js";import{a as pe,i as me,n as he,r as ge,t as _e}from"./CzlMDL5H.js";import{t as V}from"./lO5tpDZ5.js";import{n as H}from"./JCoYF4IJ.js";import{t as U}from"./Crod5z2f.js";import{t as ve}from"./C4DWUZ6d2.js";import{t as ye}from"./JTLM-kqr2.js";import{t as be}from"./DIaZ2PTo2.js";import{t as W}from"./BDNMzG2s2.js";import{t as xe}from"./DGIuvyRN2.js";import{t as G}from"./CssgYAAL2.js";import{t as Se}from"./D0ZBQrN_2.js";import{m as Ce,p as we,t as Te}from"./BC9wjTJK2.js";import{t as Ee}from"./BN6iuJEg2.js";var De=e=>{let{componentCls:t,colorBgContainer:n,colorBgBody:r,colorText:i}=e;return{[`${t}-sider-light`]:{background:n,[`${t}-sider-trigger`]:{color:i,background:n},[`${t}-sider-zero-width-trigger`]:{color:i,background:n,border:`1px solid ${r}`,borderInlineStart:0}}}},Oe=e=>{let{antCls:t,componentCls:n,colorText:r,colorTextLightSolid:i,colorBgHeader:a,colorBgBody:o,colorBgTrigger:s,layoutHeaderHeight:c,layoutHeaderPaddingInline:l,layoutHeaderColor:u,layoutFooterPadding:d,layoutTriggerHeight:f,layoutZeroTriggerSize:p,motionDurationMid:m,motionDurationSlow:h,fontSize:g,borderRadius:_}=e;return{[n]:L(L({display:`flex`,flex:`auto`,flexDirection:`column`,color:r,minHeight:0,background:o,"&, *":{boxSizing:`border-box`},[`&${n}-has-sider`]:{flexDirection:`row`,[`> ${n}, > ${n}-content`]:{width:0}},[`${n}-header, &${n}-footer`]:{flex:`0 0 auto`},[`${n}-header`]:{height:c,paddingInline:l,color:u,lineHeight:`${c}px`,background:a,[`${t}-menu`]:{lineHeight:`inherit`}},[`${n}-footer`]:{padding:d,color:r,fontSize:g,background:o},[`${n}-content`]:{flex:`auto`,minHeight:0},[`${n}-sider`]:{position:`relative`,minWidth:0,background:a,transition:`all ${m}, background 0s`,"&-children":{height:`100%`,marginTop:-.1,paddingTop:.1,[`${t}-menu${t}-menu-inline-collapsed`]:{width:`auto`}},"&-has-trigger":{paddingBottom:f},"&-right":{order:1},"&-trigger":{position:`fixed`,bottom:0,zIndex:1,height:f,color:i,lineHeight:`${f}px`,textAlign:`center`,background:s,cursor:`pointer`,transition:`all ${m}`},"&-zero-width":{"> *":{overflow:`hidden`},"&-trigger":{position:`absolute`,top:c,insetInlineEnd:-p,zIndex:1,width:p,height:p,color:i,fontSize:e.fontSizeXL,display:`flex`,alignItems:`center`,justifyContent:`center`,background:a,borderStartStartRadius:0,borderStartEndRadius:_,borderEndEndRadius:_,borderEndStartRadius:0,cursor:`pointer`,transition:`background ${h} ease`,"&::after":{position:`absolute`,inset:0,background:`transparent`,transition:`all ${h}`,content:`""`},"&:hover::after":{background:`rgba(255, 255, 255, 0.2)`},"&-right":{insetInlineStart:-p,borderStartStartRadius:_,borderStartEndRadius:0,borderEndEndRadius:0,borderEndStartRadius:_}}}}},De(e)),{"&-rtl":{direction:`rtl`}})}},ke=R(`Layout`,e=>{let{colorText:t,controlHeightSM:n,controlHeight:r,controlHeightLG:i,marginXXS:a}=e,o=i*1.25;return[Oe(le(e,{layoutHeaderHeight:r*2,layoutHeaderPaddingInline:o,layoutHeaderColor:t,layoutFooterPadding:`${n}px ${o}px`,layoutTriggerHeight:i+a*2,layoutZeroTriggerSize:i}))]},e=>{let{colorBgLayout:t}=e;return{colorBgHeader:`#001529`,colorBgBody:t,colorBgTrigger:`#002140`}}),K=()=>({prefixCls:String,hasSider:{type:Boolean,default:void 0},tagName:String});function q(e){let{suffixCls:t,tagName:n,name:r}=e;return e=>u({compatConfig:{MODE:3},name:r,props:K(),setup(r,i){let{slots:a}=i,{prefixCls:o}=z(t,r);return()=>{let t=L(L({},r),{prefixCls:o.value,tagName:n});return h(e,t,a)}}})}var J=u({compatConfig:{MODE:3},props:K(),setup(e,t){let{slots:n}=t;return()=>h(e.tagName,{class:e.prefixCls},n)}}),Ae=u({compatConfig:{MODE:3},inheritAttrs:!1,props:K(),setup(e,t){let{slots:n,attrs:r}=t,{prefixCls:i,direction:a}=z(``,e),[s,c]=ke(i),l=T([]);o(pe,{addSider:e=>{l.value=[...l.value,e]},removeSider:e=>{l.value=l.value.filter(t=>t!==e)}});let u=g(()=>{let{prefixCls:t,hasSider:n}=e;return{[c.value]:!0,[`${t}`]:!0,[`${t}-has-sider`]:typeof n==`boolean`?n:l.value.length>0,[`${t}-rtl`]:a.value===`rtl`}});return()=>{let{tagName:t}=e;return s(h(t,L(L({},r),{class:[u.value,r.class]}),n))}}}),Y=q({suffixCls:`layout`,tagName:`section`,name:`ALayout`})(Ae),X=q({suffixCls:`layout-header`,tagName:`header`,name:`ALayoutHeader`})(J),Z=q({suffixCls:`layout-footer`,tagName:`footer`,name:`ALayoutFooter`})(J),Q=q({suffixCls:`layout-content`,tagName:`main`,name:`ALayoutContent`})(J),je={icon:{tag:`svg`,attrs:{viewBox:`0 0 1024 1024`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0z`}}]},name:`bars`,theme:`outlined`};function Me(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:Object(arguments[t]),r=Object.keys(n);typeof Object.getOwnPropertySymbols==`function`&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){Ne(e,t,n[t])})}return e}function Ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Pe=function(e,t){var r=Me({},e,t.attrs);return h(n,Me({},r,{icon:je}),null)};Pe.displayName=`BarsOutlined`,Pe.inheritAttrs=!1;var Fe={xs:`479.98px`,sm:`575.98px`,md:`767.98px`,lg:`991.98px`,xl:`1199.98px`,xxl:`1599.98px`,xxxl:`1999.98px`},Ie=()=>({prefixCls:String,collapsible:{type:Boolean,default:void 0},collapsed:{type:Boolean,default:void 0},defaultCollapsed:{type:Boolean,default:void 0},reverseArrow:{type:Boolean,default:void 0},zeroWidthTriggerStyle:{type:Object,default:void 0},trigger:B.any,width:B.oneOfType([B.number,B.string]),collapsedWidth:B.oneOfType([B.number,B.string]),breakpoint:B.oneOf(ce(`xs`,`sm`,`md`,`lg`,`xl`,`xxl`,`xxxl`)),theme:B.oneOf(ce(`light`,`dark`)).def(`dark`),onBreakpoint:Function,onCollapse:Function}),Le=(()=>{let e=0;return function(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:``;return e+=1,`${t}${e}`}})(),$=u({compatConfig:{MODE:3},name:`ALayoutSider`,inheritAttrs:!1,props:oe(Ie(),{collapsible:!1,defaultCollapsed:!1,reverseArrow:!1,width:200,collapsedWidth:80}),emits:[`breakpoint`,`update:collapsed`,`collapse`],setup(e,t){let{emit:n,attrs:a,slots:s}=t,{prefixCls:u}=z(`layout-sider`,e),d=i(pe,void 0),f=b(!!(e.collapsed===void 0?e.defaultCollapsed:e.collapsed)),p=b(!1);r(()=>e.collapsed,()=>{f.value=!!e.collapsed}),o(me,f);let m=(t,r)=>{e.collapsed===void 0&&(f.value=t),n(`update:collapsed`,t),n(`collapse`,t,r)},g=b(e=>{p.value=e.matches,n(`breakpoint`,e.matches),f.value!==e.matches&&m(e.matches,`responsive`)}),_;function v(e){return g.value(e)}let y=Le(`ant-sider-`);d&&d.addSider(y),l(()=>{r(()=>e.breakpoint,()=>{try{_?.removeEventListener(`change`,v)}catch{_?.removeListener(v)}if(typeof window<`u`){let{matchMedia:t}=window;if(t&&e.breakpoint&&e.breakpoint in Fe){_=t(`(max-width: ${Fe[e.breakpoint]})`);try{_.addEventListener(`change`,v)}catch{_.addListener(v)}v(_)}}},{immediate:!0})}),c(()=>{try{_?.removeEventListener(`change`,v)}catch{_?.removeListener(v)}d&&d.removeSider(y)});let x=()=>{m(!f.value,`clickTrigger`)};return()=>{let t=u.value,{collapsedWidth:n,width:r,reverseArrow:i,zeroWidthTriggerStyle:o,trigger:c=s.trigger?.call(s),collapsible:l,theme:d}=e,m=f.value?n:r,g=V(m)?`${m}px`:String(m),_=parseFloat(String(n||0))===0?h(`span`,{onClick:x,class:ue(`${t}-zero-width-trigger`,`${t}-zero-width-trigger-${i?`right`:`left`}`),style:o},[c||h(Pe,null,null)]):null,v={expanded:h(i?H:U,null,null),collapsed:h(i?U:H,null,null)}[f.value?`collapsed`:`expanded`],y=c===null?null:_||h(`div`,{class:`${t}-trigger`,onClick:x,style:{width:g}},[c||v]),b=[a.style,{flex:`0 0 ${g}`,maxWidth:g,minWidth:g,width:g}],S=ue(t,`${t}-${d}`,{[`${t}-collapsed`]:!!f.value,[`${t}-has-trigger`]:l&&c!==null&&!_,[`${t}-below`]:!!p.value,[`${t}-zero-width`]:parseFloat(g)===0},a.class);return h(`aside`,se(se({},a),{},{class:S,style:b}),[h(`div`,{class:`${t}-children`},[s.default?.call(s)]),l||p.value&&_?y:null])}}}),Re=X,ze=Z,Be=$,Ve=Q,He=L(Y,{Header:X,Footer:Z,Content:Q,Sider:$,install:e=>(e.component(Y.name,Y),e.component(X.name,X),e.component(Z.name,Z),e.component($.name,$),e.component(Q.name,Q),e)}),Ue=[`width`,`height`],We=Object.assign(u({__name:`AwLogo`,props:{size:{default:32}},setup(e){return(t,n)=>(f(),y(`svg`,{width:e.size,height:e.size,viewBox:`0 0 64 64`,fill:`none`,"aria-hidden":`true`},[...n[0]||=[D(`<defs><linearGradient id="aw-logo-gradient" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#35e0a0"></stop><stop offset="1" stop-color="#41c8f4"></stop></linearGradient></defs><path d="M32 4 L56 18 V46 L32 60 L8 46 V18 Z" stroke="url(#aw-logo-gradient)" stroke-width="4" stroke-linejoin="round"></path><path d="M32 15 L46.7 23.5 V40.5 L32 49 L17.3 40.5 V23.5 Z" stroke="#41c8f4" stroke-opacity="0.45" stroke-width="1.8" stroke-dasharray="4 3"></path><path d="M32 23 L25 38 M32 23 L39 38 M25 38 L39 38" stroke="#35e0a0" stroke-width="1.8" stroke-opacity="0.75"></path><circle cx="32" cy="23" r="3.4" fill="#35e0a0"></circle><circle cx="25" cy="38" r="3.4" fill="#41c8f4"></circle><circle cx="39" cy="38" r="3.4" fill="#41c8f4"></circle>`,7)]],8,Ue))}}),{__name:`AwLogo`}),Ge={class:`logo`},Ke={class:`logo-mark`,"aria-hidden":`true`},qe={class:`logo-text`},Je={class:`logo-title`},Ye={class:`app-menu`},Xe={class:`menu-group-label`},Ze={class:`menu-group-text`},Qe={class:`menu-group-sep`,"aria-hidden":`true`},$e=[`title`,`onClick`],et={class:`sider-footer`},tt={class:`footer-line`},nt=Object.assign(W(u({__name:`AppSidebar`,setup(e){let t=be(),{t:n}=ie(),i=te(),a=re(),o=ne(),s=T(!1),u=g(()=>[{id:`console`,label:n(`menu.groups.console`),items:[{key:`/`,icon:`i-tabler-layout-dashboard`,label:n(`menu.dashboard`),motion:`im-pop`},{key:`/workshop`,icon:`i-tabler-box`,label:n(`menu.workshop`),motion:`im-pop`},{key:`/town`,icon:`i-tabler-map-2`,label:n(`menu.town`),motion:`im-pop`},{key:`/daq`,icon:`i-tabler-activity`,label:n(`menu.daq`),motion:`im-pop`},{key:`/dcw`,icon:`i-tabler-settings-automation`,label:n(`menu.dcw`),motion:`im-pop`},{key:`/aml`,icon:`i-tabler-flask`,label:n(`menu.aml`),motion:`im-pop`}]},{id:`ops`,label:n(`menu.groups.ops`),items:[{key:`/monitor`,icon:`i-tabler-cpu`,label:n(`menu.monitor`),motion:`im-pulse`},{key:`/logs`,icon:`i-tabler-list-details`,label:n(`menu.logs`),motion:`im-pop`}]},{id:`system`,label:n(`menu.groups.system`),items:[{key:`/tokens`,icon:`i-tabler-key`,label:n(`menu.tokens`),motion:`im-nudge-up`},{key:`/users`,icon:`i-tabler-users-group`,label:n(`menu.users`),motion:`im-pop`},{key:`/permissions`,icon:`i-tabler-shield-lock`,label:n(`menu.permissions`),motion:`im-pop`,adminOnly:!0},{key:`/plugins`,icon:`i-tabler-puzzle`,label:n(`menu.plugins`),motion:`im-pop`},{key:`/settings`,icon:`i-tabler-settings`,label:n(`menu.settings`),motion:`im-rotate`}]}].map(e=>({...e,items:e.items.filter(e=>!e.adminOnly||s.value&&t.isAdmin)})).filter(e=>e.items.length>0)),b=e=>e===`/`?i.path===`/`:i.path.startsWith(e),w=e=>{D.value&&o.closeMobileNav(),b(e)||P(e)},{isDrawer:D,isTablet:k}=xe();l(()=>{s.value=!0});let ee=g(()=>s.value?D.value?`drawer`:k.value?`rail`:`full`:void 0),A=g(()=>D.value?!1:k.value?!0:o.sidebarCollapsed),j=g(()=>!A.value),F=g(()=>D.value&&o.mobileNavOpen);r(()=>i.path,()=>{o.mobileNavOpen&&o.closeMobileNav()}),_(()=>{typeof document>`u`||(document.body.classList.toggle(`nav-drawer`,D.value),document.body.classList.toggle(`nav-drawer-open`,F.value))}),c(()=>{typeof document>`u`||document.body.classList.remove(`nav-drawer`,`nav-drawer-open`)}),r(F,e=>{typeof document>`u`||(document.body.style.overflow=e?`hidden`:``)});let I=e=>{e.key===`Escape`&&F.value&&o.closeMobileNav()};return l(()=>window.addEventListener(`keydown`,I)),c(()=>{window.removeEventListener(`keydown`,I),typeof document<`u`&&(document.body.style.overflow=``)}),(e,t)=>{let n=We,r=Be;return f(),y(x,null,[h(r,{collapsed:O(A),trigger:null,collapsible:``,width:228,"collapsed-width":64,class:`app-sider`,"data-nav-mode":O(ee),"aria-hidden":O(D)&&!O(F)?`true`:void 0},{default:E(()=>[v(`div`,Ge,[v(`div`,Ke,[h(n,{size:30})]),h(M,{name:`slide-fade`},{default:E(()=>[C(v(`div`,qe,[v(`span`,Je,d(O(a).name),1),t[1]||=v(`span`,{class:`logo-sub`},`digital twin`,-1)],512),[[N,O(j)]])]),_:1})]),v(`nav`,Ye,[(f(!0),y(x,null,m(O(u),e=>(f(),y(`div`,{key:e.id,class:`menu-group`},[C(v(`div`,Xe,[v(`span`,Ze,d(e.label),1),t[2]||=v(`span`,{class:`menu-group-rule`,"aria-hidden":`true`},null,-1)],512),[[N,O(j)]]),C(v(`div`,Qe,null,512),[[N,!O(j)]]),(f(!0),y(x,null,m(e.items,e=>(f(),y(`button`,{key:e.key,type:`button`,class:p([`menu-item im`,{active:b(e.key)}]),title:O(j)?void 0:e.label,onClick:t=>w(e.key)},[v(`span`,{class:p([`menu-icon`,[e.icon,e.motion]])},null,2),C(v(`span`,{class:`menu-label`},d(e.label),513),[[N,O(j)]])],10,$e))),128))]))),128))]),C(v(`div`,et,[t[4]||=v(`div`,{class:`footer-rule`},null,-1),v(`div`,tt,[v(`span`,null,`v`+d(O(a).version),1),t[3]||=v(`span`,{class:`sep`},`/`,-1),v(`span`,null,d(O(a).mode),1)])],512),[[N,O(j)]])]),_:1},8,[`collapsed`,`data-nav-mode`,`aria-hidden`]),O(F)?(f(),y(`div`,{key:0,class:`nav-scrim`,"aria-hidden":`true`,onClick:t[0]||=e=>O(o).closeMobileNav()})):S(``,!0)],64)}}}),[[`__scopeId`,`data-v-a91ac3dd`]]),{__name:`AppSidebar`}),rt=F(`app.routeTrail`,()=>{let e=T([]);function t(t){if(!t||t.startsWith(`/api`))return;let n=e.value.filter(e=>e.path!==t);e.value=[...n,{path:t,at:Date.now()}].slice(-8)}function n(t){let n=e.value.findIndex(e=>e.path===t);return n>=0&&(e.value=e.value.filter(e=>e.path!==t)),n}function r(){e.value=[]}return{waypoints:e,visit:t,remove:n,clear:r}},{persist:{pick:[`waypoints`],storage:I.localStorage()}});function it(){let{t:e}=ie(),t=G(),n={"/":{key:`menu.dashboard`,icon:`i-tabler-layout-dashboard`},"/workshop":{key:`menu.workshop`,icon:`i-tabler-box`},"/workshop/agents":{key:`meta.agents`,icon:`i-tabler-users`},"/workshop/teams":{key:`meta.teams`,icon:`i-tabler-users-group`},"/workshop/channel-templates":{key:`meta.ctpl`,icon:`i-tabler-layout-grid-add`},"/town":{key:`menu.town`,icon:`i-tabler-map-2`},"/tokens":{key:`menu.tokens`,icon:`i-tabler-key`},"/daq":{key:`menu.daq`,icon:`i-tabler-activity`},"/dcw":{key:`menu.dcw`,icon:`i-tabler-settings-automation`},"/aml":{key:`menu.aml`,icon:`i-tabler-flask`},"/logs":{key:`menu.logs`,icon:`i-tabler-list-details`},"/permissions":{key:`menu.permissions`,icon:`i-tabler-shield-lock`},"/plugins":{key:`menu.plugins`,icon:`i-tabler-puzzle`},"/users":{key:`menu.users`,icon:`i-tabler-users-group`},"/monitor":{key:`menu.monitor`,icon:`i-tabler-cpu`},"/settings":{key:`menu.settings`,icon:`i-tabler-settings`}};return{metaFor:r=>{let i=n[r];if(i)return{title:e(i.key),icon:i.icon};let a=r.match(/^\/workshop\/w\/([^/]+)$/);if(a){let n=a[1];return{title:t.workspaces.find(e=>e.id===n)?.name??`${e(`header.workspace`)} ${n.slice(0,6)}`,icon:`i-tabler-console`}}let o=r.split(`/`).filter(Boolean).pop()??`·`;return{title:o.charAt(0).toUpperCase()+o.slice(1),icon:`i-tabler-point`}}}}var at={class:`header-left`},ot=[`aria-label`,`aria-expanded`],st={class:`mobile-title`},ct=[`aria-label`],lt=[`title`,`onClick`,`onKeydown`],ut={class:`node-title`},dt=[`aria-label`,`title`,`onClick`],ft={class:`header-right`},pt=[`title`],mt={class:`hitl-count`},ht={class:`hitl-menu`},gt={class:`hitl-menu-title`},_t=[`onClick`],vt={class:`hitl-item-top`},yt={class:`hitl-item-agent`},bt={class:`hitl-item-kind`},xt={class:`hitl-item-title`},St=[`title`],Ct={class:`user-chip`},wt={class:`user-initial aw-avatar`},Tt={class:`user-meta`},Et={class:`user-name`},Dt={class:`user-role`},Ot=Object.assign(W(u({__name:`AppHeader`,setup(n){let{t:i,locale:a,locales:o,setLocale:s}=ie(),u=ne(),_=te(),b=rt(),C=be(),{metaFor:D}=it(),M=we(),N=Te(),F=()=>{C.isLoggedIn&&N.ensureConnected()};r(()=>C.token,e=>{e?(F(),M.loadSnapshot()):M.clear()},{immediate:!0});let I=new Set([`codex-approval`,`opencode-permission`,`dsh-permission`]),re=e=>{switch(e){case`omp-dialog`:return i(`appHeader.hitlKindOmp`);case`dcw-approval`:return i(`appHeader.hitlKindDcw`);case`codex-approval`:return i(`appHeader.hitlKindCodex`);case`opencode-permission`:return i(`appHeader.hitlKindOpencode`);case`dsh-permission`:return i(`appHeader.hitlKindDsh`);default:return e}},L=e=>{P({path:`/monitor`,query:{agentId:e.agentId,channelId:e.channelId}})},oe=Ee(),R=T(null),se=async(t,n)=>{R.value=`${t.kind}:${t.id}`;try{await oe.respondHitl({kind:t.kind,id:t.id,confirmed:n,cancelled:!n}),await M.loadSnapshot()}catch(t){e.error(Se(t))}finally{R.value=null}},z=g(()=>o.value.map(e=>({label:le.value?e.code.split(`-`)[0].toUpperCase():e.name,value:e.code}))),ce=e=>{e!=null&&(localStorage.setItem(`aw.locale`,String(e)),s(String(e)),window.location.reload())},{isDrawer:B,isMobile:le}=xe(),ue=g(()=>B.value?u.mobileNavOpen?i(`header.closeNav`):i(`header.openNav`):u.sidebarCollapsed?i(`header.expand`):i(`header.collapse`)),pe=()=>{B.value?u.toggleMobileNav():u.toggleSidebar()},me=g(()=>D(_.path).title),V=T(!1),H=T(!1),U=null;r(()=>_.path,()=>{b.visit(_.path),H.value=!1,requestAnimationFrame(()=>{H.value=!0,U&&clearTimeout(U),U=setTimeout(()=>{H.value=!1},620)})},{immediate:!1}),l(()=>{V.value=!0,b.visit(_.path)}),c(()=>{U&&clearTimeout(U)});let ye=e=>{e!==_.path&&P(e)},W=e=>{let t=b.remove(e);if(e!==_.path)return;let n=b.waypoints,r=n[Math.min(Math.max(t-1,0),Math.max(n.length-1,0))]?.path??`/`;P(r)},G=T(!1);function De(){document.fullscreenElement?(document.exitFullscreen(),G.value=!1):(document.documentElement.requestFullscreen(),G.value=!0)}let Oe=g(()=>(C.user?.name??`?`).trim().charAt(0).toUpperCase()),ke=g(()=>C.user?.name??i(`header.guest`)),K=g(()=>C.isLoggedIn?C.user?.role??`user`:`anonymous`),q=Ce(),J=g(()=>q.state!==`closed`||q.lastDataAt>0),Ae=g(()=>q.state===`open`?q.pendingReplay?`syncing`:`live`:q.state===`connecting`?`syncing`:`down`),Y=g(()=>q.state===`open`?q.pendingReplay?i(`appHeader.kwsdot0002`):i(`appHeader.kwsdot0001`):q.state===`connecting`?i(`appHeader.kwsdot0003`):i(`appHeader.kwsdot0004`)),X=g(()=>{let e=[{key:`tokens`,icon:`i-tabler-key`,label:i(`menu.tokens`)},{key:`settings`,icon:`i-tabler-adjustments`,label:i(`menu.settings`)}];return C.isLoggedIn&&(e.push({key:`d-logout`,label:``,divider:!0}),e.push({key:`logout`,icon:`i-tabler-logout`,label:i(`header.logout`),danger:!0})),e}),Z=async({key:e})=>{e===`settings`?P(`/settings`):e===`tokens`?P(`/tokens`):e===`logout`&&(await C.logout(),P(`/workshop`))};return(e,n)=>{let r=t,o=ve,s=ae,c=de,l=fe,g=he,C=ge,T=_e,N=Re;return f(),w(N,{class:`app-header app-header-glass`},{default:E(()=>[v(`div`,at,[v(`button`,{class:`collapse-btn`,"aria-label":O(ue),"aria-expanded":O(B)?O(u).mobileNavOpen:!O(u).sidebarCollapsed,onClick:n[0]||=e=>pe()},[...n[3]||=[v(`span`,{class:`i-tabler-menu-2`},null,-1)]],8,ot),v(`span`,st,d(O(me)),1),n[5]||=v(`span`,{class:`rail-mark i-tabler-route`},null,-1),v(`nav`,{class:`trail`,"aria-label":O(i)(`header.trail`)},[h(j,{name:`stamp`,tag:`div`,class:`trail-row`},{default:E(()=>[O(V)?(f(!0),y(x,{key:0},m(O(b).waypoints,(t,r)=>(f(),y(x,{key:t.path},[r>0?(f(),y(`span`,{key:`link-${t.path}`,class:`trail-link`,"aria-hidden":`true`})):S(``,!0),v(`div`,{class:p([`trail-node`,{active:t.path===O(_).path}]),role:`button`,tabindex:`0`,title:O(D)(t.path).title,onClick:e=>ye(t.path),onKeydown:ee(A(e=>ye(t.path),[`prevent`]),[`enter`])},[v(`span`,{class:p([`node-icon`,O(D)(t.path).icon])},null,2),v(`span`,ut,d(O(D)(t.path).title),1),v(`button`,{class:`node-close`,"aria-label":e.$t(`appHeader.kzwjv99001`,{p0:O(D)(t.path).title}),title:e.$t(`appHeader.kzwjv99001`,{p0:O(D)(t.path).title}),onClick:A(e=>W(t.path),[`stop`])},[...n[4]||=[v(`span`,{class:`i-tabler-x`},null,-1)]],8,dt)],42,lt)],64))),128)):S(``,!0)]),_:1})],8,ct)]),v(`div`,ft,[h(s,null,{default:E(()=>[O(M).count>0?(f(),w(o,{key:0,placement:`bottomRight`},{overlay:E(()=>[v(`div`,ht,[v(`div`,gt,d(O(i)(`appHeader.hitlBadge`))+` · `+d(O(M).count),1),(f(!0),y(x,null,m(O(M).items,e=>(f(),y(`button`,{key:`${e.kind}:${e.id}`,class:`hitl-item`,onClick:t=>L(e)},[v(`span`,vt,[v(`span`,yt,d(e.agentName),1),v(`span`,bt,d(re(e.kind)),1)]),v(`span`,xt,d(e.title),1),O(I).has(e.kind)?(f(),y(`span`,{key:0,class:`hitl-item-actions`,onClick:n[1]||=A(()=>{},[`stop`])},[h(r,{size:`small`,type:`primary`,loading:O(R)===`${e.kind}:${e.id}`,onClick:t=>se(e,!0)},{default:E(()=>[k(d(O(i)(`appHeader.hitlApprove`)),1)]),_:1},8,[`loading`,`onClick`]),h(r,{size:`small`,danger:``,disabled:O(R)===`${e.kind}:${e.id}`,onClick:t=>se(e,!1)},{default:E(()=>[k(d(O(i)(`appHeader.hitlReject`)),1)]),_:1},8,[`disabled`,`onClick`])])):S(``,!0)],8,_t))),128))])]),default:E(()=>[v(`button`,{class:`icon-btn hitl-bell`,title:O(i)(`appHeader.hitlBadge`)},[n[6]||=v(`span`,{class:`i-tabler-bell-ringing`},null,-1),v(`span`,mt,d(O(M).count),1)],8,pt)]),_:1})):S(``,!0)]),_:1}),O(V)&&O(J)?(f(),y(`span`,{key:0,class:p([`ws-dot`,O(Ae)]),title:O(Y)},null,10,St)):S(``,!0),h(c,{title:O(i)(`header.fullscreen`)},{default:E(()=>[v(`button`,{class:`icon-btn hdr-fullscreen`,onClick:De},[v(`span`,{class:p([`i-tabler-arrows-maximize`,{hidden:O(G)}])},null,2),v(`span`,{class:p([`i-tabler-arrows-minimize`,{hidden:!O(G)}])},null,2)])]),_:1},8,[`title`]),h(l,{id:`hdr-locale`,value:O(a),size:`middle`,options:O(z),class:`lang-select`,onChange:ce},null,8,[`value`,`options`]),h(c,{title:O(u).isDark?O(i)(`common.light`):O(i)(`common.dark`)},{default:E(()=>[v(`button`,{class:`icon-btn`,onClick:n[2]||=e=>O(u).toggleDark()},[v(`span`,{class:p([`i-tabler-sun-high`,{hidden:O(u).isDark}])},null,2),v(`span`,{class:p([`i-tabler-moon-stars`,{hidden:!O(u).isDark}])},null,2)])]),_:1},8,[`title`]),h(o,null,{overlay:E(()=>[h(T,{onClick:Z},{default:E(()=>[(f(!0),y(x,null,m(O(X),e=>(f(),y(x,{key:e.key},[e.divider?(f(),w(g,{key:0})):(f(),w(C,{key:e.key,danger:e.danger},{default:E(()=>[v(`span`,{class:p([e.icon,`mr-2`])},null,2),k(` `+d(e.label),1)]),_:2},1032,[`danger`]))],64))),128))]),_:1})]),default:E(()=>[v(`div`,Ct,[h(s,null,{fallback:E(()=>[...n[7]||=[v(`span`,{class:`user-initial aw-avatar`},`·`,-1),v(`span`,{class:`user-meta`},[v(`span`,{class:`user-name`},`·`),v(`span`,{class:`user-role`},`·`)],-1)]]),default:E(()=>[v(`span`,wt,d(O(Oe)),1),v(`span`,Tt,[v(`span`,Et,d(O(ke)),1),v(`span`,Dt,d(O(K)),1)])]),_:1})])]),_:1})]),v(`span`,{class:p([`plotter-line`,{run:O(H)}]),"aria-hidden":`true`},null,2)]),_:1})}}}),[[`__scopeId`,`data-v-a6ff3f55`]]),{__name:`AppHeader`}),kt={class:`footer-title aw-serif-accent`},At={class:`footer-corner`},jt=W(u({__name:`default`,setup(e){let{token:t}=ye.useToken(),n=re();return(e,r)=>{let i=nt,o=Ot,c=Ve,l=ze,u=He;return f(),w(u,{class:`app-layout`,"has-sider":``},{default:E(()=>[h(i),h(u,{class:`app-main`,style:s({background:`transparent`,"--app-bg-container":O(t)?.colorBgContainer,"--app-bg-layout":O(t)?.colorBgLayout,"--app-text":O(t)?.colorText,"--app-text-secondary":O(t)?.colorTextSecondary,"--app-border":O(t)?.colorBorderSecondary,"--app-fill":O(t)?.colorFillQuaternary,"--app-header-h":`56px`,"--app-footer-h":`46px`})},{default:E(()=>[h(o),h(c,{class:`app-content`},{default:E(()=>[a(e.$slots,`default`,{},void 0,!0)]),_:3}),h(l,{class:`app-footer`,style:s({color:O(t)?.colorTextSecondary})},{default:E(()=>[v(`span`,kt,d(O(n).title),1),r[4]||=v(`span`,{class:`sep`},`/`,-1),v(`span`,null,`mode=`+d(O(n).mode),1),v(`span`,At,[v(`span`,null,`v`+d(O(n).version),1),r[0]||=v(`span`,{class:`sep`},`·`,-1),r[1]||=v(`a`,{class:`footer-link`,href:`https://github.com/kingdol666/AgentWorkShop`,target:`_blank`,rel:`noopener`},`GitHub`,-1),r[2]||=v(`span`,{class:`sep`},`·`,-1),r[3]||=v(`a`,{class:`footer-link`,href:`https://kingdol666.github.io/AgentWorkShop/`,target:`_blank`,rel:`noopener`},`Docs`,-1)])]),_:1},8,[`style`])]),_:3},8,[`style`]),r[5]||=v(`span`,{class:`aw-noise`,"aria-hidden":`true`},null,-1)]),_:3})}}}),[[`__scopeId`,`data-v-e4abc244`]]);export{jt as default};
@@ -1,4 +1,4 @@
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"./DIaZ2PTo2.js";import{t as c}from"./36oeS8_R2.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=s().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(`
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
2
  `);case`a2a.artifact`:return(e.payload.artifact?.parts??[]).map(e=>e.text??``).join(`
3
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 ${s().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 ${s().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 ${s().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 ${s().token}`}});if(o.code!==0||!o.data?.items?.length)return!1;let c=Y(r,o.data.items,r.lastSeq);return c>0&&(this.rings[e]=r),c>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 ${s().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 ${s().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=s(),a=X(),l=Z(),u=m(),p=c(),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};
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};
@@ -0,0 +1 @@
1
+ import{a as e}from"./BU83-NnX.js";import{$ as t,Ht as n,P as r,R as i,S as a,Ut as o,V as s,Vt as c,W as l,b as u,d,dt as f,f as p,h as m,i as h,m as g,nt as _,p as v,pt as y,tt as b,xt as x,y as S}from"./CSkxz2NX.js";import{c as C,f as ee,l as w,s as te}from"./D6uzXueg.js";import{n as ne}from"./DtYHUi5Z.js";import{t as re}from"./BHA40aHa.js";import{n as ie}from"./KZQX7xoM.js";import{t as ae}from"./DZtm4l-P2.js";import{t as T}from"./BDNMzG2s2.js";import{t as E}from"./D0ZBQrN_2.js";import{t as oe}from"./BC9wjTJK2.js";import{t as se}from"./CNs_Ozdc2.js";import{t as ce}from"./DTFCy6h-.js";import{a as le,i as ue,n as de,r as fe,t as pe}from"./DcsCcxp4.js";import{t as me}from"./D8qvkfyY.js";import{t as he}from"./C3J6FYKa.js";import{t as D}from"./CFxtLwjp.js";var O={class:`mono dim`},k={class:`mono ch`},ge=[`title`],_e=[`title`],ve={class:`trend-cell`},ye=[`title`],be=[`y1`,`y2`],xe=[`y1`,`y2`],Se=[`points`],A=[`y1`,`y2`],Ce={class:`mono`},we={class:`mono`},Te=[`title`],Ee=[`value`,`title`],De={value:``},Oe=[`value`],ke=[`title`],j={key:1,class:`run-pill na`},Ae={class:`prod-cell`},M=[`title`],N=[`title`],P={key:1,class:`dim`},je={class:`dev-binds`},Me=[`title`],Ne=[`onClick`],Pe=[`title`],F={value:``},Fe=[`value`,`disabled`],Ie={class:`right`},Le=[`title`],Re=120,I=26,ze=Object.assign(T(a({__name:`DaqNodeRow`,props:{n:{}},setup(t){let n=t,{t:r}=ie(),i=pe(),a=me(),f=he();function _(e){if(!e.lastAt)return!0;let t=e.intervalMs??i.controller.defaultIntervalMs;return Date.now()-Date.parse(e.lastAt)>Math.max(t*4,12e3)}function v(e){return e.enabled?e.lineId?a.lineStateOf(e.lineId).active?!i.controller.running||_(e)?`offline`:e.state:`idle`:`unassigned`:`disabled`}function y(e){let t=v(e);return t===`ok`||t===`warn`||t===`alarm`}function C(e){if(!e.lineId)return null;let t=a.lineStateOf(e.lineId);return!t.active||!t.recipeId?null:a.recipes.find(e=>e.id===t.recipeId)?.daqWindows?.find(t=>t.nodeId===e.id)??null}function ee(e){let t=C(e);return!t||e.value==null?!1:t.min!=null&&e.value<t.min||t.max!=null&&e.value>t.max}function w(e){let t=C(e);return t&&(t.min!=null||t.max!=null)?{min:t.min,max:t.max}:e.warnLow!=null||e.warnHigh!=null?{min:e.warnLow,max:e.warnHigh}:{min:null,max:null}}function te(e){let t=e.filter(Number.isFinite);if(t.length<2)return``;let n=Math.min(...t),r=Math.max(...t)-n||1;return t.map((e,i)=>`${(i/(t.length-1)*Re).toFixed(1)},${(I-(e-n)/r*24-1).toFixed(1)}`).join(` `)}function ne(e,t){if(t==null||!Number.isFinite(t))return null;let n=e.filter(Number.isFinite);if(n.length<2)return null;let r=Math.min(...n,t),i=Math.max(...n,t)-r||1;return Number((I-(t-r)/i*24-1).toFixed(1))}function ae(e){let t=v(e),n=r(`daq.k44c2n065`);if(t===`offline`)return e.lastError?{key:t,label:n,tip:e.lastError}:{key:t,label:n,tip:i.controller.running?r(`daq.k1staled129`,{p0:Math.round(Math.max((e.intervalMs??i.controller.defaultIntervalMs)*4,12e3)/1e3)}):r(`daq.k1gateoff140`)};let a={ok:r(`daq.k41k5c062`),warn:r(`daq.k49z8v063`),alarm:r(`daq.k3xmid064`),offline:n,idle:r(`daq.k3ozyqz117`),disabled:r(`daq.k1disabl130`),unassigned:r(`daq.k3ootr6053`)};if(t===`idle`)return{key:t,label:a.idle,tip:r(`daq.k1idlehin139`)};if((t===`ok`||t===`warn`||t===`alarm`)&&ee(e)){let t=C(e);return{key:`alarm`,label:r(`daq.k1l3pt51104`),tip:r(`daq.k1hrrqa1122`,{p0:t?.min??`-∞`,p1:t?.max??`+∞`,p2:``})}}return{key:t,label:a[t],tip:``}}function T(e){let t=i.templates.find(t=>t.key===le(e));return t?`${t.name} · ${t.ch}`:e||`-`}let oe=e=>e==null?r(`daq.k9vnp9h124`,{p0:i.controller.defaultIntervalMs}):`${e}ms`,se=e=>e==null?r(`daq.k9vnp9h124`,{p0:i.controller.defaultPublishIntervalMs}):e===0?r(`daq.k41mvv078`):`${e}ms`,ce=e=>i.meta.drivers.find(t=>t.kind===e)?.status===`planned`,ue=e=>e.deviceIds??(e.deviceBindingId?[e.deviceBindingId]:[]),de=e=>f.twins.find(t=>t.id===e)?.name??e,fe=d(()=>f.twins.filter(e=>e.kind!==`daq`&&!(e.modelRef??``).startsWith(`daq-`)&&!(e.modelRef??``).startsWith(`dcw-`))),D=d(()=>{let e=n.n,t=w(e),r=e.lineId?a.lineStateOf(e.lineId):null;return{tpl:T(e.templateRef),pill:ae(e),alarm:ee(e),live:y(e),trend:te(e.hist),limMin:ne(e.hist,t.min),limMax:ne(e.hist,t.max),interval:oe(e.intervalMs),publish:se(e.publishIntervalMs),lineActive:!!r?.active,lineProduct:r?.productName??``,lineRecipe:r?.recipeName??``}});async function ze(){let t=n.n,a=!t.enabled;try{await i.patchNode(t.id,{enabled:a}),t.enabled=a,a||(t.state=`offline`),e.success(r(a?`daq.k1nodestart147`:`daq.k1nodestop146`))}catch(t){e.error(E(t))}}async function Be(t){let r=t.target.value;try{await i.patchNode(n.n.id,{lineId:r});let e=n.n;e.lineId=r}catch(t){e.error(E(t))}}async function Ve(t){let r=t.target.value;if(!r)return;let a=n.n;if(!a.deviceIds?.includes(r)){try{await i.setNodeBindings(a.id,[...a.deviceIds??[],r])}catch(t){e.error(E(t))}t.target.value=``}}async function He(t){let r=n.n;try{await i.setNodeBindings(r.id,(r.deviceIds??[]).filter(e=>e!==t))}catch(t){e.error(E(t))}}return(e,n)=>{let r=re;return s(),m(`tr`,{class:c({"row-recipe-alarm":D.value.alarm})},[p(`td`,null,[p(`span`,O,o(t.n.id.slice(0,8)),1),p(`b`,null,o(t.n.name),1),p(`small`,k,o(D.value.tpl),1)]),p(`td`,null,[p(`span`,{class:c([`st-pill`,[D.value.pill.key]]),title:D.value.pill.tip},o(D.value.pill.label),11,ge)]),p(`td`,{class:c([`mono val`,{stale:!D.value.live,"val-alarm":t.n.state===`alarm`||D.value.alarm}]),title:D.value.live?void 0:D.value.pill.tip},[S(o(t.n.value==null?`--`:t.n.value.toFixed(t.n.decimals))+` `,1),p(`small`,null,o(t.n.unit),1)],10,_e),p(`td`,ve,[(s(),m(`svg`,{class:`trend`,viewBox:`0 0 120 26`,preserveAspectRatio:`none`,title:e.$t(`daq.k1trnd002`)},[D.value.limMin==null?g(``,!0):(s(),m(`line`,{key:0,class:`lim`,x1:`0`,y1:D.value.limMin,x2:`120`,y2:D.value.limMin},null,8,be)),D.value.limMax==null?g(``,!0):(s(),m(`line`,{key:1,class:`lim max`,x1:`0`,y1:D.value.limMax,x2:`120`,y2:D.value.limMax},null,8,xe)),D.value.trend?(s(),m(`polyline`,{key:2,class:c([`trace`,{alarm:t.n.state===`alarm`||D.value.alarm}]),points:D.value.trend},null,10,Se)):(s(),m(`line`,{key:3,class:`trace-idle`,x1:`0`,y1:I/2,x2:`120`,y2:I/2},null,8,A))],8,ye))]),p(`td`,Ce,o(D.value.interval),1),p(`td`,we,o(D.value.publish),1),p(`td`,null,[p(`span`,{class:c([`drv-tag`,{planned:ce(t.n.driver)}]),title:ce(t.n.driver)?e.$t(`daq.k1plndrv138`):``},o(t.n.driver),11,Te)]),p(`td`,null,[p(`select`,{class:`line-sel`,value:t.n.lineId,title:e.$t(`daq.k3q23v3010`),onChange:Be},[p(`option`,De,o(e.$t(`daq.k3ootr6053`)),1),(s(!0),m(h,null,l(x(a).lines,e=>(s(),m(`option`,{key:e.id,value:e.id},o(e.name),9,Oe))),128))],40,Ee)]),p(`td`,null,[t.n.lineId?(s(),m(`span`,{key:0,class:c([`run-pill`,{on:D.value.lineActive}]),title:e.$t(`daq.k1runtipc131`)},[n[0]||=p(`span`,{class:`rp-dot`},null,-1),S(` `+o(D.value.lineActive?e.$t(`daq.k3vp67i096`):e.$t(`daq.k3ozyqz117`)),1)],10,ke)):(s(),m(`span`,j,o(e.$t(`daq.k3ootr6053`)),1))]),p(`td`,Ae,[t.n.lineId&&D.value.lineActive?(s(),m(h,{key:0},[p(`b`,{title:e.$t(`daq.k1prdrtip132`)},o(D.value.lineProduct||`--`),9,M),p(`small`,{class:`mono`,title:e.$t(`daq.k1prdrtip132`)},o(D.value.lineRecipe||`--`),9,N)],64)):(s(),m(`span`,P,`--`))]),p(`td`,null,[p(`div`,je,[(s(!0),m(h,null,l(ue(t.n),t=>(s(),m(`span`,{key:t,class:`dev-bind-chip`,title:e.$t(`daq.k2bindtip137`)},[S(o(de(t))+` `,1),p(`span`,{class:`dev-unbind`,title:`unbind`,onClick:e=>He(t)},`✕`,8,Ne)],8,Me))),128)),p(`select`,{class:`line-sel dev-add`,value:``,title:e.$t(`daq.k2bindtip137`),onChange:Ve},[p(`option`,F,o(e.$t(`daq.k3own4q056`)),1),(s(!0),m(h,null,l(fe.value,e=>(s(),m(`option`,{key:e.id,value:e.id,disabled:(t.n.deviceIds??[]).includes(e.id)},o(de(e.id)),9,Fe))),128))],40,Pe)])]),p(`td`,Ie,[p(`button`,{class:c([`node-toggle`,{off:!t.n.enabled}]),title:t.n.enabled?e.$t(`daq.k1nodestop146`):e.$t(`daq.k1nodestart147`),onClick:ze},[p(`span`,{class:c(t.n.enabled?`i-tabler-player-pause`:`i-tabler-player-play`)},null,2),S(` `+o(t.n.enabled?e.$t(`daq.k1nodestop146`):e.$t(`daq.k1nodestart147`)),1)],10,Le),u(r,{class:`console-link`,to:`/daq/${t.n.id}`},{default:b(()=>[n[1]||=p(`span`,{class:`i-tabler-dashboard`},null,-1),S(` `+o(e.$t(`daq.k3o3jg2074`)),1)]),_:1},8,[`to`])])],2)}}}),[[`__scopeId`,`data-v-4b6f87e1`]]),{__name:`WorkshopDaqNodeRow`}),Be={class:`page`},Ve={class:`aw-page-head`},He={class:`sub`},Ue={class:`badges mono`},We=[`title`],Ge=[`title`],Ke={class:`txt`},qe={class:`mono`},Je={key:1,class:`infra-banner`},Ye={class:`txt`},Xe={key:2,class:`infra-banner`},Ze={class:`txt`},Qe=[`disabled`],$e={key:3,class:`alarm-bar`},et={class:`bar-label`},tt={class:`mono`},nt={class:`alarm-scroll`},rt=[`title`],it={class:`mono dim`},at={class:`mono`},ot={key:0,class:`esc mono`},st=[`onClick`],ct={class:`aw-tile ctrl-card`},lt={class:`ctrl-row`},ut={class:`ctrl-left`},dt=[`title`],ft={class:`cycle mono`},pt=[`title`],mt={class:`ctrl-right`},ht={class:`ctrl-metrics mono`},gt=[`title`],_t=[`title`],vt=[`title`],yt=[`title`],bt={class:`line-strip`},xt={class:`strip-label`},St={class:`mono`},Ct={class:`strip-scroll`},wt={key:0,class:`lp-run`},Tt={key:1,class:`lp-idle`},Et={class:`lp-idle`},Dt={class:`modal`},Ot={class:`m-title`},kt={class:`seg-row`},At={class:`f-grid`},jt={class:`f`},Mt=[`value`],Nt={class:`f`},Pt=[`placeholder`],Ft={key:0,class:`f`},It=[`placeholder`],Lt={class:`f-grid`},Rt={class:`f`},zt=[`value`],Bt={key:0,class:`f-grid driver-form`},Vt={key:0},Ht=[`onUpdate:modelValue`],Ut=[`value`],Wt=[`onUpdate:modelValue`,`type`,`placeholder`],Gt={key:2,class:`hint`},Kt={class:`test-row`},qt=[`disabled`],Jt={key:1,class:`m-err`},Yt={class:`m-actions`},Xt=[`disabled`,`title`],Zt={class:`modal`},Qt={class:`m-title`},$t={class:`sec-label`},en={class:`tpl-table`},tn={class:`mono dim`},nn={class:`mono range`},rn={class:`right actions`},an=[`onClick`],on=[`onClick`],sn={key:0},cn={colspan:`3`,class:`empty`},ln={class:`sec-label`},un={class:`f-grid`},dn={class:`f`},fn=[`placeholder`],pn={class:`f`},mn={class:`f`},hn=[`placeholder`],gn={class:`f`},_n=[`placeholder`],vn={class:`f`},yn={class:`f`},bn={class:`f`},xn={class:`f`},Sn=[`value`],Cn={class:`f`},wn={class:`hint`},Tn={class:`f`},En={class:`hint`},Dn={key:0,class:`m-err`},On={class:`m-actions`},kn=[`disabled`],An={class:`sec-label`},jn={class:`tpl-table`},Mn={class:`mono dim`},Nn={class:`mono range`},Pn={class:`right actions`},Fn=[`onClick`],In={class:`aw-tile opt-card`},Ln={class:`opt-count mono`},Rn={class:`opt-filters`},zn={value:``},Bn=[`value`],Vn={value:``},Hn=[`value`],Un={key:0,class:`opt-empty`},Wn={class:`opt-list`},Gn={class:`opt-line1`},Kn={class:`opt-node`},qn={class:`mono opt-params`},Jn={class:`mono opt-time`},Yn=[`disabled`,`onClick`],Xn=[`onClick`],Zn={class:`opt-line2 mono`},Qn={key:1,class:`opt-open-hint`},$n={key:2,class:`opt-agg`},er={key:3,class:`opt-agg`},tr={key:0,class:`opt-series`},nr={class:`opt-spark`,viewBox:`0 0 240 36`,preserveAspectRatio:`none`},rr=[`points`],ir={class:`mono`},ar={key:0,class:`opt-empty`},or={class:`aw-tile table-card`},sr={class:`tbl-toolbar`},cr={class:`filters`},lr={class:`flt`},ur={value:``},dr=[`value`],fr={value:`none`},pr={class:`flt`},mr={value:``},hr=[`value`],gr={value:`none`},_r=[`title`],vr={value:``},yr={value:`on`},br={value:`off`},xr={class:`flt`},Sr={value:``},Cr={value:`ok`},wr={value:`warn`},Tr={value:`alarm`},Er={value:`offline`},Dr={class:`flt`},Or={value:``},kr=[`value`],Ar={class:`flt`},jr={value:``},Mr=[`value`],Nr=[`title`],Pr={value:``},Fr={value:`live`},Ir={value:`hour`},Lr={value:`day`},Rr={value:`old`},zr={value:`never`},Br={class:`flt`},Vr=[`placeholder`],Hr={class:`count mono`},Ur={class:`ops-panels`},Wr={class:`panel-head`},Gr={class:`panel-body`},Kr={key:0,class:`panel-empty`},qr={class:`mono dim`},Jr={class:`mono`},Yr={key:0,class:`esc mono`},Xr=[`onClick`],Zr={class:`ops-panel event-panel`},Qr={class:`panel-head`},$r={class:`panel-body`},ei={key:0,class:`panel-empty`},ti={class:`mono dim t`},ni=[`title`],ri=[`title`],ii=[`title`],ai={class:`right`},oi={key:0,class:`vs-pad`,"aria-hidden":`true`},si={key:1,class:`vs-pad`,"aria-hidden":`true`},ci={key:2},li={colspan:`11`},ui={class:`pane-empty`,style:{"min-height":`120px`}},di={class:`pe-sub`},fi={key:3},pi={colspan:`11`},mi={class:`pane-empty`,style:{"min-height":`90px`}},hi={class:`pe-sub`},gi={key:6,class:`err`},_i=42,vi=8,yi=T(a({__name:`index`,setup(a){let{t:T}=ie();se({layout:`default`}),ne({title:()=>T(`titles.daq`)});let O=pe(),k=me(),ge=oe(),_e=d(()=>k.lines.some(e=>k.lineStateOf(e.id).active)),ve=D();function ye(e){return{write:T(`logs.kind.write`),manual:T(`logs.kind.manual`),alarm:T(`logs.kind.alarm`),line:T(`logs.kind.line`),recipe:T(`logs.kind.recipe`),rollback:T(`logs.kind.rollback`),daq:T(`logs.kind.daq`),system:T(`logs.kind.system`)}[e]??(e||T(`logs.kind.system`))}function be(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}`:``}async function xe(t){try{await O.ackAlarm(t),e.success(T(`daq.k1acked144`))}catch(t){e.error(E(t))}}let Se=null;i(()=>{ge.ensureConnected(),Se=O.ensureWsFeed(),ve.ensureLive(),O.load(),O.fetchAlarms(),k.load(),ki.load(),k.loadOptimizations(),ce(()=>{O.load(),O.fetchAlarms()},5e3,{bgMs:3e4}),ce(()=>{k.load()},15e3,{bgMs:6e4})}),r(()=>{Se?.()});let A=f({lineId:``,deviceId:``,template:``,driver:``,lineRun:``,state:``,time:``,search:``}),Ce=d(()=>!!(A.lineId||A.deviceId||A.template||A.driver||A.lineRun||A.state||A.time||A.search.trim()));function we(){A.lineId=``,A.deviceId=``,A.template=``,A.driver=``,A.lineRun=``,A.state=``,A.time=``,A.search=``}let Te=d(()=>{let e=new Map;for(let t of O.nodes)e.set(t.templateRef,(e.get(t.templateRef)??0)+1);return[...e.entries()].map(([e,t])=>({ref:e,count:t,label:Vi(e)}))}),Ee=d(()=>{let e=new Map;for(let t of O.nodes)e.set(t.driver,(e.get(t.driver)??0)+1);return[...e.entries()].map(([e,t])=>({kind:e,count:t,label:O.meta.drivers.find(t=>t.kind===e)?.label??e}))});function De(e){if(!e.lastAt)return`never`;let t=Date.now()-Date.parse(e.lastAt);return t<=3e5?`live`:t<=36e5?`hour`:t<=864e5?`day`:`old`}function Oe(e){return!A.time||De(e)===A.time}function ke(e){let t=A.search.trim().toLowerCase();return!t||e.name.toLowerCase().includes(t)||e.id.toLowerCase().includes(t)}let j=y(!1),Ae=y(!1),M=y(``),N=y(``),P=y({}),je=y(``),Me=d(()=>k.recipes.filter(e=>!M.value||e.lineId===M.value));function Ne(e){return{open:`daq.k1optst001`,judged:`daq.k1optst008`,"judged-keep":`daq.k1optst002`,"rolled-back":`daq.k1optst003`,superseded:`daq.k1optst004`,"superseded-manual":`daq.k1optst005`,"closed-line-stop":`daq.k1optst006`,failed:`daq.k1optst007`}[e]??`daq.k1optst001`}async function Pe(){j.value=!j.value,j.value&&(Ae.value=!0,await F())}async function F(){await k.loadOptimizations({lineId:M.value||void 0,recipeId:N.value||void 0})}function Fe(){N.value&&!Me.value.some(e=>e.id===N.value)&&(N.value=``),F()}async function Ie(e){je.value=e;try{let t=await k.optimizationSeries(e);P.value={...P.value,[e]:t}}finally{je.value=``}}function Le(e,t=240,n=36){let r=e.map(e=>e.value??e.avg??0).filter(Number.isFinite);if(r.length<2)return``;let i=Math.min(...r),a=Math.max(...r)-i||1;return r.map((e,o)=>`${o/(r.length-1)*t},${n-(e-i)/a*n}`).join(` `)}async function Re(e){await k.rollbackOptimization(e),await F()}function I(e){return e==null?`--`:String(Number(e.toFixed(2)))}let yi=d(()=>{let e=new Map;for(let t of O.nodes)for(let n of t.deviceIds??(t.deviceBindingId?[t.deviceBindingId]:[]))e.set(n,(e.get(n)??0)+1);return ki.twins.filter(t=>e.has(t.id)).map(t=>({id:t.id,name:Ai.get(t.id)??t.name,count:e.get(t.id)}))});function bi(e){if(!A.lineRun)return!0;let t=!!e.lineId&&k.lineStateOf(e.lineId).active;return A.lineRun===`on`?t:!t}let L=d(()=>k.lines.find(e=>e.id===A.lineId)??null),R=d(()=>L.value?k.lineStateOf(L.value.id):null);function xi(e){if(!e.lastAt)return!0;let t=e.intervalMs??O.controller.defaultIntervalMs;return Date.now()-Date.parse(e.lastAt)>Math.max(t*4,12e3)}function Si(e){return e.enabled?e.lineId?k.lineStateOf(e.lineId).active?!O.controller.running||xi(e)?`offline`:e.state:`idle`:`unassigned`:`disabled`}let z=d(()=>O.nodes.filter(e=>{if(A.lineId&&(A.lineId===`none`?e.lineId:(e.lineId??``)!==A.lineId))return!1;let t=e.deviceIds??(e.deviceBindingId?[e.deviceBindingId]:[]);return!(A.deviceId&&(A.deviceId===`none`?t.length>0:!t.includes(A.deviceId))||A.template&&e.templateRef!==A.template||A.driver&&e.driver!==A.driver||!bi(e)||A.state&&Si(e)!==A.state||!Oe(e)||!ke(e))})),Ci=y(null),B=y(0),V=y(60),wi=d(()=>{let e=z.value,t=Math.min(B.value,Math.max(0,e.length-1));return e.slice(t,V.value)}),Ti=d(()=>B.value*_i),Ei=d(()=>Math.max(0,(z.value.length-V.value)*_i)),Di=0;function Oi(){let e=Ci.value;if(!e)return;let t=z.value.length,n=window.innerHeight||800,r=e.getBoundingClientRect().top+window.scrollY+40,i=Math.floor((window.scrollY-r)/_i),a=Math.ceil(n/_i)+16,o=Math.max(0,Math.min(i-vi,Math.max(0,t-1))),s=Math.max(o,Math.min(t,o+a));o!==B.value&&(B.value=o),s!==V.value&&(V.value=s)}function H(){Di||=requestAnimationFrame(()=>{Di=0,Oi()})}i(()=>{Oi(),window.addEventListener(`scroll`,H,{passive:!0}),window.addEventListener(`resize`,H,{passive:!0})}),r(()=>{window.removeEventListener(`scroll`,H),window.removeEventListener(`resize`,H),Di&&cancelAnimationFrame(Di)}),t(()=>z.value.length,()=>{B.value=0,V.value=Math.min(z.value.length,V.value||60),H()});let ki=he(),Ai=new Map;t(()=>ki.twins,e=>{for(let t of e)Ai.set(t.id,t.name)},{immediate:!0,deep:!0});let U=y(!1),W=y(`mock`),G=y(fe[0]?.key??`temp-tc`),K=y(`modbus-tcp`),q=y(``),ji=y(null),J=y({}),Mi=f({kind:`none`,scale:1,offset:0}),Ni=y(!1),Y=y(null),Pi=y(!1),Fi=y(``),Ii=d(()=>de.find(e=>e.kind===K.value)),Li=d(()=>Ii.value?.configFields??[]),Ri=e=>O.meta.drivers.find(t=>t.kind===e)?.status!==`planned`&&O.meta.driverAvailable?.[e]!==!1;t(K,()=>{let e={};for(let t of Li.value)t.default!==void 0&&(e[t.key]=t.default);J.value=e,Y.value=null},{immediate:!0});async function zi(){Ni.value=!0,Y.value=null;try{Y.value=await O.testDriver(K.value,J.value)}catch(e){Y.value={ok:!1,message:E(e)}}finally{Ni.value=!1}}async function Bi(){Pi.value=!0,Fi.value=``;try{let e=Mi.kind===`linear`?{kind:`linear`,scale:Number(Mi.scale),offset:Number(Mi.offset)}:void 0;if(W.value===`mock`)await O.createFromTemplate(`daq-${G.value}`,{name:q.value?{name:q.value}.name:void 0,transform:e});else{for(let e of Li.value)if(e.required&&!J.value[e.key]&&J.value[e.key]!==0)throw Error(T(`daq.kyuadl0125`,{p0:e.label}));let t=O.templates.find(e=>e.key===G.value);await O.createFromTemplate(`daq-${G.value}`,{name:q.value||void 0,driver:K.value,driverConfig:{...J.value},transform:e,intervalMs:ji.value,unit:t?.unit,min:t?.min,max:t?.max,decimals:t?.decimals})}U.value=!1,q.value=``,Y.value=null}catch(e){Fi.value=E(e)}finally{Pi.value=!1}}function Vi(e){let t=O.templates.find(t=>t.key===le(e));return t?`${t.name} · ${t.ch}`:e||`-`}let Hi=y(!1),X=y(null),Ui=y(!1),Z=y(``),Q=y(``),$=f({name:``,ch:``,code:``,unit:``,min:0,max:100,base:50,amp:2,decimals:2,icon:`thermo`}),Wi={thermo:T(`daq.k422b8079`),pressure:T(`daq.k3x6ff080`),tension:T(`daq.k3z9xc081`),encoder:T(`daq.k3subk4082`),camera:T(`daq.k47atw083`),gateway:T(`daq.kz7yhbj084`)},Gi=d(()=>O.templates.filter(e=>!e.builtin)),Ki=d(()=>O.templates.filter(e=>e.builtin));function qi(e,t=!1){$.name=t?T(`daq.k2hbo3c126`,{p0:e.name}):e.name,$.ch=e.ch,$.code=e.code,$.unit=e.unit,$.min=e.min,$.max=e.max,$.base=e.base,$.amp=e.amp,$.decimals=e.decimals,$.icon=e.icon}function Ji(){X.value=null,Z.value=``,Q.value=``,qi({key:``,name:``,code:``,ch:``,unit:``,base:50,amp:2,min:0,max:100,decimals:2,icon:`thermo`})}function Yi(e){X.value=e.key,Z.value=``,qi(e)}function Xi(e){X.value=null,Z.value=``,qi(e,!0)}async function Zi(){Ui.value=!0,Z.value=``;try{let e=e=>{let t=Number(e);return e===``||e==null||!Number.isFinite(t)?void 0:t},t={name:$.name.trim(),ch:$.ch.trim()||void 0,code:$.code.trim()||void 0,unit:$.unit.trim(),min:e($.min),max:e($.max),base:e($.base),amp:e($.amp),decimals:e($.decimals),icon:$.icon};X.value?await O.updateTemplate(X.value,t):await O.createTemplate(t),Ji()}catch(e){Z.value=E(e)}finally{Ui.value=!1}}async function Qi(e){if(Q.value!==e.key){Q.value=e.key;return}try{await O.removeTemplate(e.key)}catch(e){Z.value=E(e)}finally{Q.value=``}}let $i=y(!1);async function ea(){$i.value=!0;try{await O.reconnectInfra()}catch{}finally{$i.value=!1}}return(e,t)=>{let r=re,i=ze,a=ae;return s(),m(`div`,Be,[p(`div`,Ve,[p(`div`,null,[t[36]||=p(`p`,{class:`aw-kicker`},` AGENTWORKSHOP / DAQ CONSOLE `,-1),p(`h1`,null,o(e.$t(`daq.k1emg364011`)),1),p(`p`,He,o(e.$t(`daq.k1wmg2bz012`)),1)]),p(`div`,Ue,[p(`span`,{class:`badge`,title:e.$t(`daq.k1tsdbtip133`)},`TSDB · `+o(x(O).meta.tsdb),9,We),p(`span`,{class:`badge`,title:e.$t(`daq.k1queuet134`)},`QUEUE · `+o(x(O).meta.queue),9,Ge)])]),x(O).loaded&&L.value&&R.value?(s(),m(`div`,{key:0,class:c([`infra-banner`,{good:R.value.active}])},[p(`span`,{class:c(R.value.active?`i-tabler-circle-check`:`i-tabler-info-circle`)},null,2),p(`span`,Ke,[R.value.active?(s(),m(h,{key:0},[S(o(e.$t(`daq.k3ktxbr085`))+o(L.value.name)+`」`+o(e.$t(`daq.k15lvw0o105`)),1),p(`b`,null,o(R.value.productName),1),t[37]||=S(` · Recipe:`,-1),p(`b`,null,o(R.value.recipeName),1),p(`small`,qe,o(e.$t(`daq.k400lb086`))+` `+o(R.value.runId?.slice(0,8))+` · `+o(e.$t(`daq.k3zkt2106`))+` `+o(R.value.startedAt?.slice(11,19))+` `+o(e.$t(`daq.k69vag8108`))+` `+o(R.value.taggedSamples)+` `+o(e.$t(`daq.k4118o092`)),1)],64)):(s(),m(h,{key:1},[S(o(e.$t(`daq.k3ktxbr085`))+o(L.value.name)+`」`+o(e.$t(`daq.k12uge2o107`)),1)],64))]),u(r,{class:`pill-btn`,to:`/dcw/${L.value.id}`},{default:b(()=>[S(o(R.value.active?e.$t(`daq.k1ukoy0v093`):e.$t(`daq.k1cg78i8109`)),1)]),_:1},8,[`to`])],2)):x(O).loaded&&!_e.value?(s(),m(`div`,Je,[t[38]||=p(`span`,{class:`i-tabler-info-circle`},null,-1),p(`span`,Ye,[S(o(e.$t(`daq.k19onw5w013`)),1),u(r,{to:`/dcw`},{default:b(()=>[S(o(e.$t(`daq.k1b2tk5c014`)),1)]),_:1}),S(o(e.$t(`daq.k1u9wnlg015`)),1)])])):g(``,!0),x(O).meta.infra?.degraded?(s(),m(`div`,Xe,[t[39]||=p(`span`,{class:`i-tabler-alert-triangle`},null,-1),p(`span`,Ze,o(x(O).meta.infra.warning),1),p(`button`,{class:`pill-btn`,disabled:$i.value,onClick:ea},o($i.value?e.$t(`daq.k1ld43ur094`):e.$t(`daq.kzg9805110`)),9,Qe)])):g(``,!0),x(O).alarms.length?(s(),m(`div`,$e,[p(`span`,et,[t[40]||=p(`span`,{class:`i-tabler-bell-ringing bell`},null,-1),S(` `+o(e.$t(`daq.k1alarm141`))+` `,1),p(`b`,tt,o(x(O).alarms.length),1)]),p(`div`,nt,[(s(!0),m(h,null,l(x(O).alarms,t=>(s(),m(`span`,{key:t.id,class:`alarm-item`,title:e.$t(`daq.k1esc143`,{p0:t.escalation})},[p(`b`,null,o(t.nodeName),1),p(`span`,it,o(t.metric),1),p(`span`,at,o(t.value)+` `+o(t.rule===`lt-min`?`<`:`>`)+` `+o(t.threshold),1),t.escalation>0?(s(),m(`small`,ot,`+`+o(t.escalation),1)):g(``,!0),p(`button`,{class:`mini-btn ack`,onClick:e=>xe(t.id)},o(e.$t(`daq.k1ack142`)),9,st)],8,rt))),128))])])):g(``,!0),p(`section`,ct,[p(`div`,lt,[p(`div`,ut,[p(`button`,{class:c([`aw-pill`,{running:x(O).controller.running}]),title:e.$t(`daq.k1snap145`),onClick:t[0]||=e=>x(O).controllerAction(x(O).controller.running?`pause`:`resume`)},[p(`span`,{class:c(x(O).controller.running?`i-tabler-player-pause`:`i-tabler-player-play`)},null,2),S(` `+o(x(O).controller.running?e.$t(`daq.kpui00095`):e.$t(`daq.knxpdpt111`)),1)],10,dt),p(`label`,ft,[S(o(e.$t(`daq.k1ifahxj016`))+` `,1),_(p(`input`,{"onUpdate:modelValue":t[1]||=e=>x(O).controller.defaultIntervalMs=e,type:`number`,min:`200`,max:`60000`,step:`100`,onChange:t[2]||=e=>x(O).controllerAction(`config`,x(O).controller.defaultIntervalMs)},null,544),[[w,x(O).controller.defaultIntervalMs,void 0,{number:!0}]]),t[41]||=S(`ms `,-1)]),p(`label`,{class:`cycle mono`,title:e.$t(`daq.k1e8lcoo001`)},[S(o(e.$t(`daq.k1if98n0017`))+` `,1),_(p(`input`,{"onUpdate:modelValue":t[3]||=e=>x(O).controller.defaultPublishIntervalMs=e,type:`number`,min:`0`,max:`60000`,step:`100`,onChange:t[4]||=e=>x(O).controllerAction(`config`,x(O).controller.defaultIntervalMs,x(O).controller.defaultPublishIntervalMs)},null,544),[[w,x(O).controller.defaultPublishIntervalMs,void 0,{number:!0}]]),t[42]||=S(`ms `,-1)],8,pt)]),p(`div`,mt,[p(`span`,ht,[p(`span`,null,o(e.$t(`daq.k45uio067`))+` `+o(x(O).controller.nodesOnline)+`/`+o(x(O).controller.nodesTotal),1),t[43]||=p(`span`,{class:`sep`},`·`,-1),p(`span`,{title:e.$t(`daq.k1yztsu4002`)},o(e.$t(`daq.k3xagp087`))+` `+o(x(O).meta.produced),9,gt),t[44]||=p(`span`,{class:`sep`},`·`,-1),p(`span`,{title:e.$t(`daq.ko09iha003`)},o(e.$t(`daq.k427eu088`))+` `+o(x(O).meta.consumed),9,_t),t[45]||=p(`span`,{class:`sep`},`·`,-1),p(`span`,{class:c({warn:(x(O).meta.dropped??0)>0}),title:e.$t(`daq.k1droptip135`)},o(e.$t(`daq.k3w8go089`))+` `+o(x(O).meta.dropped),11,vt),t[46]||=p(`span`,{class:`sep`},`·`,-1),p(`span`,{title:e.$t(`daq.kj1jbmw004`)},o(e.$t(`daq.k3wusd090`))+` `+o(x(O).meta.samplesStored),9,yt)]),p(`button`,{class:`aw-pill outline add-btn`,onClick:t[5]||=e=>{Hi.value=!0,Ji()}},[t[47]||=p(`span`,{class:`i-tabler-adjustments-horizontal`},null,-1),S(` `+o(e.$t(`daq.k1f5cv0s018`)),1)]),p(`button`,{class:`aw-pill add-btn`,onClick:t[6]||=e=>U.value=!0},[t[48]||=p(`span`,{class:`i-tabler-plus`},null,-1),S(` `+o(e.$t(`daq.k1fn0ukb019`)),1)])])]),p(`div`,bt,[p(`span`,xt,[t[49]||=p(`span`,{class:`i-tabler-route`},null,-1),S(` `+o(e.$t(`daq.k1b2o3b6020`)),1),p(`small`,St,o(x(k).lines.length),1)]),p(`div`,Ct,[(s(!0),m(h,null,l(x(k).lines,i=>(s(),v(r,{key:i.id,class:c([`line-pill`,{on:x(k).lineStateOf(i.id).active}]),style:n({"--lc":i.color}),to:`/dcw/${i.id}`,title:x(k).lineStateOf(i.id).active?e.$t(`daq.k3v957u120`,{p0:i.name,p1:x(k).lineStateOf(i.id).productName,p2:x(k).lineStateOf(i.id).recipeName}):e.$t(`daq.k1x7jnru121`,{p0:i.name})},{default:b(()=>[t[50]||=p(`span`,{class:`lp-dot`},null,-1),p(`b`,null,o(i.name),1),x(k).lineStateOf(i.id).active?(s(),m(`small`,wt,o(x(k).lineStateOf(i.id).recipeName??e.$t(`daq.k3vp67i096`)),1)):(s(),m(`small`,Tt,o(e.$t(`daq.k3zgkk021`)),1))]),_:2},1032,[`class`,`style`,`to`,`title`]))),128)),x(k).lines.length===0?(s(),v(r,{key:0,class:`line-pill`,to:`/dcw`},{default:b(()=>[t[51]||=p(`span`,{class:`lp-dot`},null,-1),p(`b`,null,o(e.$t(`daq.k1el12b1022`)),1),p(`small`,Et,o(e.$t(`daq.k8jxxe8023`)),1)]),_:1})):g(``,!0)])])]),U.value?(s(),m(`div`,{key:4,class:`modal-mask`,onClick:t[14]||=ee(e=>U.value=!1,[`self`])},[p(`div`,Dt,[p(`h3`,Ot,o(e.$t(`daq.k19rioqa024`)),1),p(`div`,kt,[p(`button`,{class:c([`seg`,{on:W.value===`mock`}]),onClick:t[7]||=e=>W.value=`mock`},o(e.$t(`daq.k1p5c1un025`)),3),p(`button`,{class:c([`seg`,{on:W.value===`real`}]),onClick:t[8]||=e=>W.value=`real`},o(e.$t(`daq.k1cbcp3o026`)),3)]),p(`div`,At,[p(`label`,jt,[p(`span`,null,o(e.$t(`daq.k1fsgerc027`)),1),_(p(`select`,{"onUpdate:modelValue":t[9]||=e=>G.value=e,class:`inp`},[(s(!0),m(h,null,l(x(O).templates,t=>(s(),m(`option`,{key:t.key,value:t.key},o(t.name)+` · `+o(t.ch)+`(`+o(t.min)+`~`+o(t.max)+` `+o(t.unit)+`)`+o(t.builtin?``:e.$t(`daq.kr45rk9097`)),9,Mt))),128))],512),[[C,G.value]])]),p(`label`,Nt,[p(`span`,null,o(e.$t(`daq.k1ce2k1y028`)),1),_(p(`input`,{"onUpdate:modelValue":t[10]||=e=>q.value=e,class:`inp`,placeholder:e.$t(`daq.kgpxzy3005`)},null,8,Pt),[[w,q.value]])]),W.value===`real`?(s(),m(`label`,Ft,[p(`span`,null,o(e.$t(`daq.k13mfsfc029`)),1),_(p(`input`,{"onUpdate:modelValue":t[11]||=e=>ji.value=e,type:`number`,min:`1000`,max:`60000`,step:`500`,class:`inp`,placeholder:e.$t(`daq.k1eg1000a136`)},null,8,It),[[w,ji.value,void 0,{number:!0}]])])):g(``,!0)]),W.value===`real`?(s(),m(h,{key:0},[p(`div`,Lt,[p(`label`,Rt,[p(`span`,null,o(e.$t(`daq.k1kt87rx030`)),1),_(p(`select`,{"onUpdate:modelValue":t[12]||=e=>K.value=e,class:`inp`},[(s(!0),m(h,null,l(x(de).filter(e=>e.status!==`planned`),t=>(s(),m(`option`,{key:t.kind,value:t.kind},o(t.label)+o(Ri(t.kind)?``:e.$t(`daq.kjbqphp098`)),9,zt))),128))],512),[[C,K.value]])])]),Li.value.length?(s(),m(`div`,Bt,[(s(!0),m(h,null,l(Li.value,e=>(s(),m(`label`,{key:e.key,class:`f`},[p(`span`,null,[S(o(e.label),1),e.required?(s(),m(`em`,Vt,`*`)):g(``,!0)]),e.type===`select`?_((s(),m(`select`,{key:0,"onUpdate:modelValue":t=>J.value[e.key]=t,class:`inp`},[(s(!0),m(h,null,l(e.options,e=>(s(),m(`option`,{key:e.value,value:e.value},o(e.label),9,Ut))),128))],8,Ht)),[[C,J.value[e.key]]]):_((s(),m(`input`,{key:1,"onUpdate:modelValue":t=>J.value[e.key]=t,type:e.type===`number`?`number`:`text`,placeholder:e.placeholder,class:`inp`},null,8,Wt)),[[te,J.value[e.key]]]),e.hint?(s(),m(`small`,Gt,o(e.hint),1)):g(``,!0)]))),128))])):g(``,!0),p(`div`,Kt,[p(`button`,{class:`pill-btn`,disabled:Ni.value,onClick:zi},o(Ni.value?e.$t(`daq.k1fsh720099`):e.$t(`daq.k1fstglk112`)),9,qt),Y.value?(s(),m(`span`,{key:0,class:c([`test-result`,Y.value.ok?`ok`:`bad`])},[S(o(Y.value.ok?`✓`:`✗`)+` `+o(Y.value.message),1),Y.value.latencyMs==null?g(``,!0):(s(),m(h,{key:0},[S(`(`+o(Y.value.latencyMs)+`ms)`,1)],64))],2)):g(``,!0)])],64)):g(``,!0),Fi.value?(s(),m(`p`,Jt,o(Fi.value),1)):g(``,!0),p(`div`,Yt,[p(`button`,{class:`aw-pill outline`,onClick:t[13]||=e=>U.value=!1},o(e.$t(`daq.k3xdnn031`)),1),p(`button`,{class:`aw-pill`,disabled:Pi.value||W.value===`real`&&Y.value!=null&&!Y.value.ok,title:W.value===`real`&&!(Y.value&&Y.value.ok)?e.$t(`daq.k1needtst137`):``,onClick:Bi},o(Pi.value?e.$t(`daq.k1bg4759100`):W.value===`real`?e.$t(`daq.k7pxjxo113`):e.$t(`daq.k1bge46t118`)),9,Xt)])])])):g(``,!0),Hi.value?(s(),m(`div`,{key:5,class:`modal-mask`,onClick:t[25]||=ee(e=>Hi.value=!1,[`self`])},[p(`div`,Zt,[p(`h3`,Qt,o(e.$t(`daq.k11mv96s032`)),1),p(`p`,$t,o(e.$t(`daq.ktji4ky033`)),1),p(`table`,en,[p(`tbody`,null,[(s(!0),m(h,null,l(Gi.value,t=>(s(),m(`tr`,{key:t.key},[p(`td`,null,[p(`b`,null,o(t.name),1),p(`small`,tn,o(t.code),1)]),p(`td`,nn,o(t.min)+`~`+o(t.max)+` `+o(t.unit)+` · `+o(t.decimals)+` `+o(e.$t(`daq.k48oi091`)),1),p(`td`,rn,[p(`button`,{class:`mini-btn`,onClick:e=>Yi(t)},o(e.$t(`daq.k45eb0034`)),9,an),p(`button`,{class:`mini-btn danger`,onClick:e=>Qi(t)},o(Q.value===t.key?e.$t(`daq.k1hhheu3101`):e.$t(`daq.k3xakp114`)),9,on)])]))),128)),Gi.value.length?g(``,!0):(s(),m(`tr`,sn,[p(`td`,cn,o(e.$t(`daq.kztvzbo035`)),1)]))])]),p(`p`,ln,o(X.value?e.$t(`daq.k1iiph0s102`):e.$t(`daq.k1efixrj115`)),1),p(`div`,un,[p(`label`,dn,[p(`span`,null,[S(o(e.$t(`daq.k3xhia036`)),1),t[52]||=p(`em`,null,`*`,-1)]),_(p(`input`,{"onUpdate:modelValue":t[15]||=e=>x($).name=e,class:`inp`,placeholder:e.$t(`daq.k5opd2t006`)},null,8,fn),[[w,x($).name]])]),p(`label`,pn,[p(`span`,null,[S(o(e.$t(`daq.k3x4ef037`)),1),t[53]||=p(`em`,null,`*`,-1)]),_(p(`input`,{"onUpdate:modelValue":t[16]||=e=>x($).unit=e,class:`inp`,placeholder:`如 %RH`},null,512),[[w,x($).unit]])]),p(`label`,mn,[p(`span`,null,o(e.$t(`daq.k1l477m0038`)),1),_(p(`input`,{"onUpdate:modelValue":t[17]||=e=>x($).ch=e,class:`inp`,placeholder:e.$t(`daq.kk8o4tl007`)},null,8,hn),[[w,x($).ch]])]),p(`label`,gn,[p(`span`,null,o(e.$t(`daq.k1ayxrqb039`)),1),_(p(`input`,{"onUpdate:modelValue":t[18]||=e=>x($).code=e,class:`inp`,placeholder:e.$t(`daq.kzn3l7l008`)},null,8,_n),[[w,x($).code]])]),p(`label`,vn,[p(`span`,null,[S(o(e.$t(`daq.k1l9jv5m040`)),1),t[54]||=p(`em`,null,`*`,-1)]),_(p(`input`,{"onUpdate:modelValue":t[19]||=e=>x($).min=e,type:`number`,class:`inp`},null,512),[[w,x($).min,void 0,{number:!0}]])]),p(`label`,yn,[p(`span`,null,[S(o(e.$t(`daq.k1l9jv4p041`)),1),t[55]||=p(`em`,null,`*`,-1)]),_(p(`input`,{"onUpdate:modelValue":t[20]||=e=>x($).max=e,type:`number`,class:`inp`},null,512),[[w,x($).max,void 0,{number:!0}]])]),p(`label`,bn,[p(`span`,null,o(e.$t(`daq.k3mxmcx042`)),1),_(p(`input`,{"onUpdate:modelValue":t[21]||=e=>x($).decimals=e,type:`number`,min:`0`,max:`4`,class:`inp`},null,512),[[w,x($).decimals,void 0,{number:!0}]])]),p(`label`,xn,[p(`span`,null,o(e.$t(`daq.k3xx56043`)),1),_(p(`select`,{"onUpdate:modelValue":t[22]||=e=>x($).icon=e,class:`inp`},[(s(!0),m(h,null,l(x(ue),e=>(s(),m(`option`,{key:e,value:e},o(Wi[e]),9,Sn))),128))],512),[[C,x($).icon]])]),p(`label`,Cn,[p(`span`,null,o(e.$t(`daq.k1f4eknv044`)),1),_(p(`input`,{"onUpdate:modelValue":t[23]||=e=>x($).base=e,type:`number`,class:`inp`},null,512),[[w,x($).base,void 0,{number:!0}]]),p(`small`,wn,o(e.$t(`daq.kytd15s045`)),1)]),p(`label`,Tn,[p(`span`,null,o(e.$t(`daq.k1f4ifpo046`)),1),_(p(`input`,{"onUpdate:modelValue":t[24]||=e=>x($).amp=e,type:`number`,class:`inp`},null,512),[[w,x($).amp,void 0,{number:!0}]]),p(`small`,En,o(e.$t(`daq.ksp2aji047`)),1)])]),Z.value?(s(),m(`p`,Dn,o(Z.value),1)):g(``,!0),p(`div`,On,[p(`button`,{class:`aw-pill outline`,onClick:Ji},o(e.$t(`daq.k48p40048`)),1),p(`button`,{class:`pill-btn`,disabled:Ui.value,onClick:Zi},o(Ui.value?e.$t(`daq.k1b38d59103`):X.value?e.$t(`daq.k1b39281116`):e.$t(`daq.k1b3dtga119`)),9,kn)]),p(`p`,An,o(e.$t(`daq.k1w8s84s049`)),1),p(`table`,jn,[p(`tbody`,null,[(s(!0),m(h,null,l(Ki.value,t=>(s(),m(`tr`,{key:t.key},[p(`td`,null,[p(`b`,null,o(t.name),1),p(`small`,Mn,o(t.code),1)]),p(`td`,Nn,o(t.min)+`~`+o(t.max)+` `+o(t.unit)+` · `+o(t.decimals)+` `+o(e.$t(`daq.k48oi091`)),1),p(`td`,Pn,[p(`button`,{class:`mini-btn`,onClick:e=>Xi(t)},o(e.$t(`daq.k3y694050`)),9,Fn)])]))),128))])])])])):g(``,!0),p(`section`,In,[p(`button`,{class:`opt-head`,onClick:Pe},[t[56]||=p(`span`,{class:`i-tabler-flask`},null,-1),p(`b`,null,o(e.$t(`daq.k1optt001`)),1),p(`span`,Ln,o(x(k).optimizations.length),1),p(`span`,{class:c([`opt-chevron`,{open:j.value}])},null,2)]),p(`div`,{class:c([`opt-body`,{open:j.value}])},[Ae.value?(s(),m(h,{key:0},[p(`div`,Rn,[_(p(`select`,{"onUpdate:modelValue":t[26]||=e=>M.value=e,class:`inp-sel`,onChange:Fe},[p(`option`,zn,o(e.$t(`daq.k1optf001`)),1),(s(!0),m(h,null,l(x(k).lines,e=>(s(),m(`option`,{key:e.id,value:e.id},o(e.name),9,Bn))),128))],544),[[C,M.value]]),_(p(`select`,{"onUpdate:modelValue":t[27]||=e=>N.value=e,class:`inp-sel`,onChange:F},[p(`option`,Vn,o(e.$t(`daq.k1optf004`)),1),(s(!0),m(h,null,l(Me.value,e=>(s(),m(`option`,{key:e.id,value:e.id},o(e.name),9,Hn))),128))],544),[[C,N.value]]),p(`button`,{class:`mini-act`,onClick:F},o(e.$t(`daq.k1optf002`)),1)]),x(k).optimizations.length===0?(s(),m(`p`,Un,o(e.$t(`daq.k1opte001`)),1)):g(``,!0),p(`ul`,Wn,[(s(!0),m(h,null,l(x(k).optimizations.slice(0,30),t=>(s(),m(`li`,{key:t.id,class:c([`opt-row`,t.status])},[p(`div`,Gn,[p(`span`,{class:c([`opt-status`,t.status])},o(e.$t(Ne(t.status))),3),p(`b`,Kn,o(t.nodeName),1),p(`span`,qn,o(t.params[0]?.from??`?`)+` → `+o(t.params[0]?.to),1),p(`span`,Jn,o(t.setAt.slice(5,16).replace(`T`,` `)),1),P.value[t.id]?g(``,!0):(s(),m(`button`,{key:0,class:`mini-act`,disabled:je.value===t.id,onClick:e=>Ie(t.id)},o(e.$t(`daq.k1opta001`)),9,Yn)),t.status===`open`?(s(),m(`button`,{key:1,class:`mini-act danger`,onClick:e=>Re(t.id)},o(e.$t(`daq.k1opta002`)),9,Xn)):g(``,!0)]),p(`div`,Zn,[t.judge?(s(),m(`span`,{key:0,class:c([`opt-judge`,t.judge.verdict])},o(t.judge.verdict)+`(`+o(t.judge.by)+`): `+o(t.judge.reason.slice(0,70)),3)):t.status===`open`?(s(),m(`span`,Qn,o(e.$t(`daq.k1opto001`)),1)):g(``,!0),t.aggPending?(s(),m(`span`,$n,o(e.$t(`daq.k1optw001`)),1)):t.windowAgg&&t.windowAgg.channels.length?(s(),m(`span`,er,[(s(!0),m(h,null,l(t.windowAgg.channels,t=>(s(),m(h,{key:t.daqNodeId},[S(o(t.ch)+` `+o(I(t.min))+`~`+o(I(t.max))+`(`+o(e.$t(`daq.k1optw002`))+o(t.breaches<0?`-`:t.breaches)+`) `,1)],64))),128))])):g(``,!0)]),P.value[t.id]?(s(),m(`div`,tr,[(s(!0),m(h,null,l(P.value[t.id]?.channels??[],e=>(s(),m(`div`,{key:e.nodeId,class:`opt-ch`},[(s(),m(`svg`,nr,[p(`polyline`,{points:Le(e.points)},null,8,rr)])),p(`span`,ir,o(e.ch)+` `+o(I(e.points.at(-1)?.value??e.points.at(-1)?.avg))+o(e.unit),1)]))),128)),(P.value[t.id]?.channels.length??0)===0?(s(),m(`p`,ar,o(e.$t(`daq.k1opte002`)),1)):g(``,!0)])):g(``,!0)],2))),128))])],64)):g(``,!0)],2)]),u(a,{spinning:!x(O).loaded&&!x(O).error},{default:b(()=>[p(`section`,or,[p(`div`,sr,[p(`div`,cr,[p(`label`,lr,[p(`span`,null,o(e.$t(`daq.k3wj9n051`)),1),_(p(`select`,{"onUpdate:modelValue":t[28]||=e=>x(A).lineId=e,class:`inp-sel`},[p(`option`,ur,o(e.$t(`daq.k1bkl9uj052`)),1),(s(!0),m(h,null,l(x(k).lines,e=>(s(),m(`option`,{key:e.id,value:e.id},o(e.name),9,dr))),128)),p(`option`,fr,o(e.$t(`daq.k3ootr6053`)),1)],512),[[C,x(A).lineId]])]),p(`label`,pr,[p(`span`,null,o(e.$t(`daq.k1i8rtqt054`)),1),_(p(`select`,{"onUpdate:modelValue":t[29]||=e=>x(A).deviceId=e,class:`inp-sel`},[p(`option`,mr,o(e.$t(`daq.k1bkw4m2055`)),1),(s(!0),m(h,null,l(yi.value,e=>(s(),m(`option`,{key:e.id,value:e.id},o(e.name)+`(`+o(e.count)+`) `,9,hr))),128)),p(`option`,gr,o(e.$t(`daq.k3own4q056`)),1)],512),[[C,x(A).deviceId]])]),p(`label`,{class:`flt`,title:e.$t(`daq.khb8mru009`)},[p(`span`,null,o(e.$t(`daq.k1b2tkyv057`)),1),_(p(`select`,{"onUpdate:modelValue":t[30]||=e=>x(A).lineRun=e,class:`inp-sel`},[p(`option`,vr,o(e.$t(`daq.k3x4t1058`)),1),p(`option`,yr,o(e.$t(`daq.k1nxm3p7059`)),1),p(`option`,br,o(e.$t(`daq.k1ulx34e060`)),1)],512),[[C,x(A).lineRun]])],8,_r),p(`label`,xr,[p(`span`,null,o(e.$t(`daq.k1iwdfef061`)),1),_(p(`select`,{"onUpdate:modelValue":t[31]||=e=>x(A).state=e,class:`inp-sel`},[p(`option`,Sr,o(e.$t(`daq.k3x4t1058`)),1),p(`option`,Cr,o(e.$t(`daq.k41k5c062`)),1),p(`option`,wr,o(e.$t(`daq.k49z8v063`)),1),p(`option`,Tr,o(e.$t(`daq.k3xmid064`)),1),p(`option`,Er,o(e.$t(`daq.k44c2n065`)),1)],512),[[C,x(A).state]])]),p(`label`,Dr,[p(`span`,null,o(e.$t(`daq.k1flttpl010`)),1),_(p(`select`,{"onUpdate:modelValue":t[32]||=e=>x(A).template=e,class:`inp-sel`},[p(`option`,Or,o(e.$t(`daq.k1flttpl011`)),1),(s(!0),m(h,null,l(Te.value,e=>(s(),m(`option`,{key:e.ref,value:e.ref},o(e.label)+`(`+o(e.count)+`) `,9,kr))),128))],512),[[C,x(A).template]])]),p(`label`,Ar,[p(`span`,null,o(e.$t(`daq.k1fltdrv012`)),1),_(p(`select`,{"onUpdate:modelValue":t[33]||=e=>x(A).driver=e,class:`inp-sel`},[p(`option`,jr,o(e.$t(`daq.k1fltdrv013`)),1),(s(!0),m(h,null,l(Ee.value,e=>(s(),m(`option`,{key:e.kind,value:e.kind},o(e.label)+`(`+o(e.count)+`) `,9,Mr))),128))],512),[[C,x(A).driver]])]),p(`label`,{class:`flt`,title:e.$t(`daq.k1flttim014`)},[p(`span`,null,o(e.$t(`daq.k1flttim015`)),1),_(p(`select`,{"onUpdate:modelValue":t[34]||=e=>x(A).time=e,class:`inp-sel`},[p(`option`,Pr,o(e.$t(`daq.k1flttim016`)),1),p(`option`,Fr,o(e.$t(`daq.k1timlv017`)),1),p(`option`,Ir,o(e.$t(`daq.k1timhr018`)),1),p(`option`,Lr,o(e.$t(`daq.k1timdy019`)),1),p(`option`,Rr,o(e.$t(`daq.k1timld020`)),1),p(`option`,zr,o(e.$t(`daq.k1timnv021`)),1)],512),[[C,x(A).time]])],8,Nr),p(`label`,Br,[p(`span`,null,o(e.$t(`daq.k1fltsrc022`)),1),_(p(`input`,{"onUpdate:modelValue":t[35]||=e=>x(A).search=e,class:`inp-sel flt-search`,type:`search`,placeholder:e.$t(`daq.k1fltsph023`)},null,8,Vr),[[w,x(A).search]])]),Ce.value?(s(),m(`button`,{key:0,class:`mini-btn clear-btn`,onClick:we},o(e.$t(`daq.k1fygck2066`)),1)):g(``,!0)]),p(`span`,Hr,o(z.value.length)+` / `+o(x(O).nodes.length)+` `+o(e.$t(`daq.k45uio067`)),1)]),p(`div`,Ur,[p(`div`,{class:c([`ops-panel alarm-panel`,{live:x(O).alarms.length>0}])},[p(`div`,Wr,[t[57]||=p(`span`,{class:`i-tabler-bell-ringing bell`},null,-1),p(`b`,null,o(e.$t(`daq.k1alarm141`)),1),p(`span`,{class:c([`mono cnt`,{hot:x(O).alarms.length>0}])},o(x(O).alarms.length),3)]),p(`div`,Gr,[x(O).alarms.length===0?(s(),m(`p`,Kr,o(e.$t(`daq.k1evt001`)),1)):(s(!0),m(h,{key:1},l(x(O).alarms,n=>(s(),m(`div`,{key:n.id,class:`alarm-row`},[t[58]||=p(`span`,{class:`i-tabler-alert-triangle tri`},null,-1),p(`b`,null,o(n.nodeName),1),p(`span`,qr,o(n.metric),1),p(`span`,Jr,o(n.value)+` `+o(n.rule===`lt-min`?`<`:`>`)+` `+o(n.threshold),1),n.escalation>0?(s(),m(`small`,Yr,`+`+o(n.escalation),1)):g(``,!0),p(`button`,{class:`mini-btn ack`,onClick:e=>xe(n.id)},o(e.$t(`daq.k1ack142`)),9,Xr)]))),128))])],2),p(`div`,Zr,[p(`div`,Qr,[t[60]||=p(`span`,{class:`i-tabler-activity`},null,-1),p(`b`,null,o(e.$t(`daq.k1evt002`)),1),u(r,{class:`panel-link`,to:`/logs`},{default:b(()=>[S(o(e.$t(`daq.k1evt003`)),1),t[59]||=p(`span`,{class:`i-tabler-arrow-right`},null,-1)]),_:1})]),p(`div`,$r,[x(ve).recent.length===0?(s(),m(`p`,ei,o(e.$t(`daq.k1evt004`)),1)):(s(!0),m(h,{key:1},l(x(ve).recent,(t,n)=>(s(),m(`div`,{key:`${t.at}:${t.actor}:${t.action}:${n}`,class:`evt-row`},[p(`span`,ti,o(be(t.at)),1),p(`span`,{class:c([`src-badge`,t.actorKind])},o(t.actorKind===`agent`?`Agent`:t.actorKind===`user`?e.$t(`logs.src.user`):e.$t(`logs.src.system`)),3),p(`span`,{class:c([`kind-chip`,t.kind])},o(ye(t.kind)),3),p(`span`,{class:`txt`,title:t.summary},o(t.summary),9,ni)]))),128))])])]),p(`table`,{ref_key:`nodesTableRef`,ref:Ci,class:`nodes-table`},[p(`thead`,null,[p(`tr`,null,[p(`th`,null,o(e.$t(`daq.k45uio067`)),1),p(`th`,null,o(e.$t(`daq.k42w8s068`)),1),p(`th`,null,o(e.$t(`daq.k3mv305069`)),1),p(`th`,null,o(e.$t(`daq.k1trnd001`)),1),p(`th`,null,o(e.$t(`daq.k1l6g2ga070`)),1),p(`th`,null,o(e.$t(`daq.k3zi0nf071`)),1),p(`th`,null,o(e.$t(`daq.k4a0la072`)),1),p(`th`,null,o(e.$t(`daq.k3wj9n051`)),1),p(`th`,{title:e.$t(`daq.k1runtipc131`)},o(e.$t(`daq.k1b2tkyv057`)),9,ri),p(`th`,{title:e.$t(`daq.k1prdrtip132`)},o(e.$t(`daq.k1prodrc128`)),9,ii),p(`th`,null,o(e.$t(`daq.k1i8rtqt054`)),1),p(`th`,ai,o(e.$t(`daq.k40aa6073`)),1)])]),p(`tbody`,null,[Ti.value>0?(s(),m(`tr`,oi,[p(`td`,{colspan:11,style:n({height:Ti.value+`px`})},null,4)])):g(``,!0),(s(!0),m(h,null,l(wi.value,e=>(s(),v(i,{key:e.id,n:e},null,8,[`n`]))),128)),Ei.value>0?(s(),m(`tr`,si,[p(`td`,{colspan:11,style:n({height:Ei.value+`px`})},null,4)])):g(``,!0),x(O).loaded&&x(O).nodes.length===0?(s(),m(`tr`,ci,[p(`td`,li,[p(`div`,ui,[p(`p`,di,o(e.$t(`daq.kvhjyc3075`)),1)])])])):x(O).loaded&&z.value.length===0?(s(),m(`tr`,fi,[p(`td`,pi,[p(`div`,mi,[p(`p`,hi,o(e.$t(`daq.k1w20qew076`)),1)])])])):g(``,!0)])],512)])]),_:1},8,[`spinning`]),x(O).error?(s(),m(`p`,gi,[S(o(x(O).error)+`(`,1),u(r,{to:`/workshop`},{default:b(()=>[S(o(e.$t(`daq.k1bhhheq077`)),1)]),_:1}),t[61]||=S(`) `,-1)])):g(``,!0)])}}}),[[`__scopeId`,`data-v-8252d58d`]]);export{yi as default};