agentworkshop 0.7.9 → 0.7.12

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 (534) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{BUPj10t4.js → 6vYobj4F.js} +1 -1
  3. package/.output/public/_nuxt/{BCJFMBQ6.js → B-xskWta.js} +1 -1
  4. package/.output/public/_nuxt/{BC8s1Guv.js → B3Psw_sL.js} +1 -1
  5. package/.output/public/_nuxt/B53Mp7lD.js +1 -0
  6. package/.output/public/_nuxt/{BDASpD_i.js → BBwMH_hG.js} +1 -1
  7. package/.output/public/_nuxt/BNXfwXpE.js +1 -0
  8. package/.output/public/_nuxt/BbZAzXjZ2.js +1 -0
  9. package/.output/public/_nuxt/{CFn4vHwD.js → Bc3PiGGr.js} +1 -1
  10. package/.output/public/_nuxt/BcrN7QEl2.js +1 -0
  11. package/.output/public/_nuxt/BgOhoDTI.js +1 -0
  12. package/.output/public/_nuxt/Bmpvki7M.js +1 -0
  13. package/.output/public/_nuxt/BxPPAkGA.js +3 -0
  14. package/.output/public/_nuxt/{u7KWCGSb.js → BxtpDtzC.js} +1 -1
  15. package/.output/public/_nuxt/{DxrgFxIr2.js → C4OAdbVK2.js} +1 -1
  16. package/.output/public/_nuxt/C6m-kenn.js +1 -0
  17. package/.output/public/_nuxt/CcwJ2mrD2.js +1 -0
  18. package/.output/public/_nuxt/Cj6139IM.js +1 -0
  19. package/.output/public/_nuxt/{6PZPfFcO.js → Cor9siSf.js} +1 -1
  20. package/.output/public/_nuxt/CvYfzHYz.js +1 -0
  21. package/.output/public/_nuxt/D2JyEL28.js +14 -0
  22. package/.output/public/_nuxt/{DDdEnkdw.js → D8xY-Yjc.js} +2 -2
  23. package/.output/public/_nuxt/{Ct68Z0232.js → DA4lxCWC2.js} +1 -1
  24. package/.output/public/_nuxt/{MyA0Oeqd.js → DNxVTfhe.js} +1 -1
  25. package/.output/public/_nuxt/DT-Wg8r1.js +1 -0
  26. package/.output/public/_nuxt/DTYBfjRY.js +1 -0
  27. package/.output/public/_nuxt/{DvgKXPgu2.js → DWcEk1ur2.js} +1 -1
  28. package/.output/public/_nuxt/DaE5saZg.js +1 -0
  29. package/.output/public/_nuxt/Dhqra7NB.js +1 -0
  30. package/.output/public/_nuxt/DlRO_q5L.js +1 -0
  31. package/.output/public/_nuxt/{D8EfUxO2.js → Ds8JbqGB.js} +1 -1
  32. package/.output/public/_nuxt/Dsdy4Ua-.js +1 -0
  33. package/.output/public/_nuxt/{DN5RuZ8k.js → DyisHHzD.js} +1 -1
  34. package/.output/public/_nuxt/{91DZTUMJ.js → E88a-JCG.js} +1 -1
  35. package/.output/public/_nuxt/ORt9oDIy2.js +1 -0
  36. package/.output/public/_nuxt/{By8BpbKH.js → QoCzfpo2.js} +1 -1
  37. package/.output/public/_nuxt/RzXYI9FM.js +23 -0
  38. package/.output/public/_nuxt/{BuktKVqK2.js → arUY5dyq2.js} +2 -2
  39. package/.output/public/_nuxt/bAFueD6a.js +1 -0
  40. package/.output/public/_nuxt/builds/latest.json +1 -1
  41. package/.output/public/_nuxt/builds/meta/54e22640-4fd0-4fee-9077-31d4d4bb7969.json +1 -0
  42. package/.output/public/_nuxt/dcw.rpqpOYQ8.css +1 -0
  43. package/.output/public/_nuxt/{default.BR3e5fPY.css → default.BbgdTDCk.css} +1 -1
  44. package/.output/public/_nuxt/{C9cU_Ujd.js → eHYnGew0.js} +1 -1
  45. package/.output/public/_nuxt/{DM4CNkXz.js → eUGyJdiT.js} +1 -1
  46. package/.output/public/_nuxt/{entry.5qf6EqfN.css → entry.Bv_GCmPP.css} +1 -1
  47. package/.output/public/_nuxt/hb_ceMJP.js +1 -0
  48. package/.output/public/_nuxt/{B1g8pJmr.js → kkEthL84.js} +1 -1
  49. package/.output/public/_nuxt/logs.BS1sb41K.css +1 -0
  50. package/.output/public/_nuxt/pages.BkE-AfIb.css +1 -0
  51. package/.output/public/_nuxt/permissions.DTRtZeTw.css +1 -0
  52. package/.output/public/_nuxt/plugins.BcSEwwGb.css +1 -0
  53. package/.output/public/_nuxt/settings.BqMF2nfj.css +1 -0
  54. package/.output/public/_nuxt/tokens.rW1xHxRW.css +1 -0
  55. package/.output/public/_nuxt/workshop.CbymC2LY.css +1 -0
  56. package/.output/public/_nuxt/zVkqCZ78.js +1 -0
  57. package/.output/server/chunks/_/LeftOutlined.mjs +1 -1
  58. package/.output/server/chunks/_/SearchOutlined.mjs +1 -1
  59. package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
  60. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  61. package/.output/server/chunks/_/nitro.mjs +1549 -1228
  62. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  63. package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
  64. package/.output/server/chunks/build/Col-biaNnEPf.mjs +1 -1
  65. package/.output/server/chunks/build/{OmpTerminalPanel-COphA1br.mjs → OmpTerminalPanel-Ban3yJZ4.mjs} +4 -5
  66. package/.output/server/chunks/build/OmpTerminalPanel-Ban3yJZ4.mjs.map +1 -0
  67. package/.output/server/chunks/build/{TownView-D8DSdO3H.mjs → TownView-CunmEMzS.mjs} +8 -9
  68. package/.output/server/chunks/build/{TownView-D8DSdO3H.mjs.map → TownView-CunmEMzS.mjs.map} +1 -1
  69. package/.output/server/chunks/build/{_id_-BV4FfiYd.mjs → _id_-CVnMdSeG.mjs} +7 -7
  70. package/.output/server/chunks/build/{_id_-BV4FfiYd.mjs.map → _id_-CVnMdSeG.mjs.map} +1 -1
  71. package/.output/server/chunks/build/{_id_-TP9hvnBM.mjs → _id_-D265Wh_k.mjs} +7 -7
  72. package/.output/server/chunks/build/{_id_-TP9hvnBM.mjs.map → _id_-D265Wh_k.mjs.map} +1 -1
  73. package/.output/server/chunks/build/{_wsId_-Mm9sQSz2.mjs → _wsId_-eNJmBp05.mjs} +17 -17
  74. package/.output/server/chunks/build/{_wsId_-Mm9sQSz2.mjs.map → _wsId_-eNJmBp05.mjs.map} +1 -1
  75. package/.output/server/chunks/build/{agents-To3a5xcZ.mjs → agents-B10wmFri.mjs} +9 -9
  76. package/.output/server/chunks/build/{agents-To3a5xcZ.mjs.map → agents-B10wmFri.mjs.map} +1 -1
  77. package/.output/server/chunks/build/alert-qJnjyRcP.mjs +1 -1
  78. package/.output/server/chunks/build/api-error-dul30BYQ.mjs +1 -1
  79. package/.output/server/chunks/build/button-DEcZFcqN.mjs +2 -2
  80. package/.output/server/chunks/build/{card-Dipvaykh.mjs → card-CCPQoKlh.mjs} +4 -4
  81. package/.output/server/chunks/build/{card-Dipvaykh.mjs.map → card-CCPQoKlh.mjs.map} +1 -1
  82. package/.output/server/chunks/build/{channel-templates-DRsP-qxl.mjs → channel-templates-CpWxVk5A.mjs} +7 -7
  83. package/.output/server/chunks/build/{channel-templates-DRsP-qxl.mjs.map → channel-templates-CpWxVk5A.mjs.map} +1 -1
  84. package/.output/server/chunks/build/{checkbox-dzcpU_Cd.mjs → checkbox-Dv1kjaUZ.mjs} +3 -3
  85. package/.output/server/chunks/build/{checkbox-dzcpU_Cd.mjs.map → checkbox-Dv1kjaUZ.mjs.map} +1 -1
  86. package/.output/server/chunks/build/client-only-D5BzSQc6.mjs +1 -1
  87. package/.output/server/chunks/build/{daq-_hCEaYLd.mjs → daq-DxaXk_8N.mjs} +9 -10
  88. package/.output/server/chunks/build/daq-DxaXk_8N.mjs.map +1 -0
  89. package/.output/server/chunks/build/{dcw-C7pJ4Y0p.mjs → dcw-B0dtiHFG.mjs} +47 -47
  90. package/.output/server/chunks/build/dcw-B0dtiHFG.mjs.map +1 -0
  91. package/.output/server/chunks/build/{default-Dnjs36e8.mjs → default-DdV642BY.mjs} +41 -13
  92. package/.output/server/chunks/build/{default-Dnjs36e8.mjs.map → default-DdV642BY.mjs.map} +1 -1
  93. package/.output/server/chunks/build/drawer-Cmh90erI.mjs +1 -1
  94. package/.output/server/chunks/build/dropdown-vhn1NPFs.mjs +2 -2
  95. package/.output/server/chunks/build/hasIn-vQ9LWt-J.mjs +554 -0
  96. package/.output/server/chunks/build/hasIn-vQ9LWt-J.mjs.map +1 -0
  97. package/.output/server/chunks/build/initDefaultProps-DIbWwP4R.mjs +1 -1
  98. package/.output/server/chunks/build/{input-sf_BT6o6.mjs → input-DxDqeyQW.mjs} +5 -553
  99. package/.output/server/chunks/build/input-DxDqeyQW.mjs.map +1 -0
  100. package/.output/server/chunks/build/{input-number-Bd55elNN.mjs → input-number-CZ3ZrCsy.mjs} +3 -3
  101. package/.output/server/chunks/build/{input-number-Bd55elNN.mjs.map → input-number-CZ3ZrCsy.mjs.map} +1 -1
  102. package/.output/server/chunks/build/{logs-C039TFW1.mjs → logs-Crf6f1IC.mjs} +39 -40
  103. package/.output/server/chunks/build/logs-Crf6f1IC.mjs.map +1 -0
  104. package/.output/server/chunks/build/menu-WCrlpYVh.mjs +2 -2
  105. package/.output/server/chunks/build/modal-yvUquPj5.mjs +2 -2
  106. package/.output/server/chunks/build/{monitor-MIOvsyLa.mjs → monitor-miqq9xHB.mjs} +11 -11
  107. package/.output/server/chunks/build/{monitor-MIOvsyLa.mjs.map → monitor-miqq9xHB.mjs.map} +1 -1
  108. package/.output/server/chunks/build/{pages-C_VSGSGo.mjs → pages-BmRUbGUi.mjs} +32 -22
  109. package/.output/server/chunks/build/pages-BmRUbGUi.mjs.map +1 -0
  110. package/.output/server/chunks/build/permissions-CxEgXic0.mjs +534 -0
  111. package/.output/server/chunks/build/permissions-CxEgXic0.mjs.map +1 -0
  112. package/.output/server/chunks/build/{plugins-4FMWkN8d.mjs → plugins-wLIKHcIE.mjs} +19 -20
  113. package/.output/server/chunks/build/{plugins-4FMWkN8d.mjs.map → plugins-wLIKHcIE.mjs.map} +1 -1
  114. package/.output/server/chunks/build/popconfirm-CRaHcz5O.mjs +2 -2
  115. package/.output/server/chunks/build/responsiveObserve-CS0UB6wQ.mjs +1 -1
  116. package/.output/server/chunks/build/{segmented-DPe9ZzLO.mjs → segmented-ChmQZwz6.mjs} +5 -4
  117. package/.output/server/chunks/build/{segmented-DPe9ZzLO.mjs.map → segmented-ChmQZwz6.mjs.map} +1 -1
  118. package/.output/server/chunks/build/select-D-CeE5vY.mjs +1 -1
  119. package/.output/server/chunks/build/{settings-DA8IkGLo.mjs → settings-BPBll_7K.mjs} +28 -26
  120. package/.output/server/chunks/build/settings-BPBll_7K.mjs.map +1 -0
  121. package/.output/server/chunks/build/space-CCBYAkXt.mjs +2 -2
  122. package/.output/server/chunks/build/spin-HVY81X_L.mjs +1 -1
  123. package/.output/server/chunks/build/switch-CelRXpcy.mjs +2 -2
  124. package/.output/server/chunks/build/{table-Cswq-l2r.mjs → table-BtksyDlQ.mjs} +5 -5
  125. package/.output/server/chunks/build/{table-Cswq-l2r.mjs.map → table-BtksyDlQ.mjs.map} +1 -1
  126. package/.output/server/chunks/build/{tabs-BM3tAh_J.mjs → tabs-DQv-_-R6.mjs} +3 -3
  127. package/.output/server/chunks/build/{tabs-BM3tAh_J.mjs.map → tabs-DQv-_-R6.mjs.map} +1 -1
  128. package/.output/server/chunks/build/{tag-NO9jEqKy.mjs → tag-A0tZ2Ouq.mjs} +4 -4
  129. package/.output/server/chunks/build/{tag-NO9jEqKy.mjs.map → tag-A0tZ2Ouq.mjs.map} +1 -1
  130. package/.output/server/chunks/build/{teams-DA1lkf1n.mjs → teams-CNflUtPh.mjs} +7 -7
  131. package/.output/server/chunks/build/{teams-DA1lkf1n.mjs.map → teams-CNflUtPh.mjs.map} +1 -1
  132. package/.output/server/chunks/build/{tokens-DKMvvk3e.mjs → tokens-BKLzcdMg.mjs} +53 -84
  133. package/.output/server/chunks/build/tokens-BKLzcdMg.mjs.map +1 -0
  134. package/.output/server/chunks/build/town-BUqRobze.mjs +1 -1
  135. package/.output/server/chunks/build/{town-D0thZ7PK.mjs → town-BbaR-8io.mjs} +9 -10
  136. package/.output/server/chunks/build/town-BbaR-8io.mjs.map +1 -0
  137. package/.output/server/chunks/build/{useDaqStream-BVTRw8_H.mjs → useDaqStream-BkmyQT06.mjs} +34 -23
  138. package/.output/server/chunks/build/useDaqStream-BkmyQT06.mjs.map +1 -0
  139. package/.output/server/chunks/build/{useDcwStream-DNsivqI_.mjs → useDcwStream-DWVoU96J.mjs} +60 -46
  140. package/.output/server/chunks/build/useDcwStream-DWVoU96J.mjs.map +1 -0
  141. package/.output/server/chunks/build/{useDeviceTwins-WeIom7A6.mjs → useDeviceTwins-34WGk9aN.mjs} +2 -2
  142. package/.output/server/chunks/build/{useDeviceTwins-WeIom7A6.mjs.map → useDeviceTwins-34WGk9aN.mjs.map} +1 -1
  143. package/.output/server/chunks/build/useLocalTime-9a4B-aHv.mjs +1 -1
  144. package/.output/server/chunks/build/{useOpsLog-DcKnPO43.mjs → useOpsLog-C9zTzYof.mjs} +27 -15
  145. package/.output/server/chunks/build/useOpsLog-C9zTzYof.mjs.map +1 -0
  146. package/.output/server/chunks/build/useSiteConfig-DJe_KMVr.mjs +1 -1
  147. package/.output/server/chunks/build/useWorkshopApi-D2gq06N2.mjs +1 -1
  148. package/.output/server/chunks/build/{useWorkshopWs-B3j5wIAK.mjs → useWorkshopWs-CprkZEdq.mjs} +2 -3
  149. package/.output/server/chunks/build/useWorkshopWs-CprkZEdq.mjs.map +1 -0
  150. package/.output/server/chunks/build/{users-CmVvb1oq.mjs → users-D6RNylrW.mjs} +10 -10
  151. package/.output/server/chunks/build/{users-CmVvb1oq.mjs.map → users-D6RNylrW.mjs.map} +1 -1
  152. package/.output/server/chunks/build/{workshop-BhWnJMWs.mjs → workshop-CTcYDq2i.mjs} +29 -24
  153. package/.output/server/chunks/build/{workshop-BhWnJMWs.mjs.map → workshop-CTcYDq2i.mjs.map} +1 -1
  154. package/.output/server/chunks/build/{workspaces-IfORCDJE.mjs → workspaces-BuydxM-3.mjs} +2 -3
  155. package/.output/server/chunks/build/workspaces-BuydxM-3.mjs.map +1 -0
  156. package/.output/server/chunks/routes/api/health.get.mjs +1 -1
  157. package/.output/server/chunks/routes/api/index.get.mjs +1 -1
  158. package/.output/server/chunks/routes/api/index.post.mjs +1 -1
  159. package/.output/server/chunks/routes/api/mcp/workshop.mjs +1 -1
  160. package/.output/server/chunks/routes/api/metrics.mjs +1 -1
  161. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +1 -1
  162. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +1 -1
  163. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +1 -1
  164. package/.output/server/chunks/routes/api/system/config.get.mjs +1 -1
  165. package/.output/server/chunks/routes/api/system/index.get.mjs +1 -1
  166. package/.output/server/chunks/routes/api/system/index.patch.mjs +1 -1
  167. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +1 -1
  168. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +1 -1
  169. package/.output/server/chunks/routes/api/system/monitor.get.mjs +1 -1
  170. package/.output/server/chunks/routes/api/system/settings/events.get.mjs +1 -1
  171. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +1 -1
  172. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +1 -1
  173. package/.output/server/chunks/routes/api/users/_id_.get.mjs +1 -1
  174. package/.output/server/chunks/routes/api/users/_id_.put.mjs +1 -1
  175. package/.output/server/chunks/routes/api/users/index.get.mjs +1 -1
  176. package/.output/server/chunks/routes/api/users/index.post.mjs +1 -1
  177. package/.output/server/chunks/routes/api/users/login.post.mjs +1 -1
  178. package/.output/server/chunks/routes/api/users/logout.post.mjs +1 -1
  179. package/.output/server/chunks/routes/api/users/me.get.mjs +1 -1
  180. package/.output/server/chunks/routes/api/users/register.post.mjs +1 -1
  181. package/.output/server/chunks/routes/api/users/setup-status.get.mjs +1 -1
  182. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +1 -1
  183. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +1 -1
  184. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +1 -1
  185. package/.output/server/chunks/routes/api/workshop/_...path_.mjs +1 -1
  186. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +1 -1
  187. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +1 -1
  188. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +1 -1
  189. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +1 -1
  190. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +1 -1
  191. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +1 -1
  192. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +1 -1
  193. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +19 -8
  194. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
  195. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +1 -1
  196. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +2 -2
  197. package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +2 -2
  198. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +1 -1
  199. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +1 -1
  200. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +1 -1
  201. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +1 -1
  202. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +1 -1
  203. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +1 -1
  204. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +1 -1
  205. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +1 -1
  206. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +2 -2
  207. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +1 -1
  208. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +2 -2
  209. package/.output/server/chunks/routes/api/workshop/audit.get.mjs +1 -1
  210. package/.output/server/chunks/routes/api/workshop/caller.mjs +1 -1
  211. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +3 -3
  212. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +1 -1
  213. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +1 -1
  214. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +1 -1
  215. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +1 -1
  216. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +2 -2
  217. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +1 -1
  218. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +1 -1
  219. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +1 -1
  220. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +1 -1
  221. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +1 -1
  222. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +1 -1
  223. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +1 -1
  224. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +1 -1
  225. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +1 -1
  226. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +1 -1
  227. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +1 -1
  228. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +1 -1
  229. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +2 -2
  230. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +1 -1
  231. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +1 -1
  232. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +1 -1
  233. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +1 -1
  234. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +1 -1
  235. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +1 -1
  236. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +1 -1
  237. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +1 -1
  238. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +2 -2
  239. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +1 -1
  240. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +2 -2
  241. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +1 -1
  242. package/.output/server/chunks/routes/api/workshop/channels.get.mjs +1 -1
  243. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +3 -3
  244. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +7 -6
  245. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs.map +1 -1
  246. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +5 -4
  247. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs.map +1 -1
  248. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +5 -4
  249. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs.map +1 -1
  250. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +5 -4
  251. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs.map +1 -1
  252. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +2 -2
  253. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +2 -2
  254. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +5 -4
  255. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs.map +1 -1
  256. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +5 -2
  257. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs.map +1 -1
  258. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +2 -2
  259. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +3 -2
  260. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs.map +1 -1
  261. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +2 -2
  262. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +2 -2
  263. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +2 -2
  264. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +2 -2
  265. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +2 -2
  266. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +2 -2
  267. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +7 -6
  268. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs.map +1 -1
  269. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +2 -2
  270. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +2 -2
  271. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +5 -4
  272. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs.map +1 -1
  273. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +4 -3
  274. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs.map +1 -1
  275. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +2 -2
  276. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +2 -2
  277. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +2 -2
  278. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +2 -2
  279. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +4 -4
  280. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs.map +1 -1
  281. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +8 -4
  282. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs.map +1 -1
  283. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +4 -4
  284. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs.map +1 -1
  285. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +2 -2
  286. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +2 -2
  287. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +2 -2
  288. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +2 -2
  289. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +4 -4
  290. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs.map +1 -1
  291. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +2 -2
  292. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +7 -3
  293. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs.map +1 -1
  294. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +3 -2
  295. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs.map +1 -1
  296. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +3 -2
  297. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs.map +1 -1
  298. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +2 -2
  299. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +2 -2
  300. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +2 -2
  301. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +2 -2
  302. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +2 -2
  303. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +2 -2
  304. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +2 -2
  305. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +2 -2
  306. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +2 -2
  307. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +2 -2
  308. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +2 -2
  309. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +2 -2
  310. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.patch.mjs +2 -2
  311. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +2 -2
  312. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +5 -3
  313. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs.map +1 -1
  314. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +2 -2
  315. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +2 -2
  316. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +2 -2
  317. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +2 -2
  318. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +1 -1
  319. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +1 -1
  320. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +2 -2
  321. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +2 -2
  322. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +1 -1
  323. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +2 -2
  324. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +2 -2
  325. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +2 -2
  326. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +2 -2
  327. package/.output/server/chunks/routes/api/workshop/index.get.mjs +1 -1
  328. package/.output/server/chunks/routes/api/workshop/index.post.mjs +1 -1
  329. package/.output/server/chunks/routes/api/workshop/index.put.mjs +41 -0
  330. package/.output/server/chunks/routes/api/workshop/index.put.mjs.map +1 -0
  331. package/.output/server/chunks/routes/api/workshop/index10.get.mjs +4 -3
  332. package/.output/server/chunks/routes/api/workshop/index10.get.mjs.map +1 -1
  333. package/.output/server/chunks/routes/api/workshop/index11.get.mjs +27 -0
  334. package/.output/server/chunks/routes/api/workshop/index11.get.mjs.map +1 -0
  335. package/.output/server/chunks/routes/api/workshop/index2.get.mjs +1 -1
  336. package/.output/server/chunks/routes/api/workshop/index2.post.mjs +1 -1
  337. package/.output/server/chunks/routes/api/workshop/index3.get.mjs +1 -1
  338. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +4 -4
  339. package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
  340. package/.output/server/chunks/routes/api/workshop/index4.get.mjs +5 -4
  341. package/.output/server/chunks/routes/api/workshop/index4.get.mjs.map +1 -1
  342. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +2 -2
  343. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +18 -11
  344. package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
  345. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +2 -2
  346. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +1 -1
  347. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +2 -2
  348. package/.output/server/chunks/routes/api/workshop/index7.get.mjs +1 -1
  349. package/.output/server/chunks/routes/api/workshop/index7.post.mjs +1 -1
  350. package/.output/server/chunks/routes/api/workshop/index8.get.mjs +24 -12
  351. package/.output/server/chunks/routes/api/workshop/index8.get.mjs.map +1 -1
  352. package/.output/server/chunks/routes/api/workshop/index8.post.mjs +1 -1
  353. package/.output/server/chunks/routes/api/workshop/index9.get.mjs +12 -7
  354. package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
  355. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +1 -1
  356. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +1 -1
  357. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +1 -1
  358. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +2 -2
  359. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +2 -2
  360. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +1 -1
  361. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +1 -1
  362. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +2 -2
  363. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +2 -2
  364. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +1 -1
  365. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +1 -1
  366. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +1 -1
  367. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +1 -1
  368. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +1 -1
  369. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +1 -1
  370. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +1 -1
  371. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +1 -1
  372. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +2 -2
  373. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +1 -1
  374. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +1 -1
  375. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +1 -1
  376. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +1 -1
  377. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +1 -1
  378. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +1 -1
  379. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +1 -1
  380. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +1 -1
  381. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +3 -3
  382. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +1 -1
  383. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +1 -1
  384. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +1 -1
  385. package/.output/server/chunks/routes/renderer.mjs +3 -3
  386. package/.output/server/chunks/virtual/entry.mjs +275 -33
  387. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  388. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  389. package/.output/server/index.mjs +1 -1
  390. package/.output/server/package.json +1 -1
  391. package/README-zh.md +15 -0
  392. package/README.md +20 -0
  393. package/app/assets/css/main.css +161 -0
  394. package/app/components/AppSidebar.vue +7 -1
  395. package/app/components/AwChart.vue +12 -2
  396. package/app/composables/useRouteMeta.ts +8 -1
  397. package/app/composables/workshop/apiClient.ts +103 -95
  398. package/app/composables/workshop/useDaqStream.ts +35 -21
  399. package/app/composables/workshop/useDcwStream.ts +22 -5
  400. package/app/composables/workshop/useOpsLog.ts +26 -13
  401. package/app/composables/workshop/useWorkshopWs.ts +11 -2
  402. package/app/pages/dcw/index.vue +1079 -1079
  403. package/app/pages/index.vue +7 -2
  404. package/app/pages/logs/index.vue +621 -621
  405. package/app/pages/permissions/index.vue +330 -0
  406. package/app/pages/plugins/index.vue +6 -3
  407. package/app/pages/settings.vue +4 -2
  408. package/app/pages/tokens.vue +9 -13
  409. package/app/pages/workshop/index.vue +3 -1
  410. package/app/plugins/http.ts +18 -2
  411. package/app/plugins/session-restore.client.ts +7 -2
  412. package/app/stores/workshop/user.ts +14 -1
  413. package/i18n/locales/en.ts +1944 -1906
  414. package/i18n/locales/zh-CN.ts +1943 -1905
  415. package/package.json +1 -1
  416. package/scripts/_dbg-acc-1-setup.mjs +57 -0
  417. package/scripts/_dbg-acc-2-diag.mjs +14 -0
  418. package/scripts/_dbg-acc-2-intervals.mjs +81 -0
  419. package/scripts/_dbg-acc-3-daq.mjs +48 -0
  420. package/scripts/_dbg-acc-4-team.mjs +92 -0
  421. package/scripts/_dbg-acc-5-visual.mjs +63 -0
  422. package/scripts/_dbg-acc-5b-ws-town.mjs +18 -0
  423. package/scripts/_dbg-acc-5c-town.mjs +12 -0
  424. package/scripts/_dbg-acc-6-i18n.mjs +19 -0
  425. package/scripts/_dbg-audit-neg-e2e.mjs +64 -0
  426. package/scripts/_dbg-final-features.mjs +155 -0
  427. package/scripts/_dbg-final-fixups.mjs +62 -0
  428. package/scripts/_dbg-final-visual.mjs +29 -0
  429. package/scripts/_dbg-kicker-check.mjs +11 -0
  430. package/scripts/_dbg-perms-e2e.mjs +102 -0
  431. package/scripts/_dbg-perms-visual.mjs +36 -0
  432. package/scripts/_dbg-plugins-e2e.mjs +1 -1
  433. package/scripts/_dbg-protocol-matrix.mjs +16 -0
  434. package/scripts/_dbg-swatch-check.mjs +10 -0
  435. package/scripts/_dbg-ui-shots.mjs +28 -0
  436. package/sdk/api.mjs +117 -101
  437. package/sdk/context.mjs +240 -219
  438. package/sdk/hooks.mjs +105 -103
  439. package/sdk/index.d.mts +142 -135
  440. package/sdk/lifecycle.mjs +26 -25
  441. package/server/api/workshop/agent-tools/bindings/index.post.ts +40 -20
  442. package/server/api/workshop/daq/[id]/bind.post.ts +5 -2
  443. package/server/api/workshop/daq/[id]/frames/content.get.ts +4 -1
  444. package/server/api/workshop/daq/[id]/frames.get.ts +4 -1
  445. package/server/api/workshop/daq/[id]/samples.get.ts +4 -1
  446. package/server/api/workshop/daq/[id].patch.ts +3 -0
  447. package/server/api/workshop/daq/alarms/[id]/ack.post.ts +20 -15
  448. package/server/api/workshop/daq/controller.post.ts +2 -0
  449. package/server/api/workshop/daq/index.get.ts +5 -3
  450. package/server/api/workshop/daq/index.post.ts +2 -2
  451. package/server/api/workshop/dcw/[id]/bind.post.ts +20 -17
  452. package/server/api/workshop/dcw/[id]/test.post.ts +18 -15
  453. package/server/api/workshop/dcw/[id]/write.post.ts +3 -0
  454. package/server/api/workshop/dcw/index.get.ts +22 -9
  455. package/server/api/workshop/dcw/line/query.get.ts +38 -31
  456. package/server/api/workshop/dcw/lines/[id]/start.post.ts +3 -0
  457. package/server/api/workshop/dcw/lines/[id]/stop.post.ts +3 -0
  458. package/server/api/workshop/dcw/lines/index.get.ts +8 -2
  459. package/server/api/workshop/dcw/lines/index.post.ts +2 -2
  460. package/server/api/workshop/dcw/products/index.post.ts +16 -16
  461. package/server/api/workshop/dcw/runs/[id]/data.get.ts +20 -15
  462. package/server/api/workshop/dcw/runs/index.get.ts +13 -11
  463. package/server/api/workshop/permissions/index.get.ts +30 -0
  464. package/server/api/workshop/permissions/index.put.ts +29 -0
  465. package/server/api/workshop/ws.ts +18 -6
  466. package/server/data/daqs.json +48 -48
  467. package/server/data/dcw-products.json +21 -0
  468. package/server/data/dcw-recipes.json +84 -0
  469. package/server/data/dcw-rollback.json +94 -6
  470. package/server/data/dcw-runs.json +81 -75
  471. package/server/data/dcw-writes.json +108 -0
  472. package/server/data/dcws.json +791 -528
  473. package/server/data/line-runs.json +8 -8
  474. package/server/plugins/backup.ts +119 -116
  475. package/server/repositories/user.repository.ts +86 -6
  476. package/server/services/user.service.ts +5 -3
  477. package/server/services/workshop/daq/bus/index.ts +5 -3
  478. package/server/services/workshop/daq/bus/inproc.adapter.ts +12 -3
  479. package/server/services/workshop/daq/bus/mqtt.adapter.ts +13 -0
  480. package/server/services/workshop/daq/bus/queue-port.ts +2 -0
  481. package/server/services/workshop/daq/daq-controller.ts +18 -1
  482. package/server/services/workshop/db/ops.repo.ts +6 -0
  483. package/server/services/workshop/dcw/dcw-controller.ts +10 -2
  484. package/server/services/workshop/permissions.ts +79 -0
  485. package/server/services/workshop/plugins/host.mjs +38 -1
  486. package/server/services/workshop/scene-events.ts +25 -1
  487. package/shared/config/single-instance.mjs +24 -0
  488. package/shared/daq-protocol.ts +2 -0
  489. package/.output/public/_nuxt/B0HpdCKS.js +0 -1
  490. package/.output/public/_nuxt/B1kA8LhC.js +0 -14
  491. package/.output/public/_nuxt/B9MUiDFl.js +0 -1
  492. package/.output/public/_nuxt/B9dLFSYI.js +0 -1
  493. package/.output/public/_nuxt/BaMkWl5i2.js +0 -1
  494. package/.output/public/_nuxt/BmHvC_OU.js +0 -1
  495. package/.output/public/_nuxt/CBciOiTQ.js +0 -1
  496. package/.output/public/_nuxt/CUMdhxg9.js +0 -1
  497. package/.output/public/_nuxt/CgvGu2IO.js +0 -1
  498. package/.output/public/_nuxt/CjDQPXfv.js +0 -1
  499. package/.output/public/_nuxt/CmHzfVc5.js +0 -3
  500. package/.output/public/_nuxt/Cn3J3NXR.js +0 -23
  501. package/.output/public/_nuxt/Cst47G4-.js +0 -1
  502. package/.output/public/_nuxt/D0Szyn_D.js +0 -1
  503. package/.output/public/_nuxt/D3VJ3lex.js +0 -1
  504. package/.output/public/_nuxt/D8wyHvcz2.js +0 -1
  505. package/.output/public/_nuxt/Dqj2h40U.js +0 -1
  506. package/.output/public/_nuxt/OV6PBW2z.js +0 -1
  507. package/.output/public/_nuxt/builds/meta/92d6bd39-dbc5-46d5-90d8-8387f36715fa.json +0 -1
  508. package/.output/public/_nuxt/dcw.DcDjwvqv.css +0 -1
  509. package/.output/public/_nuxt/logs.BO-BSyjm.css +0 -1
  510. package/.output/public/_nuxt/pKv_VWR4.js +0 -1
  511. package/.output/public/_nuxt/pages.CytEOfUs.css +0 -1
  512. package/.output/public/_nuxt/plugins.Clsky_kl.css +0 -1
  513. package/.output/public/_nuxt/settings.DeRNNUcP.css +0 -1
  514. package/.output/public/_nuxt/tokens.BPLe9ioQ.css +0 -1
  515. package/.output/public/_nuxt/wirVyscc.js +0 -1
  516. package/.output/public/_nuxt/workshop.BIdoGfoC.css +0 -1
  517. package/.output/server/chunks/build/OmpTerminalPanel-COphA1br.mjs.map +0 -1
  518. package/.output/server/chunks/build/daq-_hCEaYLd.mjs.map +0 -1
  519. package/.output/server/chunks/build/dcw-C7pJ4Y0p.mjs.map +0 -1
  520. package/.output/server/chunks/build/input-sf_BT6o6.mjs.map +0 -1
  521. package/.output/server/chunks/build/logs-C039TFW1.mjs.map +0 -1
  522. package/.output/server/chunks/build/pages-C_VSGSGo.mjs.map +0 -1
  523. package/.output/server/chunks/build/settings-DA8IkGLo.mjs.map +0 -1
  524. package/.output/server/chunks/build/tokens-DKMvvk3e.mjs.map +0 -1
  525. package/.output/server/chunks/build/town-D0thZ7PK.mjs.map +0 -1
  526. package/.output/server/chunks/build/useDaqStream-BVTRw8_H.mjs.map +0 -1
  527. package/.output/server/chunks/build/useDcwStream-DNsivqI_.mjs.map +0 -1
  528. package/.output/server/chunks/build/useOpsLog-DcKnPO43.mjs.map +0 -1
  529. package/.output/server/chunks/build/useWorkshopWs-B3j5wIAK.mjs.map +0 -1
  530. package/.output/server/chunks/build/user-Dk-ytEUV.mjs +0 -140
  531. package/.output/server/chunks/build/user-Dk-ytEUV.mjs.map +0 -1
  532. package/.output/server/chunks/build/workspaces-IfORCDJE.mjs.map +0 -1
  533. /package/.output/public/_nuxt/{CNs_Ozdc2.js → CNs_Ozdc.js} +0 -0
  534. /package/.output/public/_nuxt/{Cno6kYiO2.js → Cno6kYiO.js} +0 -0
@@ -193,6 +193,7 @@ class DcwController {
193
193
  this.broadcast?.('dcw.written', {
194
194
  nodeId: node.id,
195
195
  templateRef: node.templateRef,
196
+ lineId: node.lineId ?? null,
196
197
  value: node.value ?? eng,
197
198
  raw: outcome.raw,
198
199
  ok: outcome.ok,
@@ -234,6 +235,7 @@ class DcwController {
234
235
  this.broadcast?.('dcw.read', {
235
236
  nodeId: node.id,
236
237
  templateRef: node.templateRef,
238
+ lineId: node.lineId ?? null,
237
239
  value,
238
240
  raw: r.raw,
239
241
  ok: r.ok,
@@ -864,9 +866,16 @@ class DcwController {
864
866
  await tsdbReady
865
867
  const bucketMs = endMs - startMs > 60_000 ? Math.max(1000, Math.round((endMs - startMs) / 200)) : undefined
866
868
  const daq = [] as Array<{ templateRef: string, nodeId: string, nodeName: string, ch: string, unit: string, latest: number | null, avg: number | null, min: number | null, max: number | null, cnt: number }>
867
- for (const node of getDaqNodeRepo().all()) {
869
+ // 并行查询(tsdb 往返一次/节点,互不依赖):N+1 串行会让 50 节点产线的批次视图放大 50 倍时延
870
+ const results = await Promise.all(getDaqNodeRepo().all().map(async (node) => {
868
871
  try {
869
872
  const points = await getTsdb().query(node.id, { fromMs: startMs, toMs: endMs, bucketMs, limit: 500 })
873
+ return { node, points }
874
+ }
875
+ catch { return { node, points: [] } } // 单节点查询失败不阻塞整体
876
+ }))
877
+ for (const { node, points } of results) {
878
+ {
870
879
  if (points.length === 0) continue
871
880
  const values = points.map(p => p.value ?? p.avg ?? 0).filter(v => Number.isFinite(v))
872
881
  if (values.length === 0) continue
@@ -884,7 +893,6 @@ class DcwController {
884
893
  cnt: values.length,
885
894
  })
886
895
  }
887
- catch { /* 单节点查询失败不阻塞整体 */ }
888
896
  }
889
897
  return { run, daq, writes }
890
898
  }
@@ -0,0 +1,79 @@
1
+ /**
2
+ * 产线级权限服务 —— 用户 × 产线的三态访问控制(none / readonly / operate)。
3
+ *
4
+ * 模型:
5
+ * - admin / editor:全量全权(运营管理角色,不受 grant 约束);
6
+ * - user(普通用户):默认无任何产线权限,由管理员在权限管理页逐线授予:
7
+ * readonly = 仅查看(数采节点读取;无数控/写向能力)
8
+ * operate = 可操控(数采读取 + 数控写向 + 产线操作全量)
9
+ * 无记录 = none(后端数据面直接不返回该产线信息)。
10
+ *
11
+ * 消费方:
12
+ * - dcw/daq 列表 API(可见性过滤);
13
+ * - dcw 写控 / 数采下发 / 产线启停(操控能力校验);
14
+ * - agent-node-bindings 绑定校验(只能绑定有权产线的节点);
15
+ * - 插件 ctx.permissions(SDK 拓展面,见 plugins/host.mjs)。
16
+ * 权限变更广播:scene-events 'permissions.changed' + 插件钩子 'permissions:changed'。
17
+ */
18
+ import { userRepository } from '@/server/repositories/user.repository'
19
+ import { AppError } from '@/server/utils/errors'
20
+ import type { ResolvedUser } from '@/server/api/workshop/caller'
21
+
22
+ export type LineMode = 'none' | 'readonly' | 'operate'
23
+ export type GrantMode = 'readonly' | 'operate'
24
+
25
+ /** 管理角色(admin/editor)不受产线 grant 约束 */
26
+ export function isPrivilegedRole(user: { role: string } | null | undefined): boolean {
27
+ return user?.role === 'admin' || user?.role === 'editor'
28
+ }
29
+
30
+ /** 用户对某产线的有效访问模式 */
31
+ export function lineMode(user: ResolvedUser | { id: string, role: string }, lineId: string | null | undefined): LineMode {
32
+ if (!lineId) return isPrivilegedRole(user) ? 'operate' : 'none'
33
+ if (isPrivilegedRole(user)) return 'operate'
34
+ const grant = userRepository.lineAccessMap(user.id).get(lineId)
35
+ return grant === 'operate' ? 'operate' : grant === 'readonly' ? 'readonly' : 'none'
36
+ }
37
+
38
+ /** 可见产线集合:null = 不限(admin/editor);否则为授权产线 id 集(普通用户) */
39
+ export function visibleLineIds(user: { id: string, role: string }): Set<string> | null {
40
+ if (isPrivilegedRole(user)) return null
41
+ return new Set(userRepository.lineAccessMap(user.id).keys())
42
+ }
43
+
44
+ /** 按 lineId 过滤实体列表(admin/editor 原样返回) */
45
+ export function filterByLine<T>(user: { id: string, role: string }, items: T[], lineIdOf: (item: T) => string | null | undefined): T[] {
46
+ const visible = visibleLineIds(user)
47
+ if (!visible) return items
48
+ return items.filter((it) => {
49
+ const lid = lineIdOf(it)
50
+ return lid != null && visible.has(lid)
51
+ })
52
+ }
53
+
54
+ /** 操控能力校验:need='operate' 时 readonly/none 均拒;need='readonly' 时 none 拒 */
55
+ export function requireLineMode(user: { id: string, role: string }, lineId: string | null | undefined, need: 'readonly' | 'operate'): LineMode {
56
+ const mode = lineMode(user, lineId)
57
+ if (mode === 'operate' || (need === 'readonly' && mode === 'readonly')) return mode
58
+ if (mode === 'readonly') {
59
+ throw new AppError(403, 'LINE_READONLY', '该产线为仅查看权限:只读数采可见,写控/操作需管理员授予「可操控」')
60
+ }
61
+ throw new AppError(403, 'LINE_FORBIDDEN', `无该产线权限:请联系管理员在「权限管理」中授予(产线 ${lineId ?? '?'})`)
62
+ }
63
+
64
+ /** 权限变更广播(scene-events + 插件钩子),前端/插件据此刷新授权视图 */
65
+ export function notifyGrantsChanged(userId: string): void {
66
+ try {
67
+ // 延迟动态导入避免与 scene-events 循环依赖
68
+ void import('@/server/services/workshop/scene-events').then((m) => {
69
+ m.broadcastSceneEvent('permissions.changed', { userId, at: new Date().toISOString() })
70
+ }).catch(() => {})
71
+ }
72
+ catch { /* 广播失败不影响授权写入 */ }
73
+ try {
74
+ void import('@/server/services/workshop/plugins/host.mjs').then((m) => {
75
+ void m.emitPluginEvent('permissions:changed', { userId })
76
+ }).catch(() => {})
77
+ }
78
+ catch { /* 插件钩子失败不影响授权写入 */ }
79
+ }
@@ -19,6 +19,23 @@ import { dirname, join, resolve } from 'node:path'
19
19
  import { pathToFileURL } from 'node:url'
20
20
  import { HookBus, createPluginContext, createRouteTable, validatePluginModule } from '@/sdk/index.mjs'
21
21
 
22
+ // 延迟解析的产线权限服务(esbuild/别名下避免 nitro 打包循环导入;失败降级为拒绝一切)
23
+ let permissions = null
24
+ let userRepository = null
25
+ async function loadPermissions() {
26
+ if (permissions) return
27
+ try {
28
+ permissions = await import('@/server/services/workshop/permissions')
29
+ userRepository = await import('@/server/repositories/user.repository').then(m => m.userRepository)
30
+ }
31
+ catch (err) {
32
+ hostLoggerFallback()?.warn('权限服务加载失败(插件 ctx.permissions 降级):', err?.message)
33
+ }
34
+ }
35
+ function hostLoggerFallback() {
36
+ return globalThis.__awPluginHost?.logger ?? console
37
+ }
38
+
22
39
  const g = globalThis
23
40
 
24
41
  function log() {
@@ -163,6 +180,9 @@ async function loadAllPlugins(host, { config, paths }) {
163
180
  const disabled = readDisabledSet(homeDir)
164
181
  host.disabledSet = disabled
165
182
 
183
+ // 产线权限服务(ctx.permissions 注入用;失败降级)
184
+ await loadPermissions()
185
+
166
186
  const entries = discoverPluginDirs(host.cwd)
167
187
  if (entries.length) host.logger.info(`发现 ${entries.length} 个插件(停用 ${disabled.size}),开始装载 ...`)
168
188
 
@@ -249,6 +269,20 @@ async function loadAllPlugins(host, { config, paths }) {
249
269
  return fn
250
270
  },
251
271
  selfOrigin: () => selfOriginRef(host),
272
+ // 产线权限拓展面(SDK ctx.permissions):插件可查询/管理用户×产线授权
273
+ permissions: {
274
+ lineMode: (user, lineId) => permissions.lineMode(user, lineId),
275
+ visibleLineIds: user => permissions.visibleLineIds(user),
276
+ listGrants: userId => userRepository.listGrants(userId),
277
+ setGrants: (userId, entries, grantedBy = 'plugin') => {
278
+ for (const g of (entries ?? [])) {
279
+ if (!g?.lineId) continue
280
+ userRepository.setGrant(userId, String(g.lineId), (g.mode ?? null), grantedBy)
281
+ }
282
+ permissions.notifyGrantsChanged(userId)
283
+ return userRepository.listGrants(userId)
284
+ },
285
+ },
252
286
  })
253
287
  // DAQ 扩展面(v2 帧管线):插件注册自定义驱动与下沉处理器。
254
288
  // 桥经 globalThis 排队 —— daq 模块晚于插件宿主装载时,注册项先排队、
@@ -393,7 +427,10 @@ function ensureStateWatcher(host) {
393
427
  mkdirSync(dirname(statePath), { recursive: true })
394
428
  if (!existsSync(statePath)) writeDisabledSet(modePaths(host.cwd).homeDir, new Set())
395
429
  let debounce = null
396
- watch(statePath, () => {
430
+ // watch 目录而非文件:writeDisabledSet 用 rename 原子替换,POSIX 的文件级
431
+ // watch 挂在旧 inode 上,首次启停后静默失效;目录监听对 rename 稳定
432
+ watch(dirname(statePath), (_event, filename) => {
433
+ if (filename && filename !== 'plugins-state.json') return
397
434
  clearTimeout(debounce)
398
435
  debounce = setTimeout(() => {
399
436
  void reloadPluginHost()
@@ -26,6 +26,27 @@ function peers(): Set<WsPeer> {
26
26
  return g.__sceneEventPeers ??= new Set()
27
27
  }
28
28
 
29
+ /**
30
+ * per-peer 产线可见集(鉴权后由 ws 路由写入):
31
+ * undefined/null = 不限(admin/editor 或无产线维度帧场景)
32
+ * Set<lineId> = 仅授权产线的 scene 帧可见(数据面强制,与 REST 同口径)
33
+ */
34
+ export function setPeerVisibleLines(peer: WsPeer, visible: Set<string> | null): void {
35
+ (peer as WsPeer & { __awVisibleLines?: Set<string> | null }).__awVisibleLines = visible
36
+ }
37
+
38
+ function peerSeesLine(peer: WsPeer, lineId: string): boolean {
39
+ const visible = (peer as WsPeer & { __awVisibleLines?: Set<string> | null }).__awVisibleLines
40
+ if (visible == null) return true
41
+ return visible.has(lineId)
42
+ }
43
+
44
+ /** 帧产线归属:payload.lineId(daع.reading/frame、dcw.written/read 等);undefined = 线无关帧 */
45
+ function payloadLineId(payload: unknown): string | undefined {
46
+ const lid = (payload as { lineId?: unknown } | null)?.lineId
47
+ return typeof lid === 'string' && lid !== '' ? lid : undefined
48
+ }
49
+
29
50
  export function registerScenePeer(peer: WsPeer): void {
30
51
  peers().add(peer)
31
52
  }
@@ -40,13 +61,16 @@ export function sceneEventPeerCount(): number {
40
61
 
41
62
  /** 全员直推(channelId='' 不落库;死连接静默剔除)。
42
63
  * 信封序列化一次、全 peer 复用:dag 遥测经此出口 N 节点×P 页面/秒高频扇出,
43
- * per-peer 重复 stringify 是纯浪费。 */
64
+ * per-peer 重复 stringify 是纯浪费。
65
+ * 鉴权扇出:带 lineId 的帧按 peer 可见集过滤(未鉴权 peer 不会注册到本表)。 */
44
66
  export function broadcastSceneEvent(type: string, payload: unknown): void {
45
67
  // 插件宿主事件桥(event:<type> 钩子;宿主未装载时 no-op)——先于 peers 短路,插件不依赖在线页面
46
68
  emitPluginEvent(type, payload)
47
69
  if (peers().size === 0) return
70
+ const lineId = payloadLineId(payload)
48
71
  const frame = JSON.stringify({ v: AEP_VERSION, type, seq: 0, at: new Date().toISOString(), channelId: '', payload })
49
72
  for (const peer of peers()) {
73
+ if (lineId !== undefined && !peerSeesLine(peer, lineId)) continue
50
74
  try {
51
75
  peer.send(frame)
52
76
  }
@@ -22,13 +22,37 @@ function pidAlive(pid) {
22
22
 
23
23
  const waitSync = ms => Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms)
24
24
 
25
+ /**
26
+ * 校验目标 pid 是否真属本应用(锁文件 stale 后 PID 可能被无关进程复用,
27
+ * taskkill /T /F 打错目标是不可逆事故)。按进程命令行指纹匹配。
28
+ */
29
+ async function pidLooksLikeAw(pid) {
30
+ try {
31
+ if (process.platform === 'win32') {
32
+ const { spawnSync } = await import('node:child_process')
33
+ const r = spawnSync('powershell', ['-NoProfile', '-Command',
34
+ `(Get-CimInstance Win32_Process -Filter 'ProcessId=${Number(pid)}').CommandLine`], { encoding: 'utf8', timeout: 8000 })
35
+ const line = String(r.stdout ?? '')
36
+ return /node|aw|agentworkshop/i.test(line) && /start\.mjs|aw\.mjs|\.output/i.test(line)
37
+ }
38
+ const fs = await import('node:fs')
39
+ const line = fs.readFileSync(`/proc/${pid}/cmdline`, 'utf8').replace(/\0/g, ' ')
40
+ return /node|aw|agentworkshop/i.test(line)
41
+ }
42
+ catch {
43
+ return false // 无法确认:宁可放弃顶替,不冒杀错风险
44
+ }
45
+ }
46
+
25
47
  /**
26
48
  * 终止进程树并等待其死亡(供 `aw stop` 与 start 的"顶掉旧实例"共用)。
27
49
  * Windows:taskkill /T /F;POSIX:SIGTERM 宽限 5s → SIGKILL。
50
+ * PID 复用防护:强杀前校验目标命令行确实属于本应用,不像则拒绝并交由调用方报错。
28
51
  * @returns {Promise<boolean>} 是否已确认死亡
29
52
  */
30
53
  export async function terminatePid(pid) {
31
54
  if (!pidAlive(pid)) return true
55
+ if (!(await pidLooksLikeAw(pid))) return false
32
56
  if (process.platform === 'win32') {
33
57
  const { spawnSync } = await import('node:child_process')
34
58
  const r = spawnSync('taskkill', ['/PID', String(pid), '/T', '/F'], { encoding: 'utf8' })
@@ -410,6 +410,8 @@ export interface AepDaqReading {
410
410
  value: number
411
411
  state: DaqNodeState
412
412
  at: string
413
+ /** 所属产线(WS 鉴权扇出按线过滤;未挂线 = null,全员可见) */
414
+ lineId?: string | null
413
415
  }
414
416
 
415
417
  /** daq.frame 帧载荷(向量/图像帧实时下发;不含原始 blob —— 向量仅 ≤64 点预览,图像仅缩略图 URL) */
@@ -1 +0,0 @@
1
- import{K as e}from"./rqZ-1SoP.js";import{C as t,H as n,Ht as r,St as i,Wt as a,a as o,b as s,et as c,f as l,g as u,h as d,lt as f,m as p,mt as m,nt as h,p as g,t as _,x as v}from"./BSCpFtzG.js";import{d as ee}from"./-6OnbLFb.js";import{n as y}from"./B5S_UyaC.js";import{n as b}from"./BeIfu4N3.js";import{t as te}from"./VLI2Zy4t.js";import{t as ne}from"./MyA0Oeqd.js";import{r as x}from"./D-Ca4BGY.js";import{t as re}from"./Cn3J3NXR.js";import{t as S}from"./BCJFMBQ6.js";import{t as C}from"./BDASpD_i.js";import{t as w}from"./OV6PBW2z.js";import{t as T}from"./6PZPfFcO.js";import{t as ie}from"./D3VJ3lex.js";import{t as ae}from"./C9f8QMp12.js";import{t as E}from"./BaMkWl5i2.js";import{t as D}from"./G0qIw7Gq2.js";import{t as O}from"./CNs_Ozdc2.js";var oe={class:`page`},se={key:0,class:`auth-gate`},ce={class:`sub`},le={class:`head`},ue={class:`sub`},de={class:`font-medium`},fe={key:1,class:`tok-cell`},pe=[`title`],me={class:`once-banner`},he={class:`raw-row`},ge={class:`raw`},_e=[`title`],ve=[`title`],ye={class:`once-meta`},k=_(t({__name:`tokens`,setup(t){let{t:_}=b();O({layout:`default`});let k=E(),A=m([]),j=m(!1),M=m(!1),N=m(``),P=m(!1),F=m(``),I=m(``),L=m(!1),R=m(``),z=m(``),B=m(!1),V=async()=>{if(k.isLoggedIn){j.value=!0;try{A.value=await k.listTokens()}catch(e){x.error(e instanceof Error?e.message:_(`tokens.k19jvk54013`))}finally{j.value=!1}}};c(()=>k.isLoggedIn,e=>{e?V():A.value=[]},{immediate:!0});let H=async()=>{P.value=!0;try{let e=await k.createToken(N.value);F.value=e.token,I.value=N.value,M.value=!1,N.value=``,await V()}catch(e){x.error(D(e))}finally{P.value=!1}},U=async()=>{if(!z.value.trim()){x.warning(_(`tokens.k169z26g014`));return}B.value=!0;try{await k.renameToken(R.value,z.value),L.value=!1,await V(),x.success(_(`tokens.k3n9aij015`))}catch(e){x.error(D(e))}finally{B.value=!1}},be=e=>{let t=e.id;if(!t)return;let n=t===k.user?.tokenId;(async()=>{try{if(await k.revokeToken(t),x.success(_(`tokens.k3n64kh016`)),n)return;await V()}catch(e){x.error(D(e))}})()},W=m(!1),G=m(!1),xe=l(()=>{let e=F.value;return e?`${e.slice(0,6)}${`•`.repeat(Math.max(12,e.length-10))}${e.slice(-4)}`:``}),Se=()=>{W.value=!W.value},K=async e=>{try{return await navigator.clipboard.writeText(e),!0}catch{try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}},Ce=async()=>{await K(F.value)?(G.value=!0,setTimeout(()=>{G.value=!1},1600)):x.error(_(`tokens.kjtcn2h017`))},q=()=>{F.value=``,W.value=!1,G.value=!1},J=m({}),Y=m(``),X=m(``),Z=e=>e in J.value,we=e=>Z(e.id)?J.value[e.id]:e.preview??`ut-${`•`.repeat(14)}`,Q=async e=>{if(Z(e.id)){Reflect.deleteProperty(J.value,e.id);return}if(!e.hasPlain){x.warning(_(`tokens.kkpgzo8018`));return}Y.value=e.id;try{let t=await k.revealToken(e.id);t&&(J.value[e.id]=t)}catch(e){x.error(e instanceof Error?e.message:_(`tokens.k1gj9ls019`))}finally{Y.value=``}},Te=async e=>{let t=J.value[e.id]??null;if(!t){if(!e.hasPlain){x.warning(_(`tokens.kr5ovor020`));return}Y.value=e.id;try{t=await k.revealToken(e.id)}catch(e){x.error(e instanceof Error?e.message:_(`tokens.kubtby5021`));return}finally{Y.value=``}}t&&await K(t)?(X.value=e.id,setTimeout(()=>{X.value=``},1600)):x.error(_(`tokens.kgkfcr0022`))},$=e=>e?e.replace(`T`,` `).slice(0,19):`-`,Ee=e=>{R.value=e.id??``,z.value=e.label??``,L.value=!0},De=[{title:_(`tokens.k41416002`),key:`label`,dataIndex:`label`},{title:`Token`,key:`token`,width:360},{title:_(`tokens.k1bg95gk023`),key:`createdAt`,dataIndex:`createdAt`,width:170},{title:_(`tokens.k1euotul024`),key:`lastUsedAt`,dataIndex:`lastUsedAt`,width:200},{title:_(`tokens.k40aa6025`),key:`action`,width:170}];return y({title:()=>_(`titles.tokens`)}),(t,c)=>{let l=te,m=T,_=S,y=ie,b=w,x=ne,E=ae,D=re,O=C;return n(),u(`div`,oe,[i(k).isLoggedIn?(n(),u(o,{key:1},[g(`div`,le,[g(`div`,null,[c[6]||=g(`h2`,null,`API Token`,-1),g(`p`,ue,a(i(k).user?.name)+` · `+a(t.$t(`tokens.k1upppaw026`)),1)]),v(y,null,{default:h(()=>[i(k).user?.tokenId?(n(),p(_,{key:0,color:`green`},{default:h(()=>[s(a(t.$t(`tokens.khcxmsc006`)),1)]),_:1})):d(``,!0),v(l,{type:`primary`,onClick:c[1]||=e=>M.value=!0},{default:h(()=>[c[7]||=g(`span`,{class:`i-tabler-plus`},null,-1),s(` `+a(t.$t(`chips.issue`)),1)]),_:1})]),_:1})]),v(E,{spinning:i(j)},{default:h(()=>[v(x,{columns:De,"data-source":i(A),pagination:!1,"row-key":`id`},{bodyCell:h(({column:e,record:f})=>[e.key===`label`?(n(),p(y,{key:0},{default:h(()=>[c[8]||=g(`span`,{class:`i-tabler-key text-primary`},null,-1),g(`span`,de,a(f.label||t.$t(`tokens.kj3mklm028`)),1),f.id===i(k).user?.tokenId?(n(),p(_,{key:0,color:`green`},{default:h(()=>[s(a(t.$t(`tokens.k1defr98007`)),1)]),_:1})):d(``,!0)]),_:2},1024)):e.key===`token`?(n(),u(`div`,fe,[g(`code`,{class:r([`tok-val`,{revealed:Z(f.id)}]),title:Z(f.id)?`已显示明文,点击眼睛遮回`:`掩码预览,点击眼睛查看明文`},a(we(f)),11,pe),v(l,{type:`text`,size:`small`,class:`tok-op`,loading:i(Y)===f.id,disabled:!f.hasPlain,title:f.hasPlain?Z(f.id)?`遮回`:`查看明文`:`旧版本 token 未存档明文,不可查看`,onClick:e=>Q(f)},{default:h(()=>[g(`span`,{class:r(Z(f.id)?`i-tabler-eye-off`:`i-tabler-eye`)},null,2)]),_:2},1032,[`loading`,`disabled`,`title`,`onClick`]),v(l,{type:`text`,size:`small`,class:r([`tok-op`,{ok:i(X)===f.id}]),disabled:!f.hasPlain,title:i(X)===f.id?`已复制`:`复制明文`,onClick:e=>Te(f)},{default:h(()=>[g(`span`,{class:r(i(X)===f.id?`i-tabler-check`:`i-tabler-copy`)},null,2)]),_:2},1032,[`class`,`disabled`,`title`,`onClick`]),f.hasPlain?d(``,!0):(n(),p(_,{key:0,class:`legacy-tag`,color:`orange`},{default:h(()=>[s(a(t.$t(`tokens.kyelqk1008`)),1)]),_:1}))])):e.key===`createdAt`?(n(),u(o,{key:2},[s(a($(f.createdAt)),1)],64)):e.key===`lastUsedAt`?(n(),u(o,{key:3},[s(a($(f.lastUsedAt)),1)],64)):e.key===`action`?(n(),p(y,{key:4},{default:h(()=>[v(l,{type:`link`,size:`small`,onClick:e=>Ee(f)},{default:h(()=>[c[9]||=g(`span`,{class:`i-tabler-edit`},null,-1),s(` `+a(t.$t(`tokens.k3vrpcs009`)),1)]),_:1},8,[`onClick`]),v(b,{title:f.id===i(k).user?.tokenId?`吊销当前会话 token 将退出登录`:`吊销后立即失效`,"ok-text":`吊销`,"cancel-text":`取消`,onConfirm:e=>be(f)},{default:h(()=>[v(l,{type:`link`,size:`small`,danger:``},{default:h(()=>[c[10]||=g(`span`,{class:`i-tabler-trash`},null,-1),s(` `+a(t.$t(`tokens.k3xmrz010`)),1)]),_:1})]),_:1},8,[`title`,`onConfirm`])]),_:2},1024)):d(``,!0)]),_:1},8,[`data-source`])]),_:1},8,[`spinning`]),v(O,{open:i(M),"onUpdate:open":c[3]||=e=>f(M)?M.value=e:null,title:t.$t(`chips.issueTitle`),"confirm-loading":i(P),"ok-text":`创建`,"cancel-text":`取消`,onOk:H},{default:h(()=>[v(D,{value:i(N),"onUpdate:value":c[2]||=e=>f(N)?N.value=e:null,placeholder:t.$t(`tokens.k1hlqknl001`),onKeydown:e(H,[`enter`])},null,8,[`value`,`placeholder`])]),_:1},8,[`open`,`title`,`confirm-loading`]),v(O,{open:i(F)!==``,title:`Token 已创建`,footer:null,"mask-closable":!1,onCancel:q,onAfterClose:q},{default:h(()=>[g(`div`,me,[c[11]||=g(`span`,{class:`i-tabler-circle-check`},null,-1),g(`span`,null,a(t.$t(`tokens.k12149oy011`)),1)]),g(`div`,he,[g(`code`,ge,a(i(W)?i(F):i(xe)),1),g(`button`,{class:`raw-op`,title:i(W)?`隐藏明文`:`显示明文`,onClick:Se},[g(`span`,{class:r(i(W)?`i-tabler-eye-off`:`i-tabler-eye`)},null,2)],8,_e),g(`button`,{class:r([`raw-op`,{ok:i(G)}]),title:i(G)?`已复制`:`复制`,onClick:Ce},[g(`span`,{class:r(i(G)?`i-tabler-check`:`i-tabler-copy`)},null,2)],10,ve)]),g(`div`,ye,[g(`span`,null,a(t.$t(`tokens.k3p0p44027`))+a(i(I)||t.$t(`tokens.kj3mklm028`)),1),c[12]||=g(`span`,null,`用法:Authorization: Bearer <token>`,-1)]),v(l,{type:`primary`,block:``,onClick:q},{default:h(()=>[s(a(t.$t(`tokens.k1s5f5zd012`)),1)]),_:1})]),_:1},8,[`open`]),v(O,{open:i(L),"onUpdate:open":c[5]||=e=>f(L)?L.value=e:null,title:`重命名 Token`,"confirm-loading":i(B),"ok-text":`保存`,"cancel-text":`取消`,onOk:U},{default:h(()=>[v(D,{value:i(z),"onUpdate:value":c[4]||=e=>f(z)?z.value=e:null,placeholder:t.$t(`tokens.k41416002`),onKeydown:e(U,[`enter`])},null,8,[`value`,`placeholder`])]),_:1},8,[`open`,`confirm-loading`])],64)):(n(),u(`div`,se,[v(m,{class:`auth-card`},{default:h(()=>[g(`h2`,null,a(t.$t(`tokens.k1k6z0r8003`)),1),g(`p`,ce,a(t.$t(`tokens.k1gjnree004`)),1),v(l,{type:`primary`,block:``,onClick:c[0]||=e=>(`navigateTo`in t?t.navigateTo:i(ee))(`/workshop`)},{default:h(()=>[s(a(t.$t(`tokens.k1bhhheq005`)),1)]),_:1})]),_:1})]))])}}}),[[`__scopeId`,`data-v-f544c33f`]]);export{k as default};