agentworkshop 0.5.9 → 0.6.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 (570) hide show
  1. package/.AgentWorkShop/prompts/compaction-hints.md +9 -9
  2. package/.AgentWorkShop/prompts/host-tools.json +42 -0
  3. package/.output/.AgentWorkShop/prompts/compaction-hints.md +9 -9
  4. package/.output/.AgentWorkShop/prompts/host-tools.json +42 -0
  5. package/.output/nitro.json +1 -1
  6. package/.output/public/_nuxt/{Dm5mD6XT.js → BD9D9pl4.js} +1 -1
  7. package/.output/public/_nuxt/{BdKzfJiM.js → BxD8Fg_Z.js} +1 -1
  8. package/.output/public/_nuxt/{dRAyjbJ6.js → C-Y5ydB6.js} +3 -3
  9. package/.output/public/_nuxt/{Bok1DRqh.js → C0FogB-p.js} +1 -1
  10. package/.output/public/_nuxt/{BUNGEK2z.js → C2QSTAWf.js} +1 -1
  11. package/.output/public/_nuxt/{CWDzKGtj.js → CclO6GyL.js} +1 -1
  12. package/.output/public/_nuxt/{B3__nfxM.js → Ck6tznoQ.js} +1 -1
  13. package/.output/public/_nuxt/CwS_UHeH.js +1 -0
  14. package/.output/public/_nuxt/{CE2ynNi9.js → CwcOEM8m.js} +1 -1
  15. package/.output/public/_nuxt/MhK4buEJ.js +1 -0
  16. package/.output/public/_nuxt/_id_.DN3U6EF9.css +1 -0
  17. package/.output/public/_nuxt/builds/latest.json +1 -1
  18. package/.output/public/_nuxt/builds/meta/a0ac51ef-51c0-4ff9-8484-7c90d8dd10ba.json +1 -0
  19. package/.output/public/_nuxt/{entry.DjhxLu-f.css → entry.DvlXlPwx.css} +1 -1
  20. package/.output/public/_nuxt/settings.BG0K9_MG.css +1 -0
  21. package/.output/server/chunks/_/error-500.mjs.map +1 -1
  22. package/.output/server/chunks/_/nitro.mjs +2648 -1401
  23. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  24. package/.output/server/chunks/build/{OmpTerminalPanel-CZnxR3M_.mjs → OmpTerminalPanel-B_SYhmgb.mjs} +2 -2
  25. package/.output/server/chunks/build/{OmpTerminalPanel-CZnxR3M_.mjs.map → OmpTerminalPanel-B_SYhmgb.mjs.map} +1 -1
  26. package/.output/server/chunks/build/{TownView-DYlUNRZe.mjs → TownView-D9yCQe1T.mjs} +6 -6
  27. package/.output/server/chunks/build/{TownView-DYlUNRZe.mjs.map → TownView-D9yCQe1T.mjs.map} +1 -1
  28. package/.output/server/chunks/build/{_id_-BOhG2yz8.mjs → _id_-CmKAEFHV.mjs} +4 -2
  29. package/.output/server/chunks/build/_id_-CmKAEFHV.mjs.map +1 -0
  30. package/.output/server/chunks/build/{_id_-CuyMYmhY.mjs → _id_-xR3AChMO.mjs} +74 -26
  31. package/.output/server/chunks/build/_id_-xR3AChMO.mjs.map +1 -0
  32. package/.output/server/chunks/build/{_wsId_-B5f5BdW2.mjs → _wsId_-C45nVrl-.mjs} +12 -10
  33. package/.output/server/chunks/build/{_wsId_-B5f5BdW2.mjs.map → _wsId_-C45nVrl-.mjs.map} +1 -1
  34. package/.output/server/chunks/build/{agents-BVaxN75W.mjs → agents-D4l1icvn.mjs} +5 -3
  35. package/.output/server/chunks/build/agents-D4l1icvn.mjs.map +1 -0
  36. package/.output/server/chunks/build/{channel-templates-D1K2IKrE.mjs → channel-templates-DqjtC-R0.mjs} +5 -3
  37. package/.output/server/chunks/build/channel-templates-DqjtC-R0.mjs.map +1 -0
  38. package/.output/server/chunks/build/{client-only-CFTHwakk.mjs → client-only-D5BzSQc6.mjs} +2 -2
  39. package/.output/server/chunks/build/client-only-D5BzSQc6.mjs.map +1 -0
  40. package/.output/server/chunks/build/{daq-ObtN1TQ4.mjs → daq-Boz_dlAQ.mjs} +6 -4
  41. package/.output/server/chunks/build/daq-Boz_dlAQ.mjs.map +1 -0
  42. package/.output/server/chunks/build/{dcw-fINr-He1.mjs → dcw-wTRwBAUi.mjs} +3 -1
  43. package/.output/server/chunks/build/dcw-wTRwBAUi.mjs.map +1 -0
  44. package/.output/server/chunks/build/{default-CVVO40Jj.mjs → default-Dt6xLdpd.mjs} +7 -5
  45. package/.output/server/chunks/build/{default-CVVO40Jj.mjs.map → default-Dt6xLdpd.mjs.map} +1 -1
  46. package/.output/server/chunks/build/interval-WlxgjTzO.mjs +9 -0
  47. package/.output/server/chunks/build/interval-WlxgjTzO.mjs.map +1 -0
  48. package/.output/server/chunks/build/{logs-DqNgCJAn.mjs → logs-Cdi-eXlN.mjs} +5 -3
  49. package/.output/server/chunks/build/logs-Cdi-eXlN.mjs.map +1 -0
  50. package/.output/server/chunks/build/{monitor-CTZLwbdw.mjs → monitor-yNoV98rf.mjs} +6 -4
  51. package/.output/server/chunks/build/{monitor-CTZLwbdw.mjs.map → monitor-yNoV98rf.mjs.map} +1 -1
  52. package/.output/server/chunks/build/{pages-DC52d7z7.mjs → pages-bWKy0ZsA.mjs} +6 -4
  53. package/.output/server/chunks/build/pages-bWKy0ZsA.mjs.map +1 -0
  54. package/.output/server/chunks/build/{plugins-DVQty7qG.mjs → plugins-B-ZNey0Z.mjs} +4 -2
  55. package/.output/server/chunks/build/plugins-B-ZNey0Z.mjs.map +1 -0
  56. package/.output/server/chunks/build/{settings-BeergncK.mjs → settings-C3T5hR2A.mjs} +21 -19
  57. package/.output/server/chunks/build/settings-C3T5hR2A.mjs.map +1 -0
  58. package/.output/server/chunks/build/{teams-CFeDlHDh.mjs → teams-QR3BBF7A.mjs} +5 -3
  59. package/.output/server/chunks/build/teams-QR3BBF7A.mjs.map +1 -0
  60. package/.output/server/chunks/build/{tokens-CBAUbOce.mjs → tokens-DFvr_TLj.mjs} +4 -2
  61. package/.output/server/chunks/build/tokens-DFvr_TLj.mjs.map +1 -0
  62. package/.output/server/chunks/build/town-BUqRobze.mjs +2 -0
  63. package/.output/server/chunks/build/town-BUqRobze.mjs.map +1 -1
  64. package/.output/server/chunks/build/{town-BxH-XXth.mjs → town-CKg6Qxba.mjs} +9 -7
  65. package/.output/server/chunks/build/town-CKg6Qxba.mjs.map +1 -0
  66. package/.output/server/chunks/build/{useDaqStream-CwORhsD7.mjs → useDaqStream-zHEptJQ_.mjs} +44 -1
  67. package/.output/server/chunks/build/useDaqStream-zHEptJQ_.mjs.map +1 -0
  68. package/.output/server/chunks/build/{useSiteConfig-Cc-ABesl.mjs → useSiteConfig-DJe_KMVr.mjs} +1 -1
  69. package/.output/server/chunks/build/{useSiteConfig-Cc-ABesl.mjs.map → useSiteConfig-DJe_KMVr.mjs.map} +1 -1
  70. package/.output/server/chunks/build/{useWorkshopApi-5er8_EHZ.mjs → useWorkshopApi-Bh5VUHWu.mjs} +1 -1
  71. package/.output/server/chunks/build/{useWorkshopApi-5er8_EHZ.mjs.map → useWorkshopApi-Bh5VUHWu.mjs.map} +1 -1
  72. package/.output/server/chunks/build/{useWorkshopWs-Dwr_1Q8f.mjs → useWorkshopWs-xcdeiSmJ.mjs} +2 -2
  73. package/.output/server/chunks/build/{useWorkshopWs-Dwr_1Q8f.mjs.map → useWorkshopWs-xcdeiSmJ.mjs.map} +1 -1
  74. package/.output/server/chunks/build/{user-CpVY4OAA.mjs → user-Dk-ytEUV.mjs} +1 -1
  75. package/.output/server/chunks/build/{user-CpVY4OAA.mjs.map → user-Dk-ytEUV.mjs.map} +1 -1
  76. package/.output/server/chunks/build/{users-BMs4s_6K.mjs → users-4FZ0yFUO.mjs} +4 -2
  77. package/.output/server/chunks/build/users-4FZ0yFUO.mjs.map +1 -0
  78. package/.output/server/chunks/build/{workshop-CJAyZ5zS.mjs → workshop-CLhwe5eo.mjs} +6 -4
  79. package/.output/server/chunks/build/workshop-CLhwe5eo.mjs.map +1 -0
  80. package/.output/server/chunks/build/{workspaces-Dq-1zvu9.mjs → workspaces-IfORCDJE.mjs} +2 -2
  81. package/.output/server/chunks/build/{workspaces-Dq-1zvu9.mjs.map → workspaces-IfORCDJE.mjs.map} +1 -1
  82. package/.output/server/chunks/routes/api/health.get.mjs +2 -0
  83. package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
  84. package/.output/server/chunks/routes/api/index.get.mjs +2 -0
  85. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  86. package/.output/server/chunks/routes/api/index.post.mjs +2 -0
  87. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  88. package/.output/server/chunks/routes/api/mcp/workshop.mjs +2 -0
  89. package/.output/server/chunks/routes/api/mcp/workshop.mjs.map +1 -1
  90. package/.output/server/chunks/routes/api/metrics.mjs +2 -0
  91. package/.output/server/chunks/routes/api/metrics.mjs.map +1 -1
  92. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +2 -0
  93. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs.map +1 -1
  94. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +2 -0
  95. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs.map +1 -1
  96. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +2 -0
  97. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs.map +1 -1
  98. package/.output/server/chunks/routes/api/system/config.get.mjs +2 -0
  99. package/.output/server/chunks/routes/api/system/config.get.mjs.map +1 -1
  100. package/.output/server/chunks/routes/api/system/index.get.mjs +2 -0
  101. package/.output/server/chunks/routes/api/system/index.get.mjs.map +1 -1
  102. package/.output/server/chunks/routes/api/system/index.patch.mjs +2 -0
  103. package/.output/server/chunks/routes/api/system/index.patch.mjs.map +1 -1
  104. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +2 -0
  105. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs.map +1 -1
  106. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +2 -0
  107. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs.map +1 -1
  108. package/.output/server/chunks/routes/api/system/monitor.get.mjs +2 -0
  109. package/.output/server/chunks/routes/api/system/monitor.get.mjs.map +1 -1
  110. package/.output/server/chunks/routes/api/system/settings/events.get.mjs +3 -2
  111. package/.output/server/chunks/routes/api/system/settings/events.get.mjs.map +1 -1
  112. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +2 -0
  113. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs.map +1 -1
  114. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +2 -0
  115. package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
  116. package/.output/server/chunks/routes/api/users/_id_.get.mjs +2 -0
  117. package/.output/server/chunks/routes/api/users/_id_.get.mjs.map +1 -1
  118. package/.output/server/chunks/routes/api/users/_id_.put.mjs +2 -0
  119. package/.output/server/chunks/routes/api/users/_id_.put.mjs.map +1 -1
  120. package/.output/server/chunks/routes/api/users/index.get.mjs +2 -0
  121. package/.output/server/chunks/routes/api/users/index.get.mjs.map +1 -1
  122. package/.output/server/chunks/routes/api/users/index.post.mjs +2 -0
  123. package/.output/server/chunks/routes/api/users/index.post.mjs.map +1 -1
  124. package/.output/server/chunks/routes/api/users/login.post.mjs +2 -0
  125. package/.output/server/chunks/routes/api/users/login.post.mjs.map +1 -1
  126. package/.output/server/chunks/routes/api/users/logout.post.mjs +2 -0
  127. package/.output/server/chunks/routes/api/users/logout.post.mjs.map +1 -1
  128. package/.output/server/chunks/routes/api/users/me.get.mjs +2 -0
  129. package/.output/server/chunks/routes/api/users/me.get.mjs.map +1 -1
  130. package/.output/server/chunks/routes/api/users/register.post.mjs +2 -0
  131. package/.output/server/chunks/routes/api/users/register.post.mjs.map +1 -1
  132. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +2 -0
  133. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs.map +1 -1
  134. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +2 -0
  135. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs.map +1 -1
  136. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +2 -0
  137. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs.map +1 -1
  138. package/.output/server/chunks/routes/api/workshop/_...path_.mjs +2 -0
  139. package/.output/server/chunks/routes/api/workshop/_...path_.mjs.map +1 -1
  140. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +2 -0
  141. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs.map +1 -1
  142. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +2 -0
  143. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs.map +1 -1
  144. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +2 -0
  145. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs.map +1 -1
  146. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +2 -0
  147. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs.map +1 -1
  148. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +2 -0
  149. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs.map +1 -1
  150. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +2 -0
  151. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs.map +1 -1
  152. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +2 -0
  153. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs.map +1 -1
  154. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +2 -0
  155. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
  156. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +2 -0
  157. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs.map +1 -1
  158. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +2 -0
  159. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs.map +1 -1
  160. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +2 -0
  161. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs.map +1 -1
  162. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +2 -0
  163. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs.map +1 -1
  164. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +2 -0
  165. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs.map +1 -1
  166. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +2 -0
  167. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs.map +1 -1
  168. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +2 -0
  169. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs.map +1 -1
  170. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +2 -0
  171. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs.map +1 -1
  172. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +2 -0
  173. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs.map +1 -1
  174. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +2 -0
  175. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs.map +1 -1
  176. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +2 -0
  177. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs.map +1 -1
  178. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +2 -0
  179. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs.map +1 -1
  180. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +2 -0
  181. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs.map +1 -1
  182. package/.output/server/chunks/routes/api/workshop/audit.get.mjs +2 -0
  183. package/.output/server/chunks/routes/api/workshop/audit.get.mjs.map +1 -1
  184. package/.output/server/chunks/routes/api/workshop/caller.mjs +2 -0
  185. package/.output/server/chunks/routes/api/workshop/caller.mjs.map +1 -1
  186. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +2 -0
  187. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs.map +1 -1
  188. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +2 -0
  189. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs.map +1 -1
  190. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +2 -0
  191. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs.map +1 -1
  192. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +2 -0
  193. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs.map +1 -1
  194. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +2 -0
  195. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs.map +1 -1
  196. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +2 -0
  197. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs.map +1 -1
  198. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +2 -0
  199. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs.map +1 -1
  200. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +2 -0
  201. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs.map +1 -1
  202. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +2 -0
  203. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs.map +1 -1
  204. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +2 -0
  205. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs.map +1 -1
  206. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +2 -0
  207. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs.map +1 -1
  208. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +2 -0
  209. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs.map +1 -1
  210. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +2 -0
  211. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs.map +1 -1
  212. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +2 -0
  213. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs.map +1 -1
  214. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +2 -0
  215. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs.map +1 -1
  216. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +2 -0
  217. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs.map +1 -1
  218. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +2 -0
  219. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs.map +1 -1
  220. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +2 -0
  221. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs.map +1 -1
  222. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +2 -0
  223. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs.map +1 -1
  224. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +2 -0
  225. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs.map +1 -1
  226. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +2 -0
  227. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs.map +1 -1
  228. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +2 -0
  229. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs.map +1 -1
  230. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +2 -0
  231. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs.map +1 -1
  232. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +2 -0
  233. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs.map +1 -1
  234. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +2 -0
  235. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs.map +1 -1
  236. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +2 -0
  237. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs.map +1 -1
  238. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +2 -0
  239. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs.map +1 -1
  240. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +2 -0
  241. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs.map +1 -1
  242. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +2 -0
  243. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs.map +1 -1
  244. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +2 -0
  245. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs.map +1 -1
  246. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +2 -0
  247. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs.map +1 -1
  248. package/.output/server/chunks/routes/api/workshop/channels.get.mjs +2 -0
  249. package/.output/server/chunks/routes/api/workshop/channels.get.mjs.map +1 -1
  250. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +2 -0
  251. package/.output/server/chunks/routes/api/workshop/channels.post.mjs.map +1 -1
  252. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +2 -0
  253. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs.map +1 -1
  254. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +36 -0
  255. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs.map +1 -0
  256. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +53 -0
  257. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs.map +1 -0
  258. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +2 -0
  259. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs.map +1 -1
  260. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +2 -0
  261. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs.map +1 -1
  262. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +2 -0
  263. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs.map +1 -1
  264. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +2 -0
  265. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs.map +1 -1
  266. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +2 -0
  267. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs.map +1 -1
  268. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +2 -0
  269. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs.map +1 -1
  270. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +2 -0
  271. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs.map +1 -1
  272. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +2 -0
  273. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs.map +1 -1
  274. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +2 -0
  275. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs.map +1 -1
  276. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +2 -0
  277. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs.map +1 -1
  278. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +2 -0
  279. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs.map +1 -1
  280. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +2 -0
  281. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs.map +1 -1
  282. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +2 -0
  283. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs.map +1 -1
  284. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +2 -0
  285. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs.map +1 -1
  286. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +2 -0
  287. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs.map +1 -1
  288. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +2 -0
  289. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs.map +1 -1
  290. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +2 -0
  291. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs.map +1 -1
  292. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +2 -0
  293. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs.map +1 -1
  294. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +2 -0
  295. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs.map +1 -1
  296. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +2 -0
  297. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs.map +1 -1
  298. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +2 -0
  299. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs.map +1 -1
  300. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +2 -0
  301. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs.map +1 -1
  302. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +2 -0
  303. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs.map +1 -1
  304. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +2 -0
  305. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs.map +1 -1
  306. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +2 -0
  307. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs.map +1 -1
  308. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +2 -0
  309. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs.map +1 -1
  310. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +2 -0
  311. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs.map +1 -1
  312. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +2 -0
  313. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs.map +1 -1
  314. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +2 -0
  315. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs.map +1 -1
  316. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +2 -0
  317. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs.map +1 -1
  318. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +2 -0
  319. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs.map +1 -1
  320. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +2 -0
  321. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs.map +1 -1
  322. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +2 -0
  323. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs.map +1 -1
  324. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +2 -0
  325. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs.map +1 -1
  326. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +2 -0
  327. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs.map +1 -1
  328. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +2 -0
  329. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs.map +1 -1
  330. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +2 -0
  331. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs.map +1 -1
  332. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +2 -0
  333. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs.map +1 -1
  334. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +2 -0
  335. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs.map +1 -1
  336. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +2 -0
  337. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs.map +1 -1
  338. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +2 -0
  339. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs.map +1 -1
  340. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +2 -0
  341. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs.map +1 -1
  342. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +2 -0
  343. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs.map +1 -1
  344. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +2 -0
  345. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs.map +1 -1
  346. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +2 -0
  347. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs.map +1 -1
  348. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.patch.mjs +2 -0
  349. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.patch.mjs.map +1 -1
  350. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +2 -0
  351. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs.map +1 -1
  352. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +2 -0
  353. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs.map +1 -1
  354. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +2 -0
  355. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs.map +1 -1
  356. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +2 -0
  357. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs.map +1 -1
  358. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +2 -0
  359. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs.map +1 -1
  360. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +2 -0
  361. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs.map +1 -1
  362. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +2 -0
  363. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs.map +1 -1
  364. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +2 -0
  365. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs.map +1 -1
  366. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +2 -0
  367. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs.map +1 -1
  368. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +2 -0
  369. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs.map +1 -1
  370. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +2 -0
  371. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs.map +1 -1
  372. package/.output/server/chunks/routes/api/workshop/index.get.mjs +2 -0
  373. package/.output/server/chunks/routes/api/workshop/index.get.mjs.map +1 -1
  374. package/.output/server/chunks/routes/api/workshop/index.post.mjs +2 -0
  375. package/.output/server/chunks/routes/api/workshop/index.post.mjs.map +1 -1
  376. package/.output/server/chunks/routes/api/workshop/index10.get.mjs +2 -0
  377. package/.output/server/chunks/routes/api/workshop/index10.get.mjs.map +1 -1
  378. package/.output/server/chunks/routes/api/workshop/index2.get.mjs +2 -0
  379. package/.output/server/chunks/routes/api/workshop/index2.get.mjs.map +1 -1
  380. package/.output/server/chunks/routes/api/workshop/index2.post.mjs +2 -0
  381. package/.output/server/chunks/routes/api/workshop/index2.post.mjs.map +1 -1
  382. package/.output/server/chunks/routes/api/workshop/index3.get.mjs +2 -0
  383. package/.output/server/chunks/routes/api/workshop/index3.get.mjs.map +1 -1
  384. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +2 -0
  385. package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
  386. package/.output/server/chunks/routes/api/workshop/index4.get.mjs +2 -0
  387. package/.output/server/chunks/routes/api/workshop/index4.get.mjs.map +1 -1
  388. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +2 -0
  389. package/.output/server/chunks/routes/api/workshop/index4.post.mjs.map +1 -1
  390. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +2 -0
  391. package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
  392. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +2 -0
  393. package/.output/server/chunks/routes/api/workshop/index5.post.mjs.map +1 -1
  394. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +2 -0
  395. package/.output/server/chunks/routes/api/workshop/index6.get.mjs.map +1 -1
  396. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +2 -0
  397. package/.output/server/chunks/routes/api/workshop/index6.post.mjs.map +1 -1
  398. package/.output/server/chunks/routes/api/workshop/index7.get.mjs +2 -0
  399. package/.output/server/chunks/routes/api/workshop/index7.get.mjs.map +1 -1
  400. package/.output/server/chunks/routes/api/workshop/index7.post.mjs +2 -0
  401. package/.output/server/chunks/routes/api/workshop/index7.post.mjs.map +1 -1
  402. package/.output/server/chunks/routes/api/workshop/index8.get.mjs +2 -0
  403. package/.output/server/chunks/routes/api/workshop/index8.get.mjs.map +1 -1
  404. package/.output/server/chunks/routes/api/workshop/index8.post.mjs +2 -0
  405. package/.output/server/chunks/routes/api/workshop/index8.post.mjs.map +1 -1
  406. package/.output/server/chunks/routes/api/workshop/index9.get.mjs +2 -0
  407. package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
  408. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +2 -0
  409. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs.map +1 -1
  410. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +2 -0
  411. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs.map +1 -1
  412. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +2 -0
  413. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs.map +1 -1
  414. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +2 -0
  415. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs.map +1 -1
  416. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +2 -0
  417. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs.map +1 -1
  418. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +2 -0
  419. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs.map +1 -1
  420. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +2 -0
  421. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs.map +1 -1
  422. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +2 -0
  423. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs.map +1 -1
  424. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +2 -0
  425. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs.map +1 -1
  426. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +2 -0
  427. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs.map +1 -1
  428. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +2 -0
  429. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs.map +1 -1
  430. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +2 -0
  431. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs.map +1 -1
  432. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +2 -0
  433. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs.map +1 -1
  434. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +2 -0
  435. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs.map +1 -1
  436. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +2 -0
  437. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs.map +1 -1
  438. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +2 -0
  439. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs.map +1 -1
  440. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +2 -0
  441. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs.map +1 -1
  442. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +2 -0
  443. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs.map +1 -1
  444. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +2 -0
  445. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs.map +1 -1
  446. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +2 -0
  447. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs.map +1 -1
  448. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +2 -0
  449. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs.map +1 -1
  450. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +2 -0
  451. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs.map +1 -1
  452. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +2 -0
  453. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs.map +1 -1
  454. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +2 -0
  455. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs.map +1 -1
  456. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +2 -0
  457. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs.map +1 -1
  458. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +2 -0
  459. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs.map +1 -1
  460. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +2 -0
  461. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs.map +1 -1
  462. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +2 -0
  463. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs.map +1 -1
  464. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +2 -0
  465. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs.map +1 -1
  466. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +2 -0
  467. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs.map +1 -1
  468. package/.output/server/chunks/routes/renderer.mjs +1 -1
  469. package/.output/server/chunks/routes/renderer.mjs.map +1 -1
  470. package/.output/server/chunks/virtual/entry.mjs +166 -114
  471. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  472. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  473. package/.output/server/index.mjs +2 -0
  474. package/.output/server/index.mjs.map +1 -1
  475. package/.output/server/package.json +1 -1
  476. package/app/composables/workshop/useDaqStream.ts +59 -1
  477. package/app/config/schema.ts +8 -0
  478. package/app/pages/daq/[id].vue +141 -1
  479. package/app/pages/settings.vue +10 -5
  480. package/app/plugins/runtime-config.client.ts +65 -65
  481. package/app/stores/runtime-config.ts +212 -212
  482. package/config.yml +77 -70
  483. package/docker-compose.yml +19 -2
  484. package/docs/plugins.md +271 -197
  485. package/i18n/dicts/_en.json +7 -2
  486. package/i18n/dicts/daqDetail.json +8 -2
  487. package/i18n/locales/en.ts +55 -29
  488. package/i18n/locales/zh-CN.ts +55 -29
  489. package/nuxt.config.ts +1 -1
  490. package/package.json +144 -143
  491. package/scripts/_dbg-collab-scenario-e2e.mjs +185 -0
  492. package/scripts/_dbg-daq-frame-alarm.mjs +49 -0
  493. package/scripts/_dbg-daq-frame-ui.mjs +62 -0
  494. package/scripts/_dbg-daq-frame-ws.mjs +72 -0
  495. package/scripts/_dbg-daq-frames-e2e.mjs +118 -0
  496. package/scripts/_dbg-host.mjs +16 -0
  497. package/scripts/_dbg-plugin-agent-read.ts +56 -0
  498. package/scripts/_dbg-plugin-sink-rest.mjs +70 -0
  499. package/scripts/_dbg-plugin-sink-ui.mjs +81 -0
  500. package/scripts/_dbg-prompts-hotreload-test.ts +76 -0
  501. package/scripts/_dbg-release-smoke.mjs +104 -0
  502. package/scripts/i18n-merge.mjs +69 -67
  503. package/scripts/test-context-governor.ts +176 -176
  504. package/scripts/test-daq-frames.ts +180 -0
  505. package/scripts/test-daq-minio.ts +77 -0
  506. package/scripts/test-memory-rrf-mmr.ts +114 -114
  507. package/scripts/test-plugin-ext.ts +173 -0
  508. package/server/api/system/settings/events.get.ts +27 -28
  509. package/server/api/system/settings/index.get.ts +14 -14
  510. package/server/api/system/settings/index.patch.ts +22 -22
  511. package/server/api/system/settings/reset.post.ts +12 -12
  512. package/server/api/workshop/daq/[id]/frames/content.get.ts +24 -0
  513. package/server/api/workshop/daq/[id]/frames.get.ts +44 -0
  514. package/server/data/daqs.json +89 -89
  515. package/server/data/dcw-rollback.json +1 -1
  516. package/server/data/dcw-runs.json +3136 -2492
  517. package/server/data/dcw-writes.json +672 -0
  518. package/server/data/dcws.json +4 -4
  519. package/server/data/line-runs.json +1 -232
  520. package/server/plugins/daq.ts +11 -0
  521. package/server/plugins/system-config.ts +38 -38
  522. package/server/services/system-config.ts +365 -356
  523. package/server/services/workshop/agents/industrial-tools.ts +91 -25
  524. package/server/services/workshop/agents/omp-agent.ts +1955 -1895
  525. package/server/services/workshop/agents/plugin-tools.ts +145 -0
  526. package/server/services/workshop/daq/bus/queue-port.ts +18 -0
  527. package/server/services/workshop/daq/daq-controller.ts +216 -14
  528. package/server/services/workshop/daq/daq-node.ts +257 -247
  529. package/server/services/workshop/daq/daq-runtime.ts +36 -4
  530. package/server/services/workshop/daq/daq-templates.ts +213 -157
  531. package/server/services/workshop/daq/drivers.ts +134 -30
  532. package/server/services/workshop/daq/frames.ts +227 -0
  533. package/server/services/workshop/daq/infra.ts +31 -17
  534. package/server/services/workshop/daq/objectstore/disk.adapter.ts +38 -0
  535. package/server/services/workshop/daq/objectstore/index.ts +88 -0
  536. package/server/services/workshop/daq/objectstore/minio.adapter.ts +60 -0
  537. package/server/services/workshop/daq/objectstore/objectstore-port.ts +27 -0
  538. package/server/services/workshop/daq/plugin-bridge.ts +73 -0
  539. package/server/services/workshop/daq/png-enc.ts +71 -0
  540. package/server/services/workshop/daq/storage/sqlite.adapter.ts +104 -1
  541. package/server/services/workshop/daq/storage/timescale.adapter.ts +95 -4
  542. package/server/services/workshop/daq/storage/tsdb-port.ts +46 -0
  543. package/server/services/workshop/plugins/host.mjs +479 -417
  544. package/server/services/workshop/runtime/agent-runtime.ts +744 -744
  545. package/shared/config/schema.json +6 -1
  546. package/shared/daq-protocol.ts +88 -0
  547. package/.output/public/_nuxt/B-PgoIPN.js +0 -1
  548. package/.output/public/_nuxt/DVNYfGsj.js +0 -1
  549. package/.output/public/_nuxt/_id_.CbiF5PrV.css +0 -1
  550. package/.output/public/_nuxt/builds/meta/6f7e40bf-a960-4f51-8a2e-bb1fffeaa5e8.json +0 -1
  551. package/.output/public/_nuxt/settings.BANibAnV.css +0 -1
  552. package/.output/server/chunks/build/_id_-BOhG2yz8.mjs.map +0 -1
  553. package/.output/server/chunks/build/_id_-CuyMYmhY.mjs.map +0 -1
  554. package/.output/server/chunks/build/agents-BVaxN75W.mjs.map +0 -1
  555. package/.output/server/chunks/build/channel-templates-D1K2IKrE.mjs.map +0 -1
  556. package/.output/server/chunks/build/client-only-CFTHwakk.mjs.map +0 -1
  557. package/.output/server/chunks/build/daq-ObtN1TQ4.mjs.map +0 -1
  558. package/.output/server/chunks/build/dcw-fINr-He1.mjs.map +0 -1
  559. package/.output/server/chunks/build/interval-Bt11uRPw.mjs +0 -9
  560. package/.output/server/chunks/build/interval-Bt11uRPw.mjs.map +0 -1
  561. package/.output/server/chunks/build/logs-DqNgCJAn.mjs.map +0 -1
  562. package/.output/server/chunks/build/pages-DC52d7z7.mjs.map +0 -1
  563. package/.output/server/chunks/build/plugins-DVQty7qG.mjs.map +0 -1
  564. package/.output/server/chunks/build/settings-BeergncK.mjs.map +0 -1
  565. package/.output/server/chunks/build/teams-CFeDlHDh.mjs.map +0 -1
  566. package/.output/server/chunks/build/tokens-CBAUbOce.mjs.map +0 -1
  567. package/.output/server/chunks/build/town-BxH-XXth.mjs.map +0 -1
  568. package/.output/server/chunks/build/useDaqStream-CwORhsD7.mjs.map +0 -1
  569. package/.output/server/chunks/build/users-BMs4s_6K.mjs.map +0 -1
  570. package/.output/server/chunks/build/workshop-CJAyZ5zS.mjs.map +0 -1
@@ -23,6 +23,8 @@ import 'node:child_process';
23
23
  import 'node:net';
24
24
  import 'node:util';
25
25
  import 'node:module';
26
+ import 'node:fs/promises';
27
+ import 'node:zlib';
26
28
 
27
29
  const kNodeInspect = /* @__PURE__ */ Symbol.for(
28
30
  "nodejs.util.inspect.custom"
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.DfCzGthR.mjs","../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.D9ehKjSh.mjs","../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.By9qWDAI.mjs","../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.CipVM6lf.mjs","../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/adapters/node.mjs","../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser_b1d7d58181e96cbc69b3295f5f958520/node_modules/nitropack/dist/presets/node/runtime/node-server.mjs"],"names":["HttpsServer","HttpServer","wsAdapter"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5]}
1
+ {"version":3,"file":"index.mjs","sources":["../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.DfCzGthR.mjs","../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.D9ehKjSh.mjs","../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.By9qWDAI.mjs","../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/shared/crossws.CipVM6lf.mjs","../../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws/dist/adapters/node.mjs","../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser_1ea3e01e591cb0fd9b154d63486cc9e1/node_modules/nitropack/dist/presets/node/runtime/node-server.mjs"],"names":["HttpsServer","HttpServer","wsAdapter"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5]}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentworkshop-prod",
3
- "version": "0.5.9",
3
+ "version": "0.6.0",
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "dependencies": {
@@ -10,10 +10,23 @@ import { reactive } from 'vue'
10
10
  import { useTownBus } from './useTownBus'
11
11
  import { apiFetch } from './apiClient'
12
12
  import type { AepEnvelope } from '#shared/workshop-protocol'
13
- import { DAQ_TEMPLATES, type AepDaqControllerState, type AepDaqReading, type AepDaqNodeChange, type AepDaqTemplateChange, type DaqNodeView, type DaqTemplateDef, type DaqTemplateInput } from '#shared/daq-protocol'
13
+ import { DAQ_TEMPLATES, type AepDaqControllerState, type AepDaqFrame, type AepDaqReading, type AepDaqNodeChange, type AepDaqTemplateChange, type DaqNodeView, type DaqTemplateDef, type DaqTemplateInput } from '#shared/daq-protocol'
14
14
 
15
15
  /** 历史缓冲长度(1s 默认周期 ≈ 最近 5 分钟趋势) */
16
16
  const HIST_CAP = 60
17
+ /** 每节点帧缓冲上限(图像/向量元数据;画廊分页走 REST) */
18
+ const FRAMES_CAP = 30
19
+
20
+ /** 帧展示态(WS daq.frame / REST frames 同构) */
21
+ export interface DaqFrameLive {
22
+ at: number
23
+ kind: 'vector' | 'image'
24
+ points?: number[]
25
+ metrics: Record<string, number>
26
+ /** 图像内容 URL(同源 cookie 鉴权,<img> 直用) */
27
+ thumbUrl?: string
28
+ contentUrl?: string
29
+ }
17
30
 
18
31
  /** 展示态:本地追加"实时性"字段(view 同构 + 趋势缓冲) */
19
32
  export interface DaqNodeLive extends DaqNodeView {
@@ -93,6 +106,8 @@ const createStore = () => {
93
106
  })
94
107
  // 模板目录:内置 6 种先行(SEO 首帧即有),REST 快照与 WS 帧收敛为 server 权威
95
108
  const templates = reactive<DaqTemplateDef[]>(DAQ_TEMPLATES.map(t => ({ ...t })))
109
+ // 帧缓冲(v2 多形态信号:nodeId → 最近 FRAMES_CAP 帧,新帧头插)
110
+ const frames = reactive<Record<string, DaqFrameLive[]>>({})
96
111
 
97
112
  function upsert(node: DaqNodeView): void {
98
113
  const i = nodes.findIndex(x => x.id === node.id)
@@ -164,6 +179,31 @@ const createStore = () => {
164
179
  else templates.push({ ...p.template })
165
180
  }
166
181
 
182
+ /** 帧入账(v2:新帧头插,容量裁剪;图像只存引用 URL,像素按需经 URL 加载)。
183
+ * 同时驱动节点 value/state/lastAt(向量=avg 展示值)——帧节点的实时链路与
184
+ * 标量 daq.reading 同源,列表页/数字孪生面板因此零轮询可见。 */
185
+ function applyFrame(p: AepDaqFrame): void {
186
+ const at = Date.parse(p.at)
187
+ const list = frames[p.nodeId] ?? (frames[p.nodeId] = [])
188
+ if (!list.some(f => f.at === at)) {
189
+ list.unshift({
190
+ at,
191
+ kind: p.kind,
192
+ points: p.preview,
193
+ metrics: p.metrics ?? {},
194
+ thumbUrl: p.thumbUrl,
195
+ contentUrl: p.thumbUrl ? p.thumbUrl.replace('thumb=1', 'thumb=0') : undefined,
196
+ })
197
+ if (list.length > FRAMES_CAP) list.splice(FRAMES_CAP)
198
+ }
199
+ const n = nodes.find(x => x.id === p.nodeId)
200
+ if (n) {
201
+ n.value = p.metrics?.avg ?? n.value
202
+ if (p.state) n.state = p.state
203
+ n.lastAt = p.at
204
+ }
205
+ }
206
+
167
207
  /** 挂 WS 帧(townBus);幂等(globalThis 防重复订阅)。返回退订函数。 */
168
208
  function ensureWsFeed(): () => void {
169
209
  const g = globalThis as typeof globalThis & { __daqBusFed?: boolean }
@@ -171,6 +211,7 @@ const createStore = () => {
171
211
  g.__daqBusFed = true
172
212
  return useTownBus().subscribe((e: AepEnvelope) => {
173
213
  if (e.type === 'daq.reading') applyReading(e.payload as AepDaqReading)
214
+ else if (e.type === 'daq.frame') applyFrame(e.payload as unknown as AepDaqFrame)
174
215
  else if (e.type === 'daq.node.changed') applyChange(e.payload as AepDaqNodeChange)
175
216
  else if (e.type === 'daq.controller') Object.assign(controller, e.payload as AepDaqControllerState)
176
217
  else if (e.type === 'daq.template.changed') applyTemplateChange(e.payload as AepDaqTemplateChange)
@@ -310,6 +351,18 @@ const createStore = () => {
310
351
  return data.points ?? []
311
352
  }
312
353
 
354
+ /** 帧历史(REST 分页;WS daq.frame 只补增量,刷新后由此重建基线) */
355
+ async function fetchFrames(id: string, opts: { fromMs?: number, toMs?: number, kind?: 'vector' | 'image', limit?: number } = {}): Promise<DaqFrameLive[]> {
356
+ const qs = new URLSearchParams()
357
+ if (opts.fromMs != null) qs.set('from', String(opts.fromMs))
358
+ if (opts.toMs != null) qs.set('to', String(opts.toMs))
359
+ if (opts.kind) qs.set('kind', opts.kind)
360
+ if (opts.limit != null) qs.set('limit', String(opts.limit))
361
+ const data = await api<{ frames: DaqFrameLive[] }>(`/${id}/frames?${qs.toString()}`)
362
+ frames[id] = data.frames ?? []
363
+ return frames[id]!
364
+ }
365
+
313
366
  // ---------- 自定义模板 CRUD(server 权威;WS daq.template.changed 收敛其余客户端) ----------
314
367
 
315
368
  async function createTemplate(input: DaqTemplateInput): Promise<DaqTemplateDef> {
@@ -361,6 +414,11 @@ const createStore = () => {
361
414
  ackAlarm,
362
415
  nodeById: (id: string): DaqNodeLive | undefined => nodes.find(n => n.id === id),
363
416
  samplesOf,
417
+ fetchFrames,
418
+ frames,
419
+ framesOf: (id: string): DaqFrameLive[] => frames[id] ?? [],
420
+ templateOf: (templateRef: string): DaqTemplateDef | undefined =>
421
+ templates.find(t => t.key === templateRef || `daq-${t.key}` === templateRef),
364
422
  ofDevice: (deviceId: string | null): DaqNodeLive[] =>
365
423
  deviceId ? nodes.filter(n => n.deviceBindingId === deviceId) : [],
366
424
  })
@@ -62,6 +62,14 @@ export const appConfigSchema = z.object({
62
62
  password: z.string().default('awshop'),
63
63
  database: z.string().default('awshop'),
64
64
  }),
65
+ // 对象存储(v2 帧管线:图像帧像素;MinIO S3 兼容。不可达 → 本地磁盘降级,采集不中断)
66
+ objectstore: z.object({
67
+ host: z.string().default('127.0.0.1'),
68
+ port: z.number().int().min(1).max(65535).default(9000),
69
+ accessKey: z.string().default('awshop'),
70
+ secretKey: z.string().default('awshop-secret'),
71
+ bucket: z.string().default('daq'),
72
+ }).optional(),
65
73
  }).default({ startInfrastructure: 'auto', mqtt: { host: '127.0.0.1', port: 1883 }, timescale: { host: '127.0.0.1', port: 5432, user: 'postgres', password: 'awshop', database: 'awshop' } }),
66
74
  })
67
75
 
@@ -7,7 +7,7 @@
7
7
  import { computed, onBeforeUnmount, onMounted, reactive, ref, watch } from 'vue'
8
8
  import { useRoute } from 'vue-router'
9
9
  import { useDcwStream } from '@/app/composables/workshop/useDcwStream'
10
- import { useDaqStream } from '@/app/composables/workshop/useDaqStream'
10
+ import { useDaqStream, type DaqFrameLive } from '@/app/composables/workshop/useDaqStream'
11
11
  import { useDeviceTwins } from '@/app/composables/workshop/useDeviceTwins'
12
12
  import { daqKeyFromRef, DAQ_DRIVERS, type DaqDriverKind, type DaqNodeState, type DriverConfigField, type DriverTestResult as DaqDriverTestResult } from '#shared/daq-protocol'
13
13
 
@@ -42,9 +42,46 @@ onMounted(() => {
42
42
  unsub = daq.ensureWsFeed()
43
43
  void daq.load()
44
44
  void deviceTwins.load()
45
+ if (isFrameNode.value) void loadFrames()
45
46
  })
46
47
  onBeforeUnmount(() => unsub?.())
47
48
 
49
+ // ---------- 帧视图(v2 多形态信号:向量轮廓 / 图像画廊;scalar 节点不渲染) ----------
50
+
51
+ const signalKind = computed(() => tpl.value?.signalKind ?? 'scalar')
52
+ const isFrameNode = computed(() => signalKind.value !== 'scalar')
53
+ const frames = computed(() => daq.framesOf(nodeId.value))
54
+
55
+ async function loadFrames(): Promise<void> {
56
+ if (!nodeId.value) return
57
+ await daq.fetchFrames(nodeId.value, { limit: 24 }).catch(() => {})
58
+ }
59
+ watch(nodeId, () => {
60
+ if (isFrameNode.value) void loadFrames()
61
+ })
62
+
63
+ const timeOf = (at: number): string => new Date(at).toLocaleTimeString('zh-CN', { hour12: false })
64
+ const metricsBrief = (f: DaqFrameLive): string =>
65
+ Object.entries(f.metrics ?? {}).slice(0, 3).map(([k, v]) => `${k}=${v}`).join(' ')
66
+
67
+ /* 向量轮廓(最近一帧预览;SVG polyline,免 canvas 绘制循环) */
68
+ const VEC_W = 320
69
+ const VEC_H = 84
70
+ const latestVector = computed(() => frames.value.find(f => f.kind === 'vector' && f.points?.length))
71
+ const vecPath = computed(() => {
72
+ const pts = latestVector.value?.points ?? []
73
+ if (pts.length < 2) return ''
74
+ const min = Math.min(...pts)
75
+ const max = Math.max(...pts)
76
+ const span = max - min || 1
77
+ return pts
78
+ .map((p, i) => `${((i / (pts.length - 1)) * VEC_W).toFixed(1)},${(VEC_H - 6 - ((p - min) / span) * (VEC_H - 12)).toFixed(1)}`)
79
+ .join(' ')
80
+ })
81
+
82
+ /* 图像大图查看(点击缩略图;contentUrl 同源 cookie 鉴权直出) */
83
+ const fullFrame = ref<DaqFrameLive | null>(null)
84
+
48
85
  /** WS 下发节拍展示(null=跟随全局;0=每帧;>0 独立间隔) */
49
86
  function publishLabel(v: number | null): string {
50
87
  if (v == null) return t('daqDetail.k9vnp9h053', { p0: daq.controller.defaultPublishIntervalMs })
@@ -682,6 +719,97 @@ watch(bucketMs, () => void loadHistory())
682
719
  </table>
683
720
  </section>
684
721
  </div>
722
+
723
+ <!-- 帧视图(v2 多形态信号:向量轮廓 / 图像画廊;scalar 节点不渲染) -->
724
+ <section
725
+ v-if="isFrameNode"
726
+ class="aw-tile pad frames-tile"
727
+ >
728
+ <div class="hist-hd">
729
+ <h3 class="sec">
730
+ {{ signalKind === 'image' ? $t('daqDetail.kfrm0001') : $t('daqDetail.kfrm0002') }}
731
+ <span class="mono frames-n">{{ frames.length }}</span>
732
+ </h3>
733
+ <button
734
+ class="pill-btn"
735
+ @click="loadFrames"
736
+ >
737
+ {{ $t('daqDetail.k3x1jg022') }}
738
+ </button>
739
+ </div>
740
+
741
+ <!-- 向量:最近帧轮廓 + 帧表 -->
742
+ <template v-if="signalKind === 'vector'">
743
+ <svg
744
+ class="vec-svg"
745
+ :viewBox="`0 0 ${VEC_W} ${VEC_H}`"
746
+ preserveAspectRatio="none"
747
+ >
748
+ <polyline
749
+ :points="vecPath"
750
+ fill="none"
751
+ stroke="var(--accent)"
752
+ stroke-width="1.5"
753
+ />
754
+ </svg>
755
+ <table class="raw-table mono">
756
+ <thead>
757
+ <tr><th>{{ $t('daqDetail.k40vsf023') }}</th><th>{{ $t('daqDetail.kfrm0004') }}</th><th>{{ $t('daqDetail.kfrm0005') }}</th></tr>
758
+ </thead>
759
+ <tbody>
760
+ <tr
761
+ v-for="f in frames.filter(x => x.kind === 'vector').slice(0, 12)"
762
+ :key="f.at"
763
+ >
764
+ <td>{{ timeOf(f.at) }}</td>
765
+ <td>{{ f.points?.length ?? 0 }}</td>
766
+ <td>{{ metricsBrief(f) }}</td>
767
+ </tr>
768
+ </tbody>
769
+ </table>
770
+ </template>
771
+
772
+ <!-- 图像:缩略图画gallery(懒加载;点击看原图) -->
773
+ <template v-else>
774
+ <div
775
+ v-if="frames.length"
776
+ class="gal"
777
+ >
778
+ <figure
779
+ v-for="f in frames"
780
+ :key="f.at"
781
+ class="gal-item"
782
+ :title="$t('daqDetail.kfrm0006')"
783
+ @click="fullFrame = f"
784
+ >
785
+ <img
786
+ :src="f.thumbUrl"
787
+ loading="lazy"
788
+ alt="daq frame"
789
+ >
790
+ <figcaption class="mono">
791
+ {{ timeOf(f.at) }} · {{ metricsBrief(f) }}
792
+ </figcaption>
793
+ </figure>
794
+ </div>
795
+ <p
796
+ v-else
797
+ class="frames-empty"
798
+ >
799
+ {{ $t('daqDetail.kfrm0003') }}
800
+ </p>
801
+ <div
802
+ v-if="fullFrame"
803
+ class="gal-full"
804
+ @click="fullFrame = null"
805
+ >
806
+ <img
807
+ :src="fullFrame.contentUrl ?? fullFrame.thumbUrl"
808
+ alt="daq frame full"
809
+ >
810
+ </div>
811
+ </template>
812
+ </section>
685
813
  </div>
686
814
  </template>
687
815
 
@@ -793,4 +921,16 @@ watch(bucketMs, () => void loadHistory())
793
921
  .st-pill.warn { color: var(--tone-warning-dot); background: var(--tone-warning-bg); }
794
922
  .st-pill.alarm { color: var(--tone-danger-dot); background: var(--tone-danger-bg); }
795
923
  .st-pill.offline { color: var(--tone-neutral-dot); background: var(--tone-neutral-bg); }
924
+
925
+ /* 帧视图(v2 多形态) */
926
+ .frames-tile { margin-top: 14px; }
927
+ .frames-n { margin-left: 8px; color: var(--ink-faint); }
928
+ .vec-svg { width: 100%; height: 96px; display: block; background: var(--tone-neutral-bg); border-radius: 6px; margin-bottom: 10px; }
929
+ .gal { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
930
+ .gal-item { margin: 0; cursor: zoom-in; }
931
+ .gal-item img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 6px; display: block; background: var(--tone-neutral-bg); }
932
+ .gal-item figcaption { margin-top: 4px; font-size: 11px; color: var(--ink-faint); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
933
+ .frames-empty { margin: 8px 0; font-size: 13px; color: var(--ink-faint); }
934
+ .gal-full { position: fixed; inset: 0; z-index: 60; display: flex; align-items: center; justify-content: center; background: rgb(0 0 0 / 72%); cursor: zoom-out; }
935
+ .gal-full img { max-width: 92vw; max-height: 92vh; border-radius: 8px; }
796
936
  </style>
@@ -22,7 +22,9 @@ function syncRuntimeDraft() {
22
22
  draft.value = { ...rcStore.effective }
23
23
  dirtyKeys.value = new Set()
24
24
  }
25
- watch(() => rcStore.loaded, (v) => { if (v) syncRuntimeDraft() })
25
+ watch(() => rcStore.loaded, (v) => {
26
+ if (v) syncRuntimeDraft()
27
+ })
26
28
  watch(() => rcStore.effective, () => {
27
29
  // 外部写入(CLI/其他窗口/文件监听)推来的变化,未编辑时才回填草稿
28
30
  if (dirtyKeys.value.size === 0) syncRuntimeDraft()
@@ -47,7 +49,7 @@ async function saveRuntime() {
47
49
  ? { type: 'warning', text: t('settings.runtime.restartNotice', { keys: restart.join(', ') }) }
48
50
  : { type: 'success', text: t('settings.runtime.savedLive') }
49
51
  }
50
- catch (e: any) {
52
+ catch (e) {
51
53
  runtimeNotice.value = { type: 'error', text: e?.response?.data?.message || e?.message || String(e) }
52
54
  }
53
55
  finally {
@@ -61,7 +63,7 @@ async function resetRuntimeKey(key: string) {
61
63
  syncRuntimeDraft()
62
64
  runtimeNotice.value = { type: 'success', text: t('settings.runtime.keyReset', { key }) }
63
65
  }
64
- catch (e: any) {
66
+ catch (e) {
65
67
  runtimeNotice.value = { type: 'error', text: e?.response?.data?.message || e?.message || String(e) }
66
68
  }
67
69
  }
@@ -72,7 +74,7 @@ async function resetAllRuntime() {
72
74
  syncRuntimeDraft()
73
75
  runtimeNotice.value = { type: 'success', text: t('settings.runtime.resetAllDone') }
74
76
  }
75
- catch (e: any) {
77
+ catch (e) {
76
78
  runtimeNotice.value = { type: 'error', text: e?.response?.data?.message || e?.message || String(e) }
77
79
  }
78
80
  }
@@ -279,7 +281,10 @@ const tabs = computed(() => [
279
281
  :message="runtimeNotice.text"
280
282
  />
281
283
 
282
- <template v-for="g in rcStore.groups" :key="g.group">
284
+ <template
285
+ v-for="g in rcStore.groups"
286
+ :key="g.group"
287
+ >
283
288
  <h4 class="rt-group-title">
284
289
  {{ groupLabel(g.group) }}
285
290
  </h4>
@@ -1,65 +1,65 @@
1
- /**
2
- * 运行时配置客户端插件 —— 设置热重载落地层。
3
- * - 启动:拉取服务端设置快照 → 订阅 SSE(UI/CLI/文件任意写入实时同步)
4
- * - live 应用:标题、主题模式、主题色、默认语言随有效值变化即时生效
5
- * · 主题模式/主题色仅当用户未在设置页手动覆盖时跟随(用户本地偏好优先)
6
- */
7
- import { useRuntimeConfigStore } from '~/stores/runtime-config'
8
- import { useAppStore } from '~/stores/app'
9
-
10
- export default defineNuxtPlugin(() => {
11
- if (!import.meta.client) return
12
- const store = useRuntimeConfigStore()
13
- const appStore = useAppStore()
14
-
15
- let darkTouched = false
16
- let lastDarkFromRuntime: boolean | null = null
17
-
18
- // 用户手动切换过暗色后,禁止运行时主题覆盖(尊重本地偏好)
19
- watch(
20
- () => appStore.isDark,
21
- (v) => {
22
- if (lastDarkFromRuntime !== null && v !== lastDarkFromRuntime) darkTouched = true
23
- },
24
- )
25
-
26
- // 主题模式:runtime 默认 → 应用首次暗态(仅当用户未手动切换)
27
- watch(
28
- () => store.effective['theme.mode'],
29
- (v) => {
30
- if (v !== 'light' && v !== 'dark') return
31
- if (darkTouched) return
32
- const target = v === 'dark'
33
- lastDarkFromRuntime = target
34
- if (appStore.isDark !== target) appStore.isDark = target
35
- },
36
- { immediate: true },
37
- )
38
-
39
- // 标题:实时反映 app.title
40
- watch(
41
- () => store.effective['app.title'],
42
- (v, old) => {
43
- if (typeof v === 'string' && v && v !== old) document.title = v
44
- },
45
- { immediate: true },
46
- )
47
-
48
- // 主题色:app.vue 的 accentBase 优先读 store.accent 本地偏好,
49
- // 其次 runtime 有效主题色 —— 这里仅需保证 store 已填充即可(app.vue 计算属性实时跟随)
50
- void store.fetchAll().catch(() => {})
51
- store.startEvents()
52
-
53
- // i18n 默认语言:仅当用户未在本地选择过语言时跟随 runtime 默认
54
- const LOCAL_LOCALE_KEY = 'aw.locale'
55
- try {
56
- if (!window.localStorage.getItem(LOCAL_LOCALE_KEY)) {
57
- const locale = store.effective['i18n.defaultLocale']
58
- if (locale === 'zh-CN' || locale === 'en') {
59
- const { setLocale } = useI18n()
60
- void setLocale(locale)
61
- }
62
- }
63
- }
64
- catch { /* localStorage 不可用则跳过 */ }
65
- })
1
+ /**
2
+ * 运行时配置客户端插件 —— 设置热重载落地层。
3
+ * - 启动:拉取服务端设置快照 → 订阅 SSE(UI/CLI/文件任意写入实时同步)
4
+ * - live 应用:标题、主题模式、主题色、默认语言随有效值变化即时生效
5
+ * · 主题模式/主题色仅当用户未在设置页手动覆盖时跟随(用户本地偏好优先)
6
+ */
7
+ import { useRuntimeConfigStore } from '~/stores/runtime-config'
8
+ import { useAppStore } from '~/stores/app'
9
+
10
+ export default defineNuxtPlugin(() => {
11
+ if (!import.meta.client) return
12
+ const store = useRuntimeConfigStore()
13
+ const appStore = useAppStore()
14
+
15
+ let darkTouched = false
16
+ let lastDarkFromRuntime: boolean | null = null
17
+
18
+ // 用户手动切换过暗色后,禁止运行时主题覆盖(尊重本地偏好)
19
+ watch(
20
+ () => appStore.isDark,
21
+ (v) => {
22
+ if (lastDarkFromRuntime !== null && v !== lastDarkFromRuntime) darkTouched = true
23
+ },
24
+ )
25
+
26
+ // 主题模式:runtime 默认 → 应用首次暗态(仅当用户未手动切换)
27
+ watch(
28
+ () => store.effective['theme.mode'],
29
+ (v) => {
30
+ if (v !== 'light' && v !== 'dark') return
31
+ if (darkTouched) return
32
+ const target = v === 'dark'
33
+ lastDarkFromRuntime = target
34
+ if (appStore.isDark !== target) appStore.isDark = target
35
+ },
36
+ { immediate: true },
37
+ )
38
+
39
+ // 标题:实时反映 app.title
40
+ watch(
41
+ () => store.effective['app.title'],
42
+ (v, old) => {
43
+ if (typeof v === 'string' && v && v !== old) document.title = v
44
+ },
45
+ { immediate: true },
46
+ )
47
+
48
+ // 主题色:app.vue 的 accentBase 优先读 store.accent 本地偏好,
49
+ // 其次 runtime 有效主题色 —— 这里仅需保证 store 已填充即可(app.vue 计算属性实时跟随)
50
+ void store.fetchAll().catch(() => {})
51
+ store.startEvents()
52
+
53
+ // i18n 默认语言:仅当用户未在本地选择过语言时跟随 runtime 默认
54
+ const LOCAL_LOCALE_KEY = 'aw.locale'
55
+ try {
56
+ if (!window.localStorage.getItem(LOCAL_LOCALE_KEY)) {
57
+ const locale = store.effective['i18n.defaultLocale']
58
+ if (locale === 'zh-CN' || locale === 'en') {
59
+ const { setLocale } = useI18n()
60
+ void setLocale(locale)
61
+ }
62
+ }
63
+ }
64
+ catch { /* localStorage 不可用则跳过 */ }
65
+ })