chainlesschain 0.162.29 → 0.162.31

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 (420) hide show
  1. package/package.json +2 -2
  2. package/src/assets/web-panel/assets/AIOps-BqWP6FKu.js +1 -0
  3. package/src/assets/web-panel/assets/AIOps-CSpp7iGY.css +1 -0
  4. package/src/assets/web-panel/assets/{ActionButton-wRdLFzBQ.js → ActionButton-CXwMgOvX.js} +1 -1
  5. package/src/assets/web-panel/assets/Analytics-DAebZ4IY.js +3 -0
  6. package/src/assets/web-panel/assets/Analytics-DJcHjy5J.css +1 -0
  7. package/src/assets/web-panel/assets/AppLayout-CYsqYoME.js +9 -0
  8. package/src/assets/web-panel/assets/AppLayout-VlanTjPw.css +1 -0
  9. package/src/assets/web-panel/assets/Audit-BbTtX1Nf.js +1 -0
  10. package/src/assets/web-panel/assets/Audit-D8oxP0wr.css +1 -0
  11. package/src/assets/web-panel/assets/Backup-DgqY2Eb-.js +1 -0
  12. package/src/assets/web-panel/assets/Backup-Wi9CaP3d.css +1 -0
  13. package/src/assets/web-panel/assets/BaseInput-Cq2ZuSoO.js +1 -0
  14. package/src/assets/web-panel/assets/Chat-D2kqpUyO.js +8 -0
  15. package/src/assets/web-panel/assets/Chat-DDh58PCf.css +1 -0
  16. package/src/assets/web-panel/assets/ChatBubbleRenderer-C-svYkrC.js +1 -0
  17. package/src/assets/web-panel/assets/ChatBubbleRenderer-gy5SDGw2.css +1 -0
  18. package/src/assets/web-panel/assets/{Checkbox-DoGqmF9g.js → Checkbox-_9swHpyc.js} +1 -1
  19. package/src/assets/web-panel/assets/Codegen-BB08p1fn.css +1 -0
  20. package/src/assets/web-panel/assets/Codegen-Cr9YbCPl.js +1 -0
  21. package/src/assets/web-panel/assets/{Col-C-9-jORK.js → Col--wdpCMxx.js} +1 -1
  22. package/src/assets/web-panel/assets/Community-Cbq1nrpo.css +1 -0
  23. package/src/assets/web-panel/assets/Community-DuFcVnLu.js +1 -0
  24. package/src/assets/web-panel/assets/{Compact-CemvxU3z.js → Compact-1yzYeT04.js} +1 -1
  25. package/src/assets/web-panel/assets/Compliance-Dq3aU9Df.js +1 -0
  26. package/src/assets/web-panel/assets/Compliance-NoXr2Vof.css +1 -0
  27. package/src/assets/web-panel/assets/Cowork-BlXJRu6L.css +1 -0
  28. package/src/assets/web-panel/assets/Cowork-CrWcnIg8.js +6 -0
  29. package/src/assets/web-panel/assets/Cron-Bh6fKZ0h.js +2 -0
  30. package/src/assets/web-panel/assets/Crosschain-8ofPaWVW.js +1 -0
  31. package/src/assets/web-panel/assets/Crosschain-CgRAecoR.css +1 -0
  32. package/src/assets/web-panel/assets/DID-D3EiYm3w.js +2 -0
  33. package/src/assets/web-panel/assets/DID-DVsYcgvs.css +1 -0
  34. package/src/assets/web-panel/assets/Dashboard-BFjEdFne.js +3 -0
  35. package/src/assets/web-panel/assets/Dashboard-CAPSdFR4.css +1 -0
  36. package/src/assets/web-panel/assets/Dropdown-pYVPcP6O.js +1 -0
  37. package/src/assets/web-panel/assets/EmailListRenderer-DTPZPx_S.css +1 -0
  38. package/src/assets/web-panel/assets/EmailListRenderer-zBPodwJ1.js +1 -0
  39. package/src/assets/web-panel/assets/FamilyGuardDashboard-CyQTW6PW.js +1 -0
  40. package/src/assets/web-panel/assets/FamilyGuardDashboard-nd3idUVb.css +1 -0
  41. package/src/assets/web-panel/assets/Federation-Ctaq3zYq.js +1 -0
  42. package/src/assets/web-panel/assets/Federation-fGN6iMX_.css +1 -0
  43. package/src/assets/web-panel/assets/FormItemContext-CWYJCLq1.js +2 -0
  44. package/src/assets/web-panel/assets/GenericCardRenderer-B1g6t9R9.js +1 -0
  45. package/src/assets/web-panel/assets/GenericCardRenderer-o85VDYQS.css +1 -0
  46. package/src/assets/web-panel/assets/{Git-DPuaGtg7.css → Git-BdHhxBWR.css} +1 -1
  47. package/src/assets/web-panel/assets/Git-DH-v8iwd.js +2 -0
  48. package/src/assets/web-panel/assets/Governance-DtCS4NDm.css +1 -0
  49. package/src/assets/web-panel/assets/Governance-jZxXvOs5.js +1 -0
  50. package/src/assets/web-panel/assets/Inference-D07LRghn.js +1 -0
  51. package/src/assets/web-panel/assets/Inference-t-w0NgIS.css +1 -0
  52. package/src/assets/web-panel/assets/KnowledgeGraph-4NU1S2Xm.css +1 -0
  53. package/src/assets/web-panel/assets/KnowledgeGraph-DnGtRZhx.js +1 -0
  54. package/src/assets/web-panel/assets/Logs-D2pM9C4W.js +2 -0
  55. package/src/assets/web-panel/assets/Logs-DQbCaYhL.css +1 -0
  56. package/src/assets/web-panel/assets/Marketplace-Bvo5cuGa.css +1 -0
  57. package/src/assets/web-panel/assets/Marketplace-UyIO7C7r.js +1 -0
  58. package/src/assets/web-panel/assets/McpTools-534Q95Mx.css +1 -0
  59. package/src/assets/web-panel/assets/McpTools-Bf1gvZPf.js +7 -0
  60. package/src/assets/web-panel/assets/Memory-C1bWj4RN.js +2 -0
  61. package/src/assets/web-panel/assets/Memory-CleW_R6V.css +1 -0
  62. package/src/assets/web-panel/assets/MobileBridge-C_Ot1H_a.js +3 -0
  63. package/src/assets/web-panel/assets/MobileBridge-zJpPuf4E.css +1 -0
  64. package/src/assets/web-panel/assets/MobileProjects-BD4alw6-.css +1 -0
  65. package/src/assets/web-panel/assets/MobileProjects-zr-PpsT_.js +1 -0
  66. package/src/assets/web-panel/assets/Mtc-CXZGO9Sh.css +1 -0
  67. package/src/assets/web-panel/assets/Mtc-CnzFUz5J.js +6 -0
  68. package/src/assets/web-panel/assets/MtcAudit-C1JM8esp.css +1 -0
  69. package/src/assets/web-panel/assets/MtcAudit-CAAh99wz.js +19 -0
  70. package/src/assets/web-panel/assets/Multisig-BryR2Jpr.css +1 -0
  71. package/src/assets/web-panel/assets/Multisig-D6IAg6HE.js +13 -0
  72. package/src/assets/web-panel/assets/NLProgramming-BFMarxb0.js +1 -0
  73. package/src/assets/web-panel/assets/NLProgramming-DGDHq6Z9.css +1 -0
  74. package/src/assets/web-panel/assets/Notes-BKKmMtqV.css +1 -0
  75. package/src/assets/web-panel/assets/Notes-BRp9ro3t.js +7 -0
  76. package/src/assets/web-panel/assets/NotificationSettings-C0Au3Cxb.js +1 -0
  77. package/src/assets/web-panel/assets/NotificationSettings-CG3Kfuef.css +1 -0
  78. package/src/assets/web-panel/assets/OrderTableRenderer-CfrDjSHT.css +1 -0
  79. package/src/assets/web-panel/assets/OrderTableRenderer-ISp6btRY.js +1 -0
  80. package/src/assets/web-panel/assets/Organization-DYoxLBRX.js +4 -0
  81. package/src/assets/web-panel/assets/Organization-LVvqwG0D.css +1 -0
  82. package/src/assets/web-panel/assets/{Overflow-BFxt7NlK.js → Overflow-rO8JJWGJ.js} +1 -1
  83. package/src/assets/web-panel/assets/{OverrideContext-C_4H9tGA.js → OverrideContext-C2r4vyBb.js} +1 -1
  84. package/src/assets/web-panel/assets/P2P-DJleeXIK.js +2 -0
  85. package/src/assets/web-panel/assets/P2P-DcFvP7F-.css +1 -0
  86. package/src/assets/web-panel/assets/PdhVaultBrowser-DM5qghFp.js +7 -0
  87. package/src/assets/web-panel/assets/PdhVaultBrowser-DZZrUOr1.css +1 -0
  88. package/src/assets/web-panel/assets/Permissions-D5v4Beya.js +4 -0
  89. package/src/assets/web-panel/assets/Permissions-DsPE_IQy.css +1 -0
  90. package/src/assets/web-panel/assets/PersonalDataHub-BhpRlh9D.css +1 -0
  91. package/src/assets/web-panel/assets/PersonalDataHub-c2ZTX0Pv.js +9 -0
  92. package/src/assets/web-panel/assets/Pipeline-BItr5CyP.css +1 -0
  93. package/src/assets/web-panel/assets/Pipeline-Crrkyhpz.js +1 -0
  94. package/src/assets/web-panel/assets/Privacy-DZVyrJKa.js +1 -0
  95. package/src/assets/web-panel/assets/Privacy-F_ENsxZk.css +1 -0
  96. package/src/assets/web-panel/assets/ProjectInit-B86LEzDL.css +1 -0
  97. package/src/assets/web-panel/assets/ProjectInit-DKg7J0gz.js +2 -0
  98. package/src/assets/web-panel/assets/ProjectSettings-3ndmTvVH.js +2 -0
  99. package/src/assets/web-panel/assets/ProjectSettings-DK7KA_iX.css +1 -0
  100. package/src/assets/web-panel/assets/Projects-CmJeUDBW.css +1 -0
  101. package/src/assets/web-panel/assets/Projects-ll5wnj2L.js +1 -0
  102. package/src/assets/web-panel/assets/Providers-BeqBVMhB.js +1 -0
  103. package/src/assets/web-panel/assets/Providers-C6q_fvea.css +1 -0
  104. package/src/assets/web-panel/assets/QuickAsk-DKAAxzuA.js +1 -0
  105. package/src/assets/web-panel/assets/Recommend-Byu7IGei.js +1 -0
  106. package/src/assets/web-panel/assets/Recommend-D_bf91K6.css +1 -0
  107. package/src/assets/web-panel/assets/Reputation-BKhWAmCu.js +1 -0
  108. package/src/assets/web-panel/assets/Reputation-DiOsOleI.css +1 -0
  109. package/src/assets/web-panel/assets/Row-BFtn11O6.js +1 -0
  110. package/src/assets/web-panel/assets/RssFeed-CjcbkyUb.css +1 -0
  111. package/src/assets/web-panel/assets/RssFeed-D5a0PT0k.js +3 -0
  112. package/src/assets/web-panel/assets/Search-DAkuaZNe.js +1 -0
  113. package/src/assets/web-panel/assets/Search-Klk29S7C.css +1 -0
  114. package/src/assets/web-panel/assets/Security-BmrukMHn.css +1 -0
  115. package/src/assets/web-panel/assets/Security-C79Ml2Ms.js +4 -0
  116. package/src/assets/web-panel/assets/Services-BBk_jH6-.js +2 -0
  117. package/src/assets/web-panel/assets/Services-DAnVNhUG.css +1 -0
  118. package/src/assets/web-panel/assets/{Skeleton-DL5ebkDK.js → Skeleton-Cy0VvL0M.js} +1 -1
  119. package/src/assets/web-panel/assets/Skills-BUu9owbR.css +1 -0
  120. package/src/assets/web-panel/assets/Skills-OQNky3uI.js +1 -0
  121. package/src/assets/web-panel/assets/Sla-CbX1f8xN.js +1 -0
  122. package/src/assets/web-panel/assets/Sla-sodqCU4a.css +1 -0
  123. package/src/assets/web-panel/assets/SpeechSettings-BIkoUjws.js +1 -0
  124. package/src/assets/web-panel/assets/SpeechSettings-CgB9nFyq.css +1 -0
  125. package/src/assets/web-panel/assets/SyncSettings-B3hJqmBP.css +1 -0
  126. package/src/assets/web-panel/assets/SyncSettings-DG6Swk7G.js +2 -0
  127. package/src/assets/web-panel/assets/Tasks-C9R8sgyi.js +1 -0
  128. package/src/assets/web-panel/assets/Tasks-nbTUVXvt.css +1 -0
  129. package/src/assets/web-panel/assets/Templates-AaJPeCIz.js +1 -0
  130. package/src/assets/web-panel/assets/Templates-CpFsKk_l.css +1 -0
  131. package/src/assets/web-panel/assets/Tenant-MuPJnOjk.css +1 -0
  132. package/src/assets/web-panel/assets/Tenant-jVFRofww.js +1 -0
  133. package/src/assets/web-panel/assets/Terminal-DHBMzfK6.js +3 -0
  134. package/src/assets/web-panel/assets/Terminal-DHoveJwj.css +1 -0
  135. package/src/assets/web-panel/assets/TimelineRenderer-9RFfOHSI.js +1 -0
  136. package/src/assets/web-panel/assets/TimelineRenderer-BlTAtkOc.css +1 -0
  137. package/src/assets/web-panel/assets/Tokens-CynVae-o.css +1 -0
  138. package/src/assets/web-panel/assets/Tokens-ZTfwuABF.js +1 -0
  139. package/src/assets/web-panel/assets/{Trigger-Rzs-a8Xf.js → Trigger-Xo7uZNQs.js} +1 -1
  140. package/src/assets/web-panel/assets/Trust-C-WrW0Fj.css +1 -0
  141. package/src/assets/web-panel/assets/Trust-C0cTPYvn.js +1 -0
  142. package/src/assets/web-panel/assets/UkeySign-DmMKio71.js +1 -0
  143. package/src/assets/web-panel/assets/VideoEditing-BDFghpzP.css +1 -0
  144. package/src/assets/web-panel/assets/VideoEditing-DP7B-oGT.js +1 -0
  145. package/src/assets/web-panel/assets/Wallet-B1kZDARo.js +4 -0
  146. package/src/assets/web-panel/assets/Wallet-DUbpTRcg.css +1 -0
  147. package/src/assets/web-panel/assets/WebAuthn-Bo5kBx27.js +5 -0
  148. package/src/assets/web-panel/assets/WebAuthn-CVAFRfCQ.css +1 -0
  149. package/src/assets/web-panel/assets/WorkflowEditor-429lPWYk.css +1 -0
  150. package/src/assets/web-panel/assets/WorkflowEditor-DGI9SNHH.js +1 -0
  151. package/src/assets/web-panel/assets/{_getTag-BVc6NQ_K.js → _getTag-DnrRH4E6.js} +1 -1
  152. package/src/assets/web-panel/assets/{chat-C7tndXfg.js → chat-y97W1CIG.js} +1 -1
  153. package/src/assets/web-panel/assets/{collapseMotion-DfnRZex1.js → collapseMotion-mxzzcDsg.js} +1 -1
  154. package/src/assets/web-panel/assets/{colors-dUAGx-eS.js → colors-DtTNo0sH.js} +1 -1
  155. package/src/assets/web-panel/assets/{compact-item-X13u92RU.js → compact-item-D0q0exuS.js} +1 -1
  156. package/src/assets/web-panel/assets/createContext-D7pLFs2I.js +1 -0
  157. package/src/assets/web-panel/assets/{debounce-D9xTw4Sx.js → debounce-CFGTTtN3.js} +1 -1
  158. package/src/assets/web-panel/assets/devWarning-BDK34w0I.js +1 -0
  159. package/src/assets/web-panel/assets/echarts-jxgIOFUZ.js +25 -0
  160. package/src/assets/web-panel/assets/{hasIn-DGFXWm7Y.js → hasIn-CXjG5B2j.js} +1 -1
  161. package/src/assets/web-panel/assets/{icons--SBOhPAi.js → icons-DP3uiYxy.js} +4 -4
  162. package/src/assets/web-panel/assets/{index-Deh_HoQ3.js → index-1dwtkcJv.js} +2 -2
  163. package/src/assets/web-panel/assets/index-4mWZhCzz.js +1 -0
  164. package/src/assets/web-panel/assets/index-6np5ESBM.js +1 -0
  165. package/src/assets/web-panel/assets/{index-Bewc5jaO.js → index-8jxbZupG.js} +1 -1
  166. package/src/assets/web-panel/assets/{index-DW1GR68q.js → index-B3y_4OdG.js} +1 -1
  167. package/src/assets/web-panel/assets/index-B4dPdrvC.js +1 -0
  168. package/src/assets/web-panel/assets/index-B6SaRuCI.js +1 -0
  169. package/src/assets/web-panel/assets/index-B9ekWb3I.js +1 -0
  170. package/src/assets/web-panel/assets/index-BJUf19Wd.js +73 -0
  171. package/src/assets/web-panel/assets/index-BO644Q4S.js +21 -0
  172. package/src/assets/web-panel/assets/index-BPXhU-jp.js +7 -0
  173. package/src/assets/web-panel/assets/index-BU944DeT.js +31 -0
  174. package/src/assets/web-panel/assets/index-B_hjkMtX.js +3 -0
  175. package/src/assets/web-panel/assets/index-BdhEYW2a.js +1 -0
  176. package/src/assets/web-panel/assets/{index-DBfn83eM.js → index-BgmvrPJH.js} +1 -1
  177. package/src/assets/web-panel/assets/index-BgyrM0UN.js +19 -0
  178. package/src/assets/web-panel/assets/{index-Cq-fdWWC.js → index-BnLrbXDA.js} +1 -1
  179. package/src/assets/web-panel/assets/{index-C54Ydkuz.js → index-BqVjUN8b.js} +4 -4
  180. package/src/assets/web-panel/assets/index-BzCPx1cq.js +21 -0
  181. package/src/assets/web-panel/assets/index-CFsPe2N7.js +3 -0
  182. package/src/assets/web-panel/assets/{index-C14mc-46.js → index-CKrbutAQ.js} +1 -1
  183. package/src/assets/web-panel/assets/index-CSdhC7Qo.js +1 -0
  184. package/src/assets/web-panel/assets/{index-BqX3jeij.js → index-Cbqu804A.js} +1 -1
  185. package/src/assets/web-panel/assets/{index-CvlrcZKy.js → index-CkGFqlYX.js} +4 -4
  186. package/src/assets/web-panel/assets/{index-CfX1DEtk.css → index-Cq93VfoF.css} +1 -1
  187. package/src/assets/web-panel/assets/index-Ct6xtKkc.js +1 -0
  188. package/src/assets/web-panel/assets/index-DY6KLlgG.js +1 -0
  189. package/src/assets/web-panel/assets/index-D_4WcI1V.js +13 -0
  190. package/src/assets/web-panel/assets/{index-Ced-t9AY.js → index-DjCawXk1.js} +3 -3
  191. package/src/assets/web-panel/assets/index-Dr45Nm9V.js +55 -0
  192. package/src/assets/web-panel/assets/index-EaIfumgW.js +1 -0
  193. package/src/assets/web-panel/assets/index-POaFzYGS.js +1 -0
  194. package/src/assets/web-panel/assets/index-TrBGgrwG.js +1 -0
  195. package/src/assets/web-panel/assets/{index-DrH9uW99.js → index-YWOEx3rP.js} +2 -2
  196. package/src/assets/web-panel/assets/{index-DZMiVgXE.js → index-_3wPBMKt.js} +1 -1
  197. package/src/assets/web-panel/assets/{index-CBnkvGxd.js → index-aarO4HT9.js} +1 -1
  198. package/src/assets/web-panel/assets/index-bVJvqDAz.js +1 -0
  199. package/src/assets/web-panel/assets/{index-BipKV1Yr.js → index-gFLQe31v.js} +2 -2
  200. package/src/assets/web-panel/assets/index-kvV0f4tV.js +12 -0
  201. package/src/assets/web-panel/assets/index-qoB3whR9.js +12 -0
  202. package/src/assets/web-panel/assets/{initDefaultProps-B8zdOlFC.js → initDefaultProps-BnXISaAa.js} +1 -1
  203. package/src/assets/web-panel/assets/{isPlainObject-_gz-soRW.js → isPlainObject-BWRMT62c.js} +1 -1
  204. package/src/assets/web-panel/assets/isSymbol-S5WZT7lS.js +1 -0
  205. package/src/assets/web-panel/assets/motion-ChY7C0zJ.js +11 -0
  206. package/src/assets/web-panel/assets/{move-BioqdqDn.js → move-ByFZMFM5.js} +1 -1
  207. package/src/assets/web-panel/assets/{mtc-parser-Cc3pB9Xm.js → mtc-parser-BbAbUB-9.js} +1 -1
  208. package/src/assets/web-panel/assets/{omit-C1hn14Vc.js → omit-BYeliY1H.js} +1 -1
  209. package/src/assets/web-panel/assets/{pickAttrs-DgVG8oMj.js → pickAttrs-B9dcAKnu.js} +1 -1
  210. package/src/assets/web-panel/assets/{placementArrow-cJY6hoXZ.js → placementArrow-D3F_txz7.js} +1 -1
  211. package/src/assets/web-panel/assets/{responsiveObserve-DbUdURRx.js → responsiveObserve-ClkwY7wS.js} +1 -1
  212. package/src/assets/web-panel/assets/{slide-C2OEWnC4.js → slide-BNgy2Eea.js} +1 -1
  213. package/src/assets/web-panel/assets/{statusUtils-DghgcGqm.js → statusUtils-Bv3heMCD.js} +1 -1
  214. package/src/assets/web-panel/assets/{styleChecker-GoQ7uwU1.js → styleChecker-DVdlHbQm.js} +1 -1
  215. package/src/assets/web-panel/assets/useFlexGapSupport-alrRY5BK.js +1 -0
  216. package/src/assets/web-panel/assets/{useFs-CZCJDMup.js → useFs-CcVh0-Vu.js} +1 -1
  217. package/src/assets/web-panel/assets/{useMergedState-WwedrFR0.js → useMergedState-Cl2q1fes.js} +1 -1
  218. package/src/assets/web-panel/assets/{usePersonalDataHub-BjAS9b7w.js → usePersonalDataHub-CkkHPhyq.js} +1 -1
  219. package/src/assets/web-panel/assets/{useRefs-Cdq8EWeF.js → useRefs-DD9q4mOT.js} +1 -1
  220. package/src/assets/web-panel/assets/{useState-DGS1NOyn.js → useState-BK4hy8Ma.js} +1 -1
  221. package/src/assets/web-panel/assets/vendor-BvqAck49.js +42 -0
  222. package/src/assets/web-panel/assets/vnode-DWi0X9WN.js +1 -0
  223. package/src/assets/web-panel/assets/{zoom-CzyiNxpd.js → zoom-DCbqxxLH.js} +1 -1
  224. package/src/assets/web-panel/index.html +4 -4
  225. package/src/commands/agent.js +306 -1
  226. package/src/commands/ask.js +35 -1
  227. package/src/commands/checkpoint.js +239 -0
  228. package/src/commands/cost.js +114 -0
  229. package/src/commands/session.js +22 -2
  230. package/src/index.js +4 -0
  231. package/src/lib/file-checkpoint.js +300 -0
  232. package/src/lib/llm-pricing.js +227 -0
  233. package/src/lib/personal-data-hub-wiring.js +30 -0
  234. package/src/lib/recent-session.js +72 -0
  235. package/src/lib/session-picker.js +68 -0
  236. package/src/repl/agent-repl.js +58 -2
  237. package/src/repl/chat-repl.js +16 -1
  238. package/src/runtime/agent-core.js +68 -31
  239. package/src/runtime/fallback-model.js +109 -0
  240. package/src/runtime/file-ref-expander.js +258 -0
  241. package/src/runtime/headless-runner.js +576 -0
  242. package/src/runtime/headless-stream.js +302 -0
  243. package/src/runtime/policies/agent-policy.js +6 -0
  244. package/src/runtime/quiet-stdout.js +35 -0
  245. package/src/runtime/system-prompt.js +60 -0
  246. package/src/assets/web-panel/assets/AIOps-BWWsdf3s.js +0 -1
  247. package/src/assets/web-panel/assets/AIOps-Cchx1iXI.css +0 -1
  248. package/src/assets/web-panel/assets/Analytics-C1-TXmTC.css +0 -1
  249. package/src/assets/web-panel/assets/Analytics-CU1ellhG.js +0 -3
  250. package/src/assets/web-panel/assets/AppLayout-9pWRQa_t.css +0 -1
  251. package/src/assets/web-panel/assets/AppLayout-cXY-mRTd.js +0 -3
  252. package/src/assets/web-panel/assets/Audit-6ZMsXmrO.css +0 -1
  253. package/src/assets/web-panel/assets/Audit-CtQuC6zy.js +0 -1
  254. package/src/assets/web-panel/assets/Backup-CY9QozR7.css +0 -1
  255. package/src/assets/web-panel/assets/Backup-WeATa8CV.js +0 -1
  256. package/src/assets/web-panel/assets/BaseInput-BCu2Cejw.js +0 -1
  257. package/src/assets/web-panel/assets/Chat-Bj0XPlH8.js +0 -7
  258. package/src/assets/web-panel/assets/Chat-IlrLB9ZV.css +0 -1
  259. package/src/assets/web-panel/assets/ChatBubbleRenderer-Bpp2sN9W.js +0 -1
  260. package/src/assets/web-panel/assets/ChatBubbleRenderer-CO908iBt.css +0 -1
  261. package/src/assets/web-panel/assets/Codegen-BLP7id2a.css +0 -1
  262. package/src/assets/web-panel/assets/Codegen-PeBhNei5.js +0 -1
  263. package/src/assets/web-panel/assets/Community-BvaB_Wcs.js +0 -1
  264. package/src/assets/web-panel/assets/Community-C2RejeOY.css +0 -1
  265. package/src/assets/web-panel/assets/Compliance-DOys4Ov1.css +0 -1
  266. package/src/assets/web-panel/assets/Compliance-DjquEqsU.js +0 -1
  267. package/src/assets/web-panel/assets/Cowork-Bv6Tm40_.js +0 -6
  268. package/src/assets/web-panel/assets/Cowork-DsOst4XK.css +0 -1
  269. package/src/assets/web-panel/assets/Cron-D9fPIXV8.js +0 -2
  270. package/src/assets/web-panel/assets/Crosschain-C0WilDBF.js +0 -1
  271. package/src/assets/web-panel/assets/Crosschain-C7Le4Pte.css +0 -1
  272. package/src/assets/web-panel/assets/DID-BX6k3jZi.css +0 -1
  273. package/src/assets/web-panel/assets/DID-CiGeAI1K.js +0 -2
  274. package/src/assets/web-panel/assets/Dashboard-MFDcsVcM.css +0 -1
  275. package/src/assets/web-panel/assets/Dashboard-zqQuizB8.js +0 -3
  276. package/src/assets/web-panel/assets/Dropdown-_Mjb8yOR.js +0 -1
  277. package/src/assets/web-panel/assets/EmailListRenderer-C369EVhV.js +0 -1
  278. package/src/assets/web-panel/assets/EmailListRenderer-CVJ1j3Ll.css +0 -1
  279. package/src/assets/web-panel/assets/FamilyGuardDashboard-D8WsrCmn.js +0 -1
  280. package/src/assets/web-panel/assets/FamilyGuardDashboard-Df-D09Q4.css +0 -1
  281. package/src/assets/web-panel/assets/Federation-CgmfLbx1.css +0 -1
  282. package/src/assets/web-panel/assets/Federation-Dq7CrAzj.js +0 -1
  283. package/src/assets/web-panel/assets/FormItemContext-C7TvuLVK.js +0 -1
  284. package/src/assets/web-panel/assets/GenericCardRenderer-BJUR1Emh.js +0 -1
  285. package/src/assets/web-panel/assets/GenericCardRenderer-DtJFcJYl.css +0 -1
  286. package/src/assets/web-panel/assets/Git-B5MdAp15.js +0 -2
  287. package/src/assets/web-panel/assets/Governance-BIbPWlSM.js +0 -1
  288. package/src/assets/web-panel/assets/Governance-BoipmXaM.css +0 -1
  289. package/src/assets/web-panel/assets/Inference-BWxYJF9-.css +0 -1
  290. package/src/assets/web-panel/assets/Inference-vOz9J05E.js +0 -1
  291. package/src/assets/web-panel/assets/KnowledgeGraph-B_vUO-Td.js +0 -1
  292. package/src/assets/web-panel/assets/KnowledgeGraph-CztPDA96.css +0 -1
  293. package/src/assets/web-panel/assets/Logs-BwPfxX3p.js +0 -2
  294. package/src/assets/web-panel/assets/Logs-Gf_Mv9Nx.css +0 -1
  295. package/src/assets/web-panel/assets/Marketplace-Djp5q9dS.css +0 -1
  296. package/src/assets/web-panel/assets/Marketplace-T5HNwUjX.js +0 -1
  297. package/src/assets/web-panel/assets/McpTools-CDjHmzxH.css +0 -1
  298. package/src/assets/web-panel/assets/McpTools-CuKeBPxy.js +0 -5
  299. package/src/assets/web-panel/assets/Memory-Bcc2hxOA.css +0 -1
  300. package/src/assets/web-panel/assets/Memory-DmRW_sTE.js +0 -2
  301. package/src/assets/web-panel/assets/MobileBridge-DK2N_MJA.js +0 -3
  302. package/src/assets/web-panel/assets/MobileBridge-DwxX55b_.css +0 -1
  303. package/src/assets/web-panel/assets/MobileProjects-Ceaxrqzc.css +0 -1
  304. package/src/assets/web-panel/assets/MobileProjects-wl3bXCnJ.js +0 -1
  305. package/src/assets/web-panel/assets/Mtc-C8e0941i.js +0 -6
  306. package/src/assets/web-panel/assets/Mtc-DHwbdUqA.css +0 -1
  307. package/src/assets/web-panel/assets/MtcAudit-B0x8gahq.css +0 -1
  308. package/src/assets/web-panel/assets/MtcAudit-Cwigy2IR.js +0 -19
  309. package/src/assets/web-panel/assets/Multisig-BSfh_ncy.js +0 -7
  310. package/src/assets/web-panel/assets/Multisig-kwPDnXnl.css +0 -1
  311. package/src/assets/web-panel/assets/NLProgramming-BwzJAfJg.js +0 -1
  312. package/src/assets/web-panel/assets/NLProgramming-CLOvy-35.css +0 -1
  313. package/src/assets/web-panel/assets/Notes-COE2q2gD.css +0 -1
  314. package/src/assets/web-panel/assets/Notes-uilHH6hE.js +0 -7
  315. package/src/assets/web-panel/assets/NotificationSettings-Co0e0uEO.css +0 -1
  316. package/src/assets/web-panel/assets/NotificationSettings-DvM3DTPW.js +0 -1
  317. package/src/assets/web-panel/assets/OrderTableRenderer-BIEm3hZl.js +0 -1
  318. package/src/assets/web-panel/assets/OrderTableRenderer-BnOISpKI.css +0 -1
  319. package/src/assets/web-panel/assets/Organization-BX-cIO8M.css +0 -1
  320. package/src/assets/web-panel/assets/Organization-zxWoIwYM.js +0 -4
  321. package/src/assets/web-panel/assets/P2P-BsbToYKZ.js +0 -2
  322. package/src/assets/web-panel/assets/P2P-Cx88UaiD.css +0 -1
  323. package/src/assets/web-panel/assets/PdhVaultBrowser-B9ZGFpn4.css +0 -1
  324. package/src/assets/web-panel/assets/PdhVaultBrowser-VU8vfhsS.js +0 -7
  325. package/src/assets/web-panel/assets/Permissions-C10Sd26B.js +0 -4
  326. package/src/assets/web-panel/assets/Permissions-C9WlkGl-.css +0 -1
  327. package/src/assets/web-panel/assets/PersonalDataHub-Bz5u9Gth.css +0 -1
  328. package/src/assets/web-panel/assets/PersonalDataHub-edJB7VeU.js +0 -2
  329. package/src/assets/web-panel/assets/Pipeline-DxkXqrH2.css +0 -1
  330. package/src/assets/web-panel/assets/Pipeline-qNmVxn5A.js +0 -1
  331. package/src/assets/web-panel/assets/Privacy-CrsfSFKd.css +0 -1
  332. package/src/assets/web-panel/assets/Privacy-h78XF7eO.js +0 -1
  333. package/src/assets/web-panel/assets/ProjectInit-C9-vm1no.js +0 -2
  334. package/src/assets/web-panel/assets/ProjectInit-CteEo-wF.css +0 -1
  335. package/src/assets/web-panel/assets/ProjectSettings-DpDNsQTb.js +0 -2
  336. package/src/assets/web-panel/assets/ProjectSettings-pLSae-wy.css +0 -1
  337. package/src/assets/web-panel/assets/Projects-BX-SG9R4.css +0 -1
  338. package/src/assets/web-panel/assets/Projects-CwU3W4RD.js +0 -1
  339. package/src/assets/web-panel/assets/Providers-BNI-WkmA.css +0 -1
  340. package/src/assets/web-panel/assets/Providers-C3KZlUEI.js +0 -1
  341. package/src/assets/web-panel/assets/QuickAsk-CILvLGze.js +0 -1
  342. package/src/assets/web-panel/assets/Recommend-CH6wKzGo.css +0 -1
  343. package/src/assets/web-panel/assets/Recommend-XfFlk3BY.js +0 -1
  344. package/src/assets/web-panel/assets/Reputation-BqmWvaMD.js +0 -1
  345. package/src/assets/web-panel/assets/Reputation-D6VPNEd0.css +0 -1
  346. package/src/assets/web-panel/assets/Row-BEbjCI_X.js +0 -1
  347. package/src/assets/web-panel/assets/RssFeed-BlFC20eg.css +0 -1
  348. package/src/assets/web-panel/assets/RssFeed-CFukIl-a.js +0 -3
  349. package/src/assets/web-panel/assets/Search-B6RalzTB.css +0 -1
  350. package/src/assets/web-panel/assets/Search-dVPkf1o2.js +0 -1
  351. package/src/assets/web-panel/assets/Security-13K57V_v.css +0 -1
  352. package/src/assets/web-panel/assets/Security-DlRFaUrn.js +0 -4
  353. package/src/assets/web-panel/assets/Services-C8Qs6KXv.css +0 -1
  354. package/src/assets/web-panel/assets/Services-DKy7AjpA.js +0 -2
  355. package/src/assets/web-panel/assets/Skills-BEqnpg2j.js +0 -1
  356. package/src/assets/web-panel/assets/Skills-BdjRyorN.css +0 -1
  357. package/src/assets/web-panel/assets/Sla-CZ9_lzPI.js +0 -1
  358. package/src/assets/web-panel/assets/Sla-K19oOyQc.css +0 -1
  359. package/src/assets/web-panel/assets/SpeechSettings-DVSY_ehZ.js +0 -1
  360. package/src/assets/web-panel/assets/SpeechSettings-DYPJTDKz.css +0 -1
  361. package/src/assets/web-panel/assets/SyncSettings-C6cDrwDR.css +0 -1
  362. package/src/assets/web-panel/assets/SyncSettings-DgvsRpGt.js +0 -1
  363. package/src/assets/web-panel/assets/Tasks-BJjN_YEm.css +0 -1
  364. package/src/assets/web-panel/assets/Tasks-L5qXKsxK.js +0 -1
  365. package/src/assets/web-panel/assets/Templates-BWTV8-2E.css +0 -1
  366. package/src/assets/web-panel/assets/Templates-DR4VBx7q.js +0 -1
  367. package/src/assets/web-panel/assets/Tenant-D3zkSAV0.css +0 -1
  368. package/src/assets/web-panel/assets/Tenant-jMyaK184.js +0 -1
  369. package/src/assets/web-panel/assets/Terminal-DA5gjCiE.js +0 -3
  370. package/src/assets/web-panel/assets/Terminal-G1DrFtKr.css +0 -1
  371. package/src/assets/web-panel/assets/TimelineRenderer-BM17JHyr.js +0 -1
  372. package/src/assets/web-panel/assets/TimelineRenderer-DmztdsbF.css +0 -1
  373. package/src/assets/web-panel/assets/Tokens-BBOdNRHQ.css +0 -1
  374. package/src/assets/web-panel/assets/Tokens-CCJIrnhi.js +0 -1
  375. package/src/assets/web-panel/assets/Trust-BHeJEfNG.js +0 -1
  376. package/src/assets/web-panel/assets/Trust-DeOo0xAh.css +0 -1
  377. package/src/assets/web-panel/assets/UkeySign-DjcIVRk4.js +0 -1
  378. package/src/assets/web-panel/assets/VideoEditing-BPhptg3q.js +0 -1
  379. package/src/assets/web-panel/assets/VideoEditing-DksiizfS.css +0 -1
  380. package/src/assets/web-panel/assets/Wallet-D_xDgfaz.js +0 -4
  381. package/src/assets/web-panel/assets/Wallet-gR0ZvZbK.css +0 -1
  382. package/src/assets/web-panel/assets/WebAuthn-SSh5VhVO.css +0 -1
  383. package/src/assets/web-panel/assets/WebAuthn-pd961lgM.js +0 -5
  384. package/src/assets/web-panel/assets/WorkflowEditor-BmXDUZ8M.js +0 -1
  385. package/src/assets/web-panel/assets/WorkflowEditor-IiwsD8Kh.css +0 -1
  386. package/src/assets/web-panel/assets/createContext-BBLoTzN8.js +0 -1
  387. package/src/assets/web-panel/assets/devWarning-CNIS3FrJ.js +0 -1
  388. package/src/assets/web-panel/assets/echarts-Dj_pBaVI.js +0 -19
  389. package/src/assets/web-panel/assets/favicon-FSU2gSy6.ico +0 -0
  390. package/src/assets/web-panel/assets/index-1xUFGcnI.js +0 -21
  391. package/src/assets/web-panel/assets/index-4BeUpRaU.js +0 -1
  392. package/src/assets/web-panel/assets/index-AVHrO1io.js +0 -21
  393. package/src/assets/web-panel/assets/index-B2fc2n_u.js +0 -3
  394. package/src/assets/web-panel/assets/index-B5aXiiOG.js +0 -1
  395. package/src/assets/web-panel/assets/index-B78VsLFL.js +0 -1
  396. package/src/assets/web-panel/assets/index-BECv44dY.js +0 -12
  397. package/src/assets/web-panel/assets/index-BGn5-2TK.js +0 -1
  398. package/src/assets/web-panel/assets/index-BM9IHnrf.js +0 -13
  399. package/src/assets/web-panel/assets/index-BlMshk9V.js +0 -1
  400. package/src/assets/web-panel/assets/index-BoWoWh9f.js +0 -19
  401. package/src/assets/web-panel/assets/index-Bt79ud6Y.js +0 -1
  402. package/src/assets/web-panel/assets/index-CO9Tt0Bo.js +0 -1
  403. package/src/assets/web-panel/assets/index-CSZvB2uy.js +0 -12
  404. package/src/assets/web-panel/assets/index-CjeazYU2.js +0 -1
  405. package/src/assets/web-panel/assets/index-Cw-TEBru.js +0 -1
  406. package/src/assets/web-panel/assets/index-CyObfnlZ.js +0 -3
  407. package/src/assets/web-panel/assets/index-D0d2TS5o.js +0 -69
  408. package/src/assets/web-panel/assets/index-DV3zNhRX.js +0 -1
  409. package/src/assets/web-panel/assets/index-DnHElN_A.js +0 -7
  410. package/src/assets/web-panel/assets/index-DspW4reY.js +0 -55
  411. package/src/assets/web-panel/assets/index-DxUFdvJ5.js +0 -1
  412. package/src/assets/web-panel/assets/index-La4F-U-s.js +0 -1
  413. package/src/assets/web-panel/assets/index-azbNWBMo.js +0 -1
  414. package/src/assets/web-panel/assets/index-squRDiXd.js +0 -31
  415. package/src/assets/web-panel/assets/isSymbol-DAy2hlR5.js +0 -1
  416. package/src/assets/web-panel/assets/motion-ChVLXdRp.js +0 -11
  417. package/src/assets/web-panel/assets/useFlexGapSupport-CzD0s7wN.js +0 -1
  418. package/src/assets/web-panel/assets/vendor-DhFY8mDK.js +0 -1
  419. package/src/assets/web-panel/assets/vnode-CnXQ7gJ2.js +0 -1
  420. package/src/assets/web-panel/assets/warning-Pq00owYb.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chainlesschain",
3
- "version": "0.162.29",
3
+ "version": "0.162.31",
4
4
  "description": "CLI for ChainlessChain - install, configure, and manage your personal AI management system",
5
5
  "type": "module",
6
6
  "bin": {
@@ -57,7 +57,7 @@
57
57
  "@chainlesschain/core-infra": "0.1.0",
58
58
  "@chainlesschain/core-mtc": "0.2.1",
59
59
  "@chainlesschain/core-multisig": "0.1.0",
60
- "@chainlesschain/personal-data-hub": "0.4.0",
60
+ "@chainlesschain/personal-data-hub": "0.4.2",
61
61
  "@chainlesschain/session-core": "0.3.2",
62
62
  "@chainlesschain/shared-logger": "0.1.0",
63
63
  "@inquirer/prompts": "^7.2.0",
@@ -0,0 +1 @@
1
+ import{I as b,J as v,U as S,R as r,c as o,K as l,V as p,S as h,o as se,h as re,a as Y,b as Q,r as C,P as u,Q as y,F as z,Z as G}from"./vendor-BvqAck49.js";import{_ as ze,u as de,b as ce,d as f}from"./index-BJUf19Wd.js";import{s as Ie}from"./community-parser-CO25nZFt.js";import ue from"./index-BqVjUN8b.js";import{f as Oe,c as Pe,b2 as Te,aY as Ee,aa as Le,s as Ne,as as je,R as Ue}from"./icons-DP3uiYxy.js";import"./KeyCode-D63Tfrq7.js";import"./omit-BYeliY1H.js";import"./pickAttrs-B9dcAKnu.js";import"./initDefaultProps-BnXISaAa.js";import"./motion-ChY7C0zJ.js";import"./raf-Deuc0E8-.js";import"./index-Cbqu804A.js";import"./index-POaFzYGS.js";import"./isVisible-C7tPsqfj.js";import"./useState-BK4hy8Ma.js";import"./devWarning-BDK34w0I.js";import"./compact-item-D0q0exuS.js";import"./createContext-D7pLFs2I.js";import"./Compact-1yzYeT04.js";import"./_getTag-DnrRH4E6.js";import"./styleChecker-DVdlHbQm.js";import"./zoom-DCbqxxLH.js";import"./ActionButton-CXwMgOvX.js";import"./vnode-DWi0X9WN.js";function H(t){const a=Ie(t);if(!a)return null;try{return JSON.parse(a)}catch{}const s=a.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!s)return null;try{return JSON.parse(s[0])}catch{return null}}const De=Object.freeze(["P0","P1","P2","P3"]),Me=Object.freeze(["open","acknowledged","resolved","closed"]);function g(t,a=0){return typeof t=="number"&&Number.isFinite(t)?t:a}function Je(t,a=0){if(!t||typeof t!="object")return null;const s=t.id||"";return s?{key:s,id:s,anomalyMetric:t.anomalyMetric??t.anomaly_metric??"",severity:String(t.severity||"P3"),status:String(t.status||"open").toLowerCase(),description:String(t.description||""),anomalyData:t.anomalyData??t.anomaly_data??null,remediationId:t.remediationId??t.remediation_id??null,postmortem:t.postmortem||"",acknowledgedAt:t.acknowledgedAt??t.acknowledged_at??null,resolvedAt:t.resolvedAt??t.resolved_at??null,createdAt:t.createdAt??t.created_at??null,_idx:a}:null}function pe(t){const a=H(t);return Array.isArray(a)?a.map(Je).filter(Boolean):[]}function qe(t,a=0){if(!t||typeof t!="object")return null;const s=t.id||"";if(!s)return null;const e=t.enabled;let P=!1;return e===!0||e===1||e==="1"?P=!0:e===!1||e===0||e==="0"?P=!1:P=!!e,{key:s,id:s,name:String(t.name||""),triggerCondition:t.triggerCondition??t.trigger_condition??"",steps:t.steps||"",enabled:P,successCount:g(t.successCount??t.success_count,0),failureCount:g(t.failureCount??t.failure_count,0),createdAt:t.createdAt??t.created_at??null,_idx:a}}function me(t){const a=H(t);return Array.isArray(a)?a.map(qe).filter(Boolean):[]}function Be(t,a=0){if(!t||typeof t!="object")return null;const s=t.metricName??t.metric_name??"";return s?{key:s,metricName:s,mean:g(t.mean,0),stdDev:g(t.stdDev??t.std_dev,0),q1:g(t.q1,0),q3:g(t.q3,0),sampleCount:g(t.sampleCount??t.sample_count,0),updatedAt:t.updatedAt??t.updated_at??null,_idx:a}:null}function ye(t){const a=H(t);return Array.isArray(a)?a.map(Be).filter(Boolean):[]}function fe(t){const a=H(t);return!a||typeof a!="object"||Array.isArray(a)?null:{anomaly:!!a.anomaly,reason:a.reason||null,metricName:a.metricName??a.metric_name??"",value:g(a.value,0),algorithm:String(a.algorithm||""),score:g(a.score,0),threshold:g(a.threshold,0),baseline:a.baseline?{mean:g(a.baseline.mean,0),stdDev:g(a.baseline.stdDev??a.baseline.std_dev,0),q1:g(a.baseline.q1,0),q3:g(a.baseline.q3,0)}:null,incidentId:a.incidentId??a.incident_id??null,severity:a.severity||null}}const Ve={incidents:{total:0,bySeverity:{P0:0,P1:0,P2:0,P3:0},byStatus:{open:0,acknowledged:0,resolved:0,closed:0},avgResolveMs:0},playbooks:{total:0,enabled:0,totalSuccess:0,totalFailure:0},baselines:{total:0,metrics:[]}};function be(t){const a=JSON.parse(JSON.stringify(Ve)),s=H(t);if(!s||typeof s!="object"||Array.isArray(s))return a;if(s.incidents&&typeof s.incidents=="object"){if(a.incidents.total=g(s.incidents.total,0),a.incidents.avgResolveMs=g(s.incidents.avgResolveMs??s.incidents.avg_resolve_ms,0),s.incidents.bySeverity&&typeof s.incidents.bySeverity=="object")for(const e of Object.keys(a.incidents.bySeverity))a.incidents.bySeverity[e]=g(s.incidents.bySeverity[e],0);if(s.incidents.byStatus&&typeof s.incidents.byStatus=="object")for(const e of Object.keys(a.incidents.byStatus))a.incidents.byStatus[e]=g(s.incidents.byStatus[e],0)}return s.playbooks&&typeof s.playbooks=="object"&&(a.playbooks.total=g(s.playbooks.total,0),a.playbooks.enabled=g(s.playbooks.enabled,0),a.playbooks.totalSuccess=g(s.playbooks.totalSuccess??s.playbooks.total_success,0),a.playbooks.totalFailure=g(s.playbooks.totalFailure??s.playbooks.total_failure,0)),s.baselines&&typeof s.baselines=="object"&&(a.baselines.total=g(s.baselines.total,0),Array.isArray(s.baselines.metrics)&&(a.baselines.metrics=[...s.baselines.metrics])),a}function Ke(t){if(t==null||t==="")return"—";const a=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(a.getTime())?String(t):a.toLocaleString("zh-CN",{hour12:!1})}const Qe={__name:"AIOps",setup(t,{expose:a}){a();const s=de(),{t:e}=ce(),P=C(!1),N=C(!1),w=C(!1),j=C([]),X=C([]),$=C([]),D=C({incidents:{total:0,bySeverity:{P0:0,P1:0,P2:0,P3:0},byStatus:{open:0,acknowledged:0,resolved:0,closed:0},avgResolveMs:0},playbooks:{total:0,enabled:0,totalSuccess:0,totalFailure:0},baselines:{total:0,metrics:[]}}),I=C("incidents"),A=C(""),T=C(""),W=C(!1),R=C(!1),O=C(!1),q=C(!1),x=Y({severity:"P3",metric:"",description:""}),_=Y({name:"",triggerJson:"",stepsJson:""}),M=Y({metric:"",values:""}),U=Y({metric:"",value:null,algorithm:"z_score"}),J=C(null),ee=Q(()=>[{title:e("aiops.incidentCols.severity"),key:"severity",width:"90px"},{title:e("aiops.incidentCols.metric"),key:"metric",width:"160px"},{title:e("aiops.incidentCols.description"),key:"description"},{title:e("aiops.incidentCols.status"),key:"status",width:"100px"},{title:e("aiops.incidentCols.createdAt"),key:"createdAt",width:"160px"},{title:e("aiops.incidentCols.action"),key:"action",width:"220px"}]),F=Q(()=>[{title:e("aiops.playbookCols.name"),key:"name"},{title:e("aiops.playbookCols.enabled"),key:"enabled",width:"80px"},{title:e("aiops.playbookCols.stats"),key:"stats",width:"180px"},{title:e("aiops.playbookCols.createdAt"),key:"createdAt",width:"160px"},{title:e("aiops.playbookCols.action"),key:"action",width:"160px"}]),Z=Q(()=>[{title:e("aiops.baselineCols.metric"),key:"metric"},{title:e("aiops.baselineCols.mean"),key:"mean",width:"180px"},{title:e("aiops.baselineCols.iqr"),key:"iqr",width:"180px"},{title:e("aiops.baselineCols.sampleCount"),key:"sampleCount",width:"90px"},{title:e("aiops.baselineCols.updatedAt"),key:"updatedAt",width:"160px"}]),B=Q(()=>D.value.incidents.byStatus.open+D.value.incidents.byStatus.acknowledged),V=Q(()=>{let n=j.value;return A.value&&(n=n.filter(d=>d.severity===A.value)),T.value&&(n=n.filter(d=>d.status===T.value)),n});function K(n){const d=`aiops.statusLabels.${n}`,m=e(d);return m===d?n:m}function ae(n){return{open:"red",acknowledged:"orange",resolved:"cyan",closed:"default"}[n]||"default"}function i(n){return{P0:"red",P1:"volcano",P2:"orange",P3:"gold"}[n]||"default"}function c(n){const d=`aiops.reasonLabels.${n}`,m=e(d);return m===d?n:m}function E(n,d){return n?n.length>d?n.slice(0,d)+"...":n:""}function ve(n){return!n||n<=0?e("aiops.duration.none"):n<1e3?`${n}ms`:n<6e4?`${(n/1e3).toFixed(1)}s`:n<36e5?`${(n/6e4).toFixed(1)}min`:`${(n/36e5).toFixed(1)}h`}function ge({key:n}){n==="incident"?W.value=!0:n==="playbook"?R.value=!0:n==="baseline"?O.value=!0:n==="detect"&&(J.value=null,q.value=!0)}async function L(){P.value=!0;try{const[n,d,m,k]=await Promise.all([s.execute("ops incidents --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("ops playbooks --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("ops baselines --json",1e4).catch(()=>({output:""})),s.execute("ops stats --json",8e3).catch(()=>({output:""}))]);j.value=pe(n.output),X.value=me(d.output),$.value=ye(m.output),D.value=be(k.output)}catch(n){f.error(e("aiops.msg.loadFailed")+": "+(n?.message||n))}finally{P.value=!1}}async function ke(){if(!x.description.trim()){f.warning(e("aiops.msg.descEmpty"));return}N.value=!0;try{const n=[`ops incident-create --severity ${x.severity}`];x.metric.trim()&&n.push(`--metric "${x.metric.trim().replace(/"/g,'\\"')}"`),n.push(`--description "${x.description.trim().replace(/"/g,'\\"')}"`),n.push("--json");const{output:d}=await s.execute(n.join(" "),1e4);if(/error|失败/i.test(d)&&!/"incidentId"/.test(d)){f.error(e("aiops.msg.createFailed")+": "+d.slice(0,120));return}f.success(e("aiops.msg.incidentCreated")),W.value=!1,oe(),await L()}catch(n){f.error(e("aiops.msg.createFailed")+": "+(n?.message||n))}finally{N.value=!1}}async function _e(){if(!_.name.trim()){f.warning(e("aiops.msg.playbookNameEmpty"));return}for(const[n,d]of[[_.triggerJson,"triggerLabel"],[_.stepsJson,"stepsLabel"]])if(n.trim())try{JSON.parse(n)}catch{f.warning(e("aiops.msg.jsonInvalid",{label:e(`aiops.msg.${d}`)}));return}N.value=!0;try{const n=[`ops playbook-create --name "${_.name.trim().replace(/"/g,'\\"')}"`];_.triggerJson.trim()&&n.push(`--trigger '${_.triggerJson.trim().replace(/'/g,"'\\''")}'`),_.stepsJson.trim()&&n.push(`--steps '${_.stepsJson.trim().replace(/'/g,"'\\''")}'`),n.push("--json");const{output:d}=await s.execute(n.join(" "),1e4);if(/error|失败/i.test(d)&&!/"playbookId"/.test(d)){f.error(e("aiops.msg.createFailed")+": "+d.slice(0,120));return}f.success(e("aiops.msg.playbookCreated")),R.value=!1,le(),I.value="playbooks",await L()}catch(n){f.error(e("aiops.msg.createFailed")+": "+(n?.message||n))}finally{N.value=!1}}async function he(){const n=M.metric.trim();if(!n){f.warning(e("aiops.msg.metricEmpty"));return}const d=M.values.split(/[\s,]+/).map(m=>m.trim()).filter(Boolean).map(m=>Number(m));if(d.length===0||d.some(m=>!Number.isFinite(m))){f.warning(e("aiops.msg.valuesInvalid"));return}N.value=!0;try{const m=`ops baseline-update "${n.replace(/"/g,'\\"')}" --values ${d.join(",")} --json`,{output:k}=await s.execute(m,1e4);if(/error|失败/i.test(k)&&!/"updated"/.test(k)){f.error(e("aiops.msg.baselineUpdateFailed")+": "+k.slice(0,120));return}f.success(e("aiops.msg.baselineUpdated",{n:d.length})),O.value=!1,ie(),I.value="baselines",await L()}catch(m){f.error(e("aiops.msg.baselineUpdateFailed")+": "+(m?.message||m))}finally{N.value=!1}}async function Ce(){if(!U.metric||U.value==null){f.warning(e("aiops.msg.detectFieldsEmpty"));return}w.value=!0,J.value=null;try{const n=`ops detect "${U.metric.replace(/"/g,'\\"')}" ${U.value} --algorithm ${U.algorithm} --json`,{output:d}=await s.execute(n,8e3),m=fe(d);if(!m){f.error(e("aiops.msg.detectFailed")+": "+d.slice(0,120));return}J.value=m,m.anomaly&&(f.warning(e("aiops.msg.detectAnomaly",{severity:m.severity||"P3"})),L())}catch(n){f.error(e("aiops.msg.detectFailed")+": "+(n?.message||n))}finally{w.value=!1}}async function Se(n){await te(n,"incident-ack",e("aiops.msg.incidentAcked"))}async function xe(n){await te(n,"incident-resolve",e("aiops.msg.incidentResolved"))}async function Fe(n){await te(n,"incident-close",e("aiops.msg.incidentClosed"))}async function te(n,d,m){try{const{output:k}=await s.execute(`ops ${d} ${n.id} --json`,8e3);if(/error|失败|invalid/i.test(k)&&!/"acknowledged"|"resolved"|"closed"/.test(k)){f.error(e("aiops.msg.incidentTransitionFailed")+": "+k.slice(0,120));return}f.success(m),await L()}catch(k){f.error(e("aiops.msg.incidentTransitionFailed")+": "+(k?.message||k))}}async function we(n){try{const{output:d}=await s.execute(`ops postmortem ${n.id}`,12e3);ue.info({title:e("aiops.msg.postmortemTitle",{id:n.id.slice(0,8)}),width:720,content:()=>re("pre",{style:"white-space: pre-wrap; max-height: 60vh; overflow: auto; font-size: 12px; padding: 8px; background: rgba(0,0,0,.04); border-radius: 4px;"},d||e("aiops.msg.postmortemEmpty"))})}catch(d){f.error(e("aiops.msg.postmortemFailed")+": "+(d?.message||d))}}async function Ae(n,d){const m=d?"on":"off";try{const{output:k}=await s.execute(`ops playbook-toggle ${n.id} ${m} --json`,8e3);if(/error|失败/i.test(k)&&!/"enabled"/.test(k)){f.error(e("aiops.msg.playbookToggleFailed")+": "+k.slice(0,120));return}f.success(e(d?"aiops.msg.playbookEnabled":"aiops.msg.playbookDisabled")),await L()}catch(k){f.error(e("aiops.msg.playbookToggleFailed")+": "+(k?.message||k))}}async function Re(n,d){try{const{output:m}=await s.execute(`ops playbook-record ${n.id} ${d} --json`,8e3);if(/error|失败/i.test(m)&&!/"recorded"/.test(m)){f.error(e("aiops.msg.playbookRecordFailed")+": "+m.slice(0,120));return}f.success(e(d==="success"?"aiops.msg.playbookRecordSuccess":"aiops.msg.playbookRecordFailure")),await L()}catch(m){f.error(e("aiops.msg.playbookRecordFailed")+": "+(m?.message||m))}}function oe(){x.severity="P3",x.metric="",x.description=""}function le(){_.name="",_.triggerJson="",_.stepsJson=""}function ie(){M.metric="",M.values=""}se(L);const ne={ws:s,t:e,loading:P,creating:N,detecting:w,incidents:j,playbooks:X,baselines:$,stats:D,activeTab:I,incidentSeverityFilter:A,incidentStatusFilter:T,showIncidentModal:W,showPlaybookModal:R,showBaselineModal:O,showDetectModal:q,incidentForm:x,playbookForm:_,baselineForm:M,detectForm:U,detectResult:J,incidentColumns:ee,playbookColumns:F,baselineColumns:Z,openCount:B,filteredIncidents:V,statusLabel:K,statusColor:ae,severityColor:i,reasonLabel:c,truncate:E,formatDurationMs:ve,handleNewClick:ge,loadAll:L,createIncident:ke,createPlaybook:_e,updateBaseline:he,detectAnomaly:Ce,ackIncident:Se,resolveIncident:xe,closeIncident:Fe,runIncidentTransition:te,generatePostmortem:we,togglePlaybook:Ae,recordRun:Re,resetIncidentForm:oe,resetPlaybookForm:le,resetBaselineForm:ie,ref:C,computed:Q,onMounted:se,reactive:Y,h:re,get ReloadOutlined(){return Ue},get PlusOutlined(){return je},get AlertOutlined(){return Ne},get RocketOutlined(){return Le},get LineChartOutlined(){return Ee},get FundOutlined(){return Te},get ExclamationCircleOutlined(){return Pe},get CheckCircleOutlined(){return Oe},get message(){return f},get Modal(){return ue},get useI18n(){return ce},get useWsStore(){return de},get parseIncidents(){return pe},get parsePlaybooks(){return me},get parseBaselines(){return ye},get parseDetectResult(){return fe},get parseStats(){return be},get formatOpsTime(){return Ke},get SEVERITIES(){return De},get INCIDENT_STATUSES(){return Me}};return Object.defineProperty(ne,"__isScriptSetup",{enumerable:!1,value:!0}),ne}},We={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ze={class:"page-title"},Ye={class:"page-sub"},Ge={style:{color:"var(--text-secondary)","font-size":"12px","margin-left":"8px"}},He={class:"filter-bar"},Xe={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},$e={key:1,style:{color:"var(--text-muted)"}},et={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},tt={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},at={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ot={style:{color:"var(--text-primary)","font-weight":"500"}},lt={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px","font-family":"monospace"}},it={key:3,style:{color:"var(--text-secondary)","font-size":"11px"}},nt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},st={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},rt={style:{color:"#1677ff"}},dt={style:{color:"var(--text-secondary)","margin-left":"4px","font-size":"11px"}},ct={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},ut={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},pt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},mt={key:0,style:{color:"var(--text-secondary)","font-size":"12px","margin-top":"8px"}},yt={key:1,style:{"margin-top":"12px","font-size":"12px",color:"var(--text-secondary)"}},ft={key:2,style:{"margin-top":"8px"}};function bt(t,a,s,e,P,N){const w=b("a-button"),j=b("a-menu-item"),X=b("a-menu"),$=b("a-dropdown"),D=b("a-space"),I=b("a-statistic"),A=b("a-card"),T=b("a-col"),W=b("a-row"),R=b("a-tag"),O=b("a-radio-button"),q=b("a-radio-group"),x=b("a-table"),_=b("a-tab-pane"),M=b("a-switch"),U=b("a-tabs"),J=b("a-select-option"),ee=b("a-select"),F=b("a-form-item"),Z=b("a-input"),B=b("a-textarea"),V=b("a-form"),K=b("a-modal"),ae=b("a-input-number");return u(),v("div",null,[S("div",We,[S("div",null,[S("h2",Ze,r(t.$t("aiops.title")),1),S("p",Ye,r(t.$t("aiops.subtitle")),1)]),o(D,null,{default:l(()=>[o(w,{loading:e.loading,onClick:e.loadAll},{icon:l(()=>[o(e.ReloadOutlined)]),default:l(()=>[y(" "+r(t.$t("aiops.refresh")),1)]),_:1},8,["loading"]),o($,{trigger:["click"]},{overlay:l(()=>[o(X,{onClick:e.handleNewClick},{default:l(()=>[o(j,{key:"incident"},{default:l(()=>[o(e.AlertOutlined),y(" "+r(t.$t("aiops.actions.incident")),1)]),_:1}),o(j,{key:"playbook"},{default:l(()=>[o(e.RocketOutlined),y(" "+r(t.$t("aiops.actions.playbook")),1)]),_:1}),o(j,{key:"baseline"},{default:l(()=>[o(e.LineChartOutlined),y(" "+r(t.$t("aiops.actions.baseline")),1)]),_:1}),o(j,{key:"detect"},{default:l(()=>[o(e.FundOutlined),y(" "+r(t.$t("aiops.actions.detect")),1)]),_:1})]),_:1})]),default:l(()=>[o(w,{type:"primary"},{icon:l(()=>[o(e.PlusOutlined)]),default:l(()=>[y(" "+r(t.$t("aiops.newDropdown")),1)]),_:1})]),_:1})]),_:1})]),p(" Stats overview "),o(W,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:l(()=>[o(T,{xs:12,sm:8,lg:5},{default:l(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(I,{title:t.$t("aiops.stats.incidents"),value:e.stats.incidents.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:l(()=>[o(e.AlertOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(T,{xs:12,sm:8,lg:5},{default:l(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(I,{title:t.$t("aiops.stats.pending"),value:e.stats.incidents.byStatus.open+e.stats.incidents.byStatus.acknowledged,"value-style":{color:e.openCount>0?"#ff4d4f":"#52c41a",fontSize:"20px"}},{prefix:l(()=>[o(e.ExclamationCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(T,{xs:12,sm:8,lg:5},{default:l(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(I,{title:t.$t("aiops.stats.playbooks"),value:e.stats.playbooks.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:l(()=>[o(e.RocketOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(T,{xs:12,sm:8,lg:5},{default:l(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(I,{title:t.$t("aiops.stats.enabled"),value:e.stats.playbooks.enabled,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:l(()=>[o(e.CheckCircleOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(T,{xs:24,sm:8,lg:4},{default:l(()=>[o(A,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:l(()=>[o(I,{title:t.$t("aiops.stats.baselines"),value:e.stats.baselines.total,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:l(()=>[o(e.LineChartOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),p(" Severity breakdown bar "),e.stats.incidents.total>0?(u(),h(A,{key:0,title:t.$t("aiops.severityCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:l(()=>[o(D,{size:[12,8],wrap:""},{default:l(()=>[(u(!0),v(z,null,G(e.SEVERITIES,i=>(u(),h(R,{key:i,color:e.severityColor(i),style:{"font-size":"13px",padding:"2px 10px"}},{default:l(()=>[y(r(i)+": "+r(e.stats.incidents.bySeverity[i]||0),1)]),_:2},1032,["color"]))),128)),S("span",Ge,r(t.$t("aiops.avgResolveLabel",{time:e.formatDurationMs(e.stats.incidents.avgResolveMs)})),1)]),_:1})]),_:1},8,["title"])):p("v-if",!0),p(" Tabs "),o(U,{activeKey:e.activeTab,"onUpdate:activeKey":a[2]||(a[2]=i=>e.activeTab=i),class:"aiops-tabs"},{default:l(()=>[p(" ── Incidents tab ─────────────────────────────────────────── "),o(_,{key:"incidents",tab:t.$t("aiops.tabs.incidents")},{default:l(()=>[S("div",He,[o(q,{value:e.incidentSeverityFilter,"onUpdate:value":a[0]||(a[0]=i=>e.incidentSeverityFilter=i),size:"small","button-style":"solid"},{default:l(()=>[o(O,{value:""},{default:l(()=>[y(r(t.$t("aiops.filter.all")),1)]),_:1}),(u(!0),v(z,null,G(e.SEVERITIES,i=>(u(),h(O,{key:i,value:i},{default:l(()=>[y(r(i),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(q,{value:e.incidentStatusFilter,"onUpdate:value":a[1]||(a[1]=i=>e.incidentStatusFilter=i),size:"small"},{default:l(()=>[o(O,{value:""},{default:l(()=>[y(r(t.$t("aiops.filter.allStatuses")),1)]),_:1}),(u(!0),v(z,null,G(e.INCIDENT_STATUSES,i=>(u(),h(O,{key:i,value:i},{default:l(()=>[y(r(e.statusLabel(i)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),o(x,{columns:e.incidentColumns,"data-source":e.filteredIncidents,pagination:{pageSize:20,showTotal:i=>t.$t("aiops.table.totalSuffix",{n:i})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:i,record:c})=>[i.key==="severity"?(u(),h(R,{key:0,color:e.severityColor(c.severity),style:{"font-weight":"600"}},{default:l(()=>[y(r(c.severity),1)]),_:2},1032,["color"])):p("v-if",!0),i.key==="metric"?(u(),v(z,{key:1},[c.anomalyMetric?(u(),v("span",Xe,r(c.anomalyMetric),1)):(u(),v("span",$e,"—"))],64)):p("v-if",!0),i.key==="description"?(u(),v("span",et,r(e.truncate(c.description,80)||"—"),1)):p("v-if",!0),i.key==="status"?(u(),h(R,{key:3,color:e.statusColor(c.status)},{default:l(()=>[y(r(e.statusLabel(c.status)),1)]),_:2},1032,["color"])):p("v-if",!0),i.key==="createdAt"?(u(),v("span",tt,r(e.formatOpsTime(c.createdAt)),1)):p("v-if",!0),i.key==="action"?(u(),v(z,{key:5},[c.status==="open"?(u(),h(w,{key:0,size:"small",type:"link",onClick:E=>e.ackIncident(c)},{default:l(()=>[y(r(t.$t("aiops.incidentActions.ack")),1)]),_:1},8,["onClick"])):p("v-if",!0),c.status==="open"||c.status==="acknowledged"?(u(),h(w,{key:1,size:"small",type:"link",onClick:E=>e.resolveIncident(c)},{default:l(()=>[y(r(t.$t("aiops.incidentActions.resolve")),1)]),_:1},8,["onClick"])):p("v-if",!0),c.status==="resolved"?(u(),h(w,{key:2,size:"small",type:"link",onClick:E=>e.closeIncident(c)},{default:l(()=>[y(r(t.$t("aiops.incidentActions.close")),1)]),_:1},8,["onClick"])):p("v-if",!0),c.status==="resolved"||c.status==="closed"?(u(),h(w,{key:3,size:"small",type:"link",onClick:E=>e.generatePostmortem(c)},{default:l(()=>[y(r(t.$t("aiops.incidentActions.postmortem")),1)]),_:1},8,["onClick"])):p("v-if",!0)],64)):p("v-if",!0)]),emptyText:l(()=>[S("div",at,[o(e.AlertOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),y(" "+r(e.incidentSeverityFilter||e.incidentStatusFilter?t.$t("aiops.table.incidentEmptyFiltered"):t.$t("aiops.table.incidentEmpty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),p(" ── Playbooks tab ─────────────────────────────────────────── "),o(_,{key:"playbooks",tab:t.$t("aiops.tabs.playbooks")},{default:l(()=>[o(x,{columns:e.playbookColumns,"data-source":e.playbooks,pagination:{pageSize:20,showTotal:i=>t.$t("aiops.table.totalSuffix",{n:i})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:i,record:c})=>[i.key==="name"?(u(),v(z,{key:0},[S("span",ot,r(c.name),1),c.triggerCondition?(u(),v("div",lt,r(e.truncate(c.triggerCondition,80)),1)):p("v-if",!0)],64)):p("v-if",!0),i.key==="enabled"?(u(),h(M,{key:1,checked:c.enabled,size:"small",onChange:E=>e.togglePlaybook(c,E)},null,8,["checked","onChange"])):p("v-if",!0),i.key==="stats"?(u(),v(z,{key:2},[o(R,{color:"green",style:{"font-size":"11px"}},{default:l(()=>[y(r(t.$t("aiops.table.successCount",{n:c.successCount})),1)]),_:2},1024),c.failureCount>0?(u(),h(R,{key:0,color:"red",style:{"font-size":"11px","margin-left":"4px"}},{default:l(()=>[y(r(t.$t("aiops.table.failureCount",{n:c.failureCount})),1)]),_:2},1024)):p("v-if",!0)],64)):p("v-if",!0),i.key==="createdAt"?(u(),v("span",it,r(e.formatOpsTime(c.createdAt)),1)):p("v-if",!0),i.key==="action"?(u(),v(z,{key:4},[o(w,{size:"small",type:"link",onClick:E=>e.recordRun(c,"success")},{default:l(()=>[y(r(t.$t("aiops.playbookActions.success")),1)]),_:1},8,["onClick"]),o(w,{size:"small",type:"link",danger:"",onClick:E=>e.recordRun(c,"failure")},{default:l(()=>[y(r(t.$t("aiops.playbookActions.failure")),1)]),_:1},8,["onClick"])],64)):p("v-if",!0)]),emptyText:l(()=>[S("div",nt,[o(e.RocketOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),y(" "+r(t.$t("aiops.table.playbookEmpty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),p(" ── Baselines tab ─────────────────────────────────────────── "),o(_,{key:"baselines",tab:t.$t("aiops.tabs.baselines")},{default:l(()=>[o(x,{columns:e.baselineColumns,"data-source":e.baselines,pagination:{pageSize:20,showTotal:i=>t.$t("aiops.table.totalSuffix",{n:i})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:l(({column:i,record:c})=>[i.key==="metric"?(u(),v("span",st,r(c.metricName),1)):p("v-if",!0),i.key==="mean"?(u(),v(z,{key:1},[S("span",rt,r(c.mean),1),S("span",dt,"σ "+r(c.stdDev),1)],64)):p("v-if",!0),i.key==="iqr"?(u(),v("span",ct," Q1 "+r(c.q1)+" / Q3 "+r(c.q3),1)):p("v-if",!0),i.key==="sampleCount"?(u(),h(R,{key:3,color:"blue",style:{"font-size":"11px"}},{default:l(()=>[y(r(c.sampleCount),1)]),_:2},1024)):p("v-if",!0),i.key==="updatedAt"?(u(),v("span",ut,r(e.formatOpsTime(c.updatedAt)),1)):p("v-if",!0)]),emptyText:l(()=>[S("div",pt,[o(e.LineChartOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),y(" "+r(t.$t("aiops.table.baselineEmpty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),p(" ── Create incident modal ─────────────────────────────────── "),o(K,{open:e.showIncidentModal,"onUpdate:open":a[6]||(a[6]=i=>e.showIncidentModal=i),title:t.$t("aiops.incident_modal.title"),"confirm-loading":e.creating,width:520,"ok-text":t.$t("aiops.incident_modal.ok"),"cancel-text":t.$t("aiops.incident_modal.cancel"),onOk:e.createIncident,onCancel:e.resetIncidentForm},{default:l(()=>[o(V,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(F,{label:t.$t("aiops.incident_modal.severityLabel")},{default:l(()=>[o(ee,{value:e.incidentForm.severity,"onUpdate:value":a[3]||(a[3]=i=>e.incidentForm.severity=i)},{default:l(()=>[(u(!0),v(z,null,G(e.SEVERITIES,i=>(u(),h(J,{key:i,value:i},{default:l(()=>[y(r(i),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.incident_modal.metricLabel")},{default:l(()=>[o(Z,{value:e.incidentForm.metric,"onUpdate:value":a[4]||(a[4]=i=>e.incidentForm.metric=i),placeholder:t.$t("aiops.incident_modal.metricPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.incident_modal.descLabel"),required:""},{default:l(()=>[o(B,{value:e.incidentForm.description,"onUpdate:value":a[5]||(a[5]=i=>e.incidentForm.description=i),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" ── Create playbook modal ─────────────────────────────────── "),o(K,{open:e.showPlaybookModal,"onUpdate:open":a[10]||(a[10]=i=>e.showPlaybookModal=i),title:t.$t("aiops.playbook_modal.title"),"confirm-loading":e.creating,width:540,"ok-text":t.$t("aiops.playbook_modal.ok"),"cancel-text":t.$t("aiops.playbook_modal.cancel"),onOk:e.createPlaybook,onCancel:e.resetPlaybookForm},{default:l(()=>[o(V,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(F,{label:t.$t("aiops.playbook_modal.nameLabel"),required:""},{default:l(()=>[o(Z,{value:e.playbookForm.name,"onUpdate:value":a[7]||(a[7]=i=>e.playbookForm.name=i),placeholder:t.$t("aiops.playbook_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.playbook_modal.triggerLabel")},{default:l(()=>[o(B,{value:e.playbookForm.triggerJson,"onUpdate:value":a[8]||(a[8]=i=>e.playbookForm.triggerJson=i),placeholder:t.$t("aiops.playbook_modal.triggerPlaceholder"),"auto-size":{minRows:2,maxRows:4}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.playbook_modal.stepsLabel")},{default:l(()=>[o(B,{value:e.playbookForm.stepsJson,"onUpdate:value":a[9]||(a[9]=i=>e.playbookForm.stepsJson=i),placeholder:t.$t("aiops.playbook_modal.stepsPlaceholder"),"auto-size":{minRows:3,maxRows:6}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" ── Update baseline modal ─────────────────────────────────── "),o(K,{open:e.showBaselineModal,"onUpdate:open":a[13]||(a[13]=i=>e.showBaselineModal=i),title:t.$t("aiops.baseline_modal.title"),"confirm-loading":e.creating,width:500,"ok-text":t.$t("aiops.baseline_modal.ok"),"cancel-text":t.$t("aiops.baseline_modal.cancel"),onOk:e.updateBaseline,onCancel:e.resetBaselineForm},{default:l(()=>[o(V,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(F,{label:t.$t("aiops.baseline_modal.metricLabel"),required:""},{default:l(()=>[o(Z,{value:e.baselineForm.metric,"onUpdate:value":a[11]||(a[11]=i=>e.baselineForm.metric=i),placeholder:t.$t("aiops.baseline_modal.metricPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.baseline_modal.valuesLabel"),required:""},{default:l(()=>[o(B,{value:e.baselineForm.values,"onUpdate:value":a[12]||(a[12]=i=>e.baselineForm.values=i),placeholder:t.$t("aiops.baseline_modal.valuesPlaceholder"),"auto-size":{minRows:3,maxRows:8}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" ── Detect anomaly modal ──────────────────────────────────── "),o(K,{open:e.showDetectModal,"onUpdate:open":a[17]||(a[17]=i=>e.showDetectModal=i),title:t.$t("aiops.detect_modal.title"),"confirm-loading":e.detecting,width:500,"ok-text":t.$t("aiops.detect_modal.ok"),"cancel-text":t.$t("aiops.detect_modal.cancel"),onOk:e.detectAnomaly},{default:l(()=>[o(V,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[o(F,{label:t.$t("aiops.detect_modal.metricLabel"),required:""},{default:l(()=>[o(ee,{value:e.detectForm.metric,"onUpdate:value":a[14]||(a[14]=i=>e.detectForm.metric=i),"show-search":"",placeholder:t.$t("aiops.detect_modal.metricPlaceholder")},{default:l(()=>[(u(!0),v(z,null,G(e.baselines,i=>(u(),h(J,{key:i.metricName,value:i.metricName},{default:l(()=>[y(r(t.$t("aiops.detect_modal.metricOptionLabel",{name:i.metricName,count:i.sampleCount})),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.detect_modal.valueLabel"),required:""},{default:l(()=>[o(ae,{value:e.detectForm.value,"onUpdate:value":a[15]||(a[15]=i=>e.detectForm.value=i),style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),o(F,{label:t.$t("aiops.detect_modal.algorithmLabel")},{default:l(()=>[o(q,{value:e.detectForm.algorithm,"onUpdate:value":a[16]||(a[16]=i=>e.detectForm.algorithm=i)},{default:l(()=>[o(O,{value:"z_score"},{default:l(()=>[...a[18]||(a[18]=[y("Z-Score (3σ)",-1)])]),_:1}),o(O,{value:"iqr"},{default:l(()=>[...a[19]||(a[19]=[y("IQR (1.5×)",-1)])]),_:1})]),_:1},8,["value"])]),_:1},8,["label"])]),_:1}),e.detectResult?(u(),h(A,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:l(()=>[o(I,{title:t.$t("aiops.detect_modal.resultTitle"),value:e.detectResult.anomaly?t.$t("aiops.detect_modal.anomaly"):t.$t("aiops.detect_modal.normal"),"value-style":{color:e.detectResult.anomaly?"#ff4d4f":"#52c41a"}},null,8,["title","value","value-style"]),e.detectResult.reason&&!e.detectResult.anomaly?(u(),v("div",mt,r(t.$t("aiops.detect_modal.reasonLine",{reason:e.reasonLabel(e.detectResult.reason)})),1)):p("v-if",!0),e.detectResult.baseline?(u(),v("div",yt,[S("div",null,r(t.$t("aiops.detect_modal.scoreLine",{score:e.detectResult.score,threshold:e.detectResult.threshold})),1),S("div",null,r(t.$t("aiops.detect_modal.baselineLine",{mean:e.detectResult.baseline.mean,stdDev:e.detectResult.baseline.stdDev})),1)])):p("v-if",!0),e.detectResult.incidentId?(u(),v("div",ft,[o(R,{color:e.severityColor(e.detectResult.severity)},{default:l(()=>[y(r(t.$t("aiops.detect_modal.incidentCreated",{severity:e.detectResult.severity})),1)]),_:1},8,["color"])])):p("v-if",!0)]),_:1})):p("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const Jt=ze(Qe,[["render",bt],["__scopeId","data-v-b804918b"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/views/AIOps.vue"]]);export{Jt as default};
@@ -0,0 +1 @@
1
+ .page-title[data-v-b804918b]{margin:0;color:var(--text-primary);font-size:22px;font-weight:600}.page-sub[data-v-b804918b]{margin:4px 0 0;color:var(--text-secondary);font-size:13px}.aiops-tabs[data-v-b804918b] .ant-tabs-nav{margin-bottom:16px}.filter-bar[data-v-b804918b]{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}
@@ -1 +1 @@
1
- import{N as b,f as i,t as p}from"./index-D0d2TS5o.js";import{B as y,c as O}from"./index-BqX3jeij.js";import{e as m,s as r,d as P,o as N,c as R}from"./vendor-DhFY8mDK.js";const x=()=>{const n=r(!1);return m(()=>{n.value=!0}),n},A={type:{type:String},actionFn:Function,close:Function,autofocus:Boolean,prefixCls:String,buttonProps:p(),emitEvent:Boolean,quitOnNullishReturnValue:Boolean};function d(n){return!!(n&&n.then)}const j=P({compatConfig:{MODE:3},name:"ActionButton",props:A,setup(n,g){let{slots:B}=g;const l=r(!1),c=r(),a=r(!1);let f;const v=x();N(()=>{n.autofocus&&(f=setTimeout(()=>{var e,t;return(t=(e=b(c.value))===null||e===void 0?void 0:e.focus)===null||t===void 0?void 0:t.call(e)}))}),m(()=>{clearTimeout(f)});const u=function(){for(var e,t=arguments.length,o=new Array(t),s=0;s<t;s++)o[s]=arguments[s];(e=n.close)===null||e===void 0||e.call(n,...o)},h=e=>{d(e)&&(a.value=!0,e.then(function(){v.value||(a.value=!1),u(...arguments),l.value=!1},t=>(v.value||(a.value=!1),l.value=!1,Promise.reject(t))))},C=e=>{const{actionFn:t}=n;if(l.value)return;if(l.value=!0,!t){u();return}let o;if(n.emitEvent){if(o=t(e),n.quitOnNullishReturnValue&&!d(o)){l.value=!1,u(e);return}}else if(t.length)o=t(n.close),l.value=!1;else if(o=t(),!o){u();return}h(o)};return()=>{const{type:e,prefixCls:t,buttonProps:o}=n;return R(y,i(i(i({},O(e)),{},{onClick:C,loading:a.value,prefixCls:t},o),{},{ref:c}),B)}}});export{j as A};
1
+ import{N as b,f as i,t as p}from"./index-BJUf19Wd.js";import{f as m,s as r,d as y,o as O,c as P}from"./vendor-BvqAck49.js";import{B as N,c as R}from"./index-Cbqu804A.js";const x=()=>{const n=r(!1);return m(()=>{n.value=!0}),n},A={type:{type:String},actionFn:Function,close:Function,autofocus:Boolean,prefixCls:String,buttonProps:p(),emitEvent:Boolean,quitOnNullishReturnValue:Boolean};function d(n){return!!(n&&n.then)}const j=y({compatConfig:{MODE:3},name:"ActionButton",props:A,setup(n,g){let{slots:B}=g;const l=r(!1),c=r(),a=r(!1);let f;const v=x();O(()=>{n.autofocus&&(f=setTimeout(()=>{var e,t;return(t=(e=b(c.value))===null||e===void 0?void 0:e.focus)===null||t===void 0?void 0:t.call(e)}))}),m(()=>{clearTimeout(f)});const u=function(){for(var e,t=arguments.length,o=new Array(t),s=0;s<t;s++)o[s]=arguments[s];(e=n.close)===null||e===void 0||e.call(n,...o)},h=e=>{d(e)&&(a.value=!0,e.then(function(){v.value||(a.value=!1),u(...arguments),l.value=!1},t=>(v.value||(a.value=!1),l.value=!1,Promise.reject(t))))},C=e=>{const{actionFn:t}=n;if(l.value)return;if(l.value=!0,!t){u();return}let o;if(n.emitEvent){if(o=t(e),n.quitOnNullishReturnValue&&!d(o)){l.value=!1,u(e);return}}else if(t.length)o=t(n.close),l.value=!1;else if(o=t(),!o){u();return}h(o)};return()=>{const{type:e,prefixCls:t,buttonProps:o}=n;return P(N,i(i(i({},R(e)),{},{onClick:C,loading:a.value,prefixCls:t},o),{},{ref:c}),B)}}});export{j as A};
@@ -0,0 +1,3 @@
1
+ import{I as T,J as v,U as N,R as r,c as a,K as o,V as y,w as ae,o as oe,a as E,b as V,r as x,P as c,Q as d,S as D,F as ue}from"./vendor-BvqAck49.js";import{_ as pe,b as se,u as ne,d as U}from"./index-BJUf19Wd.js";import{aQ as ye,D as me,$ as ke,R as fe,aC as ve,H as ge}from"./icons-DP3uiYxy.js";const _e={__name:"Analytics",setup(le,{expose:u}){u();const{t:i}=se(),t=ne(),F=x("all"),J=x(!1),b=x(!1),L=x(!1),S=x(!1),p=x(!1),h=x(!1),m=x(20),g=E({totalCalls:0,totalTokens:0,totalCost:0,avgResponseTime:0}),C=x([]),O=x([]),_=E({entries:0,hits:0,tokensSaved:0,expired:0}),I=x(!1),z=E({totalCalls:0,inputTokens:0,outputTokens:0,totalTokens:0}),l=x([]),k=V(()=>[{title:"Provider",key:"provider",dataIndex:"provider",width:"120px"},{title:"Model",key:"model",dataIndex:"model",ellipsis:!0},{title:i("analytics.sessionUsageColumns.calls"),key:"calls",dataIndex:"calls",width:"100px",sorter:(e,s)=>(e.calls||0)-(s.calls||0)},{title:"Input",key:"inputTokens",dataIndex:"inputTokens",width:"110px",sorter:(e,s)=>(e.inputTokens||0)-(s.inputTokens||0)},{title:"Output",key:"outputTokens",dataIndex:"outputTokens",width:"110px",sorter:(e,s)=>(e.outputTokens||0)-(s.outputTokens||0)},{title:"Total",key:"totalTokens",dataIndex:"totalTokens",width:"110px",sorter:(e,s)=>(e.totalTokens||0)-(s.totalTokens||0)}]),re=V(()=>[{title:"Provider",key:"provider",dataIndex:"provider",width:"120px",sorter:(e,s)=>(e.provider||"").localeCompare(s.provider||"")},{title:"Model",key:"model",dataIndex:"model",ellipsis:!0,sorter:(e,s)=>(e.model||"").localeCompare(s.model||"")},{title:i("analytics.breakdownColumns.calls"),key:"calls",dataIndex:"calls",width:"100px",sorter:(e,s)=>(e.calls||0)-(s.calls||0)},{title:i("analytics.breakdownColumns.inputTokens"),key:"inputTokens",dataIndex:"inputTokens",width:"120px",sorter:(e,s)=>(e.inputTokens||0)-(s.inputTokens||0)},{title:i("analytics.breakdownColumns.outputTokens"),key:"outputTokens",dataIndex:"outputTokens",width:"130px",sorter:(e,s)=>(e.outputTokens||0)-(s.outputTokens||0)},{title:i("analytics.breakdownColumns.totalTokens"),key:"totalTokens",dataIndex:"totalTokens",width:"120px",sorter:(e,s)=>(e.totalTokens||0)-(s.totalTokens||0)},{title:i("analytics.breakdownColumns.cost"),key:"cost",dataIndex:"cost",width:"110px",sorter:(e,s)=>(e.cost||0)-(s.cost||0)},{title:i("analytics.breakdownColumns.avgResponseTime"),key:"avgResponseTime",dataIndex:"avgResponseTime",width:"110px",sorter:(e,s)=>(e.avgResponseTime||0)-(s.avgResponseTime||0)}]),ie=V(()=>[{title:i("analytics.recentColumns.timestamp"),key:"timestamp",dataIndex:"timestamp",width:"180px"},{title:"Provider",key:"provider",dataIndex:"provider",width:"110px"},{title:"Model",key:"model",dataIndex:"model",ellipsis:!0},{title:i("analytics.recentColumns.input"),key:"inputTokens",dataIndex:"inputTokens",width:"90px"},{title:i("analytics.recentColumns.output"),key:"outputTokens",dataIndex:"outputTokens",width:"90px"},{title:i("analytics.recentColumns.cost"),key:"cost",dataIndex:"cost",width:"100px"},{title:i("analytics.recentColumns.responseTime"),key:"responseTime",dataIndex:"responseTime",width:"100px"}]);function w(e){return(e||"").replace(/,/g,"")}function R(e){try{const s=(e||"").trim(),n=s.search(/[{[]/);return n>=0?JSON.parse(s.slice(n)):null}catch{return null}}function Q(e){const s=(e||"").split(`
2
+ `);for(const n of s){const f=n.trim(),j=f.match(/total\s*calls?\s*[::]\s*([\d,]+)/i);j&&(g.totalCalls=parseInt(w(j[1]),10)||0);const B=f.match(/total\s*tokens?\s*[::]\s*([\d,]+)/i);B&&(g.totalTokens=parseInt(w(B[1]),10)||0);const M=f.match(/cost\s*[::]\s*\$?([\d,.]+)/i);M&&(g.totalCost=parseFloat(w(M[1]))||0);const A=f.match(/(?:avg|average)\s*(?:response\s*)?time\s*[::]\s*([\d,.]+)/i);A&&(g.avgResponseTime=parseFloat(w(A[1]))||0)}}function W(e){g.totalCalls=e.totalCalls??e.total_calls??e.calls??0,g.totalTokens=e.totalTokens??e.total_tokens??e.tokens??0,g.totalCost=e.totalCost??e.total_cost??e.cost??0,g.avgResponseTime=e.avgResponseTime??e.avg_response_time??e.avgTime??0}function K(e){return(Array.isArray(e)?e:e.breakdown||e.providers||e.rows||[]).map((n,f)=>({key:f,provider:n.provider||"-",model:n.model||"-",calls:n.calls||n.count||0,inputTokens:n.inputTokens??n.input_tokens??0,outputTokens:n.outputTokens??n.output_tokens??0,totalTokens:n.totalTokens??n.total_tokens??(n.inputTokens??0)+(n.outputTokens??0),cost:n.cost??n.total_cost??0,avgResponseTime:n.avgResponseTime??n.avg_response_time??0}))}function q(e){return(Array.isArray(e)?e:e.recent||e.records||e.rows||[]).map((n,f)=>({key:f,timestamp:n.timestamp||n.time||n.created_at||"-",provider:n.provider||"-",model:n.model||"-",inputTokens:n.inputTokens??n.input_tokens??0,outputTokens:n.outputTokens??n.output_tokens??0,cost:n.cost??0,responseTime:n.responseTime??n.response_time??0}))}function G(e){_.entries=e.entries??e.count??e.size??0,_.hits=e.hits??e.cacheHits??e.cache_hits??0,_.tokensSaved=e.tokensSaved??e.tokens_saved??0,_.expired=e.expired??e.expiredCount??e.expired_count??0}function X(e){const s=(e||"").split(`
3
+ `);for(const n of s){const f=n.trim(),j=f.match(/entries?\s*[::]\s*([\d,]+)/i);j&&(_.entries=parseInt(w(j[1]),10)||0);const B=f.match(/hits?\s*[::]\s*([\d,]+)/i);B&&(_.hits=parseInt(w(B[1]),10)||0);const M=f.match(/(?:tokens?\s*)?saved\s*[::]\s*([\d,]+)/i);M&&(_.tokensSaved=parseInt(w(M[1]),10)||0);const A=f.match(/expired?\s*[::]\s*([\d,]+)/i);A&&(_.expired=parseInt(w(A[1]),10)||0)}}async function H(){J.value=!0;try{const{output:e}=await t.execute(`tokens show --period ${F.value} --json`,15e3),s=R(e);s?W(s):Q(e)}catch(e){console.error("loadSummary failed:",e)}finally{J.value=!1}}async function Y(){b.value=!0;try{const{output:e}=await t.execute("tokens breakdown --json",15e3),s=R(e);s?C.value=K(s):C.value=[]}catch(e){console.error("loadBreakdown failed:",e),C.value=[]}finally{b.value=!1}}async function Z(){L.value=!0;try{const{output:e}=await t.execute(`tokens recent --limit ${m.value} --json`,15e3),s=R(e);s?O.value=q(s):O.value=[]}catch(e){console.error("loadRecent failed:",e),O.value=[]}finally{L.value=!1}}async function P(){S.value=!0;try{const{output:e}=await t.execute("tokens cache --json",15e3),s=R(e);s?G(s):X(e)}catch(e){console.error("loadCache failed:",e)}finally{S.value=!1}}async function ce(){p.value=!0;try{const{output:e}=await t.execute("tokens cache --clear --json",15e3),s=R(e);s&&s.error?U.error(i("analytics.messages.cacheClearFailed",{err:s.error})):(U.success(i("analytics.messages.cacheClearOk")),await P())}catch(e){U.error(i("analytics.messages.cacheClearFailed",{err:e.message}))}finally{p.value=!1}}async function de(){h.value=!0;try{const{output:e}=await t.execute("tokens cache --cleanup --json",15e3),s=R(e);s&&s.error?U.error(i("analytics.messages.cacheCleanupFailed",{err:s.error})):(U.success(i("analytics.messages.cacheCleanupOk")),await P())}catch(e){U.error(i("analytics.messages.cacheCleanupFailed",{err:e.message}))}finally{h.value=!1}}async function $(){I.value=!0;try{const e=await t.sendRaw({type:"usage.global",limit:1e3},15e3);if(e.ok&&e.usage){const s=e.usage.total||{};z.totalCalls=s.calls??0,z.inputTokens=s.inputTokens??s.input_tokens??0,z.outputTokens=s.outputTokens??s.output_tokens??0,z.totalTokens=s.totalTokens??s.total_tokens??0,l.value=(e.usage.byModel||[]).map((n,f)=>({key:f,provider:n.provider||"-",model:n.model||"-",calls:n.calls??0,inputTokens:n.inputTokens??n.input_tokens??0,outputTokens:n.outputTokens??n.output_tokens??0,totalTokens:n.totalTokens??n.total_tokens??0}))}}catch(e){console.warn("loadSessionUsage failed (route may not be available):",e.message)}finally{I.value=!1}}async function ee(){await Promise.all([H(),Y(),Z(),P(),$()])}ae(F,()=>{H()}),oe(ee);const te={t:i,ws:t,period:F,summaryLoading:J,breakdownLoading:b,recentLoading:L,cacheLoading:S,cacheClearLoading:p,cacheCleanupLoading:h,recentLimit:m,summary:g,breakdownData:C,recentData:O,cacheStats:_,sessionUsageLoading:I,sessionUsageSummary:z,sessionUsageByModel:l,sessionUsageColumns:k,breakdownColumns:re,recentColumns:ie,stripCommas:w,tryParseJSON:R,parseSummaryText:Q,parseSummaryJSON:W,parseBreakdownJSON:K,parseRecentJSON:q,parseCacheJSON:G,parseCacheText:X,loadSummary:H,loadBreakdown:Y,loadRecent:Z,loadCache:P,cacheClear:ce,cacheCleanup:de,loadSessionUsage:$,loadAll:ee,ref:x,computed:V,reactive:E,watch:ae,onMounted:oe,get useI18n(){return se},get BarChartOutlined(){return ge},get DollarOutlined(){return ve},get ReloadOutlined(){return fe},get ThunderboltOutlined(){return ke},get DatabaseOutlined(){return me},get DeleteOutlined(){return ye},get message(){return U},get useWsStore(){return ne}};return Object.defineProperty(te,"__isScriptSetup",{enumerable:!1,value:!0}),te}},xe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},he={class:"page-title"},Te={class:"page-sub"},be={style:{display:"flex","align-items":"center",gap:"12px"}},Ce={key:0,style:{"text-align":"center",padding:"60px"}},we={key:1,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},Se={key:2,style:{color:"#faad14"}},Oe={key:3,style:{color:"var(--text-secondary)"}},Ie={key:0,style:{"text-align":"center",padding:"60px"}},ze={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},Re={key:2,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},Ue={key:3,style:{color:"#faad14"}},Le={key:4,style:{color:"var(--text-secondary)"}},De={key:0,style:{"text-align":"center",padding:"40px"}},je={key:1,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},Be={key:0,style:{"text-align":"center",padding:"40px"}};function Me(le,u,i,t,F,J){const b=T("a-radio-button"),L=T("a-radio-group"),S=T("a-button"),p=T("a-statistic"),h=T("a-card"),m=T("a-col"),g=T("a-row"),C=T("a-spin"),O=T("a-tag"),_=T("a-empty"),I=T("a-table"),z=T("a-space");return c(),v("div",null,[N("div",xe,[N("div",null,[N("h2",he,r(t.t("analytics.title")),1),N("p",Te,r(t.t("analytics.subtitle")),1)]),N("div",be,[a(L,{value:t.period,"onUpdate:value":u[0]||(u[0]=l=>t.period=l),"button-style":"solid",size:"small"},{default:o(()=>[a(b,{value:"today"},{default:o(()=>[d(r(t.t("analytics.period.today")),1)]),_:1}),a(b,{value:"week"},{default:o(()=>[d(r(t.t("analytics.period.week")),1)]),_:1}),a(b,{value:"month"},{default:o(()=>[d(r(t.t("analytics.period.month")),1)]),_:1}),a(b,{value:"all"},{default:o(()=>[d(r(t.t("analytics.period.all")),1)]),_:1})]),_:1},8,["value"]),a(S,{type:"primary",ghost:"",loading:t.summaryLoading,onClick:t.loadAll},{icon:o(()=>[a(t.ReloadOutlined)]),default:o(()=>[d(" "+r(t.t("analytics.refresh")),1)]),_:1},8,["loading"])])]),y(" Top row: 4 stat cards "),a(g,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[a(m,{xs:24,sm:12,lg:6},{default:o(()=>[a(h,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(p,{title:t.t("analytics.summary.totalCalls"),value:t.summary.totalCalls,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:o(()=>[a(t.BarChartOutlined)]),suffix:o(()=>[d(r(t.t("analytics.summary.callsSuffix")),1)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(m,{xs:24,sm:12,lg:6},{default:o(()=>[a(h,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(p,{title:t.t("analytics.summary.totalTokens"),value:t.summary.totalTokens,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:o(()=>[a(t.ThunderboltOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(m,{xs:24,sm:12,lg:6},{default:o(()=>[a(h,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(p,{title:t.t("analytics.summary.totalCost"),value:t.summary.totalCost,precision:4,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:o(()=>[a(t.DollarOutlined)]),suffix:o(()=>[...u[2]||(u[2]=[d("USD",-1)])]),_:1},8,["title","value"])]),_:1})]),_:1}),a(m,{xs:24,sm:12,lg:6},{default:o(()=>[a(h,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(p,{title:t.t("analytics.summary.avgResponseTime"),value:t.summary.avgResponseTime,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:o(()=>[a(t.ThunderboltOutlined)]),suffix:o(()=>[...u[3]||(u[3]=[d("ms",-1)])]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),y(" Section 2: Provider Breakdown "),a(h,{title:t.t("analytics.providerCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{default:o(()=>[t.breakdownLoading?(c(),v("div",Ce,[a(C,{size:"large"})])):(c(),D(I,{key:1,columns:t.breakdownColumns,"data-source":t.breakdownData,pagination:{pageSize:20,showTotal:l=>t.t("analytics.totals.rows",{count:l})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"analytics-row"},{bodyCell:o(({column:l,record:k})=>[l.key==="provider"?(c(),D(O,{key:0,color:"blue"},{default:o(()=>[d(r(k.provider),1)]),_:2},1024)):y("v-if",!0),l.key==="model"?(c(),v("span",we,r(k.model),1)):y("v-if",!0),l.key==="cost"?(c(),v("span",Se,"$"+r((k.cost||0).toFixed(4)),1)):y("v-if",!0),l.key==="avgResponseTime"?(c(),v("span",Oe,r(k.avgResponseTime||0)+" ms",1)):y("v-if",!0)]),emptyText:o(()=>[a(_,{description:t.t("analytics.providerEmpty")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"]))]),_:1},8,["title"]),y(" Section 3: Recent Calls "),a(h,{title:t.t("analytics.recentCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:o(()=>[a(L,{value:t.recentLimit,"onUpdate:value":u[1]||(u[1]=l=>t.recentLimit=l),size:"small",onChange:t.loadRecent},{default:o(()=>[a(b,{value:10},{default:o(()=>[...u[4]||(u[4]=[d("10",-1)])]),_:1}),a(b,{value:20},{default:o(()=>[...u[5]||(u[5]=[d("20",-1)])]),_:1}),a(b,{value:50},{default:o(()=>[...u[6]||(u[6]=[d("50",-1)])]),_:1})]),_:1},8,["value"])]),default:o(()=>[t.recentLoading?(c(),v("div",Ie,[a(C,{size:"large"})])):(c(),D(I,{key:1,columns:t.recentColumns,"data-source":t.recentData,pagination:{pageSize:20,showTotal:l=>t.t("analytics.totals.rows",{count:l})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"analytics-row"},{bodyCell:o(({column:l,record:k})=>[l.key==="timestamp"?(c(),v("span",ze,r(k.timestamp),1)):y("v-if",!0),l.key==="provider"?(c(),D(O,{key:1,color:"blue"},{default:o(()=>[d(r(k.provider),1)]),_:2},1024)):y("v-if",!0),l.key==="model"?(c(),v("span",Re,r(k.model),1)):y("v-if",!0),l.key==="cost"?(c(),v("span",Ue,"$"+r((k.cost||0).toFixed(4)),1)):y("v-if",!0),l.key==="responseTime"?(c(),v("span",Le,r(k.responseTime||0)+" ms",1)):y("v-if",!0)]),emptyText:o(()=>[a(_,{description:t.t("analytics.recentEmpty")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"]))]),_:1},8,["title"]),y(" Section 4: Session Token Usage (Phase J — from JSONL sessions) "),a(h,{title:t.t("analytics.sessionCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:o(()=>[a(S,{size:"small",loading:t.sessionUsageLoading,onClick:t.loadSessionUsage,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[a(t.ReloadOutlined)]),default:o(()=>[d(" "+r(t.t("analytics.refresh")),1)]),_:1},8,["loading"])]),default:o(()=>[t.sessionUsageLoading?(c(),v("div",De,[a(C)])):(c(),v(ue,{key:1},[a(g,{gutter:[16,16],style:{"margin-bottom":"16px"}},{default:o(()=>[a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.sessionStats.totalCalls"),value:t.sessionUsageSummary.totalCalls,"value-style":{color:"#1677ff",fontSize:"18px"}},{prefix:o(()=>[a(t.BarChartOutlined)]),_:1},8,["title","value"])]),_:1}),a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.sessionStats.inputTokens"),value:t.sessionUsageSummary.inputTokens,"value-style":{color:"#52c41a",fontSize:"18px"}},null,8,["title","value"])]),_:1}),a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.sessionStats.outputTokens"),value:t.sessionUsageSummary.outputTokens,"value-style":{color:"#faad14",fontSize:"18px"}},null,8,["title","value"])]),_:1}),a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.sessionStats.totalTokens"),value:t.sessionUsageSummary.totalTokens,"value-style":{color:"#722ed1",fontSize:"18px"}},null,8,["title","value"])]),_:1})]),_:1}),a(I,{columns:t.sessionUsageColumns,"data-source":t.sessionUsageByModel,pagination:!1,size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"analytics-row"},{bodyCell:o(({column:l,record:k})=>[l.key==="provider"?(c(),D(O,{key:0,color:"blue"},{default:o(()=>[d(r(k.provider),1)]),_:2},1024)):y("v-if",!0),l.key==="model"?(c(),v("span",je,r(k.model),1)):y("v-if",!0)]),emptyText:o(()=>[a(_,{description:t.t("analytics.sessionEmpty")},null,8,["description"])]),_:1},8,["columns","data-source"])],64))]),_:1},8,["title"]),y(" Section 5: Cache Status "),a(h,{title:t.t("analytics.cacheCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:o(()=>[a(z,null,{default:o(()=>[a(S,{size:"small",loading:t.cacheCleanupLoading,onClick:t.cacheCleanup,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[a(t.DeleteOutlined)]),default:o(()=>[d(" "+r(t.t("analytics.cacheActions.cleanup")),1)]),_:1},8,["loading"]),a(S,{size:"small",danger:"",loading:t.cacheClearLoading,onClick:t.cacheClear,style:{"border-color":"var(--border-color)"}},{icon:o(()=>[a(t.DeleteOutlined)]),default:o(()=>[d(" "+r(t.t("analytics.cacheActions.clear")),1)]),_:1},8,["loading"])]),_:1})]),default:o(()=>[t.cacheLoading?(c(),v("div",Be,[a(C)])):(c(),D(g,{key:1,gutter:[16,16]},{default:o(()=>[a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.cacheStats.entries"),value:t.cacheStats.entries,"value-style":{color:"#1677ff",fontSize:"18px"}},{prefix:o(()=>[a(t.DatabaseOutlined)]),_:1},8,["title","value"])]),_:1}),a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.cacheStats.hits"),value:t.cacheStats.hits,"value-style":{color:"#52c41a",fontSize:"18px"}},null,8,["title","value"])]),_:1}),a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.cacheStats.tokensSaved"),value:t.cacheStats.tokensSaved,"value-style":{color:"#faad14",fontSize:"18px"}},null,8,["title","value"])]),_:1}),a(m,{xs:12,sm:6},{default:o(()=>[a(p,{title:t.t("analytics.cacheStats.expired"),value:t.cacheStats.expired,"value-style":{color:"#ff4d4f",fontSize:"18px"}},null,8,["title","value"])]),_:1})]),_:1}))]),_:1},8,["title"])])}const Je=pe(_e,[["render",Me],["__scopeId","data-v-cab07171"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/views/Analytics.vue"]]);export{Je as default};
@@ -0,0 +1 @@
1
+ [data-v-cab07171] .analytics-row:hover td{background:var(--bg-card-hover)!important}[data-v-cab07171] .ant-card-head{border-color:var(--border-color)!important;color:var(--text-primary)!important}[data-v-cab07171] .ant-radio-button-wrapper{background:var(--bg-card)!important;border-color:var(--border-color)!important;color:var(--text-secondary)!important}[data-v-cab07171] .ant-radio-button-wrapper-checked{background:#1677ff!important;border-color:#1677ff!important;color:#fff!important}
@@ -0,0 +1,9 @@
1
+ import{b as v,r as P,I as k,P as p,J as L,c as e,K as t,U as d,Q as l,R as a,S as T,F as I,Z as se,_ as W,V as m,o as z,x as $,$ as fe,N as J,f as ee,M as te,w as ne,a0 as me}from"./vendor-BvqAck49.js";import{u as H,_ as Z,E as ke,a as oe,b as ie,c as ae,T as _e,d as V}from"./index-BJUf19Wd.js";import{u as N}from"./useShellMode-CgR0wCYM.js";import{R as ge,B as de,M as ce,U as Oe,D as he,S as be,h as we,i as ve,j as Le,N as Se,k as Ce,F as Ee,l as Be,m as Ae,A as Te,P as Me,n as Re,o as Pe,p as je,q as De,r as Ue,s as Ne,t as Ie,u as Ke,v as Fe,w as Ve,x as We,V as ze,K as Ge,y as He,z as qe,G as Je,H as Ye,J as Ze,W as Qe,O as Xe,Q as xe,X as $e,Y as et,Z as tt,_ as nt,$ as ot,a0 as it,a1 as at,a2 as lt,a3 as rt,a4 as st,a5 as dt,e as ct,a6 as ut,a7 as yt,a8 as pt,a9 as ft,aa as mt,ab as kt,ac as _t}from"./icons-DP3uiYxy.js";import le from"./index-BqVjUN8b.js";import"./KeyCode-D63Tfrq7.js";import"./omit-BYeliY1H.js";import"./pickAttrs-B9dcAKnu.js";import"./initDefaultProps-BnXISaAa.js";import"./motion-ChY7C0zJ.js";import"./raf-Deuc0E8-.js";import"./index-Cbqu804A.js";import"./index-POaFzYGS.js";import"./isVisible-C7tPsqfj.js";import"./useState-BK4hy8Ma.js";import"./devWarning-BDK34w0I.js";import"./compact-item-D0q0exuS.js";import"./createContext-D7pLFs2I.js";import"./Compact-1yzYeT04.js";import"./_getTag-DnrRH4E6.js";import"./styleChecker-DVdlHbQm.js";import"./zoom-DCbqxxLH.js";import"./ActionButton-CXwMgOvX.js";import"./vnode-DWi0X9WN.js";const gt=""+new URL("logo-DBCYUiWP.png",import.meta.url).href,B={notifications:P([]),unreadCount:P(0)};function G(i){if(i&&i.ok===!1)throw new Error(i.error||"notification handler failed");return i?.result??i}function re(){const i=H();async function y({limit:o=50,offset:s=0,isRead:f}={}){if(!N().isEmbedded)return B.notifications.value=[],B.unreadCount.value=0,B.notifications.value;const g=await i.sendRaw({type:"notification.list",limit:o,offset:s,isRead:f},15e3),O=G(g);if(O?.success===!1)throw new Error(O.error||"notification.list failed");return B.notifications.value=Array.isArray(O?.notifications)?O.notifications:[],await S(),B.notifications.value}async function S(){if(!N().isEmbedded)return B.unreadCount.value=0,0;const o=await i.sendRaw({type:"notification.unread-count"},1e4),s=G(o);return B.unreadCount.value=Number(s?.count)||0,B.unreadCount.value}async function n(o){if(o==null||o==="")throw new Error("id is required");if(!N().isEmbedded)return;const s=await i.sendRaw({type:"notification.mark-read",id:o},1e4),f=G(s);if(f?.success===!1)throw new Error(f.error||"notification.mark-read failed");const g=B.notifications.value.find(O=>O.id===o);g&&(g.is_read=1),await S()}async function _(){if(!N().isEmbedded)return;const o=await i.sendRaw({type:"notification.mark-all-read"},1e4),s=G(o);if(s?.success===!1)throw new Error(s.error||"notification.mark-all-read failed");for(const f of B.notifications.value)f.is_read=1;B.unreadCount.value=0}async function h(o,s=""){if(!N().isEmbedded)throw new Error("桌面通知仅在嵌入式 web-shell 中可用");const f=await i.sendRaw({type:"notification.send-desktop",title:o,body:s},1e4),g=G(f);if(g?.success===!1)throw new Error(g.error||"notification.send-desktop failed")}return{notifications:v(()=>B.notifications.value),unreadCount:v(()=>B.unreadCount.value),refresh:y,refreshUnreadCount:S,markRead:n,markAllRead:_,sendDesktop:h}}const Ot={__name:"NotificationBell",setup(i,{expose:y}){y();const S=P(!1),n=P("all"),_=P(!1),{notifications:h,unreadCount:o,refresh:s,markRead:f,markAllRead:g}=re();function O(){j()}z(()=>{window.addEventListener("cc:open-notification-drawer",O)}),$(()=>{window.removeEventListener("cc:open-notification-drawer",O)});const M=v(()=>n.value==="unread"?h.value.filter(c=>!c.is_read):h.value);async function C(){if(N().isEmbedded){_.value=!0;try{await s({limit:100})}catch{}finally{_.value=!1}}}async function j(){S.value=!0,await C()}async function D(c){if(!c.is_read)try{await f(c.id)}catch{}}async function r(){try{await g()}catch(c){console.warn("[NotificationBell] markAllRead failed:",c?.message||c)}}function w(c){if(!c)return"";const b=typeof c=="string"?Date.parse(c):Number(c);if(!Number.isFinite(b))return String(c);const R=Date.now()-b,U=6e4,K=60*U,F=24*K;return R<U?"刚刚":R<K?`${Math.floor(R/U)} 分钟前`:R<F?`${Math.floor(R/K)} 小时前`:new Date(b).toLocaleDateString()}const A={visible:S,filter:n,loading:_,notifications:h,unreadCount:o,refresh:s,markRead:f,markAllRead:g,_onOpenEvent:O,filtered:M,refreshList:C,onOpen:j,onItemClick:D,onMarkAllRead:r,formatTime:w,ref:P,computed:v,onMounted:z,onUnmounted:$,get Empty(){return ke},get BellOutlined(){return de},get ReloadOutlined(){return ge},get useNotifications(){return re},get useShellMode(){return N}};return Object.defineProperty(A,"__isScriptSetup",{enumerable:!1,value:!0}),A}},ht={class:"notif-toolbar"},bt={class:"notif-body"},wt={key:2,class:"notif-list"},vt=["onClick"],Lt={class:"notif-row"},St={class:"notif-title"},Ct={class:"notif-time"},Et={key:0,class:"notif-message"};function Bt(i,y,S,n,_,h){const o=k("a-badge"),s=k("a-tooltip"),f=k("a-radio-button"),g=k("a-radio-group"),O=k("a-space"),M=k("a-button"),C=k("a-empty"),j=k("a-spin"),D=k("a-drawer");return p(),L(I,null,[e(s,{title:"通知"},{default:t(()=>[e(o,{count:n.unreadCount,"overflow-count":99,offset:[-4,4]},{default:t(()=>[d("button",{type:"button",class:"notif-bell-btn","aria-label":"通知",onClick:n.onOpen},[e(n.BellOutlined)])]),_:1},8,["count"])]),_:1}),e(D,{open:n.visible,"onUpdate:open":y[1]||(y[1]=r=>n.visible=r),title:"通知中心",placement:"right",width:400,"body-style":{padding:0}},{default:t(()=>[d("div",ht,[e(O,null,{default:t(()=>[e(g,{value:n.filter,"onUpdate:value":y[0]||(y[0]=r=>n.filter=r),size:"small","button-style":"solid"},{default:t(()=>[e(f,{value:"all"},{default:t(()=>[l("全部 ("+a(n.notifications.length)+")",1)]),_:1}),e(f,{value:"unread"},{default:t(()=>[l("未读 ("+a(n.unreadCount)+")",1)]),_:1})]),_:1},8,["value"])]),_:1}),e(O,null,{default:t(()=>[e(M,{size:"small",loading:n.loading,onClick:n.refreshList},{icon:t(()=>[e(n.ReloadOutlined)]),_:1},8,["loading"]),e(M,{size:"small",disabled:n.unreadCount===0,onClick:n.onMarkAllRead},{default:t(()=>[...y[2]||(y[2]=[l(" 全部已读 ",-1)])]),_:1},8,["disabled"])]),_:1})]),d("div",bt,[!n.loading&&n.filtered.length===0?(p(),T(C,{key:0,description:"暂无通知",image:n.Empty.PRESENTED_IMAGE_SIMPLE,style:{padding:"60px 0"}},null,8,["image"])):n.loading?(p(),T(j,{key:1,style:{display:"block",padding:"60px"}})):(p(),L("ul",wt,[(p(!0),L(I,null,se(n.filtered,r=>(p(),L("li",{key:r.id,class:W(["notif-item",{unread:!r.is_read}]),onClick:w=>n.onItemClick(r)},[d("div",Lt,[d("div",St,a(r.title||r.message||"(无标题)"),1),d("span",Ct,a(n.formatTime(r.created_at)),1)]),r.message&&r.title?(p(),L("div",Et,a(r.message),1)):m("v-if",!0)],10,vt))),128))]))])]),_:1},8,["open"])],64)}const At=Z(Ot,[["render",Bt],["__scopeId","data-v-8c1554dd"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/components/NotificationBell.vue"]]),Tt={__name:"MobileBridgeHeaderStatus",setup(i,{expose:y}){y();function S(r){if(!r)return[];try{return JSON.parse(r)}catch{}const w=String(r).split(`
2
+ `),A=w.findIndex(c=>{const b=c.trim();if(!b)return!1;const R=b[0];if(R!=="["&&R!=="{")return!1;if(b.length===1)return!0;const U=b[1];return!(U>="A"&&U<="Z"||U>="a"&&U<="z")});if(A<0)return[];for(let c=w.length-1;c>=A;c--){const b=w[c].trim();if(/^[\]\}]/.test(b)&&!/^[\]\}][A-Za-z]/.test(b))try{return JSON.parse(w.slice(A,c+1).join(`
3
+ `))}catch{return[]}}return[]}const n=J(),_=H(),h=P([]);let o=null;const s=v(()=>h.value.length),f=v(()=>h.value.filter(r=>M(r)).length),g=v(()=>s.value===0?"var(--text-muted, #999)":"#52c41a"),O=v(()=>s.value===0?"尚未配对任何手机 — 点击进入配对":`已配对 ${s.value} 台手机 — 点击进入管理`);function M(r){if(!r)return!1;if(typeof r.online=="boolean")return r.online;const w=(r.status||"").toLowerCase();return w==="online"||w==="connected"||w==="active"||w==="paired"}async function C(){if(_.status==="connected")try{const{output:r}=await _.execute("p2p devices --type mobile --json",1e4);h.value=S(r)||[]}catch{}}function j(){n.push("/mobile-bridge")}z(()=>{C(),o=setInterval(C,5e3)}),ee(()=>{o&&(clearInterval(o),o=null)});const D={parseJsonOutput:S,router:n,ws:_,devices:h,get pollTimer(){return o},set pollTimer(r){o=r},totalCount:s,onlineCount:f,iconColor:g,tooltip:O,isOnline:M,refresh:C,onClick:j,ref:P,computed:v,onMounted:z,onBeforeUnmount:ee,get useRouter(){return J},get MobileOutlined(){return ce},get useWsStore(){return H}};return Object.defineProperty(D,"__isScriptSetup",{enumerable:!1,value:!0}),D}},Mt={key:0,class:"mbh-count"};function Rt(i,y,S,n,_,h){const o=k("a-badge"),s=k("a-tooltip");return p(),T(s,{title:n.tooltip},{default:t(()=>[e(o,{count:n.totalCount,"show-zero":!1,"overflow-count":9,offset:[-2,4]},{default:t(()=>[d("button",{type:"button",class:W(["mbh-btn",{"mbh-btn--active":n.totalCount>0}]),onClick:n.onClick},[e(n.MobileOutlined,{style:fe({color:n.iconColor,fontSize:"14px"})},null,8,["style"]),n.totalCount>0?(p(),L("span",Mt,a(n.totalCount),1)):m("v-if",!0)],2)]),_:1},8,["count"])]),_:1},8,["title"])}const Pt=Z(Tt,[["render",Rt],["__scopeId","data-v-e8ef01d6"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/components/MobileBridgeHeaderStatus.vue"]]),Y="cc.web-panel.sidebar.openKeys",jt={__name:"AppLayout",setup(i,{expose:y}){y();const S=J(),n=te(),_=H(),h=oe(),{t:o}=ie(),s=N(),f=P(!1),g=window.__CC_CONFIG__||{},O=v(()=>g.mode==="project"),M="v5.0.3.100",C=v(()=>h.current),j=v(()=>h.config.vars["--menu-mode"]),D=v(()=>{const u=n.name?.toLowerCase()||"dashboard";return[{mcptools:"mcp",quickask:"quick-ask",ukeysign:"ukey-sign"}[u]||u]}),r=["g-overview","g-config","g-data","g-advanced","g-enterprise","g-social","g-media","g-extension"];function w(){try{const u=localStorage.getItem(Y);if(u){const E=JSON.parse(u);if(Array.isArray(E))return E.filter(q=>r.includes(q))}}catch{}return[...r]}const A=P(w());ne(A,u=>{try{localStorage.setItem(Y,JSON.stringify(u))}catch{}},{deep:!0});const c=v(()=>_.status),b=v(()=>({connected:"success",connecting:"processing",error:"error",disconnected:"default"})[_.status]||"default"),R=v(()=>{const u=`appLayout.footerStatus.${_.status}`,E=o(u);return E===u?o("appLayout.footerStatus.unknown"):E});function U(u){h.setTheme(u)}const{current:K,supported:F,setLocale:Q}=ae();function ue(){const u=F[(F.indexOf(K.value)+1)%F.length];Q(u)}async function X(u){try{const E=await _.sendRaw({type:"window.open",role:u},1e4);if(E?.ok===!1){V.error(`打开失败:${E.error||"未知"}`);return}const q=E?.result??E;q?.reason==="role_reserved"?V.warning("该窗口角色被保留"):q?.reason}catch(E){V.error(`打开桌面窗口失败:${E.message||E}`)}}async function ye(){le.confirm({title:"切换到桌面壳?",content:"回到 V5/V6 桌面壳。完整 electronAPI 表面(UKey 硬件 / 原生对话框 / 系统设置等)会重新可用,但失去 web-panel 的 SPA 体验。保存后需要重启应用才生效。",okText:"切换并重启",cancelText:"取消",centered:!0,async onOk(){try{const u=await _.sendRaw({type:"shell.switch",target:"desktop"},5e3);if(u?.ok===!1)throw new Error(u.error||"shell.switch returned failure");V.loading({content:"正在重启…",duration:0})}catch(u){const E=u instanceof Error?u.message:String(u);V.error("切换失败:"+E)}}})}function pe({key:u}){if(typeof u=="string"&&u.startsWith("desktop:")){X(u);return}S.push({mcp:"/mcp"}[u]||`/${u}`)}z(()=>_.connect());const x={router:S,route:n,ws:_,themeStore:h,t:o,shellMode:s,collapsed:f,cfg:g,isProject:O,PRODUCT_VERSION:M,currentTheme:C,menuTheme:j,selectedKeys:D,ALL_GROUP_KEYS:r,OPEN_KEYS_LS:Y,loadOpenKeys:w,openKeys:A,wsStatus:c,statusBadge:b,statusText:R,setTheme:U,locale:K,SUPPORTED_LOCALES:F,setLocale:Q,toggleLocale:ue,openDesktopWindow:X,switchToDesktopShell:ye,onMenuClick:pe,ref:P,computed:v,onMounted:z,watch:ne,get useRouter(){return J},get useRoute(){return te},get DashboardOutlined(){return _t},get MessageOutlined(){return kt},get RocketOutlined(){return mt},get AppstoreOutlined(){return ft},get ApiOutlined(){return pt},get FolderOutlined(){return yt},get GlobalOutlined(){return ut},get InfoCircleOutlined(){return ct},get ControlOutlined(){return dt},get FileTextOutlined(){return st},get CloudServerOutlined(){return rt},get BookOutlined(){return lt},get BranchesOutlined(){return at},get ClockCircleOutlined(){return it},get ThunderboltOutlined(){return ot},get ApartmentOutlined(){return nt},get SafetyCertificateOutlined(){return tt},get LockOutlined(){return et},get WifiOutlined(){return $e},get CodeOutlined(){return xe},get ProjectOutlined(){return Xe},get WalletOutlined(){return Qe},get TeamOutlined(){return Ze},get BarChartOutlined(){return Ye},get BlockOutlined(){return Je},get CloudUploadOutlined(){return qe},get ReadOutlined(){return He},get KeyOutlined(){return Ge},get VideoCameraOutlined(){return ze},get ShareAltOutlined(){return We},get IdcardOutlined(){return Ve},get UsergroupAddOutlined(){return Fe},get ShoppingOutlined(){return Ke},get SwapOutlined(){return Ie},get AlertOutlined(){return Ne},get SafetyOutlined(){return Ue},get ExperimentOutlined(){return De},get DeploymentUnitOutlined(){return je},get BulbOutlined(){return Pe},get BankOutlined(){return Re},get PartitionOutlined(){return Me},get AuditOutlined(){return Te},get FileSearchOutlined(){return Ae},get TrophyOutlined(){return Be},get FireOutlined(){return Ee},get SearchOutlined(){return Ce},get NumberOutlined(){return Se},get ClusterOutlined(){return Le},get SoundOutlined(){return ve},get DesktopOutlined(){return we},get BellOutlined(){return de},get SyncOutlined(){return be},get MobileOutlined(){return ce},get DatabaseOutlined(){return he},get UnorderedListOutlined(){return Oe},get message(){return V},get Modal(){return le},get useWsStore(){return H},get useThemeStore(){return oe},get THEMES(){return _e},get logoSrc(){return gt},get useShellMode(){return N},get useI18n(){return ie},get useLocale(){return ae},NotificationBell:At,MobileBridgeHeaderStatus:Pt};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},Dt=["src"],Ut={key:0,class:"logo-text"},Nt={key:0,class:"mode-banner project"},It={class:"banner-info"},Kt={class:"banner-name"},Ft={class:"banner-sub"},Vt={key:1,class:"mode-banner global"},Wt={class:"banner-name"},zt=["title"],Gt={class:"group-label"},Ht={class:"group-label"},qt={class:"group-label"},Jt={class:"group-label"},Yt={class:"group-label"},Zt={class:"group-label"},Qt={class:"group-label"},Xt={class:"group-label"},xt={class:"group-label"},$t={key:0,class:"footer-text"},en={class:"header-left"},tn={class:"header-right"},nn={class:"theme-switcher"},on=["data-theme-key","onClick"],an=["data-locale"],ln={class:"lang-switch-label"},rn={class:"version-tag"};function sn(i,y,S,n,_,h){const o=k("a-menu-item"),s=k("a-sub-menu"),f=k("a-menu-divider"),g=k("a-menu"),O=k("a-badge"),M=k("a-layout-sider"),C=k("a-tooltip"),j=k("a-tag"),D=k("a-layout-header"),r=k("router-view"),w=k("a-layout-content"),A=k("a-layout");return p(),T(A,{class:"app-root"},{default:t(()=>[m(" ── Sidebar ─────────────────────────────────────────────────── "),e(M,{collapsed:n.collapsed,"onUpdate:collapsed":y[2]||(y[2]=c=>n.collapsed=c),collapsible:"","collapsed-width":56,width:216,class:"sidebar"},{default:t(()=>[m(" Logo "),d("div",{class:W(["logo",{collapsed:n.collapsed}])},[d("img",{src:n.logoSrc,alt:"ChainlessChain",class:"logo-icon"},null,8,Dt),n.collapsed?m("v-if",!0):(p(),L("span",Ut,"ChainlessChain"))],2),m(" Mode banner "),n.collapsed?(p(),L("div",{key:1,class:"mode-icon-sm",title:n.isProject?n.cfg.projectName:i.$t("appLayout.scope.global")},[n.isProject?(p(),T(n.FolderOutlined,{key:0,style:{color:"#1677ff"}})):(p(),T(n.GlobalOutlined,{key:1,style:{color:"#722ed1"}}))],8,zt)):(p(),L(I,{key:0},[n.isProject?(p(),L("div",Nt,[e(n.FolderOutlined,{class:"banner-icon"}),d("div",It,[d("div",Kt,a(n.cfg.projectName||i.$t("appLayout.scope.fallbackProject")),1),d("div",Ft,a(i.$t("appLayout.scope.projectPanel")),1)])])):(p(),L("div",Vt,[e(n.GlobalOutlined,{class:"banner-icon"}),d("span",Wt,a(i.$t("appLayout.scope.global")),1)]))],64)),m(" Navigation "),e(g,{selectedKeys:n.selectedKeys,"onUpdate:selectedKeys":y[0]||(y[0]=c=>n.selectedKeys=c),openKeys:n.openKeys,"onUpdate:openKeys":y[1]||(y[1]=c=>n.openKeys=c),theme:n.menuTheme,mode:"inline","inline-collapsed":n.collapsed,class:"side-menu",onClick:n.onMenuClick},{default:t(()=>[n.collapsed?(p(),L(I,{key:1},[e(o,{key:"dashboard"},{icon:t(()=>[e(n.DashboardOutlined)]),_:1}),e(o,{key:"chat"},{icon:t(()=>[e(n.MessageOutlined)]),_:1}),e(o,{key:"quick-ask"},{icon:t(()=>[e(n.ThunderboltOutlined)]),_:1}),e(o,{key:"cowork"},{icon:t(()=>[e(n.RocketOutlined)]),_:1}),e(o,{key:"services"},{icon:t(()=>[e(n.ControlOutlined)]),_:1}),e(o,{key:"aiops"},{icon:t(()=>[e(n.AlertOutlined)]),_:1}),e(o,{key:"tokens"},{icon:t(()=>[e(n.NumberOutlined)]),_:1}),e(o,{key:"logs"},{icon:t(()=>[e(n.FileTextOutlined)]),_:1}),e(f,{class:"divider-sm"}),e(o,{key:"skills"},{icon:t(()=>[e(n.AppstoreOutlined)]),_:1}),e(o,{key:"providers"},{icon:t(()=>[e(n.ApiOutlined)]),_:1}),e(o,{key:"mcp"},{icon:t(()=>[e(n.CloudServerOutlined)]),_:1}),e(o,{key:"project-settings"},{icon:t(()=>[e(n.FolderOutlined)]),_:1}),e(o,{key:"speech-settings"},{icon:t(()=>[e(n.SoundOutlined)]),_:1}),e(o,{key:"notification-settings"},{icon:t(()=>[e(n.BellOutlined)]),_:1}),e(o,{key:"sync-settings"},{icon:t(()=>[e(n.SyncOutlined)]),_:1}),e(o,{key:"nlprog"},{icon:t(()=>[e(n.BulbOutlined)]),_:1}),e(o,{key:"codegen"},{icon:t(()=>[e(n.CodeOutlined)]),_:1}),e(f,{class:"divider-sm"}),e(o,{key:"notes"},{icon:t(()=>[e(n.BookOutlined)]),_:1}),e(o,{key:"search"},{icon:t(()=>[e(n.SearchOutlined)]),_:1}),e(o,{key:"memory"},{icon:t(()=>[e(n.BranchesOutlined)]),_:1}),e(o,{key:"knowledge"},{icon:t(()=>[e(n.ShareAltOutlined)]),_:1}),e(o,{key:"personal-data-hub"},{icon:t(()=>[e(n.DatabaseOutlined)]),_:1}),e(o,{key:"personal-data-hub/browser"},{icon:t(()=>[e(n.UnorderedListOutlined)]),_:1}),e(o,{key:"marketplace"},{icon:t(()=>[e(n.ShoppingOutlined)]),_:1}),e(o,{key:"cron"},{icon:t(()=>[e(n.ClockCircleOutlined)]),_:1}),e(o,{key:"workflow"},{icon:t(()=>[e(n.ApartmentOutlined)]),_:1}),e(o,{key:"pipeline"},{icon:t(()=>[e(n.PartitionOutlined)]),_:1}),e(o,{key:"tasks"},{icon:t(()=>[e(n.ThunderboltOutlined)]),_:1}),e(f,{class:"divider-sm"}),e(o,{key:"security"},{icon:t(()=>[e(n.SafetyCertificateOutlined)]),_:1}),e(o,{key:"ukey-sign"},{icon:t(()=>[e(n.KeyOutlined)]),_:1}),e(o,{key:"trust"},{icon:t(()=>[e(n.SafetyOutlined)]),_:1}),e(o,{key:"audit"},{icon:t(()=>[e(n.FileSearchOutlined)]),_:1}),e(o,{key:"mtc"},{icon:t(()=>[e(n.SafetyOutlined)]),_:1}),e(o,{key:"mtc-audit"},{icon:t(()=>[e(n.SafetyOutlined)]),_:1}),e(o,{key:"multisig"},{icon:t(()=>[e(n.TeamOutlined)]),_:1}),e(o,{key:"did"},{icon:t(()=>[e(n.IdcardOutlined)]),_:1}),e(o,{key:"permissions"},{icon:t(()=>[e(n.LockOutlined)]),_:1}),e(o,{key:"p2p"},{icon:t(()=>[e(n.WifiOutlined)]),_:1}),e(o,{key:"mobile-bridge"},{icon:t(()=>[e(n.MobileOutlined)]),_:1}),e(o,{key:"terminal"},{icon:t(()=>[e(n.DesktopOutlined)]),_:1}),e(o,{key:"backup"},{icon:t(()=>[e(n.CloudUploadOutlined)]),_:1}),e(o,{key:"git"},{icon:t(()=>[e(n.CodeOutlined)]),_:1}),e(o,{key:"projects"},{icon:t(()=>[e(n.ProjectOutlined)]),_:1}),e(o,{key:"crosschain"},{icon:t(()=>[e(n.SwapOutlined)]),_:1}),e(o,{key:"compliance"},{icon:t(()=>[e(n.SafetyOutlined)]),_:1}),e(o,{key:"privacy"},{icon:t(()=>[e(n.ExperimentOutlined)]),_:1}),e(o,{key:"inference"},{icon:t(()=>[e(n.DeploymentUnitOutlined)]),_:1}),e(o,{key:"federation"},{icon:t(()=>[e(n.ClusterOutlined)]),_:1}),e(f,{class:"divider-sm"}),e(o,{key:"wallet"},{icon:t(()=>[e(n.WalletOutlined)]),_:1}),e(o,{key:"organization"},{icon:t(()=>[e(n.TeamOutlined)]),_:1}),e(o,{key:"tenant"},{icon:t(()=>[e(n.BankOutlined)]),_:1}),e(o,{key:"sla"},{icon:t(()=>[e(n.DashboardOutlined)]),_:1}),e(o,{key:"analytics"},{icon:t(()=>[e(n.BarChartOutlined)]),_:1}),e(o,{key:"templates"},{icon:t(()=>[e(n.BlockOutlined)]),_:1}),e(f,{class:"divider-sm"}),e(o,{key:"community"},{icon:t(()=>[e(n.UsergroupAddOutlined)]),_:1}),e(o,{key:"governance"},{icon:t(()=>[e(n.AuditOutlined)]),_:1}),e(o,{key:"reputation"},{icon:t(()=>[e(n.TrophyOutlined)]),_:1}),e(o,{key:"recommend"},{icon:t(()=>[e(n.FireOutlined)]),_:1}),e(f,{class:"divider-sm"}),e(o,{key:"rssfeed"},{icon:t(()=>[e(n.ReadOutlined)]),_:1}),e(o,{key:"webauthn"},{icon:t(()=>[e(n.KeyOutlined)]),_:1}),n.shellMode.isEmbedded?(p(),L(I,{key:0},[e(f,{class:"divider-sm"}),e(o,{key:"desktop:hardware-wallet"},{icon:t(()=>[e(n.SafetyCertificateOutlined)]),_:1}),e(o,{key:"desktop:backup-dashboard"},{icon:t(()=>[e(n.CloudUploadOutlined)]),_:1}),e(o,{key:"desktop:llm-test-chat"},{icon:t(()=>[e(n.ExperimentOutlined)]),_:1}),e(o,{key:"desktop:settings"},{icon:t(()=>[e(n.ControlOutlined)]),_:1})],64)):m("v-if",!0)],64)):(p(),L(I,{key:0},[e(s,{key:"g-overview"},{title:t(()=>[d("span",Gt,a(i.$t("appLayout.groups.overview")),1)]),default:t(()=>[e(o,{key:"dashboard"},{icon:t(()=>[e(n.DashboardOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.dashboard")),1)]),_:1}),e(o,{key:"chat"},{icon:t(()=>[e(n.MessageOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.chat")),1)]),_:1}),e(o,{key:"quick-ask"},{icon:t(()=>[e(n.ThunderboltOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.quickAsk")),1)]),_:1}),e(o,{key:"cowork"},{icon:t(()=>[e(n.RocketOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.cowork")),1)]),_:1}),e(o,{key:"services"},{icon:t(()=>[e(n.ControlOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.services")),1)]),_:1}),e(o,{key:"aiops"},{icon:t(()=>[e(n.AlertOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.aiops")),1)]),_:1}),e(o,{key:"tokens"},{icon:t(()=>[e(n.NumberOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.tokens")),1)]),_:1}),e(o,{key:"logs"},{icon:t(()=>[e(n.FileTextOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.logs")),1)]),_:1})]),_:1}),e(s,{key:"g-config"},{title:t(()=>[d("span",Ht,a(i.$t("appLayout.groups.config")),1)]),default:t(()=>[e(o,{key:"skills"},{icon:t(()=>[e(n.AppstoreOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.skills")),1)]),_:1}),e(o,{key:"providers"},{icon:t(()=>[e(n.ApiOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.providers")),1)]),_:1}),e(o,{key:"mcp"},{icon:t(()=>[e(n.CloudServerOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.mcp")),1)]),_:1}),e(o,{key:"project-settings"},{icon:t(()=>[e(n.FolderOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.projectSettings")),1)]),_:1}),e(o,{key:"speech-settings"},{icon:t(()=>[e(n.SoundOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.speechSettings")),1)]),_:1}),e(o,{key:"notification-settings"},{icon:t(()=>[e(n.BellOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.notificationSettings")),1)]),_:1}),e(o,{key:"sync-settings"},{icon:t(()=>[e(n.SyncOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.syncSettings")),1)]),_:1}),e(o,{key:"nlprog"},{icon:t(()=>[e(n.BulbOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.nlprog")),1)]),_:1}),e(o,{key:"codegen"},{icon:t(()=>[e(n.CodeOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.codegen")),1)]),_:1})]),_:1}),e(s,{key:"g-data"},{title:t(()=>[d("span",qt,a(i.$t("appLayout.groups.data")),1)]),default:t(()=>[e(o,{key:"notes"},{icon:t(()=>[e(n.BookOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.notes")),1)]),_:1}),e(o,{key:"search"},{icon:t(()=>[e(n.SearchOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.search")),1)]),_:1}),e(o,{key:"memory"},{icon:t(()=>[e(n.BranchesOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.memory")),1)]),_:1}),e(o,{key:"knowledge"},{icon:t(()=>[e(n.ShareAltOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.knowledge")),1)]),_:1}),e(o,{key:"personal-data-hub"},{icon:t(()=>[e(n.DatabaseOutlined)]),default:t(()=>[y[3]||(y[3]=l("个人数据中台",-1))]),_:1}),e(o,{key:"personal-data-hub/browser"},{icon:t(()=>[e(n.UnorderedListOutlined)]),default:t(()=>[y[4]||(y[4]=l("数据浏览器",-1))]),_:1}),e(o,{key:"family-guard"},{icon:t(()=>[e(n.TeamOutlined)]),default:t(()=>[y[5]||(y[5]=l("家庭守护",-1))]),_:1}),e(o,{key:"marketplace"},{icon:t(()=>[e(n.ShoppingOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.marketplace")),1)]),_:1}),e(o,{key:"cron"},{icon:t(()=>[e(n.ClockCircleOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.cron")),1)]),_:1}),e(o,{key:"workflow"},{icon:t(()=>[e(n.ApartmentOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.workflow")),1)]),_:1}),e(o,{key:"pipeline"},{icon:t(()=>[e(n.PartitionOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.pipeline")),1)]),_:1}),e(o,{key:"tasks"},{icon:t(()=>[e(n.ThunderboltOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.tasks")),1)]),_:1})]),_:1}),e(s,{key:"g-advanced"},{title:t(()=>[d("span",Jt,a(i.$t("appLayout.groups.advanced")),1)]),default:t(()=>[e(o,{key:"security"},{icon:t(()=>[e(n.SafetyCertificateOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.security")),1)]),_:1}),e(o,{key:"ukey-sign"},{icon:t(()=>[e(n.KeyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.ukeySign")),1)]),_:1}),e(o,{key:"trust"},{icon:t(()=>[e(n.SafetyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.trust")),1)]),_:1}),e(o,{key:"audit"},{icon:t(()=>[e(n.FileSearchOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.audit")),1)]),_:1}),e(o,{key:"mtc"},{icon:t(()=>[e(n.SafetyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.mtc")),1)]),_:1}),e(o,{key:"mtc-audit"},{icon:t(()=>[e(n.SafetyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.mtcAudit","MTC 审计")),1)]),_:1}),e(o,{key:"multisig"},{icon:t(()=>[e(n.TeamOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.multisig","M-of-N 多签")),1)]),_:1}),e(o,{key:"did"},{icon:t(()=>[e(n.IdcardOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.did")),1)]),_:1}),e(o,{key:"permissions"},{icon:t(()=>[e(n.LockOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.permissions")),1)]),_:1}),e(o,{key:"p2p"},{icon:t(()=>[e(n.WifiOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.p2p")),1)]),_:1}),e(o,{key:"mobile-bridge"},{icon:t(()=>[e(n.MobileOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.mobileBridge","移动桥")),1)]),_:1}),e(o,{key:"mobile-projects"},{icon:t(()=>[e(n.MobileOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.mobileProjects","手机项目 (v0.2)")),1)]),_:1}),e(o,{key:"terminal"},{icon:t(()=>[e(n.DesktopOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.terminal","远程终端")),1)]),_:1}),e(o,{key:"backup"},{icon:t(()=>[e(n.CloudUploadOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.backup")),1)]),_:1}),e(o,{key:"git"},{icon:t(()=>[e(n.CodeOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.git")),1)]),_:1}),e(o,{key:"projects"},{icon:t(()=>[e(n.ProjectOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.projects")),1)]),_:1}),e(o,{key:"crosschain"},{icon:t(()=>[e(n.SwapOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.crosschain")),1)]),_:1}),e(o,{key:"compliance"},{icon:t(()=>[e(n.SafetyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.compliance")),1)]),_:1}),e(o,{key:"privacy"},{icon:t(()=>[e(n.ExperimentOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.privacy")),1)]),_:1}),e(o,{key:"inference"},{icon:t(()=>[e(n.DeploymentUnitOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.inference")),1)]),_:1}),e(o,{key:"federation"},{icon:t(()=>[e(n.ClusterOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.federation")),1)]),_:1})]),_:1}),e(s,{key:"g-enterprise"},{title:t(()=>[d("span",Yt,a(i.$t("appLayout.groups.enterprise")),1)]),default:t(()=>[e(o,{key:"wallet"},{icon:t(()=>[e(n.WalletOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.wallet")),1)]),_:1}),e(o,{key:"organization"},{icon:t(()=>[e(n.TeamOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.organization")),1)]),_:1}),e(o,{key:"tenant"},{icon:t(()=>[e(n.BankOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.tenant")),1)]),_:1}),e(o,{key:"sla"},{icon:t(()=>[e(n.DashboardOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.sla")),1)]),_:1}),e(o,{key:"analytics"},{icon:t(()=>[e(n.BarChartOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.analytics")),1)]),_:1}),e(o,{key:"templates"},{icon:t(()=>[e(n.BlockOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.templates")),1)]),_:1})]),_:1}),e(s,{key:"g-social"},{title:t(()=>[d("span",Zt,a(i.$t("appLayout.groups.social")),1)]),default:t(()=>[e(o,{key:"community"},{icon:t(()=>[e(n.UsergroupAddOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.community")),1)]),_:1}),e(o,{key:"governance"},{icon:t(()=>[e(n.AuditOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.governance")),1)]),_:1}),e(o,{key:"reputation"},{icon:t(()=>[e(n.TrophyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.reputation")),1)]),_:1}),e(o,{key:"recommend"},{icon:t(()=>[e(n.FireOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.recommend")),1)]),_:1})]),_:1}),e(s,{key:"g-media"},{title:t(()=>[d("span",Qt,a(i.$t("appLayout.groups.media")),1)]),default:t(()=>[e(o,{key:"video"},{icon:t(()=>[e(n.VideoCameraOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.video")),1)]),_:1})]),_:1}),e(s,{key:"g-extension"},{title:t(()=>[d("span",Xt,a(i.$t("appLayout.groups.extension")),1)]),default:t(()=>[e(o,{key:"rssfeed"},{icon:t(()=>[e(n.ReadOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.rssfeed")),1)]),_:1}),e(o,{key:"webauthn"},{icon:t(()=>[e(n.KeyOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.webauthn")),1)]),_:1})]),_:1}),m(` Desktop-only group — only shown in the embedded web-shell. Each
4
+ click opens a new BrowserWindow loading the V5/V6 desktop
5
+ renderer (full electronAPI / UKey / FS / settings live there). `),n.shellMode.isEmbedded?(p(),T(s,{key:"g-desktop"},{title:t(()=>[d("span",xt,a(i.$t("appLayout.groups.desktop")),1)]),default:t(()=>[e(o,{key:"desktop:hardware-wallet"},{icon:t(()=>[e(n.SafetyCertificateOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.desktopHardware")),1)]),_:1}),e(o,{key:"desktop:backup-dashboard"},{icon:t(()=>[e(n.CloudUploadOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.desktopBackup")),1)]),_:1}),e(o,{key:"desktop:llm-test-chat"},{icon:t(()=>[e(n.ExperimentOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.desktopLlmTest")),1)]),_:1}),e(o,{key:"desktop:settings"},{icon:t(()=>[e(n.ControlOutlined)]),default:t(()=>[l(a(i.$t("appLayout.items.desktopSettings")),1)]),_:1})]),_:1})):m("v-if",!0)],64))]),_:1},8,["selectedKeys","openKeys","theme","inline-collapsed"]),m(" Connection status "),d("div",{class:W(["sidebar-footer",{collapsed:n.collapsed}])},[e(O,{status:n.statusBadge},null,8,["status"]),n.collapsed?m("v-if",!0):(p(),L("span",$t,a(n.statusText),1))],2)]),_:1},8,["collapsed"]),m(" ── Main area ───────────────────────────────────────────────── "),e(A,{class:"main-area"},{default:t(()=>[m(" Header "),e(D,{class:"app-header"},{default:t(()=>[d("div",en,[d("div",{class:W(["scope-tag",n.isProject?"project":"global"])},[(p(),T(me(n.isProject?n.FolderOutlined:n.GlobalOutlined))),d("span",null,a(n.isProject?n.cfg.projectName||i.$t("appLayout.scope.fallbackProject"):i.$t("appLayout.scope.global")),1),n.isProject&&n.cfg.projectRoot?(p(),T(C,{key:0,title:n.cfg.projectRoot},{default:t(()=>[e(n.InfoCircleOutlined,{class:"info-icon"})]),_:1},8,["title"])):m("v-if",!0)],2)]),d("div",tn,[m(" Theme switcher "),d("div",nn,[(p(!0),L(I,null,se(n.THEMES,(c,b)=>(p(),T(C,{key:b,title:c.label},{default:t(()=>[d("button",{class:W(["theme-btn",{active:n.currentTheme===b}]),"data-theme-key":b,onClick:R=>n.setTheme(b)},a(c.icon),11,on)]),_:2},1032,["title"]))),128))]),m(` Language switcher (incremental i18n; only owns its own
6
+ labels + ErrorBoundary + common.* today). `),e(C,{title:i.$t("language.label")},{default:t(()=>[d("button",{class:"lang-switch-btn","data-locale":n.locale,onClick:n.toggleLocale},[e(n.GlobalOutlined,{class:"lang-switch-icon"}),d("span",ln,a(i.$t("language.switch")),1)],8,an)]),_:1},8,["title"]),m(" Mobile bridge status — pill showing online/total paired phones.\n Click to /mobile-bridge. Polls every 5s via `p2p devices` CLI. "),e(n.MobileBridgeHeaderStatus),m(` Notification bell — only meaningful in the embedded web-shell
7
+ where notification.* WS topics are registered. In pure-browser
8
+ mode the composable returns empty / no-op shapes, so the badge
9
+ just shows 0 and the drawer is empty. `),n.shellMode.isEmbedded?(p(),T(n.NotificationBell,{key:0})):m("v-if",!0),d("span",rn,a(n.PRODUCT_VERSION),1),m(" Phase 1.6 symmetric switch: only inside the embedded\n desktop shell does this make sense (no-op in `cc serve`\n browser mode where there's no V5/V6 to fall back to). "),n.shellMode.isEmbedded?(p(),T(C,{key:1,title:i.$t("appLayout.shellSwitch")},{default:t(()=>[d("button",{type:"button",class:"shell-switch-btn",onClick:n.switchToDesktopShell},[e(n.DesktopOutlined)])]),_:1},8,["title"])):m("v-if",!0),e(j,{color:n.wsStatus==="connected"?"green":n.wsStatus==="connecting"?"orange":"red",class:"ws-tag"},{default:t(()=>[l(a(n.wsStatus==="connected"?i.$t("appLayout.wsStatus.connected"):n.wsStatus==="connecting"?i.$t("appLayout.wsStatus.connecting"):i.$t("appLayout.wsStatus.disconnected")),1)]),_:1},8,["color"])])]),_:1}),m(" Content "),e(w,{class:"page-content"},{default:t(()=>[e(r)]),_:1})]),_:1})]),_:1})}const Pn=Z(jt,[["render",sn],["__scopeId","data-v-6f6437fc"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/components/AppLayout.vue"]]);export{Pn as default};
@@ -0,0 +1 @@
1
+ .notif-bell-btn[data-v-8c1554dd]{width:32px;height:32px;border:none;background:transparent;border-radius:50%;cursor:pointer;color:var(--text-primary);display:inline-flex;align-items:center;justify-content:center;font-size:16px;transition:background .15s,transform .15s}.notif-bell-btn[data-v-8c1554dd]:hover{background:var(--bg-card-hover);transform:scale(1.1)}.notif-toolbar[data-v-8c1554dd]{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border-color);background:var(--bg-card)}.notif-body[data-v-8c1554dd]{max-height:calc(100vh - 130px);overflow-y:auto}.notif-list[data-v-8c1554dd]{list-style:none;margin:0;padding:0}.notif-item[data-v-8c1554dd]{padding:12px 16px;border-bottom:1px solid var(--border-color);cursor:pointer;transition:background .15s}.notif-item[data-v-8c1554dd]:hover{background:var(--bg-card-hover)}.notif-item.unread[data-v-8c1554dd]{background:#1677ff14}.notif-row[data-v-8c1554dd]{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.notif-title[data-v-8c1554dd]{font-weight:500;color:var(--text-primary);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notif-time[data-v-8c1554dd]{flex-shrink:0;font-size:11px;color:var(--text-muted)}.notif-message[data-v-8c1554dd]{margin-top:4px;font-size:12px;color:var(--text-secondary);line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.mbh-btn[data-v-e8ef01d6]{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 10px;border:1px solid var(--border-color);border-radius:14px;background:var(--bg-card);color:var(--text-primary);font-size:11px;cursor:pointer;transition:background .15s,border-color .15s,transform .15s}.mbh-btn[data-v-e8ef01d6]:hover{background:var(--bg-card-hover);border-color:#52c41a;transform:scale(1.04)}.mbh-btn--active[data-v-e8ef01d6]{border-color:#52c41a99}.mbh-count[data-v-e8ef01d6]{line-height:1;font-weight:500;color:var(--text-secondary)}.app-root[data-v-6f6437fc]{height:100vh;background:var(--bg-base);overflow:hidden}.sidebar[data-v-6f6437fc]{background:var(--bg-sidebar)!important;border-right:1px solid var(--border-color);transition:background .25s;height:100vh}[data-v-6f6437fc] .ant-layout-sider-children{display:flex;flex-direction:column;overflow:hidden;height:100%}.main-area[data-v-6f6437fc]{background:var(--bg-base);height:100vh;display:flex;flex-direction:column}.logo[data-v-6f6437fc]{height:52px;display:flex;align-items:center;padding:0 18px;gap:10px;border-bottom:1px solid var(--border-color);overflow:hidden;white-space:nowrap;flex-shrink:0}.logo.collapsed[data-v-6f6437fc]{padding:0;justify-content:center}.logo-icon[data-v-6f6437fc]{width:24px;height:24px;flex-shrink:0;object-fit:contain}.logo-text[data-v-6f6437fc]{color:var(--logo-text);font-weight:700;font-size:14px;letter-spacing:.01em}.mode-banner[data-v-6f6437fc]{display:flex;align-items:center;gap:8px;padding:7px 10px;margin:8px 8px 4px;border-radius:7px;overflow:hidden}.mode-banner.project[data-v-6f6437fc]{background:#1677ff1a;border:1px solid rgba(22,119,255,.2)}.mode-banner.global[data-v-6f6437fc]{background:#722ed11a;border:1px solid rgba(114,46,209,.2)}.banner-icon[data-v-6f6437fc]{font-size:13px;flex-shrink:0;color:#1677ff}.mode-banner.global .banner-icon[data-v-6f6437fc]{color:#722ed1}.banner-info[data-v-6f6437fc]{flex:1;min-width:0}.banner-name[data-v-6f6437fc]{font-size:12px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.banner-sub[data-v-6f6437fc]{font-size:10px;color:#1677ff;margin-top:1px}.mode-banner.global .banner-name[data-v-6f6437fc]{color:#c084fc}.mode-icon-sm[data-v-6f6437fc]{display:flex;justify-content:center;padding:8px 0;font-size:14px}.side-menu[data-v-6f6437fc]{border:none!important;margin-top:2px;-webkit-user-select:none;user-select:none;background:transparent!important;flex:1;overflow-y:auto;overflow-x:hidden}.group-label[data-v-6f6437fc]{color:var(--group-title);font-size:10px;font-weight:700;letter-spacing:.12em;padding-left:6px}[data-v-6f6437fc] .ant-menu-item-group-title{padding:8px 16px 2px!important}[data-v-6f6437fc] .ant-menu-item{height:38px!important;line-height:38px!important;margin:1px 4px!important;border-radius:6px!important}.divider-sm[data-v-6f6437fc]{margin:4px 0!important}.sidebar-footer[data-v-6f6437fc]{flex-shrink:0;padding:8px 18px;display:flex;align-items:center;gap:8px;border-top:1px solid var(--border-color)}.sidebar-footer.collapsed[data-v-6f6437fc]{justify-content:center;padding:8px 0}.footer-text[data-v-6f6437fc]{color:var(--text-secondary);font-size:11px}.app-header[data-v-6f6437fc]{background:var(--bg-header)!important;padding:0 20px!important;border-bottom:1px solid var(--border-color);height:50px!important;line-height:50px!important;display:flex!important;align-items:center!important;justify-content:space-between!important;box-shadow:0 1px 4px #0000000f}.header-left[data-v-6f6437fc],.header-right[data-v-6f6437fc]{display:flex;align-items:center;gap:10px}.scope-tag[data-v-6f6437fc]{display:flex;align-items:center;gap:5px;padding:3px 10px;border-radius:5px;font-size:12px;font-weight:500}.scope-tag.project[data-v-6f6437fc]{background:#1677ff1a;color:#1677ff;border:1px solid rgba(22,119,255,.2)}.scope-tag.global[data-v-6f6437fc]{background:#722ed11a;color:#722ed1;border:1px solid rgba(114,46,209,.2)}.info-icon[data-v-6f6437fc]{opacity:.45;cursor:help;margin-left:2px}.theme-switcher[data-v-6f6437fc]{display:flex;align-items:center;gap:4px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:20px;padding:3px 6px}.theme-btn[data-v-6f6437fc]{width:26px;height:26px;border:none;border-radius:50%;cursor:pointer;background:transparent;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .15s,transform .15s;opacity:.55}.theme-btn[data-v-6f6437fc]:hover{opacity:.9;transform:scale(1.15);background:var(--bg-card-hover)}.theme-btn.active[data-v-6f6437fc]{opacity:1;transform:scale(1.1);background:var(--bg-card-hover);outline:2px solid var(--text-secondary)}.version-tag[data-v-6f6437fc]{color:var(--text-muted);font-size:11px}.ws-tag[data-v-6f6437fc]{margin:0!important;font-size:11px}.lang-switch-btn[data-v-6f6437fc]{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 12px;border:1px solid var(--border-color);border-radius:14px;background:var(--bg-card);color:var(--text-primary);font-size:12px;font-weight:500;cursor:pointer;transition:background .15s,color .15s,border-color .15s,transform .15s}.lang-switch-btn[data-v-6f6437fc]:hover{background:var(--bg-card-hover);color:#1677ff;border-color:#1677ff;transform:scale(1.04)}.lang-switch-icon[data-v-6f6437fc]{font-size:14px}.lang-switch-label[data-v-6f6437fc]{line-height:1}.shell-switch-btn[data-v-6f6437fc]{width:26px;height:26px;border:none;border-radius:50%;cursor:pointer;background:transparent;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:background .15s,transform .15s,color .15s;opacity:.6}.shell-switch-btn[data-v-6f6437fc]:hover{opacity:1;transform:scale(1.15);background:var(--bg-card-hover);color:var(--text-primary)}.page-content[data-v-6f6437fc]{padding:24px;overflow:auto;background:var(--bg-base);flex:1;min-height:0}
@@ -0,0 +1 @@
1
+ import{I as m,J as f,U as b,R as c,c as o,K as e,V as y,S as h,o as tt,b as J,r as x,P as d,Q as _,F as T,Z as B,$ as xt}from"./vendor-BvqAck49.js";import{_ as Lt,b as et,u as at,d as A}from"./index-BJUf19Wd.js";import{u as ot}from"./useFs-CcVh0-Vu.js";import{s as nt}from"./community-parser-CO25nZFt.js";import{s as St,am as Ct,f as Tt,d as Et,m as Ot,az as At,R as wt}from"./icons-DP3uiYxy.js";import"./useShellMode-CgR0wCYM.js";function it(n){const i=nt(n);if(!i)return null;try{return JSON.parse(i)}catch{}const r=i.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!r)return null;try{return JSON.parse(r[0])}catch{return null}}const st=Object.freeze(["auth","permission","data","system","file","did","crypto","api"]),ct=Object.freeze(["low","medium","high","critical"]);function q(n,i=0){return typeof n=="number"&&Number.isFinite(n)?n:i}function Q(n){if(!n)return{noDb:!1,error:""};const i=nt(n),r=/Database not available/i.test(i);return{noDb:r,error:r?"Database not available":""}}function Rt(n,i=0){if(!n||typeof n!="object")return null;const r=n.id||"";if(!r)return null;let t=n.details;if(typeof t=="string"&&t)try{t=JSON.parse(t)}catch{}const L=typeof n.success=="boolean"?n.success:n.success===1||n.success==="1"||n.success===!0,M=n.audit_mtc_event_id??n.auditMtcEventId??null;return{key:r,id:r,eventType:String(n.event_type??n.eventType??"").toLowerCase(),operation:String(n.operation||""),actor:n.actor??"",target:n.target??"",details:t??null,riskLevel:String(n.risk_level??n.riskLevel??"low").toLowerCase(),ipAddress:n.ip_address??n.ipAddress??"",userAgent:n.user_agent??n.userAgent??"",success:L,errorMessage:n.error_message??n.errorMessage??"",createdAt:n.created_at??n.createdAt??"",auditMtcEventId:M,_idx:i}}function rt(n){const i=it(n);return Array.isArray(i)?i.map(Rt).filter(Boolean):[]}const zt={total:0,failures:0,highRisk:0,byEventType:{},byRiskLevel:{}};function lt(n){const i=JSON.parse(JSON.stringify(zt));for(const t of st)i.byEventType[t]=0;for(const t of ct)i.byRiskLevel[t]=0;const r=it(n);if(!r||typeof r!="object"||Array.isArray(r))return i;if(i.total=q(r.total,0),i.failures=q(r.failures,0),i.highRisk=q(r.highRisk,0),r.byEventType&&typeof r.byEventType=="object")for(const[t,L]of Object.entries(r.byEventType))typeof L=="number"&&Number.isFinite(L)&&(i.byEventType[t]=L);if(r.byRiskLevel&&typeof r.byRiskLevel=="object")for(const[t,L]of Object.entries(r.byRiskLevel))typeof L=="number"&&Number.isFinite(L)&&(i.byRiskLevel[t]=L);return i}function It(n){return!n||!n.auditMtcEventId?"none":"tracked"}function Mt(n){if(n==null||n==="")return"—";const i=String(n),r=i.includes(" ")&&!i.includes("T")?i.replace(" ","T")+"Z":i,t=new Date(r);return isNaN(t.getTime())?i:t.toLocaleString("zh-CN",{hour12:!1})}const Dt={__name:"Audit",setup(n,{expose:i}){i();const{t:r}=et(),t=at(),L=ot(),M=x(!1),w=x([]),E=x({total:0,failures:0,highRisk:0,byEventType:{},byRiskLevel:{}}),N=x({noDb:!1,error:""}),R=x("events"),S=x(""),p=x(""),O=x(""),v=x(""),F=x(!1),z=x(!1),j=x(null),U=J(()=>[{title:r("audit.logColumns.createdAt"),key:"createdAt",width:"160px"},{title:r("audit.logColumns.eventType"),key:"eventType",width:"110px"},{title:r("audit.logColumns.operation"),key:"operation"},{title:r("audit.logColumns.actor"),key:"actor",width:"140px"},{title:r("audit.logColumns.target"),key:"target",width:"180px"},{title:r("audit.logColumns.riskLevel"),key:"riskLevel",width:"90px"},{title:r("audit.logColumns.success"),key:"success",width:"80px"},{title:r("audit.logColumns.mtc"),key:"mtc",width:"110px"},{title:r("audit.logColumns.action"),key:"action",width:"80px"}]),I=x({});function D(a){return a.auditMtcEventId&&I.value[a.id]||null}function V(a){const s=D(a);return s?s.state==="staging"?r("audit.mtc.stagingLabel"):s.state==="batched"?r("audit.mtc.batchedLabel",{batchId:s.batchId||"?"}):r("audit.mtc.unknownLabel"):r("audit.mtc.signedNotChecked")}function P(a){const s=D(a);return s?s.state==="staging"?"orange":s.state==="batched"?"green":"default":"blue"}function W(a){if(!a.auditMtcEventId)return"";const s=D(a),u=r("audit.mtc.tooltipBase",{id:a.auditMtcEventId});return s?s.state==="staging"?r("audit.mtc.tooltipStaging",{base:u}):s.state==="batched"?r("audit.mtc.tooltipBatched",{base:u,batchId:s.batchId,treeHead:s.treeHeadId||""}):u:r("audit.mtc.tooltipNotChecked",{base:u})}async function k(a){if(!a.auditMtcEventId)return;const s=a.auditMtcEventId.replace(/"/g,'\\"');try{const u=await t.execute(`audit mtc reconcile-check "${s}" --json`,8e3);let C;try{C=JSON.parse(u.output.trim())}catch{const $=u.output.match(/\{[\s\S]*\}/);C=$?JSON.parse($[0]):null}if(!C){A.warning(r("audit.mtc.noJson"));return}const ht=C.found?{state:"batched",batchId:C.batchId,treeHeadId:C.treeHeadId}:C.staging?{state:"staging"}:{state:"unknown"};I.value={...I.value,[a.id]:ht}}catch(u){A.error(r("audit.mtc.checkFailed",{err:u?.message||u}))}}const Y=J(()=>E.value.total?(E.value.total-E.value.failures)/E.value.total*100:100),H=J(()=>!!(p.value||O.value||v.value||F.value)),l=J(()=>{let a=w.value;if(O.value&&(a=a.filter(s=>s.eventType===O.value)),v.value&&(a=a.filter(s=>s.riskLevel===v.value)),F.value&&(a=a.filter(s=>!s.success)),p.value){const s=p.value.toLowerCase();a=a.filter(u=>(u.operation||"").toLowerCase().includes(s)||(u.actor||"").toLowerCase().includes(s)||(u.target||"").toLowerCase().includes(s))}return a});function g(a){const s=`audit.type.${a}`,u=r(s);return u===s?a:u}function Z(a){return{auth:"blue",permission:"purple",data:"cyan",system:"default",file:"green",did:"gold",crypto:"magenta",api:"volcano"}[a]||"default"}function dt(a){return{auth:"#1677ff",permission:"#722ed1",data:"#13c2c2",system:"#888",file:"#52c41a",did:"#faad14",crypto:"#eb2f96",api:"#fa541c"}[a]||"#888"}function ut(a){const s=`audit.risk.${a}`,u=r(s);return u===s?a:u}function ft(a){return{low:"default",medium:"gold",high:"orange",critical:"red"}[a]||"default"}function yt(a){return{low:"#888",medium:"#faad14",high:"#fa8c16",critical:"#ff4d4f"}[a]||"#888"}function gt(a,s){return s?Math.round(a/s*100):0}function _t(a,s){return a?a.length<=s?a:a.slice(0,s)+"…":""}function mt(a){if(typeof a=="string")return a;try{return JSON.stringify(a,null,2)}catch{return String(a)}}let K=null;function bt(){clearTimeout(K),K=setTimeout(()=>{p.value=S.value.trim()},300)}function vt(){p.value=S.value.trim()}async function G(){M.value=!0,N.value={noDb:!1,error:""};try{const[a,s]=await Promise.all([t.execute("audit log --json -n 200",12e3).catch(()=>({output:""})),t.execute("audit stats --json",8e3).catch(()=>({output:""}))]),u=[a,s].map(C=>Q(C.output)).find(C=>C.noDb);u&&(N.value=u),w.value=rt(a.output),E.value=lt(s.output)}catch(a){A.error(r("audit.messages.loadFailed",{err:a?.message||a}))}finally{M.value=!1}}function pt(a){j.value=a,z.value=!0}async function kt(){try{const{output:a}=await t.execute("audit export -f json -n 10000",2e4);if(Q(a).noDb){A.error(r("audit.messages.needInit"));return}if(!a.trim().startsWith("[")){A.error(r("audit.messages.exportFailed",{err:a.slice(0,120)}));return}const u=await L.saveText(a.trim(),{defaultPath:`audit-${new Date().toISOString().slice(0,10)}.json`,filters:[{name:"JSON",extensions:["json"]}]});if(u.canceled)return;A.success(u.path?r("audit.messages.exportOk",{path:u.path}):r("audit.messages.exportOkDefault"))}catch(a){A.error(r("audit.messages.exportFailed",{err:a?.message||a}))}}tt(G);const X={t:r,ws:t,fs:L,loading:M,logs:w,stats:E,errorState:N,activeTab:R,searchInput:S,searchTerm:p,typeFilter:O,riskFilter:v,failuresOnly:F,showDetailsModal:z,currentLog:j,logColumns:U,mtcStatusCache:I,getMtcStatusEntry:D,getMtcLabel:V,getMtcColor:P,getMtcTooltip:W,checkMtcStatus:k,successRate:Y,hasFilters:H,filteredLogs:l,typeLabel:g,typeColor:Z,typeBarColor:dt,riskLabel:ut,riskColor:ft,riskBarColor:yt,pctOfTotal:gt,truncate:_t,formatDetails:mt,get searchDebounce(){return K},set searchDebounce(a){K=a},onSearchInput:bt,runSearch:vt,loadAll:G,viewLogDetails:pt,exportJson:kt,ref:x,computed:J,onMounted:tt,get useI18n(){return et},get ReloadOutlined(){return wt},get DownloadOutlined(){return At},get FileSearchOutlined(){return Ot},get CloseCircleOutlined(){return Et},get CheckCircleOutlined(){return Tt},get WarningOutlined(){return Ct},get AlertOutlined(){return St},get message(){return A},get useWsStore(){return at},get useFs(){return ot},get parseLogs(){return rt},get parseStats(){return lt},get detectAuditError(){return Q},get formatAuditTime(){return Mt},get classifyMtcStatus(){return It},get EVENT_TYPES(){return st},get RISK_LEVELS(){return ct}};return Object.defineProperty(X,"__isScriptSetup",{enumerable:!1,value:!0}),X}},Nt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ft={class:"page-title"},jt={class:"page-sub"},Jt={class:"type-name"},Bt={class:"type-count"},Vt={class:"filter-bar"},Pt={key:0,style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},Kt={style:{color:"var(--text-primary)","font-weight":"500","font-family":"monospace","font-size":"12px"}},Ut={key:0,style:{color:"#ff4d4f","font-size":"11px","margin-top":"2px"}},Wt={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},Yt={key:1,style:{color:"var(--text-muted)"}},Ht={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},Zt={key:1,style:{color:"var(--text-muted)"}},qt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Qt={key:0,style:{"padding-top":"8px"}},Gt={style:{"font-family":"monospace","font-size":"12px"}},Xt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},$t={style:{"font-family":"monospace"}},te={key:0,style:{"font-family":"monospace","font-size":"12px"}},ee={key:1,style:{color:"var(--text-muted)"}},ae={key:0,style:{"font-family":"monospace","font-size":"12px"}},oe={key:1,style:{color:"var(--text-muted)"}},re={style:{"font-family":"monospace","font-size":"12px"}},le={style:{"font-family":"monospace","font-size":"11px"}},ne={style:{color:"#ff4d4f"}},ie={class:"details-pre"};function se(n,i,r,t,L,M){const w=m("a-button"),E=m("a-space"),N=m("a-alert"),R=m("a-statistic"),S=m("a-card"),p=m("a-col"),O=m("a-row"),v=m("a-tag"),F=m("a-input-search"),z=m("a-radio-button"),j=m("a-radio-group"),U=m("a-checkbox"),I=m("a-tooltip"),D=m("a-table"),V=m("a-tab-pane"),P=m("a-progress"),W=m("a-tabs"),k=m("a-descriptions-item"),Y=m("a-descriptions"),H=m("a-modal");return d(),f("div",null,[b("div",Nt,[b("div",null,[b("h2",Ft,c(t.t("audit.title")),1),b("p",jt,c(t.t("audit.subtitle")),1)]),o(E,null,{default:e(()=>[o(w,{loading:t.loading,onClick:t.loadAll},{icon:e(()=>[o(t.ReloadOutlined)]),default:e(()=>[_(" "+c(t.t("audit.refresh")),1)]),_:1},8,["loading"]),o(w,{onClick:t.exportJson},{icon:e(()=>[o(t.DownloadOutlined)]),default:e(()=>[_(" "+c(t.t("audit.exportJson")),1)]),_:1})]),_:1})]),y(" noDb banner "),t.errorState.noDb?(d(),h(N,{key:0,type:"info","show-icon":"",message:t.t("audit.noDb.message"),description:t.t("audit.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):y("v-if",!0),y(" Stat cards "),o(O,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:e(()=>[o(p,{xs:12,sm:8,lg:5},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.total"),value:t.stats.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:e(()=>[o(t.FileSearchOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(p,{xs:12,sm:8,lg:5},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.failures"),value:t.stats.failures,"value-style":{color:t.stats.failures>0?"#ff4d4f":"#52c41a",fontSize:"20px"}},{prefix:e(()=>[o(t.CloseCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(p,{xs:12,sm:8,lg:5},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.highRisk"),value:t.stats.highRisk,"value-style":{color:t.stats.highRisk>0?"#fa8c16":"#52c41a",fontSize:"20px"}},{prefix:e(()=>[o(t.WarningOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(p,{xs:12,sm:8,lg:5},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.critical"),value:t.stats.byRiskLevel.critical||0,"value-style":{color:(t.stats.byRiskLevel.critical||0)>0?"#ff4d4f":"#888",fontSize:"20px"}},{prefix:e(()=>[o(t.AlertOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(p,{xs:24,sm:8,lg:4},{default:e(()=>[o(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[o(R,{title:t.t("audit.stats.successRate"),value:t.successRate,suffix:"%",precision:1,"value-style":{color:t.successRate>=95?"#52c41a":t.successRate>=80?"#faad14":"#ff4d4f",fontSize:"20px"}},{prefix:e(()=>[o(t.CheckCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),y(" Event type catalogue "),o(S,{title:t.t("audit.typeCatalogueTitle"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:e(()=>[o(O,{gutter:[12,12]},{default:e(()=>[(d(!0),f(T,null,B(t.EVENT_TYPES,l=>(d(),h(p,{key:l,xs:12,sm:8,lg:3},{default:e(()=>[b("div",{class:"type-pill",style:xt({borderLeftColor:t.typeBarColor(l)})},[o(v,{color:t.typeColor(l),style:{"font-family":"monospace","font-size":"11px"}},{default:e(()=>[_(c(l),1)]),_:2},1032,["color"]),b("div",Jt,c(t.typeLabel(l)),1),b("div",Bt,c(t.stats.byEventType[l]||0),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),y(" Tabs "),o(W,{activeKey:t.activeTab,"onUpdate:activeKey":i[4]||(i[4]=l=>t.activeTab=l),class:"audit-tabs"},{default:e(()=>[y(" ── Events tab ──────────────────────────────────────────── "),o(V,{key:"events",tab:t.t("audit.tabs.events")},{default:e(()=>[b("div",Vt,[o(F,{value:t.searchInput,"onUpdate:value":i[0]||(i[0]=l=>t.searchInput=l),placeholder:t.t("audit.filter.searchPlaceholder"),"allow-clear":"",style:{"max-width":"280px"},onSearch:t.runSearch,onInput:t.onSearchInput},null,8,["value","placeholder"]),o(j,{value:t.typeFilter,"onUpdate:value":i[1]||(i[1]=l=>t.typeFilter=l),size:"small","button-style":"solid"},{default:e(()=>[o(z,{value:""},{default:e(()=>[_(c(t.t("audit.filter.allTypes")),1)]),_:1}),(d(!0),f(T,null,B(t.EVENT_TYPES,l=>(d(),h(z,{key:l,value:l},{default:e(()=>[_(c(t.typeLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(j,{value:t.riskFilter,"onUpdate:value":i[2]||(i[2]=l=>t.riskFilter=l),size:"small"},{default:e(()=>[o(z,{value:""},{default:e(()=>[_(c(t.t("audit.filter.allRisks")),1)]),_:1}),(d(!0),f(T,null,B(t.RISK_LEVELS,l=>(d(),h(z,{key:l,value:l},{default:e(()=>[_(c(t.riskLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(U,{checked:t.failuresOnly,"onUpdate:checked":i[3]||(i[3]=l=>t.failuresOnly=l)},{default:e(()=>[_(c(t.t("audit.filter.failuresOnly")),1)]),_:1},8,["checked"])]),o(D,{columns:t.logColumns,"data-source":t.filteredLogs,pagination:{pageSize:20,showTotal:l=>t.t("audit.totals.rows",{count:l})},size:"small",loading:t.loading,style:{background:"var(--bg-card)"}},{bodyCell:e(({column:l,record:g})=>[l.key==="createdAt"?(d(),f("span",Pt,c(t.formatAuditTime(g.createdAt)),1)):y("v-if",!0),l.key==="eventType"?(d(),h(v,{key:1,color:t.typeColor(g.eventType),style:{"font-family":"monospace"}},{default:e(()=>[_(c(g.eventType),1)]),_:2},1032,["color"])):y("v-if",!0),l.key==="operation"?(d(),f(T,{key:2},[b("span",Kt,c(g.operation),1),g.errorMessage?(d(),f("div",Ut,c(g.errorMessage),1)):y("v-if",!0)],64)):y("v-if",!0),l.key==="actor"?(d(),f(T,{key:3},[g.actor?(d(),f("span",Wt,c(g.actor),1)):(d(),f("span",Yt,"—"))],64)):y("v-if",!0),l.key==="target"?(d(),f(T,{key:4},[g.target?(d(),f("span",Ht,c(t.truncate(g.target,32)),1)):(d(),f("span",Zt,"—"))],64)):y("v-if",!0),l.key==="riskLevel"?(d(),h(v,{key:5,color:t.riskColor(g.riskLevel)},{default:e(()=>[_(c(t.riskLabel(g.riskLevel)),1)]),_:2},1032,["color"])):y("v-if",!0),l.key==="success"?(d(),h(v,{key:6,color:g.success?"green":"red"},{default:e(()=>[_(c(g.success?"OK":"FAIL"),1)]),_:2},1032,["color"])):y("v-if",!0),l.key==="mtc"?(d(),f(T,{key:7},[t.classifyMtcStatus(g)==="none"?(d(),h(I,{key:0,title:t.t("audit.mtc.noneTooltip")},{default:e(()=>[o(v,{color:"default"},{default:e(()=>[...i[6]||(i[6]=[_("—",-1)])]),_:1})]),_:1},8,["title"])):(d(),h(I,{key:1,title:t.getMtcTooltip(g)},{default:e(()=>[o(v,{color:t.getMtcColor(g),style:{cursor:"pointer"},onClick:Z=>t.checkMtcStatus(g)},{default:e(()=>[_(c(t.getMtcLabel(g)),1)]),_:2},1032,["color","onClick"])]),_:2},1032,["title"]))],64)):y("v-if",!0),l.key==="action"?(d(),h(w,{key:8,size:"small",type:"link",onClick:Z=>t.viewLogDetails(g)},{default:e(()=>[_(c(t.t("audit.rowAction.details")),1)]),_:1},8,["onClick"])):y("v-if",!0)]),emptyText:e(()=>[b("div",qt,[o(t.FileSearchOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),_(" "+c(t.hasFilters?t.t("audit.empty.filtered"):t.t("audit.empty.noEvents")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),y(" ── Breakdown tab ───────────────────────────────────────── "),o(V,{key:"breakdown",tab:t.t("audit.tabs.breakdown")},{default:e(()=>[o(O,{gutter:[16,16]},{default:e(()=>[o(p,{xs:24,lg:12},{default:e(()=>[o(S,{title:t.t("audit.breakdown.byType"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[(d(!0),f(T,null,B(t.EVENT_TYPES,l=>(d(),f("div",{key:l,class:"bd-row"},[o(v,{color:t.typeColor(l),style:{"min-width":"80px","text-align":"center","font-family":"monospace"}},{default:e(()=>[_(c(l),1)]),_:2},1032,["color"]),o(P,{percent:t.pctOfTotal(t.stats.byEventType[l]||0,t.stats.total),"stroke-color":t.typeBarColor(l),format:()=>`${t.stats.byEventType[l]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),o(p,{xs:24,lg:12},{default:e(()=>[o(S,{title:t.t("audit.breakdown.byRisk"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:e(()=>[(d(!0),f(T,null,B(t.RISK_LEVELS,l=>(d(),f("div",{key:l,class:"bd-row"},[o(v,{color:t.riskColor(l),style:{"min-width":"80px","text-align":"center"}},{default:e(()=>[_(c(t.riskLabel(l)),1)]),_:2},1032,["color"]),o(P,{percent:t.pctOfTotal(t.stats.byRiskLevel[l]||0,t.stats.total),"stroke-color":t.riskBarColor(l),format:()=>`${t.stats.byRiskLevel[l]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),y(" ── Event details modal ─────────────────────────────────── "),o(H,{open:t.showDetailsModal,"onUpdate:open":i[5]||(i[5]=l=>t.showDetailsModal=l),title:t.t("audit.details.title",{id:t.currentLog?.id?.slice(0,8)||""}),width:720,footer:null},{default:e(()=>[t.currentLog?(d(),f("div",Qt,[o(Y,{column:2,size:"small",bordered:""},{default:e(()=>[o(k,{label:t.t("audit.details.id"),span:2},{default:e(()=>[b("span",Gt,c(t.currentLog.id),1)]),_:1},8,["label"]),o(k,{label:t.t("audit.details.eventType")},{default:e(()=>[o(v,{color:t.typeColor(t.currentLog.eventType),style:{"font-family":"monospace"}},{default:e(()=>[_(c(t.currentLog.eventType),1)]),_:1},8,["color"]),b("span",Xt,c(t.typeLabel(t.currentLog.eventType)),1)]),_:1},8,["label"]),o(k,{label:t.t("audit.details.riskLevel")},{default:e(()=>[o(v,{color:t.riskColor(t.currentLog.riskLevel)},{default:e(()=>[_(c(t.riskLabel(t.currentLog.riskLevel)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(k,{label:t.t("audit.details.operation"),span:2},{default:e(()=>[b("span",$t,c(t.currentLog.operation),1)]),_:1},8,["label"]),o(k,{label:t.t("audit.details.status")},{default:e(()=>[o(v,{color:t.currentLog.success?"green":"red"},{default:e(()=>[_(c(t.currentLog.success?t.t("audit.details.success"):t.t("audit.details.failure")),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(k,{label:t.t("audit.details.time")},{default:e(()=>[_(c(t.formatAuditTime(t.currentLog.createdAt)),1)]),_:1},8,["label"]),o(k,{label:t.t("audit.details.actor")},{default:e(()=>[t.currentLog.actor?(d(),f("span",te,c(t.currentLog.actor),1)):(d(),f("span",ee,"—"))]),_:1},8,["label"]),o(k,{label:t.t("audit.details.target")},{default:e(()=>[t.currentLog.target?(d(),f("span",ae,c(t.currentLog.target),1)):(d(),f("span",oe,"—"))]),_:1},8,["label"]),t.currentLog.ipAddress?(d(),h(k,{key:0,label:t.t("audit.details.ip")},{default:e(()=>[b("span",re,c(t.currentLog.ipAddress),1)]),_:1},8,["label"])):y("v-if",!0),t.currentLog.userAgent?(d(),h(k,{key:1,label:t.t("audit.details.userAgent")},{default:e(()=>[b("span",le,c(t.currentLog.userAgent),1)]),_:1},8,["label"])):y("v-if",!0),t.currentLog.errorMessage?(d(),h(k,{key:2,label:t.t("audit.details.errorMessage"),span:2},{default:e(()=>[b("span",ne,c(t.currentLog.errorMessage),1)]),_:1},8,["label"])):y("v-if",!0),t.currentLog.details?(d(),h(k,{key:3,label:t.t("audit.details.details"),span:2},{default:e(()=>[b("pre",ie,c(t.formatDetails(t.currentLog.details)),1)]),_:1},8,["label"])):y("v-if",!0)]),_:1})])):y("v-if",!0)]),_:1},8,["open","title"])])}const _e=Lt(Dt,[["render",se],["__scopeId","data-v-be9f4fc3"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/views/Audit.vue"]]);export{_e as default};
@@ -0,0 +1 @@
1
+ .page-title[data-v-be9f4fc3]{margin:0;color:var(--text-primary);font-size:22px;font-weight:600}.page-sub[data-v-be9f4fc3]{margin:4px 0 0;color:var(--text-secondary);font-size:13px}.audit-tabs[data-v-be9f4fc3] .ant-tabs-nav{margin-bottom:16px}.filter-bar[data-v-be9f4fc3]{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}.type-pill[data-v-be9f4fc3]{padding:8px 10px;border-radius:6px;background:#1677ff0a;border:1px solid var(--border-color);border-left:3px solid #1677ff;height:100%;text-align:center}.type-name[data-v-be9f4fc3]{color:var(--text-primary);font-size:12px;margin-top:4px}.type-count[data-v-be9f4fc3]{color:var(--text-primary);font-size:18px;font-weight:600;margin-top:2px}.bd-row[data-v-be9f4fc3]{display:flex;align-items:center;margin-bottom:8px}.details-pre[data-v-be9f4fc3]{margin:0;padding:8px 10px;background:var(--bg-base);border:1px solid var(--border-color);border-radius:4px;font-size:11px;max-height:300px;overflow:auto;color:var(--text-primary)}
@@ -0,0 +1 @@
1
+ import{I as b,J as d,U as y,R as l,c as t,K as n,o as pe,b as Q,r as c,P as s,Q as k,V as r,S as x,F as Ce}from"./vendor-BvqAck49.js";import{_ as ze,b as fe,u as ye,d as ie}from"./index-BJUf19Wd.js";import{u as be}from"./useFs-CcVh0-Vu.js";import{az as Pe,R as Be,aQ as Le,as as Ae,aS as Te,S as Fe,z as Me}from"./icons-DP3uiYxy.js";import"./useShellMode-CgR0wCYM.js";const Re={__name:"Backup",setup(ke,{expose:v}){v();const{t:i}=fe(),e=ye(),W=be(),E=c(!1),g=c("backup"),C=c(!1),h=c(!1),B=c(!1),w=c(""),f=c([]),O=c(""),F=Q(()=>[{title:i("backup.backupColumns.id"),key:"id"},{title:i("backup.backupColumns.size"),key:"size",width:120},{title:i("backup.backupColumns.createdAt"),key:"createdAt"},{title:i("backup.backupColumns.action"),key:"action",width:100}]);async function m(){h.value=!0,w.value="";try{const{output:a}=await e.execute("backup list --json",15e3),o=T(a);Array.isArray(o)?f.value=o:o&&Array.isArray(o.backups)?f.value=o.backups:(f.value=[],a&&a.trim()&&(O.value=a))}catch(a){w.value=i("backup.messages.loadBackupsFailed",{err:a.message})}finally{h.value=!1}}async function S(){B.value=!0,O.value="",w.value="";try{const{output:a}=await e.execute("backup create --json",3e4);O.value=a||i("backup.backup.createDefaultMessage"),await m()}catch(a){O.value=i("backup.messages.createBackupFailed",{err:a.message})}finally{B.value=!1}}const M=c(!1),L=c(!1),A=c(null),z=c("");function G(a){A.value=a,z.value="",M.value=!0}async function u(){if(A.value){L.value=!0,z.value="";try{const{output:a}=await e.execute(`backup restore ${A.value.id}`,6e4);z.value=a||i("backup.backup.restoreDefaultMessage")}catch(a){z.value=i("backup.messages.restoreFailed",{err:a.message})}finally{L.value=!1}}}const p=c(!1),R=c(""),D=c(!1),U=c(""),q=c(0),X=c(""),P=c(""),Y=c(!1),Z=c(!1),I=c([]),ve=Q(()=>[{title:i("backup.conflictColumns.path"),key:"path"},{title:i("backup.conflictColumns.type"),key:"type",width:120}]);async function j(){p.value=!0,R.value="";try{const{output:a}=await e.execute("sync status --json",15e3),o=T(a);o?(D.value=o.online||o.synced||o.status==="online"||!1,U.value=D.value?i("backup.sync.synced"):i("backup.sync.notSynced"),q.value=o.pending??o.pendingChanges??0,X.value=o.lastSync||o.lastSyncTime||""):ce(a)}catch(a){R.value=i("backup.messages.loadSyncFailed",{err:a.message})}finally{p.value=!1}}function ce(a){if(!a){U.value=i("backup.sync.unknown");return}D.value=/synced|online|up.to.date/i.test(a),U.value=D.value?i("backup.sync.synced"):i("backup.sync.notSynced");const o=a.match(/pending[:\s]+(\d+)/i);q.value=o?parseInt(o[1]):0;const _=a.match(/last[:\s]+(.+)/i);_&&(X.value=_[1].trim())}async function ge(){Y.value=!0,P.value="";try{const{output:a}=await e.execute("sync push",3e4);P.value=a||i("backup.sync.pushDefaultMessage"),await j()}catch(a){P.value=i("backup.messages.pushFailed",{err:a.message})}finally{Y.value=!1}}async function me(){Z.value=!0,P.value="";try{const{output:a}=await e.execute("sync pull",3e4);P.value=a||i("backup.sync.pullDefaultMessage"),await j()}catch(a){P.value=i("backup.messages.pullFailed",{err:a.message})}finally{Z.value=!1}}async function se(){try{const{output:a}=await e.execute("sync conflicts --json",15e3),o=T(a);Array.isArray(o)?I.value=o:o&&Array.isArray(o.conflicts)?I.value=o.conflicts:I.value=[]}catch{I.value=[]}}const $=c(!1),ee=c(""),ae=c(!1),te=c(""),ne=c(!1),N=c(""),H=c([]),_e=Q(()=>[{title:i("backup.pinColumns.cid"),key:"cid"},{title:i("backup.pinColumns.name"),key:"name"},{title:i("backup.pinColumns.size"),key:"size",width:120},{title:i("backup.pinColumns.pinnedAt"),key:"pinnedAt"},{title:i("backup.pinColumns.action"),key:"action",width:120}]);async function re(){$.value=!0,ee.value="";try{const{output:a}=await e.execute("ipfs status --json",15e3),o=T(a);if(o)ae.value=o.online||o.status==="online"||o.connected||!1,te.value=o.peerId||o.id||"";else{ae.value=a?/online|connected|running/i.test(a):!1;const _=a?a.match(/(?:peer\s*id|id)[:\s]+(\S+)/i):null;te.value=_?_[1]:""}}catch(a){ee.value=i("backup.messages.loadIpfsFailed",{err:a.message})}finally{$.value=!1}}async function J(){ne.value=!0,N.value="";try{const{output:a}=await e.execute("ipfs pins --json",15e3),o=T(a);Array.isArray(o)?H.value=o:o&&Array.isArray(o.pins)?H.value=o.pins:H.value=[]}catch(a){N.value=i("backup.messages.loadPinsFailed",{err:a.message})}finally{ne.value=!1}}const xe=c(!1),oe=c(!1),le=c(""),K=c("");async function he(){if(le.value.trim()){oe.value=!0,K.value="";try{const{output:a}=await e.execute(`ipfs pin "${le.value.trim()}"`,3e4);K.value=a||i("backup.ipfs.pinDefaultSuccess"),await J()}catch(a){K.value=i("backup.messages.pinFailed",{err:a.message})}finally{oe.value=!1}}}async function we(a){try{await e.execute(`ipfs unpin ${a.cid}`,15e3),await J()}catch(o){N.value=i("backup.messages.unpinFailed",{err:o.message})}}function T(a){if(!a||!a.trim())return null;try{return JSON.parse(a.trim())}catch{const _=a.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(_)try{return JSON.parse(_[0])}catch{}return null}}async function Oe(){if(f.value.length){E.value=!0;try{const a=await W.saveJson({schema:1,exportedAt:new Date().toISOString(),count:f.value.length,backups:f.value},{defaultPath:`backup-list-${new Date().toISOString().slice(0,10)}.json`});if(a.canceled)return;ie.success(a.path?i("backup.messages.exportOk",{count:f.value.length,path:a.path}):i("backup.messages.exportOkDefault"))}catch(a){ie.error(i("backup.messages.exportFailed",{err:a.message||a}))}finally{E.value=!1}}}function Se(a){if(a==null||isNaN(a))return"-";const o=Number(a);if(o===0)return"0 B";const _=["B","KB","MB","GB","TB"],V=Math.floor(Math.log(o)/Math.log(1024));return(o/Math.pow(1024,V)).toFixed(V>0?1:0)+" "+_[V]}async function ue(){C.value=!0;try{await Promise.all([m(),j(),se(),re(),J()])}finally{C.value=!1}}pe(ue);const de={t:i,ws:e,fs:W,exportingList:E,activeTab:g,refreshing:C,backupLoading:h,backupCreating:B,backupError:w,backups:f,lastBackupResult:O,backupColumns:F,loadBackups:m,createBackup:S,showRestoreModal:M,restoreLoading:L,restoreTarget:A,restoreResult:z,confirmRestore:G,doRestore:u,syncLoading:p,syncError:R,syncOnline:D,syncStatusText:U,syncPending:q,lastSyncTime:X,syncOutput:P,pushLoading:Y,pullLoading:Z,conflicts:I,conflictColumns:ve,loadSync:j,parseSyncStatusText:ce,syncPush:ge,syncPull:me,loadConflicts:se,ipfsLoading:$,ipfsError:ee,ipfsOnline:ae,ipfsPeerId:te,pinsLoading:ne,pinsError:N,pins:H,pinColumns:_e,loadIpfsStatus:re,loadPins:J,showPinModal:xe,pinLoading:oe,pinFilePath:le,pinResult:K,doPin:he,unpinFile:we,safeParseJson:T,exportBackupList:Oe,formatSize:Se,refreshAll:ue,ref:c,computed:Q,onMounted:pe,get useI18n(){return fe},get CloudUploadOutlined(){return Me},get SyncOutlined(){return Fe},get HddOutlined(){return Te},get PlusOutlined(){return Ae},get DeleteOutlined(){return Le},get ReloadOutlined(){return Be},get DownloadOutlined(){return Pe},get message(){return ie},get useWsStore(){return ye},get useFs(){return be}};return Object.defineProperty(de,"__isScriptSetup",{enumerable:!1,value:!0}),de}},De={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ie={class:"page-title"},Ee={class:"page-sub"},Ue={key:0,style:{"text-align":"center",padding:"30px"}},je={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},Ne={key:1},He={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Je={key:3,style:{"margin-top":"16px"}},Ke={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},Ve={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap"}},Qe={key:4,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},We={style:{color:"var(--text-secondary)"}},Ge={key:0,style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px","margin-top":"8px"}},qe={style:{"font-family":"monospace"}},Xe={key:0},Ye={key:1,style:{"margin-top":"12px"}},Ze={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}},$e={key:0,style:{"text-align":"center",padding:"30px"}},ea={key:0,style:{"margin-bottom":"16px"}},aa={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},ta={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap"}},na={key:0,style:{"font-family":"monospace","font-size":"12px"}},oa={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},la={key:0,style:{"text-align":"center",padding:"30px"}},ia={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},ca={key:0,style:{"text-align":"center",padding:"30px"}},sa={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},ra={key:1},ua={key:2},da={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},pa={key:3,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},fa={style:{"margin-bottom":"12px",color:"var(--text-secondary)"}},ya={key:0,style:{"margin-top":"12px"}},ba={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}};function ka(ke,v,i,e,W,E){const g=b("a-button"),C=b("a-space"),h=b("a-spin"),B=b("a-empty"),w=b("a-table"),f=b("a-card"),O=b("a-modal"),F=b("a-tab-pane"),m=b("a-statistic"),S=b("a-col"),M=b("a-row"),L=b("a-tag"),A=b("a-popconfirm"),z=b("a-input"),G=b("a-tabs");return s(),d("div",null,[y("div",De,[y("div",null,[y("h2",Ie,l(e.t("backup.title")),1),y("p",Ee,l(e.t("backup.subtitle")),1)]),t(g,{type:"primary",ghost:"",loading:e.refreshing,onClick:e.refreshAll},{icon:n(()=>[t(e.ReloadOutlined)]),default:n(()=>[k(" "+l(e.t("backup.refresh")),1)]),_:1},8,["loading"])]),t(G,{activeKey:e.activeTab,"onUpdate:activeKey":v[4]||(v[4]=u=>e.activeTab=u),type:"card"},{default:n(()=>[r(" Tab 1: Backup management "),t(F,{key:"backup"},{tab:n(()=>[t(e.CloudUploadOutlined),k(" "+l(e.t("backup.tabs.backup")),1)]),default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{title:n(()=>[t(C,null,{default:n(()=>[t(e.CloudUploadOutlined),y("span",null,l(e.t("backup.backup.cardTitle")),1)]),_:1})]),extra:n(()=>[t(C,null,{default:n(()=>[t(g,{disabled:!e.backups.length,loading:e.exportingList,onClick:e.exportBackupList},{icon:n(()=>[t(e.DownloadOutlined)]),default:n(()=>[k(" "+l(e.t("backup.backup.exportButton")),1)]),_:1},8,["disabled","loading"]),t(g,{type:"primary",loading:e.backupCreating,onClick:e.createBackup},{icon:n(()=>[t(e.PlusOutlined)]),default:n(()=>[k(" "+l(e.t("backup.backup.createButton")),1)]),_:1},8,["loading"])]),_:1})]),default:n(()=>[e.backupLoading?(s(),d("div",Ue,[t(h)])):e.backups.length===0&&!e.lastBackupResult?(s(),x(B,{key:1,description:e.t("backup.backup.emptyText")},null,8,["description"])):r("v-if",!0),e.backups.length>0?(s(),x(w,{key:2,columns:e.backupColumns,"data-source":e.backups,pagination:!1,size:"small","row-key":"id"},{bodyCell:n(({column:u,record:p})=>[u.key==="id"?(s(),d("span",je,l(p.id.length>20?p.id.slice(0,20)+"...":p.id),1)):r("v-if",!0),u.key==="size"?(s(),d("span",Ne,l(e.formatSize(p.size)),1)):r("v-if",!0),u.key==="createdAt"?(s(),d("span",He,l(p.createdAt||"-"),1)):r("v-if",!0),u.key==="action"?(s(),x(g,{key:3,size:"small",type:"link",onClick:R=>e.confirmRestore(p)},{default:n(()=>[k(l(e.t("backup.backupColumns.restore")),1)]),_:1},8,["onClick"])):r("v-if",!0)]),_:1},8,["columns","data-source"])):r("v-if",!0),e.lastBackupResult?(s(),d("div",Je,[y("div",Ke,l(e.t("backup.backup.lastResultLabel")),1),y("pre",Ve,l(e.lastBackupResult),1)])):r("v-if",!0),e.backupError?(s(),d("div",Qe,l(e.backupError),1)):r("v-if",!0)]),_:1}),t(O,{open:e.showRestoreModal,"onUpdate:open":v[0]||(v[0]=u=>e.showRestoreModal=u),title:e.t("backup.backup.restoreTitle"),"ok-text":e.t("backup.backup.restoreOk"),"cancel-text":e.t("common.cancel"),"confirm-loading":e.restoreLoading,onOk:e.doRestore,"ok-type":"danger"},{default:n(()=>[y("p",We,l(e.t("backup.backup.restoreIntro")),1),e.restoreTarget?(s(),d("div",Ge,[y("div",null,[y("strong",null,l(e.t("backup.backup.backupIdPrefix")),1),v[5]||(v[5]=k()),y("span",qe,l(e.restoreTarget.id),1)]),e.restoreTarget.createdAt?(s(),d("div",Xe,[y("strong",null,l(e.t("backup.backup.createdAtPrefix")),1),k(" "+l(e.restoreTarget.createdAt),1)])):r("v-if",!0)])):r("v-if",!0),e.restoreResult?(s(),d("div",Ye,[y("pre",Ze,l(e.restoreResult),1)])):r("v-if",!0)]),_:1},8,["open","title","ok-text","cancel-text","confirm-loading"])]),_:1}),r(" Tab 2: Data sync "),t(F,{key:"sync"},{tab:n(()=>[t(e.SyncOutlined),k(" "+l(e.t("backup.tabs.sync")),1)]),default:n(()=>[e.syncLoading?(s(),d("div",$e,[t(h)])):(s(),d(Ce,{key:1},[t(M,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[t(S,{xs:24,sm:8},{default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.sync.statusLabel"),value:e.syncStatusText,"value-style":{color:e.syncOnline?"#52c41a":"#888",fontSize:"16px"}},{prefix:n(()=>[t(e.SyncOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(S,{xs:24,sm:8},{default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.sync.pendingLabel"),value:e.syncPending,"value-style":{color:e.syncPending>0?"#faad14":"#52c41a",fontSize:"16px"}},{prefix:n(()=>[t(e.SyncOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(S,{xs:24,sm:8},{default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.sync.lastSyncLabel"),value:e.lastSyncTime||e.t("backup.sync.noLastSync"),"value-style":{color:"var(--text-secondary)",fontSize:"16px"}},{prefix:n(()=>[t(e.SyncOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),t(C,{style:{"margin-bottom":"16px"}},{default:n(()=>[t(g,{loading:e.pushLoading,onClick:e.syncPush,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[t(e.CloudUploadOutlined)]),default:n(()=>[k(" "+l(e.t("backup.sync.pushButton")),1)]),_:1},8,["loading"]),t(g,{loading:e.pullLoading,onClick:e.syncPull,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[t(e.SyncOutlined)]),default:n(()=>[k(" "+l(e.t("backup.sync.pullButton")),1)]),_:1},8,["loading"])]),_:1}),e.syncOutput?(s(),d("div",ea,[y("div",aa,l(e.t("backup.sync.outputLabel")),1),y("pre",ta,l(e.syncOutput),1)])):r("v-if",!0),r(" Conflicts "),e.conflicts.length>0?(s(),x(f,{key:1,title:e.t("backup.sync.conflictsTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(w,{columns:e.conflictColumns,"data-source":e.conflicts,pagination:!1,size:"small","row-key":"path"},{bodyCell:n(({column:u,record:p})=>[u.key==="path"?(s(),d("span",na,l(p.path),1)):r("v-if",!0),u.key==="type"?(s(),x(L,{key:1,color:"red"},{default:n(()=>[k(l(p.type||e.t("backup.sync.conflictDefault")),1)]),_:2},1024)):r("v-if",!0)]),_:1},8,["columns","data-source"])]),_:1},8,["title"])):r("v-if",!0)],64)),e.syncError?(s(),d("div",oa,l(e.syncError),1)):r("v-if",!0)]),_:1}),r(" Tab 3: IPFS storage "),t(F,{key:"ipfs"},{tab:n(()=>[t(e.HddOutlined),k(" "+l(e.t("backup.tabs.ipfs")),1)]),default:n(()=>[t(f,{title:e.t("backup.ipfs.statusCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:n(()=>[t(L,{color:e.ipfsOnline?"green":"default"},{default:n(()=>[k(l(e.ipfsOnline?e.t("backup.ipfs.online"):e.t("backup.ipfs.offline")),1)]),_:1},8,["color"])]),default:n(()=>[e.ipfsLoading?(s(),d("div",la,[t(h)])):(s(),x(M,{key:1,gutter:[16,16]},{default:n(()=>[t(S,{xs:24,sm:8},{default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.ipfs.nodeStatusLabel"),value:e.ipfsOnline?e.t("backup.ipfs.connected"):e.t("backup.ipfs.disconnected"),"value-style":{color:e.ipfsOnline?"#52c41a":"#888",fontSize:"16px"}},{prefix:n(()=>[t(e.HddOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(S,{xs:24,sm:8},{default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.ipfs.pinnedLabel"),value:e.pins.length,"value-style":{fontSize:"16px"}},{prefix:n(()=>[t(e.HddOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),t(S,{xs:24,sm:8},{default:n(()=>[t(f,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[t(m,{title:e.t("backup.ipfs.peerIdLabel"),value:e.ipfsPeerId||"-","value-style":{color:"var(--text-muted)",fontSize:"12px",fontFamily:"monospace"}},{prefix:n(()=>[t(e.HddOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1})),e.ipfsError?(s(),d("div",ia,l(e.ipfsError),1)):r("v-if",!0)]),_:1},8,["title"]),t(f,{title:e.t("backup.ipfs.pinListTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:n(()=>[t(g,{size:"small",onClick:v[1]||(v[1]=u=>e.showPinModal=!0),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[t(e.PlusOutlined)]),default:n(()=>[k(" "+l(e.t("backup.ipfs.pinFileButton")),1)]),_:1})]),default:n(()=>[e.pinsLoading?(s(),d("div",ca,[t(h)])):e.pins.length===0?(s(),x(B,{key:1,description:e.t("backup.ipfs.pinEmptyText")},null,8,["description"])):(s(),x(w,{key:2,columns:e.pinColumns,"data-source":e.pins,pagination:{pageSize:10},size:"small","row-key":"cid"},{bodyCell:n(({column:u,record:p})=>[u.key==="cid"?(s(),d("span",sa,l(p.cid.length>24?p.cid.slice(0,24)+"...":p.cid),1)):r("v-if",!0),u.key==="name"?(s(),d("span",ra,l(p.name||"-"),1)):r("v-if",!0),u.key==="size"?(s(),d("span",ua,l(e.formatSize(p.size)),1)):r("v-if",!0),u.key==="pinnedAt"?(s(),d("span",da,l(p.pinnedAt||"-"),1)):r("v-if",!0),u.key==="action"?(s(),x(A,{key:4,title:e.t("backup.ipfs.unpinConfirm"),"ok-text":e.t("backup.ipfs.unpinOk"),"cancel-text":e.t("common.cancel"),onConfirm:R=>e.unpinFile(p)},{default:n(()=>[t(g,{size:"small",type:"link",danger:""},{default:n(()=>[t(e.DeleteOutlined),k(" "+l(e.t("backup.ipfs.unpinAction")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):r("v-if",!0)]),_:1},8,["columns","data-source"])),e.pinsError?(s(),d("div",pa,l(e.pinsError),1)):r("v-if",!0)]),_:1},8,["title"]),t(O,{open:e.showPinModal,"onUpdate:open":v[3]||(v[3]=u=>e.showPinModal=u),title:e.t("backup.ipfs.pinModalTitle"),"confirm-loading":e.pinLoading,onOk:e.doPin,"ok-text":e.t("backup.ipfs.pinModalOk"),"cancel-text":e.t("common.cancel")},{default:n(()=>[y("div",fa,l(e.t("backup.ipfs.pinModalIntro")),1),t(z,{value:e.pinFilePath,"onUpdate:value":v[2]||(v[2]=u=>e.pinFilePath=u),placeholder:e.t("backup.ipfs.pinModalPlaceholder"),onPressEnter:e.doPin},null,8,["value","placeholder"]),e.pinResult?(s(),d("div",ya,[y("pre",ba,l(e.pinResult),1)])):r("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1})]),_:1},8,["activeKey"])])}const ha=ze(Re,[["render",ka],["__scopeId","data-v-077902a5"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/views/Backup.vue"]]);export{ha as default};
@@ -0,0 +1 @@
1
+ [data-v-077902a5] .ant-table{background:transparent}[data-v-077902a5] .ant-tabs-card>.ant-tabs-nav .ant-tabs-tab{background:var(--bg-card);border-color:var(--border-color)}[data-v-077902a5] .ant-tabs-card>.ant-tabs-nav .ant-tabs-tab-active{background:var(--bg-card-hover);border-bottom-color:var(--bg-card-hover)}[data-v-077902a5] .ant-select-selector{background:var(--bg-card)!important;border-color:var(--border-color)!important}
@@ -0,0 +1 @@
1
+ import{P as s,f}from"./index-BJUf19Wd.js";import{d as w,c as O,s as h,w as k,b,r as S}from"./vendor-BvqAck49.js";var z=function(n,u){var o={};for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&u.indexOf(t)<0&&(o[t]=n[t]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,t=Object.getOwnPropertySymbols(n);r<t.length;r++)u.indexOf(t[r])<0&&Object.prototype.propertyIsEnumerable.call(n,t[r])&&(o[t[r]]=n[t[r]]);return o};const K=w({compatConfig:{MODE:3},props:{disabled:s.looseBool,type:s.string,value:s.any,tag:{type:String,default:"input"},size:s.string,onChange:Function,onInput:Function,onBlur:Function,onFocus:Function,onKeydown:Function,onCompositionstart:Function,onCompositionend:Function,onKeyup:Function,onPaste:Function,onMousedown:Function},emits:["change","input","blur","keydown","focus","compositionstart","compositionend","keyup","paste","mousedown"],setup(n,u){let{expose:o}=u;const t=h(null);return o({focus:()=>{t.value&&t.value.focus()},blur:()=>{t.value&&t.value.blur()},input:t,setSelectionRange:(l,c,d)=>{var v;(v=t.value)===null||v===void 0||v.setSelectionRange(l,c,d)},select:()=>{var l;(l=t.value)===null||l===void 0||l.select()},getSelectionStart:()=>{var l;return(l=t.value)===null||l===void 0?void 0:l.selectionStart},getSelectionEnd:()=>{var l;return(l=t.value)===null||l===void 0?void 0:l.selectionEnd},getScrollTop:()=>{var l;return(l=t.value)===null||l===void 0?void 0:l.scrollTop}}),()=>{const{tag:l,value:c}=n,d=z(n,["tag","value"]);return O(l,f(f({},d),{},{ref:t,value:c}),null)}}});function D(n){const u=n.getBoundingClientRect(),o=document.documentElement;return{left:u.left+(window.scrollX||o.scrollLeft)-(o.clientLeft||document.body.clientLeft||0),top:u.top+(window.scrollY||o.scrollTop)-(o.clientTop||document.body.clientTop||0)}}function N(n){return Array.prototype.slice.apply(n).map(o=>`${o}: ${n.getPropertyValue(o)};`).join("")}function M(n){return Object.keys(n).reduce((u,o)=>{const t=n[o];return typeof t>"u"||t===null||(u+=`${o}: ${n[o]};`),u},"")}var $=function(n,u){var o={};for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&u.indexOf(t)<0&&(o[t]=n[t]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,t=Object.getOwnPropertySymbols(n);r<t.length;r++)u.indexOf(t[r])<0&&Object.prototype.propertyIsEnumerable.call(n,t[r])&&(o[t[r]]=n[t[r]]);return o};const A=w({compatConfig:{MODE:3},inheritAttrs:!1,props:{disabled:s.looseBool,type:s.string,value:s.any,lazy:s.bool.def(!0),tag:{type:String,default:"input"},size:s.string,style:s.oneOfType([String,Object]),class:s.string},emits:["change","input","blur","keydown","focus","compositionstart","compositionend","keyup","paste","mousedown"],setup(n,u){let{emit:o,attrs:t,expose:r}=u;const a=h(null),y=S(),i=S(!1);k([()=>n.value,i],()=>{i.value||(y.value=n.value)},{immediate:!0});const l=e=>{o("change",e)},c=e=>{i.value=!0,e.target.composing=!0,o("compositionstart",e)},d=e=>{i.value=!1,e.target.composing=!1,o("compositionend",e);const p=document.createEvent("HTMLEvents");p.initEvent("input",!0,!0),e.target.dispatchEvent(p),l(e)},v=e=>{if(i.value&&n.lazy){y.value=e.target.value;return}o("input",e)},_=e=>{o("blur",e)},C=e=>{o("focus",e)},E=()=>{a.value&&a.value.focus()},P=()=>{a.value&&a.value.blur()},j=e=>{o("keydown",e)},F=e=>{o("keyup",e)},T=(e,p,g)=>{var m;(m=a.value)===null||m===void 0||m.setSelectionRange(e,p,g)},B=()=>{var e;(e=a.value)===null||e===void 0||e.select()};r({focus:E,blur:P,input:b(()=>{var e;return(e=a.value)===null||e===void 0?void 0:e.input}),setSelectionRange:T,select:B,getSelectionStart:()=>{var e;return(e=a.value)===null||e===void 0?void 0:e.getSelectionStart()},getSelectionEnd:()=>{var e;return(e=a.value)===null||e===void 0?void 0:e.getSelectionEnd()},getScrollTop:()=>{var e;return(e=a.value)===null||e===void 0?void 0:e.getScrollTop()}});const R=e=>{o("mousedown",e)},x=e=>{o("paste",e)},I=b(()=>n.style&&typeof n.style!="string"?M(n.style):n.style);return()=>{const{style:e,lazy:p}=n,g=$(n,["style","lazy"]);return O(K,f(f(f({},g),t),{},{style:I.value,onInput:v,onChange:l,onBlur:_,onFocus:C,ref:a,value:y.value,onCompositionstart:c,onCompositionend:d,onKeyup:F,onKeydown:j,onPaste:x,onMousedown:R}),null)}}});export{A as B,D as g,N as s};
@@ -0,0 +1,8 @@
1
+ import{P as c,J as m,U as u,S as M,R as h,V as _,_ as H,b,$ as te,F as D,Z as Q,L as le,w as B,n as L,o as X,x as re,r as A,I as R,c as v,K as I,Q as E,a1 as Te,a2 as Ae,M as ce,N as de,a as ue}from"./vendor-BvqAck49.js";import{_ as K,b as he}from"./index-BJUf19Wd.js";import{u as fe,M as Pe}from"./chat-y97W1CIG.js";import{ag as Re,L as ve,ah as Fe,a0 as Le,a as je,b as De,ai as qe,aj as Ne,o as Be,c as Ve,f as We,a4 as Qe,ak as Ue,a6 as He,a7 as Ke,al as $e,af as Ge,ab as Je}from"./icons-DP3uiYxy.js";import{r as me}from"./markdown-Yo_c6Krv.js";import"./markdown-CsiA8-E5.js";const Xe={__name:"ToolInvocationCard",props:{item:{type:Object,required:!0},expandable:{type:Boolean,default:!1},expanded:{type:Boolean,default:!1}},emits:["toggle"],setup(a,{expose:d,emit:t}){d();const e=a,n=t;function i(){e.expandable&&n("toggle")}const s={props:e,emit:n,onToggle:i,get CheckCircleFilled(){return je},get ClockCircleOutlined(){return Le},get DownOutlined(){return Fe},get LoadingOutlined(){return ve},get RightOutlined(){return Re}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},Ye=["data-testid"],Ze={class:"cb-action__icon"},et={class:"cb-action__label"},tt={key:0,class:"cb-action__detail"},nt={key:1,class:"cb-action__caret"};function st(a,d,t,e,n,i){return c(),m("div",{class:H(["cb-action",[`cb-action--${t.item.status}`,{"cb-action--expandable":t.expandable,"cb-action--open":t.expanded}]]),"data-testid":`tool-card-${t.item.id}`,onClick:e.onToggle},[u("span",Ze,[t.item.status==="done"?(c(),M(e.CheckCircleFilled,{key:0})):t.item.status==="running"?(c(),M(e.LoadingOutlined,{key:1})):(c(),M(e.ClockCircleOutlined,{key:2}))]),u("span",et,h(t.item.label),1),t.item.detail?(c(),m("span",tt,h(t.item.detail),1)):_("v-if",!0),t.expandable?(c(),m("span",nt,[t.expanded?(c(),M(e.DownOutlined,{key:0})):(c(),M(e.RightOutlined,{key:1}))])):_("v-if",!0)],10,Ye)}const it=K(Xe,[["render",st],["__scopeId","data-v-318f1edb"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/components/ToolInvocationCard.vue"]]),ot={__name:"MarkdownRenderer",props:{content:{type:String,default:""}},setup(a,{expose:d}){d();const t=a,e=b(()=>me(t.content||"")),n={props:t,rendered:e,computed:b,get renderMarkdown(){return me}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}},at=["innerHTML"];function lt(a,d,t,e,n,i){return c(),m("div",{class:"markdown-content",innerHTML:e.rendered},null,8,at)}const rt=K(ot,[["render",lt],["__scopeId","data-v-0b0b9f63"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/components/MarkdownRenderer.vue"]]);function W(a,d,t){let e=t.initialDeps??[],n,i=!0;function s(){var o,p,f;let S;t.key&&((o=t.debug)!=null&&o.call(t))&&(S=Date.now());const x=a();if(!(x.length!==e.length||x.some((y,l)=>e[l]!==y)))return n;e=x;let g;if(t.key&&((p=t.debug)!=null&&p.call(t))&&(g=Date.now()),n=d(...x),t.key&&((f=t.debug)!=null&&f.call(t))){const y=Math.round((Date.now()-S)*100)/100,l=Math.round((Date.now()-g)*100)/100,C=l/16,k=(z,P)=>{for(z=String(z);z.length<P;)z=" "+z;return z};console.info(`%c⏱ ${k(l,5)} /${k(y,5)} ms`,`
2
+ font-size: .6rem;
3
+ font-weight: bold;
4
+ color: hsl(${Math.max(0,Math.min(120-120*C,120))}deg 100% 31%);`,t?.key)}return t?.onChange&&!(i&&t.skipInitialOnChange)&&t.onChange(n),i=!1,n}return s.updateDeps=o=>{e=o},s}function ge(a,d){if(a===void 0)throw new Error("Unexpected undefined");return a}const ct=(a,d)=>Math.abs(a-d)<1.01,dt=a=>a,ut=a=>{const d=Math.max(a.startIndex-a.overscan,0),t=Math.min(a.endIndex+a.overscan,a.count-1),e=[];for(let n=d;n<=t;n++)e.push(n);return e},ht=(a,d,t)=>{if(d?.borderBoxSize){const e=d.borderBoxSize[0];if(e)return Math.round(e[t.options.horizontal?"inlineSize":"blockSize"])}return a[t.options.horizontal?"offsetWidth":"offsetHeight"]};class pe{constructor(d){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.laneAssignments=new Map,this.pendingMeasuredCacheIndexes=[],this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.now=()=>{var t,e,n;return((n=(e=(t=this.targetWindow)==null?void 0:t.performance)==null?void 0:e.now)==null?void 0:n.call(e))??Date.now()},this.observer=(()=>{let t=null;const e=()=>t||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:t=new this.targetWindow.ResizeObserver(n=>{n.forEach(i=>{const s=()=>{const o=i.target,p=this.indexFromElement(o);if(!o.isConnected){this.observer.unobserve(o);return}this.shouldMeasureDuringScroll(p)&&this.resizeItem(p,this.options.measureElement(o,i,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(s):s()})}));return{disconnect:()=>{var n;(n=e())==null||n.disconnect(),t=null},observe:n=>{var i;return(i=e())==null?void 0:i.observe(n,{box:"border-box"})},unobserve:n=>{var i;return(i=e())==null?void 0:i.unobserve(n)}}})(),this.range=null,this.setOptions=t=>{Object.entries(t).forEach(([e,n])=>{typeof n>"u"&&delete t[e]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:dt,rangeExtractor:ut,onChange:()=>{},measureElement:ht,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",...t}},this.notify=t=>{var e,n;(n=(e=this.options).onChange)==null||n.call(e,this,t)},this.maybeNotify=W(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),t=>{this.notify(t)},{key:"maybeNotify",debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(t=>t()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var t;const e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}this.scrollElement=e,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((t=this.scrollElement)==null?void 0:t.window)??null,this.elementsCache.forEach(n=>{this.observer.observe(n)}),this.unsubs.push(this.options.observeElementRect(this,n=>{this.scrollRect=n,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(n,i)=>{this.scrollAdjustments=0,this.scrollDirection=i?this.getScrollOffset()<n?"forward":"backward":null,this.scrollOffset=n,this.isScrolling=i,this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(t,e)=>{const n=new Map,i=new Map;for(let s=e-1;s>=0;s--){const o=t[s];if(n.has(o.lane))continue;const p=i.get(o.lane);if(p==null||o.end>p.end?i.set(o.lane,o):o.end<p.end&&n.set(o.lane,!0),n.size===this.options.lanes)break}return i.size===this.options.lanes?Array.from(i.values()).sort((s,o)=>s.end===o.end?s.index-o.index:s.end-o.end)[0]:void 0},this.getMeasurementOptions=W(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode],(t,e,n,i,s,o,p)=>(this.prevLanes!==void 0&&this.prevLanes!==o&&(this.lanesChangedFlag=!0),this.prevLanes=o,this.pendingMeasuredCacheIndexes=[],{count:t,paddingStart:e,scrollMargin:n,getItemKey:i,enabled:s,lanes:o,laneAssignmentMode:p}),{key:!1}),this.getMeasurements=W(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:t,paddingStart:e,scrollMargin:n,getItemKey:i,enabled:s,lanes:o,laneAssignmentMode:p},f)=>{if(!s)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>t)for(const g of this.laneAssignments.keys())g>=t&&this.laneAssignments.delete(g);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMeasuredCacheIndexes=[]),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(g=>{this.itemSizeCache.set(g.key,g.size)}));const S=this.lanesSettling?0:this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[],this.lanesSettling&&this.measurementsCache.length===t&&(this.lanesSettling=!1);const x=this.measurementsCache.slice(0,S),O=new Array(o).fill(void 0);for(let g=0;g<S;g++){const y=x[g];y&&(O[y.lane]=g)}for(let g=S;g<t;g++){const y=i(g),l=this.laneAssignments.get(g);let C,k;const z=p==="estimate"||f.has(y);if(l!==void 0&&this.options.lanes>1){C=l;const T=O[C],q=T!==void 0?x[T]:void 0;k=q?q.end+this.options.gap:e+n}else{const T=this.options.lanes===1?x[g-1]:this.getFurthestMeasurement(x,g);k=T?T.end+this.options.gap:e+n,C=T?T.lane:g%this.options.lanes,this.options.lanes>1&&z&&this.laneAssignments.set(g,C)}const P=f.get(y),V=typeof P=="number"?P:this.options.estimateSize(g),U=k+V;x[g]={index:g,start:k,size:V,end:U,key:y,lane:C},O[C]=g}return this.measurementsCache=x,x},{key:"getMeasurements",debug:()=>this.options.debug}),this.calculateRange=W(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(t,e,n,i)=>this.range=t.length>0&&e>0?ft({measurements:t,outerSize:e,scrollOffset:n,lanes:i}):null,{key:"calculateRange",debug:()=>this.options.debug}),this.getVirtualIndexes=W(()=>{let t=null,e=null;const n=this.calculateRange();return n&&(t=n.startIndex,e=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,t,e]),[this.options.rangeExtractor,this.options.overscan,this.options.count,t,e]},(t,e,n,i,s)=>i===null||s===null?[]:t({startIndex:i,endIndex:s,overscan:e,count:n}),{key:"getVirtualIndexes",debug:()=>this.options.debug}),this.indexFromElement=t=>{const e=this.options.indexAttribute,n=t.getAttribute(e);return n?parseInt(n,10):(console.warn(`Missing attribute name '${e}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=t=>{var e;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;const n=this.scrollState.index??((e=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:e.index);if(n!==void 0&&this.range){const i=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),s=Math.max(0,n-i),o=Math.min(this.options.count-1,n+i);return t>=s&&t<=o}return!0},this.measureElement=t=>{if(!t){this.elementsCache.forEach((s,o)=>{s.isConnected||(this.observer.unobserve(s),this.elementsCache.delete(o))});return}const e=this.indexFromElement(t),n=this.options.getItemKey(e),i=this.elementsCache.get(n);i!==t&&(i&&this.observer.unobserve(i),this.observer.observe(t),this.elementsCache.set(n,t)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(e)&&this.resizeItem(e,this.options.measureElement(t,void 0,this))},this.resizeItem=(t,e)=>{var n;const i=this.measurementsCache[t];if(!i)return;const s=this.itemSizeCache.get(i.key)??i.size,o=e-s;o!==0&&(((n=this.scrollState)==null?void 0:n.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(i,o,this):i.start<this.getScrollOffset()+this.scrollAdjustments)&&(this.options.debug&&console.info("correction",o),this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=o,behavior:void 0})),this.pendingMeasuredCacheIndexes.push(i.index),this.itemSizeCache=new Map(this.itemSizeCache.set(i.key,e)),this.notify(!1))},this.getVirtualItems=W(()=>[this.getVirtualIndexes(),this.getMeasurements()],(t,e)=>{const n=[];for(let i=0,s=t.length;i<s;i++){const o=t[i],p=e[o];n.push(p)}return n},{key:"getVirtualItems",debug:()=>this.options.debug}),this.getVirtualItemForOffset=t=>{const e=this.getMeasurements();if(e.length!==0)return ge(e[_e(0,e.length-1,n=>ge(e[n]).start,t)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const t=this.scrollElement.document.documentElement;return this.options.horizontal?t.scrollWidth-this.scrollElement.innerWidth:t.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(t,e,n=0)=>{if(!this.scrollElement)return 0;const i=this.getSize(),s=this.getScrollOffset();e==="auto"&&(e=t>=s+i?"end":"start"),e==="center"?t+=(n-i)/2:e==="end"&&(t-=i);const o=this.getMaxScrollOffset();return Math.max(Math.min(o,t),0)},this.getOffsetForIndex=(t,e="auto")=>{t=Math.max(0,Math.min(t,this.options.count-1));const n=this.getSize(),i=this.getScrollOffset(),s=this.measurementsCache[t];if(!s)return;if(e==="auto")if(s.end>=i+n-this.options.scrollPaddingEnd)e="end";else if(s.start<=i+this.options.scrollPaddingStart)e="start";else return[i,e];if(e==="end"&&t===this.options.count-1)return[this.getMaxScrollOffset(),e];const o=e==="end"?s.end+this.options.scrollPaddingEnd:s.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(o,e,s.size),e]},this.scrollToOffset=(t,{align:e="start",behavior:n="auto"}={})=>{const i=this.getOffsetForAlignment(t,e),s=this.now();this.scrollState={index:null,align:e,behavior:n,startedAt:s,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(t,{align:e="auto",behavior:n="auto"}={})=>{t=Math.max(0,Math.min(t,this.options.count-1));const i=this.getOffsetForIndex(t,e);if(!i)return;const[s,o]=i,p=this.now();this.scrollState={index:t,align:o,behavior:n,startedAt:p,lastTargetOffset:s,stableFrames:0},this._scrollToOffset(s,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(t,{behavior:e="auto"}={})=>{const n=this.getScrollOffset()+t,i=this.now();this.scrollState={index:null,align:"start",behavior:e,startedAt:i,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:e}),this.scheduleScrollReconcile()},this.getTotalSize=()=>{var t;const e=this.getMeasurements();let n;if(e.length===0)n=this.options.paddingStart;else if(this.options.lanes===1)n=((t=e[e.length-1])==null?void 0:t.end)??0;else{const i=Array(this.options.lanes).fill(null);let s=e.length-1;for(;s>=0&&i.some(o=>o===null);){const o=e[s];i[o.lane]===null&&(i[o.lane]=o.end),s--}n=Math.max(...i.filter(o=>o!==null))}return Math.max(n-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(t,{adjustments:e,behavior:n})=>{this.options.scrollToFn(t,{behavior:n,adjustments:e},this)},this.measure=()=>{this.itemSizeCache=new Map,this.laneAssignments=new Map,this.notify(!1)},this.setOptions(d)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}const e=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,n=e?e[0]:this.scrollState.lastTargetOffset,i=1,s=n!==this.scrollState.lastTargetOffset;if(!s&&ct(n,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=i){this.scrollState=null;return}}else this.scrollState.stableFrames=0,s&&(this.scrollState.lastTargetOffset=n,this.scrollState.behavior="auto",this._scrollToOffset(n,{adjustments:void 0,behavior:"auto"}));this.scheduleScrollReconcile()}}const _e=(a,d,t,e)=>{for(;a<=d;){const n=(a+d)/2|0,i=t(n);if(i<e)a=n+1;else if(i>e)d=n-1;else return n}return a>0?a-1:0};function ft({measurements:a,outerSize:d,scrollOffset:t,lanes:e}){const n=a.length-1,i=p=>a[p].start;if(a.length<=e)return{startIndex:0,endIndex:n};let s=_e(0,n,i,t),o=s;if(e===1)for(;o<n&&a[o].end<t+d;)o++;else if(e>1){const p=Array(e).fill(0);for(;o<n&&p.some(S=>S<t+d);){const S=a[o];p[S.lane]=S.end,o++}const f=Array(e).fill(t+d);for(;s>=0&&f.some(S=>S>=t);){const S=a[s];f[S.lane]=S.start,s--}s=Math.max(0,s-s%e),o=Math.min(n,o+(e-1-o%e))}return{startIndex:s,endIndex:o}}const mt={__name:"VirtualMessageList",props:{messages:{type:Array,required:!0,default:()=>[]},estimateSize:{type:Number,default:120}},emits:["scroll-to-bottom","load-more"],setup(a,{expose:d,emit:t}){const e=a,n=t,i=A(null),s=A(null),o=A(0),p=b(()=>s.value?(o.value,s.value.getVirtualItems()):[]),f=()=>{if(i.value)try{s.value=new pe({count:e.messages.length,getScrollElement:()=>i.value,estimateSize:()=>e.estimateSize,overscan:5,scrollMargin:0,onChange:()=>{o.value++}}),L(()=>{s.value&&i.value&&(s.value.measure(),o.value++,i.value.scrollTop=1,setTimeout(()=>{i.value&&(i.value.scrollTop=0)},50))})}catch(y){console.error("[VirtualMessageList] init failed:",y)}},S=()=>{if(!i.value)return;s.value&&s.value.measure();const{scrollTop:y,scrollHeight:l,clientHeight:C}=i.value;y<100&&n("load-more"),y+C>=l-50&&n("scroll-to-bottom")},x=()=>{i.value&&requestAnimationFrame(()=>{i.value&&(i.value.scrollTop=i.value.scrollHeight)})},O=y=>{const l=e.messages.findIndex(C=>C.id===y);l!==-1&&s.value&&s.value.scrollToIndex(l,{align:"center"})};B(()=>e.messages.length,(y,l)=>{s.value?(s.value.setOptions({count:y,estimateSize:()=>e.estimateSize}),o.value++,y>l&&L(()=>x())):L(()=>{f(),s.value&&o.value++})}),B(()=>e.messages,y=>{!s.value&&y.length>0?L(()=>f()):s.value&&(s.value.setOptions({count:y.length,estimateSize:()=>e.estimateSize,getScrollElement:()=>i.value,overscan:5,scrollMargin:0,onChange:()=>{o.value++}}),o.value++,L(()=>{s.value&&s.value.measure()}))},{deep:!0}),d({scrollToBottom:x,scrollToMessage:O}),X(()=>{L(()=>{f(),e.messages.length>0&&x()})}),re(()=>{s.value&&(s.value=null)});const g={props:e,emit:n,scrollContainer:i,virtualizer:s,updateKey:o,virtualItems:p,initVirtualizer:f,handleScroll:S,scrollToBottom:x,scrollToMessage:O,ref:A,computed:b,watch:B,onMounted:X,onUnmounted:re,nextTick:L,get Virtualizer(){return pe}};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}},gt={key:1,class:"fallback-list"};function pt(a,d,t,e,n,i){return c(),m("div",{ref:"scrollContainer",class:"virtual-message-list",onScroll:e.handleScroll},[e.virtualizer&&e.virtualItems.length>0?(c(),m("div",{key:0,style:te({height:`${e.virtualizer.getTotalSize()}px`,width:"100%",position:"relative"})},[(c(!0),m(D,null,Q(e.virtualItems,s=>(c(),m("div",{key:s.key,style:te({position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${s.start}px)`})},[le(a.$slots,"default",{message:t.messages[s.index],index:s.index},void 0)],4))),128))],4)):(c(),m("div",gt,[(c(!0),m(D,null,Q(t.messages,(s,o)=>(c(),m("div",{key:s.id||o},[le(a.$slots,"default",{message:s,index:o},void 0)]))),128))]))],544)}const vt=K(mt,[["render",pt],["__scopeId","data-v-ff0bed80"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/components/VirtualMessageList.vue"]]),_t={__name:"IntentConfirmationMessage",props:{message:{type:Object,required:!0}},emits:["confirm","correct"],setup(a,{expose:d,emit:t}){d();const e=a,n=t,i=A(!1),s=A(""),o=b(()=>e.message.metadata?.originalInput||""),p=b(()=>e.message.metadata?.understanding||{}),f=b(()=>p.value.correctedInput||o.value),S=b(()=>p.value.intent||"未识别"),x=b(()=>p.value.keyPoints||[]),O=b(()=>f.value!==o.value&&o.value.trim()!==""),g=b(()=>e.message.metadata?.status||"pending"),y=b(()=>g.value==="confirmed"),l=b(()=>g.value==="corrected"),C=b(()=>!!e.message.metadata?.streaming),k=b(()=>e.message.metadata?.streamingTokens||0),z=b(()=>e.message.metadata?.correction||null);function P(){n("confirm",{messageId:e.message.id,originalInput:o.value,understanding:p.value})}function V(){i.value=!0,s.value=f.value}function U(){s.value.trim()&&(n("correct",{messageId:e.message.id,originalInput:o.value,correction:s.value}),i.value=!1)}function T(){i.value=!1,s.value=""}const q={props:e,emit:n,showCorrectionInput:i,correctionInput:s,originalInput:o,understanding:p,correctedInput:f,intent:S,keyPoints:x,hasCorrectedInput:O,status:g,isConfirmed:y,isCorrected:l,isStreaming:C,streamingTokens:k,correction:z,handleConfirm:P,handleCorrect:V,handleSubmitCorrection:U,handleCancelCorrection:T,ref:A,computed:b,get CheckCircleOutlined(){return We},get ExclamationCircleOutlined(){return Ve},get BulbOutlined(){return Be},get CheckOutlined(){return Ne},get EditOutlined(){return qe},get CloseOutlined(){return De},get LoadingOutlined(){return ve}};return Object.defineProperty(q,"__isScriptSetup",{enumerable:!1,value:!0}),q}},yt={class:"intent-confirmation-message"},bt={class:"confirmation-header"},St={class:"header-icon"},kt={class:"header-text"},xt={key:0},Ct={key:1},wt={key:2},It={class:"understanding-content"},Ot={key:0,class:"original-input"},Mt={class:"label"},Et={class:"value original-text"},zt={key:1,class:"corrected-input"},Tt={class:"label"},At={class:"value corrected-text"},Pt={class:"intent-section"},Rt={class:"label"},Ft={class:"value"},Lt={key:2,class:"key-points-section"},jt={class:"label"},Dt={class:"key-points-list"},qt={key:3,class:"correction-section"},Nt={class:"label"},Bt={class:"value correction-text"},Vt={key:0,class:"streaming-indicator"},Wt={key:0,class:"streaming-tokens"},Qt={key:1,class:"action-buttons"},Ut={key:2,class:"correction-input-section"},Ht={class:"correction-actions"};function Kt(a,d,t,e,n,i){const s=R("a-button"),o=R("a-textarea");return c(),m("div",yt,[u("div",bt,[u("div",St,[e.isConfirmed?(c(),M(e.CheckCircleOutlined,{key:0,style:{color:"#52c41a"}})):e.isCorrected?(c(),M(e.ExclamationCircleOutlined,{key:1,style:{color:"#faad14"}})):(c(),M(e.BulbOutlined,{key:2,style:{color:"#1890ff"}}))]),u("div",kt,[e.isConfirmed?(c(),m("span",xt,h(a.$t("chat.intent.confirmed")),1)):e.isCorrected?(c(),m("span",Ct,h(a.$t("chat.intent.corrected")),1)):(c(),m("span",wt,h(t.message.content),1))])]),u("div",It,[e.hasCorrectedInput?(c(),m("div",Ot,[u("div",Mt,h(a.$t("chat.intent.label.original")),1),u("div",Et,h(e.originalInput),1)])):_("v-if",!0),e.hasCorrectedInput?(c(),m("div",zt,[u("div",Tt,h(a.$t("chat.intent.label.understood")),1),u("div",At,h(e.correctedInput),1)])):_("v-if",!0),u("div",Pt,[u("div",Rt,"🎯 "+h(a.$t("chat.intent.label.intent")),1),u("div",Ft,h(e.intent),1)]),e.keyPoints&&e.keyPoints.length>0?(c(),m("div",Lt,[u("div",jt,"📝 "+h(a.$t("chat.intent.label.keyPoints")),1),u("ul",Dt,[(c(!0),m(D,null,Q(e.keyPoints,(p,f)=>(c(),m("li",{key:f},h(p),1))),128))])])):_("v-if",!0),e.correction?(c(),m("div",qt,[u("div",Nt,"📝 "+h(a.$t("chat.intent.label.correction")),1),u("div",Bt,h(e.correction),1)])):_("v-if",!0)]),e.isStreaming?(c(),m("div",Vt,[v(e.LoadingOutlined,{spin:""}),u("span",null,h(a.$t("chat.intent.status.understanding")),1),e.streamingTokens>0?(c(),m("span",Wt,"· "+h(e.streamingTokens)+" tokens",1)):_("v-if",!0)])):!e.isConfirmed&&!e.isCorrected?(c(),m("div",Qt,[v(s,{type:"primary",onClick:e.handleConfirm},{default:I(()=>[v(e.CheckOutlined),E(" "+h(a.$t("chat.intent.action.confirm")),1)]),_:1}),v(s,{onClick:e.handleCorrect},{default:I(()=>[v(e.EditOutlined),E(" "+h(a.$t("chat.intent.action.correct")),1)]),_:1})])):_("v-if",!0),e.showCorrectionInput?(c(),m("div",Ut,[v(o,{value:e.correctionInput,"onUpdate:value":d[0]||(d[0]=p=>e.correctionInput=p),placeholder:a.$t("chat.intent.action.correctPlaceholder"),"auto-size":{minRows:2,maxRows:6}},null,8,["value","placeholder"]),u("div",Ht,[v(s,{type:"primary",size:"small",onClick:e.handleSubmitCorrection},{default:I(()=>[v(e.CheckOutlined),E(" "+h(a.$t("chat.intent.action.submitCorrection")),1)]),_:1}),v(s,{size:"small",onClick:e.handleCancelCorrection},{default:I(()=>[v(e.CloseOutlined),E(" "+h(a.$t("chat.intent.action.cancelCorrection")),1)]),_:1})])])):_("v-if",!0)])}const $t=K(_t,[["render",Kt],["__scopeId","data-v-62ebcfe5"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/components/IntentConfirmationMessage.vue"]]),Gt={__name:"Chat",setup(a,{expose:d}){d();const{t,tm:e,rt:n}=he(),i=ce()||null,s=de()||null,o=window.__CC_CONFIG__||{},p=b(()=>o.mode==="project"),f=fe(),S=new Set,x=A(null),O=A(""),g=b(()=>f.contextMode);function y(r){f.setContextMode(r)}const l=b(()=>f.intentEnabled);function C(r){f.setIntentEnabled(r)}const k=b(()=>f.currentSessionId),z=b(()=>k.value?f.getMessages(k.value):[]),P=b(()=>{const r=f.streaming[k.value];return r?.active?r.content:null}),V=b(()=>{const r=z.value;return P.value?[...r,{role:"assistant",content:P.value,_streaming:!0,timestamp:Date.now()}]:r}),U=b(()=>f.pendingQuestion[k.value]),T=b(()=>f.getIsLoading(k.value));function q(r){if(!r)return"";const w=new Date(r);return`${String(w.getHours()).padStart(2,"0")}:${String(w.getMinutes()).padStart(2,"0")}`}const $=ue(new Set);function ye(r){$.has(r)?$.delete(r):$.add(r)}function be(r,w){return{id:`tool-${w}`,label:r.tool||t("chat.tool.unknownTool"),detail:ne(r),status:r.status==="done"?"done":"running"}}function ne(r){if(r.status==="running"){const j=r.input&&typeof r.input=="object"?Object.keys(r.input):[];return j.length?t("chat.tool.argsPreview",{n:j.length,key:j[0]}):t("chat.tool.running")}if(r.result==null)return t("chat.tool.done");const F=(typeof r.result=="string"?r.result:JSON.stringify(r.result)).split(`
5
+ `)[0]||"";return F.length>48?`${F.slice(0,48)}…`:F||t("chat.tool.done")}async function Se(r){await f.createSession(r)}async function Y(){if(!O.value.trim()||T.value||!k.value)return;const r=O.value;O.value="",await f.submitUserInput(k.value,r)}function ke(r){f.confirmIntent(k.value,r.messageId)}function xe(r){f.correctIntent(k.value,r.messageId,r.correction)}const se=b(()=>{const r=f.customQuickPrompts;if(Array.isArray(r)&&r.length>0)return r;const w=e("chat.quickPrompts");return w?Object.values(w).map(F=>n(F)):[]}),G=A(!1),Z=A("");function Ce(){Z.value=se.value.join(`
6
+ `),G.value=!0}function we(){const r=Z.value.split(`
7
+ `).map(w=>w.trim()).filter(w=>w.length>0);f.setCustomQuickPrompts(r.length>0?r:null),G.value=!1}function Ie(){f.setCustomQuickPrompts(null),G.value=!1}const Oe=b(()=>t(`chat.empty.hint.${g.value}`));async function Me(r){k.value||await f.createSession("chat"),O.value=r,await Y()}function Ee(r){f.answerQuestion(k.value,r)}B([z,P],()=>{L(()=>{x.value?.scrollToBottom()})},{deep:!0});async function ee({prompt:r,autoSend:w,session:F,token:j}){if(!r||S.has(j))return;S.add(j);let N=F||k.value;N?N!==k.value&&await f.switchSession(N):N=await f.createSession("chat"),O.value=r,w!==!1&&(await L(),await Y())}function ie(){const r=i?.query||{};if(!r.prompt)return null;const w=Array.isArray(r.prompt)?r.prompt[0]:String(r.prompt);if(!w.trim())return null;const j=(Array.isArray(r.autoSend)?r.autoSend[0]:r.autoSend)!=="false",N=Array.isArray(r.session)?r.session[0]:r.session,ae=N?String(N):null,ze=`query::${w}::${ae||""}::${j}`;return{prompt:w,autoSend:j,session:ae,token:ze}}async function J(){const r=ie();if(r){await ee(r),s&&i&&s.replace({path:i.path,query:{}}).catch(()=>{});return}const w=f.pendingAutoSend;if(w?.prompt){const F=w.token||`staged::${w.prompt}::${Date.now()}`;await ee({...w,token:F}),f.clearAutoSend?.()}}i&&B(()=>[i.query.prompt,i.query.autoSend,i.query.session],()=>{J()},{immediate:!1}),B(()=>f.pendingAutoSend,()=>{J()},{deep:!0}),X(async()=>{await f.loadSessions(),await J()});const oe={t,tm:e,rt:n,route:i,router:s,cfg:o,isProject:p,chatStore:f,consumedAutoSendTokens:S,virtualListRef:x,inputText:O,contextMode:g,setContextMode:y,intentEnabled:l,setIntentEnabled:C,currentSessionId:k,currentMessages:z,streamingContent:P,messagesWithStreaming:V,pendingQuestion:U,isLoading:T,formatTime:q,expandedTools:$,toggleToolDetail:ye,toToolItem:be,toolDetail:ne,newSession:Se,sendMessage:Y,handleIntentConfirm:ke,handleIntentCorrect:xe,QUICK_PROMPTS:se,editingPrompts:G,promptDraft:Z,openPromptEditor:Ce,savePromptEditor:we,resetPromptsToDefault:Ie,emptyHint:Oe,usePrompt:Me,answerQuestion:Ee,consumeAutoSend:ee,readAutoSendFromQuery:ie,handleAutoSendIfPending:J,ref:A,reactive:ue,computed:b,watch:B,nextTick:L,onMounted:X,get useRoute(){return ce},get useRouter(){return de},get MessageOutlined(){return Je},get RobotOutlined(){return Ge},get SendOutlined(){return $e},get FolderOutlined(){return Ke},get GlobalOutlined(){return He},get UserOutlined(){return Ue},get FileTextOutlined(){return Qe},get useI18n(){return he},get useChatStore(){return fe},ToolInvocationCard:it,MarkdownRenderer:rt,VirtualMessageList:vt,IntentConfirmationMessage:$t,get MessageType(){return Pe}};return Object.defineProperty(oe,"__isScriptSetup",{enumerable:!1,value:!0}),oe}},Jt={style:{display:"flex",height:"calc(100vh - 56px - 48px)",gap:"16px"}},Xt={style:{width:"240px","flex-shrink":"0",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},Yt={key:0,style:{padding:"6px 12px 4px","font-size":"11px",color:"#1677ff",background:"rgba(22,119,255,.07)","border-bottom":"1px solid rgba(22,119,255,.15)",display:"flex","align-items":"center",gap:"4px"}},Zt=["title"],en={key:1,style:{padding:"6px 12px 4px","font-size":"11px",color:"#722ed1",background:"rgba(114,46,209,.07)","border-bottom":"1px solid rgba(114,46,209,.15)",display:"flex","align-items":"center",gap:"4px"}},tn={style:{padding:"10px 12px","border-bottom":"1px solid var(--border-color)",display:"flex",gap:"8px"}},nn={style:{flex:"1","overflow-y":"auto",padding:"8px"}},sn=["onClick"],on={class:"session-icon"},an={class:"session-info"},ln={class:"session-title"},rn={class:"session-meta"},cn={key:0,style:{"text-align":"center",color:"var(--text-muted)",padding:"24px 0","font-size":"13px"}},dn={style:{flex:"1",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},un={key:0,style:{flex:"1",display:"flex","flex-direction":"column","align-items":"center","justify-content":"center",color:"var(--text-muted)"}},hn={style:{"font-size":"16px","margin-bottom":"8px",color:"#777"}},fn={style:{"font-size":"13px",color:"var(--text-muted)"}},mn={style:{"margin-top":"24px",display:"flex",gap:"12px"}},gn={key:1,class:"chat-header"},pn={class:"chat-intent-toggle"},vn={class:"chat-intent-toggle-label"},_n={key:2,class:"chat-area-body"},yn={key:0,class:"chat-empty-prompts"},bn={class:"empty-title"},Sn={class:"empty-hint"},kn={class:"quick-prompts"},xn={class:"system-banner"},Cn={class:"tool-msg"},wn={key:0,class:"tool-detail"},In={class:"tool-detail__pre tool-detail__pre--input"},On={key:0,class:"tool-detail__result"},Mn={class:"tool-detail__pre tool-detail__pre--result"},En={class:"msg-body"},zn={class:"msg-meta-row"},Tn={class:"msg-role"},An={class:"msg-time"},Pn={key:0,class:"msg-tokens"},Rn={key:0,class:"bubble user"},Fn={key:2,class:"question-card"},Ln={class:"question-text"},jn={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"8px","margin-top":"10px"}},Dn={key:3,style:{padding:"16px","border-top":"1px solid var(--border-color)"}},qn={style:{display:"flex",gap:"8px","align-items":"flex-end"}},Nn={style:{"margin-bottom":"8px","font-size":"12px",color:"var(--text-muted)"}},Bn={style:{"margin-top":"8px"}};function Vn(a,d,t,e,n,i){const s=R("a-button"),o=R("a-radio-button"),p=R("a-radio-group"),f=R("a-switch"),S=R("a-tooltip"),x=R("a-avatar"),O=R("a-input-search"),g=R("a-textarea"),y=R("a-modal");return c(),m("div",Jt,[_(" Session Sidebar "),u("div",Xt,[_(" Project/Global Scope Indicator "),e.isProject?(c(),m("div",Yt,[v(e.FolderOutlined),u("span",{style:{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"},title:e.cfg.projectRoot},h(e.cfg.projectName||a.$t("chat.scope.fallbackProjectName")),9,Zt)])):(c(),m("div",en,[v(e.GlobalOutlined),u("span",null,h(a.$t("chat.scope.globalSessions")),1)])),u("div",tn,[v(s,{type:"primary",size:"small",style:{flex:"1"},onClick:d[0]||(d[0]=l=>e.newSession("chat"))},{icon:I(()=>[v(e.MessageOutlined)]),default:I(()=>[E(" "+h(a.$t("chat.newChat")),1)]),_:1}),v(s,{size:"small",style:{flex:"1"},onClick:d[1]||(d[1]=l=>e.newSession("agent"))},{icon:I(()=>[v(e.RobotOutlined)]),default:I(()=>[E(" "+h(a.$t("chat.newAgent")),1)]),_:1})]),u("div",nn,[(c(!0),m(D,null,Q(e.chatStore.sessions,l=>(c(),m("div",{key:l.id,class:H(["session-item",{active:l.id===e.chatStore.currentSessionId}]),onClick:C=>e.chatStore.switchSession(l.id)},[u("span",on,h(l.type==="agent"?"🤖":"💬"),1),u("div",an,[u("div",ln,h(l.title||a.$t("chat.session.untitled")),1),u("div",rn,h(a.$t("chat.session.messageCountSuffix",{n:l.messageCount||0})),1)])],10,sn))),128)),e.chatStore.sessions.length?_("v-if",!0):(c(),m("div",cn,h(a.$t("chat.sidebarEmpty")),1))])]),_(" Chat Area "),u("div",dn,[_(" Empty State "),e.currentSessionId?_("v-if",!0):(c(),m("div",un,[d[7]||(d[7]=u("div",{style:{"font-size":"48px","margin-bottom":"16px"}},"💬",-1)),u("div",hn,h(a.$t("chat.empty.title")),1),u("div",fn,h(a.$t("chat.empty.subtitle")),1),u("div",mn,[v(s,{type:"primary",onClick:d[2]||(d[2]=l=>e.newSession("chat"))},{default:I(()=>[E(h(a.$t("chat.empty.newChat")),1)]),_:1}),v(s,{style:{},onClick:d[3]||(d[3]=l=>e.newSession("agent"))},{default:I(()=>[E(h(a.$t("chat.empty.newAgent")),1)]),_:1})])])),_(" Chat header: context mode + intent toggle "),e.currentSessionId?(c(),m("div",gn,[v(p,{value:e.contextMode,size:"small","button-style":"solid","onUpdate:value":e.setContextMode},{default:I(()=>[v(o,{value:"project",disabled:!e.isProject},{default:I(()=>[v(e.FolderOutlined),E(" "+h(a.$t("chat.contextMode.project")),1)]),_:1},8,["disabled"]),v(o,{value:"file",disabled:""},{default:I(()=>[v(e.FileTextOutlined),E(" "+h(a.$t("chat.contextMode.file")),1)]),_:1}),v(o,{value:"global"},{default:I(()=>[v(e.GlobalOutlined),E(" "+h(a.$t("chat.contextMode.global")),1)]),_:1})]),_:1},8,["value"]),e.contextMode!=="global"?(c(),M(S,{key:0,title:a.$t("chat.intent.toggleHint"),placement:"bottom"},{default:I(()=>[u("label",pn,[v(f,{checked:e.intentEnabled,size:"small","onUpdate:checked":e.setIntentEnabled},null,8,["checked"]),u("span",vn,h(a.$t("chat.intent.toggleLabel")),1)])]),_:1},8,["title"])):_("v-if",!0)])):_("v-if",!0),_(" Messages "),e.currentSessionId?(c(),m("div",_n,[_(" Empty state with quick prompts when session has no messages "),e.messagesWithStreaming.length===0?(c(),m("div",yn,[d[8]||(d[8]=u("div",{class:"empty-icon"},"💬",-1)),u("div",bn,h(a.$t("chat.empty.startTitle")),1),u("div",Sn,h(e.emptyHint),1),u("div",kn,[(c(!0),m(D,null,Q(e.QUICK_PROMPTS,l=>(c(),M(s,{key:l,size:"small",class:"quick-prompt-btn",onClick:C=>e.usePrompt(l)},{default:I(()=>[E(h(l),1)]),_:2},1032,["onClick"]))),128)),v(s,{size:"small",type:"dashed",class:"quick-prompt-btn quick-prompt-edit",onClick:e.openPromptEditor},{default:I(()=>[E(h(a.$t("chat.quickPromptsEditor.openButton")),1)]),_:1})])])):(c(),M(e.VirtualMessageList,{key:1,ref:"virtualListRef",messages:e.messagesWithStreaming,"estimate-size":120,class:"chat-virtual-list"},{default:I(({message:l,index:C})=>[u("div",{class:H(["message-row",l.role])},[_(" Intent confirmation card (V5 parity) "),l.type===e.MessageType.INTENT_CONFIRMATION?(c(),M(e.IntentConfirmationMessage,{key:0,message:l,onConfirm:e.handleIntentConfirm,onCorrect:e.handleIntentCorrect},null,8,["message"])):l.role==="system"?(c(),m(D,{key:1},[_(" System banner (follow-up intent feedback etc.) "),u("div",xn,h(l.content),1)],2112)):l.role==="tool"?(c(),m(D,{key:2},[_(" Tool message "),u("div",Cn,[v(e.ToolInvocationCard,{item:e.toToolItem(l,C),expandable:"",expanded:e.expandedTools.has(C),onToggle:k=>e.toggleToolDetail(C)},null,8,["item","expanded","onToggle"]),e.expandedTools.has(C)?(c(),m("div",wn,[u("pre",In,h(JSON.stringify(l.input,null,2)),1),l.result?(c(),m("div",On,[u("pre",Mn,h(typeof l.result=="string"?l.result:JSON.stringify(l.result,null,2)),1)])):_("v-if",!0)])):_("v-if",!0)])],2112)):(c(),m(D,{key:3},[_(" User / Assistant message with avatar + meta row "),u("div",{class:H(["msg-with-avatar",l.role])},[v(x,{size:32,style:te({backgroundColor:l.role==="user"?"#1890ff":"#52c41a",flexShrink:0})},{icon:I(()=>[l.role==="user"?(c(),M(e.UserOutlined,{key:0})):(c(),M(e.RobotOutlined,{key:1}))]),_:2},1032,["style"]),u("div",En,[u("div",zn,[u("span",Tn,h(l.role==="user"?a.$t("chat.role.me"):"AI"),1),u("span",An,h(e.formatTime(l.timestamp)),1),l.tokens?(c(),m("span",Pn,"· "+h(l.tokens)+" tokens",1)):_("v-if",!0)]),l.role==="user"?(c(),m("div",Rn,h(l.content),1)):(c(),M(e.MarkdownRenderer,{key:1,class:H(["bubble assistant",{streaming:l._streaming}]),content:l.content},null,8,["class","content"]))])],2)],2112))],2)]),_:1},8,["messages"])),_(" Interactive Question (sticky below the list) "),e.pendingQuestion?(c(),m("div",Fn,[u("div",Ln,h(e.pendingQuestion.question),1),e.pendingQuestion.choices?.length?(c(),m("div",jn,[(c(!0),m(D,null,Q(e.pendingQuestion.choices,l=>(c(),M(s,{key:l,size:"small",onClick:C=>e.answerQuestion(l)},{default:I(()=>[E(h(l),1)]),_:2},1032,["onClick"]))),128))])):(c(),M(O,{key:1,placeholder:a.$t("chat.input.answerPlaceholder"),"enter-button":a.$t("chat.input.send"),style:{"margin-top":"10px"},onSearch:e.answerQuestion},null,8,["placeholder","enter-button"]))])):_("v-if",!0)])):_("v-if",!0),_(" Input Area "),e.currentSessionId?(c(),m("div",Dn,[u("div",qn,[v(g,{value:e.inputText,"onUpdate:value":d[4]||(d[4]=l=>e.inputText=l),placeholder:e.isLoading?a.$t("chat.input.loading"):a.$t("chat.input.placeholder"),"auto-size":{minRows:1,maxRows:6},disabled:e.isLoading,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)",color:"var(--text-primary)",resize:"none",flex:"1"},onKeydown:Te(Ae(e.sendMessage,["exact","prevent"]),["enter"])},null,8,["value","placeholder","disabled","onKeydown"]),v(s,{type:"primary",loading:e.isLoading,onClick:e.sendMessage,style:{height:"40px"}},{icon:I(()=>[v(e.SendOutlined)]),_:1},8,["loading"])])])):_("v-if",!0)]),_(` Custom quick-prompts editor (Improvement 4) — placed at root so the
8
+ chat-area-body's v-if/v-else pair stays unbroken. `),v(y,{open:e.editingPrompts,"onUpdate:open":d[6]||(d[6]=l=>e.editingPrompts=l),title:a.$t("chat.quickPromptsEditor.title"),"ok-text":a.$t("chat.quickPromptsEditor.save"),"cancel-text":a.$t("chat.quickPromptsEditor.cancel"),onOk:e.savePromptEditor},{default:I(()=>[u("div",Nn,h(a.$t("chat.quickPromptsEditor.hint")),1),v(g,{value:e.promptDraft,"onUpdate:value":d[5]||(d[5]=l=>e.promptDraft=l),rows:8,placeholder:a.$t("chat.quickPromptsEditor.placeholder")},null,8,["value","placeholder"]),u("div",Bn,[v(s,{size:"small",onClick:e.resetPromptsToDefault},{default:I(()=>[E(h(a.$t("chat.quickPromptsEditor.reset")),1)]),_:1})])]),_:1},8,["open","title","ok-text","cancel-text"])])}const Gn=K(Gt,[["render",Vn],["__scopeId","data-v-ef077a5e"],["__file","/tmp/cc-web-panel-ydB5EA/repo/packages/web-panel/src/views/Chat.vue"]]);export{Gn as default};