agentworkshop 0.7.60 → 0.7.61

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 (288) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{KXQppTXc.js → BTXdYngG.js} +1 -1
  3. package/.output/public/_nuxt/{Ce5SiMQR2.js → BXbKTAwC2.js} +1 -1
  4. package/.output/public/_nuxt/B_6yBa_Z.js +1 -0
  5. package/.output/public/_nuxt/B_ic601Y.js +1 -0
  6. package/.output/public/_nuxt/{DhSlJyZD2.js → BegV7-FE2.js} +1 -1
  7. package/.output/public/_nuxt/{D9sgxxsM2.js → BrRXGr472.js} +1 -1
  8. package/.output/public/_nuxt/{BeNdseTX.js → BtBgrPNT.js} +1 -1
  9. package/.output/public/_nuxt/{Cyd68Xbv2.js → C5MPzgon2.js} +1 -1
  10. package/.output/public/_nuxt/{DBdwjOGB2.js → CI5sliIF2.js} +1 -1
  11. package/.output/public/_nuxt/CI8awYVQ2.js +1 -0
  12. package/.output/public/_nuxt/{Cfp00Rdo.js → CK2ts9sD.js} +1 -1
  13. package/.output/public/_nuxt/{BjUpWKS6.js → CPZKwmLQ.js} +1 -1
  14. package/.output/public/_nuxt/{CjeMxUv8.js → CVUMEGa1.js} +1 -1
  15. package/.output/public/_nuxt/{p2sDc0tO2.js → CcLFZjCI2.js} +1 -1
  16. package/.output/public/_nuxt/{C4AICl3l.js → CeEzUIvN.js} +4 -4
  17. package/.output/public/_nuxt/{C93LpBMF.js → CfIGBe_4.js} +3 -3
  18. package/.output/public/_nuxt/{DTcsb0fG.js → Ci5kuU1q.js} +1 -1
  19. package/.output/public/_nuxt/CiyTTgqr.js +106 -0
  20. package/.output/public/_nuxt/{CgbP5yJk2.js → CkYk8bj02.js} +7 -7
  21. package/.output/public/_nuxt/Cmiz_VOb2.js +47 -0
  22. package/.output/public/_nuxt/Cnf1PFhB2.js +1 -0
  23. package/.output/public/_nuxt/CoTm7jd3.js +28 -0
  24. package/.output/public/_nuxt/{C0sNwDTK2.js → CsN8RHJ02.js} +1 -1
  25. package/.output/public/_nuxt/D-jg-SoR.js +1 -0
  26. package/.output/public/_nuxt/{CEHT9inW.js → D-z6N1Cz.js} +1 -1
  27. package/.output/public/_nuxt/D3gfSKKi2.js +1 -0
  28. package/.output/public/_nuxt/D4elH6Bo2.js +1 -0
  29. package/.output/public/_nuxt/{C5OSTzBh.js → D4tAdwYm.js} +1 -1
  30. package/.output/public/_nuxt/{BlEJRYAn2.js → DC7WzYCf2.js} +1 -1
  31. package/.output/public/_nuxt/{VeOVO2sE2.js → DE-qkHRd2.js} +1 -1
  32. package/.output/public/_nuxt/DE2kUGPK.js +1 -0
  33. package/.output/public/_nuxt/DI4sdLmu2.js +1 -0
  34. package/.output/public/_nuxt/DKHA3XxF.js +2 -0
  35. package/.output/public/_nuxt/{zVupTo2z2.js → DL6fliAT.js} +2 -2
  36. package/.output/public/_nuxt/{CMDAjShv2.js → DP6tsk912.js} +1 -1
  37. package/.output/public/_nuxt/DP_e7Vwv.js +24 -0
  38. package/.output/public/_nuxt/{C8XVZGSZ.js → DR83EvmX.js} +1 -1
  39. package/.output/public/_nuxt/{BtXwFpv42.js → DSWuWYx_2.js} +1 -1
  40. package/.output/public/_nuxt/DSdxfFX_.js +1 -0
  41. package/.output/public/_nuxt/DVS06wUy2.js +13 -0
  42. package/.output/public/_nuxt/DXlAfhEi.js +3 -0
  43. package/.output/public/_nuxt/Dc5NeCDq.js +1 -0
  44. package/.output/public/_nuxt/{B_JLVF30.js → DiHL9ehB.js} +1 -1
  45. package/.output/public/_nuxt/{Bdq2LNSO.js → DjtDexGg.js} +1 -1
  46. package/.output/public/_nuxt/DnunMTRD2.js +1 -0
  47. package/.output/public/_nuxt/{KXvRkBgg.js → Dok0B4Ol.js} +2 -2
  48. package/.output/public/_nuxt/{BFBysc2M2.js → DqT2_Jtw2.js} +1 -1
  49. package/.output/public/_nuxt/{B_BYwIf22.js → DtMlAxCm2.js} +1 -1
  50. package/.output/public/_nuxt/{BplhglEM.js → DwzJpr7P.js} +1 -1
  51. package/.output/public/_nuxt/J94L7hHq2.js +1 -0
  52. package/.output/public/_nuxt/LQBLwrYS2.js +1 -0
  53. package/.output/public/_nuxt/QSY9fE482.js +1 -0
  54. package/.output/public/_nuxt/{iCvdSYYN2.js → Qa9rS9oK2.js} +2 -2
  55. package/.output/public/_nuxt/{Cyuxcv5s2.js → R3gBFghJ2.js} +1 -1
  56. package/.output/public/_nuxt/ZxBwmbs9.js +1 -0
  57. package/.output/public/_nuxt/{BGFhOMVM.js → _mD4IkJj.js} +2 -2
  58. package/.output/public/_nuxt/analysis.DfMg76el.css +1 -0
  59. package/.output/public/_nuxt/builds/latest.json +1 -1
  60. package/.output/public/_nuxt/builds/meta/eba8574d-1991-47df-944c-18608bb58181.json +1 -0
  61. package/.output/public/_nuxt/{CZmMgjIK.js → c_nqArmG.js} +1 -1
  62. package/.output/public/_nuxt/h8ddxY892.js +1 -0
  63. package/.output/public/_nuxt/i3KBHle7.js +1 -0
  64. package/.output/public/_nuxt/jmKfTQMN.js +13 -0
  65. package/.output/public/_nuxt/{59a6cSgj.js → taHLOXkS.js} +1 -1
  66. package/.output/public/_nuxt/{EQijmkCh2.js → uYP6z4G72.js} +1 -1
  67. package/.output/public/_nuxt/{D0vmf1z9.js → yuIP6K9s.js} +1 -1
  68. package/.output/public/_nuxt/{Ddc_Pn7D.js → zWg-9WN6.js} +4 -4
  69. package/.output/public/_nuxt/zrgcKVTq.js +2 -0
  70. package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
  71. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  72. package/.output/server/chunks/_/nitro.mjs +1158 -1111
  73. package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
  74. package/.output/server/chunks/build/{AuthGate-CZYkvPrg.mjs → AuthGate-BK2RqkbD.mjs} +5 -5
  75. package/.output/server/chunks/build/{AuthGate-CZYkvPrg.mjs.map → AuthGate-BK2RqkbD.mjs.map} +1 -1
  76. package/.output/server/chunks/build/{FormItemContext-DcWIIAaK.mjs → FormItemContext-BqtgOBDe.mjs} +1 -1
  77. package/.output/server/chunks/build/{FormItemContext-DcWIIAaK.mjs.map → FormItemContext-BqtgOBDe.mjs.map} +1 -1
  78. package/.output/server/chunks/build/{OmpTerminalPanel-CtFJ6Kc8.mjs → OmpTerminalPanel-Bun6rpAk.mjs} +4 -4
  79. package/.output/server/chunks/build/{OmpTerminalPanel-CtFJ6Kc8.mjs.map → OmpTerminalPanel-Bun6rpAk.mjs.map} +1 -1
  80. package/.output/server/chunks/build/{PluginSlot-BT7kYQgK.mjs → PluginSlot-Do6dX0RE.mjs} +1 -1
  81. package/.output/server/chunks/build/{PluginSlot-BT7kYQgK.mjs.map → PluginSlot-Do6dX0RE.mjs.map} +1 -1
  82. package/.output/server/chunks/build/{_wsId_-DOEw9jgZ.mjs → _wsId_-Dp3ACbQ5.mjs} +19 -19
  83. package/.output/server/chunks/build/{_wsId_-DOEw9jgZ.mjs.map → _wsId_-Dp3ACbQ5.mjs.map} +1 -1
  84. package/.output/server/chunks/build/{agents-C36wR56A.mjs → agents-BfIoGr_p.mjs} +18 -18
  85. package/.output/server/chunks/build/{agents-C36wR56A.mjs.map → agents-BfIoGr_p.mjs.map} +1 -1
  86. package/.output/server/chunks/build/{aml-CBGndvHT.mjs → aml-B5zKrvB3.mjs} +7 -7
  87. package/.output/server/chunks/build/{aml-CBGndvHT.mjs.map → aml-B5zKrvB3.mjs.map} +1 -1
  88. package/.output/server/chunks/build/analysis-MVEnlO7A.mjs +531 -0
  89. package/.output/server/chunks/build/analysis-MVEnlO7A.mjs.map +1 -0
  90. package/.output/server/chunks/build/{card-Db7OB49d.mjs → card-IyQjdGXA.mjs} +3 -3
  91. package/.output/server/chunks/build/{card-Db7OB49d.mjs.map → card-IyQjdGXA.mjs.map} +1 -1
  92. package/.output/server/chunks/build/{channel-templates-BixUrDmU.mjs → channel-templates-Bd8bgBCh.mjs} +11 -11
  93. package/.output/server/chunks/build/{channel-templates-BixUrDmU.mjs.map → channel-templates-Bd8bgBCh.mjs.map} +1 -1
  94. package/.output/server/chunks/build/{checkbox-CyF96D30.mjs → checkbox-NnjtOam0.mjs} +2 -2
  95. package/.output/server/chunks/build/{checkbox-CyF96D30.mjs.map → checkbox-NnjtOam0.mjs.map} +1 -1
  96. package/.output/server/chunks/build/{daq-DLMLufDq.mjs → daq-mC3-5A0L.mjs} +1 -1
  97. package/.output/server/chunks/build/{daq-DLMLufDq.mjs.map → daq-mC3-5A0L.mjs.map} +1 -1
  98. package/.output/server/chunks/build/{default-C7Qmdyz_.mjs → default-flcNWlNg.mjs} +12 -12
  99. package/.output/server/chunks/build/{default-C7Qmdyz_.mjs.map → default-flcNWlNg.mjs.map} +1 -1
  100. package/.output/server/chunks/build/{descriptions-1bH81YsZ.mjs → descriptions-DuAefuzp.mjs} +1 -1
  101. package/.output/server/chunks/build/{descriptions-1bH81YsZ.mjs.map → descriptions-DuAefuzp.mjs.map} +1 -1
  102. package/.output/server/chunks/build/{drawer-C7shdEHy.mjs → drawer-DEIB1_X6.mjs} +1 -1
  103. package/.output/server/chunks/build/{drawer-C7shdEHy.mjs.map → drawer-DEIB1_X6.mjs.map} +1 -1
  104. package/.output/server/chunks/build/{dropdown-BiwcuXDi.mjs → dropdown-BuD1pxH2.mjs} +5 -5
  105. package/.output/server/chunks/build/{dropdown-BiwcuXDi.mjs.map → dropdown-BuD1pxH2.mjs.map} +1 -1
  106. package/.output/server/chunks/build/{dropdown-BhLSIp5A.mjs → dropdown-w7qhyN2D.mjs} +2 -2
  107. package/.output/server/chunks/build/{dropdown-BhLSIp5A.mjs.map → dropdown-w7qhyN2D.mjs.map} +1 -1
  108. package/.output/server/chunks/build/es-DfgEl5n-.mjs +42 -0
  109. package/.output/server/chunks/build/es-DfgEl5n-.mjs.map +1 -0
  110. package/.output/server/chunks/build/{form-nE8C0G8B.mjs → form-CMLL_-Xx.mjs} +6 -6
  111. package/.output/server/chunks/build/{form-nE8C0G8B.mjs.map → form-CMLL_-Xx.mjs.map} +1 -1
  112. package/.output/server/chunks/build/{input-DwF72eVI.mjs → input-DZcioTwL.mjs} +3 -3
  113. package/.output/server/chunks/build/{input-DwF72eVI.mjs.map → input-DZcioTwL.mjs.map} +1 -1
  114. package/.output/server/chunks/build/{input-number-TSq6ltkz.mjs → input-number-BRnbiKLd.mjs} +5 -5
  115. package/.output/server/chunks/build/{input-number-TSq6ltkz.mjs.map → input-number-BRnbiKLd.mjs.map} +1 -1
  116. package/.output/server/chunks/build/{logs-hOEVuxqm.mjs → logs-BYop3JfX.mjs} +2 -2
  117. package/.output/server/chunks/build/{logs-hOEVuxqm.mjs.map → logs-BYop3JfX.mjs.map} +1 -1
  118. package/.output/server/chunks/build/{menu-Cy5Nrecn.mjs → menu-DXfhc0qN.mjs} +3 -3
  119. package/.output/server/chunks/build/{menu-Cy5Nrecn.mjs.map → menu-DXfhc0qN.mjs.map} +1 -1
  120. package/.output/server/chunks/build/{monitor-CfVoiavp.mjs → monitor-BjBGkUm2.mjs} +19 -19
  121. package/.output/server/chunks/build/{monitor-CfVoiavp.mjs.map → monitor-BjBGkUm2.mjs.map} +1 -1
  122. package/.output/server/chunks/build/{permissions-XPtQJSaO.mjs → permissions-u5SZL8Fe.mjs} +14 -14
  123. package/.output/server/chunks/build/{permissions-XPtQJSaO.mjs.map → permissions-u5SZL8Fe.mjs.map} +1 -1
  124. package/.output/server/chunks/build/{plugins-DjBSG9pV.mjs → plugins-Cas6KOF-.mjs} +5 -5
  125. package/.output/server/chunks/build/{plugins-DjBSG9pV.mjs.map → plugins-Cas6KOF-.mjs.map} +1 -1
  126. package/.output/server/chunks/build/{popconfirm-DKeEbaGd.mjs → popconfirm-BWxt-53K.mjs} +2 -2
  127. package/.output/server/chunks/build/{popconfirm-DKeEbaGd.mjs.map → popconfirm-BWxt-53K.mjs.map} +1 -1
  128. package/.output/server/chunks/build/{schedules-PcDLCUWN.mjs → schedules-Ct68Jrvw.mjs} +19 -19
  129. package/.output/server/chunks/build/{schedules-PcDLCUWN.mjs.map → schedules-Ct68Jrvw.mjs.map} +1 -1
  130. package/.output/server/chunks/build/{segmented-BdWCdZUM.mjs → segmented-DN62bOFu.mjs} +2 -2
  131. package/.output/server/chunks/build/{segmented-BdWCdZUM.mjs.map → segmented-DN62bOFu.mjs.map} +1 -1
  132. package/.output/server/chunks/build/{select-C5yighj8.mjs → select-DQv1DXcW.mjs} +4 -4
  133. package/.output/server/chunks/build/{select-C5yighj8.mjs.map → select-DQv1DXcW.mjs.map} +1 -1
  134. package/.output/server/chunks/build/{settings-90zT_h9w.mjs → settings-CQzR1YXR.mjs} +13 -13
  135. package/.output/server/chunks/build/{settings-90zT_h9w.mjs.map → settings-CQzR1YXR.mjs.map} +1 -1
  136. package/.output/server/chunks/build/{space-BCffbXIG.mjs → space-6FfG3llN.mjs} +3 -3
  137. package/.output/server/chunks/build/{space-BCffbXIG.mjs.map → space-6FfG3llN.mjs.map} +1 -1
  138. package/.output/server/chunks/build/{switch-OG0SM_Px.mjs → switch-CfsCVFQP.mjs} +2 -2
  139. package/.output/server/chunks/build/{switch-OG0SM_Px.mjs.map → switch-CfsCVFQP.mjs.map} +1 -1
  140. package/.output/server/chunks/build/{table-UpVzu50c.mjs → table-HOjbB5YY.mjs} +9 -9
  141. package/.output/server/chunks/build/{table-UpVzu50c.mjs.map → table-HOjbB5YY.mjs.map} +1 -1
  142. package/.output/server/chunks/build/{tabs-CWwoL33v.mjs → tabs-CC26Rbcw.mjs} +4 -4
  143. package/.output/server/chunks/build/{tabs-CWwoL33v.mjs.map → tabs-CC26Rbcw.mjs.map} +1 -1
  144. package/.output/server/chunks/build/{tag-CS7mwrfG.mjs → tag-BtOMjpDx.mjs} +4 -4
  145. package/.output/server/chunks/build/{tag-CS7mwrfG.mjs.map → tag-BtOMjpDx.mjs.map} +1 -1
  146. package/.output/server/chunks/build/{teams-BIAFvRw1.mjs → teams-Re0wY2SQ.mjs} +19 -19
  147. package/.output/server/chunks/build/{teams-BIAFvRw1.mjs.map → teams-Re0wY2SQ.mjs.map} +1 -1
  148. package/.output/server/chunks/build/{tokens-CLpdrzQ7.mjs → tokens-DLFIUvXE.mjs} +19 -19
  149. package/.output/server/chunks/build/{tokens-CLpdrzQ7.mjs.map → tokens-DLFIUvXE.mjs.map} +1 -1
  150. package/.output/server/chunks/build/{tooltip-CJlH_8ZK.mjs → tooltip-BSDwL_LM.mjs} +4 -4
  151. package/.output/server/chunks/build/{tooltip-CJlH_8ZK.mjs.map → tooltip-BSDwL_LM.mjs.map} +1 -1
  152. package/.output/server/chunks/build/{useAgentTemplateActions-6VyAHgu5.mjs → useAgentTemplateActions-CjBwCb3u.mjs} +1 -1
  153. package/.output/server/chunks/build/{useAgentTemplateActions-6VyAHgu5.mjs.map → useAgentTemplateActions-CjBwCb3u.mjs.map} +1 -1
  154. package/.output/server/chunks/build/{useAgentTemplateForm-DWa-ezNq.mjs → useAgentTemplateForm-BX9_xqj8.mjs} +1 -1
  155. package/.output/server/chunks/build/{useAgentTemplateForm-DWa-ezNq.mjs.map → useAgentTemplateForm-BX9_xqj8.mjs.map} +1 -1
  156. package/.output/server/chunks/build/{useAmlEntities-Co2fgjzh.mjs → useAmlEntities-BrcTqHwa.mjs} +2 -2
  157. package/.output/server/chunks/build/{useAmlEntities-Co2fgjzh.mjs.map → useAmlEntities-BrcTqHwa.mjs.map} +1 -1
  158. package/.output/server/chunks/build/{useAmlEnv-JTiWPrzH.mjs → useAmlEnv-jiGYK790.mjs} +1 -1
  159. package/.output/server/chunks/build/{useAmlEnv-JTiWPrzH.mjs.map → useAmlEnv-jiGYK790.mjs.map} +1 -1
  160. package/.output/server/chunks/build/{useAmlJobs-By4pjOzc.mjs → useAmlJobs-CVZ1btzg.mjs} +1 -1
  161. package/.output/server/chunks/build/{useAmlJobs-By4pjOzc.mjs.map → useAmlJobs-CVZ1btzg.mjs.map} +1 -1
  162. package/.output/server/chunks/build/{useAmlModels-B1_5vjMA.mjs → useAmlModels-DJkQzcCU.mjs} +1 -1
  163. package/.output/server/chunks/build/{useAmlModels-B1_5vjMA.mjs.map → useAmlModels-DJkQzcCU.mjs.map} +1 -1
  164. package/.output/server/chunks/build/{useAmlNotes-5uwvCb3h.mjs → useAmlNotes-DKnx9a8x.mjs} +1 -1
  165. package/.output/server/chunks/build/{useAmlNotes-5uwvCb3h.mjs.map → useAmlNotes-DKnx9a8x.mjs.map} +1 -1
  166. package/.output/server/chunks/build/{useAmlPredict-lxUv7lAO.mjs → useAmlPredict-Bp4ehwKw.mjs} +1 -1
  167. package/.output/server/chunks/build/{useAmlPredict-lxUv7lAO.mjs.map → useAmlPredict-Bp4ehwKw.mjs.map} +1 -1
  168. package/.output/server/chunks/build/{useLogsManual-BLfiSU3u.mjs → useLogsManual-CElmZuJh.mjs} +1 -1
  169. package/.output/server/chunks/build/{useLogsManual-BLfiSU3u.mjs.map → useLogsManual-CElmZuJh.mjs.map} +1 -1
  170. package/.output/server/chunks/build/{useMonitorData-BZ6Z-Sy8.mjs → useMonitorData-DcIfMEiz.mjs} +1 -1
  171. package/.output/server/chunks/build/{useMonitorData-BZ6Z-Sy8.mjs.map → useMonitorData-DcIfMEiz.mjs.map} +1 -1
  172. package/.output/server/chunks/build/{useTeamActions-ahht5J8Y.mjs → useTeamActions-C3_O_AIU.mjs} +1 -1
  173. package/.output/server/chunks/build/{useTeamActions-ahht5J8Y.mjs.map → useTeamActions-C3_O_AIU.mjs.map} +1 -1
  174. package/.output/server/chunks/build/{useTeamAddMemberDialog-DvXxsVy0.mjs → useTeamAddMemberDialog-DWAoZCKd.mjs} +1 -1
  175. package/.output/server/chunks/build/{useTeamAddMemberDialog-DvXxsVy0.mjs.map → useTeamAddMemberDialog-DWAoZCKd.mjs.map} +1 -1
  176. package/.output/server/chunks/build/{useTeamCreateDialog-A_k-XX5B.mjs → useTeamCreateDialog-911mIPWd.mjs} +1 -1
  177. package/.output/server/chunks/build/{useTeamCreateDialog-A_k-XX5B.mjs.map → useTeamCreateDialog-911mIPWd.mjs.map} +1 -1
  178. package/.output/server/chunks/build/{useTeamDeployDialog-CfAFjIr_.mjs → useTeamDeployDialog-D0STROoQ.mjs} +1 -1
  179. package/.output/server/chunks/build/{useTeamDeployDialog-CfAFjIr_.mjs.map → useTeamDeployDialog-D0STROoQ.mjs.map} +1 -1
  180. package/.output/server/chunks/build/{useTeamPluginDialog-Djmkk1Nl.mjs → useTeamPluginDialog-Df6-e2OW.mjs} +1 -1
  181. package/.output/server/chunks/build/{useTeamPluginDialog-Djmkk1Nl.mjs.map → useTeamPluginDialog-Df6-e2OW.mjs.map} +1 -1
  182. package/.output/server/chunks/build/{useTokenCreate-CkWoxSI-.mjs → useTokenCreate-DOojAhM5.mjs} +1 -1
  183. package/.output/server/chunks/build/{useTokenCreate-CkWoxSI-.mjs.map → useTokenCreate-DOojAhM5.mjs.map} +1 -1
  184. package/.output/server/chunks/build/{useTokenRename-BohjnGT0.mjs → useTokenRename-CMA5dLHx.mjs} +1 -1
  185. package/.output/server/chunks/build/{useTokenRename-BohjnGT0.mjs.map → useTokenRename-CMA5dLHx.mjs.map} +1 -1
  186. package/.output/server/chunks/build/{useTokenReveal-BBN5iGz7.mjs → useTokenReveal-C19aCKzt.mjs} +1 -1
  187. package/.output/server/chunks/build/{useTokenReveal-BBN5iGz7.mjs.map → useTokenReveal-C19aCKzt.mjs.map} +1 -1
  188. package/.output/server/chunks/build/{useTokensList-BQX9WqfT.mjs → useTokensList-D0ZpLOhR.mjs} +1 -1
  189. package/.output/server/chunks/build/{useTokensList-BQX9WqfT.mjs.map → useTokensList-D0ZpLOhR.mjs.map} +1 -1
  190. package/.output/server/chunks/build/{useWorkbenchAuth-BTRlS2wZ.mjs → useWorkbenchAuth-CN5E3J5L.mjs} +1 -1
  191. package/.output/server/chunks/build/{useWorkbenchAuth-BTRlS2wZ.mjs.map → useWorkbenchAuth-CN5E3J5L.mjs.map} +1 -1
  192. package/.output/server/chunks/build/{useWorkbenchWorkspaces-C6ky7OJH.mjs → useWorkbenchWorkspaces-ChKByQSD.mjs} +1 -1
  193. package/.output/server/chunks/build/{useWorkbenchWorkspaces-C6ky7OJH.mjs.map → useWorkbenchWorkspaces-ChKByQSD.mjs.map} +1 -1
  194. package/.output/server/chunks/build/{users-BHOEW3Az.mjs → users-BW4jowK4.mjs} +15 -15
  195. package/.output/server/chunks/build/{users-BHOEW3Az.mjs.map → users-BW4jowK4.mjs.map} +1 -1
  196. package/.output/server/chunks/build/{workshop-DyJ1LXwu.mjs → workshop-Bx55czXL.mjs} +11 -11
  197. package/.output/server/chunks/build/{workshop-DyJ1LXwu.mjs.map → workshop-Bx55czXL.mjs.map} +1 -1
  198. package/.output/server/chunks/routes/api/workshop/analysis/_id_.get.mjs +3 -2
  199. package/.output/server/chunks/routes/api/workshop/analysis/_id_.get.mjs.map +1 -1
  200. package/.output/server/chunks/routes/api/workshop/analysis/_id_.patch.mjs +103 -0
  201. package/.output/server/chunks/routes/api/workshop/analysis/_id_.patch.mjs.map +1 -0
  202. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +1 -1
  203. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +1 -1
  204. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +1 -1
  205. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +1 -1
  206. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs +1 -1
  207. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +1 -1
  208. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +1 -1
  209. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +1 -1
  210. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +1 -1
  211. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs +1 -1
  212. package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs +1 -1
  213. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +1 -1
  214. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.get.mjs +1 -1
  215. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.patch.mjs +1 -1
  216. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +1 -1
  217. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +1 -1
  218. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +1 -1
  219. package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +1 -1
  220. package/.output/server/chunks/routes/api/workshop/dcw/index7.get.mjs +1 -1
  221. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +1 -1
  222. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +1 -1
  223. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +1 -1
  224. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +1 -1
  225. package/.output/server/chunks/routes/api/workshop/index3.get.mjs +6 -2
  226. package/.output/server/chunks/routes/api/workshop/index3.get.mjs.map +1 -1
  227. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +1 -1
  228. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +1 -1
  229. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +1 -1
  230. package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs +1 -1
  231. package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs +1 -1
  232. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -1
  233. package/.output/server/chunks/routes/renderer.mjs +2 -2
  234. package/.output/server/chunks/virtual/entry.mjs +533 -529
  235. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  236. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  237. package/.output/server/package.json +1 -1
  238. package/app/components/analysis/AnalysisEditModal.vue +192 -0
  239. package/app/components/analysis/AnalysisFilterCard.vue +159 -160
  240. package/app/components/analysis/AnalysisPageHead.vue +47 -47
  241. package/app/components/analysis/AnalysisTable.vue +322 -306
  242. package/app/pages/analysis/composables/useAnalysisFeed.ts +85 -85
  243. package/app/pages/analysis/index.vue +128 -92
  244. package/app/pages/analysis/types.ts +50 -44
  245. package/i18n/locales/en.ts +8 -0
  246. package/i18n/locales/zh-CN.ts +8 -0
  247. package/package.json +1 -1
  248. package/server/api/workshop/analysis/[id].delete.ts +30 -30
  249. package/server/api/workshop/analysis/[id].get.ts +25 -23
  250. package/server/api/workshop/analysis/[id].patch.ts +100 -0
  251. package/server/api/workshop/analysis/index.get.ts +39 -33
  252. package/server/services/workshop/agents/industrial/analysis-tools.ts +242 -242
  253. package/server/services/workshop/analysis/analysis.repo.ts +241 -189
  254. package/server/services/workshop/db/database/migrations.ts +10 -0
  255. package/server/services/workshop/db/database/open.ts +3 -1
  256. package/server/services/workshop/db/database/schema.ts +6 -2
  257. package/server/services/workshop/db/schema.sql +6 -2
  258. package/.output/public/_nuxt/5juo_WO2.js +0 -13
  259. package/.output/public/_nuxt/B-WTxXEK2.js +0 -1
  260. package/.output/public/_nuxt/B1BCga5h2.js +0 -13
  261. package/.output/public/_nuxt/B5lMtA7I2.js +0 -1
  262. package/.output/public/_nuxt/B6_fJd2X.js +0 -1
  263. package/.output/public/_nuxt/B7K5B04W2.js +0 -1
  264. package/.output/public/_nuxt/B7KyS_q2.js +0 -1
  265. package/.output/public/_nuxt/B8q3BGY5.js +0 -37
  266. package/.output/public/_nuxt/B9IK8kDl2.js +0 -1
  267. package/.output/public/_nuxt/BNd2NDxg2.js +0 -1
  268. package/.output/public/_nuxt/BP629NAi.js +0 -1
  269. package/.output/public/_nuxt/BVinTfuN.js +0 -1
  270. package/.output/public/_nuxt/BdE41Y_c.js +0 -28
  271. package/.output/public/_nuxt/Be_StT8b2.js +0 -1
  272. package/.output/public/_nuxt/BsYEYxWv.js +0 -24
  273. package/.output/public/_nuxt/BuNXYpib2.js +0 -1
  274. package/.output/public/_nuxt/CDaZC0_6.js +0 -3
  275. package/.output/public/_nuxt/CE43-V_L.js +0 -2
  276. package/.output/public/_nuxt/CWfBtswB.js +0 -70
  277. package/.output/public/_nuxt/CYtH1bv2.js +0 -1
  278. package/.output/public/_nuxt/ChPNKPw_.js +0 -1
  279. package/.output/public/_nuxt/CktUrk8z.js +0 -1
  280. package/.output/public/_nuxt/DMCoWgSb2.js +0 -1
  281. package/.output/public/_nuxt/Dg1iMuZ-.js +0 -1
  282. package/.output/public/_nuxt/DmwMkvoQ2.js +0 -1
  283. package/.output/public/_nuxt/LwITbamf2.js +0 -47
  284. package/.output/public/_nuxt/_jfzcYrl.js +0 -1
  285. package/.output/public/_nuxt/analysis.D2Pao1rm.css +0 -1
  286. package/.output/public/_nuxt/builds/meta/f78a1992-e424-494d-ac4b-aa18971ffc10.json +0 -1
  287. package/.output/server/chunks/build/analysis-tgzvOWmD.mjs +0 -332
  288. package/.output/server/chunks/build/analysis-tgzvOWmD.mjs.map +0 -1
@@ -1,189 +1,241 @@
1
- /**
2
- * 数据分析系统 · 分析报告台账(analysis_reports)。
3
- *
4
- * 定位:Agent Channel 分析产出的持久留痕 —— append-only,工具面只提供 save/query,
5
- * 无更新与删除(删仅 REST admin 面)。产线/配方/时间/关键结论为一级字段;
6
- * 归因(channel/actor)与产线上下文在保存时快照固化,产线改名或删除后历史仍可读。
7
- *
8
- * 头注释铁律同 aml.repo:全部参数绑定(无字符串拼 SQL;LIKE 的 % 也在参数侧)。
9
- */
10
- import type { DatabaseSync, SQLInputValue } from 'node:sqlite'
11
-
12
- export interface AnalysisReportRow {
13
- id: string
14
- lineId: string
15
- lineName: string
16
- title: string
17
- category: string
18
- /** 一句话关键结论(列表面展示) */
19
- summary: string
20
- /** 关键结论数组(结构化发现) */
21
- conclusions: string[]
22
- /** 完整分析正文(markdown) */
23
- report: string
24
- /** 支撑指标/数据 */
25
- metrics: Record<string, unknown>
26
- recipeId: string
27
- recipeVersion: string
28
- /** 分析的数据时间窗(ISO;空 = 未指明) */
29
- windowFrom: string | null
30
- windowTo: string | null
31
- /** 证据来源说明(daq 窗口/mes 数据集/批次号等,人读) */
32
- dataSources: string
33
- /** 保存时的产线上下文快照(产品/批次/控制模式等) */
34
- context: Record<string, unknown>
35
- channelId: string
36
- channelName: string
37
- actor: string
38
- actorName: string
39
- createdAt: string
40
- }
41
-
42
- export interface AnalysisReportInput {
43
- id: string
44
- lineId: string
45
- lineName: string
46
- title: string
47
- category: string
48
- summary: string
49
- conclusions: string[]
50
- report: string
51
- metrics: Record<string, unknown>
52
- recipeId: string
53
- recipeVersion: string
54
- windowFrom: string | null
55
- windowTo: string | null
56
- dataSources: string
57
- context: Record<string, unknown>
58
- channelId: string
59
- channelName: string
60
- actor: string
61
- actorName: string
62
- createdAt: string
63
- }
64
-
65
- export interface AnalysisReportFilter {
66
- /** 作用域限制(可见产线集合;空 = 不限) */
67
- lineIds?: string[]
68
- lineId?: string
69
- recipeId?: string
70
- category?: string
71
- /** 关键词(title/summary LIKE) */
72
- q?: string
73
- /** created_at 下/上界(ISO) */
74
- from?: string
75
- to?: string
76
- limit?: number
77
- }
78
-
79
- const COLS = `id, line_id AS lineId, line_name AS lineName, title, category, summary,
80
- conclusions_json AS conclusionsJson, report, metrics_json AS metricsJson,
81
- recipe_id AS recipeId, recipe_version AS recipeVersion,
82
- window_from AS windowFrom, window_to AS windowTo, data_sources AS dataSources,
83
- context_json AS contextJson, channel_id AS channelId, channel_name AS channelName,
84
- actor, actor_name AS actorName, created_at AS createdAt`
85
-
86
- function rowToReport(r: Record<string, unknown>): AnalysisReportRow {
87
- const parseJson = (raw: unknown, dflt: unknown): unknown => {
88
- try {
89
- return JSON.parse(String(raw ?? '')) ?? dflt
90
- }
91
- catch {
92
- return dflt
93
- }
94
- }
95
- return {
96
- ...(r as unknown as Omit<AnalysisReportRow, 'conclusions' | 'metrics' | 'context' | 'conclusionsJson' | 'metricsJson' | 'contextJson'>),
97
- conclusions: parseJson(r.conclusionsJson, []) as string[],
98
- metrics: parseJson(r.metricsJson, {}) as Record<string, unknown>,
99
- context: parseJson(r.contextJson, {}) as Record<string, unknown>,
100
- } as AnalysisReportRow
101
- }
102
-
103
- export function createAnalysisRepo(db: DatabaseSync) {
104
- const insertStmt = db.prepare(
105
- `INSERT INTO analysis_reports (id, line_id, line_name, title, category, summary,
106
- conclusions_json, report, metrics_json, recipe_id, recipe_version,
107
- window_from, window_to, data_sources, context_json,
108
- channel_id, channel_name, actor, actor_name, created_at)
109
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
110
- )
111
- const getStmt = db.prepare(`SELECT ${COLS} FROM analysis_reports WHERE id = ?`)
112
- const removeStmt = db.prepare(`DELETE FROM analysis_reports WHERE id = ?`)
113
- const countStmt = db.prepare('SELECT COUNT(*) AS c FROM analysis_reports')
114
-
115
- return {
116
- insert(row: AnalysisReportInput): void {
117
- insertStmt.run(
118
- row.id, row.lineId, row.lineName, row.title, row.category, row.summary,
119
- JSON.stringify(row.conclusions ?? []), row.report ?? '', JSON.stringify(row.metrics ?? {}),
120
- row.recipeId ?? '', row.recipeVersion ?? '',
121
- row.windowFrom ?? null, row.windowTo ?? null, row.dataSources ?? '', JSON.stringify(row.context ?? {}),
122
- row.channelId ?? '', row.channelName ?? '', row.actor ?? '', row.actorName ?? '', row.createdAt,
123
- )
124
- },
125
- get(id: string): AnalysisReportRow | undefined {
126
- const r = getStmt.get(id) as Record<string, unknown> | undefined
127
- return r ? rowToReport(r) : undefined
128
- },
129
- list(filter: AnalysisReportFilter = {}): AnalysisReportRow[] {
130
- const where: string[] = []
131
- const args: SQLInputValue[] = []
132
- if (filter.lineId) {
133
- where.push('line_id = ?')
134
- args.push(filter.lineId)
135
- }
136
- if (filter.lineIds && filter.lineIds.length > 0) {
137
- where.push(`line_id IN (${filter.lineIds.map(() => '?').join(', ')})`)
138
- args.push(...filter.lineIds)
139
- }
140
- if (filter.recipeId) {
141
- where.push('recipe_id = ?')
142
- args.push(filter.recipeId)
143
- }
144
- if (filter.category) {
145
- where.push('category = ?')
146
- args.push(filter.category)
147
- }
148
- if (filter.q) {
149
- // 关键词三列 LIKE:标题 / 一句话结论 / 结论明细(JSON 数组文本,元素原串可命中)
150
- where.push('(title LIKE ? OR summary LIKE ? OR conclusions_json LIKE ?)')
151
- const like = `%${filter.q}%`
152
- args.push(like, like, like)
153
- }
154
- if (filter.from) {
155
- where.push('created_at >= ?')
156
- args.push(filter.from)
157
- }
158
- if (filter.to) {
159
- where.push('created_at <= ?')
160
- args.push(filter.to)
161
- }
162
- const sql = `SELECT ${COLS} FROM analysis_reports ${where.length ? `WHERE ${where.join(' AND ')}` : ''}
163
- ORDER BY created_at DESC LIMIT ?`
164
- args.push(Math.min(500, Math.max(1, filter.limit ?? 100)))
165
- return (db.prepare(sql).all(...args) as unknown as Record<string, unknown>[]).map(rowToReport)
166
- },
167
- remove(id: string): boolean {
168
- return Number(removeStmt.run(id).changes) > 0
169
- },
170
- count(): number {
171
- return Number((countStmt.get() as { c: number }).c)
172
- },
173
- }
174
- }
175
-
176
- export type AnalysisRepo = ReturnType<typeof createAnalysisRepo>
177
-
178
- let singleton: AnalysisRepo | null = null
179
-
180
- /** Nitro 插件启动时装配(plugins/workshop.ts) */
181
- export function configureAnalysisRepo(db: DatabaseSync): void {
182
- singleton = createAnalysisRepo(db)
183
- }
184
-
185
- /** 运行期取用(未装配即抛 = 装配漏接线的响亮失败) */
186
- export function getAnalysisRepo(): AnalysisRepo {
187
- if (!singleton) throw new Error('analysis repo 未装配(configureAnalysisRepo 未调用)')
188
- return singleton
189
- }
1
+ /**
2
+ * 数据分析系统 · 分析报告台账(analysis_reports)。
3
+ *
4
+ * 定位:Agent Channel 分析产出的持久留痕 —— append-only,工具面只提供 save/query,
5
+ * 无更新与删除(删仅 REST admin 面)。产线/配方/时间/关键结论为一级字段;
6
+ * 归因(channel/actor)与产线上下文在保存时快照固化,产线改名或删除后历史仍可读。
7
+ *
8
+ * 头注释铁律同 aml.repo:全部参数绑定(无字符串拼 SQL;LIKE 的 % 也在参数侧)。
9
+ */
10
+ import type { DatabaseSync, SQLInputValue } from 'node:sqlite'
11
+
12
+ export interface AnalysisReportRow {
13
+ id: string
14
+ lineId: string
15
+ lineName: string
16
+ title: string
17
+ category: string
18
+ /** 一句话关键结论(列表面展示) */
19
+ summary: string
20
+ /** 关键结论数组(结构化发现) */
21
+ conclusions: string[]
22
+ /** 完整分析正文(markdown) */
23
+ report: string
24
+ /** 支撑指标/数据 */
25
+ metrics: Record<string, unknown>
26
+ recipeId: string
27
+ recipeVersion: string
28
+ /** 分析的数据时间窗(ISO;空 = 未指明) */
29
+ windowFrom: string | null
30
+ windowTo: string | null
31
+ /** 证据来源说明(daq 窗口/mes 数据集/批次号等,人读) */
32
+ dataSources: string
33
+ /** 保存时的产线上下文快照(产品/批次/控制模式等) */
34
+ context: Record<string, unknown>
35
+ channelId: string
36
+ channelName: string
37
+ actor: string
38
+ actorName: string
39
+ createdAt: string
40
+ /** v27 人工修订归因(未修订 = null/空) */
41
+ updatedAt: string | null
42
+ updatedBy: string
43
+ updatedByName: string
44
+ }
45
+
46
+ export interface AnalysisReportInput {
47
+ id: string
48
+ lineId: string
49
+ lineName: string
50
+ title: string
51
+ category: string
52
+ summary: string
53
+ conclusions: string[]
54
+ report: string
55
+ metrics: Record<string, unknown>
56
+ recipeId: string
57
+ recipeVersion: string
58
+ windowFrom: string | null
59
+ windowTo: string | null
60
+ dataSources: string
61
+ context: Record<string, unknown>
62
+ channelId: string
63
+ channelName: string
64
+ actor: string
65
+ actorName: string
66
+ createdAt: string
67
+ }
68
+
69
+ export interface AnalysisReportFilter {
70
+ /** 作用域限制(可见产线集合;空 = 不限) */
71
+ lineIds?: string[]
72
+ lineId?: string
73
+ recipeId?: string
74
+ category?: string
75
+ /** 关键词(title/summary LIKE) */
76
+ q?: string
77
+ /** created_at 下/上界(ISO) */
78
+ from?: string
79
+ to?: string
80
+ limit?: number
81
+ }
82
+
83
+ const COLS = `id, line_id AS lineId, line_name AS lineName, title, category, summary,
84
+ conclusions_json AS conclusionsJson, report, metrics_json AS metricsJson,
85
+ recipe_id AS recipeId, recipe_version AS recipeVersion,
86
+ window_from AS windowFrom, window_to AS windowTo, data_sources AS dataSources,
87
+ context_json AS contextJson, channel_id AS channelId, channel_name AS channelName,
88
+ actor, actor_name AS actorName, created_at AS createdAt,
89
+ updated_at AS updatedAt, updated_by AS updatedBy, updated_by_name AS updatedByName`
90
+
91
+ function rowToReport(r: Record<string, unknown>): AnalysisReportRow {
92
+ const parseJson = (raw: unknown, dflt: unknown): unknown => {
93
+ try {
94
+ return JSON.parse(String(raw ?? '')) ?? dflt
95
+ }
96
+ catch {
97
+ return dflt
98
+ }
99
+ }
100
+ return {
101
+ ...(r as unknown as Omit<AnalysisReportRow, 'conclusions' | 'metrics' | 'context' | 'conclusionsJson' | 'metricsJson' | 'contextJson'>),
102
+ conclusions: parseJson(r.conclusionsJson, []) as string[],
103
+ metrics: parseJson(r.metricsJson, {}) as Record<string, unknown>,
104
+ context: parseJson(r.contextJson, {}) as Record<string, unknown>,
105
+ } as AnalysisReportRow
106
+ }
107
+
108
+ export function createAnalysisRepo(db: DatabaseSync) {
109
+ const insertStmt = db.prepare(
110
+ `INSERT INTO analysis_reports (id, line_id, line_name, title, category, summary,
111
+ conclusions_json, report, metrics_json, recipe_id, recipe_version,
112
+ window_from, window_to, data_sources, context_json,
113
+ channel_id, channel_name, actor, actor_name, created_at)
114
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
115
+ )
116
+ // v27 人工修订:读改写单条全量 UPDATE(patch 在调用方合并,语句一次 prepare)
117
+ const updateStmt = db.prepare(
118
+ `UPDATE analysis_reports SET title = ?, category = ?, summary = ?, conclusions_json = ?,
119
+ report = ?, metrics_json = ?, recipe_id = ?, recipe_version = ?,
120
+ window_from = ?, window_to = ?, data_sources = ?,
121
+ updated_at = ?, updated_by = ?, updated_by_name = ?
122
+ WHERE id = ?`,
123
+ )
124
+ const getStmt = db.prepare(`SELECT ${COLS} FROM analysis_reports WHERE id = ?`)
125
+ const removeStmt = db.prepare(`DELETE FROM analysis_reports WHERE id = ?`)
126
+ const countStmt = db.prepare('SELECT COUNT(*) AS c FROM analysis_reports')
127
+
128
+ return {
129
+ insert(row: AnalysisReportInput): void {
130
+ insertStmt.run(
131
+ row.id, row.lineId, row.lineName, row.title, row.category, row.summary,
132
+ JSON.stringify(row.conclusions ?? []), row.report ?? '', JSON.stringify(row.metrics ?? {}),
133
+ row.recipeId ?? '', row.recipeVersion ?? '',
134
+ row.windowFrom ?? null, row.windowTo ?? null, row.dataSources ?? '', JSON.stringify(row.context ?? {}),
135
+ row.channelId ?? '', row.channelName ?? '', row.actor ?? '', row.actorName ?? '', row.createdAt,
136
+ )
137
+ },
138
+ get(id: string): AnalysisReportRow | undefined {
139
+ const r = getStmt.get(id) as Record<string, unknown> | undefined
140
+ return r ? rowToReport(r) : undefined
141
+ },
142
+ list(filter: AnalysisReportFilter = {}): AnalysisReportRow[] {
143
+ const where: string[] = []
144
+ const args: SQLInputValue[] = []
145
+ if (filter.lineId) {
146
+ where.push('line_id = ?')
147
+ args.push(filter.lineId)
148
+ }
149
+ if (filter.lineIds && filter.lineIds.length > 0) {
150
+ where.push(`line_id IN (${filter.lineIds.map(() => '?').join(', ')})`)
151
+ args.push(...filter.lineIds)
152
+ }
153
+ if (filter.recipeId) {
154
+ where.push('recipe_id = ?')
155
+ args.push(filter.recipeId)
156
+ }
157
+ if (filter.category) {
158
+ where.push('category = ?')
159
+ args.push(filter.category)
160
+ }
161
+ if (filter.q) {
162
+ // 关键词三列 LIKE:标题 / 一句话结论 / 结论明细(JSON 数组文本,元素原串可命中)
163
+ where.push('(title LIKE ? OR summary LIKE ? OR conclusions_json LIKE ?)')
164
+ const like = `%${filter.q}%`
165
+ args.push(like, like, like)
166
+ }
167
+ if (filter.from) {
168
+ where.push('created_at >= ?')
169
+ args.push(filter.from)
170
+ }
171
+ if (filter.to) {
172
+ where.push('created_at <= ?')
173
+ args.push(filter.to)
174
+ }
175
+ const sql = `SELECT ${COLS} FROM analysis_reports ${where.length ? `WHERE ${where.join(' AND ')}` : ''}
176
+ ORDER BY created_at DESC LIMIT ?`
177
+ args.push(Math.min(500, Math.max(1, filter.limit ?? 100)))
178
+ return (db.prepare(sql).all(...args) as unknown as Record<string, unknown>[]).map(rowToReport)
179
+ },
180
+ remove(id: string): boolean {
181
+ return Number(removeStmt.run(id).changes) > 0
182
+ },
183
+ /**
184
+ * v27 人工修订:部分字段更新(patch 缺省 = 保留原值),固化修订归因。
185
+ * 编辑面属人类管理操作(Agent 面仍无改删);调用方负责权限校验与窗口归一。
186
+ */
187
+ update(id: string, patch: {
188
+ title?: string
189
+ category?: string
190
+ summary?: string
191
+ conclusions?: string[]
192
+ report?: string
193
+ metrics?: Record<string, unknown>
194
+ recipeId?: string
195
+ recipeVersion?: string
196
+ windowFrom?: string | null
197
+ windowTo?: string | null
198
+ dataSources?: string
199
+ }, editor: { id: string, name: string }): AnalysisReportRow | undefined {
200
+ const cur = getStmt.get(id) as Record<string, unknown> | undefined
201
+ if (!cur) return undefined
202
+ const merged = rowToReport(cur)
203
+ updateStmt.run(
204
+ patch.title !== undefined ? patch.title : merged.title,
205
+ patch.category !== undefined ? patch.category : merged.category,
206
+ patch.summary !== undefined ? patch.summary : merged.summary,
207
+ JSON.stringify(patch.conclusions !== undefined ? patch.conclusions : merged.conclusions),
208
+ patch.report !== undefined ? patch.report : merged.report,
209
+ JSON.stringify(patch.metrics !== undefined ? patch.metrics : merged.metrics),
210
+ patch.recipeId !== undefined ? patch.recipeId : merged.recipeId,
211
+ patch.recipeVersion !== undefined ? patch.recipeVersion : merged.recipeVersion,
212
+ patch.windowFrom !== undefined ? patch.windowFrom : merged.windowFrom,
213
+ patch.windowTo !== undefined ? patch.windowTo : merged.windowTo,
214
+ patch.dataSources !== undefined ? patch.dataSources : merged.dataSources,
215
+ new Date().toISOString(),
216
+ editor.id,
217
+ editor.name,
218
+ id,
219
+ )
220
+ return this.get(id)
221
+ },
222
+ count(): number {
223
+ return Number((countStmt.get() as { c: number }).c)
224
+ },
225
+ }
226
+ }
227
+
228
+ export type AnalysisRepo = ReturnType<typeof createAnalysisRepo>
229
+
230
+ let singleton: AnalysisRepo | null = null
231
+
232
+ /** Nitro 插件启动时装配(plugins/workshop.ts) */
233
+ export function configureAnalysisRepo(db: DatabaseSync): void {
234
+ singleton = createAnalysisRepo(db)
235
+ }
236
+
237
+ /** 运行期取用(未装配即抛 = 装配漏接线的响亮失败) */
238
+ export function getAnalysisRepo(): AnalysisRepo {
239
+ if (!singleton) throw new Error('analysis repo 未装配(configureAnalysisRepo 未调用)')
240
+ return singleton
241
+ }
@@ -418,3 +418,13 @@ export function migrateAmlChannelOptimizationColumns(db: DatabaseSync): void {
418
418
  db.exec('CREATE INDEX IF NOT EXISTS idx_opt_explorations_channel ON optimization_explorations(channel_id, created_at DESC)')
419
419
  // aml_training_plans 建表由 SCHEMA_SQL 的 CREATE TABLE IF NOT EXISTS 兜底(启动时全量幂等执行,新旧库同效)
420
420
  }
421
+
422
+ /**
423
+ * v27:数据分析报告人工修订列(updated_at/updated_by/updated_by_name)。
424
+ * 既有库补列(新库由 SCHEMA_SQL 直建);无索引需求 —— 修订列只随行读,不作检索键。
425
+ */
426
+ export function migrateAnalysisEditColumns(db: DatabaseSync): void {
427
+ migrateAddColumn(db, 'analysis_reports', 'updated_at', 'TEXT')
428
+ migrateAddColumn(db, 'analysis_reports', 'updated_by', 'TEXT NOT NULL DEFAULT \'\'')
429
+ migrateAddColumn(db, 'analysis_reports', 'updated_by_name', 'TEXT NOT NULL DEFAULT \'\'')
430
+ }
@@ -6,7 +6,7 @@ import type * as sqliteVec from 'sqlite-vec'
6
6
  import { DatabaseSync } from 'node:sqlite'
7
7
  import { SCHEMA_SQL } from './schema'
8
8
  import { createRequire } from 'node:module'
9
- import { migrateAddColumn, migrateAgentTeamExecutionLeaseColumns, migrateAgentTeamTaskGuardrailColumns, migrateAgentTeamTaskGuardrails, migrateAgentTeamTaskQueueColumns, migrateAmlChannelOptimizationColumns, migrateAmlModelIdentityColumns, migrateApprovalPayloadColumns, migrateDropOwnerFks, migrateGroupChatV17, migrateLegacySchema, migrateMissingForeignKeys, migrateAmlTwinProviderColumns } from './migrations'
9
+ import { migrateAddColumn, migrateAgentTeamExecutionLeaseColumns, migrateAgentTeamTaskGuardrailColumns, migrateAgentTeamTaskGuardrails, migrateAgentTeamTaskQueueColumns, migrateAmlChannelOptimizationColumns, migrateAmlModelIdentityColumns, migrateAnalysisEditColumns, migrateApprovalPayloadColumns, migrateDropOwnerFks, migrateGroupChatV17, migrateLegacySchema, migrateMissingForeignKeys, migrateAmlTwinProviderColumns } from './migrations'
10
10
  import { seedDefaultWorkshopData } from './seed'
11
11
 
12
12
  export const require = createRequire(import.meta.url)
@@ -68,6 +68,8 @@ export function initWorkshopDb(db: DatabaseSync): void {
68
68
  migrateAmlChannelOptimizationColumns(db)
69
69
  // 产线 Co-Pilot P2:审批历史结构化载荷列(payload_json/choice;既有库补列,新库 DDL 已含)
70
70
  migrateApprovalPayloadColumns(db)
71
+ // v27:数据分析报告人工修订列(updated_*;既有库补列,新库 DDL 已含)
72
+ migrateAnalysisEditColumns(db)
71
73
  seedDefaultWorkshopData(db)
72
74
  }
73
75
 
@@ -750,8 +750,9 @@ CREATE INDEX IF NOT EXISTS idx_mes_fetch_jobs_agent ON mes_fetch_jobs(agent_id,
750
750
 
751
751
  CREATE INDEX IF NOT EXISTS idx_hitl_requests_agent ON hitl_requests(agent_id, status);
752
752
 
753
- -- v26: 数据分析系统 · 分析报告台账(Agent Channel 经 analysis_save 留痕;append-only,Agent 面无改删)
753
+ -- v26: 数据分析系统 · 分析报告台账(Agent Channel 经 analysis_save 留痕;Agent 面无改删)
754
754
  -- 归因与产线上下文在保存时快照固化(line_name/产品/批次),产线改名或删除后历史仍可读。
755
+ -- v27: 人工修订面 —— 人类用户(产线 operate/admin)可经 REST 编辑,updated_* 固化修订归因。
755
756
  CREATE TABLE IF NOT EXISTS analysis_reports (
756
757
  id TEXT PRIMARY KEY,
757
758
  line_id TEXT NOT NULL DEFAULT '',
@@ -772,7 +773,10 @@ CREATE TABLE IF NOT EXISTS analysis_reports (
772
773
  channel_name TEXT NOT NULL DEFAULT '',
773
774
  actor TEXT NOT NULL DEFAULT '',
774
775
  actor_name TEXT NOT NULL DEFAULT '',
775
- created_at TEXT NOT NULL
776
+ created_at TEXT NOT NULL,
777
+ updated_at TEXT,
778
+ updated_by TEXT NOT NULL DEFAULT '',
779
+ updated_by_name TEXT NOT NULL DEFAULT ''
776
780
  );
777
781
  CREATE INDEX IF NOT EXISTS idx_analysis_reports_line ON analysis_reports(line_id, created_at DESC);
778
782
  CREATE INDEX IF NOT EXISTS idx_analysis_reports_recipe ON analysis_reports(recipe_id);`
@@ -359,8 +359,9 @@ CREATE TABLE IF NOT EXISTS mes_fetch_jobs (
359
359
  CREATE INDEX IF NOT EXISTS idx_mes_fetch_jobs_dataset ON mes_fetch_jobs(dataset_id);
360
360
  CREATE INDEX IF NOT EXISTS idx_mes_fetch_jobs_agent ON mes_fetch_jobs(agent_id, created_at DESC);
361
361
 
362
- -- v26: 数据分析系统 · 分析报告台账(Agent Channel 经 analysis_save 留痕;append-only,Agent 面无改删)
362
+ -- v26: 数据分析系统 · 分析报告台账(Agent Channel 经 analysis_save 留痕;Agent 面无改删)
363
363
  -- 归因与产线上下文在保存时快照固化(line_name/产品/批次),产线改名或删除后历史仍可读。
364
+ -- v27: 人工修订面 —— 人类用户(产线 operate/admin)可经 REST 编辑,updated_* 固化修订归因。
364
365
  CREATE TABLE IF NOT EXISTS analysis_reports (
365
366
  id TEXT PRIMARY KEY,
366
367
  line_id TEXT NOT NULL DEFAULT '',
@@ -381,7 +382,10 @@ CREATE TABLE IF NOT EXISTS analysis_reports (
381
382
  channel_name TEXT NOT NULL DEFAULT '',
382
383
  actor TEXT NOT NULL DEFAULT '',
383
384
  actor_name TEXT NOT NULL DEFAULT '',
384
- created_at TEXT NOT NULL
385
+ created_at TEXT NOT NULL,
386
+ updated_at TEXT,
387
+ updated_by TEXT NOT NULL DEFAULT '',
388
+ updated_by_name TEXT NOT NULL DEFAULT ''
385
389
  );
386
390
  CREATE INDEX IF NOT EXISTS idx_analysis_reports_line ON analysis_reports(line_id, created_at DESC);
387
391
  CREATE INDEX IF NOT EXISTS idx_analysis_reports_recipe ON analysis_reports(recipe_id);
@@ -1,13 +0,0 @@
1
- import{C as e,E as t,N as n,S as r,v as i}from"./CavpkQb0.js";import{C as a,D as o,H as s,P as c,R as l,S as u,b as d,d as f,et as p,i as m,rt as h,s as g,tt as _}from"./ByMj6e7s.js";import{t as v,u as y}from"./goF_oZHF.js";import{D as b,Mt as x,Tt as S,_ as C,bt as w,d as T,et as E,f as D,g as O,h as k,jt as A,lt as j,mt as M,n as ee,p as N,t as P,u as F,wt as te,xt as ne}from"./C2YYOgMe.js";import{C as re,E as I,T as L,d as R,t as z}from"./_jfzcYrl.js";import{I as B,K as ie,h as ae,v as V,w as oe,y as se}from"./BdE41Y_c.js";import{A as H,O as U,X as W,_ as ce,c as le,lt as ue,tt as de,y as fe}from"./CWfBtswB.js";function pe(){}var me=H&&1/re(new H([,-0]))[1]==1/0?function(e){return new H(e)}:pe,he=200;function ge(e,t,n){var r=-1,i=B,a=e.length,o=!0,s=[],c=s;if(n)o=!1,i=oe;else if(a>=he){var l=t?null:me(e);if(l)return re(l);o=!1,i=L,c=new I}else c=t?[]:s;outer:for(;++r<a;){var u=e[r],d=t?t(u):u;if(u=n||u!==0?u:0,o&&d===d){for(var f=c.length;f--;)if(c[f]===d)continue outer;t&&c.push(d),s.push(u)}else i(c,d,n)||(c!==s&&c.push(d),s.push(u))}return s}function G(e){return e&&e.length?ge(e):[]}var K={adjustX:1,adjustY:1},q=[0,0],_e={topLeft:{points:[`bl`,`tl`],overflow:K,offset:[0,-4],targetOffset:q},topCenter:{points:[`bc`,`tc`],overflow:K,offset:[0,-4],targetOffset:q},topRight:{points:[`br`,`tr`],overflow:K,offset:[0,-4],targetOffset:q},bottomLeft:{points:[`tl`,`bl`],overflow:K,offset:[0,4],targetOffset:q},bottomCenter:{points:[`tc`,`bc`],overflow:K,offset:[0,4],targetOffset:q},bottomRight:{points:[`tr`,`br`],overflow:K,offset:[0,4],targetOffset:q}},ve=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},ye=u({compatConfig:{MODE:3},props:{minOverlayWidthMatchTrigger:{type:Boolean,default:void 0},arrow:{type:Boolean,default:!1},prefixCls:P.string.def(`rc-dropdown`),transitionName:String,overlayClassName:P.string.def(``),openClassName:String,animation:P.any,align:P.object,overlayStyle:{type:Object,default:void 0},placement:P.string.def(`bottomLeft`),overlay:P.any,trigger:P.oneOfType([P.string,P.arrayOf(P.string)]).def(`hover`),alignPoint:{type:Boolean,default:void 0},showAction:P.array,hideAction:P.array,getPopupContainer:Function,visible:{type:Boolean,default:void 0},defaultVisible:{type:Boolean,default:!1},mouseEnterDelay:P.number.def(.15),mouseLeaveDelay:P.number.def(.1)},emits:[`visibleChange`,`overlayClick`],setup(e,t){let{slots:n,emit:r,expose:a}=t,o=i(!!e.visible);p(()=>e.visible,e=>{e!==void 0&&(o.value=e)});let s=i();a({triggerRef:s});let c=t=>{e.visible===void 0&&(o.value=!1),r(`overlayClick`,t)},l=t=>{e.visible===void 0&&(o.value=t),r(`visibleChange`,t)},u=()=>{let t=n.overlay?.call(n),r={prefixCls:`${e.prefixCls}-menu`,onClick:c};return d(m,{key:ne},[e.arrow&&d(`div`,{class:`${e.prefixCls}-arrow`},null),W(t,r,!1)])},h=f(()=>{let{minOverlayWidthMatchTrigger:t=!e.alignPoint}=e;return t}),g=()=>{let t=n.default?.call(n);return o.value&&t?W(t[0],{class:e.openClassName||`${e.prefixCls}-open`},!1):t},_=f(()=>!e.hideAction&&e.trigger.indexOf(`contextmenu`)!==-1?[`click`]:e.hideAction);return()=>{let{prefixCls:t,arrow:n,showAction:r,overlayStyle:i,trigger:a,placement:c,align:f,getPopupContainer:p,transitionName:m,animation:v,overlayClassName:y}=e,b=ve(e,[`prefixCls`,`arrow`,`showAction`,`overlayStyle`,`trigger`,`placement`,`align`,`getPopupContainer`,`transitionName`,`animation`,`overlayClassName`]);return d(R,x(x({},b),{},{prefixCls:t,ref:s,popupClassName:S(y,{[`${t}-show-arrow`]:n}),popupStyle:i,builtinPlacements:_e,action:a,showAction:r,hideAction:_.value||[],popupPlacement:c,popupAlign:f,popupTransitionName:m,popupAnimation:v,popupVisible:o.value,stretch:h.value?`minWidth`:``,onPopupVisibleChange:l,getPopupContainer:p}),{popup:u,default:g})}}}),be={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z`}}]},name:`ellipsis`,theme:`outlined`};function xe(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:Object(arguments[t]),r=Object.keys(n);typeof Object.getOwnPropertySymbols==`function`&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){Se(e,t,n[t])})}return e}function Se(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ce=function(e,t){var n=xe({},e,t.attrs);return d(ce,xe({},n,{icon:be}),null)};Ce.displayName=`EllipsisOutlined`,Ce.inheritAttrs=!1;var we=Symbol(`OverrideContextKey`),Te=()=>o(we,void 0),Ee=e=>{let{prefixCls:t,mode:n,selectable:r,validator:i,onClick:a,expandIcon:o}=Te()||{};s(we,{prefixCls:f(()=>e.prefixCls?.value??t?.value),mode:f(()=>e.mode?.value??n?.value),selectable:f(()=>e.selectable?.value??r?.value),validator:e.validator??i,onClick:e.onClick??a,expandIcon:e.expandIcon??o?.value})};function De(e,t,n,r){let i=n?n.call(r,e,t):void 0;if(i!==void 0)return!!i;if(e===t)return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;let a=Object.keys(e),o=Object.keys(t);if(a.length!==o.length)return!1;let s=Object.prototype.hasOwnProperty.bind(t);for(let o=0;o<a.length;o++){let c=a[o];if(!s(c))return!1;let l=e[c],u=t[c];if(i=n?n.call(r,l,u,c):void 0,i===!1||i===void 0&&l!==u)return!1}return!0}function J(t,n){return De(e(t),e(n))}var Oe=Symbol(`menuContextKey`),ke=e=>{s(Oe,e)},Y=()=>o(Oe),Ae=Symbol(`ForceRenderKey`),je=e=>{s(Ae,e)},Me=()=>o(Ae,!1),Ne=Symbol(`menuFirstLevelContextKey`),Pe=e=>{s(Ne,e)},Fe=()=>o(Ne,!0),Ie=u({compatConfig:{MODE:3},name:`MenuContextProvider`,inheritAttrs:!1,props:{mode:{type:String,default:void 0},overflowDisabled:{type:Boolean,default:void 0}},setup(e,n){let{slots:r}=n,i=Y(),a=A({},i);return e.mode!==void 0&&(a.mode=t(e,`mode`)),e.overflowDisabled!==void 0&&(a.overflowDisabled=t(e,`overflowDisabled`)),ke(a),()=>r.default?.call(r)}}),Le=Symbol(`siderCollapsed`),Re=Symbol(`siderHookProvider`),ze=`$$__vc-menu-more__key`,Be=Symbol(`KeyPathContext`),Ve=()=>o(Be,{parentEventKeys:f(()=>[]),parentKeys:f(()=>[]),parentInfo:{}}),He=(e,t,n)=>{let{parentEventKeys:r,parentKeys:i}=Ve(),a=f(()=>[...r.value,e]),o=f(()=>[...i.value,t]);return s(Be,{parentEventKeys:a,parentKeys:o,parentInfo:n}),o},Ue=Symbol(`measure`),We=u({compatConfig:{MODE:3},setup(e,t){let{slots:n}=t;return s(Ue,!0),()=>n.default?.call(n)}}),Ge=()=>o(Ue,!1);function Ke(e){let{mode:t,rtl:n,inlineIndent:r}=Y();return f(()=>t.value===`inline`?n.value?{paddingRight:`${e.value*r.value}px`}:{paddingLeft:`${e.value*r.value}px`}:null)}var qe=0,X=u({compatConfig:{MODE:3},name:`AMenuItem`,inheritAttrs:!1,props:{id:String,role:String,disabled:Boolean,danger:Boolean,title:{type:[String,Boolean],default:void 0},icon:P.any,onMouseenter:Function,onMouseleave:Function,onClick:Function,onKeydown:Function,onFocus:Function,originItemValue:E()},slots:Object,setup(e,t){let{slots:n,emit:i,attrs:o}=t,s=a(),l=Ge(),u=typeof s.vnode.key==`symbol`?String(s.vnode.key):s.vnode.key;de(typeof s.vnode.key!=`symbol`,`MenuItem`,`MenuItem \`:key="${String(u)}"\` not support Symbol type`);let m=`menu_item_${++qe}_$$_${u}`,{parentEventKeys:h,parentKeys:g}=Ve(),{prefixCls:_,activeKeys:v,disabled:y,changeActiveKeys:b,rtl:S,inlineCollapsed:C,siderCollapsed:T,onItemClick:E,selectedKeys:D,registerMenuInfo:O,unRegisterMenuInfo:k}=Y(),M=Fe(),ee=r(!1),N=f(()=>[...g.value,u]);O(m,{eventKey:m,key:u,parentEventKeys:h,parentKeys:g,isLeaf:!0}),c(()=>{k(m)}),p(v,()=>{ee.value=!!v.value.find(e=>e===u)},{immediate:!0});let P=f(()=>y.value||e.disabled),F=f(()=>D.value.includes(u)),te=f(()=>{let t=`${_.value}-item`;return{[`${t}`]:!0,[`${t}-danger`]:e.danger,[`${t}-active`]:ee.value,[`${t}-selected`]:F.value,[`${t}-disabled`]:P.value}}),ne=t=>({key:u,eventKey:m,keyPath:N.value,eventKeyPath:[...h.value,m],domEvent:t,item:A(A({},e),o)}),re=e=>{if(P.value)return;let t=ne(e);i(`click`,e),E(t)},I=e=>{P.value||(b(N.value),i(`mouseenter`,e))},L=e=>{P.value||(b([]),i(`mouseleave`,e))},R=e=>{if(i(`keydown`,e),e.which===fe.ENTER){let t=ne(e);i(`click`,e),E(t)}},B=e=>{b(N.value),i(`focus`,e)},ae=(e,t)=>{let n=d(`span`,{class:`${_.value}-title-content`},[t]);return(!e||w(t)&&t.type===`span`)&&t&&C.value&&M&&typeof t==`string`?d(`div`,{class:`${_.value}-inline-collapsed-noicon`},[t.charAt(0)]):n},V=Ke(f(()=>N.value.length));return()=>{if(l)return null;let t=e.title??n.title?.call(n),r=j(n.default?.call(n)),i=r.length,a=t;t===void 0?a=M&&i?r:``:t===!1&&(a=``);let s={title:a};!T.value&&!C.value&&(s.title=null,s.open=!1);let c={};e.role===`option`&&(c[`aria-selected`]=F.value);let f=e.icon??n.icon?.call(n,e);return d(z,x(x({},s),{},{placement:S.value?`left`:`right`,overlayClassName:`${_.value}-inline-collapsed-tooltip`}),{default:()=>[d(ie.Item,x(x(x({component:`li`},o),{},{id:e.id,style:A(A({},o.style||{}),V.value),class:[te.value,{[`${o.class}`]:!!o.class,[`${_.value}-item-only-child`]:(f?i+1:i)===1}],role:e.role||`menuitem`,tabindex:e.disabled?null:-1,"data-menu-id":u,"aria-disabled":e.disabled},c),{},{onMouseenter:I,onMouseleave:L,onClick:re,onKeydown:R,onFocus:B,title:typeof t==`string`?t:void 0}),{default:()=>[W(typeof f==`function`?f(e.originItemValue):f,{class:`${_.value}-item-icon`},!1),ae(f,r)]})]})}}}),Z={adjustX:1,adjustY:1},Je={topLeft:{points:[`bl`,`tl`],overflow:Z,offset:[0,-7]},bottomLeft:{points:[`tl`,`bl`],overflow:Z,offset:[0,7]},leftTop:{points:[`tr`,`tl`],overflow:Z,offset:[-4,0]},rightTop:{points:[`tl`,`tr`],overflow:Z,offset:[4,0]}},Ye={topLeft:{points:[`bl`,`tl`],overflow:Z,offset:[0,-7]},bottomLeft:{points:[`tl`,`bl`],overflow:Z,offset:[0,7]},rightTop:{points:[`tr`,`tl`],overflow:Z,offset:[-4,0]},leftTop:{points:[`tl`,`tr`],overflow:Z,offset:[4,0]}},Xe={horizontal:`bottomLeft`,vertical:`rightTop`,"vertical-left":`rightTop`,"vertical-right":`leftTop`},Ze=u({compatConfig:{MODE:3},name:`PopupTrigger`,inheritAttrs:!1,props:{prefixCls:String,mode:String,visible:Boolean,popupClassName:String,popupOffset:Array,disabled:Boolean,onVisibleChange:Function},slots:Object,emits:[`visibleChange`],setup(e,t){let{slots:n,emit:i}=t,a=r(!1),{getPopupContainer:o,rtl:s,subMenuOpenDelay:l,subMenuCloseDelay:u,builtinPlacements:m,triggerSubMenuAction:h,forceSubMenuRender:g,motion:_,defaultMotions:v,rootClassName:y}=Y(),b=Me(),x=f(()=>s.value?A(A({},Ye),m.value):A(A({},Je),m.value)),C=f(()=>Xe[e.mode]),w=r();p(()=>e.visible,e=>{ue.cancel(w.value),w.value=ue(()=>{a.value=e})},{immediate:!0}),c(()=>{ue.cancel(w.value)});let T=e=>{i(`visibleChange`,e)},E=f(()=>{let t=_.value||v.value?.[e.mode]||v.value?.other,n=typeof t==`function`?t():t;return n?U(n.name,{css:!0}):void 0});return()=>{let{prefixCls:t,popupClassName:r,mode:i,popupOffset:c,disabled:f}=e;return d(R,{prefixCls:t,popupClassName:S(`${t}-popup`,{[`${t}-rtl`]:s.value},r,y.value),stretch:i===`horizontal`?`minWidth`:null,getPopupContainer:o.value,builtinPlacements:x.value,popupPlacement:C.value,popupVisible:a.value,popupAlign:c&&{offset:c},action:f?[]:[h.value],mouseEnterDelay:l.value,mouseLeaveDelay:u.value,onPopupVisibleChange:T,forceRender:b||g.value,popupAnimation:E.value},{popup:n.popup,default:n.default})}}}),Qe=(e,t)=>{let{slots:n,attrs:r}=t,{prefixCls:i,mode:a}=Y();return d(`ul`,x(x({},r),{},{class:S(i.value,`${i.value}-sub`,`${i.value}-${a.value===`inline`?`inline`:`vertical`}`),"data-menu-list":!0}),[n.default?.call(n)])};Qe.displayName=`SubMenuList`;var $e=u({compatConfig:{MODE:3},name:`InlineSubMenuList`,inheritAttrs:!1,props:{id:String,open:Boolean,keyPath:Array},setup(e,t){let{slots:n}=t,r=f(()=>`inline`),{motion:a,mode:o,defaultMotions:s}=Y(),c=f(()=>o.value===r.value),l=i(!c.value),u=f(()=>c.value?e.open:!1);p(o,()=>{c.value&&(l.value=!1)},{flush:`post`});let m=f(()=>{let t=a.value||s.value?.[r.value]||s.value?.other,n=typeof t==`function`?t():t;return A(A({},n),{appear:e.keyPath.length<=1})});return()=>l.value?null:d(Ie,{mode:r.value},{default:()=>[d(v,m.value,{default:()=>[h(d(Qe,{id:e.id},{default:()=>[n.default?.call(n)]}),[[y,u.value]])]})]})}}),et=0,Q=u({compatConfig:{MODE:3},name:`ASubMenu`,inheritAttrs:!1,props:{icon:P.any,title:P.any,disabled:Boolean,level:Number,popupClassName:String,popupOffset:Array,internalPopupClose:Boolean,eventKey:String,expandIcon:Function,theme:String,onMouseenter:Function,onMouseleave:Function,onTitleClick:Function,originItemValue:E()},slots:Object,setup(e,t){let{slots:n,attrs:i,emit:o}=t;var s;Pe(!1);let l=Ge(),u=a(),h=typeof u.vnode.key==`symbol`?String(u.vnode.key):u.vnode.key;de(typeof u.vnode.key!=`symbol`,`SubMenu`,`SubMenu \`:key="${String(h)}"\` not support Symbol type`);let g=te(h)?h:`sub_menu_${++et}_$$_not_set_key`,_=e.eventKey??(te(h)?`sub_menu_${++et}_$$_${h}`:g),{parentEventKeys:v,parentInfo:y,parentKeys:b}=Ve(),C=f(()=>[...b.value,g]),T={eventKey:_,key:g,parentEventKeys:v,childrenEventKeys:r([]),parentKeys:b};(s=y.childrenEventKeys)==null||s.value.push(_),c(()=>{y.childrenEventKeys&&(y.childrenEventKeys.value=y.childrenEventKeys?.value.filter(e=>e!=_))}),He(_,g,T);let{prefixCls:E,activeKeys:D,disabled:O,changeActiveKeys:k,mode:j,inlineCollapsed:ee,openKeys:N,overflowDisabled:P,onOpenChange:F,registerMenuInfo:ne,unRegisterMenuInfo:re,selectedSubMenuKeys:I,expandIcon:L,theme:R}=Y(),z=h!=null,B=!l&&(Me()||!z);je(B),(l&&z||!l&&!z||B)&&(ne(_,T),c(()=>{re(_)}));let ae=f(()=>`${E.value}-submenu`),V=f(()=>O.value||e.disabled),oe=r(),se=r(),H=f(()=>N.value.includes(g)),U=f(()=>!P.value&&H.value),ce=f(()=>I.value.includes(g)),le=r(!1);p(D,()=>{le.value=!!D.value.find(e=>e===g)},{immediate:!0});let ue=e=>{V.value||(o(`titleClick`,e,g),j.value===`inline`&&F(g,!H.value))},fe=e=>{V.value||(k(C.value),o(`mouseenter`,e))},pe=e=>{V.value||(k([]),o(`mouseleave`,e))},me=Ke(f(()=>C.value.length)),he=e=>{j.value!==`inline`&&F(g,e)},ge=()=>{k(C.value)},G=_&&`${_}-popup`,K=f(()=>S(E.value,`${E.value}-${e.theme||R.value}`,e.popupClassName)),q=(t,n)=>{if(!n)return ee.value&&!b.value.length&&t&&typeof t==`string`?d(`div`,{class:`${E.value}-inline-collapsed-noicon`},[t.charAt(0)]):d(`span`,{class:`${E.value}-title-content`},[t]);let r=w(t)&&t.type===`span`;return d(m,null,[W(typeof n==`function`?n(e.originItemValue):n,{class:`${E.value}-item-icon`},!1),r?t:d(`span`,{class:`${E.value}-title-content`},[t])])},_e=f(()=>j.value!==`inline`&&C.value.length>1?`vertical`:j.value),ve=f(()=>j.value===`horizontal`?`vertical`:j.value),ye=f(()=>_e.value===`horizontal`?`vertical`:_e.value),be=()=>{let t=ae.value,r=e.icon??n.icon?.call(n,e),i=e.expandIcon||n.expandIcon||L.value,a=q(M(n,e,`title`),r);return d(`div`,{style:me.value,class:`${t}-title`,tabindex:V.value?null:-1,ref:oe,title:typeof a==`string`?a:null,"data-menu-id":g,"aria-expanded":U.value,"aria-haspopup":!0,"aria-controls":G,"aria-disabled":V.value,onClick:ue,onFocus:ge},[a,j.value!==`horizontal`&&i?i(A(A({},e),{isOpen:U.value})):d(`i`,{class:`${t}-arrow`},null)])};return()=>{if(l)return z?n.default?.call(n):null;let t=ae.value,r=()=>null;if(!P.value&&j.value!==`inline`){let i=j.value===`horizontal`?[0,8]:[10,0];r=()=>d(Ze,{mode:_e.value,prefixCls:t,visible:!e.internalPopupClose&&U.value,popupClassName:K.value,popupOffset:e.popupOffset||i,disabled:V.value,onVisibleChange:he},{default:()=>[be()],popup:()=>d(Ie,{mode:ye.value},{default:()=>[d(Qe,{id:G,ref:se},{default:n.default})]})})}else r=()=>d(Ze,null,{default:be});return d(Ie,{mode:ve.value},{default:()=>[d(ie.Item,x(x({component:`li`},i),{},{role:`none`,class:S(t,`${t}-${j.value}`,i.class,{[`${t}-open`]:U.value,[`${t}-active`]:le.value,[`${t}-selected`]:ce.value,[`${t}-disabled`]:V.value}),onMouseenter:fe,onMouseleave:pe,"data-submenu-id":g}),{default:()=>d(m,null,[r(),!P.value&&d($e,{id:G,open:U.value,keyPath:C.value},{default:n.default})])})]})}}}),tt=u({compatConfig:{MODE:3},name:`AMenuItemGroup`,inheritAttrs:!1,props:{title:P.any,originItemValue:E()},slots:Object,setup(e,t){let{slots:n,attrs:r}=t,{prefixCls:i}=Y(),a=f(()=>`${i.value}-item-group`),o=Ge();return()=>o?n.default?.call(n):d(`li`,x(x({},r),{},{onClick:e=>e.stopPropagation(),class:a.value}),[d(`div`,{title:typeof e.title==`string`?e.title:void 0,class:`${a.value}-title`},[M(n,e,`title`)]),d(`ul`,{class:`${a.value}-list`},[n.default?.call(n)])])}}),nt=u({compatConfig:{MODE:3},name:`AMenuDivider`,props:{prefixCls:String,dashed:Boolean},setup(e){let{prefixCls:t}=Y(),n=f(()=>({[`${t.value}-item-divider`]:!0,[`${t.value}-item-divider-dashed`]:!!e.dashed}));return()=>d(`li`,{class:n.value},null)}}),rt=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n};function it(e,t,n){return(e||[]).map((e,r)=>{if(e&&typeof e==`object`){let a=e,{label:o,children:s,key:c,type:l}=a,u=rt(a,[`label`,`children`,`key`,`type`]),f=c??`tmp-${r}`,p=n?n.parentKeys.slice():[],m=[],h={eventKey:f,key:f,parentEventKeys:i(p),parentKeys:i(p),childrenEventKeys:i(m),isLeaf:!1};if(s||l===`group`){if(l===`group`){let r=it(s,t,n);return d(tt,x(x({key:f},u),{},{title:o,originItemValue:e}),{default:()=>[r]})}t.set(f,h),n&&n.childrenEventKeys.push(f);let r=it(s,t,{childrenEventKeys:m,parentKeys:[].concat(p,f)});return d(Q,x(x({key:f},u),{},{title:o,originItemValue:e}),{default:()=>[r]})}return l===`divider`?d(nt,x({key:f},u),null):(h.isLeaf=!0,t.set(f,h),d(X,x(x({key:f},u),{},{originItemValue:e}),{default:()=>[o]}))}return null}).filter(e=>e)}function at(e){let t=r([]),n=r(!1),i=r(new Map);return p(()=>e.items,()=>{let r=new Map;n.value=!1,e.items?(n.value=!0,t.value=it(e.items,r)):t.value=void 0,i.value=r},{immediate:!0,deep:!0}),{itemsNodes:t,store:i,hasItmes:n}}var ot=e=>{let{componentCls:t,motionDurationSlow:n,menuHorizontalHeight:r,colorSplit:i,lineWidth:a,lineType:o,menuItemPaddingInline:s}=e;return{[`${t}-horizontal`]:{lineHeight:`${r}px`,border:0,borderBottom:`${a}px ${o} ${i}`,boxShadow:`none`,"&::after":{display:`block`,clear:`both`,height:0,content:`"\\20"`},[`${t}-item, ${t}-submenu`]:{position:`relative`,display:`inline-block`,verticalAlign:`bottom`,paddingInline:s},[`> ${t}-item:hover,
2
- > ${t}-item-active,
3
- > ${t}-submenu ${t}-submenu-title:hover`]:{backgroundColor:`transparent`},[`${t}-item, ${t}-submenu-title`]:{transition:[`border-color ${n}`,`background ${n}`].join(`,`)},[`${t}-submenu-arrow`]:{display:`none`}}}},st=e=>{let{componentCls:t,menuArrowOffset:n}=e;return{[`${t}-rtl`]:{direction:`rtl`},[`${t}-submenu-rtl`]:{transformOrigin:`100% 0`},[`${t}-rtl${t}-vertical,
4
- ${t}-submenu-rtl ${t}-vertical`]:{[`${t}-submenu-arrow`]:{"&::before":{transform:`rotate(-45deg) translateY(-${n})`},"&::after":{transform:`rotate(45deg) translateY(${n})`}}}}},ct=e=>A({},N(e)),lt=(e,t)=>{let{componentCls:n,colorItemText:r,colorItemTextSelected:i,colorGroupTitle:a,colorItemBg:o,colorSubItemBg:s,colorItemBgSelected:c,colorActiveBarHeight:l,colorActiveBarWidth:u,colorActiveBarBorderSize:d,motionDurationSlow:f,motionEaseInOut:p,motionEaseOut:m,menuItemPaddingInline:h,motionDurationMid:g,colorItemTextHover:_,lineType:v,colorSplit:y,colorItemTextDisabled:b,colorDangerItemText:x,colorDangerItemTextHover:S,colorDangerItemTextSelected:C,colorDangerItemBgActive:w,colorDangerItemBgSelected:T,colorItemBgHover:E,menuSubMenuBg:D,colorItemTextSelectedHorizontal:O,colorItemBgSelectedHorizontal:k}=e;return{[`${n}-${t}`]:{color:r,background:o,[`&${n}-root:focus-visible`]:A({},ct(e)),[`${n}-item-group-title`]:{color:a},[`${n}-submenu-selected`]:{[`> ${n}-submenu-title`]:{color:i}},[`${n}-item-disabled, ${n}-submenu-disabled`]:{color:`${b} !important`},[`${n}-item:hover, ${n}-submenu-title:hover`]:{[`&:not(${n}-item-selected):not(${n}-submenu-selected)`]:{color:_}},[`&:not(${n}-horizontal)`]:{[`${n}-item:not(${n}-item-selected)`]:{"&:hover":{backgroundColor:E},"&:active":{backgroundColor:c}},[`${n}-submenu-title`]:{"&:hover":{backgroundColor:E},"&:active":{backgroundColor:c}}},[`${n}-item-danger`]:{color:x,[`&${n}-item:hover`]:{[`&:not(${n}-item-selected):not(${n}-submenu-selected)`]:{color:S}},[`&${n}-item:active`]:{background:w}},[`${n}-item a`]:{"&, &:hover":{color:`inherit`}},[`${n}-item-selected`]:{color:i,[`&${n}-item-danger`]:{color:C},"a, a:hover":{color:`inherit`}},[`& ${n}-item-selected`]:{backgroundColor:c,[`&${n}-item-danger`]:{backgroundColor:T}},[`${n}-item, ${n}-submenu-title`]:{[`&:not(${n}-item-disabled):focus-visible`]:A({},ct(e))},[`&${n}-submenu > ${n}`]:{backgroundColor:D},[`&${n}-popup > ${n}`]:{backgroundColor:o},[`&${n}-horizontal`]:A(A({},t===`dark`?{borderBottom:0}:{}),{[`> ${n}-item, > ${n}-submenu`]:{top:d,marginTop:-d,marginBottom:0,borderRadius:0,"&::after":{position:`absolute`,insetInline:h,bottom:0,borderBottom:`${l}px solid transparent`,transition:`border-color ${f} ${p}`,content:`""`},"&:hover, &-active, &-open":{"&::after":{borderBottomWidth:l,borderBottomColor:O}},"&-selected":{color:O,backgroundColor:k,"&::after":{borderBottomWidth:l,borderBottomColor:O}}}}),[`&${n}-root`]:{[`&${n}-inline, &${n}-vertical`]:{borderInlineEnd:`${d}px ${v} ${y}`}},[`&${n}-inline`]:{[`${n}-sub${n}-inline`]:{background:s},[`${n}-item, ${n}-submenu-title`]:d&&u?{width:`calc(100% + ${d}px)`}:{},[`${n}-item`]:{position:`relative`,"&::after":{position:`absolute`,insetBlock:0,insetInlineEnd:0,borderInlineEnd:`${u}px solid ${i}`,transform:`scaleY(0.0001)`,opacity:0,transition:[`transform ${g} ${m}`,`opacity ${g} ${m}`].join(`,`),content:`""`},[`&${n}-item-danger`]:{"&::after":{borderInlineEndColor:C}}},[`${n}-selected, ${n}-item-selected`]:{"&::after":{transform:`scaleY(1)`,opacity:1,transition:[`transform ${g} ${p}`,`opacity ${g} ${p}`].join(`,`)}}}}}},ut=e=>{let{componentCls:t,menuItemHeight:n,itemMarginInline:r,padding:i,menuArrowSize:a,marginXS:o,marginXXS:s}=e,c=i+a+o;return{[`${t}-item`]:{position:`relative`},[`${t}-item, ${t}-submenu-title`]:{height:n,lineHeight:`${n}px`,paddingInline:i,overflow:`hidden`,textOverflow:`ellipsis`,marginInline:r,marginBlock:s,width:`calc(100% - ${r*2}px)`},[`${t}-submenu`]:{paddingBottom:.02},[`> ${t}-item,
5
- > ${t}-submenu > ${t}-submenu-title`]:{height:n,lineHeight:`${n}px`},[`${t}-item-group-list ${t}-submenu-title,
6
- ${t}-submenu-title`]:{paddingInlineEnd:c}}},dt=e=>{let{componentCls:t,iconCls:n,menuItemHeight:r,colorTextLightSolid:i,dropdownWidth:a,controlHeightLG:o,motionDurationMid:s,motionEaseOut:c,paddingXL:l,fontSizeSM:u,fontSizeLG:d,motionDurationSlow:f,paddingXS:p,boxShadowSecondary:m}=e,h={height:r,lineHeight:`${r}px`,listStylePosition:`inside`,listStyleType:`disc`};return[{[t]:{"&-inline, &-vertical":A({[`&${t}-root`]:{boxShadow:`none`}},ut(e))},[`${t}-submenu-popup`]:{[`${t}-vertical`]:A(A({},ut(e)),{boxShadow:m})}},{[`${t}-submenu-popup ${t}-vertical${t}-sub`]:{minWidth:a,maxHeight:`calc(100vh - ${o*2.5}px)`,padding:`0`,overflow:`hidden`,borderInlineEnd:0,"&:not([class*='-active'])":{overflowX:`hidden`,overflowY:`auto`}}},{[`${t}-inline`]:{width:`100%`,[`&${t}-root`]:{[`${t}-item, ${t}-submenu-title`]:{display:`flex`,alignItems:`center`,transition:[`border-color ${f}`,`background ${f}`,`padding ${s} ${c}`].join(`,`),[`> ${t}-title-content`]:{flex:`auto`,minWidth:0,overflow:`hidden`,textOverflow:`ellipsis`},"> *":{flex:`none`}}},[`${t}-sub${t}-inline`]:{padding:0,border:0,borderRadius:0,boxShadow:`none`,[`& > ${t}-submenu > ${t}-submenu-title`]:h,[`& ${t}-item-group-title`]:{paddingInlineStart:l}},[`${t}-item`]:h}},{[`${t}-inline-collapsed`]:{width:r*2,[`&${t}-root`]:{[`${t}-item, ${t}-submenu ${t}-submenu-title`]:{[`> ${t}-inline-collapsed-noicon`]:{fontSize:d,textAlign:`center`}}},[`> ${t}-item,
7
- > ${t}-item-group > ${t}-item-group-list > ${t}-item,
8
- > ${t}-item-group > ${t}-item-group-list > ${t}-submenu > ${t}-submenu-title,
9
- > ${t}-submenu > ${t}-submenu-title`]:{insetInlineStart:0,paddingInline:`calc(50% - ${u}px)`,textOverflow:`clip`,[`
10
- ${t}-submenu-arrow,
11
- ${t}-submenu-expand-icon
12
- `]:{opacity:0},[`${t}-item-icon, ${n}`]:{margin:0,fontSize:d,lineHeight:`${r}px`,"+ span":{display:`inline-block`,opacity:0}}},[`${t}-item-icon, ${n}`]:{display:`inline-block`},"&-tooltip":{pointerEvents:`none`,[`${t}-item-icon, ${n}`]:{display:`none`},"a, a:hover":{color:i}},[`${t}-item-group-title`]:A(A({},C),{paddingInline:p})}}]},ft=e=>{let{componentCls:t,fontSize:n,motionDurationSlow:r,motionDurationMid:i,motionEaseInOut:a,motionEaseOut:o,iconCls:s,controlHeightSM:c}=e;return{[`${t}-item, ${t}-submenu-title`]:{position:`relative`,display:`block`,margin:0,whiteSpace:`nowrap`,cursor:`pointer`,transition:[`border-color ${r}`,`background ${r}`,`padding ${r} ${a}`].join(`,`),[`${t}-item-icon, ${s}`]:{minWidth:n,fontSize:n,transition:[`font-size ${i} ${o}`,`margin ${r} ${a}`,`color ${r}`].join(`,`),"+ span":{marginInlineStart:c-n,opacity:1,transition:[`opacity ${r} ${a}`,`margin ${r}`,`color ${r}`].join(`,`)}},[`${t}-item-icon`]:A({},O()),[`&${t}-item-only-child`]:{[`> ${s}, > ${t}-item-icon`]:{marginInlineEnd:0}}},[`${t}-item-disabled, ${t}-submenu-disabled`]:{background:`none !important`,cursor:`not-allowed`,"&::after":{borderColor:`transparent !important`},a:{color:`inherit !important`},[`> ${t}-submenu-title`]:{color:`inherit !important`,cursor:`not-allowed`}}}},pt=e=>{let{componentCls:t,motionDurationSlow:n,motionEaseInOut:r,borderRadius:i,menuArrowSize:a,menuArrowOffset:o}=e;return{[`${t}-submenu`]:{"&-expand-icon, &-arrow":{position:`absolute`,top:`50%`,insetInlineEnd:e.margin,width:a,color:`currentcolor`,transform:`translateY(-50%)`,transition:`transform ${n} ${r}, opacity ${n}`},"&-arrow":{"&::before, &::after":{position:`absolute`,width:a*.6,height:a*.15,backgroundColor:`currentcolor`,borderRadius:i,transition:[`background ${n} ${r}`,`transform ${n} ${r}`,`top ${n} ${r}`,`color ${n} ${r}`].join(`,`),content:`""`},"&::before":{transform:`rotate(45deg) translateY(-${o})`},"&::after":{transform:`rotate(-45deg) translateY(${o})`}}}}},mt=e=>{let{antCls:t,componentCls:n,fontSize:r,motionDurationSlow:i,motionDurationMid:a,motionEaseInOut:o,lineHeight:s,paddingXS:c,padding:l,colorSplit:u,lineWidth:d,zIndexPopup:f,borderRadiusLG:p,radiusSubMenuItem:m,menuArrowSize:h,menuArrowOffset:g,lineType:_,menuPanelMaskInset:v}=e;return[{"":{[`${n}`]:A(A({},D()),{"&-hidden":{display:`none`}})},[`${n}-submenu-hidden`]:{display:`none`}},{[n]:A(A(A(A(A(A(A({},k(e)),D()),{marginBottom:0,paddingInlineStart:0,fontSize:r,lineHeight:0,listStyle:`none`,outline:`none`,transition:`width ${i} cubic-bezier(0.2, 0, 0, 1) 0s`,"ul, ol":{margin:0,padding:0,listStyle:`none`},"&-overflow":{display:`flex`,[`${n}-item`]:{flex:`none`}},[`${n}-item, ${n}-submenu, ${n}-submenu-title`]:{borderRadius:e.radiusItem},[`${n}-item-group-title`]:{padding:`${c}px ${l}px`,fontSize:r,lineHeight:s,transition:`all ${i}`},[`&-horizontal ${n}-submenu`]:{transition:[`border-color ${i} ${o}`,`background ${i} ${o}`].join(`,`)},[`${n}-submenu, ${n}-submenu-inline`]:{transition:[`border-color ${i} ${o}`,`background ${i} ${o}`,`padding ${a} ${o}`].join(`,`)},[`${n}-submenu ${n}-sub`]:{cursor:`initial`,transition:[`background ${i} ${o}`,`padding ${i} ${o}`].join(`,`)},[`${n}-title-content`]:{transition:`color ${i}`},[`${n}-item a`]:{"&::before":{position:`absolute`,inset:0,backgroundColor:`transparent`,content:`""`}},[`${n}-item-divider`]:{overflow:`hidden`,lineHeight:0,borderColor:u,borderStyle:_,borderWidth:0,borderTopWidth:d,marginBlock:d,padding:0,"&-dashed":{borderStyle:`dashed`}}}),ft(e)),{[`${n}-item-group`]:{[`${n}-item-group-list`]:{margin:0,padding:0,[`${n}-item, ${n}-submenu-title`]:{paddingInline:`${r*2}px ${l}px`}}},"&-submenu":{"&-popup":{position:`absolute`,zIndex:f,background:`transparent`,borderRadius:p,boxShadow:`none`,transformOrigin:`0 0`,"&::before":{position:`absolute`,inset:`${v}px 0 0`,zIndex:-1,width:`100%`,height:`100%`,opacity:0,content:`""`}},"&-placement-rightTop::before":{top:0,insetInlineStart:v},[`> ${n}`]:A(A(A({borderRadius:p},ft(e)),pt(e)),{[`${n}-item, ${n}-submenu > ${n}-submenu-title`]:{borderRadius:m},[`${n}-submenu-title::after`]:{transition:`transform ${i} ${o}`}})}}),pt(e)),{[`&-inline-collapsed ${n}-submenu-arrow,
13
- &-inline ${n}-submenu-arrow`]:{"&::before":{transform:`rotate(-45deg) translateX(${g})`},"&::after":{transform:`rotate(45deg) translateX(-${g})`}},[`${n}-submenu-open${n}-submenu-inline > ${n}-submenu-title > ${n}-submenu-arrow`]:{transform:`translateY(-${h*.2}px)`,"&::after":{transform:`rotate(-45deg) translateX(-${g})`},"&::before":{transform:`rotate(45deg) translateX(${g})`}}})},{[`${t}-layout-header`]:{[n]:{lineHeight:`inherit`}}}]},ht=((e,t)=>T(`Menu`,(e,n)=>{let{overrideComponentToken:r}=n;if(t?.value===!1)return[];let{colorBgElevated:i,colorPrimary:a,colorError:o,colorErrorHover:s,colorTextLightSolid:c}=e,{controlHeightLG:l,fontSize:u}=e,d=u/7*5,f=F(e,{menuItemHeight:l,menuItemPaddingInline:e.margin,menuArrowSize:d,menuHorizontalHeight:l*1.15,menuArrowOffset:`${d*.25}px`,menuPanelMaskInset:-7,menuSubMenuBg:i}),p=new b(c).setAlpha(.65).toRgbString(),m=F(f,{colorItemText:p,colorItemTextHover:c,colorGroupTitle:p,colorItemTextSelected:c,colorItemBg:`#001529`,colorSubItemBg:`#000c17`,colorItemBgActive:`transparent`,colorItemBgSelected:a,colorActiveBarWidth:0,colorActiveBarHeight:0,colorActiveBarBorderSize:0,colorItemTextDisabled:new b(c).setAlpha(.25).toRgbString(),colorDangerItemText:o,colorDangerItemTextHover:s,colorDangerItemTextSelected:c,colorDangerItemBgActive:o,colorDangerItemBgSelected:o,menuSubMenuBg:`#001529`,colorItemTextSelectedHorizontal:c,colorItemBgSelectedHorizontal:a},A({},r));return[mt(f),ot(f),dt(f),lt(f,`light`),lt(m,`dark`),st(f),V(f),se(f,`slide-up`),se(f,`slide-down`),le(f,`zoom-big`)]},e=>{let{colorPrimary:t,colorError:n,colorTextDisabled:r,colorErrorBg:i,colorText:a,colorTextDescription:o,colorBgContainer:s,colorFillAlter:c,colorFillContent:l,lineWidth:u,lineWidthBold:d,controlItemBgActive:f,colorBgTextHover:p}=e;return{dropdownWidth:160,zIndexPopup:e.zIndexPopupBase+50,radiusItem:e.borderRadiusLG,radiusSubMenuItem:e.borderRadiusSM,colorItemText:a,colorItemTextHover:a,colorItemTextHoverHorizontal:t,colorGroupTitle:o,colorItemTextSelected:t,colorItemTextSelectedHorizontal:t,colorItemBg:s,colorItemBgHover:p,colorItemBgActive:l,colorSubItemBg:c,colorItemBgSelected:f,colorItemBgSelectedHorizontal:`transparent`,colorActiveBarWidth:0,colorActiveBarHeight:d,colorActiveBarBorderSize:u,colorItemTextDisabled:r,colorDangerItemText:n,colorDangerItemTextHover:n,colorDangerItemTextSelected:n,colorDangerItemBgActive:i,colorDangerItemBgSelected:i,itemMarginInline:e.marginXXS}})(e)),gt=()=>({id:String,prefixCls:String,items:Array,disabled:Boolean,inlineCollapsed:Boolean,disabledOverflow:Boolean,forceSubMenuRender:Boolean,openKeys:Array,selectedKeys:Array,activeKey:String,selectable:{type:Boolean,default:!0},multiple:{type:Boolean,default:!1},tabindex:{type:[Number,String]},motion:Object,role:String,theme:{type:String,default:`light`},mode:{type:String,default:`vertical`},inlineIndent:{type:Number,default:24},subMenuOpenDelay:{type:Number,default:0},subMenuCloseDelay:{type:Number,default:.1},builtinPlacements:{type:Object},triggerSubMenuAction:{type:String,default:`hover`},getPopupContainer:Function,expandIcon:Function,onOpenChange:Function,onSelect:Function,onDeselect:Function,onClick:[Function,Array],onFocus:Function,onBlur:Function,onMousedown:Function,"onUpdate:openKeys":Function,"onUpdate:selectedKeys":Function,"onUpdate:activeKey":Function}),_t=[],$=u({compatConfig:{MODE:3},name:`AMenu`,inheritAttrs:!1,props:gt(),slots:Object,setup(e,t){let{slots:a,emit:s,attrs:c}=t,{direction:u,getPrefixCls:h}=ee(`menu`,e),v=Te(),y=f(()=>h(`menu`,e.prefixCls||v?.prefixCls?.value)),[b,S]=ht(y,f(()=>!v)),C=r(new Map),w=o(Le,i(void 0)),T=f(()=>w.value===void 0?e.inlineCollapsed:w.value),{itemsNodes:E}=at(e),D=r(!1);l(()=>{D.value=!0}),_(()=>{de(e.inlineCollapsed!==!0||e.mode===`inline`,`Menu`,"`inlineCollapsed` should only be used when `mode` is inline."),de(w.value===void 0||e.inlineCollapsed!==!0,`Menu`,"`inlineCollapsed` not control Menu under Sider. Should set `collapsed` on Sider instead.")});let O=i([]),k=i([]),M=i({});p(C,()=>{let e={};for(let t of C.value.values())e[t.key]=t;M.value=e},{flush:`post`}),_(()=>{if(e.activeKey!==void 0){let t=[],r=e.activeKey?M.value[e.activeKey]:void 0;t=r&&e.activeKey!==void 0?G([].concat(n(r.parentKeys),e.activeKey)):[],J(O.value,t)||(O.value=t)}}),p(()=>e.selectedKeys,e=>{e&&(k.value=e.slice())},{immediate:!0,deep:!0});let N=i([]);p([M,k],()=>{let e=[];k.value.forEach(t=>{let r=M.value[t];r&&(e=e.concat(n(r.parentKeys)))}),e=G(e),J(N.value,e)||(N.value=e)},{immediate:!0});let P=t=>{if(e.selectable){let{key:n}=t,r=k.value.includes(n),i;i=e.multiple?r?k.value.filter(e=>e!==n):[...k.value,n]:[n];let a=A(A({},t),{selectedKeys:i});J(i,k.value)||(e.selectedKeys===void 0&&(k.value=i),s(`update:selectedKeys`,i),r&&e.multiple?s(`deselect`,a):s(`select`,a))}L.value!==`inline`&&!e.multiple&&F.value.length&&B(_t)},F=i([]);p(()=>e.openKeys,function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:F.value;J(F.value,e)||(F.value=e.slice())},{immediate:!0,deep:!0});let te,ne=t=>{clearTimeout(te),te=setTimeout(()=>{e.activeKey===void 0&&(O.value=t),s(`update:activeKey`,t[t.length-1])})},re=f(()=>!!e.disabled),I=f(()=>u.value===`rtl`),L=i(`vertical`),R=r(!1);_(()=>{(e.mode===`inline`||e.mode===`vertical`)&&T.value?(L.value=`vertical`,R.value=T.value):(L.value=e.mode,R.value=!1),v?.mode?.value&&(L.value=v.mode.value)});let z=f(()=>L.value===`inline`),B=e=>{F.value=e,s(`update:openKeys`,e),s(`openChange`,e)},V=i(F.value),oe=r(!1);p(F,()=>{z.value&&(V.value=F.value)},{immediate:!0}),p(z,()=>{if(!oe.value){oe.value=!0;return}z.value?F.value=V.value:B(_t)},{immediate:!0});let se=f(()=>({[`${y.value}`]:!0,[`${y.value}-root`]:!0,[`${y.value}-${L.value}`]:!0,[`${y.value}-inline-collapsed`]:R.value,[`${y.value}-rtl`]:I.value,[`${y.value}-${e.theme}`]:!0})),H=f(()=>h()),U=f(()=>({horizontal:{name:`${H.value}-slide-up`},inline:ae(`${H.value}-motion-collapse`),other:{name:`${H.value}-zoom-big`}}));Pe(!0);let ce=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=[],r=C.value;return e.forEach(e=>{let{key:i,childrenEventKeys:a}=r.get(e);t.push(i,...ce(n(a)))}),t},le=e=>{var t;s(`click`,e),P(e),(t=v?.onClick)==null||t.call(v)},ue=(e,t)=>{let r=M.value[e]?.childrenEventKeys||[],i=F.value.filter(t=>t!==e);if(t)i.push(e);else if(L.value!==`inline`){let e=ce(n(r));i=G(i.filter(t=>!e.includes(t)))}J(F,i)||B(i)},fe=(e,t)=>{C.value.set(e,t),C.value=new Map(C.value)},pe=e=>{C.value.delete(e),C.value=new Map(C.value)},me=i(0),he=f(()=>e.expandIcon||a.expandIcon||v?.expandIcon?.value?t=>{let n=e.expandIcon||a.expandIcon;return n=typeof n==`function`?n(t):n,W(n,{class:`${y.value}-submenu-expand-icon`},!1)}:null);ke({prefixCls:y,activeKeys:O,openKeys:F,selectedKeys:k,changeActiveKeys:ne,disabled:re,rtl:I,mode:L,inlineIndent:f(()=>e.inlineIndent),subMenuCloseDelay:f(()=>e.subMenuCloseDelay),subMenuOpenDelay:f(()=>e.subMenuOpenDelay),builtinPlacements:f(()=>e.builtinPlacements),triggerSubMenuAction:f(()=>e.triggerSubMenuAction),getPopupContainer:f(()=>e.getPopupContainer),inlineCollapsed:R,theme:f(()=>e.theme),siderCollapsed:w,defaultMotions:f(()=>D.value?U.value:null),motion:f(()=>D.value?e.motion:null),overflowDisabled:r(void 0),onOpenChange:ue,onItemClick:le,registerMenuInfo:fe,unRegisterMenuInfo:pe,selectedSubMenuKeys:N,expandIcon:he,forceSubMenuRender:f(()=>e.forceSubMenuRender),rootClassName:S});let ge=()=>E.value||j(a.default?.call(a));return()=>{let t=ge(),n=me.value>=t.length-1||L.value!==`horizontal`||e.disabledOverflow,r=t=>L.value!==`horizontal`||e.disabledOverflow?t:t.map((e,t)=>d(Ie,{key:e.key,overflowDisabled:t>me.value},{default:()=>e})),i=a.overflowedIndicator?.call(a)||d(Ce,null,null);return b(d(ie,x(x({},c),{},{onMousedown:e.onMousedown,prefixCls:`${y.value}-overflow`,component:`ul`,itemComponent:X,class:[se.value,c.class,S.value],role:`menu`,id:e.id,data:r(t),renderRawItem:e=>e,renderRawRest:e=>{let r=e.length,a=r?t.slice(-r):null;return d(m,null,[d(Q,{eventKey:ze,key:ze,title:i,disabled:n,internalPopupClose:r===0},{default:()=>a}),d(We,null,{default:()=>[d(Q,{eventKey:ze,key:ze,title:i,disabled:n,internalPopupClose:r===0},{default:()=>a})]})])},maxCount:L.value!==`horizontal`||e.disabledOverflow?ie.INVALIDATE:ie.RESPONSIVE,ssr:`full`,"data-menu-list":!0,onVisibleChange:e=>{me.value=e}}),{default:()=>[d(g,{to:`body`},{default:()=>[d(`div`,{style:{display:`none`},"aria-hidden":!0},[d(We,null,{default:()=>[r(ge())]})])]})]}))}}});$.install=function(e){return e.component($.name,$),e.component(X.name,X),e.component(Q.name,Q),e.component(nt.name,nt),e.component(tt.name,tt),e},$.Item=X,$.Divider=nt,$.SubMenu=Q,$.ItemGroup=tt;var vt=$;export{Re as a,Ce as c,Le as i,ye as l,nt as n,J as o,X as r,Ee as s,vt as t};