hermes-web-ui 0.6.40 → 0.6.41

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 (287) hide show
  1. package/dist/client/assets/js/{AppSidebar-CaSVcbCW.js → AppSidebar-CNkSiv3l.js} +1 -1
  2. package/dist/client/assets/js/{ChannelsView-hdAXa1hf.js → ChannelsView-6rEo6RBl.js} +1 -1
  3. package/dist/client/assets/js/{ChatPanel-C6sX6idm.js → ChatPanel-ANAZWluc.js} +3 -3
  4. package/dist/client/assets/js/{ChatView-B68k_-D9.js → ChatView-DFcPsmRF.js} +1 -1
  5. package/dist/client/assets/js/{CodingAgentsView-CsIjwbXR.js → CodingAgentsView-CpIY0SHT.js} +1 -1
  6. package/dist/client/assets/js/{DefaultCredentialPrompt-BRhb4DOa.js → DefaultCredentialPrompt-DmNeotSW.js} +1 -1
  7. package/dist/client/assets/js/{DesktopBrowserPanel-BlBfS64w.js → DesktopBrowserPanel-CWjTU-3y.js} +1 -1
  8. package/dist/client/assets/js/{DesktopBrowserView-JukL0QuS.js → DesktopBrowserView-D9Qb3fIV.js} +1 -1
  9. package/dist/client/assets/js/{DesktopPetView-DWq4EiRU.js → DesktopPetView-B7REtC57.js} +1 -1
  10. package/dist/client/assets/js/{DesktopTitleBar-DphP4oa6.js → DesktopTitleBar-Dej_16hB.js} +1 -1
  11. package/dist/client/assets/js/{DevicesView-BFtrfqJs.js → DevicesView--d4HCkch.js} +1 -1
  12. package/dist/client/assets/js/{DocxFilePreview-CmVJ9Jxx.js → DocxFilePreview-BQz6WC7r.js} +2 -2
  13. package/dist/client/assets/js/{FileEditor-CdkNYp7b.js → FileEditor-BBegs-5i.js} +2 -2
  14. package/dist/client/assets/js/{FilePreview-CJrVRPRs.js → FilePreview-B7WqYvZs.js} +2 -2
  15. package/dist/client/assets/js/{FileRenameModal-mghyEXU4.js → FileRenameModal-82RkAZkd.js} +1 -1
  16. package/dist/client/assets/js/{FilesPanel-B9cKB5lX.js → FilesPanel-BHcg6CpC.js} +2 -2
  17. package/dist/client/assets/js/{FilesView-iKZu70E9.js → FilesView-Dl15WTar.js} +2 -2
  18. package/dist/client/assets/js/{GlobalAgentView-JZsss0gx.js → GlobalAgentView-dxEX611f.js} +1 -1
  19. package/dist/client/assets/js/{GlobalPendingActions-BRQIt5vl.js → GlobalPendingActions-CeK96C3G.js} +1 -1
  20. package/dist/client/assets/js/{GroupChatLinkView-CNrV8lnT.js → GroupChatLinkView-CJhI9DVE.js} +1 -1
  21. package/dist/client/assets/js/{GroupChatPanel-WK4zBasl.js → GroupChatPanel-CLa3s08V.js} +3 -3
  22. package/dist/client/assets/js/{GroupChatView-BlMUD1MW.js → GroupChatView-CUwvu-6F.js} +1 -1
  23. package/dist/client/assets/js/{HistoryMessageList-D8zoQ1Zs.js → HistoryMessageList-BdD8GJYM.js} +1 -1
  24. package/dist/client/assets/js/{HistoryView-Bpr8N2lC.js → HistoryView-Ro92tP5R.js} +1 -1
  25. package/dist/client/assets/js/{HtmlFilePreview-Bj3_-hMo.js → HtmlFilePreview-xYn7YtmC.js} +1 -1
  26. package/dist/client/assets/js/{JobsView-CZK26gTw.js → JobsView-BaNA1Yaa.js} +2 -2
  27. package/dist/client/assets/js/{JourneyView-BPUsLj4o.js → JourneyView-Bw-05mCF.js} +1 -1
  28. package/dist/client/assets/js/{KanbanView-B7d-2_z9.js → KanbanView-BYC32l2Q.js} +1 -1
  29. package/dist/client/assets/js/{LoginView-BpYyv831.js → LoginView-KrpCkwOr.js} +1 -1
  30. package/dist/client/assets/js/{LogsView-CabFHk0v.js → LogsView-Dgm4v5sN.js} +1 -1
  31. package/dist/client/assets/js/{MarkdownRenderer-CVtmHZwc.js → MarkdownRenderer-BIPowjr-.js} +3 -3
  32. package/dist/client/assets/js/{McpManagerView-C-ou8vf3.js → McpManagerView-DTtkUIvq.js} +1 -1
  33. package/dist/client/assets/js/{MemoryView-QGFW4iZo.js → MemoryView-BnL7xzux.js} +2 -2
  34. package/dist/client/assets/js/{MessageList-DZR-TFjD.js → MessageList-5tytzhb0.js} +3 -3
  35. package/dist/client/assets/js/{ModelsView-DiWdSWOW.js → ModelsView-ComCz0Ce.js} +1 -1
  36. package/dist/client/assets/js/{OutlinePanel-Dlr5svMY.js → OutlinePanel-CF_XPCRn.js} +1 -1
  37. package/dist/client/assets/js/{PageSidebarFooter-Bic1fUmG.js → PageSidebarFooter-dvLzcTIm.js} +1 -1
  38. package/dist/client/assets/js/{PdfFilePreview-Dkpan1ay.js → PdfFilePreview-COOAoJ4V.js} +2 -2
  39. package/dist/client/assets/js/{PerformanceView-LrZaED_Z.js → PerformanceView-D6dKifJh.js} +1 -1
  40. package/dist/client/assets/js/{PetdexView-Bv8RioGL.js → PetdexView-CmvzDYwf.js} +1 -1
  41. package/dist/client/assets/js/{PluginsView-CbtdIGlq.js → PluginsView-zJV9FE9c.js} +1 -1
  42. package/dist/client/assets/js/{PptxFilePreview-5if_GbU6.js → PptxFilePreview-dC4JxV6j.js} +2 -2
  43. package/dist/client/assets/js/{ProfileAvatar-DI9ciJxS.js → ProfileAvatar-C8xoALCI.js} +1 -1
  44. package/dist/client/assets/js/{ProfilesView-C-FSiKMU.js → ProfilesView-CxVxJRN_.js} +1 -1
  45. package/dist/client/assets/js/{ProviderConfigurationPrompt-BUoWC41Y.js → ProviderConfigurationPrompt-zwk1UwoP.js} +1 -1
  46. package/dist/client/assets/js/{SessionSearchModal-CEKvSihp.js → SessionSearchModal-DhwGsV-i.js} +1 -1
  47. package/dist/client/assets/js/{SettingRow-CSfiJmxx.js → SettingRow-DHqhLX3M.js} +1 -1
  48. package/dist/client/assets/js/{SettingsCircuitBadge-DHIEFyTR.js → SettingsCircuitBadge-CnWSfQZd.js} +1 -1
  49. package/dist/client/assets/js/{SettingsView-DbNJroV3.js → SettingsView-Cbroga25.js} +1 -1
  50. package/dist/client/assets/js/{SharedGroupChatView-CTYjqWcO.js → SharedGroupChatView-DXfqtQ33.js} +1 -1
  51. package/dist/client/assets/js/{SkillsUsageView-BqZ3GtfT.js → SkillsUsageView-C34i3lOQ.js} +1 -1
  52. package/dist/client/assets/js/{SkillsView-Bhla7821.js → SkillsView-DRG_1esx.js} +2 -2
  53. package/dist/client/assets/js/{SpreadsheetFilePreview-CGK8HDAx.js → SpreadsheetFilePreview-DRw4kIx5.js} +1 -1
  54. package/dist/client/assets/js/{TerminalPanel-CtBTLOwq.js → TerminalPanel-Da1nL9P8.js} +1 -1
  55. package/dist/client/assets/js/{TerminalView-BID7fupB.js → TerminalView-B6z-VaGq.js} +1 -1
  56. package/dist/client/assets/js/{ThemeView-Cx3ucIus.js → ThemeView-CAaJ9MH-.js} +1 -1
  57. package/dist/client/assets/js/{UsageView-ByGCsw7o.js → UsageView-B_hLsp0k.js} +1 -1
  58. package/dist/client/assets/js/{VersionPreviewView-DiAK1ind.js → VersionPreviewView-DKXL6anl.js} +1 -1
  59. package/dist/client/assets/js/{WebPet-CdIqrnp1.js → WebPet-BUvrfjpq.js} +1 -1
  60. package/dist/client/assets/js/{WorkflowView-DmBOhSuq.js → WorkflowView-r46Ap9FY.js} +1 -1
  61. package/dist/client/assets/js/{WorkspaceDiffPreview-dHIGp-9F.js → WorkspaceDiffPreview-EwZAE18F.js} +2 -2
  62. package/dist/client/assets/js/{abap-Dj8IFKiF.js → abap-C7gkFu-A.js} +1 -1
  63. package/dist/client/assets/js/{aiden0z-pptx-renderer.es-6vi5-jAN.js → aiden0z-pptx-renderer.es-DOpVaH_k.js} +1 -1
  64. package/dist/client/assets/js/{apex-C3INPUEt.js → apex-DZOtRowu.js} +1 -1
  65. package/dist/client/assets/js/{ar-Gk9y3ZfO.js → ar-8iThLSJQ.js} +1 -1
  66. package/dist/client/assets/js/architecture-7EHR7CIX-BrfhYGuP.js +1 -0
  67. package/dist/client/assets/js/{architectureDiagram-3BPJPVTR-DLZYeivB.js → architectureDiagram-3BPJPVTR-DEsTTzKd.js} +1 -1
  68. package/dist/client/assets/js/{auth-D1ZFqv22.js → auth-B52zm2Ir.js} +1 -1
  69. package/dist/client/assets/js/{azcli-UBzLhJq5.js → azcli-KxuicZQh.js} +1 -1
  70. package/dist/client/assets/js/{bat-P3O4jldt.js → bat-DfFP4HF-.js} +1 -1
  71. package/dist/client/assets/js/{bicep-DdQR9RxE.js → bicep-Co4bntVh.js} +1 -1
  72. package/dist/client/assets/js/{blockDiagram-GPEHLZMM-UWFo8sm5.js → blockDiagram-GPEHLZMM-NsxYeUKd.js} +1 -1
  73. package/dist/client/assets/js/{c4Diagram-AAUBKEIU-jgyj0wOb.js → c4Diagram-AAUBKEIU-D68asSzm.js} +1 -1
  74. package/dist/client/assets/js/{cameligo-Bb4ubW_C.js → cameligo-Xi0l_9Wr.js} +1 -1
  75. package/dist/client/assets/js/{chat-DdHii4Qz.js → chat-fUZW3YFa.js} +1 -1
  76. package/dist/client/assets/js/{chat-input-height-CSPwB9it.js → chat-input-height-lvFawuv9.js} +1 -1
  77. package/dist/client/assets/js/{chat-timestamp-DGQ8fmtT.js → chat-timestamp-4wWFcZWv.js} +1 -1
  78. package/dist/client/assets/js/{chunk-2J33WTMH-Br9OWF5a.js → chunk-2J33WTMH-CEU5sLIh.js} +1 -1
  79. package/dist/client/assets/js/{chunk-3OPIFGDE-Cb40LuI4.js → chunk-3OPIFGDE-DEhbKkCl.js} +1 -1
  80. package/dist/client/assets/js/{chunk-4BX2VUAB-jYtdiafd.js → chunk-4BX2VUAB-OIZUstuy.js} +1 -1
  81. package/dist/client/assets/js/{chunk-55IACEB6-CBtymeHY.js → chunk-55IACEB6-DQHKZCBG.js} +1 -1
  82. package/dist/client/assets/js/{chunk-5ZQYHXKU-yj9xqmex.js → chunk-5ZQYHXKU-BU3pQVVl.js} +1 -1
  83. package/dist/client/assets/js/{chunk-727SXJPM-er_5tB5X.js → chunk-727SXJPM-jj97gdnP.js} +1 -1
  84. package/dist/client/assets/js/{chunk-AQP2D5EJ-C4mDD6xK.js → chunk-AQP2D5EJ-jv-oWlkb.js} +1 -1
  85. package/dist/client/assets/js/{chunk-BSJP7CBP-QZesZe57.js → chunk-BSJP7CBP-DkKsepNF.js} +1 -1
  86. package/dist/client/assets/js/{chunk-CSCIHK7Q-5LH118bT.js → chunk-CSCIHK7Q-CLgoBoCF.js} +3 -3
  87. package/dist/client/assets/js/{chunk-FMBD7UC4-CQho6QZ5.js → chunk-FMBD7UC4-Bx1bCKUR.js} +1 -1
  88. package/dist/client/assets/js/{chunk-KSCS5N6A-DONM1Omv.js → chunk-KSCS5N6A-CZHZ6pBd.js} +1 -1
  89. package/dist/client/assets/js/{chunk-L5ZTLDWV-FN_zFWkp.js → chunk-L5ZTLDWV-dz9D3kOb.js} +1 -1
  90. package/dist/client/assets/js/{chunk-LZXEDZCA-CEEUVvpS.js → chunk-LZXEDZCA-CQiSQehC.js} +2 -2
  91. package/dist/client/assets/js/{chunk-ND2GUHAM-DWckpxQD.js → chunk-ND2GUHAM-mWODKb8v.js} +1 -1
  92. package/dist/client/assets/js/{chunk-NZK2D7GU-0mKZmkuV.js → chunk-NZK2D7GU-ivCkjCOR.js} +1 -1
  93. package/dist/client/assets/js/{chunk-O5CBEL6O-DIDAOkT_.js → chunk-O5CBEL6O-BRUisK47.js} +1 -1
  94. package/dist/client/assets/js/{chunk-QZHKN3VN-D3c-TMz-.js → chunk-QZHKN3VN-BHjgTrzY.js} +1 -1
  95. package/dist/client/assets/js/{chunk-WU5MYG2G-BZvSpwm4.js → chunk-WU5MYG2G-CNW1rcpL.js} +1 -1
  96. package/dist/client/assets/js/{chunk-XPW4576I-xdyJtk-s.js → chunk-XPW4576I-DP3dJbOu.js} +1 -1
  97. package/dist/client/assets/js/classDiagram-4FO5ZUOK-BVBBe3DQ.js +1 -0
  98. package/dist/client/assets/js/classDiagram-v2-Q7XG4LA2-DJUe3i9Y.js +1 -0
  99. package/dist/client/assets/js/{clipboard-DQ_A8ns-.js → clipboard-DHZFaAvO.js} +1 -1
  100. package/dist/client/assets/js/{clipboard-files-bDrcGKPe.js → clipboard-files-CBDy-02Y.js} +1 -1
  101. package/dist/client/assets/js/{clojure-ku7aCU1_.js → clojure-DuyGwS8X.js} +1 -1
  102. package/dist/client/assets/js/{coding-agents-DfHyBvky.js → coding-agents-BNTHD6kd.js} +1 -1
  103. package/dist/client/assets/js/{codingAgentProviders-BM18FAW9.js → codingAgentProviders-DM_ouxbL.js} +1 -1
  104. package/dist/client/assets/js/{coffee-DnRIdJlY.js → coffee-C5p7vzpa.js} +1 -1
  105. package/dist/client/assets/js/{completion-notification-XxjbntI8.js → completion-notification-CzdnhuX3.js} +1 -1
  106. package/dist/client/assets/js/{cose-bilkent-S5V4N54A-w891sIF1.js → cose-bilkent-S5V4N54A-De_ZdqY0.js} +1 -1
  107. package/dist/client/assets/js/{cpp-CN8i6ISX.js → cpp-II5hDbTe.js} +1 -1
  108. package/dist/client/assets/js/{csharp-B-fxig7O.js → csharp-D0POzSpv.js} +1 -1
  109. package/dist/client/assets/js/{csp-Bar9LGt4.js → csp-CwtuRkR3.js} +1 -1
  110. package/dist/client/assets/js/{css-DFtC5xZN.js → css-Dc2fJIqQ.js} +1 -1
  111. package/dist/client/assets/js/{cssMode-DH5XKKL2.js → cssMode-CC6jRvHF.js} +1 -1
  112. package/dist/client/assets/js/{cypher-BkJexWsv.js → cypher-DBcQoWDH.js} +1 -1
  113. package/dist/client/assets/js/{cytoscape.esm-BDsvr8Aq.js → cytoscape.esm-C9FMRqxM.js} +1 -1
  114. package/dist/client/assets/js/{dagre-BM42HDAG-BuT885pa.js → dagre-BM42HDAG-CvJIC410.js} +1 -1
  115. package/dist/client/assets/js/{dagre-BVUDh8Sh.js → dagre-BtgEsAtK.js} +1 -1
  116. package/dist/client/assets/js/{dart-B7W8hAtN.js → dart-Jf_Hmp2o.js} +1 -1
  117. package/dist/client/assets/js/{de-LDpd8WHJ.js → de-7hLSwCEx.js} +1 -1
  118. package/dist/client/assets/js/{defineProperty-DdPu4ZVv.js → defineProperty-DHkErCmG.js} +1 -1
  119. package/dist/client/assets/js/{desktop-browser-xrRFPNUg.js → desktop-browser-C6AhY0uu.js} +1 -1
  120. package/dist/client/assets/js/{diagram-2AECGRRQ-B1sSf-09.js → diagram-2AECGRRQ-CvPeU5Lm.js} +1 -1
  121. package/dist/client/assets/js/{diagram-5GNKFQAL-BffX22pf.js → diagram-5GNKFQAL-CBniYlkH.js} +1 -1
  122. package/dist/client/assets/js/{diagram-KO2AKTUF-D8QvpUpn.js → diagram-KO2AKTUF-C_yFaVRj.js} +1 -1
  123. package/dist/client/assets/js/{diagram-LMA3HP47-DkG7p3lQ.js → diagram-LMA3HP47-BzM1IxNe.js} +1 -1
  124. package/dist/client/assets/js/{diagram-OG6HWLK6-RjvNNvXM.js → diagram-OG6HWLK6-yvmf_3ax.js} +1 -1
  125. package/dist/client/assets/js/{dist-Bk0VKtV3.js → dist-BHzBn3v7.js} +1 -1
  126. package/dist/client/assets/js/{dockerfile-C4m7j8sy.js → dockerfile-J3d6ZPDJ.js} +1 -1
  127. package/dist/client/assets/js/{docx-preview-BpTW-GN7.js → docx-preview-Rqt8wMjQ.js} +1 -1
  128. package/dist/client/assets/js/{download-CX8EG48r.js → download-xhRMWMda.js} +1 -1
  129. package/dist/client/assets/js/{ecl-EHV358Ls.js → ecl-XnlT0p97.js} +1 -1
  130. package/dist/client/assets/js/{editor.api2-CnHBqh_d.js → editor.api2-ChO5nUQb.js} +1 -1
  131. package/dist/client/assets/js/{elixir-DLfp2Dwn.js → elixir-BEJbxH-B.js} +1 -1
  132. package/dist/client/assets/js/{en-D6VVFwFU.js → en-D2WSXgkM.js} +1 -1
  133. package/dist/client/assets/js/{erDiagram-TEJ5UH35-CLlLC6xx.js → erDiagram-TEJ5UH35-DZysD9r9.js} +1 -1
  134. package/dist/client/assets/js/{es-BIMLuyVP.js → es-B7Mq1P0U.js} +1 -1
  135. package/dist/client/assets/js/{esm-C8D4M0Yn.js → esm-DnZPPtmx.js} +1 -1
  136. package/dist/client/assets/js/eventmodeling-FCH6USID-vlE3-g2j.js +1 -0
  137. package/dist/client/assets/js/{file-preview-BvgwVZXh.js → file-preview-C417aixJ.js} +1 -1
  138. package/dist/client/assets/js/{files-CJkCqsUx.js → files-DjI-npgn.js} +1 -1
  139. package/dist/client/assets/js/{flow9-CtBaUnAi.js → flow9-j5XT_8TQ.js} +1 -1
  140. package/dist/client/assets/js/{flowDiagram-I6XJVG4X-VTRTPnqD.js → flowDiagram-I6XJVG4X-Dt5ZtyHz.js} +1 -1
  141. package/dist/client/assets/js/{fr-C2lf0cY2.js → fr-DvClrDOw.js} +1 -1
  142. package/dist/client/assets/js/{freemarker2-XLeMvhl_.js → freemarker2-BzCf_0SN.js} +1 -1
  143. package/dist/client/assets/js/{fsharp-Db0uaBQv.js → fsharp-ClU_Sdjr.js} +1 -1
  144. package/dist/client/assets/js/{ganttDiagram-6RSMTGT7-CdKcIZ8_.js → ganttDiagram-6RSMTGT7-Bca3rPWi.js} +1 -1
  145. package/dist/client/assets/js/gitGraph-WXDBUCRP-Cyd4P6XH.js +1 -0
  146. package/dist/client/assets/js/{gitGraphDiagram-PVQCEYII-Bcuyw6fo.js → gitGraphDiagram-PVQCEYII-Co29qnTg.js} +1 -1
  147. package/dist/client/assets/js/{go-DwaTlB-B.js → go-D3iUyCM0.js} +1 -1
  148. package/dist/client/assets/js/{graphlib-vAI4Pw7R.js → graphlib-Bln6qd-Z.js} +1 -1
  149. package/dist/client/assets/js/{graphql-Cf2XhNJR.js → graphql-z8koqyyL.js} +1 -1
  150. package/dist/client/assets/js/{group-agent-avatar-CPehpiK0.js → group-agent-avatar-CwqtaKGw.js} +1 -1
  151. package/dist/client/assets/js/{group-chat-CY62vc77.js → group-chat-Buz8HP-N.js} +1 -1
  152. package/dist/client/assets/js/{group-chat-xkdjC2Jt.js → group-chat-CgFAwCtr.js} +1 -1
  153. package/dist/client/assets/js/{group-chat-agent-link-DdSNKasF.js → group-chat-agent-link-N5IFeN_j.js} +1 -1
  154. package/dist/client/assets/js/{handlebars-CNEKu_p8.js → handlebars-C_JvhUYs.js} +1 -1
  155. package/dist/client/assets/js/{hcl-6UZbq6h2.js → hcl-X7TzviIX.js} +1 -1
  156. package/dist/client/assets/js/{highlight-DwtBT6t1.js → highlight-C4yUBxwQ.js} +1 -1
  157. package/dist/client/assets/js/{html-DfSIHhKA.js → html-B-rCQB0N.js} +1 -1
  158. package/dist/client/assets/js/{htmlMode-iGw9-O-W.js → htmlMode-CAeEf_yf.js} +1 -1
  159. package/dist/client/assets/js/{index-DnjQJzX4.js → index-DN4SafrP.js} +5 -5
  160. package/dist/client/assets/js/info-J43DQDTF-B9tkQ2Sb.js +1 -0
  161. package/dist/client/assets/js/{infoDiagram-5YYISTIA-85450Zam.js → infoDiagram-5YYISTIA-BWQGayms.js} +1 -1
  162. package/dist/client/assets/js/{ini-8em8V_Af.js → ini-LTHHN4J-.js} +1 -1
  163. package/dist/client/assets/js/{ishikawaDiagram-YF4QCWOH-BZ4az7UA.js → ishikawaDiagram-YF4QCWOH-Dhuplz_z.js} +1 -1
  164. package/dist/client/assets/js/{ja-C1bBXgr_.js → ja-D7BeX2_D.js} +1 -1
  165. package/dist/client/assets/js/{java-CP1MdIkO.js → java-BRFX-ya0.js} +1 -1
  166. package/dist/client/assets/js/{javascript-Cr8_LHYa.js → javascript-ZXiVmjXn.js} +1 -1
  167. package/dist/client/assets/js/{journeyDiagram-JHISSGLW-DGMB8Tgc.js → journeyDiagram-JHISSGLW-CJeatAU9.js} +1 -1
  168. package/dist/client/assets/js/{jsonMode-HCZ-1lFH.js → jsonMode-C6FcMe0o.js} +1 -1
  169. package/dist/client/assets/js/{jszip.min-BkR6b8DY.js → jszip.min-skZCUzWf.js} +1 -1
  170. package/dist/client/assets/js/{julia-DMTMxa5q.js → julia-Bph8N3CL.js} +1 -1
  171. package/dist/client/assets/js/{kanban-definition-UN3LZRKU-F5cH_RpB.js → kanban-definition-UN3LZRKU-tvWuOdSr.js} +1 -1
  172. package/dist/client/assets/js/{katex-CYbEJAbZ.js → katex-hSGJNERm.js} +1 -1
  173. package/dist/client/assets/js/{ko-qgOeHd8L.js → ko-BsVa-If_.js} +1 -1
  174. package/dist/client/assets/js/{kotlin-Blzus47W.js → kotlin-_c4-tPQp.js} +1 -1
  175. package/dist/client/assets/js/{less-DWCHpDyf.js → less-5oVo4jfQ.js} +1 -1
  176. package/dist/client/assets/js/{lexon-YXdlYGbJ.js → lexon-DE4YtGwF.js} +1 -1
  177. package/dist/client/assets/js/{liquid-DSQgvRwe.js → liquid-BGfieGMG.js} +1 -1
  178. package/dist/client/assets/js/{lspLanguageFeatures-0Hx2Vnc-.js → lspLanguageFeatures-DU_1H2uW.js} +1 -1
  179. package/dist/client/assets/js/{lua-Cyv3mTkg.js → lua-7WJSZJqD.js} +1 -1
  180. package/dist/client/assets/js/{m3-CPY3Ym7_.js → m3-gZlfoR19.js} +1 -1
  181. package/dist/client/assets/js/{markdown-DaPQ1nuG.js → markdown-BYF71orA.js} +1 -1
  182. package/dist/client/assets/js/{mdx-BqA6Xr9V.js → mdx-CunEIV3g.js} +1 -1
  183. package/dist/client/assets/js/{mermaid-parser.core-D4HRUOce.js → mermaid-parser.core-DU_SX15F.js} +3 -3
  184. package/dist/client/assets/js/{mermaid.core-w6kHmgOG.js → mermaid.core-8vsbhG5J.js} +3 -3
  185. package/dist/client/assets/js/{message-scroll-position-C5yRCyBU.js → message-scroll-position-C9_YO3pX.js} +2 -2
  186. package/dist/client/assets/js/{mindmap-definition-RKZ34NQL-CnzhnJ7Z.js → mindmap-definition-RKZ34NQL-HPtlKqL1.js} +1 -1
  187. package/dist/client/assets/js/{mips-BfqBfLvN.js → mips-DXkvw9aZ.js} +1 -1
  188. package/dist/client/assets/js/{models-wrytxWnf.js → models-BILDy2sV.js} +1 -1
  189. package/dist/client/assets/js/{monaco.contribution-Bc-DesyO.js → monaco.contribution-DDqeHGl3.js} +2 -2
  190. package/dist/client/assets/js/{msdax-DgMip49g.js → msdax-BbHEBDvP.js} +1 -1
  191. package/dist/client/assets/js/{mysql-DPUvF1g2.js → mysql-7I1rlwh7.js} +1 -1
  192. package/dist/client/assets/js/{objective-c-BQ3llrPW.js → objective-c-Dk03REAv.js} +1 -1
  193. package/dist/client/assets/js/packet-YPE3B663-DlTFK3Wo.js +1 -0
  194. package/dist/client/assets/js/{pascal-bFWHV7MZ.js → pascal-BCfNkzYY.js} +1 -1
  195. package/dist/client/assets/js/{pascaligo-C8Qza2pK.js → pascaligo-D-DslS98.js} +1 -1
  196. package/dist/client/assets/js/{pdf-Cb7x495t.js → pdf-B_OYWxSy.js} +1 -1
  197. package/dist/client/assets/js/{pdf.worker.min-DDUKJ6cJ.js → pdf.worker.min--q2RLEHa.js} +1 -1
  198. package/dist/client/assets/js/{perl-x25gw0_p.js → perl-MUnuTclx.js} +1 -1
  199. package/dist/client/assets/js/{pets-BfRsvl7D.js → pets-D74G2jqA.js} +1 -1
  200. package/dist/client/assets/js/{pgsql-DAUcGeRq.js → pgsql-BxCBktNe.js} +1 -1
  201. package/dist/client/assets/js/{php-nri1eqb2.js → php-zp9UgH03.js} +1 -1
  202. package/dist/client/assets/js/pie-LRSECV5Y-BtnBGhFZ.js +1 -0
  203. package/dist/client/assets/js/{pieDiagram-4H26LBE5-4LODdtT_.js → pieDiagram-4H26LBE5-CG8_pcHr.js} +1 -1
  204. package/dist/client/assets/js/{pla-CHi5LWNL.js → pla-DGCtmYZC.js} +1 -1
  205. package/dist/client/assets/js/{postiats-Bk7jD0AA.js → postiats-DHSW8gnY.js} +1 -1
  206. package/dist/client/assets/js/{powerquery-UTqJ0Vs7.js → powerquery-BGsPEmJe.js} +1 -1
  207. package/dist/client/assets/js/{powershell-CuPY3Rqk.js → powershell-BItlb0hE.js} +1 -1
  208. package/dist/client/assets/js/{profiles-D-vlI-Ec.js → profiles-BK5JKD7h.js} +1 -1
  209. package/dist/client/assets/js/{protobuf-Be4AIz9j.js → protobuf-BIhm6JYx.js} +1 -1
  210. package/dist/client/assets/js/{pt-D7_udWb3.js → pt-BSORCDMm.js} +1 -1
  211. package/dist/client/assets/js/{pug-CZFx15Ey.js → pug-BtnM7KZj.js} +1 -1
  212. package/dist/client/assets/js/{python-BgRg6Ez6.js → python-DxzTx1Q_.js} +1 -1
  213. package/dist/client/assets/js/{qsharp-BiBiLhRS.js → qsharp-B_8MSfaB.js} +1 -1
  214. package/dist/client/assets/js/{quadrantDiagram-W4KKPZXB-g_q9-dXx.js → quadrantDiagram-W4KKPZXB-CsbkMYuV.js} +1 -1
  215. package/dist/client/assets/js/{r-DM7NVSbZ.js → r-kvKC59jk.js} +1 -1
  216. package/dist/client/assets/js/radar-GUYGQ44K-BTKMKX4G.js +1 -0
  217. package/dist/client/assets/js/{razor-CiWy0jCW.js → razor-BwZ0MkaL.js} +1 -1
  218. package/dist/client/assets/js/{redis-BR2LPmFL.js → redis-5j1U_i85.js} +1 -1
  219. package/dist/client/assets/js/{redshift-B0sdAV16.js → redshift-CX1dFLA1.js} +1 -1
  220. package/dist/client/assets/js/{requirementDiagram-4Y6WPE33-EedCclad.js → requirementDiagram-4Y6WPE33-CKC7CQCX.js} +1 -1
  221. package/dist/client/assets/js/{restructuredtext-kQOBLN1M.js → restructuredtext-MV0-Naya.js} +1 -1
  222. package/dist/client/assets/js/{rough.esm-Dyx_2DON.js → rough.esm-CV1rL6PC.js} +1 -1
  223. package/dist/client/assets/js/{ru-CVQQmreT.js → ru-JsH6TKyg.js} +1 -1
  224. package/dist/client/assets/js/{ruby-CbdJXy6J.js → ruby-Bhyejf9X.js} +1 -1
  225. package/dist/client/assets/js/{rust-DZanYksk.js → rust-CR8d_FC1.js} +1 -1
  226. package/dist/client/assets/js/{sankeyDiagram-5OEKKPKP-DFC0nzsd.js → sankeyDiagram-5OEKKPKP-CKlqlvAe.js} +1 -1
  227. package/dist/client/assets/js/{sb-C5-WiqDZ.js → sb-hLW2EM2L.js} +1 -1
  228. package/dist/client/assets/js/{scala-Bk7i9nV-.js → scala-DVUhALEZ.js} +1 -1
  229. package/dist/client/assets/js/{scheme-CaZSWmJ2.js → scheme-BS6yNanr.js} +1 -1
  230. package/dist/client/assets/js/{scss-ByOYuc7K.js → scss-BfoRsElt.js} +1 -1
  231. package/dist/client/assets/js/{sequenceDiagram-3UESZ5HK-hWjPfqXt.js → sequenceDiagram-3UESZ5HK-CTimhD6H.js} +1 -1
  232. package/dist/client/assets/js/{session-browser-prefs-Br8OYA4_.js → session-browser-prefs-BT1woDux.js} +1 -1
  233. package/dist/client/assets/js/{sessions-iGK9S6zk.js → sessions-IkLKgnN6.js} +1 -1
  234. package/dist/client/assets/js/{settings-pbanANH0.js → settings-roYY6G3W.js} +1 -1
  235. package/dist/client/assets/js/{shell-Di0TEySc.js → shell-BO_Lyczz.js} +1 -1
  236. package/dist/client/assets/js/{skills-DC-UPcXj.js → skills-a5LPwmiT.js} +1 -1
  237. package/dist/client/assets/js/{solidity-BNTjAuuA.js → solidity-D3T2Ki4l.js} +1 -1
  238. package/dist/client/assets/js/{sophia-LY__8Yob.js → sophia-iJmIEvi8.js} +1 -1
  239. package/dist/client/assets/js/{sparql-CWnLfgGS.js → sparql-C2HCEExr.js} +1 -1
  240. package/dist/client/assets/js/{sql-B0ypQ9lR.js → sql-DM6_3GBc.js} +1 -1
  241. package/dist/client/assets/js/{src-BihFroE7.js → src-DD_TpJde.js} +1 -1
  242. package/dist/client/assets/js/{st-CqVFKTbZ.js → st-DSb39Fm5.js} +1 -1
  243. package/dist/client/assets/js/{stateDiagram-AJRCARHV-B7wEnYVe.js → stateDiagram-AJRCARHV-DwBGmBj6.js} +1 -1
  244. package/dist/client/assets/js/stateDiagram-v2-BHNVJYJU-5bNcwBne.js +1 -0
  245. package/dist/client/assets/js/{style-DDAg_jVj.js → style-B5xXhBlp.js} +1 -1
  246. package/dist/client/assets/js/{swift-B4ZZmDxc.js → swift-DrZYSZK3.js} +1 -1
  247. package/dist/client/assets/js/{systemverilog-zLt-O1mT.js → systemverilog-BAWNCaf6.js} +1 -1
  248. package/dist/client/assets/js/{tcl-DCSZmA-l.js → tcl-DY15ex6v.js} +1 -1
  249. package/dist/client/assets/js/{timeline-definition-PNZ67QCA-BN_LfleE.js → timeline-definition-PNZ67QCA-B8xuIu6g.js} +1 -1
  250. package/dist/client/assets/js/treeView-BLDUP644-DvZPUnGM.js +1 -0
  251. package/dist/client/assets/js/treemap-LRROVOQU-Bis1djYh.js +1 -0
  252. package/dist/client/assets/js/{tsMode-BjUcuHrq.js → tsMode-BE8JCSCE.js} +1 -1
  253. package/dist/client/assets/js/{ttsHelpers-BLunFYsq.js → ttsHelpers-BLNiQExI.js} +1 -1
  254. package/dist/client/assets/js/{twig-CuJlVpUG.js → twig-BpHF_18K.js} +1 -1
  255. package/dist/client/assets/js/{typescript-De40YVFt.js → typescript-FQ3z9hVG.js} +1 -1
  256. package/dist/client/assets/js/{typespec-8QcsIc3c.js → typespec-BKvcn6aE.js} +1 -1
  257. package/dist/client/assets/js/{useSttSettings-B1-KXN44.js → useSttSettings-DHX06G8A.js} +1 -1
  258. package/dist/client/assets/js/{vb-DEGTdhxf.js → vb-B74ucE43.js} +1 -1
  259. package/dist/client/assets/js/{vennDiagram-CIIHVFJN-hL8ax7wF.js → vennDiagram-CIIHVFJN-DtEu04QR.js} +1 -1
  260. package/dist/client/assets/js/wardley-L42UT6IY-CD4dIN63.js +1 -0
  261. package/dist/client/assets/js/{wardleyDiagram-YWT4CUSO-BIR-RA6Y.js → wardleyDiagram-YWT4CUSO-DdNKCPsp.js} +1 -1
  262. package/dist/client/assets/js/{wgsl-CmbiucmY.js → wgsl-DEf5Vdqv.js} +1 -1
  263. package/dist/client/assets/js/{workers-BgWBq4qY.js → workers-BbaiLVxx.js} +1 -1
  264. package/dist/client/assets/js/{workflow-socket-DZ9Ceffc.js → workflow-socket-DH402vxO.js} +1 -1
  265. package/dist/client/assets/js/{xml-SZLdwDmk.js → xml-zjE51I7v.js} +1 -1
  266. package/dist/client/assets/js/{xterm-D6CotCNH.js → xterm-Djy4rCx0.js} +1 -1
  267. package/dist/client/assets/js/{xychartDiagram-2RQKCTM6-DHa486uP.js → xychartDiagram-2RQKCTM6-CKqN7g7r.js} +1 -1
  268. package/dist/client/assets/js/{yaml-CgQpCgM5.js → yaml-DabeGoTc.js} +1 -1
  269. package/dist/client/assets/js/{zh-BDlMioZr.js → zh-CI4-L3JY.js} +1 -1
  270. package/dist/client/assets/js/{zh-TW-DTbLWR1A.js → zh-TW-wYlj-uOZ.js} +1 -1
  271. package/dist/client/index.html +1 -1
  272. package/dist/server/index.js +3 -3
  273. package/dist/server/openapi.json +1 -1
  274. package/package.json +9 -1
  275. package/dist/client/assets/js/architecture-7EHR7CIX-Cl4Qi40R.js +0 -1
  276. package/dist/client/assets/js/classDiagram-4FO5ZUOK-DC0BcY8x.js +0 -1
  277. package/dist/client/assets/js/classDiagram-v2-Q7XG4LA2-BfDDH_fm.js +0 -1
  278. package/dist/client/assets/js/eventmodeling-FCH6USID-Bgzwnvkn.js +0 -1
  279. package/dist/client/assets/js/gitGraph-WXDBUCRP-CwFrpI3e.js +0 -1
  280. package/dist/client/assets/js/info-J43DQDTF-wMwkmIWM.js +0 -1
  281. package/dist/client/assets/js/packet-YPE3B663-DYmKXJOE.js +0 -1
  282. package/dist/client/assets/js/pie-LRSECV5Y-Dx0hbcjV.js +0 -1
  283. package/dist/client/assets/js/radar-GUYGQ44K-D-t-QJhi.js +0 -1
  284. package/dist/client/assets/js/stateDiagram-v2-BHNVJYJU-CoMhBVvo.js +0 -1
  285. package/dist/client/assets/js/treeView-BLDUP644-CMJGhbWk.js +0 -1
  286. package/dist/client/assets/js/treemap-LRROVOQU-_j4KoVDh.js +0 -1
  287. package/dist/client/assets/js/wardley-L42UT6IY-BeOvmJoM.js +0 -1
@@ -1 +1 @@
1
- import{Bi as h,Di as v,Hi as w,Ti as g,Zi as y,bi as C,gi as l,ii as R,n as G,ni as P,ri as b,si as I,t as S,wa as a}from"./index-DnjQJzX4.js";import{r as V,t as x}from"./profiles-D-vlI-Ec.js";import{n as B,t as j}from"./settings-pbanANH0.js";import{i as k,r as M}from"./group-chat-xkdjC2Jt.js";import{n as N,t as q}from"./GroupChatPanel-WK4zBasl.js";var m,f,c=a((()=>{I(),P(),N(),M(),x(),j(),m={class:"group-chat-view"},f=v({__name:"GroupChatView",setup(T){const t=k(),o=V(),d=B(),i=b(),s=R(),n=l(()=>{const e=i.params.roomId;return typeof e=="string"&&e.trim()?e:null}),u=l(()=>{const e=i.query?.profile;return typeof e=="string"&&e.trim()?e:null});async function _(){const e=u.value;!e||e===o.activeProfileName||o.profiles.some(r=>r.name===e)&&await o.switchProfile(e)}async function p(){const e=n.value;if(!e){!t.currentRoomId&&t.rooms.length>0&&await s.replace({name:"hermes.groupChatRoom",params:{roomId:t.rooms[0].id}});return}if(!t.rooms.some(r=>r.id===e)){await s.replace({name:"hermes.groupChat"});return}t.currentRoomId!==e&&await t.joinRoom(e)}return h(async()=>{await o.fetchProfiles(),await _(),await t.connect(),await Promise.all([t.loadRooms(),d.fetchSettings()]),await p()}),y([n,u],async()=>{await _(),t.rooms.length!==0&&await p()}),(e,r)=>(w(),C("div",m,[g(q)]))}})})),D=a((()=>{})),E,H=a((()=>{c(),c(),D(),G(),E=S(f,[["__scopeId","data-v-3eb0b270"]])}));H();export{E as default};
1
+ import{Bi as h,Di as v,Hi as w,Ti as g,Zi as y,bi as C,gi as l,ii as R,n as G,ni as P,ri as b,si as I,t as S,wa as a}from"./index-DN4SafrP.js";import{r as V,t as x}from"./profiles-BK5JKD7h.js";import{n as B,t as j}from"./settings-roYY6G3W.js";import{i as k,r as M}from"./group-chat-CgFAwCtr.js";import{n as N,t as q}from"./GroupChatPanel-CLa3s08V.js";var m,f,c=a((()=>{I(),P(),N(),M(),x(),j(),m={class:"group-chat-view"},f=v({__name:"GroupChatView",setup(T){const t=k(),o=V(),d=B(),i=b(),s=R(),n=l(()=>{const e=i.params.roomId;return typeof e=="string"&&e.trim()?e:null}),u=l(()=>{const e=i.query?.profile;return typeof e=="string"&&e.trim()?e:null});async function _(){const e=u.value;!e||e===o.activeProfileName||o.profiles.some(r=>r.name===e)&&await o.switchProfile(e)}async function p(){const e=n.value;if(!e){!t.currentRoomId&&t.rooms.length>0&&await s.replace({name:"hermes.groupChatRoom",params:{roomId:t.rooms[0].id}});return}if(!t.rooms.some(r=>r.id===e)){await s.replace({name:"hermes.groupChat"});return}t.currentRoomId!==e&&await t.joinRoom(e)}return h(async()=>{await o.fetchProfiles(),await _(),await t.connect(),await Promise.all([t.loadRooms(),d.fetchSettings()]),await p()}),y([n,u],async()=>{await _(),t.rooms.length!==0&&await p()}),(e,r)=>(w(),C("div",m,[g(q)]))}})})),D=a((()=>{})),E,H=a((()=>{c(),c(),D(),G(),E=S(f,[["__scopeId","data-v-3eb0b270"]])}));H();export{E as default};
@@ -1 +1 @@
1
- import{$i as B,Bi as $,Di as q,Fi as u,Hi as c,Nr as z,Pr as G,Ri as J,Sa as Q,Ti as W,Zi as _,_a as p,_i as n,bi as f,gi as m,n as X,si as Y,t as ee,ua as b,vi as se,wa as w,yi as T}from"./index-DnjQJzX4.js";import{i as te,o as oe}from"./chat-DdHii4Qz.js";import{a as ae,c as ie,o as le,s as ne}from"./chat-timestamp-DGQ8fmtT.js";import{a as re,i as ue,n as ce,r as _e,t as ve}from"./message-scroll-position-C5yRCyBU.js";var x,P,H,N,C,k,R,O=w((()=>{Y(),z(),le(),re(),te(),ne(),ve(),x={class:"history-message-list-shell"},P={class:"empty-state"},H={key:0,class:"history-loader"},N={key:0,class:"history-loader-spinner"},C=["aria-label","title"],k=new Map,R=q({__name:"HistoryMessageList",props:{session:{},loadOlder:{},scrollScope:{default:"history"}},setup(j,{expose:A}){const v=j,d=oe(),{toolTraceVisible:D}=ie(),{t:g}=G(),o=b(null),a=b(null),h=b(!1),t=m(()=>v.session||null),i=m(()=>ce(v.scrollScope,t.value)),E=m(()=>i.value||"history-empty"),y=m(()=>(t.value?.messages||[]).filter(e=>e.role==="tool"?D.value&&!!e.toolName:!!e.content?.trim()));function M(e=200){return o.value?.isNearBottom(e)??!0}function l(){o.value?.scrollToBottom(),h.value=!1}function S(e){o.value?.scrollToMessage(e)}function F(e,s){o.value?.scrollToAnchor(e,s)}function r(){h.value=y.value.length>0&&!M(1e3)}function K(){r()}function U(){l()}function L(e){if(!e)return;const s=o.value?.captureViewportPosition()??null;s&&_e(k,e,s)}function I(e){if(i.value!==e)return;if(d.focusMessageId){a.value=null,S(d.focusMessageId);return}const s=k.get(e);if(s){a.value=null,s.wasNearBottom?l():o.value?.restoreViewportPosition(s);return}l(),(t.value?.messages.length||0)>0&&(a.value=null)}async function Z(){const e=t.value;if(!e?.hasMoreBefore||e.isLoadingOlderMessages||!v.loadOlder)return;const s=o.value?.captureScrollPosition()??null;await v.loadOlder(e.id)&&(await u(),o.value?.restoreScrollPosition(s),r())}return _(i,async(e,s)=>{L(s),e&&(a.value=e,await u(),I(e))},{immediate:!0}),_(()=>d.focusMessageId,e=>{e&&S(e)}),_(()=>(t.value?.messages||[])[(t.value?.messages||[]).length-1]?.content,e=>{a.value!==i.value&&e&&M()&&l()}),_(()=>(t.value?.messages||[]).length,e=>{if(e===0)return;const s=i.value;if(s&&a.value===s){I(s);return}M()&&(l(),u(r))},{flush:"post"}),_(()=>y.value.length,()=>{u(r)},{flush:"post"}),J(()=>{L(i.value)}),$(()=>{u(r)}),A({scrollToBottom:l,scrollToMessage:S,scrollToAnchor:F}),(e,s)=>(c(),f("div",x,[(c(),se(ae,{key:E.value,ref_key:"listRef",ref:o,messages:y.value,onScroll:K,onTopReach:Z},{empty:B(()=>[n("div",P,[s[0]||(s[0]=n("img",{src:"/coding-agents/hermes.png",alt:"Hermes",class:"empty-logo"},null,-1)),n("p",null,Q(p(g)("chat.emptyState")),1)])]),before:B(()=>[t.value?.hasMoreBefore||t.value?.isLoadingOlderMessages?(c(),f("div",H,[t.value?.isLoadingOlderMessages?(c(),f("span",N)):T("",!0)])):T("",!0)]),item:B(({message:V})=>[W(ue,{message:V,highlight:p(d).focusMessageId===V.id},null,8,["message","highlight"])]),_:1},8,["messages"])),h.value?(c(),f("button",{key:0,type:"button",class:"scroll-bottom-button","aria-label":p(g)("chat.scrollToBottom"),title:p(g)("chat.scrollToBottom"),onClick:U},[...s[1]||(s[1]=[n("svg",{class:"scroll-bottom-icon",viewBox:"0 0 24 24","aria-hidden":"true",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[n("path",{d:"m7 10 5 5 5-5"}),n("path",{d:"M6 19h12"})],-1)])],8,C)):T("",!0)]))}})})),de=w((()=>{})),pe,Be=w((()=>{O(),O(),de(),X(),pe=ee(R,[["__scopeId","data-v-b72a7414"]])}));export{Be as n,pe as t};
1
+ import{$i as B,Bi as $,Di as q,Fi as u,Hi as c,Nr as z,Pr as G,Ri as J,Sa as Q,Ti as W,Zi as _,_a as p,_i as n,bi as f,gi as m,n as X,si as Y,t as ee,ua as b,vi as se,wa as w,yi as T}from"./index-DN4SafrP.js";import{i as te,o as oe}from"./chat-fUZW3YFa.js";import{a as ae,c as ie,o as le,s as ne}from"./chat-timestamp-4wWFcZWv.js";import{a as re,i as ue,n as ce,r as _e,t as ve}from"./message-scroll-position-C9_YO3pX.js";var x,P,H,N,C,k,R,O=w((()=>{Y(),z(),le(),re(),te(),ne(),ve(),x={class:"history-message-list-shell"},P={class:"empty-state"},H={key:0,class:"history-loader"},N={key:0,class:"history-loader-spinner"},C=["aria-label","title"],k=new Map,R=q({__name:"HistoryMessageList",props:{session:{},loadOlder:{},scrollScope:{default:"history"}},setup(j,{expose:A}){const v=j,d=oe(),{toolTraceVisible:D}=ie(),{t:g}=G(),o=b(null),a=b(null),h=b(!1),t=m(()=>v.session||null),i=m(()=>ce(v.scrollScope,t.value)),E=m(()=>i.value||"history-empty"),y=m(()=>(t.value?.messages||[]).filter(e=>e.role==="tool"?D.value&&!!e.toolName:!!e.content?.trim()));function M(e=200){return o.value?.isNearBottom(e)??!0}function l(){o.value?.scrollToBottom(),h.value=!1}function S(e){o.value?.scrollToMessage(e)}function F(e,s){o.value?.scrollToAnchor(e,s)}function r(){h.value=y.value.length>0&&!M(1e3)}function K(){r()}function U(){l()}function L(e){if(!e)return;const s=o.value?.captureViewportPosition()??null;s&&_e(k,e,s)}function I(e){if(i.value!==e)return;if(d.focusMessageId){a.value=null,S(d.focusMessageId);return}const s=k.get(e);if(s){a.value=null,s.wasNearBottom?l():o.value?.restoreViewportPosition(s);return}l(),(t.value?.messages.length||0)>0&&(a.value=null)}async function Z(){const e=t.value;if(!e?.hasMoreBefore||e.isLoadingOlderMessages||!v.loadOlder)return;const s=o.value?.captureScrollPosition()??null;await v.loadOlder(e.id)&&(await u(),o.value?.restoreScrollPosition(s),r())}return _(i,async(e,s)=>{L(s),e&&(a.value=e,await u(),I(e))},{immediate:!0}),_(()=>d.focusMessageId,e=>{e&&S(e)}),_(()=>(t.value?.messages||[])[(t.value?.messages||[]).length-1]?.content,e=>{a.value!==i.value&&e&&M()&&l()}),_(()=>(t.value?.messages||[]).length,e=>{if(e===0)return;const s=i.value;if(s&&a.value===s){I(s);return}M()&&(l(),u(r))},{flush:"post"}),_(()=>y.value.length,()=>{u(r)},{flush:"post"}),J(()=>{L(i.value)}),$(()=>{u(r)}),A({scrollToBottom:l,scrollToMessage:S,scrollToAnchor:F}),(e,s)=>(c(),f("div",x,[(c(),se(ae,{key:E.value,ref_key:"listRef",ref:o,messages:y.value,onScroll:K,onTopReach:Z},{empty:B(()=>[n("div",P,[s[0]||(s[0]=n("img",{src:"/coding-agents/hermes.png",alt:"Hermes",class:"empty-logo"},null,-1)),n("p",null,Q(p(g)("chat.emptyState")),1)])]),before:B(()=>[t.value?.hasMoreBefore||t.value?.isLoadingOlderMessages?(c(),f("div",H,[t.value?.isLoadingOlderMessages?(c(),f("span",N)):T("",!0)])):T("",!0)]),item:B(({message:V})=>[W(ue,{message:V,highlight:p(d).focusMessageId===V.id},null,8,["message","highlight"])]),_:1},8,["messages"])),h.value?(c(),f("button",{key:0,type:"button",class:"scroll-bottom-button","aria-label":p(g)("chat.scrollToBottom"),title:p(g)("chat.scrollToBottom"),onClick:U},[...s[1]||(s[1]=[n("svg",{class:"scroll-bottom-icon",viewBox:"0 0 24 24","aria-hidden":"true",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[n("path",{d:"m7 10 5 5 5-5"}),n("path",{d:"M6 19h12"})],-1)])],8,C)):T("",!0)]))}})})),de=w((()=>{})),pe,Be=w((()=>{O(),O(),de(),X(),pe=ee(R,[["__scopeId","data-v-b72a7414"]])}));export{Be as n,pe as t};
@@ -1 +1 @@
1
- import{$ as At,$i as g,$t as $,Bi as It,Di as Ht,Dt as Tt,Hi as c,M as $t,Nr as Dt,Pr as Ot,Sa as m,Ti as A,Vi as Lt,Wi as ne,Zi as G,_a as n,_i as a,bi as M,gi as S,gt as Nt,i as Vt,ii as qt,jt as re,mi as J,n as Ft,ni as zt,pi as Et,r as Rt,ri as Gt,si as Jt,t as Ut,ua as f,vi as B,wa as de,wi as ee,ya as te,yi as k}from"./index-DnjQJzX4.js";import{I as jt,T as Kt,a as Wt,d as Yt,f as Zt,g as $e,n as Xt,p as Qt,w as es}from"./sessions-iGK9S6zk.js";import{n as ts,t as De}from"./clipboard-DQ_A8ns-.js";import{r as ss,t as os}from"./profiles-D-vlI-Ec.js";import{i as as}from"./chat-DdHii4Qz.js";import{n as is,t as ls}from"./session-browser-prefs-Br8OYA4_.js";import{i as ns,n as rs,o as Oe,r as Le,s as us,t as cs}from"./OutlinePanel-Dlr5svMY.js";import{i as ds,r as vs}from"./SettingsCircuitBadge-DHIEFyTR.js";import{n as fs,t as ps}from"./HistoryMessageList-D8zoQ1Zs.js";import{n as hs,t as gs}from"./PageSidebarFooter-Bic1fUmG.js";var Ne,Ve,qe,Fe,ze,Ee,Re,Ge,Je,Ue,je,Ke,We,Ye,Ze,Xe,Qe,et,tt,st,ot,at,ue,ce,lt,it=de((()=>{Jt(),zt(),as(),Rt(),os(),ls(),$t(),Dt(),us(),ts(),fs(),ns(),rs(),ds(),hs(),Kt(),Ne={class:"history-panel"},Ve={key:0,class:"page-sidebar-top"},qe={class:"session-list-toolbar"},Fe={class:"session-list-title"},ze={class:"session-list-actions"},Ee={key:1,class:"session-items"},Re={key:0,class:"session-loading"},Ge={key:1,class:"session-empty"},Je={class:"session-group-header session-group-header--static"},Ue={class:"session-group-label"},je={class:"session-group-count"},Ke=["onClick"],We={class:"session-group-label"},Ye={class:"session-group-count"},Ze={class:"chat-header"},Xe={class:"header-left"},Qe={class:"header-session-title"},et={key:0,class:"source-badge"},tt=["title"],st={class:"header-actions"},ot={class:"history-content-wrapper"},at={class:"history-main-content"},ue=150,ce=50,lt=Ht({__name:"HistoryView",setup(ys){const ve=Vt(),U=ss(),D=is(),_=Nt(),{t:l}=Ot(),fe=Gt(),P=qt(),O=S(()=>{const e=fe.params.sessionId;return typeof e=="string"&&e.trim()?e:null}),z=S(()=>{const e=fe.query.profile;return typeof e=="string"&&e.trim()?e:null}),pe=S(()=>U.activeProfileName||z.value||null),y=f([]),se=f(!1),j=f(!1),h=f(null),r=f(null),K=f(!1),he=f(null),x=f(!1),b=f(!1),V=f(!1),v=f(new Set),C=f(null),W=f(!1),ge=f(0),_e=f(0);let q=0;const L=f({}),N=f({}),I=f({});function nt(e){he.value?.scrollToAnchor(e.messageId,e.anchorId),we.value&&(K.value=!1)}function rt(){P.push({name:"hermes.chat"})}async function F(){const e=++q;se.value=!0;try{const t=[...D.pinnedIds];O.value&&!t.includes(O.value)&&t.push(O.value);const s=await Zt(ce,pe.value,t);if(e!==q)return;const o=new Map;for(const i of s.groups.flatMap(d=>d.sessions))o.set(`${i.profile||"default"}\0${i.id}`,i);for(const i of s.included)o.set(`${i.profile||"default"}\0${i.id}`,i);y.value=[...o.values()],L.value=Object.fromEntries(s.groups.map(i=>[i.source,i.hasMore])),I.value=Object.fromEntries(s.groups.map(i=>[i.source,i.sessions.length])),N.value={},j.value=!0}catch(t){console.error("Failed to load Hermes sessions:",t)}finally{e===q&&(se.value=!1)}}const w=f(typeof window>"u"||!window.matchMedia("(max-width: 768px)").matches);G(w,e=>ve.setPageSidebarExpanded(e),{immediate:!0});let E=null;const we=f(!1);function H(e){return y.value.find(t=>t.id===e)}const oe=S(()=>C.value&&H(C.value)||null),ut=S(()=>C.value?D.isPinned(C.value):!1),ct=S(()=>[{label:l("chat.importToWebUi"),key:"import-webui",disabled:!!oe.value?.webui_imported},{label:l(ut.value?"chat.unpin":"chat.pin"),key:"pin"},...oe.value?.is_archived?[{label:l("chat.unarchiveSession"),key:"unarchive"}]:[],{label:l("chat.copySessionLink"),key:"copy-link"},{label:l("chat.copySessionId"),key:"copy-id"}]);function me(e){return(e.role==="moa"||e.display_role==="tool")&&(e.tool_name==="moa_reference"||e.tool_name==="moa_aggregating")}function dt(e,t){if(e!=="moa_reference"&&e!=="moa_aggregating")return null;const s=typeof t=="string"?(()=>{try{return JSON.parse(t)}catch{return null}})():t;if(!s||typeof s!="object")return null;const o=s;return{preview:typeof o.preview=="string"?o.preview:typeof o.label=="string"?o.label:typeof o.aggregator=="string"?o.aggregator:void 0,result:o.text??o.result}}function ae(e){return e.map(t=>{const s=me(t)?"tool":t.display_role||t.role,o={id:String(t.id),role:s==="moa"?"system":s,content:t.content||"",timestamp:t.timestamp*1e3,reasoning:t.reasoning||void 0,systemType:s==="command"?"command":void 0};if(t.role==="tool"||me(t)){const i=dt(t.tool_name,t.content);o.toolName=t.tool_name||void 0,o.toolCallId=t.tool_call_id||void 0,o.toolArgs=t.tool_calls?.[0]?.function?.arguments?JSON.stringify(t.tool_calls[0].function.arguments):void 0,o.toolPreview=i?.preview,o.toolStatus=t.finish_reason==="error"?"error":"done",o.toolResult=i?i.result:t.content||void 0,o.content=""}return o})}function ye(e){const t=e.source==="coding_agent"||e.agent==="claude"||e.agent==="codex";return{agent:e.agent||void 0,agentSessionId:e.agent_session_id||void 0,agentNativeSessionId:e.agent_native_session_id||void 0,codingAgentId:e.agent==="codex"?"codex":e.agent==="claude"?"claude-code":void 0,codingAgentMode:t?e.agent_mode==="global"||e.agent_mode==="scoped"?e.agent_mode:e.provider==="global"?"global":"scoped":void 0}}function vt(e,t=[]){return{id:e.id,profile:e.profile||void 0,title:e.title||"",source:e.source,...ye(e),createdAt:e.started_at*1e3,updatedAt:(e.last_active||e.ended_at||e.started_at)*1e3,model:e.model,provider:e.provider,messageCount:e.message_count,messageTotal:e.message_count,loadedMessageCount:t.length,hasMoreBefore:!1,inputTokens:e.input_tokens,outputTokens:e.output_tokens,endedAt:e.ended_at?e.ended_at*1e3:void 0,lastActiveAt:e.last_active?e.last_active*1e3:void 0,isArchived:!!e.is_archived,workspace:e.workspace||void 0,messages:t}}async function ft(e,t){const s=H(e),o=t||s?.profile||null,i=await $e(e,0,ue,o);let d=null;if(i)d=vt(s||i.session,ae(i.messages)),d.profile=s?.profile||o||void 0,d.messageCount=i.total,d.messageTotal=i.total,d.loadedMessageCount=i.messages.length,d.hasMoreBefore=i.hasMore;else{const u=await Yt(e,o);if(!u){_.error(l("chat.sessionNotFound"));return}d={id:u.id,profile:u.profile||o||void 0,title:u.title||"",source:u.source,createdAt:u.started_at*1e3,updatedAt:(u.last_active||u.started_at)*1e3,model:u.model,provider:u.provider,messageCount:u.message_count,messageTotal:u.message_count,loadedMessageCount:u.messages.length,hasMoreBefore:!1,inputTokens:u.input_tokens,outputTokens:u.output_tokens,endedAt:u.ended_at?u.ended_at*1e3:void 0,lastActiveAt:u.last_active?u.last_active*1e3:void 0,workspace:u.workspace||void 0,messages:ae(u.messages)}}h.value=d.id,r.value=d,E?.matches&&(w.value=!1)}async function pt(e){const t=r.value;if(!t||t.id!==e||t.isLoadingOlderMessages||!t.hasMoreBefore)return!1;const s=t.loadedMessageCount||0;t.isLoadingOlderMessages=!0;try{const o=await $e(e,s,ue,t.profile);if(!o||o.messages.length===0)return t.hasMoreBefore=!1,!1;const i=new Set(t.messages.map(u=>u.id)),d=ae(o.messages).filter(u=>!i.has(u.id));return t.messages=[...d,...t.messages],t.loadedMessageCount=s+o.messages.length,t.messageTotal=o.total,t.messageCount=o.total,t.hasMoreBefore=o.hasMore,d.length>0}catch(o){return console.error("Failed to load older history messages:",o),!1}finally{t.isLoadingOlderMessages=!1}}async function Y(e,t){await P.push({name:"hermes.historySession",params:{sessionId:e},query:t?{profile:t}:void 0})}async function Z(e=!1){const t=y.value.find(o=>o.source==="cli")||y.value[0];if(!t){h.value=null,r.value=null,O.value&&await P.replace({name:"hermes.history"});return}p.value.has(t.source)&&(p.value=new Set([...p.value].filter(o=>o!==t.source)));const s={name:"hermes.historySession",params:{sessionId:t.id},query:t.profile?{profile:t.profile}:void 0};e?await P.replace(s):await P.push(s)}async function Se(){const e=O.value;if(!e)return;const t=H(e);if(!t){h.value=null,r.value=null,await P.replace({name:"hermes.history"});return}p.value.has(t.source)&&(p.value=new Set([...p.value].filter(i=>i!==t.source)),localStorage.setItem("hermes_collapsed_groups",JSON.stringify([...p.value])));const s=z.value||t.profile||null,o=r.value?.profile||null;(h.value!==e||o!==s)&&(h.value=e,r.value=null,await ft(e,s))}function ie(e){we.value=e.matches,e.matches&&w.value&&(w.value=!1)}function ke(){w.value=!0}It(async()=>{ve.loadModels(),await U.fetchProfiles(),await F(),await Se(),E=window.matchMedia("(max-width: 768px)"),ie(E),E.addEventListener("change",ie),window.addEventListener("hermes:open-page-sidebar",ke)}),Lt(()=>{E?.removeEventListener("change",ie),window.removeEventListener("hermes:open-page-sidebar",ke)}),G([O,z],async([e])=>{if(!e){h.value=null,r.value=null;return}j.value&&(z.value&&!y.value.some(t=>t.profile===z.value)&&await F(),await Se())}),G(()=>U.activeProfileName,async()=>{j.value&&(U.switching||(h.value=null,r.value=null,await F(),await Z(!0)))});const p=f(new Set(JSON.parse(localStorage.getItem("hermes_collapsed_groups")||"[]")));function ht(e){return{id:e.id,profile:e.profile||void 0,title:e.title||"",source:e.source,...ye(e),createdAt:e.started_at*1e3,updatedAt:(e.last_active||e.started_at)*1e3,model:e.model,provider:e.provider,messageCount:e.message_count,inputTokens:e.input_tokens,outputTokens:e.output_tokens,endedAt:e.ended_at?e.ended_at*1e3:void 0,lastActiveAt:e.last_active?e.last_active*1e3:void 0,isArchived:!!e.is_archived,workspace:e.workspace||void 0,messages:[]}}const T=S(()=>y.value.map(ht));function R(e){return`${e.profile||"default"}\0${e.id}`}function be(){b.value||(x.value=!x.value,x.value||(v.value.clear(),V.value=!1))}function X(e){if(b.value)return;const t=R(e);v.value.has(t)?v.value.delete(t):v.value.add(t),v.value=new Set(v.value),v.value.size===0&&(V.value=!1)}function Me(e){return v.value.has(R(e))}function gt(){if(!b.value){if(Ce.value){v.value.clear(),v.value=new Set(v.value),V.value=!1;return}v.value.clear();for(const e of T.value)v.value.add(R(e));v.value=new Set(v.value)}}const xe=S(()=>v.value.size),_t=S(()=>T.value.length>0),Ce=S(()=>T.value.length>0&&v.value.size===T.value.length);function Be(e){return e==="api_server"?-1:e==="cron"?999:0}function Pe(e){return[...e].sort((t,s)=>(s.updatedAt||0)-(t.updatedAt||0))}const le=S(()=>Pe(T.value.filter(e=>D.isPinned(e.id)))),Q=S(()=>{const e=new Map;for(const t of T.value){if(D.isPinned(t.id))continue;const s=t.source||"";e.has(s)||e.set(s,[]),e.get(s).push(t)}return[...new Set([...e.keys(),...Object.keys(L.value).filter(t=>L.value[t])])].sort((t,s)=>{const o=Be(t),i=Be(s);return o!==i?o-i:t.localeCompare(s)}).map(t=>{const s=Pe(e.get(t)||[]);return{source:t,label:t?Oe(t):l("chat.other"),sessions:s,hasMore:!!L.value[t],loading:!!N.value[t]}})});async function wt(e){if(N.value[e]||!L.value[e])return;const t=q,s=I.value[e]||0;N.value={...N.value,[e]:!0};try{const o=await Qt(e,s,ce,pe.value);if(t!==q)return;const i=new Map(y.value.map(d=>[`${d.profile||"default"}\0${d.id}`,d]));for(const d of o.sessions)i.set(`${d.profile||"default"}\0${d.id}`,d);y.value=[...i.values()],I.value={...I.value,[e]:s+o.sessions.length},L.value={...L.value,[e]:o.sessions.length>0&&o.hasMore}}catch(o){console.error(`Failed to load more ${e} sessions:`,o)}finally{t===q&&(N.value={...N.value,[e]:!1})}}function mt(e){if(!p.value.has(e))p.value=new Set([...p.value,e]);else{p.value=new Set(Q.value.map(s=>s.source).filter(s=>s!==e));const t=Q.value.find(s=>s.source===e);t?.sessions.length&&Y(t.sessions[0].id,t.sessions[0].profile)}localStorage.setItem("hermes_collapsed_groups",JSON.stringify([...p.value]))}G(Q,e=>{if(localStorage.getItem("hermes_collapsed_groups")!==null){const t=r.value?.source;t&&p.value.has(t)&&(p.value=new Set([...p.value].filter(s=>s!==t)),localStorage.setItem("hermes_collapsed_groups",JSON.stringify([...p.value])));return}e.length>0&&(p.value=new Set(e.slice(1).map(t=>t.source)),localStorage.setItem("hermes_collapsed_groups",JSON.stringify([...p.value])))},{once:!0}),G(j,e=>{e&&y.value.length>0&&!O.value&&Z(!1)},{once:!0});const yt=S(()=>r.value?.title||l("chat.newChat")),Ae=S(()=>r.value?.source||"");async function Ie(e){const t=e||h.value;t&&(await De(t)?_.success(l("common.copied")):_.error(l("common.copied")+" ✗"))}function St(e){return r.value?.id===e?r.value.profile||null:H(e)?.profile||null}function kt(e,t){const s=P.resolve({name:"hermes.historySession",params:{sessionId:e},query:t?{profile:t}:void 0}).href;return`${window.location.origin}${window.location.pathname}${s}`}async function bt(e){const t=e||h.value;t&&(await De(kt(t,St(t)))?_.success(l("common.copied")):_.error(l("common.copied")+" ✗"))}function He(e,t){e.preventDefault(),C.value=t,W.value=!0,ge.value=e.clientX,_e.value=e.clientY}function Mt(){W.value=!1}async function xt(e){const t=H(e);try{const s=await es(e,t?.profile||null);if(s.ok){_.success(l(s.imported?"chat.importSessionSuccess":"chat.importSessionAlreadyExists")),await F();return}}catch{}_.error(l("chat.importSessionFailed"))}async function Ct(e){if(W.value=!1,!!C.value){if(e==="pin")D.togglePinned(C.value);else if(e==="copy-link")await bt(C.value);else if(e==="copy-id")await Ie(C.value);else if(e==="import-webui")await xt(C.value);else if(e==="unarchive"){if(!oe.value?.is_archived)return;if(!await jt(C.value)){_.error(l("chat.unarchiveSessionFailed"));return}_.success(l("chat.sessionUnarchived")),await F(),H(C.value)||(h.value=null,r.value=null,await P.replace({name:"hermes.history"}),await Z(!0))}}}async function Te(e,t){const s=H(e);if(!await Wt(e,t||s?.profile||null)){_.error(l("common.deleteFailed"));return}if(D.removePinned(e),y.value=y.value.filter(o=>o.id!==e),s?.source&&I.value[s.source]&&(I.value={...I.value,[s.source]:Math.max(0,I.value[s.source]-1)}),h.value===e){h.value=null,r.value=null;const o=T.value[0];o?await Y(o.id,o.profile):await P.replace({name:"hermes.history"})}_.success(l("chat.sessionDeleted"))}async function Bt(){if(v.value.size===0||b.value)return;const e=new Map(T.value.map(o=>[R(o),o])),t=Array.from(v.value).map(o=>e.get(o)).filter(o=>!!o).map(o=>({id:o.id,profile:o.profile||null}));if(t.length===0)return;const s=r.value?v.value.has(R(r.value)):!1;b.value=!0;try{const o=await Xt(t);if(o.deleted>0){for(const i of t)D.removePinned(i.id);await F(),(s||h.value&&!H(h.value))&&(h.value=null,r.value=null,await Z(!0)),_.success(l("chat.batchDeleteSuccess",{count:o.deleted})),o.failed>0&&_.warning(l("chat.batchDeletePartial",{failed:o.failed}))}else _.error(l("chat.batchDeleteFailed"))}catch{_.error(l("chat.batchDeleteFailed"))}finally{b.value=!1,V.value=!1,x.value=!1,v.value.clear()}}function Pt(){return Bt(),!1}return(e,t)=>(c(),M("div",Ne,[a("div",{class:te(["session-backdrop",{active:w.value}]),onClick:t[0]||(t[0]=s=>w.value=!1)},null,2),a("aside",{class:te(["session-list",{collapsed:!w.value}])},[w.value?(c(),M("div",Ve,[A(vs,{active:"history","primary-label":n(l)("chat.newChat"),"hide-mode-switch":"",onPrimary:rt},null,8,["primary-label"]),a("div",qe,[a("span",Fe,m(n(l)("chat.hermesHistory")),1),a("div",ze,[a("button",{class:"session-close-btn",onClick:t[1]||(t[1]=s=>w.value=!1)},[...t[6]||(t[6]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),a("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])]),x.value?k("",!0):(c(),B(n($),{key:0,quaternary:"",size:"tiny",disabled:y.value.length===0,title:n(l)("chat.toggleBatchMode"),onClick:be},{icon:g(()=>[...t[7]||(t[7]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("path",{d:"M9 11l3 3L22 4"}),a("path",{d:"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"})],-1)])]),_:1},8,["disabled","title"])),x.value?(c(),B(n($),{key:1,quaternary:"",size:"tiny",disabled:!_t.value||b.value,title:Ce.value?n(l)("common.cancel"):n(l)("chat.selectAll"),onClick:gt},{icon:g(()=>[...t[8]||(t[8]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("path",{d:"M9 11l3 3L22 4"}),a("path",{d:"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"})],-1)])]),_:1},8,["disabled","title"])):k("",!0),x.value&&xe.value>0?(c(),B(n(At),{key:2,show:V.value,"onUpdate:show":t[2]||(t[2]=s=>V.value=s),"positive-button-props":{loading:b.value,disabled:b.value},"negative-button-props":{disabled:b.value},onPositiveClick:Pt},{trigger:g(()=>[A(n($),{quaternary:"",size:"tiny",type:"error",loading:b.value,disabled:b.value},{icon:g(()=>[...t[9]||(t[9]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("polyline",{points:"3 6 5 6 21 6"}),a("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)])]),_:1},8,["loading","disabled"])]),default:g(()=>[ee(" "+m(n(l)("chat.confirmBatchDelete",{count:xe.value})),1)]),_:1},8,["show","positive-button-props","negative-button-props"])):k("",!0),x.value?(c(),B(n($),{key:3,quaternary:"",size:"tiny",disabled:b.value,onClick:be},{icon:g(()=>[...t[10]||(t[10]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),a("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])]),_:1},8,["disabled"])):k("",!0)])])])):k("",!0),w.value?(c(),M("div",Ee,[se.value&&y.value.length===0?(c(),M("div",Re,m(n(l)("common.loading")),1)):y.value.length===0?(c(),M("div",Ge,m(n(l)("chat.noSessions")),1)):k("",!0),le.value.length>0?(c(),M(J,{key:2},[a("div",Je,[a("span",Ue,m(n(l)("chat.pinned")),1),a("span",je,m(le.value.length),1)]),(c(!0),M(J,null,ne(le.value,s=>(c(),B(Le,{key:`pinned-${s.id}`,session:s,active:s.id===h.value,pinned:!0,"can-delete":!0,streaming:!1,selectable:x.value,selected:Me(s),"show-profile":!0,onSelect:o=>x.value?X(s):Y(s.id,s.profile),onContextmenu:o=>He(o,s.id),onDelete:o=>Te(s.id,s.profile),onToggleSelect:o=>X(s)},null,8,["session","active","selectable","selected","onSelect","onContextmenu","onDelete","onToggleSelect"]))),128))],64)):k("",!0),(c(!0),M(J,null,ne(Q.value,s=>(c(),M(J,{key:s.source},[a("div",{class:"session-group-header",onClick:o=>mt(s.source)},[(c(),M("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",class:te(["group-chevron",{collapsed:p.value.has(s.source)}])},[...t[11]||(t[11]=[a("polyline",{points:"9 18 15 12 9 6"},null,-1)])],2)),a("span",We,m(s.label),1),a("span",Ye,m(s.sessions.length)+m(s.hasMore?"+":""),1),s.hasMore?(c(),B(n(re),{key:0,trigger:"hover"},{trigger:g(()=>[A(n($),{class:"session-group-load-more",quaternary:"",circle:"",size:"tiny",loading:s.loading,disabled:s.loading,"aria-label":s.loading?n(l)("common.loading"):n(l)("chat.loadMoreSessions"),onClick:Et(o=>wt(s.source),["stop"])},{icon:g(()=>[...t[12]||(t[12]=[a("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8"},[a("path",{d:"M20 11a8 8 0 1 0-2.34 5.66"}),a("polyline",{points:"20 4 20 11 13 11"})],-1)])]),_:1},8,["loading","disabled","aria-label","onClick"])]),default:g(()=>[ee(" "+m(s.loading?n(l)("common.loading"):n(l)("chat.loadMoreSessions")),1)]),_:2},1024)):k("",!0)],8,Ke),p.value.has(s.source)?k("",!0):(c(!0),M(J,{key:0},ne(s.sessions,o=>(c(),B(Le,{key:o.id,session:o,active:o.id===h.value,pinned:!1,"can-delete":!0,streaming:!1,selectable:x.value,selected:Me(o),"show-profile":!0,onSelect:i=>x.value?X(o):Y(o.id,o.profile),onContextmenu:i=>He(i,o.id),onDelete:i=>Te(o.id,o.profile),onToggleSelect:i=>X(o)},null,8,["session","active","selectable","selected","onSelect","onContextmenu","onDelete","onToggleSelect"]))),128))],64))),128))])):k("",!0),w.value?(c(),B(gs,{key:2})):k("",!0)],2),A(n(Tt),{placement:"bottom-start",trigger:"manual",x:ge.value,y:_e.value,options:ct.value,show:W.value,onSelect:Ct,onClickoutside:Mt},null,8,["x","y","options","show"]),a("div",{class:te(["chat-main",{"chat-main--sidebar-collapsed":!w.value}])},[a("header",Ze,[a("div",Xe,[A(n($),{class:"history-sidebar-toggle",quaternary:"",size:"small",onClick:t[3]||(t[3]=s=>w.value=!w.value),circle:""},{icon:g(()=>[...t[13]||(t[13]=[a("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[a("rect",{x:"3",y:"3",width:"7",height:"7"}),a("rect",{x:"14",y:"3",width:"7",height:"7"}),a("rect",{x:"3",y:"14",width:"7",height:"7"}),a("rect",{x:"14",y:"14",width:"7",height:"7"})],-1)])]),_:1}),a("span",Qe,m(yt.value),1),Ae.value?(c(),M("span",et,m(n(Oe)(Ae.value)),1)):k("",!0),r.value?.workspace?(c(),M("span",{key:1,class:"workspace-badge",title:r.value.workspace},"📁 "+m(r.value.workspace.split("/").pop()||r.value.workspace),9,tt)):k("",!0)]),a("div",st,[A(n(re),{trigger:"hover"},{trigger:g(()=>[A(n($),{quaternary:"",size:"small",onClick:t[4]||(t[4]=s=>K.value=!K.value),circle:""},{icon:g(()=>[...t[14]||(t[14]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[a("path",{d:"M3 12h18M3 6h18M3 18h18"})],-1)])]),_:1})]),default:g(()=>[ee(" "+m(n(l)("chat.outlineTitle")),1)]),_:1}),A(n(re),{trigger:"hover"},{trigger:g(()=>[A(n($),{quaternary:"",size:"small",onClick:t[5]||(t[5]=s=>Ie()),circle:""},{icon:g(()=>[...t[15]||(t[15]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[a("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),a("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})],-1)])]),_:1})]),default:g(()=>[ee(" "+m(n(l)("chat.copySessionId")),1)]),_:1})])]),a("div",ot,[a("div",at,[(c(),B(ps,{key:r.value?.id||"history-empty",ref_key:"historyMessageListRef",ref:he,session:r.value,"load-older":pt,"scroll-scope":"history"},null,8,["session"]))]),K.value&&r.value?(c(),B(cs,{key:0,messages:r.value.messages||[],onNavigate:nt},null,8,["messages"])):k("",!0)])],2)]))}})})),_s=de((()=>{})),ws,ms=de((()=>{it(),it(),_s(),Ft(),ws=Ut(lt,[["__scopeId","data-v-a99249f5"]])}));ms();export{ws as default};
1
+ import{$ as At,$i as g,$t as $,Bi as It,Di as Ht,Dt as Tt,Hi as c,M as $t,Nr as Dt,Pr as Ot,Sa as m,Ti as A,Vi as Lt,Wi as ne,Zi as G,_a as n,_i as a,bi as M,gi as S,gt as Nt,i as Vt,ii as qt,jt as re,mi as J,n as Ft,ni as zt,pi as Et,r as Rt,ri as Gt,si as Jt,t as Ut,ua as f,vi as B,wa as de,wi as ee,ya as te,yi as k}from"./index-DN4SafrP.js";import{I as jt,T as Kt,a as Wt,d as Yt,f as Zt,g as $e,n as Xt,p as Qt,w as es}from"./sessions-IkLKgnN6.js";import{n as ts,t as De}from"./clipboard-DHZFaAvO.js";import{r as ss,t as os}from"./profiles-BK5JKD7h.js";import{i as as}from"./chat-fUZW3YFa.js";import{n as is,t as ls}from"./session-browser-prefs-BT1woDux.js";import{i as ns,n as rs,o as Oe,r as Le,s as us,t as cs}from"./OutlinePanel-CF_XPCRn.js";import{i as ds,r as vs}from"./SettingsCircuitBadge-CnWSfQZd.js";import{n as fs,t as ps}from"./HistoryMessageList-BdD8GJYM.js";import{n as hs,t as gs}from"./PageSidebarFooter-dvLzcTIm.js";var Ne,Ve,qe,Fe,ze,Ee,Re,Ge,Je,Ue,je,Ke,We,Ye,Ze,Xe,Qe,et,tt,st,ot,at,ue,ce,lt,it=de((()=>{Jt(),zt(),as(),Rt(),os(),ls(),$t(),Dt(),us(),ts(),fs(),ns(),rs(),ds(),hs(),Kt(),Ne={class:"history-panel"},Ve={key:0,class:"page-sidebar-top"},qe={class:"session-list-toolbar"},Fe={class:"session-list-title"},ze={class:"session-list-actions"},Ee={key:1,class:"session-items"},Re={key:0,class:"session-loading"},Ge={key:1,class:"session-empty"},Je={class:"session-group-header session-group-header--static"},Ue={class:"session-group-label"},je={class:"session-group-count"},Ke=["onClick"],We={class:"session-group-label"},Ye={class:"session-group-count"},Ze={class:"chat-header"},Xe={class:"header-left"},Qe={class:"header-session-title"},et={key:0,class:"source-badge"},tt=["title"],st={class:"header-actions"},ot={class:"history-content-wrapper"},at={class:"history-main-content"},ue=150,ce=50,lt=Ht({__name:"HistoryView",setup(ys){const ve=Vt(),U=ss(),D=is(),_=Nt(),{t:l}=Ot(),fe=Gt(),P=qt(),O=S(()=>{const e=fe.params.sessionId;return typeof e=="string"&&e.trim()?e:null}),z=S(()=>{const e=fe.query.profile;return typeof e=="string"&&e.trim()?e:null}),pe=S(()=>U.activeProfileName||z.value||null),y=f([]),se=f(!1),j=f(!1),h=f(null),r=f(null),K=f(!1),he=f(null),x=f(!1),b=f(!1),V=f(!1),v=f(new Set),C=f(null),W=f(!1),ge=f(0),_e=f(0);let q=0;const L=f({}),N=f({}),I=f({});function nt(e){he.value?.scrollToAnchor(e.messageId,e.anchorId),we.value&&(K.value=!1)}function rt(){P.push({name:"hermes.chat"})}async function F(){const e=++q;se.value=!0;try{const t=[...D.pinnedIds];O.value&&!t.includes(O.value)&&t.push(O.value);const s=await Zt(ce,pe.value,t);if(e!==q)return;const o=new Map;for(const i of s.groups.flatMap(d=>d.sessions))o.set(`${i.profile||"default"}\0${i.id}`,i);for(const i of s.included)o.set(`${i.profile||"default"}\0${i.id}`,i);y.value=[...o.values()],L.value=Object.fromEntries(s.groups.map(i=>[i.source,i.hasMore])),I.value=Object.fromEntries(s.groups.map(i=>[i.source,i.sessions.length])),N.value={},j.value=!0}catch(t){console.error("Failed to load Hermes sessions:",t)}finally{e===q&&(se.value=!1)}}const w=f(typeof window>"u"||!window.matchMedia("(max-width: 768px)").matches);G(w,e=>ve.setPageSidebarExpanded(e),{immediate:!0});let E=null;const we=f(!1);function H(e){return y.value.find(t=>t.id===e)}const oe=S(()=>C.value&&H(C.value)||null),ut=S(()=>C.value?D.isPinned(C.value):!1),ct=S(()=>[{label:l("chat.importToWebUi"),key:"import-webui",disabled:!!oe.value?.webui_imported},{label:l(ut.value?"chat.unpin":"chat.pin"),key:"pin"},...oe.value?.is_archived?[{label:l("chat.unarchiveSession"),key:"unarchive"}]:[],{label:l("chat.copySessionLink"),key:"copy-link"},{label:l("chat.copySessionId"),key:"copy-id"}]);function me(e){return(e.role==="moa"||e.display_role==="tool")&&(e.tool_name==="moa_reference"||e.tool_name==="moa_aggregating")}function dt(e,t){if(e!=="moa_reference"&&e!=="moa_aggregating")return null;const s=typeof t=="string"?(()=>{try{return JSON.parse(t)}catch{return null}})():t;if(!s||typeof s!="object")return null;const o=s;return{preview:typeof o.preview=="string"?o.preview:typeof o.label=="string"?o.label:typeof o.aggregator=="string"?o.aggregator:void 0,result:o.text??o.result}}function ae(e){return e.map(t=>{const s=me(t)?"tool":t.display_role||t.role,o={id:String(t.id),role:s==="moa"?"system":s,content:t.content||"",timestamp:t.timestamp*1e3,reasoning:t.reasoning||void 0,systemType:s==="command"?"command":void 0};if(t.role==="tool"||me(t)){const i=dt(t.tool_name,t.content);o.toolName=t.tool_name||void 0,o.toolCallId=t.tool_call_id||void 0,o.toolArgs=t.tool_calls?.[0]?.function?.arguments?JSON.stringify(t.tool_calls[0].function.arguments):void 0,o.toolPreview=i?.preview,o.toolStatus=t.finish_reason==="error"?"error":"done",o.toolResult=i?i.result:t.content||void 0,o.content=""}return o})}function ye(e){const t=e.source==="coding_agent"||e.agent==="claude"||e.agent==="codex";return{agent:e.agent||void 0,agentSessionId:e.agent_session_id||void 0,agentNativeSessionId:e.agent_native_session_id||void 0,codingAgentId:e.agent==="codex"?"codex":e.agent==="claude"?"claude-code":void 0,codingAgentMode:t?e.agent_mode==="global"||e.agent_mode==="scoped"?e.agent_mode:e.provider==="global"?"global":"scoped":void 0}}function vt(e,t=[]){return{id:e.id,profile:e.profile||void 0,title:e.title||"",source:e.source,...ye(e),createdAt:e.started_at*1e3,updatedAt:(e.last_active||e.ended_at||e.started_at)*1e3,model:e.model,provider:e.provider,messageCount:e.message_count,messageTotal:e.message_count,loadedMessageCount:t.length,hasMoreBefore:!1,inputTokens:e.input_tokens,outputTokens:e.output_tokens,endedAt:e.ended_at?e.ended_at*1e3:void 0,lastActiveAt:e.last_active?e.last_active*1e3:void 0,isArchived:!!e.is_archived,workspace:e.workspace||void 0,messages:t}}async function ft(e,t){const s=H(e),o=t||s?.profile||null,i=await $e(e,0,ue,o);let d=null;if(i)d=vt(s||i.session,ae(i.messages)),d.profile=s?.profile||o||void 0,d.messageCount=i.total,d.messageTotal=i.total,d.loadedMessageCount=i.messages.length,d.hasMoreBefore=i.hasMore;else{const u=await Yt(e,o);if(!u){_.error(l("chat.sessionNotFound"));return}d={id:u.id,profile:u.profile||o||void 0,title:u.title||"",source:u.source,createdAt:u.started_at*1e3,updatedAt:(u.last_active||u.started_at)*1e3,model:u.model,provider:u.provider,messageCount:u.message_count,messageTotal:u.message_count,loadedMessageCount:u.messages.length,hasMoreBefore:!1,inputTokens:u.input_tokens,outputTokens:u.output_tokens,endedAt:u.ended_at?u.ended_at*1e3:void 0,lastActiveAt:u.last_active?u.last_active*1e3:void 0,workspace:u.workspace||void 0,messages:ae(u.messages)}}h.value=d.id,r.value=d,E?.matches&&(w.value=!1)}async function pt(e){const t=r.value;if(!t||t.id!==e||t.isLoadingOlderMessages||!t.hasMoreBefore)return!1;const s=t.loadedMessageCount||0;t.isLoadingOlderMessages=!0;try{const o=await $e(e,s,ue,t.profile);if(!o||o.messages.length===0)return t.hasMoreBefore=!1,!1;const i=new Set(t.messages.map(u=>u.id)),d=ae(o.messages).filter(u=>!i.has(u.id));return t.messages=[...d,...t.messages],t.loadedMessageCount=s+o.messages.length,t.messageTotal=o.total,t.messageCount=o.total,t.hasMoreBefore=o.hasMore,d.length>0}catch(o){return console.error("Failed to load older history messages:",o),!1}finally{t.isLoadingOlderMessages=!1}}async function Y(e,t){await P.push({name:"hermes.historySession",params:{sessionId:e},query:t?{profile:t}:void 0})}async function Z(e=!1){const t=y.value.find(o=>o.source==="cli")||y.value[0];if(!t){h.value=null,r.value=null,O.value&&await P.replace({name:"hermes.history"});return}p.value.has(t.source)&&(p.value=new Set([...p.value].filter(o=>o!==t.source)));const s={name:"hermes.historySession",params:{sessionId:t.id},query:t.profile?{profile:t.profile}:void 0};e?await P.replace(s):await P.push(s)}async function Se(){const e=O.value;if(!e)return;const t=H(e);if(!t){h.value=null,r.value=null,await P.replace({name:"hermes.history"});return}p.value.has(t.source)&&(p.value=new Set([...p.value].filter(i=>i!==t.source)),localStorage.setItem("hermes_collapsed_groups",JSON.stringify([...p.value])));const s=z.value||t.profile||null,o=r.value?.profile||null;(h.value!==e||o!==s)&&(h.value=e,r.value=null,await ft(e,s))}function ie(e){we.value=e.matches,e.matches&&w.value&&(w.value=!1)}function ke(){w.value=!0}It(async()=>{ve.loadModels(),await U.fetchProfiles(),await F(),await Se(),E=window.matchMedia("(max-width: 768px)"),ie(E),E.addEventListener("change",ie),window.addEventListener("hermes:open-page-sidebar",ke)}),Lt(()=>{E?.removeEventListener("change",ie),window.removeEventListener("hermes:open-page-sidebar",ke)}),G([O,z],async([e])=>{if(!e){h.value=null,r.value=null;return}j.value&&(z.value&&!y.value.some(t=>t.profile===z.value)&&await F(),await Se())}),G(()=>U.activeProfileName,async()=>{j.value&&(U.switching||(h.value=null,r.value=null,await F(),await Z(!0)))});const p=f(new Set(JSON.parse(localStorage.getItem("hermes_collapsed_groups")||"[]")));function ht(e){return{id:e.id,profile:e.profile||void 0,title:e.title||"",source:e.source,...ye(e),createdAt:e.started_at*1e3,updatedAt:(e.last_active||e.started_at)*1e3,model:e.model,provider:e.provider,messageCount:e.message_count,inputTokens:e.input_tokens,outputTokens:e.output_tokens,endedAt:e.ended_at?e.ended_at*1e3:void 0,lastActiveAt:e.last_active?e.last_active*1e3:void 0,isArchived:!!e.is_archived,workspace:e.workspace||void 0,messages:[]}}const T=S(()=>y.value.map(ht));function R(e){return`${e.profile||"default"}\0${e.id}`}function be(){b.value||(x.value=!x.value,x.value||(v.value.clear(),V.value=!1))}function X(e){if(b.value)return;const t=R(e);v.value.has(t)?v.value.delete(t):v.value.add(t),v.value=new Set(v.value),v.value.size===0&&(V.value=!1)}function Me(e){return v.value.has(R(e))}function gt(){if(!b.value){if(Ce.value){v.value.clear(),v.value=new Set(v.value),V.value=!1;return}v.value.clear();for(const e of T.value)v.value.add(R(e));v.value=new Set(v.value)}}const xe=S(()=>v.value.size),_t=S(()=>T.value.length>0),Ce=S(()=>T.value.length>0&&v.value.size===T.value.length);function Be(e){return e==="api_server"?-1:e==="cron"?999:0}function Pe(e){return[...e].sort((t,s)=>(s.updatedAt||0)-(t.updatedAt||0))}const le=S(()=>Pe(T.value.filter(e=>D.isPinned(e.id)))),Q=S(()=>{const e=new Map;for(const t of T.value){if(D.isPinned(t.id))continue;const s=t.source||"";e.has(s)||e.set(s,[]),e.get(s).push(t)}return[...new Set([...e.keys(),...Object.keys(L.value).filter(t=>L.value[t])])].sort((t,s)=>{const o=Be(t),i=Be(s);return o!==i?o-i:t.localeCompare(s)}).map(t=>{const s=Pe(e.get(t)||[]);return{source:t,label:t?Oe(t):l("chat.other"),sessions:s,hasMore:!!L.value[t],loading:!!N.value[t]}})});async function wt(e){if(N.value[e]||!L.value[e])return;const t=q,s=I.value[e]||0;N.value={...N.value,[e]:!0};try{const o=await Qt(e,s,ce,pe.value);if(t!==q)return;const i=new Map(y.value.map(d=>[`${d.profile||"default"}\0${d.id}`,d]));for(const d of o.sessions)i.set(`${d.profile||"default"}\0${d.id}`,d);y.value=[...i.values()],I.value={...I.value,[e]:s+o.sessions.length},L.value={...L.value,[e]:o.sessions.length>0&&o.hasMore}}catch(o){console.error(`Failed to load more ${e} sessions:`,o)}finally{t===q&&(N.value={...N.value,[e]:!1})}}function mt(e){if(!p.value.has(e))p.value=new Set([...p.value,e]);else{p.value=new Set(Q.value.map(s=>s.source).filter(s=>s!==e));const t=Q.value.find(s=>s.source===e);t?.sessions.length&&Y(t.sessions[0].id,t.sessions[0].profile)}localStorage.setItem("hermes_collapsed_groups",JSON.stringify([...p.value]))}G(Q,e=>{if(localStorage.getItem("hermes_collapsed_groups")!==null){const t=r.value?.source;t&&p.value.has(t)&&(p.value=new Set([...p.value].filter(s=>s!==t)),localStorage.setItem("hermes_collapsed_groups",JSON.stringify([...p.value])));return}e.length>0&&(p.value=new Set(e.slice(1).map(t=>t.source)),localStorage.setItem("hermes_collapsed_groups",JSON.stringify([...p.value])))},{once:!0}),G(j,e=>{e&&y.value.length>0&&!O.value&&Z(!1)},{once:!0});const yt=S(()=>r.value?.title||l("chat.newChat")),Ae=S(()=>r.value?.source||"");async function Ie(e){const t=e||h.value;t&&(await De(t)?_.success(l("common.copied")):_.error(l("common.copied")+" ✗"))}function St(e){return r.value?.id===e?r.value.profile||null:H(e)?.profile||null}function kt(e,t){const s=P.resolve({name:"hermes.historySession",params:{sessionId:e},query:t?{profile:t}:void 0}).href;return`${window.location.origin}${window.location.pathname}${s}`}async function bt(e){const t=e||h.value;t&&(await De(kt(t,St(t)))?_.success(l("common.copied")):_.error(l("common.copied")+" ✗"))}function He(e,t){e.preventDefault(),C.value=t,W.value=!0,ge.value=e.clientX,_e.value=e.clientY}function Mt(){W.value=!1}async function xt(e){const t=H(e);try{const s=await es(e,t?.profile||null);if(s.ok){_.success(l(s.imported?"chat.importSessionSuccess":"chat.importSessionAlreadyExists")),await F();return}}catch{}_.error(l("chat.importSessionFailed"))}async function Ct(e){if(W.value=!1,!!C.value){if(e==="pin")D.togglePinned(C.value);else if(e==="copy-link")await bt(C.value);else if(e==="copy-id")await Ie(C.value);else if(e==="import-webui")await xt(C.value);else if(e==="unarchive"){if(!oe.value?.is_archived)return;if(!await jt(C.value)){_.error(l("chat.unarchiveSessionFailed"));return}_.success(l("chat.sessionUnarchived")),await F(),H(C.value)||(h.value=null,r.value=null,await P.replace({name:"hermes.history"}),await Z(!0))}}}async function Te(e,t){const s=H(e);if(!await Wt(e,t||s?.profile||null)){_.error(l("common.deleteFailed"));return}if(D.removePinned(e),y.value=y.value.filter(o=>o.id!==e),s?.source&&I.value[s.source]&&(I.value={...I.value,[s.source]:Math.max(0,I.value[s.source]-1)}),h.value===e){h.value=null,r.value=null;const o=T.value[0];o?await Y(o.id,o.profile):await P.replace({name:"hermes.history"})}_.success(l("chat.sessionDeleted"))}async function Bt(){if(v.value.size===0||b.value)return;const e=new Map(T.value.map(o=>[R(o),o])),t=Array.from(v.value).map(o=>e.get(o)).filter(o=>!!o).map(o=>({id:o.id,profile:o.profile||null}));if(t.length===0)return;const s=r.value?v.value.has(R(r.value)):!1;b.value=!0;try{const o=await Xt(t);if(o.deleted>0){for(const i of t)D.removePinned(i.id);await F(),(s||h.value&&!H(h.value))&&(h.value=null,r.value=null,await Z(!0)),_.success(l("chat.batchDeleteSuccess",{count:o.deleted})),o.failed>0&&_.warning(l("chat.batchDeletePartial",{failed:o.failed}))}else _.error(l("chat.batchDeleteFailed"))}catch{_.error(l("chat.batchDeleteFailed"))}finally{b.value=!1,V.value=!1,x.value=!1,v.value.clear()}}function Pt(){return Bt(),!1}return(e,t)=>(c(),M("div",Ne,[a("div",{class:te(["session-backdrop",{active:w.value}]),onClick:t[0]||(t[0]=s=>w.value=!1)},null,2),a("aside",{class:te(["session-list",{collapsed:!w.value}])},[w.value?(c(),M("div",Ve,[A(vs,{active:"history","primary-label":n(l)("chat.newChat"),"hide-mode-switch":"",onPrimary:rt},null,8,["primary-label"]),a("div",qe,[a("span",Fe,m(n(l)("chat.hermesHistory")),1),a("div",ze,[a("button",{class:"session-close-btn",onClick:t[1]||(t[1]=s=>w.value=!1)},[...t[6]||(t[6]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),a("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])]),x.value?k("",!0):(c(),B(n($),{key:0,quaternary:"",size:"tiny",disabled:y.value.length===0,title:n(l)("chat.toggleBatchMode"),onClick:be},{icon:g(()=>[...t[7]||(t[7]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("path",{d:"M9 11l3 3L22 4"}),a("path",{d:"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"})],-1)])]),_:1},8,["disabled","title"])),x.value?(c(),B(n($),{key:1,quaternary:"",size:"tiny",disabled:!_t.value||b.value,title:Ce.value?n(l)("common.cancel"):n(l)("chat.selectAll"),onClick:gt},{icon:g(()=>[...t[8]||(t[8]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("path",{d:"M9 11l3 3L22 4"}),a("path",{d:"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"})],-1)])]),_:1},8,["disabled","title"])):k("",!0),x.value&&xe.value>0?(c(),B(n(At),{key:2,show:V.value,"onUpdate:show":t[2]||(t[2]=s=>V.value=s),"positive-button-props":{loading:b.value,disabled:b.value},"negative-button-props":{disabled:b.value},onPositiveClick:Pt},{trigger:g(()=>[A(n($),{quaternary:"",size:"tiny",type:"error",loading:b.value,disabled:b.value},{icon:g(()=>[...t[9]||(t[9]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("polyline",{points:"3 6 5 6 21 6"}),a("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)])]),_:1},8,["loading","disabled"])]),default:g(()=>[ee(" "+m(n(l)("chat.confirmBatchDelete",{count:xe.value})),1)]),_:1},8,["show","positive-button-props","negative-button-props"])):k("",!0),x.value?(c(),B(n($),{key:3,quaternary:"",size:"tiny",disabled:b.value,onClick:be},{icon:g(()=>[...t[10]||(t[10]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[a("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),a("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])]),_:1},8,["disabled"])):k("",!0)])])])):k("",!0),w.value?(c(),M("div",Ee,[se.value&&y.value.length===0?(c(),M("div",Re,m(n(l)("common.loading")),1)):y.value.length===0?(c(),M("div",Ge,m(n(l)("chat.noSessions")),1)):k("",!0),le.value.length>0?(c(),M(J,{key:2},[a("div",Je,[a("span",Ue,m(n(l)("chat.pinned")),1),a("span",je,m(le.value.length),1)]),(c(!0),M(J,null,ne(le.value,s=>(c(),B(Le,{key:`pinned-${s.id}`,session:s,active:s.id===h.value,pinned:!0,"can-delete":!0,streaming:!1,selectable:x.value,selected:Me(s),"show-profile":!0,onSelect:o=>x.value?X(s):Y(s.id,s.profile),onContextmenu:o=>He(o,s.id),onDelete:o=>Te(s.id,s.profile),onToggleSelect:o=>X(s)},null,8,["session","active","selectable","selected","onSelect","onContextmenu","onDelete","onToggleSelect"]))),128))],64)):k("",!0),(c(!0),M(J,null,ne(Q.value,s=>(c(),M(J,{key:s.source},[a("div",{class:"session-group-header",onClick:o=>mt(s.source)},[(c(),M("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",class:te(["group-chevron",{collapsed:p.value.has(s.source)}])},[...t[11]||(t[11]=[a("polyline",{points:"9 18 15 12 9 6"},null,-1)])],2)),a("span",We,m(s.label),1),a("span",Ye,m(s.sessions.length)+m(s.hasMore?"+":""),1),s.hasMore?(c(),B(n(re),{key:0,trigger:"hover"},{trigger:g(()=>[A(n($),{class:"session-group-load-more",quaternary:"",circle:"",size:"tiny",loading:s.loading,disabled:s.loading,"aria-label":s.loading?n(l)("common.loading"):n(l)("chat.loadMoreSessions"),onClick:Et(o=>wt(s.source),["stop"])},{icon:g(()=>[...t[12]||(t[12]=[a("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8"},[a("path",{d:"M20 11a8 8 0 1 0-2.34 5.66"}),a("polyline",{points:"20 4 20 11 13 11"})],-1)])]),_:1},8,["loading","disabled","aria-label","onClick"])]),default:g(()=>[ee(" "+m(s.loading?n(l)("common.loading"):n(l)("chat.loadMoreSessions")),1)]),_:2},1024)):k("",!0)],8,Ke),p.value.has(s.source)?k("",!0):(c(!0),M(J,{key:0},ne(s.sessions,o=>(c(),B(Le,{key:o.id,session:o,active:o.id===h.value,pinned:!1,"can-delete":!0,streaming:!1,selectable:x.value,selected:Me(o),"show-profile":!0,onSelect:i=>x.value?X(o):Y(o.id,o.profile),onContextmenu:i=>He(i,o.id),onDelete:i=>Te(o.id,o.profile),onToggleSelect:i=>X(o)},null,8,["session","active","selectable","selected","onSelect","onContextmenu","onDelete","onToggleSelect"]))),128))],64))),128))])):k("",!0),w.value?(c(),B(gs,{key:2})):k("",!0)],2),A(n(Tt),{placement:"bottom-start",trigger:"manual",x:ge.value,y:_e.value,options:ct.value,show:W.value,onSelect:Ct,onClickoutside:Mt},null,8,["x","y","options","show"]),a("div",{class:te(["chat-main",{"chat-main--sidebar-collapsed":!w.value}])},[a("header",Ze,[a("div",Xe,[A(n($),{class:"history-sidebar-toggle",quaternary:"",size:"small",onClick:t[3]||(t[3]=s=>w.value=!w.value),circle:""},{icon:g(()=>[...t[13]||(t[13]=[a("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[a("rect",{x:"3",y:"3",width:"7",height:"7"}),a("rect",{x:"14",y:"3",width:"7",height:"7"}),a("rect",{x:"3",y:"14",width:"7",height:"7"}),a("rect",{x:"14",y:"14",width:"7",height:"7"})],-1)])]),_:1}),a("span",Qe,m(yt.value),1),Ae.value?(c(),M("span",et,m(n(Oe)(Ae.value)),1)):k("",!0),r.value?.workspace?(c(),M("span",{key:1,class:"workspace-badge",title:r.value.workspace},"📁 "+m(r.value.workspace.split("/").pop()||r.value.workspace),9,tt)):k("",!0)]),a("div",st,[A(n(re),{trigger:"hover"},{trigger:g(()=>[A(n($),{quaternary:"",size:"small",onClick:t[4]||(t[4]=s=>K.value=!K.value),circle:""},{icon:g(()=>[...t[14]||(t[14]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[a("path",{d:"M3 12h18M3 6h18M3 18h18"})],-1)])]),_:1})]),default:g(()=>[ee(" "+m(n(l)("chat.outlineTitle")),1)]),_:1}),A(n(re),{trigger:"hover"},{trigger:g(()=>[A(n($),{quaternary:"",size:"small",onClick:t[5]||(t[5]=s=>Ie()),circle:""},{icon:g(()=>[...t[15]||(t[15]=[a("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[a("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),a("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})],-1)])]),_:1})]),default:g(()=>[ee(" "+m(n(l)("chat.copySessionId")),1)]),_:1})])]),a("div",ot,[a("div",at,[(c(),B(ps,{key:r.value?.id||"history-empty",ref_key:"historyMessageListRef",ref:he,session:r.value,"load-older":pt,"scroll-scope":"history"},null,8,["session"]))]),K.value&&r.value?(c(),B(cs,{key:0,messages:r.value.messages||[],onNavigate:nt},null,8,["messages"])):k("",!0)])],2)]))}})})),_s=de((()=>{})),ws,ms=de((()=>{it(),it(),_s(),Ft(),ws=Ut(lt,[["__scopeId","data-v-a99249f5"]])}));ms();export{ws as default};
@@ -1 +1 @@
1
- import{$i as c,$t as h,Di as F,Hi as u,M as T,Nr as q,Pr as A,Sa as b,Ti as _,Zt as L,_a as i,bi as d,gi as y,gt as $,n as j,si as D,t as N,ua as G,wa as m,wi as w}from"./index-DnjQJzX4.js";import{a as I,o as V,r as z}from"./highlight-DwtBT6t1.js";var g,k,C,x,S=m((()=>{D(),T(),q(),I(),g={class:"html-preview"},k=["srcdoc","title"],C=["innerHTML"],x=F({__name:"HtmlFilePreview",props:{content:{}},setup(H){const p=H,{t:r}=A(),v=$(),a=G("preview");function P(s){const e=new DOMParser().parseFromString(s,"text/html");e.querySelectorAll("script, iframe, frame, frameset, object, embed, applet, form, base").forEach(t=>t.remove()),e.querySelectorAll("meta[http-equiv]").forEach(t=>t.remove()),e.querySelectorAll("*").forEach(t=>{for(const o of[...t.attributes]){const l=o.name.toLowerCase();(l.startsWith("on")||["href","srcset","action","formaction","xlink:href"].includes(l)||l==="src"&&!/^(?:data:|blob:)/i.test(o.value.trim()))&&t.removeAttribute(o.name)}});const n=e.createElement("meta");n.httpEquiv="Content-Security-Policy",n.content="default-src 'none'; script-src 'none'; connect-src 'none'; img-src data: blob:; style-src 'unsafe-inline'; font-src data:; media-src data: blob:; frame-src 'none'; child-src 'none'; object-src 'none'; form-action 'none'; base-uri 'none'; navigate-to 'none'";const f=e.createElement("style");return f.textContent="html, body { scrollbar-width: none; } html::-webkit-scrollbar, body::-webkit-scrollbar, *::-webkit-scrollbar { display: none; width: 0; height: 0; }",e.head.prepend(n),e.head.append(f),`<!doctype html>${e.documentElement.outerHTML}`}const M=y(()=>P(p.content)),B=y(()=>V(p.content,"html",r("common.copy"),{maxHighlightLength:5e5}));async function E(s){const e=await z(s);e?v.success(r("common.copied")):e===!1&&v.error(r("chat.copyFailed"))}return(s,e)=>(u(),d("div",g,[_(i(L),{size:"small",class:"mode-switch"},{default:c(()=>[_(i(h),{type:a.value==="preview"?"primary":"default",onClick:e[0]||(e[0]=n=>a.value="preview")},{default:c(()=>[w(b(i(r)("files.previewMode")),1)]),_:1},8,["type"]),_(i(h),{type:a.value==="source"?"primary":"default",onClick:e[1]||(e[1]=n=>a.value="source")},{default:c(()=>[w(b(i(r)("files.sourceMode")),1)]),_:1},8,["type"])]),_:1}),a.value==="preview"?(u(),d("iframe",{key:0,class:"html-frame",sandbox:"",referrerpolicy:"no-referrer",srcdoc:M.value,title:i(r)("files.htmlPreviewTitle")},null,8,k)):(u(),d("div",{key:1,class:"source-view",innerHTML:B.value,onClick:E},null,8,C))]))}})})),O=m((()=>{})),Q,W=m((()=>{S(),S(),O(),j(),Q=N(x,[["__scopeId","data-v-b217d2f2"]])}));W();export{Q as default};
1
+ import{$i as c,$t as h,Di as F,Hi as u,M as T,Nr as q,Pr as A,Sa as b,Ti as _,Zt as L,_a as i,bi as d,gi as y,gt as $,n as j,si as D,t as N,ua as G,wa as m,wi as w}from"./index-DN4SafrP.js";import{a as I,o as V,r as z}from"./highlight-C4yUBxwQ.js";var g,k,C,x,S=m((()=>{D(),T(),q(),I(),g={class:"html-preview"},k=["srcdoc","title"],C=["innerHTML"],x=F({__name:"HtmlFilePreview",props:{content:{}},setup(H){const p=H,{t:r}=A(),v=$(),a=G("preview");function P(s){const e=new DOMParser().parseFromString(s,"text/html");e.querySelectorAll("script, iframe, frame, frameset, object, embed, applet, form, base").forEach(t=>t.remove()),e.querySelectorAll("meta[http-equiv]").forEach(t=>t.remove()),e.querySelectorAll("*").forEach(t=>{for(const o of[...t.attributes]){const l=o.name.toLowerCase();(l.startsWith("on")||["href","srcset","action","formaction","xlink:href"].includes(l)||l==="src"&&!/^(?:data:|blob:)/i.test(o.value.trim()))&&t.removeAttribute(o.name)}});const n=e.createElement("meta");n.httpEquiv="Content-Security-Policy",n.content="default-src 'none'; script-src 'none'; connect-src 'none'; img-src data: blob:; style-src 'unsafe-inline'; font-src data:; media-src data: blob:; frame-src 'none'; child-src 'none'; object-src 'none'; form-action 'none'; base-uri 'none'; navigate-to 'none'";const f=e.createElement("style");return f.textContent="html, body { scrollbar-width: none; } html::-webkit-scrollbar, body::-webkit-scrollbar, *::-webkit-scrollbar { display: none; width: 0; height: 0; }",e.head.prepend(n),e.head.append(f),`<!doctype html>${e.documentElement.outerHTML}`}const M=y(()=>P(p.content)),B=y(()=>V(p.content,"html",r("common.copy"),{maxHighlightLength:5e5}));async function E(s){const e=await z(s);e?v.success(r("common.copied")):e===!1&&v.error(r("chat.copyFailed"))}return(s,e)=>(u(),d("div",g,[_(i(L),{size:"small",class:"mode-switch"},{default:c(()=>[_(i(h),{type:a.value==="preview"?"primary":"default",onClick:e[0]||(e[0]=n=>a.value="preview")},{default:c(()=>[w(b(i(r)("files.previewMode")),1)]),_:1},8,["type"]),_(i(h),{type:a.value==="source"?"primary":"default",onClick:e[1]||(e[1]=n=>a.value="source")},{default:c(()=>[w(b(i(r)("files.sourceMode")),1)]),_:1},8,["type"])]),_:1}),a.value==="preview"?(u(),d("iframe",{key:0,class:"html-frame",sandbox:"",referrerpolicy:"no-referrer",srcdoc:M.value,title:i(r)("files.htmlPreviewTitle")},null,8,k)):(u(),d("div",{key:1,class:"source-view",innerHTML:B.value,onClick:E},null,8,C))]))}})})),O=m((()=>{})),Q,W=m((()=>{S(),S(),O(),j(),Q=N(x,[["__scopeId","data-v-b217d2f2"]])}));W();export{Q as default};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/js/MarkdownRenderer-CVtmHZwc.js","assets/js/index-DnjQJzX4.js","assets/css/index-IP31leuw.css","assets/js/highlight-DwtBT6t1.js","assets/js/clipboard-DQ_A8ns-.js","assets/js/download-CX8EG48r.js","assets/js/desktop-browser-xrRFPNUg.js","assets/js/file-preview-BvgwVZXh.js","assets/css/MarkdownRenderer-CT6BAAV2.css"])))=>i.map(i=>d[i]);
2
- import{$i as v,$t as R,Bi as lt,Ci as $t,Di as K,Ei as xt,Fr as Ct,G as re,Hi as J,Ir as St,M as oe,Nr as Q,Pr as Z,Qr as nt,Sa as d,Ti as _,Ut as It,Vt as Pt,Wi as it,Zi as Mt,_a as a,_i as i,_t as Nt,ai as Tt,at as Et,bi as N,ei as E,gi as M,gt as rt,hn as Rt,i as Bt,jt as te,mi as O,n as X,oi as Ft,pi as L,r as Ut,rt as U,si as V,sn as ne,t as Y,tt as Dt,ua as x,vi as B,wa as I,wi as S,ya as ie,yi as q,zt as W}from"./index-DnjQJzX4.js";import{r as qt,t as At}from"./profiles-D-vlI-Ec.js";import{l as Ht,s as Ot}from"./skills-DC-UPcXj.js";function z(e){const o=e?.job;if(!o||typeof o!="object"||!String(o.job_id||o.id||"").trim())throw new Error("Job response did not include a valid job");return o}function ut(e){return typeof e=="object"&&e!==null}function ae(e,o=""){if(typeof e=="string")return e;if(!ut(e))return o;if(e.kind==="cron")return e.expr||e.display||o;if(e.kind==="once")return e.run_at||e.display||o;if(e.kind==="interval")return e.display||(typeof e.minutes=="number"?`every ${e.minutes}m`:o);const t=e;return t.expr||t.run_at||t.display||o}function Vt(e,o="—"){if(typeof e=="string")return e;if(!ut(e))return o;if(e.kind==="cron")return e.expr||e.display||o;if(e.kind==="interval"||e.kind==="once")return e.display||ae(e,o);const t=e;return t.display||t.expr||t.run_at||o}function dt(e){return e&&typeof e=="object"?e.times??null:null}function zt(e,o){const t={},g=ae(e.schedule,e.schedule_display||""),r=dt(e.repeat),w=e.deliver||"origin",p=e.skills||(e.skill?[e.skill]:[]),b=e.model||"",y=e.provider||"";return o.name!==e.name&&(t.name=o.name),o.schedule!==g&&(t.schedule=o.schedule),o.prompt!==(e.prompt||"")&&(t.prompt=o.prompt),o.deliver!==w&&(t.deliver=o.deliver),(o.skills.length!==p.length||o.skills.some((c,j)=>c!==p[j]))&&(t.skills=o.skills),o.repeat_times!==r&&(t.repeat=o.repeat_times),o.model!==b&&(t.model=o.model),o.provider!==y&&(t.provider=o.provider),t}async function Lt(){return(await E("/api/hermes/jobs?include_disabled=true")).jobs}async function Wt(){return E("/api/hermes/jobs/delivery-targets")}async function Gt(e){return z(await E(`/api/hermes/jobs/${e}`))}async function Kt(e){return z(await E("/api/hermes/jobs",{method:"POST",body:JSON.stringify(e)}))}async function Qt(e,o){return z(await E(`/api/hermes/jobs/${e}`,{method:"PATCH",body:JSON.stringify(o)}))}async function Zt(e){return E(`/api/hermes/jobs/${e}`,{method:"DELETE"})}async function Xt(e){return z(await E(`/api/hermes/jobs/${e}/pause`,{method:"POST"}))}async function Yt(e){return z(await E(`/api/hermes/jobs/${e}/resume`,{method:"POST"}))}async function ea(e){return z(await E(`/api/hermes/jobs/${e}/run`,{method:"POST"}))}var ue=I((()=>{nt()}));function G(e,o){return e.job_id===o||e.id===o}var ee,se=I((()=>{Ft(),V(),ue(),ee=Tt("jobs",()=>{const e=x([]),o=x(!1);async function t(){o.value=!0;try{e.value=await Lt()}catch(c){console.error("Failed to fetch jobs:",c)}finally{o.value=!1}}async function g(c){const j=await Kt(c);return e.value.unshift(j),j}async function r(c,j){const m=await Qt(c,j),$=e.value.findIndex(f=>G(f,c));return $!==-1&&(e.value[$]=m),m}async function w(c){await Zt(c),e.value=e.value.filter(j=>!G(j,c))}async function p(c){const j=await Xt(c),m=e.value.findIndex($=>G($,c));m!==-1&&(e.value[m]=j)}async function b(c){const j=await Yt(c),m=e.value.findIndex($=>G($,c));m!==-1&&(e.value[m]=j)}async function y(c){const j=await ea(c),m=e.value.findIndex($=>G($,c));m!==-1&&(e.value[m]=j)}return{jobs:e,loading:o,fetchJobs:t,createJob:g,updateJob:r,deleteJob:w,pauseJob:p,resumeJob:b,runJob:y}})})),de,ce,ve,pe,be,_e,fe,me,ye,je,he,ge,we,Je,ke,$e,xe,Ce,Se,Ie,Pe,Me,Ne,Te,Ee,ct,Re=I((()=>{V(),oe(),ue(),se(),Q(),de={class:"card-header"},ce={class:"job-name"},ve={class:"card-body"},pe={class:"info-row"},be={class:"info-label"},_e={class:"info-value mono"},fe={class:"info-row"},me={class:"info-label"},ye={class:"info-value mono"},je={class:"info-row"},he={class:"info-label"},ge={class:"info-value mono"},we={class:"info-row"},Je={class:"info-label"},ke={class:"info-value"},$e={class:"info-row"},xe={class:"info-label"},Ce={class:"info-value"},Se={class:"info-row"},Ie={class:"info-label"},Pe={class:"info-value"},Me={key:0,class:"info-row"},Ne={class:"info-label"},Te={class:"info-value"},Ee={class:"card-actions"},ct=K({__name:"JobCard",props:{job:{},selected:{type:Boolean}},emits:["edit","select"],setup(e,{emit:o}){const t=e,g=o,{t:r}=Z(),w=ee(),p=rt(),b=x(!1),y=M(()=>t.job.job_id||t.job.id),c=M(()=>t.job.state==="running"?r("jobs.status.running"):t.job.state==="paused"?r("jobs.status.paused"):t.job.enabled?r("jobs.status.scheduled"):r("jobs.status.disabled")),j=M(()=>t.job.state==="running"?"info":t.job.state==="paused"?"warning":t.job.enabled?"success":"error"),m=M(()=>Vt(t.job.schedule,t.job.schedule_display||"—")),$=M(()=>t.job.provider||"—"),f=M(()=>t.job.model||"—"),s=h=>h?new Date(h).toLocaleString():"—";async function k(){try{await w.pauseJob(y.value),p.success(r("jobs.jobPaused"))}catch(h){p.error(h.message)}}async function P(){try{await w.resumeJob(y.value),p.success(r("jobs.jobResumed"))}catch(h){p.error(h.message)}}async function F(){if(!b.value){b.value=!0;try{await w.runJob(y.value),p.info(r("jobs.jobTriggered"))}catch(h){p.error(h.message)}finally{b.value=!1}}}async function T(){try{await w.deleteJob(y.value),p.success(r("jobs.jobDeleted"))}catch(h){p.error(h.message)}}function A(h){h.target.closest(".card-actions")||g("select",y.value)}return(h,C)=>(J(),N("div",{class:ie(["job-card",{selected:e.selected}]),onClick:A},[i("div",de,[i("h3",ce,d(e.job.name),1),i("span",{class:ie(["status-badge",j.value])},d(c.value),3)]),i("div",ve,[i("div",pe,[i("span",be,d(a(r)("jobs.info.schedule")),1),i("code",_e,d(m.value),1)]),i("div",fe,[i("span",me,d(a(r)("jobs.info.provider")),1),i("span",ye,d($.value),1)]),i("div",je,[i("span",he,d(a(r)("jobs.info.model")),1),i("span",ge,d(f.value),1)]),i("div",we,[i("span",Je,d(a(r)("jobs.info.lastRun")),1),i("span",ke,[S(d(s(e.job.last_run_at))+" ",1),e.job.last_status?(J(),N("span",{key:0,class:ie(["run-status",{ok:e.job.last_status==="ok",err:e.job.last_status!=="ok"}])},d(e.job.last_status==="ok"?a(r)("common.ok"):e.job.last_status),3)):q("",!0)])]),i("div",$e,[i("span",xe,d(a(r)("jobs.info.nextRun")),1),i("span",Ce,d(s(e.job.next_run_at)),1)]),i("div",Se,[i("span",Ie,d(a(r)("jobs.info.deliver")),1),i("span",Pe,[S(d(e.job.deliver),1),e.job.origin?(J(),N(O,{key:0},[S(" ("+d(e.job.origin.platform)+")",1)],64)):q("",!0)])]),e.job.repeat?(J(),N("div",Me,[i("span",Ne,d(a(r)("jobs.info.repeat")),1),i("span",Te,[typeof e.job.repeat=="string"?(J(),N(O,{key:0},[S(d(e.job.repeat),1)],64)):(J(),N(O,{key:1},[S(d(e.job.repeat.completed)+" / "+d(e.job.repeat.times??"∞"),1)],64))])])):q("",!0)]),i("div",Ee,[e.job.state!=="paused"&&e.job.enabled?(J(),B(a(te),{key:0},{trigger:v(()=>[_(a(R),{size:"tiny",quaternary:"",onClick:L(k,["stop"])},{default:v(()=>[S(d(a(r)("jobs.action.pause")),1)]),_:1})]),default:v(()=>[S(" "+d(a(r)("jobs.action.pauseJob")),1)]),_:1})):e.job.state==="paused"?(J(),B(a(te),{key:1},{trigger:v(()=>[_(a(R),{size:"tiny",quaternary:"",onClick:L(P,["stop"])},{default:v(()=>[S(d(a(r)("jobs.action.resume")),1)]),_:1})]),default:v(()=>[S(" "+d(a(r)("jobs.action.resumeJob")),1)]),_:1})):q("",!0),_(a(R),{size:"tiny",quaternary:"",loading:b.value,disabled:b.value,onClick:L(F,["stop"])},{default:v(()=>[S(d(a(r)("jobs.action.runNow")),1)]),_:1},8,["loading","disabled"]),_(a(R),{size:"tiny",quaternary:"",onClick:C[0]||(C[0]=L(H=>g("edit",y.value),["stop"]))},{default:v(()=>[S(d(a(r)("common.edit")),1)]),_:1}),_(a(R),{size:"tiny",quaternary:"",type:"error",onClick:L(T,["stop"])},{default:v(()=>[S(d(a(r)("common.delete")),1)]),_:1})])],2))}})})),ta=I((()=>{})),vt,aa=I((()=>{Re(),Re(),ta(),X(),vt=Y(ct,[["__scopeId","data-v-e4bc1784"]])})),Be,Fe,pt,Ue=I((()=>{V(),aa(),se(),Q(),Be={key:0,class:"empty-state"},Fe={key:1,class:"jobs-grid"},pt=K({__name:"JobsPanel",props:{selectedJobId:{},sortBy:{},sortAsc:{type:Boolean}},emits:["edit","select"],setup(e,{emit:o}){const t=e,g=o,{t:r}=Z(),w=ee(),p=M(()=>{const c=[...w.jobs],j=t.sortBy,m=t.sortAsc;return j==="name"?c.sort(($,f)=>$.name.localeCompare(f.name,"zh-CN")*(m?1:-1)):m||c.reverse(),c});function b(c){g("select",t.selectedJobId===c?null:c)}function y(){t.selectedJobId&&g("select",null)}return(c,j)=>(J(),N(O,null,[a(w).jobs.length===0?(J(),N("div",Be,[j[0]||(j[0]=$t('<svg width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" class="empty-icon" data-v-6bf5dbff><rect x="3" y="4" width="18" height="18" rx="2" ry="2" data-v-6bf5dbff></rect><line x1="16" y1="2" x2="16" y2="6" data-v-6bf5dbff></line><line x1="8" y1="2" x2="8" y2="6" data-v-6bf5dbff></line><line x1="3" y1="10" x2="21" y2="10" data-v-6bf5dbff></line></svg>',1)),i("p",null,d(a(r)("jobs.noJobs")),1)])):(J(),N("div",Fe,[(J(!0),N(O,null,it(p.value,m=>(J(),B(vt,{key:m.id,job:m,selected:e.selectedJobId===(m.job_id||m.id),onEdit:$=>g("edit",m.id),onSelect:b},null,8,["job","selected","onEdit"]))),128))])),e.selectedJobId?(J(),N("div",{key:2,class:"deselect-overlay",onClick:y})):q("",!0)],64))}})})),oa=I((()=>{})),bt,sa=I((()=>{Ue(),Ue(),oa(),X(),bt=Y(pt,[["__scopeId","data-v-6bf5dbff"]])}));async function la(e){const o=new URLSearchParams;e&&o.set("jobId",e);const t=o.toString();return(await E(`/api/cron-history${t?`?${t}`:""}`)).runs}async function na(e,o){return E(`/api/cron-history/${encodeURIComponent(e)}/${encodeURIComponent(o)}`)}var ia=I((()=>{nt()})),De,qe,Ae,He,Oe,Ve,_t,ze=I((()=>{V(),oe(),Q(),ia(),St(),De={class:"run-history"},qe={class:"history-header"},Ae={class:"history-title"},He={class:"history-count"},Oe={class:"history-body"},Ve={class:"run-meta"},_t=K({__name:"JobRunHistory",props:{selectedJobId:{},jobNameMap:{},profileKey:{}},setup(e){const o=xt(async()=>(await Ct(async()=>{const{default:f}=await import("./MarkdownRenderer-CVtmHZwc.js");return{default:f}},__vite__mapDeps([0,1,2,3,4,5,6,7,8]))).default),t=e,{t:g}=Z(),r=x(!1),w=x([]),p=x({}),b=x({}),y=M(()=>t.selectedJobId?w.value.filter(f=>f.jobId===t.selectedJobId):w.value);async function c(){r.value=!0;try{w.value=await la(t.selectedJobId??void 0)}catch(f){console.error("Failed to fetch cron runs:",f),w.value=[]}finally{r.value=!1}}async function j(f){const s=Array.isArray(f)?f:f!=null?[f]:[];for(const k of s){const P=String(k);if(p.value[P]||b.value[P])continue;const F=y.value.find(T=>`${T.jobId}/${T.fileName}`===P);if(F){b.value[P]=!0;try{const T=await na(F.jobId,F.fileName);p.value[P]=T.content}catch{p.value[P]="[Error loading content]"}finally{b.value[P]=!1}}}}function m(f){return f<1024?`${f}B`:f<1024*1024?`${(f/1024).toFixed(1)}KB`:`${(f/1024/1024).toFixed(1)}MB`}function $(f){return t.jobNameMap[f]||f}return Mt(()=>[t.selectedJobId,t.profileKey],()=>{p.value={},c()},{immediate:!0}),(f,s)=>(J(),N("div",De,[i("div",qe,[i("span",Ae,d(a(g)("jobs.runHistory.title")),1),i("span",He,d(y.value.length)+" "+d(a(g)("jobs.runHistory.runs")),1)]),i("div",Oe,[_(a(re),{show:r.value},{default:v(()=>[!r.value&&y.value.length===0?(J(),B(a(Rt),{key:0,description:a(g)("jobs.runHistory.noRuns")},null,8,["description"])):(J(),B(a(It),{key:1,accordion:"","onUpdate:expandedNames":j},{default:v(()=>[(J(!0),N(O,null,it(y.value,k=>(J(),B(a(Pt),{key:`${k.jobId}/${k.fileName}`,title:`${$(k.jobId)} — ${k.runTime}`,name:`${k.jobId}/${k.fileName}`},{"header-extra":v(()=>[i("span",Ve,d(m(k.size)),1)]),default:v(()=>[b.value[`${k.jobId}/${k.fileName}`]?(J(),B(a(re),{key:0,size:"small"})):p.value[`${k.jobId}/${k.fileName}`]?(J(),B(a(o),{key:1,content:p.value[`${k.jobId}/${k.fileName}`]},null,8,["content"])):q("",!0)]),_:2},1032,["title","name"]))),128))]),_:1}))]),_:1},8,["show"])])]))}})})),ra=I((()=>{})),ft,ua=I((()=>{ze(),ze(),ra(),X(),ft=Y(_t,[["__scopeId","data-v-5da60fa5"]])})),Le,mt,We=I((()=>{V(),oe(),se(),Ut(),ue(),Ht(),Q(),Le={class:"modal-footer"},mt=K({__name:"JobFormModal",props:{jobId:{}},emits:["close","saved"],setup(e,{emit:o}){const{t}=Z(),g=e,r=o,w=ee(),p=Bt(),b=rt(),y=x(!0),c=x(!1),j=x(!1),m=x([]),$=x(!1),f=x([]),s=x({name:"",schedule:"",prompt:"",deliver:"local",skills:[],repeat_times:null,provider:"",model:""}),k=x(null),P=M(()=>!!g.jobId),F=M(()=>[{label:t("jobs.presetEveryMinute"),value:"* * * * *"},{label:t("jobs.presetEvery5Min"),value:"*/5 * * * *"},{label:t("jobs.presetEveryHour"),value:"0 * * * *"},{label:t("jobs.presetEveryDay"),value:"0 0 * * *"},{label:t("jobs.presetEveryDay9"),value:"0 9 * * *"},{label:t("jobs.presetEveryMonday"),value:"0 9 * * 1"},{label:t("jobs.presetEveryMonth"),value:"0 9 1 * *"}]),T=M(()=>{const l=[{label:t("jobs.defaultProvider"),value:""},...p.modelGroups.filter(n=>n.models.length>0).map(n=>({label:n.label||n.provider,value:n.provider}))];return s.value.provider&&!l.some(n=>n.value===s.value.provider)&&l.push({label:s.value.provider,value:s.value.provider}),l}),A=M(()=>{const l=s.value.provider;if(!l)return[{label:t("jobs.defaultModel"),value:""}];const n=p.modelGroups.find(D=>D.provider===l)?.models||[],u=n.map(D=>({label:p.displayModelName(D,l),value:D}));return s.value.model&&!n.includes(s.value.model)&&u.unshift({label:p.displayModelName(s.value.model,l),value:s.value.model}),u});function h(l){if(s.value.provider=l,!l){s.value.model="";return}const n=p.modelGroups.find(u=>u.provider===l);n?.models.includes(s.value.model)||(s.value.model=n?.models[0]||"")}const C=M(()=>{const l=[{label:t("jobs.local"),value:"local"}];s.value.deliver==="origin"&&l.unshift({label:t("jobs.origin"),value:"origin"});for(const u of f.value){const D=u.type?` (${u.type})`:"";l.push({label:`${H(u.platform)} · ${u.name}${D}`,value:u.value})}const n=s.value.deliver.trim();return n&&!l.some(u=>u.value===n)&&l.push({label:n,value:n}),l});function H(l){return{weixin:"WeChat",wecom:"WeCom",qqbot:"QQBot",whatsapp:"WhatsApp",whatsapp_cloud:"WhatsApp Cloud",dingtalk:"DingTalk",feishu:"Feishu"}[l]||l.split("_").filter(Boolean).map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}const le=x(null);function ht(l){const n=new Map;for(const u of l)u.enabled!==!1&&(n.has(u.name)||n.set(u.name,u));return[...n.values()].map(u=>({label:u.name,value:u.name})).sort((u,D)=>u.label.localeCompare(D.label))}async function gt(){j.value=!0;try{m.value=ht((await Ot()).categories.flatMap(l=>l.skills||[]))}catch{m.value=[]}finally{j.value=!1}}async function wt(){$.value=!0;try{const l=await Wt();f.value=Array.isArray(l.targets)?l.targets:[]}catch{f.value=[]}finally{$.value=!1}}lt(async()=>{if(await Promise.all([p.loadModels(),gt(),wt()]),g.jobId)try{const l=await Gt(g.jobId);le.value=l,s.value={name:l.name,schedule:ae(l.schedule,l.schedule_display||""),prompt:l.prompt,deliver:l.deliver||"origin",skills:l.skills||(l.skill?[l.skill]:[]),repeat_times:dt(l.repeat),provider:l.provider||"",model:l.model||""}}catch(l){b.error(t("jobs.loadFailed")+": "+l.message)}});async function Jt(){if(!s.value.name.trim()){b.warning(t("jobs.nameRequired"));return}if(!s.value.schedule.trim()){b.warning(t("jobs.scheduleRequired"));return}if(!s.value.prompt.trim()){b.warning(t("jobs.promptRequired"));return}c.value=!0;try{if(P.value){if(!le.value){b.error(t("jobs.loadFailed"));return}const l=zt(le.value,s.value);if(Object.keys(l).length===0){b.success(t("jobs.jobUpdated")),r("saved");return}await w.updateJob(g.jobId,l),b.success(t("jobs.jobUpdated"))}else{const l={name:s.value.name,schedule:s.value.schedule,prompt:s.value.prompt,deliver:s.value.deliver,skills:s.value.skills,repeat:s.value.repeat_times??void 0,provider:s.value.provider||void 0,model:s.value.model||void 0};await w.createJob(l),b.success(t("jobs.jobCreated"))}r("saved")}catch(l){b.error(l.message)}finally{c.value=!1}}function kt(){y.value=!1,setTimeout(()=>r("close"),200)}return(l,n)=>(J(),B(a(Nt),{show:y.value,"onUpdate:show":n[9]||(n[9]=u=>y.value=u),preset:"card",title:P.value?a(t)("jobs.editJob"):a(t)("jobs.createJob"),style:{width:"min(520px, calc(100vw - 32px))"},"mask-closable":!c.value,onAfterLeave:n[10]||(n[10]=u=>r("close"))},{footer:v(()=>[i("div",Le,[_(a(R),{onClick:kt},{default:v(()=>[S(d(a(t)("common.cancel")),1)]),_:1}),_(a(R),{type:"primary",loading:c.value,onClick:Jt},{default:v(()=>[S(d(P.value?a(t)("common.update"):a(t)("common.create")),1)]),_:1},8,["loading"])])]),default:v(()=>[_(a(Et),{"label-placement":"top"},{default:v(()=>[_(a(U),{label:a(t)("jobs.name"),required:""},{default:v(()=>[_(a(ne),{value:s.value.name,"onUpdate:value":n[0]||(n[0]=u=>s.value.name=u),placeholder:a(t)("jobs.namePlaceholder"),maxlength:"200","show-count":""},null,8,["value","placeholder"])]),_:1},8,["label"]),_(a(U),{label:a(t)("jobs.schedule"),required:""},{default:v(()=>[_(a(ne),{value:s.value.schedule,"onUpdate:value":n[1]||(n[1]=u=>s.value.schedule=u),placeholder:a(t)("jobs.schedulePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),_(a(U),{label:a(t)("jobs.provider")},{default:v(()=>[_(a(W),{value:s.value.provider,options:T.value,"onUpdate:value":h},null,8,["value","options"])]),_:1},8,["label"]),_(a(U),{label:a(t)("jobs.model")},{default:v(()=>[_(a(W),{value:s.value.model,"onUpdate:value":n[2]||(n[2]=u=>s.value.model=u),filterable:"",clearable:"",disabled:!s.value.provider,options:A.value,placeholder:a(t)("jobs.modelPlaceholder")},null,8,["value","disabled","options","placeholder"])]),_:1},8,["label"]),_(a(U),{label:a(t)("jobs.quickPresets")},{default:v(()=>[_(a(W),{value:k.value,"onUpdate:value":[n[3]||(n[3]=u=>k.value=u),n[4]||(n[4]=u=>s.value.schedule=u)],options:F.value,placeholder:a(t)("jobs.selectPreset")},null,8,["value","options","placeholder"])]),_:1},8,["label"]),_(a(U),{label:a(t)("jobs.prompt"),required:""},{default:v(()=>[_(a(ne),{value:s.value.prompt,"onUpdate:value":n[5]||(n[5]=u=>s.value.prompt=u),type:"textarea",placeholder:a(t)("jobs.promptPlaceholder"),rows:4,maxlength:"5000","show-count":""},null,8,["value","placeholder"])]),_:1},8,["label"]),_(a(U),{label:a(t)("jobs.skills")},{default:v(()=>[_(a(W),{value:s.value.skills,"onUpdate:value":n[6]||(n[6]=u=>s.value.skills=u),multiple:"",filterable:"",clearable:"",loading:j.value,options:m.value,placeholder:a(t)("jobs.skillsPlaceholder")},null,8,["value","loading","options","placeholder"])]),_:1},8,["label"]),_(a(U),{label:a(t)("jobs.deliverTarget")},{default:v(()=>[_(a(W),{value:s.value.deliver,"onUpdate:value":n[7]||(n[7]=u=>s.value.deliver=u),options:C.value,loading:$.value,filterable:""},null,8,["value","options","loading"])]),_:1},8,["label"]),_(a(U),{label:a(t)("jobs.repeatCount")},{default:v(()=>[_(a(Dt),{value:s.value.repeat_times,"onUpdate:value":n[8]||(n[8]=u=>s.value.repeat_times=u),min:1,placeholder:a(t)("jobs.repeatPlaceholder"),clearable:"",style:{width:"100%"}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title","mask-closable"]))}})})),da=I((()=>{})),yt,ca=I((()=>{We(),We(),da(),X(),yt=Y(mt,[["__scopeId","data-v-1e2520e0"]])})),Ge,Ke,Qe,Ze,Xe,Ye,et,tt,at,ot,jt,st=I((()=>{V(),oe(),Q(),sa(),ua(),ca(),se(),At(),Ge={class:"jobs-view"},Ke={class:"page-header"},Qe={class:"header-title"},Ze={class:"header-actions"},Xe={class:"sort-toggle"},Ye={class:"sort-arrow"},et={class:"sort-arrow"},tt={class:"jobs-split"},at={class:"jobs-top"},ot={class:"jobs-bottom"},jt=K({__name:"JobsView",setup(e){const{t:o}=Z(),t=ee(),g=qt(),r=x(!1),w=x(null),p=x(null),b=x("name"),y=x(!0),c=M(()=>g.activeProfileName||"default"),j=M(()=>{const h={};for(const C of t.jobs){const H=C.job_id||C.id;h[H]=C.name}return h});async function m(){(!g.activeProfileName||g.profiles.length===0)&&await g.fetchProfiles()}async function $(){p.value=null,t.jobs=[],await m(),await t.fetchJobs()}lt(()=>{$()});function f(){w.value=null,r.value=!0}function s(h){w.value=h,r.value=!0}function k(){r.value=!1,w.value=null}async function P(){await t.fetchJobs(),k()}function F(h){p.value=p.value===h?null:h}function T(h){b.value===h?y.value=!y.value:(b.value=h,y.value=!0)}function A(h){return b.value!==h?"↕":y.value?"↑":"↓"}return(h,C)=>(J(),N("div",Ge,[i("header",Ke,[i("h2",Qe,d(a(o)("jobs.title")),1),i("div",Ze,[i("div",Xe,[_(a(te),null,{trigger:v(()=>[_(a(R),{size:"tiny",type:b.value==="name"?"primary":"default",onClick:C[0]||(C[0]=H=>T("name"))},{default:v(()=>[S(d(a(o)("jobs.sortByName"))+" ",1),i("span",Ye,d(A("name")),1)]),_:1},8,["type"])]),default:v(()=>[S(" "+d(b.value==="name"?y.value?a(o)("jobs.sortAsc"):a(o)("jobs.sortDesc"):a(o)("jobs.sortByNameHint")),1)]),_:1}),_(a(te),null,{trigger:v(()=>[_(a(R),{size:"tiny",type:b.value==="time"?"primary":"default",onClick:C[1]||(C[1]=H=>T("time"))},{default:v(()=>[S(d(a(o)("jobs.sortByTime"))+" ",1),i("span",et,d(A("time")),1)]),_:1},8,["type"])]),default:v(()=>[S(" "+d(b.value==="time"?y.value?a(o)("jobs.sortAsc"):a(o)("jobs.sortDesc"):a(o)("jobs.sortByTimeHint")),1)]),_:1})]),C[3]||(C[3]=i("span",{class:"sort-divider"},null,-1)),_(a(R),{type:"primary",size:"small",onClick:f},{icon:v(()=>[...C[2]||(C[2]=[i("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[i("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),i("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)])]),default:v(()=>[S(" "+d(a(o)("jobs.createJob")),1)]),_:1})])]),i("div",tt,[i("div",at,[_(a(re),{show:a(t).loading&&a(t).jobs.length===0},{default:v(()=>[_(bt,{"selected-job-id":p.value,"sort-by":b.value,"sort-asc":y.value,onEdit:s,onSelect:F},null,8,["selected-job-id","sort-by","sort-asc"])]),_:1},8,["show"])]),C[4]||(C[4]=i("div",{class:"splitter"},null,-1)),i("div",ot,[_(ft,{"selected-job-id":p.value,"job-name-map":j.value,"profile-key":c.value},null,8,["selected-job-id","job-name-map","profile-key"])])]),r.value?(J(),B(yt,{key:0,"job-id":w.value,onClose:k,onSaved:P},null,8,["job-id"])):q("",!0)]))}})})),va=I((()=>{})),pa,ba=I((()=>{st(),st(),va(),X(),pa=Y(jt,[["__scopeId","data-v-8f11f21e"]])}));ba();export{pa as default};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/js/MarkdownRenderer-BIPowjr-.js","assets/js/index-DN4SafrP.js","assets/css/index-IP31leuw.css","assets/js/highlight-C4yUBxwQ.js","assets/js/clipboard-DHZFaAvO.js","assets/js/download-xhRMWMda.js","assets/js/desktop-browser-C6AhY0uu.js","assets/js/file-preview-C417aixJ.js","assets/css/MarkdownRenderer-CT6BAAV2.css"])))=>i.map(i=>d[i]);
2
+ import{$i as v,$t as R,Bi as lt,Ci as $t,Di as K,Ei as xt,Fr as Ct,G as re,Hi as J,Ir as St,M as oe,Nr as Q,Pr as Z,Qr as nt,Sa as d,Ti as _,Ut as It,Vt as Pt,Wi as it,Zi as Mt,_a as a,_i as i,_t as Nt,ai as Tt,at as Et,bi as N,ei as E,gi as M,gt as rt,hn as Rt,i as Bt,jt as te,mi as O,n as X,oi as Ft,pi as L,r as Ut,rt as U,si as V,sn as ne,t as Y,tt as Dt,ua as x,vi as B,wa as I,wi as S,ya as ie,yi as q,zt as W}from"./index-DN4SafrP.js";import{r as qt,t as At}from"./profiles-BK5JKD7h.js";import{l as Ht,s as Ot}from"./skills-a5LPwmiT.js";function z(e){const o=e?.job;if(!o||typeof o!="object"||!String(o.job_id||o.id||"").trim())throw new Error("Job response did not include a valid job");return o}function ut(e){return typeof e=="object"&&e!==null}function ae(e,o=""){if(typeof e=="string")return e;if(!ut(e))return o;if(e.kind==="cron")return e.expr||e.display||o;if(e.kind==="once")return e.run_at||e.display||o;if(e.kind==="interval")return e.display||(typeof e.minutes=="number"?`every ${e.minutes}m`:o);const t=e;return t.expr||t.run_at||t.display||o}function Vt(e,o="—"){if(typeof e=="string")return e;if(!ut(e))return o;if(e.kind==="cron")return e.expr||e.display||o;if(e.kind==="interval"||e.kind==="once")return e.display||ae(e,o);const t=e;return t.display||t.expr||t.run_at||o}function dt(e){return e&&typeof e=="object"?e.times??null:null}function zt(e,o){const t={},g=ae(e.schedule,e.schedule_display||""),r=dt(e.repeat),w=e.deliver||"origin",p=e.skills||(e.skill?[e.skill]:[]),b=e.model||"",y=e.provider||"";return o.name!==e.name&&(t.name=o.name),o.schedule!==g&&(t.schedule=o.schedule),o.prompt!==(e.prompt||"")&&(t.prompt=o.prompt),o.deliver!==w&&(t.deliver=o.deliver),(o.skills.length!==p.length||o.skills.some((c,j)=>c!==p[j]))&&(t.skills=o.skills),o.repeat_times!==r&&(t.repeat=o.repeat_times),o.model!==b&&(t.model=o.model),o.provider!==y&&(t.provider=o.provider),t}async function Lt(){return(await E("/api/hermes/jobs?include_disabled=true")).jobs}async function Wt(){return E("/api/hermes/jobs/delivery-targets")}async function Gt(e){return z(await E(`/api/hermes/jobs/${e}`))}async function Kt(e){return z(await E("/api/hermes/jobs",{method:"POST",body:JSON.stringify(e)}))}async function Qt(e,o){return z(await E(`/api/hermes/jobs/${e}`,{method:"PATCH",body:JSON.stringify(o)}))}async function Zt(e){return E(`/api/hermes/jobs/${e}`,{method:"DELETE"})}async function Xt(e){return z(await E(`/api/hermes/jobs/${e}/pause`,{method:"POST"}))}async function Yt(e){return z(await E(`/api/hermes/jobs/${e}/resume`,{method:"POST"}))}async function ea(e){return z(await E(`/api/hermes/jobs/${e}/run`,{method:"POST"}))}var ue=I((()=>{nt()}));function G(e,o){return e.job_id===o||e.id===o}var ee,se=I((()=>{Ft(),V(),ue(),ee=Tt("jobs",()=>{const e=x([]),o=x(!1);async function t(){o.value=!0;try{e.value=await Lt()}catch(c){console.error("Failed to fetch jobs:",c)}finally{o.value=!1}}async function g(c){const j=await Kt(c);return e.value.unshift(j),j}async function r(c,j){const m=await Qt(c,j),$=e.value.findIndex(f=>G(f,c));return $!==-1&&(e.value[$]=m),m}async function w(c){await Zt(c),e.value=e.value.filter(j=>!G(j,c))}async function p(c){const j=await Xt(c),m=e.value.findIndex($=>G($,c));m!==-1&&(e.value[m]=j)}async function b(c){const j=await Yt(c),m=e.value.findIndex($=>G($,c));m!==-1&&(e.value[m]=j)}async function y(c){const j=await ea(c),m=e.value.findIndex($=>G($,c));m!==-1&&(e.value[m]=j)}return{jobs:e,loading:o,fetchJobs:t,createJob:g,updateJob:r,deleteJob:w,pauseJob:p,resumeJob:b,runJob:y}})})),de,ce,ve,pe,be,_e,fe,me,ye,je,he,ge,we,Je,ke,$e,xe,Ce,Se,Ie,Pe,Me,Ne,Te,Ee,ct,Re=I((()=>{V(),oe(),ue(),se(),Q(),de={class:"card-header"},ce={class:"job-name"},ve={class:"card-body"},pe={class:"info-row"},be={class:"info-label"},_e={class:"info-value mono"},fe={class:"info-row"},me={class:"info-label"},ye={class:"info-value mono"},je={class:"info-row"},he={class:"info-label"},ge={class:"info-value mono"},we={class:"info-row"},Je={class:"info-label"},ke={class:"info-value"},$e={class:"info-row"},xe={class:"info-label"},Ce={class:"info-value"},Se={class:"info-row"},Ie={class:"info-label"},Pe={class:"info-value"},Me={key:0,class:"info-row"},Ne={class:"info-label"},Te={class:"info-value"},Ee={class:"card-actions"},ct=K({__name:"JobCard",props:{job:{},selected:{type:Boolean}},emits:["edit","select"],setup(e,{emit:o}){const t=e,g=o,{t:r}=Z(),w=ee(),p=rt(),b=x(!1),y=M(()=>t.job.job_id||t.job.id),c=M(()=>t.job.state==="running"?r("jobs.status.running"):t.job.state==="paused"?r("jobs.status.paused"):t.job.enabled?r("jobs.status.scheduled"):r("jobs.status.disabled")),j=M(()=>t.job.state==="running"?"info":t.job.state==="paused"?"warning":t.job.enabled?"success":"error"),m=M(()=>Vt(t.job.schedule,t.job.schedule_display||"—")),$=M(()=>t.job.provider||"—"),f=M(()=>t.job.model||"—"),s=h=>h?new Date(h).toLocaleString():"—";async function k(){try{await w.pauseJob(y.value),p.success(r("jobs.jobPaused"))}catch(h){p.error(h.message)}}async function P(){try{await w.resumeJob(y.value),p.success(r("jobs.jobResumed"))}catch(h){p.error(h.message)}}async function F(){if(!b.value){b.value=!0;try{await w.runJob(y.value),p.info(r("jobs.jobTriggered"))}catch(h){p.error(h.message)}finally{b.value=!1}}}async function T(){try{await w.deleteJob(y.value),p.success(r("jobs.jobDeleted"))}catch(h){p.error(h.message)}}function A(h){h.target.closest(".card-actions")||g("select",y.value)}return(h,C)=>(J(),N("div",{class:ie(["job-card",{selected:e.selected}]),onClick:A},[i("div",de,[i("h3",ce,d(e.job.name),1),i("span",{class:ie(["status-badge",j.value])},d(c.value),3)]),i("div",ve,[i("div",pe,[i("span",be,d(a(r)("jobs.info.schedule")),1),i("code",_e,d(m.value),1)]),i("div",fe,[i("span",me,d(a(r)("jobs.info.provider")),1),i("span",ye,d($.value),1)]),i("div",je,[i("span",he,d(a(r)("jobs.info.model")),1),i("span",ge,d(f.value),1)]),i("div",we,[i("span",Je,d(a(r)("jobs.info.lastRun")),1),i("span",ke,[S(d(s(e.job.last_run_at))+" ",1),e.job.last_status?(J(),N("span",{key:0,class:ie(["run-status",{ok:e.job.last_status==="ok",err:e.job.last_status!=="ok"}])},d(e.job.last_status==="ok"?a(r)("common.ok"):e.job.last_status),3)):q("",!0)])]),i("div",$e,[i("span",xe,d(a(r)("jobs.info.nextRun")),1),i("span",Ce,d(s(e.job.next_run_at)),1)]),i("div",Se,[i("span",Ie,d(a(r)("jobs.info.deliver")),1),i("span",Pe,[S(d(e.job.deliver),1),e.job.origin?(J(),N(O,{key:0},[S(" ("+d(e.job.origin.platform)+")",1)],64)):q("",!0)])]),e.job.repeat?(J(),N("div",Me,[i("span",Ne,d(a(r)("jobs.info.repeat")),1),i("span",Te,[typeof e.job.repeat=="string"?(J(),N(O,{key:0},[S(d(e.job.repeat),1)],64)):(J(),N(O,{key:1},[S(d(e.job.repeat.completed)+" / "+d(e.job.repeat.times??"∞"),1)],64))])])):q("",!0)]),i("div",Ee,[e.job.state!=="paused"&&e.job.enabled?(J(),B(a(te),{key:0},{trigger:v(()=>[_(a(R),{size:"tiny",quaternary:"",onClick:L(k,["stop"])},{default:v(()=>[S(d(a(r)("jobs.action.pause")),1)]),_:1})]),default:v(()=>[S(" "+d(a(r)("jobs.action.pauseJob")),1)]),_:1})):e.job.state==="paused"?(J(),B(a(te),{key:1},{trigger:v(()=>[_(a(R),{size:"tiny",quaternary:"",onClick:L(P,["stop"])},{default:v(()=>[S(d(a(r)("jobs.action.resume")),1)]),_:1})]),default:v(()=>[S(" "+d(a(r)("jobs.action.resumeJob")),1)]),_:1})):q("",!0),_(a(R),{size:"tiny",quaternary:"",loading:b.value,disabled:b.value,onClick:L(F,["stop"])},{default:v(()=>[S(d(a(r)("jobs.action.runNow")),1)]),_:1},8,["loading","disabled"]),_(a(R),{size:"tiny",quaternary:"",onClick:C[0]||(C[0]=L(H=>g("edit",y.value),["stop"]))},{default:v(()=>[S(d(a(r)("common.edit")),1)]),_:1}),_(a(R),{size:"tiny",quaternary:"",type:"error",onClick:L(T,["stop"])},{default:v(()=>[S(d(a(r)("common.delete")),1)]),_:1})])],2))}})})),ta=I((()=>{})),vt,aa=I((()=>{Re(),Re(),ta(),X(),vt=Y(ct,[["__scopeId","data-v-e4bc1784"]])})),Be,Fe,pt,Ue=I((()=>{V(),aa(),se(),Q(),Be={key:0,class:"empty-state"},Fe={key:1,class:"jobs-grid"},pt=K({__name:"JobsPanel",props:{selectedJobId:{},sortBy:{},sortAsc:{type:Boolean}},emits:["edit","select"],setup(e,{emit:o}){const t=e,g=o,{t:r}=Z(),w=ee(),p=M(()=>{const c=[...w.jobs],j=t.sortBy,m=t.sortAsc;return j==="name"?c.sort(($,f)=>$.name.localeCompare(f.name,"zh-CN")*(m?1:-1)):m||c.reverse(),c});function b(c){g("select",t.selectedJobId===c?null:c)}function y(){t.selectedJobId&&g("select",null)}return(c,j)=>(J(),N(O,null,[a(w).jobs.length===0?(J(),N("div",Be,[j[0]||(j[0]=$t('<svg width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" class="empty-icon" data-v-6bf5dbff><rect x="3" y="4" width="18" height="18" rx="2" ry="2" data-v-6bf5dbff></rect><line x1="16" y1="2" x2="16" y2="6" data-v-6bf5dbff></line><line x1="8" y1="2" x2="8" y2="6" data-v-6bf5dbff></line><line x1="3" y1="10" x2="21" y2="10" data-v-6bf5dbff></line></svg>',1)),i("p",null,d(a(r)("jobs.noJobs")),1)])):(J(),N("div",Fe,[(J(!0),N(O,null,it(p.value,m=>(J(),B(vt,{key:m.id,job:m,selected:e.selectedJobId===(m.job_id||m.id),onEdit:$=>g("edit",m.id),onSelect:b},null,8,["job","selected","onEdit"]))),128))])),e.selectedJobId?(J(),N("div",{key:2,class:"deselect-overlay",onClick:y})):q("",!0)],64))}})})),oa=I((()=>{})),bt,sa=I((()=>{Ue(),Ue(),oa(),X(),bt=Y(pt,[["__scopeId","data-v-6bf5dbff"]])}));async function la(e){const o=new URLSearchParams;e&&o.set("jobId",e);const t=o.toString();return(await E(`/api/cron-history${t?`?${t}`:""}`)).runs}async function na(e,o){return E(`/api/cron-history/${encodeURIComponent(e)}/${encodeURIComponent(o)}`)}var ia=I((()=>{nt()})),De,qe,Ae,He,Oe,Ve,_t,ze=I((()=>{V(),oe(),Q(),ia(),St(),De={class:"run-history"},qe={class:"history-header"},Ae={class:"history-title"},He={class:"history-count"},Oe={class:"history-body"},Ve={class:"run-meta"},_t=K({__name:"JobRunHistory",props:{selectedJobId:{},jobNameMap:{},profileKey:{}},setup(e){const o=xt(async()=>(await Ct(async()=>{const{default:f}=await import("./MarkdownRenderer-BIPowjr-.js");return{default:f}},__vite__mapDeps([0,1,2,3,4,5,6,7,8]))).default),t=e,{t:g}=Z(),r=x(!1),w=x([]),p=x({}),b=x({}),y=M(()=>t.selectedJobId?w.value.filter(f=>f.jobId===t.selectedJobId):w.value);async function c(){r.value=!0;try{w.value=await la(t.selectedJobId??void 0)}catch(f){console.error("Failed to fetch cron runs:",f),w.value=[]}finally{r.value=!1}}async function j(f){const s=Array.isArray(f)?f:f!=null?[f]:[];for(const k of s){const P=String(k);if(p.value[P]||b.value[P])continue;const F=y.value.find(T=>`${T.jobId}/${T.fileName}`===P);if(F){b.value[P]=!0;try{const T=await na(F.jobId,F.fileName);p.value[P]=T.content}catch{p.value[P]="[Error loading content]"}finally{b.value[P]=!1}}}}function m(f){return f<1024?`${f}B`:f<1024*1024?`${(f/1024).toFixed(1)}KB`:`${(f/1024/1024).toFixed(1)}MB`}function $(f){return t.jobNameMap[f]||f}return Mt(()=>[t.selectedJobId,t.profileKey],()=>{p.value={},c()},{immediate:!0}),(f,s)=>(J(),N("div",De,[i("div",qe,[i("span",Ae,d(a(g)("jobs.runHistory.title")),1),i("span",He,d(y.value.length)+" "+d(a(g)("jobs.runHistory.runs")),1)]),i("div",Oe,[_(a(re),{show:r.value},{default:v(()=>[!r.value&&y.value.length===0?(J(),B(a(Rt),{key:0,description:a(g)("jobs.runHistory.noRuns")},null,8,["description"])):(J(),B(a(It),{key:1,accordion:"","onUpdate:expandedNames":j},{default:v(()=>[(J(!0),N(O,null,it(y.value,k=>(J(),B(a(Pt),{key:`${k.jobId}/${k.fileName}`,title:`${$(k.jobId)} — ${k.runTime}`,name:`${k.jobId}/${k.fileName}`},{"header-extra":v(()=>[i("span",Ve,d(m(k.size)),1)]),default:v(()=>[b.value[`${k.jobId}/${k.fileName}`]?(J(),B(a(re),{key:0,size:"small"})):p.value[`${k.jobId}/${k.fileName}`]?(J(),B(a(o),{key:1,content:p.value[`${k.jobId}/${k.fileName}`]},null,8,["content"])):q("",!0)]),_:2},1032,["title","name"]))),128))]),_:1}))]),_:1},8,["show"])])]))}})})),ra=I((()=>{})),ft,ua=I((()=>{ze(),ze(),ra(),X(),ft=Y(_t,[["__scopeId","data-v-5da60fa5"]])})),Le,mt,We=I((()=>{V(),oe(),se(),Ut(),ue(),Ht(),Q(),Le={class:"modal-footer"},mt=K({__name:"JobFormModal",props:{jobId:{}},emits:["close","saved"],setup(e,{emit:o}){const{t}=Z(),g=e,r=o,w=ee(),p=Bt(),b=rt(),y=x(!0),c=x(!1),j=x(!1),m=x([]),$=x(!1),f=x([]),s=x({name:"",schedule:"",prompt:"",deliver:"local",skills:[],repeat_times:null,provider:"",model:""}),k=x(null),P=M(()=>!!g.jobId),F=M(()=>[{label:t("jobs.presetEveryMinute"),value:"* * * * *"},{label:t("jobs.presetEvery5Min"),value:"*/5 * * * *"},{label:t("jobs.presetEveryHour"),value:"0 * * * *"},{label:t("jobs.presetEveryDay"),value:"0 0 * * *"},{label:t("jobs.presetEveryDay9"),value:"0 9 * * *"},{label:t("jobs.presetEveryMonday"),value:"0 9 * * 1"},{label:t("jobs.presetEveryMonth"),value:"0 9 1 * *"}]),T=M(()=>{const l=[{label:t("jobs.defaultProvider"),value:""},...p.modelGroups.filter(n=>n.models.length>0).map(n=>({label:n.label||n.provider,value:n.provider}))];return s.value.provider&&!l.some(n=>n.value===s.value.provider)&&l.push({label:s.value.provider,value:s.value.provider}),l}),A=M(()=>{const l=s.value.provider;if(!l)return[{label:t("jobs.defaultModel"),value:""}];const n=p.modelGroups.find(D=>D.provider===l)?.models||[],u=n.map(D=>({label:p.displayModelName(D,l),value:D}));return s.value.model&&!n.includes(s.value.model)&&u.unshift({label:p.displayModelName(s.value.model,l),value:s.value.model}),u});function h(l){if(s.value.provider=l,!l){s.value.model="";return}const n=p.modelGroups.find(u=>u.provider===l);n?.models.includes(s.value.model)||(s.value.model=n?.models[0]||"")}const C=M(()=>{const l=[{label:t("jobs.local"),value:"local"}];s.value.deliver==="origin"&&l.unshift({label:t("jobs.origin"),value:"origin"});for(const u of f.value){const D=u.type?` (${u.type})`:"";l.push({label:`${H(u.platform)} · ${u.name}${D}`,value:u.value})}const n=s.value.deliver.trim();return n&&!l.some(u=>u.value===n)&&l.push({label:n,value:n}),l});function H(l){return{weixin:"WeChat",wecom:"WeCom",qqbot:"QQBot",whatsapp:"WhatsApp",whatsapp_cloud:"WhatsApp Cloud",dingtalk:"DingTalk",feishu:"Feishu"}[l]||l.split("_").filter(Boolean).map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}const le=x(null);function ht(l){const n=new Map;for(const u of l)u.enabled!==!1&&(n.has(u.name)||n.set(u.name,u));return[...n.values()].map(u=>({label:u.name,value:u.name})).sort((u,D)=>u.label.localeCompare(D.label))}async function gt(){j.value=!0;try{m.value=ht((await Ot()).categories.flatMap(l=>l.skills||[]))}catch{m.value=[]}finally{j.value=!1}}async function wt(){$.value=!0;try{const l=await Wt();f.value=Array.isArray(l.targets)?l.targets:[]}catch{f.value=[]}finally{$.value=!1}}lt(async()=>{if(await Promise.all([p.loadModels(),gt(),wt()]),g.jobId)try{const l=await Gt(g.jobId);le.value=l,s.value={name:l.name,schedule:ae(l.schedule,l.schedule_display||""),prompt:l.prompt,deliver:l.deliver||"origin",skills:l.skills||(l.skill?[l.skill]:[]),repeat_times:dt(l.repeat),provider:l.provider||"",model:l.model||""}}catch(l){b.error(t("jobs.loadFailed")+": "+l.message)}});async function Jt(){if(!s.value.name.trim()){b.warning(t("jobs.nameRequired"));return}if(!s.value.schedule.trim()){b.warning(t("jobs.scheduleRequired"));return}if(!s.value.prompt.trim()){b.warning(t("jobs.promptRequired"));return}c.value=!0;try{if(P.value){if(!le.value){b.error(t("jobs.loadFailed"));return}const l=zt(le.value,s.value);if(Object.keys(l).length===0){b.success(t("jobs.jobUpdated")),r("saved");return}await w.updateJob(g.jobId,l),b.success(t("jobs.jobUpdated"))}else{const l={name:s.value.name,schedule:s.value.schedule,prompt:s.value.prompt,deliver:s.value.deliver,skills:s.value.skills,repeat:s.value.repeat_times??void 0,provider:s.value.provider||void 0,model:s.value.model||void 0};await w.createJob(l),b.success(t("jobs.jobCreated"))}r("saved")}catch(l){b.error(l.message)}finally{c.value=!1}}function kt(){y.value=!1,setTimeout(()=>r("close"),200)}return(l,n)=>(J(),B(a(Nt),{show:y.value,"onUpdate:show":n[9]||(n[9]=u=>y.value=u),preset:"card",title:P.value?a(t)("jobs.editJob"):a(t)("jobs.createJob"),style:{width:"min(520px, calc(100vw - 32px))"},"mask-closable":!c.value,onAfterLeave:n[10]||(n[10]=u=>r("close"))},{footer:v(()=>[i("div",Le,[_(a(R),{onClick:kt},{default:v(()=>[S(d(a(t)("common.cancel")),1)]),_:1}),_(a(R),{type:"primary",loading:c.value,onClick:Jt},{default:v(()=>[S(d(P.value?a(t)("common.update"):a(t)("common.create")),1)]),_:1},8,["loading"])])]),default:v(()=>[_(a(Et),{"label-placement":"top"},{default:v(()=>[_(a(U),{label:a(t)("jobs.name"),required:""},{default:v(()=>[_(a(ne),{value:s.value.name,"onUpdate:value":n[0]||(n[0]=u=>s.value.name=u),placeholder:a(t)("jobs.namePlaceholder"),maxlength:"200","show-count":""},null,8,["value","placeholder"])]),_:1},8,["label"]),_(a(U),{label:a(t)("jobs.schedule"),required:""},{default:v(()=>[_(a(ne),{value:s.value.schedule,"onUpdate:value":n[1]||(n[1]=u=>s.value.schedule=u),placeholder:a(t)("jobs.schedulePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),_(a(U),{label:a(t)("jobs.provider")},{default:v(()=>[_(a(W),{value:s.value.provider,options:T.value,"onUpdate:value":h},null,8,["value","options"])]),_:1},8,["label"]),_(a(U),{label:a(t)("jobs.model")},{default:v(()=>[_(a(W),{value:s.value.model,"onUpdate:value":n[2]||(n[2]=u=>s.value.model=u),filterable:"",clearable:"",disabled:!s.value.provider,options:A.value,placeholder:a(t)("jobs.modelPlaceholder")},null,8,["value","disabled","options","placeholder"])]),_:1},8,["label"]),_(a(U),{label:a(t)("jobs.quickPresets")},{default:v(()=>[_(a(W),{value:k.value,"onUpdate:value":[n[3]||(n[3]=u=>k.value=u),n[4]||(n[4]=u=>s.value.schedule=u)],options:F.value,placeholder:a(t)("jobs.selectPreset")},null,8,["value","options","placeholder"])]),_:1},8,["label"]),_(a(U),{label:a(t)("jobs.prompt"),required:""},{default:v(()=>[_(a(ne),{value:s.value.prompt,"onUpdate:value":n[5]||(n[5]=u=>s.value.prompt=u),type:"textarea",placeholder:a(t)("jobs.promptPlaceholder"),rows:4,maxlength:"5000","show-count":""},null,8,["value","placeholder"])]),_:1},8,["label"]),_(a(U),{label:a(t)("jobs.skills")},{default:v(()=>[_(a(W),{value:s.value.skills,"onUpdate:value":n[6]||(n[6]=u=>s.value.skills=u),multiple:"",filterable:"",clearable:"",loading:j.value,options:m.value,placeholder:a(t)("jobs.skillsPlaceholder")},null,8,["value","loading","options","placeholder"])]),_:1},8,["label"]),_(a(U),{label:a(t)("jobs.deliverTarget")},{default:v(()=>[_(a(W),{value:s.value.deliver,"onUpdate:value":n[7]||(n[7]=u=>s.value.deliver=u),options:C.value,loading:$.value,filterable:""},null,8,["value","options","loading"])]),_:1},8,["label"]),_(a(U),{label:a(t)("jobs.repeatCount")},{default:v(()=>[_(a(Dt),{value:s.value.repeat_times,"onUpdate:value":n[8]||(n[8]=u=>s.value.repeat_times=u),min:1,placeholder:a(t)("jobs.repeatPlaceholder"),clearable:"",style:{width:"100%"}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["show","title","mask-closable"]))}})})),da=I((()=>{})),yt,ca=I((()=>{We(),We(),da(),X(),yt=Y(mt,[["__scopeId","data-v-1e2520e0"]])})),Ge,Ke,Qe,Ze,Xe,Ye,et,tt,at,ot,jt,st=I((()=>{V(),oe(),Q(),sa(),ua(),ca(),se(),At(),Ge={class:"jobs-view"},Ke={class:"page-header"},Qe={class:"header-title"},Ze={class:"header-actions"},Xe={class:"sort-toggle"},Ye={class:"sort-arrow"},et={class:"sort-arrow"},tt={class:"jobs-split"},at={class:"jobs-top"},ot={class:"jobs-bottom"},jt=K({__name:"JobsView",setup(e){const{t:o}=Z(),t=ee(),g=qt(),r=x(!1),w=x(null),p=x(null),b=x("name"),y=x(!0),c=M(()=>g.activeProfileName||"default"),j=M(()=>{const h={};for(const C of t.jobs){const H=C.job_id||C.id;h[H]=C.name}return h});async function m(){(!g.activeProfileName||g.profiles.length===0)&&await g.fetchProfiles()}async function $(){p.value=null,t.jobs=[],await m(),await t.fetchJobs()}lt(()=>{$()});function f(){w.value=null,r.value=!0}function s(h){w.value=h,r.value=!0}function k(){r.value=!1,w.value=null}async function P(){await t.fetchJobs(),k()}function F(h){p.value=p.value===h?null:h}function T(h){b.value===h?y.value=!y.value:(b.value=h,y.value=!0)}function A(h){return b.value!==h?"↕":y.value?"↑":"↓"}return(h,C)=>(J(),N("div",Ge,[i("header",Ke,[i("h2",Qe,d(a(o)("jobs.title")),1),i("div",Ze,[i("div",Xe,[_(a(te),null,{trigger:v(()=>[_(a(R),{size:"tiny",type:b.value==="name"?"primary":"default",onClick:C[0]||(C[0]=H=>T("name"))},{default:v(()=>[S(d(a(o)("jobs.sortByName"))+" ",1),i("span",Ye,d(A("name")),1)]),_:1},8,["type"])]),default:v(()=>[S(" "+d(b.value==="name"?y.value?a(o)("jobs.sortAsc"):a(o)("jobs.sortDesc"):a(o)("jobs.sortByNameHint")),1)]),_:1}),_(a(te),null,{trigger:v(()=>[_(a(R),{size:"tiny",type:b.value==="time"?"primary":"default",onClick:C[1]||(C[1]=H=>T("time"))},{default:v(()=>[S(d(a(o)("jobs.sortByTime"))+" ",1),i("span",et,d(A("time")),1)]),_:1},8,["type"])]),default:v(()=>[S(" "+d(b.value==="time"?y.value?a(o)("jobs.sortAsc"):a(o)("jobs.sortDesc"):a(o)("jobs.sortByTimeHint")),1)]),_:1})]),C[3]||(C[3]=i("span",{class:"sort-divider"},null,-1)),_(a(R),{type:"primary",size:"small",onClick:f},{icon:v(()=>[...C[2]||(C[2]=[i("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[i("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),i("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)])]),default:v(()=>[S(" "+d(a(o)("jobs.createJob")),1)]),_:1})])]),i("div",tt,[i("div",at,[_(a(re),{show:a(t).loading&&a(t).jobs.length===0},{default:v(()=>[_(bt,{"selected-job-id":p.value,"sort-by":b.value,"sort-asc":y.value,onEdit:s,onSelect:F},null,8,["selected-job-id","sort-by","sort-asc"])]),_:1},8,["show"])]),C[4]||(C[4]=i("div",{class:"splitter"},null,-1)),i("div",ot,[_(ft,{"selected-job-id":p.value,"job-name-map":j.value,"profile-key":c.value},null,8,["selected-job-id","job-name-map","profile-key"])])]),r.value?(J(),B(yt,{key:0,"job-id":w.value,onClose:k,onSaved:P},null,8,["job-id"])):q("",!0)]))}})})),va=I((()=>{})),pa,ba=I((()=>{st(),st(),va(),X(),pa=Y(jt,[["__scopeId","data-v-8f11f21e"]])}));ba();export{pa as default};
@@ -1 +1 @@
1
- import{$i as I,$t as We,Bi as _n,Di as gn,Fi as hn,G as wn,Hi as b,M as bn,Nr as kn,Pr as jn,Qr as Mn,Ri as xn,Sa as i,Ti as N,Wi as Je,Zi as Oe,_a as s,_i as o,bi as S,ci as Sn,dn as Ue,dt as Cn,ei as Tn,gi as p,gt as Nn,lt as Ln,mi as Ke,n as In,pi as $n,si as En,t as An,ua as k,vi as He,wa as Y,wi as O,xa as ye,ya as pe,yi as A}from"./index-DnjQJzX4.js";import{r as zn,t as Dn}from"./profiles-D-vlI-Ec.js";import{l as Pn,s as Gn}from"./skills-DC-UPcXj.js";import{S as Rn,a as Bn,c as Vn,g as Fn,h as _e,i as Wn,l as Jn,n as On,o as Un,p as Kn,r as Hn,s as Xn,t as Yn,u as Zn,w as qn,y as Xe}from"./style-DDAg_jVj.js";async function Qn(){return Tn("/api/hermes/journey")}var ea=Y((()=>{Mn()}));function Rt(u){return u==null?"":u.replace(/\s+/gu," ").trim()}function Ye(u,c=140){if(!Number.isFinite(c))return"";const a=Math.floor(c);if(a<=0)return"";const r=Rt(u);if(!r)return"";const f=Array.from(r);return f.length<=a?r:a===1?"…":`${f.slice(0,a-1).join("").trimEnd()}…`}var ta,na=Y((()=>{ta=140}));function Te(u,c){const a=u.timestamp,r=c.timestamp;if(a&&r&&a!==r)return a-r;if(a&&!r)return-1;if(!a&&r)return 1;const f=(u.category||"").localeCompare(c.category||"");if(f!==0)return f;const m=(u.label||"").localeCompare(c.label||"");return m!==0?m:u.id.localeCompare(c.id)}function aa(u){const c=new Map,a=(r,f)=>{const m=c.get(r)||new Set;m.add(f),c.set(r,m)};for(const r of u)a(r.source,r.target),a(r.target,r.source);return c}function oa(u){const c=Math.max(1,u.length-1);return new Map(u.map((a,r)=>[a.id,r/c]))}function Ze(u,c,a){const r=[...a.get(u.id)||[]].map(f=>c.get(f)).filter(f=>f!==void 0);return r.length?r.reduce((f,m)=>f+m,0)/r.length:null}function qe(u,c,a){const r=oa(c);return[...u].sort((f,m)=>{const y=Ze(f,r,a),g=Ze(m,r,a);return y!==null&&g!==null&&y!==g?y-g:y!==null&&g===null?-1:y===null&&g!==null?1:Te(f,m)})}function la(u,c,a,r,f,m){const y=Math.floor(u/a),g=u%a,V=y*a,h=(a-Math.min(a,c-V))*m/2;return{x:r+y*f,y:h+g*m}}function ra(u,c,a={}){const r=new Set(u.map(d=>d.id)),f=aa(c.filter(d=>r.has(d.source)&&r.has(d.target)));let m=u.filter(d=>d.kind==="memory").sort(Te),y=u.filter(d=>d.kind!=="memory").sort(Te);for(let d=0;d<3;d+=1)y=qe(y,m,f),m=qe(m,y,f);const g=a.memoryX??Bt,V=a.verticalGap??Vt,h=a.columnGap??Ft,C=a.groupGap??Wt,z=Math.max(1,m.length,y.length),T=Math.max(1,Math.min(a.maxRows??Jt,z)),G=Math.max(1,Math.ceil(m.length/T)),w=m.length?a.skillX??g+G*h+C:g,L=(d,M,F,D,re)=>({id:d.id,column:F,degree:f.get(d.id)?.size||0,position:la(M,D,T,re,h,V)});return[...m.map((d,M)=>L(d,M,"memory",m.length,g)),...y.map((d,M)=>L(d,M,"skill",y.length,w))]}function ia(u,c){const a=new Set;for(const r of c)r.source===u&&a.add(r.target),r.target===u&&a.add(r.source);return a}var Bt,Vt,Ft,Wt,Jt,sa=Y((()=>{Bt=80,Vt=112,Ft=290,Wt=200,Jt=8})),Qe,et,tt,nt,at,ot,lt,rt,it,st,ut,ct,dt,vt,ft,mt,yt,pt,_t,gt,ht,wt,bt,kt,jt,Mt,xt,St,Ct,Tt,Nt,Lt,It,$t,Et,At,zt,Dt,Pt,Ot,Gt=Y((()=>{En(),bn(),Rn(),Zn(),Vn(),Un(),kn(),ea(),Pn(),Dn(),na(),sa(),Wn(),Hn(),On(),Yn(),Qe={class:"journey-view"},et={class:"page-header journey-view__header"},tt={class:"header-title"},nt={class:"journey-view__content"},at={class:"journey-panel"},ot={class:"journey-toolbar"},lt=["aria-label"],rt={class:"node-kind-legend__item"},it={class:"node-kind-legend__item"},st={key:0,class:"category-meter"},ut=["aria-label"],ct=["data-category","aria-label","aria-pressed","onMouseenter","onClick"],dt=["aria-label"],vt=["data-category","aria-pressed","onMouseenter","onClick"],ft={class:"journey-graph-layout"},mt=["aria-label"],yt=["onClick","onMouseenter","onMousemove","onMouseleave"],pt={class:"journey-node__topline"},_t={class:"journey-node__kind"},gt={class:"journey-node__category"},ht={class:"journey-node__title"},wt={class:"journey-node__meta"},bt={key:0},kt={key:1},jt={class:"journey-node-tooltip__name"},Mt={key:0,class:"journey-node-tooltip__description"},xt={key:0,class:"journey-empty"},St={class:"journey-hud"},Ct={class:"drawer-title-row"},Tt={key:0,class:"memory-card"},Nt={class:"detail-card-label"},Lt={key:1,class:"memory-card"},It={class:"detail-card-label"},$t={class:"detail-card"},Et={class:"detail-grid"},At={class:"detail-item"},zt={class:"detail-item"},Dt={class:"detail-item"},Pt={class:"detail-item"},Ot=gn({__name:"JourneyView",setup(u){const c=["#4f8cff","#ff4fa3","#38c976","#f6c542","#9b6cff","#ff7a45","#22c7d8","#e84d5b","#7cb342","#d66efd","#00a884","#ff9f1a"],{t:a}=jn(),r=Nn(),f=zn(),{fitView:m}=qn("hermes-journey"),y=k(null),g=k(!1),V=k(null),h=k(""),C=k(""),z=k(""),T=k([]),G=k(new Map),w=k(""),L=k({x:24,y:80}),d=k({width:1,height:1}),M=k(!1),F=k(-1),D=k(!1),re=k(380);let ie=null,Z=null,q=null,se="",Q=-1,$=!1,E=0,ee=0,W="idle",U=null;const R=p(()=>y.value?.graph.nodes||[]),Ut=p(()=>y.value?.graph.edges||[]),P=p(()=>new Map(R.value.map(e=>[e.id,e]))),j=p(()=>P.value.get(h.value)||null),K=p(()=>R.value.map((e,t)=>({node:e,index:t})).sort((e,t)=>{const n=e.node.timestamp,l=t.node.timestamp;return n&&l&&n!==l?n-l:n&&!l?-1:!n&&l?1:e.index-t.index}).map(e=>e.node)),Kt=p(()=>F.value<0?null:new Set(K.value.slice(0,F.value+1).map(e=>e.id))),J=p(()=>{const e=Kt.value;return e?R.value.filter(t=>e.has(t.id)):R.value}),ue=p(()=>new Set(J.value.map(e=>e.id))),ce=p(()=>Ut.value.filter(e=>ue.value.has(e.source)&&ue.value.has(e.target))),te=p(()=>new Set(T.value)),ne=p(()=>{const e=new Set(T.value);return z.value&&e.add(z.value),e}),ae=p(()=>h.value||C.value),Ht=p(()=>ae.value?ia(ae.value,ce.value):new Set),ge=p(()=>{const e=new Map;for(const t of J.value){const n=t.category||"general",l=e.get(n);l?l.count+=1:e.set(n,{category:n,label:t.category||a("journey.noCategory"),color:he(n),count:1})}return[...e.values()].sort((t,n)=>n.count-t.count||t.label.localeCompare(n.label))}),Xt=p(()=>Math.max(1,J.value.length)),de=p(()=>w.value&&P.value.get(w.value)||null),Yt=p(()=>de.value?.label||de.value?.id||""),Ne=p(()=>{const e=de.value;return e?B(e)?Ye(we(e)):Ye(Ee(e)):""}),Le=p(()=>{const e=j.value;return e&&!B(e)?Ee(e):""}),Zt=p(()=>`${a("journey.title")}. ${J.value.length} ${a("journey.nodes")}. ${a("journey.canvasInstructions")}`),qt=p(()=>{const n=L.value.x+14+320<=d.value.width?L.value.x+14:Math.max(8,L.value.x-320-14),l=L.value.y>d.value.height-150;return{left:`${n}px`,top:`${Math.max(8,L.value.y+(l?-14:14))}px`,transform:l?"translateY(-100%)":void 0}}),Ie=p(()=>{const e=Math.max(3,Math.min(8,Math.floor((d.value.height-72)/112))),t=ra(J.value,ce.value,{maxRows:e}),n=!!ae.value,l=ne.value.size>0;return t.map(_=>{const v=P.value.get(_.id),x=v.category||"general",H=ae.value===v.id,X=Ht.value.has(v.id),yn=ne.value.has(x),pn=n?!H&&!X:l&&!yn;return{id:v.id,type:"journey",position:_.position,draggable:!1,selectable:!1,connectable:!1,focusable:!1,sourcePosition:_e.Right,targetPosition:_e.Left,style:{width:"240px",pointerEvents:"all",zIndex:H?4:X?3:1},data:{node:v,column:_.column,degree:_.degree,color:he(x),categoryLabel:v.category||a("journey.noCategory"),timestampLabel:$e(v.timestamp),kindLabel:B(v)?a("journey.memories"):a("journey.skills"),active:H,related:X,dimmed:pn}}})}),Qt=p(()=>{const e=ae.value,t=ne.value;return ce.value.map((n,l)=>{const _=P.value.get(n.source),v=P.value.get(n.target),x=!!(e&&(n.source===e||n.target===e)),H=!!(t.size&&(t.has(_?.category||"general")||t.has(v?.category||"general"))),X=x?he(v?.category||_?.category||"general"):"var(--text-muted)";return{id:`journey-edge:${n.source}:${n.target}:${l}`,source:n.source,target:n.target,type:"smoothstep",selectable:!1,focusable:!1,animated:M.value&&x,interactionWidth:0,markerEnd:{type:Kn.ArrowClosed,color:X,width:x?18:14,height:x?18:14},style:{stroke:X,strokeWidth:x?2.4:H?1.7:1.15,opacity:x?.95:H?.58:e?.08:.24},zIndex:x?3:0}})});function en(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function he(e){const t=[...new Set(R.value.map(n=>n.category||"general"))].sort().indexOf(e);return t>=0?c[t%c.length]:c[en(e)%c.length]}function $e(e){return e?new Date(e*1e3).toLocaleString():"-"}function B(e){return e?.kind==="memory"}function tn(e){return B(e)?e.label||e.category||a("journey.memories"):e.label||e.id}function nn(e){const t=Number(e.id.split(":").pop());return Number.isInteger(t)&&t>=0?t:null}function an(e){if(!e||!B(e))return null;const t=y.value?.graph.memory||[],n=nn(e);if(n!==null){const l=t[n];if(l&&(!e.memorySource||!l.source||l.source===e.memorySource))return l}return t.find(l=>(!e.memorySource||!l.source||l.source===e.memorySource)&&(!e.timestamp||!l.timestamp||l.timestamp===e.timestamp))||null}function we(e){const t=an(e);return t?.body||t?.title||e.label||""}function be(e,t){return`category:${e}\0${t}`}function ke(e){return`name:${e}`}function Ee(e){const t=e.category||"general",n=e.id.replace(/^skill:/,"");return Rt(G.value.get(be(t,e.label))||G.value.get(be(t,n))||G.value.get(ke(e.label))||G.value.get(ke(n))||"")}function on(e){const t=new Map,n=new Map,l=(_,v)=>{const x=n.get(_);n.set(_,{count:(x?.count||0)+1,description:x?.description||v})};for(const _ of e.categories||[])for(const v of _.skills||[])t.set(be(_.name,v.name),v.description||""),l(v.name,v.description||"");for(const _ of e.archived||[])l(_.name,_.description||"");for(const[_,v]of n)v.count===1&&t.set(ke(_),v.description);return t}function Ae(e){G.value=new Map,ee=e,W="idle",U=null}function ze(e=E){if($||e!==E)return;if(ee!==e&&Ae(e),W==="loaded"||W==="failed"||W==="loading")return U||void 0;W="loading";const t=Gn().then(n=>{$||e!==E||e!==ee||(G.value=on(n),W="loaded")}).catch(()=>{$||e!==E||e!==ee||(W="failed")});return U=t,t.finally(()=>{e===ee&&U===t&&(U=null)}),t}function je(e){B(e)||ze()}function ve(){q!==null&&window.clearTimeout(q),q=null,se=""}function fe(e=!1){ve(),w.value="",e&&(C.value="")}function Me(e){const t=V.value?.getBoundingClientRect();return{x:e.clientX-(t?.left||0),y:e.clientY-(t?.top||0)}}function De(e,t){L.value=t,C.value=e.id,!(w.value===e.id||se===e.id)&&(ve(),w.value="",se=e.id,q=window.setTimeout(()=>{q=null,se="",!$&&C.value===e.id&&(w.value=e.id,je(e))},250))}function ln(e,t){De(t,Me(e))}function rn(e,t){if(C.value!==t.id){De(t,Me(e));return}L.value=Me(e)}function sn(e){C.value===e&&fe(!0)}function Pe(e){T.value=te.value.has(e)?T.value.filter(t=>t!==e):[...T.value,e]}function Ge(e){const t=P.value.get(e);t&&(je(t),h.value=e,D.value=!0)}function un(){h.value="",T.value=[],D.value=!1,fe(!0)}function Re(){le(),oe(),Q=-1,h.value="",C.value="",z.value="",T.value=[],fe(),F.value=-1,D.value=!1}function me(e,t){const n=K.value.filter(v=>ue.value.has(v.id));if(!n.length)return;let l=n.findIndex(v=>v.id===w.value);l<0&&(l=Q>=0?Q:e>0?-1:0),Q=t===void 0?(l+e+n.length)%n.length:Math.max(0,Math.min(n.length-1,t));const _=n[Q];ve(),C.value=_.id,w.value=_.id,L.value={x:Math.min(Math.max(24,d.value.width/2),d.value.width-24),y:76},je(_)}function cn(e){if(e.key==="ArrowRight"||e.key==="ArrowDown"){e.preventDefault(),me(1);return}if(e.key==="ArrowLeft"||e.key==="ArrowUp"){e.preventDefault(),me(-1);return}if(e.key==="Home"||e.key==="End"){e.preventDefault();const t=K.value.filter(n=>ue.value.has(n.id)).length;me(0,e.key==="Home"?0:t-1);return}(e.key==="Enter"||e.key===" ")&&(w.value||me(1),w.value&&Ge(w.value),e.preventDefault())}function Be(e){e.key==="Escape"&&(Re(),e.preventDefault())}function xe(){ie&&(window.clearTimeout(ie),ie=null)}function oe(){Z&&(window.clearTimeout(Z),Z=null)}function le(){xe(),M.value=!1}function Ve(e){const t=K.value[e];if(!t){le();return}F.value=e,h.value=t.id,C.value=""}function Fe(){xe(),ie=window.setTimeout(()=>{const e=F.value+1;if(e>=K.value.length){le(),oe(),Z=window.setTimeout(()=>{h.value="",C.value="",Z=null},1e3);return}Ve(e),Fe()},150)}function dn(){if(M.value){le();return}K.value.length&&(oe(),M.value=!0,Ve(0),Fe())}function Se(){re.value=window.innerWidth<=640?window.innerWidth:380;const e=V.value?.getBoundingClientRect();e&&(d.value={width:e.width,height:e.height})}async function vn(){if(await hn(),!($||!Ie.value.length))try{await m({padding:.16,minZoom:.3,maxZoom:1,duration:220})}catch{}}async function Ce(e={}){const t=++E;le(),oe(),Ae(t),e.resetInteraction&&Re(),e.clearData&&(y.value=null),g.value=!0;try{const n=await Qn();if($||t!==E)return t;y.value=n,e.fitAfterLoad&&vn()}catch(n){if($||t!==E)return t;r.error(n?.message||a("journey.loadFailed"))}finally{!$&&t===E&&(g.value=!1)}return t}async function fn(){const e=await Ce();if($||e!==E)return;const t=new Set;D.value&&h.value&&t.add(h.value),w.value&&t.add(w.value),[...t].some(n=>{const l=P.value.get(n);return l&&!B(l)})&&await ze(e)}function mn(e){return e.data?.color||"#7f8c9a"}return _n(()=>{window.addEventListener("keydown",Be),window.addEventListener("resize",Se),Se(),Ce({fitAfterLoad:!0})}),xn(()=>{$=!0,E+=1,window.removeEventListener("keydown",Be),window.removeEventListener("resize",Se),xe(),oe(),ve()}),Oe(()=>f.activeProfileName||"default",(e,t)=>{e!==t&&Ce({clearData:!0,resetInteraction:!0,fitAfterLoad:!0})}),Oe(R,()=>{h.value&&!P.value.has(h.value)&&(h.value="",D.value=!1),w.value&&!P.value.has(w.value)&&fe(!0);const e=new Set(R.value.map(t=>t.category||"general"));T.value=T.value.filter(t=>e.has(t))}),(e,t)=>(b(),S("div",Qe,[o("header",et,[o("h2",tt,i(s(a)("journey.title")),1)]),o("div",nt,[o("div",at,[o("div",ot,[o("div",{class:"node-kind-legend","aria-label":s(a)("journey.nodeKinds")},[o("span",rt,[t[3]||(t[3]=o("i",{class:"node-kind-marker node-kind-marker--memory","aria-hidden":"true"},null,-1)),O(" "+i(s(a)("journey.memories")),1)]),t[5]||(t[5]=o("span",{class:"node-kind-legend__arrow","aria-hidden":"true"},"→",-1)),o("span",it,[t[4]||(t[4]=o("i",{class:"node-kind-marker node-kind-marker--skill","aria-hidden":"true"},null,-1)),O(" "+i(s(a)("journey.skills")),1)])],8,lt),N(s(We),{size:"small",disabled:!R.value.length,"aria-label":M.value?s(a)("journey.pause"):s(a)("journey.play"),title:M.value?s(a)("journey.pause"):s(a)("journey.play"),onClick:dn},{default:I(()=>[o("span",{class:pe(["playback-icon",{playing:M.value}]),"aria-hidden":"true"},null,2)]),_:1},8,["disabled","aria-label","title"]),N(s(We),{size:"small",loading:g.value,onClick:fn},{default:I(()=>[O(i(s(a)("journey.refresh")),1)]),_:1},8,["loading"])]),ge.value.length?(b(),S("div",st,[o("div",{class:"category-bar",role:"group","aria-label":s(a)("journey.categorySelection")},[(b(!0),S(Ke,null,Je(ge.value,n=>(b(),S("button",{key:n.category,type:"button",class:pe(["category-bar-segment",{active:ne.value.has(n.category),selected:te.value.has(n.category)}]),style:ye({"--category-color":n.color,flexGrow:n.count}),"data-category":n.category,"aria-label":`${n.label} ${n.count} / ${Math.round(n.count/Xt.value*100)}%`,"aria-pressed":te.value.has(n.category),onMouseenter:l=>z.value=n.category,onMouseleave:t[0]||(t[0]=l=>z.value=""),onClick:l=>Pe(n.category)},null,46,ct))),128))],8,ut),o("div",{class:"category-legend",role:"group","aria-label":s(a)("journey.categorySelection")},[(b(!0),S(Ke,null,Je(ge.value,n=>(b(),S("button",{key:n.category,type:"button",class:pe({active:ne.value.has(n.category),selected:te.value.has(n.category)}),"data-category":n.category,"aria-pressed":te.value.has(n.category),onMouseenter:l=>z.value=n.category,onMouseleave:t[1]||(t[1]=l=>z.value=""),onClick:l=>Pe(n.category)},[o("i",{style:ye({backgroundColor:n.color})},null,4),O(" "+i(n.label)+" · "+i(n.count),1)],42,vt))),128))],8,dt)])):A("",!0),N(s(wn),{show:g.value&&!y.value,class:"journey-spin"},{default:I(()=>[o("main",ft,[o("section",{ref_key:"graphWrapRef",ref:V,class:"journey-graph-wrap",tabindex:"0",role:"group","aria-label":Zt.value,onKeydown:cn},[N(s(Fn),{id:"hermes-journey",nodes:Ie.value,edges:Qt.value,"fit-view-on-init":!1,"default-viewport":{x:32,y:48,zoom:.84},"min-zoom":.25,"max-zoom":1.4,"nodes-draggable":!1,"nodes-connectable":!1,"elements-selectable":!1,"zoom-on-double-click":!1,class:"journey-flow",onPaneClick:un},{"node-journey":I(({data:n})=>[o("button",{type:"button",class:pe(["journey-node",[`journey-node--${n.column}`,{"is-active":n.active,"is-related":n.related,"is-dimmed":n.dimmed}]]),style:ye({"--node-color":n.color}),onClick:$n(l=>Ge(n.node.id),["stop"]),onMouseenter:l=>ln(l,n.node),onMousemove:l=>rn(l,n.node),onMouseleave:l=>sn(n.node.id)},[N(s(Xe),{type:"target",position:s(_e).Left,class:"journey-node__handle"},null,8,["position"]),N(s(Xe),{type:"source",position:s(_e).Right,class:"journey-node__handle"},null,8,["position"]),o("span",pt,[o("span",_t,[t[6]||(t[6]=o("i",{"aria-hidden":"true"},null,-1)),O(" "+i(n.kindLabel),1)]),o("span",gt,i(n.categoryLabel),1)]),o("strong",ht,i(n.node.label||n.node.id),1),o("span",wt,[n.timestampLabel!=="-"?(b(),S("span",bt,i(n.timestampLabel),1)):A("",!0),n.column==="skill"?(b(),S("span",kt,i(s(a)("journey.useCount"))+" "+i(n.node.useCount??0),1)):A("",!0),o("span",null,i(n.degree)+" "+i(s(a)("journey.edges")),1)])],46,yt)]),default:I(()=>[N(s(Jn),{gap:24,size:1.15,color:"var(--border-color)"}),N(s(Bn),{pannable:"",zoomable:"","node-color":mn}),N(s(Xn),{"show-interactive":!1})]),_:1},8,["nodes","edges"]),N(Sn,{name:"journey-tooltip"},{default:I(()=>[de.value?(b(),S("div",{key:0,class:"journey-node-tooltip",role:"tooltip",style:ye(qt.value)},[o("div",jt,i(Yt.value),1),Ne.value?(b(),S("div",Mt,i(Ne.value),1)):A("",!0)],4)):A("",!0)]),_:1}),!g.value&&!J.value.length?(b(),S("div",xt,i(s(a)("journey.noNodes")),1)):A("",!0),o("div",St,[o("span",null,i(y.value?.profile||"-"),1),o("span",null,i(J.value.length)+" "+i(s(a)("journey.nodes")),1),o("span",null,i(ce.value.length)+" "+i(s(a)("journey.edges")),1)])],40,mt)])]),_:1},8,["show"]),N(s(Cn),{show:D.value,"onUpdate:show":t[2]||(t[2]=n=>D.value=n),width:re.value,placement:"right"},{default:I(()=>[j.value?(b(),He(s(Ln),{key:0,class:"journey-detail-drawer","native-scrollbar":!1,closable:""},{header:I(()=>[o("div",Ct,[o("span",null,i(tn(j.value)),1),N(s(Ue),{size:"small",type:j.value.kind==="memory"?"info":"success",bordered:!1},{default:I(()=>[O(i(j.value.kind),1)]),_:1},8,["type"])])]),default:I(()=>[B(j.value)&&we(j.value)?(b(),S("div",Tt,[o("span",Nt,i(s(a)("journey.memories")),1),o("p",null,i(we(j.value)),1)])):A("",!0),Le.value?(b(),S("div",Lt,[o("span",It,i(s(a)("journey.description")),1),o("p",null,i(Le.value),1)])):A("",!0),o("div",$t,[t[7]||(t[7]=o("span",{class:"detail-card-label"},"ID",-1)),o("code",null,i(j.value.id),1)]),o("div",Et,[o("div",At,[o("span",null,i(s(a)("journey.category")),1),o("strong",null,i(j.value.category||"-"),1)]),o("div",zt,[o("span",null,i(s(a)("journey.useCount")),1),o("strong",null,i(j.value.useCount??0),1)]),o("div",Dt,[o("span",null,i(s(a)("journey.createdBy")),1),o("strong",null,i(j.value.createdBy||"-"),1)]),o("div",Pt,[o("span",null,i(s(a)("journey.timestamp")),1),o("strong",null,i($e(j.value.timestamp)),1)])]),j.value.pinned?(b(),He(s(Ue),{key:2,size:"small",type:"warning",bordered:!1},{default:I(()=>[O(i(s(a)("journey.pinned")),1)]),_:1})):A("",!0)]),_:1})):A("",!0)]),_:1},8,["show","width"])])])]))}})})),ua=Y((()=>{})),ca,da=Y((()=>{Gt(),Gt(),ua(),In(),ca=An(Ot,[["__scopeId","data-v-06d3ad6e"]])}));da();export{ca as default};
1
+ import{$i as I,$t as We,Bi as _n,Di as gn,Fi as hn,G as wn,Hi as b,M as bn,Nr as kn,Pr as jn,Qr as Mn,Ri as xn,Sa as i,Ti as N,Wi as Je,Zi as Oe,_a as s,_i as o,bi as S,ci as Sn,dn as Ue,dt as Cn,ei as Tn,gi as p,gt as Nn,lt as Ln,mi as Ke,n as In,pi as $n,si as En,t as An,ua as k,vi as He,wa as Y,wi as O,xa as ye,ya as pe,yi as A}from"./index-DN4SafrP.js";import{r as zn,t as Dn}from"./profiles-BK5JKD7h.js";import{l as Pn,s as Gn}from"./skills-a5LPwmiT.js";import{S as Rn,a as Bn,c as Vn,g as Fn,h as _e,i as Wn,l as Jn,n as On,o as Un,p as Kn,r as Hn,s as Xn,t as Yn,u as Zn,w as qn,y as Xe}from"./style-B5xXhBlp.js";async function Qn(){return Tn("/api/hermes/journey")}var ea=Y((()=>{Mn()}));function Rt(u){return u==null?"":u.replace(/\s+/gu," ").trim()}function Ye(u,c=140){if(!Number.isFinite(c))return"";const a=Math.floor(c);if(a<=0)return"";const r=Rt(u);if(!r)return"";const f=Array.from(r);return f.length<=a?r:a===1?"…":`${f.slice(0,a-1).join("").trimEnd()}…`}var ta,na=Y((()=>{ta=140}));function Te(u,c){const a=u.timestamp,r=c.timestamp;if(a&&r&&a!==r)return a-r;if(a&&!r)return-1;if(!a&&r)return 1;const f=(u.category||"").localeCompare(c.category||"");if(f!==0)return f;const m=(u.label||"").localeCompare(c.label||"");return m!==0?m:u.id.localeCompare(c.id)}function aa(u){const c=new Map,a=(r,f)=>{const m=c.get(r)||new Set;m.add(f),c.set(r,m)};for(const r of u)a(r.source,r.target),a(r.target,r.source);return c}function oa(u){const c=Math.max(1,u.length-1);return new Map(u.map((a,r)=>[a.id,r/c]))}function Ze(u,c,a){const r=[...a.get(u.id)||[]].map(f=>c.get(f)).filter(f=>f!==void 0);return r.length?r.reduce((f,m)=>f+m,0)/r.length:null}function qe(u,c,a){const r=oa(c);return[...u].sort((f,m)=>{const y=Ze(f,r,a),g=Ze(m,r,a);return y!==null&&g!==null&&y!==g?y-g:y!==null&&g===null?-1:y===null&&g!==null?1:Te(f,m)})}function la(u,c,a,r,f,m){const y=Math.floor(u/a),g=u%a,V=y*a,h=(a-Math.min(a,c-V))*m/2;return{x:r+y*f,y:h+g*m}}function ra(u,c,a={}){const r=new Set(u.map(d=>d.id)),f=aa(c.filter(d=>r.has(d.source)&&r.has(d.target)));let m=u.filter(d=>d.kind==="memory").sort(Te),y=u.filter(d=>d.kind!=="memory").sort(Te);for(let d=0;d<3;d+=1)y=qe(y,m,f),m=qe(m,y,f);const g=a.memoryX??Bt,V=a.verticalGap??Vt,h=a.columnGap??Ft,C=a.groupGap??Wt,z=Math.max(1,m.length,y.length),T=Math.max(1,Math.min(a.maxRows??Jt,z)),G=Math.max(1,Math.ceil(m.length/T)),w=m.length?a.skillX??g+G*h+C:g,L=(d,M,F,D,re)=>({id:d.id,column:F,degree:f.get(d.id)?.size||0,position:la(M,D,T,re,h,V)});return[...m.map((d,M)=>L(d,M,"memory",m.length,g)),...y.map((d,M)=>L(d,M,"skill",y.length,w))]}function ia(u,c){const a=new Set;for(const r of c)r.source===u&&a.add(r.target),r.target===u&&a.add(r.source);return a}var Bt,Vt,Ft,Wt,Jt,sa=Y((()=>{Bt=80,Vt=112,Ft=290,Wt=200,Jt=8})),Qe,et,tt,nt,at,ot,lt,rt,it,st,ut,ct,dt,vt,ft,mt,yt,pt,_t,gt,ht,wt,bt,kt,jt,Mt,xt,St,Ct,Tt,Nt,Lt,It,$t,Et,At,zt,Dt,Pt,Ot,Gt=Y((()=>{En(),bn(),Rn(),Zn(),Vn(),Un(),kn(),ea(),Pn(),Dn(),na(),sa(),Wn(),Hn(),On(),Yn(),Qe={class:"journey-view"},et={class:"page-header journey-view__header"},tt={class:"header-title"},nt={class:"journey-view__content"},at={class:"journey-panel"},ot={class:"journey-toolbar"},lt=["aria-label"],rt={class:"node-kind-legend__item"},it={class:"node-kind-legend__item"},st={key:0,class:"category-meter"},ut=["aria-label"],ct=["data-category","aria-label","aria-pressed","onMouseenter","onClick"],dt=["aria-label"],vt=["data-category","aria-pressed","onMouseenter","onClick"],ft={class:"journey-graph-layout"},mt=["aria-label"],yt=["onClick","onMouseenter","onMousemove","onMouseleave"],pt={class:"journey-node__topline"},_t={class:"journey-node__kind"},gt={class:"journey-node__category"},ht={class:"journey-node__title"},wt={class:"journey-node__meta"},bt={key:0},kt={key:1},jt={class:"journey-node-tooltip__name"},Mt={key:0,class:"journey-node-tooltip__description"},xt={key:0,class:"journey-empty"},St={class:"journey-hud"},Ct={class:"drawer-title-row"},Tt={key:0,class:"memory-card"},Nt={class:"detail-card-label"},Lt={key:1,class:"memory-card"},It={class:"detail-card-label"},$t={class:"detail-card"},Et={class:"detail-grid"},At={class:"detail-item"},zt={class:"detail-item"},Dt={class:"detail-item"},Pt={class:"detail-item"},Ot=gn({__name:"JourneyView",setup(u){const c=["#4f8cff","#ff4fa3","#38c976","#f6c542","#9b6cff","#ff7a45","#22c7d8","#e84d5b","#7cb342","#d66efd","#00a884","#ff9f1a"],{t:a}=jn(),r=Nn(),f=zn(),{fitView:m}=qn("hermes-journey"),y=k(null),g=k(!1),V=k(null),h=k(""),C=k(""),z=k(""),T=k([]),G=k(new Map),w=k(""),L=k({x:24,y:80}),d=k({width:1,height:1}),M=k(!1),F=k(-1),D=k(!1),re=k(380);let ie=null,Z=null,q=null,se="",Q=-1,$=!1,E=0,ee=0,W="idle",U=null;const R=p(()=>y.value?.graph.nodes||[]),Ut=p(()=>y.value?.graph.edges||[]),P=p(()=>new Map(R.value.map(e=>[e.id,e]))),j=p(()=>P.value.get(h.value)||null),K=p(()=>R.value.map((e,t)=>({node:e,index:t})).sort((e,t)=>{const n=e.node.timestamp,l=t.node.timestamp;return n&&l&&n!==l?n-l:n&&!l?-1:!n&&l?1:e.index-t.index}).map(e=>e.node)),Kt=p(()=>F.value<0?null:new Set(K.value.slice(0,F.value+1).map(e=>e.id))),J=p(()=>{const e=Kt.value;return e?R.value.filter(t=>e.has(t.id)):R.value}),ue=p(()=>new Set(J.value.map(e=>e.id))),ce=p(()=>Ut.value.filter(e=>ue.value.has(e.source)&&ue.value.has(e.target))),te=p(()=>new Set(T.value)),ne=p(()=>{const e=new Set(T.value);return z.value&&e.add(z.value),e}),ae=p(()=>h.value||C.value),Ht=p(()=>ae.value?ia(ae.value,ce.value):new Set),ge=p(()=>{const e=new Map;for(const t of J.value){const n=t.category||"general",l=e.get(n);l?l.count+=1:e.set(n,{category:n,label:t.category||a("journey.noCategory"),color:he(n),count:1})}return[...e.values()].sort((t,n)=>n.count-t.count||t.label.localeCompare(n.label))}),Xt=p(()=>Math.max(1,J.value.length)),de=p(()=>w.value&&P.value.get(w.value)||null),Yt=p(()=>de.value?.label||de.value?.id||""),Ne=p(()=>{const e=de.value;return e?B(e)?Ye(we(e)):Ye(Ee(e)):""}),Le=p(()=>{const e=j.value;return e&&!B(e)?Ee(e):""}),Zt=p(()=>`${a("journey.title")}. ${J.value.length} ${a("journey.nodes")}. ${a("journey.canvasInstructions")}`),qt=p(()=>{const n=L.value.x+14+320<=d.value.width?L.value.x+14:Math.max(8,L.value.x-320-14),l=L.value.y>d.value.height-150;return{left:`${n}px`,top:`${Math.max(8,L.value.y+(l?-14:14))}px`,transform:l?"translateY(-100%)":void 0}}),Ie=p(()=>{const e=Math.max(3,Math.min(8,Math.floor((d.value.height-72)/112))),t=ra(J.value,ce.value,{maxRows:e}),n=!!ae.value,l=ne.value.size>0;return t.map(_=>{const v=P.value.get(_.id),x=v.category||"general",H=ae.value===v.id,X=Ht.value.has(v.id),yn=ne.value.has(x),pn=n?!H&&!X:l&&!yn;return{id:v.id,type:"journey",position:_.position,draggable:!1,selectable:!1,connectable:!1,focusable:!1,sourcePosition:_e.Right,targetPosition:_e.Left,style:{width:"240px",pointerEvents:"all",zIndex:H?4:X?3:1},data:{node:v,column:_.column,degree:_.degree,color:he(x),categoryLabel:v.category||a("journey.noCategory"),timestampLabel:$e(v.timestamp),kindLabel:B(v)?a("journey.memories"):a("journey.skills"),active:H,related:X,dimmed:pn}}})}),Qt=p(()=>{const e=ae.value,t=ne.value;return ce.value.map((n,l)=>{const _=P.value.get(n.source),v=P.value.get(n.target),x=!!(e&&(n.source===e||n.target===e)),H=!!(t.size&&(t.has(_?.category||"general")||t.has(v?.category||"general"))),X=x?he(v?.category||_?.category||"general"):"var(--text-muted)";return{id:`journey-edge:${n.source}:${n.target}:${l}`,source:n.source,target:n.target,type:"smoothstep",selectable:!1,focusable:!1,animated:M.value&&x,interactionWidth:0,markerEnd:{type:Kn.ArrowClosed,color:X,width:x?18:14,height:x?18:14},style:{stroke:X,strokeWidth:x?2.4:H?1.7:1.15,opacity:x?.95:H?.58:e?.08:.24},zIndex:x?3:0}})});function en(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function he(e){const t=[...new Set(R.value.map(n=>n.category||"general"))].sort().indexOf(e);return t>=0?c[t%c.length]:c[en(e)%c.length]}function $e(e){return e?new Date(e*1e3).toLocaleString():"-"}function B(e){return e?.kind==="memory"}function tn(e){return B(e)?e.label||e.category||a("journey.memories"):e.label||e.id}function nn(e){const t=Number(e.id.split(":").pop());return Number.isInteger(t)&&t>=0?t:null}function an(e){if(!e||!B(e))return null;const t=y.value?.graph.memory||[],n=nn(e);if(n!==null){const l=t[n];if(l&&(!e.memorySource||!l.source||l.source===e.memorySource))return l}return t.find(l=>(!e.memorySource||!l.source||l.source===e.memorySource)&&(!e.timestamp||!l.timestamp||l.timestamp===e.timestamp))||null}function we(e){const t=an(e);return t?.body||t?.title||e.label||""}function be(e,t){return`category:${e}\0${t}`}function ke(e){return`name:${e}`}function Ee(e){const t=e.category||"general",n=e.id.replace(/^skill:/,"");return Rt(G.value.get(be(t,e.label))||G.value.get(be(t,n))||G.value.get(ke(e.label))||G.value.get(ke(n))||"")}function on(e){const t=new Map,n=new Map,l=(_,v)=>{const x=n.get(_);n.set(_,{count:(x?.count||0)+1,description:x?.description||v})};for(const _ of e.categories||[])for(const v of _.skills||[])t.set(be(_.name,v.name),v.description||""),l(v.name,v.description||"");for(const _ of e.archived||[])l(_.name,_.description||"");for(const[_,v]of n)v.count===1&&t.set(ke(_),v.description);return t}function Ae(e){G.value=new Map,ee=e,W="idle",U=null}function ze(e=E){if($||e!==E)return;if(ee!==e&&Ae(e),W==="loaded"||W==="failed"||W==="loading")return U||void 0;W="loading";const t=Gn().then(n=>{$||e!==E||e!==ee||(G.value=on(n),W="loaded")}).catch(()=>{$||e!==E||e!==ee||(W="failed")});return U=t,t.finally(()=>{e===ee&&U===t&&(U=null)}),t}function je(e){B(e)||ze()}function ve(){q!==null&&window.clearTimeout(q),q=null,se=""}function fe(e=!1){ve(),w.value="",e&&(C.value="")}function Me(e){const t=V.value?.getBoundingClientRect();return{x:e.clientX-(t?.left||0),y:e.clientY-(t?.top||0)}}function De(e,t){L.value=t,C.value=e.id,!(w.value===e.id||se===e.id)&&(ve(),w.value="",se=e.id,q=window.setTimeout(()=>{q=null,se="",!$&&C.value===e.id&&(w.value=e.id,je(e))},250))}function ln(e,t){De(t,Me(e))}function rn(e,t){if(C.value!==t.id){De(t,Me(e));return}L.value=Me(e)}function sn(e){C.value===e&&fe(!0)}function Pe(e){T.value=te.value.has(e)?T.value.filter(t=>t!==e):[...T.value,e]}function Ge(e){const t=P.value.get(e);t&&(je(t),h.value=e,D.value=!0)}function un(){h.value="",T.value=[],D.value=!1,fe(!0)}function Re(){le(),oe(),Q=-1,h.value="",C.value="",z.value="",T.value=[],fe(),F.value=-1,D.value=!1}function me(e,t){const n=K.value.filter(v=>ue.value.has(v.id));if(!n.length)return;let l=n.findIndex(v=>v.id===w.value);l<0&&(l=Q>=0?Q:e>0?-1:0),Q=t===void 0?(l+e+n.length)%n.length:Math.max(0,Math.min(n.length-1,t));const _=n[Q];ve(),C.value=_.id,w.value=_.id,L.value={x:Math.min(Math.max(24,d.value.width/2),d.value.width-24),y:76},je(_)}function cn(e){if(e.key==="ArrowRight"||e.key==="ArrowDown"){e.preventDefault(),me(1);return}if(e.key==="ArrowLeft"||e.key==="ArrowUp"){e.preventDefault(),me(-1);return}if(e.key==="Home"||e.key==="End"){e.preventDefault();const t=K.value.filter(n=>ue.value.has(n.id)).length;me(0,e.key==="Home"?0:t-1);return}(e.key==="Enter"||e.key===" ")&&(w.value||me(1),w.value&&Ge(w.value),e.preventDefault())}function Be(e){e.key==="Escape"&&(Re(),e.preventDefault())}function xe(){ie&&(window.clearTimeout(ie),ie=null)}function oe(){Z&&(window.clearTimeout(Z),Z=null)}function le(){xe(),M.value=!1}function Ve(e){const t=K.value[e];if(!t){le();return}F.value=e,h.value=t.id,C.value=""}function Fe(){xe(),ie=window.setTimeout(()=>{const e=F.value+1;if(e>=K.value.length){le(),oe(),Z=window.setTimeout(()=>{h.value="",C.value="",Z=null},1e3);return}Ve(e),Fe()},150)}function dn(){if(M.value){le();return}K.value.length&&(oe(),M.value=!0,Ve(0),Fe())}function Se(){re.value=window.innerWidth<=640?window.innerWidth:380;const e=V.value?.getBoundingClientRect();e&&(d.value={width:e.width,height:e.height})}async function vn(){if(await hn(),!($||!Ie.value.length))try{await m({padding:.16,minZoom:.3,maxZoom:1,duration:220})}catch{}}async function Ce(e={}){const t=++E;le(),oe(),Ae(t),e.resetInteraction&&Re(),e.clearData&&(y.value=null),g.value=!0;try{const n=await Qn();if($||t!==E)return t;y.value=n,e.fitAfterLoad&&vn()}catch(n){if($||t!==E)return t;r.error(n?.message||a("journey.loadFailed"))}finally{!$&&t===E&&(g.value=!1)}return t}async function fn(){const e=await Ce();if($||e!==E)return;const t=new Set;D.value&&h.value&&t.add(h.value),w.value&&t.add(w.value),[...t].some(n=>{const l=P.value.get(n);return l&&!B(l)})&&await ze(e)}function mn(e){return e.data?.color||"#7f8c9a"}return _n(()=>{window.addEventListener("keydown",Be),window.addEventListener("resize",Se),Se(),Ce({fitAfterLoad:!0})}),xn(()=>{$=!0,E+=1,window.removeEventListener("keydown",Be),window.removeEventListener("resize",Se),xe(),oe(),ve()}),Oe(()=>f.activeProfileName||"default",(e,t)=>{e!==t&&Ce({clearData:!0,resetInteraction:!0,fitAfterLoad:!0})}),Oe(R,()=>{h.value&&!P.value.has(h.value)&&(h.value="",D.value=!1),w.value&&!P.value.has(w.value)&&fe(!0);const e=new Set(R.value.map(t=>t.category||"general"));T.value=T.value.filter(t=>e.has(t))}),(e,t)=>(b(),S("div",Qe,[o("header",et,[o("h2",tt,i(s(a)("journey.title")),1)]),o("div",nt,[o("div",at,[o("div",ot,[o("div",{class:"node-kind-legend","aria-label":s(a)("journey.nodeKinds")},[o("span",rt,[t[3]||(t[3]=o("i",{class:"node-kind-marker node-kind-marker--memory","aria-hidden":"true"},null,-1)),O(" "+i(s(a)("journey.memories")),1)]),t[5]||(t[5]=o("span",{class:"node-kind-legend__arrow","aria-hidden":"true"},"→",-1)),o("span",it,[t[4]||(t[4]=o("i",{class:"node-kind-marker node-kind-marker--skill","aria-hidden":"true"},null,-1)),O(" "+i(s(a)("journey.skills")),1)])],8,lt),N(s(We),{size:"small",disabled:!R.value.length,"aria-label":M.value?s(a)("journey.pause"):s(a)("journey.play"),title:M.value?s(a)("journey.pause"):s(a)("journey.play"),onClick:dn},{default:I(()=>[o("span",{class:pe(["playback-icon",{playing:M.value}]),"aria-hidden":"true"},null,2)]),_:1},8,["disabled","aria-label","title"]),N(s(We),{size:"small",loading:g.value,onClick:fn},{default:I(()=>[O(i(s(a)("journey.refresh")),1)]),_:1},8,["loading"])]),ge.value.length?(b(),S("div",st,[o("div",{class:"category-bar",role:"group","aria-label":s(a)("journey.categorySelection")},[(b(!0),S(Ke,null,Je(ge.value,n=>(b(),S("button",{key:n.category,type:"button",class:pe(["category-bar-segment",{active:ne.value.has(n.category),selected:te.value.has(n.category)}]),style:ye({"--category-color":n.color,flexGrow:n.count}),"data-category":n.category,"aria-label":`${n.label} ${n.count} / ${Math.round(n.count/Xt.value*100)}%`,"aria-pressed":te.value.has(n.category),onMouseenter:l=>z.value=n.category,onMouseleave:t[0]||(t[0]=l=>z.value=""),onClick:l=>Pe(n.category)},null,46,ct))),128))],8,ut),o("div",{class:"category-legend",role:"group","aria-label":s(a)("journey.categorySelection")},[(b(!0),S(Ke,null,Je(ge.value,n=>(b(),S("button",{key:n.category,type:"button",class:pe({active:ne.value.has(n.category),selected:te.value.has(n.category)}),"data-category":n.category,"aria-pressed":te.value.has(n.category),onMouseenter:l=>z.value=n.category,onMouseleave:t[1]||(t[1]=l=>z.value=""),onClick:l=>Pe(n.category)},[o("i",{style:ye({backgroundColor:n.color})},null,4),O(" "+i(n.label)+" · "+i(n.count),1)],42,vt))),128))],8,dt)])):A("",!0),N(s(wn),{show:g.value&&!y.value,class:"journey-spin"},{default:I(()=>[o("main",ft,[o("section",{ref_key:"graphWrapRef",ref:V,class:"journey-graph-wrap",tabindex:"0",role:"group","aria-label":Zt.value,onKeydown:cn},[N(s(Fn),{id:"hermes-journey",nodes:Ie.value,edges:Qt.value,"fit-view-on-init":!1,"default-viewport":{x:32,y:48,zoom:.84},"min-zoom":.25,"max-zoom":1.4,"nodes-draggable":!1,"nodes-connectable":!1,"elements-selectable":!1,"zoom-on-double-click":!1,class:"journey-flow",onPaneClick:un},{"node-journey":I(({data:n})=>[o("button",{type:"button",class:pe(["journey-node",[`journey-node--${n.column}`,{"is-active":n.active,"is-related":n.related,"is-dimmed":n.dimmed}]]),style:ye({"--node-color":n.color}),onClick:$n(l=>Ge(n.node.id),["stop"]),onMouseenter:l=>ln(l,n.node),onMousemove:l=>rn(l,n.node),onMouseleave:l=>sn(n.node.id)},[N(s(Xe),{type:"target",position:s(_e).Left,class:"journey-node__handle"},null,8,["position"]),N(s(Xe),{type:"source",position:s(_e).Right,class:"journey-node__handle"},null,8,["position"]),o("span",pt,[o("span",_t,[t[6]||(t[6]=o("i",{"aria-hidden":"true"},null,-1)),O(" "+i(n.kindLabel),1)]),o("span",gt,i(n.categoryLabel),1)]),o("strong",ht,i(n.node.label||n.node.id),1),o("span",wt,[n.timestampLabel!=="-"?(b(),S("span",bt,i(n.timestampLabel),1)):A("",!0),n.column==="skill"?(b(),S("span",kt,i(s(a)("journey.useCount"))+" "+i(n.node.useCount??0),1)):A("",!0),o("span",null,i(n.degree)+" "+i(s(a)("journey.edges")),1)])],46,yt)]),default:I(()=>[N(s(Jn),{gap:24,size:1.15,color:"var(--border-color)"}),N(s(Bn),{pannable:"",zoomable:"","node-color":mn}),N(s(Xn),{"show-interactive":!1})]),_:1},8,["nodes","edges"]),N(Sn,{name:"journey-tooltip"},{default:I(()=>[de.value?(b(),S("div",{key:0,class:"journey-node-tooltip",role:"tooltip",style:ye(qt.value)},[o("div",jt,i(Yt.value),1),Ne.value?(b(),S("div",Mt,i(Ne.value),1)):A("",!0)],4)):A("",!0)]),_:1}),!g.value&&!J.value.length?(b(),S("div",xt,i(s(a)("journey.noNodes")),1)):A("",!0),o("div",St,[o("span",null,i(y.value?.profile||"-"),1),o("span",null,i(J.value.length)+" "+i(s(a)("journey.nodes")),1),o("span",null,i(ce.value.length)+" "+i(s(a)("journey.edges")),1)])],40,mt)])]),_:1},8,["show"]),N(s(Cn),{show:D.value,"onUpdate:show":t[2]||(t[2]=n=>D.value=n),width:re.value,placement:"right"},{default:I(()=>[j.value?(b(),He(s(Ln),{key:0,class:"journey-detail-drawer","native-scrollbar":!1,closable:""},{header:I(()=>[o("div",Ct,[o("span",null,i(tn(j.value)),1),N(s(Ue),{size:"small",type:j.value.kind==="memory"?"info":"success",bordered:!1},{default:I(()=>[O(i(j.value.kind),1)]),_:1},8,["type"])])]),default:I(()=>[B(j.value)&&we(j.value)?(b(),S("div",Tt,[o("span",Nt,i(s(a)("journey.memories")),1),o("p",null,i(we(j.value)),1)])):A("",!0),Le.value?(b(),S("div",Lt,[o("span",It,i(s(a)("journey.description")),1),o("p",null,i(Le.value),1)])):A("",!0),o("div",$t,[t[7]||(t[7]=o("span",{class:"detail-card-label"},"ID",-1)),o("code",null,i(j.value.id),1)]),o("div",Et,[o("div",At,[o("span",null,i(s(a)("journey.category")),1),o("strong",null,i(j.value.category||"-"),1)]),o("div",zt,[o("span",null,i(s(a)("journey.useCount")),1),o("strong",null,i(j.value.useCount??0),1)]),o("div",Dt,[o("span",null,i(s(a)("journey.createdBy")),1),o("strong",null,i(j.value.createdBy||"-"),1)]),o("div",Pt,[o("span",null,i(s(a)("journey.timestamp")),1),o("strong",null,i($e(j.value.timestamp)),1)])]),j.value.pinned?(b(),He(s(Ue),{key:2,size:"small",type:"warning",bordered:!1},{default:I(()=>[O(i(s(a)("journey.pinned")),1)]),_:1})):A("",!0)]),_:1})):A("",!0)]),_:1},8,["show","width"])])])]))}})})),ua=Y((()=>{})),ca,da=Y((()=>{Gt(),Gt(),ua(),In(),ca=An(Ot,[["__scopeId","data-v-06d3ad6e"]])}));da();export{ca as default};