chainlesschain 0.162.17 → 0.162.20

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 (166) hide show
  1. package/package.json +3 -3
  2. package/src/assets/web-panel/.build-hash +1 -1
  3. package/src/assets/web-panel/assets/{AIOps-BnOiVQsQ.js → AIOps-Buh_mYlF.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-Tw6tLfY1.js → ActionButton-Dc7c0bZf.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-Des59eT3.js → Analytics-CR9TWfM-.js} +2 -2
  6. package/src/assets/web-panel/assets/AppLayout-DVfanUep.js +3 -0
  7. package/src/assets/web-panel/assets/{AppLayout-BLCe1k8m.css → AppLayout-DleZFgpe.css} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-JX1upUxG.js → Audit-BxojBqRe.js} +1 -1
  9. package/src/assets/web-panel/assets/{Backup-ByvQLRhY.js → Backup-CGkreaK9.js} +1 -1
  10. package/src/assets/web-panel/assets/{BaseInput-DC-h8Hd-.js → BaseInput-B-Q2ZGfz.js} +1 -1
  11. package/src/assets/web-panel/assets/{Chat-D9dJ3NKb.js → Chat-Dd_VC5Av.js} +3 -3
  12. package/src/assets/web-panel/assets/ChatBubbleRenderer-B64kZfRH.js +1 -0
  13. package/src/assets/web-panel/assets/ChatBubbleRenderer-CO908iBt.css +1 -0
  14. package/src/assets/web-panel/assets/{Checkbox-n3tD-95B.js → Checkbox-NYBD1rCW.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-BV9t0CmU.js → Codegen-B3Kqhgv1.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-4KhPnXFB.js → Col-2A3Bg2GC.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-R1hZqHEr.js → Community-C84SkDEJ.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-Bo4r1Z3L.js → Compact-Crv3pyZJ.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-Dwywk8U2.js → Compliance-D4qasxoY.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-DTBwVdcR.js → Cowork-Bfbvysw-.js} +3 -3
  21. package/src/assets/web-panel/assets/{Cron-BrveD2Al.js → Cron-Dkjyiekd.js} +1 -1
  22. package/src/assets/web-panel/assets/{Crosschain-C63oZCeg.js → Crosschain-DbJm9Kjd.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-Cyfo7zh4.js → DID-C2HI6acG.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-_EOI1Ax4.js → Dashboard-BXMY7QVP.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-BWYHGHO3.js → Dropdown-DcOykpfh.js} +1 -1
  26. package/src/assets/web-panel/assets/EmailListRenderer-CVJ1j3Ll.css +1 -0
  27. package/src/assets/web-panel/assets/EmailListRenderer-Doo52F2M.js +1 -0
  28. package/src/assets/web-panel/assets/{Federation-CU03AB2d.js → Federation-cHubZT6U.js} +1 -1
  29. package/src/assets/web-panel/assets/{FormItemContext-DECACp9C.js → FormItemContext-B5OVlspi.js} +1 -1
  30. package/src/assets/web-panel/assets/GenericCardRenderer-DtJFcJYl.css +1 -0
  31. package/src/assets/web-panel/assets/GenericCardRenderer-OgA46PJq.js +1 -0
  32. package/src/assets/web-panel/assets/{Git-BhpPR-ck.js → Git-_OKH_JOq.js} +2 -2
  33. package/src/assets/web-panel/assets/{Governance-BtpmvOHi.js → Governance-CTByBwSV.js} +1 -1
  34. package/src/assets/web-panel/assets/{Inference-DfPuEW02.js → Inference-C0nqgySA.js} +1 -1
  35. package/src/assets/web-panel/assets/{KnowledgeGraph-CeA_2NFe.js → KnowledgeGraph-CWW4ZIqH.js} +1 -1
  36. package/src/assets/web-panel/assets/{Logs-C_ozF-bn.js → Logs-DrwqUltr.js} +1 -1
  37. package/src/assets/web-panel/assets/{Marketplace-WgBvu6Ma.js → Marketplace-LJMRx-dm.js} +1 -1
  38. package/src/assets/web-panel/assets/{McpTools-CNIz8liM.js → McpTools-F_EjC8j3.js} +3 -3
  39. package/src/assets/web-panel/assets/{Memory-DEN8NgRg.js → Memory-VonDem9-.js} +2 -2
  40. package/src/assets/web-panel/assets/{MobileBridge-CP0rj-Fx.js → MobileBridge-CUWxIrfb.js} +1 -1
  41. package/src/assets/web-panel/assets/{MobileProjects-x3zDbPDI.js → MobileProjects-CGOo70lk.js} +1 -1
  42. package/src/assets/web-panel/assets/{Mtc-CC4PEFJV.js → Mtc-CqUquFbQ.js} +1 -1
  43. package/src/assets/web-panel/assets/{MtcAudit-BHB0GvyW.js → MtcAudit-CRVusaip.js} +1 -1
  44. package/src/assets/web-panel/assets/{Multisig-BUPfLbde.js → Multisig-B0o8Mv8T.js} +2 -2
  45. package/src/assets/web-panel/assets/{NLProgramming-DNOkByM8.js → NLProgramming-CxQINUhu.js} +1 -1
  46. package/src/assets/web-panel/assets/{Notes-U-RIv-kE.js → Notes-B6Q_apFW.js} +1 -1
  47. package/src/assets/web-panel/assets/{NotificationSettings-B-q6tsxf.js → NotificationSettings-DO-lgp6x.js} +1 -1
  48. package/src/assets/web-panel/assets/OrderTableRenderer-BnOISpKI.css +1 -0
  49. package/src/assets/web-panel/assets/OrderTableRenderer-DxoBoMtz.js +1 -0
  50. package/src/assets/web-panel/assets/{Organization-DJLNuZ2_.js → Organization-DqJ_KawH.js} +4 -4
  51. package/src/assets/web-panel/assets/{Overflow-BxTl0aeE.js → Overflow-Cg4iKODM.js} +1 -1
  52. package/src/assets/web-panel/assets/{P2P-Czzalu_0.js → P2P-n5GPMrwC.js} +1 -1
  53. package/src/assets/web-panel/assets/PdhVaultBrowser-B9ZGFpn4.css +1 -0
  54. package/src/assets/web-panel/assets/PdhVaultBrowser-BdZI0EJs.js +7 -0
  55. package/src/assets/web-panel/assets/{Permissions-BBw06EGK.js → Permissions-BjtwAIGb.js} +3 -3
  56. package/src/assets/web-panel/assets/PersonalDataHub-Bsf3Wh6n.js +1 -0
  57. package/src/assets/web-panel/assets/{PersonalDataHub-Dvaa8niQ.css → PersonalDataHub-D0ncF92t.css} +1 -1
  58. package/src/assets/web-panel/assets/{Pipeline-qLLWNe2i.js → Pipeline-BZe2-Flj.js} +1 -1
  59. package/src/assets/web-panel/assets/Privacy-OJqMon4c.js +1 -0
  60. package/src/assets/web-panel/assets/{ProjectInit-CmJ0VPGy.js → ProjectInit-Dw-5SMG1.js} +2 -2
  61. package/src/assets/web-panel/assets/{ProjectSettings-D1Xm2EwO.js → ProjectSettings-DxqW44cV.js} +1 -1
  62. package/src/assets/web-panel/assets/{Projects-DLN-awqS.js → Projects-CPOqs2ec.js} +1 -1
  63. package/src/assets/web-panel/assets/{Providers-D164DGWo.js → Providers-hBfwscEl.js} +1 -1
  64. package/src/assets/web-panel/assets/{QuickAsk-BRCH7WgH.js → QuickAsk-DA3WFFAr.js} +1 -1
  65. package/src/assets/web-panel/assets/{Recommend-BWZhT_-2.js → Recommend-DMpz3URg.js} +1 -1
  66. package/src/assets/web-panel/assets/Reputation-6-z56FwC.js +1 -0
  67. package/src/assets/web-panel/assets/{Row-BbuTB-ny.js → Row-CL1Y6SfW.js} +1 -1
  68. package/src/assets/web-panel/assets/{RssFeed-CLegyrrb.js → RssFeed-BIHU2bMf.js} +3 -3
  69. package/src/assets/web-panel/assets/{Search-Bz41pkvW.js → Search-CRAfuEX-.js} +1 -1
  70. package/src/assets/web-panel/assets/{Security-D4NWRpgV.js → Security-CVya3gvH.js} +3 -3
  71. package/src/assets/web-panel/assets/{Services-CP_6SXST.js → Services-Cxv7_umF.js} +2 -2
  72. package/src/assets/web-panel/assets/{Skeleton-CdRO3MnV.js → Skeleton-D_GvsCtv.js} +1 -1
  73. package/src/assets/web-panel/assets/{Skills-BmghgIL3.js → Skills-DyiEpcvf.js} +1 -1
  74. package/src/assets/web-panel/assets/{Sla-DjAIXxkm.js → Sla-wiglQzXV.js} +1 -1
  75. package/src/assets/web-panel/assets/{SpeechSettings-DYk-En4R.js → SpeechSettings-CLtovaa5.js} +1 -1
  76. package/src/assets/web-panel/assets/{SyncSettings-CglX98G4.js → SyncSettings-BOgVef1O.js} +1 -1
  77. package/src/assets/web-panel/assets/{Tasks-BcLMTSP3.js → Tasks-Ik8AX7-J.js} +1 -1
  78. package/src/assets/web-panel/assets/{Templates-BCs5bP8P.js → Templates-CireiINW.js} +1 -1
  79. package/src/assets/web-panel/assets/{Tenant-B5jLtdWR.js → Tenant-t7jF9NkQ.js} +1 -1
  80. package/src/assets/web-panel/assets/{Terminal-CZKKYYaA.js → Terminal-Btq_O951.js} +1 -1
  81. package/src/assets/web-panel/assets/TimelineRenderer-DmztdsbF.css +1 -0
  82. package/src/assets/web-panel/assets/TimelineRenderer-hC_Piiwy.js +1 -0
  83. package/src/assets/web-panel/assets/{Tokens-B8aHonMu.js → Tokens-BTIqA2J1.js} +1 -1
  84. package/src/assets/web-panel/assets/{Trigger-D6jDjaX1.js → Trigger-Dzv2gJpK.js} +1 -1
  85. package/src/assets/web-panel/assets/Trust-B13QpWOh.js +1 -0
  86. package/src/assets/web-panel/assets/{UkeySign-B1IDXsz6.js → UkeySign-CFj3UF4G.js} +1 -1
  87. package/src/assets/web-panel/assets/{VideoEditing-DHvglMzO.js → VideoEditing-CGMOGTQb.js} +1 -1
  88. package/src/assets/web-panel/assets/{Wallet-DAUh8j_b.js → Wallet-BkCJ573Y.js} +1 -1
  89. package/src/assets/web-panel/assets/{WebAuthn-D0Y8wGZt.js → WebAuthn-C8dCrmGH.js} +4 -4
  90. package/src/assets/web-panel/assets/{WorkflowEditor-BqZgQo4U.js → WorkflowEditor-CclfhxwH.js} +1 -1
  91. package/src/assets/web-panel/assets/{chat-CtfIYzWq.js → chat-CW_X_A9l.js} +1 -1
  92. package/src/assets/web-panel/assets/{colors-B6ZfKKgZ.js → colors-6GtheJb2.js} +1 -1
  93. package/src/assets/web-panel/assets/{compact-item--HQOl9D1.js → compact-item-tz7dJapw.js} +1 -1
  94. package/src/assets/web-panel/assets/{createContext-Bf-YNOPI.js → createContext-CbiGcRCw.js} +1 -1
  95. package/src/assets/web-panel/assets/{hasIn-D5G7UiYx.js → hasIn-bmNFD3PH.js} +1 -1
  96. package/src/assets/web-panel/assets/icons-AILO5ZcK.js +57 -0
  97. package/src/assets/web-panel/assets/{index-DJlTZ7oK.js → index-B2P1c5yD.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-DZyNnZb9.js → index-B3UH6whC.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-CkoQfJv0.js → index-B6GgMo1k.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-ofgv0VHh.js → index-B9sJpsz3.js} +1 -1
  101. package/src/assets/web-panel/assets/index-BFkZAdio.js +1 -0
  102. package/src/assets/web-panel/assets/{index-CGG5O6Zh.js → index-BM4slfDH.js} +1 -1
  103. package/src/assets/web-panel/assets/index-BhgINPAH.js +1 -0
  104. package/src/assets/web-panel/assets/{index-UppuQXbk.js → index-BxCPkuTG.js} +2 -2
  105. package/src/assets/web-panel/assets/{index-BPvA_8ed.js → index-C5zlrlPd.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-OSlN9c4x.js → index-CBNnbQxM.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-BWOeC8v6.js → index-CKP-AZD3.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-DIYydwQc.js → index-CLk3xgD2.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-2QuOKVo1.js → index-CQ7aJ-8s.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-_ZD6hPvh.js → index-CTnIkosg.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-Ca_5Za9D.js → index-CU0MeCwH.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-B23hk7ZY.js → index-CV9aPPYM.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-BtjPgDzA.js → index-CYIwY9zQ.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-XwovMqXr.js → index-Cb33JbDx.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-BOzNKGtD.js → index-CgLF_zD1.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-CihsW323.js → index-Cs5KWviO.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-CAPj11l4.js → index-CzIQ0u4e.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-DzvrUpDp.js → index-DK7ee5hC.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-g_d5tOWL.js → index-DMGJqZ-o.js} +1 -1
  120. package/src/assets/web-panel/assets/{index--KnB-1F0.js → index-Da2RUdcb.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-__qol0SM.js → index-DaK59dFw.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-Dfm65OiJ.js → index-DaYfMM7r.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-B75QpKcS.js → index-De0xvTEv.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-ByjAzHrC.js → index-DeoJYTHX.js} +4 -4
  125. package/src/assets/web-panel/assets/{index-OY_eegoA.js → index-Dj1N1idV.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-CcbuseEC.js → index-DvWXdCxl.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-CQIzU6GO.js → index-DxHmNJ8S.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-xOVop383.js → index-DxdLksCx.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-CmVrKala.js → index-KFdfLxVt.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-BBSGKZ-l.js → index-S9g45I5s.js} +3 -3
  131. package/src/assets/web-panel/assets/{index-BKsNidiT.js → index-UId2JAY6.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-BRPGyig2.js → index-UjxsY00y.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-BrJfwd9_.js → index-b7sSMzkC.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-DqJoAOhC.js → index-l2VM-W36.js} +1 -1
  135. package/src/assets/web-panel/assets/{index-CVTgMzbI.js → index-zP_o4yKV.js} +1 -1
  136. package/src/assets/web-panel/assets/{initDefaultProps-DjUNw-1y.js → initDefaultProps-BTGwT0NA.js} +1 -1
  137. package/src/assets/web-panel/assets/{motion-Cd6xXLlf.js → motion-BheHkG8e.js} +1 -1
  138. package/src/assets/web-panel/assets/{move-B_W-Y6JL.js → move-BkMMNkAw.js} +1 -1
  139. package/src/assets/web-panel/assets/{omit-BCZBLb_-.js → omit-B9zmSFf6.js} +1 -1
  140. package/src/assets/web-panel/assets/{pickAttrs-CjDhGYLm.js → pickAttrs-CFNBcA5Z.js} +1 -1
  141. package/src/assets/web-panel/assets/{placementArrow-CSC2rU9-.js → placementArrow-B4mvrUYw.js} +1 -1
  142. package/src/assets/web-panel/assets/{responsiveObserve-DnyswFkD.js → responsiveObserve-BJqsSjxJ.js} +1 -1
  143. package/src/assets/web-panel/assets/{slide-DujNhbuH.js → slide-Cj78MXSi.js} +1 -1
  144. package/src/assets/web-panel/assets/{statusUtils-U2lNCQiL.js → statusUtils-Bk6ChXAV.js} +1 -1
  145. package/src/assets/web-panel/assets/{styleChecker-Ch2rQftE.js → styleChecker-B_YDSNYf.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFlexGapSupport-5XxNwjTL.js → useFlexGapSupport-q90prOQL.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFs-pv2YfF-X.js → useFs-BtpFJ9kI.js} +1 -1
  148. package/src/assets/web-panel/assets/usePersonalDataHub-C3qhf1sQ.js +1 -0
  149. package/src/assets/web-panel/assets/{vnode-CU0J2mVX.js → vnode-Bz2j0JiG.js} +1 -1
  150. package/src/assets/web-panel/assets/{zoom-ZII_iqXl.js → zoom-CzaEtel2.js} +1 -1
  151. package/src/assets/web-panel/index.html +2 -2
  152. package/src/commands/__tests__/hub-ask.test.js +136 -0
  153. package/src/commands/ask.js +110 -43
  154. package/src/commands/hub.js +260 -26
  155. package/src/constants.js +7 -0
  156. package/src/gateways/ws/personal-data-hub-protocol.js +151 -9
  157. package/src/lib/host-adb-bridge.js +430 -0
  158. package/src/lib/personal-data-hub-wiring.js +85 -0
  159. package/src/assets/web-panel/assets/AppLayout-hku5aFqc.js +0 -3
  160. package/src/assets/web-panel/assets/PersonalDataHub-CmTx090l.js +0 -1
  161. package/src/assets/web-panel/assets/Privacy-CStpViYX.js +0 -1
  162. package/src/assets/web-panel/assets/Reputation-DSTNi8ge.js +0 -1
  163. package/src/assets/web-panel/assets/Trust-DX_BvTA9.js +0 -1
  164. package/src/assets/web-panel/assets/icons-BOPtEWK4.js +0 -57
  165. package/src/assets/web-panel/assets/index-B-xjGh0B.js +0 -1
  166. package/src/assets/web-panel/assets/index-B9RskCJ5.js +0 -1
@@ -1,4 +1,4 @@
1
- import{o as Ee,M as y,R as O,P as u,u as o,c as n,N as s,r as d,K as _,L as p,O as b,Q as w,S as f,F as xe,a1 as ke,f as A}from"./vendor-DhFY8mDK.js";import{_ as Ge,b as He,u as Xe,d as g}from"./index-ByjAzHrC.js";import{R as Ye,ar as _e,Q as Ze,aN as we,ah as ea,b as aa,a7 as ta}from"./icons-BOPtEWK4.js";const oa={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},na={class:"page-title"},la={class:"page-sub"},ia={key:0,style:{"text-align":"center",padding:"60px"}},sa={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},ra={key:1,style:{color:"#1677ff"}},ua={key:2,style:{color:"var(--text-secondary)"}},da={key:3,style:{color:"var(--text-muted)","font-size":"12px"}},pa={key:0,style:{"text-align":"center",padding:"40px"}},ca={key:1},ma={style:{"font-family":"monospace",color:"#ccc"}},ga={key:0,style:{"white-space":"pre-wrap","word-break":"break-all",color:"var(--text-secondary)","font-size":"11px",background:"var(--bg-base)",padding:"12px","border-radius":"6px",border:"1px solid var(--border-color)","max-height":"300px","overflow-y":"auto"}},va={style:{"margin-bottom":"16px",display:"flex","align-items":"center",gap:"12px"}},ya={key:0,style:{"text-align":"center",padding:"60px"}},fa={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},ba={key:1,style:{color:"#e0e0e0"}},_a={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},za={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"12px"}},xa={style:{color:"var(--text-primary)",margin:"0","font-size":"15px"}},ka={key:0,style:{"text-align":"center",padding:"40px"}},wa={key:0,style:{color:"#e0e0e0"}},ha={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},Ca={key:2,style:{color:"var(--text-secondary)"}},Oa={key:0,style:{"text-align":"center",padding:"60px"}},Ia={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},La={key:1,style:{color:"#e0e0e0"}},Ta={key:3,style:{color:"var(--text-secondary)"}},ja={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},Aa={__name:"Organization",setup($a){const{t:e}=He(),k=Xe(),$=d("orgs"),te=d(!1);async function he(){te.value=!0;try{$.value==="orgs"?await T():$.value==="members"?(await T(),z.value&&(await me(),await ge())):$.value==="approvals"&&await S()}finally{te.value=!1}}function Ce(l){l==="orgs"&&I.value.length===0&&T(),l==="members"&&I.value.length===0&&T(),l==="approvals"&&H.value.length===0&&S()}function U(l){try{const a=l.trim(),t=a.indexOf("["),r=a.indexOf("{"),c=t>=0&&(r<0||t<r)?t:r;return c>=0?JSON.parse(a.slice(c)):null}catch{return null}}const oe=d(!1),I=d([]),D=d(!1),ne=d(!1),F=d(""),V=d(""),le=d(!1),ie=d(!1),h=d({}),L=d(""),Oe=A(()=>[{title:e("organization.orgColumns.id"),key:"id",dataIndex:"id",width:"100px"},{title:e("organization.orgColumns.name"),key:"name",dataIndex:"name",width:"180px"},{title:e("organization.orgColumns.owner"),key:"owner",dataIndex:"owner",width:"140px"},{title:e("organization.orgColumns.description"),key:"description",dataIndex:"description",ellipsis:!0},{title:e("organization.orgColumns.memberCount"),key:"memberCount",dataIndex:"memberCount",width:"90px"}]),ze=A(()=>I.value.map(l=>({label:l.name,value:l.id})));async function T(){oe.value=!0;try{const{output:l}=await k.execute("org list --json",15e3),a=U(l);Array.isArray(a)?I.value=a.map((t,r)=>({key:t.id||r,id:t.id||"-",name:t.name||"-",owner:t.owner||"-",description:t.description||"",memberCount:t.memberCount??t.members??0})):I.value=Ie(l)}catch(l){g.error(e("organization.messages.loadOrgsFailed",{err:l.message}))}finally{oe.value=!1}}function Ie(l){const a=[],t=l.split(`
2
- `);for(const r of t){const c=r.trim();if(!c||c.startsWith("─")||c.match(/^\d+ org/i))continue;const v=c.split(/\s*[|│]\s*/);v.length>=3&&a.push({key:a.length,id:v[0]||"-",name:v[1]||"-",owner:v[2]||"-",description:v[3]||"",memberCount:parseInt(v[4],10)||0})}return a}async function Le(){if(!F.value.trim()){g.warning(e("organization.messages.orgNameRequired"));return}ne.value=!0;try{const l=F.value.trim().replace(/"/g,'\\"'),a=V.value.trim().replace(/"/g,'\\"');let t=`org create "${l}" --json`;a&&(t=`org create "${l}" --description "${a}" --json`);const{output:r}=await k.execute(t,2e4);r.includes("error")||r.includes("失败")?g.error(e("organization.messages.orgCreateFailed",{err:r.slice(0,120)})):(g.success(e("organization.messages.orgCreateOk")),D.value=!1,F.value="",V.value="",await T())}catch(l){g.error(e("organization.messages.orgCreateFailed",{err:l.message}))}finally{ne.value=!1}}async function Te(l){h.value={...l},L.value="",le.value=!0,ie.value=!0;try{const{output:a}=await k.execute(`org show ${l.id} --json`,15e3),t=U(a);t&&typeof t=="object"?(h.value={id:t.id||l.id,name:t.name||l.name,owner:t.owner||l.owner,description:t.description||l.description,memberCount:t.memberCount??t.members??l.memberCount,createdAt:t.createdAt||t.created||""},L.value=JSON.stringify(t,null,2)):L.value=a}catch(a){L.value=e("organization.messages.loadDetailFailed",{err:a.message})}finally{ie.value=!1}}const z=d(null),se=d(!1),re=d([]),ue=d(!1),de=d([]),K=d(!1),pe=d(!1),q=d(""),W=d(""),J=d("member"),Q=d(!1),ce=d(!1),N=d(""),E=d(""),G=d(""),je=A(()=>[{label:e("organization.members.roleAdmin"),value:"admin"},{label:e("organization.members.roleMember"),value:"member"},{label:e("organization.members.roleViewer"),value:"viewer"}]),Ae=A(()=>[{title:e("organization.memberColumns.userId"),key:"userId",dataIndex:"userId",width:"160px"},{title:e("organization.memberColumns.name"),key:"name",dataIndex:"name",width:"140px"},{title:e("organization.memberColumns.role"),key:"role",dataIndex:"role",width:"100px"},{title:e("organization.memberColumns.joinedAt"),key:"joinedAt",dataIndex:"joinedAt",width:"180px"}]),$e=A(()=>[{title:e("organization.teamColumns.name"),key:"name",dataIndex:"name",width:"180px"},{title:e("organization.teamColumns.description"),key:"description",dataIndex:"description",ellipsis:!0},{title:e("organization.teamColumns.lead"),key:"lead",dataIndex:"lead",width:"140px"}]);function Ue(l){return{admin:"gold",member:"blue",viewer:"default",owner:"purple"}[(l||"").toLowerCase()]||"default"}async function Fe(){z.value&&await Promise.all([me(),ge()])}async function me(){if(z.value){se.value=!0;try{const{output:l}=await k.execute(`org members ${z.value} --json`,15e3),a=U(l);Array.isArray(a)?re.value=a.map((t,r)=>({key:t.userId||t.id||r,userId:t.userId||t.id||"-",name:t.name||t.displayName||"-",role:t.role||"member",joinedAt:t.joinedAt||t.joined||"-"})):re.value=qe(l)}catch(l){g.error(e("organization.messages.loadMembersFailed",{err:l.message}))}finally{se.value=!1}}}function qe(l){const a=[],t=l.split(`
3
- `);for(const r of t){const c=r.trim();if(!c||c.startsWith("─")||c.match(/^\d+ member/i))continue;const v=c.split(/\s*[|│]\s*/);v.length>=3&&a.push({key:a.length,userId:v[0]||"-",name:v[1]||"-",role:v[2]||"member",joinedAt:v[3]||"-"})}return a}async function ge(){if(z.value){ue.value=!0;try{const{output:l}=await k.execute(`org teams ${z.value} --json`,15e3),a=U(l);Array.isArray(a)?de.value=a.map((t,r)=>({key:t.id||t.name||r,name:t.name||"-",description:t.description||"",lead:t.lead||t.leader||"-"})):de.value=[]}catch(l){g.error(e("organization.messages.loadTeamsFailed",{err:l.message}))}finally{ue.value=!1}}}async function Ne(){if(!q.value.trim()){g.warning(e("organization.messages.userIdRequired"));return}pe.value=!0;try{const l=q.value.trim().replace(/"/g,'\\"'),a=W.value.trim().replace(/"/g,'\\"');let t=`org invite ${z.value} ${l} --role ${J.value}`;a&&(t+=` --name "${a}"`);const{output:r}=await k.execute(t,2e4);r.includes("error")||r.includes("失败")?g.error(e("organization.messages.inviteFailed",{err:r.slice(0,120)})):(g.success(e("organization.messages.inviteOk")),K.value=!1,q.value="",W.value="",J.value="member",await me())}catch(l){g.error(e("organization.messages.inviteFailed",{err:l.message}))}finally{pe.value=!1}}async function Pe(){if(!N.value.trim()){g.warning(e("organization.messages.teamNameRequired"));return}ce.value=!0;try{const l=N.value.trim().replace(/"/g,'\\"'),a=E.value.trim().replace(/"/g,'\\"'),t=G.value.trim().replace(/"/g,'\\"');let r=`org teams ${z.value} create "${l}"`;a&&(r+=` --description "${a}"`),t&&(r+=` --lead "${t}"`);const{output:c}=await k.execute(r,2e4);c.includes("error")||c.includes("失败")?g.error(e("organization.messages.teamCreateFailed",{err:c.slice(0,120)})):(g.success(e("organization.messages.teamCreateOk")),Q.value=!1,N.value="",E.value="",G.value="",await ge())}catch(l){g.error(e("organization.messages.teamCreateFailed",{err:l.message}))}finally{ce.value=!1}}const ve=d(!1),H=d([]),X=d(!1),ye=d(!1),P=d(null),M=d(""),Y=d(""),Z=d(""),Me=A(()=>[{title:e("organization.approvalColumns.id"),key:"id",dataIndex:"id",width:"100px"},{title:e("organization.approvalColumns.title"),key:"title",dataIndex:"title",width:"200px"},{title:e("organization.approvalColumns.type"),key:"type",dataIndex:"type",width:"120px"},{title:e("organization.approvalColumns.requester"),key:"requester",dataIndex:"requester",width:"140px"},{title:e("organization.approvalColumns.status"),key:"status",dataIndex:"status",width:"100px"},{title:e("organization.approvalColumns.actions"),key:"actions",width:"180px"}]);function Se(l){return{pending:"orange",approved:"green",rejected:"red"}[(l||"").toLowerCase()]||"default"}async function S(){ve.value=!0;try{const{output:l}=await k.execute("org approvals --json",15e3),a=U(l);Array.isArray(a)?H.value=a.map((t,r)=>({key:t.id||r,id:t.id||"-",title:t.title||"-",type:t.type||"-",requester:t.requester||t.requestedBy||"-",status:t.status||"pending",_approving:!1,_rejecting:!1})):H.value=Re(l)}catch(l){g.error(e("organization.messages.loadApprovalsFailed",{err:l.message}))}finally{ve.value=!1}}function Re(l){const a=[],t=l.split(`
4
- `);for(const r of t){const c=r.trim();if(!c||c.startsWith("─")||c.match(/^\d+ approval/i))continue;const v=c.split(/\s*[|│]\s*/);v.length>=4&&a.push({key:a.length,id:v[0]||"-",title:v[1]||"-",type:v[2]||"-",requester:v[3]||"-",status:v[4]||"pending",_approving:!1,_rejecting:!1})}return a}async function Be(l){l._approving=!0;try{const{output:a}=await k.execute(`org approve ${l.id}`,15e3);a.includes("error")||a.includes("失败")?g.error(e("organization.messages.approveFailed",{err:a.slice(0,120)})):(g.success(e("organization.messages.approveOk")),await S())}catch(a){g.error(e("organization.messages.approveFailed",{err:a.message}))}finally{l._approving=!1}}async function De(l){l._rejecting=!0;try{const{output:a}=await k.execute(`org reject ${l.id}`,15e3);a.includes("error")||a.includes("失败")?g.error(e("organization.messages.rejectFailed",{err:a.slice(0,120)})):(g.success(e("organization.messages.rejectOk")),await S())}catch(a){g.error(e("organization.messages.rejectFailed",{err:a.message}))}finally{l._rejecting=!1}}async function Ve(){if(!P.value){g.warning(e("organization.messages.orgRequired"));return}if(!M.value.trim()){g.warning(e("organization.messages.approvalTitleRequired"));return}ye.value=!0;try{const l=M.value.trim().replace(/"/g,'\\"'),a=Y.value.trim().replace(/"/g,'\\"'),t=Z.value.trim().replace(/"/g,'\\"');let r=`org approve --submit --org ${P.value} --title "${l}"`;a&&(r+=` --type "${a}"`),t&&(r+=` --description "${t}"`);const{output:c}=await k.execute(r,2e4);c.includes("error")||c.includes("失败")?g.error(e("organization.messages.submitFailed",{err:c.slice(0,120)})):(g.success(e("organization.messages.submitOk")),X.value=!1,P.value=null,M.value="",Y.value="",Z.value="",await S())}catch(l){g.error(e("organization.messages.submitFailed",{err:l.message}))}finally{ye.value=!1}}return Ee(()=>{T()}),(l,a)=>{const t=_("a-button"),r=_("a-space"),c=_("a-spin"),v=_("a-tag"),R=_("a-empty"),ee=_("a-table"),j=_("a-descriptions-item"),Ke=_("a-descriptions"),B=_("a-modal"),C=_("a-input"),x=_("a-form-item"),ae=_("a-form"),fe=_("a-tab-pane"),be=_("a-select"),We=_("a-textarea"),Je=_("a-tabs");return p(),y("div",null,[O("div",oa,[O("div",null,[O("h2",na,u(o(e)("organization.title")),1),O("p",la,u(o(e)("organization.subtitle")),1)]),n(t,{type:"primary",ghost:"",loading:te.value,onClick:he},{icon:s(()=>[n(o(Ye))]),default:s(()=>[b(" "+u(o(e)("organization.refresh")),1)]),_:1},8,["loading"])]),n(Je,{activeKey:$.value,"onUpdate:activeKey":a[22]||(a[22]=i=>$.value=i),type:"card",onChange:Ce},{default:s(()=>[n(fe,{key:"orgs"},{tab:s(()=>[n(o(Ze)),b(" "+u(o(e)("organization.tabs.orgs")),1)]),default:s(()=>[n(r,{style:{"margin-bottom":"16px"}},{default:s(()=>[n(t,{type:"primary",onClick:a[0]||(a[0]=i=>D.value=!0)},{icon:s(()=>[n(o(_e))]),default:s(()=>[b(" "+u(o(e)("organization.orgs.createButton")),1)]),_:1})]),_:1}),oe.value?(p(),y("div",ia,[n(c,{size:"large"})])):(p(),w(ee,{key:1,columns:Oe.value,"data-source":I.value,pagination:{pageSize:20,showTotal:i=>o(e)("organization.totals.rows",{count:i})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row","custom-row":i=>({onClick:()=>Te(i)})},{bodyCell:s(({column:i,record:m})=>[i.key==="id"?(p(),y("span",sa,u(m.id),1)):f("",!0),i.key==="name"?(p(),y("a",ra,u(m.name),1)):f("",!0),i.key==="owner"?(p(),y("span",ua,u(m.owner),1)):f("",!0),i.key==="description"?(p(),y("span",da,u(m.description),1)):f("",!0),i.key==="memberCount"?(p(),w(v,{key:4,color:"blue"},{default:s(()=>[b(u(m.memberCount),1)]),_:2},1024)):f("",!0)]),emptyText:s(()=>[n(R,{description:o(e)("organization.orgs.emptyText")},null,8,["description"])]),_:1},8,["columns","data-source","pagination","custom-row"])),n(B,{open:le.value,"onUpdate:open":a[1]||(a[1]=i=>le.value=i),title:o(e)("organization.orgs.detailTitle",{name:h.value.name||""}),footer:null,width:"640px"},{default:s(()=>[ie.value?(p(),y("div",pa,[n(c)])):(p(),y("div",ca,[n(Ke,{column:1,bordered:"",size:"small",style:{"margin-bottom":"16px"}},{default:s(()=>[n(j,{label:o(e)("organization.orgs.detailLabels.id")},{default:s(()=>[O("span",ma,u(h.value.id),1)]),_:1},8,["label"]),n(j,{label:o(e)("organization.orgs.detailLabels.name")},{default:s(()=>[b(u(h.value.name),1)]),_:1},8,["label"]),n(j,{label:o(e)("organization.orgs.detailLabels.owner")},{default:s(()=>[b(u(h.value.owner),1)]),_:1},8,["label"]),n(j,{label:o(e)("organization.orgs.detailLabels.description")},{default:s(()=>[b(u(h.value.description||"-"),1)]),_:1},8,["label"]),n(j,{label:o(e)("organization.orgs.detailLabels.memberCount")},{default:s(()=>[b(u(h.value.memberCount),1)]),_:1},8,["label"]),h.value.createdAt?(p(),w(j,{key:0,label:o(e)("organization.orgs.detailLabels.createdAt")},{default:s(()=>[b(u(h.value.createdAt),1)]),_:1},8,["label"])):f("",!0)]),_:1}),L.value?(p(),y("pre",ga,u(L.value),1)):f("",!0)]))]),_:1},8,["open","title"]),n(B,{open:D.value,"onUpdate:open":a[4]||(a[4]=i=>D.value=i),title:o(e)("organization.orgs.createTitle"),"confirm-loading":ne.value,onOk:Le,"ok-text":o(e)("organization.orgs.createOk"),"cancel-text":o(e)("common.cancel")},{default:s(()=>[n(ae,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:s(()=>[n(x,{label:o(e)("organization.orgs.nameLabel"),required:""},{default:s(()=>[n(C,{value:F.value,"onUpdate:value":a[2]||(a[2]=i=>F.value=i),placeholder:o(e)("organization.orgs.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.orgs.descriptionLabel")},{default:s(()=>[n(C,{value:V.value,"onUpdate:value":a[3]||(a[3]=i=>V.value=i),placeholder:o(e)("organization.orgs.descriptionPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1}),n(fe,{key:"members"},{tab:s(()=>[n(o(we)),b(" "+u(o(e)("organization.tabs.members")),1)]),default:s(()=>[O("div",va,[n(be,{value:z.value,"onUpdate:value":a[5]||(a[5]=i=>z.value=i),placeholder:o(e)("organization.members.selectPlaceholder"),style:{width:"280px"},options:ze.value,onChange:Fe},null,8,["value","placeholder","options"]),n(t,{type:"primary",disabled:!z.value,onClick:a[6]||(a[6]=i=>K.value=!0)},{icon:s(()=>[n(o(we))]),default:s(()=>[b(" "+u(o(e)("organization.members.inviteButton")),1)]),_:1},8,["disabled"])]),se.value?(p(),y("div",ya,[n(c,{size:"large"})])):z.value?(p(),w(ee,{key:1,columns:Ae.value,"data-source":re.value,pagination:{pageSize:20,showTotal:i=>o(e)("organization.totals.rows",{count:i})},size:"small",style:{background:"var(--bg-card)","margin-bottom":"24px"},"row-class-name":()=>"org-row"},{bodyCell:s(({column:i,record:m})=>[i.key==="userId"?(p(),y("span",fa,u(m.userId),1)):f("",!0),i.key==="name"?(p(),y("span",ba,u(m.name),1)):f("",!0),i.key==="role"?(p(),w(v,{key:2,color:Ue(m.role)},{default:s(()=>[b(u(m.role),1)]),_:2},1032,["color"])):f("",!0),i.key==="joinedAt"?(p(),y("span",_a,u(m.joinedAt),1)):f("",!0)]),emptyText:s(()=>[n(R,{description:o(e)("organization.members.emptyMembers")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])):(p(),w(R,{key:2,description:o(e)("organization.members.selectFirst"),style:{padding:"60px 0"}},null,8,["description"])),z.value?(p(),y(xe,{key:3},[O("div",za,[O("h3",xa,u(o(e)("organization.members.teamsTitle")),1),n(t,{size:"small",onClick:a[7]||(a[7]=i=>Q.value=!0)},{icon:s(()=>[n(o(_e))]),default:s(()=>[b(" "+u(o(e)("organization.members.createTeamButton")),1)]),_:1})]),ue.value?(p(),y("div",ka,[n(c)])):(p(),w(ee,{key:1,columns:$e.value,"data-source":de.value,pagination:!1,size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row"},{bodyCell:s(({column:i,record:m})=>[i.key==="name"?(p(),y("span",wa,u(m.name),1)):f("",!0),i.key==="description"?(p(),y("span",ha,u(m.description),1)):f("",!0),i.key==="lead"?(p(),y("span",Ca,u(m.lead),1)):f("",!0)]),emptyText:s(()=>[n(R,{description:o(e)("organization.members.emptyTeams")},null,8,["description"])]),_:1},8,["columns","data-source"]))],64)):f("",!0),n(B,{open:K.value,"onUpdate:open":a[11]||(a[11]=i=>K.value=i),title:o(e)("organization.members.inviteTitle"),"confirm-loading":pe.value,onOk:Ne,"ok-text":o(e)("organization.members.inviteOk"),"cancel-text":o(e)("common.cancel")},{default:s(()=>[n(ae,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:s(()=>[n(x,{label:o(e)("organization.members.userIdLabel"),required:""},{default:s(()=>[n(C,{value:q.value,"onUpdate:value":a[8]||(a[8]=i=>q.value=i),placeholder:o(e)("organization.members.userIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.members.nameLabel")},{default:s(()=>[n(C,{value:W.value,"onUpdate:value":a[9]||(a[9]=i=>W.value=i),placeholder:o(e)("organization.members.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.members.roleLabel")},{default:s(()=>[n(be,{value:J.value,"onUpdate:value":a[10]||(a[10]=i=>J.value=i),options:je.value},null,8,["value","options"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),n(B,{open:Q.value,"onUpdate:open":a[15]||(a[15]=i=>Q.value=i),title:o(e)("organization.members.createTeamTitle"),"confirm-loading":ce.value,onOk:Pe,"ok-text":o(e)("organization.members.createTeamOk"),"cancel-text":o(e)("common.cancel")},{default:s(()=>[n(ae,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:s(()=>[n(x,{label:o(e)("organization.members.teamNameLabel"),required:""},{default:s(()=>[n(C,{value:N.value,"onUpdate:value":a[12]||(a[12]=i=>N.value=i),placeholder:o(e)("organization.members.teamNamePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.members.teamDescLabel")},{default:s(()=>[n(C,{value:E.value,"onUpdate:value":a[13]||(a[13]=i=>E.value=i),placeholder:o(e)("organization.members.teamDescPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.members.teamLeadLabel")},{default:s(()=>[n(C,{value:G.value,"onUpdate:value":a[14]||(a[14]=i=>G.value=i),placeholder:o(e)("organization.members.teamLeadPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1}),n(fe,{key:"approvals"},{tab:s(()=>[n(o(ta)),b(" "+u(o(e)("organization.tabs.approvals")),1)]),default:s(()=>[n(r,{style:{"margin-bottom":"16px"}},{default:s(()=>[n(t,{type:"primary",onClick:a[16]||(a[16]=i=>X.value=!0)},{icon:s(()=>[n(o(_e))]),default:s(()=>[b(" "+u(o(e)("organization.approvals.submitButton")),1)]),_:1})]),_:1}),ve.value?(p(),y("div",Oa,[n(c,{size:"large"})])):(p(),w(ee,{key:1,columns:Me.value,"data-source":H.value,pagination:{pageSize:20,showTotal:i=>o(e)("organization.totals.rows",{count:i})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row"},{bodyCell:s(({column:i,record:m})=>[i.key==="id"?(p(),y("span",Ia,u(m.id),1)):f("",!0),i.key==="title"?(p(),y("span",La,u(m.title),1)):f("",!0),i.key==="type"?(p(),w(v,{key:2,color:"blue"},{default:s(()=>[b(u(m.type),1)]),_:2},1024)):f("",!0),i.key==="requester"?(p(),y("span",Ta,u(m.requester),1)):f("",!0),i.key==="status"?(p(),w(v,{key:4,color:Se(m.status)},{default:s(()=>[b(u(m.status),1)]),_:2},1032,["color"])):f("",!0),i.key==="actions"?(p(),y(xe,{key:5},[(m.status||"").toLowerCase()==="pending"?(p(),w(r,{key:0},{default:s(()=>[n(t,{type:"primary",size:"small",loading:m._approving,onClick:ke(Qe=>Be(m),["stop"])},{icon:s(()=>[n(o(ea))]),default:s(()=>[b(" "+u(o(e)("organization.approvals.approve")),1)]),_:1},8,["loading","onClick"]),n(t,{danger:"",size:"small",loading:m._rejecting,onClick:ke(Qe=>De(m),["stop"])},{icon:s(()=>[n(o(aa))]),default:s(()=>[b(" "+u(o(e)("organization.approvals.reject")),1)]),_:1},8,["loading","onClick"])]),_:2},1024)):(p(),y("span",ja,"-"))],64)):f("",!0)]),emptyText:s(()=>[n(R,{description:o(e)("organization.approvals.emptyText")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])),n(B,{open:X.value,"onUpdate:open":a[21]||(a[21]=i=>X.value=i),title:o(e)("organization.approvals.submitTitle"),"confirm-loading":ye.value,onOk:Ve,"ok-text":o(e)("organization.approvals.submitOk"),"cancel-text":o(e)("common.cancel")},{default:s(()=>[n(ae,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:s(()=>[n(x,{label:o(e)("organization.approvals.orgLabel"),required:""},{default:s(()=>[n(be,{value:P.value,"onUpdate:value":a[17]||(a[17]=i=>P.value=i),placeholder:o(e)("organization.approvals.orgPlaceholder"),options:ze.value},null,8,["value","placeholder","options"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.approvals.titleLabel"),required:""},{default:s(()=>[n(C,{value:M.value,"onUpdate:value":a[18]||(a[18]=i=>M.value=i),placeholder:o(e)("organization.approvals.titlePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.approvals.typeLabel")},{default:s(()=>[n(C,{value:Y.value,"onUpdate:value":a[19]||(a[19]=i=>Y.value=i),placeholder:o(e)("organization.approvals.typePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.approvals.descLabel")},{default:s(()=>[n(We,{value:Z.value,"onUpdate:value":a[20]||(a[20]=i=>Z.value=i),placeholder:o(e)("organization.approvals.descPlaceholder"),rows:3},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1})]),_:1},8,["activeKey"])])}}},Na=Ge(Aa,[["__scopeId","data-v-5c758732"]]);export{Na as default};
1
+ import{o as Ee,M as y,R as O,P as u,u as o,c as n,N as s,r as d,K as _,L as p,O as b,Q as w,S as f,F as xe,a1 as ke,f as A}from"./vendor-DhFY8mDK.js";import{_ as Ge,b as He,u as Xe,d as g}from"./index-DeoJYTHX.js";import{R as Ye,as as _e,Q as Ze,aP as we,ai as ea,b as aa,a8 as ta}from"./icons-AILO5ZcK.js";const oa={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},na={class:"page-title"},la={class:"page-sub"},ia={key:0,style:{"text-align":"center",padding:"60px"}},sa={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},ra={key:1,style:{color:"#1677ff"}},ua={key:2,style:{color:"var(--text-secondary)"}},da={key:3,style:{color:"var(--text-muted)","font-size":"12px"}},pa={key:0,style:{"text-align":"center",padding:"40px"}},ca={key:1},ma={style:{"font-family":"monospace",color:"#ccc"}},ga={key:0,style:{"white-space":"pre-wrap","word-break":"break-all",color:"var(--text-secondary)","font-size":"11px",background:"var(--bg-base)",padding:"12px","border-radius":"6px",border:"1px solid var(--border-color)","max-height":"300px","overflow-y":"auto"}},va={style:{"margin-bottom":"16px",display:"flex","align-items":"center",gap:"12px"}},ya={key:0,style:{"text-align":"center",padding:"60px"}},fa={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},ba={key:1,style:{color:"#e0e0e0"}},_a={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},za={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"12px"}},xa={style:{color:"var(--text-primary)",margin:"0","font-size":"15px"}},ka={key:0,style:{"text-align":"center",padding:"40px"}},wa={key:0,style:{color:"#e0e0e0"}},ha={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},Ca={key:2,style:{color:"var(--text-secondary)"}},Oa={key:0,style:{"text-align":"center",padding:"60px"}},Ia={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},La={key:1,style:{color:"#e0e0e0"}},Ta={key:3,style:{color:"var(--text-secondary)"}},ja={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},Aa={__name:"Organization",setup($a){const{t:e}=He(),k=Xe(),$=d("orgs"),te=d(!1);async function he(){te.value=!0;try{$.value==="orgs"?await T():$.value==="members"?(await T(),z.value&&(await me(),await ge())):$.value==="approvals"&&await S()}finally{te.value=!1}}function Ce(l){l==="orgs"&&I.value.length===0&&T(),l==="members"&&I.value.length===0&&T(),l==="approvals"&&H.value.length===0&&S()}function U(l){try{const a=l.trim(),t=a.indexOf("["),r=a.indexOf("{"),c=t>=0&&(r<0||t<r)?t:r;return c>=0?JSON.parse(a.slice(c)):null}catch{return null}}const oe=d(!1),I=d([]),D=d(!1),ne=d(!1),F=d(""),V=d(""),le=d(!1),ie=d(!1),h=d({}),L=d(""),Oe=A(()=>[{title:e("organization.orgColumns.id"),key:"id",dataIndex:"id",width:"100px"},{title:e("organization.orgColumns.name"),key:"name",dataIndex:"name",width:"180px"},{title:e("organization.orgColumns.owner"),key:"owner",dataIndex:"owner",width:"140px"},{title:e("organization.orgColumns.description"),key:"description",dataIndex:"description",ellipsis:!0},{title:e("organization.orgColumns.memberCount"),key:"memberCount",dataIndex:"memberCount",width:"90px"}]),ze=A(()=>I.value.map(l=>({label:l.name,value:l.id})));async function T(){oe.value=!0;try{const{output:l}=await k.execute("org list --json",15e3),a=U(l);Array.isArray(a)?I.value=a.map((t,r)=>({key:t.id||r,id:t.id||"-",name:t.name||"-",owner:t.owner||"-",description:t.description||"",memberCount:t.memberCount??t.members??0})):I.value=Ie(l)}catch(l){g.error(e("organization.messages.loadOrgsFailed",{err:l.message}))}finally{oe.value=!1}}function Ie(l){const a=[],t=l.split(`
2
+ `);for(const r of t){const c=r.trim();if(!c||c.startsWith("─")||c.match(/^\d+ org/i))continue;const v=c.split(/\s*[|│]\s*/);v.length>=3&&a.push({key:a.length,id:v[0]||"-",name:v[1]||"-",owner:v[2]||"-",description:v[3]||"",memberCount:parseInt(v[4],10)||0})}return a}async function Le(){if(!F.value.trim()){g.warning(e("organization.messages.orgNameRequired"));return}ne.value=!0;try{const l=F.value.trim().replace(/"/g,'\\"'),a=V.value.trim().replace(/"/g,'\\"');let t=`org create "${l}" --json`;a&&(t=`org create "${l}" --description "${a}" --json`);const{output:r}=await k.execute(t,2e4);r.includes("error")||r.includes("失败")?g.error(e("organization.messages.orgCreateFailed",{err:r.slice(0,120)})):(g.success(e("organization.messages.orgCreateOk")),D.value=!1,F.value="",V.value="",await T())}catch(l){g.error(e("organization.messages.orgCreateFailed",{err:l.message}))}finally{ne.value=!1}}async function Te(l){h.value={...l},L.value="",le.value=!0,ie.value=!0;try{const{output:a}=await k.execute(`org show ${l.id} --json`,15e3),t=U(a);t&&typeof t=="object"?(h.value={id:t.id||l.id,name:t.name||l.name,owner:t.owner||l.owner,description:t.description||l.description,memberCount:t.memberCount??t.members??l.memberCount,createdAt:t.createdAt||t.created||""},L.value=JSON.stringify(t,null,2)):L.value=a}catch(a){L.value=e("organization.messages.loadDetailFailed",{err:a.message})}finally{ie.value=!1}}const z=d(null),se=d(!1),re=d([]),ue=d(!1),de=d([]),K=d(!1),pe=d(!1),q=d(""),W=d(""),J=d("member"),Q=d(!1),ce=d(!1),P=d(""),E=d(""),G=d(""),je=A(()=>[{label:e("organization.members.roleAdmin"),value:"admin"},{label:e("organization.members.roleMember"),value:"member"},{label:e("organization.members.roleViewer"),value:"viewer"}]),Ae=A(()=>[{title:e("organization.memberColumns.userId"),key:"userId",dataIndex:"userId",width:"160px"},{title:e("organization.memberColumns.name"),key:"name",dataIndex:"name",width:"140px"},{title:e("organization.memberColumns.role"),key:"role",dataIndex:"role",width:"100px"},{title:e("organization.memberColumns.joinedAt"),key:"joinedAt",dataIndex:"joinedAt",width:"180px"}]),$e=A(()=>[{title:e("organization.teamColumns.name"),key:"name",dataIndex:"name",width:"180px"},{title:e("organization.teamColumns.description"),key:"description",dataIndex:"description",ellipsis:!0},{title:e("organization.teamColumns.lead"),key:"lead",dataIndex:"lead",width:"140px"}]);function Ue(l){return{admin:"gold",member:"blue",viewer:"default",owner:"purple"}[(l||"").toLowerCase()]||"default"}async function Fe(){z.value&&await Promise.all([me(),ge()])}async function me(){if(z.value){se.value=!0;try{const{output:l}=await k.execute(`org members ${z.value} --json`,15e3),a=U(l);Array.isArray(a)?re.value=a.map((t,r)=>({key:t.userId||t.id||r,userId:t.userId||t.id||"-",name:t.name||t.displayName||"-",role:t.role||"member",joinedAt:t.joinedAt||t.joined||"-"})):re.value=qe(l)}catch(l){g.error(e("organization.messages.loadMembersFailed",{err:l.message}))}finally{se.value=!1}}}function qe(l){const a=[],t=l.split(`
3
+ `);for(const r of t){const c=r.trim();if(!c||c.startsWith("─")||c.match(/^\d+ member/i))continue;const v=c.split(/\s*[|│]\s*/);v.length>=3&&a.push({key:a.length,userId:v[0]||"-",name:v[1]||"-",role:v[2]||"member",joinedAt:v[3]||"-"})}return a}async function ge(){if(z.value){ue.value=!0;try{const{output:l}=await k.execute(`org teams ${z.value} --json`,15e3),a=U(l);Array.isArray(a)?de.value=a.map((t,r)=>({key:t.id||t.name||r,name:t.name||"-",description:t.description||"",lead:t.lead||t.leader||"-"})):de.value=[]}catch(l){g.error(e("organization.messages.loadTeamsFailed",{err:l.message}))}finally{ue.value=!1}}}async function Pe(){if(!q.value.trim()){g.warning(e("organization.messages.userIdRequired"));return}pe.value=!0;try{const l=q.value.trim().replace(/"/g,'\\"'),a=W.value.trim().replace(/"/g,'\\"');let t=`org invite ${z.value} ${l} --role ${J.value}`;a&&(t+=` --name "${a}"`);const{output:r}=await k.execute(t,2e4);r.includes("error")||r.includes("失败")?g.error(e("organization.messages.inviteFailed",{err:r.slice(0,120)})):(g.success(e("organization.messages.inviteOk")),K.value=!1,q.value="",W.value="",J.value="member",await me())}catch(l){g.error(e("organization.messages.inviteFailed",{err:l.message}))}finally{pe.value=!1}}async function Ne(){if(!P.value.trim()){g.warning(e("organization.messages.teamNameRequired"));return}ce.value=!0;try{const l=P.value.trim().replace(/"/g,'\\"'),a=E.value.trim().replace(/"/g,'\\"'),t=G.value.trim().replace(/"/g,'\\"');let r=`org teams ${z.value} create "${l}"`;a&&(r+=` --description "${a}"`),t&&(r+=` --lead "${t}"`);const{output:c}=await k.execute(r,2e4);c.includes("error")||c.includes("失败")?g.error(e("organization.messages.teamCreateFailed",{err:c.slice(0,120)})):(g.success(e("organization.messages.teamCreateOk")),Q.value=!1,P.value="",E.value="",G.value="",await ge())}catch(l){g.error(e("organization.messages.teamCreateFailed",{err:l.message}))}finally{ce.value=!1}}const ve=d(!1),H=d([]),X=d(!1),ye=d(!1),N=d(null),M=d(""),Y=d(""),Z=d(""),Me=A(()=>[{title:e("organization.approvalColumns.id"),key:"id",dataIndex:"id",width:"100px"},{title:e("organization.approvalColumns.title"),key:"title",dataIndex:"title",width:"200px"},{title:e("organization.approvalColumns.type"),key:"type",dataIndex:"type",width:"120px"},{title:e("organization.approvalColumns.requester"),key:"requester",dataIndex:"requester",width:"140px"},{title:e("organization.approvalColumns.status"),key:"status",dataIndex:"status",width:"100px"},{title:e("organization.approvalColumns.actions"),key:"actions",width:"180px"}]);function Se(l){return{pending:"orange",approved:"green",rejected:"red"}[(l||"").toLowerCase()]||"default"}async function S(){ve.value=!0;try{const{output:l}=await k.execute("org approvals --json",15e3),a=U(l);Array.isArray(a)?H.value=a.map((t,r)=>({key:t.id||r,id:t.id||"-",title:t.title||"-",type:t.type||"-",requester:t.requester||t.requestedBy||"-",status:t.status||"pending",_approving:!1,_rejecting:!1})):H.value=Re(l)}catch(l){g.error(e("organization.messages.loadApprovalsFailed",{err:l.message}))}finally{ve.value=!1}}function Re(l){const a=[],t=l.split(`
4
+ `);for(const r of t){const c=r.trim();if(!c||c.startsWith("─")||c.match(/^\d+ approval/i))continue;const v=c.split(/\s*[|│]\s*/);v.length>=4&&a.push({key:a.length,id:v[0]||"-",title:v[1]||"-",type:v[2]||"-",requester:v[3]||"-",status:v[4]||"pending",_approving:!1,_rejecting:!1})}return a}async function Be(l){l._approving=!0;try{const{output:a}=await k.execute(`org approve ${l.id}`,15e3);a.includes("error")||a.includes("失败")?g.error(e("organization.messages.approveFailed",{err:a.slice(0,120)})):(g.success(e("organization.messages.approveOk")),await S())}catch(a){g.error(e("organization.messages.approveFailed",{err:a.message}))}finally{l._approving=!1}}async function De(l){l._rejecting=!0;try{const{output:a}=await k.execute(`org reject ${l.id}`,15e3);a.includes("error")||a.includes("失败")?g.error(e("organization.messages.rejectFailed",{err:a.slice(0,120)})):(g.success(e("organization.messages.rejectOk")),await S())}catch(a){g.error(e("organization.messages.rejectFailed",{err:a.message}))}finally{l._rejecting=!1}}async function Ve(){if(!N.value){g.warning(e("organization.messages.orgRequired"));return}if(!M.value.trim()){g.warning(e("organization.messages.approvalTitleRequired"));return}ye.value=!0;try{const l=M.value.trim().replace(/"/g,'\\"'),a=Y.value.trim().replace(/"/g,'\\"'),t=Z.value.trim().replace(/"/g,'\\"');let r=`org approve --submit --org ${N.value} --title "${l}"`;a&&(r+=` --type "${a}"`),t&&(r+=` --description "${t}"`);const{output:c}=await k.execute(r,2e4);c.includes("error")||c.includes("失败")?g.error(e("organization.messages.submitFailed",{err:c.slice(0,120)})):(g.success(e("organization.messages.submitOk")),X.value=!1,N.value=null,M.value="",Y.value="",Z.value="",await S())}catch(l){g.error(e("organization.messages.submitFailed",{err:l.message}))}finally{ye.value=!1}}return Ee(()=>{T()}),(l,a)=>{const t=_("a-button"),r=_("a-space"),c=_("a-spin"),v=_("a-tag"),R=_("a-empty"),ee=_("a-table"),j=_("a-descriptions-item"),Ke=_("a-descriptions"),B=_("a-modal"),C=_("a-input"),x=_("a-form-item"),ae=_("a-form"),fe=_("a-tab-pane"),be=_("a-select"),We=_("a-textarea"),Je=_("a-tabs");return p(),y("div",null,[O("div",oa,[O("div",null,[O("h2",na,u(o(e)("organization.title")),1),O("p",la,u(o(e)("organization.subtitle")),1)]),n(t,{type:"primary",ghost:"",loading:te.value,onClick:he},{icon:s(()=>[n(o(Ye))]),default:s(()=>[b(" "+u(o(e)("organization.refresh")),1)]),_:1},8,["loading"])]),n(Je,{activeKey:$.value,"onUpdate:activeKey":a[22]||(a[22]=i=>$.value=i),type:"card",onChange:Ce},{default:s(()=>[n(fe,{key:"orgs"},{tab:s(()=>[n(o(Ze)),b(" "+u(o(e)("organization.tabs.orgs")),1)]),default:s(()=>[n(r,{style:{"margin-bottom":"16px"}},{default:s(()=>[n(t,{type:"primary",onClick:a[0]||(a[0]=i=>D.value=!0)},{icon:s(()=>[n(o(_e))]),default:s(()=>[b(" "+u(o(e)("organization.orgs.createButton")),1)]),_:1})]),_:1}),oe.value?(p(),y("div",ia,[n(c,{size:"large"})])):(p(),w(ee,{key:1,columns:Oe.value,"data-source":I.value,pagination:{pageSize:20,showTotal:i=>o(e)("organization.totals.rows",{count:i})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row","custom-row":i=>({onClick:()=>Te(i)})},{bodyCell:s(({column:i,record:m})=>[i.key==="id"?(p(),y("span",sa,u(m.id),1)):f("",!0),i.key==="name"?(p(),y("a",ra,u(m.name),1)):f("",!0),i.key==="owner"?(p(),y("span",ua,u(m.owner),1)):f("",!0),i.key==="description"?(p(),y("span",da,u(m.description),1)):f("",!0),i.key==="memberCount"?(p(),w(v,{key:4,color:"blue"},{default:s(()=>[b(u(m.memberCount),1)]),_:2},1024)):f("",!0)]),emptyText:s(()=>[n(R,{description:o(e)("organization.orgs.emptyText")},null,8,["description"])]),_:1},8,["columns","data-source","pagination","custom-row"])),n(B,{open:le.value,"onUpdate:open":a[1]||(a[1]=i=>le.value=i),title:o(e)("organization.orgs.detailTitle",{name:h.value.name||""}),footer:null,width:"640px"},{default:s(()=>[ie.value?(p(),y("div",pa,[n(c)])):(p(),y("div",ca,[n(Ke,{column:1,bordered:"",size:"small",style:{"margin-bottom":"16px"}},{default:s(()=>[n(j,{label:o(e)("organization.orgs.detailLabels.id")},{default:s(()=>[O("span",ma,u(h.value.id),1)]),_:1},8,["label"]),n(j,{label:o(e)("organization.orgs.detailLabels.name")},{default:s(()=>[b(u(h.value.name),1)]),_:1},8,["label"]),n(j,{label:o(e)("organization.orgs.detailLabels.owner")},{default:s(()=>[b(u(h.value.owner),1)]),_:1},8,["label"]),n(j,{label:o(e)("organization.orgs.detailLabels.description")},{default:s(()=>[b(u(h.value.description||"-"),1)]),_:1},8,["label"]),n(j,{label:o(e)("organization.orgs.detailLabels.memberCount")},{default:s(()=>[b(u(h.value.memberCount),1)]),_:1},8,["label"]),h.value.createdAt?(p(),w(j,{key:0,label:o(e)("organization.orgs.detailLabels.createdAt")},{default:s(()=>[b(u(h.value.createdAt),1)]),_:1},8,["label"])):f("",!0)]),_:1}),L.value?(p(),y("pre",ga,u(L.value),1)):f("",!0)]))]),_:1},8,["open","title"]),n(B,{open:D.value,"onUpdate:open":a[4]||(a[4]=i=>D.value=i),title:o(e)("organization.orgs.createTitle"),"confirm-loading":ne.value,onOk:Le,"ok-text":o(e)("organization.orgs.createOk"),"cancel-text":o(e)("common.cancel")},{default:s(()=>[n(ae,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:s(()=>[n(x,{label:o(e)("organization.orgs.nameLabel"),required:""},{default:s(()=>[n(C,{value:F.value,"onUpdate:value":a[2]||(a[2]=i=>F.value=i),placeholder:o(e)("organization.orgs.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.orgs.descriptionLabel")},{default:s(()=>[n(C,{value:V.value,"onUpdate:value":a[3]||(a[3]=i=>V.value=i),placeholder:o(e)("organization.orgs.descriptionPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1}),n(fe,{key:"members"},{tab:s(()=>[n(o(we)),b(" "+u(o(e)("organization.tabs.members")),1)]),default:s(()=>[O("div",va,[n(be,{value:z.value,"onUpdate:value":a[5]||(a[5]=i=>z.value=i),placeholder:o(e)("organization.members.selectPlaceholder"),style:{width:"280px"},options:ze.value,onChange:Fe},null,8,["value","placeholder","options"]),n(t,{type:"primary",disabled:!z.value,onClick:a[6]||(a[6]=i=>K.value=!0)},{icon:s(()=>[n(o(we))]),default:s(()=>[b(" "+u(o(e)("organization.members.inviteButton")),1)]),_:1},8,["disabled"])]),se.value?(p(),y("div",ya,[n(c,{size:"large"})])):z.value?(p(),w(ee,{key:1,columns:Ae.value,"data-source":re.value,pagination:{pageSize:20,showTotal:i=>o(e)("organization.totals.rows",{count:i})},size:"small",style:{background:"var(--bg-card)","margin-bottom":"24px"},"row-class-name":()=>"org-row"},{bodyCell:s(({column:i,record:m})=>[i.key==="userId"?(p(),y("span",fa,u(m.userId),1)):f("",!0),i.key==="name"?(p(),y("span",ba,u(m.name),1)):f("",!0),i.key==="role"?(p(),w(v,{key:2,color:Ue(m.role)},{default:s(()=>[b(u(m.role),1)]),_:2},1032,["color"])):f("",!0),i.key==="joinedAt"?(p(),y("span",_a,u(m.joinedAt),1)):f("",!0)]),emptyText:s(()=>[n(R,{description:o(e)("organization.members.emptyMembers")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])):(p(),w(R,{key:2,description:o(e)("organization.members.selectFirst"),style:{padding:"60px 0"}},null,8,["description"])),z.value?(p(),y(xe,{key:3},[O("div",za,[O("h3",xa,u(o(e)("organization.members.teamsTitle")),1),n(t,{size:"small",onClick:a[7]||(a[7]=i=>Q.value=!0)},{icon:s(()=>[n(o(_e))]),default:s(()=>[b(" "+u(o(e)("organization.members.createTeamButton")),1)]),_:1})]),ue.value?(p(),y("div",ka,[n(c)])):(p(),w(ee,{key:1,columns:$e.value,"data-source":de.value,pagination:!1,size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row"},{bodyCell:s(({column:i,record:m})=>[i.key==="name"?(p(),y("span",wa,u(m.name),1)):f("",!0),i.key==="description"?(p(),y("span",ha,u(m.description),1)):f("",!0),i.key==="lead"?(p(),y("span",Ca,u(m.lead),1)):f("",!0)]),emptyText:s(()=>[n(R,{description:o(e)("organization.members.emptyTeams")},null,8,["description"])]),_:1},8,["columns","data-source"]))],64)):f("",!0),n(B,{open:K.value,"onUpdate:open":a[11]||(a[11]=i=>K.value=i),title:o(e)("organization.members.inviteTitle"),"confirm-loading":pe.value,onOk:Pe,"ok-text":o(e)("organization.members.inviteOk"),"cancel-text":o(e)("common.cancel")},{default:s(()=>[n(ae,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:s(()=>[n(x,{label:o(e)("organization.members.userIdLabel"),required:""},{default:s(()=>[n(C,{value:q.value,"onUpdate:value":a[8]||(a[8]=i=>q.value=i),placeholder:o(e)("organization.members.userIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.members.nameLabel")},{default:s(()=>[n(C,{value:W.value,"onUpdate:value":a[9]||(a[9]=i=>W.value=i),placeholder:o(e)("organization.members.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.members.roleLabel")},{default:s(()=>[n(be,{value:J.value,"onUpdate:value":a[10]||(a[10]=i=>J.value=i),options:je.value},null,8,["value","options"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),n(B,{open:Q.value,"onUpdate:open":a[15]||(a[15]=i=>Q.value=i),title:o(e)("organization.members.createTeamTitle"),"confirm-loading":ce.value,onOk:Ne,"ok-text":o(e)("organization.members.createTeamOk"),"cancel-text":o(e)("common.cancel")},{default:s(()=>[n(ae,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:s(()=>[n(x,{label:o(e)("organization.members.teamNameLabel"),required:""},{default:s(()=>[n(C,{value:P.value,"onUpdate:value":a[12]||(a[12]=i=>P.value=i),placeholder:o(e)("organization.members.teamNamePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.members.teamDescLabel")},{default:s(()=>[n(C,{value:E.value,"onUpdate:value":a[13]||(a[13]=i=>E.value=i),placeholder:o(e)("organization.members.teamDescPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.members.teamLeadLabel")},{default:s(()=>[n(C,{value:G.value,"onUpdate:value":a[14]||(a[14]=i=>G.value=i),placeholder:o(e)("organization.members.teamLeadPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1}),n(fe,{key:"approvals"},{tab:s(()=>[n(o(ta)),b(" "+u(o(e)("organization.tabs.approvals")),1)]),default:s(()=>[n(r,{style:{"margin-bottom":"16px"}},{default:s(()=>[n(t,{type:"primary",onClick:a[16]||(a[16]=i=>X.value=!0)},{icon:s(()=>[n(o(_e))]),default:s(()=>[b(" "+u(o(e)("organization.approvals.submitButton")),1)]),_:1})]),_:1}),ve.value?(p(),y("div",Oa,[n(c,{size:"large"})])):(p(),w(ee,{key:1,columns:Me.value,"data-source":H.value,pagination:{pageSize:20,showTotal:i=>o(e)("organization.totals.rows",{count:i})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row"},{bodyCell:s(({column:i,record:m})=>[i.key==="id"?(p(),y("span",Ia,u(m.id),1)):f("",!0),i.key==="title"?(p(),y("span",La,u(m.title),1)):f("",!0),i.key==="type"?(p(),w(v,{key:2,color:"blue"},{default:s(()=>[b(u(m.type),1)]),_:2},1024)):f("",!0),i.key==="requester"?(p(),y("span",Ta,u(m.requester),1)):f("",!0),i.key==="status"?(p(),w(v,{key:4,color:Se(m.status)},{default:s(()=>[b(u(m.status),1)]),_:2},1032,["color"])):f("",!0),i.key==="actions"?(p(),y(xe,{key:5},[(m.status||"").toLowerCase()==="pending"?(p(),w(r,{key:0},{default:s(()=>[n(t,{type:"primary",size:"small",loading:m._approving,onClick:ke(Qe=>Be(m),["stop"])},{icon:s(()=>[n(o(ea))]),default:s(()=>[b(" "+u(o(e)("organization.approvals.approve")),1)]),_:1},8,["loading","onClick"]),n(t,{danger:"",size:"small",loading:m._rejecting,onClick:ke(Qe=>De(m),["stop"])},{icon:s(()=>[n(o(aa))]),default:s(()=>[b(" "+u(o(e)("organization.approvals.reject")),1)]),_:1},8,["loading","onClick"])]),_:2},1024)):(p(),y("span",ja,"-"))],64)):f("",!0)]),emptyText:s(()=>[n(R,{description:o(e)("organization.approvals.emptyText")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])),n(B,{open:X.value,"onUpdate:open":a[21]||(a[21]=i=>X.value=i),title:o(e)("organization.approvals.submitTitle"),"confirm-loading":ye.value,onOk:Ve,"ok-text":o(e)("organization.approvals.submitOk"),"cancel-text":o(e)("common.cancel")},{default:s(()=>[n(ae,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:s(()=>[n(x,{label:o(e)("organization.approvals.orgLabel"),required:""},{default:s(()=>[n(be,{value:N.value,"onUpdate:value":a[17]||(a[17]=i=>N.value=i),placeholder:o(e)("organization.approvals.orgPlaceholder"),options:ze.value},null,8,["value","placeholder","options"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.approvals.titleLabel"),required:""},{default:s(()=>[n(C,{value:M.value,"onUpdate:value":a[18]||(a[18]=i=>M.value=i),placeholder:o(e)("organization.approvals.titlePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.approvals.typeLabel")},{default:s(()=>[n(C,{value:Y.value,"onUpdate:value":a[19]||(a[19]=i=>Y.value=i),placeholder:o(e)("organization.approvals.typePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),n(x,{label:o(e)("organization.approvals.descLabel")},{default:s(()=>[n(We,{value:Z.value,"onUpdate:value":a[20]||(a[20]=i=>Z.value=i),placeholder:o(e)("organization.approvals.descPlaceholder"),rows:3},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1})]),_:1},8,["activeKey"])])}}},Pa=Ge(Aa,[["__scopeId","data-v-5c758732"]]);export{Pa as default};
@@ -1 +1 @@
1
- import{P,f as u,i as H,h as D}from"./index-ByjAzHrC.js";import{R as ee}from"./index-DJlTZ7oK.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-DeoJYTHX.js";import{R as ee}from"./index-B2P1c5yD.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,2 +1,2 @@
1
- import{_ as ve,b as ye,u as me}from"./index-ByjAzHrC.js";import{R as fe,M as _e,ak as te,ar as ge,p as B}from"./icons-BOPtEWK4.js";import{o as be,M as v,R as d,P as l,u as t,c as a,N as n,r,K as p,L as i,O as y,Q as w,S as m,F as ae,Y as xe,f as he}from"./vendor-DhFY8mDK.js";const ke={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},we={class:"page-title"},Se={class:"page-sub"},Pe={key:0,style:{"text-align":"center",padding:"30px"}},Ce={key:2,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},Le={key:3,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},ze={key:0,style:{"text-align":"center",padding:"30px"}},Oe={key:0,style:{"margin-top":"16px"}},Me={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},Be={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"}},Fe={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},Te={style:{"margin-bottom":"12px",color:"var(--text-secondary)"}},$e={key:0,style:{"margin-top":"12px"}},Ne={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"}},De={style:{"margin-bottom":"8px",color:"var(--text-secondary)"}},Ee={style:{"margin-bottom":"8px",color:"var(--text-secondary)"}},Re={key:0,style:{"margin-top":"12px"}},Ue={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"}},Ve={__name:"P2P",setup(Ie){const{t:e}=ye(),x=me(),F=r(!1),T=r(""),S=r([]),oe=he(()=>[{title:e("p2p.peerColumns.name"),key:"name"},{title:e("p2p.peerColumns.id"),key:"id"},{title:e("p2p.peerColumns.status"),key:"status"},{title:e("p2p.peerColumns.action"),key:"action",width:100}]);async function q(){F.value=!0,T.value="";try{const{output:o}=await x.execute("p2p peers",15e3);S.value=ne(o)}catch(o){T.value=e("p2p.messages.loadPeersFailed",{err:o.message})}finally{F.value=!1}}function ne(o){if(!o||o.includes("No peers")||o.includes("no peers"))return[];const c=o.split(`
1
+ import{_ as ve,b as ye,u as me}from"./index-DeoJYTHX.js";import{R as fe,M as _e,al as te,as as ge,p as B}from"./icons-AILO5ZcK.js";import{o as be,M as v,R as d,P as l,u as t,c as a,N as n,r,K as p,L as i,O as y,Q as w,S as m,F as ae,Y as xe,f as he}from"./vendor-DhFY8mDK.js";const ke={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},we={class:"page-title"},Se={class:"page-sub"},Pe={key:0,style:{"text-align":"center",padding:"30px"}},Ce={key:2,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},Le={key:3,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},ze={key:0,style:{"text-align":"center",padding:"30px"}},Oe={key:0,style:{"margin-top":"16px"}},Me={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},Be={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"}},Fe={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},Te={style:{"margin-bottom":"12px",color:"var(--text-secondary)"}},$e={key:0,style:{"margin-top":"12px"}},Ne={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"}},De={style:{"margin-bottom":"8px",color:"var(--text-secondary)"}},Ee={style:{"margin-bottom":"8px",color:"var(--text-secondary)"}},Re={key:0,style:{"margin-top":"12px"}},Ue={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"}},Ve={__name:"P2P",setup(Ie){const{t:e}=ye(),x=me(),F=r(!1),T=r(""),S=r([]),oe=he(()=>[{title:e("p2p.peerColumns.name"),key:"name"},{title:e("p2p.peerColumns.id"),key:"id"},{title:e("p2p.peerColumns.status"),key:"status"},{title:e("p2p.peerColumns.action"),key:"action",width:100}]);async function q(){F.value=!0,T.value="";try{const{output:o}=await x.execute("p2p peers",15e3);S.value=ne(o)}catch(o){T.value=e("p2p.messages.loadPeersFailed",{err:o.message})}finally{F.value=!1}}function ne(o){if(!o||o.includes("No peers")||o.includes("no peers"))return[];const c=o.split(`
2
2
  `).filter(_=>_.trim()),u=[];for(const _ of c){const b=_.match(/^\s*(\S+)\s+(.+?)\s+(connected|online|offline|disconnected)\s*$/i);if(b){u.push({id:b[1],name:b[2].trim(),connected:/connected|online/i.test(b[3])});continue}const k=_.match(/^\s*((?:12D3|Qm)\S{10,})\s*(.*)$/);if(k){const O=k[2].trim();u.push({id:k[1],name:O||k[1].slice(0,12),connected:/connected|online/i.test(O)})}}return u}const E=r(!1),R=r(!1),$=r(""),P=r("");async function G(){if($.value.trim()){R.value=!0,P.value="";try{const{output:o}=await x.execute(`p2p pair "${$.value.trim()}"`,3e4);P.value=o,await q()}catch(o){P.value=e("p2p.messages.pairFailed",{err:o.message})}finally{R.value=!1}}}const N=r(!1),U=r(!1),C=r(void 0),L=r(""),h=r("");function le(o){C.value=o.id,L.value="",h.value="",N.value=!0}async function H(){if(!(!C.value||!L.value.trim())){U.value=!0,h.value="";try{const{output:o}=await x.execute(`p2p send ${C.value} "${L.value.trim()}"`,15e3);h.value=o||e("p2p.send.messageDefault")}catch(o){h.value=e("p2p.messages.sendFailed",{err:o.message})}finally{U.value=!1}}}const V=r(!1),D=r(""),z=r(!1),I=r(""),Q=r(0),J=r(""),f=r(""),j=r(!1),A=r(!1);async function K(){V.value=!0,D.value="";try{const{output:o}=await x.execute("sync status",15e3);se(o)}catch(o){D.value=e("p2p.messages.loadSyncFailed",{err:o.message})}finally{V.value=!1}}function se(o){if(!o){I.value=e("p2p.sync.unknown");return}z.value=/synced|online|up.to.date/i.test(o),I.value=z.value?e("p2p.sync.synced"):e("p2p.sync.notSynced");const c=o.match(/pending[:\s]+(\d+)/i);Q.value=c?parseInt(c[1]):0;const u=o.match(/last[:\s]+(.+)/i);u&&(J.value=u[1].trim())}async function re(){j.value=!0,f.value="";try{const{output:o}=await x.execute("sync push",3e4);f.value=o||e("p2p.sync.pushDefault"),await K()}catch(o){f.value=e("p2p.messages.pushFailed",{err:o.message})}finally{j.value=!1}}async function ce(){A.value=!0,f.value="";try{const{output:o}=await x.execute("sync pull",3e4);f.value=o||e("p2p.sync.pullDefault"),await K()}catch(o){f.value=e("p2p.messages.pullFailed",{err:o.message})}finally{A.value=!1}}async function X(){await Promise.all([q(),K()])}return be(X),(o,c)=>{const u=p("a-button"),_=p("a-space"),b=p("a-spin"),k=p("a-empty"),O=p("a-tag"),ie=p("a-table"),M=p("a-card"),W=p("a-statistic"),Y=p("a-col"),pe=p("a-row"),Z=p("a-input"),ee=p("a-modal"),ue=p("a-select-option"),de=p("a-select");return i(),v("div",null,[d("div",ke,[d("div",null,[d("h2",we,l(t(e)("p2p.title")),1),d("p",Se,l(t(e)("p2p.subtitle")),1)]),a(u,{type:"primary",ghost:"",loading:F.value,onClick:X},{icon:n(()=>[a(t(fe))]),default:n(()=>[y(" "+l(t(e)("p2p.refresh")),1)]),_:1},8,["loading"])]),a(M,{title:t(e)("p2p.peers.cardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:n(()=>[a(_,null,{default:n(()=>[a(u,{size:"small",onClick:c[0]||(c[0]=s=>E.value=!0),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[a(t(ge))]),default:n(()=>[y(" "+l(t(e)("p2p.peers.pairButton")),1)]),_:1}),a(u,{size:"small",onClick:c[1]||(c[1]=s=>N.value=!0),disabled:S.value.length===0,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[a(t(te))]),default:n(()=>[y(" "+l(t(e)("p2p.peers.sendButton")),1)]),_:1},8,["disabled"])]),_:1})]),default:n(()=>[F.value?(i(),v("div",Pe,[a(b)])):S.value.length===0?(i(),w(k,{key:1,description:t(e)("p2p.peers.emptyText")},null,8,["description"])):(i(),w(ie,{key:2,columns:oe.value,"data-source":S.value,pagination:!1,size:"small","row-key":"id"},{bodyCell:n(({column:s,record:g})=>[s.key==="status"?(i(),w(O,{key:0,color:g.connected?"green":"default"},{default:n(()=>[y(l(g.connected?t(e)("p2p.peers.online"):t(e)("p2p.peers.offline")),1)]),_:2},1032,["color"])):m("",!0),s.key==="name"?(i(),w(_,{key:1},{default:n(()=>[a(t(_e),{style:{color:"var(--text-muted)"}}),d("span",null,l(g.name||g.id),1)]),_:2},1024)):m("",!0),s.key==="id"?(i(),v("span",Ce,l(g.id.length>16?g.id.slice(0,16)+"...":g.id),1)):m("",!0),s.key==="action"?(i(),w(u,{key:3,size:"small",type:"link",onClick:Qe=>le(g)},{default:n(()=>[a(t(te)),y(" "+l(t(e)("p2p.peers.rowSend")),1)]),_:1},8,["onClick"])):m("",!0)]),_:1},8,["columns","data-source"])),T.value?(i(),v("div",Le,l(T.value),1)):m("",!0)]),_:1},8,["title"]),a(M,{title:t(e)("p2p.sync.cardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:n(()=>[a(O,{color:z.value?"green":"default"},{default:n(()=>[y(l(z.value?t(e)("p2p.sync.synced"):t(e)("p2p.sync.notSynced")),1)]),_:1},8,["color"])]),default:n(()=>[V.value?(i(),v("div",ze,[a(b)])):(i(),v(ae,{key:1},[a(pe,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[a(Y,{xs:24,sm:8},{default:n(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(W,{title:t(e)("p2p.sync.statusLabel"),value:I.value,"value-style":{color:z.value?"#52c41a":"#888",fontSize:"16px"}},{prefix:n(()=>[a(t(B))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(Y,{xs:24,sm:8},{default:n(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(W,{title:t(e)("p2p.sync.pendingLabel"),value:Q.value,"value-style":{color:Q.value>0?"#faad14":"#52c41a",fontSize:"16px"}},{prefix:n(()=>[a(t(B))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(Y,{xs:24,sm:8},{default:n(()=>[a(M,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(W,{title:t(e)("p2p.sync.lastSyncLabel"),value:J.value||t(e)("p2p.sync.noLastSync"),"value-style":{color:"var(--text-secondary)",fontSize:"16px"}},{prefix:n(()=>[a(t(B))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),a(_,null,{default:n(()=>[a(u,{loading:j.value,onClick:re,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[a(t(B))]),default:n(()=>[y(" "+l(t(e)("p2p.sync.pushButton")),1)]),_:1},8,["loading"]),a(u,{loading:A.value,onClick:ce,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:n(()=>[a(t(B))]),default:n(()=>[y(" "+l(t(e)("p2p.sync.pullButton")),1)]),_:1},8,["loading"])]),_:1}),f.value?(i(),v("div",Oe,[d("div",Me,l(t(e)("p2p.sync.outputLabel")),1),d("pre",Be,l(f.value),1)])):m("",!0)],64)),D.value?(i(),v("div",Fe,l(D.value),1)):m("",!0)]),_:1},8,["title"]),a(ee,{open:E.value,"onUpdate:open":c[3]||(c[3]=s=>E.value=s),title:t(e)("p2p.pair.title"),"confirm-loading":R.value,onOk:G,"ok-text":t(e)("p2p.pair.ok"),"cancel-text":t(e)("common.cancel")},{default:n(()=>[d("div",Te,l(t(e)("p2p.pair.intro")),1),a(Z,{value:$.value,"onUpdate:value":c[2]||(c[2]=s=>$.value=s),placeholder:t(e)("p2p.pair.placeholder"),onPressEnter:G},null,8,["value","placeholder"]),P.value?(i(),v("div",$e,[d("pre",Ne,l(P.value),1)])):m("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),a(ee,{open:N.value,"onUpdate:open":c[6]||(c[6]=s=>N.value=s),title:t(e)("p2p.send.title"),"confirm-loading":U.value,onOk:H,"ok-text":t(e)("p2p.send.ok"),"cancel-text":t(e)("common.cancel")},{default:n(()=>[d("div",De,l(t(e)("p2p.send.targetLabel")),1),a(de,{value:C.value,"onUpdate:value":c[4]||(c[4]=s=>C.value=s),style:{width:"100%","margin-bottom":"16px"},placeholder:t(e)("p2p.send.targetPlaceholder")},{default:n(()=>[(i(!0),v(ae,null,xe(S.value,s=>(i(),w(ue,{key:s.id,value:s.id},{default:n(()=>[y(l(s.name||s.id),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value","placeholder"]),d("div",Ee,l(t(e)("p2p.send.messageLabel")),1),a(Z,{value:L.value,"onUpdate:value":c[5]||(c[5]=s=>L.value=s),placeholder:t(e)("p2p.send.messagePlaceholder"),onPressEnter:H},null,8,["value","placeholder"]),h.value?(i(),v("div",Re,[d("pre",Ue,l(h.value),1)])):m("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}}},We=ve(Ve,[["__scopeId","data-v-832d025d"]]);export{We as default};
@@ -0,0 +1 @@
1
+ .pdh-sidebar[data-v-0c0dc745]{background:#fff;border-radius:8px;padding:12px 8px;border:1px solid #f0f0f0}.sidebar-title[data-v-0c0dc745]{font-size:12px;color:#999;padding:4px 8px 8px;font-weight:600;letter-spacing:.5px}.cat-item[data-v-0c0dc745]{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-0c0dc745]:hover{background:#f5f5f5}.cat-item.active[data-v-0c0dc745]{background:#1677ff;color:#fff}.cat-item.dim[data-v-0c0dc745]{opacity:.45}.cat-item .icon[data-v-0c0dc745]{font-size:16px}.cat-item .label[data-v-0c0dc745]{flex:1;font-size:14px}.pdh-filter-bar[data-v-44891485]{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-44891485]{font-size:12px;color:#999;display:flex;align-items:center;gap:4px}.pdh-browser-page[data-v-b77bf5a7]{padding:16px;height:100%;background:#f5f5f5;overflow-y:auto}.page-header[data-v-b77bf5a7]{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px}.page-title[data-v-b77bf5a7]{margin:0 0 4px;font-size:18px}.page-sub[data-v-b77bf5a7]{margin:0;color:#999;font-size:13px}.browser-layout[data-v-b77bf5a7]{align-items:flex-start}.main-pane[data-v-b77bf5a7]{display:flex;flex-direction:column;gap:12px}.results-summary[data-v-b77bf5a7]{font-size:13px;color:#666;padding:4px 4px 8px}.results-summary .loaded-of[data-v-b77bf5a7]{margin-left:8px;color:#999}.load-more[data-v-b77bf5a7]{margin-top:12px}
@@ -0,0 +1,7 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ChatBubbleRenderer-B64kZfRH.js","./index-DeoJYTHX.js","./vendor-DhFY8mDK.js","./icons-AILO5ZcK.js","./index-CfX1DEtk.css","./ChatBubbleRenderer-CO908iBt.css","./OrderTableRenderer-DxoBoMtz.js","./OrderTableRenderer-BnOISpKI.css","./TimelineRenderer-hC_Piiwy.js","./TimelineRenderer-DmztdsbF.css","./EmailListRenderer-Doo52F2M.js","./EmailListRenderer-CVJ1j3Ll.css","./GenericCardRenderer-OgA46PJq.js","./GenericCardRenderer-DtJFcJYl.css"])))=>i.map(i=>d[i]);
2
+ import{E as W,r as L,f as R,K as _,L as d,M as O,R as b,c as i,u as s,Q as k,S as $,Z as U,F as P,Y as H,$ as K,P as j,N as v,O as h,V as F,o as Z}from"./vendor-DhFY8mDK.js";import{u as J}from"./usePersonalDataHub-C3qhf1sQ.js";import{_ as M,e as T,d as z}from"./index-DeoJYTHX.js";import{m as B,ad as X,M as ee,aH as te,x as ne,aF as se,aq as oe,h as re,t as le,d as ae,e as Q,ag as ie,az as ue,R as ce}from"./icons-AILO5ZcK.js";const I=Object.freeze({q:"",category:null,adapter:null,subtype:null,since:null,until:null}),N=50,G=300,de=W("pdhBrowser",()=>{const t=L({...I}),e=L([]),o=L(null),c=L(!1),r=L(!1),a=L(null),n=L(null),l=L(!1),m=L({byCategory:{},byAdapter:{},bySubtype:{},total:0});let u=0,S=null;const g=R(()=>e.value.length>0),p=R(()=>o.value!=null);function C(w={}){const y={},f=t.value;return f.q&&f.q.trim()&&(y.q=f.q.trim()),f.category&&(y.category=f.category),f.adapter&&(y.adapter=f.adapter),f.subtype&&(y.subtype=f.subtype),Number.isFinite(f.since)&&(y.since=f.since),Number.isFinite(f.until)&&(y.until=f.until),{...y,...w}}async function x(){const w=++u;c.value=!0,a.value=null;const y=J();try{const[f,D]=await Promise.all([y.searchEvents(C({limit:N})),y.facetCounts({...t.value.q&&t.value.q.trim()?{q:t.value.q.trim()}:{},...Number.isFinite(t.value.since)?{since:t.value.since}:{},...Number.isFinite(t.value.until)?{until:t.value.until}:{}})]);if(w!==u)return;e.value=f.rows||[],o.value=f.nextCursor||null,n.value=f.mode||"like",l.value=!!f.shortQuery,m.value={byCategory:D.byCategory||{},byAdapter:D.byAdapter||{},bySubtype:D.bySubtype||{},total:D.total||0}}catch(f){if(w!==u)return;a.value=f&&f.message?f.message:String(f),e.value=[],o.value=null}finally{w===u&&(c.value=!1)}}async function E(){if(!o.value||r.value)return;r.value=!0,a.value=null;const w=J();try{const y=await w.searchEvents(C({cursor:o.value,limit:N}));e.value=e.value.concat(y.rows||[]),o.value=y.nextCursor||null,n.value=y.mode||n.value}catch(y){a.value=y&&y.message?y.message:String(y)}finally{r.value=!1}}function A(w,y){if(!(w in I))throw new Error(`pdhBrowser.setFilter: unknown key "${w}"`);t.value={...t.value,[w]:y},S&&clearTimeout(S),S=setTimeout(()=>{S=null,x()},G)}function q(w){return t.value={...I,...w},S&&(clearTimeout(S),S=null),x()}function Y(){t.value={...I},e.value=[],o.value=null,a.value=null,m.value={byCategory:{},byAdapter:{},bySubtype:{},total:0}}return{filters:t,results:e,cursor:o,isLoading:c,isAppending:r,error:a,mode:n,shortQuery:l,facets:m,hasResults:g,canLoadMore:p,search:x,loadMore:E,setFilter:A,setFilters:q,reset:Y,PAGE_SIZE:N,SEARCH_DEBOUNCE_MS:G}}),fe=Object.freeze(["chat","social","email","shopping","travel","system","ai-chat","other"]),pe=Object.freeze({chat:"社交聊天",social:"内容平台",email:"邮件",shopping:"支付订单",travel:"出行",system:"系统数据","ai-chat":"AI 对话",other:"其他"});function V(t){return pe[t]||t||"未知"}const me=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 ye(t){if(typeof t!="string"||t.length===0)return"other";for(const[e,o]of me)if(e.endsWith("-")||e==="system-data"){if(t.startsWith(e))return o}else if(t===e)return o;return"other"}const ve={class:"pdh-sidebar"},ge=["onClick"],_e={class:"label"},be={__name:"CategorySidebar",props:{selected:{type:String,default:null},facets:{type:Object,default:()=>({byCategory:{},total:0})}},emits:["select"],setup(t){const e=t,o=R(()=>e.facets.total||0),c={chat:re,social:oe,email:se,shopping:ne,travel:te,system:ee,"ai-chat":X,other:B};function r(n){return c[n]||B}function a(n){return n?{backgroundColor:"#fff",color:"#1677ff"}:{backgroundColor:"#f0f0f0",color:"#666"}}return(n,l)=>{const m=_("a-badge");return d(),O("div",ve,[l[2]||(l[2]=b("div",{class:"sidebar-title"},"数据类型",-1)),b("div",{class:U(["cat-item",{active:t.selected===null}]),onClick:l[0]||(l[0]=u=>n.$emit("select",null))},[i(s(B),{class:"icon"}),l[1]||(l[1]=b("span",{class:"label"},"全部",-1)),o.value>0?(d(),k(m,{key:0,count:o.value,"number-style":a(t.selected===null),"overflow-count":9999},null,8,["count","number-style"])):$("",!0)],2),(d(!0),O(P,null,H(s(fe),u=>(d(),O("div",{key:u,class:U(["cat-item",{active:t.selected===u,dim:!t.facets.byCategory[u]}]),onClick:S=>n.$emit("select",u)},[(d(),k(K(r(u)),{class:"icon"})),b("span",_e,j(s(V)(u)),1),t.facets.byCategory[u]?(d(),k(m,{key:0,count:t.facets.byCategory[u],"number-style":a(t.selected===u),"overflow-count":9999},null,8,["count","number-style"])):$("",!0)],10,ge))),128))])}}},he=M(be,[["__scopeId","data-v-0c0dc745"]]),Se={class:"pdh-filter-bar"},Ce={key:1,class:"hint"},we={key:2,class:"hint"},Oe={__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(t,{emit:e}){const o=t,c=e,r=R(()=>o.filters.category?`在「${o.filters.category}」类目内搜索…`:"搜索关键词(如:支付宝、罗技、Kotlin)…"),a=R(()=>Object.entries(o.facets.byAdapter||{}).sort((p,C)=>C[1]-p[1]).map(([p,C])=>({value:p,label:`${p} (${C})`}))),n=R(()=>!o.filters.since&&!o.filters.until?null:[o.filters.since?new Date(o.filters.since):null,o.filters.until?new Date(o.filters.until):null]),l=R(()=>!!(o.filters.q||o.filters.adapter||o.filters.subtype||o.filters.since||o.filters.until));function m(g){c("set-filter","q",g||"")}function u(g){c("set-filter","q",g||"")}function S(g){if(!g||g.length===0){c("set-filter","since",null),c("set-filter","until",null);return}const[p,C]=g;c("set-filter","since",p?+p:null),c("set-filter","until",C?+C:null)}return(g,p)=>{const C=_("a-input-search"),x=_("a-select"),E=_("a-range-picker"),A=_("a-button");return d(),O("div",Se,[i(C,{value:t.filters.q,placeholder:r.value,"enter-button":"搜索","allow-clear":"",loading:t.isLoading,style:{flex:"1","max-width":"480px"},"onUpdate:value":m,onSearch:u},{prefix:v(()=>[i(s(le))]),_:1},8,["value","placeholder","loading"]),i(x,{value:t.filters.adapter,placeholder:"所有 adapter","allow-clear":"",options:a.value,style:{width:"200px"},"onUpdate:value":p[0]||(p[0]=q=>g.$emit("set-filter","adapter",q||null))},null,8,["value","options"]),i(E,{value:n.value,placeholder:["开始日期","结束日期"],style:{width:"280px"},"onUpdate:value":S},null,8,["value"]),l.value?(d(),k(A,{key:0,type:"link",danger:"",onClick:p[1]||(p[1]=q=>g.$emit("reset"))},{icon:v(()=>[i(s(ae))]),default:v(()=>[p[2]||(p[2]=h(" 清空筛选 ",-1))]),_:1})):$("",!0),t.shortQuery?(d(),O("span",Ce,[i(s(Q)),p[3]||(p[3]=h(" 关键词需至少 3 字 (FTS5 trigram 限制) ",-1))])):t.mode==="like"?(d(),O("span",we,[i(s(Q)),p[4]||(p[4]=h(" 当前为 LIKE 兜底模式 ",-1))])):$("",!0)])}}},ke=M(Oe,[["__scopeId","data-v-44891485"]]),$e={__name:"RendererDispatcher",props:{event:{type:Object,required:!0}},setup(t){const e=F(()=>T(()=>import("./ChatBubbleRenderer-B64kZfRH.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),o=F(()=>T(()=>import("./OrderTableRenderer-DxoBoMtz.js"),__vite__mapDeps([6,1,2,3,4,7]),import.meta.url)),c=F(()=>T(()=>import("./TimelineRenderer-hC_Piiwy.js"),__vite__mapDeps([8,1,2,3,4,9]),import.meta.url)),r=F(()=>T(()=>import("./EmailListRenderer-Doo52F2M.js"),__vite__mapDeps([10,1,2,3,4,11]),import.meta.url)),a=F(()=>T(()=>import("./GenericCardRenderer-OgA46PJq.js"),__vite__mapDeps([12,1,2,3,4,13]),import.meta.url));function n(l){const m=l&&l.source&&l.source.adapter;switch(ye(m)){case"chat":case"ai-chat":return e;case"shopping":return o;case"travel":return c;case"email":return r;default:return a}}return(l,m)=>(d(),k(K(n(t.event)),{event:t.event},null,8,["event"]))}};function Ee(t){return JSON.stringify(t,null,2)}function Le(t){return t.map(e=>JSON.stringify(e)).join(`
3
+ `)+`
4
+ `}function Re(t){const o=["id","subtype","occurredAt","occurredAtIso","actor","place","adapter","summary","contentJson","extraJson"].join(","),c=t.map(r=>{const a=Number.isFinite(r.occurredAt)?r.occurredAt:null,n=a?new Date(a).toISOString():"",l=r.source&&r.source.adapter||"",m=r.content&&(r.content.text||r.content.title||r.content.subject)||"";return[r.id||"",r.subtype||"",a!=null?String(a):"",n,r.actor||"",r.place||"",l,m,r.content?JSON.stringify(r.content):"",r.extra?JSON.stringify(r.extra):""].map(xe).join(",")});return[o,...c].join(`
5
+ `)+`
6
+ `}function xe(t){const e=String(t??"");return e.includes(",")||e.includes('"')||e.includes(`
7
+ `)||e.includes("\r")?'"'+e.replace(/"/g,'""')+'"':e}function je(t,e,o="application/octet-stream"){if(typeof window>"u"||typeof document>"u")return e;const c=new Blob([t],{type:o}),r=URL.createObjectURL(c),a=document.createElement("a");return a.href=r,a.download=e,document.body.appendChild(a),a.click(),document.body.removeChild(a),setTimeout(()=>URL.revokeObjectURL(r),1e3),e}function Ae(t,e=null){const o=new Date,c=o.getFullYear(),r=String(o.getMonth()+1).padStart(2,"0"),a=String(o.getDate()).padStart(2,"0"),n=t==="ndjson"?"ndjson":t,l=e?`-${e}`:"";return`pdh-events-${c}-${r}-${a}${l}.${n}`}const Fe={__name:"ExportDropdown",props:{events:{type:Array,required:!0},category:{type:String,default:null}},setup(t){const e=t,o=R(()=>e.events.length>0),c={json:"application/json;charset=utf-8",ndjson:"application/x-ndjson;charset=utf-8",csv:"text/csv;charset=utf-8"};function r(n){switch(n){case"json":return Ee(e.events);case"ndjson":return Le(e.events);case"csv":return Re(e.events);default:throw new Error(`unknown format: ${n}`)}}function a({key:n}){try{const l=r(n),m=Ae(n,e.category);je(l,m,c[n]),z.success(`已导出 ${e.events.length} 条到 ${m}`)}catch(l){z.error(`导出失败: ${l.message||l}`)}}return(n,l)=>{const m=_("a-button"),u=_("a-menu-item"),S=_("a-menu"),g=_("a-dropdown");return d(),k(g,{disabled:!o.value},{overlay:v(()=>[i(S,{onClick:a},{default:v(()=>[i(u,{key:"json"},{default:v(()=>[...l[0]||(l[0]=[h("JSON (.json)",-1)])]),_:1}),i(u,{key:"ndjson"},{default:v(()=>[...l[1]||(l[1]=[h("NDJSON (.ndjson)",-1)])]),_:1}),i(u,{key:"csv"},{default:v(()=>[...l[2]||(l[2]=[h("CSV (.csv)",-1)])]),_:1})]),_:1})]),default:v(()=>[i(m,{disabled:!o.value},{icon:v(()=>[i(s(ue))]),default:v(()=>[h(" 导出 ("+j(t.events.length)+") ",1),i(s(ie))]),_:1},8,["disabled"])]),_:1},8,["disabled"])}}},Te={class:"pdh-browser-page"},qe={class:"page-header"},De={class:"main-pane"},Ie={class:"results-summary"},Be={key:0},Ne={key:0},Pe={key:1},Ve={class:"loaded-of"},Me={class:"results-list"},Ue={key:2,class:"load-more"},Je={__name:"PdhVaultBrowser",setup(t){const e=de(),o=R(()=>e.filters.q?`没有匹配 "${e.filters.q}" 的事件 — 试试更短的关键词或换个类目`:e.filters.category?`「${V(e.filters.category)}」类目下还没有数据 — 去采集页同步对应 adapter`:"Vault 里还没有数据 — 去「个人数据中台」页面同步任意 adapter");function c(a){e.filters.category=a,e.search()}function r(a,n){e.setFilter(a,n)}return Z(()=>{!e.hasResults&&!e.isLoading&&e.search()}),(a,n)=>{const l=_("a-tag"),m=_("a-button"),u=_("a-space"),S=_("a-col"),g=_("a-spin"),p=_("a-alert"),C=_("a-empty"),x=_("a-row");return d(),O("div",Te,[b("div",qe,[n[6]||(n[6]=b("div",null,[b("h2",{class:"page-title"},"数据浏览器"),b("p",{class:"page-sub"}," Vault 里所有已采集的数据,按类目浏览 / 全文检索 / 时间窗口筛选。 完全离线,不外传。 ")],-1)),i(u,null,{default:v(()=>[s(e).mode==="fts5"?(d(),k(l,{key:0,color:"green"},{default:v(()=>[...n[3]||(n[3]=[h("FTS5 trigram",-1)])]),_:1})):s(e).mode==="like"?(d(),k(l,{key:1,color:"orange"},{default:v(()=>[...n[4]||(n[4]=[h("LIKE 兜底",-1)])]),_:1})):$("",!0),i(Fe,{events:s(e).results,category:s(e).filters.category},null,8,["events","category"]),i(m,{onClick:n[0]||(n[0]=E=>s(e).search()),loading:s(e).isLoading},{icon:v(()=>[i(s(ce))]),default:v(()=>[n[5]||(n[5]=h(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),i(x,{gutter:16,class:"browser-layout"},{default:v(()=>[i(S,{xs:24,sm:24,md:6,lg:5,xl:4},{default:v(()=>[i(he,{selected:s(e).filters.category,facets:s(e).facets,onSelect:c},null,8,["selected","facets"])]),_:1}),i(S,{xs:24,sm:24,md:18,lg:19,xl:20},{default:v(()=>[b("div",De,[i(ke,{filters:s(e).filters,facets:s(e).facets,"is-loading":s(e).isLoading,mode:s(e).mode,"short-query":s(e).shortQuery,onSetFilter:r,onReset:n[1]||(n[1]=E=>{s(e).reset(),s(e).search()})},null,8,["filters","facets","is-loading","mode","short-query"]),b("div",Ie,[s(e).isLoading&&s(e).results.length===0?(d(),O("span",Be,[i(g,{size:"small"}),n[7]||(n[7]=h(" 载入中… ",-1))])):(d(),O(P,{key:1},[b("strong",null,j(s(e).facets.total),1),n[11]||(n[11]=h(" 条事件 ",-1)),s(e).filters.category?(d(),O("span",Ne,[n[8]||(n[8]=h(" / 当前类目 ",-1)),b("strong",null,j(s(V)(s(e).filters.category)),1),b("strong",null,j(s(e).facets.byCategory[s(e).filters.category]||0),1)])):$("",!0),s(e).filters.q?(d(),O("span",Pe,[n[9]||(n[9]=h(' / 关键词 "',-1)),b("em",null,j(s(e).filters.q),1),n[10]||(n[10]=h('"',-1))])):$("",!0),b("span",Ve," / 已显示 "+j(s(e).results.length),1)],64))]),s(e).error?(d(),k(p,{key:0,type:"error","show-icon":"",message:s(e).error,closable:"",style:{margin:"12px 0"}},null,8,["message"])):$("",!0),!s(e).isLoading&&s(e).results.length===0&&!s(e).error?(d(),k(C,{key:1,description:o.value,style:{"margin-top":"40px"}},null,8,["description"])):$("",!0),b("div",Me,[(d(!0),O(P,null,H(s(e).results,(E,A)=>(d(),k($e,{key:`r-${A}-${E.id}`,event:E},null,8,["event"]))),128))]),s(e).canLoadMore?(d(),O("div",Ue,[i(m,{loading:s(e).isAppending,onClick:n[2]||(n[2]=E=>s(e).loadMore()),block:""},{default:v(()=>[...n[12]||(n[12]=[h(" 加载下一页 (50 条) ",-1)])]),_:1},8,["loading"])])):$("",!0)])]),_:1})]),_:1})])}}},Ke=M(Je,[["__scopeId","data-v-b77bf5a7"]]);export{Ke as default};
@@ -1,4 +1,4 @@
1
- import{_ as ue,u as ce,d as J}from"./index-ByjAzHrC.js";import{R as de,V as pe,f as G,a7 as me}from"./icons-BOPtEWK4.js";import{o as fe,M as d,R as j,c as l,N as s,r as v,K as u,L as i,O as h,u as I,Q as b,P as _,S as g,F as L,Y as $}from"./vendor-DhFY8mDK.js";const ye={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ve={key:0,style:{"text-align":"center",padding:"60px"}},_e={key:0,style:{color:"#e0e0e0","font-weight":"500"}},ge={key:1,style:{color:"var(--text-secondary)"}},he={key:0,style:{"margin-top":"16px"}},ke={key:0,style:{"text-align":"center",padding:"60px"}},xe={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},be={key:1,style:{color:"#e0e0e0"}},we={key:2,style:{color:"var(--text-secondary)"}},Ce={key:4,style:{color:"var(--text-muted)","font-size":"12px"}},Ie={__name:"Permissions",setup(Re){const R=ce(),O=v("roles"),z=v(!1);async function q(){z.value=!0;try{O.value==="roles"?await P():O.value==="audit"&&await E()}finally{z.value=!1}}function Q(t){t==="roles"&&W.value.length===0&&P(),t==="audit"&&A.value.length===0&&E()}const S=v(!1),W=v([]),Y=[{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 P(){S.value=!0;try{const{output:t}=await R.execute("auth roles --json",15e3);W.value=K(t,H)}catch(t){J.error("加载角色列表失败: "+t.message)}finally{S.value=!1}}function H(t){const e=[],o=t.split(`
2
- `);for(const p of o){const n=p.trim();if(!n||n.startsWith("─")||n.match(/^Role/i))continue;const r=n.split(/\s*[|│]\s*/);r.length>=2?e.push({key:e.length,name:r[0]||"-",description:r[1]||"",permissions:r[2]?r[2].split(/[,;\s]+/).filter(Boolean):[],userCount:r[3]&&parseInt(r[3],10)||0}):n.length>2&&e.push({key:e.length,name:n.slice(0,60),description:"",permissions:[],userCount:0})}return e}const C=v(""),w=v(""),M=v(!1),k=v(null),X=["note:read","note:write","admin:*","skill:execute"];async function Z(){if(!(!C.value.trim()||!w.value.trim())){M.value=!0,k.value=null;try{const t=`auth check ${C.value.trim()} "${w.value.trim()}"`,{output:e}=await R.execute(t,15e3),o=e.toLowerCase(),p=o.includes("allow")||o.includes("granted")||o.includes("true")||o.includes("yes"),n=o.includes("denied")||o.includes("reject")||o.includes("false")||o.includes("no permission");k.value={allowed:p&&!n,detail:e.trim()||(p?"用户拥有该权限":"用户没有该权限")}}catch(t){k.value={allowed:!1,detail:"检查失败: "+t.message}}finally{M.value=!1}}}const V=v(!1),A=v([]),B=v([]),ee=[{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 te(t){return{info:"blue",warn:"orange",warning:"orange",error:"red",critical:"red"}[(t||"").toLowerCase()]||"default"}async function E(){V.value=!0;try{const[t,e]=await Promise.all([R.execute("audit log --json",15e3),R.execute("audit stats --json",15e3)]);A.value=K(t.output,ae),B.value=se(e.output)}catch(t){J.error("加载审计日志失败: "+t.message)}finally{V.value=!1}}function ae(t){const e=[],o=t.split(`
1
+ import{_ as ue,u as ce,d as J}from"./index-DeoJYTHX.js";import{R as de,W as pe,f as G,a8 as me}from"./icons-AILO5ZcK.js";import{o as fe,M as d,R as j,c as l,N as s,r as v,K as u,L as i,O as h,u as I,Q as b,P as _,S as g,F as L,Y as B}from"./vendor-DhFY8mDK.js";const ye={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ve={key:0,style:{"text-align":"center",padding:"60px"}},_e={key:0,style:{color:"#e0e0e0","font-weight":"500"}},ge={key:1,style:{color:"var(--text-secondary)"}},he={key:0,style:{"margin-top":"16px"}},ke={key:0,style:{"text-align":"center",padding:"60px"}},xe={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},be={key:1,style:{color:"#e0e0e0"}},we={key:2,style:{color:"var(--text-secondary)"}},Ce={key:4,style:{color:"var(--text-muted)","font-size":"12px"}},Ie={__name:"Permissions",setup(Re){const R=ce(),O=v("roles"),W=v(!1);async function q(){W.value=!0;try{O.value==="roles"?await P():O.value==="audit"&&await V()}finally{W.value=!1}}function Q(t){t==="roles"&&S.value.length===0&&P(),t==="audit"&&A.value.length===0&&V()}const z=v(!1),S=v([]),Y=[{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 P(){z.value=!0;try{const{output:t}=await R.execute("auth roles --json",15e3);S.value=K(t,H)}catch(t){J.error("加载角色列表失败: "+t.message)}finally{z.value=!1}}function H(t){const e=[],o=t.split(`
2
+ `);for(const p of o){const n=p.trim();if(!n||n.startsWith("─")||n.match(/^Role/i))continue;const r=n.split(/\s*[|│]\s*/);r.length>=2?e.push({key:e.length,name:r[0]||"-",description:r[1]||"",permissions:r[2]?r[2].split(/[,;\s]+/).filter(Boolean):[],userCount:r[3]&&parseInt(r[3],10)||0}):n.length>2&&e.push({key:e.length,name:n.slice(0,60),description:"",permissions:[],userCount:0})}return e}const C=v(""),w=v(""),M=v(!1),k=v(null),X=["note:read","note:write","admin:*","skill:execute"];async function Z(){if(!(!C.value.trim()||!w.value.trim())){M.value=!0,k.value=null;try{const t=`auth check ${C.value.trim()} "${w.value.trim()}"`,{output:e}=await R.execute(t,15e3),o=e.toLowerCase(),p=o.includes("allow")||o.includes("granted")||o.includes("true")||o.includes("yes"),n=o.includes("denied")||o.includes("reject")||o.includes("false")||o.includes("no permission");k.value={allowed:p&&!n,detail:e.trim()||(p?"用户拥有该权限":"用户没有该权限")}}catch(t){k.value={allowed:!1,detail:"检查失败: "+t.message}}finally{M.value=!1}}}const $=v(!1),A=v([]),E=v([]),ee=[{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 te(t){return{info:"blue",warn:"orange",warning:"orange",error:"red",critical:"red"}[(t||"").toLowerCase()]||"default"}async function V(){$.value=!0;try{const[t,e]=await Promise.all([R.execute("audit log --json",15e3),R.execute("audit stats --json",15e3)]);A.value=K(t.output,ae),E.value=se(e.output)}catch(t){J.error("加载审计日志失败: "+t.message)}finally{$.value=!1}}function ae(t){const e=[],o=t.split(`
3
3
  `);for(const p of o){const n=p.trim();if(!n||n.startsWith("─")||n.startsWith("Audit")||n.startsWith("Recent"))continue;const r=n.split(/\s*[|│]\s*/);if(r.length>=3){e.push({key:e.length,timestamp:r[0]||"-",event:r[1]||"-",user:r[2]||"-",level:r[3]||"info",detail:r.slice(4).join(" ")||""});continue}const y=n.match(/^(\d{4}-\d{2}-\d{2}[\sT]\d{2}:\d{2}(?::\d{2})?)\s+(.+)/);if(y){const m=y[2],f=m.match(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i);e.push({key:e.length,timestamp:y[1],event:m.replace(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i,"").trim().slice(0,80),user:"-",level:f?f[1].toLowerCase():"info",detail:""})}else n.length>3&&!n.match(/^\d+ event/i)&&e.push({key:e.length,timestamp:"-",event:n.slice(0,80),user:"-",level:"info",detail:""})}return e}function se(t){const e=F(t);if(e&&typeof e=="object"&&!Array.isArray(e)){const y=["#1677ff","#52c41a","#faad14","#ff4d4f"];return Object.entries(e).slice(0,4).map(([m,f],x)=>({label:m,value:typeof f=="number"?f:String(f),color:y[x%y.length]}))}const o=[],p=t.split(`
4
- `),n=["#1677ff","#52c41a","#faad14","#ff4d4f"];let r=0;for(const y of p){const m=y.trim();if(!m||m.startsWith("─")||m.startsWith("Audit"))continue;const f=m.match(/^(.+?)\s*[:=]\s*(.+)$/);if(f){const x=f[1].trim(),N=f[2].trim(),T=N.match(/^(\d+)/);o.push({label:x,value:T?parseInt(T[1],10):N,color:n[r%n.length]}),r++}}return o.length===0&&o.push({label:"总事件数",value:A.value.length,color:"#1677ff"},{label:"状态",value:"就绪",color:"#52c41a"}),o}function F(t){try{const e=t.indexOf("[")!==-1?t.indexOf("["):t.indexOf("{");if(e===-1)return null;const o=t.lastIndexOf("]")!==-1?t.lastIndexOf("]")+1:t.lastIndexOf("}")+1;return JSON.parse(t.slice(e,o))}catch{return null}}function K(t,e){const o=F(t);return Array.isArray(o)?o.map((p,n)=>({key:n,...p})):e(t)}return fe(()=>{P()}),(t,e)=>{const o=u("a-button"),p=u("a-spin"),n=u("a-tag"),r=u("a-empty"),y=u("a-table"),m=u("a-tab-pane"),f=u("a-input"),x=u("a-form-item"),N=u("a-space"),T=u("a-form"),ne=u("a-alert"),U=u("a-card"),le=u("a-statistic"),oe=u("a-col"),ie=u("a-row"),re=u("a-tabs");return i(),d("div",null,[j("div",ye,[e[4]||(e[4]=j("div",null,[j("h2",{class:"page-title"},"权限管理"),j("p",{class:"page-sub"},"角色 / 权限检查 / 审计")],-1)),l(o,{type:"primary",ghost:"",loading:z.value,onClick:q},{icon:s(()=>[l(I(de))]),default:s(()=>[e[3]||(e[3]=h(" 刷新 ",-1))]),_:1},8,["loading"])]),l(re,{activeKey:O.value,"onUpdate:activeKey":e[2]||(e[2]=a=>O.value=a),type:"card",onChange:Q},{default:s(()=>[l(m,{key:"roles"},{tab:s(()=>[l(I(pe)),e[5]||(e[5]=h(" 角色列表 ",-1))]),default:s(()=>[S.value?(i(),d("div",ve,[l(p,{size:"large"})])):(i(),b(y,{key:1,columns:Y,"data-source":W.value,pagination:{pageSize:20,showTotal:a=>`共 ${a} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"perm-row"},{bodyCell:s(({column:a,record:c})=>[a.key==="name"?(i(),d("span",_e,_(c.name),1)):g("",!0),a.key==="description"?(i(),d("span",ge,_(c.description),1)):g("",!0),a.key==="permissions"?(i(),d(L,{key:2},[(i(!0),d(L,null,$((c.permissions||[]).slice(0,5),D=>(i(),b(n,{key:D,color:"blue",style:{"margin-bottom":"2px"}},{default:s(()=>[h(_(D),1)]),_:2},1024))),128)),(c.permissions||[]).length>5?(i(),b(n,{key:0,color:"default"},{default:s(()=>[h(" +"+_(c.permissions.length-5),1)]),_:2},1024)):g("",!0)],64)):g("",!0),a.key==="userCount"?(i(),b(n,{key:3,color:c.userCount>0?"green":"default"},{default:s(()=>[h(_(c.userCount??0),1)]),_:2},1032,["color"])):g("",!0)]),emptyText:s(()=>[l(r,{description:"暂无角色数据"})]),_:1},8,["data-source","pagination"]))]),_:1}),l(m,{key:"check"},{tab:s(()=>[l(I(G)),e[6]||(e[6]=h(" 权限检查 ",-1))]),default:s(()=>[l(U,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","max-width":"640px"}},{default:s(()=>[l(T,{"label-col":{span:5},"wrapper-col":{span:19}},{default:s(()=>[l(x,{label:"用户 ID",required:""},{default:s(()=>[l(f,{value:C.value,"onUpdate:value":e[0]||(e[0]=a=>C.value=a),placeholder:"输入用户 ID"},null,8,["value"])]),_:1}),l(x,{label:"权限",required:""},{default:s(()=>[l(f,{value:w.value,"onUpdate:value":e[1]||(e[1]=a=>w.value=a),placeholder:"note:read"},null,8,["value"])]),_:1}),l(x,{"wrapper-col":{offset:5,span:19}},{default:s(()=>[l(N,{wrap:""},{default:s(()=>[l(o,{type:"primary",loading:M.value,disabled:!C.value.trim()||!w.value.trim(),onClick:Z},{icon:s(()=>[l(I(G))]),default:s(()=>[e[7]||(e[7]=h(" 检查权限 ",-1))]),_:1},8,["loading","disabled"]),(i(),d(L,null,$(X,a=>l(o,{key:a,size:"small",onClick:c=>w.value=a},{default:s(()=>[h(_(a),1)]),_:2},1032,["onClick"])),64))]),_:1})]),_:1})]),_:1}),k.value!==null?(i(),d("div",he,[l(ne,{message:k.value.allowed?"权限允许":"权限拒绝",description:k.value.detail,type:k.value.allowed?"success":"error","show-icon":""},null,8,["message","description","type"])])):g("",!0)]),_:1})]),_:1}),l(m,{key:"audit"},{tab:s(()=>[l(I(me)),e[8]||(e[8]=h(" 审计日志 ",-1))]),default:s(()=>[l(ie,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:s(()=>[(i(!0),d(L,null,$(B.value,a=>(i(),b(oe,{xs:12,sm:6,key:a.label},{default:s(()=>[l(U,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:s(()=>[l(le,{title:a.label,value:a.value,"value-style":{color:a.color,fontSize:"20px"}},null,8,["title","value","value-style"])]),_:2},1024)]),_:2},1024))),128))]),_:1}),V.value?(i(),d("div",ke,[l(p,{size:"large"})])):(i(),b(y,{key:1,columns:ee,"data-source":A.value,pagination:{pageSize:20,showTotal:a=>`共 ${a} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"perm-row"},{bodyCell:s(({column:a,record:c})=>[a.key==="timestamp"?(i(),d("span",xe,_(c.timestamp),1)):g("",!0),a.key==="event"?(i(),d("span",be,_(c.event),1)):g("",!0),a.key==="user"?(i(),d("span",we,_(c.user),1)):g("",!0),a.key==="level"?(i(),b(n,{key:3,color:te(c.level)},{default:s(()=>[h(_(c.level),1)]),_:2},1032,["color"])):g("",!0),a.key==="detail"?(i(),d("span",Ce,_(c.detail),1)):g("",!0)]),emptyText:s(()=>[l(r,{description:"暂无审计日志"})]),_:1},8,["data-source","pagination"]))]),_:1})]),_:1},8,["activeKey"])])}}},Te=ue(Ie,[["__scopeId","data-v-71782e36"]]);export{Te as default};
4
+ `),n=["#1677ff","#52c41a","#faad14","#ff4d4f"];let r=0;for(const y of p){const m=y.trim();if(!m||m.startsWith("─")||m.startsWith("Audit"))continue;const f=m.match(/^(.+?)\s*[:=]\s*(.+)$/);if(f){const x=f[1].trim(),N=f[2].trim(),T=N.match(/^(\d+)/);o.push({label:x,value:T?parseInt(T[1],10):N,color:n[r%n.length]}),r++}}return o.length===0&&o.push({label:"总事件数",value:A.value.length,color:"#1677ff"},{label:"状态",value:"就绪",color:"#52c41a"}),o}function F(t){try{const e=t.indexOf("[")!==-1?t.indexOf("["):t.indexOf("{");if(e===-1)return null;const o=t.lastIndexOf("]")!==-1?t.lastIndexOf("]")+1:t.lastIndexOf("}")+1;return JSON.parse(t.slice(e,o))}catch{return null}}function K(t,e){const o=F(t);return Array.isArray(o)?o.map((p,n)=>({key:n,...p})):e(t)}return fe(()=>{P()}),(t,e)=>{const o=u("a-button"),p=u("a-spin"),n=u("a-tag"),r=u("a-empty"),y=u("a-table"),m=u("a-tab-pane"),f=u("a-input"),x=u("a-form-item"),N=u("a-space"),T=u("a-form"),ne=u("a-alert"),U=u("a-card"),le=u("a-statistic"),oe=u("a-col"),ie=u("a-row"),re=u("a-tabs");return i(),d("div",null,[j("div",ye,[e[4]||(e[4]=j("div",null,[j("h2",{class:"page-title"},"权限管理"),j("p",{class:"page-sub"},"角色 / 权限检查 / 审计")],-1)),l(o,{type:"primary",ghost:"",loading:W.value,onClick:q},{icon:s(()=>[l(I(de))]),default:s(()=>[e[3]||(e[3]=h(" 刷新 ",-1))]),_:1},8,["loading"])]),l(re,{activeKey:O.value,"onUpdate:activeKey":e[2]||(e[2]=a=>O.value=a),type:"card",onChange:Q},{default:s(()=>[l(m,{key:"roles"},{tab:s(()=>[l(I(pe)),e[5]||(e[5]=h(" 角色列表 ",-1))]),default:s(()=>[z.value?(i(),d("div",ve,[l(p,{size:"large"})])):(i(),b(y,{key:1,columns:Y,"data-source":S.value,pagination:{pageSize:20,showTotal:a=>`共 ${a} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"perm-row"},{bodyCell:s(({column:a,record:c})=>[a.key==="name"?(i(),d("span",_e,_(c.name),1)):g("",!0),a.key==="description"?(i(),d("span",ge,_(c.description),1)):g("",!0),a.key==="permissions"?(i(),d(L,{key:2},[(i(!0),d(L,null,B((c.permissions||[]).slice(0,5),D=>(i(),b(n,{key:D,color:"blue",style:{"margin-bottom":"2px"}},{default:s(()=>[h(_(D),1)]),_:2},1024))),128)),(c.permissions||[]).length>5?(i(),b(n,{key:0,color:"default"},{default:s(()=>[h(" +"+_(c.permissions.length-5),1)]),_:2},1024)):g("",!0)],64)):g("",!0),a.key==="userCount"?(i(),b(n,{key:3,color:c.userCount>0?"green":"default"},{default:s(()=>[h(_(c.userCount??0),1)]),_:2},1032,["color"])):g("",!0)]),emptyText:s(()=>[l(r,{description:"暂无角色数据"})]),_:1},8,["data-source","pagination"]))]),_:1}),l(m,{key:"check"},{tab:s(()=>[l(I(G)),e[6]||(e[6]=h(" 权限检查 ",-1))]),default:s(()=>[l(U,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","max-width":"640px"}},{default:s(()=>[l(T,{"label-col":{span:5},"wrapper-col":{span:19}},{default:s(()=>[l(x,{label:"用户 ID",required:""},{default:s(()=>[l(f,{value:C.value,"onUpdate:value":e[0]||(e[0]=a=>C.value=a),placeholder:"输入用户 ID"},null,8,["value"])]),_:1}),l(x,{label:"权限",required:""},{default:s(()=>[l(f,{value:w.value,"onUpdate:value":e[1]||(e[1]=a=>w.value=a),placeholder:"note:read"},null,8,["value"])]),_:1}),l(x,{"wrapper-col":{offset:5,span:19}},{default:s(()=>[l(N,{wrap:""},{default:s(()=>[l(o,{type:"primary",loading:M.value,disabled:!C.value.trim()||!w.value.trim(),onClick:Z},{icon:s(()=>[l(I(G))]),default:s(()=>[e[7]||(e[7]=h(" 检查权限 ",-1))]),_:1},8,["loading","disabled"]),(i(),d(L,null,B(X,a=>l(o,{key:a,size:"small",onClick:c=>w.value=a},{default:s(()=>[h(_(a),1)]),_:2},1032,["onClick"])),64))]),_:1})]),_:1})]),_:1}),k.value!==null?(i(),d("div",he,[l(ne,{message:k.value.allowed?"权限允许":"权限拒绝",description:k.value.detail,type:k.value.allowed?"success":"error","show-icon":""},null,8,["message","description","type"])])):g("",!0)]),_:1})]),_:1}),l(m,{key:"audit"},{tab:s(()=>[l(I(me)),e[8]||(e[8]=h(" 审计日志 ",-1))]),default:s(()=>[l(ie,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:s(()=>[(i(!0),d(L,null,B(E.value,a=>(i(),b(oe,{xs:12,sm:6,key:a.label},{default:s(()=>[l(U,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:s(()=>[l(le,{title:a.label,value:a.value,"value-style":{color:a.color,fontSize:"20px"}},null,8,["title","value","value-style"])]),_:2},1024)]),_:2},1024))),128))]),_:1}),$.value?(i(),d("div",ke,[l(p,{size:"large"})])):(i(),b(y,{key:1,columns:ee,"data-source":A.value,pagination:{pageSize:20,showTotal:a=>`共 ${a} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"perm-row"},{bodyCell:s(({column:a,record:c})=>[a.key==="timestamp"?(i(),d("span",xe,_(c.timestamp),1)):g("",!0),a.key==="event"?(i(),d("span",be,_(c.event),1)):g("",!0),a.key==="user"?(i(),d("span",we,_(c.user),1)):g("",!0),a.key==="level"?(i(),b(n,{key:3,color:te(c.level)},{default:s(()=>[h(_(c.level),1)]),_:2},1032,["color"])):g("",!0),a.key==="detail"?(i(),d("span",Ce,_(c.detail),1)):g("",!0)]),emptyText:s(()=>[l(r,{description:"暂无审计日志"})]),_:1},8,["data-source","pagination"]))]),_:1})]),_:1},8,["activeKey"])])}}},Te=ue(Ie,[["__scopeId","data-v-71782e36"]]);export{Te as default};
@@ -0,0 +1 @@
1
+ import{w as Xe,L as n,Q as m,N as e,c as a,M as f,R as u,F as Z,Y as ie,Z as et,P as r,O as o,S as d,a1 as tt,f as re,r as h,K as p,a as ne,a4 as Dt,o as Et,u as V,a0 as It,$ as Mt}from"./vendor-DhFY8mDK.js";import{u as Oe}from"./usePersonalDataHub-C3qhf1sQ.js";import{_ as Se,d as R}from"./index-DeoJYTHX.js";import{R as Je,aB as Ot,O as St,al as Rt,h as zt,aC as Nt,Q as Ut,aD as Lt,aE as Ht,y as Tt,q as qt,aF as Ft,a3 as Wt,ad as Kt,aG as Qt,m as Vt,e as Ze}from"./icons-AILO5ZcK.js";const Bt={key:0},Gt={class:"vendor-head"},jt={class:"hint"},Jt={class:"hint",style:{"margin-top":"4px"}},Zt={key:0,class:"hint",style:{"margin-top":"4px",color:"#ff4d4f"}},Yt={key:1},Xt={class:"hint"},ea=["href"],ta={class:"howto"},aa=["href"],la={key:3,style:{"margin-top":"8px"}},oa={key:2,class:"kv",style:{"margin-top":"4px"}},na={key:3,class:"kv",style:{"margin-top":"4px",color:"#ff4d4f"}},sa={key:2},ia={__name:"AIChatWizard",props:{open:{type:Boolean,default:!1},existingAccounts:{type:Array,default:()=>[]}},emits:["update:open","registered"],setup(ce,{emit:ye}){const P=ce,E=ye,K=[{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}],$=Oe(),c=h(1),g=h(null),I=h(""),D=h(null),O=h(null),F=h(null),N=ne({open:!1,probe:!1,register:!1}),se=re(()=>K.find(y=>y.vendor===g.value)||{}),ue=re(()=>c.value===1?"选择一家 AI 服务商":c.value===2?D.value?.fallbackMode==="paste"?"在外部浏览器登录,把 cookie 粘贴到下面":"在内嵌浏览器登录,主进程自动读取 cookie":"校验并写入本地加密 vault"),B=re(()=>{const y=O.value;return y?y.reason==="UNKNOWN_VENDOR"?"未知厂商 — 请刷新页面或重选":y.reason==="PASTE_REQUIRED"?"请先粘贴 cookie 字符串":y.missingRequired?.length?`缺关键 cookie: ${y.missingRequired.join(", ")}`:y.reason||"cookie 校验失败":""}),S=re(()=>{const y=F.value;return y?y.reason==="REQUIRED_COOKIES_MISSING"?`缺关键 cookie: ${(y.missingRequired||[]).join(", ")}`:y.reason==="VALIDATE_COOKIE_FAILED"?"厂商拒绝该 cookie(可能已过期或被风控)":y.reason==="ADAPTER_THREW"?`Adapter 抛错: ${y.error||"网络错误"}`:y.reason==="UNKNOWN_VENDOR"?"未知厂商":y.reason||"注册失败":"未知错误"});function v(y){return P.existingAccounts.some(i=>i&&i.vendor===y)}function ae(y){return P.existingAccounts.find(i=>i&&i.vendor===y)||null}function T(y){const i=ae(y);return i?i.lastHealth?i.lastHealth.ok?"ok":i.lastHealth.reason==="SPEC_VERSION_MISMATCH"?"mismatch":"fail":"unknown":null}function X(y){const i=ae(y);if(!i||!i.lastHealth||i.lastHealth.ok)return"";const L=i.lastHealth.reason;return L?L==="SPEC_VERSION_MISMATCH"?"cookie 规格已升级,请重新登录":L==="ADAPTER_THREW"?"上次校验抛错,建议稍后重试":L==="COOKIE_EXPIRED"?"Cookie 已过期,请重新登录":L:"Cookie 校验失败,建议重新登录"}async function G(y){try{(await $.unregisterAichat(y))?.ok&&E("registered",{vendor:y,accountId:null,unregistered:!0})}catch(i){F.value={ok:!1,reason:i?.message||"UNREGISTER_FAILED"}}}function k(y){g.value=y}async function H(){if(g.value){N.open=!0,D.value=null,O.value=null,I.value="";try{if(D.value=await $.openAichatLogin(g.value),!D.value?.ok)return;c.value=2}catch(y){D.value={ok:!1,reason:y?.message||"OPEN_FAILED"}}finally{N.open=!1}}}async function ee(){N.probe=!0,O.value=null;try{const y=I.value.trim(),i=y||void 0;O.value=await $.probeAichatCookies(g.value,i)}catch(y){O.value={ok:!1,reason:y?.message||"PROBE_FAILED"}}finally{N.probe=!1}}async function x(){if(O.value?.ok){N.register=!0;try{F.value=await $.registerAichatVendor(g.value,O.value.cookies),c.value=3,F.value?.ok&&E("registered",{vendor:g.value,accountId:F.value.accountId})}catch(y){F.value={ok:!1,reason:y?.message||"REGISTER_FAILED"},c.value=3}finally{N.register=!1}}}function q(){c.value=1,g.value=null,I.value="",D.value=null,O.value=null,F.value=null}function de(){q(),E("update:open",!1)}return Xe(()=>P.open,y=>{y&&q()}),(y,i)=>{const L=p("a-alert"),C=p("a-tag"),Q=p("a-button"),Pe=p("a-popconfirm"),ge=p("a-card"),Ae=p("a-col"),fe=p("a-row"),z=p("a-collapse-panel"),U=p("a-collapse"),w=p("a-textarea"),_=p("a-form-item"),$e=p("a-form"),we=p("a-result"),De=p("a-space"),Ee=p("a-drawer");return n(),m(Ee,{open:ce.open,title:"添加 AI 对话账号",placement:"right",width:640,"destroy-on-close":!0,"onUpdate:open":i[4]||(i[4]=M=>E("update:open",M)),onClose:de},{footer:e(()=>[a(De,{style:{float:"right"}},{default:e(()=>[c.value>1&&c.value<3?(n(),m(Q,{key:0,onClick:i[3]||(i[3]=M=>c.value=c.value-1)},{default:e(()=>[...i[22]||(i[22]=[o("上一步",-1)])]),_:1})):d("",!0),a(Q,{onClick:de},{default:e(()=>[...i[23]||(i[23]=[o("取消",-1)])]),_:1}),c.value===1?(n(),m(Q,{key:1,type:"primary",disabled:!g.value,loading:N.open,onClick:H},{default:e(()=>[...i[24]||(i[24]=[o(" 下一步 ",-1)])]),_:1},8,["disabled","loading"])):d("",!0),c.value===2&&D.value?.fallbackMode==="paste"?(n(),m(Q,{key:2,loading:N.probe,disabled:!I.value.trim(),onClick:ee},{default:e(()=>[...i[25]||(i[25]=[o(" 检测 cookie ",-1)])]),_:1},8,["loading","disabled"])):d("",!0),c.value===2&&D.value?.fallbackMode!=="paste"?(n(),m(Q,{key:3,loading:N.probe,onClick:ee},{default:e(()=>[...i[26]||(i[26]=[o(" 检测 cookie ",-1)])]),_:1},8,["loading"])):d("",!0),c.value===2?(n(),m(Q,{key:4,type:"primary",loading:N.register,disabled:!O.value?.ok,onClick:x},{default:e(()=>[...i[27]||(i[27]=[o(" 注册 ",-1)])]),_:1},8,["loading","disabled"])):d("",!0)]),_:1})]),default:e(()=>[a(L,{message:`第 ${c.value} / 3 步`,description:ue.value,type:"info","show-icon":"",style:{"margin-bottom":"16px"}},null,8,["message","description"]),c.value===1?(n(),f("div",Bt,[i[10]||(i[10]=u("p",{class:"hint"}," 选择要接入的 AI 服务商。登录后将本地读取 cookie 同步对话历史;cookie 仅落本机加密文件,不上传任何云端。 ",-1)),a(fe,{gutter:[12,12]},{default:e(()=>[(n(),f(Z,null,ie(K,M=>a(Ae,{xs:24,sm:12,md:8,key:M.vendor},{default:e(()=>[a(ge,{size:"small",hoverable:"",class:et(["vendor-card",{selected:g.value===M.vendor}]),onClick:Y=>k(M.vendor)},{default:e(()=>[u("div",Gt,[u("strong",null,r(M.displayName),1),T(M.vendor)==="fail"?(n(),m(C,{key:0,color:"red"},{default:e(()=>[...i[5]||(i[5]=[o("🔴 重新登录",-1)])]),_:1})):T(M.vendor)==="mismatch"?(n(),m(C,{key:1,color:"orange"},{default:e(()=>[...i[6]||(i[6]=[o("⚠ 规格升级",-1)])]),_:1})):T(M.vendor)==="unknown"?(n(),m(C,{key:2,color:"blue"},{default:e(()=>[...i[7]||(i[7]=[o("已接入·待巡检",-1)])]),_:1})):T(M.vendor)==="ok"?(n(),m(C,{key:3,color:"green"},{default:e(()=>[...i[8]||(i[8]=[o("✓ 已接入",-1)])]),_:1})):d("",!0)]),u("div",jt,r(M.notes),1),u("div",Jt,[a(C,{color:"default"},{default:e(()=>[o(r(M.requiredCookies.length)+" 必需 cookie",1)]),_:2},1024),a(C,{color:"default"},{default:e(()=>[o("过期约 "+r(M.cookieMaxAgeHintDays)+" 天",1)]),_:2},1024)]),v(M.vendor)&&X(M.vendor)?(n(),f("div",Zt,r(X(M.vendor)),1)):d("",!0),v(M.vendor)?(n(),f("div",{key:1,class:"vendor-actions",onClick:i[0]||(i[0]=tt(()=>{},["stop"]))},[a(Pe,{title:"注销该 AI 对话来源?历史事件仍可在 vault 中查询。","ok-text":"注销","cancel-text":"取消",onConfirm:Y=>G(M.vendor)},{default:e(()=>[a(Q,{size:"small",type:"text",danger:""},{default:e(()=>[...i[9]||(i[9]=[o("注销",-1)])]),_:1})]),_:1},8,["onConfirm"])])):d("",!0)]),_:2},1032,["class","onClick"])]),_:2},1024)),64))]),_:1})])):d("",!0),c.value===2&&D.value?(n(),f("div",Yt,[u("p",Xt,[u("strong",null,r(se.value.displayName),1),i[11]||(i[11]=o(" · ",-1)),u("a",{href:D.value.loginUrl,target:"_blank",rel:"noopener noreferrer"},r(D.value.loginUrl),9,ea)]),D.value.fallbackMode==="paste"?(n(),m(L,{key:0,message:D.value.helpText||"请在外部浏览器登录后从开发者工具复制全部 cookie 字符串粘贴到下方。",type:"warning","show-icon":"",style:{"margin-bottom":"12px"}},null,8,["message"])):(n(),m(L,{key:1,message:"桌面端:请在弹出的内嵌浏览器窗口登录后点击 “检测 cookie”。",type:"info","show-icon":"",style:{"margin-bottom":"12px"}})),D.value.fallbackMode==="paste"?(n(),m(U,{key:2,bordered:!1,style:{"margin-bottom":"12px"}},{default:e(()=>[a(z,{key:"howto",header:"如何获取 cookie 字符串?"},{default:e(()=>[u("ol",ta,[u("li",null,[i[12]||(i[12]=o("用 Chrome / Edge 打开 ",-1)),u("a",{href:D.value.loginUrl,target:"_blank"},r(D.value.loginUrl),9,aa)]),i[13]||(i[13]=u("li",null,"完成登录,进入对话页",-1)),i[14]||(i[14]=u("li",null,[o("按 "),u("kbd",null,"F12"),o(" 打开开发者工具 → "),u("strong",null,"Application"),o(" → "),u("strong",null,"Cookies")],-1)),i[15]||(i[15]=u("li",null,"选中域名 → 全选所有 cookie 行 → 用扩展(如 EditThisCookie)导出 “name=value; …” 串",-1)),i[16]||(i[16]=u("li",null,[o("或在 Console 执行 "),u("code",null,"document.cookie"),o(" 复制结果(注意:HTTP-Only cookie 取不到,仍需 Application 面板)")],-1)),i[17]||(i[17]=u("li",null,"粘贴到下方文本框,点 “检测 cookie”",-1))])]),_:1})]),_:1})):d("",!0),a($e,{layout:"vertical"},{default:e(()=>[a(_,{label:"Cookie 字符串"},{default:e(()=>[a(w,{value:I.value,"onUpdate:value":i[1]||(i[1]=M=>I.value=M),rows:6,placeholder:"name1=value1; name2=value2; name3=value3 …",autocomplete:"off"},null,8,["value"])]),_:1})]),_:1}),O.value?(n(),f("div",la,[O.value.ok?(n(),m(L,{key:0,type:"success","show-icon":"",message:`已识别 ${O.value.foundRequired.length} 个必需 cookie + ${O.value.foundOptional.length} 个可选 cookie`},null,8,["message"])):(n(),m(L,{key:1,type:"error","show-icon":"",message:B.value},null,8,["message"])),O.value.foundRequired?.length?(n(),f("div",oa," ✓ "+r(O.value.foundRequired.join(", ")),1)):d("",!0),O.value.missingRequired?.length?(n(),f("div",na," 缺失: "+r(O.value.missingRequired.join(", ")),1)):d("",!0)])):d("",!0)])):d("",!0),c.value===3?(n(),f("div",sa,[F.value?.ok?(n(),m(we,{key:0,status:"success",title:`${se.value.displayName} 已接入`,"sub-title":`accountId: ${F.value.accountId} · userId: ${F.value.validation?.userId||"匿名"}`},{extra:e(()=>[a(Q,{type:"primary",onClick:de},{default:e(()=>[...i[18]||(i[18]=[o("完成",-1)])]),_:1}),a(Q,{onClick:q},{default:e(()=>[...i[19]||(i[19]=[o("再加一家",-1)])]),_:1})]),_:1},8,["title","sub-title"])):(n(),m(we,{key:1,status:"error",title:"接入失败","sub-title":S.value},{extra:e(()=>[a(Q,{type:"primary",onClick:i[2]||(i[2]=M=>c.value=2)},{default:e(()=>[...i[20]||(i[20]=[o("返回粘贴 cookie",-1)])]),_:1}),a(Q,{onClick:q},{default:e(()=>[...i[21]||(i[21]=[o("选其他厂商",-1)])]),_:1})]),_:1},8,["sub-title"]))])):d("",!0)]),_:1},8,["open"])}}},ra=Se(ia,[["__scopeId","data-v-a608230c"]]),ua={key:0},da={key:0,class:"probe-result"},pa={key:0,class:"kv"},va={key:0,class:"kv"},ca={key:1},fa={key:2},ma={key:2,style:{"margin-top":"12px"}},ya={__name:"WechatWizard",props:{open:{type:Boolean,default:!1}},emits:["update:open","registered"],setup(ce,{emit:ye}){const P=ce,E=ye,K=Oe(),$=h(1),c=h(null),g=ne({uin:"",dbPath:"",wechatDataPath:"",forceProvider:null}),I=h(null),D=ne({probe:!1,register:!1}),O=re(()=>$.value===1?"探测设备 + WeChat 版本,确认可用的 keyProvider":$.value===2?"填 UIN 与已 adb-pull 的本地路径":"bootstrap 注册 + 持久化 wechat-accounts.json"),F=re(()=>{const S=I.value;return S?S.reason==="ENV_UNSUPPORTED"?S.message||"env-probe 拒绝 — 请回到第 1 步看 reasons":S.reason==="MD5_NEEDS_WECHAT_DATA_PATH"?"MD5 路径需要 wechatDataPath":S.reason==="FRIDA_NEEDS_WXID"?"Frida 路径需要 account.uin / wxid":S.reason==="ADAPTER_CTOR_FAILED"?`Adapter ctor 抛错: ${S.message||""}`:S.reason==="BOOTSTRAP_THREW"?`Bootstrap 抛错: ${S.message||""}`:S.reason==="UIN_REQUIRED"?"UIN 不能为空":S.message||S.reason||"注册失败":"未知错误"});async function N(){D.probe=!0;try{c.value=await K.probeWechatEnv()}catch(S){c.value={ok:!1,suggestedKeyProvider:"unsupported",reasons:[S?.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{D.probe=!1}}async function se(){D.register=!0;try{I.value=await K.registerWechat({account:{uin:g.uin},dbPath:g.dbPath||null,wechatDataPath:g.wechatDataPath||null,keyProviderOverride:g.forceProvider}),$.value=3,I.value?.ok&&E("registered",{uin:g.uin,chosenKeyProvider:I.value.chosenKeyProvider})}catch(S){I.value={ok:!1,reason:"BOOTSTRAP_THREW",message:S?.message||"RPC failed"},$.value=3}finally{D.register=!1}}function ue(){$.value=1,c.value=null,g.uin="",g.dbPath="",g.wechatDataPath="",g.forceProvider=null,I.value=null}function B(){ue(),E("update:open",!1)}return Xe(()=>P.open,S=>{S&&ue()}),(S,v)=>{const ae=p("a-alert"),T=p("a-button"),X=p("a-tag"),G=p("a-descriptions-item"),k=p("a-descriptions"),H=p("a-input"),ee=p("a-form-item"),x=p("a-radio"),q=p("a-radio-group"),de=p("a-form"),y=p("a-result"),i=p("a-space"),L=p("a-drawer");return n(),m(L,{open:ce.open,title:"添加 WeChat 账号",placement:"right",width:640,"destroy-on-close":!0,"onUpdate:open":v[8]||(v[8]=C=>E("update:open",C)),onClose:B},{footer:e(()=>[a(i,{style:{float:"right"}},{default:e(()=>[$.value>1&&$.value<3?(n(),m(T,{key:0,onClick:v[6]||(v[6]=C=>$.value=$.value-1)},{default:e(()=>[...v[21]||(v[21]=[o("上一步",-1)])]),_:1})):d("",!0),a(T,{onClick:B},{default:e(()=>[...v[22]||(v[22]=[o("取消",-1)])]),_:1}),$.value===1?(n(),m(T,{key:1,type:"primary",disabled:!c.value||c.value.suggestedKeyProvider==="unsupported",onClick:v[7]||(v[7]=C=>$.value=2)},{default:e(()=>[...v[23]||(v[23]=[o(" 下一步 ",-1)])]),_:1},8,["disabled"])):d("",!0),$.value===2?(n(),m(T,{key:2,type:"primary",loading:D.register,disabled:!g.uin||c.value?.suggestedKeyProvider==="md5"&&!g.wechatDataPath,onClick:se},{default:e(()=>[...v[24]||(v[24]=[o(" 注册 ",-1)])]),_:1},8,["loading","disabled"])):d("",!0)]),_:1})]),default:e(()=>[a(ae,{message:`第 ${$.value} / 3 步`,description:O.value,type:"info","show-icon":"",style:{"margin-bottom":"16px"}},null,8,["message","description"]),$.value===1?(n(),f("div",ua,[v[11]||(v[11]=u("p",{class:"hint"},[o(" 请用 USB 连接 Android 设备(开启 USB 调试)。WeChat ≥ 8.0 需要 root + frida-server。 探测仅读取 "),u("code",null,"adb shell"),o(" 命令输出,不写入任何东西。 ")],-1)),a(T,{type:"primary",loading:D.probe,onClick:N,style:{"margin-bottom":"12px"}},{default:e(()=>[...v[9]||(v[9]=[o(" 🔍 探测环境 ",-1)])]),_:1},8,["loading"]),c.value?(n(),f("div",da,[a(k,{column:1,size:"small",bordered:""},{default:e(()=>[a(G,{label:"suggestedKeyProvider"},{default:e(()=>[a(X,{color:c.value.suggestedKeyProvider==="unsupported"?"red":"green"},{default:e(()=>[o(r(c.value.suggestedKeyProvider),1)]),_:1},8,["color"])]),_:1}),a(G,{label:"adb 设备"},{default:e(()=>[a(X,{color:c.value.device.reachable?"green":"red"},{default:e(()=>[o(r(c.value.device.reachable?"已连接":"未连接"),1)]),_:1},8,["color"]),c.value.device.serial?(n(),f("span",pa,r(c.value.device.serial)+" · abi="+r(c.value.device.abi||"?"),1)):d("",!0)]),_:1}),a(G,{label:"root"},{default:e(()=>[a(X,{color:c.value.root.detected?"green":"default"},{default:e(()=>[o(r(c.value.root.detected?"已 root":"未 root"),1)]),_:1},8,["color"]),c.value.root.magiskInstalled?(n(),m(X,{key:0,color:"blue"},{default:e(()=>[...v[10]||(v[10]=[o("Magisk",-1)])]),_:1})):d("",!0)]),_:1}),a(G,{label:"frida-server"},{default:e(()=>[a(X,{color:c.value.frida.serverRunning?"green":"default"},{default:e(()=>[o(r(c.value.frida.serverRunning?"运行中":"未运行"),1)]),_:1},8,["color"]),c.value.frida.port?(n(),f("span",va," :"+r(c.value.frida.port),1)):d("",!0)]),_:1}),a(G,{label:"WeChat"},{default:e(()=>[a(X,{color:c.value.wechat.installed?"green":"red"},{default:e(()=>[o(r(c.value.wechat.installed?c.value.wechat.versionName:"未安装"),1)]),_:1},8,["color"])]),_:1})]),_:1}),(n(!0),f(Z,null,ie(c.value.reasons||[],C=>(n(),m(ae,{key:C,message:C,type:"info","show-icon":"",style:{"margin-top":"8px"}},null,8,["message"]))),128)),(n(!0),f(Z,null,ie(c.value.warnings||[],C=>(n(),m(ae,{key:C,message:C,type:"warning","show-icon":"",style:{"margin-top":"8px"}},null,8,["message"]))),128))])):d("",!0)])):d("",!0),$.value===2?(n(),f("div",ca,[v[16]||(v[16]=u("p",{class:"hint"},[o(" 填写从 adb pull 拉下来的本地路径。MD5 路径(7.x)需要 "),u("code",null,"wechatDataPath"),o("; Frida 路径(8.0+)需要设备运行 frida-server。 ")],-1)),a(de,{layout:"vertical"},{default:e(()=>[a(ee,{label:"UIN / wxid",required:""},{default:e(()=>[a(H,{value:g.uin,"onUpdate:value":v[0]||(v[0]=C=>g.uin=C),placeholder:"WeChat 数字 UIN 或 wxid"},null,8,["value"])]),_:1}),a(ee,{label:"dbPath(已拉下的 EnMicroMsg.db 本地路径)"},{default:e(()=>[a(H,{value:g.dbPath,"onUpdate:value":v[1]||(v[1]=C=>g.dbPath=C),placeholder:"C:\\\\users\\\\me\\\\pull\\\\EnMicroMsg.db"},null,8,["value"])]),_:1}),a(ee,{label:"wechatDataPath(已拉下的 /data/data/com.tencent.mm/ 目录)"},{default:e(()=>[a(H,{value:g.wechatDataPath,"onUpdate:value":v[2]||(v[2]=C=>g.wechatDataPath=C),placeholder:"C:\\\\users\\\\me\\\\pull\\\\com.tencent.mm"},null,8,["value"]),v[12]||(v[12]=u("div",{class:"hint"},"MD5 路径必填;Frida 路径可空",-1))]),_:1}),a(ee,{label:"强制 keyProvider(覆盖 env-probe 建议)"},{default:e(()=>[a(q,{value:g.forceProvider,"onUpdate:value":v[3]||(v[3]=C=>g.forceProvider=C)},{default:e(()=>[a(x,{value:null},{default:e(()=>[...v[13]||(v[13]=[o("自动(推荐)",-1)])]),_:1}),a(x,{value:"md5"},{default:e(()=>[...v[14]||(v[14]=[o("md5",-1)])]),_:1}),a(x,{value:"frida"},{default:e(()=>[...v[15]||(v[15]=[o("frida",-1)])]),_:1})]),_:1},8,["value"])]),_:1})]),_:1})])):d("",!0),$.value===3?(n(),f("div",fa,[I.value?.ok?(n(),m(y,{key:0,status:"success",title:`WeChat 已接入 (uin=${g.uin})`,"sub-title":`provider=${I.value.chosenKeyProvider} · sensitivity=${I.value.sensitivity}`},{extra:e(()=>[a(T,{type:"primary",onClick:B},{default:e(()=>[...v[17]||(v[17]=[o("完成",-1)])]),_:1}),a(T,{onClick:ue},{default:e(()=>[...v[18]||(v[18]=[o("再加一个",-1)])]),_:1})]),_:1},8,["title","sub-title"])):(n(),m(y,{key:1,status:"error",title:"接入失败","sub-title":F.value},Dt({_:2},[I.value?.probe?.reasons?.length?{name:"extra",fn:e(()=>[a(T,{onClick:v[4]||(v[4]=C=>$.value=1)},{default:e(()=>[...v[19]||(v[19]=[o("返回检查环境",-1)])]),_:1}),a(T,{onClick:v[5]||(v[5]=C=>$.value=2)},{default:e(()=>[...v[20]||(v[20]=[o("返回修改路径",-1)])]),_:1})]),key:"0"}:void 0]),1032,["sub-title"])),I.value?.probe?.reasons?.length?(n(),f("div",ma,[(n(!0),f(Z,null,ie(I.value.probe.reasons,C=>(n(),m(ae,{key:C,message:C,type:"warning","show-icon":"",style:{"margin-bottom":"4px"}},null,8,["message"]))),128))])):d("",!0)])):d("",!0)]),_:1},8,["open"])}}},ga=Se(ya,[["__scopeId","data-v-c7327e24"]]),ka={class:"pdh-page"},_a={class:"pdh-header"},ba={class:"kv"},wa={key:0,class:"kv"},xa={key:1,class:"kv"},Ca={class:"kv"},ha={key:0,class:"kv hint"},Pa={style:{"margin-top":"12px",display:"flex","justify-content":"space-between","align-items":"center"}},Aa={key:0,style:{"margin-top":"12px"}},$a={key:1,style:{"margin-top":"12px"}},Da={class:"answer"},Ea={style:{"margin-top":"8px","font-size":"12px",color:"var(--text-color-secondary, #888)"}},Ia={key:2,style:{"margin-top":"8px"}},Ma={style:{display:"flex","align-items":"center",gap:"8px"}},Oa={class:"hint",style:{"margin-top":"4px"}},Sa={key:0,style:{"margin-top":"16px"}},Ra={class:"json-pre",style:{"max-height":"300px",overflow:"auto"}},za={key:0,style:{"margin-top":"8px"}},Na={style:{"min-width":"220px"}},Ua={style:{color:"#999","font-size":"12px","margin-left":"4px"}},La={key:2,style:{"margin-top":"12px"}},Ha={class:"kv",style:{"margin-bottom":"4px"}},Ta={key:0,style:{color:"#faad14"}},qa={key:2,class:"kv hint"},Fa={key:3,class:"kv hint",style:{color:"#ff4d4f"}},Wa={key:3,style:{"margin-top":"12px"}},Ka={key:2,style:{"margin-top":"8px"}},Qa={key:1},Va={style:{"margin-left":"8px"}},Ba={key:3,class:"json-pre"},Ga={style:{"margin-left":"6px"}},ja={key:0,style:{"margin-left":"6px"}},Ja={key:0,class:"hint",style:{"margin-top":"4px"}},Za={key:0,style:{"margin-top":"8px"}},Ya={style:{"margin-bottom":"12px"}},Xa={class:"hint"},el={class:"kv"},tl={class:"kv",style:{"margin-top":"4px"}},al={class:"kv"},ll={key:0,class:"hint",style:{"margin-top":"4px"}},ol={key:1,style:{"font-size":"11px"}},Ye="pdh.syncIncludeOptions.v1",nl={__name:"PersonalDataHub",setup(ce,{expose:ye}){const P=Oe(),E=h(null),K=h(null),$=h([]),c=h(""),g=h(null),I=h(""),D=h(!1),O=h(!1),F=h([]),N=h(null),se={"system-data-android":{contacts:!0,apps:!0,sms:!0,calls:!0}};function ue(){try{const l=localStorage.getItem(Ye);if(!l)return JSON.parse(JSON.stringify(se));const t=JSON.parse(l);return{"system-data-android":{...se["system-data-android"],...t["system-data-android"]||{}}}}catch{return JSON.parse(JSON.stringify(se))}}const B=ne(ue());function S(){try{localStorage.setItem(Ye,JSON.stringify(B)),console.log("[PDH-include] persisted:",JSON.stringify(B))}catch(l){console.warn("[PDH-include] persist failed:",l&&l.message)}}const v=h({}),ae={"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 T(l){return Object.prototype.hasOwnProperty.call(ae,l)}function X(l,t,b){const he=b&&b.target?!!b.target.checked:!!b;console.log("[PDH-include] toggle",l,t,"=>",he),B[l]||(B[l]={}),B[l][t]=he,S()}const G=h(!1),k=ne({provider:"qq",email:"",authCode:"",host:"",port:993,pdfPasswordHints:{idCardLast6:"",phoneLast6:"",cardLast6:""}}),H=h(null),ee=h(!1),x=h(null),q=h(null),de=[{name:"analysis.spending",label:"消费分析",icon:Nt,description:"总支出 / 商家排行 / 月度趋势"},{name:"analysis.relations",label:"人际关系",icon:Ut,description:"与每个人的互动频率 / 主动比例"},{name:"analysis.footprint",label:"足迹",icon:Lt,description:"常去地点 / 出行模式"},{name:"analysis.interests",label:"兴趣画像",icon:Ht,description:"从购买 / 浏览 / 收藏抽兴趣"},{name:"analysis.timeline",label:"时间线",icon:Tt,description:"跨源事件串成故事"}],y=h(!1),i=h([]),L=ne({queue:{pending:0},mergeGroups:0,reviewQueue:0}),C=h(!1),Q=h([]);function Pe(l){l?.unregistered?R.success(`已注销 ${l.vendor}`):R.success(`已接入 ${l.vendor}`),Y()}const ge=h(!1);function Ae(l){R.success(`WeChat 已接入 (uin=${l.uin}, provider=${l.chosenKeyProvider})`),Y()}const fe=h(!1),z=ne({email:"",zipPassword:"",filePath:""}),U=h(null),w=ne({active:!1,adapter:"",phase:"",mailbox:"",current:0,total:0,attempt:1,errorMessage:""}),_=ne({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}),$e=[{title:"名称",dataIndex:"name",key:"name",width:140},{title:"版本",dataIndex:"version",key:"version",width:80},{title:"能力",key:"capabilities"},{title:"敏感度",key:"sensitivity",width:140},{title:"操作",key:"actions",width:160,align:"right"}],we=[{title:"时间",key:"at",dataIndex:"at",width:170},{title:"动作",dataIndex:"action",key:"action",width:200},{title:"详情",key:"details"}],De=[{title:"日期",key:"occurredAt",width:100},{title:"描述",dataIndex:"description",key:"description"},{title:"金额",key:"amount",width:140,align:"right"}];function Ee(l){return l==="high"?"red":l==="medium"?"orange":"default"}function M(l){if(!l)return"";const t=l.entityCounts||{},b=`events=${t.events??0} persons=${t.persons??0} | raw=${l.rawCount??0} invalid=${l.invalidCount??0} | KG triples=${l.kgTripleCount??0} RAG docs=${l.ragDocCount??0} | ${l.durationMs??0}ms`;return l.error?`${b} · 错误: ${l.error}`:b}async function Y(){_.refresh=!0;try{E.value=await P.health(),K.value=await P.stats(),$.value=await P.listAdapters();try{Q.value=await P.listAichatAccounts()}catch{}}catch(l){R.error("刷新失败: "+l.message)}finally{_.refresh=!1}}async function Re(){if(c.value.trim()){_.ask=!0,I.value="",g.value=null;try{g.value=await P.ask(c.value.trim(),{acceptNonLocal:D.value})}catch(l){I.value=l.message}finally{_.ask=!1}}}async function at(){_.addMock=!0;try{await P.registerMock({count:30,seed:Date.now()%1e3}),await Y(),R.success("MockAdapter 已注册(30 条 mock 数据 ready 同步)")}catch(l){R.error("注册失败: "+l.message)}finally{_.addMock=!1}}function ze(l=""){w.active=!0,w.adapter=l,w.phase="starting",w.mailbox="",w.current=0,w.total=0,w.attempt=1,w.errorMessage=""}function Ne(l){l&&(l.adapter&&(w.adapter=l.adapter),l.phase&&(w.phase=l.phase),typeof l.current=="number"&&(w.current=l.current),typeof l.total=="number"&&(w.total=l.total),typeof l.attempt=="number"&&(w.attempt=l.attempt),l.mailbox&&(w.mailbox=l.mailbox),l.phase==="error"&&(w.errorMessage=l.message||"sync error"))}async function lt(l){_.sync[l]=!0,ze(l);try{const t=B[l],b=t?{include:{...t}}:{};typeof P.syncAdapterStream=="function"?N.value=await P.syncAdapterStream(l,b,Ne):N.value=await P.syncAdapter(l,b),await Y()}catch(t){R.error(`同步 ${l} 失败: ${t.message}`)}finally{_.sync[l]=!1,w.active=!1}}async function ot(){_.syncAll=!0,ze("(all)");try{const l=typeof P.syncAllStream=="function"?await P.syncAllStream({},Ne):await P.syncAll();N.value=l?.[l.length-1]||null,await Y(),R.success(`已同步 ${l?.length||0} 个 adapter`)}catch(l){R.error("同步失败: "+l.message)}finally{_.syncAll=!1,w.active=!1}}async function nt(l){try{await P.unregister(l),await Y()}catch(t){R.error("移除失败: "+t.message)}}async function st(l){if(l){_.audit=!0;try{F.value=await P.recentAudit({limit:200})}catch(t){R.error("审计日志加载失败: "+t.message)}finally{_.audit=!1}}}const xe=re(()=>!(!k.email||!k.email.includes("@")||!k.authCode||k.authCode.length<4||k.provider==="custom"&&!k.host));function it(l){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"}[l]||"请输入服务商授权码(不是登录密码)"}function Ue(){k.provider="qq",k.email="",k.authCode="",k.host="",k.port=993,k.pdfPasswordHints={idCardLast6:"",phoneLast6:"",cardLast6:""},H.value=null}function Le(){const l={provider:k.provider,email:k.email.trim(),authCode:k.authCode};return k.provider==="custom"&&(l.host=k.host.trim(),l.port=k.port||993,l.secure=!0),l}function rt(){const l={};for(const t of Object.keys(k.pdfPasswordHints)){const b=k.pdfPasswordHints[t];typeof b=="string"&&b.trim().length>0&&(l[t]=b.trim())}return Object.keys(l).length>0?l:null}async function ut(){if(xe.value){_.testEmail=!0,H.value=null;try{H.value=await P.testEmailAuth(Le())}catch(l){H.value={ok:!1,error:l.message}}finally{_.testEmail=!1}}}async function dt(){if(!(!xe.value||!H.value?.ok)){_.saveEmail=!0;try{const l={},t=rt();t&&(l.pdfPasswordHints=t),await P.registerEmail(Le(),l),R.success("邮箱账号已注册"),G.value=!1,Ue(),await Y()}catch(l){R.error("保存失败: "+l.message)}finally{_.saveEmail=!1}}}const He=re(()=>!(!z.email||!z.email.includes("@")||!z.filePath||z.filePath.length<3));function pt(){z.email="",z.zipPassword="",z.filePath="",U.value=null}async function vt(){if(He.value){_.importAlipay=!0,U.value=null;try{await P.registerAlipay({email:z.email.trim(),zipPassword:z.zipPassword||void 0});const t=/\.zip$/i.test(z.filePath)?{zipPath:z.filePath,zipPassword:z.zipPassword||void 0}:{csvPath:z.filePath};U.value=await P.importAlipayBill(t),U.value?.status==="ok"?(R.success(`导入成功 — ${U.value.entityCounts?.events||0} 笔交易`),await Y()):R.error("导入失败: "+(U.value?.error||U.value?.status))}catch(l){U.value={status:"error",error:l.message},R.error("导入失败: "+l.message)}finally{_.importAlipay=!1}}}async function Te(l){if(l){_.eventDetail=!0,ee.value=!0;try{x.value=await P.eventDetail(l)}catch(t){x.value=null,R.error("事件详情加载失败: "+t.message)}finally{_.eventDetail=!1}}}ye({showEventDetail:Te});async function ct(l){_.skill=!0,q.value=null;try{q.value=await P.runSkill(l,{})}catch(t){R.error(`${l} 失败: ${t.message}`)}finally{_.skill=!1}}async function Ce(){_.reviewQueue=!0;try{i.value=await P.reviewQueueList(50);const l=await P.resolverStats();Object.assign(L,l)}catch(l){R.error("待消歧加载失败: "+l.message)}finally{_.reviewQueue=!1}}async function ft(){y.value=!0,await Ce()}async function Ie(l,t){try{await P.reviewDecision(l,t),R.success(`已记录决策: ${t}`),await Ce()}catch(b){R.error("决策失败: "+b.message)}}async function mt(){_.resolverDrain=!0;try{const l=await P.resolverDrain(20);R.success(`drain 完成 — same=${l.same} different=${l.different} review=${l.review}`),await Ce()}catch(l){R.error("drain 失败: "+l.message)}finally{_.resolverDrain=!1}}async function yt(){try{const l=await P.resolverStats();Object.assign(L,l)}catch{}}return Et(()=>{Y(),yt()}),(l,t)=>{const b=p("a-button"),he=p("a-badge"),j=p("a-space"),W=p("a-tag"),le=p("a-card"),ke=p("a-col"),qe=p("a-row"),gt=p("a-textarea"),Fe=p("a-checkbox"),oe=p("a-alert"),pe=p("a-divider"),kt=p("a-spin"),_t=p("a-popover"),bt=p("a-popconfirm"),Me=p("a-table"),We=p("a-empty"),Ke=p("a-progress"),me=p("a-select-option"),wt=p("a-select"),te=p("a-form-item"),ve=p("a-input"),Qe=p("a-tooltip"),Ve=p("a-input-password"),xt=p("a-input-number"),Be=p("a-form"),_e=p("a-drawer"),be=p("a-descriptions-item"),Ct=p("a-descriptions"),ht=p("a-list-item-meta"),Ge=p("a-list-item"),je=p("a-list"),Pt=p("a-collapse-panel"),At=p("a-collapse");return n(),f("div",ka,[u("div",_a,[t[30]||(t[30]=u("div",null,[u("h2",{class:"page-title"},"个人数据中台"),u("p",{class:"page-sub"}," 让数据回归个人 — 各 app 数据本地加密落盘,本地 LLM 跨源分析,零云端外传。 ")],-1)),a(j,null,{default:e(()=>[a(b,{loading:_.refresh,onClick:Y},{icon:e(()=>[a(V(Je))]),default:e(()=>[t[27]||(t[27]=o(" 刷新 ",-1))]),_:1},8,["loading"]),a(he,{count:L.reviewQueue,offset:[0,0]},{default:e(()=>[a(b,{type:"primary",ghost:"",onClick:ft},{icon:e(()=>[a(V(Ot))]),default:e(()=>[t[28]||(t[28]=o(" 待消歧 ",-1))]),_:1})]),_:1},8,["count"]),a(b,{type:"primary",ghost:"",onClick:t[0]||(t[0]=s=>O.value=!0)},{icon:e(()=>[a(V(St))]),default:e(()=>[t[29]||(t[29]=o(" 审计日志 ",-1))]),_:1})]),_:1})]),a(qe,{gutter:16,style:{"margin-bottom":"16px"}},{default:e(()=>[a(ke,{xs:24,sm:12,md:6},{default:e(()=>[a(le,{size:"small",title:"Vault"},{extra:e(()=>[a(W,{color:E.value?.vault?.ok?"green":"red"},{default:e(()=>[o(r(E.value?.vault?.ok?"正常":"未就绪"),1)]),_:1},8,["color"])]),default:e(()=>[u("div",ba,"schema v"+r(E.value?.vault?.schemaVersion??"?"),1),K.value?.vault?(n(),f("div",wa," 事件 "+r(K.value.vault.events)+" · 联系人 "+r(K.value.vault.persons),1)):d("",!0),K.value?.vault?(n(),f("div",xa," 地点 "+r(K.value.vault.places)+" · 商品 "+r(K.value.vault.items)+" · 主题 "+r(K.value.vault.topics),1)):d("",!0)]),_:1})]),_:1}),a(ke,{xs:24,sm:12,md:6},{default:e(()=>[a(le,{size:"small",title:"本地 LLM"},{extra:e(()=>[a(W,{color:E.value?.llm?.ok?E.value.llm.isLocal?"green":"orange":"red"},{default:e(()=>[o(r(E.value?.llm?.ok?E.value.llm.isLocal?"本地":"非本地":"未就绪"),1)]),_:1},8,["color"])]),default:e(()=>[u("div",Ca,r(E.value?.llm?.name||"—"),1),E.value?.llm?.ok&&!E.value.llm.isLocal?(n(),f("div",ha," ⚠️ 非本地 — ask 会被隐私 gate 拒绝,除非显式 acceptNonLocal ")):d("",!0)]),_:1})]),_:1}),a(ke,{xs:24,sm:12,md:6},{default:e(()=>[a(le,{size:"small",title:"KG 索引"},{extra:e(()=>[a(W,{color:E.value?.kgSink?.ok?"green":"default"},{default:e(()=>[o(r(E.value?.kgSink?.ok?"已连接":"不可用"),1)]),_:1},8,["color"])]),default:e(()=>[t[31]||(t[31]=u("div",{class:"kv"},"events / persons → cc knowledge-graph 实体 + 关系",-1))]),_:1})]),_:1}),a(ke,{xs:24,sm:12,md:6},{default:e(()=>[a(le,{size:"small",title:"RAG 索引"},{extra:e(()=>[a(W,{color:E.value?.ragSink?.ok?"green":"default"},{default:e(()=>[o(r(E.value?.ragSink?.ok?"已连接":"不可用"),1)]),_:1},8,["color"])]),default:e(()=>[t[32]||(t[32]=u("div",{class:"kv"},"文本 → BM25(vector 留待后续 phase)",-1))]),_:1})]),_:1})]),_:1}),a(le,{style:{"margin-bottom":"16px"}},{title:e(()=>[a(j,null,{default:e(()=>[a(V(zt)),t[33]||(t[33]=u("span",null,"问我数据",-1))]),_:1})]),default:e(()=>[a(gt,{value:c.value,"onUpdate:value":t[1]||(t[1]=s=>c.value=s),rows:2,placeholder:"例:上个月在淘宝总共花了多少?/我妈生日那周买了啥送哪儿?",onKeydown:It(tt(Re,["exact","prevent"]),["enter"])},null,8,["value","onKeydown"]),u("div",Pa,[a(Fe,{checked:D.value,"onUpdate:checked":t[2]||(t[2]=s=>D.value=s)},{default:e(()=>[...t[34]||(t[34]=[o("允许非本地 LLM (volcengine / anthropic 等)",-1)])]),_:1},8,["checked"]),a(b,{type:"primary",loading:_.ask,disabled:!c.value.trim(),onClick:Re},{icon:e(()=>[a(V(Rt))]),default:e(()=>[t[35]||(t[35]=o(" 提问 ",-1))]),_:1},8,["loading","disabled"])]),I.value?(n(),f("div",Aa,[a(oe,{type:"error","show-icon":"",message:I.value},null,8,["message"])])):d("",!0),g.value?(n(),f("div",$a,[g.value.warning==="no-facts"?(n(),m(oe,{key:0,type:"warning","show-icon":"",message:"vault 里没找到匹配的事件('no-facts')—— 先同步几个 adapter 让数据进 vault",style:{"margin-bottom":"12px"}})):g.value.warning==="hallucinated-citations"?(n(),m(oe,{key:1,type:"warning","show-icon":"",message:`LLM 引用了 ${g.value.hallucinatedCitations?.length||0} 个不存在的 event id —— 模型在编造`,style:{"margin-bottom":"12px"}},null,8,["message"])):d("",!0),u("div",Da,r(g.value.answer),1),u("div",Ea," 引用 "+r(g.value.citations?.length||0)+" 条事实 · "+r(g.value.facts?.length||0)+" facts 入 prompt · "+r(g.value.durationMs)+"ms · "+r(g.value.model),1),g.value.citations?.length?(n(),f("div",Ia,[t[36]||(t[36]=u("span",{style:{"font-size":"12px",color:"var(--text-color-secondary, #888)"}},"事件链接(点击查看明细 / PDF 解密结果):",-1)),a(j,{style:{"margin-top":"4px"},wrap:""},{default:e(()=>[(n(!0),f(Z,null,ie(g.value.citations,s=>(n(),m(W,{key:s,color:"blue",style:{cursor:"pointer"},onClick:A=>Te(s)},{default:e(()=>[o(r(s),1)]),_:2},1032,["onClick"]))),128))]),_:1})])):d("",!0)])):d("",!0)]),_:1}),a(le,{style:{"margin-bottom":"16px"}},{title:e(()=>[a(j,null,{default:e(()=>[a(V(qt)),t[37]||(t[37]=u("span",null,"分析 skill (Phase 11)",-1))]),_:1})]),extra:e(()=>[a(W,{color:"purple"},{default:e(()=>[...t[38]||(t[38]=[o("5 内置",-1)])]),_:1})]),default:e(()=>[a(qe,{gutter:[12,12]},{default:e(()=>[(n(),f(Z,null,ie(de,s=>a(ke,{xs:24,sm:12,md:8,key:s.name},{default:e(()=>[a(le,{size:"small",hoverable:"",onClick:A=>ct(s.name)},{default:e(()=>[u("div",Ma,[(n(),m(Mt(s.icon),{style:{"font-size":"18px",color:"#722ed1"}})),u("strong",null,r(s.label),1)]),u("div",Oa,r(s.description),1)]),_:2},1032,["onClick"])]),_:2},1024)),64))]),_:1}),q.value?(n(),f("div",Sa,[a(pe,{plain:"",orientation:"left"},{default:e(()=>[o(r(q.value.skill)+" 结果",1)]),_:1}),a(kt,{spinning:_.skill},{default:e(()=>[u("pre",Ra,r(JSON.stringify(q.value,null,2)),1),q.value.llm_commentary||q.value.llm_narrative?(n(),f("div",za,[a(oe,{type:"info",message:q.value.llm_commentary||q.value.llm_narrative},null,8,["message"])])):d("",!0)]),_:1},8,["spinning"])])):d("",!0)]),_:1}),a(le,{style:{"margin-bottom":"16px"}},{title:e(()=>[a(j,null,{default:e(()=>[a(V(Vt)),t[39]||(t[39]=u("span",null,"Adapters",-1))]),_:1})]),extra:e(()=>[a(j,null,{default:e(()=>[a(b,{onClick:t[3]||(t[3]=s=>G.value=!0)},{icon:e(()=>[a(V(Ft))]),default:e(()=>[t[40]||(t[40]=o(" 添加邮箱账号 ",-1))]),_:1}),a(b,{onClick:t[4]||(t[4]=s=>fe.value=!0)},{icon:e(()=>[a(V(Wt))]),default:e(()=>[t[41]||(t[41]=o(" 导入支付宝账单 ",-1))]),_:1}),a(b,{onClick:t[5]||(t[5]=s=>C.value=!0)},{icon:e(()=>[a(V(Kt))]),default:e(()=>[t[42]||(t[42]=o(" 添加 AI 对话账号 ",-1))]),_:1}),a(b,{onClick:t[6]||(t[6]=s=>ge.value=!0)},{icon:e(()=>[a(V(Qt))]),default:e(()=>[t[43]||(t[43]=o(" 添加 WeChat ",-1))]),_:1}),a(b,{onClick:at,loading:_.addMock},{default:e(()=>[...t[44]||(t[44]=[o(" 注册 MockAdapter(开发) ",-1)])]),_:1},8,["loading"]),a(b,{type:"primary",onClick:ot,loading:_.syncAll,disabled:!$.value.length},{default:e(()=>[...t[45]||(t[45]=[o(" 同步全部 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),default:e(()=>[$.value.length?(n(),m(Me,{key:0,columns:$e,"data-source":$.value,pagination:!1,"row-key":s=>s.name,size:"middle"},{bodyCell:e(({column:s,record:A})=>[s.key==="sensitivity"?(n(),f(Z,{key:0},[a(W,{color:Ee(A.sensitivity)},{default:e(()=>[o(r(A.sensitivity),1)]),_:2},1032,["color"]),A.legalGate?(n(),m(W,{key:0,color:"red",style:{"margin-left":"4px"}},{default:e(()=>[...t[46]||(t[46]=[o("需法律确认",-1)])]),_:1})):d("",!0)],64)):s.key==="capabilities"?(n(!0),f(Z,{key:1},ie(A.capabilities,J=>(n(),m(W,{key:J,style:{"margin-right":"4px"}},{default:e(()=>[o(r(J),1)]),_:2},1024))),128)):s.key==="actions"?(n(),m(j,{key:2},{default:e(()=>[a(b,{size:"small",loading:_.sync[A.name],onClick:J=>lt(A.name)},{default:e(()=>[...t[47]||(t[47]=[o(" 同步 ",-1)])]),_:1},8,["loading","onClick"]),T(A.name)?(n(),m(_t,{key:0,open:v.value[A.name],"onUpdate:open":J=>v.value[A.name]=J,trigger:"click",placement:"left",title:`${A.name} 采集范围`},{content:e(()=>[u("div",Na,[(n(!0),f(Z,null,ie(ae[A.name],J=>(n(),f("div",{key:J.key,style:{margin:"6px 0"}},[a(Fe,{checked:B[A.name][J.key]!==!1,onChange:$t=>X(A.name,J.key,$t)},{default:e(()=>[o(r(J.label)+" ",1),u("span",Ua,r(J.hint),1),J.sensitive?(n(),m(W,{key:0,color:"orange",size:"small",style:{"margin-left":"4px"}},{default:e(()=>[...t[48]||(t[48]=[o("敏感",-1)])]),_:1})):d("",!0)]),_:2},1032,["checked","onChange"])]))),128)),t[49]||(t[49]=u("div",{style:{"margin-top":"8px","font-size":"11px",color:"#999"}}," 取消勾选的数据本次同步不会拉取入库 ",-1))])]),default:e(()=>[a(b,{size:"small",title:"选择采集范围"},{default:e(()=>[...t[50]||(t[50]=[o("⚙",-1)])]),_:1})]),_:2},1032,["open","onUpdate:open","title"])):d("",!0),a(bt,{title:`从注册表移除 ${A.name}?(vault 数据不会删除)`,onConfirm:J=>nt(A.name)},{default:e(()=>[a(b,{size:"small",danger:""},{default:e(()=>[...t[51]||(t[51]=[o("移除",-1)])]),_:1})]),_:1},8,["title","onConfirm"])]),_:2},1024)):d("",!0)]),_:1},8,["data-source","row-key"])):(n(),m(We,{key:1,description:"无已注册 adapter — 点上方按钮注册 MockAdapter 看效果"})),w.active?(n(),f("div",La,[a(le,{size:"small",bordered:!0},{default:e(()=>[u("div",Ha,[t[52]||(t[52]=u("strong",null,"同步进行中",-1)),o(" · "+r(w.adapter)+" · "+r(w.phase||"...")+" ",1),w.attempt&&w.attempt>1?(n(),f("span",Ta," (重试 #"+r(w.attempt)+") ",1)):d("",!0)]),w.total>0?(n(),m(Ke,{key:0,percent:Math.round(w.current/w.total*100),status:w.errorMessage?"exception":"active",size:"small"},null,8,["percent","status"])):(n(),m(Ke,{key:1,percent:0,status:"active",size:"small"})),w.mailbox?(n(),f("div",qa," 邮箱 "+r(w.mailbox)+" · "+r(w.current)+" / "+r(w.total),1)):d("",!0),w.errorMessage?(n(),f("div",Fa,r(w.errorMessage),1)):d("",!0)]),_:1})])):d("",!0),N.value?(n(),f("div",Wa,[a(oe,{type:N.value.status==="ok"?"success":"error","show-icon":"",message:`同步 ${N.value.adapter}: ${N.value.status}`,description:M(N.value)},null,8,["type","message","description"])])):d("",!0)]),_:1}),a(_e,{open:G.value,"onUpdate:open":t[16]||(t[16]=s=>G.value=s),title:"添加邮箱账号",placement:"right",width:"560","destroy-on-close":!0,onClose:Ue},{footer:e(()=>[a(j,null,{default:e(()=>[a(b,{onClick:t[15]||(t[15]=s=>G.value=!1)},{default:e(()=>[...t[62]||(t[62]=[o("取消",-1)])]),_:1}),a(b,{loading:_.testEmail,disabled:!xe.value,onClick:ut},{default:e(()=>[...t[63]||(t[63]=[o(" 测试连接 ",-1)])]),_:1},8,["loading","disabled"]),a(b,{type:"primary",loading:_.saveEmail,disabled:!xe.value||!H.value?.ok,onClick:dt},{default:e(()=>[...t[64]||(t[64]=[o(" 保存并注册 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),default:e(()=>[a(oe,{message:"数据回归个人 — 凭证落本地加密文件(与 vault 主密钥同目录),同步动作 100% 本地。",type:"info","show-icon":"",style:{"margin-bottom":"16px"}}),a(Be,{layout:"vertical",model:k},{default:e(()=>[a(te,{label:"邮箱服务商",required:""},{default:e(()=>[a(wt,{value:k.provider,"onUpdate:value":t[7]||(t[7]=s=>k.provider=s),placeholder:"选择服务商"},{default:e(()=>[a(me,{value:"qq"},{default:e(()=>[...t[53]||(t[53]=[o("QQ 邮箱 (imap.qq.com)",-1)])]),_:1}),a(me,{value:"163"},{default:e(()=>[...t[54]||(t[54]=[o("网易邮箱 163/126",-1)])]),_:1}),a(me,{value:"189"},{default:e(()=>[...t[55]||(t[55]=[o("189 邮箱",-1)])]),_:1}),a(me,{value:"outlook"},{default:e(()=>[...t[56]||(t[56]=[o("Outlook / Hotmail",-1)])]),_:1}),a(me,{value:"gmail"},{default:e(()=>[...t[57]||(t[57]=[o("Gmail",-1)])]),_:1}),a(me,{value:"custom"},{default:e(()=>[...t[58]||(t[58]=[o("自定义 IMAP",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),a(te,{label:"邮箱地址",required:""},{default:e(()=>[a(ve,{value:k.email,"onUpdate:value":t[8]||(t[8]=s=>k.email=s),placeholder:"you@qq.com",autocomplete:"off"},null,8,["value"])]),_:1}),a(te,{required:""},{label:e(()=>[a(j,null,{default:e(()=>[t[59]||(t[59]=u("span",null,"授权码(非登录密码)",-1)),a(Qe,{title:it(k.provider)},{default:e(()=>[a(V(Ze),{style:{color:"#888"}})]),_:1},8,["title"])]),_:1})]),default:e(()=>[a(Ve,{value:k.authCode,"onUpdate:value":t[9]||(t[9]=s=>k.authCode=s),placeholder:"例:QQ 邮箱 设置 → 账户 → 开启 IMAP/SMTP → 生成的授权码",autocomplete:"off"},null,8,["value"])]),_:1}),k.provider==="custom"?(n(),m(te,{key:0,label:"IMAP host"},{default:e(()=>[a(ve,{value:k.host,"onUpdate:value":t[10]||(t[10]=s=>k.host=s),placeholder:"mail.example.com"},null,8,["value"])]),_:1})):d("",!0),k.provider==="custom"?(n(),m(te,{key:1,label:"端口"},{default:e(()=>[a(xt,{value:k.port,"onUpdate:value":t[11]||(t[11]=s=>k.port=s),min:1,max:65535,"default-value":993},null,8,["value"])]),_:1})):d("",!0),a(pe,{orientation:"left",plain:""},{default:e(()=>[...t[60]||(t[60]=[o("PDF 账单解密提示(可选)",-1)])]),_:1}),t[61]||(t[61]=u("p",{class:"hint"},"银行 PDF 月结大多加密;提供几个常用候选项让 Phase 5.5 自动解锁:",-1)),a(te,{label:"身份证后 6 位"},{default:e(()=>[a(ve,{value:k.pdfPasswordHints.idCardLast6,"onUpdate:value":t[12]||(t[12]=s=>k.pdfPasswordHints.idCardLast6=s),placeholder:"123456",autocomplete:"off"},null,8,["value"])]),_:1}),a(te,{label:"手机后 6 位"},{default:e(()=>[a(ve,{value:k.pdfPasswordHints.phoneLast6,"onUpdate:value":t[13]||(t[13]=s=>k.pdfPasswordHints.phoneLast6=s),placeholder:"123456",autocomplete:"off"},null,8,["value"])]),_:1}),a(te,{label:"信用卡尾 6 位"},{default:e(()=>[a(ve,{value:k.pdfPasswordHints.cardLast6,"onUpdate:value":t[14]||(t[14]=s=>k.pdfPasswordHints.cardLast6=s),placeholder:"123456",autocomplete:"off"},null,8,["value"])]),_:1}),H.value?(n(),f("div",Ka,[a(oe,{type:H.value.ok?"success":"error","show-icon":"",message:H.value.ok?"凭证有效 — 可以保存":`认证失败: ${H.value.reason||H.value.error}`},null,8,["type","message"])])):d("",!0)]),_:1},8,["model"])]),_:1},8,["open"]),a(_e,{open:ee.value,"onUpdate:open":t[17]||(t[17]=s=>ee.value=s),title:x.value?`事件 ${x.value.event.id}`:"加载中...",placement:"right",width:"640","destroy-on-close":!0},{default:e(()=>[x.value?(n(),f(Z,{key:0},[a(Ct,{column:1,size:"small",bordered:""},{default:e(()=>[a(be,{label:"类型"},{default:e(()=>[o(r(x.value.event.subtype),1)]),_:1}),a(be,{label:"发生于"},{default:e(()=>[o(r(new Date(x.value.event.occurredAt).toLocaleString()),1)]),_:1}),a(be,{label:"actor"},{default:e(()=>[o(r(x.value.event.actor),1)]),_:1}),x.value.event.content?.title?(n(),m(be,{key:0,label:"标题"},{default:e(()=>[o(r(x.value.event.content.title),1)]),_:1})):d("",!0),x.value.event.source?.adapter?(n(),m(be,{key:1,label:"来源 adapter"},{default:e(()=>[o(r(x.value.event.source.adapter)+" @ v"+r(x.value.event.source.adapterVersion),1)]),_:1})):d("",!0)]),_:1}),x.value.classification?(n(),m(pe,{key:0,orientation:"left",plain:""},{default:e(()=>[...t[65]||(t[65]=[o("分类",-1)])]),_:1})):d("",!0),x.value.classification?(n(),f("div",Qa,[a(W,{color:"blue"},{default:e(()=>[o(r(x.value.classification.category),1)]),_:1}),a(W,null,{default:e(()=>[o(r(x.value.classification.layer),1)]),_:1}),u("span",Va,"置信 "+r(Math.round((x.value.classification.confidence||0)*100))+"%",1)])):d("",!0),x.value.extraction?(n(),m(pe,{key:2,orientation:"left",plain:""},{default:e(()=>[o("结构化字段("+r(x.value.extraction.template)+")",1)]),_:1})):d("",!0),x.value.extraction?(n(),f("pre",Ba,r(JSON.stringify(x.value.extraction.fields,null,2)),1)):d("",!0),x.value.extraction?.pdfExtraction?(n(),m(pe,{key:4,orientation:"left",plain:""},{default:e(()=>[...t[66]||(t[66]=[o("PDF 解密 / 解析",-1)])]),_:1})):d("",!0),x.value.extraction?.pdfExtraction?(n(),m(je,{key:5,"data-source":x.value.extraction.pdfExtraction,size:"small"},{renderItem:e(({item:s})=>[a(Ge,null,{default:e(()=>[a(ht,{title:s.filename},{description:e(()=>[u("div",null,[a(W,{color:s.decrypted?"green":"red"},{default:e(()=>[o(r(s.decrypted?"已解密":"解密失败"),1)]),_:2},1032,["color"]),u("span",Ga,"尝试 "+r(s.attempted)+" 次",1),s.transactionsExtracted!=null?(n(),f("span",ja," · 提取 "+r(s.transactionsExtracted)+" 条交易 ",1)):d("",!0)]),s.error?(n(),f("div",Ja,r(s.error),1)):d("",!0)]),_:2},1032,["title"])]),_:2},1024)]),_:1},8,["data-source"])):d("",!0),x.value.extraction?.fields?.transactions?.length?(n(),f(Z,{key:6},[a(pe,{orientation:"left",plain:""},{default:e(()=>[...t[67]||(t[67]=[o("交易明细",-1)])]),_:1}),a(Me,{columns:De,"data-source":x.value.extraction.fields.transactions,pagination:{pageSize:10,size:"small"},"row-key":(s,A)=>A,size:"small"},{bodyCell:e(({column:s,record:A})=>[s.key==="occurredAt"?(n(),f(Z,{key:0},[o(r(new Date(A.occurredAtMs).toLocaleDateString()),1)],64)):s.key==="amount"?(n(),f("span",{key:1,class:et(A.amount.direction==="in"?"amount-in":"amount-out")},r(A.amount.direction==="in"?"+":"-")+r(A.amount.value.toFixed(2))+" "+r(A.amount.currency),3)):d("",!0)]),_:1},8,["data-source","row-key"])],64)):d("",!0)],64)):(n(),m(We,{key:1,description:"无事件数据"}))]),_:1},8,["open","title"]),a(_e,{open:fe.value,"onUpdate:open":t[22]||(t[22]=s=>fe.value=s),title:"导入支付宝账单",placement:"right",width:"560","destroy-on-close":!0,onClose:pt},{footer:e(()=>[a(j,null,{default:e(()=>[a(b,{onClick:t[21]||(t[21]=s=>fe.value=!1)},{default:e(()=>[...t[73]||(t[73]=[o("关闭",-1)])]),_:1}),a(b,{type:"primary",loading:_.importAlipay,disabled:!He.value,onClick:vt},{default:e(()=>[...t[74]||(t[74]=[o(" 注册账户 + 导入 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),default:e(()=>[a(oe,{message:"支付宝官方导出 CSV — 服务器侧全量、稳定无风控。3 分钟拿到 12 个月流水。",type:"info","show-icon":"",style:{"margin-bottom":"16px"}}),a(At,{bordered:!1,style:{"margin-bottom":"12px"}},{default:e(()=>[a(Pt,{header:"如何导出账单(首次必看)"},{default:e(()=>[...t[68]||(t[68]=[u("ol",{style:{"padding-left":"18px","font-size":"13px"}},[u("li",null,"支付宝 app → 我的 → 账单 → 右上角 ⋯"),u("li",null,'点 "开具交易流水证明"'),u("li",null,"选月份范围(最长 12 个月)"),u("li",null,'用途选 "个人对账"'),u("li",null,"发送到你的绑定邮箱"),u("li",null,[o("从邮箱下载 "),u("code",null,"alipay_record_*.zip")]),u("li",null,"解压密码 = 你的身份证后 6 位")],-1)])]),_:1})]),_:1}),a(Be,{layout:"vertical",model:z},{default:e(()=>[a(te,{label:"支付宝绑定邮箱(账户标识)",required:""},{default:e(()=>[a(ve,{value:z.email,"onUpdate:value":t[18]||(t[18]=s=>z.email=s),placeholder:"alipay-bound@example.com",autocomplete:"off"},null,8,["value"])]),_:1}),a(te,null,{label:e(()=>[a(j,null,{default:e(()=>[t[69]||(t[69]=u("span",null,"ZIP 密码(身份证后 6 位)",-1)),a(Qe,{title:"支付宝 ZIP 默认密码 = 身份证号后 6 位。也支持自定义密码。"},{default:e(()=>[a(V(Ze),{style:{color:"#888"}})]),_:1})]),_:1})]),default:e(()=>[a(Ve,{value:z.zipPassword,"onUpdate:value":t[19]||(t[19]=s=>z.zipPassword=s),placeholder:"例:123456",autocomplete:"off"},null,8,["value"]),t[70]||(t[70]=u("div",{class:"hint",style:{"margin-top":"4px"}}," 空白则解析时再问,或导入的 ZIP 未加密。 ",-1))]),_:1}),a(pe,{orientation:"left",plain:""},{default:e(()=>[...t[71]||(t[71]=[o("选择文件",-1)])]),_:1}),a(te,{label:"ZIP 或 CSV 文件路径"},{default:e(()=>[a(ve,{value:z.filePath,"onUpdate:value":t[20]||(t[20]=s=>z.filePath=s),placeholder:"C:\\\\Users\\\\you\\\\Downloads\\\\alipay_record_xxx.zip","allow-clear":""},null,8,["value"]),t[72]||(t[72]=u("div",{class:"hint",style:{"margin-top":"4px"}}," 桌面版可通过 Electron 文件选择器自动填充;web-shell 复制完整路径。 ",-1))]),_:1}),U.value?(n(),f("div",Za,[a(oe,{type:U.value.status==="ok"?"success":"error","show-icon":"",message:U.value.status==="ok"?`导入成功 — ${U.value.entityCounts?.events||0} 笔交易`:`导入失败: ${U.value.error||U.value.status}`,description:U.value.status==="ok"?`${U.value.entityCounts?.persons||0} 个交易对方 · ${U.value.kgTripleCount||0} KG triples · ${U.value.durationMs||0}ms`:null},null,8,["type","message","description"])])):d("",!0)]),_:1},8,["model"])]),_:1},8,["open"]),a(_e,{open:y.value,"onUpdate:open":t[23]||(t[23]=s=>y.value=s),title:"待消歧(EntityResolver 模糊判定)",placement:"right",width:"640","destroy-on-close":!0},{default:e(()=>[i.value.length===0&&!_.reviewQueue?(n(),m(oe,{key:0,type:"success","show-icon":"",message:"无待消歧 pair — 所有跨源 Person 已确定。",style:{"margin-bottom":"12px"}})):d("",!0),u("div",Ya,[a(j,null,{default:e(()=>[a(b,{loading:_.reviewQueue,onClick:Ce},{icon:e(()=>[a(V(Je))]),default:e(()=>[t[75]||(t[75]=o(" 刷新 ",-1))]),_:1},8,["loading"]),a(b,{loading:_.resolverDrain,onClick:mt},{default:e(()=>[...t[76]||(t[76]=[o(" 手动 drain 队列 ",-1)])]),_:1},8,["loading"]),u("span",Xa," queue: "+r(L.queue?.pending||0)+" pending · "+r(L.mergeGroups||0)+" groups ",1)]),_:1})]),a(je,{"data-source":i.value,pagination:{pageSize:5,size:"small"},size:"small"},{renderItem:e(({item:s})=>[a(Ge,null,{default:e(()=>[a(le,{size:"small",style:{width:"100%"}},{default:e(()=>[u("div",el,[u("strong",null,"Pair #"+r(s.id),1),s.embed_sim?(n(),m(W,{key:0,color:"blue",style:{"margin-left":"8px"}},{default:e(()=>[o(" sim "+r(Number(s.embed_sim).toFixed(2)),1)]),_:2},1024)):d("",!0),s.llm_verdict?(n(),m(W,{key:1,color:s.llm_verdict==="yes"?"green":s.llm_verdict==="no"?"red":"orange",style:{"margin-left":"4px"}},{default:e(()=>[o(" LLM: "+r(s.llm_verdict),1)]),_:2},1032,["color"])):d("",!0)]),u("div",tl,"A: "+r(s.a_person_id),1),u("div",al,"B: "+r(s.b_person_id),1),s.llm_reason?(n(),f("div",ll," LLM 理由: "+r(s.llm_reason),1)):d("",!0),a(j,{style:{"margin-top":"8px"}},{default:e(()=>[a(b,{size:"small",type:"primary",onClick:A=>Ie(s.id,"same")},{default:e(()=>[...t[77]||(t[77]=[o("同一人",-1)])]),_:1},8,["onClick"]),a(b,{size:"small",danger:"",onClick:A=>Ie(s.id,"different")},{default:e(()=>[...t[78]||(t[78]=[o("不同人",-1)])]),_:1},8,["onClick"]),a(b,{size:"small",onClick:A=>Ie(s.id,"skip")},{default:e(()=>[...t[79]||(t[79]=[o("跳过",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:1},8,["data-source"])]),_:1},8,["open"]),a(_e,{open:O.value,"onUpdate:open":t[24]||(t[24]=s=>O.value=s),title:"审计日志(数据 lineage)",placement:"right",width:"600",onAfterOpenChange:st},{default:e(()=>[a(Me,{columns:we,"data-source":F.value,pagination:{pageSize:20,size:"small"},"row-key":s=>s.id,size:"small"},{bodyCell:e(({column:s,record:A})=>[s.key==="at"?(n(),f(Z,{key:0},[o(r(new Date(A.at).toLocaleString()),1)],64)):s.key==="details"?(n(),f("code",ol,r(A.details||"—"),1)):d("",!0)]),_:1},8,["data-source","row-key"])]),_:1},8,["open"]),a(ra,{open:C.value,"onUpdate:open":t[25]||(t[25]=s=>C.value=s),"existing-accounts":Q.value,onRegistered:Pe},null,8,["open","existing-accounts"]),a(ga,{open:ge.value,"onUpdate:open":t[26]||(t[26]=s=>ge.value=s),onRegistered:Ae},null,8,["open"])])}}},dl=Se(nl,[["__scopeId","data-v-5d6ede6d"]]);export{dl as default};
@@ -1 +1 @@
1
- .hint[data-v-a608230c]{font-size:12px;color:var(--text-color-secondary, #888)}.vendor-card[data-v-a608230c]{cursor:pointer;border:1px solid transparent;transition:border-color .15s}.vendor-card.selected[data-v-a608230c]{border-color:#1677ff}.vendor-head[data-v-a608230c]{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px}.vendor-actions[data-v-a608230c]{margin-top:6px;display:flex;justify-content:flex-end}.kv[data-v-a608230c]{font-size:12px}.howto[data-v-a608230c]{margin:0;padding-left:20px;font-size:13px}.howto li[data-v-a608230c]{margin-bottom:4px}kbd[data-v-a608230c]{background:#f0f0f0;border:1px solid #d9d9d9;border-radius:3px;padding:0 4px;font-family:monospace;font-size:12px}.hint[data-v-c7327e24],.kv[data-v-c7327e24]{font-size:12px;color:var(--text-color-secondary, #888)}.probe-result[data-v-c7327e24]{margin-top:8px}code[data-v-c7327e24]{background:#f0f0f0;padding:1px 4px;border-radius:3px;font-family:monospace;font-size:12px}.pdh-page[data-v-cdf74546]{padding:16px;max-width:1400px;margin:0 auto}.pdh-header[data-v-cdf74546]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;gap:16px;flex-wrap:wrap}.page-title[data-v-cdf74546]{margin:0 0 4px;font-size:22px;font-weight:600}.page-sub[data-v-cdf74546]{margin:0;color:var(--text-color-secondary, #888);font-size:13px}.kv[data-v-cdf74546]{font-size:13px;color:var(--text-color, #333);line-height:1.6}.kv.hint[data-v-cdf74546]{color:#faad14;font-size:12px;margin-top:4px}.answer[data-v-cdf74546]{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-cdf74546]{color:var(--text-color-secondary, #888);font-size:12px}.json-pre[data-v-cdf74546]{font-size:12px;background:var(--bg-elevated, #fafafa);padding:10px;border-radius:4px;max-height:280px;overflow:auto}.amount-in[data-v-cdf74546]{color:#52c41a;font-weight:600}.amount-out[data-v-cdf74546]{color:#ff4d4f;font-weight:600}
1
+ .hint[data-v-a608230c]{font-size:12px;color:var(--text-color-secondary, #888)}.vendor-card[data-v-a608230c]{cursor:pointer;border:1px solid transparent;transition:border-color .15s}.vendor-card.selected[data-v-a608230c]{border-color:#1677ff}.vendor-head[data-v-a608230c]{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px}.vendor-actions[data-v-a608230c]{margin-top:6px;display:flex;justify-content:flex-end}.kv[data-v-a608230c]{font-size:12px}.howto[data-v-a608230c]{margin:0;padding-left:20px;font-size:13px}.howto li[data-v-a608230c]{margin-bottom:4px}kbd[data-v-a608230c]{background:#f0f0f0;border:1px solid #d9d9d9;border-radius:3px;padding:0 4px;font-family:monospace;font-size:12px}.hint[data-v-c7327e24],.kv[data-v-c7327e24]{font-size:12px;color:var(--text-color-secondary, #888)}.probe-result[data-v-c7327e24]{margin-top:8px}code[data-v-c7327e24]{background:#f0f0f0;padding:1px 4px;border-radius:3px;font-family:monospace;font-size:12px}.pdh-page[data-v-5d6ede6d]{padding:16px;max-width:1400px;margin:0 auto}.pdh-header[data-v-5d6ede6d]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;gap:16px;flex-wrap:wrap}.page-title[data-v-5d6ede6d]{margin:0 0 4px;font-size:22px;font-weight:600}.page-sub[data-v-5d6ede6d]{margin:0;color:var(--text-color-secondary, #888);font-size:13px}.kv[data-v-5d6ede6d]{font-size:13px;color:var(--text-color, #333);line-height:1.6}.kv.hint[data-v-5d6ede6d]{color:#faad14;font-size:12px;margin-top:4px}.answer[data-v-5d6ede6d]{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-5d6ede6d]{color:var(--text-color-secondary, #888);font-size:12px}.json-pre[data-v-5d6ede6d]{font-size:12px;background:var(--bg-elevated, #fafafa);padding:10px;border-radius:4px;max-height:280px;overflow:auto}.amount-in[data-v-5d6ede6d]{color:#52c41a;font-weight:600}.amount-out[data-v-5d6ede6d]{color:#ff4d4f;font-weight:600}