chainlesschain 0.162.29 → 0.162.30

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 (399) hide show
  1. package/package.json +2 -2
  2. package/src/assets/web-panel/assets/AIOps-CSpp7iGY.css +1 -0
  3. package/src/assets/web-panel/assets/AIOps-CsNttUU7.js +1 -0
  4. package/src/assets/web-panel/assets/{ActionButton-wRdLFzBQ.js → ActionButton-lgohjckQ.js} +1 -1
  5. package/src/assets/web-panel/assets/Analytics-DJcHjy5J.css +1 -0
  6. package/src/assets/web-panel/assets/Analytics-ccV3LAca.js +3 -0
  7. package/src/assets/web-panel/assets/AppLayout-B0hl5cPk.js +9 -0
  8. package/src/assets/web-panel/assets/AppLayout-VlanTjPw.css +1 -0
  9. package/src/assets/web-panel/assets/Audit-B1gFM5U9.js +1 -0
  10. package/src/assets/web-panel/assets/Audit-D8oxP0wr.css +1 -0
  11. package/src/assets/web-panel/assets/Backup-BeWE3ERo.js +1 -0
  12. package/src/assets/web-panel/assets/Backup-Wi9CaP3d.css +1 -0
  13. package/src/assets/web-panel/assets/BaseInput-CDkPsNG2.js +1 -0
  14. package/src/assets/web-panel/assets/Chat-DDh58PCf.css +1 -0
  15. package/src/assets/web-panel/assets/Chat-ztb9ia6e.js +8 -0
  16. package/src/assets/web-panel/assets/ChatBubbleRenderer-Dlw_6n3M.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-BcfRBlIY.js} +1 -1
  19. package/src/assets/web-panel/assets/Codegen-BB08p1fn.css +1 -0
  20. package/src/assets/web-panel/assets/Codegen-DOs99xkr.js +1 -0
  21. package/src/assets/web-panel/assets/{Col-C-9-jORK.js → Col-D1X6tYlj.js} +1 -1
  22. package/src/assets/web-panel/assets/Community-Cbq1nrpo.css +1 -0
  23. package/src/assets/web-panel/assets/Community-DTksIWtz.js +1 -0
  24. package/src/assets/web-panel/assets/{Compact-CemvxU3z.js → Compact-DIJtAYBO.js} +1 -1
  25. package/src/assets/web-panel/assets/Compliance-BBf7LF_k.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-UBPXQ40s.js +6 -0
  29. package/src/assets/web-panel/assets/Cron-CkRm1jPB.js +2 -0
  30. package/src/assets/web-panel/assets/Crosschain-CgRAecoR.css +1 -0
  31. package/src/assets/web-panel/assets/Crosschain-qALlTl7e.js +1 -0
  32. package/src/assets/web-panel/assets/DID-CqyqVS6E.js +2 -0
  33. package/src/assets/web-panel/assets/DID-DVsYcgvs.css +1 -0
  34. package/src/assets/web-panel/assets/Dashboard-CAPSdFR4.css +1 -0
  35. package/src/assets/web-panel/assets/Dashboard-XlMpT7K_.js +3 -0
  36. package/src/assets/web-panel/assets/Dropdown-Cb5UzbSZ.js +1 -0
  37. package/src/assets/web-panel/assets/EmailListRenderer-CarBq8Fk.js +1 -0
  38. package/src/assets/web-panel/assets/EmailListRenderer-DTPZPx_S.css +1 -0
  39. package/src/assets/web-panel/assets/FamilyGuardDashboard-CSiGXaZz.js +1 -0
  40. package/src/assets/web-panel/assets/FamilyGuardDashboard-nd3idUVb.css +1 -0
  41. package/src/assets/web-panel/assets/Federation-DUxhVoBN.js +1 -0
  42. package/src/assets/web-panel/assets/Federation-fGN6iMX_.css +1 -0
  43. package/src/assets/web-panel/assets/FormItemContext-BoMQpkhx.js +2 -0
  44. package/src/assets/web-panel/assets/GenericCardRenderer-DTVqC_CX.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-C_XuPtK5.js +2 -0
  48. package/src/assets/web-panel/assets/Governance-BZyqlqz-.js +1 -0
  49. package/src/assets/web-panel/assets/Governance-DtCS4NDm.css +1 -0
  50. package/src/assets/web-panel/assets/Inference-DdZVUimI.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-IzZ-jnCn.js +1 -0
  54. package/src/assets/web-panel/assets/Logs-DQbCaYhL.css +1 -0
  55. package/src/assets/web-panel/assets/Logs-koTK6eNc.js +2 -0
  56. package/src/assets/web-panel/assets/Marketplace-6zpJ1L8n.js +1 -0
  57. package/src/assets/web-panel/assets/Marketplace-Bvo5cuGa.css +1 -0
  58. package/src/assets/web-panel/assets/McpTools-534Q95Mx.css +1 -0
  59. package/src/assets/web-panel/assets/McpTools-Ywc4IVks.js +7 -0
  60. package/src/assets/web-panel/assets/Memory-C_zB9dUa.js +2 -0
  61. package/src/assets/web-panel/assets/Memory-CleW_R6V.css +1 -0
  62. package/src/assets/web-panel/assets/MobileBridge-Nc05r24L.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-BJGxL526.js +1 -0
  66. package/src/assets/web-panel/assets/Mtc-CXZGO9Sh.css +1 -0
  67. package/src/assets/web-panel/assets/Mtc-Im7SIcz1.js +6 -0
  68. package/src/assets/web-panel/assets/MtcAudit-BFFzvzMD.js +19 -0
  69. package/src/assets/web-panel/assets/MtcAudit-C1JM8esp.css +1 -0
  70. package/src/assets/web-panel/assets/Multisig-BryR2Jpr.css +1 -0
  71. package/src/assets/web-panel/assets/Multisig-CcNEbycq.js +13 -0
  72. package/src/assets/web-panel/assets/NLProgramming-CDH6OTXN.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-Dqg3QXcU.js +7 -0
  76. package/src/assets/web-panel/assets/NotificationSettings-CDVmK1eU.js +1 -0
  77. package/src/assets/web-panel/assets/NotificationSettings-CG3Kfuef.css +1 -0
  78. package/src/assets/web-panel/assets/OrderTableRenderer-Bg0bkfjR.js +1 -0
  79. package/src/assets/web-panel/assets/OrderTableRenderer-CfrDjSHT.css +1 -0
  80. package/src/assets/web-panel/assets/Organization-DJb9bRQS.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-CK7Q5dje.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-CJIyYfwc.js +2 -0
  85. package/src/assets/web-panel/assets/P2P-DcFvP7F-.css +1 -0
  86. package/src/assets/web-panel/assets/PdhVaultBrowser-DZZrUOr1.css +1 -0
  87. package/src/assets/web-panel/assets/PdhVaultBrowser-uqRULcuw.js +7 -0
  88. package/src/assets/web-panel/assets/Permissions-Crvwt6bq.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-DcN5OWzg.js +9 -0
  92. package/src/assets/web-panel/assets/Pipeline-BItr5CyP.css +1 -0
  93. package/src/assets/web-panel/assets/Pipeline-DfWJvvJW.js +1 -0
  94. package/src/assets/web-panel/assets/Privacy-DepD0S3v.js +1 -0
  95. package/src/assets/web-panel/assets/Privacy-F_ENsxZk.css +1 -0
  96. package/src/assets/web-panel/assets/ProjectInit-B7OKhH27.js +2 -0
  97. package/src/assets/web-panel/assets/ProjectInit-B86LEzDL.css +1 -0
  98. package/src/assets/web-panel/assets/ProjectSettings-BJ4ueRFv.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-Dl_hPdhU.js +1 -0
  102. package/src/assets/web-panel/assets/Providers-C6q_fvea.css +1 -0
  103. package/src/assets/web-panel/assets/Providers-Dl0FT1S3.js +1 -0
  104. package/src/assets/web-panel/assets/QuickAsk-V2hYLhfp.js +1 -0
  105. package/src/assets/web-panel/assets/Recommend-8Kaiodgv.js +1 -0
  106. package/src/assets/web-panel/assets/Recommend-D_bf91K6.css +1 -0
  107. package/src/assets/web-panel/assets/Reputation-CsxB3JGg.js +1 -0
  108. package/src/assets/web-panel/assets/Reputation-DiOsOleI.css +1 -0
  109. package/src/assets/web-panel/assets/Row-6-x7tEYq.js +1 -0
  110. package/src/assets/web-panel/assets/RssFeed-Buv6f5tw.js +3 -0
  111. package/src/assets/web-panel/assets/RssFeed-CjcbkyUb.css +1 -0
  112. package/src/assets/web-panel/assets/Search-ABrDz84n.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-DqOJmz18.js +4 -0
  116. package/src/assets/web-panel/assets/Services-Cq4Tda3q.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-n74QlyYq.js} +1 -1
  119. package/src/assets/web-panel/assets/Skills-BUu9owbR.css +1 -0
  120. package/src/assets/web-panel/assets/Skills-CC0iozL5.js +1 -0
  121. package/src/assets/web-panel/assets/Sla-hwRgJ99Z.js +1 -0
  122. package/src/assets/web-panel/assets/Sla-sodqCU4a.css +1 -0
  123. package/src/assets/web-panel/assets/SpeechSettings-B6Bs6_-8.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-CTp2dZ0z.js +2 -0
  127. package/src/assets/web-panel/assets/Tasks-D70Lis6S.js +1 -0
  128. package/src/assets/web-panel/assets/Tasks-nbTUVXvt.css +1 -0
  129. package/src/assets/web-panel/assets/Templates-Cags0ssw.js +1 -0
  130. package/src/assets/web-panel/assets/Templates-CpFsKk_l.css +1 -0
  131. package/src/assets/web-panel/assets/Tenant-BxCMzzGt.js +1 -0
  132. package/src/assets/web-panel/assets/Tenant-MuPJnOjk.css +1 -0
  133. package/src/assets/web-panel/assets/Terminal-DHoveJwj.css +1 -0
  134. package/src/assets/web-panel/assets/Terminal-v05SDqHd.js +3 -0
  135. package/src/assets/web-panel/assets/TimelineRenderer-BLUDHbBL.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-D-xKLJYv.js +1 -0
  139. package/src/assets/web-panel/assets/{Trigger-Rzs-a8Xf.js → Trigger-B47tVIbH.js} +1 -1
  140. package/src/assets/web-panel/assets/Trust-C-WrW0Fj.css +1 -0
  141. package/src/assets/web-panel/assets/Trust-DmRU9kfs.js +1 -0
  142. package/src/assets/web-panel/assets/UkeySign-DzgSGs-c.js +1 -0
  143. package/src/assets/web-panel/assets/VideoEditing-BDFghpzP.css +1 -0
  144. package/src/assets/web-panel/assets/VideoEditing-C6qu58up.js +1 -0
  145. package/src/assets/web-panel/assets/Wallet-DUbpTRcg.css +1 -0
  146. package/src/assets/web-panel/assets/Wallet-Dh8ZWx8f.js +4 -0
  147. package/src/assets/web-panel/assets/WebAuthn-CVAFRfCQ.css +1 -0
  148. package/src/assets/web-panel/assets/WebAuthn-DFHOVuAY.js +5 -0
  149. package/src/assets/web-panel/assets/WorkflowEditor-429lPWYk.css +1 -0
  150. package/src/assets/web-panel/assets/WorkflowEditor-B_fyQ3Y_.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-BR-WxnCQ.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-C-6RysQe.js} +1 -1
  155. package/src/assets/web-panel/assets/{compact-item-X13u92RU.js → compact-item-B_9_SCKN.js} +1 -1
  156. package/src/assets/web-panel/assets/createContext-D6rklIbE.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-BiN5HELJ.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-BrotgSvd.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-B2yXH6vy.js +1 -0
  163. package/src/assets/web-panel/assets/{index-BipKV1Yr.js → index-B85rQNYG.js} +2 -2
  164. package/src/assets/web-panel/assets/index-BIiCIC2j.js +1 -0
  165. package/src/assets/web-panel/assets/index-BaLhL3Tj.js +1 -0
  166. package/src/assets/web-panel/assets/index-BbRl_gIW.js +13 -0
  167. package/src/assets/web-panel/assets/index-BhxiT2LJ.js +1 -0
  168. package/src/assets/web-panel/assets/index-BsDNNDBN.js +31 -0
  169. package/src/assets/web-panel/assets/index-Bv9BrnD2.js +1 -0
  170. package/src/assets/web-panel/assets/index-Bwkg_EJk.js +3 -0
  171. package/src/assets/web-panel/assets/{index-Cq-fdWWC.js → index-CAfRNHna.js} +1 -1
  172. package/src/assets/web-panel/assets/{index-C54Ydkuz.js → index-CCWzUY8K.js} +4 -4
  173. package/src/assets/web-panel/assets/{index-DBfn83eM.js → index-CJ70GAW2.js} +1 -1
  174. package/src/assets/web-panel/assets/{index-BqX3jeij.js → index-CJgp_QFo.js} +1 -1
  175. package/src/assets/web-panel/assets/index-CK8YwdNd.js +3 -0
  176. package/src/assets/web-panel/assets/index-CTQkYbir.js +7 -0
  177. package/src/assets/web-panel/assets/index-CTpxOc5s.js +1 -0
  178. package/src/assets/web-panel/assets/index-CWmJukRW.js +1 -0
  179. package/src/assets/web-panel/assets/{index-DrH9uW99.js → index-CdDmzoPE.js} +2 -2
  180. package/src/assets/web-panel/assets/{index-DZMiVgXE.js → index-Cn21XmDt.js} +1 -1
  181. package/src/assets/web-panel/assets/index-Cn5ghmbB.js +1 -0
  182. package/src/assets/web-panel/assets/{index-CfX1DEtk.css → index-Cq93VfoF.css} +1 -1
  183. package/src/assets/web-panel/assets/index-CrGp-4E2.js +1 -0
  184. package/src/assets/web-panel/assets/{index-CBnkvGxd.js → index-CsWVDOd2.js} +1 -1
  185. package/src/assets/web-panel/assets/{index-C14mc-46.js → index-D6KqyxG1.js} +1 -1
  186. package/src/assets/web-panel/assets/index-DBNSZ2oz.js +1 -0
  187. package/src/assets/web-panel/assets/index-DMnomft7.js +1 -0
  188. package/src/assets/web-panel/assets/index-DTCUOKu9.js +1 -0
  189. package/src/assets/web-panel/assets/index-DTh0fWI4.js +19 -0
  190. package/src/assets/web-panel/assets/{index-Ced-t9AY.js → index-DTpElYJs.js} +3 -3
  191. package/src/assets/web-panel/assets/index-DfqUsPl2.js +1 -0
  192. package/src/assets/web-panel/assets/{index-Bewc5jaO.js → index-DigjvHuo.js} +1 -1
  193. package/src/assets/web-panel/assets/{index-Deh_HoQ3.js → index-DkpDFJRn.js} +2 -2
  194. package/src/assets/web-panel/assets/index-E_5VXq8H.js +12 -0
  195. package/src/assets/web-panel/assets/index-GzuCTHVZ.js +73 -0
  196. package/src/assets/web-panel/assets/index-MBOwmoOi.js +55 -0
  197. package/src/assets/web-panel/assets/{index-DW1GR68q.js → index-MCmNzIC7.js} +1 -1
  198. package/src/assets/web-panel/assets/index-PzM_GlKb.js +21 -0
  199. package/src/assets/web-panel/assets/index-ZehgEQYa.js +12 -0
  200. package/src/assets/web-panel/assets/index-kkjq_hwC.js +21 -0
  201. package/src/assets/web-panel/assets/{index-CvlrcZKy.js → index-rWiOF7Iu.js} +4 -4
  202. package/src/assets/web-panel/assets/{initDefaultProps-B8zdOlFC.js → initDefaultProps-C2v_L5na.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-DNDqGbfr.js +11 -0
  206. package/src/assets/web-panel/assets/{move-BioqdqDn.js → move-xvpQ_6hJ.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-Cb0FsfrO.js} +1 -1
  209. package/src/assets/web-panel/assets/{pickAttrs-DgVG8oMj.js → pickAttrs-BxhYpnum.js} +1 -1
  210. package/src/assets/web-panel/assets/{placementArrow-cJY6hoXZ.js → placementArrow-B3soaW4h.js} +1 -1
  211. package/src/assets/web-panel/assets/{responsiveObserve-DbUdURRx.js → responsiveObserve-B-eRSLvd.js} +1 -1
  212. package/src/assets/web-panel/assets/{slide-C2OEWnC4.js → slide--cM2ZOx-.js} +1 -1
  213. package/src/assets/web-panel/assets/{statusUtils-DghgcGqm.js → statusUtils-DjBhfi8Q.js} +1 -1
  214. package/src/assets/web-panel/assets/{styleChecker-GoQ7uwU1.js → styleChecker-C30mMh8o.js} +1 -1
  215. package/src/assets/web-panel/assets/useFlexGapSupport-f7y2Qlzs.js +1 -0
  216. package/src/assets/web-panel/assets/{useFs-CZCJDMup.js → useFs-iTCXoLoZ.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-BH0RXmVF.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-DQtmeDXM.js +1 -0
  223. package/src/assets/web-panel/assets/{zoom-CzyiNxpd.js → zoom-vw50zkLZ.js} +1 -1
  224. package/src/assets/web-panel/index.html +4 -4
  225. package/src/assets/web-panel/assets/AIOps-BWWsdf3s.js +0 -1
  226. package/src/assets/web-panel/assets/AIOps-Cchx1iXI.css +0 -1
  227. package/src/assets/web-panel/assets/Analytics-C1-TXmTC.css +0 -1
  228. package/src/assets/web-panel/assets/Analytics-CU1ellhG.js +0 -3
  229. package/src/assets/web-panel/assets/AppLayout-9pWRQa_t.css +0 -1
  230. package/src/assets/web-panel/assets/AppLayout-cXY-mRTd.js +0 -3
  231. package/src/assets/web-panel/assets/Audit-6ZMsXmrO.css +0 -1
  232. package/src/assets/web-panel/assets/Audit-CtQuC6zy.js +0 -1
  233. package/src/assets/web-panel/assets/Backup-CY9QozR7.css +0 -1
  234. package/src/assets/web-panel/assets/Backup-WeATa8CV.js +0 -1
  235. package/src/assets/web-panel/assets/BaseInput-BCu2Cejw.js +0 -1
  236. package/src/assets/web-panel/assets/Chat-Bj0XPlH8.js +0 -7
  237. package/src/assets/web-panel/assets/Chat-IlrLB9ZV.css +0 -1
  238. package/src/assets/web-panel/assets/ChatBubbleRenderer-Bpp2sN9W.js +0 -1
  239. package/src/assets/web-panel/assets/ChatBubbleRenderer-CO908iBt.css +0 -1
  240. package/src/assets/web-panel/assets/Codegen-BLP7id2a.css +0 -1
  241. package/src/assets/web-panel/assets/Codegen-PeBhNei5.js +0 -1
  242. package/src/assets/web-panel/assets/Community-BvaB_Wcs.js +0 -1
  243. package/src/assets/web-panel/assets/Community-C2RejeOY.css +0 -1
  244. package/src/assets/web-panel/assets/Compliance-DOys4Ov1.css +0 -1
  245. package/src/assets/web-panel/assets/Compliance-DjquEqsU.js +0 -1
  246. package/src/assets/web-panel/assets/Cowork-Bv6Tm40_.js +0 -6
  247. package/src/assets/web-panel/assets/Cowork-DsOst4XK.css +0 -1
  248. package/src/assets/web-panel/assets/Cron-D9fPIXV8.js +0 -2
  249. package/src/assets/web-panel/assets/Crosschain-C0WilDBF.js +0 -1
  250. package/src/assets/web-panel/assets/Crosschain-C7Le4Pte.css +0 -1
  251. package/src/assets/web-panel/assets/DID-BX6k3jZi.css +0 -1
  252. package/src/assets/web-panel/assets/DID-CiGeAI1K.js +0 -2
  253. package/src/assets/web-panel/assets/Dashboard-MFDcsVcM.css +0 -1
  254. package/src/assets/web-panel/assets/Dashboard-zqQuizB8.js +0 -3
  255. package/src/assets/web-panel/assets/Dropdown-_Mjb8yOR.js +0 -1
  256. package/src/assets/web-panel/assets/EmailListRenderer-C369EVhV.js +0 -1
  257. package/src/assets/web-panel/assets/EmailListRenderer-CVJ1j3Ll.css +0 -1
  258. package/src/assets/web-panel/assets/FamilyGuardDashboard-D8WsrCmn.js +0 -1
  259. package/src/assets/web-panel/assets/FamilyGuardDashboard-Df-D09Q4.css +0 -1
  260. package/src/assets/web-panel/assets/Federation-CgmfLbx1.css +0 -1
  261. package/src/assets/web-panel/assets/Federation-Dq7CrAzj.js +0 -1
  262. package/src/assets/web-panel/assets/FormItemContext-C7TvuLVK.js +0 -1
  263. package/src/assets/web-panel/assets/GenericCardRenderer-BJUR1Emh.js +0 -1
  264. package/src/assets/web-panel/assets/GenericCardRenderer-DtJFcJYl.css +0 -1
  265. package/src/assets/web-panel/assets/Git-B5MdAp15.js +0 -2
  266. package/src/assets/web-panel/assets/Governance-BIbPWlSM.js +0 -1
  267. package/src/assets/web-panel/assets/Governance-BoipmXaM.css +0 -1
  268. package/src/assets/web-panel/assets/Inference-BWxYJF9-.css +0 -1
  269. package/src/assets/web-panel/assets/Inference-vOz9J05E.js +0 -1
  270. package/src/assets/web-panel/assets/KnowledgeGraph-B_vUO-Td.js +0 -1
  271. package/src/assets/web-panel/assets/KnowledgeGraph-CztPDA96.css +0 -1
  272. package/src/assets/web-panel/assets/Logs-BwPfxX3p.js +0 -2
  273. package/src/assets/web-panel/assets/Logs-Gf_Mv9Nx.css +0 -1
  274. package/src/assets/web-panel/assets/Marketplace-Djp5q9dS.css +0 -1
  275. package/src/assets/web-panel/assets/Marketplace-T5HNwUjX.js +0 -1
  276. package/src/assets/web-panel/assets/McpTools-CDjHmzxH.css +0 -1
  277. package/src/assets/web-panel/assets/McpTools-CuKeBPxy.js +0 -5
  278. package/src/assets/web-panel/assets/Memory-Bcc2hxOA.css +0 -1
  279. package/src/assets/web-panel/assets/Memory-DmRW_sTE.js +0 -2
  280. package/src/assets/web-panel/assets/MobileBridge-DK2N_MJA.js +0 -3
  281. package/src/assets/web-panel/assets/MobileBridge-DwxX55b_.css +0 -1
  282. package/src/assets/web-panel/assets/MobileProjects-Ceaxrqzc.css +0 -1
  283. package/src/assets/web-panel/assets/MobileProjects-wl3bXCnJ.js +0 -1
  284. package/src/assets/web-panel/assets/Mtc-C8e0941i.js +0 -6
  285. package/src/assets/web-panel/assets/Mtc-DHwbdUqA.css +0 -1
  286. package/src/assets/web-panel/assets/MtcAudit-B0x8gahq.css +0 -1
  287. package/src/assets/web-panel/assets/MtcAudit-Cwigy2IR.js +0 -19
  288. package/src/assets/web-panel/assets/Multisig-BSfh_ncy.js +0 -7
  289. package/src/assets/web-panel/assets/Multisig-kwPDnXnl.css +0 -1
  290. package/src/assets/web-panel/assets/NLProgramming-BwzJAfJg.js +0 -1
  291. package/src/assets/web-panel/assets/NLProgramming-CLOvy-35.css +0 -1
  292. package/src/assets/web-panel/assets/Notes-COE2q2gD.css +0 -1
  293. package/src/assets/web-panel/assets/Notes-uilHH6hE.js +0 -7
  294. package/src/assets/web-panel/assets/NotificationSettings-Co0e0uEO.css +0 -1
  295. package/src/assets/web-panel/assets/NotificationSettings-DvM3DTPW.js +0 -1
  296. package/src/assets/web-panel/assets/OrderTableRenderer-BIEm3hZl.js +0 -1
  297. package/src/assets/web-panel/assets/OrderTableRenderer-BnOISpKI.css +0 -1
  298. package/src/assets/web-panel/assets/Organization-BX-cIO8M.css +0 -1
  299. package/src/assets/web-panel/assets/Organization-zxWoIwYM.js +0 -4
  300. package/src/assets/web-panel/assets/P2P-BsbToYKZ.js +0 -2
  301. package/src/assets/web-panel/assets/P2P-Cx88UaiD.css +0 -1
  302. package/src/assets/web-panel/assets/PdhVaultBrowser-B9ZGFpn4.css +0 -1
  303. package/src/assets/web-panel/assets/PdhVaultBrowser-VU8vfhsS.js +0 -7
  304. package/src/assets/web-panel/assets/Permissions-C10Sd26B.js +0 -4
  305. package/src/assets/web-panel/assets/Permissions-C9WlkGl-.css +0 -1
  306. package/src/assets/web-panel/assets/PersonalDataHub-Bz5u9Gth.css +0 -1
  307. package/src/assets/web-panel/assets/PersonalDataHub-edJB7VeU.js +0 -2
  308. package/src/assets/web-panel/assets/Pipeline-DxkXqrH2.css +0 -1
  309. package/src/assets/web-panel/assets/Pipeline-qNmVxn5A.js +0 -1
  310. package/src/assets/web-panel/assets/Privacy-CrsfSFKd.css +0 -1
  311. package/src/assets/web-panel/assets/Privacy-h78XF7eO.js +0 -1
  312. package/src/assets/web-panel/assets/ProjectInit-C9-vm1no.js +0 -2
  313. package/src/assets/web-panel/assets/ProjectInit-CteEo-wF.css +0 -1
  314. package/src/assets/web-panel/assets/ProjectSettings-DpDNsQTb.js +0 -2
  315. package/src/assets/web-panel/assets/ProjectSettings-pLSae-wy.css +0 -1
  316. package/src/assets/web-panel/assets/Projects-BX-SG9R4.css +0 -1
  317. package/src/assets/web-panel/assets/Projects-CwU3W4RD.js +0 -1
  318. package/src/assets/web-panel/assets/Providers-BNI-WkmA.css +0 -1
  319. package/src/assets/web-panel/assets/Providers-C3KZlUEI.js +0 -1
  320. package/src/assets/web-panel/assets/QuickAsk-CILvLGze.js +0 -1
  321. package/src/assets/web-panel/assets/Recommend-CH6wKzGo.css +0 -1
  322. package/src/assets/web-panel/assets/Recommend-XfFlk3BY.js +0 -1
  323. package/src/assets/web-panel/assets/Reputation-BqmWvaMD.js +0 -1
  324. package/src/assets/web-panel/assets/Reputation-D6VPNEd0.css +0 -1
  325. package/src/assets/web-panel/assets/Row-BEbjCI_X.js +0 -1
  326. package/src/assets/web-panel/assets/RssFeed-BlFC20eg.css +0 -1
  327. package/src/assets/web-panel/assets/RssFeed-CFukIl-a.js +0 -3
  328. package/src/assets/web-panel/assets/Search-B6RalzTB.css +0 -1
  329. package/src/assets/web-panel/assets/Search-dVPkf1o2.js +0 -1
  330. package/src/assets/web-panel/assets/Security-13K57V_v.css +0 -1
  331. package/src/assets/web-panel/assets/Security-DlRFaUrn.js +0 -4
  332. package/src/assets/web-panel/assets/Services-C8Qs6KXv.css +0 -1
  333. package/src/assets/web-panel/assets/Services-DKy7AjpA.js +0 -2
  334. package/src/assets/web-panel/assets/Skills-BEqnpg2j.js +0 -1
  335. package/src/assets/web-panel/assets/Skills-BdjRyorN.css +0 -1
  336. package/src/assets/web-panel/assets/Sla-CZ9_lzPI.js +0 -1
  337. package/src/assets/web-panel/assets/Sla-K19oOyQc.css +0 -1
  338. package/src/assets/web-panel/assets/SpeechSettings-DVSY_ehZ.js +0 -1
  339. package/src/assets/web-panel/assets/SpeechSettings-DYPJTDKz.css +0 -1
  340. package/src/assets/web-panel/assets/SyncSettings-C6cDrwDR.css +0 -1
  341. package/src/assets/web-panel/assets/SyncSettings-DgvsRpGt.js +0 -1
  342. package/src/assets/web-panel/assets/Tasks-BJjN_YEm.css +0 -1
  343. package/src/assets/web-panel/assets/Tasks-L5qXKsxK.js +0 -1
  344. package/src/assets/web-panel/assets/Templates-BWTV8-2E.css +0 -1
  345. package/src/assets/web-panel/assets/Templates-DR4VBx7q.js +0 -1
  346. package/src/assets/web-panel/assets/Tenant-D3zkSAV0.css +0 -1
  347. package/src/assets/web-panel/assets/Tenant-jMyaK184.js +0 -1
  348. package/src/assets/web-panel/assets/Terminal-DA5gjCiE.js +0 -3
  349. package/src/assets/web-panel/assets/Terminal-G1DrFtKr.css +0 -1
  350. package/src/assets/web-panel/assets/TimelineRenderer-BM17JHyr.js +0 -1
  351. package/src/assets/web-panel/assets/TimelineRenderer-DmztdsbF.css +0 -1
  352. package/src/assets/web-panel/assets/Tokens-BBOdNRHQ.css +0 -1
  353. package/src/assets/web-panel/assets/Tokens-CCJIrnhi.js +0 -1
  354. package/src/assets/web-panel/assets/Trust-BHeJEfNG.js +0 -1
  355. package/src/assets/web-panel/assets/Trust-DeOo0xAh.css +0 -1
  356. package/src/assets/web-panel/assets/UkeySign-DjcIVRk4.js +0 -1
  357. package/src/assets/web-panel/assets/VideoEditing-BPhptg3q.js +0 -1
  358. package/src/assets/web-panel/assets/VideoEditing-DksiizfS.css +0 -1
  359. package/src/assets/web-panel/assets/Wallet-D_xDgfaz.js +0 -4
  360. package/src/assets/web-panel/assets/Wallet-gR0ZvZbK.css +0 -1
  361. package/src/assets/web-panel/assets/WebAuthn-SSh5VhVO.css +0 -1
  362. package/src/assets/web-panel/assets/WebAuthn-pd961lgM.js +0 -5
  363. package/src/assets/web-panel/assets/WorkflowEditor-BmXDUZ8M.js +0 -1
  364. package/src/assets/web-panel/assets/WorkflowEditor-IiwsD8Kh.css +0 -1
  365. package/src/assets/web-panel/assets/createContext-BBLoTzN8.js +0 -1
  366. package/src/assets/web-panel/assets/devWarning-CNIS3FrJ.js +0 -1
  367. package/src/assets/web-panel/assets/echarts-Dj_pBaVI.js +0 -19
  368. package/src/assets/web-panel/assets/favicon-FSU2gSy6.ico +0 -0
  369. package/src/assets/web-panel/assets/index-1xUFGcnI.js +0 -21
  370. package/src/assets/web-panel/assets/index-4BeUpRaU.js +0 -1
  371. package/src/assets/web-panel/assets/index-AVHrO1io.js +0 -21
  372. package/src/assets/web-panel/assets/index-B2fc2n_u.js +0 -3
  373. package/src/assets/web-panel/assets/index-B5aXiiOG.js +0 -1
  374. package/src/assets/web-panel/assets/index-B78VsLFL.js +0 -1
  375. package/src/assets/web-panel/assets/index-BECv44dY.js +0 -12
  376. package/src/assets/web-panel/assets/index-BGn5-2TK.js +0 -1
  377. package/src/assets/web-panel/assets/index-BM9IHnrf.js +0 -13
  378. package/src/assets/web-panel/assets/index-BlMshk9V.js +0 -1
  379. package/src/assets/web-panel/assets/index-BoWoWh9f.js +0 -19
  380. package/src/assets/web-panel/assets/index-Bt79ud6Y.js +0 -1
  381. package/src/assets/web-panel/assets/index-CO9Tt0Bo.js +0 -1
  382. package/src/assets/web-panel/assets/index-CSZvB2uy.js +0 -12
  383. package/src/assets/web-panel/assets/index-CjeazYU2.js +0 -1
  384. package/src/assets/web-panel/assets/index-Cw-TEBru.js +0 -1
  385. package/src/assets/web-panel/assets/index-CyObfnlZ.js +0 -3
  386. package/src/assets/web-panel/assets/index-D0d2TS5o.js +0 -69
  387. package/src/assets/web-panel/assets/index-DV3zNhRX.js +0 -1
  388. package/src/assets/web-panel/assets/index-DnHElN_A.js +0 -7
  389. package/src/assets/web-panel/assets/index-DspW4reY.js +0 -55
  390. package/src/assets/web-panel/assets/index-DxUFdvJ5.js +0 -1
  391. package/src/assets/web-panel/assets/index-La4F-U-s.js +0 -1
  392. package/src/assets/web-panel/assets/index-azbNWBMo.js +0 -1
  393. package/src/assets/web-panel/assets/index-squRDiXd.js +0 -31
  394. package/src/assets/web-panel/assets/isSymbol-DAy2hlR5.js +0 -1
  395. package/src/assets/web-panel/assets/motion-ChVLXdRp.js +0 -11
  396. package/src/assets/web-panel/assets/useFlexGapSupport-CzD0s7wN.js +0 -1
  397. package/src/assets/web-panel/assets/vendor-DhFY8mDK.js +0 -1
  398. package/src/assets/web-panel/assets/vnode-CnXQ7gJ2.js +0 -1
  399. package/src/assets/web-panel/assets/warning-Pq00owYb.js +0 -1
@@ -1 +1 @@
1
- import{P,f as u,i as H,h as D}from"./index-D0d2TS5o.js";import{R as ee}from"./index-DZMiVgXE.js";import{i as ge,f as c,d as k,p as pe,x as be,c as v,r as he,w as Oe,s as C}from"./vendor-DhFY8mDK.js";const te=Symbol("OverflowContextProviderKey"),X=k({compatConfig:{MODE:3},name:"OverflowContextProvider",inheritAttrs:!1,props:{value:{type:Object}},setup(e,o){let{slots:a}=o;return pe(te,c(()=>e.value)),()=>{var t;return(t=a.default)===null||t===void 0?void 0:t.call(a)}}}),Se=()=>ge(te,c(()=>null));var xe=function(e,o){var a={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&o.indexOf(t)<0&&(a[t]=e[t]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,t=Object.getOwnPropertySymbols(e);n<t.length;n++)o.indexOf(t[n])<0&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(a[t[n]]=e[t[n]]);return a};const _=void 0,$=k({compatConfig:{MODE:3},name:"Item",props:{prefixCls:String,item:P.any,renderItem:Function,responsive:Boolean,itemKey:{type:[String,Number]},registerSize:Function,display:Boolean,order:Number,component:P.any,invalidate:Boolean},setup(e,o){let{slots:a,expose:t}=o;const n=c(()=>e.responsive&&!e.display),p=he();t({itemNodeRef:p});function b(i){e.registerSize(e.itemKey,i)}return be(()=>{b(null)}),()=>{var i;const{prefixCls:O,invalidate:w,item:m,renderItem:y,responsive:f,registerSize:z,itemKey:R,display:V,order:I,component:M="div"}=e,S=xe(e,["prefixCls","invalidate","item","renderItem","responsive","registerSize","itemKey","display","order","component"]),W=(i=a.default)===null||i===void 0?void 0:i.call(a),T=y&&m!==_?y(m):W;let h;w||(h={opacity:n.value?0:1,height:n.value?0:_,overflowY:n.value?"hidden":_,order:f?I:_,pointerEvents:n.value?"none":_,position:n.value?"absolute":_});const N={};return n.value&&(N["aria-hidden"]=!0),v(ee,{disabled:!f,onResize:E=>{let{offsetWidth:B}=E;b(B)}},{default:()=>v(M,u(u(u({class:H(!w&&O),style:h},N),S),{},{ref:p}),{default:()=>[T]})})}}});var U=function(e,o){var a={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&o.indexOf(t)<0&&(a[t]=e[t]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,t=Object.getOwnPropertySymbols(e);n<t.length;n++)o.indexOf(t[n])<0&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(a[t[n]]=e[t[n]]);return a};const Ce=k({compatConfig:{MODE:3},name:"RawItem",inheritAttrs:!1,props:{component:P.any,title:P.any,id:String,onMouseenter:{type:Function},onMouseleave:{type:Function},onClick:{type:Function},onKeydown:{type:Function},onFocus:{type:Function},role:String,tabindex:Number},setup(e,o){let{slots:a,attrs:t}=o;const n=Se();return()=>{var p;if(!n.value){const{component:y="div"}=e,f=U(e,["component"]);return v(y,u(u({},f),t),{default:()=>[(p=a.default)===null||p===void 0?void 0:p.call(a)]})}const b=n.value,{className:i}=b,O=U(b,["className"]),{class:w}=t,m=U(t,["class"]);return v(X,{value:null},{default:()=>[v($,u(u(u({class:H(i,w)},O),m),e),a)]})}}});var we=function(e,o){var a={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&o.indexOf(t)<0&&(a[t]=e[t]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,t=Object.getOwnPropertySymbols(e);n<t.length;n++)o.indexOf(t[n])<0&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(a[t[n]]=e[t[n]]);return a};const ne="responsive",le="invalidate";function Re(e){return`+ ${e.length} ...`}const Ie=()=>({id:String,prefixCls:String,data:Array,itemKey:[String,Number,Function],itemWidth:{type:Number,default:10},renderItem:Function,renderRawItem:Function,maxCount:[Number,String],renderRest:Function,renderRawRest:Function,suffix:P.any,component:String,itemComponent:P.any,onVisibleChange:Function,ssr:String,onMousedown:Function,role:String}),Y=k({name:"Overflow",inheritAttrs:!1,props:Ie(),emits:["visibleChange"],setup(e,o){let{attrs:a,emit:t,slots:n}=o;const p=c(()=>e.ssr==="full"),b=C(null),i=c(()=>b.value||0),O=C(new Map),w=C(0),m=C(0),y=C(0),f=C(null),z=C(null),R=c(()=>z.value===null&&p.value?Number.MAX_SAFE_INTEGER:z.value||0),V=C(!1),I=c(()=>`${e.prefixCls}-item`),M=c(()=>Math.max(w.value,m.value)),S=c(()=>!!(e.data.length&&e.maxCount===ne)),W=c(()=>e.maxCount===le),T=c(()=>S.value||typeof e.maxCount=="number"&&e.data.length>e.maxCount),h=c(()=>{let l=e.data;return S.value?b.value===null&&p.value?l=e.data:l=e.data.slice(0,Math.min(e.data.length,i.value/e.itemWidth)):typeof e.maxCount=="number"&&(l=e.data.slice(0,e.maxCount)),l}),N=c(()=>S.value?e.data.slice(R.value+1):e.data.slice(h.value.length)),E=(l,r)=>{var s;return typeof e.itemKey=="function"?e.itemKey(l):(s=e.itemKey&&l?.[e.itemKey])!==null&&s!==void 0?s:r},B=c(()=>e.renderItem||(l=>l)),A=(l,r)=>{z.value=l,r||(V.value=l<e.data.length-1,t("visibleChange",l))},ae=(l,r)=>{b.value=r.clientWidth},q=(l,r)=>{const s=new Map(O.value);r===null?s.delete(l):s.set(l,r),O.value=s},re=(l,r)=>{w.value=m.value,m.value=r},oe=(l,r)=>{y.value=r},G=l=>O.value.get(E(h.value[l],l));return Oe([i,O,m,y,()=>e.itemKey,h],()=>{if(i.value&&M.value&&h.value){let l=y.value;const r=h.value.length,s=r-1;if(!r){A(0),f.value=null;return}for(let g=0;g<r;g+=1){const F=G(g);if(F===void 0){A(g-1,!0);break}if(l+=F,s===0&&l<=i.value||g===s-1&&l+G(s)<=i.value){A(s),f.value=null;break}else if(l+M.value>i.value){A(g-1),f.value=l-F-y.value+m.value;break}}e.suffix&&G(0)+y.value>i.value&&(f.value=null)}}),()=>{const l=V.value&&!!N.value.length,{itemComponent:r,renderRawItem:s,renderRawRest:g,renderRest:F,prefixCls:ie="rc-overflow",suffix:J,component:se="div",id:ue,onMousedown:de}=e,{class:ce,style:ve}=a,fe=we(a,["class","style"]);let Q={};f.value!==null&&S.value&&(Q={position:"absolute",left:`${f.value}px`,top:0});const j={prefixCls:I.value,responsive:S.value,component:r,invalidate:W.value},me=s?(d,x)=>{const K=E(d,x);return v(X,{key:K,value:D(D({},j),{order:x,item:d,itemKey:K,registerSize:q,display:x<=R.value})},{default:()=>[s(d,x)]})}:(d,x)=>{const K=E(d,x);return v($,u(u({},j),{},{order:x,key:K,item:d,renderItem:B.value,itemKey:K,registerSize:q,display:x<=R.value}),null)};let L=()=>null;const Z={order:l?R.value:Number.MAX_SAFE_INTEGER,className:`${I.value} ${I.value}-rest`,registerSize:re,display:l};if(g)g&&(L=()=>v(X,{value:D(D({},j),Z)},{default:()=>[g(N.value)]}));else{const d=F||Re;L=()=>v($,u(u({},j),Z),{default:()=>typeof d=="function"?d(N.value):d})}const ye=()=>{var d;return v(se,u({id:ue,class:H(!W.value&&ie,ce),style:ve,onMousedown:de,role:e.role},fe),{default:()=>[h.value.map(me),T.value?L():null,J&&v($,u(u({},j),{},{order:R.value,class:`${I.value}-suffix`,registerSize:oe,display:!0,style:Q}),{default:()=>J}),(d=n.default)===null||d===void 0?void 0:d.call(n)]})};return v(ee,{disabled:!S.value,onResize:ae},{default:ye})}}});Y.Item=Ce;Y.RESPONSIVE=ne;Y.INVALIDATE=le;export{Y as O};
1
+ import{P,f as u,i as H,h as D}from"./index-GzuCTHVZ.js";import{d as k,p as ge,b as c,i as pe,x as be,c as v,r as he,w as Oe,s as C}from"./vendor-BvqAck49.js";import{R as ee}from"./index-Cn21XmDt.js";const te=Symbol("OverflowContextProviderKey"),X=k({compatConfig:{MODE:3},name:"OverflowContextProvider",inheritAttrs:!1,props:{value:{type:Object}},setup(e,o){let{slots:a}=o;return ge(te,c(()=>e.value)),()=>{var t;return(t=a.default)===null||t===void 0?void 0:t.call(a)}}}),Se=()=>pe(te,c(()=>null));var xe=function(e,o){var a={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&o.indexOf(t)<0&&(a[t]=e[t]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,t=Object.getOwnPropertySymbols(e);n<t.length;n++)o.indexOf(t[n])<0&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(a[t[n]]=e[t[n]]);return a};const _=void 0,$=k({compatConfig:{MODE:3},name:"Item",props:{prefixCls:String,item:P.any,renderItem:Function,responsive:Boolean,itemKey:{type:[String,Number]},registerSize:Function,display:Boolean,order:Number,component:P.any,invalidate:Boolean},setup(e,o){let{slots:a,expose:t}=o;const n=c(()=>e.responsive&&!e.display),p=he();t({itemNodeRef:p});function b(i){e.registerSize(e.itemKey,i)}return be(()=>{b(null)}),()=>{var i;const{prefixCls:O,invalidate:w,item:m,renderItem:y,responsive:f,registerSize:z,itemKey:R,display:V,order:I,component:M="div"}=e,S=xe(e,["prefixCls","invalidate","item","renderItem","responsive","registerSize","itemKey","display","order","component"]),W=(i=a.default)===null||i===void 0?void 0:i.call(a),T=y&&m!==_?y(m):W;let h;w||(h={opacity:n.value?0:1,height:n.value?0:_,overflowY:n.value?"hidden":_,order:f?I:_,pointerEvents:n.value?"none":_,position:n.value?"absolute":_});const N={};return n.value&&(N["aria-hidden"]=!0),v(ee,{disabled:!f,onResize:E=>{let{offsetWidth:B}=E;b(B)}},{default:()=>v(M,u(u(u({class:H(!w&&O),style:h},N),S),{},{ref:p}),{default:()=>[T]})})}}});var U=function(e,o){var a={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&o.indexOf(t)<0&&(a[t]=e[t]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,t=Object.getOwnPropertySymbols(e);n<t.length;n++)o.indexOf(t[n])<0&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(a[t[n]]=e[t[n]]);return a};const Ce=k({compatConfig:{MODE:3},name:"RawItem",inheritAttrs:!1,props:{component:P.any,title:P.any,id:String,onMouseenter:{type:Function},onMouseleave:{type:Function},onClick:{type:Function},onKeydown:{type:Function},onFocus:{type:Function},role:String,tabindex:Number},setup(e,o){let{slots:a,attrs:t}=o;const n=Se();return()=>{var p;if(!n.value){const{component:y="div"}=e,f=U(e,["component"]);return v(y,u(u({},f),t),{default:()=>[(p=a.default)===null||p===void 0?void 0:p.call(a)]})}const b=n.value,{className:i}=b,O=U(b,["className"]),{class:w}=t,m=U(t,["class"]);return v(X,{value:null},{default:()=>[v($,u(u(u({class:H(i,w)},O),m),e),a)]})}}});var we=function(e,o){var a={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&o.indexOf(t)<0&&(a[t]=e[t]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,t=Object.getOwnPropertySymbols(e);n<t.length;n++)o.indexOf(t[n])<0&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(a[t[n]]=e[t[n]]);return a};const ne="responsive",le="invalidate";function Re(e){return`+ ${e.length} ...`}const Ie=()=>({id:String,prefixCls:String,data:Array,itemKey:[String,Number,Function],itemWidth:{type:Number,default:10},renderItem:Function,renderRawItem:Function,maxCount:[Number,String],renderRest:Function,renderRawRest:Function,suffix:P.any,component:String,itemComponent:P.any,onVisibleChange:Function,ssr:String,onMousedown:Function,role:String}),Y=k({name:"Overflow",inheritAttrs:!1,props:Ie(),emits:["visibleChange"],setup(e,o){let{attrs:a,emit:t,slots:n}=o;const p=c(()=>e.ssr==="full"),b=C(null),i=c(()=>b.value||0),O=C(new Map),w=C(0),m=C(0),y=C(0),f=C(null),z=C(null),R=c(()=>z.value===null&&p.value?Number.MAX_SAFE_INTEGER:z.value||0),V=C(!1),I=c(()=>`${e.prefixCls}-item`),M=c(()=>Math.max(w.value,m.value)),S=c(()=>!!(e.data.length&&e.maxCount===ne)),W=c(()=>e.maxCount===le),T=c(()=>S.value||typeof e.maxCount=="number"&&e.data.length>e.maxCount),h=c(()=>{let l=e.data;return S.value?b.value===null&&p.value?l=e.data:l=e.data.slice(0,Math.min(e.data.length,i.value/e.itemWidth)):typeof e.maxCount=="number"&&(l=e.data.slice(0,e.maxCount)),l}),N=c(()=>S.value?e.data.slice(R.value+1):e.data.slice(h.value.length)),E=(l,r)=>{var s;return typeof e.itemKey=="function"?e.itemKey(l):(s=e.itemKey&&l?.[e.itemKey])!==null&&s!==void 0?s:r},B=c(()=>e.renderItem||(l=>l)),A=(l,r)=>{z.value=l,r||(V.value=l<e.data.length-1,t("visibleChange",l))},ae=(l,r)=>{b.value=r.clientWidth},q=(l,r)=>{const s=new Map(O.value);r===null?s.delete(l):s.set(l,r),O.value=s},re=(l,r)=>{w.value=m.value,m.value=r},oe=(l,r)=>{y.value=r},G=l=>O.value.get(E(h.value[l],l));return Oe([i,O,m,y,()=>e.itemKey,h],()=>{if(i.value&&M.value&&h.value){let l=y.value;const r=h.value.length,s=r-1;if(!r){A(0),f.value=null;return}for(let g=0;g<r;g+=1){const F=G(g);if(F===void 0){A(g-1,!0);break}if(l+=F,s===0&&l<=i.value||g===s-1&&l+G(s)<=i.value){A(s),f.value=null;break}else if(l+M.value>i.value){A(g-1),f.value=l-F-y.value+m.value;break}}e.suffix&&G(0)+y.value>i.value&&(f.value=null)}}),()=>{const l=V.value&&!!N.value.length,{itemComponent:r,renderRawItem:s,renderRawRest:g,renderRest:F,prefixCls:ie="rc-overflow",suffix:J,component:se="div",id:ue,onMousedown:de}=e,{class:ce,style:ve}=a,fe=we(a,["class","style"]);let Q={};f.value!==null&&S.value&&(Q={position:"absolute",left:`${f.value}px`,top:0});const j={prefixCls:I.value,responsive:S.value,component:r,invalidate:W.value},me=s?(d,x)=>{const K=E(d,x);return v(X,{key:K,value:D(D({},j),{order:x,item:d,itemKey:K,registerSize:q,display:x<=R.value})},{default:()=>[s(d,x)]})}:(d,x)=>{const K=E(d,x);return v($,u(u({},j),{},{order:x,key:K,item:d,renderItem:B.value,itemKey:K,registerSize:q,display:x<=R.value}),null)};let L=()=>null;const Z={order:l?R.value:Number.MAX_SAFE_INTEGER,className:`${I.value} ${I.value}-rest`,registerSize:re,display:l};if(g)g&&(L=()=>v(X,{value:D(D({},j),Z)},{default:()=>[g(N.value)]}));else{const d=F||Re;L=()=>v($,u(u({},j),Z),{default:()=>typeof d=="function"?d(N.value):d})}const ye=()=>{var d;return v(se,u({id:ue,class:H(!W.value&&ie,ce),style:ve,onMousedown:de,role:e.role},fe),{default:()=>[h.value.map(me),T.value?L():null,J&&v($,u(u({},j),{},{order:R.value,class:`${I.value}-suffix`,registerSize:oe,display:!0,style:Q}),{default:()=>J}),(d=n.default)===null||d===void 0?void 0:d.call(n)]})};return v(ee,{disabled:!S.value,onResize:ae},{default:ye})}}});Y.Item=Ce;Y.RESPONSIVE=ne;Y.INVALIDATE=le;export{Y as O};
@@ -1 +1 @@
1
- import{p as _,i as b,f as t}from"./vendor-DhFY8mDK.js";const c=Symbol("OverrideContextKey"),C=()=>b(c,void 0),f=o=>{var v,i,d;const{prefixCls:n,mode:a,selectable:u,validator:s,onClick:x,expandIcon:r}=C()||{};_(c,{prefixCls:t(()=>{var e,l;return(l=(e=o.prefixCls)===null||e===void 0?void 0:e.value)!==null&&l!==void 0?l:n?.value}),mode:t(()=>{var e,l;return(l=(e=o.mode)===null||e===void 0?void 0:e.value)!==null&&l!==void 0?l:a?.value}),selectable:t(()=>{var e,l;return(l=(e=o.selectable)===null||e===void 0?void 0:e.value)!==null&&l!==void 0?l:u?.value}),validator:(v=o.validator)!==null&&v!==void 0?v:s,onClick:(i=o.onClick)!==null&&i!==void 0?i:x,expandIcon:(d=o.expandIcon)!==null&&d!==void 0?d:r?.value})};export{C as a,f as u};
1
+ import{p as x,b as t,i as _}from"./vendor-BvqAck49.js";const c=Symbol("OverrideContextKey"),C=()=>_(c,void 0),f=o=>{var v,i,d;const{prefixCls:n,mode:a,selectable:u,validator:s,onClick:b,expandIcon:r}=C()||{};x(c,{prefixCls:t(()=>{var e,l;return(l=(e=o.prefixCls)===null||e===void 0?void 0:e.value)!==null&&l!==void 0?l:n?.value}),mode:t(()=>{var e,l;return(l=(e=o.mode)===null||e===void 0?void 0:e.value)!==null&&l!==void 0?l:a?.value}),selectable:t(()=>{var e,l;return(l=(e=o.selectable)===null||e===void 0?void 0:e.value)!==null&&l!==void 0?l:u?.value}),validator:(v=o.validator)!==null&&v!==void 0?v:s,onClick:(i=o.onClick)!==null&&i!==void 0?i:b,expandIcon:(d=o.expandIcon)!==null&&d!==void 0?d:r?.value})};export{C as a,f as u};
@@ -0,0 +1,2 @@
1
+ import{I as d,J as y,U as u,R as l,c as t,K as a,V as p,o as Y,b as $,r,P as i,Q as g,S as O,F as ee,Z as re}from"./vendor-BvqAck49.js";import{_ as se,b as te,u as ne}from"./index-GzuCTHVZ.js";import{M as ie,R as ce,as as de,al as pe,S as ue}from"./icons-DP3uiYxy.js";const ye={__name:"P2P",setup(ae,{expose:c}){c();const{t:s}=te(),e=ne(),z=r(!1),T=r(""),f=r([]),L=$(()=>[{title:s("p2p.peerColumns.name"),key:"name"},{title:s("p2p.peerColumns.id"),key:"id"},{title:s("p2p.peerColumns.status"),key:"status"},{title:s("p2p.peerColumns.action"),key:"action",width:100}]);async function k(){z.value=!0,T.value="";try{const{output:n}=await e.execute("p2p peers",15e3);f.value=R(n)}catch(n){T.value=s("p2p.messages.loadPeersFailed",{err:n.message})}finally{z.value=!1}}function R(n){if(!n||n.includes("No peers")||n.includes("no peers"))return[];const N=n.split(`
2
+ `).filter(U=>U.trim()),P=[];for(const U of N){const I=U.match(/^\s*(\S+)\s+(.+?)\s+(connected|online|offline|disconnected)\s*$/i);if(I){P.push({id:I[1],name:I[2].trim(),connected:/connected|online/i.test(I[3])});continue}const V=U.match(/^\s*((?:12D3|Qm)\S{10,})\s*(.*)$/);if(V){const X=V[2].trim();P.push({id:V[1],name:X||V[1].slice(0,12),connected:/connected|online/i.test(X)})}}return P}const B=r(!1),M=r(!1),m=r(""),_=r("");async function C(){if(m.value.trim()){M.value=!0,_.value="";try{const{output:n}=await e.execute(`p2p pair "${m.value.trim()}"`,3e4);_.value=n,await k()}catch(n){_.value=s("p2p.messages.pairFailed",{err:n.message})}finally{M.value=!1}}}const D=r(!1),S=r(!1),b=r(void 0),w=r(""),x=r("");function o(n){b.value=n.id,w.value="",x.value="",D.value=!0}async function v(){if(!(!b.value||!w.value.trim())){S.value=!0,x.value="";try{const{output:n}=await e.execute(`p2p send ${b.value} "${w.value.trim()}"`,15e3);x.value=n||s("p2p.send.messageDefault")}catch(n){x.value=s("p2p.messages.sendFailed",{err:n.message})}finally{S.value=!1}}}const E=r(!1),j=r(""),A=r(!1),K=r(""),J=r(0),Z=r(""),h=r(""),Q=r(!1),W=r(!1);async function F(){E.value=!0,j.value="";try{const{output:n}=await e.execute("sync status",15e3);q(n)}catch(n){j.value=s("p2p.messages.loadSyncFailed",{err:n.message})}finally{E.value=!1}}function q(n){if(!n){K.value=s("p2p.sync.unknown");return}A.value=/synced|online|up.to.date/i.test(n),K.value=A.value?s("p2p.sync.synced"):s("p2p.sync.notSynced");const N=n.match(/pending[:\s]+(\d+)/i);J.value=N?parseInt(N[1]):0;const P=n.match(/last[:\s]+(.+)/i);P&&(Z.value=P[1].trim())}async function oe(){Q.value=!0,h.value="";try{const{output:n}=await e.execute("sync push",3e4);h.value=n||s("p2p.sync.pushDefault"),await F()}catch(n){h.value=s("p2p.messages.pushFailed",{err:n.message})}finally{Q.value=!1}}async function le(){W.value=!0,h.value="";try{const{output:n}=await e.execute("sync pull",3e4);h.value=n||s("p2p.sync.pullDefault"),await F()}catch(n){h.value=s("p2p.messages.pullFailed",{err:n.message})}finally{W.value=!1}}async function G(){await Promise.all([k(),F()])}Y(G);const H={t:s,ws:e,peersLoading:z,peersError:T,peers:f,peerColumns:L,loadPeers:k,parsePeersOutput:R,showPairModal:B,pairLoading:M,pairDeviceName:m,pairResult:_,doPair:C,showSendModal:D,sendLoading:S,sendTarget:b,sendMessage:w,sendResult:x,openSendTo:o,doSend:v,syncLoading:E,syncError:j,syncOnline:A,syncStatusText:K,syncPending:J,lastSyncTime:Z,syncOutput:h,pushLoading:Q,pullLoading:W,loadSync:F,parseSyncStatus:q,syncPush:oe,syncPull:le,refreshAll:G,ref:r,computed:$,onMounted:Y,get useI18n(){return te},get SyncOutlined(){return ue},get SendOutlined(){return pe},get PlusOutlined(){return de},get ReloadOutlined(){return ce},get MobileOutlined(){return ie},get useWsStore(){return ne}};return Object.defineProperty(H,"__isScriptSetup",{enumerable:!1,value:!0}),H}},ve={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},fe={class:"page-title"},me={class:"page-sub"},ge={key:0,style:{"text-align":"center",padding:"30px"}},_e={key:2,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},be={key:3,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},xe={key:0,style:{"text-align":"center",padding:"30px"}},he={key:0,style:{"margin-top":"16px"}},ke={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},Se={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"}},we={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},Pe={style:{"margin-bottom":"12px",color:"var(--text-secondary)"}},Oe={key:0,style:{"margin-top":"12px"}},Le={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"}},Me={style:{"margin-bottom":"8px",color:"var(--text-secondary)"}},Ce={style:{"margin-bottom":"8px",color:"var(--text-secondary)"}},ze={key:0,style:{"margin-top":"12px"}},Te={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 Re(ae,c,s,e,z,T){const f=d("a-button"),L=d("a-space"),k=d("a-spin"),R=d("a-empty"),B=d("a-tag"),M=d("a-table"),m=d("a-card"),_=d("a-statistic"),C=d("a-col"),D=d("a-row"),S=d("a-input"),b=d("a-modal"),w=d("a-select-option"),x=d("a-select");return i(),y("div",null,[u("div",ve,[u("div",null,[u("h2",fe,l(e.t("p2p.title")),1),u("p",me,l(e.t("p2p.subtitle")),1)]),t(f,{type:"primary",ghost:"",loading:e.peersLoading,onClick:e.refreshAll},{icon:a(()=>[t(e.ReloadOutlined)]),default:a(()=>[g(" "+l(e.t("p2p.refresh")),1)]),_:1},8,["loading"])]),p(" P2P Devices Section "),t(m,{title:e.t("p2p.peers.cardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:a(()=>[t(L,null,{default:a(()=>[t(f,{size:"small",onClick:c[0]||(c[0]=o=>e.showPairModal=!0),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:a(()=>[t(e.PlusOutlined)]),default:a(()=>[g(" "+l(e.t("p2p.peers.pairButton")),1)]),_:1}),t(f,{size:"small",onClick:c[1]||(c[1]=o=>e.showSendModal=!0),disabled:e.peers.length===0,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:a(()=>[t(e.SendOutlined)]),default:a(()=>[g(" "+l(e.t("p2p.peers.sendButton")),1)]),_:1},8,["disabled"])]),_:1})]),default:a(()=>[e.peersLoading?(i(),y("div",ge,[t(k)])):e.peers.length===0?(i(),O(R,{key:1,description:e.t("p2p.peers.emptyText")},null,8,["description"])):(i(),O(M,{key:2,columns:e.peerColumns,"data-source":e.peers,pagination:!1,size:"small","row-key":"id"},{bodyCell:a(({column:o,record:v})=>[o.key==="status"?(i(),O(B,{key:0,color:v.connected?"green":"default"},{default:a(()=>[g(l(v.connected?e.t("p2p.peers.online"):e.t("p2p.peers.offline")),1)]),_:2},1032,["color"])):p("v-if",!0),o.key==="name"?(i(),O(L,{key:1},{default:a(()=>[t(e.MobileOutlined,{style:{color:"var(--text-muted)"}}),u("span",null,l(v.name||v.id),1)]),_:2},1024)):p("v-if",!0),o.key==="id"?(i(),y("span",_e,l(v.id.length>16?v.id.slice(0,16)+"...":v.id),1)):p("v-if",!0),o.key==="action"?(i(),O(f,{key:3,size:"small",type:"link",onClick:E=>e.openSendTo(v)},{default:a(()=>[t(e.SendOutlined),g(" "+l(e.t("p2p.peers.rowSend")),1)]),_:1},8,["onClick"])):p("v-if",!0)]),_:1},8,["columns","data-source"])),e.peersError?(i(),y("div",be,l(e.peersError),1)):p("v-if",!0)]),_:1},8,["title"]),p(" Sync Section "),t(m,{title:e.t("p2p.sync.cardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:a(()=>[t(B,{color:e.syncOnline?"green":"default"},{default:a(()=>[g(l(e.syncOnline?e.t("p2p.sync.synced"):e.t("p2p.sync.notSynced")),1)]),_:1},8,["color"])]),default:a(()=>[e.syncLoading?(i(),y("div",xe,[t(k)])):(i(),y(ee,{key:1},[t(D,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[t(C,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(_,{title:e.t("p2p.sync.statusLabel"),value:e.syncStatusText,"value-style":{color:e.syncOnline?"#52c41a":"#888",fontSize:"16px"}},{prefix:a(()=>[t(e.SyncOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(C,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(_,{title:e.t("p2p.sync.pendingLabel"),value:e.syncPending,"value-style":{color:e.syncPending>0?"#faad14":"#52c41a",fontSize:"16px"}},{prefix:a(()=>[t(e.SyncOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),t(C,{xs:24,sm:8},{default:a(()=>[t(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(_,{title:e.t("p2p.sync.lastSyncLabel"),value:e.lastSyncTime||e.t("p2p.sync.noLastSync"),"value-style":{color:"var(--text-secondary)",fontSize:"16px"}},{prefix:a(()=>[t(e.SyncOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),t(L,null,{default:a(()=>[t(f,{loading:e.pushLoading,onClick:e.syncPush,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:a(()=>[t(e.SyncOutlined)]),default:a(()=>[g(" "+l(e.t("p2p.sync.pushButton")),1)]),_:1},8,["loading"]),t(f,{loading:e.pullLoading,onClick:e.syncPull,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:a(()=>[t(e.SyncOutlined)]),default:a(()=>[g(" "+l(e.t("p2p.sync.pullButton")),1)]),_:1},8,["loading"])]),_:1}),e.syncOutput?(i(),y("div",he,[u("div",ke,l(e.t("p2p.sync.outputLabel")),1),u("pre",Se,l(e.syncOutput),1)])):p("v-if",!0)],64)),e.syncError?(i(),y("div",we,l(e.syncError),1)):p("v-if",!0)]),_:1},8,["title"]),p(" Pair Modal "),t(b,{open:e.showPairModal,"onUpdate:open":c[3]||(c[3]=o=>e.showPairModal=o),title:e.t("p2p.pair.title"),"confirm-loading":e.pairLoading,onOk:e.doPair,"ok-text":e.t("p2p.pair.ok"),"cancel-text":e.t("common.cancel")},{default:a(()=>[u("div",Pe,l(e.t("p2p.pair.intro")),1),t(S,{value:e.pairDeviceName,"onUpdate:value":c[2]||(c[2]=o=>e.pairDeviceName=o),placeholder:e.t("p2p.pair.placeholder"),onPressEnter:e.doPair},null,8,["value","placeholder"]),e.pairResult?(i(),y("div",Oe,[u("pre",Le,l(e.pairResult),1)])):p("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),p(" Send Modal "),t(b,{open:e.showSendModal,"onUpdate:open":c[6]||(c[6]=o=>e.showSendModal=o),title:e.t("p2p.send.title"),"confirm-loading":e.sendLoading,onOk:e.doSend,"ok-text":e.t("p2p.send.ok"),"cancel-text":e.t("common.cancel")},{default:a(()=>[u("div",Me,l(e.t("p2p.send.targetLabel")),1),t(x,{value:e.sendTarget,"onUpdate:value":c[4]||(c[4]=o=>e.sendTarget=o),style:{width:"100%","margin-bottom":"16px"},placeholder:e.t("p2p.send.targetPlaceholder")},{default:a(()=>[(i(!0),y(ee,null,re(e.peers,o=>(i(),O(w,{key:o.id,value:o.id},{default:a(()=>[g(l(o.name||o.id),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"]),u("div",Ce,l(e.t("p2p.send.messageLabel")),1),t(S,{value:e.sendMessage,"onUpdate:value":c[5]||(c[5]=o=>e.sendMessage=o),placeholder:e.t("p2p.send.messagePlaceholder"),onPressEnter:e.doSend},null,8,["value","placeholder"]),e.sendResult?(i(),y("div",ze,[u("pre",Te,l(e.sendResult),1)])):p("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const Fe=se(ye,[["render",Re],["__scopeId","data-v-f34183d8"],["__file","/tmp/cc-web-panel-lKopdB/repo/packages/web-panel/src/views/P2P.vue"]]);export{Fe as default};
@@ -0,0 +1 @@
1
+ [data-v-f34183d8] .ant-table{background:transparent}[data-v-f34183d8] .ant-select-selector{background:var(--bg-card)!important;border-color:var(--border-color)!important}
@@ -0,0 +1 @@
1
+ .pdh-sidebar[data-v-6b62a22e]{background:#fff;border-radius:8px;padding:12px 8px;border:1px solid #f0f0f0}.sidebar-title[data-v-6b62a22e]{font-size:12px;color:#999;padding:4px 8px 8px;font-weight:600;letter-spacing:.5px}.cat-item[data-v-6b62a22e]{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:6px;cursor:pointer;transition:background .15s;margin-bottom:2px}.cat-item[data-v-6b62a22e]:hover{background:#f5f5f5}.cat-item.active[data-v-6b62a22e]{background:#1677ff;color:#fff}.cat-item.dim[data-v-6b62a22e]{opacity:.45}.cat-item .icon[data-v-6b62a22e]{font-size:16px}.cat-item .label[data-v-6b62a22e]{flex:1;font-size:14px}.pdh-filter-bar[data-v-d7cce6e9]{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#fff;border-radius:8px;border:1px solid #f0f0f0;flex-wrap:wrap}.hint[data-v-d7cce6e9]{font-size:12px;color:#999;display:flex;align-items:center;gap:4px}.pdh-browser-page[data-v-0f7c02cd]{padding:16px;height:100%;background:#f5f5f5;overflow-y:auto}.page-header[data-v-0f7c02cd]{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px}.page-title[data-v-0f7c02cd]{margin:0 0 4px;font-size:18px}.page-sub[data-v-0f7c02cd]{margin:0;color:#999;font-size:13px}.browser-layout[data-v-0f7c02cd]{align-items:flex-start}.main-pane[data-v-0f7c02cd]{display:flex;flex-direction:column;gap:12px}.results-summary[data-v-0f7c02cd]{font-size:13px;color:#666;padding:4px 4px 8px}.results-summary .loaded-of[data-v-0f7c02cd]{margin-left:8px;color:#999}.load-more[data-v-0f7c02cd]{margin-top:12px}
@@ -0,0 +1,7 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ChatBubbleRenderer-Dlw_6n3M.js","./vendor-BvqAck49.js","./index-GzuCTHVZ.js","./icons-DP3uiYxy.js","./index-Cq93VfoF.css","./ChatBubbleRenderer-gy5SDGw2.css","./OrderTableRenderer-Bg0bkfjR.js","./OrderTableRenderer-CfrDjSHT.css","./TimelineRenderer-BLUDHbBL.js","./TimelineRenderer-BlTAtkOc.css","./EmailListRenderer-CarBq8Fk.js","./EmailListRenderer-DTPZPx_S.css","./GenericCardRenderer-DTVqC_CX.js","./GenericCardRenderer-o85VDYQS.css"])))=>i.map(i=>d[i]);
2
+ import{E as ue,r as R,b as w,I as y,P as u,J as O,U as v,c,S as C,V as E,_ as M,F as V,Z as se,a0 as le,R as x,K as m,Q as b,W as L,o as J}from"./vendor-BvqAck49.js";import{u as U}from"./usePersonalDataHub-BH0RXmVF.js";import{_ as D,e as F,d as B}from"./index-GzuCTHVZ.js";import{a9 as P,af as K,M as z,aH as Q,u as G,aG as H,ap as W,ab as Y,e as de,d as fe,k as pe,ah as me,az as _e,R as ge}from"./icons-DP3uiYxy.js";const I=Object.freeze({q:"",category:null,adapter:null,subtype:null,since:null,until:null}),q=50,Z=300,X=ue("pdhBrowser",()=>{const r=R({...I}),t=R([]),n=R(null),e=R(!1),o=R(!1),l=R(null),a=R(null),s=R(!1),i=R({byCategory:{},byAdapter:{},bySubtype:{},total:0});let d=0,_=null;const j=w(()=>t.value.length>0),A=w(()=>n.value!=null);function h(S={}){const p={},f=r.value;return f.q&&f.q.trim()&&(p.q=f.q.trim()),f.category&&(p.category=f.category),f.adapter&&(p.adapter=f.adapter),f.subtype&&(p.subtype=f.subtype),Number.isFinite(f.since)&&(p.since=f.since),Number.isFinite(f.until)&&(p.until=f.until),{...p,...S}}async function g(){const S=++d;e.value=!0,l.value=null;const p=U();try{const[f,T]=await Promise.all([p.searchEvents(h({limit:q})),p.facetCounts({...r.value.q&&r.value.q.trim()?{q:r.value.q.trim()}:{},...Number.isFinite(r.value.since)?{since:r.value.since}:{},...Number.isFinite(r.value.until)?{until:r.value.until}:{}})]);if(S!==d)return;t.value=f.rows||[],n.value=f.nextCursor||null,a.value=f.mode||"like",s.value=!!f.shortQuery,i.value={byCategory:T.byCategory||{},byAdapter:T.byAdapter||{},bySubtype:T.bySubtype||{},total:T.total||0}}catch(f){if(S!==d)return;l.value=f&&f.message?f.message:String(f),t.value=[],n.value=null}finally{S===d&&(e.value=!1)}}async function k(){if(!n.value||o.value)return;o.value=!0,l.value=null;const S=U();try{const p=await S.searchEvents(h({cursor:n.value,limit:q}));t.value=t.value.concat(p.rows||[]),n.value=p.nextCursor||null,a.value=p.mode||a.value}catch(p){l.value=p&&p.message?p.message:String(p)}finally{o.value=!1}}function ae(S,p){if(!(S in I))throw new Error(`pdhBrowser.setFilter: unknown key "${S}"`);r.value={...r.value,[S]:p},_&&clearTimeout(_),_=setTimeout(()=>{_=null,g()},Z)}function ie(S){return r.value={...I,...S},_&&(clearTimeout(_),_=null),g()}function ce(){r.value={...I},t.value=[],n.value=null,l.value=null,i.value={byCategory:{},byAdapter:{},bySubtype:{},total:0}}return{filters:r,results:t,cursor:n,isLoading:e,isAppending:o,error:l,mode:a,shortQuery:s,facets:i,hasResults:j,canLoadMore:A,search:g,loadMore:k,setFilter:ae,setFilters:ie,reset:ce,PAGE_SIZE:q,SEARCH_DEBOUNCE_MS:Z}}),ye=Object.freeze(["chat","social","email","shopping","travel","system","ai-chat","other"]),ve=Object.freeze({chat:"社交聊天",social:"内容平台",email:"邮件",shopping:"支付订单",travel:"出行",system:"系统数据","ai-chat":"AI 对话",other:"其他"});function N(r){return ve[r]||r||"未知"}const be=Object.freeze([["wechat","chat"],["messaging-","chat"],["social-","social"],["email-","email"],["shopping-","shopping"],["alipay-","shopping"],["travel-","travel"],["system-data","system"],["browser-","system"],["vscode","system"],["win-recent","system"],["git-activity","system"],["shell-history","system"],["local-files","system"],["ai-chat-","ai-chat"]]);function $(r){if(typeof r!="string"||r.length===0)return"other";for(const[t,n]of be)if(t.endsWith("-")||t==="system-data"){if(r.startsWith(t))return n}else if(r===t)return n;return"other"}const he={__name:"CategorySidebar",props:{selected:{type:String,default:null},facets:{type:Object,default:()=>({byCategory:{},total:0})}},emits:["select"],setup(r,{expose:t}){t();const n=r,e=w(()=>n.facets.total||0),o={chat:Y,social:W,email:H,shopping:G,travel:Q,system:z,"ai-chat":K,other:P};function l(i){return o[i]||P}function a(i){return i?{backgroundColor:"#fff",color:"#1677ff"}:{backgroundColor:"#f0f0f0",color:"#666"}}const s={props:n,total:e,ICONS:o,iconFor:l,badgeStyle:a,computed:w,get AppstoreOutlined(){return P},get MessageOutlined(){return Y},get PlayCircleOutlined(){return W},get MailOutlined(){return H},get ShoppingOutlined(){return G},get CarOutlined(){return Q},get MobileOutlined(){return z},get RobotOutlined(){return K},get CATEGORIES(){return ye},get categoryLabel(){return N}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},Se={class:"pdh-sidebar"},Oe=["onClick"],we={class:"label"};function Ce(r,t,n,e,o,l){const a=y("a-badge");return u(),O("div",Se,[t[2]||(t[2]=v("div",{class:"sidebar-title"},"数据类型",-1)),v("div",{class:M(["cat-item",{active:n.selected===null}]),onClick:t[0]||(t[0]=s=>r.$emit("select",null))},[c(e.AppstoreOutlined,{class:"icon"}),t[1]||(t[1]=v("span",{class:"label"},"全部",-1)),e.total>0?(u(),C(a,{key:0,count:e.total,"number-style":e.badgeStyle(n.selected===null),"overflow-count":9999},null,8,["count","number-style"])):E("v-if",!0)],2),(u(!0),O(V,null,se(e.CATEGORIES,s=>(u(),O("div",{key:s,class:M(["cat-item",{active:n.selected===s,dim:!n.facets.byCategory[s]}]),onClick:i=>r.$emit("select",s)},[(u(),C(le(e.iconFor(s)),{class:"icon"})),v("span",we,x(e.categoryLabel(s)),1),n.facets.byCategory[s]?(u(),C(a,{key:0,count:n.facets.byCategory[s],"number-style":e.badgeStyle(n.selected===s),"overflow-count":9999},null,8,["count","number-style"])):E("v-if",!0)],10,Oe))),128))])}const ke=D(he,[["render",Ce],["__scopeId","data-v-6b62a22e"],["__file","/tmp/cc-web-panel-lKopdB/repo/packages/web-panel/src/components/pdh/CategorySidebar.vue"]]),Ee={__name:"SearchFilterBar",props:{filters:{type:Object,required:!0},facets:{type:Object,default:()=>({byAdapter:{}})},isLoading:{type:Boolean,default:!1},mode:{type:String,default:null},shortQuery:{type:Boolean,default:!1}},emits:["set-filter","reset"],setup(r,{expose:t,emit:n}){t();const e=r,o=n,l=w(()=>e.filters.category?`在「${e.filters.category}」类目内搜索…`:"搜索关键词(如:支付宝、罗技、Kotlin)…"),a=w(()=>Object.entries(e.facets.byAdapter||{}).sort((g,k)=>k[1]-g[1]).map(([g,k])=>({value:g,label:`${g} (${k})`}))),s=w(()=>!e.filters.since&&!e.filters.until?null:[e.filters.since?new Date(e.filters.since):null,e.filters.until?new Date(e.filters.until):null]),i=w(()=>!!(e.filters.q||e.filters.adapter||e.filters.subtype||e.filters.since||e.filters.until));function d(h){o("set-filter","q",h||"")}function _(h){o("set-filter","q",h||"")}function j(h){if(!h||h.length===0){o("set-filter","since",null),o("set-filter","until",null);return}const[g,k]=h;o("set-filter","since",g?+g:null),o("set-filter","until",k?+k:null)}const A={props:e,emit:o,placeholderText:l,adapterOptions:a,dateRangeValue:s,hasActiveFilters:i,onQInput:d,onSearch:_,onDateChange:j,computed:w,get SearchOutlined(){return pe},get CloseCircleOutlined(){return fe},get InfoCircleOutlined(){return de}};return Object.defineProperty(A,"__isScriptSetup",{enumerable:!1,value:!0}),A}},Re={class:"pdh-filter-bar"},xe={key:1,class:"hint"},je={key:2,class:"hint"};function Ae(r,t,n,e,o,l){const a=y("a-input-search"),s=y("a-select"),i=y("a-range-picker"),d=y("a-button");return u(),O("div",Re,[c(a,{value:n.filters.q,placeholder:e.placeholderText,"enter-button":"搜索","allow-clear":"",loading:n.isLoading,style:{flex:"1","max-width":"480px"},"onUpdate:value":e.onQInput,onSearch:e.onSearch},{prefix:m(()=>[c(e.SearchOutlined)]),_:1},8,["value","placeholder","loading"]),c(s,{value:n.filters.adapter,placeholder:"所有 adapter","allow-clear":"",options:e.adapterOptions,style:{width:"200px"},"onUpdate:value":t[0]||(t[0]=_=>r.$emit("set-filter","adapter",_||null))},null,8,["value","options"]),c(i,{value:e.dateRangeValue,placeholder:["开始日期","结束日期"],style:{width:"280px"},"onUpdate:value":e.onDateChange},null,8,["value"]),e.hasActiveFilters?(u(),C(d,{key:0,type:"link",danger:"",onClick:t[1]||(t[1]=_=>r.$emit("reset"))},{icon:m(()=>[c(e.CloseCircleOutlined)]),default:m(()=>[t[2]||(t[2]=b(" 清空筛选 ",-1))]),_:1})):E("v-if",!0),n.shortQuery?(u(),O("span",xe,[c(e.InfoCircleOutlined),t[3]||(t[3]=b(" 关键词需至少 3 字 (FTS5 trigram 限制) ",-1))])):n.mode==="like"?(u(),O("span",je,[c(e.InfoCircleOutlined),t[4]||(t[4]=b(" 当前为 LIKE 兜底模式 ",-1))])):E("v-if",!0)])}const Le=D(Ee,[["render",Ae],["__scopeId","data-v-d7cce6e9"],["__file","/tmp/cc-web-panel-lKopdB/repo/packages/web-panel/src/components/pdh/SearchFilterBar.vue"]]),Fe={__name:"RendererDispatcher",props:{event:{type:Object,required:!0}},setup(r,{expose:t}){t();const n=L(()=>F(()=>import("./ChatBubbleRenderer-Dlw_6n3M.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),e=L(()=>F(()=>import("./OrderTableRenderer-Bg0bkfjR.js"),__vite__mapDeps([6,1,2,3,4,7]),import.meta.url)),o=L(()=>F(()=>import("./TimelineRenderer-BLUDHbBL.js"),__vite__mapDeps([8,1,2,3,4,9]),import.meta.url)),l=L(()=>F(()=>import("./EmailListRenderer-CarBq8Fk.js"),__vite__mapDeps([10,1,2,3,4,11]),import.meta.url)),a=L(()=>F(()=>import("./GenericCardRenderer-DTVqC_CX.js"),__vite__mapDeps([12,1,2,3,4,13]),import.meta.url));function s(d){const _=d&&d.source&&d.source.adapter;switch($(_)){case"chat":case"ai-chat":return n;case"shopping":return e;case"travel":return o;case"email":return l;default:return a}}const i={ChatBubbleRenderer:n,OrderTableRenderer:e,TimelineRenderer:o,EmailListRenderer:l,GenericCardRenderer:a,rendererFor:s,defineAsyncComponent:L,get getCategory(){return $}};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}};function De(r,t,n,e,o,l){return u(),C(le(e.rendererFor(n.event)),{event:n.event},null,8,["event"])}const Te=D(Fe,[["render",De],["__file","/tmp/cc-web-panel-lKopdB/repo/packages/web-panel/src/components/pdh/renderers/RendererDispatcher.vue"]]);function ee(r){return JSON.stringify(r,null,2)}function te(r){return r.map(t=>JSON.stringify(t)).join(`
3
+ `)+`
4
+ `}function ne(r){const n=["id","subtype","occurredAt","occurredAtIso","actor","place","adapter","summary","contentJson","extraJson"].join(","),e=r.map(o=>{const l=Number.isFinite(o.occurredAt)?o.occurredAt:null,a=l?new Date(l).toISOString():"",s=o.source&&o.source.adapter||"",i=o.content&&(o.content.text||o.content.title||o.content.subject)||"";return[o.id||"",o.subtype||"",l!=null?String(l):"",a,o.actor||"",o.place||"",s,i,o.content?JSON.stringify(o.content):"",o.extra?JSON.stringify(o.extra):""].map(Ie).join(",")});return[n,...e].join(`
5
+ `)+`
6
+ `}function Ie(r){const t=String(r??"");return t.includes(",")||t.includes('"')||t.includes(`
7
+ `)||t.includes("\r")?'"'+t.replace(/"/g,'""')+'"':t}function re(r,t,n="application/octet-stream"){if(typeof window>"u"||typeof document>"u")return t;const e=new Blob([r],{type:n}),o=URL.createObjectURL(e),l=document.createElement("a");return l.href=o,l.download=t,document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout(()=>URL.revokeObjectURL(o),1e3),t}function oe(r,t=null){const n=new Date,e=n.getFullYear(),o=String(n.getMonth()+1).padStart(2,"0"),l=String(n.getDate()).padStart(2,"0"),a=r==="ndjson"?"ndjson":r,s=t?`-${t}`:"";return`pdh-events-${e}-${o}-${l}${s}.${a}`}const Be={__name:"ExportDropdown",props:{events:{type:Array,required:!0},category:{type:String,default:null}},setup(r,{expose:t}){t();const n=r,e=w(()=>n.events.length>0),o={json:"application/json;charset=utf-8",ndjson:"application/x-ndjson;charset=utf-8",csv:"text/csv;charset=utf-8"};function l(i){switch(i){case"json":return ee(n.events);case"ndjson":return te(n.events);case"csv":return ne(n.events);default:throw new Error(`unknown format: ${i}`)}}function a({key:i}){try{const d=l(i),_=oe(i,n.category);re(d,_,o[i]),B.success(`已导出 ${n.events.length} 条到 ${_}`)}catch(d){B.error(`导出失败: ${d.message||d}`)}}const s={props:n,hasResults:e,MIME:o,serialize:l,onClick:a,computed:w,get DownloadOutlined(){return _e},get DownOutlined(){return me},get message(){return B},get eventsToJson(){return ee},get eventsToNdjson(){return te},get eventsToCsv(){return ne},get downloadAs(){return re},get suggestFilename(){return oe}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}};function Pe(r,t,n,e,o,l){const a=y("a-button"),s=y("a-menu-item"),i=y("a-menu"),d=y("a-dropdown");return u(),C(d,{disabled:!e.hasResults},{overlay:m(()=>[c(i,{onClick:e.onClick},{default:m(()=>[c(s,{key:"json"},{default:m(()=>[...t[0]||(t[0]=[b("JSON (.json)",-1)])]),_:1}),c(s,{key:"ndjson"},{default:m(()=>[...t[1]||(t[1]=[b("NDJSON (.ndjson)",-1)])]),_:1}),c(s,{key:"csv"},{default:m(()=>[...t[2]||(t[2]=[b("CSV (.csv)",-1)])]),_:1})]),_:1})]),default:m(()=>[c(a,{disabled:!e.hasResults},{icon:m(()=>[c(e.DownloadOutlined)]),default:m(()=>[b(" 导出 ("+x(n.events.length)+") ",1),c(e.DownOutlined)]),_:1},8,["disabled"])]),_:1},8,["disabled"])}const qe=D(Be,[["render",Pe],["__file","/tmp/cc-web-panel-lKopdB/repo/packages/web-panel/src/components/pdh/ExportDropdown.vue"]]),Ve={__name:"PdhVaultBrowser",setup(r,{expose:t}){t();const n=X(),e=w(()=>n.filters.q?`没有匹配 "${n.filters.q}" 的事件 — 试试更短的关键词或换个类目`:n.filters.category?`「${N(n.filters.category)}」类目下还没有数据 — 去采集页同步对应 adapter`:"Vault 里还没有数据 — 去「个人数据中台」页面同步任意 adapter");function o(s){n.filters.category=s,n.search()}function l(s,i){n.setFilter(s,i)}J(()=>{!n.hasResults&&!n.isLoading&&n.search()});const a={store:n,emptyHint:e,onCategorySelect:o,onSetFilter:l,onMounted:J,computed:w,get ReloadOutlined(){return ge},get usePdhBrowserStore(){return X},get categoryLabel(){return N},CategorySidebar:ke,SearchFilterBar:Le,RendererDispatcher:Te,ExportDropdown:qe};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}},Ne={class:"pdh-browser-page"},Me={class:"page-header"},Je={class:"main-pane"},Ue={class:"results-summary"},Ke={key:0},ze={key:0},Qe={key:1},Ge={class:"loaded-of"},He={class:"results-list"},We={key:2,class:"load-more"};function Ye(r,t,n,e,o,l){const a=y("a-tag"),s=y("a-button"),i=y("a-space"),d=y("a-col"),_=y("a-spin"),j=y("a-alert"),A=y("a-empty"),h=y("a-row");return u(),O("div",Ne,[v("div",Me,[t[6]||(t[6]=v("div",null,[v("h2",{class:"page-title"},"数据浏览器"),v("p",{class:"page-sub"}," Vault 里所有已采集的数据,按类目浏览 / 全文检索 / 时间窗口筛选。 完全离线,不外传。 ")],-1)),c(i,null,{default:m(()=>[e.store.mode==="fts5"?(u(),C(a,{key:0,color:"green"},{default:m(()=>[...t[3]||(t[3]=[b("FTS5 trigram",-1)])]),_:1})):e.store.mode==="like"?(u(),C(a,{key:1,color:"orange"},{default:m(()=>[...t[4]||(t[4]=[b("LIKE 兜底",-1)])]),_:1})):E("v-if",!0),c(e.ExportDropdown,{events:e.store.results,category:e.store.filters.category},null,8,["events","category"]),c(s,{onClick:t[0]||(t[0]=g=>e.store.search()),loading:e.store.isLoading},{icon:m(()=>[c(e.ReloadOutlined)]),default:m(()=>[t[5]||(t[5]=b(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),c(h,{gutter:16,class:"browser-layout"},{default:m(()=>[c(d,{xs:24,sm:24,md:6,lg:5,xl:4},{default:m(()=>[c(e.CategorySidebar,{selected:e.store.filters.category,facets:e.store.facets,onSelect:e.onCategorySelect},null,8,["selected","facets"])]),_:1}),c(d,{xs:24,sm:24,md:18,lg:19,xl:20},{default:m(()=>[v("div",Je,[c(e.SearchFilterBar,{filters:e.store.filters,facets:e.store.facets,"is-loading":e.store.isLoading,mode:e.store.mode,"short-query":e.store.shortQuery,onSetFilter:e.onSetFilter,onReset:t[1]||(t[1]=g=>{e.store.reset(),e.store.search()})},null,8,["filters","facets","is-loading","mode","short-query"]),v("div",Ue,[e.store.isLoading&&e.store.results.length===0?(u(),O("span",Ke,[c(_,{size:"small"}),t[7]||(t[7]=b(" 载入中… ",-1))])):(u(),O(V,{key:1},[v("strong",null,x(e.store.facets.total),1),t[11]||(t[11]=b(" 条事件 ",-1)),e.store.filters.category?(u(),O("span",ze,[t[8]||(t[8]=b(" / 当前类目 ",-1)),v("strong",null,x(e.categoryLabel(e.store.filters.category)),1),v("strong",null,x(e.store.facets.byCategory[e.store.filters.category]||0),1)])):E("v-if",!0),e.store.filters.q?(u(),O("span",Qe,[t[9]||(t[9]=b(' / 关键词 "',-1)),v("em",null,x(e.store.filters.q),1),t[10]||(t[10]=b('"',-1))])):E("v-if",!0),v("span",Ge," / 已显示 "+x(e.store.results.length),1)],64))]),e.store.error?(u(),C(j,{key:0,type:"error","show-icon":"",message:e.store.error,closable:"",style:{margin:"12px 0"}},null,8,["message"])):E("v-if",!0),!e.store.isLoading&&e.store.results.length===0&&!e.store.error?(u(),C(A,{key:1,description:e.emptyHint,style:{"margin-top":"40px"}},null,8,["description"])):E("v-if",!0),v("div",He,[(u(!0),O(V,null,se(e.store.results,(g,k)=>(u(),C(e.RendererDispatcher,{key:`r-${k}-${g.id}`,event:g},null,8,["event"]))),128))]),e.store.canLoadMore?(u(),O("div",We,[c(s,{loading:e.store.isAppending,onClick:t[2]||(t[2]=g=>e.store.loadMore()),block:""},{default:m(()=>[...t[12]||(t[12]=[b(" 加载下一页 (50 条) ",-1)])]),_:1},8,["loading"])])):E("v-if",!0)])]),_:1})]),_:1})])}const tt=D(Ve,[["render",Ye],["__scopeId","data-v-0f7c02cd"],["__file","/tmp/cc-web-panel-lKopdB/repo/packages/web-panel/src/views/PdhVaultBrowser.vue"]]);export{tt as default};
@@ -0,0 +1,4 @@
1
+ import{I as m,J as f,U as V,c as o,K as s,o as ee,r as y,P as r,Q as h,V as p,S as I,R as _,F as K,Z as G}from"./vendor-BvqAck49.js";import{_ as ae,u as te,d as Q}from"./index-GzuCTHVZ.js";import{R as se,A as oe,f as le,Y as ie}from"./icons-DP3uiYxy.js";const re={__name:"Permissions",setup(ne,{expose:c}){c();const R=te(),e=y("roles"),z=y(!1);async function Y(){z.value=!0;try{e.value==="roles"?await w():e.value==="audit"&&await d()}finally{z.value=!1}}function S(t){t==="roles"&&b.value.length===0&&w(),t==="audit"&&P.value.length===0&&d()}const O=y(!1),b=y([]),U=[{title:"角色名",key:"name",dataIndex:"name",width:"160px"},{title:"描述",key:"description",dataIndex:"description",width:"240px"},{title:"权限",key:"permissions",dataIndex:"permissions"},{title:"用户数",key:"userCount",dataIndex:"userCount",width:"100px"}];async function w(){O.value=!0;try{const{output:t}=await R.execute("auth roles --json",15e3);b.value=D(t,A)}catch(t){Q.error("加载角色列表失败: "+t.message)}finally{O.value=!1}}function A(t){const a=[],i=t.split(`
2
+ `);for(const v of i){const l=v.trim();if(!l||l.startsWith("─")||l.match(/^Role/i))continue;const u=l.split(/\s*[|│]\s*/);u.length>=2?a.push({key:a.length,name:u[0]||"-",description:u[1]||"",permissions:u[2]?u[2].split(/[,;\s]+/).filter(Boolean):[],userCount:u[3]&&parseInt(u[3],10)||0}):l.length>2&&a.push({key:a.length,name:l.slice(0,60),description:"",permissions:[],userCount:0})}return a}const T=y(""),C=y(""),j=y(!1),L=y(null),M=["note:read","note:write","admin:*","skill:execute"];async function B(){if(!(!T.value.trim()||!C.value.trim())){j.value=!0,L.value=null;try{const t=`auth check ${T.value.trim()} "${C.value.trim()}"`,{output:a}=await R.execute(t,15e3),i=a.toLowerCase(),v=i.includes("allow")||i.includes("granted")||i.includes("true")||i.includes("yes"),l=i.includes("denied")||i.includes("reject")||i.includes("false")||i.includes("no permission");L.value={allowed:v&&!l,detail:a.trim()||(v?"用户拥有该权限":"用户没有该权限")}}catch(t){L.value={allowed:!1,detail:"检查失败: "+t.message}}finally{j.value=!1}}}const N=y(!1),P=y([]),E=y([]),F=[{title:"时间",key:"timestamp",dataIndex:"timestamp",width:"180px"},{title:"事件",key:"event",dataIndex:"event",width:"200px"},{title:"用户",key:"user",dataIndex:"user",width:"120px"},{title:"级别",key:"level",dataIndex:"level",width:"80px"},{title:"详情",key:"detail",dataIndex:"detail",ellipsis:!0}];function n(t){return{info:"blue",warn:"orange",warning:"orange",error:"red",critical:"red"}[(t||"").toLowerCase()]||"default"}async function d(){N.value=!0;try{const[t,a]=await Promise.all([R.execute("audit log --json",15e3),R.execute("audit stats --json",15e3)]);P.value=D(t.output,W),E.value=Z(a.output)}catch(t){Q.error("加载审计日志失败: "+t.message)}finally{N.value=!1}}function W(t){const a=[],i=t.split(`
3
+ `);for(const v of i){const l=v.trim();if(!l||l.startsWith("─")||l.startsWith("Audit")||l.startsWith("Recent"))continue;const u=l.split(/\s*[|│]\s*/);if(u.length>=3){a.push({key:a.length,timestamp:u[0]||"-",event:u[1]||"-",user:u[2]||"-",level:u[3]||"info",detail:u.slice(4).join(" ")||""});continue}const x=l.match(/^(\d{4}-\d{2}-\d{2}[\sT]\d{2}:\d{2}(?::\d{2})?)\s+(.+)/);if(x){const k=x[2],g=k.match(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i);a.push({key:a.length,timestamp:x[1],event:k.replace(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i,"").trim().slice(0,80),user:"-",level:g?g[1].toLowerCase():"info",detail:""})}else l.length>3&&!l.match(/^\d+ event/i)&&a.push({key:a.length,timestamp:"-",event:l.slice(0,80),user:"-",level:"info",detail:""})}return a}function Z(t){const a=J(t);if(a&&typeof a=="object"&&!Array.isArray(a)){const x=["#1677ff","#52c41a","#faad14","#ff4d4f"];return Object.entries(a).slice(0,4).map(([k,g],q)=>({label:k,value:typeof g=="number"?g:String(g),color:x[q%x.length]}))}const i=[],v=t.split(`
4
+ `),l=["#1677ff","#52c41a","#faad14","#ff4d4f"];let u=0;for(const x of v){const k=x.trim();if(!k||k.startsWith("─")||k.startsWith("Audit"))continue;const g=k.match(/^(.+?)\s*[:=]\s*(.+)$/);if(g){const q=g[1].trim(),X=g[2].trim(),$=X.match(/^(\d+)/);i.push({label:q,value:$?parseInt($[1],10):X,color:l[u%l.length]}),u++}}return i.length===0&&i.push({label:"总事件数",value:P.value.length,color:"#1677ff"},{label:"状态",value:"就绪",color:"#52c41a"}),i}function J(t){try{const a=t.indexOf("[")!==-1?t.indexOf("["):t.indexOf("{");if(a===-1)return null;const i=t.lastIndexOf("]")!==-1?t.lastIndexOf("]")+1:t.lastIndexOf("}")+1;return JSON.parse(t.slice(a,i))}catch{return null}}function D(t,a){const i=J(t);return Array.isArray(i)?i.map((v,l)=>({key:l,...v})):a(t)}ee(()=>{w()});const H={ws:R,activeTab:e,refreshing:z,refreshCurrentTab:Y,onTabChange:S,rolesLoading:O,rolesList:b,rolesColumns:U,loadRoles:w,parseRolesText:A,checkUserId:T,checkPermission:C,checking:j,checkResult:L,quickPermissions:M,doCheck:B,auditLoading:N,auditEvents:P,auditStats:E,auditColumns:F,levelColor:n,loadAudit:d,parseAuditLogText:W,parseAuditStatsOutput:Z,tryParseJson:J,parseJsonOutput:D,ref:y,onMounted:ee,get LockOutlined(){return ie},get CheckCircleOutlined(){return le},get AuditOutlined(){return oe},get ReloadOutlined(){return se},get message(){return Q},get useWsStore(){return te}};return Object.defineProperty(H,"__isScriptSetup",{enumerable:!1,value:!0}),H}},ce={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},de={key:0,style:{"text-align":"center",padding:"60px"}},ue={key:0,style:{color:"#e0e0e0","font-weight":"500"}},me={key:1,style:{color:"var(--text-secondary)"}},fe={key:0,style:{"margin-top":"16px"}},pe={key:0,style:{"text-align":"center",padding:"60px"}},ye={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},_e={key:1,style:{color:"#e0e0e0"}},ve={key:2,style:{color:"var(--text-secondary)"}},ge={key:4,style:{color:"var(--text-muted)","font-size":"12px"}};function he(ne,c,R,e,z,Y){const S=m("a-button"),O=m("a-spin"),b=m("a-tag"),U=m("a-empty"),w=m("a-table"),A=m("a-tab-pane"),T=m("a-input"),C=m("a-form-item"),j=m("a-space"),L=m("a-form"),M=m("a-alert"),B=m("a-card"),N=m("a-statistic"),P=m("a-col"),E=m("a-row"),F=m("a-tabs");return r(),f("div",null,[V("div",ce,[c[4]||(c[4]=V("div",null,[V("h2",{class:"page-title"},"权限管理"),V("p",{class:"page-sub"},"角色 / 权限检查 / 审计")],-1)),o(S,{type:"primary",ghost:"",loading:e.refreshing,onClick:e.refreshCurrentTab},{icon:s(()=>[o(e.ReloadOutlined)]),default:s(()=>[c[3]||(c[3]=h(" 刷新 ",-1))]),_:1},8,["loading"])]),o(F,{activeKey:e.activeTab,"onUpdate:activeKey":c[2]||(c[2]=n=>e.activeTab=n),type:"card",onChange:e.onTabChange},{default:s(()=>[p(" Tab 1: Roles "),o(A,{key:"roles"},{tab:s(()=>[o(e.LockOutlined),c[5]||(c[5]=h(" 角色列表 ",-1))]),default:s(()=>[e.rolesLoading?(r(),f("div",de,[o(O,{size:"large"})])):(r(),I(w,{key:1,columns:e.rolesColumns,"data-source":e.rolesList,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"perm-row"},{bodyCell:s(({column:n,record:d})=>[n.key==="name"?(r(),f("span",ue,_(d.name),1)):p("v-if",!0),n.key==="description"?(r(),f("span",me,_(d.description),1)):p("v-if",!0),n.key==="permissions"?(r(),f(K,{key:2},[(r(!0),f(K,null,G((d.permissions||[]).slice(0,5),W=>(r(),I(b,{key:W,color:"blue",style:{"margin-bottom":"2px"}},{default:s(()=>[h(_(W),1)]),_:2},1024))),128)),(d.permissions||[]).length>5?(r(),I(b,{key:0,color:"default"},{default:s(()=>[h(" +"+_(d.permissions.length-5),1)]),_:2},1024)):p("v-if",!0)],64)):p("v-if",!0),n.key==="userCount"?(r(),I(b,{key:3,color:d.userCount>0?"green":"default"},{default:s(()=>[h(_(d.userCount??0),1)]),_:2},1032,["color"])):p("v-if",!0)]),emptyText:s(()=>[o(U,{description:"暂无角色数据"})]),_:1},8,["data-source","pagination"]))]),_:1}),p(" Tab 2: Permission Check "),o(A,{key:"check"},{tab:s(()=>[o(e.CheckCircleOutlined),c[6]||(c[6]=h(" 权限检查 ",-1))]),default:s(()=>[o(B,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","max-width":"640px"}},{default:s(()=>[o(L,{"label-col":{span:5},"wrapper-col":{span:19}},{default:s(()=>[o(C,{label:"用户 ID",required:""},{default:s(()=>[o(T,{value:e.checkUserId,"onUpdate:value":c[0]||(c[0]=n=>e.checkUserId=n),placeholder:"输入用户 ID"},null,8,["value"])]),_:1}),o(C,{label:"权限",required:""},{default:s(()=>[o(T,{value:e.checkPermission,"onUpdate:value":c[1]||(c[1]=n=>e.checkPermission=n),placeholder:"note:read"},null,8,["value"])]),_:1}),o(C,{"wrapper-col":{offset:5,span:19}},{default:s(()=>[o(j,{wrap:""},{default:s(()=>[o(S,{type:"primary",loading:e.checking,disabled:!e.checkUserId.trim()||!e.checkPermission.trim(),onClick:e.doCheck},{icon:s(()=>[o(e.CheckCircleOutlined)]),default:s(()=>[c[7]||(c[7]=h(" 检查权限 ",-1))]),_:1},8,["loading","disabled"]),(r(),f(K,null,G(e.quickPermissions,n=>o(S,{key:n,size:"small",onClick:d=>e.checkPermission=n},{default:s(()=>[h(_(n),1)]),_:2},1032,["onClick"])),64))]),_:1})]),_:1})]),_:1}),e.checkResult!==null?(r(),f("div",fe,[o(M,{message:e.checkResult.allowed?"权限允许":"权限拒绝",description:e.checkResult.detail,type:e.checkResult.allowed?"success":"error","show-icon":""},null,8,["message","description","type"])])):p("v-if",!0)]),_:1})]),_:1}),p(" Tab 3: Audit Logs "),o(A,{key:"audit"},{tab:s(()=>[o(e.AuditOutlined),c[8]||(c[8]=h(" 审计日志 ",-1))]),default:s(()=>[o(E,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:s(()=>[(r(!0),f(K,null,G(e.auditStats,n=>(r(),I(P,{xs:12,sm:6,key:n.label},{default:s(()=>[o(B,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:s(()=>[o(N,{title:n.label,value:n.value,"value-style":{color:n.color,fontSize:"20px"}},null,8,["title","value","value-style"])]),_:2},1024)]),_:2},1024))),128))]),_:1}),e.auditLoading?(r(),f("div",pe,[o(O,{size:"large"})])):(r(),I(w,{key:1,columns:e.auditColumns,"data-source":e.auditEvents,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"perm-row"},{bodyCell:s(({column:n,record:d})=>[n.key==="timestamp"?(r(),f("span",ye,_(d.timestamp),1)):p("v-if",!0),n.key==="event"?(r(),f("span",_e,_(d.event),1)):p("v-if",!0),n.key==="user"?(r(),f("span",ve,_(d.user),1)):p("v-if",!0),n.key==="level"?(r(),I(b,{key:3,color:e.levelColor(d.level)},{default:s(()=>[h(_(d.level),1)]),_:2},1032,["color"])):p("v-if",!0),n.key==="detail"?(r(),f("span",ge,_(d.detail),1)):p("v-if",!0)]),emptyText:s(()=>[o(U,{description:"暂无审计日志"})]),_:1},8,["data-source","pagination"]))]),_:1})]),_:1},8,["activeKey"])])}const we=ae(re,[["render",he],["__scopeId","data-v-73bcb987"],["__file","/tmp/cc-web-panel-lKopdB/repo/packages/web-panel/src/views/Permissions.vue"]]);export{we as default};
@@ -0,0 +1 @@
1
+ [data-v-73bcb987] .perm-row:hover td{background:var(--bg-card-hover)!important}[data-v-73bcb987] .ant-tabs-tab{color:var(--text-secondary)!important}[data-v-73bcb987] .ant-tabs-tab-active .ant-tabs-tab-btn{color:#1677ff!important}[data-v-73bcb987] .ant-card-head{border-color:var(--border-color)!important;color:var(--text-primary)!important}
@@ -0,0 +1 @@
1
+ .hint[data-v-4ed94be5]{font-size:12px;color:var(--text-color-secondary, #888)}.vendor-card[data-v-4ed94be5]{cursor:pointer;border:1px solid transparent;transition:border-color .15s}.vendor-card.selected[data-v-4ed94be5]{border-color:#1677ff}.vendor-head[data-v-4ed94be5]{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px}.vendor-actions[data-v-4ed94be5]{margin-top:6px;display:flex;justify-content:flex-end}.kv[data-v-4ed94be5]{font-size:12px}.howto[data-v-4ed94be5]{margin:0;padding-left:20px;font-size:13px}.howto li[data-v-4ed94be5]{margin-bottom:4px}kbd[data-v-4ed94be5]{background:#f0f0f0;border:1px solid #d9d9d9;border-radius:3px;padding:0 4px;font-family:monospace;font-size:12px}.hint[data-v-2f50c8a7],.kv[data-v-2f50c8a7]{font-size:12px;color:var(--text-color-secondary, #888)}.probe-result[data-v-2f50c8a7]{margin-top:8px}code[data-v-2f50c8a7]{background:#f0f0f0;padding:1px 4px;border-radius:3px;font-family:monospace;font-size:12px}.pdh-page[data-v-92d13942]{padding:16px;max-width:1400px;margin:0 auto}.pdh-header[data-v-92d13942]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;gap:16px;flex-wrap:wrap}.page-title[data-v-92d13942]{margin:0 0 4px;font-size:22px;font-weight:600}.page-sub[data-v-92d13942]{margin:0;color:var(--text-color-secondary, #888);font-size:13px}.kv[data-v-92d13942]{font-size:13px;color:var(--text-color, #333);line-height:1.6}.kv.hint[data-v-92d13942]{color:#faad14;font-size:12px;margin-top:4px}.answer[data-v-92d13942]{white-space:pre-wrap;font-size:14px;line-height:1.7;background:var(--bg-elevated, #fafafa);padding:12px;border-radius:6px;border-left:3px solid #1677ff}.hint[data-v-92d13942]{color:var(--text-color-secondary, #888);font-size:12px}.json-pre[data-v-92d13942]{font-size:12px;background:var(--bg-elevated, #fafafa);padding:10px;border-radius:4px;max-height:280px;overflow:auto}.amount-in[data-v-92d13942]{color:#52c41a;font-weight:600}.amount-out[data-v-92d13942]{color:#ff4d4f;font-weight:600}
@@ -0,0 +1,9 @@
1
+ import{I as v,P as l,S as A,K as a,c as n,J as p,U as m,F as W,Z as ae,_ as it,R as s,Q as i,V as d,a2 as rt,w as _e,b as ee,a as $,r as C,a5 as qt,o as $e,a1 as Vt,a0 as Qt}from"./vendor-BvqAck49.js";import{u as de}from"./usePersonalDataHub-BH0RXmVF.js";import{_ as Ie,d as g}from"./index-GzuCTHVZ.js";import{aC as et,J as tt,aD as ot,aE as at,a0 as nt,aF as Gt,af as Yt,o as jt,aB as Xt,W as Jt,e as Zt,aG as $t,a9 as eo,al as to,ab as oo,m as ao,R as no}from"./icons-DP3uiYxy.js";const io={__name:"AIChatWizard",props:{open:{type:Boolean,default:!1},existingAccounts:{type:Array,default:()=>[]}},emits:["update:open","registered"],setup(ie,{expose:t,emit:h}){t();const e=ie,G=h,Y=[{vendor:"deepseek",displayName:"DeepSeek",notes:"手机号 + 验证码登录",requiredCookies:["userToken"],cookieMaxAgeHintDays:30},{vendor:"kimi",displayName:"Kimi",notes:"手机号验证码登录",requiredCookies:["access_token"],cookieMaxAgeHintDays:30},{vendor:"tongyi",displayName:"通义千问",notes:"阿里云账号 SSO(过期较快)",requiredCookies:["login_aliyunid"],cookieMaxAgeHintDays:7},{vendor:"zhipu",displayName:"智谱清言",notes:"手机号 + 验证码",requiredCookies:["chatglm_token"],cookieMaxAgeHintDays:30},{vendor:"hunyuan",displayName:"腾讯混元",notes:"QQ / 微信 / 手机号",requiredCookies:["hy_token"],cookieMaxAgeHintDays:14},{vendor:"qianfan",displayName:"百度文心",notes:"百度账号",requiredCookies:["BDUSS"],cookieMaxAgeHintDays:7},{vendor:"coze",displayName:"字节扣子 Coze",notes:"字节统一 passport",requiredCookies:["sessionid"],cookieMaxAgeHintDays:14},{vendor:"dreamina",displayName:"即梦 Dreamina",notes:"字节图像生成",requiredCookies:["sessionid"],cookieMaxAgeHintDays:14},{vendor:"doubao",displayName:"豆包 Doubao",notes:"字节文本 AI",requiredCookies:["sessionid"],cookieMaxAgeHintDays:14}],y=de(),I=C(1),_=C(null),O=C(""),P=C(null),U=C(null),F=C(null),D=$({open:!1,probe:!1,register:!1}),q=ee(()=>Y.find(w=>w.vendor===_.value)||{}),B=ee(()=>I.value===1?"选择一家 AI 服务商":I.value===2?P.value?.fallbackMode==="paste"?"在外部浏览器登录,把 cookie 粘贴到下面":"在内嵌浏览器登录,主进程自动读取 cookie":"校验并写入本地加密 vault"),N=ee(()=>{const w=U.value;return w?w.reason==="UNKNOWN_VENDOR"?"未知厂商 — 请刷新页面或重选":w.reason==="PASTE_REQUIRED"?"请先粘贴 cookie 字符串":w.missingRequired?.length?`缺关键 cookie: ${w.missingRequired.join(", ")}`:w.reason||"cookie 校验失败":""}),j=ee(()=>{const w=F.value;return w?w.reason==="REQUIRED_COOKIES_MISSING"?`缺关键 cookie: ${(w.missingRequired||[]).join(", ")}`:w.reason==="VALIDATE_COOKIE_FAILED"?"厂商拒绝该 cookie(可能已过期或被风控)":w.reason==="ADAPTER_THREW"?`Adapter 抛错: ${w.error||"网络错误"}`:w.reason==="UNKNOWN_VENDOR"?"未知厂商":w.reason||"注册失败":"未知错误"});function R(w){return e.existingAccounts.some(L=>L&&L.vendor===w)}function E(w){return e.existingAccounts.find(L=>L&&L.vendor===w)||null}function re(w){const L=E(w);return L?L.lastHealth?L.lastHealth.ok?"ok":L.lastHealth.reason==="SPEC_VERSION_MISMATCH"?"mismatch":"fail":"unknown":null}function T(w){const L=E(w);if(!L||!L.lastHealth||L.lastHealth.ok)return"";const Q=L.lastHealth.reason;return Q?Q==="SPEC_VERSION_MISMATCH"?"cookie 规格已升级,请重新登录":Q==="ADAPTER_THREW"?"上次校验抛错,建议稍后重试":Q==="COOKIE_EXPIRED"?"Cookie 已过期,请重新登录":Q:"Cookie 校验失败,建议重新登录"}async function oe(w){try{(await y.unregisterAichat(w))?.ok&&G("registered",{vendor:w,accountId:null,unregistered:!0})}catch(L){F.value={ok:!1,reason:L?.message||"UNREGISTER_FAILED"}}}function M(w){_.value=w}async function V(){if(_.value){D.open=!0,P.value=null,U.value=null,O.value="";try{if(P.value=await y.openAichatLogin(_.value),!P.value?.ok)return;I.value=2}catch(w){P.value={ok:!1,reason:w?.message||"OPEN_FAILED"}}finally{D.open=!1}}}async function le(){D.probe=!0,U.value=null;try{const w=O.value.trim(),L=w||void 0;U.value=await y.probeAichatCookies(_.value,L)}catch(w){U.value={ok:!1,reason:w?.message||"PROBE_FAILED"}}finally{D.probe=!1}}async function K(){if(U.value?.ok){D.register=!0;try{F.value=await y.registerAichatVendor(_.value,U.value.cookies),I.value=3,F.value?.ok&&G("registered",{vendor:_.value,accountId:F.value.accountId})}catch(w){F.value={ok:!1,reason:w?.message||"REGISTER_FAILED"},I.value=3}finally{D.register=!1}}}function X(){I.value=1,_.value=null,O.value="",P.value=null,U.value=null,F.value=null}function ne(){X(),G("update:open",!1)}_e(()=>e.open,w=>{w&&X()});const se={props:e,emit:G,vendors:Y,hub:y,step:I,selectedVendor:_,cookieHeader:O,openResult:P,probeResult:U,registerResult:F,loading:D,currentVendorMeta:q,stepDescription:B,probeFailMessage:N,registerFailMessage:j,isRegistered:R,_entry:E,healthOf:re,healthReasonOf:T,onUnregister:oe,pickVendor:M,startLoginFlow:V,runProbe:le,runRegister:K,restartFlow:X,resetWizard:ne,ref:C,reactive:$,computed:ee,watch:_e,get usePersonalDataHub(){return de}};return Object.defineProperty(se,"__isScriptSetup",{enumerable:!1,value:!0}),se}},ro={key:0},lo={class:"vendor-head"},so={class:"hint"},uo={class:"hint",style:{"margin-top":"4px"}},co={key:0,class:"hint",style:{"margin-top":"4px",color:"#ff4d4f"}},fo={key:1},mo={class:"hint"},go=["href"],po={class:"howto"},yo=["href"],vo={key:3,style:{"margin-top":"8px"}},_o={key:2,class:"kv",style:{"margin-top":"4px"}},ko={key:3,class:"kv",style:{"margin-top":"4px",color:"#ff4d4f"}},bo={key:2};function Ao(ie,t,h,e,G,Y){const y=v("a-alert"),I=v("a-tag"),_=v("a-button"),O=v("a-popconfirm"),P=v("a-card"),U=v("a-col"),F=v("a-row"),D=v("a-collapse-panel"),q=v("a-collapse"),B=v("a-textarea"),N=v("a-form-item"),j=v("a-form"),R=v("a-result"),E=v("a-space"),re=v("a-drawer");return l(),A(re,{open:h.open,title:"添加 AI 对话账号",placement:"right",width:640,"destroy-on-close":!0,"onUpdate:open":t[4]||(t[4]=T=>e.emit("update:open",T)),onClose:e.resetWizard},{footer:a(()=>[n(E,{style:{float:"right"}},{default:a(()=>[e.step>1&&e.step<3?(l(),A(_,{key:0,onClick:t[3]||(t[3]=T=>e.step=e.step-1)},{default:a(()=>[...t[22]||(t[22]=[i("上一步",-1)])]),_:1})):d("v-if",!0),n(_,{onClick:e.resetWizard},{default:a(()=>[...t[23]||(t[23]=[i("取消",-1)])]),_:1}),e.step===1?(l(),A(_,{key:1,type:"primary",disabled:!e.selectedVendor,loading:e.loading.open,onClick:e.startLoginFlow},{default:a(()=>[...t[24]||(t[24]=[i(" 下一步 ",-1)])]),_:1},8,["disabled","loading"])):d("v-if",!0),e.step===2&&e.openResult?.fallbackMode==="paste"?(l(),A(_,{key:2,loading:e.loading.probe,disabled:!e.cookieHeader.trim(),onClick:e.runProbe},{default:a(()=>[...t[25]||(t[25]=[i(" 检测 cookie ",-1)])]),_:1},8,["loading","disabled"])):d("v-if",!0),e.step===2&&e.openResult?.fallbackMode!=="paste"?(l(),A(_,{key:3,loading:e.loading.probe,onClick:e.runProbe},{default:a(()=>[...t[26]||(t[26]=[i(" 检测 cookie ",-1)])]),_:1},8,["loading"])):d("v-if",!0),e.step===2?(l(),A(_,{key:4,type:"primary",loading:e.loading.register,disabled:!e.probeResult?.ok,onClick:e.runRegister},{default:a(()=>[...t[27]||(t[27]=[i(" 注册 ",-1)])]),_:1},8,["loading","disabled"])):d("v-if",!0)]),_:1})]),default:a(()=>[n(y,{message:`第 ${e.step} / 3 步`,description:e.stepDescription,type:"info","show-icon":"",style:{"margin-bottom":"16px"}},null,8,["message","description"]),e.step===1?(l(),p("div",ro,[t[10]||(t[10]=m("p",{class:"hint"}," 选择要接入的 AI 服务商。登录后将本地读取 cookie 同步对话历史;cookie 仅落本机加密文件,不上传任何云端。 ",-1)),n(F,{gutter:[12,12]},{default:a(()=>[(l(),p(W,null,ae(e.vendors,T=>n(U,{xs:24,sm:12,md:8,key:T.vendor},{default:a(()=>[n(P,{size:"small",hoverable:"",class:it(["vendor-card",{selected:e.selectedVendor===T.vendor}]),onClick:oe=>e.pickVendor(T.vendor)},{default:a(()=>[m("div",lo,[m("strong",null,s(T.displayName),1),e.healthOf(T.vendor)==="fail"?(l(),A(I,{key:0,color:"red"},{default:a(()=>[...t[5]||(t[5]=[i("🔴 重新登录",-1)])]),_:1})):e.healthOf(T.vendor)==="mismatch"?(l(),A(I,{key:1,color:"orange"},{default:a(()=>[...t[6]||(t[6]=[i("⚠ 规格升级",-1)])]),_:1})):e.healthOf(T.vendor)==="unknown"?(l(),A(I,{key:2,color:"blue"},{default:a(()=>[...t[7]||(t[7]=[i("已接入·待巡检",-1)])]),_:1})):e.healthOf(T.vendor)==="ok"?(l(),A(I,{key:3,color:"green"},{default:a(()=>[...t[8]||(t[8]=[i("✓ 已接入",-1)])]),_:1})):d("v-if",!0)]),m("div",so,s(T.notes),1),m("div",uo,[n(I,{color:"default"},{default:a(()=>[i(s(T.requiredCookies.length)+" 必需 cookie",1)]),_:2},1024),n(I,{color:"default"},{default:a(()=>[i("过期约 "+s(T.cookieMaxAgeHintDays)+" 天",1)]),_:2},1024)]),e.isRegistered(T.vendor)&&e.healthReasonOf(T.vendor)?(l(),p("div",co,s(e.healthReasonOf(T.vendor)),1)):d("v-if",!0),e.isRegistered(T.vendor)?(l(),p("div",{key:1,class:"vendor-actions",onClick:t[0]||(t[0]=rt(()=>{},["stop"]))},[n(O,{title:"注销该 AI 对话来源?历史事件仍可在 vault 中查询。","ok-text":"注销","cancel-text":"取消",onConfirm:oe=>e.onUnregister(T.vendor)},{default:a(()=>[n(_,{size:"small",type:"text",danger:""},{default:a(()=>[...t[9]||(t[9]=[i("注销",-1)])]),_:1})]),_:1},8,["onConfirm"])])):d("v-if",!0)]),_:2},1032,["class","onClick"])]),_:2},1024)),64))]),_:1})])):d("v-if",!0),e.step===2&&e.openResult?(l(),p("div",fo,[m("p",mo,[m("strong",null,s(e.currentVendorMeta.displayName),1),t[11]||(t[11]=i(" · ",-1)),m("a",{href:e.openResult.loginUrl,target:"_blank",rel:"noopener noreferrer"},s(e.openResult.loginUrl),9,go)]),e.openResult.fallbackMode==="paste"?(l(),A(y,{key:0,message:e.openResult.helpText||"请在外部浏览器登录后从开发者工具复制全部 cookie 字符串粘贴到下方。",type:"warning","show-icon":"",style:{"margin-bottom":"12px"}},null,8,["message"])):(l(),A(y,{key:1,message:"桌面端:请在弹出的内嵌浏览器窗口登录后点击 “检测 cookie”。",type:"info","show-icon":"",style:{"margin-bottom":"12px"}})),e.openResult.fallbackMode==="paste"?(l(),A(q,{key:2,bordered:!1,style:{"margin-bottom":"12px"}},{default:a(()=>[n(D,{key:"howto",header:"如何获取 cookie 字符串?"},{default:a(()=>[m("ol",po,[m("li",null,[t[12]||(t[12]=i("用 Chrome / Edge 打开 ",-1)),m("a",{href:e.openResult.loginUrl,target:"_blank"},s(e.openResult.loginUrl),9,yo)]),t[13]||(t[13]=m("li",null,"完成登录,进入对话页",-1)),t[14]||(t[14]=m("li",null,[i("按 "),m("kbd",null,"F12"),i(" 打开开发者工具 → "),m("strong",null,"Application"),i(" → "),m("strong",null,"Cookies")],-1)),t[15]||(t[15]=m("li",null,"选中域名 → 全选所有 cookie 行 → 用扩展(如 EditThisCookie)导出 “name=value; …” 串",-1)),t[16]||(t[16]=m("li",null,[i("或在 Console 执行 "),m("code",null,"document.cookie"),i(" 复制结果(注意:HTTP-Only cookie 取不到,仍需 Application 面板)")],-1)),t[17]||(t[17]=m("li",null,"粘贴到下方文本框,点 “检测 cookie”",-1))])]),_:1})]),_:1})):d("v-if",!0),n(j,{layout:"vertical"},{default:a(()=>[n(N,{label:"Cookie 字符串"},{default:a(()=>[n(B,{value:e.cookieHeader,"onUpdate:value":t[1]||(t[1]=T=>e.cookieHeader=T),rows:6,placeholder:"name1=value1; name2=value2; name3=value3 …",autocomplete:"off"},null,8,["value"])]),_:1})]),_:1}),e.probeResult?(l(),p("div",vo,[e.probeResult.ok?(l(),A(y,{key:0,type:"success","show-icon":"",message:`已识别 ${e.probeResult.foundRequired.length} 个必需 cookie + ${e.probeResult.foundOptional.length} 个可选 cookie`},null,8,["message"])):(l(),A(y,{key:1,type:"error","show-icon":"",message:e.probeFailMessage},null,8,["message"])),e.probeResult.foundRequired?.length?(l(),p("div",_o," ✓ "+s(e.probeResult.foundRequired.join(", ")),1)):d("v-if",!0),e.probeResult.missingRequired?.length?(l(),p("div",ko," 缺失: "+s(e.probeResult.missingRequired.join(", ")),1)):d("v-if",!0)])):d("v-if",!0)])):d("v-if",!0),e.step===3?(l(),p("div",bo,[e.registerResult?.ok?(l(),A(R,{key:0,status:"success",title:`${e.currentVendorMeta.displayName} 已接入`,"sub-title":`accountId: ${e.registerResult.accountId} · userId: ${e.registerResult.validation?.userId||"匿名"}`},{extra:a(()=>[n(_,{type:"primary",onClick:e.resetWizard},{default:a(()=>[...t[18]||(t[18]=[i("完成",-1)])]),_:1}),n(_,{onClick:e.restartFlow},{default:a(()=>[...t[19]||(t[19]=[i("再加一家",-1)])]),_:1})]),_:1},8,["title","sub-title"])):(l(),A(R,{key:1,status:"error",title:"接入失败","sub-title":e.registerFailMessage},{extra:a(()=>[n(_,{type:"primary",onClick:t[2]||(t[2]=T=>e.step=2)},{default:a(()=>[...t[20]||(t[20]=[i("返回粘贴 cookie",-1)])]),_:1}),n(_,{onClick:e.restartFlow},{default:a(()=>[...t[21]||(t[21]=[i("选其他厂商",-1)])]),_:1})]),_:1},8,["sub-title"]))])):d("v-if",!0)]),_:1},8,["open"])}const ho=Ie(io,[["render",Ao],["__scopeId","data-v-4ed94be5"],["__file","/tmp/cc-web-panel-lKopdB/repo/packages/web-panel/src/components/AIChatWizard.vue"]]),wo={__name:"WechatWizard",props:{open:{type:Boolean,default:!1}},emits:["update:open","registered"],setup(ie,{expose:t,emit:h}){t();const e=ie,G=h,Y=de(),y=C(1),I=C(null),_=$({uin:"",dbPath:"",wechatDataPath:"",forceProvider:null}),O=C(null),P=$({probe:!1,register:!1}),U=ee(()=>y.value===1?"探测设备 + WeChat 版本,确认可用的 keyProvider":y.value===2?"填 UIN 与已 adb-pull 的本地路径":"bootstrap 注册 + 持久化 wechat-accounts.json"),F=ee(()=>{const R=O.value;return R?R.reason==="ENV_UNSUPPORTED"?R.message||"env-probe 拒绝 — 请回到第 1 步看 reasons":R.reason==="MD5_NEEDS_WECHAT_DATA_PATH"?"MD5 路径需要 wechatDataPath":R.reason==="FRIDA_NEEDS_WXID"?"Frida 路径需要 account.uin / wxid":R.reason==="ADAPTER_CTOR_FAILED"?`Adapter ctor 抛错: ${R.message||""}`:R.reason==="BOOTSTRAP_THREW"?`Bootstrap 抛错: ${R.message||""}`:R.reason==="UIN_REQUIRED"?"UIN 不能为空":R.message||R.reason||"注册失败":"未知错误"});async function D(){P.probe=!0;try{I.value=await Y.probeWechatEnv()}catch(R){I.value={ok:!1,suggestedKeyProvider:"unsupported",reasons:[R?.message||"probe failed"],device:{reachable:!1},root:{detected:!1,magiskInstalled:!1},frida:{serverRunning:!1,port:null},wechat:{installed:!1,versionName:null,majorVersion:null},warnings:[]}}finally{P.probe=!1}}async function q(){P.register=!0;try{O.value=await Y.registerWechat({account:{uin:_.uin},dbPath:_.dbPath||null,wechatDataPath:_.wechatDataPath||null,keyProviderOverride:_.forceProvider}),y.value=3,O.value?.ok&&G("registered",{uin:_.uin,chosenKeyProvider:O.value.chosenKeyProvider})}catch(R){O.value={ok:!1,reason:"BOOTSTRAP_THREW",message:R?.message||"RPC failed"},y.value=3}finally{P.register=!1}}function B(){y.value=1,I.value=null,_.uin="",_.dbPath="",_.wechatDataPath="",_.forceProvider=null,O.value=null}function N(){B(),G("update:open",!1)}_e(()=>e.open,R=>{R&&B()});const j={props:e,emit:G,hub:Y,step:y,probe:I,form:_,registerResult:O,loading:P,stepDescription:U,registerFailMessage:F,runProbe:D,runRegister:q,restartFlow:B,resetWizard:N,ref:C,reactive:$,computed:ee,watch:_e,get usePersonalDataHub(){return de}};return Object.defineProperty(j,"__isScriptSetup",{enumerable:!1,value:!0}),j}},Oo={key:0},Co={key:0,class:"probe-result"},So={key:0,class:"kv"},Do={key:0,class:"kv"},Io={key:1},Eo={key:2},Po={key:2,style:{"margin-top":"12px"}};function Ro(ie,t,h,e,G,Y){const y=v("a-alert"),I=v("a-button"),_=v("a-tag"),O=v("a-descriptions-item"),P=v("a-descriptions"),U=v("a-input"),F=v("a-form-item"),D=v("a-radio"),q=v("a-radio-group"),B=v("a-form"),N=v("a-result"),j=v("a-space"),R=v("a-drawer");return l(),A(R,{open:h.open,title:"添加 WeChat 账号",placement:"right",width:640,"destroy-on-close":!0,"onUpdate:open":t[8]||(t[8]=E=>e.emit("update:open",E)),onClose:e.resetWizard},{footer:a(()=>[n(j,{style:{float:"right"}},{default:a(()=>[e.step>1&&e.step<3?(l(),A(I,{key:0,onClick:t[6]||(t[6]=E=>e.step=e.step-1)},{default:a(()=>[...t[21]||(t[21]=[i("上一步",-1)])]),_:1})):d("v-if",!0),n(I,{onClick:e.resetWizard},{default:a(()=>[...t[22]||(t[22]=[i("取消",-1)])]),_:1}),e.step===1?(l(),A(I,{key:1,type:"primary",disabled:!e.probe||e.probe.suggestedKeyProvider==="unsupported",onClick:t[7]||(t[7]=E=>e.step=2)},{default:a(()=>[...t[23]||(t[23]=[i(" 下一步 ",-1)])]),_:1},8,["disabled"])):d("v-if",!0),e.step===2?(l(),A(I,{key:2,type:"primary",loading:e.loading.register,disabled:!e.form.uin||e.probe?.suggestedKeyProvider==="md5"&&!e.form.wechatDataPath,onClick:e.runRegister},{default:a(()=>[...t[24]||(t[24]=[i(" 注册 ",-1)])]),_:1},8,["loading","disabled"])):d("v-if",!0)]),_:1})]),default:a(()=>[n(y,{message:`第 ${e.step} / 3 步`,description:e.stepDescription,type:"info","show-icon":"",style:{"margin-bottom":"16px"}},null,8,["message","description"]),e.step===1?(l(),p("div",Oo,[t[11]||(t[11]=m("p",{class:"hint"},[i(" 请用 USB 连接 Android 设备(开启 USB 调试)。WeChat ≥ 8.0 需要 root + frida-server。 探测仅读取 "),m("code",null,"adb shell"),i(" 命令输出,不写入任何东西。 ")],-1)),n(I,{type:"primary",loading:e.loading.probe,onClick:e.runProbe,style:{"margin-bottom":"12px"}},{default:a(()=>[...t[9]||(t[9]=[i(" 🔍 探测环境 ",-1)])]),_:1},8,["loading"]),e.probe?(l(),p("div",Co,[n(P,{column:1,size:"small",bordered:""},{default:a(()=>[n(O,{label:"suggestedKeyProvider"},{default:a(()=>[n(_,{color:e.probe.suggestedKeyProvider==="unsupported"?"red":"green"},{default:a(()=>[i(s(e.probe.suggestedKeyProvider),1)]),_:1},8,["color"])]),_:1}),n(O,{label:"adb 设备"},{default:a(()=>[n(_,{color:e.probe.device.reachable?"green":"red"},{default:a(()=>[i(s(e.probe.device.reachable?"已连接":"未连接"),1)]),_:1},8,["color"]),e.probe.device.serial?(l(),p("span",So,s(e.probe.device.serial)+" · abi="+s(e.probe.device.abi||"?"),1)):d("v-if",!0)]),_:1}),n(O,{label:"root"},{default:a(()=>[n(_,{color:e.probe.root.detected?"green":"default"},{default:a(()=>[i(s(e.probe.root.detected?"已 root":"未 root"),1)]),_:1},8,["color"]),e.probe.root.magiskInstalled?(l(),A(_,{key:0,color:"blue"},{default:a(()=>[...t[10]||(t[10]=[i("Magisk",-1)])]),_:1})):d("v-if",!0)]),_:1}),n(O,{label:"frida-server"},{default:a(()=>[n(_,{color:e.probe.frida.serverRunning?"green":"default"},{default:a(()=>[i(s(e.probe.frida.serverRunning?"运行中":"未运行"),1)]),_:1},8,["color"]),e.probe.frida.port?(l(),p("span",Do," :"+s(e.probe.frida.port),1)):d("v-if",!0)]),_:1}),n(O,{label:"WeChat"},{default:a(()=>[n(_,{color:e.probe.wechat.installed?"green":"red"},{default:a(()=>[i(s(e.probe.wechat.installed?e.probe.wechat.versionName:"未安装"),1)]),_:1},8,["color"])]),_:1})]),_:1}),(l(!0),p(W,null,ae(e.probe.reasons||[],E=>(l(),A(y,{key:E,message:E,type:"info","show-icon":"",style:{"margin-top":"8px"}},null,8,["message"]))),128)),(l(!0),p(W,null,ae(e.probe.warnings||[],E=>(l(),A(y,{key:E,message:E,type:"warning","show-icon":"",style:{"margin-top":"8px"}},null,8,["message"]))),128))])):d("v-if",!0)])):d("v-if",!0),e.step===2?(l(),p("div",Io,[t[16]||(t[16]=m("p",{class:"hint"},[i(" 填写从 adb pull 拉下来的本地路径。MD5 路径(7.x)需要 "),m("code",null,"wechatDataPath"),i("; Frida 路径(8.0+)需要设备运行 frida-server。 ")],-1)),n(B,{layout:"vertical"},{default:a(()=>[n(F,{label:"UIN / wxid",required:""},{default:a(()=>[n(U,{value:e.form.uin,"onUpdate:value":t[0]||(t[0]=E=>e.form.uin=E),placeholder:"WeChat 数字 UIN 或 wxid"},null,8,["value"])]),_:1}),n(F,{label:"dbPath(已拉下的 EnMicroMsg.db 本地路径)"},{default:a(()=>[n(U,{value:e.form.dbPath,"onUpdate:value":t[1]||(t[1]=E=>e.form.dbPath=E),placeholder:"C:\\\\users\\\\me\\\\pull\\\\EnMicroMsg.db"},null,8,["value"])]),_:1}),n(F,{label:"wechatDataPath(已拉下的 /data/data/com.tencent.mm/ 目录)"},{default:a(()=>[n(U,{value:e.form.wechatDataPath,"onUpdate:value":t[2]||(t[2]=E=>e.form.wechatDataPath=E),placeholder:"C:\\\\users\\\\me\\\\pull\\\\com.tencent.mm"},null,8,["value"]),t[12]||(t[12]=m("div",{class:"hint"},"MD5 路径必填;Frida 路径可空",-1))]),_:1}),n(F,{label:"强制 keyProvider(覆盖 env-probe 建议)"},{default:a(()=>[n(q,{value:e.form.forceProvider,"onUpdate:value":t[3]||(t[3]=E=>e.form.forceProvider=E)},{default:a(()=>[n(D,{value:null},{default:a(()=>[...t[13]||(t[13]=[i("自动(推荐)",-1)])]),_:1}),n(D,{value:"md5"},{default:a(()=>[...t[14]||(t[14]=[i("md5",-1)])]),_:1}),n(D,{value:"frida"},{default:a(()=>[...t[15]||(t[15]=[i("frida",-1)])]),_:1})]),_:1},8,["value"])]),_:1})]),_:1})])):d("v-if",!0),e.step===3?(l(),p("div",Eo,[e.registerResult?.ok?(l(),A(N,{key:0,status:"success",title:`WeChat 已接入 (uin=${e.form.uin})`,"sub-title":`provider=${e.registerResult.chosenKeyProvider} · sensitivity=${e.registerResult.sensitivity}`},{extra:a(()=>[n(I,{type:"primary",onClick:e.resetWizard},{default:a(()=>[...t[17]||(t[17]=[i("完成",-1)])]),_:1}),n(I,{onClick:e.restartFlow},{default:a(()=>[...t[18]||(t[18]=[i("再加一个",-1)])]),_:1})]),_:1},8,["title","sub-title"])):(l(),A(N,{key:1,status:"error",title:"接入失败","sub-title":e.registerFailMessage},qt({_:2},[e.registerResult?.probe?.reasons?.length?{name:"extra",fn:a(()=>[n(I,{onClick:t[4]||(t[4]=E=>e.step=1)},{default:a(()=>[...t[19]||(t[19]=[i("返回检查环境",-1)])]),_:1}),n(I,{onClick:t[5]||(t[5]=E=>e.step=2)},{default:a(()=>[...t[20]||(t[20]=[i("返回修改路径",-1)])]),_:1})]),key:"0"}:void 0]),1032,["sub-title"])),e.registerResult?.probe?.reasons?.length?(l(),p("div",Po,[(l(!0),p(W,null,ae(e.registerResult.probe.reasons,E=>(l(),A(y,{key:E,message:E,type:"warning","show-icon":"",style:{"margin-bottom":"4px"}},null,8,["message"]))),128))])):d("v-if",!0)])):d("v-if",!0)]),_:1},8,["open"])}const xo=Ie(wo,[["render",Ro],["__scopeId","data-v-2f50c8a7"],["__file","/tmp/cc-web-panel-lKopdB/repo/packages/web-panel/src/components/WechatWizard.vue"]]),De="pdh.syncIncludeOptions.v1",To={__name:"PersonalDataHub",setup(ie,{expose:t}){const h=de(),e=C(null),G=C(null),Y=C([]),y=C({}),I=C(""),_=C(null),O=C(""),P=C(!1),U=C(!1),F=C([]),D=C(null),q={"system-data-android":{contacts:!0,apps:!0,sms:!0,calls:!0}};function B(){try{const o=localStorage.getItem(De);if(!o)return JSON.parse(JSON.stringify(q));const c=JSON.parse(o);return{"system-data-android":{...q["system-data-android"],...c["system-data-android"]||{}}}}catch{return JSON.parse(JSON.stringify(q))}}const N=$(B());function j(){try{localStorage.setItem(De,JSON.stringify(N)),console.log("[PDH-include] persisted:",JSON.stringify(N))}catch(o){console.warn("[PDH-include] persist failed:",o&&o.message)}}const R=C({}),E={"system-data-android":[{key:"contacts",label:"联系人",hint:"~767 条"},{key:"apps",label:"已安装应用",hint:"~176 个"},{key:"sms",label:"短信内容",hint:"~2400 条 · 高敏感",sensitive:!0},{key:"calls",label:"通话记录",hint:"~18000 条 · 包含号码",sensitive:!0}]};function re(o){return Object.prototype.hasOwnProperty.call(E,o)}function T(o,c,u){const f=u&&u.target?!!u.target.checked:!!u;console.log("[PDH-include] toggle",o,c,"=>",f),N[o]||(N[o]={}),N[o][c]=f,j()}const oe=C(!1),M=$({provider:"qq",email:"",authCode:"",host:"",port:993,pdfPasswordHints:{idCardLast6:"",phoneLast6:"",cardLast6:""}}),V=C(null),le=C(!1),K=C(null),X=C([]),ne=C(null),se=[{name:"analysis.spending",label:"消费分析",icon:et,description:"总支出 / 商家排行 / 月度趋势"},{name:"analysis.relations",label:"人际关系",icon:tt,description:"与每个人的互动频率 / 主动比例"},{name:"analysis.footprint",label:"足迹",icon:ot,description:"常去地点 / 出行模式"},{name:"analysis.interests",label:"兴趣画像",icon:at,description:"从购买 / 浏览 / 收藏抽兴趣"},{name:"analysis.timeline",label:"时间线",icon:nt,description:"跨源事件串成故事"}],w=C(!1),L=C([]),Q=$({queue:{pending:0},mergeGroups:0,reviewQueue:0}),ke=C(!1),me=C([]);function ge(o){o?.unregistered?g.success(`已注销 ${o.vendor}`):g.success(`已接入 ${o.vendor}`),z()}const pe=C(!1);function be(o){g.success(`WeChat 已接入 (uin=${o.uin}, provider=${o.chosenKeyProvider})`),z()}const Ae=C(!1),r=$({email:"",zipPassword:"",filePath:""}),k=C(null),S=$({active:!1,adapter:"",phase:"",mailbox:"",current:0,total:0,attempt:1,errorMessage:""}),b=$({refresh:!1,ask:!1,addMock:!1,syncAll:!1,sync:{},audit:!1,testEmail:!1,saveEmail:!1,eventDetail:!1,importAlipay:!1,reviewQueue:!1,resolverDrain:!1,skill:!1,bilibiliAdbSync:!1,bilibiliAdbDoctor:!1,douyinAdbSync:!1,weiboAdbSync:!1,xhsAdbSync:!1,toutiaoAdbSync:!1,kuaishouAdbSync:!1,bridgeDoctor:!1}),Ee=C(null);function he(o){switch(o){case"BRIDGE_UNAVAILABLE":return"adb 未安装或不在 PATH — 请安装 Android Platform Tools 或设置 ADB_PATH 环境变量";case"MODULE_LOAD_FAILED":return"PDH adapter 模块缺失 — 请重装 cc";case"BILIBILI_NO_ROOT":return"手机未 root — Bilibili 正式版 APK 不是 debuggable,需 Magisk root 才能读 Cookies DB";case"BILIBILI_NOT_INSTALLED_OR_NEVER_LOGGED_IN":return"请在手机上安装 Bilibili App 并登录一次,然后重试";case"BILIBILI_COOKIES_INCOMPLETE":return"Cookie 缺关键字段 — 请在手机 Bilibili App 上重新登录";case"BILIBILI_COOKIES_TRUNCATED":return"ADB 流被截断 — 拔插 USB 重试,或检查 `adb logcat` 是否有 MIUI ROM 干扰";case"BILIBILI_NOT_SQLITE":return"ADB 拉回的文件不是 sqlite — 可能 base64 stream 被 MIUI/HyperOS 干扰,拔插 USB 重试";case"BILIBILI_INVALID_UID":return"Cookie 中 DedeUserID 不是正整数 — 请重新登录";default:return"同步失败 — 详见 message 字段"}}function Pe(o){switch(o){case"BRIDGE_UNAVAILABLE":return"adb 未安装或不在 PATH — 请安装 Android Platform Tools 或设置 ADB_PATH 环境变量";case"MODULE_LOAD_FAILED":return"PDH adapter 模块缺失 — 请重装 cc";case"DOUYIN_NO_ROOT":return"手机未 root — 抖音正式版 APK 不是 debuggable,需 Magisk root 才能读 IM 数据库";case"DOUYIN_NOT_INSTALLED":return"请在手机上安装抖音 App,然后重试";case"DOUYIN_NO_IM_DB":return"抖音 App 已装但未生成 IM 数据库 — 请登录抖音并打开任一聊天会话后重试";case"DOUYIN_MULTIPLE_USERS":return"此手机登录了多个抖音账号 — 请加 --uid <19位数字> 选一个";case"DOUYIN_UID_NOT_FOUND":return"指定的 uid 不在设备上的抖音账号列表里";case"DOUYIN_PULL_FAILED":return"ADB 流传输失败 — 拔插 USB 重试,或检查 `adb logcat` 是否有 MIUI ROM 干扰";case"DOUYIN_NOT_SQLITE":return"拉回的文件不是 sqlite — 可能 base64 stream 被 MIUI/HyperOS 干扰,拔插 USB 重试";default:return"同步失败 — 详见 message 字段"}}function Re(o){switch(o){case"BRIDGE_UNAVAILABLE":return"adb 未安装或不在 PATH — 请安装 Android Platform Tools 或设置 ADB_PATH 环境变量";case"MODULE_LOAD_FAILED":return"PDH adapter 模块缺失 — 请重装 cc";case"WEIBO_NO_ROOT":return"手机未 root — 微博正式版 APK 不是 debuggable,需 Magisk root 才能读 Cookies DB";case"WEIBO_NOT_INSTALLED":return"请在手机上安装微博 App 并登录一次,然后重试 (或微博使用了非默认 WebView 数据目录)";case"WEIBO_COOKIES_EMPTY":return"ADB 流返 0 字节 — MIUI/HyperOS silent 失败?拔插 USB 重试";case"WEIBO_COOKIES_TRUNCATED":return"ADB 流被截断 — 拔插 USB 重试,或检查 `adb logcat` 是否有 MIUI ROM 干扰";case"WEIBO_NOT_SQLITE":return"拉回的文件不是 sqlite — 可能 base64 stream 被 MIUI 干扰,拔插 USB 重试";case"WEIBO_BASE64_PARSE":return"base64 解码失败 — adb 终端编码问题,请检查 `chcp 65001`";case"WEIBO_COOKIES_INCOMPLETE":return"SUB cookie 缺失 — 请在手机微博 App 上重新登录";default:return"同步失败 — 详见 message 字段"}}function xe(o){switch(o){case"BRIDGE_UNAVAILABLE":return"adb 未安装或不在 PATH — 请安装 Android Platform Tools 或设置 ADB_PATH 环境变量";case"MODULE_LOAD_FAILED":return"PDH adapter 模块缺失 — 请重装 cc";case"XHS_NO_ROOT":return"手机未 root — 小红书正式版 APK 不是 debuggable,需 Magisk root 才能读 Cookies DB";case"XHS_NOT_INSTALLED":return"请在手机上安装小红书 App 并登录一次,然后重试";case"XHS_COOKIES_EMPTY":return"ADB 流返 0 字节 — MIUI/HyperOS silent 失败?拔插 USB 重试";case"XHS_COOKIES_TRUNCATED":return"ADB 流被截断 — 拔插 USB 重试,或检查 `adb logcat` 是否有 MIUI ROM 干扰";case"XHS_NOT_SQLITE":return"拉回的文件不是 sqlite — 可能 base64 stream 被 MIUI 干扰,拔插 USB 重试";case"XHS_BASE64_PARSE":return"base64 解码失败 — adb 终端编码问题,请检查 `chcp 65001`";case"XHS_COOKIES_INCOMPLETE":return"a1 或 web_session cookie 缺失 — 请在手机小红书 App 上重新登录 (X-S 签名需要 a1 字段)";default:return"同步失败 — 详见 message 字段"}}async function lt(){if(!b.xhsAdbSync){b.xhsAdbSync=!0;try{const o=await h.xhsAdbSync({});if(!o||!o.ok){const x=o&&o.reason||"SYNC_FAILED",H=xe(x),J=o&&o.message||"";g.error({content:`Xhs ADB 同步失败:${H}`,description:J,duration:8});return}const c=o.report||{},u=c.xhs||{},f=u.eventCounts||{};u.meFetchFailed?g.warning({content:"Xhs 同步未拉到 user_id — /user/me 返空 data",description:`lastErrorCode=${u.lastErrorCode}, ${u.lastErrorMessage||""}。可能 cookie 已过期或 web_session 缺失,请在手机重新登录。`,duration:10}):u.lastErrorCode===461?g.warning({content:"Xhs X-S 签名被拒 (461) — 部分接口未抓到",description:`命中 ${f.total||0} events。我们的 X-S 算法 best-effort (~60% GET / <30% POST hit),461 在 POST 较常见。稍后重试 (X-S 算法可能 4-8 周 rotate)。`,duration:10}):u.lastErrorCode?g.warning({content:`Xhs 同步部分完成 (${f.total||0} events)`,description:`lastErrorCode=${u.lastErrorCode}, ${u.lastErrorMessage||""}`,duration:8}):g.success(`Xhs 同步成功:notes=${f.note||0} / liked=${f.liked||0} / follow=${f.follow||0} (total=${f.total||0})${u.nickname?" ["+u.nickname+"]":""}`),D.value=c,z()}catch(o){g.error({content:"Xhs ADB 同步异常",description:o&&o.message?o.message:String(o),duration:8})}finally{b.xhsAdbSync=!1}}}function Te(o){switch(o){case"BRIDGE_UNAVAILABLE":return"adb 未安装或不在 PATH — 请安装 Android Platform Tools 或设置 ADB_PATH 环境变量";case"MODULE_LOAD_FAILED":return"PDH adapter 模块缺失 — 请重装 cc";case"TOUTIAO_NO_ROOT":return"手机未 root — 头条正式版 APK 不是 debuggable,需 Magisk root 才能读 Cookies DB";case"TOUTIAO_NOT_INSTALLED":return"请在手机上安装今日头条 App(com.ss.android.article.news,不是极速版)并登录后随便点开一篇文章(让 WebView 写入 cookies),再重试";case"TOUTIAO_COOKIES_EMPTY":return"ADB 流返 0 字节 — MIUI/HyperOS silent 失败?拔插 USB 重试";case"TOUTIAO_COOKIES_TRUNCATED":return"ADB 流被截断 — 拔插 USB 重试,或检查 `adb logcat` 是否有 MIUI ROM 干扰";case"TOUTIAO_NOT_SQLITE":return"拉回的文件不是 sqlite — 可能 base64 stream 被 MIUI 干扰,拔插 USB 重试";case"TOUTIAO_BASE64_PARSE":return"base64 解码失败 — adb 终端编码问题,请检查 `chcp 65001`";case"TOUTIAO_COOKIES_INCOMPLETE":return"sessionid / sessionid_ss cookie 缺失 — 请在手机头条 App 上重新登录";default:return"同步失败 — 详见 message 字段"}}async function st(){if(!b.toutiaoAdbSync){b.toutiaoAdbSync=!0;try{const o=await h.toutiaoAdbSync({});if(!o||!o.ok){const x=o&&o.reason||"SYNC_FAILED",H=Te(x),J=o&&o.message||"";g.error({content:`Toutiao ADB 同步失败:${H}`,description:J,duration:8});return}const c=o.report||{},u=c.toutiao||{},f=u.eventCounts||{};u.profileFetchFailed?g.warning({content:"Toutiao 同步未拉到 user_id — passport/info/v2 返失败",description:`lastErrorCode=${u.lastErrorCode}, ${u.lastErrorMessage||""}。可能 cookie 已过期或 sessionid 缺失,请在手机重新登录。`,duration:10}):u.signProviderUsed==="none"&&f.feed===0&&f.collection===0&&f.search===0?g.warning({content:`Toutiao 同步仅获取了 profile (${f.profile||0} event)`,description:"当前 web-shell 上下文不支持 _signature 签名(仅 desktop app 提供 ToutiaoSignBridge)。打开桌面 app 同步可获取 feed / collection / search。",duration:12}):u.lastErrorCode?g.warning({content:`Toutiao 同步部分完成 (${f.total||0} events)`,description:`lastErrorCode=${u.lastErrorCode}, ${u.lastErrorMessage||""}`,duration:8}):g.success(`Toutiao 同步成功:profile=${f.profile||0} / feed=${f.feed||0} / collection=${f.collection||0} / search=${f.search||0} (total=${f.total||0})${u.nickname?" ["+u.nickname+"]":""}`),D.value=c,z()}catch(o){g.error({content:"Toutiao ADB 同步异常",description:o&&o.message?o.message:String(o),duration:8})}finally{b.toutiaoAdbSync=!1}}}function Le(o){switch(o){case"BRIDGE_UNAVAILABLE":return"adb 未安装或不在 PATH — 请安装 Android Platform Tools 或设置 ADB_PATH 环境变量";case"MODULE_LOAD_FAILED":return"PDH adapter 模块缺失 — 请重装 cc";case"KUAISHOU_NO_ROOT":return"手机未 root — 快手正式版 APK 不是 debuggable,需 Magisk root 才能读 Cookies DB";case"KUAISHOU_NOT_INSTALLED":return"请在手机上安装快手 App(com.smile.gifmaker,不是极速版 com.kuaishou.nebula)并登录后随便看一个视频(让 WebView 写入 cookies),再重试";case"KUAISHOU_COOKIES_EMPTY":return"ADB 流返 0 字节 — MIUI/HyperOS silent 失败?拔插 USB 重试";case"KUAISHOU_COOKIES_TRUNCATED":return"ADB 流被截断 — 拔插 USB 重试,或检查 `adb logcat` 是否有 MIUI ROM 干扰";case"KUAISHOU_NOT_SQLITE":return"拉回的文件不是 sqlite — 可能 base64 stream 被 MIUI 干扰,拔插 USB 重试";case"KUAISHOU_BASE64_PARSE":return"base64 解码失败 — adb 终端编码问题,请检查 `chcp 65001`";case"KUAISHOU_COOKIES_INCOMPLETE":return"userId / kuaishou.web.cp.api_ph cookie 缺失 — 请在手机快手 App 上重新登录";default:return"同步失败 — 详见 message 字段"}}async function dt(){if(!b.kuaishouAdbSync){b.kuaishouAdbSync=!0;try{const o=await h.kuaishouAdbSync({});if(!o||!o.ok){const x=o&&o.reason||"SYNC_FAILED",H=Le(x),J=o&&o.message||"";g.error({content:`Kuaishou ADB 同步失败:${H}`,description:J,duration:8});return}const c=o.report||{},u=c.kuaishou||{},f=u.eventCounts||{};u.profileFetchFailed?g.warning({content:"Kuaishou 同步 cookie 缺 api_ph payload",description:`lastErrorCode=${u.lastErrorCode}, ${u.lastErrorMessage||""}。可能 cookie 已过期或登录态不完整(仅有 userId 但没有 api_ph),请在手机重新登录。`,duration:10}):u.signProviderUsed==="none"&&f.watch===0&&f.collect===0&&f.search===0?g.warning({content:`Kuaishou 同步仅获取了 profile (${f.profile||0} event)`,description:"当前 web-shell 上下文不支持 __NS_sig3 签名(仅 desktop app 提供 KuaishouSignBridge)。打开桌面 app 同步可获取 watch / collect / search。",duration:12}):u.lastErrorCode?g.warning({content:`Kuaishou 同步部分完成 (${f.total||0} events)`,description:`lastErrorCode=${u.lastErrorCode}, ${u.lastErrorMessage||""}`,duration:8}):g.success(`Kuaishou 同步成功:profile=${f.profile||0} / watch=${f.watch||0} / collect=${f.collect||0} / search=${f.search||0} (total=${f.total||0})${u.nickname?" ["+u.nickname+"]":""}`),D.value=c,z()}catch(o){g.error({content:"Kuaishou ADB 同步异常",description:o&&o.message?o.message:String(o),duration:8})}finally{b.kuaishouAdbSync=!1}}}async function ut(){if(!b.bridgeDoctor){b.bridgeDoctor=!0;try{const o=await h.bridgeDoctor();if(!o||!o.ok){const te=o&&o.reason||"BRIDGE_DOCTOR_FAILED",Z=o&&o.message||"";te==="MODULE_LOAD_FAILED"?g.error({content:"Bridge doctor 不可用",description:"当前上下文不是 Electron desktop app(cli / web-shell-only 无 sign-bridge 模块)。请从桌面 app 运行此诊断。",duration:10}):g.error({content:`Bridge doctor 失败:${te}`,description:Z,duration:8});return}const c=o.results||{},u=["xhs","toutiao","kuaishou"],f=u.filter(te=>c[te]&&c[te].anyCandidatePresent).length,x=u.length,H=[];for(const te of u){const Z=c[te];if(!Z||!Z.ok){H.push(`${te}: ✗ ${Z&&Z.error?Z.error:"unknown error"}`);continue}const Se=Z.candidates||{},Je=Object.keys(Se).filter(Kt=>Se[Kt]===!0),Ze=Object.keys(Se).length,zt=Z.anyCandidatePresent?"✓":"⚠",Wt=Z.anyCandidatePresent?`${Je.length}/${Ze} candidate(s): ${Je.join(", ")}`:`0/${Ze} candidates (rotation? 需更新 buildSignScript)`;H.push(`${te}: ${zt} ${Wt} (warmUp=${Z.warmUpMs}ms, probe=${Z.probeMs}ms)`)}(f===x?g.success:f===0?g.error:g.warning)({content:`Bridge doctor: ${f}/${x} 平台签名可用`,description:H.join(`
2
+ `),duration:15}),Ee.value=o}catch(o){g.error({content:"Bridge doctor 异常",description:o&&o.message?o.message:String(o),duration:8})}finally{b.bridgeDoctor=!1}}}async function ct(){if(!b.weiboAdbSync){b.weiboAdbSync=!0;try{const o=await h.weiboAdbSync({});if(!o||!o.ok){const x=o&&o.reason||"SYNC_FAILED",H=Re(x),J=o&&o.message||"";g.error({content:`Weibo ADB 同步失败:${H}`,description:J,duration:8});return}const c=o.report||{},u=c.weibo||{},f=u.eventCounts||{};u.uidFetchFailed?g.warning({content:"Weibo 同步未拉到 UID — /api/config 返 login=false",description:`lastErrorCode=${u.lastErrorCode}, ${u.lastErrorMessage||""}。可能 cookie 已过期 (请在手机重新登录) 或微博触发 anti-bot redirect。事件数 0,未入 vault。`,duration:10}):u.lastErrorCode?g.warning({content:`Weibo 同步部分完成 (${f.total||0} events)`,description:`lastErrorCode=${u.lastErrorCode}, ${u.lastErrorMessage||""} — 部分接口受反爬限制,稍后重试可补齐`,duration:8}):g.success(`Weibo 同步成功:posts=${f.post||0} / fav=${f.favourite||0} / follow=${f.follow||0} (total=${f.total||0})`),D.value=c,z()}catch(o){g.error({content:"Weibo ADB 同步异常",description:o&&o.message?o.message:String(o),duration:8})}finally{b.weiboAdbSync=!1}}}async function ft(){if(!b.douyinAdbSync){b.douyinAdbSync=!0;try{const o=await h.douyinAdbSync({});if(!o||!o.ok){const H=o&&o.reason||"SYNC_FAILED",J=Pe(H),te=o&&o.message||"";g.error({content:`Douyin ADB 同步失败:${J}`,description:te,duration:8});return}const c=o.report||{},u=c.douyin||{},f=u.eventCounts||{},x=u.parserDiagnostic||{};if(!x.hadMsgTable&&!x.hadSimpleUserTable)g.warning({content:"Douyin 同步完成但 0 events",description:"msg 和 SIMPLE_USER 表都未在 IM 数据库中找到 — 抖音 App 版本可能用了不同 schema",duration:10});else if(!x.hadMsgTable||!x.hadSimpleUserTable){const H=[];x.hadMsgTable||H.push("msg (私信)"),x.hadSimpleUserTable||H.push("SIMPLE_USER (联系人)"),g.warning({content:`Douyin 部分同步:msg=${f.message||0} contacts=${f.contact||0}`,description:`${H.join("、")} 表未找到,未入库部分数据`,duration:8})}else g.success(`Douyin 同步成功:messages=${f.message||0} contacts=${f.contact||0} (total=${f.total||0})`);D.value=c,z()}catch(o){g.error({content:"Douyin ADB 同步异常",description:o&&o.message?o.message:String(o),duration:8})}finally{b.douyinAdbSync=!1}}}async function mt(){if(!b.bilibiliAdbDoctor){b.bilibiliAdbDoctor=!0;try{const o=await h.bilibiliAdbDoctor();if(!o||!o.ok){const u=o&&o.reason||"PROBE_FAILED",f=he(u),x=o&&o.message||"";g.error({content:`Bilibili 诊断失败:${f}`,description:x,duration:8});return}const c=o.cookieDiagnostic||{};c.hadEncrypted?g.warning({content:`Bilibili 环境就绪 (uid=${o.uid}) — 但发现 Keystore 加密 cookie`,description:`cookies 数=${c.cookieCount||"?"}; 部分行使用 Android Keystore 加密 (跳过)。可能是较新 Bilibili App + Android 14+。可继续同步,但可能数据不全。`,duration:10}):g.success(`Bilibili 环境就绪 — uid=${o.uid}, 找到 ${c.cookieCount||"?"} 个 cookie,可以同步`)}catch(o){g.error({content:"Bilibili 诊断异常",description:o&&o.message?o.message:String(o),duration:8})}finally{b.bilibiliAdbDoctor=!1}}}async function gt(){if(!b.bilibiliAdbSync){b.bilibiliAdbSync=!0;try{const o=await h.bilibiliAdbSync({});if(!o||!o.ok){const x=o&&o.reason||"SYNC_FAILED",H=he(x),J=o&&o.message||"";g.error({content:`Bilibili ADB 同步失败:${H}`,description:J,duration:8});return}const c=o.report||{},u=c.bilibili||{},f=u.eventCounts||{};u.lastErrorCode?g.warning({content:`Bilibili 同步部分完成 (${f.total||0} events)`,description:`lastErrorCode=${u.lastErrorCode}, ${u.lastErrorMessage||""} — 部分接口受反爬限制,稍后重试可补齐`,duration:8}):g.success(`Bilibili 同步成功:history=${f.history||0} / fav=${f.favourite||0} / dyn=${f.dynamic||0} / follow=${f.follow||0} (total=${f.total||0})`),D.value=c,z()}catch(o){g.error({content:"Bilibili ADB 同步异常",description:o&&o.message?o.message:String(o),duration:8})}finally{b.bilibiliAdbSync=!1}}}const pt=[{title:"名称",dataIndex:"name",key:"name",width:140},{title:"版本",dataIndex:"version",key:"version",width:70},{title:"就绪状态",key:"readiness",width:220},{title:"能力",key:"capabilities"},{title:"敏感度",key:"sensitivity",width:140},{title:"操作",key:"actions",width:160,align:"right"}];function ye(o){return y.value[o]||null}const ue=C(!1),Me=C(null);function yt(o){const c=ye(o);Me.value=c||{name:o,status:"needs_setup",guide:null},ue.value=!0}const Ue={ready:"green",needs_setup:"orange",unavailable:"default",error:"red"};function vt(o){return Ue[o]||"default"}const Be={ready:"可采集",needs_setup:"待配置",unavailable:"不支持",error:"异常"};function _t(o){return o?Be[o.status]||o.status:"检测中"}const Ne={local:"本机直采",snapshot:"需手机采集",device:"需 root/本地解密",credential:"需登录授权",platform:"平台限制"};function kt(o){return Ne[o]||o||""}const Fe=new Set(["apple-health","alipay-bill","finance-alipay","netease-music","wechat-pc","qq-pc","dingtalk-pc","feishu-pc","social-douyin","messaging-telegram","messaging-whatsapp","travel-amap"]),He=new Set(["wechat-pc","qq-pc","dingtalk-pc","feishu-pc"]),ze=new Set(["weread"]);function we(o){return o?ze.has(o.name)?"cookie":Fe.has(o.name)?"file":o.category==="local"?"sync":"snapshot":"snapshot"}function bt(o){const c=we(o);return c==="file"?"📂 选择文件采集":c==="cookie"?"🔑 登录采集":c==="sync"?"⚡ 立即采集":"立即同步"}async function At(o){const c=ye(o),u=we(c);if(u==="file"){const f=await h.pickFile({title:`选择 ${c&&c.guide?c.guide.displayName:o} 的数据文件`});if(!f){g.info("已取消选择文件");return}let x;He.has(o)&&(x=window.prompt("如该数据库已解密为明文,直接确定即可;若为加密库请粘贴 64 位十六进制密钥:")||void 0),await Ke(o,f,x)}else if(u==="cookie"){const f=window.prompt("粘贴登录态 Cookie(在已登录的网页 DevTools → Application → Cookies 复制,或整条 Cookie 请求头):");if(!f||!f.trim()){g.info("已取消");return}await We(o,f.trim())}else await qe(o),ue.value=!1}async function We(o,c){b.sync[o]=!0,ce(o);try{const u={cookie:c};typeof h.syncAdapterStream=="function"?D.value=await h.syncAdapterStream(o,u,fe):D.value=await h.syncAdapter(o,u);const f=D.value&&D.value.entityCounts||{},x=(f.events||0)+(f.persons||0)+(f.items||0)+(f.topics||0);g.success(`采集完成:${o} 入库 ${x} 条`),ue.value=!1,await z()}catch(u){g.error(`采集 ${o} 失败: ${u.message}`)}finally{b.sync[o]=!1,S.active=!1}}async function Ke(o,c,u){b.sync[o]=!0,ce(o);try{const f={inputPath:c};u&&(f.key=u),typeof h.syncAdapterStream=="function"?D.value=await h.syncAdapterStream(o,f,fe):D.value=await h.syncAdapter(o,f);const x=D.value&&D.value.entityCounts||{},H=(x.events||0)+(x.persons||0)+(x.items||0)+(x.topics||0);g.success(`采集完成:${o} 入库 ${H} 条`),ue.value=!1,await z()}catch(f){g.error(`采集 ${o} 失败: ${f.message}`)}finally{b.sync[o]=!1,S.active=!1}}const ht=ee(()=>{const o=Y.value||[];if(!o.length)return null;let c=0;for(const u of o){const f=ye(u.name);f&&f.ready&&(c+=1)}return{ready:c,total:o.length}}),wt=[{title:"时间",key:"at",dataIndex:"at",width:170},{title:"动作",dataIndex:"action",key:"action",width:200},{title:"详情",key:"details"}],Ot=[{title:"日期",key:"occurredAt",width:100},{title:"描述",dataIndex:"description",key:"description"},{title:"金额",key:"amount",width:140,align:"right"}];function Ct(o){return o==="high"?"red":o==="medium"?"orange":"default"}function St(o){if(!o)return"";const c=o.entityCounts||{},u=`events=${c.events??0} persons=${c.persons??0} | raw=${o.rawCount??0} invalid=${o.invalidCount??0} | KG triples=${o.kgTripleCount??0} RAG docs=${o.ragDocCount??0} | ${o.durationMs??0}ms`;return o.error?`${u} · 错误: ${o.error}`:u}async function z(){b.refresh=!0;try{e.value=await h.health(),G.value=await h.stats(),Y.value=await h.listAdapters();try{const o=await h.adapterReadiness(),c={};for(const u of Array.isArray(o)?o:[])c[u.name]=u;y.value=c}catch{}try{me.value=await h.listAichatAccounts()}catch{}}catch(o){g.error("刷新失败: "+o.message)}finally{b.refresh=!1}}async function Dt(){if(I.value.trim()){b.ask=!0,O.value="",_.value=null;try{_.value=await h.ask(I.value.trim(),{acceptNonLocal:P.value})}catch(o){O.value=o.message}finally{b.ask=!1}}}async function It(){b.addMock=!0;try{await h.registerMock({count:30,seed:Date.now()%1e3}),await z(),g.success("MockAdapter 已注册(30 条 mock 数据 ready 同步)")}catch(o){g.error("注册失败: "+o.message)}finally{b.addMock=!1}}function ce(o=""){S.active=!0,S.adapter=o,S.phase="starting",S.mailbox="",S.current=0,S.total=0,S.attempt=1,S.errorMessage=""}function fe(o){o&&(o.adapter&&(S.adapter=o.adapter),o.phase&&(S.phase=o.phase),typeof o.current=="number"&&(S.current=o.current),typeof o.total=="number"&&(S.total=o.total),typeof o.attempt=="number"&&(S.attempt=o.attempt),o.mailbox&&(S.mailbox=o.mailbox),o.phase==="error"&&(S.errorMessage=o.message||"sync error"))}async function qe(o){b.sync[o]=!0,ce(o);try{const c=N[o],u=c?{include:{...c}}:{};typeof h.syncAdapterStream=="function"?D.value=await h.syncAdapterStream(o,u,fe):D.value=await h.syncAdapter(o,u),await z()}catch(c){g.error(`同步 ${o} 失败: ${c.message}`)}finally{b.sync[o]=!1,S.active=!1}}async function Et(){b.syncAll=!0,ce("(all)");try{const o=typeof h.syncAllStream=="function"?await h.syncAllStream({},fe):await h.syncAll();D.value=o?.[o.length-1]||null,await z(),g.success(`已同步 ${o?.length||0} 个 adapter`)}catch(o){g.error("同步失败: "+o.message)}finally{b.syncAll=!1,S.active=!1}}async function Pt(o){try{await h.unregister(o),await z()}catch(c){g.error("移除失败: "+c.message)}}async function Rt(o){if(o){b.audit=!0;try{F.value=await h.recentAudit({limit:200})}catch(c){g.error("审计日志加载失败: "+c.message)}finally{b.audit=!1}}}const Oe=ee(()=>!(!M.email||!M.email.includes("@")||!M.authCode||M.authCode.length<4||M.provider==="custom"&&!M.host));function xt(o){return{qq:"QQ: 邮箱 → 设置 → 账户 → IMAP/SMTP → 开启 → 生成授权码",163:"163: 邮箱 → 设置 → POP3/SMTP/IMAP → 开启 IMAP/SMTP 服务 → 授权密码",189:"189: 设置 → 第三方客户端授权码",outlook:"Outlook: account.microsoft.com/security → App password",gmail:"Gmail: myaccount.google.com/apppasswords (需开启 2FA)",custom:"联系你的邮箱管理员获取 IMAP 端点 + app-password"}[o]||"请输入服务商授权码(不是登录密码)"}function Ve(){M.provider="qq",M.email="",M.authCode="",M.host="",M.port=993,M.pdfPasswordHints={idCardLast6:"",phoneLast6:"",cardLast6:""},V.value=null}function Ce(){const o={provider:M.provider,email:M.email.trim(),authCode:M.authCode};return M.provider==="custom"&&(o.host=M.host.trim(),o.port=M.port||993,o.secure=!0),o}function Qe(){const o={};for(const c of Object.keys(M.pdfPasswordHints)){const u=M.pdfPasswordHints[c];typeof u=="string"&&u.trim().length>0&&(o[c]=u.trim())}return Object.keys(o).length>0?o:null}async function Tt(){if(Oe.value){b.testEmail=!0,V.value=null;try{V.value=await h.testEmailAuth(Ce())}catch(o){V.value={ok:!1,error:o.message}}finally{b.testEmail=!1}}}async function Lt(){if(!(!Oe.value||!V.value?.ok)){b.saveEmail=!0;try{const o={},c=Qe();c&&(o.pdfPasswordHints=c),await h.registerEmail(Ce(),o),g.success("邮箱账号已注册"),oe.value=!1,Ve(),await z()}catch(o){g.error("保存失败: "+o.message)}finally{b.saveEmail=!1}}}const Ge=ee(()=>!(!r.email||!r.email.includes("@")||!r.filePath||r.filePath.length<3));function Mt(){r.email="",r.zipPassword="",r.filePath="",k.value=null}async function Ut(){if(Ge.value){b.importAlipay=!0,k.value=null;try{await h.registerAlipay({email:r.email.trim(),zipPassword:r.zipPassword||void 0});const c=/\.zip$/i.test(r.filePath)?{zipPath:r.filePath,zipPassword:r.zipPassword||void 0}:{csvPath:r.filePath};k.value=await h.importAlipayBill(c),k.value?.status==="ok"?(g.success(`导入成功 — ${k.value.entityCounts?.events||0} 笔交易`),await z()):g.error("导入失败: "+(k.value?.error||k.value?.status))}catch(o){k.value={status:"error",error:o.message},g.error("导入失败: "+o.message)}finally{b.importAlipay=!1}}}async function Ye(o){if(o){b.eventDetail=!0,le.value=!0;try{K.value=await h.eventDetail(o)}catch(c){K.value=null,g.error("事件详情加载失败: "+c.message)}finally{b.eventDetail=!1}}}t({showEventDetail:Ye});async function Bt(o){b.skill=!0,ne.value=null;try{ne.value=await h.runSkill(o,{})}catch(c){g.error(`${o} 失败: ${c.message}`)}finally{b.skill=!1}}async function ve(){b.reviewQueue=!0;try{L.value=await h.reviewQueueList(50);const o=await h.resolverStats();Object.assign(Q,o)}catch(o){g.error("待消歧加载失败: "+o.message)}finally{b.reviewQueue=!1}}async function Nt(){w.value=!0,await ve()}async function Ft(o,c){try{await h.reviewDecision(o,c),g.success(`已记录决策: ${c}`),await ve()}catch(u){g.error("决策失败: "+u.message)}}async function Ht(){b.resolverDrain=!0;try{const o=await h.resolverDrain(20);g.success(`drain 完成 — same=${o.same} different=${o.different} review=${o.review}`),await ve()}catch(o){g.error("drain 失败: "+o.message)}finally{b.resolverDrain=!1}}async function je(){try{const o=await h.resolverStats();Object.assign(Q,o)}catch{}}$e(()=>{z(),je()});const Xe={hub:h,health:e,stats:G,adapters:Y,readinessMap:y,askInput:I,askResult:_,askError:O,acceptNonLocal:P,auditOpen:U,auditRows:F,lastSync:D,SYNC_INCLUDE_STORAGE_KEY:De,DEFAULT_SYNC_INCLUDE:q,_loadSyncInclude:B,syncIncludeOptions:N,persistSyncInclude:j,includePopoverOpen:R,INCLUDE_KIND_META:E,adapterHasIncludeToggles:re,onIncludeKindToggle:T,emailConfigOpen:oe,emailForm:M,emailTestResult:V,eventDetailOpen:le,eventDetail:K,emailAccounts:X,skillResult:ne,analysisSkills:se,reviewQueueOpen:w,reviewRows:L,resolverStats:Q,aichatWizardOpen:ke,aichatAccounts:me,onAichatRegistered:ge,wechatWizardOpen:pe,onWechatRegistered:be,alipayConfigOpen:Ae,alipayForm:r,alipayResult:k,syncProgress:S,loading:b,bridgeDoctorReport:Ee,bilibiliReasonMessage:he,douyinReasonMessage:Pe,weiboReasonMessage:Re,xhsReasonMessage:xe,xhsAdbSync:lt,toutiaoReasonMessage:Te,toutiaoAdbSync:st,kuaishouReasonMessage:Le,kuaishouAdbSync:dt,bridgeDoctor:ut,weiboAdbSync:ct,douyinAdbSync:ft,bilibiliAdbDoctor:mt,bilibiliAdbSync:gt,adapterColumns:pt,readinessOf:ye,guideDrawerOpen:ue,guideTarget:Me,openGuide:yt,READINESS_STATUS_COLOR:Ue,readinessStatusColor:vt,READINESS_STATUS_LABEL:Be,readinessStatusLabel:_t,READINESS_CATEGORY_LABEL:Ne,readinessCategoryLabel:kt,FILE_COLLECT_ADAPTERS:Fe,KEYED_FILE_ADAPTERS:He,COOKIE_COLLECT_ADAPTERS:ze,collectMode:we,collectActionLabel:bt,oneClickCollect:At,collectViaCookie:We,collectViaFile:Ke,readinessSummary:ht,auditColumns:wt,transactionColumns:Ot,sensitivityColor:Ct,syncSummary:St,refresh:z,ask:Dt,addMock:It,resetSyncProgress:ce,handleSyncEvent:fe,syncOne:qe,syncAll:Et,unregisterAdapter:Pt,loadAudit:Rt,emailFormValid:Oe,providerAuthHint:xt,resetEmailForm:Ve,buildEmailAccountPayload:Ce,buildPdfHints:Qe,testEmailAuth:Tt,saveEmail:Lt,alipayFormValid:Ge,resetAlipayForm:Mt,importAlipay:Ut,showEventDetail:Ye,runSkill:Bt,loadReviewQueue:ve,openReviewQueue:Nt,decideReview:Ft,drainResolver:Ht,loadResolverStats:je,ref:C,reactive:$,onMounted:$e,computed:ee,get message(){return g},get ReloadOutlined(){return no},get FileSearchOutlined(){return ao},get MessageOutlined(){return oo},get SendOutlined(){return to},get AppstoreOutlined(){return eo},get MailOutlined(){return $t},get InfoCircleOutlined(){return Zt},get WalletOutlined(){return Jt},get LinkOutlined(){return Xt},get BulbOutlined(){return jt},get DollarOutlined(){return et},get TeamOutlined(){return tt},get EnvironmentOutlined(){return ot},get HeartOutlined(){return at},get ClockCircleOutlined(){return nt},get RobotOutlined(){return Yt},get WechatOutlined(){return Gt},get usePersonalDataHub(){return de},AIChatWizard:ho,WechatWizard:xo};return Object.defineProperty(Xe,"__isScriptSetup",{enumerable:!1,value:!0}),Xe}},Lo={class:"pdh-page"},Mo={class:"pdh-header"},Uo={class:"kv"},Bo={key:0,class:"kv"},No={key:1,class:"kv"},Fo={class:"kv"},Ho={key:0,class:"kv hint"},zo={style:{"margin-top":"12px",display:"flex","justify-content":"space-between","align-items":"center"}},Wo={key:0,style:{"margin-top":"12px"}},Ko={key:1,style:{"margin-top":"12px"}},qo={class:"answer"},Vo={style:{"margin-top":"8px","font-size":"12px",color:"var(--text-color-secondary, #888)"}},Qo={key:2,style:{"margin-top":"8px"}},Go={style:{display:"flex","align-items":"center",gap:"8px"}},Yo={class:"hint",style:{"margin-top":"4px"}},jo={key:0,style:{"margin-top":"16px"}},Xo={class:"json-pre",style:{"max-height":"300px",overflow:"auto"}},Jo={key:0,style:{"margin-top":"8px"}},Zo={key:0,style:{"margin-top":"4px",opacity:"0.85"}},$o={key:1,style:{"margin-top":"4px",color:"#ffb3b3"}},ea={style:{color:"#999","font-size":"12px","margin-left":"2px"}},ta={key:0,style:{color:"#8c8c8c","font-size":"12px","margin-top":"2px","line-height":"1.4"}},oa={style:{"min-width":"220px"}},aa={style:{color:"#999","font-size":"12px","margin-left":"4px"}},na={key:2,style:{"margin-top":"12px"}},ia={class:"kv",style:{"margin-bottom":"4px"}},ra={key:0,style:{color:"#faad14"}},la={key:2,class:"kv hint"},sa={key:3,class:"kv hint",style:{color:"#ff4d4f"}},da={key:3,style:{"margin-top":"12px"}},ua={key:2,style:{"margin-top":"8px"}},ca={key:1},fa={style:{"margin-left":"8px"}},ma={key:3,class:"json-pre"},ga={style:{"margin-left":"6px"}},pa={key:0,style:{"margin-left":"6px"}},ya={key:0,class:"hint",style:{"margin-top":"4px"}},va={key:0,style:{"margin-top":"8px"}},_a={style:{"margin-bottom":"12px"}},ka={class:"hint"},ba={class:"kv"},Aa={class:"kv",style:{"margin-top":"4px"}},ha={class:"kv"},wa={key:0,class:"hint",style:{"margin-top":"4px"}},Oa={key:1,style:{"font-size":"11px"}},Ca={style:{"font-weight":"600","margin-bottom":"8px"}},Sa={style:{margin:"0","padding-left":"20px","line-height":"1.9"}},Da={key:0,style:{"margin-top":"6px","font-size":"12px",color:"#52c41a"}},Ia={style:{"font-size":"12px",color:"#999"}};function Ea(ie,t,h,e,G,Y){const y=v("a-button"),I=v("a-badge"),_=v("a-space"),O=v("a-tag"),P=v("a-card"),U=v("a-col"),F=v("a-row"),D=v("a-textarea"),q=v("a-checkbox"),B=v("a-alert"),N=v("a-divider"),j=v("a-spin"),R=v("a-tooltip"),E=v("a-popover"),re=v("a-popconfirm"),T=v("a-table"),oe=v("a-empty"),M=v("a-progress"),V=v("a-select-option"),le=v("a-select"),K=v("a-form-item"),X=v("a-input"),ne=v("a-input-password"),se=v("a-input-number"),w=v("a-form"),L=v("a-drawer"),Q=v("a-descriptions-item"),ke=v("a-descriptions"),me=v("a-list-item-meta"),ge=v("a-list-item"),pe=v("a-list"),be=v("a-collapse-panel"),Ae=v("a-collapse");return l(),p("div",Lo,[d(" Page header "),m("div",Mo,[t[32]||(t[32]=m("div",null,[m("h2",{class:"page-title"},"个人数据中台"),m("p",{class:"page-sub"}," 让数据回归个人 — 各 app 数据本地加密落盘,本地 LLM 跨源分析,零云端外传。 ")],-1)),n(_,null,{default:a(()=>[n(y,{loading:e.loading.refresh,onClick:e.refresh},{icon:a(()=>[n(e.ReloadOutlined)]),default:a(()=>[t[29]||(t[29]=i(" 刷新 ",-1))]),_:1},8,["loading"]),n(I,{count:e.resolverStats.reviewQueue,offset:[0,0]},{default:a(()=>[n(y,{type:"primary",ghost:"",onClick:e.openReviewQueue},{icon:a(()=>[n(e.LinkOutlined)]),default:a(()=>[t[30]||(t[30]=i(" 待消歧 ",-1))]),_:1})]),_:1},8,["count"]),n(y,{type:"primary",ghost:"",onClick:t[0]||(t[0]=r=>e.auditOpen=!0)},{icon:a(()=>[n(e.FileSearchOutlined)]),default:a(()=>[t[31]||(t[31]=i(" 审计日志 ",-1))]),_:1})]),_:1})]),d(" Health row "),n(F,{gutter:16,style:{"margin-bottom":"16px"}},{default:a(()=>[n(U,{xs:24,sm:12,md:6},{default:a(()=>[n(P,{size:"small",title:"Vault"},{extra:a(()=>[n(O,{color:e.health?.vault?.ok?"green":"red"},{default:a(()=>[i(s(e.health?.vault?.ok?"正常":"未就绪"),1)]),_:1},8,["color"])]),default:a(()=>[m("div",Uo,"schema v"+s(e.health?.vault?.schemaVersion??"?"),1),e.stats?.vault?(l(),p("div",Bo," 事件 "+s(e.stats.vault.events)+" · 联系人 "+s(e.stats.vault.persons),1)):d("v-if",!0),e.stats?.vault?(l(),p("div",No," 地点 "+s(e.stats.vault.places)+" · 商品 "+s(e.stats.vault.items)+" · 主题 "+s(e.stats.vault.topics),1)):d("v-if",!0)]),_:1})]),_:1}),n(U,{xs:24,sm:12,md:6},{default:a(()=>[n(P,{size:"small",title:"本地 LLM"},{extra:a(()=>[n(O,{color:e.health?.llm?.ok?e.health.llm.isLocal?"green":"orange":"red"},{default:a(()=>[i(s(e.health?.llm?.ok?e.health.llm.isLocal?"本地":"非本地":"未就绪"),1)]),_:1},8,["color"])]),default:a(()=>[m("div",Fo,s(e.health?.llm?.name||"—"),1),e.health?.llm?.ok&&!e.health.llm.isLocal?(l(),p("div",Ho," ⚠️ 非本地 — ask 会被隐私 gate 拒绝,除非显式 acceptNonLocal ")):d("v-if",!0)]),_:1})]),_:1}),n(U,{xs:24,sm:12,md:6},{default:a(()=>[n(P,{size:"small",title:"KG 索引"},{extra:a(()=>[n(O,{color:e.health?.kgSink?.ok?"green":"default"},{default:a(()=>[i(s(e.health?.kgSink?.ok?"已连接":"不可用"),1)]),_:1},8,["color"])]),default:a(()=>[t[33]||(t[33]=m("div",{class:"kv"},"events / persons → cc knowledge-graph 实体 + 关系",-1))]),_:1})]),_:1}),n(U,{xs:24,sm:12,md:6},{default:a(()=>[n(P,{size:"small",title:"RAG 索引"},{extra:a(()=>[n(O,{color:e.health?.ragSink?.ok?"green":"default"},{default:a(()=>[i(s(e.health?.ragSink?.ok?"已连接":"不可用"),1)]),_:1},8,["color"])]),default:a(()=>[t[34]||(t[34]=m("div",{class:"kv"},"文本 → BM25(vector 留待后续 phase)",-1))]),_:1})]),_:1})]),_:1}),d(" Ask box "),n(P,{style:{"margin-bottom":"16px"}},{title:a(()=>[n(_,null,{default:a(()=>[n(e.MessageOutlined),t[35]||(t[35]=m("span",null,"问我数据",-1))]),_:1})]),default:a(()=>[n(D,{value:e.askInput,"onUpdate:value":t[1]||(t[1]=r=>e.askInput=r),rows:2,placeholder:"例:上个月在淘宝总共花了多少?/我妈生日那周买了啥送哪儿?",onKeydown:Vt(rt(e.ask,["exact","prevent"]),["enter"])},null,8,["value","onKeydown"]),m("div",zo,[n(q,{checked:e.acceptNonLocal,"onUpdate:checked":t[2]||(t[2]=r=>e.acceptNonLocal=r)},{default:a(()=>[...t[36]||(t[36]=[i("允许非本地 LLM (volcengine / anthropic 等)",-1)])]),_:1},8,["checked"]),n(y,{type:"primary",loading:e.loading.ask,disabled:!e.askInput.trim(),onClick:e.ask},{icon:a(()=>[n(e.SendOutlined)]),default:a(()=>[t[37]||(t[37]=i(" 提问 ",-1))]),_:1},8,["loading","disabled"])]),e.askError?(l(),p("div",Wo,[n(B,{type:"error","show-icon":"",message:e.askError},null,8,["message"])])):d("v-if",!0),e.askResult?(l(),p("div",Ko,[e.askResult.warning==="no-facts"?(l(),A(B,{key:0,type:"warning","show-icon":"",message:"vault 里没找到匹配的事件('no-facts')—— 先同步几个 adapter 让数据进 vault",style:{"margin-bottom":"12px"}})):e.askResult.warning==="hallucinated-citations"?(l(),A(B,{key:1,type:"warning","show-icon":"",message:`LLM 引用了 ${e.askResult.hallucinatedCitations?.length||0} 个不存在的 event id —— 模型在编造`,style:{"margin-bottom":"12px"}},null,8,["message"])):d("v-if",!0),m("div",qo,s(e.askResult.answer),1),m("div",Vo," 引用 "+s(e.askResult.citations?.length||0)+" 条事实 · "+s(e.askResult.facts?.length||0)+" facts 入 prompt · "+s(e.askResult.durationMs)+"ms · "+s(e.askResult.model),1),e.askResult.citations?.length?(l(),p("div",Qo,[t[38]||(t[38]=m("span",{style:{"font-size":"12px",color:"var(--text-color-secondary, #888)"}},"事件链接(点击查看明细 / PDF 解密结果):",-1)),n(_,{style:{"margin-top":"4px"},wrap:""},{default:a(()=>[(l(!0),p(W,null,ae(e.askResult.citations,r=>(l(),A(O,{key:r,color:"blue",style:{cursor:"pointer"},onClick:k=>e.showEventDetail(r)},{default:a(()=>[i(s(r),1)]),_:2},1032,["onClick"]))),128))]),_:1})])):d("v-if",!0)])):d("v-if",!0)]),_:1}),d(" Phase 11 — Analysis Skills cards "),n(P,{style:{"margin-bottom":"16px"}},{title:a(()=>[n(_,null,{default:a(()=>[n(e.BulbOutlined),t[39]||(t[39]=m("span",null,"分析 skill (Phase 11)",-1))]),_:1})]),extra:a(()=>[n(O,{color:"purple"},{default:a(()=>[...t[40]||(t[40]=[i("5 内置",-1)])]),_:1})]),default:a(()=>[n(F,{gutter:[12,12]},{default:a(()=>[(l(),p(W,null,ae(e.analysisSkills,r=>n(U,{xs:24,sm:12,md:8,key:r.name},{default:a(()=>[n(P,{size:"small",hoverable:"",onClick:k=>e.runSkill(r.name)},{default:a(()=>[m("div",Go,[(l(),A(Qt(r.icon),{style:{"font-size":"18px",color:"#722ed1"}})),m("strong",null,s(r.label),1)]),m("div",Yo,s(r.description),1)]),_:2},1032,["onClick"])]),_:2},1024)),64))]),_:1}),e.skillResult?(l(),p("div",jo,[n(N,{plain:"",orientation:"left"},{default:a(()=>[i(s(e.skillResult.skill)+" 结果",1)]),_:1}),n(j,{spinning:e.loading.skill},{default:a(()=>[m("pre",Xo,s(JSON.stringify(e.skillResult,null,2)),1),e.skillResult.llm_commentary||e.skillResult.llm_narrative?(l(),p("div",Jo,[n(B,{type:"info",message:e.skillResult.llm_commentary||e.skillResult.llm_narrative},null,8,["message"])])):d("v-if",!0)]),_:1},8,["spinning"])])):d("v-if",!0)]),_:1}),d(" Adapters "),n(P,{style:{"margin-bottom":"16px"}},{title:a(()=>[n(_,null,{default:a(()=>[n(e.AppstoreOutlined),t[41]||(t[41]=m("span",null,"Adapters",-1)),e.readinessSummary?(l(),A(O,{key:0,color:e.readinessSummary.ready===e.readinessSummary.total?"green":"orange"},{default:a(()=>[i(s(e.readinessSummary.ready)+"/"+s(e.readinessSummary.total)+" 可采集 ",1)]),_:1},8,["color"])):d("v-if",!0)]),_:1})]),extra:a(()=>[n(_,null,{default:a(()=>[n(y,{onClick:t[3]||(t[3]=r=>e.emailConfigOpen=!0)},{icon:a(()=>[n(e.MailOutlined)]),default:a(()=>[t[42]||(t[42]=i(" 添加邮箱账号 ",-1))]),_:1}),n(y,{onClick:t[4]||(t[4]=r=>e.alipayConfigOpen=!0)},{icon:a(()=>[n(e.WalletOutlined)]),default:a(()=>[t[43]||(t[43]=i(" 导入支付宝账单 ",-1))]),_:1}),n(y,{onClick:t[5]||(t[5]=r=>e.aichatWizardOpen=!0)},{icon:a(()=>[n(e.RobotOutlined)]),default:a(()=>[t[44]||(t[44]=i(" 添加 AI 对话账号 ",-1))]),_:1}),n(y,{onClick:t[6]||(t[6]=r=>e.wechatWizardOpen=!0)},{icon:a(()=>[n(e.WechatOutlined)]),default:a(()=>[t[45]||(t[45]=i(" 添加 WeChat ",-1))]),_:1}),n(y,{onClick:e.bilibiliAdbDoctor,loading:e.loading.bilibiliAdbDoctor},{default:a(()=>[...t[46]||(t[46]=[i(" 诊断 Bilibili ADB ",-1)])]),_:1},8,["loading"]),n(y,{onClick:e.bilibiliAdbSync,loading:e.loading.bilibiliAdbSync},{default:a(()=>[...t[47]||(t[47]=[i(" 通过 PC ADB 同步 Bilibili ",-1)])]),_:1},8,["loading"]),n(y,{onClick:e.weiboAdbSync,loading:e.loading.weiboAdbSync},{default:a(()=>[...t[48]||(t[48]=[i(" 通过 PC ADB 同步 Weibo ",-1)])]),_:1},8,["loading"]),n(y,{onClick:e.xhsAdbSync,loading:e.loading.xhsAdbSync},{default:a(()=>[...t[49]||(t[49]=[i(" 通过 PC ADB 同步 Xhs ",-1)])]),_:1},8,["loading"]),n(y,{onClick:e.toutiaoAdbSync,loading:e.loading.toutiaoAdbSync},{default:a(()=>[...t[50]||(t[50]=[i(" 通过 PC ADB 同步 Toutiao ",-1)])]),_:1},8,["loading"]),n(y,{onClick:e.kuaishouAdbSync,loading:e.loading.kuaishouAdbSync},{default:a(()=>[...t[51]||(t[51]=[i(" 通过 PC ADB 同步 Kuaishou ",-1)])]),_:1},8,["loading"]),n(y,{onClick:e.bridgeDoctor,loading:e.loading.bridgeDoctor},{default:a(()=>[...t[52]||(t[52]=[i(" 诊断签名 Bridges ",-1)])]),_:1},8,["loading"]),n(y,{onClick:e.douyinAdbSync,loading:e.loading.douyinAdbSync},{default:a(()=>[...t[53]||(t[53]=[i(" 通过 PC ADB 同步 Douyin ",-1)])]),_:1},8,["loading"]),n(y,{onClick:e.addMock,loading:e.loading.addMock},{default:a(()=>[...t[54]||(t[54]=[i(" 注册 MockAdapter(开发) ",-1)])]),_:1},8,["loading"]),n(y,{type:"primary",onClick:e.syncAll,loading:e.loading.syncAll,disabled:!e.adapters.length},{default:a(()=>[...t[55]||(t[55]=[i(" 同步全部 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),default:a(()=>[e.adapters.length?(l(),A(T,{key:0,columns:e.adapterColumns,"data-source":e.adapters,pagination:!1,"row-key":r=>r.name,size:"middle"},{bodyCell:a(({column:r,record:k})=>[r.key==="readiness"?(l(),p(W,{key:0},[e.readinessOf(k.name)?(l(),p(W,{key:0},[n(R,null,{title:a(()=>[m("div",null,s(e.readinessOf(k.name).message),1),e.readinessOf(k.name).actionHint?(l(),p("div",Zo," → "+s(e.readinessOf(k.name).actionHint),1)):d("v-if",!0),e.readinessOf(k.name).lastError?(l(),p("div",$o," 上次同步错误: "+s(e.readinessOf(k.name).lastError),1)):d("v-if",!0)]),default:a(()=>[n(O,{color:e.readinessStatusColor(e.readinessOf(k.name).status)},{default:a(()=>[i(s(e.readinessStatusLabel(e.readinessOf(k.name))),1)]),_:2},1032,["color"])]),_:2},1024),m("span",ea,s(e.readinessCategoryLabel(e.readinessOf(k.name).category)),1),d(` inline reason for the non-ready rows so the user doesn't
3
+ have to hover to learn why a source can't collect `),e.readinessOf(k.name).ready?d("v-if",!0):(l(),p("div",ta,s(e.readinessOf(k.name).message),1))],64)):(l(),A(O,{key:1,color:"default"},{default:a(()=>[...t[56]||(t[56]=[i("检测中",-1)])]),_:1}))],64)):r.key==="sensitivity"?(l(),p(W,{key:1},[n(O,{color:e.sensitivityColor(k.sensitivity)},{default:a(()=>[i(s(k.sensitivity),1)]),_:2},1032,["color"]),k.legalGate?(l(),A(O,{key:0,color:"red",style:{"margin-left":"4px"}},{default:a(()=>[...t[57]||(t[57]=[i("需法律确认",-1)])]),_:1})):d("v-if",!0)],64)):r.key==="capabilities"?(l(!0),p(W,{key:2},ae(k.capabilities,S=>(l(),A(O,{key:S,style:{"margin-right":"4px"}},{default:a(()=>[i(s(S),1)]),_:2},1024))),128)):r.key==="actions"?(l(),A(_,{key:3},{default:a(()=>[n(y,{size:"small",type:"link",onClick:S=>e.openGuide(k.name)},{default:a(()=>[...t[58]||(t[58]=[i(" 如何导入 ",-1)])]),_:1},8,["onClick"]),d(` one-click: file-collect sources open a native picker; local
4
+ sources sync directly; snapshot sources try ADB auto-pull.
5
+ Routing via oneClickCollect so the button is always correct `),n(y,{size:"small",type:"primary",title:e.collectMode(e.readinessOf(k.name)||k)==="file"?"选择文件采集":"采集入库",loading:e.loading.sync[k.name],onClick:S=>e.oneClickCollect(k.name)},{default:a(()=>[i(s(e.collectMode(e.readinessOf(k.name)||k)==="file"?"📂 采集":"采集"),1)]),_:2},1032,["title","loading","onClick"]),d(` Per-kind include toggles (only adapters with multi-kind
6
+ bridge output show this — currently just system-data-android).
7
+ Popover content is a checkbox group writing into
8
+ syncIncludeOptions[record.name]; changes auto-persist to
9
+ localStorage so the user's privacy choice survives reloads. `),e.adapterHasIncludeToggles(k.name)?(l(),A(E,{key:0,open:e.includePopoverOpen[k.name],"onUpdate:open":S=>e.includePopoverOpen[k.name]=S,trigger:"click",placement:"left",title:`${k.name} 采集范围`},{content:a(()=>[m("div",oa,[(l(!0),p(W,null,ae(e.INCLUDE_KIND_META[k.name],S=>(l(),p("div",{key:S.key,style:{margin:"6px 0"}},[n(q,{checked:e.syncIncludeOptions[k.name][S.key]!==!1,onChange:b=>e.onIncludeKindToggle(k.name,S.key,b)},{default:a(()=>[i(s(S.label)+" ",1),m("span",aa,s(S.hint),1),S.sensitive?(l(),A(O,{key:0,color:"orange",size:"small",style:{"margin-left":"4px"}},{default:a(()=>[...t[59]||(t[59]=[i("敏感",-1)])]),_:1})):d("v-if",!0)]),_:2},1032,["checked","onChange"])]))),128)),t[60]||(t[60]=m("div",{style:{"margin-top":"8px","font-size":"11px",color:"#999"}}," 取消勾选的数据本次同步不会拉取入库 ",-1))])]),default:a(()=>[n(y,{size:"small",title:"选择采集范围"},{default:a(()=>[...t[61]||(t[61]=[i("⚙",-1)])]),_:1})]),_:2},1032,["open","onUpdate:open","title"])):d("v-if",!0),n(re,{title:`从注册表移除 ${k.name}?(vault 数据不会删除)`,onConfirm:S=>e.unregisterAdapter(k.name)},{default:a(()=>[n(y,{size:"small",danger:""},{default:a(()=>[...t[62]||(t[62]=[i("移除",-1)])]),_:1})]),_:1},8,["title","onConfirm"])]),_:2},1024)):d("v-if",!0)]),_:1},8,["data-source","row-key"])):(l(),A(oe,{key:1,description:"无已注册 adapter — 点上方按钮注册 MockAdapter 看效果"})),e.syncProgress.active?(l(),p("div",na,[n(P,{size:"small",bordered:!0},{default:a(()=>[m("div",ia,[t[63]||(t[63]=m("strong",null,"同步进行中",-1)),i(" · "+s(e.syncProgress.adapter)+" · "+s(e.syncProgress.phase||"...")+" ",1),e.syncProgress.attempt&&e.syncProgress.attempt>1?(l(),p("span",ra," (重试 #"+s(e.syncProgress.attempt)+") ",1)):d("v-if",!0)]),e.syncProgress.total>0?(l(),A(M,{key:0,percent:Math.round(e.syncProgress.current/e.syncProgress.total*100),status:e.syncProgress.errorMessage?"exception":"active",size:"small"},null,8,["percent","status"])):(l(),A(M,{key:1,percent:0,status:"active",size:"small"})),e.syncProgress.mailbox?(l(),p("div",la," 邮箱 "+s(e.syncProgress.mailbox)+" · "+s(e.syncProgress.current)+" / "+s(e.syncProgress.total),1)):d("v-if",!0),e.syncProgress.errorMessage?(l(),p("div",sa,s(e.syncProgress.errorMessage),1)):d("v-if",!0)]),_:1})])):d("v-if",!0),e.lastSync?(l(),p("div",da,[n(B,{type:e.lastSync.status==="ok"?"success":"error","show-icon":"",message:`同步 ${e.lastSync.adapter}: ${e.lastSync.status}`,description:e.syncSummary(e.lastSync)},null,8,["type","message","description"])])):d("v-if",!0)]),_:1}),d(" Email config drawer (Phase 5.6) "),n(L,{open:e.emailConfigOpen,"onUpdate:open":t[16]||(t[16]=r=>e.emailConfigOpen=r),title:"添加邮箱账号",placement:"right",width:"560","destroy-on-close":!0,onClose:e.resetEmailForm},{footer:a(()=>[n(_,null,{default:a(()=>[n(y,{onClick:t[15]||(t[15]=r=>e.emailConfigOpen=!1)},{default:a(()=>[...t[73]||(t[73]=[i("取消",-1)])]),_:1}),n(y,{loading:e.loading.testEmail,disabled:!e.emailFormValid,onClick:e.testEmailAuth},{default:a(()=>[...t[74]||(t[74]=[i(" 测试连接 ",-1)])]),_:1},8,["loading","disabled"]),n(y,{type:"primary",loading:e.loading.saveEmail,disabled:!e.emailFormValid||!e.emailTestResult?.ok,onClick:e.saveEmail},{default:a(()=>[...t[75]||(t[75]=[i(" 保存并注册 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),default:a(()=>[n(B,{message:"数据回归个人 — 凭证落本地加密文件(与 vault 主密钥同目录),同步动作 100% 本地。",type:"info","show-icon":"",style:{"margin-bottom":"16px"}}),n(w,{layout:"vertical",model:e.emailForm},{default:a(()=>[n(K,{label:"邮箱服务商",required:""},{default:a(()=>[n(le,{value:e.emailForm.provider,"onUpdate:value":t[7]||(t[7]=r=>e.emailForm.provider=r),placeholder:"选择服务商"},{default:a(()=>[n(V,{value:"qq"},{default:a(()=>[...t[64]||(t[64]=[i("QQ 邮箱 (imap.qq.com)",-1)])]),_:1}),n(V,{value:"163"},{default:a(()=>[...t[65]||(t[65]=[i("网易邮箱 163/126",-1)])]),_:1}),n(V,{value:"189"},{default:a(()=>[...t[66]||(t[66]=[i("189 邮箱",-1)])]),_:1}),n(V,{value:"outlook"},{default:a(()=>[...t[67]||(t[67]=[i("Outlook / Hotmail",-1)])]),_:1}),n(V,{value:"gmail"},{default:a(()=>[...t[68]||(t[68]=[i("Gmail",-1)])]),_:1}),n(V,{value:"custom"},{default:a(()=>[...t[69]||(t[69]=[i("自定义 IMAP",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),n(K,{label:"邮箱地址",required:""},{default:a(()=>[n(X,{value:e.emailForm.email,"onUpdate:value":t[8]||(t[8]=r=>e.emailForm.email=r),placeholder:"you@qq.com",autocomplete:"off"},null,8,["value"])]),_:1}),n(K,{required:""},{label:a(()=>[n(_,null,{default:a(()=>[t[70]||(t[70]=m("span",null,"授权码(非登录密码)",-1)),n(R,{title:e.providerAuthHint(e.emailForm.provider)},{default:a(()=>[n(e.InfoCircleOutlined,{style:{color:"#888"}})]),_:1},8,["title"])]),_:1})]),default:a(()=>[n(ne,{value:e.emailForm.authCode,"onUpdate:value":t[9]||(t[9]=r=>e.emailForm.authCode=r),placeholder:"例:QQ 邮箱 设置 → 账户 → 开启 IMAP/SMTP → 生成的授权码",autocomplete:"off"},null,8,["value"])]),_:1}),e.emailForm.provider==="custom"?(l(),A(K,{key:0,label:"IMAP host"},{default:a(()=>[n(X,{value:e.emailForm.host,"onUpdate:value":t[10]||(t[10]=r=>e.emailForm.host=r),placeholder:"mail.example.com"},null,8,["value"])]),_:1})):d("v-if",!0),e.emailForm.provider==="custom"?(l(),A(K,{key:1,label:"端口"},{default:a(()=>[n(se,{value:e.emailForm.port,"onUpdate:value":t[11]||(t[11]=r=>e.emailForm.port=r),min:1,max:65535,"default-value":993},null,8,["value"])]),_:1})):d("v-if",!0),n(N,{orientation:"left",plain:""},{default:a(()=>[...t[71]||(t[71]=[i("PDF 账单解密提示(可选)",-1)])]),_:1}),t[72]||(t[72]=m("p",{class:"hint"},"银行 PDF 月结大多加密;提供几个常用候选项让 Phase 5.5 自动解锁:",-1)),n(K,{label:"身份证后 6 位"},{default:a(()=>[n(X,{value:e.emailForm.pdfPasswordHints.idCardLast6,"onUpdate:value":t[12]||(t[12]=r=>e.emailForm.pdfPasswordHints.idCardLast6=r),placeholder:"123456",autocomplete:"off"},null,8,["value"])]),_:1}),n(K,{label:"手机后 6 位"},{default:a(()=>[n(X,{value:e.emailForm.pdfPasswordHints.phoneLast6,"onUpdate:value":t[13]||(t[13]=r=>e.emailForm.pdfPasswordHints.phoneLast6=r),placeholder:"123456",autocomplete:"off"},null,8,["value"])]),_:1}),n(K,{label:"信用卡尾 6 位"},{default:a(()=>[n(X,{value:e.emailForm.pdfPasswordHints.cardLast6,"onUpdate:value":t[14]||(t[14]=r=>e.emailForm.pdfPasswordHints.cardLast6=r),placeholder:"123456",autocomplete:"off"},null,8,["value"])]),_:1}),e.emailTestResult?(l(),p("div",ua,[n(B,{type:e.emailTestResult.ok?"success":"error","show-icon":"",message:e.emailTestResult.ok?"凭证有效 — 可以保存":`认证失败: ${e.emailTestResult.reason||e.emailTestResult.error}`},null,8,["type","message"])])):d("v-if",!0)]),_:1},8,["model"])]),_:1},8,["open"]),d(" Event detail drawer (Phase 5.6) "),n(L,{open:e.eventDetailOpen,"onUpdate:open":t[17]||(t[17]=r=>e.eventDetailOpen=r),title:e.eventDetail?`事件 ${e.eventDetail.event.id}`:"加载中...",placement:"right",width:"640","destroy-on-close":!0},{default:a(()=>[e.eventDetail?(l(),p(W,{key:0},[n(ke,{column:1,size:"small",bordered:""},{default:a(()=>[n(Q,{label:"类型"},{default:a(()=>[i(s(e.eventDetail.event.subtype),1)]),_:1}),n(Q,{label:"发生于"},{default:a(()=>[i(s(new Date(e.eventDetail.event.occurredAt).toLocaleString()),1)]),_:1}),n(Q,{label:"actor"},{default:a(()=>[i(s(e.eventDetail.event.actor),1)]),_:1}),e.eventDetail.event.content?.title?(l(),A(Q,{key:0,label:"标题"},{default:a(()=>[i(s(e.eventDetail.event.content.title),1)]),_:1})):d("v-if",!0),e.eventDetail.event.source?.adapter?(l(),A(Q,{key:1,label:"来源 adapter"},{default:a(()=>[i(s(e.eventDetail.event.source.adapter)+" @ v"+s(e.eventDetail.event.source.adapterVersion),1)]),_:1})):d("v-if",!0)]),_:1}),e.eventDetail.classification?(l(),A(N,{key:0,orientation:"left",plain:""},{default:a(()=>[...t[76]||(t[76]=[i("分类",-1)])]),_:1})):d("v-if",!0),e.eventDetail.classification?(l(),p("div",ca,[n(O,{color:"blue"},{default:a(()=>[i(s(e.eventDetail.classification.category),1)]),_:1}),n(O,null,{default:a(()=>[i(s(e.eventDetail.classification.layer),1)]),_:1}),m("span",fa,"置信 "+s(Math.round((e.eventDetail.classification.confidence||0)*100))+"%",1)])):d("v-if",!0),e.eventDetail.extraction?(l(),A(N,{key:2,orientation:"left",plain:""},{default:a(()=>[i("结构化字段("+s(e.eventDetail.extraction.template)+")",1)]),_:1})):d("v-if",!0),e.eventDetail.extraction?(l(),p("pre",ma,s(JSON.stringify(e.eventDetail.extraction.fields,null,2)),1)):d("v-if",!0),e.eventDetail.extraction?.pdfExtraction?(l(),A(N,{key:4,orientation:"left",plain:""},{default:a(()=>[...t[77]||(t[77]=[i("PDF 解密 / 解析",-1)])]),_:1})):d("v-if",!0),e.eventDetail.extraction?.pdfExtraction?(l(),A(pe,{key:5,"data-source":e.eventDetail.extraction.pdfExtraction,size:"small"},{renderItem:a(({item:r})=>[n(ge,null,{default:a(()=>[n(me,{title:r.filename},{description:a(()=>[m("div",null,[n(O,{color:r.decrypted?"green":"red"},{default:a(()=>[i(s(r.decrypted?"已解密":"解密失败"),1)]),_:2},1032,["color"]),m("span",ga,"尝试 "+s(r.attempted)+" 次",1),r.transactionsExtracted!=null?(l(),p("span",pa," · 提取 "+s(r.transactionsExtracted)+" 条交易 ",1)):d("v-if",!0)]),r.error?(l(),p("div",ya,s(r.error),1)):d("v-if",!0)]),_:2},1032,["title"])]),_:2},1024)]),_:1},8,["data-source"])):d("v-if",!0),e.eventDetail.extraction?.fields?.transactions?.length?(l(),p(W,{key:6},[n(N,{orientation:"left",plain:""},{default:a(()=>[...t[78]||(t[78]=[i("交易明细",-1)])]),_:1}),n(T,{columns:e.transactionColumns,"data-source":e.eventDetail.extraction.fields.transactions,pagination:{pageSize:10,size:"small"},"row-key":(r,k)=>k,size:"small"},{bodyCell:a(({column:r,record:k})=>[r.key==="occurredAt"?(l(),p(W,{key:0},[i(s(new Date(k.occurredAtMs).toLocaleDateString()),1)],64)):r.key==="amount"?(l(),p("span",{key:1,class:it(k.amount.direction==="in"?"amount-in":"amount-out")},s(k.amount.direction==="in"?"+":"-")+s(k.amount.value.toFixed(2))+" "+s(k.amount.currency),3)):d("v-if",!0)]),_:1},8,["data-source","row-key"])],64)):d("v-if",!0)],64)):(l(),A(oe,{key:1,description:"无事件数据"}))]),_:1},8,["open","title"]),d(" Alipay import drawer (Phase 6) "),n(L,{open:e.alipayConfigOpen,"onUpdate:open":t[22]||(t[22]=r=>e.alipayConfigOpen=r),title:"导入支付宝账单",placement:"right",width:"560","destroy-on-close":!0,onClose:e.resetAlipayForm},{footer:a(()=>[n(_,null,{default:a(()=>[n(y,{onClick:t[21]||(t[21]=r=>e.alipayConfigOpen=!1)},{default:a(()=>[...t[84]||(t[84]=[i("关闭",-1)])]),_:1}),n(y,{type:"primary",loading:e.loading.importAlipay,disabled:!e.alipayFormValid,onClick:e.importAlipay},{default:a(()=>[...t[85]||(t[85]=[i(" 注册账户 + 导入 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),default:a(()=>[n(B,{message:"支付宝官方导出 CSV — 服务器侧全量、稳定无风控。3 分钟拿到 12 个月流水。",type:"info","show-icon":"",style:{"margin-bottom":"16px"}}),n(Ae,{bordered:!1,style:{"margin-bottom":"12px"}},{default:a(()=>[n(be,{header:"如何导出账单(首次必看)"},{default:a(()=>[...t[79]||(t[79]=[m("ol",{style:{"padding-left":"18px","font-size":"13px"}},[m("li",null,"支付宝 app → 我的 → 账单 → 右上角 ⋯"),m("li",null,'点 "开具交易流水证明"'),m("li",null,"选月份范围(最长 12 个月)"),m("li",null,'用途选 "个人对账"'),m("li",null,"发送到你的绑定邮箱"),m("li",null,[i("从邮箱下载 "),m("code",null,"alipay_record_*.zip")]),m("li",null,"解压密码 = 你的身份证后 6 位")],-1)])]),_:1})]),_:1}),n(w,{layout:"vertical",model:e.alipayForm},{default:a(()=>[n(K,{label:"支付宝绑定邮箱(账户标识)",required:""},{default:a(()=>[n(X,{value:e.alipayForm.email,"onUpdate:value":t[18]||(t[18]=r=>e.alipayForm.email=r),placeholder:"alipay-bound@example.com",autocomplete:"off"},null,8,["value"])]),_:1}),n(K,null,{label:a(()=>[n(_,null,{default:a(()=>[t[80]||(t[80]=m("span",null,"ZIP 密码(身份证后 6 位)",-1)),n(R,{title:"支付宝 ZIP 默认密码 = 身份证号后 6 位。也支持自定义密码。"},{default:a(()=>[n(e.InfoCircleOutlined,{style:{color:"#888"}})]),_:1})]),_:1})]),default:a(()=>[n(ne,{value:e.alipayForm.zipPassword,"onUpdate:value":t[19]||(t[19]=r=>e.alipayForm.zipPassword=r),placeholder:"例:123456",autocomplete:"off"},null,8,["value"]),t[81]||(t[81]=m("div",{class:"hint",style:{"margin-top":"4px"}}," 空白则解析时再问,或导入的 ZIP 未加密。 ",-1))]),_:1}),n(N,{orientation:"left",plain:""},{default:a(()=>[...t[82]||(t[82]=[i("选择文件",-1)])]),_:1}),n(K,{label:"ZIP 或 CSV 文件路径"},{default:a(()=>[n(X,{value:e.alipayForm.filePath,"onUpdate:value":t[20]||(t[20]=r=>e.alipayForm.filePath=r),placeholder:"C:\\\\Users\\\\you\\\\Downloads\\\\alipay_record_xxx.zip","allow-clear":""},null,8,["value"]),t[83]||(t[83]=m("div",{class:"hint",style:{"margin-top":"4px"}}," 桌面版可通过 Electron 文件选择器自动填充;web-shell 复制完整路径。 ",-1))]),_:1}),e.alipayResult?(l(),p("div",va,[n(B,{type:e.alipayResult.status==="ok"?"success":"error","show-icon":"",message:e.alipayResult.status==="ok"?`导入成功 — ${e.alipayResult.entityCounts?.events||0} 笔交易`:`导入失败: ${e.alipayResult.error||e.alipayResult.status}`,description:e.alipayResult.status==="ok"?`${e.alipayResult.entityCounts?.persons||0} 个交易对方 · ${e.alipayResult.kgTripleCount||0} KG triples · ${e.alipayResult.durationMs||0}ms`:null},null,8,["type","message","description"])])):d("v-if",!0)]),_:1},8,["model"])]),_:1},8,["open"]),d(" Phase 8.7 — Review queue drawer (待消歧) "),n(L,{open:e.reviewQueueOpen,"onUpdate:open":t[23]||(t[23]=r=>e.reviewQueueOpen=r),title:"待消歧(EntityResolver 模糊判定)",placement:"right",width:"640","destroy-on-close":!0},{default:a(()=>[e.reviewRows.length===0&&!e.loading.reviewQueue?(l(),A(B,{key:0,type:"success","show-icon":"",message:"无待消歧 pair — 所有跨源 Person 已确定。",style:{"margin-bottom":"12px"}})):d("v-if",!0),m("div",_a,[n(_,null,{default:a(()=>[n(y,{loading:e.loading.reviewQueue,onClick:e.loadReviewQueue},{icon:a(()=>[n(e.ReloadOutlined)]),default:a(()=>[t[86]||(t[86]=i(" 刷新 ",-1))]),_:1},8,["loading"]),n(y,{loading:e.loading.resolverDrain,onClick:e.drainResolver},{default:a(()=>[...t[87]||(t[87]=[i(" 手动 drain 队列 ",-1)])]),_:1},8,["loading"]),m("span",ka," queue: "+s(e.resolverStats.queue?.pending||0)+" pending · "+s(e.resolverStats.mergeGroups||0)+" groups ",1)]),_:1})]),n(pe,{"data-source":e.reviewRows,pagination:{pageSize:5,size:"small"},size:"small"},{renderItem:a(({item:r})=>[n(ge,null,{default:a(()=>[n(P,{size:"small",style:{width:"100%"}},{default:a(()=>[m("div",ba,[m("strong",null,"Pair #"+s(r.id),1),r.embed_sim?(l(),A(O,{key:0,color:"blue",style:{"margin-left":"8px"}},{default:a(()=>[i(" sim "+s(Number(r.embed_sim).toFixed(2)),1)]),_:2},1024)):d("v-if",!0),r.llm_verdict?(l(),A(O,{key:1,color:r.llm_verdict==="yes"?"green":r.llm_verdict==="no"?"red":"orange",style:{"margin-left":"4px"}},{default:a(()=>[i(" LLM: "+s(r.llm_verdict),1)]),_:2},1032,["color"])):d("v-if",!0)]),m("div",Aa,"A: "+s(r.a_person_id),1),m("div",ha,"B: "+s(r.b_person_id),1),r.llm_reason?(l(),p("div",wa," LLM 理由: "+s(r.llm_reason),1)):d("v-if",!0),n(_,{style:{"margin-top":"8px"}},{default:a(()=>[n(y,{size:"small",type:"primary",onClick:k=>e.decideReview(r.id,"same")},{default:a(()=>[...t[88]||(t[88]=[i("同一人",-1)])]),_:1},8,["onClick"]),n(y,{size:"small",danger:"",onClick:k=>e.decideReview(r.id,"different")},{default:a(()=>[...t[89]||(t[89]=[i("不同人",-1)])]),_:1},8,["onClick"]),n(y,{size:"small",onClick:k=>e.decideReview(r.id,"skip")},{default:a(()=>[...t[90]||(t[90]=[i("跳过",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:1},8,["data-source"])]),_:1},8,["open"]),d(" Audit drawer "),n(L,{open:e.auditOpen,"onUpdate:open":t[24]||(t[24]=r=>e.auditOpen=r),title:"审计日志(数据 lineage)",placement:"right",width:"600",onAfterOpenChange:e.loadAudit},{default:a(()=>[n(T,{columns:e.auditColumns,"data-source":e.auditRows,pagination:{pageSize:20,size:"small"},"row-key":r=>r.id,size:"small"},{bodyCell:a(({column:r,record:k})=>[r.key==="at"?(l(),p(W,{key:0},[i(s(new Date(k.at).toLocaleString()),1)],64)):r.key==="details"?(l(),p("code",Oa,s(k.details||"—"),1)):d("v-if",!0)]),_:1},8,["data-source","row-key"])]),_:1},8,["open"]),d(" Phase 10.3 — AIChat WebView 鉴权向导 "),n(e.AIChatWizard,{open:e.aichatWizardOpen,"onUpdate:open":t[25]||(t[25]=r=>e.aichatWizardOpen=r),"existing-accounts":e.aichatAccounts,onRegistered:e.onAichatRegistered},null,8,["open","existing-accounts"]),d(" Phase 12.6.10 — WeChat env-probe + register 向导 "),n(e.WechatWizard,{open:e.wechatWizardOpen,"onUpdate:open":t[26]||(t[26]=r=>e.wechatWizardOpen=r),onRegistered:e.onWechatRegistered},null,8,["open"]),d(" 如何导入 — per-source onboarding guide "),n(L,{open:e.guideDrawerOpen,"onUpdate:open":t[28]||(t[28]=r=>e.guideDrawerOpen=r),title:e.guideTarget&&e.guideTarget.guide?`如何导入:${e.guideTarget.guide.displayName}`:"如何导入",width:"520",placement:"right"},{default:a(()=>[e.guideTarget&&e.guideTarget.guide?(l(),p(W,{key:0},[n(_,{style:{"margin-bottom":"12px"},wrap:""},{default:a(()=>[n(O,{color:e.readinessStatusColor(e.guideTarget.status)},{default:a(()=>[i(s(e.readinessStatusLabel(e.guideTarget)),1)]),_:1},8,["color"]),n(O,null,{default:a(()=>[i(s(e.readinessCategoryLabel(e.guideTarget.guide.category)),1)]),_:1})]),_:1}),n(B,{type:"info",message:e.guideTarget.guide.summary,"show-icon":"",style:{"margin-bottom":"8px"}},null,8,["message"]),!e.guideTarget.ready&&e.guideTarget.message?(l(),A(B,{key:0,type:"warning",message:`当前状态:${e.guideTarget.message}`,"show-icon":"",style:{"margin-bottom":"16px"}},null,8,["message"])):d("v-if",!0),(l(!0),p(W,null,ae(e.guideTarget.guide.methods,(r,k)=>(l(),p("div",{key:k,style:{"margin-bottom":"20px"}},[m("div",Ca,[i(s(r.label)+" ",1),r.recommended?(l(),A(O,{key:0,color:"green",style:{"margin-left":"6px"}},{default:a(()=>[...t[91]||(t[91]=[i("推荐",-1)])]),_:1})):d("v-if",!0)]),m("ol",Sa,[(l(!0),p(W,null,ae(r.steps,(S,b)=>(l(),p("li",{key:b},s(S),1))),128))]),r.note?(l(),p("div",Da,s(r.note),1)):d("v-if",!0)]))),128)),n(N,{style:{margin:"12px 0"}}),n(_,null,{default:a(()=>[n(y,{type:"primary",size:"large",loading:e.loading.sync[e.guideTarget.name],onClick:t[27]||(t[27]=r=>e.oneClickCollect(e.guideTarget.name))},{default:a(()=>[i(s(e.collectActionLabel(e.guideTarget)),1)]),_:1},8,["loading"]),m("span",Ia,s(e.collectMode(e.guideTarget)==="file"?"选择导出/解密好的文件,自动入库":e.collectMode(e.guideTarget)==="sync"?"直接读取本机数据入库":"完成上述步骤后点此入库"),1)]),_:1})],64)):(l(),A(oe,{key:1,description:"该数据源暂无导入指引"}))]),_:1},8,["open","title"])])}const La=Ie(To,[["render",Ea],["__scopeId","data-v-92d13942"],["__file","/tmp/cc-web-panel-lKopdB/repo/packages/web-panel/src/views/PersonalDataHub.vue"]]);export{La as default};
@@ -0,0 +1 @@
1
+ .page-title[data-v-ee23c547]{margin:0;color:var(--text-primary);font-size:22px;font-weight:600}.page-sub[data-v-ee23c547]{margin:4px 0 0;color:var(--text-secondary);font-size:13px}.pipeline-tabs[data-v-ee23c547] .ant-tabs-nav{margin-bottom:16px}.filter-bar[data-v-ee23c547]{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}.stage-flow[data-v-ee23c547]{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.stage-pill[data-v-ee23c547]{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:14px;background:#1677ff1f;color:#1677ff;font-size:12px;font-weight:500;border:1px solid rgba(22,119,255,.25)}.stage-pill.is-gate[data-v-ee23c547]{background:#faad1426;color:#faad14;border-color:#faad144d}.stage-idx[data-v-ee23c547]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;background:currentColor;color:#fff!important;border-radius:50%;font-size:10px;font-weight:700}.stage-pill.is-gate .stage-idx[data-v-ee23c547]{background:#faad14}.stage-arrow[data-v-ee23c547]{color:var(--text-muted);font-size:11px}.gate-icon[data-v-ee23c547]{font-size:11px}.tpl-stages[data-v-ee23c547]{display:flex;gap:4px;flex-wrap:wrap}
@@ -0,0 +1 @@
1
+ import{I as m,J as b,U as v,R as p,c as i,K as n,V as d,S as g,o as pe,a as ce,b as W,r as A,P as s,Q as f,F as h,Z as F,_ as Oe}from"./vendor-BvqAck49.js";import{_ as Le,u as ue,b as de,d as x}from"./index-GzuCTHVZ.js";import{s as be}from"./community-parser-CO25nZFt.js";import{a0 as ze,d as Be,L as Ee,f as Fe,Y as De,aU as Re,z as Ne,a4 as Me,G as je,ap as we,_ as Ie,as as Ue,R as Ge}from"./icons-DP3uiYxy.js";function Y(t){const o=be(t);if(!o)return null;try{return JSON.parse(o)}catch{}const r=o.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!r)return null;try{return JSON.parse(r[0])}catch{return null}}const _e=Object.freeze(["pending","running","paused","completed","failed","cancelled"]),Je=Object.freeze(["pending","running","gate-waiting","completed","failed","skipped"]),qe=Object.freeze(["requirement","architecture","code-generation","testing","code-review","deploy","monitoring"]),ve=Object.freeze(["feature","bugfix","refactor","security-audit"]),Ke=Object.freeze(["git-pr","docker","npm-publish","local","staging","custom"]),Ve=Object.freeze(["code-review","deploy"]);function N(t,o=0){return typeof t=="number"&&Number.isFinite(t)?t:o}function ie(t){if(!t)return{noDb:!1,error:""};const o=be(t),r=/No database/i.test(o);return{noDb:r,error:r?"No database":""}}function We(t,o=0){if(!t||typeof t!="object")return null;const r=t.id||"";return r?{key:r,id:r,pipelineId:String(t.pipelineId||""),stageIndex:N(t.stageIndex,o),name:String(t.name||""),status:String(t.status||"pending").toLowerCase(),gateRequired:!!t.gateRequired,gateApproved:!!t.gateApproved,gateRejectReason:t.gateRejectReason||"",input:t.input??null,output:t.output??null,errorMessage:t.errorMessage||"",startedAt:t.startedAt??null,completedAt:t.completedAt??null,_idx:o}:null}function Ye(t,o=0){if(!t||typeof t!="object")return null;const r=t.id||"";if(!r)return null;const e=Array.isArray(t.stages)?t.stages.map(We).filter(Boolean):[];return{key:r,id:r,name:t.name||"",template:String(t.template||""),config:t.config??null,status:String(t.status||"pending").toLowerCase(),currentStage:N(t.currentStage,0),result:t.result??null,errorMessage:t.errorMessage||"",createdAt:t.createdAt??null,updatedAt:t.updatedAt??null,startedAt:t.startedAt??null,completedAt:t.completedAt??null,stages:e,_idx:o}}function fe(t){const o=Y(t);return Array.isArray(o)?o.map(Ye).filter(Boolean):[]}function He(t,o=0){if(!t||typeof t!="object")return null;const r=t.id||"";return r?{key:r,id:r,pipelineId:String(t.pipelineId||""),strategy:String(t.strategy||"").toLowerCase(),config:t.config??null,status:String(t.status||"pending").toLowerCase(),result:t.result??null,errorMessage:t.errorMessage||"",rolledBackAt:t.rolledBackAt??null,rollbackReason:t.rollbackReason||"",createdAt:t.createdAt??null,completedAt:t.completedAt??null,_idx:o}:null}function ge(t){const o=Y(t);return Array.isArray(o)?o.map(He).filter(Boolean):[]}function Qe(t,o=0){if(!t||typeof t!="object")return null;const r=t.name||"";return r?{key:r,name:r,description:String(t.description||""),stages:Array.isArray(t.stages)?t.stages.filter(e=>typeof e=="string"):[],gateStages:Array.isArray(t.gateStages)?t.gateStages.filter(e=>typeof e=="string"):[],_idx:o}:null}function me(t){const o=Y(t);return Array.isArray(o)?o.map(Qe).filter(Boolean):[]}const Ze={totalPipelines:0,pipelinesByTemplate:{},pipelinesByStatus:{},totalStages:0,stagesByStatus:{},totalArtifacts:0,totalDeploys:0,deploysByStrategy:{}};function ye(t){const o=JSON.parse(JSON.stringify(Ze));for(const e of ve)o.pipelinesByTemplate[e]=0;for(const e of _e)o.pipelinesByStatus[e]=0;for(const e of Je)o.stagesByStatus[e]=0;for(const e of Ke)o.deploysByStrategy[e]=0;const r=Y(t);if(!r||typeof r!="object"||Array.isArray(r))return o;if(o.totalPipelines=N(r.totalPipelines,0),o.totalStages=N(r.totalStages,0),o.totalArtifacts=N(r.totalArtifacts,0),o.totalDeploys=N(r.totalDeploys,0),r.pipelinesByTemplate&&typeof r.pipelinesByTemplate=="object")for(const[e,_]of Object.entries(r.pipelinesByTemplate))typeof _=="number"&&Number.isFinite(_)&&(o.pipelinesByTemplate[e]=_);if(r.pipelinesByStatus&&typeof r.pipelinesByStatus=="object")for(const[e,_]of Object.entries(r.pipelinesByStatus))typeof _=="number"&&Number.isFinite(_)&&(o.pipelinesByStatus[e]=_);if(r.stagesByStatus&&typeof r.stagesByStatus=="object")for(const[e,_]of Object.entries(r.stagesByStatus))typeof _=="number"&&Number.isFinite(_)&&(o.stagesByStatus[e]=_);if(r.deploysByStrategy&&typeof r.deploysByStrategy=="object")for(const[e,_]of Object.entries(r.deploysByStrategy))typeof _=="number"&&Number.isFinite(_)&&(o.deploysByStrategy[e]=_);return o}function Xe(t){if(t==null||t==="")return"—";const o=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(o.getTime())?String(t):o.toLocaleString("zh-CN",{hour12:!1})}const $e={__name:"Pipeline",setup(t,{expose:o}){o();const r=ue(),{t:e}=de(),_=A(!1),I=A(!1),C=A([]),U=A([]),G=A([]),L=A({totalPipelines:0,pipelinesByTemplate:{},pipelinesByStatus:{},totalStages:0,stagesByStatus:{},totalArtifacts:0,totalDeploys:0,deploysByStrategy:{}}),P=A({noDb:!1,error:""}),z=A("pipelines"),D=A(""),B=A(""),M=A(!1),k=A(!1),S=ce({template:"feature",name:"",configJson:""}),J=A(null),q=W(()=>[{title:e("pipeline.cols.name"),key:"name"},{title:e("pipeline.cols.template"),key:"template",width:"110px"},{title:e("pipeline.cols.progress"),key:"progress",width:"160px"},{title:e("pipeline.cols.currentStage"),key:"currentStage",width:"140px"},{title:e("pipeline.cols.status"),key:"status",width:"110px"},{title:e("pipeline.cols.createdAt"),key:"createdAt",width:"160px"},{title:e("pipeline.cols.action"),key:"action",width:"260px"}]),j=W(()=>[{title:e("pipeline.cols.pipeline"),key:"pipeline",width:"180px"},{title:e("pipeline.cols.strategy"),key:"strategy",width:"120px"},{title:e("pipeline.cols.status"),key:"status",width:"110px"},{title:e("pipeline.cols.createdAt"),key:"createdAt"}]),H=W(()=>{let a=C.value;return D.value&&(a=a.filter(u=>u.template===D.value)),B.value&&(a=a.filter(u=>u.status===B.value)),a});function Q(a){const u=`pipeline.templateLabels.${a}`,y=e(u);return y===u?a:y}function Z(a){return{feature:"green",bugfix:"red",refactor:"purple","security-audit":"volcano"}[a]||"default"}function w(a){const u=`pipeline.stageLabels.${a}`,y=e(u);return y===u?a:y}function X(a){const u=`pipeline.pipelineStatusLabels.${a}`,y=e(u);return y===u?a:y}function $(a){return{pending:"default",running:"processing",paused:"orange",completed:"green",failed:"red",cancelled:"default"}[a]||"default"}function ee(a){const u=`pipeline.stageStatusLabels.${a}`,y=e(u);return y===u?a:y}function K(a){return{pending:"default",running:"processing","gate-waiting":"gold",completed:"green",failed:"red",skipped:"default"}[a]||"default"}function E(a){const u=`pipeline.deployStatusLabels.${a}`,y=e(u);return y===u?a:y}function te(a){return{pending:"default",running:"processing",succeeded:"green",failed:"red","rolled-back":"orange"}[a]||"default"}function le(a){return{"git-pr":"blue",docker:"cyan","npm-publish":"magenta",local:"default",staging:"orange",custom:"purple"}[a]||"default"}function ae(a){return{pending:"gray",running:"blue","gate-waiting":"gold",completed:"green",failed:"red",skipped:"gray"}[a]||"gray"}function l(a){if(!a.stages.length)return 0;const u=a.stages.filter(y=>y.status==="completed").length;return Math.round(100*u/a.stages.length)}function c(a){if(!a.stages.length)return null;const u=Math.min(a.currentStage,a.stages.length-1);return a.stages[u]||null}function T(a){if(a.status!=="running")return!1;const u=c(a);return u&&u.status==="gate-waiting"&&u.gateRequired&&!u.gateApproved}function Se(a){return a.status==="pending"||a.status==="running"||a.status==="paused"}async function V(){_.value=!0,P.value={noDb:!1,error:""};try{const[a,u,y,O]=await Promise.all([r.execute("pipeline list",1e4).catch(()=>({output:""})),r.execute("pipeline deploys",1e4).catch(()=>({output:""})),r.execute("pipeline templates",8e3).catch(()=>({output:""})),r.execute("pipeline stats",8e3).catch(()=>({output:""}))]),se=[a,u,O].map(ne=>ie(ne.output)).find(ne=>ne.noDb);se&&(P.value=se),C.value=fe(a.output),U.value=ge(u.output),G.value=me(y.output),L.value=ye(O.output)}catch(a){x.error(e("pipeline.msg.loadFailed")+": "+(a?.message||a))}finally{_.value=!1}}async function ke(){if(!S.template){x.warning(e("pipeline.msg.selectTemplate"));return}if(S.configJson.trim())try{JSON.parse(S.configJson)}catch{x.warning(e("pipeline.msg.badConfigJson"));return}I.value=!0;try{const a=[`pipeline create --template ${S.template}`];S.name.trim()&&a.push(`--name "${S.name.trim().replace(/"/g,'\\"')}"`),S.configJson.trim()&&a.push(`--config '${S.configJson.trim().replace(/'/g,"'\\''")}'`);const{output:u}=await r.execute(a.join(" "),1e4);if(ie(u).noDb){x.error(e("pipeline.msg.needCcInit"));return}if(/error|Error|失败/i.test(u)&&!/"id"/.test(u)){x.error(e("pipeline.msg.createFailed")+": "+u.slice(0,120));return}x.success(e("pipeline.msg.createSuccess")),M.value=!1,oe(),await V()}catch(a){x.error(e("pipeline.msg.createFailed")+": "+(a?.message||a))}finally{I.value=!1}}async function Ae(a){await R(a,`pipeline start ${a.id}`,e("pipeline.msg.started"))}async function Ce(a){await R(a,`pipeline pause ${a.id}`,e("pipeline.msg.paused"))}async function Pe(a){await R(a,`pipeline resume ${a.id}`,e("pipeline.msg.resumed"))}async function he(a){await R(a,`pipeline approve ${a.id}`,e("pipeline.msg.gateApproved"))}async function xe(a){await R(a,`pipeline cancel ${a.id}`,e("pipeline.msg.cancelled"))}async function R(a,u,y){try{const{output:O}=await r.execute(u,8e3);if(/error|Error|失败/i.test(O)&&!/"id"/.test(O)){x.error(e("pipeline.msg.actionFailed")+": "+O.slice(0,120));return}x.success(y),await V()}catch(O){x.error(e("pipeline.msg.actionFailed")+": "+(O?.message||O))}}function Te(a){J.value=a,k.value=!0}function oe(){S.template="feature",S.name="",S.configJson=""}pe(V);const re={ws:r,t:e,loading:_,creating:I,pipelines:C,deploys:U,templates:G,stats:L,errorState:P,activeTab:z,templateFilter:D,statusFilter:B,showCreateModal:M,showDetailsModal:k,createForm:S,currentPipeline:J,pipelineColumns:q,deployColumns:j,filteredPipelines:H,templateLabel:Q,templateColor:Z,stageLabel:w,pipelineStatusLabel:X,pipelineStatusColor:$,stageStatusLabel:ee,stageStatusColor:K,deployStatusLabel:E,deployStatusColor:te,strategyColor:le,timelineColor:ae,pipelineProgress:l,currentStageRecord:c,needsApproval:T,canCancel:Se,loadAll:V,createPipeline:ke,startPipeline:Ae,pausePipeline:Ce,resumePipeline:Pe,approveGate:he,cancelPipeline:xe,runPipelineAction:R,viewPipelineDetails:Te,resetCreateForm:oe,ref:A,computed:W,onMounted:pe,reactive:ce,get ReloadOutlined(){return Ge},get PlusOutlined(){return Ue},get ApartmentOutlined(){return Ie},get PlayCircleOutlined(){return we},get BlockOutlined(){return je},get FileTextOutlined(){return Me},get CloudUploadOutlined(){return Ne},get ArrowRightOutlined(){return Re},get LockOutlined(){return De},get CheckCircleOutlined(){return Fe},get LoadingOutlined(){return Ee},get CloseCircleOutlined(){return Be},get ClockCircleOutlined(){return ze},get message(){return x},get useI18n(){return de},get useWsStore(){return ue},get parsePipelines(){return fe},get parseDeploys(){return ge},get parseTemplates(){return me},get parseStats(){return ye},get detectPipelineError(){return ie},get formatPipelineTime(){return Xe},get PIPELINE_STATUSES(){return _e},get STAGE_NAMES(){return qe},get TEMPLATES(){return ve},get GATE_STAGES(){return Ve}};return Object.defineProperty(re,"__isScriptSetup",{enumerable:!1,value:!0}),re}},et={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},tt={class:"page-title"},lt={class:"page-sub"},at={class:"stage-flow"},nt={class:"stage-idx"},it={class:"filter-bar"},ot={style:{color:"var(--text-primary)","font-weight":"500"}},rt={style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},st={key:1,style:{color:"var(--text-muted)"}},pt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},ct={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ut={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},dt={key:3,style:{color:"var(--text-secondary)","font-size":"11px"}},ft={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},gt={style:{color:"var(--text-secondary)","font-size":"12px",margin:"0 0 10px"}},mt={class:"tpl-stages"},yt={key:0,style:{"padding-top":"8px"}},bt={style:{color:"var(--text-primary)","font-size":"13px",margin:"20px 0 10px"}},_t={style:{display:"flex","align-items":"center",gap:"8px","flex-wrap":"wrap"}},vt={style:{color:"var(--text-primary)","font-weight":"500"}},St={key:0,style:{color:"#52c41a","margin-left":"4px"}},kt={key:0,style:{color:"#ff4d4f","font-size":"11px","margin-top":"4px"}},At={key:1,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},Ct={key:0};function Pt(t,o,r,e,_,I){const C=m("a-button"),U=m("a-space"),G=m("a-alert"),L=m("a-statistic"),P=m("a-card"),z=m("a-col"),D=m("a-row"),B=m("a-radio-button"),M=m("a-radio-group"),k=m("a-tag"),S=m("a-progress"),J=m("a-popconfirm"),q=m("a-table"),j=m("a-tab-pane"),H=m("a-tabs"),Q=m("a-select-option"),Z=m("a-select"),w=m("a-form-item"),X=m("a-input"),$=m("a-textarea"),ee=m("a-form"),K=m("a-modal"),E=m("a-descriptions-item"),te=m("a-descriptions"),le=m("a-timeline-item"),ae=m("a-timeline");return s(),b("div",null,[v("div",et,[v("div",null,[v("h2",tt,p(t.$t("pipeline.title")),1),v("p",lt,p(t.$t("pipeline.subtitle")),1)]),i(U,null,{default:n(()=>[i(C,{loading:e.loading,onClick:e.loadAll},{icon:n(()=>[i(e.ReloadOutlined)]),default:n(()=>[f(" "+p(t.$t("pipeline.refresh")),1)]),_:1},8,["loading"]),i(C,{type:"primary",onClick:o[0]||(o[0]=l=>e.showCreateModal=!0)},{icon:n(()=>[i(e.PlusOutlined)]),default:n(()=>[f(" "+p(t.$t("pipeline.create")),1)]),_:1})]),_:1})]),d(" noDb banner "),e.errorState.noDb?(s(),g(G,{key:0,type:"info","show-icon":"",message:t.$t("pipeline.noDb.message"),description:t.$t("pipeline.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):d("v-if",!0),d(" Stat cards "),i(D,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[i(z,{xs:12,sm:8,lg:5},{default:n(()=>[i(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[i(L,{title:t.$t("pipeline.stats.totalPipelines"),value:e.stats.totalPipelines,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:n(()=>[i(e.ApartmentOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),i(z,{xs:12,sm:8,lg:5},{default:n(()=>[i(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[i(L,{title:t.$t("pipeline.stats.running"),value:e.stats.pipelinesByStatus.running||0,"value-style":{color:(e.stats.pipelinesByStatus.running||0)>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:n(()=>[i(e.PlayCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),i(z,{xs:12,sm:8,lg:5},{default:n(()=>[i(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[i(L,{title:t.$t("pipeline.stats.totalStages"),value:e.stats.totalStages,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:n(()=>[i(e.BlockOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),i(z,{xs:12,sm:8,lg:5},{default:n(()=>[i(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[i(L,{title:t.$t("pipeline.stats.totalArtifacts"),value:e.stats.totalArtifacts,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:n(()=>[i(e.FileTextOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),i(z,{xs:24,sm:8,lg:4},{default:n(()=>[i(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[i(L,{title:t.$t("pipeline.stats.totalDeploys"),value:e.stats.totalDeploys,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:n(()=>[i(e.CloudUploadOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),d(" Stages catalogue "),i(P,{title:t.$t("pipeline.stagesCardTitle"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:n(()=>[v("div",at,[(s(!0),b(h,null,F(e.STAGE_NAMES,(l,c)=>(s(),b(h,{key:l},[v("span",{class:Oe(["stage-pill",{"is-gate":e.GATE_STAGES.includes(l)}])},[v("span",nt,p(c+1),1),f(" "+p(e.stageLabel(l))+" ",1),e.GATE_STAGES.includes(l)?(s(),g(e.LockOutlined,{key:0,class:"gate-icon"})):d("v-if",!0)],2),c<e.STAGE_NAMES.length-1?(s(),g(e.ArrowRightOutlined,{key:0,class:"stage-arrow"})):d("v-if",!0)],64))),128))])]),_:1},8,["title"]),d(" Tabs "),i(H,{activeKey:e.activeTab,"onUpdate:activeKey":o[3]||(o[3]=l=>e.activeTab=l),class:"pipeline-tabs"},{default:n(()=>[d(" ── Pipelines tab ─────────────────────────────────────────── "),i(j,{key:"pipelines",tab:t.$t("pipeline.tabs.pipelines")},{default:n(()=>[v("div",it,[i(M,{value:e.templateFilter,"onUpdate:value":o[1]||(o[1]=l=>e.templateFilter=l),size:"small","button-style":"solid"},{default:n(()=>[i(B,{value:""},{default:n(()=>[f(p(t.$t("pipeline.filters.allTemplates")),1)]),_:1}),(s(!0),b(h,null,F(e.TEMPLATES,l=>(s(),g(B,{key:l,value:l},{default:n(()=>[f(p(e.templateLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),i(M,{value:e.statusFilter,"onUpdate:value":o[2]||(o[2]=l=>e.statusFilter=l),size:"small"},{default:n(()=>[i(B,{value:""},{default:n(()=>[f(p(t.$t("pipeline.filters.allStatuses")),1)]),_:1}),(s(!0),b(h,null,F(e.PIPELINE_STATUSES,l=>(s(),g(B,{key:l,value:l},{default:n(()=>[f(p(e.pipelineStatusLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),i(q,{columns:e.pipelineColumns,"data-source":e.filteredPipelines,pagination:{pageSize:20,showTotal:l=>t.$t("pipeline.table.totalSuffix",{n:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:l,record:c})=>[l.key==="name"?(s(),b(h,{key:0},[v("span",ot,p(c.name||t.$t("pipeline.table.unnamed")),1),v("div",rt,p(c.id.slice(0,16)),1)],64)):d("v-if",!0),l.key==="template"?(s(),g(k,{key:1,color:e.templateColor(c.template)},{default:n(()=>[f(p(e.templateLabel(c.template)),1)]),_:2},1032,["color"])):d("v-if",!0),l.key==="progress"?(s(),g(S,{key:2,percent:e.pipelineProgress(c),size:"small",status:c.status==="failed"?"exception":c.status==="completed"?"success":"active",format:()=>`${c.currentStage}/${c.stages.length}`},null,8,["percent","status","format"])):d("v-if",!0),l.key==="currentStage"?(s(),b(h,{key:3},[e.currentStageRecord(c)?(s(),g(k,{key:0,color:e.stageStatusColor(e.currentStageRecord(c).status)},{default:n(()=>[f(p(e.stageLabel(e.currentStageRecord(c).name)),1)]),_:2},1032,["color"])):(s(),b("span",st,"—"))],64)):d("v-if",!0),l.key==="status"?(s(),g(k,{key:4,color:e.pipelineStatusColor(c.status)},{default:n(()=>[f(p(e.pipelineStatusLabel(c.status)),1)]),_:2},1032,["color"])):d("v-if",!0),l.key==="createdAt"?(s(),b("span",pt,p(e.formatPipelineTime(c.createdAt)),1)):d("v-if",!0),l.key==="action"?(s(),b(h,{key:6},[i(C,{size:"small",type:"link",onClick:T=>e.viewPipelineDetails(c)},{default:n(()=>[f(p(t.$t("pipeline.table.actions.details")),1)]),_:1},8,["onClick"]),c.status==="pending"?(s(),g(C,{key:0,size:"small",type:"link",onClick:T=>e.startPipeline(c)},{default:n(()=>[f(p(t.$t("pipeline.table.actions.start")),1)]),_:1},8,["onClick"])):d("v-if",!0),c.status==="running"?(s(),g(C,{key:1,size:"small",type:"link",onClick:T=>e.pausePipeline(c)},{default:n(()=>[f(p(t.$t("pipeline.table.actions.pause")),1)]),_:1},8,["onClick"])):d("v-if",!0),c.status==="paused"?(s(),g(C,{key:2,size:"small",type:"link",onClick:T=>e.resumePipeline(c)},{default:n(()=>[f(p(t.$t("pipeline.table.actions.resume")),1)]),_:1},8,["onClick"])):d("v-if",!0),e.needsApproval(c)?(s(),g(C,{key:3,size:"small",type:"link",style:{color:"#52c41a"},onClick:T=>e.approveGate(c)},{default:n(()=>[f(p(t.$t("pipeline.table.actions.approveGate")),1)]),_:1},8,["onClick"])):d("v-if",!0),e.canCancel(c)?(s(),g(J,{key:4,title:t.$t("pipeline.table.cancelConfirm"),"ok-text":t.$t("pipeline.table.cancelOk"),"cancel-text":t.$t("pipeline.table.cancelBack"),onConfirm:T=>e.cancelPipeline(c)},{default:n(()=>[i(C,{size:"small",type:"link",danger:""},{default:n(()=>[f(p(t.$t("pipeline.table.actions.cancel")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):d("v-if",!0)],64)):d("v-if",!0)]),emptyText:n(()=>[v("div",ct,[i(e.ApartmentOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+p(e.templateFilter||e.statusFilter?t.$t("pipeline.table.emptyFiltered"):t.$t("pipeline.table.empty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),d(" ── Deploys tab ───────────────────────────────────────────── "),i(j,{key:"deploys",tab:t.$t("pipeline.tabs.deploys")},{default:n(()=>[i(q,{columns:e.deployColumns,"data-source":e.deploys,pagination:{pageSize:20,showTotal:l=>t.$t("pipeline.table.totalSuffix",{n:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:l,record:c})=>[l.key==="pipeline"?(s(),b("span",ut,p(c.pipelineId.slice(0,12)),1)):d("v-if",!0),l.key==="strategy"?(s(),g(k,{key:1,color:e.strategyColor(c.strategy),style:{"font-family":"monospace"}},{default:n(()=>[f(p(c.strategy),1)]),_:2},1032,["color"])):d("v-if",!0),l.key==="status"?(s(),g(k,{key:2,color:e.deployStatusColor(c.status)},{default:n(()=>[f(p(e.deployStatusLabel(c.status)),1)]),_:2},1032,["color"])):d("v-if",!0),l.key==="createdAt"?(s(),b("span",dt,p(e.formatPipelineTime(c.createdAt)),1)):d("v-if",!0)]),emptyText:n(()=>[v("div",ft,[i(e.CloudUploadOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+p(t.$t("pipeline.table.emptyDeploys")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),d(" ── Templates tab ─────────────────────────────────────────── "),i(j,{key:"templates",tab:t.$t("pipeline.tabs.templates")},{default:n(()=>[i(D,{gutter:[16,16]},{default:n(()=>[(s(!0),b(h,null,F(e.templates,l=>(s(),g(z,{key:l.name,xs:24,sm:12,lg:12},{default:n(()=>[i(P,{title:e.templateLabel(l.name),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:n(()=>[i(k,{color:e.templateColor(l.name)},{default:n(()=>[f(p(l.name),1)]),_:2},1032,["color"])]),default:n(()=>[v("p",gt,p(l.description),1),v("div",mt,[(s(!0),b(h,null,F(l.stages,(c,T)=>(s(),g(k,{key:c,color:l.gateStages.includes(c)?"gold":"blue",style:{"font-size":"11px"}},{default:n(()=>[f(p(T+1)+". "+p(e.stageLabel(c))+" ",1),l.gateStages.includes(c)?(s(),g(e.LockOutlined,{key:0,style:{"font-size":"10px","margin-left":"2px"}})):d("v-if",!0)]),_:2},1032,["color"]))),128))])]),_:2},1032,["title"])]),_:2},1024))),128))]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),d(" ── Create pipeline modal ────────────────────────────────── "),i(K,{open:e.showCreateModal,"onUpdate:open":o[7]||(o[7]=l=>e.showCreateModal=l),title:t.$t("pipeline.create_modal.title"),"confirm-loading":e.creating,width:540,"ok-text":t.$t("pipeline.create_modal.ok"),"cancel-text":t.$t("pipeline.create_modal.cancel"),onOk:e.createPipeline,onCancel:e.resetCreateForm},{default:n(()=>[i(ee,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[i(w,{label:t.$t("pipeline.create_modal.templateLabel"),required:""},{default:n(()=>[i(Z,{value:e.createForm.template,"onUpdate:value":o[4]||(o[4]=l=>e.createForm.template=l)},{default:n(()=>[(s(!0),b(h,null,F(e.TEMPLATES,l=>(s(),g(Q,{key:l,value:l},{default:n(()=>[f(p(e.templateLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),i(w,{label:t.$t("pipeline.create_modal.nameLabel")},{default:n(()=>[i(X,{value:e.createForm.name,"onUpdate:value":o[5]||(o[5]=l=>e.createForm.name=l),placeholder:t.$t("pipeline.create_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),i(w,{label:t.$t("pipeline.create_modal.configLabel")},{default:n(()=>[i($,{value:e.createForm.configJson,"onUpdate:value":o[6]||(o[6]=l=>e.createForm.configJson=l),placeholder:t.$t("pipeline.create_modal.configPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),d(" ── Pipeline details modal ───────────────────────────────── "),i(K,{open:e.showDetailsModal,"onUpdate:open":o[8]||(o[8]=l=>e.showDetailsModal=l),title:t.$t("pipeline.details.title",{label:e.currentPipeline?.name||e.currentPipeline?.id?.slice(0,12)||""}),width:780,footer:null},{default:n(()=>[e.currentPipeline?(s(),b("div",yt,[i(te,{column:2,size:"small",bordered:""},{default:n(()=>[i(E,{label:t.$t("pipeline.details.template")},{default:n(()=>[i(k,{color:e.templateColor(e.currentPipeline.template)},{default:n(()=>[f(p(e.templateLabel(e.currentPipeline.template)),1)]),_:1},8,["color"])]),_:1},8,["label"]),i(E,{label:t.$t("pipeline.details.status")},{default:n(()=>[i(k,{color:e.pipelineStatusColor(e.currentPipeline.status)},{default:n(()=>[f(p(e.pipelineStatusLabel(e.currentPipeline.status)),1)]),_:1},8,["color"])]),_:1},8,["label"]),i(E,{label:t.$t("pipeline.details.progress"),span:2},{default:n(()=>[i(S,{percent:e.pipelineProgress(e.currentPipeline),status:e.currentPipeline.status==="failed"?"exception":e.currentPipeline.status==="completed"?"success":"active",size:"small"},null,8,["percent","status"])]),_:1},8,["label"]),i(E,{label:t.$t("pipeline.details.createdAt")},{default:n(()=>[f(p(e.formatPipelineTime(e.currentPipeline.createdAt)),1)]),_:1},8,["label"]),i(E,{label:t.$t("pipeline.details.startedAt")},{default:n(()=>[f(p(e.formatPipelineTime(e.currentPipeline.startedAt)),1)]),_:1},8,["label"])]),_:1}),v("h4",bt,p(t.$t("pipeline.details.stagesHeader")),1),i(ae,{mode:"left"},{default:n(()=>[(s(!0),b(h,null,F(e.currentPipeline.stages,l=>(s(),g(le,{key:l.id,color:e.timelineColor(l.status)},{dot:n(()=>[l.status==="completed"?(s(),g(e.CheckCircleOutlined,{key:0,style:{color:"#52c41a"}})):l.status==="running"?(s(),g(e.LoadingOutlined,{key:1,style:{color:"#1677ff"}})):l.status==="failed"?(s(),g(e.CloseCircleOutlined,{key:2,style:{color:"#ff4d4f"}})):l.status==="gate-waiting"?(s(),g(e.LockOutlined,{key:3,style:{color:"#faad14"}})):(s(),g(e.ClockCircleOutlined,{key:4,style:{color:"var(--text-muted)"}}))]),default:n(()=>[v("div",_t,[v("span",vt,p(l.stageIndex+1)+". "+p(e.stageLabel(l.name)),1),i(k,{color:e.stageStatusColor(l.status),style:{"font-size":"11px"}},{default:n(()=>[f(p(e.stageStatusLabel(l.status)),1)]),_:2},1032,["color"]),l.gateRequired?(s(),g(k,{key:0,color:"gold",style:{"font-size":"10px"}},{default:n(()=>[i(e.LockOutlined),f(" "+p(t.$t("pipeline.details.needsApproval"))+" ",1),l.gateApproved?(s(),b("span",St,p(t.$t("pipeline.details.approved")),1)):d("v-if",!0)]),_:2},1024)):d("v-if",!0)]),l.errorMessage?(s(),b("div",kt,p(t.$t("pipeline.details.errorPrefix"))+" "+p(l.errorMessage),1)):d("v-if",!0),l.startedAt?(s(),b("div",At,[f(p(e.formatPipelineTime(l.startedAt))+" ",1),l.completedAt?(s(),b("span",Ct," → "+p(e.formatPipelineTime(l.completedAt)),1)):d("v-if",!0)])):d("v-if",!0)]),_:2},1032,["color"]))),128))]),_:1})])):d("v-if",!0)]),_:1},8,["open","title"])])}const Lt=Le($e,[["render",Pt],["__scopeId","data-v-ee23c547"],["__file","/tmp/cc-web-panel-lKopdB/repo/packages/web-panel/src/views/Pipeline.vue"]]);export{Lt as default};