agentworkshop 0.7.8 → 0.7.11

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 (627) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/-6OnbLFb.js +1 -0
  3. package/.output/public/_nuxt/{BUxYN2mw.js → -nb2uqVg.js} +1 -1
  4. package/.output/public/_nuxt/6vYobj4F.js +1 -0
  5. package/.output/public/_nuxt/{BSXx2vqR.js → B-xskWta.js} +1 -1
  6. package/.output/public/_nuxt/B3Psw_sL.js +1 -0
  7. package/.output/public/_nuxt/B53Mp7lD.js +1 -0
  8. package/.output/public/_nuxt/B5CYgFAD.js +14 -0
  9. package/.output/public/_nuxt/{uBbDCfTz.js → B5S_UyaC.js} +1 -1
  10. package/.output/public/_nuxt/{DZk24ego.js → B7wL3pDk.js} +1 -1
  11. package/.output/public/_nuxt/B8WV7GzS.js +1 -0
  12. package/.output/public/_nuxt/{BYL0Rjqj.js → BBwMH_hG.js} +3 -3
  13. package/.output/public/_nuxt/BLzCac9K2.js +1 -0
  14. package/.output/public/_nuxt/BNXfwXpE.js +1 -0
  15. package/.output/public/_nuxt/{VnIWJ0ts.js → BN_PdN3J.js} +1 -1
  16. package/.output/public/_nuxt/BZGNTgTQ2.js +1 -0
  17. package/.output/public/_nuxt/BbZAzXjZ2.js +1 -0
  18. package/.output/public/_nuxt/Bc3PiGGr.js +1 -0
  19. package/.output/public/_nuxt/Bckshc9V.js +1 -0
  20. package/.output/public/_nuxt/BcrN7QEl2.js +1 -0
  21. package/.output/public/_nuxt/BgOhoDTI.js +1 -0
  22. package/.output/public/_nuxt/Bmpvki7M.js +1 -0
  23. package/.output/public/_nuxt/{BkfchkK62.js → Bp5luxkg2.js} +1 -1
  24. package/.output/public/_nuxt/BxPPAkGA.js +3 -0
  25. package/.output/public/_nuxt/{C8dxXc6K.js → BxtpDtzC.js} +1 -1
  26. package/.output/public/_nuxt/{pRQri7vQ2.js → BytVi9VX2.js} +1 -1
  27. package/.output/public/_nuxt/{D5KJ7_0V.js → C3tCneTM.js} +1 -1
  28. package/.output/public/_nuxt/{C_gFA2H_2.js → C4OAdbVK2.js} +1 -1
  29. package/.output/public/_nuxt/C6m-kenn.js +1 -0
  30. package/.output/public/_nuxt/{zwdqvGN_.js → CGx-mtWf.js} +1 -1
  31. package/.output/public/_nuxt/{DCXIGxzT.js → CKfhtOt7.js} +2 -2
  32. package/.output/public/_nuxt/{ChEKFMxj.js → CUXCQXjG.js} +1 -1
  33. package/.output/public/_nuxt/CfVAr2nf.js +1 -0
  34. package/.output/public/_nuxt/Cj6139IM.js +1 -0
  35. package/.output/public/_nuxt/{DM8DS9MA.js → Cor9siSf.js} +1 -1
  36. package/.output/public/_nuxt/{BsMpJf7S.js → D-Ca4BGY.js} +6 -6
  37. package/.output/public/_nuxt/{CsCpu2Zh.js → D1z7i2UP.js} +1 -1
  38. package/.output/public/_nuxt/D7jiode2.js +1 -0
  39. package/.output/public/_nuxt/D8CqF0yy.js +1 -0
  40. package/.output/public/_nuxt/{DYZBdSSg2.js → DA4lxCWC2.js} +1 -1
  41. package/.output/public/_nuxt/DEaY_uvR.js +1 -0
  42. package/.output/public/_nuxt/{DCEyMaN-.js → DNxVTfhe.js} +3 -3
  43. package/.output/public/_nuxt/DT-Wg8r1.js +1 -0
  44. package/.output/public/_nuxt/DTYBfjRY.js +1 -0
  45. package/.output/public/_nuxt/{fQUs58kX2.js → DWcEk1ur2.js} +1 -1
  46. package/.output/public/_nuxt/DXRZPxGs.js +1 -0
  47. package/.output/public/_nuxt/Dhqra7NB.js +1 -0
  48. package/.output/public/_nuxt/DlRO_q5L.js +1 -0
  49. package/.output/public/_nuxt/{C2iWjzEC2.js → DoLasgPj2.js} +1 -1
  50. package/.output/public/_nuxt/{DRq09ZmT.js → DpojD719.js} +1 -1
  51. package/.output/public/_nuxt/Ds8JbqGB.js +1 -0
  52. package/.output/public/_nuxt/{BCipft_k2.js → DsUUYP292.js} +1 -1
  53. package/.output/public/_nuxt/DtBu71ev.js +32 -0
  54. package/.output/public/_nuxt/Dy-mxvXY2.js +1 -0
  55. package/.output/public/_nuxt/DyisHHzD.js +18 -0
  56. package/.output/public/_nuxt/G0qIw7Gq2.js +1 -0
  57. package/.output/public/_nuxt/ORt9oDIy2.js +1 -0
  58. package/.output/public/_nuxt/QoCzfpo2.js +1 -0
  59. package/.output/public/_nuxt/RzXYI9FM.js +23 -0
  60. package/.output/public/_nuxt/TownView.BHLKAjEu.css +1 -0
  61. package/.output/public/_nuxt/VLI2Zy4t.js +5 -0
  62. package/.output/public/_nuxt/_id_.DIxEKj88.css +1 -0
  63. package/.output/public/_nuxt/_id_.DTvjd6VN.css +1 -0
  64. package/.output/public/_nuxt/{_wsId_.COUzMXpP.css → _wsId_.BFyCuUwS.css} +1 -1
  65. package/.output/public/_nuxt/agents.CEbox5-D.css +1 -0
  66. package/.output/public/_nuxt/{ZugRk0CM2.js → arUY5dyq2.js} +2 -2
  67. package/.output/public/_nuxt/builds/latest.json +1 -1
  68. package/.output/public/_nuxt/builds/meta/88479a5b-ce6a-400f-9737-1cc9f54b1fe5.json +1 -0
  69. package/.output/public/_nuxt/channel-templates.De5ZvrGz.css +1 -0
  70. package/.output/public/_nuxt/d_Sz9KGm.js +1 -0
  71. package/.output/public/_nuxt/daq.6IrhVVfy.css +1 -0
  72. package/.output/public/_nuxt/dcw.DcDjwvqv.css +1 -0
  73. package/.output/public/_nuxt/default.BbgdTDCk.css +1 -0
  74. package/.output/public/_nuxt/{CblLEiCZ.js → eHYnGew0.js} +3 -3
  75. package/.output/public/_nuxt/eUGyJdiT.js +1 -0
  76. package/.output/public/_nuxt/{entry.5qf6EqfN.css → entry.B03HBJGC.css} +1 -1
  77. package/.output/public/_nuxt/{Cyk3du4K2.js → kZV5TQvh2.js} +1 -1
  78. package/.output/public/_nuxt/kkEthL84.js +2 -0
  79. package/.output/public/_nuxt/logs.BO-BSyjm.css +1 -0
  80. package/.output/public/_nuxt/{D4qXvjuV.js → niDwBOZW.js} +2 -2
  81. package/.output/public/_nuxt/permissions.CwZo6t1V.css +1 -0
  82. package/.output/public/_nuxt/plugins.Clsky_kl.css +1 -0
  83. package/.output/public/_nuxt/rqZ-1SoP.js +2 -0
  84. package/.output/public/_nuxt/settings.BqMF2nfj.css +1 -0
  85. package/.output/public/_nuxt/tJuVvBSl.js +1 -0
  86. package/.output/public/_nuxt/teams.CUMnbQGf.css +1 -0
  87. package/.output/public/_nuxt/tokens.BPLe9ioQ.css +1 -0
  88. package/.output/public/_nuxt/{Bi6AiCuP.js → vJ4FPb-_.js} +1 -1
  89. package/.output/public/_nuxt/workshop.BIdoGfoC.css +1 -0
  90. package/.output/public/_nuxt/{B7aqqzkY.js → zVkqCZ78.js} +1 -1
  91. package/.output/server/chunks/_/LeftOutlined.mjs +1 -1
  92. package/.output/server/chunks/_/SearchOutlined.mjs +1 -1
  93. package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
  94. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  95. package/.output/server/chunks/_/nitro.mjs +1614 -1279
  96. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  97. package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
  98. package/.output/server/chunks/build/Col-biaNnEPf.mjs +1 -1
  99. package/.output/server/chunks/build/{OmpTerminalPanel-COphA1br.mjs → OmpTerminalPanel-Ban3yJZ4.mjs} +4 -5
  100. package/.output/server/chunks/build/OmpTerminalPanel-Ban3yJZ4.mjs.map +1 -0
  101. package/.output/server/chunks/build/{TownView-B5KifIaT.mjs → TownView-CunmEMzS.mjs} +184 -184
  102. package/.output/server/chunks/build/{TownView-B5KifIaT.mjs.map → TownView-CunmEMzS.mjs.map} +1 -1
  103. package/.output/server/chunks/build/{_id_-Ct4Jhvl1.mjs → _id_-CVnMdSeG.mjs} +38 -37
  104. package/.output/server/chunks/build/_id_-CVnMdSeG.mjs.map +1 -0
  105. package/.output/server/chunks/build/{_id_-C-ewLgfl.mjs → _id_-D265Wh_k.mjs} +127 -126
  106. package/.output/server/chunks/build/_id_-D265Wh_k.mjs.map +1 -0
  107. package/.output/server/chunks/build/{_wsId_-CanI_6Su.mjs → _wsId_-eNJmBp05.mjs} +137 -136
  108. package/.output/server/chunks/build/{_wsId_-CanI_6Su.mjs.map → _wsId_-eNJmBp05.mjs.map} +1 -1
  109. package/.output/server/chunks/build/{agents-DSOptxXA.mjs → agents-B10wmFri.mjs} +24 -23
  110. package/.output/server/chunks/build/agents-B10wmFri.mjs.map +1 -0
  111. package/.output/server/chunks/build/alert-qJnjyRcP.mjs +1 -1
  112. package/.output/server/chunks/build/api-error-dul30BYQ.mjs +47 -0
  113. package/.output/server/chunks/build/api-error-dul30BYQ.mjs.map +1 -0
  114. package/.output/server/chunks/build/button-DEcZFcqN.mjs +2 -2
  115. package/.output/server/chunks/build/{card-Dipvaykh.mjs → card-CCPQoKlh.mjs} +4 -4
  116. package/.output/server/chunks/build/{card-Dipvaykh.mjs.map → card-CCPQoKlh.mjs.map} +1 -1
  117. package/.output/server/chunks/build/{channel-templates-BK0KuPOd.mjs → channel-templates-CpWxVk5A.mjs} +29 -28
  118. package/.output/server/chunks/build/channel-templates-CpWxVk5A.mjs.map +1 -0
  119. package/.output/server/chunks/build/{checkbox-dzcpU_Cd.mjs → checkbox-Dv1kjaUZ.mjs} +3 -3
  120. package/.output/server/chunks/build/{checkbox-dzcpU_Cd.mjs.map → checkbox-Dv1kjaUZ.mjs.map} +1 -1
  121. package/.output/server/chunks/build/client-only-D5BzSQc6.mjs +1 -1
  122. package/.output/server/chunks/build/{daq-D9RA_uze.mjs → daq-DxaXk_8N.mjs} +114 -114
  123. package/.output/server/chunks/build/daq-DxaXk_8N.mjs.map +1 -0
  124. package/.output/server/chunks/build/{dcw-BTM5YU-B.mjs → dcw-DqjHrl5Z.mjs} +48 -47
  125. package/.output/server/chunks/build/dcw-DqjHrl5Z.mjs.map +1 -0
  126. package/.output/server/chunks/build/{default-BfWGTlbj.mjs → default-YcUHc1Ev.mjs} +34 -26
  127. package/.output/server/chunks/build/{default-BfWGTlbj.mjs.map → default-YcUHc1Ev.mjs.map} +1 -1
  128. package/.output/server/chunks/build/drawer-Cmh90erI.mjs +1 -1
  129. package/.output/server/chunks/build/dropdown-vhn1NPFs.mjs +2 -2
  130. package/.output/server/chunks/build/hasIn-vQ9LWt-J.mjs +554 -0
  131. package/.output/server/chunks/build/hasIn-vQ9LWt-J.mjs.map +1 -0
  132. package/.output/server/chunks/build/initDefaultProps-DIbWwP4R.mjs +1 -1
  133. package/.output/server/chunks/build/{input-sf_BT6o6.mjs → input-DxDqeyQW.mjs} +5 -553
  134. package/.output/server/chunks/build/input-DxDqeyQW.mjs.map +1 -0
  135. package/.output/server/chunks/build/{input-number-Bd55elNN.mjs → input-number-CZ3ZrCsy.mjs} +3 -3
  136. package/.output/server/chunks/build/{input-number-Bd55elNN.mjs.map → input-number-CZ3ZrCsy.mjs.map} +1 -1
  137. package/.output/server/chunks/build/{logs-Dyk0I2I9.mjs → logs-Co854R4y.mjs} +40 -40
  138. package/.output/server/chunks/build/{logs-Dyk0I2I9.mjs.map → logs-Co854R4y.mjs.map} +1 -1
  139. package/.output/server/chunks/build/menu-WCrlpYVh.mjs +2 -2
  140. package/.output/server/chunks/build/modal-yvUquPj5.mjs +2 -2
  141. package/.output/server/chunks/build/{monitor-MIOvsyLa.mjs → monitor-miqq9xHB.mjs} +11 -11
  142. package/.output/server/chunks/build/{monitor-MIOvsyLa.mjs.map → monitor-miqq9xHB.mjs.map} +1 -1
  143. package/.output/server/chunks/build/{pages-DR2bzczM.mjs → pages-DPC1Vp6w.mjs} +6 -5
  144. package/.output/server/chunks/build/pages-DPC1Vp6w.mjs.map +1 -0
  145. package/.output/server/chunks/build/permissions-Eu9e6hfZ.mjs +534 -0
  146. package/.output/server/chunks/build/permissions-Eu9e6hfZ.mjs.map +1 -0
  147. package/.output/server/chunks/build/{plugins-DnOBIWGg.mjs → plugins-D84mvK9G.mjs} +27 -25
  148. package/.output/server/chunks/build/plugins-D84mvK9G.mjs.map +1 -0
  149. package/.output/server/chunks/build/popconfirm-CRaHcz5O.mjs +2 -2
  150. package/.output/server/chunks/build/responsiveObserve-CS0UB6wQ.mjs +1 -1
  151. package/.output/server/chunks/build/{segmented-DPe9ZzLO.mjs → segmented-ChmQZwz6.mjs} +5 -4
  152. package/.output/server/chunks/build/{segmented-DPe9ZzLO.mjs.map → segmented-ChmQZwz6.mjs.map} +1 -1
  153. package/.output/server/chunks/build/select-D-CeE5vY.mjs +1 -1
  154. package/.output/server/chunks/build/{settings-DA8IkGLo.mjs → settings-BPBll_7K.mjs} +28 -26
  155. package/.output/server/chunks/build/settings-BPBll_7K.mjs.map +1 -0
  156. package/.output/server/chunks/build/space-CCBYAkXt.mjs +2 -2
  157. package/.output/server/chunks/build/spin-HVY81X_L.mjs +1 -1
  158. package/.output/server/chunks/build/switch-CelRXpcy.mjs +2 -2
  159. package/.output/server/chunks/build/{table-Cswq-l2r.mjs → table-BtksyDlQ.mjs} +5 -5
  160. package/.output/server/chunks/build/{table-Cswq-l2r.mjs.map → table-BtksyDlQ.mjs.map} +1 -1
  161. package/.output/server/chunks/build/{tabs-BM3tAh_J.mjs → tabs-DQv-_-R6.mjs} +3 -3
  162. package/.output/server/chunks/build/{tabs-BM3tAh_J.mjs.map → tabs-DQv-_-R6.mjs.map} +1 -1
  163. package/.output/server/chunks/build/{tag-NO9jEqKy.mjs → tag-A0tZ2Ouq.mjs} +4 -4
  164. package/.output/server/chunks/build/{tag-NO9jEqKy.mjs.map → tag-A0tZ2Ouq.mjs.map} +1 -1
  165. package/.output/server/chunks/build/{teams-BhSKBBBM.mjs → teams-CNflUtPh.mjs} +25 -24
  166. package/.output/server/chunks/build/teams-CNflUtPh.mjs.map +1 -0
  167. package/.output/server/chunks/build/{tokens-D_eyxmcv.mjs → tokens-CZpnEDVf.mjs} +27 -26
  168. package/.output/server/chunks/build/tokens-CZpnEDVf.mjs.map +1 -0
  169. package/.output/server/chunks/build/town-BUqRobze.mjs +1 -1
  170. package/.output/server/chunks/build/{town-DPtOPRRO.mjs → town-BbaR-8io.mjs} +10 -10
  171. package/.output/server/chunks/build/{town-DPtOPRRO.mjs.map → town-BbaR-8io.mjs.map} +1 -1
  172. package/.output/server/chunks/build/{useDaqStream-hwkhJHFU.mjs → useDaqStream-BkmyQT06.mjs} +36 -24
  173. package/.output/server/chunks/build/useDaqStream-BkmyQT06.mjs.map +1 -0
  174. package/.output/server/chunks/build/{useDcwStream-Bdew_yrr.mjs → useDcwStream-DWVoU96J.mjs} +63 -48
  175. package/.output/server/chunks/build/useDcwStream-DWVoU96J.mjs.map +1 -0
  176. package/.output/server/chunks/build/{useDeviceTwins-C6EBg9oN.mjs → useDeviceTwins-34WGk9aN.mjs} +4 -3
  177. package/.output/server/chunks/build/useDeviceTwins-34WGk9aN.mjs.map +1 -0
  178. package/.output/server/chunks/build/useLocalTime-9a4B-aHv.mjs +1 -1
  179. package/.output/server/chunks/build/{useOpsLog-DdCqKVVG.mjs → useOpsLog-C9zTzYof.mjs} +30 -17
  180. package/.output/server/chunks/build/useOpsLog-C9zTzYof.mjs.map +1 -0
  181. package/.output/server/chunks/build/useSiteConfig-DJe_KMVr.mjs +1 -1
  182. package/.output/server/chunks/build/useWorkshopApi-D2gq06N2.mjs +1 -1
  183. package/.output/server/chunks/build/{useWorkshopWs-B3j5wIAK.mjs → useWorkshopWs-CprkZEdq.mjs} +2 -3
  184. package/.output/server/chunks/build/useWorkshopWs-CprkZEdq.mjs.map +1 -0
  185. package/.output/server/chunks/build/{users-CmVvb1oq.mjs → users-D6RNylrW.mjs} +10 -10
  186. package/.output/server/chunks/build/{users-CmVvb1oq.mjs.map → users-D6RNylrW.mjs.map} +1 -1
  187. package/.output/server/chunks/build/{workshop-D5CQj2A8.mjs → workshop-Crsai2Y9.mjs} +27 -26
  188. package/.output/server/chunks/build/workshop-Crsai2Y9.mjs.map +1 -0
  189. package/.output/server/chunks/build/{workspaces-IfORCDJE.mjs → workspaces-BuydxM-3.mjs} +2 -3
  190. package/.output/server/chunks/build/workspaces-BuydxM-3.mjs.map +1 -0
  191. package/.output/server/chunks/routes/api/health.get.mjs +1 -1
  192. package/.output/server/chunks/routes/api/index.get.mjs +1 -1
  193. package/.output/server/chunks/routes/api/index.post.mjs +1 -1
  194. package/.output/server/chunks/routes/api/mcp/workshop.mjs +1 -1
  195. package/.output/server/chunks/routes/api/metrics.mjs +1 -1
  196. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +1 -1
  197. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +1 -1
  198. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +1 -1
  199. package/.output/server/chunks/routes/api/system/config.get.mjs +1 -1
  200. package/.output/server/chunks/routes/api/system/index.get.mjs +1 -1
  201. package/.output/server/chunks/routes/api/system/index.patch.mjs +1 -1
  202. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +1 -1
  203. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +1 -1
  204. package/.output/server/chunks/routes/api/system/monitor.get.mjs +1 -1
  205. package/.output/server/chunks/routes/api/system/settings/events.get.mjs +1 -1
  206. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +1 -1
  207. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +1 -1
  208. package/.output/server/chunks/routes/api/users/_id_.get.mjs +1 -1
  209. package/.output/server/chunks/routes/api/users/_id_.put.mjs +1 -1
  210. package/.output/server/chunks/routes/api/users/index.get.mjs +1 -1
  211. package/.output/server/chunks/routes/api/users/index.post.mjs +1 -1
  212. package/.output/server/chunks/routes/api/users/login.post.mjs +1 -1
  213. package/.output/server/chunks/routes/api/users/logout.post.mjs +1 -1
  214. package/.output/server/chunks/routes/api/users/me.get.mjs +1 -1
  215. package/.output/server/chunks/routes/api/users/register.post.mjs +1 -1
  216. package/.output/server/chunks/routes/api/users/setup-status.get.mjs +1 -1
  217. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +1 -1
  218. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +1 -1
  219. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +1 -1
  220. package/.output/server/chunks/routes/api/workshop/_...path_.mjs +1 -1
  221. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +1 -1
  222. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +1 -1
  223. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +1 -1
  224. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +1 -1
  225. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +1 -1
  226. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +1 -1
  227. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +1 -1
  228. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +19 -8
  229. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
  230. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +1 -1
  231. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +2 -2
  232. package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +2 -2
  233. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +1 -1
  234. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +1 -1
  235. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +1 -1
  236. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +1 -1
  237. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +1 -1
  238. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +1 -1
  239. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +1 -1
  240. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +1 -1
  241. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +2 -2
  242. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +1 -1
  243. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +2 -2
  244. package/.output/server/chunks/routes/api/workshop/audit.get.mjs +1 -1
  245. package/.output/server/chunks/routes/api/workshop/caller.mjs +1 -1
  246. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +3 -3
  247. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +1 -1
  248. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +1 -1
  249. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +1 -1
  250. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +1 -1
  251. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +2 -2
  252. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +1 -1
  253. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +1 -1
  254. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +1 -1
  255. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +1 -1
  256. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +1 -1
  257. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +1 -1
  258. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +1 -1
  259. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +1 -1
  260. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +1 -1
  261. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +1 -1
  262. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +1 -1
  263. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +1 -1
  264. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +2 -2
  265. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +1 -1
  266. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +1 -1
  267. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +1 -1
  268. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +1 -1
  269. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +1 -1
  270. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +1 -1
  271. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +1 -1
  272. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +1 -1
  273. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +2 -2
  274. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +1 -1
  275. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +2 -2
  276. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +1 -1
  277. package/.output/server/chunks/routes/api/workshop/channels.get.mjs +1 -1
  278. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +3 -3
  279. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +7 -6
  280. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs.map +1 -1
  281. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +5 -4
  282. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs.map +1 -1
  283. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +5 -4
  284. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs.map +1 -1
  285. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +5 -4
  286. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs.map +1 -1
  287. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +2 -2
  288. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +2 -2
  289. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +5 -4
  290. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs.map +1 -1
  291. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +5 -2
  292. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs.map +1 -1
  293. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +2 -2
  294. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +3 -2
  295. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs.map +1 -1
  296. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +2 -2
  297. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +2 -2
  298. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +2 -2
  299. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +2 -2
  300. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +2 -2
  301. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +2 -2
  302. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +7 -6
  303. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs.map +1 -1
  304. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +2 -2
  305. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +2 -2
  306. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +5 -4
  307. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs.map +1 -1
  308. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +4 -3
  309. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs.map +1 -1
  310. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +2 -2
  311. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +2 -2
  312. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +2 -2
  313. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +2 -2
  314. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +4 -4
  315. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs.map +1 -1
  316. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +8 -4
  317. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs.map +1 -1
  318. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +4 -4
  319. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs.map +1 -1
  320. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +2 -2
  321. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +2 -2
  322. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +2 -2
  323. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +2 -2
  324. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +4 -4
  325. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs.map +1 -1
  326. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +2 -2
  327. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +7 -3
  328. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs.map +1 -1
  329. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +3 -2
  330. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs.map +1 -1
  331. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +3 -2
  332. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs.map +1 -1
  333. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +2 -2
  334. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +2 -2
  335. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +2 -2
  336. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +2 -2
  337. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +2 -2
  338. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +2 -2
  339. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +2 -2
  340. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +2 -2
  341. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +2 -2
  342. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +2 -2
  343. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +2 -2
  344. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +2 -2
  345. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.patch.mjs +2 -2
  346. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +2 -2
  347. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +5 -3
  348. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs.map +1 -1
  349. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +2 -2
  350. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +2 -2
  351. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +2 -2
  352. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +2 -2
  353. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +1 -1
  354. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +1 -1
  355. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +2 -2
  356. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +2 -2
  357. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +1 -1
  358. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +2 -2
  359. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +2 -2
  360. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +2 -2
  361. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +2 -2
  362. package/.output/server/chunks/routes/api/workshop/index.get.mjs +1 -1
  363. package/.output/server/chunks/routes/api/workshop/index.post.mjs +1 -1
  364. package/.output/server/chunks/routes/api/workshop/index.put.mjs +41 -0
  365. package/.output/server/chunks/routes/api/workshop/index.put.mjs.map +1 -0
  366. package/.output/server/chunks/routes/api/workshop/index10.get.mjs +4 -3
  367. package/.output/server/chunks/routes/api/workshop/index10.get.mjs.map +1 -1
  368. package/.output/server/chunks/routes/api/workshop/index11.get.mjs +27 -0
  369. package/.output/server/chunks/routes/api/workshop/index11.get.mjs.map +1 -0
  370. package/.output/server/chunks/routes/api/workshop/index2.get.mjs +1 -1
  371. package/.output/server/chunks/routes/api/workshop/index2.post.mjs +1 -1
  372. package/.output/server/chunks/routes/api/workshop/index3.get.mjs +1 -1
  373. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +4 -4
  374. package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
  375. package/.output/server/chunks/routes/api/workshop/index4.get.mjs +5 -4
  376. package/.output/server/chunks/routes/api/workshop/index4.get.mjs.map +1 -1
  377. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +2 -2
  378. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +18 -11
  379. package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
  380. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +2 -2
  381. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +1 -1
  382. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +2 -2
  383. package/.output/server/chunks/routes/api/workshop/index7.get.mjs +1 -1
  384. package/.output/server/chunks/routes/api/workshop/index7.post.mjs +1 -1
  385. package/.output/server/chunks/routes/api/workshop/index8.get.mjs +24 -12
  386. package/.output/server/chunks/routes/api/workshop/index8.get.mjs.map +1 -1
  387. package/.output/server/chunks/routes/api/workshop/index8.post.mjs +1 -1
  388. package/.output/server/chunks/routes/api/workshop/index9.get.mjs +12 -7
  389. package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
  390. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +1 -1
  391. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +1 -1
  392. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +1 -1
  393. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +4 -4
  394. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs.map +1 -1
  395. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +4 -4
  396. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs.map +1 -1
  397. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +1 -1
  398. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +1 -1
  399. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +2 -2
  400. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +2 -2
  401. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +1 -1
  402. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +1 -1
  403. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +1 -1
  404. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +1 -1
  405. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +1 -1
  406. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +1 -1
  407. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +1 -1
  408. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +1 -1
  409. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +2 -2
  410. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +1 -1
  411. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +1 -1
  412. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +1 -1
  413. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +1 -1
  414. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +1 -1
  415. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +1 -1
  416. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +1 -1
  417. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +1 -1
  418. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +3 -3
  419. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +1 -1
  420. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +1 -1
  421. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +1 -1
  422. package/.output/server/chunks/routes/renderer.mjs +3 -3
  423. package/.output/server/chunks/virtual/entry.mjs +303 -37
  424. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  425. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  426. package/.output/server/index.mjs +1 -1
  427. package/.output/server/package.json +1 -1
  428. package/README-zh.md +15 -0
  429. package/README.md +20 -0
  430. package/app/components/AppHeader.vue +1 -1
  431. package/app/components/AppSidebar.vue +7 -1
  432. package/app/components/workshop/A2aRpcDebugger.vue +1 -1
  433. package/app/components/workshop/AgentInspectorDrawer.vue +3 -3
  434. package/app/components/workshop/AgentLanesView.vue +6 -6
  435. package/app/components/workshop/AssetLibrary.vue +2 -2
  436. package/app/components/workshop/ChannelSessionList.vue +5 -5
  437. package/app/components/workshop/Composer.vue +1 -1
  438. package/app/components/workshop/DeviceTwinPanel.vue +2 -2
  439. package/app/components/workshop/TaskBoardView.vue +1 -1
  440. package/app/components/workshop/TaskInspectorDrawer.vue +2 -2
  441. package/app/components/workshop/town/TownView.vue +23 -23
  442. package/app/composables/workshop/apiClient.ts +103 -95
  443. package/app/composables/workshop/useCharacterAssets.ts +1 -1
  444. package/app/composables/workshop/useDaqStream.ts +36 -22
  445. package/app/composables/workshop/useDcwStream.ts +23 -6
  446. package/app/composables/workshop/useDeviceTwins.ts +1 -1
  447. package/app/composables/workshop/useOpsLog.ts +28 -15
  448. package/app/composables/workshop/useSceneLayouts.ts +1 -1
  449. package/app/composables/workshop/useWorkshopWs.ts +11 -2
  450. package/app/pages/daq/[id].vue +1 -1
  451. package/app/pages/daq/index.vue +8 -8
  452. package/app/pages/dcw/[id].vue +13 -13
  453. package/app/pages/dcw/index.vue +7 -7
  454. package/app/pages/logs/index.vue +1 -1
  455. package/app/pages/permissions/index.vue +327 -0
  456. package/app/pages/plugins/index.vue +14 -6
  457. package/app/pages/settings.vue +4 -2
  458. package/app/pages/tokens.vue +3 -3
  459. package/app/pages/workshop/agents.vue +2 -2
  460. package/app/pages/workshop/channel-templates.vue +3 -3
  461. package/app/pages/workshop/index.vue +4 -4
  462. package/app/pages/workshop/teams.vue +3 -3
  463. package/app/plugins/http.ts +18 -2
  464. package/app/plugins/session-restore.client.ts +7 -2
  465. package/app/stores/workshop/user.ts +14 -1
  466. package/app/utils/api-error.ts +75 -0
  467. package/cli/commands/plugin.mjs +2 -2
  468. package/config.yml +1 -1
  469. package/i18n/locales/en.ts +53 -3
  470. package/i18n/locales/zh-CN.ts +53 -3
  471. package/package.json +1 -1
  472. package/scripts/_dbg-acc-1-setup.mjs +57 -0
  473. package/scripts/_dbg-acc-2-diag.mjs +14 -0
  474. package/scripts/_dbg-acc-2-intervals.mjs +81 -0
  475. package/scripts/_dbg-acc-3-daq.mjs +48 -0
  476. package/scripts/_dbg-acc-4-team.mjs +92 -0
  477. package/scripts/_dbg-acc-5-visual.mjs +63 -0
  478. package/scripts/_dbg-acc-5b-ws-town.mjs +18 -0
  479. package/scripts/_dbg-acc-5c-town.mjs +12 -0
  480. package/scripts/_dbg-acc-6-i18n.mjs +19 -0
  481. package/scripts/_dbg-audit-neg-e2e.mjs +64 -0
  482. package/scripts/_dbg-final-features.mjs +155 -0
  483. package/scripts/_dbg-final-fixups.mjs +62 -0
  484. package/scripts/_dbg-final-visual.mjs +29 -0
  485. package/scripts/_dbg-interval-config.mjs +17 -6
  486. package/scripts/_dbg-perms-e2e.mjs +102 -0
  487. package/scripts/_dbg-perms-visual.mjs +36 -0
  488. package/scripts/_dbg-plugins-e2e.mjs +101 -0
  489. package/scripts/_dbg-protocol-matrix.mjs +16 -0
  490. package/scripts/_dbg-repo-setup-verify.mjs +31 -0
  491. package/scripts/_dbg-setup-e2e.mjs +1 -1
  492. package/sdk/api.mjs +117 -101
  493. package/sdk/context.mjs +240 -219
  494. package/sdk/hooks.mjs +105 -103
  495. package/sdk/index.d.mts +142 -135
  496. package/sdk/lifecycle.mjs +26 -25
  497. package/server/api/workshop/agent-tools/bindings/index.post.ts +40 -20
  498. package/server/api/workshop/daq/[id]/bind.post.ts +5 -2
  499. package/server/api/workshop/daq/[id]/frames/content.get.ts +4 -1
  500. package/server/api/workshop/daq/[id]/frames.get.ts +4 -1
  501. package/server/api/workshop/daq/[id]/samples.get.ts +4 -1
  502. package/server/api/workshop/daq/[id].patch.ts +3 -0
  503. package/server/api/workshop/daq/alarms/[id]/ack.post.ts +20 -15
  504. package/server/api/workshop/daq/controller.post.ts +2 -0
  505. package/server/api/workshop/daq/index.get.ts +5 -3
  506. package/server/api/workshop/daq/index.post.ts +2 -2
  507. package/server/api/workshop/dcw/[id]/bind.post.ts +20 -17
  508. package/server/api/workshop/dcw/[id]/test.post.ts +18 -15
  509. package/server/api/workshop/dcw/[id]/write.post.ts +3 -0
  510. package/server/api/workshop/dcw/index.get.ts +22 -9
  511. package/server/api/workshop/dcw/line/query.get.ts +38 -31
  512. package/server/api/workshop/dcw/lines/[id]/start.post.ts +3 -0
  513. package/server/api/workshop/dcw/lines/[id]/stop.post.ts +3 -0
  514. package/server/api/workshop/dcw/lines/index.get.ts +8 -2
  515. package/server/api/workshop/dcw/lines/index.post.ts +2 -2
  516. package/server/api/workshop/dcw/products/index.post.ts +16 -16
  517. package/server/api/workshop/dcw/runs/[id]/data.get.ts +20 -15
  518. package/server/api/workshop/dcw/runs/index.get.ts +13 -11
  519. package/server/api/workshop/permissions/index.get.ts +30 -0
  520. package/server/api/workshop/permissions/index.put.ts +29 -0
  521. package/server/api/workshop/plugins/[name]/disable.post.ts +5 -3
  522. package/server/api/workshop/plugins/[name]/enable.post.ts +5 -3
  523. package/server/api/workshop/ws.ts +18 -6
  524. package/server/data/daqs.json +90 -46
  525. package/server/data/dcw-lines.json +21 -0
  526. package/server/data/dcw-products.json +140 -0
  527. package/server/data/dcw-recipes.json +506 -0
  528. package/server/data/dcw-rollback.json +281 -6
  529. package/server/data/dcw-runs.json +1374 -1257
  530. package/server/data/dcw-writes.json +312 -0
  531. package/server/data/dcws.json +1165 -477
  532. package/server/data/line-runs.json +26 -6
  533. package/server/plugins/backup.ts +119 -116
  534. package/server/repositories/user.repository.ts +86 -6
  535. package/server/services/system-config.ts +5 -0
  536. package/server/services/user.service.ts +5 -3
  537. package/server/services/workshop/daq/bus/index.ts +5 -3
  538. package/server/services/workshop/daq/bus/inproc.adapter.ts +12 -3
  539. package/server/services/workshop/daq/bus/mqtt.adapter.ts +13 -0
  540. package/server/services/workshop/daq/bus/queue-port.ts +2 -0
  541. package/server/services/workshop/daq/daq-controller.ts +18 -1
  542. package/server/services/workshop/daq/storage/sqlite.adapter.ts +10 -5
  543. package/server/services/workshop/db/ops.repo.ts +6 -0
  544. package/server/services/workshop/dcw/dcw-controller.ts +10 -2
  545. package/server/services/workshop/permissions.ts +79 -0
  546. package/server/services/workshop/plugins/host.mjs +40 -2
  547. package/server/services/workshop/scene-events.ts +25 -1
  548. package/server/services/workshop/settings.ts +10 -0
  549. package/shared/config/single-instance.mjs +24 -0
  550. package/shared/daq-protocol.ts +2 -0
  551. package/.output/public/_nuxt/2LwEn9gX.js +0 -2
  552. package/.output/public/_nuxt/3612gD2V.js +0 -32
  553. package/.output/public/_nuxt/8eIQAVlb.js +0 -1
  554. package/.output/public/_nuxt/Ah9qOv1m.js +0 -1
  555. package/.output/public/_nuxt/B4Fia4FB.js +0 -3
  556. package/.output/public/_nuxt/BH0Z05CS.js +0 -1
  557. package/.output/public/_nuxt/BJ-fxrSw.js +0 -1
  558. package/.output/public/_nuxt/BJvGPTpC.js +0 -1
  559. package/.output/public/_nuxt/BVZjSVs2.js +0 -1
  560. package/.output/public/_nuxt/BVzDoF8t.js +0 -1
  561. package/.output/public/_nuxt/BjVLsC3M.js +0 -1
  562. package/.output/public/_nuxt/BnVoQ74r.js +0 -1
  563. package/.output/public/_nuxt/Bnp4vIAf.js +0 -1
  564. package/.output/public/_nuxt/Bt_HDizI.js +0 -5
  565. package/.output/public/_nuxt/Bu-P92Pe.js +0 -18
  566. package/.output/public/_nuxt/ButLXkjo.js +0 -2
  567. package/.output/public/_nuxt/By-LNp3k.js +0 -1
  568. package/.output/public/_nuxt/CGdPdJPP.js +0 -1
  569. package/.output/public/_nuxt/CRGlf1Gb.js +0 -1
  570. package/.output/public/_nuxt/CS8R0_J3.js +0 -1
  571. package/.output/public/_nuxt/CUxV8Bw_.js +0 -1
  572. package/.output/public/_nuxt/Cd15nPnG2.js +0 -1
  573. package/.output/public/_nuxt/CvbHIGQY2.js +0 -1
  574. package/.output/public/_nuxt/DNJSkm3Q.js +0 -1
  575. package/.output/public/_nuxt/DNzaswei.js +0 -1
  576. package/.output/public/_nuxt/DXK1U43I.js +0 -1
  577. package/.output/public/_nuxt/Dc46i75T.js +0 -14
  578. package/.output/public/_nuxt/Dk6pq9JB2.js +0 -1
  579. package/.output/public/_nuxt/Do88WZG2.js +0 -23
  580. package/.output/public/_nuxt/Du-eSpo2.js +0 -1
  581. package/.output/public/_nuxt/GP2wXyuY.js +0 -1
  582. package/.output/public/_nuxt/NIM0Wglj2.js +0 -1
  583. package/.output/public/_nuxt/PQLnLxYe.js +0 -1
  584. package/.output/public/_nuxt/R_Wv_Nd9.js +0 -1
  585. package/.output/public/_nuxt/TownView.Bt33bo1M.css +0 -1
  586. package/.output/public/_nuxt/_id_.BzKMZnLe.css +0 -1
  587. package/.output/public/_nuxt/_id_.CbpDAWRh.css +0 -1
  588. package/.output/public/_nuxt/agents.BlejnOOC.css +0 -1
  589. package/.output/public/_nuxt/builds/meta/e5bb1803-86d9-43b3-85be-dc787dc9a978.json +0 -1
  590. package/.output/public/_nuxt/channel-templates.lkqEYlWY.css +0 -1
  591. package/.output/public/_nuxt/daq.zZ8GR433.css +0 -1
  592. package/.output/public/_nuxt/dcw.C46dGiF_.css +0 -1
  593. package/.output/public/_nuxt/default.V3_hUJq1.css +0 -1
  594. package/.output/public/_nuxt/eHGLpQSg2.js +0 -1
  595. package/.output/public/_nuxt/logs.DaIsHWZE.css +0 -1
  596. package/.output/public/_nuxt/p7wSGMtc.js +0 -1
  597. package/.output/public/_nuxt/plugins.FTm0PcEe.css +0 -1
  598. package/.output/public/_nuxt/settings.DeRNNUcP.css +0 -1
  599. package/.output/public/_nuxt/tRBT-plo.js +0 -1
  600. package/.output/public/_nuxt/teams.B8JNbUZg.css +0 -1
  601. package/.output/public/_nuxt/tokens.CWOTXM-Z.css +0 -1
  602. package/.output/public/_nuxt/ubPfs9mQ.js +0 -1
  603. package/.output/public/_nuxt/workshop.3kAcLB_M.css +0 -1
  604. package/.output/server/chunks/build/OmpTerminalPanel-COphA1br.mjs.map +0 -1
  605. package/.output/server/chunks/build/_id_-C-ewLgfl.mjs.map +0 -1
  606. package/.output/server/chunks/build/_id_-Ct4Jhvl1.mjs.map +0 -1
  607. package/.output/server/chunks/build/agents-DSOptxXA.mjs.map +0 -1
  608. package/.output/server/chunks/build/channel-templates-BK0KuPOd.mjs.map +0 -1
  609. package/.output/server/chunks/build/daq-D9RA_uze.mjs.map +0 -1
  610. package/.output/server/chunks/build/dcw-BTM5YU-B.mjs.map +0 -1
  611. package/.output/server/chunks/build/input-sf_BT6o6.mjs.map +0 -1
  612. package/.output/server/chunks/build/pages-DR2bzczM.mjs.map +0 -1
  613. package/.output/server/chunks/build/plugins-DnOBIWGg.mjs.map +0 -1
  614. package/.output/server/chunks/build/settings-DA8IkGLo.mjs.map +0 -1
  615. package/.output/server/chunks/build/teams-BhSKBBBM.mjs.map +0 -1
  616. package/.output/server/chunks/build/tokens-D_eyxmcv.mjs.map +0 -1
  617. package/.output/server/chunks/build/useDaqStream-hwkhJHFU.mjs.map +0 -1
  618. package/.output/server/chunks/build/useDcwStream-Bdew_yrr.mjs.map +0 -1
  619. package/.output/server/chunks/build/useDeviceTwins-C6EBg9oN.mjs.map +0 -1
  620. package/.output/server/chunks/build/useOpsLog-DdCqKVVG.mjs.map +0 -1
  621. package/.output/server/chunks/build/useWorkshopWs-B3j5wIAK.mjs.map +0 -1
  622. package/.output/server/chunks/build/user-Dk-ytEUV.mjs +0 -140
  623. package/.output/server/chunks/build/user-Dk-ytEUV.mjs.map +0 -1
  624. package/.output/server/chunks/build/workshop-D5CQj2A8.mjs.map +0 -1
  625. package/.output/server/chunks/build/workspaces-IfORCDJE.mjs.map +0 -1
  626. /package/.output/public/_nuxt/{CNs_Ozdc2.js → CNs_Ozdc.js} +0 -0
  627. /package/.output/public/_nuxt/{Cno6kYiO2.js → Cno6kYiO.js} +0 -0
@@ -1,10 +1,10 @@
1
1
  import process from 'node:process';globalThis._importMeta_=globalThis._importMeta_||{url:import.meta.url,env:process.env};import { getCurrentScope, ref, watchEffect, getCurrentInstance, onBeforeUnmount, onDeactivated, onActivated, shallowReactive, reactive, effectScope, hasInjectionContext, inject, toRef, customRef, defineComponent, shallowRef, h, resolveComponent, computed, unref, isRef, toValue, onServerPrefetch, nextTick, queuePostFlushCb, provide, watch, triggerRef, Fragment, isVNode, createVNode, Comment, Text, TransitionGroup, toRaw, Teleport, render, createApp, onErrorCaptured, resolveDynamicComponent, mergeProps, withCtx, defineAsyncComponent, createCommentVNode, isReadonly, Suspense, useSSRContext, isShallow, isReactive } from 'vue';
2
- import { aJ as createHooks, n as createError, aK as sanitizeStatusCode, aL as klona, Q as getRequestHeader, aM as isEqual$1, aN as setCookie, aO as getCookie, aP as deleteCookie, aQ as $fetch, aR as baseURL, k as getRequestHeaders, aS as defu, aT as getRequestProtocol, aU as appendResponseHeader } from '../_/nitro.mjs';
2
+ import { aP as createHooks, n as createError, aQ as sanitizeStatusCode, aR as klona, Q as getRequestHeader, aS as isEqual$1, aT as setCookie, aU as getCookie, aV as deleteCookie, aW as $fetch, aX as baseURL, k as getRequestHeaders, aY as defu, aZ as getRequestProtocol, a_ as appendResponseHeader } from '../_/nitro.mjs';
3
3
  import { walkResolver } from 'unhead/utils';
4
4
  import { i as injectHead$1, V as VueResolver, h as headSymbol } from '../routes/renderer.mjs';
5
5
  import { START_LOCATION, useRoute as useRoute$1, RouterView, createMemoryHistory, createRouter, isNavigationFailure } from 'vue-router';
6
6
  import * as import_pinia from 'pinia';
7
- import { setActivePinia, createPinia, shouldHydrate } from 'pinia';
7
+ import { defineStore, setActivePinia, createPinia, shouldHydrate } from 'pinia';
8
8
  import { generate as generate$3, blue } from '@ant-design/colors';
9
9
  import axios from 'axios';
10
10
  import { ssrRenderSuspense, ssrRenderComponent, ssrRenderVNode, ssrRenderAttrs, ssrInterpolate } from 'vue/server-renderer';
@@ -6472,7 +6472,7 @@ var b = Array.isArray || function(e) {
6472
6472
  var O = function(e) {
6473
6473
  return "[object Function]" === a.call(e);
6474
6474
  };
6475
- var g = function(e) {
6475
+ var g$1 = function(e) {
6476
6476
  return s(e) && d(e, "_vueTypes_name");
6477
6477
  };
6478
6478
  var m = function(e) {
@@ -6492,7 +6492,7 @@ function _(e, t, n) {
6492
6492
  var r;
6493
6493
  var i = true, o = "";
6494
6494
  r = s(e) ? e : { type: e };
6495
- var u = g(r) ? r._vueTypes_name + " - " : "";
6495
+ var u = g$1(r) ? r._vueTypes_name + " - " : "";
6496
6496
  if (m(r) && null !== r.type) {
6497
6497
  if (void 0 === r.type || true === r.type) return i;
6498
6498
  if (!r.required && void 0 === t) return i;
@@ -6626,7 +6626,7 @@ function B(e) {
6626
6626
  for (var t = false, n = [], r = 0; r < e.length; r += 1) {
6627
6627
  var i = e[r];
6628
6628
  if (m(i)) {
6629
- if (g(i) && "oneOf" === i._vueTypes_name) {
6629
+ if (g$1(i) && "oneOf" === i._vueTypes_name) {
6630
6630
  n = n.concat(i.type);
6631
6631
  continue;
6632
6632
  }
@@ -6643,7 +6643,7 @@ function B(e) {
6643
6643
  type: n,
6644
6644
  validator: function(t) {
6645
6645
  var n = [], r = e.some(function(e) {
6646
- var r = _(g(e) && "oneOf" === e._vueTypes_name ? e.type || null : e, t);
6646
+ var r = _(g$1(e) && "oneOf" === e._vueTypes_name ? e.type || null : e, t);
6647
6647
  return "string" == typeof r && n.push(r), true === r;
6648
6648
  });
6649
6649
  return r || y("oneOfType - provided value does not match any of the " + n.length + " passed-in validators:\n" + P(n.join("\n"))), r;
@@ -6721,7 +6721,7 @@ var $ = function() {
6721
6721
  ]);
6722
6722
  if (d(this, n)) throw new TypeError("[VueTypes error]: Type \"" + n + "\" already defined");
6723
6723
  var c, l = f.type;
6724
- return g(l) ? (delete f.type, Object.defineProperty(this, n, a ? { get: function() {
6724
+ return g$1(l) ? (delete f.type, Object.defineProperty(this, n, a ? { get: function() {
6725
6725
  return k(n, l, f);
6726
6726
  } } : { value: function() {
6727
6727
  var e, t = k(n, l, f);
@@ -9353,74 +9353,79 @@ var virtual_nuxt_node_modules_2F_cache_2Fnuxt_2F_nuxt_2Froutes_default = [
9353
9353
  name: "workshop-w-wsId",
9354
9354
  path: "/workshop/w/:wsId()",
9355
9355
  meta: { layout: "default" },
9356
- component: () => import('../build/_wsId_-CanI_6Su.mjs')
9356
+ component: () => import('../build/_wsId_-eNJmBp05.mjs')
9357
9357
  },
9358
9358
  {
9359
9359
  name: "workshop-agents",
9360
9360
  path: "/workshop/agents",
9361
9361
  meta: { layout: "default" },
9362
- component: () => import('../build/agents-DSOptxXA.mjs')
9362
+ component: () => import('../build/agents-B10wmFri.mjs')
9363
9363
  },
9364
9364
  {
9365
9365
  name: "workshop-channel-templates",
9366
9366
  path: "/workshop/channel-templates",
9367
9367
  meta: { layout: "default" },
9368
- component: () => import('../build/channel-templates-BK0KuPOd.mjs')
9368
+ component: () => import('../build/channel-templates-CpWxVk5A.mjs')
9369
9369
  },
9370
9370
  {
9371
9371
  name: "workshop-teams",
9372
9372
  path: "/workshop/teams",
9373
9373
  meta: { layout: "default" },
9374
- component: () => import('../build/teams-BhSKBBBM.mjs')
9374
+ component: () => import('../build/teams-CNflUtPh.mjs')
9375
9375
  },
9376
9376
  {
9377
9377
  name: "daq-id",
9378
9378
  path: "/daq/:id()",
9379
9379
  meta: { layout: "default" },
9380
- component: () => import('../build/_id_-Ct4Jhvl1.mjs')
9380
+ component: () => import('../build/_id_-CVnMdSeG.mjs')
9381
9381
  },
9382
9382
  {
9383
9383
  name: "dcw-id",
9384
9384
  path: "/dcw/:id()",
9385
- component: () => import('../build/_id_-C-ewLgfl.mjs')
9385
+ component: () => import('../build/_id_-D265Wh_k.mjs')
9386
9386
  },
9387
9387
  {
9388
9388
  name: "daq",
9389
9389
  path: "/daq",
9390
9390
  meta: { layout: "default" },
9391
- component: () => import('../build/daq-D9RA_uze.mjs')
9391
+ component: () => import('../build/daq-DxaXk_8N.mjs')
9392
9392
  },
9393
9393
  {
9394
9394
  name: "dcw",
9395
9395
  path: "/dcw",
9396
- component: () => import('../build/dcw-BTM5YU-B.mjs')
9396
+ component: () => import('../build/dcw-DqjHrl5Z.mjs')
9397
9397
  },
9398
9398
  {
9399
9399
  name: "logs",
9400
9400
  path: "/logs",
9401
- component: () => import('../build/logs-Dyk0I2I9.mjs')
9401
+ component: () => import('../build/logs-Co854R4y.mjs')
9402
9402
  },
9403
9403
  {
9404
9404
  name: "monitor",
9405
9405
  path: "/monitor",
9406
9406
  meta: { layout: "default" },
9407
- component: () => import('../build/monitor-MIOvsyLa.mjs')
9407
+ component: () => import('../build/monitor-miqq9xHB.mjs')
9408
+ },
9409
+ {
9410
+ name: "permissions",
9411
+ path: "/permissions",
9412
+ component: () => import('../build/permissions-Eu9e6hfZ.mjs')
9408
9413
  },
9409
9414
  {
9410
9415
  name: "plugins",
9411
9416
  path: "/plugins",
9412
- component: () => import('../build/plugins-DnOBIWGg.mjs')
9417
+ component: () => import('../build/plugins-D84mvK9G.mjs')
9413
9418
  },
9414
9419
  {
9415
9420
  name: "settings",
9416
9421
  path: "/settings",
9417
- component: () => import('../build/settings-DA8IkGLo.mjs')
9422
+ component: () => import('../build/settings-BPBll_7K.mjs')
9418
9423
  },
9419
9424
  {
9420
9425
  name: "tokens",
9421
9426
  path: "/tokens",
9422
9427
  meta: { layout: "default" },
9423
- component: () => import('../build/tokens-D_eyxmcv.mjs')
9428
+ component: () => import('../build/tokens-CZpnEDVf.mjs')
9424
9429
  },
9425
9430
  {
9426
9431
  name: "town",
@@ -9429,23 +9434,23 @@ var virtual_nuxt_node_modules_2F_cache_2Fnuxt_2F_nuxt_2Froutes_default = [
9429
9434
  layout: "town",
9430
9435
  title: "Digital Twin"
9431
9436
  },
9432
- component: () => import('../build/town-DPtOPRRO.mjs')
9437
+ component: () => import('../build/town-BbaR-8io.mjs')
9433
9438
  },
9434
9439
  {
9435
9440
  name: "users",
9436
9441
  path: "/users",
9437
- component: () => import('../build/users-CmVvb1oq.mjs')
9442
+ component: () => import('../build/users-D6RNylrW.mjs')
9438
9443
  },
9439
9444
  {
9440
9445
  name: "workshop",
9441
9446
  path: "/workshop",
9442
9447
  meta: { layout: "default" },
9443
- component: () => import('../build/workshop-D5CQj2A8.mjs')
9448
+ component: () => import('../build/workshop-Crsai2Y9.mjs')
9444
9449
  },
9445
9450
  {
9446
9451
  name: "index",
9447
9452
  path: "/",
9448
- component: () => import('../build/pages-DR2bzczM.mjs')
9453
+ component: () => import('../build/pages-DPC1Vp6w.mjs')
9449
9454
  }
9450
9455
  ];
9451
9456
  //#endregion
@@ -12921,7 +12926,8 @@ var zh_CN_default$1 = {
12921
12926
  users: "用户管理",
12922
12927
  monitor: "运行时监控",
12923
12928
  plugins: "插件管理",
12924
- settings: "系统设置"
12929
+ settings: "系统设置",
12930
+ permissions: "权限管理"
12925
12931
  },
12926
12932
  header: {
12927
12933
  collapse: "折叠菜单",
@@ -13133,6 +13139,15 @@ var zh_CN_default$1 = {
13133
13139
  groupI18n: "国际化",
13134
13140
  groupSecurity: "安全",
13135
13141
  groupDaq: "数采",
13142
+ groupApi: "API",
13143
+ groupMemory: "记忆系统",
13144
+ groupOmp: "Agent Harness",
13145
+ groupHarness: "Harness 接入",
13146
+ groupDcw: "数控写控",
13147
+ groupWorkshop: "车间运行",
13148
+ groupBackup: "数据备份",
13149
+ groupRetention: "数据保留",
13150
+ groupLog: "日志",
13136
13151
  server: {
13137
13152
  host: "监听地址",
13138
13153
  devPort: "开发端口",
@@ -14760,12 +14775,15 @@ var zh_CN_default$1 = {
14760
14775
  },
14761
14776
  plugins: {
14762
14777
  title: "插件管理",
14763
- subtitle: "配置根 plugins/ 目录 · 启停即时热重载",
14778
+ subtitle: "内置示例与用户级扩展插件 · 启停即时热重载",
14764
14779
  refresh: "刷新",
14765
14780
  enabled: "已启用",
14766
14781
  disabled: "已停用",
14767
- scopeProject: "项目级",
14768
- scopeUser: "用户级",
14782
+ scopeProject: "内置示例",
14783
+ scopeUser: "用户级扩展",
14784
+ scopeBuiltinHint: "内置示例插件:随项目检出提供(仓库 .AgentWorkShop/plugins),可启停",
14785
+ scopeUserHint: "用户级扩展插件:位于 ~/.AgentWorkShop/plugins,由使用者自行创建维护",
14786
+ loadFail: "插件列表加载失败",
14769
14787
  hasClient: "浏览器增强",
14770
14788
  routes: "API 路由",
14771
14789
  empty: "暂无插件 —— aw plugin create <name> 创建,或 aw plugin enable 开启示例",
@@ -14774,6 +14792,43 @@ var zh_CN_default$1 = {
14774
14792
  enableFail: "启停操作失败",
14775
14793
  detail: "插件详情"
14776
14794
  },
14795
+ errors: {
14796
+ http400: "请求参数有误,请检查后重试",
14797
+ http401: "登录已过期,请重新登录",
14798
+ http403: "权限不足:该操作需要管理员权限",
14799
+ http404: "目标不存在或已被删除",
14800
+ http409: "操作冲突:资源已存在或状态不允许",
14801
+ http5xx: "服务器内部错误,请稍后重试",
14802
+ network: "无法连接服务器,请检查网络与服务状态",
14803
+ fallback: "操作失败,请稍后重试"
14804
+ },
14805
+ permissions: {
14806
+ title: "权限管理",
14807
+ subtitle: "用户 × 产线三态授权:无权 / 仅查看(数采只读) / 可操控(数采+数控全量);普通用户默认无权",
14808
+ search: "搜索用户名或邮箱",
14809
+ loadFail: "权限数据加载失败",
14810
+ saveFail: "保存授权失败",
14811
+ saved: "已保存 {n} 项授权变更",
14812
+ colUser: "用户",
14813
+ colEmail: "邮箱",
14814
+ colRole: "角色",
14815
+ colStatus: "状态",
14816
+ colChannels: "Channel 数",
14817
+ colGrants: "产线授权",
14818
+ colOps: "操作",
14819
+ active: "正常",
14820
+ manage: "授权管理",
14821
+ detail: "权限详情",
14822
+ secProfile: "基本信息",
14823
+ secChannels: "创建的 Channel",
14824
+ noChannels: "该用户尚未创建 Channel",
14825
+ secMatrix: "产线授权矩阵",
14826
+ save: "保存变更({n})",
14827
+ matrixHint: "无权=后端不返回该产线数据(前端/数字孪生不可见);仅查看=数采节点只读;可操控=数采读取+数控写控全量。",
14828
+ none: "无权",
14829
+ readonly: "仅查看",
14830
+ operate: "可操控"
14831
+ },
14777
14832
  error: {
14778
14833
  backHome: "返回首页",
14779
14834
  lost: "页面走失了"
@@ -14807,7 +14862,8 @@ var en_default = {
14807
14862
  users: "Users",
14808
14863
  monitor: "Runtime Monitor",
14809
14864
  plugins: "Plugins",
14810
- settings: "Settings"
14865
+ settings: "Settings",
14866
+ permissions: "Permissions"
14811
14867
  },
14812
14868
  header: {
14813
14869
  collapse: "Collapse menu",
@@ -15019,6 +15075,15 @@ var en_default = {
15019
15075
  groupI18n: "i18n",
15020
15076
  groupSecurity: "Security",
15021
15077
  groupDaq: "DAQ",
15078
+ groupApi: "API",
15079
+ groupMemory: "Memory",
15080
+ groupOmp: "Agent Harness",
15081
+ groupHarness: "Harness Adapters",
15082
+ groupDcw: "Write Control",
15083
+ groupWorkshop: "Workshop",
15084
+ groupBackup: "Backup",
15085
+ groupRetention: "Retention",
15086
+ groupLog: "Logs",
15022
15087
  server: {
15023
15088
  host: "Listen address",
15024
15089
  devPort: "Dev port",
@@ -16646,12 +16711,15 @@ var en_default = {
16646
16711
  },
16647
16712
  plugins: {
16648
16713
  title: "Plugins",
16649
- subtitle: "Config-root plugins/ · toggles hot-reload instantly",
16714
+ subtitle: "Built-in samples & user extensions · toggles hot-reload instantly",
16650
16715
  refresh: "Refresh",
16651
16716
  enabled: "Enabled",
16652
16717
  disabled: "Disabled",
16653
- scopeProject: "Project",
16654
- scopeUser: "User",
16718
+ scopeProject: "Built-in sample",
16719
+ scopeUser: "User extension",
16720
+ scopeBuiltinHint: "Built-in sample plugin: shipped with the project checkout (repo .AgentWorkShop/plugins), can be toggled",
16721
+ scopeUserHint: "User extension plugin: lives in ~/.AgentWorkShop/plugins, created and maintained by you",
16722
+ loadFail: "Failed to load plugin list",
16655
16723
  hasClient: "Client enhancer",
16656
16724
  routes: "API routes",
16657
16725
  empty: "No plugins yet — aw plugin create <name>, or aw plugin enable to turn on examples",
@@ -16660,6 +16728,43 @@ var en_default = {
16660
16728
  enableFail: "Toggle failed",
16661
16729
  detail: "Plugin detail"
16662
16730
  },
16731
+ errors: {
16732
+ http400: "Invalid request, please check and retry",
16733
+ http401: "Session expired, please sign in again",
16734
+ http403: "Insufficient permission: this action requires an administrator",
16735
+ http404: "Target not found or already removed",
16736
+ http409: "Conflict: resource already exists or state does not allow it",
16737
+ http5xx: "Server error, please retry later",
16738
+ network: "Cannot reach the server, check network and service status",
16739
+ fallback: "Action failed, please retry later"
16740
+ },
16741
+ permissions: {
16742
+ title: "Permissions",
16743
+ subtitle: "User × line three-state grants: none / read-only (DAQ) / operate (DAQ+DCW); users default to none",
16744
+ search: "Search name or email",
16745
+ loadFail: "Failed to load permission data",
16746
+ saveFail: "Failed to save grants",
16747
+ saved: "Saved {n} grant change(s)",
16748
+ colUser: "User",
16749
+ colEmail: "Email",
16750
+ colRole: "Role",
16751
+ colStatus: "Status",
16752
+ colChannels: "Channels",
16753
+ colGrants: "Line grants",
16754
+ colOps: "Actions",
16755
+ active: "Active",
16756
+ manage: "Manage",
16757
+ detail: "Permission detail",
16758
+ secProfile: "Profile",
16759
+ secChannels: "Created channels",
16760
+ noChannels: "No channels created by this user",
16761
+ secMatrix: "Line grant matrix",
16762
+ save: "Save ({n})",
16763
+ matrixHint: "none = line data is withheld server-side (invisible in UI & digital twin); read-only = DAQ read; operate = full DAQ read + DCW write.",
16764
+ none: "None",
16765
+ readonly: "Read-only",
16766
+ operate: "Operate"
16767
+ },
16663
16768
  error: {
16664
16769
  backHome: "Back to Home",
16665
16770
  lost: "Page lost"
@@ -17860,6 +17965,155 @@ var theme_default = {
17860
17965
  compactAlgorithm: derivative
17861
17966
  };
17862
17967
  //#endregion
17968
+ //#region app/stores/workshop/user.ts
17969
+ /**
17970
+ * 用户身份(全局用户系统集成):register/login/logout/多 token CRUD;
17971
+ * token 写入 cookie 'token' 供 $http 拦截器全局注入(Authorization: Bearer)。
17972
+ * WS sub / 手写 fetch 场景直接读 store.token。
17973
+ * 身份源:/api/users/*(data/users.sqlite 全局用户系统,非 workshop 本地用户)。
17974
+ */
17975
+ var useUserStore = defineStore("workshop.user", {
17976
+ state: () => ({ user: null }),
17977
+ getters: {
17978
+ isLoggedIn: (state) => state.user !== null,
17979
+ token: (state) => state.user?.token ?? "",
17980
+ /** admin 角色(最高管理权限:全量监控/任意模板/用户管理) */
17981
+ isAdmin: (state) => state.user?.role === "admin"
17982
+ },
17983
+ actions: {
17984
+ applyCookie() {},
17985
+ /** 以 me 响应补全 tokenId(注册/登录签发的新 token 尚未绑定 id) */
17986
+ async _attachTokenId(token) {
17987
+ const res = await $fetch$2("/api/users/me", { headers: { authorization: `Bearer ${token}` } });
17988
+ if (res.code === 0 && res.data && this.user) this.user.tokenId = res.data.tokenId;
17989
+ },
17990
+ async register(name, email, password) {
17991
+ const res = await $fetch$2("/api/users/register", {
17992
+ method: "POST",
17993
+ body: {
17994
+ name: name.trim(),
17995
+ email: email.trim(),
17996
+ password
17997
+ }
17998
+ });
17999
+ if (res.code !== 0 || !res.data) throw new Error(res.message ?? "注册失败");
18000
+ this.user = {
18001
+ ...res.data.user,
18002
+ token: res.data.token,
18003
+ tokenId: ""
18004
+ };
18005
+ this.applyCookie();
18006
+ await this._attachTokenId(res.data.token);
18007
+ return this.user;
18008
+ },
18009
+ async login(email, password) {
18010
+ const res = await $fetch$2("/api/users/login", {
18011
+ method: "POST",
18012
+ body: {
18013
+ email: email.trim(),
18014
+ password
18015
+ }
18016
+ });
18017
+ if (res.code !== 0 || !res.data) throw new Error(res.message ?? "登录失败");
18018
+ this.user = {
18019
+ ...res.data.user,
18020
+ token: res.data.token,
18021
+ tokenId: ""
18022
+ };
18023
+ this.applyCookie();
18024
+ await this._attachTokenId(res.data.token);
18025
+ return this.user;
18026
+ },
18027
+ async loginWithToken(token) {
18028
+ const trimmed = token.trim();
18029
+ if (!trimmed) throw new Error("token 不能为空");
18030
+ const res = await $fetch$2("/api/users/me", { headers: { authorization: `Bearer ${trimmed}` } });
18031
+ if (res.code !== 0 || !res.data) throw new Error(res.message ?? "token 无效");
18032
+ this.user = {
18033
+ ...res.data,
18034
+ token: trimmed
18035
+ };
18036
+ this.applyCookie();
18037
+ return this.user;
18038
+ },
18039
+ async refresh() {
18040
+ if (!this.user) return;
18041
+ try {
18042
+ await this.loginWithToken(this.user.token);
18043
+ } catch {
18044
+ this.logout();
18045
+ }
18046
+ },
18047
+ async logout() {
18048
+ const t = this.user?.token;
18049
+ this.user = null;
18050
+ this.applyCookie();
18051
+ if (t) try {
18052
+ await $fetch$2("/api/users/logout", {
18053
+ method: "POST",
18054
+ headers: { authorization: `Bearer ${t}` }
18055
+ });
18056
+ } catch {}
18057
+ },
18058
+ authHeaders() {
18059
+ const t = this.user?.token;
18060
+ return t ? { authorization: `Bearer ${t}` } : {};
18061
+ },
18062
+ async listTokens() {
18063
+ const res = await $fetch$2("/api/users/tokens", { headers: this.authHeaders() });
18064
+ if (res.code !== 0 || !res.data) throw new Error(res.message ?? "获取 token 列表失败");
18065
+ return res.data;
18066
+ },
18067
+ async createToken(label) {
18068
+ const res = await $fetch$2("/api/users/tokens", {
18069
+ method: "POST",
18070
+ body: { label: label.trim() },
18071
+ headers: this.authHeaders()
18072
+ });
18073
+ if (res.code !== 0 || !res.data) throw new Error(res.message ?? "创建 token 失败");
18074
+ return res.data;
18075
+ },
18076
+ async renameToken(id, label) {
18077
+ const res = await $fetch$2(`/api/users/tokens/${id}`, {
18078
+ method: "PATCH",
18079
+ body: { label: label.trim() },
18080
+ headers: this.authHeaders()
18081
+ });
18082
+ if (res.code !== 0 || !res.data) throw new Error(res.message ?? "更新 token 失败");
18083
+ return res.data;
18084
+ },
18085
+ /** 查看存档明文(随时可查;404=非本人/不存在, 410=旧数据仅存哈希) */
18086
+ async revealToken(id) {
18087
+ const res = await $fetch$2(`/api/users/tokens/${id}/token`, { headers: this.authHeaders() });
18088
+ if (res.code !== 0 || !res.data) throw new Error(res.message ?? "查看 token 失败");
18089
+ return res.data.token;
18090
+ },
18091
+ async revokeToken(id) {
18092
+ const res = await $fetch$2(`/api/users/tokens/${id}`, {
18093
+ method: "DELETE",
18094
+ headers: this.authHeaders()
18095
+ });
18096
+ if (res.code !== 0) throw new Error(res.message ?? "删除 token 失败");
18097
+ if (this.user && id === this.user.tokenId) this.logout();
18098
+ }
18099
+ },
18100
+ persist: {
18101
+ pick: ["user"],
18102
+ afterHydrate: (ctx) => {
18103
+ const store = ctx.store;
18104
+ if (!store.user) return;
18105
+ try {
18106
+ const cookie = useCookie("token");
18107
+ if (cookie.value) store.user.token = cookie.value;
18108
+ else store.user = null;
18109
+ } catch {}
18110
+ }
18111
+ }
18112
+ });
18113
+ //#endregion
18114
+ //#region app/plugins/http.ts
18115
+ var g = globalThis;
18116
+ //#endregion
17863
18117
  //#region virtual:nuxt:node_modules%2F.cache%2Fnuxt%2F.nuxt%2Fplugins.server.mjs
17864
18118
  var virtual_nuxt_node_modules_2F_cache_2Fnuxt_2F_nuxt_2Fplugins_server_default = [
17865
18119
  payloadPlugin,
@@ -17874,7 +18128,7 @@ var virtual_nuxt_node_modules_2F_cache_2Fnuxt_2F_nuxt_2Fplugins_server_default =
17874
18128
  virtual_nuxt_node_modules_2F_cache_2Fnuxt_2F_nuxt_2Fcomponents_plugin_default,
17875
18129
  virtual_nuxt_node_modules_2F_cache_2Fnuxt_2F_nuxt_2Funocss_default,
17876
18130
  plugin_default,
17877
- defineNuxtPlugin(() => {
18131
+ defineNuxtPlugin((nuxtApp) => {
17878
18132
  const config = useRuntimeConfig().public;
17879
18133
  const instance = axios.create({
17880
18134
  baseURL: config.apiBase,
@@ -17888,8 +18142,20 @@ var virtual_nuxt_node_modules_2F_cache_2Fnuxt_2F_nuxt_2Fplugins_server_default =
17888
18142
  instance.interceptors.response.use((res) => res.data, (error) => {
17889
18143
  const status = error?.response?.status;
17890
18144
  const msg = error?.response?.data?.message || error.message || "请求失败";
17891
- if (status === 401) api$1.error("登录已过期,请重新登录");
17892
- else if (status >= 500) api$1.error("服务器异常,请稍后重试");
18145
+ if (status === 401) {
18146
+ try {
18147
+ const cookie = useCookie("token");
18148
+ cookie.value = null;
18149
+ useUserStore(nuxtApp.$pinia).$reset();
18150
+ } catch {}
18151
+ if (!g.__awShown401) {
18152
+ g.__awShown401 = true;
18153
+ api$1.error("登录已过期,请重新登录");
18154
+ setTimeout(() => {
18155
+ g.__awShown401 = false;
18156
+ }, 3e3);
18157
+ }
18158
+ } else if (status >= 500) api$1.error("服务器异常,请稍后重试");
17893
18159
  else api$1.error(msg);
17894
18160
  return Promise.reject(error);
17895
18161
  });
@@ -17916,7 +18182,7 @@ var virtual_nuxt_node_modules_2F_cache_2Fnuxt_2F_nuxt_2Fplugins_server_default =
17916
18182
  //#endregion
17917
18183
  //#region virtual:nuxt:node_modules%2F.cache%2Fnuxt%2F.nuxt%2Flayouts.mjs
17918
18184
  var virtual_nuxt_node_modules_2F_cache_2Fnuxt_2F_nuxt_2Flayouts_default = {
17919
- default: defineAsyncComponent(() => import('../build/default-BfWGTlbj.mjs').then((m) => m.default || m)),
18185
+ default: defineAsyncComponent(() => import('../build/default-YcUHc1Ev.mjs').then((m) => m.default || m)),
17920
18186
  town: defineAsyncComponent(() => import('../build/town-BUqRobze.mjs').then((m) => m.default || m))
17921
18187
  };
17922
18188
  //#endregion
@@ -18675,5 +18941,5 @@ const entry = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
18675
18941
  default: entry_default
18676
18942
  }, Symbol.toStringTag, { value: 'Module' }));
18677
18943
 
18678
- export { tuple as $, eventType as A, presetPrimaryColors as B, CloseCircleFilled as C, genFocusStyle as D, sanitizeTag as E, isValidElement as F, isFragment as G, getTransitionName as H, getStyle$1 as I, getSlot as J, Keyframe as K, getEvents as L, contains as M, hasProp as N, getComponent as O, PropTypes as P, findDOMNode as Q, useProvidePortal as R, getOptionProps as S, getMotion$1 as T, Icon as U, useInjectDisabled as V, LoadingOutlined as W, canUseDom as X, Portal_default as Y, useToken$1 as Z, _plugin_vue_export_helper_default as _, useRoute as a, useProviderSize as a0, useProviderDisabled as a1, useInjectGlobalForm as a2, ExclamationCircleFilled as a3, useLocaleReceiver as a4, localeValues$1 as a5, arrayType as a6, getTransitionGroupProps as a7, textEllipsis as a8, getTransitionDirection as a9, isEmptyElement as aA, vNodeType as aB, ExclamationCircleOutlined as aC, CloseCircleOutlined as aD, InfoCircleOutlined as aE, CheckCircleOutlined as aF, useAppStore as aG, useRuntimeConfig as aH, useRuntimeConfigStore as aI, theme_default as aJ, composables_exports as aK, storages as aL, entry as aM, DefaultRenderEmpty as aa, resetIcon as ab, clearFix as ac, getClass as ad, capitalize$1 as ae, genFocusOutline as af, isValid as ag, skipFlattenKey as ah, TinyColor as ai, camelize as aj, toPx as ak, InfoCircleFilled as al, useConfigContextInject as am, globalConfigForApi as an, ConfigProvider as ao, getConfirmLocale as ap, $fetch$2 as aq, useHttp as ar, appDiagnostics as as, en_US_default$1 as at, splitAttrs as au, zh_CN_default$2 as av, empty_default as aw, NuxtLink as ax, useNuxtApp as ay, filterEmptyWithUndefined as az, useHead$1 as b, api$1 as c, useConfigInject_default as d, _extends as e, flattenChildren as f, getPropsSlot as g, classNames as h, _objectSpread2 as i, getTransitionProps as j, genComponentStyleHook as k, filterEmpty as l, merge as m, navigateTo as n, warning$1 as o, CloseOutlined as p, CheckCircleFilled as q, someType as r, stringType as s, objectType as t, useI18n as u, anyType as v, withInstall as w, booleanType as x, functionType as y, resetComponent as z };
18944
+ export { useToken$1 as $, resetComponent as A, eventType as B, CloseCircleFilled as C, presetPrimaryColors as D, genFocusStyle as E, sanitizeTag as F, isValidElement as G, isFragment as H, getTransitionName as I, getStyle$1 as J, Keyframe as K, getSlot as L, getEvents as M, contains as N, hasProp as O, PropTypes as P, getComponent as Q, findDOMNode as R, useProvidePortal as S, getOptionProps as T, getMotion$1 as U, Icon as V, useInjectDisabled as W, LoadingOutlined as X, canUseDom as Y, Portal_default as Z, _plugin_vue_export_helper_default as _, useRoute as a, tuple as a0, useProviderSize as a1, useProviderDisabled as a2, useInjectGlobalForm as a3, ExclamationCircleFilled as a4, useLocaleReceiver as a5, localeValues$1 as a6, arrayType as a7, getTransitionGroupProps as a8, textEllipsis as a9, filterEmptyWithUndefined as aA, isEmptyElement as aB, vNodeType as aC, ExclamationCircleOutlined as aD, CloseCircleOutlined as aE, InfoCircleOutlined as aF, CheckCircleOutlined as aG, useAppStore as aH, useRuntimeConfig as aI, useRuntimeConfigStore as aJ, theme_default as aK, composables_exports as aL, storages as aM, entry as aN, getTransitionDirection as aa, DefaultRenderEmpty as ab, resetIcon as ac, getClass as ad, clearFix as ae, capitalize$1 as af, genFocusOutline as ag, isValid as ah, skipFlattenKey as ai, TinyColor as aj, camelize as ak, toPx as al, InfoCircleFilled as am, useConfigContextInject as an, globalConfigForApi as ao, ConfigProvider as ap, getConfirmLocale as aq, $fetch$2 as ar, useNuxtApp as as, useHttp as at, appDiagnostics as au, en_US_default$1 as av, splitAttrs as aw, zh_CN_default$2 as ax, empty_default as ay, NuxtLink as az, useUserStore as b, useHead$1 as c, api$1 as d, useConfigInject_default as e, flattenChildren as f, getPropsSlot as g, _extends as h, classNames as i, _objectSpread2 as j, getTransitionProps as k, genComponentStyleHook as l, merge as m, navigateTo as n, filterEmpty as o, warning$1 as p, CloseOutlined as q, CheckCircleFilled as r, stringType as s, someType as t, useI18n as u, objectType as v, withInstall as w, anyType as x, booleanType as y, functionType as z };
18679
18945
  //# sourceMappingURL=entry.mjs.map