agentworkshop 0.6.0 → 0.7.0

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 (540) hide show
  1. package/.AgentWorkShop/prompts/host-tools.json +17 -0
  2. package/.env.example +37 -0
  3. package/.output/.AgentWorkShop/prompts/host-tools.json +17 -0
  4. package/.output/nitro.json +1 -1
  5. package/.output/public/_nuxt/{Bc_mM2cU.js → BH0Z05CS.js} +1 -1
  6. package/.output/public/_nuxt/Bxgaym6j.js +1 -0
  7. package/.output/public/_nuxt/{DRlJ2-4p.js → By-LNp3k.js} +1 -1
  8. package/.output/public/_nuxt/{C2QSTAWf.js → Bz40vyZS.js} +1 -1
  9. package/.output/public/_nuxt/{CwS_UHeH.js → CS8R0_J3.js} +1 -1
  10. package/.output/public/_nuxt/{ClptO7LA.js → CUxV8Bw_.js} +1 -1
  11. package/.output/public/_nuxt/CXmkVXS5.js +1 -0
  12. package/.output/public/_nuxt/DC-QMEk1.js +2 -0
  13. package/.output/public/_nuxt/{C-Y5ydB6.js → Dgp2wK2U.js} +6 -6
  14. package/.output/public/_nuxt/{Ck6tznoQ.js → DjqcbFBE.js} +1 -1
  15. package/.output/public/_nuxt/{B0haAGoq.js → GP2wXyuY.js} +1 -1
  16. package/.output/public/_nuxt/TownView.Bt33bo1M.css +1 -0
  17. package/.output/public/_nuxt/{MhK4buEJ.js → XVB9_zwP.js} +1 -1
  18. package/.output/public/_nuxt/_id_.BeqSLvl_.css +1 -0
  19. package/.output/public/_nuxt/builds/latest.json +1 -1
  20. package/.output/public/_nuxt/builds/meta/90ae66f6-f649-4b44-8df9-bcd9e9a957a2.json +1 -0
  21. package/.output/public/_nuxt/{Bq_KKxCg.js → i_MKObHo.js} +1 -1
  22. package/.output/public/_nuxt/settings.DeRNNUcP.css +1 -0
  23. package/.output/public/_nuxt/{CclO6GyL.js → tpDMVY5w.js} +1 -1
  24. package/.output/public/_nuxt/{C0FogB-p.js → zwdqvGN_.js} +1 -1
  25. package/.output/server/chunks/_/nitro.mjs +2672 -2350
  26. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  27. package/.output/server/chunks/build/{TownView-D9yCQe1T.mjs → TownView-BkHxMiwZ.mjs} +168 -159
  28. package/.output/server/chunks/build/{TownView-D9yCQe1T.mjs.map → TownView-BkHxMiwZ.mjs.map} +1 -1
  29. package/.output/server/chunks/build/{_id_-xR3AChMO.mjs → _id_-Bna1_JuB.mjs} +5 -4
  30. package/.output/server/chunks/build/_id_-Bna1_JuB.mjs.map +1 -0
  31. package/.output/server/chunks/build/{_id_-CmKAEFHV.mjs → _id_-GnRJPykX.mjs} +161 -119
  32. package/.output/server/chunks/build/_id_-GnRJPykX.mjs.map +1 -0
  33. package/.output/server/chunks/build/{_wsId_-C45nVrl-.mjs → _wsId_-CzLDGT_V.mjs} +6 -5
  34. package/.output/server/chunks/build/{_wsId_-C45nVrl-.mjs.map → _wsId_-CzLDGT_V.mjs.map} +1 -1
  35. package/.output/server/chunks/build/agents-D4l1icvn.mjs +1 -0
  36. package/.output/server/chunks/build/agents-D4l1icvn.mjs.map +1 -1
  37. package/.output/server/chunks/build/channel-templates-DqjtC-R0.mjs +1 -0
  38. package/.output/server/chunks/build/channel-templates-DqjtC-R0.mjs.map +1 -1
  39. package/.output/server/chunks/build/{daq-Boz_dlAQ.mjs → daq-D_W59QOe.mjs} +6 -5
  40. package/.output/server/chunks/build/daq-D_W59QOe.mjs.map +1 -0
  41. package/.output/server/chunks/build/{dcw-wTRwBAUi.mjs → dcw-BTM5YU-B.mjs} +3 -2
  42. package/.output/server/chunks/build/dcw-BTM5YU-B.mjs.map +1 -0
  43. package/.output/server/chunks/build/default-Dt6xLdpd.mjs +1 -0
  44. package/.output/server/chunks/build/{logs-Cdi-eXlN.mjs → logs-CUQt1z7D.mjs} +4 -3
  45. package/.output/server/chunks/build/logs-CUQt1z7D.mjs.map +1 -0
  46. package/.output/server/chunks/build/monitor-yNoV98rf.mjs +1 -0
  47. package/.output/server/chunks/build/{pages-bWKy0ZsA.mjs → pages-DR2bzczM.mjs} +4 -3
  48. package/.output/server/chunks/build/pages-DR2bzczM.mjs.map +1 -0
  49. package/.output/server/chunks/build/plugins-B-ZNey0Z.mjs +1 -0
  50. package/.output/server/chunks/build/plugins-B-ZNey0Z.mjs.map +1 -1
  51. package/.output/server/chunks/build/{settings-C3T5hR2A.mjs → settings-Cr06lbRy.mjs} +26 -18
  52. package/.output/server/chunks/build/settings-Cr06lbRy.mjs.map +1 -0
  53. package/.output/server/chunks/build/teams-QR3BBF7A.mjs +1 -0
  54. package/.output/server/chunks/build/teams-QR3BBF7A.mjs.map +1 -1
  55. package/.output/server/chunks/build/tokens-DFvr_TLj.mjs +1 -0
  56. package/.output/server/chunks/build/tokens-DFvr_TLj.mjs.map +1 -1
  57. package/.output/server/chunks/build/{town-CKg6Qxba.mjs → town-BN4vQPb8.mjs} +6 -5
  58. package/.output/server/chunks/build/town-BN4vQPb8.mjs.map +1 -0
  59. package/.output/server/chunks/build/town-BUqRobze.mjs +1 -0
  60. package/.output/server/chunks/build/town-BUqRobze.mjs.map +1 -1
  61. package/.output/server/chunks/build/{useDaqStream-zHEptJQ_.mjs → useDaqStream-hwkhJHFU.mjs} +2 -2
  62. package/.output/server/chunks/build/{useDaqStream-zHEptJQ_.mjs.map → useDaqStream-hwkhJHFU.mjs.map} +1 -1
  63. package/.output/server/chunks/build/{useDcwStream-BkWDGaWp.mjs → useDcwStream-Bdew_yrr.mjs} +16 -1
  64. package/.output/server/chunks/build/useDcwStream-Bdew_yrr.mjs.map +1 -0
  65. package/.output/server/chunks/build/{useDeviceTwins-NhtXqSkU.mjs → useDeviceTwins-C6EBg9oN.mjs} +2 -2
  66. package/.output/server/chunks/build/{useDeviceTwins-NhtXqSkU.mjs.map → useDeviceTwins-C6EBg9oN.mjs.map} +1 -1
  67. package/.output/server/chunks/build/{useOpsLog-CU64VDg5.mjs → useOpsLog-DdCqKVVG.mjs} +2 -2
  68. package/.output/server/chunks/build/{useOpsLog-CU64VDg5.mjs.map → useOpsLog-DdCqKVVG.mjs.map} +1 -1
  69. package/.output/server/chunks/build/users-4FZ0yFUO.mjs +1 -0
  70. package/.output/server/chunks/build/users-4FZ0yFUO.mjs.map +1 -1
  71. package/.output/server/chunks/build/workshop-CLhwe5eo.mjs +1 -0
  72. package/.output/server/chunks/build/workshop-CLhwe5eo.mjs.map +1 -1
  73. package/.output/server/chunks/routes/api/health.get.mjs +1 -0
  74. package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
  75. package/.output/server/chunks/routes/api/index.get.mjs +1 -0
  76. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  77. package/.output/server/chunks/routes/api/index.post.mjs +1 -0
  78. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  79. package/.output/server/chunks/routes/api/mcp/workshop.mjs +1 -0
  80. package/.output/server/chunks/routes/api/mcp/workshop.mjs.map +1 -1
  81. package/.output/server/chunks/routes/api/metrics.mjs +1 -0
  82. package/.output/server/chunks/routes/api/metrics.mjs.map +1 -1
  83. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +1 -0
  84. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs.map +1 -1
  85. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +1 -0
  86. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs.map +1 -1
  87. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +1 -0
  88. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs.map +1 -1
  89. package/.output/server/chunks/routes/api/system/config.get.mjs +1 -0
  90. package/.output/server/chunks/routes/api/system/config.get.mjs.map +1 -1
  91. package/.output/server/chunks/routes/api/system/index.get.mjs +1 -0
  92. package/.output/server/chunks/routes/api/system/index.get.mjs.map +1 -1
  93. package/.output/server/chunks/routes/api/system/index.patch.mjs +1 -0
  94. package/.output/server/chunks/routes/api/system/index.patch.mjs.map +1 -1
  95. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +1 -0
  96. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs.map +1 -1
  97. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +1 -0
  98. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs.map +1 -1
  99. package/.output/server/chunks/routes/api/system/monitor.get.mjs +1 -0
  100. package/.output/server/chunks/routes/api/system/monitor.get.mjs.map +1 -1
  101. package/.output/server/chunks/routes/api/system/settings/events.get.mjs +1 -0
  102. package/.output/server/chunks/routes/api/system/settings/events.get.mjs.map +1 -1
  103. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +1 -0
  104. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs.map +1 -1
  105. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +1 -0
  106. package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
  107. package/.output/server/chunks/routes/api/users/_id_.get.mjs +1 -0
  108. package/.output/server/chunks/routes/api/users/_id_.get.mjs.map +1 -1
  109. package/.output/server/chunks/routes/api/users/_id_.put.mjs +1 -0
  110. package/.output/server/chunks/routes/api/users/_id_.put.mjs.map +1 -1
  111. package/.output/server/chunks/routes/api/users/index.get.mjs +1 -0
  112. package/.output/server/chunks/routes/api/users/index.get.mjs.map +1 -1
  113. package/.output/server/chunks/routes/api/users/index.post.mjs +1 -0
  114. package/.output/server/chunks/routes/api/users/index.post.mjs.map +1 -1
  115. package/.output/server/chunks/routes/api/users/login.post.mjs +1 -0
  116. package/.output/server/chunks/routes/api/users/login.post.mjs.map +1 -1
  117. package/.output/server/chunks/routes/api/users/logout.post.mjs +1 -0
  118. package/.output/server/chunks/routes/api/users/logout.post.mjs.map +1 -1
  119. package/.output/server/chunks/routes/api/users/me.get.mjs +1 -0
  120. package/.output/server/chunks/routes/api/users/me.get.mjs.map +1 -1
  121. package/.output/server/chunks/routes/api/users/register.post.mjs +1 -0
  122. package/.output/server/chunks/routes/api/users/register.post.mjs.map +1 -1
  123. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +1 -0
  124. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs.map +1 -1
  125. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +1 -0
  126. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs.map +1 -1
  127. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +1 -0
  128. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs.map +1 -1
  129. package/.output/server/chunks/routes/api/workshop/_...path_.mjs +1 -0
  130. package/.output/server/chunks/routes/api/workshop/_...path_.mjs.map +1 -1
  131. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +1 -0
  132. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs.map +1 -1
  133. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +1 -0
  134. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs.map +1 -1
  135. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +1 -0
  136. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs.map +1 -1
  137. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +1 -0
  138. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs.map +1 -1
  139. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +1 -0
  140. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs.map +1 -1
  141. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +1 -0
  142. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs.map +1 -1
  143. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +1 -0
  144. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs.map +1 -1
  145. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +1 -0
  146. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
  147. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +1 -0
  148. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs.map +1 -1
  149. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +1 -0
  150. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs.map +1 -1
  151. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +1 -0
  152. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs.map +1 -1
  153. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +1 -0
  154. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs.map +1 -1
  155. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +1 -0
  156. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs.map +1 -1
  157. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +1 -0
  158. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs.map +1 -1
  159. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +1 -0
  160. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs.map +1 -1
  161. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +1 -0
  162. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs.map +1 -1
  163. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +1 -0
  164. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs.map +1 -1
  165. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +1 -0
  166. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs.map +1 -1
  167. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +1 -0
  168. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs.map +1 -1
  169. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +1 -0
  170. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs.map +1 -1
  171. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +1 -0
  172. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs.map +1 -1
  173. package/.output/server/chunks/routes/api/workshop/audit.get.mjs +1 -0
  174. package/.output/server/chunks/routes/api/workshop/audit.get.mjs.map +1 -1
  175. package/.output/server/chunks/routes/api/workshop/caller.mjs +1 -0
  176. package/.output/server/chunks/routes/api/workshop/caller.mjs.map +1 -1
  177. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +1 -0
  178. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs.map +1 -1
  179. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +1 -0
  180. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs.map +1 -1
  181. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +1 -0
  182. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs.map +1 -1
  183. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +1 -0
  184. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs.map +1 -1
  185. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +1 -0
  186. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs.map +1 -1
  187. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +1 -0
  188. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs.map +1 -1
  189. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +1 -0
  190. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs.map +1 -1
  191. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +1 -0
  192. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs.map +1 -1
  193. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +1 -0
  194. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs.map +1 -1
  195. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +1 -0
  196. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs.map +1 -1
  197. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +1 -0
  198. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs.map +1 -1
  199. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +1 -0
  200. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs.map +1 -1
  201. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +1 -0
  202. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs.map +1 -1
  203. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +1 -0
  204. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs.map +1 -1
  205. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +1 -0
  206. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs.map +1 -1
  207. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +1 -0
  208. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs.map +1 -1
  209. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +1 -0
  210. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs.map +1 -1
  211. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +1 -0
  212. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs.map +1 -1
  213. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +1 -0
  214. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs.map +1 -1
  215. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +1 -0
  216. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs.map +1 -1
  217. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +1 -0
  218. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs.map +1 -1
  219. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +1 -0
  220. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs.map +1 -1
  221. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +1 -0
  222. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs.map +1 -1
  223. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +1 -0
  224. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs.map +1 -1
  225. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +1 -0
  226. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs.map +1 -1
  227. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +1 -0
  228. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs.map +1 -1
  229. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +1 -0
  230. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs.map +1 -1
  231. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +1 -0
  232. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs.map +1 -1
  233. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +1 -0
  234. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs.map +1 -1
  235. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +1 -0
  236. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs.map +1 -1
  237. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +1 -0
  238. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs.map +1 -1
  239. package/.output/server/chunks/routes/api/workshop/channels.get.mjs +1 -0
  240. package/.output/server/chunks/routes/api/workshop/channels.get.mjs.map +1 -1
  241. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +1 -0
  242. package/.output/server/chunks/routes/api/workshop/channels.post.mjs.map +1 -1
  243. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +1 -0
  244. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs.map +1 -1
  245. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +1 -0
  246. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs.map +1 -1
  247. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +1 -0
  248. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs.map +1 -1
  249. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +1 -0
  250. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs.map +1 -1
  251. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +1 -0
  252. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs.map +1 -1
  253. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +1 -0
  254. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs.map +1 -1
  255. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +1 -0
  256. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs.map +1 -1
  257. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +1 -0
  258. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs.map +1 -1
  259. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +1 -0
  260. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs.map +1 -1
  261. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +1 -0
  262. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs.map +1 -1
  263. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +1 -0
  264. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs.map +1 -1
  265. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +1 -0
  266. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs.map +1 -1
  267. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +1 -0
  268. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs.map +1 -1
  269. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +1 -0
  270. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs.map +1 -1
  271. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +1 -0
  272. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs.map +1 -1
  273. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +1 -0
  274. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs.map +1 -1
  275. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +1 -0
  276. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs.map +1 -1
  277. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +1 -0
  278. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs.map +1 -1
  279. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +31 -0
  280. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs.map +1 -0
  281. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +1 -0
  282. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs.map +1 -1
  283. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +1 -0
  284. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs.map +1 -1
  285. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +1 -0
  286. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs.map +1 -1
  287. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +1 -0
  288. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs.map +1 -1
  289. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +1 -0
  290. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs.map +1 -1
  291. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +1 -0
  292. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs.map +1 -1
  293. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -0
  294. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs.map +1 -1
  295. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +1 -0
  296. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs.map +1 -1
  297. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +1 -0
  298. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs.map +1 -1
  299. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +1 -0
  300. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs.map +1 -1
  301. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +1 -0
  302. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs.map +1 -1
  303. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +1 -0
  304. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs.map +1 -1
  305. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +1 -0
  306. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs.map +1 -1
  307. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +1 -0
  308. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs.map +1 -1
  309. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +1 -0
  310. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs.map +1 -1
  311. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +1 -0
  312. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs.map +1 -1
  313. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +1 -0
  314. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs.map +1 -1
  315. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -0
  316. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs.map +1 -1
  317. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +1 -0
  318. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs.map +1 -1
  319. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +1 -0
  320. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs.map +1 -1
  321. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +1 -0
  322. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs.map +1 -1
  323. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +1 -0
  324. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs.map +1 -1
  325. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +1 -0
  326. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs.map +1 -1
  327. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +1 -0
  328. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs.map +1 -1
  329. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +1 -0
  330. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs.map +1 -1
  331. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +1 -0
  332. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs.map +1 -1
  333. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +1 -0
  334. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs.map +1 -1
  335. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +1 -0
  336. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs.map +1 -1
  337. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +1 -0
  338. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs.map +1 -1
  339. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +1 -0
  340. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs.map +1 -1
  341. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.patch.mjs +1 -0
  342. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.patch.mjs.map +1 -1
  343. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +1 -0
  344. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs.map +1 -1
  345. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +1 -0
  346. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs.map +1 -1
  347. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +1 -0
  348. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs.map +1 -1
  349. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -0
  350. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs.map +1 -1
  351. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -0
  352. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs.map +1 -1
  353. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +1 -0
  354. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs.map +1 -1
  355. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +1 -0
  356. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs.map +1 -1
  357. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +1 -0
  358. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs.map +1 -1
  359. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +1 -0
  360. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs.map +1 -1
  361. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +1 -0
  362. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs.map +1 -1
  363. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +1 -0
  364. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs.map +1 -1
  365. package/.output/server/chunks/routes/api/workshop/index.get.mjs +1 -0
  366. package/.output/server/chunks/routes/api/workshop/index.get.mjs.map +1 -1
  367. package/.output/server/chunks/routes/api/workshop/index.post.mjs +1 -0
  368. package/.output/server/chunks/routes/api/workshop/index.post.mjs.map +1 -1
  369. package/.output/server/chunks/routes/api/workshop/index10.get.mjs +1 -0
  370. package/.output/server/chunks/routes/api/workshop/index10.get.mjs.map +1 -1
  371. package/.output/server/chunks/routes/api/workshop/index2.get.mjs +1 -0
  372. package/.output/server/chunks/routes/api/workshop/index2.get.mjs.map +1 -1
  373. package/.output/server/chunks/routes/api/workshop/index2.post.mjs +1 -0
  374. package/.output/server/chunks/routes/api/workshop/index2.post.mjs.map +1 -1
  375. package/.output/server/chunks/routes/api/workshop/index3.get.mjs +1 -0
  376. package/.output/server/chunks/routes/api/workshop/index3.get.mjs.map +1 -1
  377. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +1 -0
  378. package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
  379. package/.output/server/chunks/routes/api/workshop/index4.get.mjs +1 -0
  380. package/.output/server/chunks/routes/api/workshop/index4.get.mjs.map +1 -1
  381. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +1 -0
  382. package/.output/server/chunks/routes/api/workshop/index4.post.mjs.map +1 -1
  383. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +1 -0
  384. package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
  385. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +1 -0
  386. package/.output/server/chunks/routes/api/workshop/index5.post.mjs.map +1 -1
  387. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +1 -0
  388. package/.output/server/chunks/routes/api/workshop/index6.get.mjs.map +1 -1
  389. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +1 -0
  390. package/.output/server/chunks/routes/api/workshop/index6.post.mjs.map +1 -1
  391. package/.output/server/chunks/routes/api/workshop/index7.get.mjs +1 -0
  392. package/.output/server/chunks/routes/api/workshop/index7.get.mjs.map +1 -1
  393. package/.output/server/chunks/routes/api/workshop/index7.post.mjs +1 -0
  394. package/.output/server/chunks/routes/api/workshop/index7.post.mjs.map +1 -1
  395. package/.output/server/chunks/routes/api/workshop/index8.get.mjs +1 -0
  396. package/.output/server/chunks/routes/api/workshop/index8.get.mjs.map +1 -1
  397. package/.output/server/chunks/routes/api/workshop/index8.post.mjs +1 -0
  398. package/.output/server/chunks/routes/api/workshop/index8.post.mjs.map +1 -1
  399. package/.output/server/chunks/routes/api/workshop/index9.get.mjs +1 -0
  400. package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
  401. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +1 -0
  402. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs.map +1 -1
  403. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +1 -0
  404. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs.map +1 -1
  405. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +1 -0
  406. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs.map +1 -1
  407. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -0
  408. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs.map +1 -1
  409. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -0
  410. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs.map +1 -1
  411. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +1 -0
  412. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs.map +1 -1
  413. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +1 -0
  414. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs.map +1 -1
  415. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -0
  416. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs.map +1 -1
  417. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -0
  418. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs.map +1 -1
  419. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +1 -0
  420. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs.map +1 -1
  421. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +1 -0
  422. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs.map +1 -1
  423. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +1 -0
  424. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs.map +1 -1
  425. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +1 -0
  426. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs.map +1 -1
  427. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +1 -0
  428. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs.map +1 -1
  429. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +1 -0
  430. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs.map +1 -1
  431. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +1 -0
  432. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs.map +1 -1
  433. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +1 -0
  434. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs.map +1 -1
  435. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +1 -0
  436. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs.map +1 -1
  437. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +1 -0
  438. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs.map +1 -1
  439. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +1 -0
  440. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs.map +1 -1
  441. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +1 -0
  442. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs.map +1 -1
  443. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +1 -0
  444. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs.map +1 -1
  445. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +1 -0
  446. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs.map +1 -1
  447. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +1 -0
  448. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs.map +1 -1
  449. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +1 -0
  450. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs.map +1 -1
  451. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +1 -0
  452. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs.map +1 -1
  453. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -0
  454. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs.map +1 -1
  455. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +1 -0
  456. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs.map +1 -1
  457. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +1 -0
  458. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs.map +1 -1
  459. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +1 -0
  460. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs.map +1 -1
  461. package/.output/server/chunks/routes/renderer.mjs +1 -1
  462. package/.output/server/chunks/virtual/entry.mjs +287 -85
  463. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  464. package/.output/server/index.mjs +1 -0
  465. package/.output/server/package.json +1 -1
  466. package/README-zh.md +434 -430
  467. package/README.md +5 -1
  468. package/app/components/workshop/DeviceTwinPanel.vue +34 -0
  469. package/app/components/workshop/town/TownView.vue +5 -0
  470. package/app/composables/workshop/useDcwStream.ts +15 -1
  471. package/app/config/schema.ts +54 -0
  472. package/app/pages/dcw/[id].vue +57 -0
  473. package/app/pages/settings.vue +2 -1
  474. package/config.yml +58 -1
  475. package/i18n/dicts/_en.json +56 -2
  476. package/i18n/dicts/dcwDetail.json +9 -1
  477. package/i18n/dicts/deviceTwinPanel.json +2 -1
  478. package/i18n/dicts/settings.json +48 -1
  479. package/i18n/locales/en.ts +139 -38
  480. package/i18n/locales/zh-CN.ts +139 -38
  481. package/package.json +1 -1
  482. package/scripts/_dbg-agent-dcw-rw.ts +131 -0
  483. package/scripts/_dbg-config-smoke.ts +28 -0
  484. package/scripts/_dbg-dcw-read-rest.mjs +103 -0
  485. package/scripts/_dbg-dcw-read-toolface.ts +13 -0
  486. package/scripts/_dbg-dcw-read-ui.mjs +74 -0
  487. package/scripts/_dbg-plugin-tools-inject.ts +80 -0
  488. package/scripts/_dbg-plugin-ui-wizard.mjs +125 -0
  489. package/scripts/_dbg-plugin-verify-e2e.mjs +123 -0
  490. package/scripts/test-config-precedence.ts +124 -0
  491. package/scripts/test-dcw-read.ts +153 -0
  492. package/server/api/workshop/dcw/[id]/read.post.ts +18 -0
  493. package/server/api/workshop/ws.ts +6 -4
  494. package/server/data/daqs.json +78 -8
  495. package/server/data/dcw-rollback.json +221 -1
  496. package/server/data/dcw-runs.json +123 -54
  497. package/server/data/dcw-writes.json +312 -0
  498. package/server/data/dcws.json +646 -4
  499. package/server/data/line-runs.json +12 -1
  500. package/server/plugins/backup.ts +7 -5
  501. package/server/plugins/retention.ts +59 -57
  502. package/server/plugins/workshop.ts +5 -4
  503. package/server/services/workshop/agents/industrial-tools.ts +50 -1
  504. package/server/services/workshop/agents/omp-agent.ts +10 -8
  505. package/server/services/workshop/agents/tool-approvals.ts +175 -174
  506. package/server/services/workshop/daq/alarm-notify.ts +102 -100
  507. package/server/services/workshop/daq/bus/mqtt.adapter.ts +14 -15
  508. package/server/services/workshop/daq/daq-controller.ts +3 -3
  509. package/server/services/workshop/daq/storage/sqlite.adapter.ts +5 -4
  510. package/server/services/workshop/daq/storage/timescale.adapter.ts +5 -4
  511. package/server/services/workshop/db/retention.ts +49 -50
  512. package/server/services/workshop/dcw/dcw-controller.ts +56 -1
  513. package/server/services/workshop/dcw/dcw-node.ts +233 -200
  514. package/server/services/workshop/dcw/dcw-runtime.ts +46 -9
  515. package/server/services/workshop/dcw/drivers.ts +98 -0
  516. package/server/services/workshop/dcw/recipe-rollback-manager.ts +16 -15
  517. package/server/services/workshop/logger.ts +65 -58
  518. package/server/services/workshop/runtime/embedding-provider.ts +9 -5
  519. package/server/services/workshop/runtime/manager.ts +16 -7
  520. package/server/services/workshop/runtime/memory.ts +14 -7
  521. package/server/services/workshop/settings.ts +143 -0
  522. package/shared/config/engine.mjs +6 -2
  523. package/shared/config/schema.json +48 -1
  524. package/shared/dcw-protocol.ts +21 -0
  525. package/.output/public/_nuxt/BD9D9pl4.js +0 -1
  526. package/.output/public/_nuxt/BxD8Fg_Z.js +0 -2
  527. package/.output/public/_nuxt/CwcOEM8m.js +0 -1
  528. package/.output/public/_nuxt/TownView.CI2Wpzty.css +0 -1
  529. package/.output/public/_nuxt/_id_.Ci4u30cR.css +0 -1
  530. package/.output/public/_nuxt/builds/meta/a0ac51ef-51c0-4ff9-8484-7c90d8dd10ba.json +0 -1
  531. package/.output/public/_nuxt/settings.BG0K9_MG.css +0 -1
  532. package/.output/server/chunks/build/_id_-CmKAEFHV.mjs.map +0 -1
  533. package/.output/server/chunks/build/_id_-xR3AChMO.mjs.map +0 -1
  534. package/.output/server/chunks/build/daq-Boz_dlAQ.mjs.map +0 -1
  535. package/.output/server/chunks/build/dcw-wTRwBAUi.mjs.map +0 -1
  536. package/.output/server/chunks/build/logs-Cdi-eXlN.mjs.map +0 -1
  537. package/.output/server/chunks/build/pages-bWKy0ZsA.mjs.map +0 -1
  538. package/.output/server/chunks/build/settings-C3T5hR2A.mjs.map +0 -1
  539. package/.output/server/chunks/build/town-CKg6Qxba.mjs.map +0 -1
  540. package/.output/server/chunks/build/useDcwStream-BkWDGaWp.mjs.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import { _ as _plugin_vue_export_helper_default, u as useI18n, ax as NuxtLink } from '../virtual/entry.mjs';
2
2
  import { s as spin_default } from './spin-HVY81X_L.mjs';
3
- import { u as useDcwStream } from './useDcwStream-BkWDGaWp.mjs';
4
- import { u as useDaqStream } from './useDaqStream-zHEptJQ_.mjs';
5
- import { u as useDeviceTwins } from './useDeviceTwins-NhtXqSkU.mjs';
3
+ import { u as useDcwStream } from './useDcwStream-Bdew_yrr.mjs';
4
+ import { u as useDaqStream } from './useDaqStream-hwkhJHFU.mjs';
5
+ import { u as useDeviceTwins } from './useDeviceTwins-C6EBg9oN.mjs';
6
6
  import { defineComponent, computed, ref, reactive, unref, mergeProps, withCtx, createTextVNode, toDisplayString, createVNode, openBlock, createBlock, Fragment, renderList, createCommentVNode, withDirectives, vModelText, useSSRContext } from 'vue';
7
7
  import { useRoute } from 'vue-router';
8
8
  import { ssrRenderAttrs, ssrInterpolate, ssrRenderComponent, ssrRenderStyle, ssrRenderClass, ssrRenderAttr, ssrRenderList, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual, ssrRenderDynamicModel } from 'vue/server-renderer';
@@ -30,6 +30,7 @@ import 'node:path';
30
30
  import 'node:url';
31
31
  import 'node:sqlite';
32
32
  import 'node:os';
33
+ import 'js-yaml';
33
34
  import 'node:child_process';
34
35
  import 'node:net';
35
36
  import 'node:util';
@@ -124,6 +125,18 @@ var _id__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
124
125
  writingId.value = "";
125
126
  }
126
127
  }
128
+ const readingId = ref("");
129
+ async function doRead(nodeId) {
130
+ readingId.value = nodeId;
131
+ writeError.value = "";
132
+ try {
133
+ await dcw.readNode(nodeId);
134
+ } catch (err) {
135
+ writeError.value = err instanceof Error ? err.message : String(err);
136
+ } finally {
137
+ readingId.value = "";
138
+ }
139
+ }
127
140
  const togglingId = ref("");
128
141
  /** 开启/暂停单个节点的控制:暂停后服务端拒绝一切下发(409 当前节点暂停),本地即时收敛状态 */
129
142
  async function toggleControl(nodeId, enabled) {
@@ -149,6 +162,7 @@ var _id__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
149
162
  const addDriver = ref("mock");
150
163
  const addName = ref("");
151
164
  const addHold = ref(null);
165
+ const addRead = ref(null);
152
166
  const addCfg = ref({});
153
167
  const addTransform = reactive({
154
168
  kind: "none",
@@ -262,7 +276,7 @@ var _id__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
262
276
  const _component_NuxtLink = NuxtLink;
263
277
  const _component_a_spin = spin_default;
264
278
  if (unref(dcw).loaded && !line.value) {
265
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "page" }, _attrs))} data-v-050cee18><p class="banner bad" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k19337yp018"))}</p>`);
279
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "page" }, _attrs))} data-v-0c94de6c><p class="banner bad" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k19337yp018"))}</p>`);
266
280
  _push(ssrRenderComponent(_component_NuxtLink, {
267
281
  class: "pill-btn",
268
282
  to: "/dcw"
@@ -275,119 +289,122 @@ var _id__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
275
289
  }, _parent));
276
290
  _push(`</div>`);
277
291
  } else {
278
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "page" }, _attrs))} data-v-050cee18><div class="aw-page-head" data-v-050cee18><div data-v-050cee18><p class="aw-kicker" data-v-050cee18><span class="line-chip" style="${ssrRenderStyle({ background: line.value?.color ?? "#3aa0ff" })}" data-v-050cee18></span>AGENTWORKSHOP / LINE / ${ssrInterpolate(line.value?.name ?? lineId.value)}</p><h1 data-v-050cee18>${ssrInterpolate(line.value?.name ?? _ctx.$t("dcwDetail.k1b2snna151"))} · ${ssrInterpolate(_ctx.$t("dcwDetail.k1l0iow1137"))}</h1><p class="sub" data-v-050cee18>${ssrInterpolate(line.value?.description || _ctx.$t("dcwDetail.kzcbfki152"))}</p></div><div class="badges mono" data-v-050cee18><span class="badge" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k45uio082"))} ${ssrInterpolate(lineNodes.value.length)}</span><span class="badge" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3waz1025"))} ${ssrInterpolate(lineProducts.value.length)}</span><span class="badge" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k48grv027"))} ${ssrInterpolate(lineRecipesAll.value.length)}</span></div></div><section class="aw-tile ctrl-card" data-v-050cee18><div class="ctrl-left" data-v-050cee18><button class="${ssrRenderClass([{ running: unref(dcw).controller.running }, "aw-pill"])}"${ssrRenderAttr("title", _ctx.$t("dcwDetail.k1snap154"))} data-v-050cee18><span class="${ssrRenderClass(unref(dcw).controller.running ? "i-tabler-player-pause" : "i-tabler-player-play")}" data-v-050cee18></span> ${ssrInterpolate(unref(dcw).controller.running ? _ctx.$t("dcwDetail.kplrsg153") : _ctx.$t("dcwDetail.knxgni9169"))}</button></div><div class="ctrl-right" data-v-050cee18><span class="ctrl-metrics mono" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k45uio082"))} ${ssrInterpolate(unref(dcw).controller.nodesOnline)}/${ssrInterpolate(unref(dcw).controller.nodesTotal)}</span><span class="sep" data-v-050cee18>·</span><span${ssrRenderAttr("title", _ctx.$t("dcwDetail.kd3ygmn001"))} data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3wtib138"))} ${ssrInterpolate(unref(dcw).controller.writesTotal)}</span><span class="sep" data-v-050cee18>·</span><span class="${ssrRenderClass({ warn: unref(dcw).controller.writesFailed > 0 })}"${ssrRenderAttr("title", _ctx.$t("dcwDetail.kd3znl0002"))} data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3yit7139"))} ${ssrInterpolate(unref(dcw).controller.writesFailed)}</span></span><button class="aw-pill outline"${ssrRenderAttr("title", _ctx.$t("dcwDetail.kc4ixly003"))} data-v-050cee18><span class="i-tabler-template" data-v-050cee18></span> ${ssrInterpolate(_ctx.$t("dcwDetail.k1972dx9020"))}</button><button class="aw-pill add-btn" data-v-050cee18><span class="i-tabler-plus" data-v-050cee18></span> ${ssrInterpolate(_ctx.$t("dcwDetail.k1976uns021"))}</button></div></section>`);
279
- if (writeError.value || writeOk.value) _push(`<p class="${ssrRenderClass([writeError.value ? "bad" : "good", "banner"])}" data-v-050cee18>${ssrInterpolate(writeError.value || writeOk.value)}</p>`);
292
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "page" }, _attrs))} data-v-0c94de6c><div class="aw-page-head" data-v-0c94de6c><div data-v-0c94de6c><p class="aw-kicker" data-v-0c94de6c><span class="line-chip" style="${ssrRenderStyle({ background: line.value?.color ?? "#3aa0ff" })}" data-v-0c94de6c></span>AGENTWORKSHOP / LINE / ${ssrInterpolate(line.value?.name ?? lineId.value)}</p><h1 data-v-0c94de6c>${ssrInterpolate(line.value?.name ?? _ctx.$t("dcwDetail.k1b2snna151"))} · ${ssrInterpolate(_ctx.$t("dcwDetail.k1l0iow1137"))}</h1><p class="sub" data-v-0c94de6c>${ssrInterpolate(line.value?.description || _ctx.$t("dcwDetail.kzcbfki152"))}</p></div><div class="badges mono" data-v-0c94de6c><span class="badge" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k45uio082"))} ${ssrInterpolate(lineNodes.value.length)}</span><span class="badge" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3waz1025"))} ${ssrInterpolate(lineProducts.value.length)}</span><span class="badge" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k48grv027"))} ${ssrInterpolate(lineRecipesAll.value.length)}</span></div></div><section class="aw-tile ctrl-card" data-v-0c94de6c><div class="ctrl-left" data-v-0c94de6c><button class="${ssrRenderClass([{ running: unref(dcw).controller.running }, "aw-pill"])}"${ssrRenderAttr("title", _ctx.$t("dcwDetail.k1snap154"))} data-v-0c94de6c><span class="${ssrRenderClass(unref(dcw).controller.running ? "i-tabler-player-pause" : "i-tabler-player-play")}" data-v-0c94de6c></span> ${ssrInterpolate(unref(dcw).controller.running ? _ctx.$t("dcwDetail.kplrsg153") : _ctx.$t("dcwDetail.knxgni9169"))}</button></div><div class="ctrl-right" data-v-0c94de6c><span class="ctrl-metrics mono" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k45uio082"))} ${ssrInterpolate(unref(dcw).controller.nodesOnline)}/${ssrInterpolate(unref(dcw).controller.nodesTotal)}</span><span class="sep" data-v-0c94de6c>·</span><span${ssrRenderAttr("title", _ctx.$t("dcwDetail.kd3ygmn001"))} data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3wtib138"))} ${ssrInterpolate(unref(dcw).controller.writesTotal)}</span><span class="sep" data-v-0c94de6c>·</span><span class="${ssrRenderClass({ warn: unref(dcw).controller.writesFailed > 0 })}"${ssrRenderAttr("title", _ctx.$t("dcwDetail.kd3znl0002"))} data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3yit7139"))} ${ssrInterpolate(unref(dcw).controller.writesFailed)}</span></span><button class="aw-pill outline"${ssrRenderAttr("title", _ctx.$t("dcwDetail.kc4ixly003"))} data-v-0c94de6c><span class="i-tabler-template" data-v-0c94de6c></span> ${ssrInterpolate(_ctx.$t("dcwDetail.k1972dx9020"))}</button><button class="aw-pill add-btn" data-v-0c94de6c><span class="i-tabler-plus" data-v-0c94de6c></span> ${ssrInterpolate(_ctx.$t("dcwDetail.k1976uns021"))}</button></div></section>`);
293
+ if (writeError.value || writeOk.value) _push(`<p class="${ssrRenderClass([writeError.value ? "bad" : "good", "banner"])}" data-v-0c94de6c>${ssrInterpolate(writeError.value || writeOk.value)}</p>`);
280
294
  else _push(`<!---->`);
281
295
  if (unassignedNodes.value.length || unassignedProducts.value.length) {
282
- _push(`<section class="aw-tile adopt-card" data-v-050cee18><b class="adopt-title" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.kaebkky022"))}</b><div class="adopt-list" data-v-050cee18><!--[-->`);
296
+ _push(`<section class="aw-tile adopt-card" data-v-0c94de6c><b class="adopt-title" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.kaebkky022"))}</b><div class="adopt-list" data-v-0c94de6c><!--[-->`);
283
297
  ssrRenderList(unassignedNodes.value, (n) => {
284
- _push(`<span class="adopt-chip" data-v-050cee18>${ssrInterpolate(n.name)} <button class="mini-btn" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.kyjp9fg023"))}</button></span>`);
298
+ _push(`<span class="adopt-chip" data-v-0c94de6c>${ssrInterpolate(n.name)} <button class="mini-btn" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.kyjp9fg023"))}</button></span>`);
285
299
  });
286
300
  _push(`<!--]--><!--[-->`);
287
301
  ssrRenderList(unassignedProducts.value, (p) => {
288
- _push(`<span class="adopt-chip" data-v-050cee18>${ssrInterpolate(p.name)}(${ssrInterpolate(_ctx.$t("dcwDetail.k3km252140"))}<button class="mini-btn" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.kyjp9fg023"))}</button></span>`);
302
+ _push(`<span class="adopt-chip" data-v-0c94de6c>${ssrInterpolate(p.name)}(${ssrInterpolate(_ctx.$t("dcwDetail.k3km252140"))}<button class="mini-btn" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.kyjp9fg023"))}</button></span>`);
289
303
  });
290
304
  _push(`<!--]--></div></section>`);
291
305
  } else _push(`<!---->`);
292
- _push(`<section class="aw-tile line-card" data-v-050cee18><div class="line-status" data-v-050cee18><span class="${ssrRenderClass([{ on: ls.value.active }, "line-dot"])}" data-v-050cee18></span><div class="line-info" data-v-050cee18><b data-v-050cee18>${ssrInterpolate(ls.value.active ? _ctx.$t("dcwDetail.k1pxrhx0154") : _ctx.$t("dcwDetail.k1b2hxmx170"))}</b>`);
293
- if (ls.value.active) _push(`<small class="mono dim" data-v-050cee18>${ssrInterpolate(ls.value.productName)} · ${ssrInterpolate(ls.value.recipeName)} · ${ssrInterpolate(_ctx.$t("dcwDetail.k400lb075"))} ${ssrInterpolate(ls.value.runId)} · ${ssrInterpolate(_ctx.$t("dcwDetail.k3zkt2166"))} ${ssrInterpolate(ls.value.startedAt?.slice(11, 19))} ${ssrInterpolate(_ctx.$t("dcwDetail.k69vag8168"))} ${ssrInterpolate(ls.value.taggedSamples)} ${ssrInterpolate(_ctx.$t("dcwDetail.k4118o085"))}</small>`);
294
- else _push(`<small class="dim" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k19pof14024"))}</small>`);
295
- _push(`</div></div><div class="line-ctl" data-v-050cee18><label class="ctl-sel" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3waz1025"))}</span><select class="inp" data-v-050cee18><option value="" data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(lineProductId.value) ? ssrLooseContain(lineProductId.value, "") : ssrLooseEqual(lineProductId.value, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("dcwDetail.kuisodh026"))}</option><!--[-->`);
306
+ _push(`<section class="aw-tile line-card" data-v-0c94de6c><div class="line-status" data-v-0c94de6c><span class="${ssrRenderClass([{ on: ls.value.active }, "line-dot"])}" data-v-0c94de6c></span><div class="line-info" data-v-0c94de6c><b data-v-0c94de6c>${ssrInterpolate(ls.value.active ? _ctx.$t("dcwDetail.k1pxrhx0154") : _ctx.$t("dcwDetail.k1b2hxmx170"))}</b>`);
307
+ if (ls.value.active) _push(`<small class="mono dim" data-v-0c94de6c>${ssrInterpolate(ls.value.productName)} · ${ssrInterpolate(ls.value.recipeName)} · ${ssrInterpolate(_ctx.$t("dcwDetail.k400lb075"))} ${ssrInterpolate(ls.value.runId)} · ${ssrInterpolate(_ctx.$t("dcwDetail.k3zkt2166"))} ${ssrInterpolate(ls.value.startedAt?.slice(11, 19))} ${ssrInterpolate(_ctx.$t("dcwDetail.k69vag8168"))} ${ssrInterpolate(ls.value.taggedSamples)} ${ssrInterpolate(_ctx.$t("dcwDetail.k4118o085"))}</small>`);
308
+ else _push(`<small class="dim" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k19pof14024"))}</small>`);
309
+ _push(`</div></div><div class="line-ctl" data-v-0c94de6c><label class="ctl-sel" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3waz1025"))}</span><select class="inp" data-v-0c94de6c><option value="" data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(lineProductId.value) ? ssrLooseContain(lineProductId.value, "") : ssrLooseEqual(lineProductId.value, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("dcwDetail.kuisodh026"))}</option><!--[-->`);
296
310
  ssrRenderList(lineProducts.value, (p) => {
297
- _push(`<option${ssrRenderAttr("value", p.id)} data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(lineProductId.value) ? ssrLooseContain(lineProductId.value, p.id) : ssrLooseEqual(lineProductId.value, p.id)) ? " selected" : ""}>${ssrInterpolate(p.name)}</option>`);
311
+ _push(`<option${ssrRenderAttr("value", p.id)} data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(lineProductId.value) ? ssrLooseContain(lineProductId.value, p.id) : ssrLooseEqual(lineProductId.value, p.id)) ? " selected" : ""}>${ssrInterpolate(p.name)}</option>`);
298
312
  });
299
- _push(`<!--]--></select></label><label class="ctl-sel" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k48grv027"))}</span><select class="inp"${ssrIncludeBooleanAttr(!lineProductId.value) ? " disabled" : ""} data-v-050cee18><option value="" data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(lineRecipeId.value) ? ssrLooseContain(lineRecipeId.value, "") : ssrLooseEqual(lineRecipeId.value, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("dcwDetail.kutxzsz028"))}</option><!--[-->`);
313
+ _push(`<!--]--></select></label><label class="ctl-sel" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k48grv027"))}</span><select class="inp"${ssrIncludeBooleanAttr(!lineProductId.value) ? " disabled" : ""} data-v-0c94de6c><option value="" data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(lineRecipeId.value) ? ssrLooseContain(lineRecipeId.value, "") : ssrLooseEqual(lineRecipeId.value, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("dcwDetail.kutxzsz028"))}</option><!--[-->`);
300
314
  ssrRenderList(lineRecipes.value, (r) => {
301
- _push(`<option${ssrRenderAttr("value", r.id)}${ssrIncludeBooleanAttr(r.params.length === 0) ? " disabled" : ""} data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(lineRecipeId.value) ? ssrLooseContain(lineRecipeId.value, r.id) : ssrLooseEqual(lineRecipeId.value, r.id)) ? " selected" : ""}>${ssrInterpolate(r.name)}${ssrInterpolate(r.params.length === 0 ? _ctx.$t("dcwDetail.k1hicmch155") : _ctx.$t("dcwDetail.k1lzfi4g180", { p0: r.params.length }))}</option>`);
315
+ _push(`<option${ssrRenderAttr("value", r.id)}${ssrIncludeBooleanAttr(r.params.length === 0) ? " disabled" : ""} data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(lineRecipeId.value) ? ssrLooseContain(lineRecipeId.value, r.id) : ssrLooseEqual(lineRecipeId.value, r.id)) ? " selected" : ""}>${ssrInterpolate(r.name)}${ssrInterpolate(r.params.length === 0 ? _ctx.$t("dcwDetail.k1hicmch155") : _ctx.$t("dcwDetail.k1lzfi4g180", { p0: r.params.length }))}</option>`);
302
316
  });
303
317
  _push(`<!--]--></select></label>`);
304
- if (!ls.value.active) _push(`<button class="pill-btn"${ssrIncludeBooleanAttr(lineBusy.value || !lineRecipeId.value) ? " disabled" : ""}${ssrRenderAttr("title", !lineRecipeId.value ? "开跑前必须先设定配方" : "下发配方参数并开始打标数据采集")} data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.kfb8vml029"))}</button>`);
305
- else _push(`<button class="pill-btn stop"${ssrIncludeBooleanAttr(lineBusy.value) ? " disabled" : ""} data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1xyhd2y030"))}</button>`);
318
+ if (!ls.value.active) _push(`<button class="pill-btn"${ssrIncludeBooleanAttr(lineBusy.value || !lineRecipeId.value) ? " disabled" : ""}${ssrRenderAttr("title", !lineRecipeId.value ? "开跑前必须先设定配方" : "下发配方参数并开始打标数据采集")} data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.kfb8vml029"))}</button>`);
319
+ else _push(`<button class="pill-btn stop"${ssrIncludeBooleanAttr(lineBusy.value) ? " disabled" : ""} data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1xyhd2y030"))}</button>`);
306
320
  _push(`</div>`);
307
- if (lineErr.value) _push(`<p class="banner bad" style="${ssrRenderStyle({ "margin-top": "10px" })}" data-v-050cee18>${ssrInterpolate(lineErr.value)}</p>`);
321
+ if (lineErr.value) _push(`<p class="banner bad" style="${ssrRenderStyle({ "margin-top": "10px" })}" data-v-0c94de6c>${ssrInterpolate(lineErr.value)}</p>`);
308
322
  else _push(`<!---->`);
309
- if (lineMsg.value) _push(`<p class="banner good" style="${ssrRenderStyle({ "margin-top": "10px" })}" data-v-050cee18>${ssrInterpolate(lineMsg.value)}</p>`);
323
+ if (lineMsg.value) _push(`<p class="banner good" style="${ssrRenderStyle({ "margin-top": "10px" })}" data-v-0c94de6c>${ssrInterpolate(lineMsg.value)}</p>`);
310
324
  else _push(`<!---->`);
311
325
  _push(`</section>`);
312
326
  if (tplOpen.value) {
313
- _push(`<div class="modal-mask" data-v-050cee18><div class="modal" data-v-050cee18><h3 class="m-title" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1x4vam0031"))} <small class="dim mono" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3x23c141"))} ${ssrInterpolate(unref(dcw).templates.filter((t) => t.builtin).length)} · ${ssrInterpolate(_ctx.$t("dcwDetail.k3t616a142"))} ${ssrInterpolate(unref(dcw).templates.filter((t) => !t.builtin).length)}</small></h3><p class="dim tpl-hint" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.ke1iyud032"))}</p><div class="tpl-chips" data-v-050cee18><!--[-->`);
327
+ _push(`<div class="modal-mask" data-v-0c94de6c><div class="modal" data-v-0c94de6c><h3 class="m-title" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1x4vam0031"))} <small class="dim mono" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3x23c141"))} ${ssrInterpolate(unref(dcw).templates.filter((t) => t.builtin).length)} · ${ssrInterpolate(_ctx.$t("dcwDetail.k3t616a142"))} ${ssrInterpolate(unref(dcw).templates.filter((t) => !t.builtin).length)}</small></h3><p class="dim tpl-hint" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.ke1iyud032"))}</p><div class="tpl-chips" data-v-0c94de6c><!--[-->`);
314
328
  ssrRenderList(unref(dcw).templates, (t) => {
315
- _push(`<span class="tpl-chip"${ssrRenderAttr("title", `${t.code} · ${t.min}~${t.max} ${t.unit}${t.semantics ? ` · ${t.semantics}` : ""}`)} data-v-050cee18>${ssrInterpolate(t.name)} <small class="mono" data-v-050cee18>${ssrInterpolate(t.min)}~${ssrInterpolate(t.max)}${ssrInterpolate(t.unit)}</small><em class="${ssrRenderClass([{ builtin: t.builtin }, "tpl-tag"])}" data-v-050cee18>${ssrInterpolate(t.builtin ? _ctx.$t("dcwDetail.k3x23c141") : _ctx.$t("dcwDetail.k3t616a142"))}</em></span>`);
329
+ _push(`<span class="tpl-chip"${ssrRenderAttr("title", `${t.code} · ${t.min}~${t.max} ${t.unit}${t.semantics ? ` · ${t.semantics}` : ""}`)} data-v-0c94de6c>${ssrInterpolate(t.name)} <small class="mono" data-v-0c94de6c>${ssrInterpolate(t.min)}~${ssrInterpolate(t.max)}${ssrInterpolate(t.unit)}</small><em class="${ssrRenderClass([{ builtin: t.builtin }, "tpl-tag"])}" data-v-0c94de6c>${ssrInterpolate(t.builtin ? _ctx.$t("dcwDetail.k3x23c141") : _ctx.$t("dcwDetail.k3t616a142"))}</em></span>`);
316
330
  });
317
- _push(`<!--]--></div><p class="sec-label" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k169eb4s033"))}</p><div class="f-grid tpl-form" data-v-050cee18><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1f55q76034"))}<em data-v-050cee18>*</em></span><input${ssrRenderAttr("value", tplForm.name)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k1tooi3o004"))} data-v-050cee18></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1bqk219035"))}</span><input${ssrRenderAttr("value", tplForm.ch)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k698qz0005"))} data-v-050cee18></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1ayxrqb036"))}</span><input${ssrRenderAttr("value", tplForm.code)} class="inp" placeholder="如 MOTOR · I" data-v-050cee18></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3x4ef037"))}<em data-v-050cee18>*</em></span><input${ssrRenderAttr("value", tplForm.unit)} class="inp" placeholder="如 A" data-v-050cee18></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1l9jv5m038"))}<em data-v-050cee18>*</em></span><input${ssrRenderAttr("value", tplForm.min)} type="number" class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.kxz9174006"))} data-v-050cee18></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1l9jv4p039"))}<em data-v-050cee18>*</em></span><input${ssrRenderAttr("value", tplForm.max)} type="number" class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.kxz9167007"))} data-v-050cee18></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3mxmcx040"))}</span><input${ssrRenderAttr("value", tplForm.decimals)} type="number" min="0" max="4" class="inp" data-v-050cee18></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3xx56041"))}</span><select class="inp" data-v-050cee18><!--[-->`);
331
+ _push(`<!--]--></div><p class="sec-label" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k169eb4s033"))}</p><div class="f-grid tpl-form" data-v-0c94de6c><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1f55q76034"))}<em data-v-0c94de6c>*</em></span><input${ssrRenderAttr("value", tplForm.name)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k1tooi3o004"))} data-v-0c94de6c></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1bqk219035"))}</span><input${ssrRenderAttr("value", tplForm.ch)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k698qz0005"))} data-v-0c94de6c></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1ayxrqb036"))}</span><input${ssrRenderAttr("value", tplForm.code)} class="inp" placeholder="如 MOTOR · I" data-v-0c94de6c></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3x4ef037"))}<em data-v-0c94de6c>*</em></span><input${ssrRenderAttr("value", tplForm.unit)} class="inp" placeholder="如 A" data-v-0c94de6c></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1l9jv5m038"))}<em data-v-0c94de6c>*</em></span><input${ssrRenderAttr("value", tplForm.min)} type="number" class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.kxz9174006"))} data-v-0c94de6c></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1l9jv4p039"))}<em data-v-0c94de6c>*</em></span><input${ssrRenderAttr("value", tplForm.max)} type="number" class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.kxz9167007"))} data-v-0c94de6c></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3mxmcx040"))}</span><input${ssrRenderAttr("value", tplForm.decimals)} type="number" min="0" max="4" class="inp" data-v-0c94de6c></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3xx56041"))}</span><select class="inp" data-v-0c94de6c><!--[-->`);
318
332
  ssrRenderList(tplIcons, (ic) => {
319
- _push(`<option${ssrRenderAttr("value", ic.key)} data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(tplForm.icon) ? ssrLooseContain(tplForm.icon, ic.key) : ssrLooseEqual(tplForm.icon, ic.key)) ? " selected" : ""}>${ssrInterpolate(ic.label)}</option>`);
333
+ _push(`<option${ssrRenderAttr("value", ic.key)} data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(tplForm.icon) ? ssrLooseContain(tplForm.icon, ic.key) : ssrLooseEqual(tplForm.icon, ic.key)) ? " selected" : ""}>${ssrInterpolate(ic.label)}</option>`);
320
334
  });
321
- _push(`<!--]--></select></label></div><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.knjmyfr042"))}</span><textarea class="inp" rows="2"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k1qdnfzc008"))} data-v-050cee18>${ssrInterpolate(tplForm.semantics)}</textarea></label>`);
322
- if (tplOk.value) _push(`<p class="banner good" style="${ssrRenderStyle({ "margin-top": "10px" })}" data-v-050cee18>${ssrInterpolate(tplOk.value)}</p>`);
335
+ _push(`<!--]--></select></label></div><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.knjmyfr042"))}</span><textarea class="inp" rows="2"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k1qdnfzc008"))} data-v-0c94de6c>${ssrInterpolate(tplForm.semantics)}</textarea></label>`);
336
+ if (tplOk.value) _push(`<p class="banner good" style="${ssrRenderStyle({ "margin-top": "10px" })}" data-v-0c94de6c>${ssrInterpolate(tplOk.value)}</p>`);
323
337
  else _push(`<!---->`);
324
- if (tplError.value) _push(`<p class="m-err" data-v-050cee18>${ssrInterpolate(tplError.value)}</p>`);
338
+ if (tplError.value) _push(`<p class="m-err" data-v-0c94de6c>${ssrInterpolate(tplError.value)}</p>`);
325
339
  else _push(`<!---->`);
326
- _push(`<div class="m-actions" data-v-050cee18><button class="aw-pill outline" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3x62t043"))}</button><button class="pill-btn"${ssrIncludeBooleanAttr(tplSaving.value || !tplForm.name.trim() || tplForm.unit.trim() === "" || tplForm.min === "" || tplForm.max === "") ? " disabled" : ""} data-v-050cee18>${ssrInterpolate(tplSaving.value ? _ctx.$t("dcwDetail.k1bg4759156") : _ctx.$t("dcwDetail.k1bg9nga171"))}</button></div></div></div>`);
340
+ _push(`<div class="m-actions" data-v-0c94de6c><button class="aw-pill outline" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3x62t043"))}</button><button class="pill-btn"${ssrIncludeBooleanAttr(tplSaving.value || !tplForm.name.trim() || tplForm.unit.trim() === "" || tplForm.min === "" || tplForm.max === "") ? " disabled" : ""} data-v-0c94de6c>${ssrInterpolate(tplSaving.value ? _ctx.$t("dcwDetail.k1bg4759156") : _ctx.$t("dcwDetail.k1bg9nga171"))}</button></div></div></div>`);
327
341
  } else _push(`<!---->`);
328
342
  if (addOpen.value) {
329
- _push(`<div class="modal-mask" data-v-050cee18><div class="modal" data-v-050cee18><h3 class="m-title" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1976uns021"))}</h3><div class="seg-row" data-v-050cee18><button class="${ssrRenderClass([{ on: addScenario.value === "mock" }, "seg"])}" data-v-050cee18> Mock 模拟 PLC </button><button class="${ssrRenderClass([{ on: addScenario.value === "real" }, "seg"])}" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.kyj8fen044"))}</button></div><div class="f-grid" data-v-050cee18><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1ejzwqp045"))}</span><select class="inp" data-v-050cee18><!--[-->`);
343
+ _push(`<div class="modal-mask" data-v-0c94de6c><div class="modal" data-v-0c94de6c><h3 class="m-title" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1976uns021"))}</h3><div class="seg-row" data-v-0c94de6c><button class="${ssrRenderClass([{ on: addScenario.value === "mock" }, "seg"])}" data-v-0c94de6c> Mock 模拟 PLC </button><button class="${ssrRenderClass([{ on: addScenario.value === "real" }, "seg"])}" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.kyj8fen044"))}</button></div><div class="f-grid" data-v-0c94de6c><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1ejzwqp045"))}</span><select class="inp" data-v-0c94de6c><!--[-->`);
330
344
  ssrRenderList(unref(dcw).templates, (t) => {
331
- _push(`<option${ssrRenderAttr("value", t.key)} data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(addTemplate.value) ? ssrLooseContain(addTemplate.value, t.key) : ssrLooseEqual(addTemplate.value, t.key)) ? " selected" : ""}>${ssrInterpolate(t.name)} · ${ssrInterpolate(t.ch)}(${ssrInterpolate(t.min)}~${ssrInterpolate(t.max)} ${ssrInterpolate(t.unit)})${ssrInterpolate(t.builtin ? "" : _ctx.$t("dcwDetail.kr45rk9157"))}</option>`);
345
+ _push(`<option${ssrRenderAttr("value", t.key)} data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(addTemplate.value) ? ssrLooseContain(addTemplate.value, t.key) : ssrLooseEqual(addTemplate.value, t.key)) ? " selected" : ""}>${ssrInterpolate(t.name)} · ${ssrInterpolate(t.ch)}(${ssrInterpolate(t.min)}~${ssrInterpolate(t.max)} ${ssrInterpolate(t.unit)})${ssrInterpolate(t.builtin ? "" : _ctx.$t("dcwDetail.kr45rk9157"))}</option>`);
332
346
  });
333
- _push(`<!--]--></select></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1ce2k1y046"))}</span><input${ssrRenderAttr("value", addName.value)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.kgpxzy3009"))} data-v-050cee18></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1vyb8im047"))}</span><input${ssrRenderAttr("value", addHold.value)} type="number" min="0" max="3600000" step="500" class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.kb1srz0010"))} data-v-050cee18></label></div><div class="f-grid cal-form" data-v-050cee18><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.kiune1f048"))}</span><select class="inp" data-v-050cee18><option value="none" data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(addTransform.kind) ? ssrLooseContain(addTransform.kind, "none") : ssrLooseEqual(addTransform.kind, "none")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("dcwDetail.kkzy0k049"))}</option><option value="linear" data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(addTransform.kind) ? ssrLooseContain(addTransform.kind, "linear") : ssrLooseEqual(addTransform.kind, "linear")) ? " selected" : ""}> 线性标定:PLC值 = (物理值 - offset) / scale </option></select></label><label class="f" data-v-050cee18><span data-v-050cee18>scale / offset</span><div style="${ssrRenderStyle({
347
+ _push(`<!--]--></select></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1ce2k1y046"))}</span><input${ssrRenderAttr("value", addName.value)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.kgpxzy3009"))} data-v-0c94de6c></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1vyb8im047"))}</span><input${ssrRenderAttr("value", addHold.value)} type="number" min="0" max="3600000" step="500" class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.kb1srz0010"))} data-v-0c94de6c></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k9r7d4e016"))}</span><input${ssrRenderAttr("value", addRead.value)} type="number" min="0" max="3600000" step="500" class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k9r7d4e017"))} data-v-0c94de6c></label></div><div class="f-grid cal-form" data-v-0c94de6c><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.kiune1f048"))}</span><select class="inp" data-v-0c94de6c><option value="none" data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(addTransform.kind) ? ssrLooseContain(addTransform.kind, "none") : ssrLooseEqual(addTransform.kind, "none")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("dcwDetail.kkzy0k049"))}</option><option value="linear" data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(addTransform.kind) ? ssrLooseContain(addTransform.kind, "linear") : ssrLooseEqual(addTransform.kind, "linear")) ? " selected" : ""}> 线性标定:PLC值 = (物理值 - offset) / scale </option></select></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>scale / offset</span><div style="${ssrRenderStyle({
334
348
  "display": "flex",
335
349
  "gap": "6px"
336
- })}" data-v-050cee18><input${ssrRenderAttr("value", addTransform.scale)} type="number" step="0.1" class="inp"${ssrIncludeBooleanAttr(addTransform.kind !== "linear") ? " disabled" : ""} title="decoder 斜率(≠0):物理值 = scale × PLC值 + offset;下发时自动取逆" data-v-050cee18><input${ssrRenderAttr("value", addTransform.offset)} type="number" step="0.1" class="inp"${ssrIncludeBooleanAttr(addTransform.kind !== "linear") ? " disabled" : ""} title="decoder 截距" data-v-050cee18></div></label></div>`);
350
+ })}" data-v-0c94de6c><input${ssrRenderAttr("value", addTransform.scale)} type="number" step="0.1" class="inp"${ssrIncludeBooleanAttr(addTransform.kind !== "linear") ? " disabled" : ""} title="decoder 斜率(≠0):物理值 = scale × PLC值 + offset;下发时自动取逆" data-v-0c94de6c><input${ssrRenderAttr("value", addTransform.offset)} type="number" step="0.1" class="inp"${ssrIncludeBooleanAttr(addTransform.kind !== "linear") ? " disabled" : ""} title="decoder 截距" data-v-0c94de6c></div></label></div>`);
337
351
  if (addScenario.value === "real") {
338
- _push(`<!--[--><div class="f-grid" data-v-050cee18><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1kt87rx050"))}</span><select class="inp" data-v-050cee18><!--[-->`);
352
+ _push(`<!--[--><div class="f-grid" data-v-0c94de6c><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1kt87rx050"))}</span><select class="inp" data-v-0c94de6c><!--[-->`);
339
353
  ssrRenderList(unref(DCW_DRIVERS).filter((x) => x.status !== "builtin"), (d) => {
340
- _push(`<option${ssrRenderAttr("value", d.kind)} data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(addDriver.value) ? ssrLooseContain(addDriver.value, d.kind) : ssrLooseEqual(addDriver.value, d.kind)) ? " selected" : ""}>${ssrInterpolate(d.label)}</option>`);
354
+ _push(`<option${ssrRenderAttr("value", d.kind)} data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(addDriver.value) ? ssrLooseContain(addDriver.value, d.kind) : ssrLooseEqual(addDriver.value, d.kind)) ? " selected" : ""}>${ssrInterpolate(d.label)}</option>`);
341
355
  });
342
356
  _push(`<!--]--></select></label></div>`);
343
357
  if (addFields.value.length) {
344
- _push(`<div class="f-grid driver-form" data-v-050cee18><!--[-->`);
358
+ _push(`<div class="f-grid driver-form" data-v-0c94de6c><!--[-->`);
345
359
  ssrRenderList(addFields.value, (f) => {
346
- _push(`<label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(f.label)}`);
360
+ _push(`<label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(f.label)}`);
347
361
  if (f.required) _push(`<em style="${ssrRenderStyle({
348
362
  "color": "var(--tone-danger-dot)",
349
363
  "font-style": "normal"
350
- })}" data-v-050cee18>*</em>`);
364
+ })}" data-v-0c94de6c>*</em>`);
351
365
  else _push(`<!---->`);
352
366
  _push(`</span>`);
353
367
  if (f.type === "select") {
354
- _push(`<select class="inp" data-v-050cee18><!--[-->`);
368
+ _push(`<select class="inp" data-v-0c94de6c><!--[-->`);
355
369
  ssrRenderList(f.options, (o) => {
356
- _push(`<option${ssrRenderAttr("value", o.value)} data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(addCfg.value[f.key]) ? ssrLooseContain(addCfg.value[f.key], o.value) : ssrLooseEqual(addCfg.value[f.key], o.value)) ? " selected" : ""}>${ssrInterpolate(o.label)}</option>`);
370
+ _push(`<option${ssrRenderAttr("value", o.value)} data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(addCfg.value[f.key]) ? ssrLooseContain(addCfg.value[f.key], o.value) : ssrLooseEqual(addCfg.value[f.key], o.value)) ? " selected" : ""}>${ssrInterpolate(o.label)}</option>`);
357
371
  });
358
372
  _push(`<!--]--></select>`);
359
- } else _push(`<input${ssrRenderDynamicModel(f.type === "number" ? "number" : "text", addCfg.value[f.key], null)}${ssrRenderAttr("type", f.type === "number" ? "number" : "text")}${ssrRenderAttr("placeholder", f.placeholder)} class="inp" data-v-050cee18>`);
360
- if (f.hint) _push(`<small class="hint" data-v-050cee18>${ssrInterpolate(f.hint)}</small>`);
373
+ } else _push(`<input${ssrRenderDynamicModel(f.type === "number" ? "number" : "text", addCfg.value[f.key], null)}${ssrRenderAttr("type", f.type === "number" ? "number" : "text")}${ssrRenderAttr("placeholder", f.placeholder)} class="inp" data-v-0c94de6c>`);
374
+ if (f.hint) _push(`<small class="hint" data-v-0c94de6c>${ssrInterpolate(f.hint)}</small>`);
361
375
  else _push(`<!---->`);
362
376
  _push(`</label>`);
363
377
  });
364
378
  _push(`<!--]--></div>`);
365
379
  } else _push(`<!---->`);
366
- _push(`<div class="test-row" data-v-050cee18><button class="pill-btn outline"${ssrIncludeBooleanAttr(addTesting.value) ? " disabled" : ""} data-v-050cee18>${ssrInterpolate(addTesting.value ? _ctx.$t("dcwDetail.k1fsh720158") : _ctx.$t("dcwDetail.k1fstglk172"))}</button>`);
367
- if (addTest.value) _push(`<span class="${ssrRenderClass([addTest.value.ok ? "good" : "bad", "test-result"])}" data-v-050cee18>${ssrInterpolate(addTest.value.ok ? "✓" : "✗")} ${ssrInterpolate(addTest.value.message)}</span>`);
380
+ _push(`<div class="test-row" data-v-0c94de6c><button class="pill-btn outline"${ssrIncludeBooleanAttr(addTesting.value) ? " disabled" : ""} data-v-0c94de6c>${ssrInterpolate(addTesting.value ? _ctx.$t("dcwDetail.k1fsh720158") : _ctx.$t("dcwDetail.k1fstglk172"))}</button>`);
381
+ if (addTest.value) _push(`<span class="${ssrRenderClass([addTest.value.ok ? "good" : "bad", "test-result"])}" data-v-0c94de6c>${ssrInterpolate(addTest.value.ok ? "✓" : "✗")} ${ssrInterpolate(addTest.value.message)}</span>`);
368
382
  else _push(`<!---->`);
369
383
  _push(`</div><!--]-->`);
370
384
  } else _push(`<!---->`);
371
- _push(`<label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1hgizn7051"))}</span><textarea class="inp" rows="2"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k12bnyt9011"))} data-v-050cee18>${ssrInterpolate(addSemantics.value)}</textarea></label>`);
372
- if (addError.value) _push(`<p class="m-err" data-v-050cee18>${ssrInterpolate(addError.value)}</p>`);
385
+ _push(`<label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1hgizn7051"))}</span><textarea class="inp" rows="2"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k12bnyt9011"))} data-v-0c94de6c>${ssrInterpolate(addSemantics.value)}</textarea></label>`);
386
+ if (addError.value) _push(`<p class="m-err" data-v-0c94de6c>${ssrInterpolate(addError.value)}</p>`);
373
387
  else _push(`<!---->`);
374
- _push(`<div class="m-actions" data-v-050cee18><button class="aw-pill outline" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3xdnn052"))}</button><button class="aw-pill"${ssrIncludeBooleanAttr(addSaving.value) ? " disabled" : ""} data-v-050cee18>${ssrInterpolate(addSaving.value ? _ctx.$t("dcwDetail.k1bg4759156") : _ctx.$t("dcwDetail.k1bge46t173"))}</button></div></div></div>`);
388
+ _push(`<div class="m-actions" data-v-0c94de6c><button class="aw-pill outline" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3xdnn052"))}</button><button class="aw-pill"${ssrIncludeBooleanAttr(addSaving.value) ? " disabled" : ""} data-v-0c94de6c>${ssrInterpolate(addSaving.value ? _ctx.$t("dcwDetail.k1bg4759156") : _ctx.$t("dcwDetail.k1bge46t173"))}</button></div></div></div>`);
375
389
  } else _push(`<!---->`);
376
390
  _push(ssrRenderComponent(_component_a_spin, { spinning: !unref(dcw).loaded && !unref(dcw).error }, {
377
391
  default: withCtx((_, _push, _parent, _scopeId) => {
378
392
  if (_push) {
379
- _push(`<section class="aw-tile table-card" data-v-050cee18${_scopeId}><table class="nodes-table" data-v-050cee18${_scopeId}><thead data-v-050cee18${_scopeId}><tr data-v-050cee18${_scopeId}><th data-v-050cee18${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k1e2dtkt053"))}</th><th data-v-050cee18${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k403cy054"))}</th><th data-v-050cee18${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k42w8s055"))}</th><th data-v-050cee18${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k1deqh0d056"))}</th><th data-v-050cee18${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k1k79ec9057"))}</th><th data-v-050cee18${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k1dexou6058"))}</th><th data-v-050cee18${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k1b1nnaa059"))}</th><th data-v-050cee18${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k1i8rtqt060"))}</th><th class="right" data-v-050cee18${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k40aa6061"))}</th></tr></thead><tbody data-v-050cee18${_scopeId}><!--[-->`);
393
+ _push(`<section class="aw-tile table-card" data-v-0c94de6c${_scopeId}><table class="nodes-table" data-v-0c94de6c${_scopeId}><thead data-v-0c94de6c${_scopeId}><tr data-v-0c94de6c${_scopeId}><th data-v-0c94de6c${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k1e2dtkt053"))}</th><th data-v-0c94de6c${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k403cy054"))}</th><th data-v-0c94de6c${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k42w8s055"))}</th><th data-v-0c94de6c${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k1deqh0d056"))}</th><th data-v-0c94de6c${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k9r7d4e018"))}</th><th data-v-0c94de6c${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k1k79ec9057"))}</th><th data-v-0c94de6c${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k1dexou6058"))}</th><th data-v-0c94de6c${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k1b1nnaa059"))}</th><th data-v-0c94de6c${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k1i8rtqt060"))}</th><th class="right" data-v-0c94de6c${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k40aa6061"))}</th></tr></thead><tbody data-v-0c94de6c${_scopeId}><!--[-->`);
380
394
  ssrRenderList(lineNodes.value, (n) => {
381
- _push(`<tr class="${ssrRenderClass({ "node-paused": !n.enabled })}" data-v-050cee18${_scopeId}><td data-v-050cee18${_scopeId}><span class="mono dim" data-v-050cee18${_scopeId}>${ssrInterpolate(n.id.slice(0, 8))}</span><b data-v-050cee18${_scopeId}>${ssrInterpolate(n.name)}</b><small class="mono ch" data-v-050cee18${_scopeId}>${ssrInterpolate(dcwTemplateRefCh(n.templateRef))}</small></td><td data-v-050cee18${_scopeId}><button class="${ssrRenderClass([{ on: n.enabled }, "ctrl-toggle"])}"${ssrIncludeBooleanAttr(togglingId.value === n.id) ? " disabled" : ""}${ssrRenderAttr("title", n.enabled ? "暂停该节点控制:下发将被拒绝" : "开启该节点控制:恢复可下发")} data-v-050cee18${_scopeId}><span class="ct-dot" data-v-050cee18${_scopeId}></span> ${ssrInterpolate(n.enabled ? _ctx.$t("dcwDetail.k3o3ib3159") : _ctx.$t("dcwDetail.k3n93ed062"))}</button></td><td data-v-050cee18${_scopeId}>`);
382
- if (!n.enabled) _push(`<span class="st-pill paused" data-v-050cee18${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k3n93ed062"))}</span>`);
383
- else _push(`<span class="${ssrRenderClass([n.state, "st-pill"])}" data-v-050cee18${_scopeId}>${ssrInterpolate(stateLabel[n.state] ?? n.state)}</span>`);
384
- _push(`</td><td class="mono val" data-v-050cee18${_scopeId}>${ssrInterpolate(n.value != null ? n.value.toFixed(n.decimals) : "--")} <small data-v-050cee18${_scopeId}>${ssrInterpolate(n.unit)}</small>`);
385
- if (n.lastAckAt) _push(`<small class="dim" data-v-050cee18${_scopeId}> · ${ssrInterpolate(n.lastAckAt.slice(11, 19))}</small>`);
395
+ _push(`<tr class="${ssrRenderClass({ "node-paused": !n.enabled })}" data-v-0c94de6c${_scopeId}><td data-v-0c94de6c${_scopeId}><span class="mono dim" data-v-0c94de6c${_scopeId}>${ssrInterpolate(n.id.slice(0, 8))}</span><b data-v-0c94de6c${_scopeId}>${ssrInterpolate(n.name)}</b><small class="mono ch" data-v-0c94de6c${_scopeId}>${ssrInterpolate(dcwTemplateRefCh(n.templateRef))}</small></td><td data-v-0c94de6c${_scopeId}><button class="${ssrRenderClass([{ on: n.enabled }, "ctrl-toggle"])}"${ssrIncludeBooleanAttr(togglingId.value === n.id) ? " disabled" : ""}${ssrRenderAttr("title", n.enabled ? "暂停该节点控制:下发将被拒绝" : "开启该节点控制:恢复可下发")} data-v-0c94de6c${_scopeId}><span class="ct-dot" data-v-0c94de6c${_scopeId}></span> ${ssrInterpolate(n.enabled ? _ctx.$t("dcwDetail.k3o3ib3159") : _ctx.$t("dcwDetail.k3n93ed062"))}</button></td><td data-v-0c94de6c${_scopeId}>`);
396
+ if (!n.enabled) _push(`<span class="st-pill paused" data-v-0c94de6c${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k3n93ed062"))}</span>`);
397
+ else _push(`<span class="${ssrRenderClass([n.state, "st-pill"])}" data-v-0c94de6c${_scopeId}>${ssrInterpolate(stateLabel[n.state] ?? n.state)}</span>`);
398
+ _push(`</td><td class="mono val" data-v-0c94de6c${_scopeId}>${ssrInterpolate(n.value != null ? n.value.toFixed(n.decimals) : "--")} <small data-v-0c94de6c${_scopeId}>${ssrInterpolate(n.unit)}</small>`);
399
+ if (n.lastAckAt) _push(`<small class="dim" data-v-0c94de6c${_scopeId}> · ${ssrInterpolate(n.lastAckAt.slice(11, 19))}</small>`);
386
400
  else _push(`<!---->`);
387
- _push(`</td><td data-v-050cee18${_scopeId}><div class="write-row" data-v-050cee18${_scopeId}><input${ssrRenderAttr("value", setInputs[n.id])} type="number" class="inp write-inp mono"${ssrRenderAttr("placeholder", `${n.min}~${n.max}`)}${ssrRenderAttr("min", n.min)}${ssrRenderAttr("max", n.max)}${ssrRenderAttr("step", 10 ** -n.decimals)}${ssrIncludeBooleanAttr(!n.enabled) ? " disabled" : ""}${ssrRenderAttr("title", !n.enabled ? "当前节点暂停:开启控制后方可设定" : "")} data-v-050cee18${_scopeId}><button class="mini-btn write-btn"${ssrIncludeBooleanAttr(!n.enabled || writingId.value === n.id || setInputs[n.id] == null || setInputs[n.id] === "") ? " disabled" : ""}${ssrRenderAttr("title", !n.enabled ? "当前节点暂停:开启控制后方可设定" : "下发设定值")} data-v-050cee18${_scopeId}>${ssrInterpolate(writingId.value === n.id ? _ctx.$t("dcwDetail.k3l3h80123") : _ctx.$t("dcwDetail.k3w6td174"))}</button></div></td><td class="mono dim" data-v-050cee18${_scopeId}>${ssrInterpolate(n.min)} ~ ${ssrInterpolate(n.max)} ${ssrInterpolate(n.unit)}</td><td class="mono" data-v-050cee18${_scopeId}>${ssrInterpolate(n.holdIntervalMs == null ? _ctx.$t("dcwDetail.k3zul4160") : `${n.holdIntervalMs}ms`)}</td><td data-v-050cee18${_scopeId}>${ssrInterpolate(deviceName(n.deviceBindingId))}</td><td class="right" data-v-050cee18${_scopeId}><button class="mini-btn danger" data-v-050cee18${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k3xakp063"))}</button></td></tr>`);
401
+ _push(`</td><td class="mono val" data-v-0c94de6c${_scopeId}><span${ssrRenderAttr("title", n.lastReadError ?? _ctx.$t("dcwDetail.k9r7d4e019"))} class="${ssrRenderClass({ "read-stale": n.lastReadError })}" data-v-0c94de6c${_scopeId}>${ssrInterpolate(n.readValue != null ? n.readValue.toFixed(n.decimals) : "--")}</span><small data-v-0c94de6c${_scopeId}>${ssrInterpolate(n.unit)}</small>`);
402
+ if (n.lastReadAt) _push(`<small class="dim" data-v-0c94de6c${_scopeId}> · ${ssrInterpolate(n.lastReadAt.slice(11, 19))}</small>`);
403
+ else _push(`<!---->`);
404
+ _push(`<button class="mini-btn read-btn"${ssrIncludeBooleanAttr(readingId.value === n.id) ? " disabled" : ""}${ssrRenderAttr("title", _ctx.$t("dcwDetail.k9r7d4e020"))} data-v-0c94de6c${_scopeId}>${ssrInterpolate(readingId.value === n.id ? "···" : _ctx.$t("dcwDetail.k9r7d4e021"))}</button></td><td data-v-0c94de6c${_scopeId}><div class="write-row" data-v-0c94de6c${_scopeId}><input${ssrRenderAttr("value", setInputs[n.id])} type="number" class="inp write-inp mono"${ssrRenderAttr("placeholder", `${n.min}~${n.max}`)}${ssrRenderAttr("min", n.min)}${ssrRenderAttr("max", n.max)}${ssrRenderAttr("step", 10 ** -n.decimals)}${ssrIncludeBooleanAttr(!n.enabled) ? " disabled" : ""}${ssrRenderAttr("title", !n.enabled ? "当前节点暂停:开启控制后方可设定" : "")} data-v-0c94de6c${_scopeId}><button class="mini-btn write-btn"${ssrIncludeBooleanAttr(!n.enabled || writingId.value === n.id || setInputs[n.id] == null || setInputs[n.id] === "") ? " disabled" : ""}${ssrRenderAttr("title", !n.enabled ? "当前节点暂停:开启控制后方可设定" : "下发设定值")} data-v-0c94de6c${_scopeId}>${ssrInterpolate(writingId.value === n.id ? _ctx.$t("dcwDetail.k3l3h80123") : _ctx.$t("dcwDetail.k3w6td174"))}</button></div></td><td class="mono dim" data-v-0c94de6c${_scopeId}>${ssrInterpolate(n.min)} ~ ${ssrInterpolate(n.max)} ${ssrInterpolate(n.unit)}</td><td class="mono" data-v-0c94de6c${_scopeId}>${ssrInterpolate(n.holdIntervalMs == null ? _ctx.$t("dcwDetail.k3zul4160") : `${n.holdIntervalMs}ms`)} <small class="dim"${ssrRenderAttr("title", _ctx.$t("dcwDetail.k9r7d4e016"))} data-v-0c94de6c${_scopeId}>· ${ssrInterpolate(n.readIntervalMs === 0 ? _ctx.$t("dcwDetail.k9r7d4e022") : n.readIntervalMs == null ? _ctx.$t("dcwDetail.k9r7d4e023") : `${n.readIntervalMs}ms`)}</small></td><td data-v-0c94de6c${_scopeId}>${ssrInterpolate(deviceName(n.deviceBindingId))}</td><td class="right" data-v-0c94de6c${_scopeId}><button class="mini-btn danger" data-v-0c94de6c${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k3xakp063"))}</button></td></tr>`);
388
405
  });
389
406
  _push(`<!--]-->`);
390
- if (unref(dcw).loaded && lineNodes.value.length === 0) _push(`<tr data-v-050cee18${_scopeId}><td colspan="9" data-v-050cee18${_scopeId}><div class="pane-empty" style="${ssrRenderStyle({ "min-height": "120px" })}" data-v-050cee18${_scopeId}><p class="pe-sub" data-v-050cee18${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k1wtecyw064"))}</p></div></td></tr>`);
407
+ if (unref(dcw).loaded && lineNodes.value.length === 0) _push(`<tr data-v-0c94de6c${_scopeId}><td colspan="9" data-v-0c94de6c${_scopeId}><div class="pane-empty" style="${ssrRenderStyle({ "min-height": "120px" })}" data-v-0c94de6c${_scopeId}><p class="pe-sub" data-v-0c94de6c${_scopeId}>${ssrInterpolate(_ctx.$t("dcwDetail.k1wtecyw064"))}</p></div></td></tr>`);
391
408
  else _push(`<!---->`);
392
409
  _push(`</tbody></table></section>`);
393
410
  } else return [createVNode("section", { class: "aw-tile table-card" }, [createVNode("table", { class: "nodes-table" }, [createVNode("thead", null, [createVNode("tr", null, [
@@ -395,6 +412,7 @@ var _id__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
395
412
  createVNode("th", null, toDisplayString(_ctx.$t("dcwDetail.k403cy054")), 1),
396
413
  createVNode("th", null, toDisplayString(_ctx.$t("dcwDetail.k42w8s055")), 1),
397
414
  createVNode("th", null, toDisplayString(_ctx.$t("dcwDetail.k1deqh0d056")), 1),
415
+ createVNode("th", null, toDisplayString(_ctx.$t("dcwDetail.k9r7d4e018")), 1),
398
416
  createVNode("th", null, toDisplayString(_ctx.$t("dcwDetail.k1k79ec9057")), 1),
399
417
  createVNode("th", null, toDisplayString(_ctx.$t("dcwDetail.k1dexou6058")), 1),
400
418
  createVNode("th", null, toDisplayString(_ctx.$t("dcwDetail.k1b1nnaa059")), 1),
@@ -435,6 +453,27 @@ var _id__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
435
453
  class: "dim"
436
454
  }, " · " + toDisplayString(n.lastAckAt.slice(11, 19)), 1)) : createCommentVNode("", true)
437
455
  ]),
456
+ createVNode("td", { class: "mono val" }, [
457
+ createVNode("span", {
458
+ title: n.lastReadError ?? _ctx.$t("dcwDetail.k9r7d4e019"),
459
+ class: { "read-stale": n.lastReadError }
460
+ }, toDisplayString(n.readValue != null ? n.readValue.toFixed(n.decimals) : "--"), 11, ["title"]),
461
+ createVNode("small", null, toDisplayString(n.unit), 1),
462
+ n.lastReadAt ? (openBlock(), createBlock("small", {
463
+ key: 0,
464
+ class: "dim"
465
+ }, " · " + toDisplayString(n.lastReadAt.slice(11, 19)), 1)) : createCommentVNode("", true),
466
+ createVNode("button", {
467
+ class: "mini-btn read-btn",
468
+ disabled: readingId.value === n.id,
469
+ title: _ctx.$t("dcwDetail.k9r7d4e020"),
470
+ onClick: ($event) => doRead(n.id)
471
+ }, toDisplayString(readingId.value === n.id ? "···" : _ctx.$t("dcwDetail.k9r7d4e021")), 9, [
472
+ "disabled",
473
+ "title",
474
+ "onClick"
475
+ ])
476
+ ]),
438
477
  createVNode("td", null, [createVNode("div", { class: "write-row" }, [withDirectives(createVNode("input", {
439
478
  "onUpdate:modelValue": ($event) => setInputs[n.id] = $event,
440
479
  type: "number",
@@ -469,7 +508,10 @@ var _id__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
469
508
  "onClick"
470
509
  ])])]),
471
510
  createVNode("td", { class: "mono dim" }, toDisplayString(n.min) + " ~ " + toDisplayString(n.max) + " " + toDisplayString(n.unit), 1),
472
- createVNode("td", { class: "mono" }, toDisplayString(n.holdIntervalMs == null ? _ctx.$t("dcwDetail.k3zul4160") : `${n.holdIntervalMs}ms`), 1),
511
+ createVNode("td", { class: "mono" }, [createTextVNode(toDisplayString(n.holdIntervalMs == null ? _ctx.$t("dcwDetail.k3zul4160") : `${n.holdIntervalMs}ms`) + " ", 1), createVNode("small", {
512
+ class: "dim",
513
+ title: _ctx.$t("dcwDetail.k9r7d4e016")
514
+ }, "· " + toDisplayString(n.readIntervalMs === 0 ? _ctx.$t("dcwDetail.k9r7d4e022") : n.readIntervalMs == null ? _ctx.$t("dcwDetail.k9r7d4e023") : `${n.readIntervalMs}ms`), 9, ["title"])]),
473
515
  createVNode("td", null, toDisplayString(deviceName(n.deviceBindingId)), 1),
474
516
  createVNode("td", { class: "right" }, [createVNode("button", {
475
517
  class: "mini-btn danger",
@@ -483,140 +525,140 @@ var _id__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
483
525
  }),
484
526
  _: 1
485
527
  }, _parent));
486
- _push(`<section class="aw-tile recipe-card" data-v-050cee18><div class="recipe-hd" data-v-050cee18><h3 data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1j8w3hd065"))}</h3><span class="panel-tag mono" data-v-050cee18>${ssrInterpolate(lineProducts.value.length)} ${ssrInterpolate(_ctx.$t("dcwDetail.k1av3wgs143"))} ${ssrInterpolate(visibleRecipes.value.length)} ${ssrInterpolate(_ctx.$t("dcwDetail.k48grv027"))}</span><button class="pill-btn" style="${ssrRenderStyle({ "margin-left": "auto" })}" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1akm6dc066"))}</button><button class="mini-btn" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1aka0ki067"))}</button></div><p class="recipe-sub" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k6bl2q8068"))}</p>`);
528
+ _push(`<section class="aw-tile recipe-card" data-v-0c94de6c><div class="recipe-hd" data-v-0c94de6c><h3 data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1j8w3hd065"))}</h3><span class="panel-tag mono" data-v-0c94de6c>${ssrInterpolate(lineProducts.value.length)} ${ssrInterpolate(_ctx.$t("dcwDetail.k1av3wgs143"))} ${ssrInterpolate(visibleRecipes.value.length)} ${ssrInterpolate(_ctx.$t("dcwDetail.k48grv027"))}</span><button class="pill-btn" style="${ssrRenderStyle({ "margin-left": "auto" })}" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1akm6dc066"))}</button><button class="mini-btn" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1aka0ki067"))}</button></div><p class="recipe-sub" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k6bl2q8068"))}</p>`);
487
529
  if (lineProducts.value.length) {
488
- _push(`<div class="product-row" data-v-050cee18><button class="${ssrRenderClass([{ on: filterProductId.value === "" }, "prod-chip"])}" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3x4t1069"))}</button><!--[-->`);
530
+ _push(`<div class="product-row" data-v-0c94de6c><button class="${ssrRenderClass([{ on: filterProductId.value === "" }, "prod-chip"])}" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3x4t1069"))}</button><!--[-->`);
489
531
  ssrRenderList(lineProducts.value, (p) => {
490
- _push(`<button class="${ssrRenderClass([{ on: filterProductId.value === p.id }, "prod-chip"])}"${ssrRenderAttr("title", p.description)} data-v-050cee18>${ssrInterpolate(p.name)} <span class="prod-del"${ssrRenderAttr("title", _ctx.$t("dcwDetail.k1bpfjgx012"))} data-v-050cee18>×</span></button>`);
532
+ _push(`<button class="${ssrRenderClass([{ on: filterProductId.value === p.id }, "prod-chip"])}"${ssrRenderAttr("title", p.description)} data-v-0c94de6c>${ssrInterpolate(p.name)} <span class="prod-del"${ssrRenderAttr("title", _ctx.$t("dcwDetail.k1bpfjgx012"))} data-v-0c94de6c>×</span></button>`);
491
533
  });
492
534
  _push(`<!--]--></div>`);
493
535
  } else _push(`<p class="dim" style="${ssrRenderStyle({
494
536
  "margin": "6px 0 12px",
495
537
  "font-size": "12px"
496
- })}" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.knov3zg070"))}</p>`);
497
- _push(`<div class="recipe-grid" data-v-050cee18><!--[-->`);
538
+ })}" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.knov3zg070"))}</p>`);
539
+ _push(`<div class="recipe-grid" data-v-0c94de6c><!--[-->`);
498
540
  ssrRenderList(visibleRecipes.value, (r) => {
499
- _push(`<div class="recipe-item" data-v-050cee18><div class="recipe-name" data-v-050cee18><b data-v-050cee18>${ssrInterpolate(r.name)}</b><small class="dim" data-v-050cee18>${ssrInterpolate(productName(r.productId))}</small><small class="mono dim" data-v-050cee18>${ssrInterpolate(r.id)}</small></div>`);
500
- if (r.description) _push(`<p class="dim desc" data-v-050cee18>${ssrInterpolate(r.description)}</p>`);
541
+ _push(`<div class="recipe-item" data-v-0c94de6c><div class="recipe-name" data-v-0c94de6c><b data-v-0c94de6c>${ssrInterpolate(r.name)}</b><small class="dim" data-v-0c94de6c>${ssrInterpolate(productName(r.productId))}</small><small class="mono dim" data-v-0c94de6c>${ssrInterpolate(r.id)}</small></div>`);
542
+ if (r.description) _push(`<p class="dim desc" data-v-0c94de6c>${ssrInterpolate(r.description)}</p>`);
501
543
  else _push(`<!---->`);
502
- _push(`<div class="recipe-params mono" data-v-050cee18><!--[-->`);
544
+ _push(`<div class="recipe-params mono" data-v-0c94de6c><!--[-->`);
503
545
  ssrRenderList(r.params, (p, i) => {
504
- _push(`<span class="param-chip" data-v-050cee18>${ssrInterpolate(unref(dcw).templates.find((t) => t.key === (p.templateRef ?? "").replace("dcw-", ""))?.ch ?? p.templateRef)} = ${ssrInterpolate(p.value)}</span>`);
546
+ _push(`<span class="param-chip" data-v-0c94de6c>${ssrInterpolate(unref(dcw).templates.find((t) => t.key === (p.templateRef ?? "").replace("dcw-", ""))?.ch ?? p.templateRef)} = ${ssrInterpolate(p.value)}</span>`);
505
547
  });
506
548
  _push(`<!--]--><!--[-->`);
507
549
  ssrRenderList(r.daqWindows, (w, i) => {
508
- _push(`<span class="param-chip daqwin"${ssrRenderAttr("title", _ctx.$t("dcwDetail.k1l11api013"))} data-v-050cee18> ◎ ${ssrInterpolate(daqNodeCh(w.nodeId))} ∈ [${ssrInterpolate(w.min ?? "-∞")}, ${ssrInterpolate(w.max ?? "+∞")}] </span>`);
550
+ _push(`<span class="param-chip daqwin"${ssrRenderAttr("title", _ctx.$t("dcwDetail.k1l11api013"))} data-v-0c94de6c> ◎ ${ssrInterpolate(daqNodeCh(w.nodeId))} ∈ [${ssrInterpolate(w.min ?? "-∞")}, ${ssrInterpolate(w.max ?? "+∞")}] </span>`);
509
551
  });
510
- _push(`<!--]--></div><div class="recipe-actions" data-v-050cee18><button class="pill-btn" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1497qvr071"))}</button><button class="mini-btn" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k45eb0072"))}</button><button class="mini-btn danger" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3xakp063"))}</button></div></div>`);
552
+ _push(`<!--]--></div><div class="recipe-actions" data-v-0c94de6c><button class="pill-btn" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1497qvr071"))}</button><button class="mini-btn" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k45eb0072"))}</button><button class="mini-btn danger" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3xakp063"))}</button></div></div>`);
511
553
  });
512
554
  _push(`<!--]-->`);
513
- if (visibleRecipes.value.length === 0) _push(`<div class="pane-empty" style="${ssrRenderStyle({ "grid-column": "1 / -1" })}" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.keko1xy073"))}</div>`);
555
+ if (visibleRecipes.value.length === 0) _push(`<div class="pane-empty" style="${ssrRenderStyle({ "grid-column": "1 / -1" })}" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.keko1xy073"))}</div>`);
514
556
  else _push(`<!---->`);
515
557
  _push(`</div>`);
516
- if (applyResult.value) _push(`<div class="banner good" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1l3hrvp144"))} ${ssrInterpolate(applyResult.value.runId)} ${ssrInterpolate(_ctx.$t("dcwDetail.k1g3lh2v167"))}${ssrInterpolate(applyResult.value.ok)}/${ssrInterpolate(applyResult.value.total)} ${ssrInterpolate(_ctx.$t("dcwDetail.k1bqci06149"))} <button class="mini-btn" style="${ssrRenderStyle({ "margin-left": "10px" })}"${ssrIncludeBooleanAttr(runDataLoading.value) ? " disabled" : ""} data-v-050cee18>${ssrInterpolate(runDataLoading.value ? _ctx.$t("dcwDetail.k1br0ij9161") : _ctx.$t("dcwDetail.kxwei5175"))}</button></div>`);
558
+ if (applyResult.value) _push(`<div class="banner good" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1l3hrvp144"))} ${ssrInterpolate(applyResult.value.runId)} ${ssrInterpolate(_ctx.$t("dcwDetail.k1g3lh2v167"))}${ssrInterpolate(applyResult.value.ok)}/${ssrInterpolate(applyResult.value.total)} ${ssrInterpolate(_ctx.$t("dcwDetail.k1bqci06149"))} <button class="mini-btn" style="${ssrRenderStyle({ "margin-left": "10px" })}"${ssrIncludeBooleanAttr(runDataLoading.value) ? " disabled" : ""} data-v-0c94de6c>${ssrInterpolate(runDataLoading.value ? _ctx.$t("dcwDetail.k1br0ij9161") : _ctx.$t("dcwDetail.kxwei5175"))}</button></div>`);
517
559
  else _push(`<!---->`);
518
560
  if (lineRuns.value.length) {
519
- _push(`<div class="runs" data-v-050cee18><p class="sec-label" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1rjer8d074"))}</p><table class="nodes-table" data-v-050cee18><thead data-v-050cee18><tr data-v-050cee18><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k400lb075"))}</th><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k48grv027"))}</th><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k4497j076"))}</th><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1bqhtmu077"))}</th><th class="right" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k40aa6061"))}</th></tr></thead><tbody data-v-050cee18><!--[-->`);
561
+ _push(`<div class="runs" data-v-0c94de6c><p class="sec-label" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1rjer8d074"))}</p><table class="nodes-table" data-v-0c94de6c><thead data-v-0c94de6c><tr data-v-0c94de6c><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k400lb075"))}</th><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k48grv027"))}</th><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k4497j076"))}</th><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1bqhtmu077"))}</th><th class="right" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k40aa6061"))}</th></tr></thead><tbody data-v-0c94de6c><!--[-->`);
520
562
  ssrRenderList([...lineRuns.value].reverse().slice(0, 8), (run) => {
521
- _push(`<tr data-v-050cee18><td class="mono" data-v-050cee18>${ssrInterpolate(run.id)}</td><td data-v-050cee18>${ssrInterpolate(run.recipeName)}</td><td class="mono dim" data-v-050cee18>${ssrInterpolate(run.startedAt.slice(5, 19))} ~ ${ssrInterpolate(run.endedAt ? run.endedAt.slice(5, 19) : _ctx.$t("dcwDetail.k3vpfg9162"))}</td><td data-v-050cee18><span class="${ssrRenderClass([run.results.every((r) => r.ok) ? "ok" : "warn", "st-pill"])}" data-v-050cee18>${ssrInterpolate(run.results.filter((r) => r.ok).length)}/${ssrInterpolate(run.results.length)}</span></td><td class="right" data-v-050cee18><button class="mini-btn"${ssrIncludeBooleanAttr(runDataLoading.value) ? " disabled" : ""} data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1dzwrdp078"))}</button>`);
522
- if (!run.endedAt) _push(`<button class="mini-btn" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1blr7y7079"))}</button>`);
563
+ _push(`<tr data-v-0c94de6c><td class="mono" data-v-0c94de6c>${ssrInterpolate(run.id)}</td><td data-v-0c94de6c>${ssrInterpolate(run.recipeName)}</td><td class="mono dim" data-v-0c94de6c>${ssrInterpolate(run.startedAt.slice(5, 19))} ~ ${ssrInterpolate(run.endedAt ? run.endedAt.slice(5, 19) : _ctx.$t("dcwDetail.k3vpfg9162"))}</td><td data-v-0c94de6c><span class="${ssrRenderClass([run.results.every((r) => r.ok) ? "ok" : "warn", "st-pill"])}" data-v-0c94de6c>${ssrInterpolate(run.results.filter((r) => r.ok).length)}/${ssrInterpolate(run.results.length)}</span></td><td class="right" data-v-0c94de6c><button class="mini-btn"${ssrIncludeBooleanAttr(runDataLoading.value) ? " disabled" : ""} data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1dzwrdp078"))}</button>`);
564
+ if (!run.endedAt) _push(`<button class="mini-btn" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1blr7y7079"))}</button>`);
523
565
  else _push(`<!---->`);
524
566
  _push(`</td></tr>`);
525
567
  });
526
568
  _push(`<!--]--></tbody></table></div>`);
527
569
  } else _push(`<!---->`);
528
570
  if (runDataView.value) {
529
- _push(`<div class="modal-mask" data-v-050cee18><div class="modal" data-v-050cee18><h3 class="m-title" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k11lq94k145"))} ${ssrInterpolate(runDataView.value.data.run.recipeName)}(${ssrInterpolate(runDataView.value.runId)}) </h3><p class="sec-label" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1me41w8080"))}</p><table class="nodes-table" data-v-050cee18><thead data-v-050cee18><tr data-v-050cee18><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k48hde081"))}</th><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k45uio082"))}</th><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k40t11083"))}</th><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3xuaw084"))}</th><th data-v-050cee18>min ~ max</th><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k4118o085"))}</th></tr></thead><tbody data-v-050cee18><!--[-->`);
571
+ _push(`<div class="modal-mask" data-v-0c94de6c><div class="modal" data-v-0c94de6c><h3 class="m-title" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k11lq94k145"))} ${ssrInterpolate(runDataView.value.data.run.recipeName)}(${ssrInterpolate(runDataView.value.runId)}) </h3><p class="sec-label" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1me41w8080"))}</p><table class="nodes-table" data-v-0c94de6c><thead data-v-0c94de6c><tr data-v-0c94de6c><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k48hde081"))}</th><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k45uio082"))}</th><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k40t11083"))}</th><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3xuaw084"))}</th><th data-v-0c94de6c>min ~ max</th><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k4118o085"))}</th></tr></thead><tbody data-v-0c94de6c><!--[-->`);
530
572
  ssrRenderList(runDataView.value.data.daq, (d) => {
531
- _push(`<tr data-v-050cee18><td data-v-050cee18>${ssrInterpolate(d.ch)}<small class="mono dim" data-v-050cee18>${ssrInterpolate(d.unit)}</small></td><td data-v-050cee18>${ssrInterpolate(d.nodeName)}</td><td class="mono" data-v-050cee18>${ssrInterpolate(d.latest)}</td><td class="mono" data-v-050cee18>${ssrInterpolate(d.avg)}</td><td class="mono dim" data-v-050cee18>${ssrInterpolate(d.min)} ~ ${ssrInterpolate(d.max)}</td><td class="mono dim" data-v-050cee18>${ssrInterpolate(d.cnt)}</td></tr>`);
573
+ _push(`<tr data-v-0c94de6c><td data-v-0c94de6c>${ssrInterpolate(d.ch)}<small class="mono dim" data-v-0c94de6c>${ssrInterpolate(d.unit)}</small></td><td data-v-0c94de6c>${ssrInterpolate(d.nodeName)}</td><td class="mono" data-v-0c94de6c>${ssrInterpolate(d.latest)}</td><td class="mono" data-v-0c94de6c>${ssrInterpolate(d.avg)}</td><td class="mono dim" data-v-0c94de6c>${ssrInterpolate(d.min)} ~ ${ssrInterpolate(d.max)}</td><td class="mono dim" data-v-0c94de6c>${ssrInterpolate(d.cnt)}</td></tr>`);
532
574
  });
533
575
  _push(`<!--]-->`);
534
- if (runDataView.value.data.daq.length === 0) _push(`<tr data-v-050cee18><td colspan="6" class="dim" style="${ssrRenderStyle({
576
+ if (runDataView.value.data.daq.length === 0) _push(`<tr data-v-0c94de6c><td colspan="6" class="dim" style="${ssrRenderStyle({
535
577
  "text-align": "center",
536
578
  "padding": "12px"
537
- })}" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.kd457ry086"))}</td></tr>`);
579
+ })}" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.kd457ry086"))}</td></tr>`);
538
580
  else _push(`<!---->`);
539
- _push(`</tbody></table><p class="sec-label" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k12b7cxs087"))}</p><table class="nodes-table" data-v-050cee18><thead data-v-050cee18><tr data-v-050cee18><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3xbjr088"))}</th><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k45uio082"))}</th><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3ncbsh089"))}</th><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3lh3mz090"))}</th><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k454pg091"))}</th><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k40ieu092"))}</th></tr></thead><tbody data-v-050cee18><!--[-->`);
581
+ _push(`</tbody></table><p class="sec-label" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k12b7cxs087"))}</p><table class="nodes-table" data-v-0c94de6c><thead data-v-0c94de6c><tr data-v-0c94de6c><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3xbjr088"))}</th><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k45uio082"))}</th><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3ncbsh089"))}</th><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3lh3mz090"))}</th><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k454pg091"))}</th><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k40ieu092"))}</th></tr></thead><tbody data-v-0c94de6c><!--[-->`);
540
582
  ssrRenderList(runDataView.value.data.writes, (w, i) => {
541
- _push(`<tr data-v-050cee18><td data-v-050cee18>${ssrInterpolate(w.param)}</td><td data-v-050cee18>${ssrInterpolate(w.nodeName)}</td><td class="mono" data-v-050cee18>${ssrInterpolate(w.eng)}</td><td class="mono dim" data-v-050cee18>${ssrInterpolate(w.raw)}</td><td data-v-050cee18><span class="${ssrRenderClass([w.ok ? "ok" : "alarm", "st-pill"])}" data-v-050cee18>${ssrInterpolate(w.ok ? "ACK" : _ctx.$t("dcwDetail.k3yit7139"))}</span></td><td class="mono dim" data-v-050cee18>${ssrInterpolate(w.at.slice(5, 19))}</td></tr>`);
583
+ _push(`<tr data-v-0c94de6c><td data-v-0c94de6c>${ssrInterpolate(w.param)}</td><td data-v-0c94de6c>${ssrInterpolate(w.nodeName)}</td><td class="mono" data-v-0c94de6c>${ssrInterpolate(w.eng)}</td><td class="mono dim" data-v-0c94de6c>${ssrInterpolate(w.raw)}</td><td data-v-0c94de6c><span class="${ssrRenderClass([w.ok ? "ok" : "alarm", "st-pill"])}" data-v-0c94de6c>${ssrInterpolate(w.ok ? "ACK" : _ctx.$t("dcwDetail.k3yit7139"))}</span></td><td class="mono dim" data-v-0c94de6c>${ssrInterpolate(w.at.slice(5, 19))}</td></tr>`);
542
584
  });
543
585
  _push(`<!--]-->`);
544
- if (runDataView.value.data.writes.length === 0) _push(`<tr data-v-050cee18><td colspan="6" class="dim" style="${ssrRenderStyle({
586
+ if (runDataView.value.data.writes.length === 0) _push(`<tr data-v-0c94de6c><td colspan="6" class="dim" style="${ssrRenderStyle({
545
587
  "text-align": "center",
546
588
  "padding": "12px"
547
- })}" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.knzcp8i093"))}</td></tr>`);
589
+ })}" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.knzcp8i093"))}</td></tr>`);
548
590
  else _push(`<!---->`);
549
- _push(`</tbody></table><div class="m-actions" data-v-050cee18><button class="aw-pill outline" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3x62t043"))}</button></div></div></div>`);
591
+ _push(`</tbody></table><div class="m-actions" data-v-0c94de6c><button class="aw-pill outline" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3x62t043"))}</button></div></div></div>`);
550
592
  } else _push(`<!---->`);
551
593
  _push(`</section>`);
552
594
  if (recipeOpen.value) {
553
- _push(`<div class="modal-mask" data-v-050cee18><div class="modal" data-v-050cee18><h3 class="m-title" data-v-050cee18>${ssrInterpolate(recipeEditing.value ? _ctx.$t("dcwDetail.k1iiwk0i163") : _ctx.$t("dcwDetail.k1efq0r9176"))}</h3><div class="f-grid" data-v-050cee18><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1dw4fzf094"))}<em data-v-050cee18>*</em></span><select class="inp" data-v-050cee18><!--[-->`);
595
+ _push(`<div class="modal-mask" data-v-0c94de6c><div class="modal" data-v-0c94de6c><h3 class="m-title" data-v-0c94de6c>${ssrInterpolate(recipeEditing.value ? _ctx.$t("dcwDetail.k1iiwk0i163") : _ctx.$t("dcwDetail.k1efq0r9176"))}</h3><div class="f-grid" data-v-0c94de6c><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1dw4fzf094"))}<em data-v-0c94de6c>*</em></span><select class="inp" data-v-0c94de6c><!--[-->`);
554
596
  ssrRenderList(lineProducts.value, (p) => {
555
- _push(`<option${ssrRenderAttr("value", p.id)} data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(recipeForm.productId) ? ssrLooseContain(recipeForm.productId, p.id) : ssrLooseEqual(recipeForm.productId, p.id)) ? " selected" : ""}>${ssrInterpolate(p.name)}</option>`);
597
+ _push(`<option${ssrRenderAttr("value", p.id)} data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(recipeForm.productId) ? ssrLooseContain(recipeForm.productId, p.id) : ssrLooseEqual(recipeForm.productId, p.id)) ? " selected" : ""}>${ssrInterpolate(p.name)}</option>`);
556
598
  });
557
- _push(`<!--]--></select></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1l3f8so095"))}<em data-v-050cee18>*</em></span><input${ssrRenderAttr("value", recipeForm.name)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k12c11vm014"))} data-v-050cee18></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k40gkk096"))}</span><input${ssrRenderAttr("value", recipeForm.description)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k1hxx8hy015"))} data-v-050cee18></label></div><p class="sec-label" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.ka1kfgh097"))}</p><!--[-->`);
599
+ _push(`<!--]--></select></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1l3f8so095"))}<em data-v-0c94de6c>*</em></span><input${ssrRenderAttr("value", recipeForm.name)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k12c11vm014"))} data-v-0c94de6c></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k40gkk096"))}</span><input${ssrRenderAttr("value", recipeForm.description)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k1hxx8hy015"))} data-v-0c94de6c></label></div><p class="sec-label" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.ka1kfgh097"))}</p><!--[-->`);
558
600
  ssrRenderList(recipeForm.params, (p, i) => {
559
- _push(`<div class="param-row" data-v-050cee18><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1e2dtkt053"))}</span><select class="inp" data-v-050cee18><!--[-->`);
601
+ _push(`<div class="param-row" data-v-0c94de6c><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1e2dtkt053"))}</span><select class="inp" data-v-0c94de6c><!--[-->`);
560
602
  ssrRenderList(lineNodes.value, (n) => {
561
- _push(`<option${ssrRenderAttr("value", n.id)} data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(p.nodeId) ? ssrLooseContain(p.nodeId, n.id) : ssrLooseEqual(p.nodeId, n.id)) ? " selected" : ""}>${ssrInterpolate(n.name)}(${ssrInterpolate(dcwTemplateRefCh(n.templateRef))} · ${ssrInterpolate(n.min)}~${ssrInterpolate(n.max)} ${ssrInterpolate(n.unit)}) </option>`);
603
+ _push(`<option${ssrRenderAttr("value", n.id)} data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(p.nodeId) ? ssrLooseContain(p.nodeId, n.id) : ssrLooseEqual(p.nodeId, n.id)) ? " selected" : ""}>${ssrInterpolate(n.name)}(${ssrInterpolate(dcwTemplateRefCh(n.templateRef))} · ${ssrInterpolate(n.min)}~${ssrInterpolate(n.max)} ${ssrInterpolate(n.unit)}) </option>`);
562
604
  });
563
- _push(`<!--]--></select></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3renp2098"))}<em data-v-050cee18>*</em></span><input${ssrRenderAttr("value", p.value)} type="number" class="inp"${ssrRenderAttr("step", .1)} data-v-050cee18></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k134rw3b146"))}${ssrInterpolate(nodeMin(p.nodeId) ?? "-")})</span><input${ssrRenderAttr("value", p.min)} type="number" class="inp"${ssrRenderAttr("step", .1)}${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k5vew9z016"))} data-v-050cee18></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.khrv911147"))}${ssrInterpolate(nodeMax(p.nodeId) ?? "-")})</span><input${ssrRenderAttr("value", p.max)} type="number" class="inp"${ssrRenderAttr("step", .1)}${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.kzoh5pr017"))} data-v-050cee18></label><button class="mini-btn danger param-del" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k44idg099"))}</button></div>`);
605
+ _push(`<!--]--></select></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3renp2098"))}<em data-v-0c94de6c>*</em></span><input${ssrRenderAttr("value", p.value)} type="number" class="inp"${ssrRenderAttr("step", .1)} data-v-0c94de6c></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k134rw3b146"))}${ssrInterpolate(nodeMin(p.nodeId) ?? "-")})</span><input${ssrRenderAttr("value", p.min)} type="number" class="inp"${ssrRenderAttr("step", .1)}${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k5vew9z016"))} data-v-0c94de6c></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.khrv911147"))}${ssrInterpolate(nodeMax(p.nodeId) ?? "-")})</span><input${ssrRenderAttr("value", p.max)} type="number" class="inp"${ssrRenderAttr("step", .1)}${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.kzoh5pr017"))} data-v-0c94de6c></label><button class="mini-btn danger param-del" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k44idg099"))}</button></div>`);
564
606
  });
565
- _push(`<!--]--><button class="mini-btn" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1broh7h100"))}</button><p class="sec-label" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1h5gues101"))}</p><!--[-->`);
607
+ _push(`<!--]--><button class="mini-btn" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1broh7h100"))}</button><p class="sec-label" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1h5gues101"))}</p><!--[-->`);
566
608
  ssrRenderList(recipeForm.daqWindows, (w, i) => {
567
- _push(`<div class="param-row" data-v-050cee18><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1empnnb102"))}</span><select class="inp" data-v-050cee18><!--[-->`);
609
+ _push(`<div class="param-row" data-v-0c94de6c><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1empnnb102"))}</span><select class="inp" data-v-0c94de6c><!--[-->`);
568
610
  ssrRenderList(lineDaqNodes.value, (n) => {
569
- _push(`<option${ssrRenderAttr("value", n.id)} data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(w.nodeId) ? ssrLooseContain(w.nodeId, n.id) : ssrLooseEqual(w.nodeId, n.id)) ? " selected" : ""}>${ssrInterpolate(n.name)}(${ssrInterpolate(n.min)}~${ssrInterpolate(n.max)} ${ssrInterpolate(n.unit)}) </option>`);
611
+ _push(`<option${ssrRenderAttr("value", n.id)} data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(w.nodeId) ? ssrLooseContain(w.nodeId, n.id) : ssrLooseEqual(w.nodeId, n.id)) ? " selected" : ""}>${ssrInterpolate(n.name)}(${ssrInterpolate(n.min)}~${ssrInterpolate(n.max)} ${ssrInterpolate(n.unit)}) </option>`);
570
612
  });
571
- _push(`<!--]--></select></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.kqm08ap103"))}</span><input${ssrRenderAttr("value", w.min)} type="number" class="inp"${ssrRenderAttr("step", .1)} data-v-050cee18></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.kpypf8g104"))}</span><input${ssrRenderAttr("value", w.max)} type="number" class="inp"${ssrRenderAttr("step", .1)} data-v-050cee18></label><button class="mini-btn danger param-del" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k44idg099"))}</button></div>`);
613
+ _push(`<!--]--></select></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.kqm08ap103"))}</span><input${ssrRenderAttr("value", w.min)} type="number" class="inp"${ssrRenderAttr("step", .1)} data-v-0c94de6c></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.kpypf8g104"))}</span><input${ssrRenderAttr("value", w.max)} type="number" class="inp"${ssrRenderAttr("step", .1)} data-v-0c94de6c></label><button class="mini-btn danger param-del" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k44idg099"))}</button></div>`);
572
614
  });
573
- _push(`<!--]--><button class="mini-btn"${ssrIncludeBooleanAttr(lineDaqNodes.value.length === 0) ? " disabled" : ""}${ssrRenderAttr("title", lineDaqNodes.value.length === 0 ? "本产线暂无数采节点" : "")} data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.kv1de1p105"))}</button>`);
574
- if (recipeError.value) _push(`<p class="m-err" data-v-050cee18>${ssrInterpolate(recipeError.value)}</p>`);
615
+ _push(`<!--]--><button class="mini-btn"${ssrIncludeBooleanAttr(lineDaqNodes.value.length === 0) ? " disabled" : ""}${ssrRenderAttr("title", lineDaqNodes.value.length === 0 ? "本产线暂无数采节点" : "")} data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.kv1de1p105"))}</button>`);
616
+ if (recipeError.value) _push(`<p class="m-err" data-v-0c94de6c>${ssrInterpolate(recipeError.value)}</p>`);
575
617
  else _push(`<!---->`);
576
- _push(`<div class="m-actions" data-v-050cee18><button class="aw-pill outline" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3xdnn052"))}</button><button class="pill-btn"${ssrIncludeBooleanAttr(recipeSaving.value) ? " disabled" : ""} data-v-050cee18>${ssrInterpolate(recipeSaving.value ? _ctx.$t("dcwDetail.k1b38d59164") : _ctx.$t("dcwDetail.k1b3kwg0177"))}</button></div></div></div>`);
618
+ _push(`<div class="m-actions" data-v-0c94de6c><button class="aw-pill outline" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3xdnn052"))}</button><button class="pill-btn"${ssrIncludeBooleanAttr(recipeSaving.value) ? " disabled" : ""} data-v-0c94de6c>${ssrInterpolate(recipeSaving.value ? _ctx.$t("dcwDetail.k1b38d59164") : _ctx.$t("dcwDetail.k1b3kwg0177"))}</button></div></div></div>`);
577
619
  } else _push(`<!---->`);
578
- _push(`<section class="aw-tile query-card" data-v-050cee18><p class="sec-label" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1us3jse106"))}</p><div class="q-grid" data-v-050cee18><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3waz1025"))}</span><select class="inp" data-v-050cee18><option value="" data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(query.productId) ? ssrLooseContain(query.productId, "") : ssrLooseEqual(query.productId, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("dcwDetail.k1bkl1jx107"))}</option><!--[-->`);
620
+ _push(`<section class="aw-tile query-card" data-v-0c94de6c><p class="sec-label" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1us3jse106"))}</p><div class="q-grid" data-v-0c94de6c><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3waz1025"))}</span><select class="inp" data-v-0c94de6c><option value="" data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(query.productId) ? ssrLooseContain(query.productId, "") : ssrLooseEqual(query.productId, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("dcwDetail.k1bkl1jx107"))}</option><!--[-->`);
579
621
  ssrRenderList(lineProducts.value, (p) => {
580
- _push(`<option${ssrRenderAttr("value", p.id)} data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(query.productId) ? ssrLooseContain(query.productId, p.id) : ssrLooseEqual(query.productId, p.id)) ? " selected" : ""}>${ssrInterpolate(p.name)}</option>`);
622
+ _push(`<option${ssrRenderAttr("value", p.id)} data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(query.productId) ? ssrLooseContain(query.productId, p.id) : ssrLooseEqual(query.productId, p.id)) ? " selected" : ""}>${ssrInterpolate(p.name)}</option>`);
581
623
  });
582
- _push(`<!--]--></select></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k48grv027"))}</span><select class="inp"${ssrIncludeBooleanAttr(!query.productId) ? " disabled" : ""} data-v-050cee18><option value="" data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(query.recipeId) ? ssrLooseContain(query.recipeId, "") : ssrLooseEqual(query.recipeId, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("dcwDetail.k1bkx7cr108"))}</option><!--[-->`);
624
+ _push(`<!--]--></select></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k48grv027"))}</span><select class="inp"${ssrIncludeBooleanAttr(!query.productId) ? " disabled" : ""} data-v-0c94de6c><option value="" data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(query.recipeId) ? ssrLooseContain(query.recipeId, "") : ssrLooseEqual(query.recipeId, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("dcwDetail.k1bkx7cr108"))}</option><!--[-->`);
583
625
  ssrRenderList(visibleRecipes.value, (r) => {
584
- _push(`<option${ssrRenderAttr("value", r.id)} data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(query.recipeId) ? ssrLooseContain(query.recipeId, r.id) : ssrLooseEqual(query.recipeId, r.id)) ? " selected" : ""}>${ssrInterpolate(r.name)}</option>`);
626
+ _push(`<option${ssrRenderAttr("value", r.id)} data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(query.recipeId) ? ssrLooseContain(query.recipeId, r.id) : ssrLooseEqual(query.recipeId, r.id)) ? " selected" : ""}>${ssrInterpolate(r.name)}</option>`);
585
627
  });
586
- _push(`<!--]--></select></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1demcae109"))}</span><select class="inp" data-v-050cee18><option value="" data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(query.paramKey) ? ssrLooseContain(query.paramKey, "") : ssrLooseEqual(query.paramKey, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("dcwDetail.k1bkx7ya110"))}</option><!--[-->`);
628
+ _push(`<!--]--></select></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1demcae109"))}</span><select class="inp" data-v-0c94de6c><option value="" data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(query.paramKey) ? ssrLooseContain(query.paramKey, "") : ssrLooseEqual(query.paramKey, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("dcwDetail.k1bkx7ya110"))}</option><!--[-->`);
587
629
  ssrRenderList(daqParamKeys.value, (k) => {
588
- _push(`<option${ssrRenderAttr("value", k)} data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(query.paramKey) ? ssrLooseContain(query.paramKey, k) : ssrLooseEqual(query.paramKey, k)) ? " selected" : ""}>${ssrInterpolate(k)}</option>`);
630
+ _push(`<option${ssrRenderAttr("value", k)} data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(query.paramKey) ? ssrLooseContain(query.paramKey, k) : ssrLooseEqual(query.paramKey, k)) ? " selected" : ""}>${ssrInterpolate(k)}</option>`);
589
631
  });
590
- _push(`<!--]--></select></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k45uio082"))}</span><select class="inp" data-v-050cee18><option value="" data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(query.nodeId) ? ssrLooseContain(query.nodeId, "") : ssrLooseEqual(query.nodeId, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("dcwDetail.k1bkul3k111"))}</option><!--[-->`);
632
+ _push(`<!--]--></select></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k45uio082"))}</span><select class="inp" data-v-0c94de6c><option value="" data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(query.nodeId) ? ssrLooseContain(query.nodeId, "") : ssrLooseEqual(query.nodeId, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("dcwDetail.k1bkul3k111"))}</option><!--[-->`);
591
633
  ssrRenderList(lineDaqNodes.value, (n) => {
592
- _push(`<option${ssrRenderAttr("value", n.id)} data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(query.nodeId) ? ssrLooseContain(query.nodeId, n.id) : ssrLooseEqual(query.nodeId, n.id)) ? " selected" : ""}>${ssrInterpolate(n.name)}</option>`);
634
+ _push(`<option${ssrRenderAttr("value", n.id)} data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(query.nodeId) ? ssrLooseContain(query.nodeId, n.id) : ssrLooseEqual(query.nodeId, n.id)) ? " selected" : ""}>${ssrInterpolate(n.name)}</option>`);
593
635
  });
594
- _push(`<!--]--></select></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.kx2ojn0112"))}</span><input${ssrRenderAttr("value", query.lastMin)} type="number" min="1" max="10080" class="inp" data-v-050cee18></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.kjvnvn4113"))}</span><input${ssrRenderAttr("value", query.bucketMs)} type="number" min="0" step="100" class="inp" data-v-050cee18></label><div class="f q-actions" data-v-050cee18><button class="pill-btn"${ssrIncludeBooleanAttr(queryBusy.value) ? " disabled" : ""} data-v-050cee18>${ssrInterpolate(queryBusy.value ? _ctx.$t("dcwDetail.k1eyx09r165") : _ctx.$t("dcwDetail.k416ek178"))}</button></div></div>`);
595
- if (queryError.value) _push(`<p class="banner bad" style="${ssrRenderStyle({ "margin-top": "8px" })}" data-v-050cee18>${ssrInterpolate(queryError.value)}</p>`);
636
+ _push(`<!--]--></select></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.kx2ojn0112"))}</span><input${ssrRenderAttr("value", query.lastMin)} type="number" min="1" max="10080" class="inp" data-v-0c94de6c></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.kjvnvn4113"))}</span><input${ssrRenderAttr("value", query.bucketMs)} type="number" min="0" step="100" class="inp" data-v-0c94de6c></label><div class="f q-actions" data-v-0c94de6c><button class="pill-btn"${ssrIncludeBooleanAttr(queryBusy.value) ? " disabled" : ""} data-v-0c94de6c>${ssrInterpolate(queryBusy.value ? _ctx.$t("dcwDetail.k1eyx09r165") : _ctx.$t("dcwDetail.k416ek178"))}</button></div></div>`);
637
+ if (queryError.value) _push(`<p class="banner bad" style="${ssrRenderStyle({ "margin-top": "8px" })}" data-v-0c94de6c>${ssrInterpolate(queryError.value)}</p>`);
596
638
  else _push(`<!---->`);
597
639
  if (queryResult.value) {
598
- _push(`<div class="q-result" data-v-050cee18><table class="nodes-table" data-v-050cee18><thead data-v-050cee18><tr data-v-050cee18><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k48hde081"))}</th><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k45uio082"))}</th><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k42kcu114"))}</th><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k49ujb115"))}</th><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k40pvw116"))}</th><th data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3xho3117"))}</th></tr></thead><tbody data-v-050cee18><!--[-->`);
640
+ _push(`<div class="q-result" data-v-0c94de6c><table class="nodes-table" data-v-0c94de6c><thead data-v-0c94de6c><tr data-v-0c94de6c><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k48hde081"))}</th><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k45uio082"))}</th><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k42kcu114"))}</th><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k49ujb115"))}</th><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k40pvw116"))}</th><th data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3xho3117"))}</th></tr></thead><tbody data-v-0c94de6c><!--[-->`);
599
641
  ssrRenderList(queryResult.value.channels, (c) => {
600
- _push(`<tr data-v-050cee18><td data-v-050cee18>${ssrInterpolate(c.ch)}<small class="mono dim" data-v-050cee18>${ssrInterpolate(c.unit)}</small></td><td data-v-050cee18>${ssrInterpolate(c.nodeName)}</td><td class="mono" data-v-050cee18>${ssrInterpolate(c.points.length)}</td><td class="mono" data-v-050cee18>${ssrInterpolate(fmtPoint(c.points[0]))}</td><td class="mono" data-v-050cee18>${ssrInterpolate(fmtPoint(c.points[c.points.length - 1]))}</td><td class="mono dim" data-v-050cee18>${ssrInterpolate(new Date(c.points[0]?.at ?? 0).toLocaleTimeString())} ~ ${ssrInterpolate(new Date(c.points[c.points.length - 1]?.at ?? 0).toLocaleTimeString())}</td></tr>`);
642
+ _push(`<tr data-v-0c94de6c><td data-v-0c94de6c>${ssrInterpolate(c.ch)}<small class="mono dim" data-v-0c94de6c>${ssrInterpolate(c.unit)}</small></td><td data-v-0c94de6c>${ssrInterpolate(c.nodeName)}</td><td class="mono" data-v-0c94de6c>${ssrInterpolate(c.points.length)}</td><td class="mono" data-v-0c94de6c>${ssrInterpolate(fmtPoint(c.points[0]))}</td><td class="mono" data-v-0c94de6c>${ssrInterpolate(fmtPoint(c.points[c.points.length - 1]))}</td><td class="mono dim" data-v-0c94de6c>${ssrInterpolate(new Date(c.points[0]?.at ?? 0).toLocaleTimeString())} ~ ${ssrInterpolate(new Date(c.points[c.points.length - 1]?.at ?? 0).toLocaleTimeString())}</td></tr>`);
601
643
  });
602
644
  _push(`<!--]--></tbody></table></div>`);
603
645
  } else _push(`<!---->`);
604
646
  _push(`</section>`);
605
647
  if (lineHistory.value.length) {
606
- _push(`<section class="aw-tile table-card" data-v-050cee18><p class="sec-label" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.kw7ym9b148"))} ${ssrInterpolate(lineHistory.value.length)} ${ssrInterpolate(_ctx.$t("dcwDetail.k40bfz150"))}</p><table class="nodes-table" data-v-050cee18><tbody data-v-050cee18><!--[-->`);
648
+ _push(`<section class="aw-tile table-card" data-v-0c94de6c><p class="sec-label" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.kw7ym9b148"))} ${ssrInterpolate(lineHistory.value.length)} ${ssrInterpolate(_ctx.$t("dcwDetail.k40bfz150"))}</p><table class="nodes-table" data-v-0c94de6c><tbody data-v-0c94de6c><!--[-->`);
607
649
  ssrRenderList(lineHistory.value.slice(0, 12), (h) => {
608
- _push(`<tr data-v-050cee18><td class="mono dim" data-v-050cee18>${ssrInterpolate(h.at.slice(5, 19))}</td><td data-v-050cee18>${ssrInterpolate(h.param)}</td><td data-v-050cee18>${ssrInterpolate(h.nodeName)}</td><td class="mono" data-v-050cee18>${ssrInterpolate(h.eng)}</td><td class="mono dim" data-v-050cee18> raw ${ssrInterpolate(h.raw ?? "-")}</td><td data-v-050cee18><span class="${ssrRenderClass([h.ok ? "ok" : "alarm", "st-pill"])}" data-v-050cee18>${ssrInterpolate(h.ok ? "ACK" : _ctx.$t("dcwDetail.k3yit7139"))}</span></td><td class="dim" data-v-050cee18>${ssrInterpolate(h.recipeRunId ? _ctx.$t("dcwDetail.k6vgks7181", { p0: h.recipeRunId }) : "手动")}</td></tr>`);
650
+ _push(`<tr data-v-0c94de6c><td class="mono dim" data-v-0c94de6c>${ssrInterpolate(h.at.slice(5, 19))}</td><td data-v-0c94de6c>${ssrInterpolate(h.param)}</td><td data-v-0c94de6c>${ssrInterpolate(h.nodeName)}</td><td class="mono" data-v-0c94de6c>${ssrInterpolate(h.eng)}</td><td class="mono dim" data-v-0c94de6c> raw ${ssrInterpolate(h.raw ?? "-")}</td><td data-v-0c94de6c><span class="${ssrRenderClass([h.ok ? "ok" : "alarm", "st-pill"])}" data-v-0c94de6c>${ssrInterpolate(h.ok ? "ACK" : _ctx.$t("dcwDetail.k3yit7139"))}</span></td><td class="dim" data-v-0c94de6c>${ssrInterpolate(h.recipeRunId ? _ctx.$t("dcwDetail.k6vgks7181", { p0: h.recipeRunId }) : "手动")}</td></tr>`);
609
651
  });
610
652
  _push(`<!--]--></tbody></table></section>`);
611
653
  } else _push(`<!---->`);
612
654
  if (productOpen.value) {
613
- _push(`<div class="modal-mask" data-v-050cee18><div class="modal" data-v-050cee18><h3 class="m-title" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1efduyf118"))}</h3><div class="f-grid" data-v-050cee18><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1avjrl6119"))}<em data-v-050cee18>*</em></span><input${ssrRenderAttr("value", productForm.name)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k12c11vm014"))} data-v-050cee18></label><label class="f" data-v-050cee18><span data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k40gkk096"))}</span><input${ssrRenderAttr("value", productForm.description)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k1hxx8hy015"))} data-v-050cee18></label></div>`);
614
- if (productError.value) _push(`<p class="m-err" data-v-050cee18>${ssrInterpolate(productError.value)}</p>`);
655
+ _push(`<div class="modal-mask" data-v-0c94de6c><div class="modal" data-v-0c94de6c><h3 class="m-title" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1efduyf118"))}</h3><div class="f-grid" data-v-0c94de6c><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1avjrl6119"))}<em data-v-0c94de6c>*</em></span><input${ssrRenderAttr("value", productForm.name)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k12c11vm014"))} data-v-0c94de6c></label><label class="f" data-v-0c94de6c><span data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k40gkk096"))}</span><input${ssrRenderAttr("value", productForm.description)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("dcwDetail.k1hxx8hy015"))} data-v-0c94de6c></label></div>`);
656
+ if (productError.value) _push(`<p class="m-err" data-v-0c94de6c>${ssrInterpolate(productError.value)}</p>`);
615
657
  else _push(`<!---->`);
616
- _push(`<div class="m-actions" data-v-050cee18><button class="aw-pill outline" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k3xdnn052"))}</button><button class="pill-btn"${ssrIncludeBooleanAttr(productSaving.value) ? " disabled" : ""} data-v-050cee18>${ssrInterpolate(productSaving.value ? _ctx.$t("dcwDetail.k1bg4759156") : _ctx.$t("dcwDetail.k1bg4kn6179"))}</button></div></div></div>`);
658
+ _push(`<div class="m-actions" data-v-0c94de6c><button class="aw-pill outline" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k3xdnn052"))}</button><button class="pill-btn"${ssrIncludeBooleanAttr(productSaving.value) ? " disabled" : ""} data-v-0c94de6c>${ssrInterpolate(productSaving.value ? _ctx.$t("dcwDetail.k1bg4759156") : _ctx.$t("dcwDetail.k1bg4kn6179"))}</button></div></div></div>`);
617
659
  } else _push(`<!---->`);
618
660
  if (unref(dcw).error) {
619
- _push(`<p class="err" data-v-050cee18>${ssrInterpolate(unref(dcw).error)}(`);
661
+ _push(`<p class="err" data-v-0c94de6c>${ssrInterpolate(unref(dcw).error)}(`);
620
662
  _push(ssrRenderComponent(_component_NuxtLink, { to: "/workshop" }, {
621
663
  default: withCtx((_, _push, _parent, _scopeId) => {
622
664
  if (_push) _push(`${ssrInterpolate(_ctx.$t("dcwDetail.k1bhhheq120"))}`);
@@ -626,19 +668,19 @@ var _id__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
626
668
  }, _parent));
627
669
  _push(`) </p>`);
628
670
  } else _push(`<!---->`);
629
- _push(`<section class="aw-tile ledger-card" data-v-050cee18><div class="ledger-head" data-v-050cee18><b data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1ledgt001"))}</b><select class="inp" data-v-050cee18><option value="" data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(ledgerNodeId.value) ? ssrLooseContain(ledgerNodeId.value, "") : ssrLooseEqual(ledgerNodeId.value, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("dcwDetail.k1ledgs001"))}</option><!--[-->`);
671
+ _push(`<section class="aw-tile ledger-card" data-v-0c94de6c><div class="ledger-head" data-v-0c94de6c><b data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1ledgt001"))}</b><select class="inp" data-v-0c94de6c><option value="" data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(ledgerNodeId.value) ? ssrLooseContain(ledgerNodeId.value, "") : ssrLooseEqual(ledgerNodeId.value, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("dcwDetail.k1ledgs001"))}</option><!--[-->`);
630
672
  ssrRenderList(lineNodes.value, (n) => {
631
- _push(`<option${ssrRenderAttr("value", n.id)} data-v-050cee18${ssrIncludeBooleanAttr(Array.isArray(ledgerNodeId.value) ? ssrLooseContain(ledgerNodeId.value, n.id) : ssrLooseEqual(ledgerNodeId.value, n.id)) ? " selected" : ""}>${ssrInterpolate(n.name)}</option>`);
673
+ _push(`<option${ssrRenderAttr("value", n.id)} data-v-0c94de6c${ssrIncludeBooleanAttr(Array.isArray(ledgerNodeId.value) ? ssrLooseContain(ledgerNodeId.value, n.id) : ssrLooseEqual(ledgerNodeId.value, n.id)) ? " selected" : ""}>${ssrInterpolate(n.name)}</option>`);
632
674
  });
633
675
  _push(`<!--]--></select></div>`);
634
676
  if (ledger.value) {
635
- _push(`<!--[--><div class="ledger-tri" data-v-050cee18><div class="tri-cell" data-v-050cee18><small data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1ledgv001"))}</small><b class="mono" data-v-050cee18>${ssrInterpolate(ledger.value.current ?? "--")}</b></div><div class="tri-cell" data-v-050cee18><small data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1ledgv002"))}</small><b class="mono" data-v-050cee18>${ssrInterpolate(ledger.value.recipeTarget ?? "--")}</b></div><div class="tri-cell" data-v-050cee18><small data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1ledgv003"))}</small><b class="mono" data-v-050cee18>${ssrInterpolate(ledger.value.lastGood ?? "--")}</b></div><button class="mini-btn" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1ledga001"))}</button><button class="mini-btn danger" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1ledga002"))}</button></div><div class="ledger-cols" data-v-050cee18><div class="ledger-col" data-v-050cee18><small class="sec-t" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1ledgh001"))}</small><ul class="ledger-list mono" data-v-050cee18><!--[-->`);
677
+ _push(`<!--[--><div class="ledger-tri" data-v-0c94de6c><div class="tri-cell" data-v-0c94de6c><small data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1ledgv001"))}</small><b class="mono" data-v-0c94de6c>${ssrInterpolate(ledger.value.current ?? "--")}</b></div><div class="tri-cell" data-v-0c94de6c><small data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1ledgv002"))}</small><b class="mono" data-v-0c94de6c>${ssrInterpolate(ledger.value.recipeTarget ?? "--")}</b></div><div class="tri-cell" data-v-0c94de6c><small data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1ledgv003"))}</small><b class="mono" data-v-0c94de6c>${ssrInterpolate(ledger.value.lastGood ?? "--")}</b></div><button class="mini-btn" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1ledga001"))}</button><button class="mini-btn danger" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1ledga002"))}</button></div><div class="ledger-cols" data-v-0c94de6c><div class="ledger-col" data-v-0c94de6c><small class="sec-t" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1ledgh001"))}</small><ul class="ledger-list mono" data-v-0c94de6c><!--[-->`);
636
678
  ssrRenderList(ledger.value.journal, (a) => {
637
- _push(`<li data-v-050cee18>${ssrInterpolate(a.at.slice(5, 16).replace("T", " "))} [${ssrInterpolate(a.source)}] ${ssrInterpolate(a.prevValue ?? "?")} → ${ssrInterpolate(a.newValue)}</li>`);
679
+ _push(`<li data-v-0c94de6c>${ssrInterpolate(a.at.slice(5, 16).replace("T", " "))} [${ssrInterpolate(a.source)}] ${ssrInterpolate(a.prevValue ?? "?")} → ${ssrInterpolate(a.newValue)}</li>`);
638
680
  });
639
- _push(`<!--]--></ul></div><div class="ledger-col" data-v-050cee18><small class="sec-t" data-v-050cee18>${ssrInterpolate(_ctx.$t("dcwDetail.k1ledgr001"))}</small><ul class="ledger-list" data-v-050cee18><!--[-->`);
681
+ _push(`<!--]--></ul></div><div class="ledger-col" data-v-0c94de6c><small class="sec-t" data-v-0c94de6c>${ssrInterpolate(_ctx.$t("dcwDetail.k1ledgr001"))}</small><ul class="ledger-list" data-v-0c94de6c><!--[-->`);
640
682
  ssrRenderList(ledger.value.records, (r) => {
641
- _push(`<li class="ledger-rec" data-v-050cee18><span class="${ssrRenderClass([r.status, "rec-st"])}" data-v-050cee18>${ssrInterpolate(r.status)}</span><span class="mono" data-v-050cee18>${ssrInterpolate(r.params[0]?.from ?? "?")} → ${ssrInterpolate(r.params[0]?.to)}</span><small data-v-050cee18>${ssrInterpolate(r.judge ? `${r.judge.verdict}(${r.judge.by})` : r.status === "open" ? "open" : r.closedBy ?? "")}</small></li>`);
683
+ _push(`<li class="ledger-rec" data-v-0c94de6c><span class="${ssrRenderClass([r.status, "rec-st"])}" data-v-0c94de6c>${ssrInterpolate(r.status)}</span><span class="mono" data-v-0c94de6c>${ssrInterpolate(r.params[0]?.from ?? "?")} → ${ssrInterpolate(r.params[0]?.to)}</span><small data-v-0c94de6c>${ssrInterpolate(r.judge ? `${r.judge.verdict}(${r.judge.by})` : r.status === "open" ? "open" : r.closedBy ?? "")}</small></li>`);
642
684
  });
643
685
  _push(`<!--]--></ul></div></div><!--]-->`);
644
686
  } else _push(`<!---->`);
@@ -655,7 +697,7 @@ _id__vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
655
697
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/dcw/[id].vue");
656
698
  return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
657
699
  };
658
- var _id__default = /*#__PURE__*/ _plugin_vue_export_helper_default(_id__vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-050cee18"]]);
700
+ var _id__default = /*#__PURE__*/ _plugin_vue_export_helper_default(_id__vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-0c94de6c"]]);
659
701
 
660
702
  export { _id__default as default };
661
- //# sourceMappingURL=_id_-CmKAEFHV.mjs.map
703
+ //# sourceMappingURL=_id_-GnRJPykX.mjs.map