agentworkshop 0.6.1 → 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 (537) 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 +4910 -4591
  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-ui-wizard.mjs +125 -0
  488. package/scripts/test-config-precedence.ts +124 -0
  489. package/scripts/test-dcw-read.ts +153 -0
  490. package/server/api/workshop/dcw/[id]/read.post.ts +18 -0
  491. package/server/api/workshop/ws.ts +6 -4
  492. package/server/data/daqs.json +55 -9
  493. package/server/data/dcw-rollback.json +221 -1
  494. package/server/data/dcw-runs.json +41 -18
  495. package/server/data/dcw-writes.json +264 -0
  496. package/server/data/dcws.json +646 -4
  497. package/server/data/line-runs.json +12 -1
  498. package/server/plugins/backup.ts +7 -5
  499. package/server/plugins/retention.ts +59 -57
  500. package/server/plugins/workshop.ts +5 -4
  501. package/server/services/workshop/agents/industrial-tools.ts +50 -1
  502. package/server/services/workshop/agents/omp-agent.ts +10 -8
  503. package/server/services/workshop/agents/tool-approvals.ts +175 -174
  504. package/server/services/workshop/daq/alarm-notify.ts +102 -100
  505. package/server/services/workshop/daq/bus/mqtt.adapter.ts +14 -15
  506. package/server/services/workshop/daq/storage/sqlite.adapter.ts +5 -4
  507. package/server/services/workshop/daq/storage/timescale.adapter.ts +5 -4
  508. package/server/services/workshop/db/retention.ts +49 -50
  509. package/server/services/workshop/dcw/dcw-controller.ts +56 -1
  510. package/server/services/workshop/dcw/dcw-node.ts +233 -200
  511. package/server/services/workshop/dcw/dcw-runtime.ts +46 -9
  512. package/server/services/workshop/dcw/drivers.ts +98 -0
  513. package/server/services/workshop/dcw/recipe-rollback-manager.ts +16 -15
  514. package/server/services/workshop/logger.ts +65 -58
  515. package/server/services/workshop/runtime/embedding-provider.ts +9 -5
  516. package/server/services/workshop/runtime/manager.ts +16 -7
  517. package/server/services/workshop/runtime/memory.ts +14 -7
  518. package/server/services/workshop/settings.ts +143 -0
  519. package/shared/config/engine.mjs +6 -2
  520. package/shared/config/schema.json +48 -1
  521. package/shared/dcw-protocol.ts +21 -0
  522. package/.output/public/_nuxt/BD9D9pl4.js +0 -1
  523. package/.output/public/_nuxt/BxD8Fg_Z.js +0 -2
  524. package/.output/public/_nuxt/CwcOEM8m.js +0 -1
  525. package/.output/public/_nuxt/TownView.CI2Wpzty.css +0 -1
  526. package/.output/public/_nuxt/_id_.Ci4u30cR.css +0 -1
  527. package/.output/public/_nuxt/builds/meta/221de779-a113-4232-b9a1-31a614f5e3c7.json +0 -1
  528. package/.output/public/_nuxt/settings.BG0K9_MG.css +0 -1
  529. package/.output/server/chunks/build/_id_-CmKAEFHV.mjs.map +0 -1
  530. package/.output/server/chunks/build/_id_-xR3AChMO.mjs.map +0 -1
  531. package/.output/server/chunks/build/daq-Boz_dlAQ.mjs.map +0 -1
  532. package/.output/server/chunks/build/dcw-wTRwBAUi.mjs.map +0 -1
  533. package/.output/server/chunks/build/logs-Cdi-eXlN.mjs.map +0 -1
  534. package/.output/server/chunks/build/pages-bWKy0ZsA.mjs.map +0 -1
  535. package/.output/server/chunks/build/settings-C3T5hR2A.mjs.map +0 -1
  536. package/.output/server/chunks/build/town-CKg6Qxba.mjs.map +0 -1
  537. package/.output/server/chunks/build/useDcwStream-BkWDGaWp.mjs.map +0 -1
@@ -64,9 +64,9 @@
64
64
  "posX": 1695,
65
65
  "posZ": 1135,
66
66
  "lineId": "ln-af002514",
67
- "value": 167,
67
+ "value": 165.8,
68
68
  "state": "ok",
69
- "lastAt": "2026-09-03T10:44:03.821Z",
69
+ "lastAt": "2026-09-03T11:35:11.135Z",
70
70
  "createdAt": "2026-08-27T12:39:08.110Z"
71
71
  },
72
72
  {
@@ -310,7 +310,7 @@
310
310
  "lineId": "ln-af002514",
311
311
  "value": 315,
312
312
  "state": "ok",
313
- "lastAt": "2026-09-03T10:44:03.821Z",
313
+ "lastAt": "2026-09-03T11:35:11.135Z",
314
314
  "createdAt": "2026-08-28T09:37:38.518Z"
315
315
  },
316
316
  {
@@ -330,9 +330,9 @@
330
330
  "deviceBindingId": null,
331
331
  "driverConfig": {},
332
332
  "lineId": "ln-af002514",
333
- "value": 166.3,
333
+ "value": 168.2,
334
334
  "state": "ok",
335
- "lastAt": "2026-09-03T10:44:03.821Z",
335
+ "lastAt": "2026-09-03T11:35:11.135Z",
336
336
  "createdAt": "2026-08-29T03:30:57.463Z"
337
337
  },
338
338
  {
@@ -1012,9 +1012,9 @@
1012
1012
  "posX": 2395,
1013
1013
  "posZ": 1135,
1014
1014
  "lineId": "ln-af002514",
1015
- "value": 171,
1015
+ "value": 169.8,
1016
1016
  "state": "ok",
1017
- "lastAt": "2026-09-03T10:44:04.350Z",
1017
+ "lastAt": "2026-09-03T11:35:11.135Z",
1018
1018
  "createdAt": "2026-08-31T04:07:19.038Z"
1019
1019
  },
1020
1020
  {
@@ -3026,9 +3026,55 @@
3026
3026
  "posX": 120,
3027
3027
  "posZ": 120,
3028
3028
  "lineId": "ln-af002514",
3029
- "value": 0.9733,
3029
+ "value": 1.0275,
3030
3030
  "state": "ok",
3031
- "lastAt": "2026-09-03T10:44:03.821Z",
3031
+ "lastAt": "2026-09-03T11:35:11.135Z",
3032
3032
  "createdAt": "2026-09-03T10:17:59.182Z"
3033
+ },
3034
+ {
3035
+ "id": "dn-77ea5d9d",
3036
+ "templateRef": "plug-verify-x2-profile",
3037
+ "name": "全栈验证 ×2 轮廓",
3038
+ "driver": "verify-burst",
3039
+ "enabled": true,
3040
+ "intervalMs": null,
3041
+ "publishIntervalMs": null,
3042
+ "unit": "mm",
3043
+ "decimals": 4,
3044
+ "min": 0.4,
3045
+ "max": 0.6,
3046
+ "warnLow": 0.416,
3047
+ "warnHigh": 0.584,
3048
+ "deviceBindingId": "dev-mthzr991-ujuad",
3049
+ "driverConfig": {},
3050
+ "posX": 120,
3051
+ "posZ": 120,
3052
+ "lineId": "ln-af002514",
3053
+ "value": 0.9769,
3054
+ "state": "ok",
3055
+ "lastAt": "2026-09-03T11:35:11.135Z",
3056
+ "createdAt": "2026-09-03T11:18:01.401Z"
3057
+ },
3058
+ {
3059
+ "id": "dn-6e3a9306",
3060
+ "templateRef": "daq-plug-verify-x2-profile",
3061
+ "name": "UI向导插件验证",
3062
+ "driver": "mock",
3063
+ "enabled": true,
3064
+ "intervalMs": null,
3065
+ "publishIntervalMs": null,
3066
+ "unit": "mm",
3067
+ "decimals": 4,
3068
+ "min": 0.4,
3069
+ "max": 0.6,
3070
+ "warnLow": 0.416,
3071
+ "warnHigh": 0.584,
3072
+ "deviceBindingId": "dev-mthzr991-ujuad",
3073
+ "driverConfig": {},
3074
+ "lineId": "ln-af002514",
3075
+ "value": 1.0251,
3076
+ "state": "ok",
3077
+ "lastAt": "2026-09-03T11:35:10.871Z",
3078
+ "createdAt": "2026-09-03T11:34:59.332Z"
3033
3079
  }
3034
3080
  ]
@@ -3128,6 +3128,226 @@
3128
3128
  "id": "anc-cf431b05",
3129
3129
  "at": "2026-09-02T13:05:36.877Z",
3130
3130
  "recordId": "opt-b930283b"
3131
+ },
3132
+ {
3133
+ "lineId": "",
3134
+ "nodeId": "dw-6df62f07",
3135
+ "prevValue": null,
3136
+ "newValue": 165.5,
3137
+ "source": "manual",
3138
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3139
+ "recipeRunId": null,
3140
+ "id": "anc-6b5c70d1",
3141
+ "at": "2026-09-03T12:07:07.574Z"
3142
+ },
3143
+ {
3144
+ "lineId": "",
3145
+ "nodeId": "dw-6df62f07",
3146
+ "prevValue": 165.5,
3147
+ "newValue": 180,
3148
+ "source": "manual",
3149
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3150
+ "recipeRunId": null,
3151
+ "id": "anc-73e44854",
3152
+ "at": "2026-09-03T12:07:07.741Z"
3153
+ },
3154
+ {
3155
+ "lineId": "",
3156
+ "nodeId": "dw-82ebb64a",
3157
+ "prevValue": null,
3158
+ "newValue": 165.5,
3159
+ "source": "manual",
3160
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3161
+ "recipeRunId": null,
3162
+ "id": "anc-76009f69",
3163
+ "at": "2026-09-03T12:08:19.829Z"
3164
+ },
3165
+ {
3166
+ "lineId": "",
3167
+ "nodeId": "dw-82ebb64a",
3168
+ "prevValue": 165.5,
3169
+ "newValue": 180,
3170
+ "source": "manual",
3171
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3172
+ "recipeRunId": null,
3173
+ "id": "anc-d0e6bebd",
3174
+ "at": "2026-09-03T12:08:19.938Z"
3175
+ },
3176
+ {
3177
+ "lineId": "",
3178
+ "nodeId": "dw-f6aeca63",
3179
+ "prevValue": null,
3180
+ "newValue": 100,
3181
+ "source": "manual",
3182
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3183
+ "recipeRunId": null,
3184
+ "id": "anc-5f6989b0",
3185
+ "at": "2026-09-03T12:08:20.140Z"
3186
+ },
3187
+ {
3188
+ "lineId": "",
3189
+ "nodeId": "dw-787402f0",
3190
+ "prevValue": null,
3191
+ "newValue": 155,
3192
+ "source": "manual",
3193
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3194
+ "recipeRunId": null,
3195
+ "id": "anc-2e00ea3c",
3196
+ "at": "2026-09-03T12:08:20.310Z"
3197
+ },
3198
+ {
3199
+ "lineId": "",
3200
+ "nodeId": "dw-fe8cdcbb",
3201
+ "prevValue": null,
3202
+ "newValue": 3.1416,
3203
+ "source": "manual",
3204
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3205
+ "recipeRunId": null,
3206
+ "id": "anc-6486b0bc",
3207
+ "at": "2026-09-03T12:08:23.109Z"
3208
+ },
3209
+ {
3210
+ "lineId": "",
3211
+ "nodeId": "dw-fe8cdcbb",
3212
+ "prevValue": 3.1,
3213
+ "newValue": 2.71828,
3214
+ "source": "manual",
3215
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3216
+ "recipeRunId": null,
3217
+ "id": "anc-7740538b",
3218
+ "at": "2026-09-03T12:08:23.187Z"
3219
+ },
3220
+ {
3221
+ "lineId": "",
3222
+ "nodeId": "dw-47b4957b",
3223
+ "prevValue": null,
3224
+ "newValue": 165.5,
3225
+ "source": "manual",
3226
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3227
+ "recipeRunId": null,
3228
+ "id": "anc-9a3435d8",
3229
+ "at": "2026-09-03T12:09:40.660Z"
3230
+ },
3231
+ {
3232
+ "lineId": "",
3233
+ "nodeId": "dw-47b4957b",
3234
+ "prevValue": 165.5,
3235
+ "newValue": 180,
3236
+ "source": "manual",
3237
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3238
+ "recipeRunId": null,
3239
+ "id": "anc-ee35f163",
3240
+ "at": "2026-09-03T12:09:40.769Z"
3241
+ },
3242
+ {
3243
+ "lineId": "",
3244
+ "nodeId": "dw-828f683b",
3245
+ "prevValue": null,
3246
+ "newValue": 100,
3247
+ "source": "manual",
3248
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3249
+ "recipeRunId": null,
3250
+ "id": "anc-bdbcc26c",
3251
+ "at": "2026-09-03T12:09:40.925Z"
3252
+ },
3253
+ {
3254
+ "lineId": "",
3255
+ "nodeId": "dw-e9b4575e",
3256
+ "prevValue": null,
3257
+ "newValue": 155,
3258
+ "source": "manual",
3259
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3260
+ "recipeRunId": null,
3261
+ "id": "anc-477efae1",
3262
+ "at": "2026-09-03T12:09:41.049Z"
3263
+ },
3264
+ {
3265
+ "lineId": "",
3266
+ "nodeId": "dw-167e357a",
3267
+ "prevValue": null,
3268
+ "newValue": 3.1416,
3269
+ "source": "manual",
3270
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3271
+ "recipeRunId": null,
3272
+ "id": "anc-955dbbf6",
3273
+ "at": "2026-09-03T12:09:43.846Z"
3274
+ },
3275
+ {
3276
+ "lineId": "",
3277
+ "nodeId": "dw-167e357a",
3278
+ "prevValue": 3.1,
3279
+ "newValue": 2.71828,
3280
+ "source": "manual",
3281
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3282
+ "recipeRunId": null,
3283
+ "id": "anc-d9cc48ff",
3284
+ "at": "2026-09-03T12:09:43.908Z"
3285
+ },
3286
+ {
3287
+ "lineId": "",
3288
+ "nodeId": "dw-a970a489",
3289
+ "prevValue": null,
3290
+ "newValue": 165.5,
3291
+ "source": "manual",
3292
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3293
+ "recipeRunId": null,
3294
+ "id": "anc-ab0b08e6",
3295
+ "at": "2026-09-03T13:34:21.879Z"
3296
+ },
3297
+ {
3298
+ "lineId": "",
3299
+ "nodeId": "dw-a970a489",
3300
+ "prevValue": 165.5,
3301
+ "newValue": 180,
3302
+ "source": "manual",
3303
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3304
+ "recipeRunId": null,
3305
+ "id": "anc-cafcbb0a",
3306
+ "at": "2026-09-03T13:34:22.017Z"
3307
+ },
3308
+ {
3309
+ "lineId": "",
3310
+ "nodeId": "dw-365a3630",
3311
+ "prevValue": null,
3312
+ "newValue": 100,
3313
+ "source": "manual",
3314
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3315
+ "recipeRunId": null,
3316
+ "id": "anc-626b5b33",
3317
+ "at": "2026-09-03T13:34:22.200Z"
3318
+ },
3319
+ {
3320
+ "lineId": "",
3321
+ "nodeId": "dw-2259a4eb",
3322
+ "prevValue": null,
3323
+ "newValue": 155,
3324
+ "source": "manual",
3325
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3326
+ "recipeRunId": null,
3327
+ "id": "anc-62934ab1",
3328
+ "at": "2026-09-03T13:34:22.344Z"
3329
+ },
3330
+ {
3331
+ "lineId": "",
3332
+ "nodeId": "dw-7eec4a83",
3333
+ "prevValue": null,
3334
+ "newValue": 3.1416,
3335
+ "source": "manual",
3336
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3337
+ "recipeRunId": null,
3338
+ "id": "anc-12d60ab2",
3339
+ "at": "2026-09-03T13:34:25.133Z"
3340
+ },
3341
+ {
3342
+ "lineId": "",
3343
+ "nodeId": "dw-7eec4a83",
3344
+ "prevValue": 3.1,
3345
+ "newValue": 2.71828,
3346
+ "source": "manual",
3347
+ "actor": "f1235a1f-57ca-43b7-afbe-7fc0874341d0",
3348
+ "recipeRunId": null,
3349
+ "id": "anc-5ac6a74f",
3350
+ "at": "2026-09-03T13:34:25.211Z"
3131
3351
  }
3132
3352
  ],
3133
3353
  "records": [
@@ -3519,7 +3739,7 @@
3519
3739
  "channels": [],
3520
3740
  "degraded": true
3521
3741
  },
3522
- "evaluatedAt": "2026-09-03T10:45:16.314Z",
3742
+ "evaluatedAt": "2026-09-03T13:40:24.088Z",
3523
3743
  "windowAgg": {
3524
3744
  "at": "2026-08-31T16:25:17.398Z",
3525
3745
  "fromMs": 1788193396897,
@@ -1,22 +1,4 @@
1
1
  [
2
- {
3
- "id": "rr-06f366cf",
4
- "recipeId": "rc-84cbf4ae",
5
- "recipeName": "控制终审X线配方",
6
- "productId": "pd-6ab53e1d",
7
- "lineId": "ln-38a7c26b",
8
- "startedAt": "2026-08-30T01:57:22.043Z",
9
- "endedAt": "2026-08-30T01:57:27.855Z",
10
- "results": [
11
- {
12
- "templateRef": "dcw-temp-sp",
13
- "nodeId": "dw-a11c1063",
14
- "ok": true,
15
- "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
16
- "value": 180
17
- }
18
- ]
19
- },
20
2
  {
21
3
  "id": "rr-0662ccf4",
22
4
  "recipeId": "rc-a53fbadc",
@@ -5457,5 +5439,46 @@
5457
5439
  "max": 1
5458
5440
  }
5459
5441
  ]
5442
+ },
5443
+ {
5444
+ "id": "rr-6da3f412",
5445
+ "recipeId": "rc-7bf584db",
5446
+ "recipeName": "A-标准工艺",
5447
+ "productId": "pd-6348a595",
5448
+ "lineId": "ln-af002514",
5449
+ "startedAt": "2026-09-03T11:18:01.213Z",
5450
+ "endedAt": null,
5451
+ "results": [
5452
+ {
5453
+ "templateRef": "dcw-temp-sp",
5454
+ "nodeId": "dw-322b1978",
5455
+ "ok": true,
5456
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
5457
+ "value": 182
5458
+ },
5459
+ {
5460
+ "templateRef": "dcw-pressure-sp",
5461
+ "nodeId": "dw-e92bb0e7",
5462
+ "ok": true,
5463
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
5464
+ "value": 0.92
5465
+ }
5466
+ ],
5467
+ "paramsSnapshot": [
5468
+ {
5469
+ "nodeId": "dw-322b1978",
5470
+ "templateRef": "dcw-temp-sp",
5471
+ "value": 182,
5472
+ "min": 176,
5473
+ "max": 188
5474
+ },
5475
+ {
5476
+ "nodeId": "dw-e92bb0e7",
5477
+ "templateRef": "dcw-pressure-sp",
5478
+ "value": 0.92,
5479
+ "min": 0.85,
5480
+ "max": 1
5481
+ }
5482
+ ]
5460
5483
  }
5461
5484
  ]
@@ -10738,5 +10738,269 @@
10738
10738
  "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
10739
10739
  "recipeRunId": "rr-b1f6156d",
10740
10740
  "at": "2026-09-03T10:41:14.679Z"
10741
+ },
10742
+ {
10743
+ "id": "wh-1b66a42b",
10744
+ "nodeId": "dw-322b1978",
10745
+ "nodeName": "温度设定器(示例)",
10746
+ "param": "烘箱温度设定",
10747
+ "eng": 182,
10748
+ "raw": 182,
10749
+ "ok": true,
10750
+ "message": "Mock PLC 写入成功:182 → raw 182,回读一致(标定后物理值 182)",
10751
+ "recipeRunId": "rr-6da3f412",
10752
+ "at": "2026-09-03T11:18:01.215Z"
10753
+ },
10754
+ {
10755
+ "id": "wh-9660ff2a",
10756
+ "nodeId": "dw-e92bb0e7",
10757
+ "nodeName": "压力设定器(示例)",
10758
+ "param": "熔体压力设定",
10759
+ "eng": 0.92,
10760
+ "raw": 0.92,
10761
+ "ok": true,
10762
+ "message": "Mock PLC 写入成功:0.92 → raw 0.92,回读一致(标定后物理值 0.92)",
10763
+ "recipeRunId": "rr-6da3f412",
10764
+ "at": "2026-09-03T11:18:01.287Z"
10765
+ },
10766
+ {
10767
+ "id": "wh-f530a836",
10768
+ "nodeId": "dw-6df62f07",
10769
+ "nodeName": "读写验证·mock 手动",
10770
+ "param": "烘箱温度设定",
10771
+ "eng": 165.5,
10772
+ "raw": 165.5,
10773
+ "ok": true,
10774
+ "message": "Mock PLC 写入成功:165.5 → raw 165.5,回读一致(标定后物理值 165.5)",
10775
+ "recipeRunId": null,
10776
+ "at": "2026-09-03T12:07:07.468Z"
10777
+ },
10778
+ {
10779
+ "id": "wh-3c7e537b",
10780
+ "nodeId": "dw-6df62f07",
10781
+ "nodeName": "读写验证·mock 手动",
10782
+ "param": "烘箱温度设定",
10783
+ "eng": 180,
10784
+ "raw": 180,
10785
+ "ok": true,
10786
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
10787
+ "recipeRunId": null,
10788
+ "at": "2026-09-03T12:07:07.603Z"
10789
+ },
10790
+ {
10791
+ "id": "wh-5e7dabb3",
10792
+ "nodeId": "dw-82ebb64a",
10793
+ "nodeName": "读写验证·mock 手动",
10794
+ "param": "烘箱温度设定",
10795
+ "eng": 165.5,
10796
+ "raw": 165.5,
10797
+ "ok": true,
10798
+ "message": "Mock PLC 写入成功:165.5 → raw 165.5,回读一致(标定后物理值 165.5)",
10799
+ "recipeRunId": null,
10800
+ "at": "2026-09-03T12:08:19.738Z"
10801
+ },
10802
+ {
10803
+ "id": "wh-a979474c",
10804
+ "nodeId": "dw-82ebb64a",
10805
+ "nodeName": "读写验证·mock 手动",
10806
+ "param": "烘箱温度设定",
10807
+ "eng": 180,
10808
+ "raw": 180,
10809
+ "ok": true,
10810
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
10811
+ "recipeRunId": null,
10812
+ "at": "2026-09-03T12:08:19.863Z"
10813
+ },
10814
+ {
10815
+ "id": "wh-31f7fe80",
10816
+ "nodeId": "dw-f6aeca63",
10817
+ "nodeName": "读写验证·标定×2",
10818
+ "param": "烘箱温度设定",
10819
+ "eng": 100,
10820
+ "raw": 50,
10821
+ "ok": true,
10822
+ "message": "Mock PLC 写入成功:50 → raw 50,回读一致(标定后物理值 100)",
10823
+ "recipeRunId": null,
10824
+ "at": "2026-09-03T12:08:20.046Z"
10825
+ },
10826
+ {
10827
+ "id": "wh-78272430",
10828
+ "nodeId": "dw-787402f0",
10829
+ "nodeName": "读写验证·周期读",
10830
+ "param": "烘箱温度设定",
10831
+ "eng": 155,
10832
+ "raw": 155,
10833
+ "ok": true,
10834
+ "message": "Mock PLC 写入成功:155 → raw 155,回读一致(标定后物理值 155)",
10835
+ "recipeRunId": null,
10836
+ "at": "2026-09-03T12:08:20.182Z"
10837
+ },
10838
+ {
10839
+ "id": "wh-5c734d1c",
10840
+ "nodeId": "dw-fe8cdcbb",
10841
+ "nodeName": "读写验证·Modbus真实链路",
10842
+ "param": "烘箱温度设定",
10843
+ "eng": 3.1,
10844
+ "raw": 3.1416,
10845
+ "ok": true,
10846
+ "message": "写入并回读一致:3.1416 → raw 3.1416,回读 3.1416(标定后物理值 3.1)",
10847
+ "recipeRunId": null,
10848
+ "at": "2026-09-03T12:08:23.080Z"
10849
+ },
10850
+ {
10851
+ "id": "wh-fbcde0f2",
10852
+ "nodeId": "dw-fe8cdcbb",
10853
+ "nodeName": "读写验证·Modbus真实链路",
10854
+ "param": "烘箱温度设定",
10855
+ "eng": 2.7,
10856
+ "raw": 2.71828,
10857
+ "ok": true,
10858
+ "message": "写入并回读一致:2.71828 → raw 2.71828,回读 2.7183(标定后物理值 2.7)",
10859
+ "recipeRunId": null,
10860
+ "at": "2026-09-03T12:08:23.158Z"
10861
+ },
10862
+ {
10863
+ "id": "wh-8f52688b",
10864
+ "nodeId": "dw-47b4957b",
10865
+ "nodeName": "读写验证·mock 手动",
10866
+ "param": "烘箱温度设定",
10867
+ "eng": 165.5,
10868
+ "raw": 165.5,
10869
+ "ok": true,
10870
+ "message": "Mock PLC 写入成功:165.5 → raw 165.5,回读一致(标定后物理值 165.5)",
10871
+ "recipeRunId": null,
10872
+ "at": "2026-09-03T12:09:40.538Z"
10873
+ },
10874
+ {
10875
+ "id": "wh-53e50899",
10876
+ "nodeId": "dw-47b4957b",
10877
+ "nodeName": "读写验证·mock 手动",
10878
+ "param": "烘箱温度设定",
10879
+ "eng": 180,
10880
+ "raw": 180,
10881
+ "ok": true,
10882
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
10883
+ "recipeRunId": null,
10884
+ "at": "2026-09-03T12:09:40.694Z"
10885
+ },
10886
+ {
10887
+ "id": "wh-cc0a70ed",
10888
+ "nodeId": "dw-828f683b",
10889
+ "nodeName": "读写验证·标定×2",
10890
+ "param": "烘箱温度设定",
10891
+ "eng": 100,
10892
+ "raw": 50,
10893
+ "ok": true,
10894
+ "message": "Mock PLC 写入成功:50 → raw 50,回读一致(标定后物理值 100)",
10895
+ "recipeRunId": null,
10896
+ "at": "2026-09-03T12:09:40.841Z"
10897
+ },
10898
+ {
10899
+ "id": "wh-65f92877",
10900
+ "nodeId": "dw-e9b4575e",
10901
+ "nodeName": "读写验证·周期读",
10902
+ "param": "烘箱温度设定",
10903
+ "eng": 155,
10904
+ "raw": 155,
10905
+ "ok": true,
10906
+ "message": "Mock PLC 写入成功:155 → raw 155,回读一致(标定后物理值 155)",
10907
+ "recipeRunId": null,
10908
+ "at": "2026-09-03T12:09:40.967Z"
10909
+ },
10910
+ {
10911
+ "id": "wh-f37c46c9",
10912
+ "nodeId": "dw-167e357a",
10913
+ "nodeName": "读写验证·Modbus真实链路",
10914
+ "param": "烘箱温度设定",
10915
+ "eng": 3.1,
10916
+ "raw": 3.1416,
10917
+ "ok": true,
10918
+ "message": "写入并回读一致:3.1416 → raw 3.1416,回读 3.1416(标定后物理值 3.1)",
10919
+ "recipeRunId": null,
10920
+ "at": "2026-09-03T12:09:43.820Z"
10921
+ },
10922
+ {
10923
+ "id": "wh-1fb5df67",
10924
+ "nodeId": "dw-167e357a",
10925
+ "nodeName": "读写验证·Modbus真实链路",
10926
+ "param": "烘箱温度设定",
10927
+ "eng": 2.7,
10928
+ "raw": 2.71828,
10929
+ "ok": true,
10930
+ "message": "写入并回读一致:2.71828 → raw 2.71828,回读 2.7183(标定后物理值 2.7)",
10931
+ "recipeRunId": null,
10932
+ "at": "2026-09-03T12:09:43.879Z"
10933
+ },
10934
+ {
10935
+ "id": "wh-cfbac08d",
10936
+ "nodeId": "dw-a970a489",
10937
+ "nodeName": "读写验证·mock 手动",
10938
+ "param": "烘箱温度设定",
10939
+ "eng": 165.5,
10940
+ "raw": 165.5,
10941
+ "ok": true,
10942
+ "message": "Mock PLC 写入成功:165.5 → raw 165.5,回读一致(标定后物理值 165.5)",
10943
+ "recipeRunId": null,
10944
+ "at": "2026-09-03T13:34:21.742Z"
10945
+ },
10946
+ {
10947
+ "id": "wh-6f323fd7",
10948
+ "nodeId": "dw-a970a489",
10949
+ "nodeName": "读写验证·mock 手动",
10950
+ "param": "烘箱温度设定",
10951
+ "eng": 180,
10952
+ "raw": 180,
10953
+ "ok": true,
10954
+ "message": "Mock PLC 写入成功:180 → raw 180,回读一致(标定后物理值 180)",
10955
+ "recipeRunId": null,
10956
+ "at": "2026-09-03T13:34:21.895Z"
10957
+ },
10958
+ {
10959
+ "id": "wh-49375867",
10960
+ "nodeId": "dw-365a3630",
10961
+ "nodeName": "读写验证·标定×2",
10962
+ "param": "烘箱温度设定",
10963
+ "eng": 100,
10964
+ "raw": 50,
10965
+ "ok": true,
10966
+ "message": "Mock PLC 写入成功:50 → raw 50,回读一致(标定后物理值 100)",
10967
+ "recipeRunId": null,
10968
+ "at": "2026-09-03T13:34:22.069Z"
10969
+ },
10970
+ {
10971
+ "id": "wh-66340fa3",
10972
+ "nodeId": "dw-2259a4eb",
10973
+ "nodeName": "读写验证·周期读",
10974
+ "param": "烘箱温度设定",
10975
+ "eng": 155,
10976
+ "raw": 155,
10977
+ "ok": true,
10978
+ "message": "Mock PLC 写入成功:155 → raw 155,回读一致(标定后物理值 155)",
10979
+ "recipeRunId": null,
10980
+ "at": "2026-09-03T13:34:22.239Z"
10981
+ },
10982
+ {
10983
+ "id": "wh-ae2c041b",
10984
+ "nodeId": "dw-7eec4a83",
10985
+ "nodeName": "读写验证·Modbus真实链路",
10986
+ "param": "烘箱温度设定",
10987
+ "eng": 3.1,
10988
+ "raw": 3.1416,
10989
+ "ok": true,
10990
+ "message": "写入并回读一致:3.1416 → raw 3.1416,回读 3.1416(标定后物理值 3.1)",
10991
+ "recipeRunId": null,
10992
+ "at": "2026-09-03T13:34:25.104Z"
10993
+ },
10994
+ {
10995
+ "id": "wh-2152e0ff",
10996
+ "nodeId": "dw-7eec4a83",
10997
+ "nodeName": "读写验证·Modbus真实链路",
10998
+ "param": "烘箱温度设定",
10999
+ "eng": 2.7,
11000
+ "raw": 2.71828,
11001
+ "ok": true,
11002
+ "message": "写入并回读一致:2.71828 → raw 2.71828,回读 2.7183(标定后物理值 2.7)",
11003
+ "recipeRunId": null,
11004
+ "at": "2026-09-03T13:34:25.182Z"
10741
11005
  }
10742
11006
  ]