agentworkshop 0.7.27 → 0.7.34

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 (1033) hide show
  1. package/.AgentWorkShop/prompts/aml-mission-default.md +20 -0
  2. package/.AgentWorkShop/prompts/aml-playbook.md +49 -0
  3. package/.AgentWorkShop/prompts/host-tools.json +314 -0
  4. package/.output/.AgentWorkShop/prompts/aml-mission-default.md +20 -0
  5. package/.output/.AgentWorkShop/prompts/aml-playbook.md +49 -0
  6. package/.output/.AgentWorkShop/prompts/host-tools.json +314 -0
  7. package/.output/.AgentWorkShop/schema.json +120 -0
  8. package/.output/nitro.json +1 -1
  9. package/.output/public/_nuxt/{BTLEvDxM.js → 4bHdIqEg.js} +8 -8
  10. package/.output/public/_nuxt/B9nXmjSB.js +19 -0
  11. package/.output/public/_nuxt/BASN8nZ0.js +1 -0
  12. package/.output/public/_nuxt/{DNQF_TXX.js → BBBtwOpo.js} +1 -1
  13. package/.output/public/_nuxt/{DoAlYsiF.js → BBwMH_hG.js} +1 -1
  14. package/.output/public/_nuxt/BWSE6hR6.js +1 -0
  15. package/.output/public/_nuxt/BZv4RFYN.js +1 -0
  16. package/.output/public/_nuxt/{BgCrZKv_2.js → Bc0AmjfT.js} +1 -1
  17. package/.output/public/_nuxt/BcmbLh2z2.js +1 -0
  18. package/.output/public/_nuxt/BgTB6h_q.js +2 -0
  19. package/.output/public/_nuxt/BkLJA9J5.js +1 -0
  20. package/.output/public/_nuxt/{XY2z78rj.js → BuCHayqN.js} +1 -1
  21. package/.output/public/_nuxt/{0jKrzLuM.js → BuvcLKh1.js} +1 -1
  22. package/.output/public/_nuxt/C-mDhyEd.js +1 -0
  23. package/.output/public/_nuxt/{DosOJEmZ2.js → C77oC8yC2.js} +1 -1
  24. package/.output/public/_nuxt/CQvmN-Mi.js +1 -0
  25. package/.output/public/_nuxt/CUDrOuW7.js +1 -0
  26. package/.output/public/_nuxt/{DjU9Dx5Y.js → CZcC-gpk.js} +1 -1
  27. package/.output/public/_nuxt/{Cz9gD2Yo.js → CbzsPO5H.js} +1 -1
  28. package/.output/public/_nuxt/CdSOrh2c.js +1 -0
  29. package/.output/public/_nuxt/Cgx818r-.js +1 -0
  30. package/.output/public/_nuxt/Cjm7VogC.js +1 -0
  31. package/.output/public/_nuxt/Cm5mDxzH.js +1 -0
  32. package/.output/public/_nuxt/Cp6z0RN7.js +1 -0
  33. package/.output/public/_nuxt/Ct-WOVr4.js +1 -0
  34. package/.output/public/_nuxt/CwqIxJGj.js +2 -0
  35. package/.output/public/_nuxt/{BGhOrgle.js → D0fhp-Ga.js} +2 -2
  36. package/.output/public/_nuxt/DIaTPH1M.js +1 -0
  37. package/.output/public/_nuxt/DLljr7g0.js +1 -0
  38. package/.output/public/_nuxt/DTYBfjRY.js +1 -0
  39. package/.output/public/_nuxt/DYKVPzN-.js +1 -0
  40. package/.output/public/_nuxt/DZzGarBE2.js +13 -0
  41. package/.output/public/_nuxt/DaMCzQhv.js +1 -0
  42. package/.output/public/_nuxt/DoMxCWN52.js +4 -0
  43. package/.output/public/_nuxt/{CucID8qg2.js → DoTdlVVe2.js} +1 -1
  44. package/.output/public/_nuxt/DsVcWfyR.js +1 -0
  45. package/.output/public/_nuxt/{BCJFMBQ6.js → DzuC31-i.js} +2 -2
  46. package/.output/public/_nuxt/FQri3dV3.js +1 -0
  47. package/.output/public/_nuxt/Lp7Ll94I.js +1 -0
  48. package/.output/public/_nuxt/PluginSlot.DmjNbrcX.css +1 -0
  49. package/.output/public/_nuxt/_id_.hRYo-EAB.css +1 -0
  50. package/.output/public/_nuxt/_wsId_.gXMEOYgX.css +1 -0
  51. package/.output/public/_nuxt/agents.BV70ioCv.css +1 -0
  52. package/.output/public/_nuxt/aml.WU_bh87J.css +1 -0
  53. package/.output/public/_nuxt/builds/latest.json +1 -1
  54. package/.output/public/_nuxt/builds/meta/adc365b6-f636-4a2b-9527-79819c1e874b.json +1 -0
  55. package/.output/public/_nuxt/daq.Bb6l44-O.css +1 -0
  56. package/.output/public/_nuxt/default.jNT73_hq.css +1 -0
  57. package/.output/public/_nuxt/ekuGmQ7R.js +1 -0
  58. package/.output/public/_nuxt/entry.jFrFAWuA.css +1 -0
  59. package/.output/public/_nuxt/pMoIO6rr.js +14 -0
  60. package/.output/public/_nuxt/pages.Cc8GX9T1.css +1 -0
  61. package/.output/public/_nuxt/plugins.wIPyfPn-.css +1 -0
  62. package/.output/public/_nuxt/settings.BCm4NZIc.css +1 -0
  63. package/.output/public/_nuxt/teams.BC75EGnR.css +1 -0
  64. package/.output/server/chunks/_/binding-authz.mjs +23 -0
  65. package/.output/server/chunks/_/binding-authz.mjs.map +1 -0
  66. package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
  67. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  68. package/.output/server/chunks/_/nitro.mjs +15929 -9198
  69. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  70. package/.output/server/chunks/_/scene-layout.repo.mjs +3 -3
  71. package/.output/server/chunks/_/scene-layout.repo.mjs.map +1 -1
  72. package/.output/server/chunks/build/Checkbox-eax2M3o-.mjs +207 -0
  73. package/.output/server/chunks/build/Checkbox-eax2M3o-.mjs.map +1 -0
  74. package/.output/server/chunks/build/{OmpTerminalPanel-Cw_Vw9oO.mjs → OmpTerminalPanel-Cu_s4i0A.mjs} +2 -2
  75. package/.output/server/chunks/build/{OmpTerminalPanel-Cw_Vw9oO.mjs.map → OmpTerminalPanel-Cu_s4i0A.mjs.map} +1 -1
  76. package/.output/server/chunks/build/{alert-qJnjyRcP.mjs → PluginSlot-CcR4Ys3T.mjs} +140 -4
  77. package/.output/server/chunks/build/PluginSlot-CcR4Ys3T.mjs.map +1 -0
  78. package/.output/server/chunks/build/{TownView-ftIylqiD.mjs → TownView-BdHnAilw.mjs} +5 -5
  79. package/.output/server/chunks/build/{TownView-ftIylqiD.mjs.map → TownView-BdHnAilw.mjs.map} +1 -1
  80. package/.output/server/chunks/build/{_id_-CahfkmEt.mjs → _id_-Cb845FHR.mjs} +7 -5
  81. package/.output/server/chunks/build/_id_-Cb845FHR.mjs.map +1 -0
  82. package/.output/server/chunks/build/{_id_-3Axz2-gV.mjs → _id_-fadFPl2i.mjs} +50 -35
  83. package/.output/server/chunks/build/_id_-fadFPl2i.mjs.map +1 -0
  84. package/.output/server/chunks/build/{_wsId_-BymlQhzS.mjs → _wsId_-CTZswnm5.mjs} +181 -22
  85. package/.output/server/chunks/build/{_wsId_-BymlQhzS.mjs.map → _wsId_-CTZswnm5.mjs.map} +1 -1
  86. package/.output/server/chunks/build/{agents-DuMiSWKp.mjs → agents-Bvin73QY.mjs} +82 -32
  87. package/.output/server/chunks/build/agents-Bvin73QY.mjs.map +1 -0
  88. package/.output/server/chunks/build/aml-uBNIppIf.mjs +508 -0
  89. package/.output/server/chunks/build/aml-uBNIppIf.mjs.map +1 -0
  90. package/.output/server/chunks/build/apiClient-BwnfOQU8.mjs +81 -0
  91. package/.output/server/chunks/build/apiClient-BwnfOQU8.mjs.map +1 -0
  92. package/.output/server/chunks/build/{channel-templates-BStqJ-of.mjs → channel-templates-BTq8570n.mjs} +6 -5
  93. package/.output/server/chunks/build/channel-templates-BTq8570n.mjs.map +1 -0
  94. package/.output/server/chunks/build/{checkbox-C1gABOca.mjs → checkbox-8fB-wI-T.mjs} +2 -2
  95. package/.output/server/chunks/build/{checkbox-C1gABOca.mjs.map → checkbox-8fB-wI-T.mjs.map} +1 -1
  96. package/.output/server/chunks/build/{daq-ChYCABz1.mjs → daq-BvihjQyW.mjs} +111 -109
  97. package/.output/server/chunks/build/daq-BvihjQyW.mjs.map +1 -0
  98. package/.output/server/chunks/build/{dcw-CcQNGggh.mjs → dcw-Ks2vJ4PF.mjs} +5 -3
  99. package/.output/server/chunks/build/dcw-Ks2vJ4PF.mjs.map +1 -0
  100. package/.output/server/chunks/build/{default-95-zOTPt.mjs → default-GgHt4O2R.mjs} +164 -101
  101. package/.output/server/chunks/build/{default-95-zOTPt.mjs.map → default-GgHt4O2R.mjs.map} +1 -1
  102. package/.output/server/chunks/build/{input-number-Bd55elNN.mjs → input-number-DzpyYB99.mjs} +2 -2
  103. package/.output/server/chunks/build/{input-number-Bd55elNN.mjs.map → input-number-DzpyYB99.mjs.map} +1 -1
  104. package/.output/server/chunks/build/{logs-D-2UyGtE.mjs → logs-CYBhkQwh.mjs} +5 -3
  105. package/.output/server/chunks/build/logs-CYBhkQwh.mjs.map +1 -0
  106. package/.output/server/chunks/build/{monitor-mfG5jBtz.mjs → monitor-CyfDt4nR.mjs} +7 -6
  107. package/.output/server/chunks/build/{monitor-mfG5jBtz.mjs.map → monitor-CyfDt4nR.mjs.map} +1 -1
  108. package/.output/server/chunks/build/{pages-Dfosfchr.mjs → pages-C-6BRtv8.mjs} +57 -47
  109. package/.output/server/chunks/build/pages-C-6BRtv8.mjs.map +1 -0
  110. package/.output/server/chunks/build/{permissions-B-hhZuzm.mjs → permissions-B52oOmaO.mjs} +6 -5
  111. package/.output/server/chunks/build/permissions-B52oOmaO.mjs.map +1 -0
  112. package/.output/server/chunks/build/{plugins-DZR0T4Mh.mjs → plugins-dZRegC7m.mjs} +22 -18
  113. package/.output/server/chunks/build/plugins-dZRegC7m.mjs.map +1 -0
  114. package/.output/server/chunks/build/{segmented-LPPREMtZ.mjs → segmented-3TrWo0lS.mjs} +3 -3
  115. package/.output/server/chunks/build/{segmented-LPPREMtZ.mjs.map → segmented-3TrWo0lS.mjs.map} +1 -1
  116. package/.output/server/chunks/build/{settings-BajN9TQW.mjs → settings-CgDLkP3s.mjs} +437 -62
  117. package/.output/server/chunks/build/settings-CgDLkP3s.mjs.map +1 -0
  118. package/.output/server/chunks/build/{table-Bf1r2JjE.mjs → table-BjSWwmic.mjs} +4 -4
  119. package/.output/server/chunks/build/{table-Bf1r2JjE.mjs.map → table-BjSWwmic.mjs.map} +1 -1
  120. package/.output/server/chunks/build/{tag-NO9jEqKy.mjs → tag-DNE9vXc0.mjs} +3 -131
  121. package/.output/server/chunks/build/tag-DNE9vXc0.mjs.map +1 -0
  122. package/.output/server/chunks/build/{teams-t2SkRlJP.mjs → teams-2kz3CusY.mjs} +31 -30
  123. package/.output/server/chunks/build/teams-2kz3CusY.mjs.map +1 -0
  124. package/.output/server/chunks/build/{tokens-DiCojbN8.mjs → tokens-BbWLqtVz.mjs} +6 -5
  125. package/.output/server/chunks/build/tokens-BbWLqtVz.mjs.map +1 -0
  126. package/.output/server/chunks/build/town-BUqRobze.mjs +1 -0
  127. package/.output/server/chunks/build/town-BUqRobze.mjs.map +1 -1
  128. package/.output/server/chunks/build/{town-C7QM8DYK.mjs → town-DJ-V5G9U.mjs} +7 -5
  129. package/.output/server/chunks/build/town-DJ-V5G9U.mjs.map +1 -0
  130. package/.output/server/chunks/build/{useDaqStream-BeA2X8KR.mjs → useDaqStream-CIBaiGAl.mjs} +4 -3
  131. package/.output/server/chunks/build/useDaqStream-CIBaiGAl.mjs.map +1 -0
  132. package/.output/server/chunks/build/{useDcwStream-BJW_MitY.mjs → useDcwStream-CBbiYnWe.mjs} +4 -80
  133. package/.output/server/chunks/build/useDcwStream-CBbiYnWe.mjs.map +1 -0
  134. package/.output/server/chunks/build/{useDeviceTwins-Dwz_EY_i.mjs → useDeviceTwins-Yko6nNPF.mjs} +2 -2
  135. package/.output/server/chunks/build/{useDeviceTwins-Dwz_EY_i.mjs.map → useDeviceTwins-Yko6nNPF.mjs.map} +1 -1
  136. package/.output/server/chunks/build/{useOpsLog-Dm8QEb1I.mjs → useOpsLog-CO_VWh7t.mjs} +2 -2
  137. package/.output/server/chunks/build/{useOpsLog-Dm8QEb1I.mjs.map → useOpsLog-CO_VWh7t.mjs.map} +1 -1
  138. package/.output/server/chunks/build/{useWorkshopApi-B-L3MmIX.mjs → useWorkshopApi-NyjL0L3j.mjs} +4 -2
  139. package/.output/server/chunks/build/{useWorkshopApi-B-L3MmIX.mjs.map → useWorkshopApi-NyjL0L3j.mjs.map} +1 -1
  140. package/.output/server/chunks/build/{users-B9SAdEtH.mjs → users-4nzxTjFT.mjs} +6 -5
  141. package/.output/server/chunks/build/users-4nzxTjFT.mjs.map +1 -0
  142. package/.output/server/chunks/build/workshop-81xhz368.mjs +1 -0
  143. package/.output/server/chunks/build/workshop-81xhz368.mjs.map +1 -1
  144. package/.output/server/chunks/routes/api/health.get.mjs +1 -0
  145. package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
  146. package/.output/server/chunks/routes/api/index.get.mjs +1 -1
  147. package/.output/server/chunks/routes/api/index.post.mjs +1 -1
  148. package/.output/server/chunks/routes/api/metrics.mjs +1 -0
  149. package/.output/server/chunks/routes/api/metrics.mjs.map +1 -1
  150. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +1 -0
  151. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs.map +1 -1
  152. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +1 -0
  153. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs.map +1 -1
  154. package/.output/server/chunks/routes/api/plugins/i18n.get.mjs +26 -0
  155. package/.output/server/chunks/routes/api/plugins/i18n.get.mjs.map +1 -0
  156. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +2 -1
  157. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs.map +1 -1
  158. package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs +32 -0
  159. package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs.map +1 -0
  160. package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs +36 -0
  161. package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs.map +1 -0
  162. package/.output/server/chunks/routes/api/system/config.get.mjs +1 -0
  163. package/.output/server/chunks/routes/api/system/config.get.mjs.map +1 -1
  164. package/.output/server/chunks/routes/api/system/index.get.mjs +7 -2
  165. package/.output/server/chunks/routes/api/system/index.get.mjs.map +1 -1
  166. package/.output/server/chunks/routes/api/system/index.patch.mjs +2 -1
  167. package/.output/server/chunks/routes/api/system/index.patch.mjs.map +1 -1
  168. package/.output/server/chunks/routes/api/system/index.post.mjs +36 -0
  169. package/.output/server/chunks/routes/api/system/index.post.mjs.map +1 -0
  170. package/.output/server/chunks/routes/api/system/index2.get.mjs +28 -0
  171. package/.output/server/chunks/routes/api/system/index2.get.mjs.map +1 -0
  172. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +2 -1
  173. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs.map +1 -1
  174. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +2 -1
  175. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs.map +1 -1
  176. package/.output/server/chunks/routes/api/system/monitor.get.mjs +1 -0
  177. package/.output/server/chunks/routes/api/system/monitor.get.mjs.map +1 -1
  178. package/.output/server/chunks/routes/api/system/settings/events.get.mjs +8 -5
  179. package/.output/server/chunks/routes/api/system/settings/events.get.mjs.map +1 -1
  180. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +2 -1
  181. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs.map +1 -1
  182. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +2 -1
  183. package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
  184. package/.output/server/chunks/routes/api/users/_id_.get.mjs +2 -1
  185. package/.output/server/chunks/routes/api/users/_id_.get.mjs.map +1 -1
  186. package/.output/server/chunks/routes/api/users/_id_.put.mjs +1 -1
  187. package/.output/server/chunks/routes/api/users/index.get.mjs +2 -1
  188. package/.output/server/chunks/routes/api/users/index.get.mjs.map +1 -1
  189. package/.output/server/chunks/routes/api/users/index.post.mjs +1 -1
  190. package/.output/server/chunks/routes/api/users/login.post.mjs +1 -1
  191. package/.output/server/chunks/routes/api/users/logout.post.mjs +2 -1
  192. package/.output/server/chunks/routes/api/users/logout.post.mjs.map +1 -1
  193. package/.output/server/chunks/routes/api/users/me.get.mjs +2 -1
  194. package/.output/server/chunks/routes/api/users/me.get.mjs.map +1 -1
  195. package/.output/server/chunks/routes/api/users/register.post.mjs +1 -1
  196. package/.output/server/chunks/routes/api/users/setup-status.get.mjs +2 -1
  197. package/.output/server/chunks/routes/api/users/setup-status.get.mjs.map +1 -1
  198. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +2 -1
  199. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs.map +1 -1
  200. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +2 -1
  201. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs.map +1 -1
  202. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +1 -1
  203. package/.output/server/chunks/routes/api/workshop/_...path_.mjs +2 -1
  204. package/.output/server/chunks/routes/api/workshop/_...path_.mjs.map +1 -1
  205. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +2 -1
  206. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs.map +1 -1
  207. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +1 -1
  208. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +1 -1
  209. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +2 -1
  210. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs.map +1 -1
  211. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +5 -2
  212. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs.map +1 -1
  213. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +9 -3
  214. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs.map +1 -1
  215. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +2 -1
  216. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs.map +1 -1
  217. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +2 -1
  218. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
  219. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +23 -3
  220. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs.map +1 -1
  221. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +21 -3
  222. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs.map +1 -1
  223. package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +2 -1
  224. package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs.map +1 -1
  225. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +2 -1
  226. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs.map +1 -1
  227. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +2 -1
  228. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs.map +1 -1
  229. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +1 -1
  230. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +1 -1
  231. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs +75 -0
  232. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs.map +1 -0
  233. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +35 -0
  234. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs.map +1 -0
  235. package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs +35 -0
  236. package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs.map +1 -0
  237. package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs +46 -0
  238. package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs.map +1 -0
  239. package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs +47 -0
  240. package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs.map +1 -0
  241. package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs +48 -0
  242. package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs.map +1 -0
  243. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs +41 -0
  244. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs.map +1 -0
  245. package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs +62 -0
  246. package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs.map +1 -0
  247. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs +35 -0
  248. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs.map +1 -0
  249. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs +36 -0
  250. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs.map +1 -0
  251. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs +34 -0
  252. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs.map +1 -0
  253. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs +38 -0
  254. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs.map +1 -0
  255. package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs +37 -0
  256. package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs.map +1 -0
  257. package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs +42 -0
  258. package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs.map +1 -0
  259. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +2 -1
  260. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs.map +1 -1
  261. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +2 -1
  262. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs.map +1 -1
  263. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +2 -1
  264. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs.map +1 -1
  265. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +2 -1
  266. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs.map +1 -1
  267. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +2 -1
  268. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs.map +1 -1
  269. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +1 -0
  270. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs.map +1 -1
  271. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +2 -1
  272. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs.map +1 -1
  273. package/.output/server/chunks/routes/api/workshop/audit.get.mjs +2 -1
  274. package/.output/server/chunks/routes/api/workshop/audit.get.mjs.map +1 -1
  275. package/.output/server/chunks/routes/api/workshop/caller.mjs +2 -1
  276. package/.output/server/chunks/routes/api/workshop/caller.mjs.map +1 -1
  277. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +2 -2
  278. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +2 -1
  279. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs.map +1 -1
  280. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +2 -1
  281. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs.map +1 -1
  282. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +1 -1
  283. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +1 -1
  284. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +2 -1
  285. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs.map +1 -1
  286. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +2 -1
  287. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs.map +1 -1
  288. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +1 -1
  289. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +2 -1
  290. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs.map +1 -1
  291. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +1 -1
  292. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +2 -1
  293. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs.map +1 -1
  294. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +2 -1
  295. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs.map +1 -1
  296. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +2 -1
  297. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs.map +1 -1
  298. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +2 -1
  299. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs.map +1 -1
  300. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +2 -1
  301. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs.map +1 -1
  302. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +2 -1
  303. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs.map +1 -1
  304. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +1 -1
  305. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +2 -1
  306. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs.map +1 -1
  307. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +1 -1
  308. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +2 -1
  309. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs.map +1 -1
  310. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +2 -1
  311. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs.map +1 -1
  312. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +1 -1
  313. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +1 -1
  314. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +1 -1
  315. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +2 -1
  316. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs.map +1 -1
  317. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +1 -1
  318. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs +1 -0
  319. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs.map +1 -1
  320. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +2 -1
  321. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs.map +1 -1
  322. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +2 -1
  323. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs.map +1 -1
  324. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +2 -1
  325. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs.map +1 -1
  326. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +1 -0
  327. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs.map +1 -1
  328. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +2 -1
  329. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs.map +1 -1
  330. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +1 -1
  331. package/.output/server/chunks/routes/api/workshop/channels.get.mjs +1 -0
  332. package/.output/server/chunks/routes/api/workshop/channels.get.mjs.map +1 -1
  333. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +4 -4
  334. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +2 -1
  335. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs.map +1 -1
  336. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +2 -1
  337. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs.map +1 -1
  338. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +2 -1
  339. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs.map +1 -1
  340. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +2 -1
  341. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs.map +1 -1
  342. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +2 -1
  343. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs.map +1 -1
  344. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +2 -1
  345. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs.map +1 -1
  346. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +3 -1
  347. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs.map +1 -1
  348. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +2 -1
  349. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs.map +1 -1
  350. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +2 -1
  351. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs.map +1 -1
  352. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +2 -1
  353. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs.map +1 -1
  354. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +2 -1
  355. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs.map +1 -1
  356. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +2 -1
  357. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs.map +1 -1
  358. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +2 -1
  359. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs.map +1 -1
  360. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +2 -1
  361. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs.map +1 -1
  362. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +2 -1
  363. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs.map +1 -1
  364. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +2 -1
  365. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs.map +1 -1
  366. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +2 -1
  367. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs.map +1 -1
  368. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +2 -1
  369. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs.map +1 -1
  370. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +2 -1
  371. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs.map +1 -1
  372. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +2 -1
  373. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs.map +1 -1
  374. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +2 -1
  375. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs.map +1 -1
  376. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +2 -1
  377. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs.map +1 -1
  378. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +2 -1
  379. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs.map +1 -1
  380. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +2 -1
  381. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs.map +1 -1
  382. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +7 -2
  383. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs.map +1 -1
  384. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +2 -1
  385. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs.map +1 -1
  386. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +2 -1
  387. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs.map +1 -1
  388. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +2 -1
  389. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs.map +1 -1
  390. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +2 -1
  391. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs.map +1 -1
  392. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +2 -1
  393. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs.map +1 -1
  394. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +2 -1
  395. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs.map +1 -1
  396. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +2 -1
  397. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs.map +1 -1
  398. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +2 -1
  399. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs.map +1 -1
  400. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +2 -1
  401. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs.map +1 -1
  402. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +2 -1
  403. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs.map +1 -1
  404. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +2 -1
  405. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs.map +1 -1
  406. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +2 -1
  407. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs.map +1 -1
  408. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +2 -1
  409. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs.map +1 -1
  410. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +2 -1
  411. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs.map +1 -1
  412. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +2 -1
  413. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs.map +1 -1
  414. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +2 -1
  415. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs.map +1 -1
  416. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +2 -1
  417. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs.map +1 -1
  418. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +2 -1
  419. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs.map +1 -1
  420. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +2 -1
  421. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs.map +1 -1
  422. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +2 -1
  423. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs.map +1 -1
  424. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +2 -1
  425. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs.map +1 -1
  426. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +2 -1
  427. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs.map +1 -1
  428. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +2 -1
  429. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs.map +1 -1
  430. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +2 -1
  431. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs.map +1 -1
  432. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs +2 -1
  433. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs.map +1 -1
  434. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +2 -1
  435. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs.map +1 -1
  436. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs +2 -1
  437. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs.map +1 -1
  438. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +2 -1
  439. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs.map +1 -1
  440. package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs +2 -1
  441. package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs.map +1 -1
  442. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +2 -1
  443. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs.map +1 -1
  444. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +2 -1
  445. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs.map +1 -1
  446. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +2 -1
  447. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs.map +1 -1
  448. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +2 -1
  449. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs.map +1 -1
  450. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +2 -1
  451. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs.map +1 -1
  452. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +2 -1
  453. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs.map +1 -1
  454. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +2 -1
  455. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs.map +1 -1
  456. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +2 -1
  457. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs.map +1 -1
  458. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +2 -1
  459. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs.map +1 -1
  460. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +2 -1
  461. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs.map +1 -1
  462. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +2 -1
  463. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs.map +1 -1
  464. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +32 -1
  465. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs.map +1 -1
  466. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +2 -1
  467. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs.map +1 -1
  468. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +2 -1
  469. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs.map +1 -1
  470. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +3 -2
  471. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs.map +1 -1
  472. package/.output/server/chunks/routes/api/workshop/index.get.mjs +1 -0
  473. package/.output/server/chunks/routes/api/workshop/index.get.mjs.map +1 -1
  474. package/.output/server/chunks/routes/api/workshop/index.post.mjs +1 -1
  475. package/.output/server/chunks/routes/api/workshop/index.put.mjs +2 -1
  476. package/.output/server/chunks/routes/api/workshop/index.put.mjs.map +1 -1
  477. package/.output/server/chunks/routes/api/workshop/index10.get.mjs +12 -6
  478. package/.output/server/chunks/routes/api/workshop/index10.get.mjs.map +1 -1
  479. package/.output/server/chunks/routes/api/workshop/index11.get.mjs +4 -2
  480. package/.output/server/chunks/routes/api/workshop/index11.get.mjs.map +1 -1
  481. package/.output/server/chunks/routes/api/workshop/index12.get.mjs +28 -0
  482. package/.output/server/chunks/routes/api/workshop/index12.get.mjs.map +1 -0
  483. package/.output/server/chunks/routes/api/workshop/index2.get.mjs +17 -11
  484. package/.output/server/chunks/routes/api/workshop/index2.get.mjs.map +1 -1
  485. package/.output/server/chunks/routes/api/workshop/index2.post.mjs +1 -1
  486. package/.output/server/chunks/routes/api/workshop/index3.get.mjs +11 -4
  487. package/.output/server/chunks/routes/api/workshop/index3.get.mjs.map +1 -1
  488. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +2 -1
  489. package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
  490. package/.output/server/chunks/routes/api/workshop/index4.get.mjs +5 -27
  491. package/.output/server/chunks/routes/api/workshop/index4.get.mjs.map +1 -1
  492. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +2 -1
  493. package/.output/server/chunks/routes/api/workshop/index4.post.mjs.map +1 -1
  494. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +24 -18
  495. package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
  496. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +2 -1
  497. package/.output/server/chunks/routes/api/workshop/index5.post.mjs.map +1 -1
  498. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +23 -5
  499. package/.output/server/chunks/routes/api/workshop/index6.get.mjs.map +1 -1
  500. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +2 -1
  501. package/.output/server/chunks/routes/api/workshop/index6.post.mjs.map +1 -1
  502. package/.output/server/chunks/routes/api/workshop/index7.get.mjs +4 -17
  503. package/.output/server/chunks/routes/api/workshop/index7.get.mjs.map +1 -1
  504. package/.output/server/chunks/routes/api/workshop/index7.post.mjs +8 -3
  505. package/.output/server/chunks/routes/api/workshop/index7.post.mjs.map +1 -1
  506. package/.output/server/chunks/routes/api/workshop/index8.get.mjs +20 -21
  507. package/.output/server/chunks/routes/api/workshop/index8.get.mjs.map +1 -1
  508. package/.output/server/chunks/routes/api/workshop/index8.post.mjs +1 -1
  509. package/.output/server/chunks/routes/api/workshop/index9.get.mjs +24 -11
  510. package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
  511. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +1 -0
  512. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs.map +1 -1
  513. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +1 -0
  514. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs.map +1 -1
  515. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +2 -1
  516. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs.map +1 -1
  517. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +2 -1
  518. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs.map +1 -1
  519. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +2 -1
  520. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs.map +1 -1
  521. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +2 -1
  522. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs.map +1 -1
  523. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +1 -0
  524. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs.map +1 -1
  525. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +2 -1
  526. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs.map +1 -1
  527. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +2 -1
  528. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs.map +1 -1
  529. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +1 -0
  530. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs.map +1 -1
  531. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +1 -1
  532. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +1 -1
  533. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +2 -1
  534. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs.map +1 -1
  535. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +1 -1
  536. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +2 -1
  537. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs.map +1 -1
  538. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +2 -1
  539. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs.map +1 -1
  540. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +1 -0
  541. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs.map +1 -1
  542. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +1 -1
  543. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +2 -1
  544. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs.map +1 -1
  545. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +1 -1
  546. package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs +44 -0
  547. package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs.map +1 -0
  548. package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs +47 -0
  549. package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs.map +1 -0
  550. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +2 -1
  551. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs.map +1 -1
  552. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +2 -1
  553. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs.map +1 -1
  554. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +2 -1
  555. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs.map +1 -1
  556. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +1 -1
  557. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +2 -0
  558. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs.map +1 -1
  559. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +1 -1
  560. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +2 -2
  561. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +1 -0
  562. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs.map +1 -1
  563. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +1 -0
  564. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs.map +1 -1
  565. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +1 -0
  566. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs.map +1 -1
  567. package/.output/server/chunks/routes/renderer.mjs +2 -2
  568. package/.output/server/chunks/virtual/entry.mjs +601 -36
  569. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  570. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  571. package/.output/server/index.mjs +1 -0
  572. package/.output/server/node_modules/@anthropic-ai/claude-agent-sdk/package.json +84 -0
  573. package/.output/server/node_modules/@anthropic-ai/claude-agent-sdk/sdk.mjs +225 -0
  574. package/.output/server/package.json +2 -1
  575. package/README-zh.md +507 -478
  576. package/README.md +517 -486
  577. package/app/app.vue +17 -2
  578. package/app/assets/css/main.css +421 -30
  579. package/app/components/AppHeader.vue +17 -0
  580. package/app/components/AppSidebar.vue +162 -63
  581. package/app/components/AwChart.vue +57 -54
  582. package/app/components/workshop/ChannelSessionList.vue +802 -703
  583. package/app/components/workshop/DaqNodeRow.vue +156 -0
  584. package/app/components/workshop/PluginSlot.vue +120 -0
  585. package/app/composables/workshop/useAmlStream.ts +136 -0
  586. package/app/composables/workshop/useDaqStream.ts +8 -1
  587. package/app/composables/workshop/usePluginPanels.ts +72 -0
  588. package/app/composables/workshop/useWorkshopApi.ts +7 -0
  589. package/app/pages/aml/index.vue +1949 -0
  590. package/app/pages/daq/[id].vue +60 -2
  591. package/app/pages/daq/index.vue +7 -148
  592. package/app/pages/index.vue +235 -213
  593. package/app/pages/plugins/index.vue +280 -274
  594. package/app/pages/settings.vue +555 -78
  595. package/app/pages/workshop/agents.vue +23 -1
  596. package/app/pages/workshop/teams.vue +2 -2
  597. package/app/plugins/aw-plugins.client.ts +95 -6
  598. package/app/plugins/runtime-config.client.ts +4 -14
  599. package/app/plugins/theme.client.ts +13 -3
  600. package/app/stores/app.ts +9 -2
  601. package/app/stores/runtime-config.ts +113 -7
  602. package/cli/aw.mjs +16 -3
  603. package/cli/commands/build.mjs +8 -8
  604. package/cli/commands/dev.mjs +5 -13
  605. package/cli/commands/init.mjs +1 -1
  606. package/cli/commands/start.mjs +10 -17
  607. package/cli/core/args.mjs +85 -4
  608. package/cli/core/child-lifecycle.mjs +136 -0
  609. package/config.yml +24 -0
  610. package/docs/plugins.md +128 -220
  611. package/docs/sdk.md +1 -1
  612. package/i18n/dicts/_en.json +43 -2
  613. package/i18n/dicts/aml.json +163 -0
  614. package/i18n/dicts/channelSessionList.json +4 -1
  615. package/i18n/dicts/daqDetail.json +1 -0
  616. package/i18n/dicts/settings.json +33 -1
  617. package/i18n/dicts/teams.json +9 -1
  618. package/i18n/locales/en.ts +364 -132
  619. package/i18n/locales/zh-CN.ts +433 -201
  620. package/nuxt.config.ts +18 -3
  621. package/package.json +153 -149
  622. package/scripts/_audit/.tmp/audit-data/dcws.json +28 -0
  623. package/scripts/_audit/.tmp/dcw-writes.json +15650 -0
  624. package/scripts/_audit/.tmp/dcws.json +9033 -0
  625. package/scripts/_audit/.tmp/pollution-backup/dcw-rollback.polluted.json +470006 -0
  626. package/scripts/_audit/.tmp/pollution-backup/dcws.polluted.json +9085 -0
  627. package/scripts/_audit/.tmp/probe-cwd.txt +1 -0
  628. package/scripts/_audit/audit-harness-adapters.md +664 -0
  629. package/scripts/_audit/awhome/commands/README.md +3 -0
  630. package/scripts/_audit/awhome/commands/hello.mjs +12 -0
  631. package/scripts/_audit/dcw-controller-e2e.ts +99 -0
  632. package/scripts/_audit/dcw-flush-cost.ts +43 -0
  633. package/scripts/_audit/dcw-rollback-ledger.ts +153 -0
  634. package/scripts/_audit/dcw-unrecorded-write.ts +171 -0
  635. package/scripts/_audit/dcw-write-mutex.ts +157 -0
  636. package/scripts/_audit/diag-cwd.ts +20 -0
  637. package/scripts/_audit/diag-cwd2.ts +19 -0
  638. package/scripts/_audit/exp-cost-scaling.mjs +54 -0
  639. package/scripts/_audit/exp-envelope-and-png.mjs +77 -0
  640. package/scripts/_audit/exp-png-decode.mjs +67 -0
  641. package/scripts/_audit/exp-retention-plan.mjs +61 -0
  642. package/scripts/_audit/exp-retention-rescan.mjs +42 -0
  643. package/scripts/_audit/exp-sweep-fairness.mjs +48 -0
  644. package/scripts/_audit/hello.mjs +12 -0
  645. package/scripts/_audit/http-api-authz-audit.md +657 -0
  646. package/scripts/_audit/ndjson-partial-line-repro.mjs +77 -0
  647. package/scripts/_audit/opencode-await-ternary-repro.mjs +20 -0
  648. package/scripts/_audit/part-frag.txt +84 -0
  649. package/scripts/_audit/part-head.txt +45 -0
  650. package/scripts/_audit/probe-binding.mjs +103 -0
  651. package/scripts/_audit/probe-child.mjs +17 -0
  652. package/scripts/_audit/probe-envelope.mjs +49 -0
  653. package/scripts/_audit/probe-packlist.mjs +67 -0
  654. package/scripts/_audit/probe-routes.mjs +47 -0
  655. package/scripts/_audit/probe-routes2.mjs +38 -0
  656. package/scripts/_audit/probe.ts +9 -0
  657. package/scripts/_audit/probe2.ts +6 -0
  658. package/scripts/_audit/probe3.ts +3 -0
  659. package/scripts/_audit/probe4.ts +3 -0
  660. package/scripts/_audit/proj/.AgentWorkShop/commands/echoargs.mjs +13 -0
  661. package/scripts/_audit/proj/config.yml +1 -0
  662. package/scripts/_audit/run.mjs +30 -0
  663. package/scripts/_audit/runtime-audit.md +716 -0
  664. package/scripts/_audit/ts-resolve-hook.mjs +41 -0
  665. package/scripts/_audit/tsconfig.probe.json +24 -0
  666. package/scripts/_audit/typecheck-out.txt +466 -0
  667. package/scripts/_audit/verify-data-integrity.mjs +112 -0
  668. package/scripts/_dbg-agents-dropdown-shot.py +33 -0
  669. package/scripts/_dbg-anim-verify.mjs +1 -1
  670. package/scripts/_dbg-audit-all-pages.mjs +1 -1
  671. package/scripts/_dbg-availability-probe.ts +11 -0
  672. package/scripts/_dbg-bind-bidi-e2e.mjs +1 -1
  673. package/scripts/_dbg-cf-line-shot.mjs +18 -0
  674. package/scripts/_dbg-channel-plugin-ui.mjs +94 -0
  675. package/scripts/_dbg-configroot-audit.mjs +84 -0
  676. package/scripts/_dbg-crash-recovery.mjs +1 -1
  677. package/scripts/_dbg-crush-probe.sh +21 -0
  678. package/scripts/_dbg-crush-spawn-probe.ts +22 -0
  679. package/scripts/_dbg-daq-acc-probe.mjs +1 -1
  680. package/scripts/_dbg-daq-attrib.mjs +1 -1
  681. package/scripts/_dbg-daq-debug.mjs +1 -1
  682. package/scripts/_dbg-daq-diag.mjs +1 -1
  683. package/scripts/_dbg-daq-e2e.mjs +1 -1
  684. package/scripts/_dbg-daq-filter-e2e.mjs +1 -1
  685. package/scripts/_dbg-daq-filter-e2e2.mjs +1 -1
  686. package/scripts/_dbg-daq-final-regression.mjs +1 -1
  687. package/scripts/_dbg-daq-frame-alarm.mjs +1 -1
  688. package/scripts/_dbg-daq-frame-ui.mjs +1 -1
  689. package/scripts/_dbg-daq-frame-ws.mjs +1 -1
  690. package/scripts/_dbg-daq-frames-e2e.mjs +1 -1
  691. package/scripts/_dbg-daq-full-check.mjs +1 -1
  692. package/scripts/_dbg-daq-intervals-func.mjs +94 -0
  693. package/scripts/_dbg-daq-pages-shot.mjs +1 -1
  694. package/scripts/_dbg-daq-perf.mjs +1 -1
  695. package/scripts/_dbg-daq-probe.mjs +1 -1
  696. package/scripts/_dbg-daq-recipe-e2e.mjs +1 -1
  697. package/scripts/_dbg-daq-rows-probe.mjs +1 -1
  698. package/scripts/_dbg-daq-rowstate-e2e.mjs +1 -1
  699. package/scripts/_dbg-daq-rowstate-shot.mjs +1 -1
  700. package/scripts/_dbg-daq-rowstate-shot2.mjs +1 -1
  701. package/scripts/_dbg-daq-rowstyle-verify.mjs +112 -0
  702. package/scripts/_dbg-dash-console-check.mjs +1 -1
  703. package/scripts/_dbg-dash-deep-probe.mjs +1 -1
  704. package/scripts/_dbg-dash-hitpoint.mjs +1 -1
  705. package/scripts/_dbg-dcw-read-rest.mjs +1 -1
  706. package/scripts/_dbg-dcw-read-ui.mjs +1 -1
  707. package/scripts/_dbg-dcw-shot2.mjs +1 -1
  708. package/scripts/_dbg-diag-mock-loop.mjs +89 -0
  709. package/scripts/_dbg-diag-watch.mjs +95 -0
  710. package/scripts/_dbg-error-probe.mjs +2 -2
  711. package/scripts/_dbg-filter-light-verify.mjs +1 -1
  712. package/scripts/_dbg-final-acceptance-2.mjs +1 -1
  713. package/scripts/_dbg-final-acceptance.mjs +1 -1
  714. package/scripts/_dbg-final-full-e2e.mjs +1 -1
  715. package/scripts/_dbg-final-shots.mjs +32 -0
  716. package/scripts/_dbg-final-t6-hitl.mjs +1 -1
  717. package/scripts/_dbg-fix-unused-imports.py +41 -0
  718. package/scripts/_dbg-fresh-scene-e2e.mjs +1 -1
  719. package/scripts/_dbg-goose-probe.mjs +33 -0
  720. package/scripts/_dbg-goose-probe.sh +10 -0
  721. package/scripts/_dbg-groups-ui-verify.mjs +122 -0
  722. package/scripts/_dbg-harness-cancel-repro.mjs +81 -0
  723. package/scripts/_dbg-harness-ui-shot.py +109 -0
  724. package/scripts/_dbg-hidden-check.mjs +1 -1
  725. package/scripts/_dbg-home-repro.mjs +1 -1
  726. package/scripts/_dbg-home-stack.mjs +1 -1
  727. package/scripts/_dbg-hydration-detail.mjs +1 -1
  728. package/scripts/_dbg-infra-lifecycle.mjs +1 -1
  729. package/scripts/_dbg-line-live-e2e.mjs +1 -1
  730. package/scripts/_dbg-line-repo-test.ts +10 -0
  731. package/scripts/_dbg-login-debug.py +23 -0
  732. package/scripts/_dbg-modbus-latency.mjs +22 -0
  733. package/scripts/_dbg-mqtt-chain-e2e.mjs +1 -1
  734. package/scripts/_dbg-oneshot-impl-probe.ts +67 -0
  735. package/scripts/_dbg-opslog-agent-e2e.mjs +5 -2
  736. package/scripts/_dbg-opt-team-e2e.mjs +1 -1
  737. package/scripts/_dbg-panesplitter-fix-check.mjs +1 -1
  738. package/scripts/_dbg-phase-e3-monitor.mjs +1 -1
  739. package/scripts/_dbg-pi-spawn-probe.ts +33 -0
  740. package/scripts/_dbg-plc-e2e.mjs +1 -1
  741. package/scripts/_dbg-plugin-config-ui.mjs +111 -0
  742. package/scripts/_dbg-plugin-panels-ui.mjs +54 -0
  743. package/scripts/_dbg-plugin-sink-rest.mjs +1 -1
  744. package/scripts/_dbg-plugin-sink-ui.mjs +1 -1
  745. package/scripts/_dbg-plugin-ui-wizard.mjs +1 -1
  746. package/scripts/_dbg-plugin-verify-e2e.mjs +1 -1
  747. package/scripts/_dbg-pop-clamp-verify.mjs +1 -1
  748. package/scripts/_dbg-preview-console.mjs +1 -1
  749. package/scripts/_dbg-preview-minrepro.mjs +1 -1
  750. package/scripts/_dbg-preview-pixels.mjs +1 -1
  751. package/scripts/_dbg-quality-pages-e2e.mjs +1 -1
  752. package/scripts/_dbg-qwen-acp-probe.mjs +30 -0
  753. package/scripts/_dbg-qwen-capture.mjs +21 -0
  754. package/scripts/_dbg-rail-tree-e2e.mjs +1 -1
  755. package/scripts/_dbg-real-driver-e2e.mjs +1 -1
  756. package/scripts/_dbg-real-scenario-timeline.log +55 -123
  757. package/scripts/_dbg-redesign-shots.mjs +1 -1
  758. package/scripts/_dbg-release-smoke.mjs +1 -1
  759. package/scripts/_dbg-resolve-probe.ts +6 -0
  760. package/scripts/_dbg-restart-persist.mjs +1 -1
  761. package/scripts/_dbg-sc001-dispatch.mjs +1 -1
  762. package/scripts/_dbg-scenario-final-shot.mjs +1 -1
  763. package/scripts/_dbg-scenario-phase-e2.mjs +1 -1
  764. package/scripts/_dbg-scenario-phase-e3.mjs +1 -1
  765. package/scripts/_dbg-scenario-phase1.mjs +1 -1
  766. package/scripts/_dbg-scenario-phase2.mjs +1 -1
  767. package/scripts/_dbg-scenario-phase3-monitor.mjs +1 -1
  768. package/scripts/_dbg-scenario-phase3.mjs +1 -1
  769. package/scripts/_dbg-settings-draft-probe.mjs +39 -0
  770. package/scripts/_dbg-settings-probe.mjs +33 -0
  771. package/scripts/_dbg-task-cancel-probe.mjs +66 -0
  772. package/scripts/_dbg-town-alarm-e2e.mjs +1 -1
  773. package/scripts/_dbg-town-daq-shot.mjs +1 -1
  774. package/scripts/_dbg-town-full-e2e.mjs +1 -1
  775. package/scripts/_dbg-town-gate.mjs +1 -1
  776. package/scripts/_dbg-town-ins-probe.mjs +1 -1
  777. package/scripts/_dbg-town-perf.mjs +1 -1
  778. package/scripts/_dbg-town-realtime.mjs +1 -1
  779. package/scripts/_dbg-town-shot.py +25 -0
  780. package/scripts/_dbg-town-shot3.mjs +1 -1
  781. package/scripts/_dbg-town-smoke.mjs +54 -0
  782. package/scripts/_dbg-town-truth.mjs +1 -1
  783. package/scripts/_dbg-town-truth2.mjs +1 -1
  784. package/scripts/_dbg-trend-expand-test.mjs +1 -1
  785. package/scripts/_dbg-twindaq-focus.mjs +1 -1
  786. package/scripts/_dbg-ui-polish-shot.mjs +1 -1
  787. package/scripts/_dbg-ui-polish-verify1.mjs +1 -1
  788. package/scripts/_dbg-ui-polish-verify2.mjs +1 -1
  789. package/scripts/_dbg-ui-polish-verify3.mjs +1 -1
  790. package/scripts/_dbg-ui-polish-verify4.mjs +1 -1
  791. package/scripts/_dbg-unify-shot.mjs +1 -1
  792. package/scripts/_dbg-uplink-probe.mjs +1 -1
  793. package/scripts/_dbg-wizard-preview-shot.mjs +1 -1
  794. package/scripts/_dbg-wizard-ui-e2e.mjs +1 -1
  795. package/scripts/_dbg-ws-probe.mjs +1 -1
  796. package/scripts/_dbg-wsdot-sanity.mjs +1 -1
  797. package/scripts/_node-state-probe.mjs +1 -1
  798. package/scripts/_tmp-args-probe.mjs +20 -0
  799. package/scripts/_tmp-cyc-entry.mjs +8 -0
  800. package/scripts/_tmp-cyc-main.mjs +5 -0
  801. package/scripts/_tmp-cyc-mod.mjs +2 -0
  802. package/scripts/_tmp-cycle-a.mjs +6 -0
  803. package/scripts/_tmp-cycle-b.mjs +2 -0
  804. package/scripts/_tmp-cycle-probe.mjs +4 -0
  805. package/scripts/_tmp-entry-variant.mjs +2 -0
  806. package/scripts/_tmp-help-probe.mjs +19 -0
  807. package/scripts/_tmp-help-probe2.mjs +2 -0
  808. package/scripts/_tmp-trace-preload.mjs +1 -0
  809. package/scripts/aml-agent-bridge.ts +230 -0
  810. package/scripts/aml-industrial-loop.ts +232 -0
  811. package/scripts/aml-ui-smoke.mjs +67 -0
  812. package/scripts/aw-start-smoke.mjs +194 -0
  813. package/scripts/design-verify-templates.mjs +1 -1
  814. package/scripts/device-line-restore.mjs +1 -1
  815. package/scripts/e2e-aml.ts +259 -0
  816. package/scripts/e2e-config-groups.mjs +238 -0
  817. package/scripts/e2e-full-closedloop.mjs +911 -0
  818. package/scripts/e2e-full-scenario.ts +321 -0
  819. package/scripts/e2e-harness-consistency.ts +204 -0
  820. package/scripts/e2e-multi-harness.ts +233 -76
  821. package/scripts/e2e-plc-plugin-closedloop.mjs +518 -0
  822. package/scripts/e2e-real-scenario.mjs +466 -452
  823. package/scripts/e2e-template-isolation.mjs +2 -2
  824. package/scripts/experiment-castfilm-closedloop.mjs +423 -0
  825. package/scripts/experiment-castfilm-finish.mjs +194 -0
  826. package/scripts/experiment-castfilm-ui-shot.mjs +52 -0
  827. package/scripts/experiment-castfilm-viz.mjs +172 -0
  828. package/scripts/production-closed-loop-e2e.mjs +78 -29
  829. package/scripts/test-aml-integration.ts +159 -0
  830. package/scripts/test-aml-job.ts +174 -0
  831. package/scripts/test-aml-unit.ts +184 -0
  832. package/scripts/test-cli-exit.mjs +235 -0
  833. package/scripts/test-daq-frame-race.mjs +310 -0
  834. package/scripts/test-data-root.mjs +208 -0
  835. package/scripts/test-log-flooding.mjs +160 -0
  836. package/scripts/test-lru.mjs +78 -0
  837. package/scripts/test-memory-month-query.mjs +62 -0
  838. package/scripts/test-plugin-hardening.mjs +45 -0
  839. package/scripts/test-rollback-index.mjs +79 -0
  840. package/scripts/test-sdk-surface.mjs +155 -0
  841. package/scripts/three-system-e2e.mjs +662 -448
  842. package/scripts/town-scene-clear.mjs +1 -1
  843. package/sdk/client.d.mts +110 -0
  844. package/sdk/client.mjs +144 -124
  845. package/sdk/context.mjs +161 -1
  846. package/sdk/index.d.mts +37 -5
  847. package/sdk/index.mjs +44 -41
  848. package/sdk/lifecycle.mjs +4 -1
  849. package/server/api/plugins/i18n.get.ts +12 -0
  850. package/server/api/system/config-groups/[id].delete.ts +21 -0
  851. package/server/api/system/config-groups/[id].patch.ts +26 -0
  852. package/server/api/system/config-groups/index.get.ts +21 -0
  853. package/server/api/system/config-groups/index.post.ts +33 -0
  854. package/server/api/system/settings/events.get.ts +8 -4
  855. package/server/api/workshop/agent-tools/bindings/[id].delete.ts +6 -1
  856. package/server/api/workshop/agent-tools/bindings/[id].patch.ts +12 -3
  857. package/server/api/workshop/agent-tools/bindings/index.get.ts +29 -2
  858. package/server/api/workshop/agent-tools/invoke.post.ts +30 -5
  859. package/server/api/workshop/aml/datasets/[id]/preview.get.ts +68 -0
  860. package/server/api/workshop/aml/datasets/[id].get.ts +24 -0
  861. package/server/api/workshop/aml/datasets/index.get.ts +20 -0
  862. package/server/api/workshop/aml/datasets/index.post.ts +27 -0
  863. package/server/api/workshop/aml/experiments/index.get.ts +35 -0
  864. package/server/api/workshop/aml/index.get.ts +24 -0
  865. package/server/api/workshop/aml/jobs/[id]/cancel.post.ts +21 -0
  866. package/server/api/workshop/aml/jobs/[id]/logs.get.ts +23 -0
  867. package/server/api/workshop/aml/jobs/[id]/retry.post.ts +20 -0
  868. package/server/api/workshop/aml/jobs/[id].get.ts +23 -0
  869. package/server/api/workshop/aml/jobs/index.get.ts +26 -0
  870. package/server/api/workshop/aml/jobs/index.post.ts +44 -0
  871. package/server/api/workshop/aml/models/[id]/predict.post.ts +24 -0
  872. package/server/api/workshop/aml/models/[id]/promote.post.ts +30 -0
  873. package/server/api/workshop/aml/models/index.get.ts +48 -0
  874. package/server/api/workshop/daq/[id].delete.ts +6 -0
  875. package/server/api/workshop/dcw/[id].patch.ts +14 -2
  876. package/server/api/workshop/hitl/respond.post.ts +3 -1
  877. package/server/api/workshop/teams/[id]/plugins/index.get.ts +36 -0
  878. package/server/api/workshop/teams/[id]/plugins/index.put.ts +42 -0
  879. package/server/api/workshop/teams/index.post.ts +13 -0
  880. package/server/api/workshop/users/me.get.ts +5 -0
  881. package/server/api/workshop/ws.ts +14 -2
  882. package/server/data/daqs.json +1648 -123
  883. package/server/data/dcw-lines.json +301 -0
  884. package/server/data/dcw-products.json +140 -0
  885. package/server/data/dcw-recipes.json +890 -0
  886. package/server/data/dcw-rollback.json +11591 -5740
  887. package/server/data/dcw-runs.json +3745 -3559
  888. package/server/data/dcw-templates.json +120 -0
  889. package/server/data/dcw-writes.json +1800 -0
  890. package/server/data/dcws.json +1576 -287
  891. package/server/data/line-runs.json +137 -27
  892. package/server/harness/pi-aw-tools.mjs +51 -0
  893. package/server/plugins/dev-stability-guard.ts +63 -63
  894. package/server/plugins/system-config.ts +10 -11
  895. package/server/plugins/workshop.ts +10 -0
  896. package/server/plugins-builtin/diag-bridge/client.mjs +84 -0
  897. package/server/plugins-builtin/diag-bridge/i18n.json +72 -0
  898. package/server/plugins-builtin/diag-bridge/index.mjs +127 -22
  899. package/server/plugins-builtin/rag-bridge/client.mjs +108 -0
  900. package/server/plugins-builtin/rag-bridge/i18n.json +60 -0
  901. package/server/plugins-builtin/rag-bridge/index.mjs +67 -20
  902. package/server/services/system-config.ts +610 -396
  903. package/server/services/workshop/agents/adapters/line-spawn.ts +15 -6
  904. package/server/services/workshop/agents/adapters/one-shot-cli-agent.ts +530 -0
  905. package/server/services/workshop/agents/base-agent.ts +219 -0
  906. package/server/services/workshop/agents/binding-authz.ts +57 -0
  907. package/server/services/workshop/agents/claude-agent.ts +546 -30
  908. package/server/services/workshop/agents/codex-agent.ts +40 -116
  909. package/server/services/workshop/agents/copilot-agent.ts +136 -0
  910. package/server/services/workshop/agents/crush-agent.ts +107 -0
  911. package/server/services/workshop/agents/cursor-agent.ts +102 -0
  912. package/server/services/workshop/agents/dsh-agent.ts +578 -670
  913. package/server/services/workshop/agents/gemini-agent.ts +121 -0
  914. package/server/services/workshop/agents/goose-agent.ts +98 -0
  915. package/server/services/workshop/agents/harness-models.ts +305 -270
  916. package/server/services/workshop/agents/hermes-agent.ts +528 -0
  917. package/server/services/workshop/agents/host-tool-bridge.ts +53 -2
  918. package/server/services/workshop/agents/industrial-tools.ts +659 -7
  919. package/server/services/workshop/agents/omp-agent.ts +74 -59
  920. package/server/services/workshop/agents/opencode-agent.ts +936 -987
  921. package/server/services/workshop/agents/pi-agent.ts +108 -0
  922. package/server/services/workshop/agents/qwen-agent.ts +540 -0
  923. package/server/services/workshop/agents/registry.ts +117 -5
  924. package/server/services/workshop/agents/tool-approvals.ts +3 -3
  925. package/server/services/workshop/aml/aml.repo.ts +368 -0
  926. package/server/services/workshop/aml/clean.ts +120 -0
  927. package/server/services/workshop/aml/dataset-builder.ts +491 -0
  928. package/server/services/workshop/aml/gates.ts +121 -0
  929. package/server/services/workshop/aml/job-orchestrator.ts +650 -0
  930. package/server/services/workshop/aml/model-registry.ts +169 -0
  931. package/server/services/workshop/aml/predictor.ts +262 -0
  932. package/server/services/workshop/aml/python/aml_eval.py +171 -0
  933. package/server/services/workshop/aml/python/amlkit.py +120 -0
  934. package/server/services/workshop/aml/python/requirements.txt +7 -0
  935. package/server/services/workshop/aml/python/train-example.py +92 -0
  936. package/server/services/workshop/aml/python-runtime.ts +217 -0
  937. package/server/services/workshop/aml/retention.ts +98 -0
  938. package/server/services/workshop/aml/runtime.ts +45 -0
  939. package/server/services/workshop/aml/spec.ts +63 -0
  940. package/server/services/workshop/aml/stats.ts +140 -0
  941. package/server/services/workshop/daq/bus/mqtt.adapter.ts +8 -1
  942. package/server/services/workshop/daq/daq-controller.ts +147 -19
  943. package/server/services/workshop/daq/daq-node.repo.ts +13 -11
  944. package/server/services/workshop/daq/daq-runtime.ts +11 -0
  945. package/server/services/workshop/daq/drivers.ts +89 -8
  946. package/server/services/workshop/db/aml-team-seeds.ts +118 -0
  947. package/server/services/workshop/db/channel-plugins.repo.ts +27 -1
  948. package/server/services/workshop/db/database.ts +89 -1
  949. package/server/services/workshop/db/memory.repo.ts +31 -0
  950. package/server/services/workshop/db/user.repo.ts +9 -0
  951. package/server/services/workshop/dcw/dcw-controller.ts +33 -7
  952. package/server/services/workshop/dcw/dcw-line.repo.ts +5 -3
  953. package/server/services/workshop/dcw/dcw-node.repo.ts +4 -4
  954. package/server/services/workshop/dcw/dcw-product.repo.ts +8 -8
  955. package/server/services/workshop/dcw/dcw-recipe.repo.ts +6 -7
  956. package/server/services/workshop/dcw/dcw-runtime.ts +16 -2
  957. package/server/services/workshop/dcw/dcw-templates.ts +4 -4
  958. package/server/services/workshop/dcw/line-run.ts +5 -5
  959. package/server/services/workshop/dcw/recipe-rollback-manager.ts +3 -1
  960. package/server/services/workshop/dcw/recipe-rollback.repo.ts +155 -52
  961. package/server/services/workshop/logger.ts +145 -3
  962. package/server/services/workshop/plugins/host.mjs +854 -566
  963. package/server/services/workshop/prompts/loader.ts +32 -6
  964. package/server/services/workshop/runtime/agent-runtime.ts +32 -3
  965. package/server/services/workshop/runtime/manager.ts +53 -13
  966. package/server/services/workshop/runtime/scheduler-loop.ts +18 -1
  967. package/server/services/workshop/scene/scene-layout.repo.ts +5 -5
  968. package/server/services/workshop/settings.ts +64 -0
  969. package/shared/config/engine.mjs +5 -0
  970. package/shared/config/groups.mjs +220 -0
  971. package/shared/config/home.mjs +11 -2
  972. package/shared/config/schema.json +31 -6
  973. package/shared/daq-protocol.ts +6 -0
  974. package/shared/lru.mjs +94 -0
  975. package/shared/workshop-protocol.ts +2 -2
  976. package/.output/public/_nuxt/2jaJHWIJ.js +0 -1
  977. package/.output/public/_nuxt/B8kt898d.js +0 -1
  978. package/.output/public/_nuxt/BFGpEo8S.js +0 -1
  979. package/.output/public/_nuxt/BG4zduPf.js +0 -14
  980. package/.output/public/_nuxt/BHcpzI2n.js +0 -19
  981. package/.output/public/_nuxt/BWyR3awA.js +0 -1
  982. package/.output/public/_nuxt/Bc89zKq2.js +0 -1
  983. package/.output/public/_nuxt/BetmGSO4.js +0 -1
  984. package/.output/public/_nuxt/BowTbasd.js +0 -1
  985. package/.output/public/_nuxt/BvtknqSC2.js +0 -1
  986. package/.output/public/_nuxt/BytVi9VX2.js +0 -4
  987. package/.output/public/_nuxt/CJviSvm-.js +0 -1
  988. package/.output/public/_nuxt/CTfqWGdy.js +0 -1
  989. package/.output/public/_nuxt/Cb3SnTM8.js +0 -1
  990. package/.output/public/_nuxt/Chc5pfAA.js +0 -1
  991. package/.output/public/_nuxt/CobSUzQv.js +0 -2
  992. package/.output/public/_nuxt/D95h62Jn.js +0 -1
  993. package/.output/public/_nuxt/DGAOugLt.js +0 -1
  994. package/.output/public/_nuxt/DHbTyoAV.js +0 -1
  995. package/.output/public/_nuxt/DfLUN8kY.js +0 -1
  996. package/.output/public/_nuxt/DnziMlcX.js +0 -1
  997. package/.output/public/_nuxt/DvgKXPgu2.js +0 -13
  998. package/.output/public/_nuxt/Q_SJDSgx.js +0 -1
  999. package/.output/public/_nuxt/_id_.DdbYeLqn.css +0 -1
  1000. package/.output/public/_nuxt/_wsId_.BqWBlY7X.css +0 -1
  1001. package/.output/public/_nuxt/agents.CB9Ck7VQ.css +0 -1
  1002. package/.output/public/_nuxt/bFnZa2yd.js +0 -1
  1003. package/.output/public/_nuxt/builds/meta/f7a8e33d-5422-45ac-895d-27168f97e3ad.json +0 -1
  1004. package/.output/public/_nuxt/daq.DGV9QS8d.css +0 -1
  1005. package/.output/public/_nuxt/default.BbgdTDCk.css +0 -1
  1006. package/.output/public/_nuxt/entry.BN02X8iR.css +0 -1
  1007. package/.output/public/_nuxt/pages.CG8UJ2TK.css +0 -1
  1008. package/.output/public/_nuxt/plugins.DpCuwaJt.css +0 -1
  1009. package/.output/public/_nuxt/rkVgzg62.js +0 -1
  1010. package/.output/public/_nuxt/settings.W6qrYAui.css +0 -1
  1011. package/.output/public/_nuxt/teams.BBXVkyKq.css +0 -1
  1012. package/.output/server/chunks/build/_id_-3Axz2-gV.mjs.map +0 -1
  1013. package/.output/server/chunks/build/_id_-CahfkmEt.mjs.map +0 -1
  1014. package/.output/server/chunks/build/agents-DuMiSWKp.mjs.map +0 -1
  1015. package/.output/server/chunks/build/alert-qJnjyRcP.mjs.map +0 -1
  1016. package/.output/server/chunks/build/channel-templates-BStqJ-of.mjs.map +0 -1
  1017. package/.output/server/chunks/build/daq-ChYCABz1.mjs.map +0 -1
  1018. package/.output/server/chunks/build/dcw-CcQNGggh.mjs.map +0 -1
  1019. package/.output/server/chunks/build/logs-D-2UyGtE.mjs.map +0 -1
  1020. package/.output/server/chunks/build/pages-Dfosfchr.mjs.map +0 -1
  1021. package/.output/server/chunks/build/permissions-B-hhZuzm.mjs.map +0 -1
  1022. package/.output/server/chunks/build/plugins-DZR0T4Mh.mjs.map +0 -1
  1023. package/.output/server/chunks/build/responsiveObserve-CS0UB6wQ.mjs +0 -78
  1024. package/.output/server/chunks/build/responsiveObserve-CS0UB6wQ.mjs.map +0 -1
  1025. package/.output/server/chunks/build/settings-BajN9TQW.mjs.map +0 -1
  1026. package/.output/server/chunks/build/tag-NO9jEqKy.mjs.map +0 -1
  1027. package/.output/server/chunks/build/teams-t2SkRlJP.mjs.map +0 -1
  1028. package/.output/server/chunks/build/tokens-DiCojbN8.mjs.map +0 -1
  1029. package/.output/server/chunks/build/town-C7QM8DYK.mjs.map +0 -1
  1030. package/.output/server/chunks/build/useDaqStream-BeA2X8KR.mjs.map +0 -1
  1031. package/.output/server/chunks/build/useDcwStream-BJW_MitY.mjs.map +0 -1
  1032. package/.output/server/chunks/build/users-B9SAdEtH.mjs.map +0 -1
  1033. /package/.output/public/_nuxt/{ORt9oDIy.js → ORt9oDIy2.js} +0 -0
@@ -129,6 +129,8 @@ export function resolveRunMode({ cwd, packageRoot, env = process.env } = {}) {
129
129
  * > home 模式 ~/.AgentWorkShop/data > cwd/data 兜底)。
130
130
  * 启动器(scripts/start.mjs / dev-guard.mjs)会经 resolveRunMode 注入 AW_DATA_DIR;
131
131
  * 本函数为其兜底(直接 node .output/server/index.mjs 等无启动器场景)。
132
+ * cwd 显式传入 resolveRunMode:调用方给定了 cwd 就必须以它为准,否则
133
+ * ensureDataDir(cwd, env) 的迁移目标(cwd 内)与解析源(process.cwd())不一致。
132
134
  */
133
135
  export function dataDirFor(cwd = process.cwd(), env = process.env) {
134
136
  if (env.AW_DATA_DIR && String(env.AW_DATA_DIR).trim()) return resolve(String(env.AW_DATA_DIR).trim())
@@ -138,7 +140,8 @@ export function dataDirFor(cwd = process.cwd(), env = process.env) {
138
140
 
139
141
  /**
140
142
  * 确保数据目录存在,并把旧位置(cwd/data 与 cwd/server/data)的运行时文件
141
- * 迁入配置根(仅复制目标缺失的文件,不删除旧文件;幂等)。
143
+ * 迁入配置根。迁移采用「最新者胜」(newest-wins):目标缺失时复制,或旧位置
144
+ * 副本严格新于目标时覆盖;目标更新或同时刻一律不覆盖。不删除旧文件;幂等。
142
145
  * 迁移覆盖 sqlite 主库/-wal/-shm 与 JSON 仓库文件;跳过 .tmp 临时产物。
143
146
  */
144
147
  export function ensureDataDir(cwd = process.cwd(), env = process.env) {
@@ -163,7 +166,13 @@ export function ensureDataDir(cwd = process.cwd(), env = process.env) {
163
166
  const src = join(legacy, f)
164
167
  const dst = join(dir, f)
165
168
  try {
166
- if (!existsSync(dst) && statSync(src).isFile()) copyFileSync(src, dst)
169
+ if (!statSync(src).isFile()) continue
170
+ // 最新者胜(newest-wins):历史实现只在目标缺失时复制,两处各存一份后
171
+ // 便永久分叉——旧位置继续被 cwd 相对路径的写入方更新,配置根却再无覆盖机会。
172
+ // 改为按 mtimeMs 比较:旧位置严格更新才覆盖,目标更新或同时刻保持不动,
173
+ // 因此两侧收敛到同一份(更新的)数据,且不会用陈旧副本倒退已迁移的库。
174
+ if (existsSync(dst) && statSync(src).mtimeMs <= statSync(dst).mtimeMs) continue
175
+ copyFileSync(src, dst)
167
176
  }
168
177
  catch { /* 单个文件迁移失败不阻断 */ }
169
178
  }
@@ -22,10 +22,6 @@
22
22
  { "key": "security.approvalGate", "type": "boolean", "group": "security", "label": "高危操作双人复核", "labelKey": "settings.runtime.security.approvalGate", "description": "R3:开启后写控/删除等高风险操作需另一位管理员批核", "applies": "live", "default": false },
23
23
  { "key": "security.hitl_timeout_ms", "type": "number", "group": "security", "label": "HITL 审批超时(ms)", "labelKey": "settings.runtime.security.hitlTimeoutMs", "description": "手动确认模式下发审批的等待超时(超时按拒绝收敛)", "applies": "restart", "default": 180000, "min": 1000, "max": 86400000, "aliases": ["HITL_TIMEOUT_MS"] },
24
24
 
25
- { "key": "plugins.kb.base_url", "type": "string", "group": "plugins", "label": "知识库插件 API 地址", "labelKey": "settings.runtime.plugins.kbBaseUrl", "description": "rag-bridge 连接的 rag-knowledge 后端(http/https,host 限 127.0.0.1/localhost);保存即热生效", "applies": "live", "default": "http://127.0.0.1:8770" },
26
- { "key": "plugins.kb.web_url", "type": "string", "group": "plugins", "label": "知识库 Web 地址", "labelKey": "settings.runtime.plugins.kbWebUrl", "description": "rag-knowledge Web(文档写盘/目录);保存即热生效", "applies": "live", "default": "http://127.0.0.1:6789" },
27
- { "key": "plugins.diag.base_url", "type": "string", "group": "plugins", "label": "诊断插件 API 地址", "labelKey": "settings.runtime.plugins.diagBaseUrl", "description": "diag-bridge 连接的 industrial-deep-diagnostic 后端(http/https,host 限 127.0.0.1/localhost);保存即热生效", "applies": "live", "default": "http://127.0.0.1:3210" },
28
-
29
25
  { "key": "daq.startInfrastructure", "type": "select", "group": "daq", "label": "数采基础设施拉起策略", "labelKey": "settings.runtime.daq.startInfrastructure", "description": "auto=启动探测,不通且有 Docker 则自动拉起;always=仅 Docker 拉起;never=只直连", "applies": "live", "default": "auto", "options": ["auto", "always", "never"] },
30
26
  { "key": "daq.mqtt.host", "type": "string", "group": "daq", "label": "MQTT Broker 地址", "labelKey": "settings.runtime.daq.mqttHost", "description": "数采事件总线 MQTT 主机", "applies": "restart", "default": "127.0.0.1" },
31
27
  { "key": "daq.mqtt.port", "type": "number", "group": "daq", "label": "MQTT Broker 端口", "labelKey": "settings.runtime.daq.mqttPort", "description": "数采事件总线 MQTT 端口", "applies": "restart", "default": 1883, "min": 1, "max": 65535 },
@@ -44,8 +40,12 @@
44
40
  { "key": "daq.mqtt.rejectUnauthorized", "type": "boolean", "group": "daq", "label": "MQTT 校验证书", "labelKey": "settings.runtime.daq.mqttRejectUnauthorized", "description": "mqtts 是否校验服务端证书(自签调试可关)", "applies": "restart", "default": true, "aliases": ["DAQ_MQTT_REJECT_UNAUTHORIZED"] },
45
41
  { "key": "daq.sampling.defaultIntervalMs", "type": "number", "group": "daq", "label": "节点采样默认间隔(ms)", "labelKey": "settings.runtime.daq.samplingDefaultIntervalMs", "description": "数采节点未显式指定 intervalMs 时的采集周期(采样→入库→事件一拍)", "applies": "live", "default": 5000, "min": 200, "max": 60000, "aliases": ["DAQ_SAMPLING_DEFAULT_INTERVAL_MS"] },
46
42
  { "key": "daq.sampling.minIntervalMs", "type": "number", "group": "daq", "label": "节点采样下限(ms)", "labelKey": "settings.runtime.daq.samplingMinIntervalMs", "description": "数采节点允许配置的最小采样周期(create/patch/存量收敛统一钳制)", "applies": "live", "default": 1000, "min": 200, "max": 60000, "aliases": ["DAQ_SAMPLING_MIN_INTERVAL_MS"] },
43
+ { "key": "daq.publish.defaultIntervalMs", "type": "number", "group": "daq", "label": "WS 下发默认间隔(ms)", "labelKey": "settings.runtime.daq.publishDefaultIntervalMs", "description": "数采节点未显式指定 publishIntervalMs 时,给前端实时推送读数的间隔(与采集间隔解耦;0=随采集节拍每帧下发)", "applies": "live", "default": 1000, "min": 0, "max": 60000, "aliases": ["DAQ_PUBLISH_DEFAULT_INTERVAL_MS"] },
44
+ { "key": "daq.publish.minIntervalMs", "type": "number", "group": "daq", "label": "WS 下发下限(ms)", "labelKey": "settings.runtime.daq.publishMinIntervalMs", "description": "数采节点允许配置的最小 WS 下发间隔(0=允许每帧下发;调大可抑制前端刷新频率)", "applies": "live", "default": 0, "min": 0, "max": 60000, "aliases": ["DAQ_PUBLISH_MIN_INTERVAL_MS"] },
47
45
  { "key": "daq.query.defaultBucketMs", "type": "number", "group": "daq", "label": "时序查询默认间隔(ms)", "labelKey": "settings.runtime.daq.queryDefaultBucketMs", "description": "Timescale 查询未指定 bucketMs 时的降采样桶宽(samples/产线查询/Agent daq_query 共用)", "applies": "live", "default": 15000, "min": 100, "max": 3600000, "aliases": ["DAQ_QUERY_DEFAULT_BUCKET_MS"] },
48
46
  { "key": "daq.query.minBucketMs", "type": "number", "group": "daq", "label": "时序查询下限(ms)", "labelKey": "settings.runtime.daq.queryMinBucketMs", "description": "时序查询允许的最小降采样桶宽(传入更小值时钳到该下限)", "applies": "live", "default": 1000, "min": 100, "max": 3600000, "aliases": ["DAQ_QUERY_MIN_BUCKET_MS"] },
47
+ { "key": "daq.query.displayIntervalMs", "type": "number", "group": "daq", "label": "趋势图刷新间隔(ms)", "labelKey": "settings.runtime.daq.queryDisplayIntervalMs", "description": "数采详情页历史趋势图自动重新拉取(时序库查询并重绘)的间隔(与采集/WS 下发独立)", "applies": "live", "default": 5000, "min": 500, "max": 600000, "aliases": ["DAQ_QUERY_DISPLAY_INTERVAL_MS"] },
48
+ { "key": "daq.query.minDisplayIntervalMs", "type": "number", "group": "daq", "label": "趋势图刷新下限(ms)", "labelKey": "settings.runtime.daq.queryMinDisplayIntervalMs", "description": "前端允许配置的最小趋势图刷新间隔(传入更小值时钳到该下限,防止高频查询时序库)", "applies": "live", "default": 500, "min": 100, "max": 600000, "aliases": ["DAQ_QUERY_MIN_DISPLAY_INTERVAL_MS"] },
49
49
  { "key": "daq.tsRetentionH", "type": "number", "group": "daq", "label": "标量时序保留(h)", "labelKey": "settings.runtime.daq.tsRetentionH", "description": "SQLite 仿真库标量样本保留小时数(Timescale 由 hypertable 策略管理)", "applies": "restart", "default": 168, "min": 1, "max": 8760, "aliases": ["DAQ_TS_RETENTION_H"] },
50
50
  { "key": "daq.frameRetentionH", "type": "number", "group": "daq", "label": "帧元数据保留(h)", "labelKey": "settings.runtime.daq.frameRetentionH", "description": "daq_frames 帧元数据保留小时数", "applies": "restart", "default": 720, "min": 1, "max": 8760, "aliases": ["DAQ_FRAME_RETENTION_H"] },
51
51
  { "key": "daq.alarmWebhookUrl", "type": "string", "group": "daq", "label": "告警 Webhook", "labelKey": "settings.runtime.daq.alarmWebhookUrl", "description": "告警升级推送的 Webhook 地址(空=不推送)", "applies": "restart", "default": "", "aliases": ["ALARM_WEBHOOK_URL"] },
@@ -70,7 +70,15 @@
70
70
  { "key": "harness.opencode_command", "type": "string", "group": "harness", "label": "opencode 命令", "labelKey": "settings.runtime.harness.opencodeCommand", "description": "OpenCode 引擎可执行文件(PATH 解析)", "applies": "restart", "default": "opencode" },
71
71
  { "key": "harness.codex_command", "type": "string", "group": "harness", "label": "codex 命令", "labelKey": "settings.runtime.harness.codexCommand", "description": "OpenAI Codex CLI 可执行文件(app-server 模式)", "applies": "restart", "default": "codex" },
72
72
  { "key": "harness.dsh_command", "type": "string", "group": "harness", "label": "dsh 命令", "labelKey": "settings.runtime.harness.dshCommand", "description": "DeepSeek Harness 可执行文件(ACP 模式)", "applies": "restart", "default": "dsh" },
73
- { "key": "harness.hitl_timeout_ms", "type": "number", "group": "harness", "label": "引擎审批超时(ms)", "labelKey": "settings.runtime.harness.hitlTimeoutMs", "description": "codex/opencode/dsh 权限审批无人应答的自动拒绝时限(0=无限等待)", "applies": "restart", "default": 300000, "min": 0, "max": 3600000 },
73
+ { "key": "harness.gemini_command", "type": "string", "group": "harness", "label": "gemini 命令", "labelKey": "settings.runtime.harness.geminiCommand", "description": "Google Gemini CLI 可执行文件(stream-json 无头)", "applies": "restart", "default": "gemini" },
74
+ { "key": "harness.qwen_command", "type": "string", "group": "harness", "label": "qwen 命令", "labelKey": "settings.runtime.harness.qwenCommand", "description": "Qwen Code 可执行文件(experimental-acp 模式)", "applies": "restart", "default": "qwen" },
75
+ { "key": "harness.copilot_command", "type": "string", "group": "harness", "label": "copilot 命令", "labelKey": "settings.runtime.harness.copilotCommand", "description": "GitHub Copilot CLI 可执行文件(JSONL 无头)", "applies": "restart", "default": "copilot" },
76
+ { "key": "harness.cursor_command", "type": "string", "group": "harness", "label": "cursor 命令", "labelKey": "settings.runtime.harness.cursorCommand", "description": "Cursor CLI 可执行文件(stream-json 无头)", "applies": "restart", "default": "cursor-agent" },
77
+ { "key": "harness.crush_command", "type": "string", "group": "harness", "label": "crush 命令", "labelKey": "settings.runtime.harness.crushCommand", "description": "Charm Crush 可执行文件(run 非交互模式)", "applies": "restart", "default": "crush" },
78
+ { "key": "harness.goose_command", "type": "string", "group": "harness", "label": "goose 命令", "labelKey": "settings.runtime.harness.gooseCommand", "description": "Block Goose 可执行文件(run stream-json 无头)", "applies": "restart", "default": "goose" },
79
+ { "key": "harness.pi_command", "type": "string", "group": "harness", "label": "pi 命令", "labelKey": "settings.runtime.harness.piCommand", "description": "pi coding agent 可执行文件(-p --mode json 无头)", "applies": "restart", "default": "pi" },
80
+ { "key": "harness.hermes_command", "type": "string", "group": "harness", "label": "hermes 命令", "labelKey": "settings.runtime.harness.hermesCommand", "description": "Hermes Agent 可执行文件(acp 模式)", "applies": "restart", "default": "hermes" },
81
+ { "key": "harness.hitl_timeout_ms", "type": "number", "group": "harness", "label": "引擎审批超时(ms)", "labelKey": "settings.runtime.harness.hitlTimeoutMs", "description": "codex/opencode/dsh 权限审批无人应答的自动拒绝时限(0=无限等待)", "applies": "restart", "default": 300000, "min": 0, "max": 3600000 },
74
82
 
75
83
  { "key": "dcw.rollback_cooldown_ms", "type": "number", "group": "dcw", "label": "回退冷却(ms)", "labelKey": "settings.runtime.dcw.rollbackCooldownMs", "description": "回退执行后的同向冷却窗", "applies": "restart", "default": 300000, "min": 0, "max": 3600000 },
76
84
  { "key": "dcw.rollback_min_window_ms", "type": "number", "group": "dcw", "label": "回退最小观察窗(ms)", "labelKey": "settings.runtime.dcw.rollbackMinWindowMs", "description": "开记录后允许判定的最小观察窗", "applies": "restart", "default": 120000, "min": 0, "max": 3600000 },
@@ -90,6 +98,23 @@
90
98
  { "key": "retention.audit_days", "type": "number", "group": "retention", "label": "审计日志保留(天)", "labelKey": "settings.runtime.retention.auditDays", "description": "审计日志保留天数(合规观察期,从严保留)", "applies": "restart", "default": 90, "min": 1, "max": 3650 },
91
99
  { "key": "retention.approval_days", "type": "number", "group": "retention", "label": "审批历史保留(天)", "labelKey": "settings.runtime.retention.approvalDays", "description": "审批历史保留天数(历史裁决主张不可变,放宽)", "applies": "restart", "default": 180, "min": 1, "max": 3650 },
92
100
 
93
- { "key": "log.level", "type": "string", "group": "log", "label": "日志级别", "labelKey": "settings.runtime.log.level", "description": "服务端日志级别(debug/info/warn/error)", "applies": "restart", "default": "info", "aliases": ["AWSHOP_LOG_LEVEL"] }
101
+ { "key": "log.level", "type": "string", "group": "log", "label": "日志级别", "labelKey": "settings.runtime.log.level", "description": "服务端日志级别(debug/info/warn/error)", "applies": "restart", "default": "info", "aliases": ["AWSHOP_LOG_LEVEL"] },
102
+
103
+ { "key": "aml.python.pythonBin", "type": "string", "group": "aml", "label": "Python 解释器", "labelKey": "settings.runtime.aml.pythonBin", "description": "AML 训练运行时 Python 可执行名或绝对路径(空=自动探测 python/py -3)", "applies": "restart", "default": "", "aliases": ["AML_PYTHON_BIN"] },
104
+ { "key": "aml.python.uvBin", "type": "string", "group": "aml", "label": "uv 可执行", "labelKey": "settings.runtime.aml.uvBin", "description": "存在 uv 时优先用 uv 建 venv/装依赖(快且免管理员);空=自动探测", "applies": "restart", "default": "", "aliases": ["AML_UV_BIN"] },
105
+ { "key": "aml.python.indexUrl", "type": "string", "group": "aml", "label": "pip 镜像源", "labelKey": "settings.runtime.aml.indexUrl", "description": "venv 依赖安装的 PyPI 兼容镜像(空=默认源);仅 venv 供给阶段使用,训练进程不联网", "applies": "restart", "default": "", "aliases": ["AML_PYTHON_INDEX_URL"] },
106
+ { "key": "aml.job.timeoutMs", "type": "number", "group": "aml", "label": "作业墙钟超时(ms)", "labelKey": "settings.runtime.aml.jobTimeoutMs", "description": "单个训练作业的墙钟上限,超时杀整棵进程树", "applies": "live", "default": 1800000, "min": 30000, "max": 21600000, "aliases": ["AML_JOB_TIMEOUT_MS"] },
107
+ { "key": "aml.job.maxConcurrent", "type": "number", "group": "aml", "label": "最大并发作业", "labelKey": "settings.runtime.aml.jobMaxConcurrent", "description": "同时运行的训练子进程数上限(FIFO 队列)", "applies": "live", "default": 2, "min": 1, "max": 8, "aliases": ["AML_JOB_MAX_CONCURRENT"] },
108
+ { "key": "aml.job.diskQuotaMb", "type": "number", "group": "aml", "label": "AML 磁盘配额(MB)", "labelKey": "settings.runtime.aml.jobDiskQuotaMb", "description": "data/aml 目录总配额,超限拒绝新建数据集/作业并提示清扫", "applies": "live", "default": 2048, "min": 128, "max": 1048576, "aliases": ["AML_DISK_QUOTA_MB"] },
109
+ { "key": "aml.job.stallMs", "type": "number", "group": "aml", "label": "作业停摆判定(ms)", "labelKey": "settings.runtime.aml.jobStallMs", "description": "无进度协议输出持续该时长则判定停摆并终止作业", "applies": "live", "default": 600000, "min": 60000, "max": 7200000, "aliases": ["AML_JOB_STALL_MS"] },
110
+ { "key": "aml.dataset.maxRows", "type": "number", "group": "aml", "label": "数据集行数上限", "labelKey": "settings.runtime.aml.datasetMaxRows", "description": "单个数据集滑窗样本上限,超出建议加粗 beatMs", "applies": "live", "default": 200000, "min": 1000, "max": 5000000 },
111
+ { "key": "aml.dataset.retentionDays", "type": "number", "group": "aml", "label": "无引用数据集保留(天)", "labelKey": "settings.runtime.aml.datasetRetentionDays", "description": "无模型/实验引用的数据集快照保留天数(GC)", "applies": "live", "default": 30, "min": 1, "max": 3650 },
112
+ { "key": "aml.dataset.allowCrossRecipe", "type": "boolean", "group": "aml", "label": "允许跨 Recipe 合并", "labelKey": "settings.runtime.aml.allowCrossRecipe", "description": "默认禁止:不同热 Recipe 的样本严禁混入同一数据集(防噪音)", "applies": "live", "default": false },
113
+ { "key": "aml.model.retiredKeepDays", "type": "number", "group": "aml", "label": "退役模型工件保留(天)", "labelKey": "settings.runtime.aml.retiredKeepDays", "description": "retired 模型工件文件保留天数,过期删除(注册表行保留并标记 artifacts_pruned)", "applies": "live", "default": 90, "min": 1, "max": 3650 },
114
+ { "key": "aml.gates.nrmse", "type": "number", "group": "aml", "label": "门禁:单步 NRMSE", "labelKey": "settings.runtime.aml.gateNrmse", "description": "mpc_surrogate 门禁 G1:测试集单步 NRMSE 上限", "applies": "live", "default": 0.1, "min": 0.01, "max": 1 },
115
+ { "key": "aml.gates.rolloutNrmse", "type": "number", "group": "aml", "label": "门禁:多步滚动 NRMSE", "labelKey": "settings.runtime.aml.gateRolloutNrmse", "description": "mpc_surrogate 门禁 G2:horizon 步滚动预测测试集 NRMSE 上限(MPC 可用性关键指标)", "applies": "live", "default": 0.25, "min": 0.01, "max": 1 },
116
+ { "key": "aml.gates.valTestGap", "type": "number", "group": "aml", "label": "门禁:泛化差", "labelKey": "settings.runtime.aml.gateValTestGap", "description": "门禁 G3:|test-val|/val 相对差上限(防过拟合验证集)", "applies": "live", "default": 0.2, "min": 0.01, "max": 2 },
117
+ { "key": "aml.gates.minRows", "type": "number", "group": "aml", "label": "门禁:最少样本行", "labelKey": "settings.runtime.aml.gateMinRows", "description": "门禁 G4a:数据集滑窗样本行数下限", "applies": "live", "default": 500, "min": 50, "max": 1000000 },
118
+ { "key": "aml.gates.minRuns", "type": "number", "group": "aml", "label": "门禁:最少批次数", "labelKey": "settings.runtime.aml.gateMinRuns", "description": "门禁 G4b:数据集覆盖的批次(run)数下限", "applies": "live", "default": 3, "min": 1, "max": 1000 }
94
119
  ]
95
120
  }
@@ -443,6 +443,12 @@ export interface AepDaqControllerState {
443
443
  defaultIntervalMs: number
444
444
  /** 全局缺省 WS 下发间隔(节点 publishIntervalMs=null 时跟随;0 = 随采样节拍) */
445
445
  defaultPublishIntervalMs: number
446
+ /** WS 下发节拍下限(节点 publishIntervalMs 钳制;0 = 允许每帧) */
447
+ minPublishIntervalMs?: number
448
+ /** 前端趋势图自动拉取(时序库查询+重绘)间隔默认值 */
449
+ queryDisplayIntervalMs?: number
450
+ /** 前端趋势图刷新间隔下限 */
451
+ minQueryDisplayIntervalMs?: number
446
452
  nodesTotal: number
447
453
  nodesOnline: number
448
454
  /** 管线指标:生产/消费/队列丢失(produced-consumed)/时序库入库数 */
package/shared/lru.mjs ADDED
@@ -0,0 +1,94 @@
1
+ /**
2
+ * 有界 LRU —— 统一替换代码库里「无界 Map」与「超限整体 clear()」两种劣化写法。
3
+ *
4
+ * 现状问题(审计实测):
5
+ * · `daq-controller.ts` siblingsCache / opsWriteMemo:超限直接 clear() → 瞬时全量缓存穿透,
6
+ * 紧接着的请求全部回源,形成周期性抖动;
7
+ * · `dcw-controller.ts` opsWriteMemo / `manager.ts` reflectCounts / ownerNameCache:
8
+ * 完全无淘汰,长跑单调增长(ownerNameCache 有 TTL 判定但过期项只被覆盖、从不删除);
9
+ * · `monitor.ts`、`scene-events` 等处的按 key 节流表同型。
10
+ *
11
+ * 语义:get 命中即提升为最近使用;set 超限逐出最久未用;delete/clear 与 Map 同名。
12
+ * 保持 Map 的迭代顺序语义(插入序 → 访问序),因此 `for (const k of lru.keys())` 仍然可用。
13
+ */
14
+ export class LruMap {
15
+ /**
16
+ * @param {number} max 容量上限(≥1)
17
+ * @param {(key:any, value:any) => void} [onEvict] 逐出回调(可选,用于联动清理外部资源)
18
+ */
19
+ constructor(max, onEvict) {
20
+ if (!Number.isFinite(max) || max < 1) throw new Error('LruMap: max 必须是 ≥1 的数字')
21
+ this.max = Math.floor(max)
22
+ this.onEvict = typeof onEvict === 'function' ? onEvict : null
23
+ /** @type {Map<any, any>} 迭代顺序 = 由旧到新 */
24
+ this.map = new Map()
25
+ this.hits = 0
26
+ this.misses = 0
27
+ this.evictions = 0
28
+ }
29
+
30
+ get size() { return this.map.size }
31
+
32
+ has(key) { return this.map.has(key) }
33
+
34
+ get(key) {
35
+ if (!this.map.has(key)) { this.misses += 1; return undefined }
36
+ // 访问即提升:删了重插(值不变),维持「尾部最新」
37
+ const v = this.map.get(key)
38
+ this.map.delete(key)
39
+ this.map.set(key, v)
40
+ this.hits += 1
41
+ return v
42
+ }
43
+
44
+ /** 命中返回值,未命中用 fallback 计算并写入(单一入口,避免各处手写 get/set 样板) */
45
+ getOrSet(key, fallback) {
46
+ const hit = this.get(key)
47
+ if (hit !== undefined) return hit
48
+ const v = typeof fallback === 'function' ? fallback(key) : fallback
49
+ this.set(key, v)
50
+ return v
51
+ }
52
+
53
+ set(key, value) {
54
+ if (this.map.has(key)) this.map.delete(key)
55
+ this.map.set(key, value)
56
+ // while 而非 if:max 被下调或批量写入时可一次收敛
57
+ while (this.map.size > this.max) {
58
+ const oldest = this.map.keys().next().value
59
+ const val = this.map.get(oldest)
60
+ this.map.delete(oldest)
61
+ this.evictions += 1
62
+ this.onEvict?.(oldest, val)
63
+ }
64
+ return this
65
+ }
66
+
67
+ delete(key) { return this.map.delete(key) }
68
+
69
+ clear() { this.map.clear() }
70
+
71
+ keys() { return this.map.keys() }
72
+
73
+ values() { return this.map.values() }
74
+
75
+ entries() { return this.map.entries() }
76
+
77
+ [Symbol.iterator]() { return this.map[Symbol.iterator]() }
78
+
79
+ stats() {
80
+ const total = this.hits + this.misses
81
+ return {
82
+ size: this.map.size,
83
+ max: this.max,
84
+ hits: this.hits,
85
+ misses: this.misses,
86
+ evictions: this.evictions,
87
+ hitRate: total === 0 ? 0 : Number((this.hits / total).toFixed(4)),
88
+ }
89
+ }
90
+ }
91
+
92
+ export function createLru(max, onEvict) {
93
+ return new LruMap(max, onEvict)
94
+ }
@@ -121,9 +121,9 @@ export interface AepSceneLayout {
121
121
  /**
122
122
  * hitl.request payload:待人工处理条目的统一视图。
123
123
  * kind:omp 对话框(rpc-ui ask)/ dcw 工具审批 / codex 命令与文件审批 /
124
- * opencode 权限与提问 / dsh 权限请求。
124
+ * opencode 权限与提问 / dsh 权限请求 / claude canUseTool / qwen 工具确认。
125
125
  */
126
- export type AepHitlKind = 'omp-dialog' | 'dcw-approval' | 'codex-approval' | 'opencode-permission' | 'dsh-permission'
126
+ export type AepHitlKind = 'omp-dialog' | 'dcw-approval' | 'codex-approval' | 'opencode-permission' | 'dsh-permission' | 'claude-permission' | 'qwen-permission' | 'hermes-permission'
127
127
 
128
128
  export interface AepHitlItem {
129
129
  kind: AepHitlKind
@@ -1 +0,0 @@
1
- import{H as e,U as t,W as n,q as r}from"./rqZ-1SoP.js";import{C as i,F as a,G as o,H as s,Ht as c,St as l,Wt as u,a as d,b as f,et as p,f as m,ft as ee,g as h,h as g,mt as _,nt as te,p as v,rt as y,t as b,x,z as S}from"./BSCpFtzG.js";import{a as ne}from"./vJ4FPb-_.js";import{t as re}from"./D8CqF0yy.js";import{n as ie}from"./BeIfu4N3.js";import{t as ae}from"./DXRZPxGs.js";import{t as oe}from"./G0qIw7Gq2.js";import{t as se}from"./CNs_Ozdc2.js";import{t as ce}from"./BgCrZKv_2.js";import{a as le,n as C,t as ue}from"./bFnZa2yd.js";import{t as de}from"./rkVgzg62.js";var fe={class:`page`},pe={class:`aw-kicker`},me={class:`aw-page-head`},he={key:0,class:`err`},ge={key:1,class:`grid`},_e={class:`col-live`},ve={class:`aw-tile value-card`},ye={class:`aw-kicker`},be={class:`big-val mono`},xe={class:`facts mono`},Se={class:`col-form aw-tile pad`},Ce={class:`sec`},we={class:`field`},Te={class:`field`},Ee={value:``},De=[`value`],Oe={class:`field`},ke=[`value`,`disabled`],Ae={class:`field row`},je=[`disabled`],Me={class:`field row`},Ne=[`disabled`],Pe=[`disabled`],Fe={class:`field row`},Ie=[`disabled`],Le={class:`field`},Re={class:`field`},ze={class:`field-row`},Be={class:`field`},Ve={class:`field`},He={class:`field`},Ue={class:`field`},We=[`disabled`],Ge={class:`sec mt`},Ke={class:`driver-grid`},qe={key:0},Je=[`onUpdate:modelValue`],Ye=[`value`],Xe=[`onUpdate:modelValue`,`type`,`placeholder`],Ze={class:`test-row`},Qe=[`disabled`],$e={class:`sec mt`},et={class:`bind-row`},tt={value:``},nt=[`value`],rt={class:`col-hist aw-tile pad`},it={class:`hist-hd`},at={class:`sec`},ot={class:`hist-ctl mono`},st=[`value`],ct={class:`raw-table mono`},lt={key:2,class:`aw-tile pad frames-tile`},ut={class:`hist-hd`},dt={class:`sec`},ft={class:`mono frames-n`},pt=[`viewBox`],mt=[`points`],ht={class:`raw-table mono`},gt={key:0,class:`gal`},_t=[`title`,`onClick`],vt=[`src`],yt={class:`mono`},bt={key:1,class:`frames-empty`},xt=[`src`],St=320,Ct=84,wt=`#35e0a0`,Tt=`rgba(120,135,160,0.18)`,Et=`rgba(140,155,175,0.8)`,w=b(i({__name:`[id]`,setup(i){let{t:b}=ie();se({layout:`default`});let w=ne(),T=m(()=>String(w.params.id??``)),E=ue(),Dt=ce();Dt.load();let D=de(),O=m(()=>E.nodeById(T.value)??null),Ot=m(()=>{let e=O.value?le(O.value.templateRef):``;return E.templates.find(t=>t.key===e)??null}),kt={ok:b(`daqDetail.k41k5c026`),warn:b(`daqDetail.k49z8v027`),alarm:b(`daqDetail.k3xmid028`),offline:b(`daqDetail.k44c2n029`)},At=()=>{let e=O.value;return!e||!E.controller.running||!e.enabled?`offline`:e.state},jt=null;S(()=>{jt=E.ensureWsFeed(),E.load(),D.load(),A.value&&M()}),a(()=>jt?.());let k=m(()=>Ot.value?.signalKind??`scalar`),A=m(()=>k.value!==`scalar`),j=m(()=>E.framesOf(T.value));async function M(){T.value&&await E.fetchFrames(T.value,{limit:24}).catch(()=>{})}p(T,()=>{A.value&&M()});let N=e=>new Date(e).toLocaleTimeString(`zh-CN`,{hour12:!1}),Mt=e=>Object.entries(e.metrics??{}).slice(0,3).map(([e,t])=>`${e}=${t}`).join(` `),Nt=m(()=>j.value.find(e=>e.kind===`vector`&&e.points?.length)),Pt=m(()=>{let e=Nt.value?.points??[];if(e.length<2)return``;let t=Math.min(...e),n=Math.max(...e)-t||1;return e.map((r,i)=>`${(i/(e.length-1)*St).toFixed(1)},${(78-(r-t)/n*72).toFixed(1)}`).join(` `)}),P=_(null);function Ft(e){return e==null?b(`daqDetail.k9vnp9h053`,{p0:E.controller.defaultPublishIntervalMs}):e===0?b(`daqDetail.k1m1zwux030`):`${e}ms`}let F=ee({enabled:!0,driver:`mock`,lineId:``,followGlobal:!0,intervalMs:5e3,calKind:`none`,calScale:1,calOffset:0,publishFollow:!0,publishEveryFrame:!1,publishMs:1e3,unit:``,decimals:1,min:0,max:100,warnLow:null,warnHigh:null});p(O,e=>{e&&(F.enabled=e.enabled,F.lineId=e.lineId??``,F.driver=e.driver,F.followGlobal=e.intervalMs==null,F.intervalMs=e.intervalMs??E.controller.defaultIntervalMs,F.publishFollow=e.publishIntervalMs==null,F.publishEveryFrame=e.publishIntervalMs===0,F.publishMs=e.publishIntervalMs==null?E.controller.defaultPublishIntervalMs:e.publishIntervalMs,F.unit=e.unit,F.decimals=e.decimals,F.min=e.min,F.max=e.max,F.warnLow=e.warnLow,F.warnHigh=e.warnHigh)},{immediate:!0});let I=_({}),L=m(()=>C.find(e=>e.kind===F.driver)?.configFields??[]);p(O,e=>{e&&(I.value={...e.driverConfig})},{immediate:!0}),p(()=>F.driver,()=>{if(L.value.length&&Object.keys(I.value).length===0){let e={};for(let t of L.value)t.default!==void 0&&(e[t.key]=t.default);I.value=e}},{immediate:!0});let R=_(!1),z=_(null);async function It(){R.value=!0,z.value=null;try{await E.patchNode(T.value,{driver:F.driver,driverConfig:{...I.value}}),z.value=await E.testNode(T.value)}catch(e){z.value={ok:!1,message:oe(e)}}finally{R.value=!1}}let B=_(!1);async function Lt(){let e=O.value;if(!(!e||B.value)){B.value=!0;try{await E.patchNode(e.id,{enabled:F.enabled,driver:F.driver,lineId:F.lineId,driverConfig:{...I.value},intervalMs:F.followGlobal?null:Math.max(1e3,Math.min(6e4,Math.round(F.intervalMs))),publishIntervalMs:F.publishFollow?null:F.publishEveryFrame?0:Math.max(0,Math.min(6e4,Math.round(F.publishMs))),unit:F.unit,decimals:Math.max(0,Math.min(6,Math.round(F.decimals))),min:F.min,max:F.max,warnLow:F.warnLow,warnHigh:F.warnHigh})}finally{B.value=!1}}}function Rt(e){return E.meta.drivers.find(t=>t.kind===e)?.status===`planned`}let V=_(``),H=m(()=>(O.value?.deviceIds??(O.value?.deviceBindingId?[O.value.deviceBindingId]:[])).map(e=>D.twins.find(t=>t.id===e)?.name??`${e.slice(0,8)}…`).join(` / `));function zt(){E.bindNode(T.value,O.value?.deviceBindingId?null:V.value||null)}let Bt=m(()=>D.twins.filter(e=>e.kind!==`daq`&&e.id!==O.value?.id)),U=_([]),W=_(15e3),G=_(!1),Vt=[{label:`1s 桶`,ms:1e3},{label:`5s 桶`,ms:5e3},{label:`15s 桶(默认)`,ms:15e3},{label:`30s 桶`,ms:3e4},{label:`1min 桶`,ms:6e4}];async function K(){if(T.value){G.value=!0;try{let e=await E.samplesOf(T.value,{toMs:Date.now(),bucketMs:W.value||void 0,limit:400});U.value=[...e].reverse()}finally{G.value=!1,Ut()}}}let Ht=_(null);function Ut(){let e=Ht.value;if(!e)return;let t=Math.min(window.devicePixelRatio||1,2),n=e.clientWidth,r=e.clientHeight;(e.width!==n*t||e.height!==r*t)&&(e.width=n*t,e.height=r*t);let i=e.getContext(`2d`);if(!i)return;i.setTransform(t,0,0,t,0,0),i.clearRect(0,0,n,r);for(let e=1;e<4;e++)i.strokeStyle=Tt,i.beginPath(),i.moveTo(0,r/4*e),i.lineTo(n,r/4*e),i.stroke();let a=U.value;if(a.length<2)return;let o=1/0,s=-1/0;for(let e of a){let t=e.value??e.avg??e.min??0;o=Math.min(o,t),s=Math.max(s,t)}let c=Math.max(s-o,1e-9);i.strokeStyle=Et,i.font=`10px monospace`,i.fillStyle=Et,i.fillText(s.toFixed(2),4,11),i.fillText(o.toFixed(2),4,r-4),i.strokeStyle=wt,i.lineWidth=1.6,i.beginPath(),a.forEach((e,t)=>{let s=t/(a.length-1)*n,l=r-((e.value??e.avg??0)-o)/c*(r-16)-8;t===0?i.moveTo(s,l):i.lineTo(s,l)}),i.stroke()}let q=_(null),J=null,Y=``;function X(){let e=q.value,t=O.value;if(!e||!t||t.hist.length<2)return;let n=`${t.hist.length}:${t.hist[t.hist.length-1]}:${t.hist[0]}`;if(n===Y)return;Y=n;let r=Math.min(window.devicePixelRatio||1,2),i=e.clientWidth,a=e.clientHeight;(e.width!==i*r||e.height!==a*r)&&(e.width=i*r,e.height=a*r);let o=e.getContext(`2d`);if(!o)return;o.setTransform(r,0,0,r,0,0),o.clearRect(0,0,i,a);let s=Math.max(...t.hist),c=Math.min(...t.hist),l=Math.max(s-c,1e-9);o.strokeStyle=`rgba(65,200,244,0.9)`,o.lineWidth=1.5,o.beginPath(),t.hist.forEach((e,n)=>{let r=n/(t.hist.length-1)*i,s=a-(e-c)/l*(a-6)-3;n===0?o.moveTo(r,s):o.lineTo(r,s)}),o.stroke()}let Z=null,Q=!1;function $(){Q=document.hidden,Q||X()}return S(()=>{K(),J=ae(()=>{Q||X()},800),document.addEventListener(`visibilitychange`,$),typeof ResizeObserver<`u`&&(Z=new ResizeObserver(()=>{Y=``,X(),Ut()}),q.value&&Z.observe(q.value))}),a(()=>{J&&clearInterval(J),document.removeEventListener(`visibilitychange`,$),Z?.disconnect(),Z=null}),p(W,()=>void K()),(i,a)=>{let p=re;return s(),h(`div`,fe,[v(`p`,pe,[x(p,{to:`/daq`,class:`back`},{default:te(()=>[f(u(i.$t(`daqDetail.k1emg364001`)),1)]),_:1}),f(` / NODE `+u(T.value.slice(0,8).toUpperCase()),1)]),v(`div`,me,[v(`h1`,null,u(O.value?.name??T.value),1),v(`span`,{class:c([`st-pill`,[At()]])},u(kt[At()]),3)]),!O.value&&l(E).error?(s(),h(`p`,he,[f(u(l(E).error)+`(`,1),x(p,{to:`/workshop`},{default:te(()=>[f(u(i.$t(`daqDetail.k1bhhheq002`)),1)]),_:1}),a[20]||=f(`) `,-1)])):g(``,!0),O.value?(s(),h(`div`,ge,[v(`section`,_e,[v(`div`,ve,[v(`p`,ye,u(i.$t(`daqDetail.k1fx2vik032`))+` `+u(Ot.value?.ch??`-`),1),v(`div`,be,[f(u(O.value.value==null?`--`:O.value.value.toFixed(O.value.decimals)),1),v(`small`,null,u(O.value.unit),1)]),v(`canvas`,{ref_key:`liveCanvas`,ref:q,class:`live-canvas`},null,512),v(`dl`,xe,[v(`div`,null,[v(`dt`,null,u(i.$t(`daqDetail.k4a0la003`)),1),v(`dd`,null,u(O.value.driver)+u(Rt(O.value.driver)?i.$t(`daqDetail.kz8zr9v035`):``),1)]),v(`div`,null,[v(`dt`,null,u(i.$t(`daqDetail.k3xg3w004`)),1),v(`dd`,null,u(O.value.intervalMs??i.$t(`daqDetail.k9vnp9h053`,{p0:l(E).controller.defaultIntervalMs})),1)]),v(`div`,null,[v(`dt`,null,u(i.$t(`daqDetail.k3w6td005`)),1),v(`dd`,null,u(Ft(O.value.publishIntervalMs)),1)]),v(`div`,null,[v(`dt`,null,u(i.$t(`daqDetail.k3x5tpx006`)),1),v(`dd`,null,u(O.value.warnLow??`-∞`)+` ~ `+u(O.value.warnHigh??`+∞`),1)]),v(`div`,null,[v(`dt`,null,u(i.$t(`daqDetail.k1hjj0jf007`)),1),v(`dd`,null,u(O.value.min)+` ~ `+u(O.value.max),1)]),v(`div`,null,[v(`dt`,null,u(i.$t(`daqDetail.k1i8rtqt008`)),1),v(`dd`,null,u(H.value||i.$t(`daqDetail.k3own4q036`)),1)])])])]),v(`section`,Se,[v(`h3`,Ce,u(i.$t(`daqDetail.kd9d69j009`)),1),v(`form`,{class:`form-grid`,onSubmit:r(Lt,[`prevent`])},[v(`label`,we,[v(`span`,null,u(i.$t(`daqDetail.k1iw7tbf010`)),1),v(`button`,{type:`button`,class:c([`toggle`,{on:F.enabled}]),onClick:a[0]||=e=>F.enabled=!F.enabled},u(F.enabled?i.$t(`daqDetail.k3w3j8f037`):i.$t(`daqDetail.k3n5aaj045`)),3)]),v(`label`,Te,[v(`span`,null,u(i.$t(`daqDetail.k12k23od011`)),1),y(v(`select`,{"onUpdate:modelValue":a[1]||=e=>F.lineId=e,class:`input`},[v(`option`,Ee,u(i.$t(`daqDetail.k3ootr6012`)),1),(s(!0),h(d,null,o(l(Dt).lines,e=>(s(),h(`option`,{key:e.id,value:e.id},u(e.name),9,De))),128))],512),[[t,F.lineId]])]),v(`label`,Oe,[v(`span`,null,u(i.$t(`daqDetail.k1l6smxo013`)),1),y(v(`select`,{"onUpdate:modelValue":a[2]||=e=>F.driver=e,class:`input`},[(s(!0),h(d,null,o(l(C),e=>(s(),h(`option`,{key:e.kind,value:e.kind,disabled:e.status===`planned`},u(e.label)+u(e.status===`planned`?i.$t(`daqDetail.kz8zr9v035`):``),9,ke))),128))],512),[[t,F.driver]])]),v(`label`,Ae,[v(`button`,{type:`button`,class:c([`toggle slim`,{on:F.followGlobal}]),onClick:a[3]||=e=>F.followGlobal=!F.followGlobal},u(F.followGlobal?i.$t(`daqDetail.k1k2ueyq038`):i.$t(`daqDetail.k1cgi8fy046`)),3),y(v(`input`,{"onUpdate:modelValue":a[4]||=e=>F.intervalMs=e,type:`number`,min:`1000`,max:`60000`,step:`500`,class:`input`,disabled:F.followGlobal},null,8,je),[[n,F.intervalMs,void 0,{number:!0}]]),a[21]||=v(`small`,null,`ms`,-1)]),v(`label`,Me,[v(`button`,{type:`button`,class:c([`toggle slim`,{on:F.calKind===`linear`}]),title:`采集标定 decoder:物理值 = scale × PLC采集值 + offset`,onClick:a[5]||=e=>F.calKind=F.calKind===`linear`?`none`:`linear`},u(F.calKind===`linear`?i.$t(`daqDetail.k1eru4r1039`):i.$t(`daqDetail.k3oktae047`)),3),y(v(`input`,{"onUpdate:modelValue":a[6]||=e=>F.calScale=e,type:`number`,step:`0.1`,class:`input`,disabled:F.calKind!==`linear`,title:`decode 斜率(≠0)`},null,8,Ne),[[n,F.calScale,void 0,{number:!0}]]),y(v(`input`,{"onUpdate:modelValue":a[7]||=e=>F.calOffset=e,type:`number`,step:`0.1`,class:`input`,disabled:F.calKind!==`linear`,title:`decode 截距`},null,8,Pe),[[n,F.calOffset,void 0,{number:!0}]]),a[22]||=v(`small`,null,`decoder`,-1)]),v(`label`,Fe,[v(`button`,{type:`button`,class:c([`toggle slim`,{on:F.publishFollow}]),onClick:a[8]||=e=>F.publishFollow=!F.publishFollow},u(F.publishFollow?i.$t(`daqDetail.k1k2t5o7040`):i.$t(`daqDetail.k1cggz5f048`)),3),v(`span`,{class:c([`toggle slim`,{on:F.publishEveryFrame}]),style:{cursor:`pointer`},onClick:a[9]||=e=>F.publishEveryFrame=!F.publishEveryFrame},u(F.publishEveryFrame?i.$t(`daqDetail.k41mvv041`):i.$t(`daqDetail.k3n42dj049`)),3),y(v(`input`,{"onUpdate:modelValue":a[10]||=e=>F.publishMs=e,type:`number`,min:`0`,max:`60000`,step:`100`,class:`input`,disabled:F.publishFollow||F.publishEveryFrame},null,8,Ie),[[n,F.publishMs,void 0,{number:!0}]]),a[23]||=v(`small`,null,`ms`,-1)]),v(`label`,Le,[v(`span`,null,u(i.$t(`daqDetail.k3x4ef014`)),1),y(v(`input`,{"onUpdate:modelValue":a[11]||=e=>F.unit=e,class:`input`},null,512),[[n,F.unit]])]),v(`label`,Re,[v(`span`,null,u(i.$t(`daqDetail.k3mxmcx015`)),1),y(v(`input`,{"onUpdate:modelValue":a[12]||=e=>F.decimals=e,type:`number`,min:`0`,max:`6`,class:`input`},null,512),[[n,F.decimals,void 0,{number:!0}]])]),v(`div`,ze,[v(`label`,Be,[v(`span`,null,u(i.$t(`daqDetail.k1l9jv5m016`)),1),y(v(`input`,{"onUpdate:modelValue":a[13]||=e=>F.min=e,type:`number`,step:`any`,class:`input`},null,512),[[n,F.min,void 0,{number:!0}]])]),v(`label`,Ve,[v(`span`,null,u(i.$t(`daqDetail.k1md63hm017`)),1),y(v(`input`,{"onUpdate:modelValue":a[14]||=e=>F.warnLow=e,type:`number`,step:`any`,class:`input`},null,512),[[n,F.warnLow,void 0,{number:!0}]])]),v(`label`,He,[v(`span`,null,u(i.$t(`daqDetail.k1md63gp018`)),1),y(v(`input`,{"onUpdate:modelValue":a[15]||=e=>F.warnHigh=e,type:`number`,step:`any`,class:`input`},null,512),[[n,F.warnHigh,void 0,{number:!0}]])]),v(`label`,Ue,[v(`span`,null,u(i.$t(`daqDetail.k1l9jv4p019`)),1),y(v(`input`,{"onUpdate:modelValue":a[16]||=e=>F.max=e,type:`number`,step:`any`,class:`input`},null,512),[[n,F.max,void 0,{number:!0}]])])]),v(`button`,{class:`aw-pill`,type:`submit`,disabled:B.value},u(B.value?i.$t(`daqDetail.k1as0g50042`):i.$t(`daqDetail.ksn9cgo050`)),9,We)],32),L.value.length?(s(),h(d,{key:0},[v(`h3`,Ge,u(i.$t(`daqDetail.k1p9gioa033`))+` `+u(l(C).find(e=>e.kind===F.driver)?.label),1),v(`div`,Ke,[(s(!0),h(d,null,o(L.value,n=>(s(),h(`label`,{key:n.key,class:`field`},[v(`span`,null,[f(u(n.label),1),n.required?(s(),h(`em`,qe,`*`)):g(``,!0)]),n.type===`select`?y((s(),h(`select`,{key:0,"onUpdate:modelValue":e=>I.value[n.key]=e,class:`input`},[(s(!0),h(d,null,o(n.options,e=>(s(),h(`option`,{key:e.value,value:e.value},u(e.label),9,Ye))),128))],8,Je)),[[t,I.value[n.key]]]):y((s(),h(`input`,{key:1,"onUpdate:modelValue":e=>I.value[n.key]=e,type:n.type===`number`?`number`:`text`,placeholder:n.placeholder,class:`input`},null,8,Xe)),[[e,I.value[n.key]]])]))),128))]),v(`div`,Ze,[v(`button`,{class:`pill-btn`,disabled:R.value,onClick:It},u(R.value?i.$t(`daqDetail.k1fsh720043`):i.$t(`daqDetail.k1fstglk051`)),9,Qe),z.value?(s(),h(`span`,{key:0,class:c([`test-out mono`,z.value.ok?`ok`:`bad`])},u(z.value.ok?`✓`:`✗`)+` `+u(z.value.message),3)):g(``,!0)])],64)):g(``,!0),v(`h3`,$e,u(i.$t(`daqDetail.k1ie6qju020`)),1),v(`div`,et,[y(v(`select`,{"onUpdate:modelValue":a[17]||=e=>V.value=e,class:`input grow`},[v(`option`,tt,u(i.$t(`daqDetail.kjobzu3021`)),1),(s(!0),h(d,null,o(Bt.value,e=>(s(),h(`option`,{key:e.id,value:e.id},u(e.name),9,nt))),128))],512),[[t,V.value]]),v(`button`,{class:`pill-btn`,onClick:zt},u(H.value?i.$t(`daqDetail.k479eh044`):i.$t(`daqDetail.k452a8052`)),1)])]),v(`section`,rt,[v(`div`,it,[v(`h3`,at,u(i.$t(`daqDetail.k1i535i5034`))+u(l(E).meta.tsdb)+`) `,1),v(`div`,ot,[y(v(`select`,{"onUpdate:modelValue":a[18]||=e=>W.value=e,class:`input`},[(s(),h(d,null,o(Vt,e=>v(`option`,{key:e.ms,value:e.ms},u(e.label),9,st)),64))],512),[[t,W.value,void 0,{number:!0}]]),v(`button`,{class:`pill-btn`,onClick:K},u(i.$t(`daqDetail.k3x1jg022`)),1)])]),v(`canvas`,{ref_key:`chartCanvas`,ref:Ht,class:`hist-canvas`},null,512),v(`table`,ct,[v(`thead`,null,[v(`tr`,null,[v(`th`,null,u(i.$t(`daqDetail.k40vsf023`)),1),v(`th`,null,u(i.$t(`daqDetail.k48v5024`)),1),v(`th`,null,u(i.$t(`daqDetail.k4bza025`)),1)])]),v(`tbody`,null,[(s(!0),h(d,null,o(U.value.filter(e=>e.value!=null).slice(-12).reverse(),(e,t)=>(s(),h(`tr`,{key:t},[v(`td`,null,u(new Date(e.at).toLocaleTimeString(`zh-CN`,{hour12:!1})),1),v(`td`,null,u(e.value.toFixed(O.value?.decimals??2)),1),v(`td`,null,u(e.state),1)]))),128))])])])])):g(``,!0),A.value?(s(),h(`section`,lt,[v(`div`,ut,[v(`h3`,dt,[f(u(k.value===`image`?i.$t(`daqDetail.kfrm0001`):i.$t(`daqDetail.kfrm0002`))+` `,1),v(`span`,ft,u(j.value.length),1)]),v(`button`,{class:`pill-btn`,onClick:M},u(i.$t(`daqDetail.k3x1jg022`)),1)]),k.value===`vector`?(s(),h(d,{key:0},[(s(),h(`svg`,{class:`vec-svg`,viewBox:`0 0 ${St} ${Ct}`,preserveAspectRatio:`none`},[v(`polyline`,{points:Pt.value,fill:`none`,stroke:`var(--accent)`,"stroke-width":`1.5`},null,8,mt)],8,pt)),v(`table`,ht,[v(`thead`,null,[v(`tr`,null,[v(`th`,null,u(i.$t(`daqDetail.k40vsf023`)),1),v(`th`,null,u(i.$t(`daqDetail.kfrm0004`)),1),v(`th`,null,u(i.$t(`daqDetail.kfrm0005`)),1)])]),v(`tbody`,null,[(s(!0),h(d,null,o(j.value.filter(e=>e.kind===`vector`).slice(0,12),e=>(s(),h(`tr`,{key:e.at},[v(`td`,null,u(N(e.at)),1),v(`td`,null,u(e.points?.length??0),1),v(`td`,null,u(Mt(e)),1)]))),128))])])],64)):(s(),h(d,{key:1},[j.value.length?(s(),h(`div`,gt,[(s(!0),h(d,null,o(j.value,e=>(s(),h(`figure`,{key:e.at,class:`gal-item`,title:i.$t(`daqDetail.kfrm0006`),onClick:t=>P.value=e},[v(`img`,{src:e.thumbUrl,loading:`lazy`,alt:`daq frame`},null,8,vt),v(`figcaption`,yt,u(N(e.at))+` · `+u(Mt(e)),1)],8,_t))),128))])):(s(),h(`p`,bt,u(i.$t(`daqDetail.kfrm0003`)),1)),P.value?(s(),h(`div`,{key:2,class:`gal-full`,onClick:a[19]||=e=>P.value=null},[v(`img`,{src:P.value.contentUrl??P.value.thumbUrl,alt:`daq frame full`},null,8,xt)])):g(``,!0)],64))])):g(``,!0)])}}}),[[`__scopeId`,`data-v-3f765e2c`]]);export{w as default};
@@ -1 +0,0 @@
1
- import{ft as e}from"./BSCpFtzG.js";import{t}from"./G0qIw7Gq2.js";import{t as n}from"./36oeS8_R2.js";import{i as r}from"./BgCrZKv_2.js";var i=40,a=(e,t)=>r({base:`/api/workshop/ops-logs`,path:e,init:t});function o(e){return{id:0,actor:e.actor,actorName:e.actorName||e.actor,actorKind:e.actorKind,action:e.action,targetKind:e.targetKind,targetId:e.targetId,detailJson:``,at:e.at,lineId:e.lineId,productId:e.productId,recipeId:e.recipeId,kind:e.kind,summary:e.summary}}var s=()=>{let r=e([]),s=e([]),c=e({list:!1,posting:!1}),l=e({list:``,post:``}),u=0,d=null;function f(){u++,u===1&&(m(),d=n().subscribe(p));let e=!1;return()=>{e||(e=!0,--u===0&&(d?.(),d=null))}}function p(e){if(e.type===`ops.log`){let t=o(e.payload);r.some(e=>e.at===t.at&&e.actor===t.actor&&e.action===t.action)||(r.unshift(t),r.length>i&&r.splice(i))}}async function m(){try{let e=await a(`?limit=15`);for(let t of(e.logs??[]).reverse())r.some(e=>e.at===t.at&&e.actor===t.actor&&e.action===t.action)||r.unshift(t)}catch{}}async function h(e={}){c.list=!0,l.list=``;try{let t=new URLSearchParams;for(let[n,r]of Object.entries(e))r!=null&&r!==``&&t.set(n,String(r));let n=await a(`?${t.toString()}`);s.splice(0,s.length,...n.logs??[])}catch(e){l.list=t(e)}finally{c.list=!1}}async function g(e){c.posting=!0,l.post=``;try{await a(``,{method:`POST`,body:JSON.stringify(e)})}catch(e){throw l.post=t(e),e}finally{c.posting=!1}}return e({recent:r,results:s,loading:c,error:l,ensureLive:f,fetchLogs:h,postManual:g})},c=`__opsLogStream`;function l(){let e=globalThis;return e[c]||(e[c]=s()),e[c]}export{l as t};
@@ -1 +0,0 @@
1
- import{I as e,U as t,V as n,W as r,q as i}from"./rqZ-1SoP.js";import{C as a,G as o,H as s,Ht as c,St as l,Ut as u,Wt as d,a as f,b as p,f as m,ft as h,g,h as _,mt as v,nt as y,p as b,rt as x,t as S,x as C}from"./BSCpFtzG.js";import{t as ee}from"./D8CqF0yy.js";import{n as te}from"./BeIfu4N3.js";import{t as w}from"./G0qIw7Gq2.js";import{r as T,t as ne}from"./BgCrZKv_2.js";var re={class:`page`},ie={class:`aw-page-head`},ae={class:`sub`},oe={class:`badges mono`},se=[`title`],ce={class:`badge`},le={key:0,class:`banner bad`},ue={class:`fleet-filter`},de={class:`aw-seg`},fe=[`placeholder`],pe={class:`line-grid aw-stagger`},me={class:`lc-head`},he={class:`lc-name`},ge=[`title`,`onClick`],_e=[`title`,`onClick`],ve={key:0,class:`lc-run mono`},ye={class:`lc-stats mono`},be={class:`lc-ctl`},xe=[`onUpdate:modelValue`,`disabled`,`title`],Se={value:``},Ce=[`value`,`disabled`],we=[`disabled`,`onClick`],Te=[`disabled`,`onClick`],Ee={key:1,class:`banner`},De={key:2,class:`banner`},Oe={class:`modal`},ke={class:`m-title`},Ae={class:`f`},je=[`placeholder`],Me={class:`f`},Ne=[`placeholder`],Pe={class:`f`},Fe={class:`color-row`},Ie=[`onClick`],Le={class:`dim`},Re={key:0,class:`m-err`},ze={class:`m-actions`},Be=[`disabled`],Ve={class:`modal`},He={class:`m-title`},Ue={class:`f`},We=[`placeholder`],Ge={class:`f`},Ke=[`placeholder`],qe={class:`f`},Je={class:`color-row`},Ye=[`onClick`],Xe={class:`dim`},Ze={key:0,class:`m-err`},Qe={class:`m-actions`},$e=[`disabled`],et={class:`modal`},tt={class:`m-title danger-title`},nt={class:`del-summary`},rt={class:`del-purge`},it={key:0,class:`m-err`},at={class:`m-actions`},ot=[`disabled`],st={class:`modal wide`},ct={class:`m-title`},lt={class:`dim mono`},ut={class:`dim tpl-hint`},dt={class:`tpl-list`},ft=[`title`],pt={class:`mono dim`},mt={key:0,class:`tpl-sem`},ht=[`onClick`],gt={class:`sec-label`},_t={class:`tpl-form`},vt={class:`f`},yt=[`placeholder`],bt={class:`f`},xt=[`placeholder`],St={class:`f`},Ct={class:`f`},wt={class:`f`},Tt={class:`f`},Et={class:`f`},Dt={class:`f`},Ot=[`value`],kt={class:`f`},At=[`placeholder`],jt={key:0,class:`m-err`},Mt={class:`m-actions`},Nt=[`disabled`],Pt={key:3,class:`banner bad`},E=S(a({__name:`index`,setup(a){let{t:S}=te(),E=ne();E.load();let D=m(()=>E.lines.map(e=>({line:e,nodes:E.nodes.filter(t=>t.lineId===e.id).length,products:E.products.filter(t=>t.lineId===e.id).length,recipes:E.recipes.filter(t=>t.lineId===e.id).length}))),O=m(()=>E.nodes.filter(e=>!e.lineId).length+E.products.filter(e=>!e.lineId).length),k=v(`all`),A=v(``),j=m(()=>D.value.filter(e=>E.lineStateOf(e.line.id).active).length),M=m(()=>D.value.filter(e=>{let t=E.lineStateOf(e.line.id).active;if(k.value===`running`&&!t||k.value===`idle`&&t)return!1;let n=A.value.trim().toLowerCase();return!(n&&!e.line.name.toLowerCase().includes(n)&&!(e.line.description??``).toLowerCase().includes(n))})),N=v(!1),P=v(!1),F=v(``),I=h({name:``,description:``,color:``}),L=m(()=>T[E.lines.length%T.length]??`#3aa0ff`);function Ft(){I.name=``,I.description=``,I.color=``,F.value=``,N.value=!0}async function It(){P.value=!0,F.value=``;try{await E.createLine({name:I.name.trim(),description:I.description.trim(),color:I.color||void 0}),N.value=!1}catch(e){F.value=w(e)}finally{P.value=!1}}let R=v(``),z=v(``),B=h({});async function Lt(e){R.value=e.line.id,z.value=``;try{let t=B[e.line.id]??``;if(!t)throw Error(S(`dcw.k188cswn039`));await E.startLine(e.line.id,t)}catch(e){z.value=w(e)}finally{R.value=``}}async function Rt(e){R.value=e.line.id,z.value=``;try{await E.stopLine(e.line.id)}catch(e){z.value=w(e)}finally{R.value=``}}function V(e){return E.recipes.filter(t=>t.lineId===e)}let H=v(!1),U=v(!1),W=v(``),G=v(!0),K=v(null);function zt(e){K.value=e,G.value=!0,W.value=``,H.value=!0}async function Bt(){if(K.value){U.value=!0,W.value=``;try{await E.removeLine(K.value.line.id,G.value),H.value=!1}catch(e){W.value=w(e)}finally{U.value=!1}}}let q=v(!1),J=v(!1),Y=v(``),X=h({id:``,name:``,description:``,color:``});function Vt(e){X.id=e.line.id,X.name=e.line.name,X.description=e.line.description,X.color=e.line.color,Y.value=``,q.value=!0}async function Ht(){J.value=!0,Y.value=``;try{await E.updateLine(X.id,{name:X.name.trim(),description:X.description.trim(),color:X.color||void 0}),q.value=!1}catch(e){Y.value=w(e)}finally{J.value=!1}}let Z=v(!1),Q=v(``),$=h({name:``,ch:``,code:``,unit:``,min:``,max:``,decimals:1,icon:`gateway`,semantics:``}),Ut=[{key:`thermo`,label:S(`dcw.k422b8040`)},{key:`pressure`,label:S(`dcw.k3x6ff041`)},{key:`tension`,label:S(`dcw.k3z9xc042`)},{key:`encoder`,label:S(`dcw.kjb3vhs043`)},{key:`camera`,label:S(`dcw.k47atw044`)},{key:`gateway`,label:S(`dcw.k48c07045`)}];async function Wt(){Q.value=``;try{if(!$.name.trim())throw Error(S(`dcw.k6ugbw2046`));if($.min===``||$.max===``)throw Error(S(`dcw.k13awowo047`));await E.createTemplate({name:$.name.trim(),ch:$.ch.trim()||$.name.trim(),code:$.code.trim()||`CUSTOM`,unit:$.unit.trim()||`-`,min:Number($.min),max:Number($.max),decimals:Number($.decimals)||0,icon:$.icon,semantics:$.semantics.trim()||void 0}),$.name=``,$.ch=``,$.code=``,$.unit=``,$.min=``,$.max=``}catch(e){Q.value=w(e)}}async function Gt(e){Q.value=``;try{await fetch(`/api/workshop/dcw/templates/${e}`,{method:`DELETE`,headers:{authorization:`Bearer ${document.cookie.match(/(?:^|;\s*)token=([^;]+)/)?.[1]??``}`}}).then(async e=>{let t=await e.json().catch(()=>({}));if(t?.code!==0)throw Error(t?.message??S(`dcw.k1bphrb3048`))});let t=E.templates.findIndex(t=>t.key===e);t>=0&&E.templates.splice(t,1)}catch(e){Q.value=w(e)}}let Kt=m(()=>E.templates.filter(e=>e.builtin).length);return(a,m)=>{let h=ee;return s(),g(`div`,re,[b(`div`,ie,[b(`div`,null,[m[27]||=b(`p`,{class:`aw-kicker`},` AGENTWORKSHOP / LINE OPERATIONS `,-1),b(`h1`,null,d(a.$t(`dcw.k1b2tk5c009`)),1),b(`p`,ae,d(a.$t(`dcw.k5q0aqi010`)),1)]),b(`div`,oe,[O.value?(s(),g(`span`,{key:0,class:`badge warn-badge`,title:a.$t(`dcw.k1i5a9vw001`)},d(a.$t(`dcw.k3ootr6049`))+` `+d(O.value),9,se)):_(``,!0),b(`span`,ce,d(a.$t(`dcw.k3wj9n050`))+` `+d(l(E).lines.length),1),b(`button`,{class:`badge tpl-btn`,onClick:m[0]||=e=>Z.value=!0},d(a.$t(`dcw.k11nndsp051`))+` `+d(l(E).templates.length),1)])]),z.value?(s(),g(`p`,le,d(z.value),1)):_(``,!0),b(`div`,ue,[b(`div`,de,[b(`button`,{class:c({on:k.value===`all`}),onClick:m[1]||=e=>k.value=`all`},d(a.$t(`common.all`))+` `+d(D.value.length),3),b(`button`,{class:c({on:k.value===`running`}),onClick:m[2]||=e=>k.value=`running`},d(a.$t(`dcw.k1eox1el055`))+` `+d(j.value),3),b(`button`,{class:c({on:k.value===`idle`}),onClick:m[3]||=e=>k.value=`idle`},d(a.$t(`dcw.k149r6y7059`))+` `+d(D.value.length-j.value),3)]),x(b(`input`,{"onUpdate:modelValue":m[4]||=e=>A.value=e,class:`inp fleet-search`,type:`search`,placeholder:a.$t(`dcw.filterSearchPh`)},null,8,fe),[[r,A.value]])]),b(`div`,pe,[(s(!0),g(f,null,o(M.value,e=>(s(),g(`div`,{key:e.line.id,class:c([`line-card aw-liftable`,{idle:!l(E).lineStateOf(e.line.id).active}]),style:u({"--lc":e.line.color})},[b(`div`,me,[m[30]||=b(`span`,{class:`lc-dot`},null,-1),b(`b`,he,d(e.line.name),1),b(`span`,{class:c([`lc-state`,{on:l(E).lineStateOf(e.line.id).active}])},d(l(E).lineStateOf(e.line.id).active?a.$t(`dcw.k1eox1el055`):a.$t(`dcw.k149r6y7059`)),3),b(`button`,{class:`lc-act`,title:a.$t(`common.edit`),onClick:t=>Vt(e)},[...m[28]||=[b(`span`,{class:`i-tabler-pencil`},null,-1)]],8,ge),b(`button`,{class:`lc-act danger`,title:a.$t(`dcw.k3xakp026`),onClick:t=>zt(e)},[...m[29]||=[b(`span`,{class:`i-tabler-trash`},null,-1)]],8,_e)]),l(E).lineStateOf(e.line.id).active?(s(),g(`small`,ve,d(l(E).lineStateOf(e.line.id).productName)+` · `+d(l(E).lineStateOf(e.line.id).recipeName)+` · `+d(a.$t(`dcw.k3zz0f052`))+` `+d(l(E).lineStateOf(e.line.id).taggedSamples),1)):(s(),g(`small`,{key:1,class:c([`lc-run dim`,{ph:!e.line.description}])},d(e.line.description||a.$t(`dcw.k18moyq1056`)),3)),b(`div`,ye,[b(`span`,null,[p(d(a.$t(`dcw.k45uio011`))+` `,1),b(`b`,null,d(e.nodes),1)]),b(`span`,null,[p(d(a.$t(`dcw.k3waz1012`))+` `,1),b(`b`,null,d(e.products),1)]),b(`span`,null,[p(d(a.$t(`dcw.k48grv013`))+` `,1),b(`b`,null,d(e.recipes),1)])]),b(`div`,be,[l(E).lineStateOf(e.line.id).active?(s(),g(`button`,{key:1,class:`pill-btn stop`,disabled:R.value===e.line.id,onClick:t=>Rt(e)},d(a.$t(`dcw.k148rclf015`)),9,Te)):(s(),g(f,{key:0},[x(b(`select`,{"onUpdate:modelValue":t=>B[e.line.id]=t,class:`inp`,disabled:V(e.line.id).length===0,title:a.$t(`dcw.k1dhaby4003`)},[b(`option`,Se,d(V(e.line.id).length?a.$t(`dcw.kutxzsz057`):a.$t(`dcw.k1elczt9060`)),1),(s(!0),g(f,null,o(V(e.line.id),e=>(s(),g(`option`,{key:e.id,value:e.id,disabled:e.params.length===0},d(e.name)+`(`+d(e.params.length)+`) `,9,Ce))),128))],8,xe),[[t,B[e.line.id]]]),b(`button`,{class:`pill-btn`,disabled:R.value===e.line.id||!B[e.line.id],onClick:t=>Lt(e)},d(a.$t(`dcw.k149b4vg014`)),9,we)],64))]),C(h,{class:`lc-manage`,to:`/dcw/${e.line.id}`},{default:y(()=>[p(d(a.$t(`dcw.k1fwqw5g016`)),1)]),_:1},8,[`to`])],6))),128)),b(`button`,{class:`line-card new-card`,onClick:Ft},[m[31]||=b(`span`,{class:`i-tabler-plus`},null,-1),p(` `+d(a.$t(`dcw.k1efe391017`))+` `,1),b(`small`,null,d(a.$t(`dcw.k19dlbli053`)),1)])]),l(E).loaded&&l(E).lines.length===0?(s(),g(`p`,Ee,d(a.$t(`dcw.k1sk85vs018`)),1)):l(E).loaded&&M.value.length===0?(s(),g(`p`,De,d(a.$t(`dcw.filterEmpty`)),1)):_(``,!0),C(e,{name:`modal`},{default:y(()=>[N.value?(s(),g(`div`,{key:0,class:`modal-mask`,onClick:m[8]||=i(e=>N.value=!1,[`self`])},[b(`div`,Oe,[b(`h3`,ke,d(a.$t(`dcw.k1efe391017`)),1),b(`label`,Ae,[b(`span`,null,[p(d(a.$t(`dcw.k1b2ioko019`)),1),m[32]||=b(`em`,null,`*`,-1)]),x(b(`input`,{"onUpdate:modelValue":m[5]||=e=>I.name=e,class:`inp`,placeholder:a.$t(`dcw.kru37i3004`)},null,8,je),[[r,I.name]])]),b(`label`,Me,[b(`span`,null,d(a.$t(`dcw.k24dxcd020`)),1),x(b(`input`,{"onUpdate:modelValue":m[6]||=e=>I.description=e,class:`inp`,placeholder:a.$t(`dcw.k1f2nwsp005`)},null,8,Ne),[[r,I.description]])]),b(`div`,Pe,[b(`span`,null,d(a.$t(`dcw.k1x7nubr021`)),1),b(`div`,Fe,[(s(!0),g(f,null,o(l(T),e=>(s(),g(`button`,{key:e,class:c([`color-dot`,{on:I.color===e}]),style:u({background:e}),onClick:t=>I.color=I.color===e?``:e},null,14,Ie))),128)),b(`small`,Le,d(I.color||a.$t(`dcw.k1qidbpy061`,{p0:L.value})),1)])]),F.value?(s(),g(`p`,Re,d(F.value),1)):_(``,!0),b(`div`,ze,[b(`button`,{class:`mini-btn`,onClick:m[7]||=e=>N.value=!1},d(a.$t(`dcw.k3xdnn022`)),1),b(`button`,{class:`pill-btn`,disabled:P.value||!I.name.trim(),onClick:It},d(a.$t(`dcw.k3wzi2023`)),9,Be)])])])):_(``,!0)]),_:1}),C(e,{name:`modal`},{default:y(()=>[q.value?(s(),g(`div`,{key:0,class:`modal-mask`,onClick:m[12]||=i(e=>q.value=!1,[`self`])},[b(`div`,Ve,[b(`h3`,He,d(a.$t(`dcw.k5tq8wc071`)),1),b(`label`,Ue,[b(`span`,null,[p(d(a.$t(`dcw.k1b2ioko019`)),1),m[33]||=b(`em`,null,`*`,-1)]),x(b(`input`,{"onUpdate:modelValue":m[9]||=e=>X.name=e,class:`inp`,placeholder:a.$t(`dcw.kru37i3004`)},null,8,We),[[r,X.name]])]),b(`label`,Ge,[b(`span`,null,d(a.$t(`dcw.k24dxcd020`)),1),x(b(`input`,{"onUpdate:modelValue":m[10]||=e=>X.description=e,class:`inp`,placeholder:a.$t(`dcw.k1f2nwsp005`)},null,8,Ke),[[r,X.description]])]),b(`div`,qe,[b(`span`,null,d(a.$t(`dcw.k1x7nubr021`)),1),b(`div`,Je,[(s(!0),g(f,null,o(l(T),e=>(s(),g(`button`,{key:e,class:c([`color-dot`,{on:X.color===e}]),style:u({background:e}),onClick:t=>X.color=X.color===e?``:e},null,14,Ye))),128)),b(`small`,Xe,d(X.color||a.$t(`dcw.k1qidbpy061`,{p0:L.value})),1)])]),Y.value?(s(),g(`p`,Ze,d(Y.value),1)):_(``,!0),b(`div`,Qe,[b(`button`,{class:`mini-btn`,onClick:m[11]||=e=>q.value=!1},d(a.$t(`dcw.k3xdnn022`)),1),b(`button`,{class:`pill-btn`,disabled:J.value||!X.name.trim(),onClick:Ht},d(a.$t(`common.save`)),9,$e)])])])):_(``,!0)]),_:1}),C(e,{name:`modal`},{default:y(()=>[H.value&&K.value?(s(),g(`div`,{key:0,class:`modal-mask`,onClick:m[15]||=i(e=>H.value=!1,[`self`])},[b(`div`,et,[b(`h3`,tt,[m[34]||=b(`span`,{class:`i-tabler-alert-triangle`},null,-1),p(` `+d(a.$t(`dcw.k7xq2mfd063`,{p0:K.value.line.name})),1)]),b(`p`,nt,d(G.value?a.$t(`dcw.k4r7nbd073`,{p0:K.value.line.name,p1:K.value.nodes,p2:K.value.products,p3:K.value.recipes}):a.$t(`dcw.k1gp649b062`,{p0:K.value.line.name,p1:K.value.nodes,p2:K.value.products,p3:K.value.recipes})),1),b(`label`,rt,[x(b(`input`,{"onUpdate:modelValue":m[13]||=e=>G.value=e,type:`checkbox`},null,512),[[n,G.value]]),b(`span`,null,d(a.$t(`dcw.k9m2vxa072`)),1)]),W.value?(s(),g(`p`,it,d(W.value),1)):_(``,!0),b(`div`,at,[b(`button`,{class:`mini-btn`,onClick:m[14]||=e=>H.value=!1},d(a.$t(`dcw.k3xdnn022`)),1),b(`button`,{class:`pill-btn danger`,disabled:U.value,onClick:Bt},d(a.$t(`dcw.k3xakp026`)),9,ot)])])])):_(``,!0)]),_:1}),C(e,{name:`modal`},{default:y(()=>[Z.value?(s(),g(`div`,{key:0,class:`modal-mask`,onClick:m[26]||=i(e=>Z.value=!1,[`self`])},[b(`div`,st,[b(`h3`,ct,[p(d(a.$t(`dcw.k11oadmx024`))+` `,1),b(`small`,lt,d(a.$t(`dcw.k3x23c054`))+` `+d(Kt.value)+` · `+d(a.$t(`dcw.k3t616a058`))+` `+d(l(E).templates.length-Kt.value),1)]),b(`p`,ut,d(a.$t(`dcw.k2hlav5025`)),1),b(`div`,dt,[(s(!0),g(f,null,o(l(E).templates,e=>(s(),g(`div`,{key:e.key,class:`tpl-row`,title:e.semantics??``},[b(`b`,null,d(e.name),1),b(`small`,pt,d(e.code)+` · `+d(e.min)+`~`+d(e.max)+` `+d(e.unit),1),e.semantics?(s(),g(`small`,mt,d(e.semantics.slice(0,40))+d(e.semantics.length>40?`…`:``),1)):_(``,!0),b(`span`,{class:c([`tpl-tag`,{builtin:e.builtin}])},d(e.builtin?a.$t(`dcw.k3x23c054`):a.$t(`dcw.k3t616a058`)),3),e.builtin?_(``,!0):(s(),g(`button`,{key:1,class:`mini-btn danger`,onClick:t=>Gt(e.key)},d(a.$t(`dcw.k3xakp026`)),9,ht))],8,ft))),128))]),b(`p`,gt,d(a.$t(`dcw.k169eb4s027`)),1),b(`div`,_t,[b(`label`,vt,[b(`span`,null,[p(d(a.$t(`dcw.k3xhia028`)),1),m[35]||=b(`em`,null,`*`,-1)]),x(b(`input`,{"onUpdate:modelValue":m[16]||=e=>$.name=e,class:`inp`,placeholder:a.$t(`dcw.k1tooi3o006`)},null,8,yt),[[r,$.name]])]),b(`label`,bt,[b(`span`,null,d(a.$t(`dcw.k1bqk219029`)),1),x(b(`input`,{"onUpdate:modelValue":m[17]||=e=>$.ch=e,class:`inp`,placeholder:a.$t(`dcw.k698qz0007`)},null,8,xt),[[r,$.ch]])]),b(`label`,St,[b(`span`,null,d(a.$t(`dcw.k1ayxrqb030`)),1),x(b(`input`,{"onUpdate:modelValue":m[18]||=e=>$.code=e,class:`inp`,placeholder:`如 MOTOR · I`},null,512),[[r,$.code]])]),b(`label`,Ct,[b(`span`,null,d(a.$t(`dcw.k3x4ef031`)),1),x(b(`input`,{"onUpdate:modelValue":m[19]||=e=>$.unit=e,class:`inp`,placeholder:`如 A`},null,512),[[r,$.unit]])]),b(`label`,wt,[b(`span`,null,[p(d(a.$t(`dcw.k1l9jv5m032`)),1),m[36]||=b(`em`,null,`*`,-1)]),x(b(`input`,{"onUpdate:modelValue":m[20]||=e=>$.min=e,type:`number`,class:`inp`},null,512),[[r,$.min,void 0,{number:!0}]])]),b(`label`,Tt,[b(`span`,null,[p(d(a.$t(`dcw.k1l9jv4p033`)),1),m[37]||=b(`em`,null,`*`,-1)]),x(b(`input`,{"onUpdate:modelValue":m[21]||=e=>$.max=e,type:`number`,class:`inp`},null,512),[[r,$.max,void 0,{number:!0}]])]),b(`label`,Et,[b(`span`,null,d(a.$t(`dcw.k3mxmcx034`)),1),x(b(`input`,{"onUpdate:modelValue":m[22]||=e=>$.decimals=e,type:`number`,class:`inp`},null,512),[[r,$.decimals,void 0,{number:!0}]])]),b(`label`,Dt,[b(`span`,null,d(a.$t(`dcw.k3xx56035`)),1),x(b(`select`,{"onUpdate:modelValue":m[23]||=e=>$.icon=e,class:`inp`},[(s(),g(f,null,o(Ut,e=>b(`option`,{key:e.key,value:e.key},d(e.label),9,Ot)),64))],512),[[t,$.icon]])])]),b(`label`,kt,[b(`span`,null,d(a.$t(`dcw.k1b6qorg036`)),1),x(b(`textarea`,{"onUpdate:modelValue":m[24]||=e=>$.semantics=e,class:`inp`,rows:`3`,placeholder:a.$t(`dcw.k1qdnfzc008`)},null,8,At),[[r,$.semantics]])]),Q.value?(s(),g(`p`,jt,d(Q.value),1)):_(``,!0),b(`div`,Mt,[b(`button`,{class:`mini-btn`,onClick:m[25]||=e=>Z.value=!1},d(a.$t(`dcw.k3x62t037`)),1),b(`button`,{class:`pill-btn`,disabled:!$.name.trim()||$.min===``||$.max===``,onClick:Wt},d(a.$t(`dcw.k1bg9nga038`)),9,Nt)])])])):_(``,!0)]),_:1}),l(E).error?(s(),g(`p`,Pt,d(l(E).error),1)):_(``,!0)])}}}),[[`__scopeId`,`data-v-a200e0d3`]]);export{E as default};